Буквари для Инженеров
Скачать 1.52 Mb.
|
*DIM (Util- ity Menu> Parameters> Array Parameters> Define/Edit). В случае 3-мерной таблицы, размерность таблицы проставляется согласно числу строк, столбцов, и плоскостей дан- ных. Первый столбец (Time) - значения индекса строки, и первая строка - значения индек- са столбцов. Определите 4 строки, 5 столбцов, 2 плоскости, метку строки Time, метку столбца X-COORD и метку плоскости Y-COORD. Обратите внимание, что таблица дан- ных, которую Вы создали, имеет четыре строки и пять столбцов данных в двух плоско- стях, плюс строка и столбец со значениями индексов. Затем считайте из файла данные как было описано ранее, пропустив 2 строки. Этот массив типа TABLE для второй плоскости данных (Y=1.5) будет выглядеть в ANSYS так, как показано ниже: Рис. 3.9. Пример диалогового окна для 3-мерной таблицы. стр. 30 из 76 ANSYS Release 10.0 Documentation / APDL Programmer's Guide Буквари для Инженеров http://cyberkolbasa.com1.ru Тот же самый пример, выполненный через командную строку, был бы похож на следующее: *DIM,Ttxy,table,4,5,2,TIME,X-COORD,Y-COORD *TREAD,Ttxy,t3data,txt,,2 3.10.5.6. Интерполяция значений Когда Вы обращаетесь к информации из массива, ANSYS будет интерполировать значения между явно установленными. Как пример того, как ANSYS интерполирует значения в массиве типа TABLE, рас- смотрите следующее: Учитывая, что A - параметр массива TABLE, программа ANSYS может вычислить любое значение между (1) и (2), например • (1.5) вычисляется как 20.0 (половина между 12.0 и 28.0) • (1.75) вычисляется как 24.0 • (1.9) вычисляется как 26.4 Точно так же, если PQ - параметр массива TABLE • PQ (1.5, 1) вычисляется как 3.4 (половина между 2.8 и -9.6) • PQ (1, 1.5) вычисляется как 3.5 (половина между 2.8 и 4.2) • PQ (3.5, 1.3) вычисляется как 14.88 Эта особенность позволяет Вам описыватьфункцию, типа y=f(x), используя массив типа TABLE. Вы использовали бы j=0 столбец для значений независимой переменной x и j=1 столбца для значений y. Рассмотрите, например, функцию истории нагружения силой описанной пятью точками как показано ниже. Рис. 3.10. История нагружения. стр. 31 из 76 ANSYS Release 10.0 Documentation / APDL Programmer's Guide Буквари для Инженеров http://cyberkolbasa.com1.ru Вы можете определить эту функцию как параметр массива TABLE, элементы массива ко- торого - значения силы, и с индексом строки от 1 до 5 - значения времени от 0.0 до 9.3. Схематично параметр будет выглядеть следующим образом: ANSYS может вычислить (через линейную интерполяцию) значения силы в зави- симости от времени не определенные в параметре FORCE. Для вышеупомянутого приме- ра, ANSYS вычислит значение 89.4375 для FORCE(9). Если местоположение параметра находиться вне размерности массива, то экстраполяция значений не выполняется, а ис- пользуется начальное/последнее значение массива. Например, ANSYS определит значе- ние 560.0 для FORCE(5,2) или 0.0 для FORCE(12) Вы можете увидеть из этих примеров, что параметры массива TABLE могут стать очень мощными инструментами в вашем анализе. Обычно этот тип массива применяется для описания функции истории нагружения, спектра кривых отклика, кривых напряже- ния-деформации, кривых температурнозависисмых матералов, кривых B-H для магнитных материалов, и т.д. Знайте, что параметры массива TABLE требуют больше компьютерного времени для обработки, чем тип массива ARRAY. 3.10.5.7. Поиск и восстановление значений в массиве Вы можете использовать команду *VGET (Utility Menu> Parameters> Get Array Data), которая подобно команде *GET, отыскивает значения и сохраняет их в массиве. Вы должны определить начальный номер местоположения массива для параметра массива, который создает команда *VGET. Цикл продолжается по последовательным чис- лам до значения KLOOP по умолчанию. Например, *VGET,A(1),ELEM,5,CENT,X возвра- щает положение центра тяжести по оси Х элемента номер 5 и хранит результат в первой ячейке массива A. Поиск продолжается с элементами 6, 7, и так далее пока последова- тельные ячейки массива не заполняться. В этом примере, если KLOOP = 4, то будет воз- вращен центр тяжести по осям X, Y, и Z. Чтобы восстанавливать значения параметра массива, используйте команду *VPUT (Utility Menu> Parameters> Array Operations> Put Array Data). Команда *VPUT использует те же самые параметры что и команда *VGET (опи- санная выше), но делает противоположные операции. Список допустимых значений аргу- ментов команды *VPUT см. в описании команды в справочной системе ANSYS. Программа ANSYS "помещает" векторные элементы без какого-либо преобразова- ния системы координат. *VPUT может заменить существующие элементы массива, но не может создать новые элементы. Степень свободы, которая заменена в базе данных, дос- тупна для всех последующих операций. Другие результаты изменяются временно, и дос- тупны главным образом для немедленной последующей печати и отображения на экране. Примечание Используйте эту команду с большой предосторожностью, поскольку она может из- менить все разделы базы данных. Команда *VPUT не поддерживает все значения аргу- ментов, которые доступны для команды *VGET, потому что помещение значений в неко- торые местоположения может сделать базу данных ANSYS противоречивой. стр. 32 из 76 ANSYS Release 10.0 Documentation / APDL Programmer's Guide Буквари для Инженеров http://cyberkolbasa.com1.ru 3.10.5.8. Листинг массива Как и со скалярными параметрами, Вы можете использовать команду *STATUS, чтобы выполнить листинг массива. Следующие примеры иллюстрируют использование команды *STATUS: *STATUS ABBREVIATION STATUS- ABBREV STRING SAVE_DB SAVE RESUM_DB RESUME QUIT Fnc_/EXIT POWRGRPH Fnc_/GRAPHICS ANSYSWEB Fnc_HomePage PARAMETER STATUS- ( 5 PARAMETERS DEFINED) (INCLUDING 2 INTERNAL PARAMETERS) NAME VALUE TYPE DIMENSIONS MYCHAR hi CHARACTER MYPAR ARRAY 4 6 1 MYPAR1 .987350000 SCALAR *STATUS,XYZ(1),5,9 ! листинг параметра XYZ с 5 по 9 строку PARAMETER STATUS- XYZ ( 4 PARAMETERS DEFINED) LOCATION VALUE 5 1 1 -8.98000000 6 1 1 9.01000000 7 1 1 -30.6000000 8 1 1 51.0000000 9 1 1 -51.9000000 *STATUS,FORCE(1),,,0 ! листинг параметра FORCE, включая столбец j=0 PARAMETER STATUS- FORCE ( 4 PARAMETERS DEFINED) LOCATION VALUE 1 0 1 0.000000000E+00 2 0 1 0.800000000 3 0 1 7.20000000 4 0 1 8.50000000 5 0 1 9.30000000 1 1 1 0.000000000E+00 2 1 1 560.000000 3 1 1 560.000000 4 1 1 238.500000 5 1 1 0.000000000E+00 *STATUS,T2(1,1) ! листинг параметра T2 PARAMETER STATUS- T2 ( 4 PARAMETERS DEFINED) LOCATION VALUE 1 1 1 0.600000000 2 1 1 2.00000000 3 1 1 -1.80000000 4 1 1 4.00000000 1 2 1 7.00000000 2 2 1 5.00000000 3 2 1 9.10000000 стр. 33 из 76 4 2 1 62.5000000 ANSYS Release 10.0 Documentation / APDL Programmer's Guide Буквари для Инженеров http://cyberkolbasa.com1.ru 1 3 1 2.000000000E-04 2 3 1 -3.50000000 3 3 1 22.0000000 4 3 1 1.000000000E-02 *STATUS,RESULT(1) ! листинг параметра RESULT PARAMETER STATUS- RESULT ( 4 PARAMETERS DEFINED) LOCATION VALUE 1 1 1 SX(CHAR) 2 1 1 SY(CHAR) 3 1 1 SZ(CHAR) 3.10.6. Запись файла данных Вы можете записать отформатированные файлы данных (табличное форматирова- ние) из данных, содержащихся в массивах, через команду *VWRITE. Команда берет до 10 векторов массива как параметры и записывает данные, содержавшиеся в тех векторах в открытый в настоящее время файл (команда *CFOPEN). Формат для каждого вектора оп- ределен согласно описателей данных ФОРТРАНА 77 на строке после команды *VWRITE (поэтому, Вы не можете использовать команду *VWRITE из командной строки ANSYS.) Вектор массива определяется начальным местоположением элемента (типа MYARRAY (1,2,1)). Вы можете также использовать выражение, которое вычисляет значе- ние для каждого поля в каждой строке файла данных. Ключевое слово SEQU определяет последовательный ряд целых чисел для столбца, начинающихся с одного. Формат каждой строки в файле данных определяется по дескриптору (описателю) строки. Вы должны включить один описатель для каждого параметра к команде. Не вклю- чайте слова FORMAT в дескриптор строки. Вы можете использовать любой веществен- ный формат, или символьный формат дескриптора; однако, Вы не можете использовать целое число или list directed дескрипторы. 3.10.6.1. Формат описателей данных Если Вы не знакомы с описателями данных ФОРТРАНА, то этот раздел даст Вам начальные представления о форматирований ваших файлов данных. Для получения до- полнительной информации обратитесь к документации ФОРТРАНА 77. Вы должны обеспечить описатель данных для каждого элемента данных, который Вы определяете как параметр в команде *VWRITE. Вообще, Вы можете использовать опи- сатель F (с плавающей запятой) для любых числовых значений. Дескриптор F имеет син- таксис Fw.d где w – является шириной поля данных в символах. d – является числом цифр справа от десятичной точки. Таким образом, для поля, которое в ширину состоит из 10 символов и имеет восемь символов после десятичной точки, Вы использовали бы следующий описатель данных: F10.8 Для символьных полей, Вы можете использовать дескриптор А. Описатель имеет синтаксис Aw стр. 34 из 76 ANSYS Release 10.0 Documentation / APDL Programmer's Guide Буквари для Инженеров http://cyberkolbasa.com1.ru где w – Является шириной поля данных в символах. Таким образом, для символьного поля, которое в ширину состоит из 8 символов, описатель выглядел бы следующим образом: A8 Следующие примеры иллюстрируют использование команды *VWRITE и описате- ли данных. Дан массив MYDATA с определенной размерностью и заполненый следующими значениями: Следующий короткий макрос во-первых определяет скалярный параметр X равный 25 и затем открывает файл vector (команда *CFOPEN). Затем команда *VWRITE опреде- ляет данные, которые будут записаны в файл. В этом случае, первый вектор записывается с использованием ключевого слова SEQU, чтобы создать номера строк. Обратите внима- ние, что в некоторых случаях константы, скалярные параметры, и операции, которые включают значения элемента массива, записываются в файл. Обратите внимание на эти элементы содержащиеся в файле данных. x=25 *cfopen,vector *vwrite,SEQU,mydata(1,1,1),mydata(1,2,1),mydata(1,3,1),10.2,x,mydata(1,1,1)+3 (F3.0,' ',F8.4,' ',F8.1,' 'F8.6,' ',F4.1,' 'F4.0,' 'F8.1) cfclos Макрос создает следующую картотеку данных: 1. 2.1522 3.9 5.286370 10.2 25. 5.2 2. 2.3049 4.0 5.409196 10.2 25. 5.2 3. 2.0105 3.4 5.936638 10.2 25. 5.2 4. 2.3683 3.3 5.632203 10.2 25. 5.2 5. 2.8491 4.8 5.978024 10.2 25. 5.2 6. 2.2280 3.5 5.546851 10.2 25. 5.2 Второй пример использует массив заранее определенной размерности и заполнен- ный следующим образом: стр. 35 из 76 Обратите внимание на использование описателей в следующем примере использо- вания команды *VWRITE: ANSYS Release 10.0 Documentation / APDL Programmer's Guide Буквари для Инженеров http://cyberkolbasa.com1.ru *vwrite,SEQU,mydata(1,1),mydata(1,2),(mydata1(1,1)+mydata1(1,2)) (' Row',F3.0,' contains ',2F7.3,'. Is their sum ',F7.3,' ?') Получающийся файл данных Row 1. contains 10.000 50.000. Is their sum 60.000 ? Row 2. contains 20.000 60.000. Is their sum 60.000 ? Row 3. contains 30.000 70.000. Is their sum 60.000 ? 3.10.7. Операции над массивами Так же как параметрические выражения и функции позволяют выполнять операции над скалярными параметрами, так и имеется ряд команд для выполнения операции над массивами. существуют следующие классы операций: операции над столбцами (вектора- ми), известные как векторные операции и операции над всей матрицей (массивов), из- вестные как матричные операции. Все операции выполняются рядом команд, описание которых будет рассмотрено ниже. 3.10.7.1. Векторные операции Векторные операции это ряд простых операций таких как сложение, вычитание, синус, косинус, скалярное произведение, векторное произведение, и т.д. - повторяющиеся последовательно над элементами массива. Циклы (будут обсуждаться ниже), могут ис- пользоваться с этой целью, но более удобный и намного более быстрый путь состоит в том, чтобы использовать векторные команды - *VOPER, *VFUN, *VSCFUN, *VITRP, *VFILL, *VREAD, и *VGET. Из этих перечисленных векторных команд, только *VREAD и *VWRITE допустимы для символьных параметров массива. Другие команды векторных операций применяются только, если массив определен как тип ARRAY или тип TABLE (команда *DIM). *VFILL, *VREAD, *VGET, *VWRITE, и *DIM команды были введены ранее в этой главе. Другие команды, которые обсуждаются в этом разделе, включают *VOPER Utility Menu> Parameters> Array Operations> Vector Operations Выполняет операцию над двумя векторами на входе и в результате на выходе по- лучается один вектор. *VFUN Utility Menu> Parameters> Array Operations> Vector Functions На входе выполняет функцию над одним вектором массива и в результате выводит один вектор массива. *VSCFUN Utility Menu> Parameters> Array Operations> Vector-Scalar Func На входе определяет свойства одного вектора массива и помещает результат в ука- занный скалярный параметр. *VITRP Utility Menu> Parameters> Array Operations> VectorInterpolate Формирует параметр массива (типа ARRAY), интерполируя параметр массива (ти- па TABLE) по указанным индексам таблицы. Ниже следуют примеры, которые иллюстрируют использование некоторых из этих команд. Обратитесь к справочной системе ANSYS для информации о синтаксисе этих ко- манд. Для всех следующих примеров, параметры массива (типа ARRAY) X, Y, и THETA, были определены размерности и значения элементов массивов. стр. 36 из 76 ANSYS Release 10.0 Documentation / APDL Programmer's Guide Буквари для Инженеров http://cyberkolbasa.com1.ru В следующем примере для результирующего массива (Z1) сначала определена раз- мерность. Затем команда *VOPER складывает 2-ой столбец массива X и 1-ый столбец массива Y, оба стартуют с первой строки, и затем помещает результат в массив Z1. Обра- тите внимание, что стартовое местоположение (индекс строки и столбца) должно быть определено для всех параметров массива. Затем операция просчитывает последовательно вниз все элементы указанного вектора. *DIM,Z1,ARRAY,4 *VOPER,Z1(1),X(1,2),ADD,Y(1,1) В следующем примере снова для результирующего массива (Z2) сначала определе- на размерность. Затем команда *VOPER умножает первый столбец X (начинающийся со строки 2) с четвертым столбцом Y (начинающийся со строки 1) и записывает результаты в массив Z2 (начинающийся со строки 1). *DIM,Z2,ARRAY,3 *VOPER,Z2(1),X(2,1),MULT,Y(1,4) В этом примере для результирующего массива (Z4) сначала определена размер- ность. Затем команда *VOPER вычисляет векторное произведение четырех пар векторов, одна пара для каждой строки X и Y. i, j, и k компоненты этих векторов - столбцы 1, 2, и 3 соответственно из массива X и столбцов 2, 3, и 4 из Y. Результаты записаны в массив Z4, у которого компоненты i, j, и k - соответственно векторы 1, 2, и 3. *DIM,Z4,ARRAY,4,3 стр. 37 из 76 ANSYS Release 10.0 Documentation / APDL Programmer's Guide Буквари для Инженеров http://cyberkolbasa.com1.ru *VOPER,Z4(1,1),X(1,1),CROSS,Y(1,2) В следующем примере для массив результатов (A3) сначала определена размер- ность. Затем команда *VFUN возводит каждый элемент в векторе 2 из массива X в сте- пень 2 и записывает результаты в массив A3. *DIM,A3,ARRAY,4 *VFUN,A3(1),PWR,X(1,2),2 В этом примере, сначала проставлена размерность массива результатов (A4). Затем две команды *VFUN вычисляют косинус и синус элементов массива в массив THETA и помещают результаты в первый и второй столбцы массива A4 соответственно. Обратите внимание, что массив A4 теперь представляет дугу окружности, охватывающую 90 °, опи- санную семью точками (чьи x, y, и z глобальные декартовские координаты представляют собой три вектора). Дуга имеет радиус 1.0 и располагается параллельно плоскости x-y с координатой z = 2.0. *DIM,A4,ARRAY,7,3 *AFUN,DEG *VFUN,A4(1,1),COS,THETA(1) *VFUN,A4(1,2),SIN,THETA(1) A4(1,3)=2,2,2,2,2,2,2 Две дополнительных команды *VOPER, используют операции сборки (GATH) и разборки (SCAT), чтобы скопировать значения из одного вектора в другой основываясь на индексах элементов массивов. Следующий пример демонстрирует операцию сборки. Об- ратите внимание, что, как всегда, для массива результатов должна быть заранее определе- на размерность. В примере операция сборки копирует значение массива B1 в массив B3 (используя индексные позиции, определенные в B2). Также, обратите внимание на то, что последний элемент в массиве B3 равен 0, поскольку это его инициализированное (началь- ное значение по умолчанию) значение. стр. 38 из 76 ANSYS Release 10.0 Documentation / APDL Programmer's Guide Буквари для Инженеров http://cyberkolbasa.com1.ru *DIM,B1,,4 *DIM,B2,,3 *DIM,B3,,4 B1(1)=10,20,30,40 B2(1)=2,4,1 *VOPER,B3(1),B1(1),GATH,B2(1) 3.10.7.3. Операции с матрицами Матричные операции это математические операции между числовыми массивами, типа матричного умножения, транспонирования и решения системы уравнений. Команды, обсуждаемые в этом разделе, следующие: *MOPER Utility Menu> Parameters> Array Operations> Matrix Operations Выполняет матричные операции над двумя входными параметрами массивов (мат- рицами) и на выходе получает одну матрицу. Матричные операции включают: • Матричное умножение • Решение системы уравнений • Сортировка (в порядке возрастания) на указанном векторе в матрице • Ковариация между двумя векторами • Корреляция между двумя векторами |