Буквари для Инженеров
Скачать 1.52 Mb.
|
Буквари для Инженеров http://cyberkolbasa.com1.ru Рис. 3.3. Графическое представление пятимерного массива. 3.10.2. Примеры массивов Элементы массивов типа ARRAY состоят из дискретных чисел, которые просто размещены в таблице. Рассмотрите следующие примеры. стр. 20 из 76 ANSYS Release 10.0 Documentation / APDL Programmer's Guide Буквари для Инженеров http://cyberkolbasa.com1.ru Параметр NTEMP мог быть массивом температур в отобранных узлах; NTEMP(1) = -47.6 мог быть температурой в узле 27, NTEMP(2) = -5.2 мог быть температурой в узле 43, и так далее. Точно так же EVOLUM мог быть массивом объемов элементов, и COMPSTRS мог быть массивом компонент напряжения, с каждым столбцом представляющим отдель- ное направление (например X, Y, Z, XY, YZ, XZ). Параметр массива типа CHAR структурирован подобно параметру ARRAY, с таб- личными значениями, являющимися алфавитно-цифровыми строками символов (до вось- ми символов). Два примера символьных параметров массива: 3.10.3. Параметр массива типа TABLE Параметр массива типа TABEL состоит из чисел (алфавитно-цифровые значения не допустимы), размещенные табличным способом, также как тип массива ARRAY. Однако, есть три важных различия. • ANSYS может вычислить (через линейную интерполяцию) любые значения между явно заявленными значениями элементов массива. • Массив таблицы содержит нулевую строку и нулевой столбец, используемые для значений индекса доступа к данным, и в отличие от стандартных массивов, эти ин- дексные значения могут быть вещественными числами. Единственное ограничение это то, что индексные значения должны быть возрастающими (никогда не убы- вающими) числами. Вы должны явно объявить значение индекса доступа к данным для каждой строки и столбца, иначе назначенное значение по умолчанию "очень малое число" (7.888609052E-31). Вы можете более удобно определить индексную отправную точку и индексировать значения через команду *TAXIS. • Значение индекса плоскости постоянно находится в ячейке 0, 0 для каждой плоско- сти. Следующий рисунок показывает массив TABLE со значениями индекса доступа к данным. Обратите внимание, что индексы определены в нулевых столбцах и строках. стр. 21 из 76 ANSYS Release 10.0 Documentation / APDL Programmer's Guide Буквари для Инженеров http://cyberkolbasa.com1.ru Рис. 3.4. Графическое представление табличного массива (TABLE). Как показано в вышеприведенном примере, конфигурируя массив таблицы, Вы должны установить • Индекс каждой плоскости указывается в элементе массива с индексом 0,0. • Столбец доступа к данным индексирует значения в элементах в0-ых строках в плоскости 1. Обращаясь к данным из массива для всех плоскостей используются только значения индекса столбца из плоскости 1. Устанавливая значения элемента массива, Вы используете традиционный индекс строки и столбца. • Строка доступа к данным индексирует значения в элементах в0-ых столбцах в плоскости 1. Обращаясь к данным из массива для всех плоскостей используются только значения индекса строки от плоскости 1. Устанавливая значения элемента массива, Вы используете традиционный индекс строки и столбца. 3.10.4. Определение и листинг массивов Чтобы определить параметр массива, Вы должны сначала объявить его тип и раз- мерность, используя команду *DIM (Utility Menu> Parameters> Array Parameters> Define/Edit). Следующие ниже примеры иллюстрируют команду *DIM, используемую, чтобы определить размерность различных типов массивов: *DIM,AA,,4 ! тип ARRAY по умолчанию, размерность 4[x1x1] стр. 22 из 76 ANSYS Release 10.0 Documentation / APDL Programmer's Guide Буквари для Инженеров http://cyberkolbasa.com1.ru *DIM,XYZ,ARRAY,12 ! тип ARRAY, размерность 12[x1x1] *DIM,FORCE,TABLE,5 ! тип TABLE, размерность 5[x1x1] *DIM,T2,,4,3 ! размерность 4x3[x1] *DIM,CPARR1,CHAR,5 ! тип CHAR, размерность 5[x1x1] Примечание Элементы массива для ARRAY и TABLE принимают значение 0 (за исключением 0-ых строк и столбца для TABLE, которые принимают очень малое значение). Элементы массива CHAR принимают пустое значение. Следующий пример показывает, как заполнить массив 5-мерными данными. Ис- пользуйте 1-мерные таблицы, чтобы загрузить 5-мерную таблицу. Используйте команду *TAXIS, чтобы определить значения индексов таблицы. *dim,xval,array,X1 *dim,yval,array,Y1 yval(1)=0,20 *dim,zval,array,10 zval(1)=10,20,30,40,50,60,70,80,90,100 *dim,tval,array,5 tval(1)=1,.90,.80,.70,.60 *dim,tevl,array,5 tevl(1)=1,1.20,1.30,1.60,1.80 *dim,ccc,tab5,X1,Y1,Z1,D4,D5,X,Y,Z,TIME,TEMP *taxis,ccc(1,1,1,1,1),1,0,wid !!! X-Dim *taxis,ccc(1,1,1,1,1),2,0,hth !!! Y-Dim *taxis,ccc(1,1,1,1,1),3,1,2,3,4,5,6,7,8,9,10 !!! Z-Dim *taxis,ccc(1,1,1,1,1),4,0,10,20,30,40 !!! Time *taxis,ccc(1,1,1,1,1),5,0,50,100,150,200 !!! Temp *do,ii,1,2 *do,jj,1,2 *do,kk,1,10 *do,ll,1,5 *do,mm,1,5 ccc(ii,jj,kk,ll,mm)=(xval(ii)+yval(jj)+zval(kk))*tval(ll)*tevl(mm) *enddo *enddo *enddo *enddo *enddo 3.10.5. Определение значений параметра массива Вы можете определить значения массива • Установив индивидуальные значения массива через команду *SET или сокращен- но через знак "=". • Заполнив отдельные векторы (столбцы) в массиве с заданными или с вычисленны- ми значениями (команда *VFILL). • В интерактивном режиме определив значения для элементов через диалоговое окно *VEDIT. • Чтением значений из файла ASCII (команды *VREAD или *TREAD). Примечание Вы не можете создать или редактировать 4-х или 5-мерные массивы в интерактив- ном режиме. Команды *VEDIT, *VREAD и *TREAD не применимы к ним. стр. 23 из 76 ANSYS Release 10.0 Documentation / APDL Programmer's Guide Буквари для Инженеров http://cyberkolbasa.com1.ru 3.10.5.1. Определение отдельных значений массива Вы можете использовать команду *SET или знак "=". Используется также как и для скалярных параметров, за исключением того, что Вы теперь определяете столбец дан- ных (до десяти значений элемента массива в команде "="). Например, чтобы определить параметр XYZ размерностью массива 12x1 (12 строк на 1 столбец), Вам понадобиться ис- пользовать дважды команду "=". В следующем примере первая команда определяет пер- вые восемь элементов массива, и вторая команда определяет следующие четыре элемента массива: XYZ(1)=59.5,42.494,-9.01,-8.98,-8.98,9.01,-30.6,51 XYZ(9)=-51.9,14.88,10.8,-10.8 Обратите внимание, что начальное местоположение элемента массива обозначено номером индекса строки параметра (1 в первой команде и 9 во второй команде). Следующий пример показывает, как определить значения элемента для параметра массива T2 размерностью 4x3, проставленной ранее в примере использования команды *DIM: T2(1,1)=.6,2,-1.8,4 ! эл-ты массива (1,1),(2,1),(3,1),(4,1) T2(1,2)=7,5,9.1,62.5 ! эл-ты массива (1,2),(2,2),(3,2),(4,2) T2(1,3)=2E-4,-3.5,22,.01 ! эл-ты массива (1,3),(2,3),(3,3),(4,3) Следующий пример определяет значения элемента для параметра FORCE таблич- ного массива (TABLE), обсуждаемого ранее. FORCE(1)=0,560,560,238.5,0 FORCE(1,0)=1E-6,.8,7.2,8.5,9.3 Первая команда “=” определяет пять элементов параметра FORCE табличного мас- сива. Вторая команда “=” переопределяет индексы. стр. 24 из 76 ANSYS Release 10.0 Documentation / APDL Programmer's Guide Буквари для Инженеров http://cyberkolbasa.com1.ru Символьные параметры массива могут также быть определены, используякоманду "=". Определяемые значения могут быть до восьми символов каждый и должны быть за- ключены в одиночные кавычки. Например: *DIM,RESULT,CHAR,3 ! параметр символьного массива размерностью (3,1,1) RESULT(1)='SX','SY','SZ' ! присвоение значений параметру RESULT Обратите внимание, что, определяя числовой параметр массива, начальное место- положение элемента массива должно быть определено (в этом случае, обозначен индекс строки номер 1). Примечание Массив типа CHAR не может использоваться как символьное имя параметра, пото- му что это создаст конфликт с меткой CHAR в команде *DIM. ANSYS заменит значение строкой символов, назначенным на параметр CHAR, когда CHAR будет введен на третьем поле команды *DIM. 3.10.5.2. Заполнение массива векторов Вы можете использовать команду *VFILL (Utility Menu> Parameters> Array Parameters> Fill), чтобы "заполнять" массив ARRAY или вектор (столбец) TABLE. Для более подробной информации о синтаксисе команды *VFILL см. справочную систему ANSYS. Следующий пример иллюстрирует возможности команды *VFILL. *DIM,DTAB,ARRAY,4,3 ! размерность числового массива 4x3 *VFILL,DTAB(1,1),DATA,-3,8,-12,57 ! четыре значения данных ! загружены в вектор 1 *VFILL,DTAB(1,2),RAMP,2.54,2.54 ! заполнение вектора 2 данными начиная ! со значения 2.54 и с шагом 2.54 *VFILL,DTAB(1,3),RAND,1.5,10 ! заполнение вектора 3 случайными числами ! между 1.5 и 10. Результат будет ! изменяться из-за случайных чисел. 3.10.5.3. Редактирование массивов в интерактивном режиме Команда *VEDIT (Utility Menu> Parameters> Array Parameters> Define/Edit), доступная только в интерактивном режиме, запускает диалоговое окно ввода данных, ко- торое Вы можете использовать, чтобы редактировать массивы типа ARRAY или TABLE (не CHAR). Диалоговое окно обеспечивает множество удобных возможностей: стр. 25 из 76 ANSYS Release 10.0 Documentation / APDL Programmer's Guide Буквари для Инженеров http://cyberkolbasa.com1.ru • Редактор стиля электронной таблицы для значений элементов массива. • Навигационные управления для того, чтобы просматривать большие массивы. • Инициализирующая функция, чтобы установить в любую строку или столбец не- обходимое значение (только для ARRAY). • Функции удаления, копирования и вставки для того, чтобы перемещать строки или столбцы данных (только для ARRAY). Полные инструкции по использованию диалоговых окон доступны при нажатии кнопки «Help» в диалоговом окне. Примечание Вы не можете редактировать 4-х или 5-мерные массивы типа ARRAY или TABLE в интерактивном режиме. Рис. 3.4. Пример диалогового окна *VEDIT для редактирования массива типа ARRAY. Рис. 3.4. Пример диалогового окна *VEDIT для редактирования массива типа TABLE. 3.10.5.4. Заполнение массива из файла данных командой *VREAD Вы можете заполнить массив из файла данных, используя команду *VREAD (Utility Menu> Parameters> Array Parameters> Read from File). Команда считывает ин- формацию из файла данных ASCII и начинает записывать их в массив, начиная с индекса, который Вы определили. Вы можете управлять форматом чтения информации из файла до стр. 26 из 76 ANSYS Release 10.0 Documentation / APDL Programmer's Guide Буквари для Инженеров http://cyberkolbasa.com1.ru описателей данных. Описатели данных должны быть заключены в круглые скобки и по- мещены в строку после команды *VREAD. См. раздел «Векторные операции» для получе- ния дополнительной информации об описателях данных. Описатели данных управляют числом полей, которые считываются при каждой записи, шириной полей данных и пози- цией десятичной точки в поле. Например дан следующий файл данных с именем dataval: 1.5 7.8 12.3 15.6 -45.6 42.5 и массив по имени EXAMPLE, который определен, и которому задана размерность 2x3, следующими командами *DIM,EXAMPLE,,2,3 *VREAD,EXAMPLE(1,1),dataval,,,JIK,3,2 (3F6.1) в результате получаем 1.5 7.8 12.3 EXAMPLE= 15.6 -45.6 42.5 Команда *VREAD не может быть использована непосредственно из окна ввода ко- манд. Однако, Utility Menu> Parameters> Array Parameters> Read from File диалоговое окнопредлагает способ определить описатели данных и использовать команду в интерак- тивном режиме. Примечание Вы не можете заполнить 4-х или 5-мерный массив, используя команду *VREAD. 3.10.5.5. Заполнение табличного массива из файла данных командой *TREAD После того, как массив сконфигурирован, Вы имеете две опции для того, чтобы оп- ределить значения для элементов массива TABLE: Вы можете добавить значения, также как и для любого другого типа массива, или Вы можете считать в таблицу данные из внешнего файла. Чтобы считать в таблицу данные из внешнего файла, Вы должны во первых опре- делить массив TABLE, задав число строк, столбцов, плоскостей, и меток для каждого. Вы можете тогда считать файл ASCII, содержащий таблицу данных, используя команду *TREAD (Utility Menu> Parameters> Array Parameters> Read from File). В это время, Вы также определяете число строк, которые необходимо пропустить (NSKIP) между заго- ловком файла и первой строки таблицы. Считывая данные из внешнего файла, помните: • Файл, содержащий таблицу данных может быть создан в текстовом редакторе или внешнем приложении (типа Microsoft Excel), но он должен быть в форме ASCII разграниченный символами табуляции, чтобы читаться в ANSYS. • Вы должны сначала определить массив в ANSYS, не забывая учитывать индексные значения (0,0). • Значения читаются прямо поперек строк, пока все столбцы на каждой строке мас- сива не заполнятся; тогда ANSYS переходит от одной строки к следующей и начи- нает заполнять в ней столбцы, и так далее. Убедитесь, что размерность массива, который Вы определили, правильна. Если Вы по ошибке определите меньше столб- стр. 27 из 76 ANSYS Release 10.0 Documentation / APDL Programmer's Guide Буквари для Инженеров http://cyberkolbasa.com1.ru цов в массиве чем необходимо, то ANSYS начнет заполнять в следующей строке массива, используя значения, остающиеся в первой строке читаемой таблицы дан- ных. Точно так же, если Вы определите больше столбцов в массиве чем необходи- мый, то ANSYS заполнит все столбцы массива, используя значения от следующей строки считываемой таблицы данных и только тогда перейдет на следующую стро- ку и начнет ее заполнять. Вы можете создать 1- , 2- , и 3-мерные таблицы, считывая данные из внешнего фай- ла. Примеры того, как их создавать, последуют ниже. Примечание Вы не можете заполнить 4-х или 5-мерный массив типа TABLE, используя команду *TREAD. Пример 1: 1-мерная таблица. Сначала, создайте 1-мерную таблицу, используя приложение по вашему выбору ( типа электронной таблицы, редактора текста, и т.д.) и затем сохраните файл как текстовый файл в формате с символами табуляции. В этом примере, таблица называется "Tdata" и содержит данные температуры в зависимости от времени. Эта таблица в форме ASCII вы- глядела бы следующим образом: Time Temperature Table Time Temp 0 20 1 30 2 70 4 75 В ANSYS Вы определяете параметр TABLE с именем "Tt", используя команду *DIM (Utility Menu> Parameters> Array Parameters> Define/Edit). Определите 4 строки и 1 столбец, метку строки Time и метку столбца Temp. Обратите внимание, что таблица данных, которую Вы создали, имеет четыре строки и один столбец, плюс строка и значе- ния индекса столбца (первый столбец - TIME - является значениями индекса строки). То- гда массив TABLE считываемый из файла, который был описан ранее, с 2-мя пропущен- ными строками выглядел бы в ANSYS следующим образом: Риз. 3.7. Пример диалогового окна для 1-мерной таблицы. стр. 28 из 76 ANSYS Release 10.0 Documentation / APDL Programmer's Guide Буквари для Инженеров http://cyberkolbasa.com1.ru Тот же самый пример, выполненный через командную строку, был бы похож на следующее: *DIM,Tt,table,4,1,1,TIME,TEMP *TREAD,Tt,tdata,txt,,2 Пример 2: 2-мерная таблица Для этого примера, создайте (в текстовом редакторе или в другом приложении) 2- мерную таблицу с именем "T2data", содержащую температурные данные как функцию времени и x-координаты и считайте его в параметр массива TABLE по имени "Ttx". Эта таблица в форме ASCII выглядела бы следующим образом: Temp (time-X-coord) Table Time X-coordinate 0 0 .3 .5 .7 .9 0 10 15 20 25 30 1 15 20 25 35 40 2 20 25 35 55 60 4 30 40 70 90 100 В ANSYS, Вы определяете параметр TABLE "Ttx" используя команду *DIM (Util- ity Menu> Parameters> Array Parameters> Define/Edit). Определите 4 строки, 5 столб- цов, 1 плоскость, метку строки Time и метку столбца X-coord. Обратите внимание, что таблица данных, которую Вы создали, имеет четыре строки и пять столбцов данных, плюс строка со значениями индекса столбца. Затем считайте данные из файла как описано ра- нее, определив 2 пропущенных строки. Этот массив в ANSYS выглядел бы следующим образом: Рис. 3.8. Пример диалогового окна для 2-мерной таблицы. Тот же самый пример, выполненный через командную строку, был бы похож на следующее: *DIM,Ttx,table,4,5,,time,X-COORD *TREAD,Ttx,t2data,txt,,2 стр. 29 из 76 ANSYS Release 10.0 Documentation / APDL Programmer's Guide Буквари для Инженеров http://cyberkolbasa.com1.ru Пример 3: 3-мерная таблица Для этого примера, создайте 3-мерную таблицу по имени "T3data", содержащий температурные данные как функцию времени, x-координаты и y-координаты и считайте ее в параметр массива TABLE с именем "Ttxy". Таблица в форме ASCII выглядела бы сле- дующим образом: Temp (time-X-coord) Table Time X-coordinate 0 0 .3 .5 .7 .9 0 10 15 20 25 30 1 15 20 25 35 40 2 20 25 35 55 60 4 30 40 70 90 100 1.5 0 .3 .5 .7 .9 0 20 25 30 35 40 1 25 30 35 45 50 2 30 35 45 65 70 4 40 50 80 100 120 В примере выше, полужирные значения (в позиции (0,0,Z)) указывают отдельные плоскости. Каждая плоскость данных, наряду со строкой и значениями индекса столбца, повторяется для каждой плоскости. Отличаются только значение индекса плоскости и фактические значения данных. Затененная область показывает значения, которые изме- няются от плоскости к плоскости. В ANSYS, Вы определяете параметр TABLE "Ttxy" используя команду |