Главная страница

Буквари для Инженеров


Скачать 1.52 Mb.
НазваниеБуквари для Инженеров
Анкорansys_release_10_0_documentation_apdl.pdf
Дата16.12.2017
Размер1.52 Mb.
Формат файлаpdf
Имя файлаansys_release_10_0_documentation_apdl.pdf
ТипСправочник
#11751
страница8 из 10
1   2   3   4   5   6   7   8   9   10
*IF. Кратко они следующие:
EQ – равно (дляVAL1 = VAL2).
NE – не равно (дляVAL1 ≠ VAL2).
LT – меньше чем (дляVAL1 < VAL2).
GT – больше чем (дляVAL1 > VAL2).
LE – меньше чем или равный (дляVAL1 ≤ VAL2).
GE – больше чем или равный (для VAL1 ≥ VAL2).
ABLT – абсолютные значения VAL1 и VAL2 перед выполнением операции <.
ABGT – абсолютные значения VAL1 и VAL2 перед выполнением операции >.
Давая аргументуBase значение THEN, команда
*IF
становится началом конст- рукции "если-тогда-иначе". Конструкция состоит из

Команды *IF, сопровождаемой

Одной или более дополнительными командами
*ELSEIF

Дополнительной командой
*ELSE стр. 58 из 76

Необходимой командой
*ENDIF, отмечающей конец конструкции.

ANSYS Release 10.0 Documentation / APDL Programmer's Guide
Буквари для Инженеров http://cyberkolbasa.com1.ru
В ее самой простой форме, команда
*IF выполняет сравнение и, если это сравне- ние истинно, то выполняется переход к метке, определенной в аргументе
Base. (В комби- нации, ряд таких команд
*IF может функционировать подобно команде CASE в других языках программирования.) Чтобы не выполнить переход к метке используются конст- рукции «if-then-else» или «do-loop». Если поток данных выходит в конец файла из-за лож- ного условия
*IF, то сеанс ANSYS не будет закончен как обычно. Вы будете должны за- кончить его извне (используйте в UNIX "kill" функцию или менеджера задачи Windows).
Устанавливая значение STOP в аргумент Base, Вы можете выйти из ANSYS осно- вываясь на специальном условии.
Конструкция «if-then-else» просто проверяет условие и выполняет следующий блок или переходит к следующей команде после команды
*ENDIF (показано комментарием "Continue").
*IF,A,EQ,1,THEN
! Block1
*ENDIF
! Continue
Следующий пример демонстрирует более сложную структуру. Обратите внимание, что только один блок может быть выполнен. Если ни одно из условий не имеет значение
«истина», то выполняется блок после команды
*ELSE.
Рис. 4.4. пример конструкции «if-then-else».
Прмечание
Вы можете использовать команду
/CLEAR в пределах конструкции «if-then-else».
Команда /CLEAR
не очищает *IF стек и число
*IF уровней сохраняется. Командой
*ENDIF необходимо закрывать любую выполняющую переход логику. Кроме того, имей- те в виду, что команда
/CLEAR удаляет все параметры, включая любые параметры, кото- рые используются в ваших командах, выполняющих переход. Вы можете избежать любых проблем, которые могли бы явиться результатом удаления параметров, использовав ко- манду
PARSAV перед
/CLEAR, и затем после
/CLEAR выполнить команду
PARRES. стр. 59 из 76

ANSYS Release 10.0 Documentation / APDL Programmer's Guide
Буквари для Инженеров http://cyberkolbasa.com1.ru
4.4.4. Повторение команды
Самая простая возможность зацикливания это команда
*REPEAT, которая позволя- ет Вам выполнять предыдущую команду указанное количество раз, увеличивая любое по- ле в той команде на постоянное значение. В следующем примере
E,1,2
*REPEAT,5,0,1 команда создает один элемент между узлами 1 и 2, а следующая команда
*REPEAT определяет, что команда
E выполняется в общей сложности пять раз (включая первона- чальную команду E), увеличивая номер второго узла на единицу при каждом дополни- тельном выполнении. Результат - пять конечных элементов связанных по узлам 1-2, 1-3, 1-
4, 1-5, и 1-6.
Примечание
Большинство команд, которые начинаются со слэша (/) или звездочки (*), так же как и макросы, выполненные как "неизвестные команды," не могут быть повторены. Од- нако, графические команды, которые начинаются со слэша, могут повторяться. Кроме то- го, избегайте использовать команду
*REPEAT с интерактивными командами, типа тех, ко- торые требуют интерактивного выбора объектов или тех, которые требуют ответа пользо- вателя.
4.4.5. Циклы: Do-Loops
Цикл позволяет Вам повторять ряд команд указанное количество раз.
Команды
*DO и
*ENDDO отмечают начало и конец цикла. Команда
*DO имеет следующий синтак- сис:
Следующий пример цикла редактирует пять файлов шагов нагружения (нумеро- ванные от 1 до 5), и делает одни и те же изменения в каждом файле.
*DO,I,1,5 ! для I = 1 до 5:
LSREAD,I ! считывание файла нагружения I
OUTPR,ALL,NONE ! внесение изменений по выходным данным
ERESX,NO
LSWRITE,I ! перезапись файла нагружения I
*ENDDO
Вы можете добавить ваши собственные циклы управления при использовании ко- манд *IF,
*EXIT или
*CYCLE.
Создавая циклы, помните следующие рекомендации.

Не выполняйте выход из цикла к метке :Label на командах
*IF или
*GO.

Избегайте использовать :Label для выполнения перехода к другой строке в преде- лах цикла. Используйте вместо этого конструкцию if-then-else-endif.

Выходные данные от команд в пределах цикла автоматически подавляются после первого обхода. Используйте команды /GOPR или
/GO в пределах цикла, если Вы хотите видеть выходные данные для всех обходов цикла.

Будьте внимательны, если Вы используете команду
/CLEAR
в пределах цикла.
Ко- манда /CLEAR
не очищает стек цикла, но она очищает все параметры, включая па- раметр цикла заявленный в команде
*DO. Вы можете избежать проблемы наличия неопределенного значения параметра обхода цикла, используя команду
PARSAV перед командой
/CLEAR, и затем, после команды
/CLEAR
команду
PARRES. стр. 60 из 76

ANSYS Release 10.0 Documentation / APDL Programmer's Guide
Буквари для Инженеров http://cyberkolbasa.com1.ru
4.4.6. Неявные циклы Do Loops
Вы можете использовать принятое соглашение для цикла (двоеточие). Использова- ние этого соглашения обычно ускоряет процесс обработки данных, потому что цикл дела- ется в памяти. Правильный синтаксис:
(x:y:z) z по умолчанию равен 1, если не определено другое значение. Например: n,(1:6),(2:12:2) выполнит те же самые шаги как и приведенные ниже: n,1,2 n,2,4 n,3,6 n,6,12
Когда используете неявные циклы знайте, что управляет выполнением самое ко- роткое выражение. Например, n,(1:7),(2:12:2) вел бы себя тождественно примеру показанному выше.
Дополнительные числовые поля, которые не имеют двоеточия (:), будут считаться как постоянное значение.
Кроме того, нецелые числа будут функционировать как обычно. Однако, если не- целые числа будут применены к команде, которая требует целых чисел, то тогда нецелое число будет округлено в соответствии с правилами математики.
Это соглашение по циклам может использоваться только для полей, требующих числового ввода. Текстовое поле ввода обработает (x:y:z) буквально.
4.4.7. Дополнительный цикл: Do-While
Вы можете выполнять функции цикла, которые повторяются неопределенное коли- чество раз, пока внешний параметр не изменяется. Команда
*DOWHILE имеет следующий синтаксис:
*DOWHILE,Parm
Повторение цикла происходит пока параметр Parm имеет значение «истина». Если
Parm становится ложным (меньше чем или равный 0.0), цикл заканчивается. Команды
*CYCLE и
*EXIT могут использоваться в пределах цикла
*DOWHILE.
4.5. Краткий справочник функций управления
Следующая ниже таблица описывает команды APDL, которые выполняют функции управления в пределах макроса.
Большинство важной информации об этих командах приведено здесь, но Вы може- те посмотреть на полные описания команд в справочной системе ANSYS. стр. 61 из 76

ANSYS Release 10.0 Documentation / APDL Programmer's Guide
Буквари для Инженеров http://cyberkolbasa.com1.ru
Команды
APDL
Выполняемое
действие
Примечания
*DO
Определяет начало цикла.
Команды после команды
*DO выполняются (до команды
*ENDDO) задан- ное количество раз.

Вы можете также управлять циклом через ко- манду
*IF.

ANSYS допускает до 20 уровней вложенности циклов, хотя циклы, которые включают
/INPUT,
*USE, или "неизвестную" команду макроса, имеют меньше уровней вложения, по- тому что они делают внутреннюю смену фай- ла.

Команды *DO,
*ENDDO,
*CYCLE, и
*EXIT должны все считываться из файла или вводить- ся с клавиатуры.

Не включайте операции интерактивного вы-
бора в циклы.

Будьте внимательны, если Вы используете ко- манду
/CLEAR
в пределах цикла.
Команда
/CLEAR
не очищает стек цикла, но она очища- ет все параметры, включая параметр цикла за- явленный в команде
*DO. Вы можете избежать проблемы наличия неопределенного значения параметра обхода цикла, используя команду
PARSAV перед командой
/CLEAR, и затем, по- сле команды
/CLEAR
команду
PARRES.
*ENDDO
Обозначает окончание цикла и запускает его на выполнение.
Вы должны использовать одну команду
*ENDDO
для каждого вложенного цикла.
Команды
*ENDDO и
*DO для цикла должны быть в одном и том же файле.
*CYCLE
Выполняя цикл, ANSYS обходит все команды ме- жду командами
*CYCLE и
*ENDDO, а затем (если применимо) начинает сле- дующий обход.
Вы можете использовать опцию цикла по условию
(через команду
*IF).
Команда *CYCLE должна быть в том же самом файле где и команда
*DO и должна находиться перед командой
*ENDDO.
*EXIT
Выходы цикла.
Команда выполняется после команды
*ENDDO.
Команды *EXIT и
*DO для цикла должны быть в том же самом файле. Вы можете использовать оп- цию выхода по условию (через команду
*IF). стр. 62 из 76

ANSYS Release 10.0 Documentation / APDL Programmer's Guide
Буквари для Инженеров http://cyberkolbasa.com1.ru стр. 63 из 76
Команды
APDL
Выполняемое
действие
Примечания
*IF
Команда для считывания условия.

Вы можете иметь до 10 вложенных уровней
*IF блока.

Вы не можете перескочить из или в пределах цикла или конструкции "if-then-else" к строке с меткой :label, и переход к строке с меткой
:label не допускается вводом с клавиатуры.

Вы можете использовать команду
/CLEAR в пределах конструкции "if-then-else". Команда
/CLEAR не очищает
*IF стек и число
*IF уровней сохраняется. Команда
*ENDIF необ- ходима для закрытия любой выполняющий переход конструкции.

Команда
/CLEAR удаляет все параметры, включая любые параметры, которые исполь- зуются в ваших командах, выполняющих пе- реход. Вы можете избежать любых проблем, которые могли бы явиться результатом удале- ния параметров, использовав команду
PARSAV перед
/CLEAR, и затем после
/CLEAR выпол- нить команду
PARRES.
*ENDIF
Заканчивает конструкцию "if-then-else".
Команды *IF и
*ENDIF должны находиться в одном и том же файле.
*ELSE
Создает заключительный дополнительный раздел блока в пределах конст- рукции "if-then-else".
Команды *ELSE и
*IF должны находиться в од- ном и том же файле.
*ELSEIF Создает дополнительный, промежуточный раздел блока в пределах конст- рукции "if-then-else".
Если
Oper = EQ или NE,
VAL1
и
VAL2
могут быть строками символов (заключенные в одиночные кавычки) или параметрами. Команды
*IF и
*ELSEIF должны находиться в одном и том же файле.
4.6. Использование параметров _STATUS и _RETURN в макросах
Программа ANSYS генерирует два параметра, _STATUS и _RETURN, которые Вы можете также использовать в вашем макросе. Например, Вы могли бы использовать зна- чение _STATUS или _RETURN в конструкциях «if-then-else», чтобы получить макрос, ко- торый предпринимает некоторое действие, основанное на результате выполнения коман- ды или функции ANSYS.
Функции твердотельного моделирования создают параметр _RETURN, который содержит результат выполнения функции. Следующая таблица определяет значения
_RETURN для различных функций твердотельного моделирования:
Таблица 4.1. Значения параметра _RETURN
Команда
Функция
Значение параметра
_RETURN
Точки
K
Определяет точку
Номер точки
KL
Точка на линии
Номер точки

ANSYS Release 10.0 Documentation / APDL Programmer's Guide
Буквари для Инженеров http://cyberkolbasa.com1.ru стр. 64 из 76
Команда
Функция
Значение параметра
_RETURN
KNODE
Точка на узле
Номер точки
KBETW
Точка между двумя точками
Номер точки
KCENTER
Точка в центре
Номер точки
Линии
BSPLIN
Создает сплайн
Номер линии
CIRCLE
Создает дугу окружности
Номер первой линии
L
Линия между двумя точками
Номер линии
L2ANG
Линия под углом к двум линиям
Номер линии
LANG
Касательная к двум линиям
Номер линии
LARC
Определяет дугу окружности
Номер линии
LAREA
Линия между двумя точками
Номер линии
LCOMB
Объединяет две линии в одну
Номер линии
LDIV
Делит линии на две или более линии
Номер первой точки
LDRAG
Линия вытянутая по точкам
Номер первой линии
LFILLT
Линия скругления между двумя линиями
Номер линии скругления
LROTAT
Дуга относительно точки поворота
Номер первой линии
LSTR
Прямая линия
Номер линии
LTAN
Линия из конца и по касательной
Номер линии
SPLINE
Сегмент сплайна
Номер первой линии
Поверхности
A
Поверхность по точкам
Номер поверхности
ACCAT
Объединяет две и более поверхности
Номер поверхности
ADRAG
Протаскивание линии вдоль пути
Номер первой поверхности
AFILLT
Скругление по пересечению двух поверх- ностей
Номер поверхности скругле- ния
AL
Поверхность ограниченная линиями
Номер поверхности
ALPFILL
Все циклы
Номер поверхности
AOFFST
Поверхность смещенная относительно данной поверхности
Номер поверхности
AROTAT
Поворот линий вокруг оси
Номер первой поверхности
ASKIN
Натягивает поверхность по направляю- щим линиям
Номер первой поверхности
ASUB
Поверхность используя форму сущест- вующей поверхности
Номер поверхности
Объемы
V
Объем по точкам
Номер объема
VA
Объем
Номер объема
VDRAG
Протаскивание поверхности вдоль траек- тории для создания объема
Номер первого объема
VEXT
Объем выдавливанием поверхности
Номер первого объема
VOFFST
Объем смещением относительно данной поверхности
Номер объема
VROTAT
Объем поворотом поверхности
Номер первого объема
Выполнение команды ANSYS в макросе или в другом месте, создает параметр
_STATUS. Этот параметр отражает состояние выполнения этой команды:

0 нет ошибки

ANSYS Release 10.0 Documentation / APDL Programmer's Guide
Буквари для Инженеров http://cyberkolbasa.com1.ru

1 для примечания

2 для предупреждения

3 для ошибки
4.7. Использование макросов с отдельными компонентами и бло-
ками
Чтобы сделать большие модели легко управляемыми, Вы можете разделить модель на отдельные компоненты, основанные на различных типах объектов: узлах, элементах, точках, линиях, поверхностях или объемах. Каждый компонент может содержать только один тип объекта. Это даст Вам возможность легко выполнить задачи типа приложения нагрузок или создания графических видов по отдельности на различных частях модели.
Вы можете также создать блоки, которые являются группами скомбинированными из двух или более компонентов или даже мультиблоки. Вы можете вкладывать блоки до пятого уровня вложенности. Например, Вы можете построить блок, названный motor из компонентов по имени STATOR, PERMMAG, ROTOR, и WINDINGS.
Следующая ниже таблица описывает некоторые из команд, которые Вы можете ис- пользовать, чтобы строить компоненты и блоки. Для более детального обсуждения этих команд см. справочную систему ANSYS. Для получения дополнительной информации от- носительно компонентов и сборок см.
Selecting and Components в ANSYS Basic Analysis
Guide.
СМ
Группы элементы геометрии в компонент.
CMDELE
Удаляет компонент или блок.
CMEDIT
Редактирует существующий компонент или блок. ANSYS обновляет блоки автоматически, чтобы отразить удаления низшего уровня или блоков.
CMGRP
Компоненты групп и блоки в один блок. Однажды определенный блок может быть выведен в листинг, удален, селектирован или анселектиро- ван с использованием тех же самых команд что и для компонентов.
CMLIST
Листинг объектов, содержащихся в компоненте или блоке.
CMSEL
Выбирает подмножество компонентов и блоков.
4.8. Примеры макросов
Ниже следуют два примера макросов. Первый пример макроса, названный o
ff- set.mac, смещает выбранные узлы в препроцессоре PREP7. Этот макрос выполнен толь- ко в целях демонстрации, потому что для этого более удобно применить команду NGEN.
! Макрос смещает выбранные узлы в PREP7
! Следующий ниже файл сохранен как: offset.mac (нижний регистр)
! Использование: offset,dx,dy,dz
/nop ! подавление вывода команд для этого макроса
*get,nnode,node,,num,max ! получить количество узлов
*dim,x,,nnode ! определение массивов для координат узлов
*dim,y,,nnode
*dim,z,,nnode
*dim,sel,,nnode ! определение массива для выбранного вектора
*vget,x(1),node,1,loc,x ! получение координат стр. 65 из 76

ANSYS Release 10.0 Documentation / APDL Programmer's Guide
1   2   3   4   5   6   7   8   9   10


написать администратору сайта