Буквари для Инженеров
Скачать 1.52 Mb.
|
4.1.2. Путь поиска макрофайлов По умолчанию ANSYS ищет пользовательский макрофайл (с расширением .mac) в следующих местоположениях: 1. …/ansys_inc/v100/ansys/apdl. 2. Каталог (или каталоги) определяемый переменной окружения ANSYS_MACROLIB (если определена) или регистрационный (домашний) каталог. Эта переменная ок- ружения зарегистрирована в главе «The ANSYS Environment» в «ANSYS Operations Guide». 3. Каталог, определяемый переменной окружения $HOME. 4. Текущий рабочий каталог. Вы можете поместить макрос для вашего личного использования в вашем основ- ном каталоге. Макрос, который должен быть доступным параллельно другим пользовате- стр. 50 из 76 ANSYS Release 10.0 Documentation / APDL Programmer's Guide Буквари для Инженеров http://cyberkolbasa.com1.ru лям, должен быть помещен в каталог …/ansys_inc/v100/ansys/apdl или некото- рый другой общедоступный каталог, на который каждый может сослаться через перемен- ную окружающей среды ANSYS_MACROLIB. Для пользователей Windows: "текущий каталог" - основной каталог (обычно сете- вой ресурс) установленный администраторами, и Вы должны спросить у вашего сетевого администратора его местоположение. Вы можете использовать переменные окружающей среды, чтобы создать локальный "домашний каталог". Локальный домашний каталог про- веряется после основного каталога, определяемого в вашем профиле домена. 4.1.3. Создание макросов в среде ANSYS Вы можете создать макрос четырьмя методами в среде ANSYS: • Выполните команду *CREATE в input window. Значения параметров не возвраща- ются и в файл записываются имена параметров. • Используйте команды *CFOPEN, *CFWRITE, и *CFCLOS. Параметры определены их текущими значениями и эти значения записываются в макрофайл. • Выполните команду /TEE в input window. Эта команда пишет список команд в файл в то же самое время, когда команды выполняются. Поскольку команды вы- полняются в текущем сеансе ANSYS, всем именам параметров возвращаются их текущие значения. Однако, в файл, который создан, записываются имена парамет- ров, а не их текущие значения. • Выберите пункт меню Utility Menu> Macro> Create Macro. Этот метод открывает диалоговое окно, которое может использоваться как простой многострочный ре- дактор для того, чтобы создать макрос. Значения параметров не возвращаются и в файл записываются имена параметров. Следующие разделы детализируют каждый из этих методов. 4.1.3.1. Использование команды *CREATE Выполнение команды *CREATE переадресовывает введенные в input window ко- манды к файлу, определяемому командой. Все команды переадресуются пока Вы не вы- полните команду *END. Если существующий файл имеет то же самое имя как и имя мак- рофайла, который Вы создаете, то программа ANSYS запишет его поверх существующего файла. Например, предположим, что Вы хотите создать макрос, с именем matprop.mac, который автоматически определяет ряд свойств материала. Набор команд, водимых в input window для этого макроса, мог бы выглядеть следующим образом: *CREATE,matprop,mac,macros MP,EX,1,2.07E11 MP,NUXY,1,.27 MP,DENS,1,7835 MP,KXX,1,42 *END Команда *CREATE берет из аргументов имя файла, расширение файла, и путь ка- талога (в этом случае, каталог макроса определен). Используя *CREATE, все параметры, используемые в командах, записываются фай- л (не заменяются назначаемыми в данный момент значениями для параметров). Вы не можете использовать *CREATE в пределах цикла типа DO. стр. 51 из 76 ANSYS Release 10.0 Documentation / APDL Programmer's Guide Буквари для Инженеров http://cyberkolbasa.com1.ru 4.1.3.2. Использование команды *CFWRITE Если Вы желаете создать макрофайл, в котором заменяются значения параметров текущими значениями, Вы можете использовать *CFWRITE. В отличие от *CREATE, ко- манда *CFWRITE не может определять имя макроса; Вы должны сначала определить макрофайл командой *CFOPEN. Только те команды ANSYS, которые явно предварены командой *CFWRITE, записываются в определяемый файл; все другие команды, введен- ные в input window выполняются. Как и с командой *CREATE, *CFOPEN может опреде- лить имя файла, расширение файла, и путь. Следующий пример пишет команду BLOCK в текущий открытый макрофайл. *cfwrite,block,,a,,b,,c Обратите внимание, что использовались параметры для аргументов команды BLOCK. Текущее значение этих параметров (а не имена параметров) записываются в файл. Так, для этого примера, могла бы быть строка, записанная в макрофайл *cfwrite,block,,4,,2.5,,2 Чтобы закрыть макрофайл, выполните команду *CFCLOS. Примечание В то время как имеется возможность создавать макрос с помощью этого метода, эти команды (*CFOPEN, *CFWRITE, и *CFCLOS) являются наиболее полезными для того, чтобы записывать команды ANSYS в файл во время выполнения макроса. 4.1.3.3. Использование команды /TEE Выполнение команды /TEE,NEW или /TEE, APPEND переадресовывает команды ANSYS, введенные в input window к файлу, определяемому этой же командой, одновре- менно с выполнением этих команд. Все команды выполняются и переадресуются, пока Вы не выполните команду /TEE,END. Если существующий файл имеет то же самое имя как и имя макрофайла, который Вы определяете командой, программа ANSYS записывает мак- рофайл поверх существующего файла. Чтобы этого избежать, используйте вместо /TEE,NEW команду /TEE, APPEND. В дополнение к аргументу Label (который может иметь значение NEW, APPEND, или END), команда /TEE использует аргументы имени файла, расширения файла и пути каталога. Поскольку команды выполняются в текущем сеансе ANSYS, всем именам парамет- ров возвращаются их текущие значения. Однако, в файле, который создается, записыва- ются имена параметров (не заменяются назначаемыми в настоящее время значениями па- раметров). Если ваши текущие значения параметров важны, Вы можете сохранить их в файл, используя команду PARSAV. 4.1.3.4. Использование меню Utility Menu> Macro> Create Macro Выбор этого пункта меню открывает диалоговое окно ANSYS, которое Вы можете использовать как простой редактор для того, чтобы создать макрос. Вы не можете открыть и редактировать существующий макрос этим средством; если Вы будете использовать имя существующего макроса как аргументы для полей команды *CREATE, то существующий файл будет перезаписан. стр. 52 из 76 ANSYS Release 10.0 Documentation / APDL Programmer's Guide Инженеров http://cyberkolbasa.com1.ru Рис. 4.2. Диалоговое окно создания макроса. Как и с командой *CREATE, параметры не вычисляются, но записываются бук- вально в макрофайл. Обратите внимание, что Вы не делаете последнюю строку с коман- дой *END. 4.1.4. Создание макроса в текстовом редакторе Вы можете использовать ваш любимый текстовый редактор, чтобы создавать или редактировать макрофайлы. Будет работать любой редактор ASCII. Кроме того, макрос ANSYS можно закончить завершающей строкой с управляющим обозначением UNIX или Windows, (возврат каретки, парного перевода строки или просто перевода строк), таким образом Вы сможете создать макрос на одной платформе и использовать его на других платформах. Буквари для стр. 53 из 76 Если Вы используете этот метод, чтобы создать макрос, не включайте команды *CREATE и *END. ANSYS Release 10.0 Documentation / APDL Programmer's Guide Буквари для Инженеров http://cyberkolbasa.com1.ru Рис. 4.3. Создание макроса в текстовом редакторе. 4.1.5. Использование библиотек макросов Для большего удобства ANSYS позволяет Вам помещать ряд макросов в отдель- ный файл, называемый библиотекой макросов. Вы можете создать его через команду *CREATE или в текстовом редакторе. Учитывая, что макробиблиотеки имеют тенденцию быть более длинными (многострочными), чем отдельный макрос, использование тексто- вого редактора обычно обеспечивает лучший результат по их созданию. Библиотеки макросов не имеют никакого явного расширения файла и подчиняются тем же самым соглашениям по именам как и макрофайлы. Макрофайл библиотеки имеет следующую структуру: MACRONAME1 /EOF MACRONAME2 /EOF MACRONAME3 ./EOF Например, следующий макрофайл содер- жит два простых макроса: mybloc /prep7 /view,,-1,-2,-3 block,,4,,3,,2 finish /EOF mysphere /prep7 /view,,-1,-2,-3 sphere,1 finish /EOF Обратите внимание, что каждый макрос предварен именем макрофайла (иногда пе- редаваемым именем блока данных), и оканчивается командой /EOF. Макрофайл библиотеки может постоянно находиться где-нибудь на вашей системе, хотя для удобства Вы должны поместить его в пределах пути поиска макрофайлов. В от- личие от обычных макрофайлов, макрофайл библиотеки может иметь любое расширение до восьми символов. стр. 54 из 76 ANSYS Release 10.0 Documentation / APDL Programmer's Guide Буквари для Инженеров http://cyberkolbasa.com1.ru 4.2. Выполнение макросов и макробиблиотек Вы можете выполнить любой макрофайл, используя команду *USE. Например, чтобы выполнить макрос MYMACRO (без расширения) постоянно находящийся где-нибудь в пределах пути поиска макрофайлов, Вы использовали бы *use,mymacro В этом случае для выполнения макроса не требуется никаких дополнительных ар- гументов. Если бы вместо этого макрос назывался MYMACRO.MACRO и он постоянно нахо- дился в /myaccount/macros, то Вы могли бы вызвать его следующим образом *use,/myaccount/macros/mymacro.macro Обратите внимание, что команда *USE позволяет Вам вводить путь и расширение наряду с именем файла и что они не вводятся как отдельные аргументы команды. Если макрос имеет расширение файла .mac и постоянно находится в пределах пу- ти поиска файлов, Вы можете выполнить его, как будто это команда ANSYS, просто введя его имя в командную строку. Например, чтобы вызвать mymacro.mac Вы можете просто ввести mymacro Вы можете также выполнить макрос с расширением .mac черезпункт меню Utility Menu> Macro> Execute Macro. Если тот же самый макрос использует аргументы (см. раздел 4.3.1. для получения дополнительной информации о передаче аргументов к макросу), то они могут быть введе- ны в командную строку следующим образом mymacro,4,3,2,1.5 или *use,mymacro.mac,4,3,2,1.5 Диалоговое окно пункта меню Utility Menu> Macro> Execute Macro имеет поля для аргументов. Выполнение макроса, содержавшегося в макробиблиотеках, делается аналогичным образом. Вы должны сначала определить файл библиотеки, используя команду *ULIB. Например, чтобы определить, что макрос находится в файле mymacros.mlib, который постоянно находится в каталоге /myaccount/macros, Вы выполнили бы следующую команду: *ulib,mymacros,mlib,/myaccount/macros/ После выбора макробиблиотеки, Вы можете выполнить любой макрос, содержав- шийся в библиотеке, определяя его через команду *USE. Как и с макросом, содержавшим- ся в индивидуальном файле, Вы можете определить аргументы как параметры в команде *USE. Примечание После выполнения команды *ULIB Вы не можете использовать команду *USE, чтобы обратиться к макросу, не содержавшемуся в указанном макрофайле библиотеки. стр. 55 из 76 ANSYS Release 10.0 Documentation / APDL Programmer's Guide Буквари для Инженеров http://cyberkolbasa.com1.ru 4.3. Локальные переменные APDL обеспечивает два набора специально именованных скалярных параметров, которые являются доступными для использования как локальные переменные. Они состо- ят из • Набора скалярных параметров, которые обеспечивают способ передачи аргументов из командной строки к макросу. • Набора скалярных параметров, которые могут использоваться в пределах макроса. Они обеспечивают набор локальных переменных, которые могут использоваться, чтобы определять значения только в пределах этого макроса. Следующие разделы рассматривают оба этих набора параметров более подробно. 4.3.1. Передача аргументов в макрос Есть 19 скалярных параметров, которые Вы можете использовать, чтобы передать аргументы из командной строки в макрос. Эти скалярные параметры могут многократно использоваться с множеством макросов; то есть, их значения являются локальными к ка- ждому макросу. Параметры имеют имена от ARG1 до AR19 и они могут использоваться для любого из следующих элементов: • Чисел • Алфавитно-цифровых строк символов (до восьми символов заключенных в оди- ночные кавычки) • Числовых или символьных параметров • Параметрических выражений Примечание Вы можете передать только значения аргументов от ARG1 до AR18 к макросу как параметры с командой *USE. Если Вы создаете макрос, который может использоваться как команда ANSYS (макрофайлы имеют расширение .mac), то Вы можете передать к макросу значения аргументов от ARG1 до AR19. Например, следующий простой макрос требует четырех аргументов – ARG1, ARG2, ARG3, и ARG4: /prep7 /view,,-1,-2,-3 block,,arg1,,arg2,,arg3 sphere,arg4 vsbv,1,2 finish Чтобы выполнить этот макрос, пользователь мог бы ввести mymacro,4,3,2.2,1 4.3.2. Локальные переменные в пределах макроса Каждый макрос может иметь до 79 скалярных параметров, используемых как ло- кальные переменные (от AR20 до AR99). Эти параметры являются полностью локальны- ми по отношению к отдельному макросу и к множественным макросам, при этом каждый из них может иметь собственные уникальные значения, определенные на эти параметры. Эти параметры не передаются к макросу, вызванному из макроса (вложенный макрос). стр. 56 из 76 ANSYS Release 10.0 Documentation / APDL Programmer's Guide Буквари для Инженеров http://cyberkolbasa.com1.ru Они передаются к любым файлам, обработанным через команду /INPUT, или в цикл, вы- полняющийся в пределах этого макроса. 4.3.3. Локальные переменные вне макроса ANSYS также имеет подобный набор скалярных параметров от ARG1 до AR99, ко- торые являются локальными к входному файлу, и не передаются ни к какому макросу, вы- званному этим входным файлом. Таким образом, после завершения макроса выполнение команд возвращается к входному файлу и значения от ARG1 до ARG99 возвращаются к любым значениям, которые были определены в пределах входного файла. 4.4. Управление процессом выполнения программы в APDL Выполняя входной файл, ANSYS обычно ограничивается линейным процессом вы- полнения программы; то есть, каждая команда выполняется последовательно в опреде- ленном во входном файле порядке. Однако, APDL обеспечивает богатый набор команд, которые Вы можете использовать для управления процессом выполнения программы. • Вызов подпрограммы (вложенного макроса). • Безусловный переход к указанному местоположению с макросом. • Переход, основанный на условии, к указанному местоположению в пределах мак- роса. • Повтор выполнения отдельной команды, с приращением значения одного или бо- лее параметров команды. • Зацикливание (повторение) фрагмента макроса указанное количество раз. Следующие разделы детализируют каждую из этих возможностей управления про- цессом выполнения программы. • Вложенные макросы: выполнение подпрограмм в пределах макроса • Безусловный переход: Goto • Условный переход: команда *IF • Повторение команды • Циклы: Do-Loops • Неявные циклы Do Loops • Дополнительный цикл: Do-While 4.4.1. Вложенные макросы: выполнение подпрограмм в пределах мак- роса APDL позволяет Вам создавать вложенные макросы до 20 уровня вложенности. Вы можете передать до 19 аргументов к макросу и, в конце каждого вложенного макроса, вы- полнение программы возвращается к уровню, который вызвал этот макрос. Например, следующий простой макрофайл библиотеки демонстрирует макрос MYSTART, который вызывает макросMYSPHERE, чтобы создать сферу. mystart /prep7 /view,,-1,-2,-3 mysphere,1.2 finish /eof mysphere sphere,arg1 стр. 57 из 76 /eof ANSYS Release 10.0 Documentation / APDL Programmer's Guide Буквари для Инженеров http://cyberkolbasa.com1.ru 4.4.2. Безусловный переход: Goto Самая простая команда, выполняющая переход, это команда *GO, инструктирует программу перейти к указанной метке, не выполняя никаких промежуточных команд. Процесс выполнения программы продолжается от указанной метки. Например *GO,:BRANCH1 --- ! этот блок команд пропускается (не выполняется) --- :BRANCH1 --- --- Метка, определенная командой *GO должна начаться с двоеточия ( : ) и не должна содержать больше чем восемь символов, включая двоеточие. Метка может находиться в любом месте файла. Примечание Использование команды *GO теперь считают устаревшим и ее использование не рекомендуется. Для лучшего управления процессом выполнения программы см. другие команды выполняющие переход. 4.4.3. Условный переход: команда *IF APDL позволяет Вам выполнять один из ряда альтернативных блоков, основанных на проверке условия. Условия проверяются путем сравнения двух числовых значений (или параметров, которые возвращают числовые значения). Команда *IF имеет следующий синтаксис *IF, VAL1, Oper, VAL2, Base где • VAL1 - первое числовое значение (или числовой параметр) для сравнения. • Oper - оператор сравнения. • VAL2 - второе числовое значение (или числовой параметр) для сравнения. • Base - действие, которое происходит, если условие выполняется. APDL предлагает восемь операторов сравнения, которые обсуждаются подробно в справочной информации команды |