пятница, 30 ноября 2012 г.

Написание макросов на языке APDL

Язык APDL используется в CAE системах Ansys и Ansys Workbench. Для Ansys и Ansys Workbench используются один и тот же набор команд, полный перечень которых можно найти в хелпе (help). В хелпе можно найти описание команд и пример их использование, так же имеются примеры рабочих макросов для выполнение определенных функций.

clip_image002


Существует два способа написание макросов на языке APDL. Первый для более опытных специалистов в программирование - это с использованием хелпа. Сложность обстоит в том, что вы не знаете какая именно команда отвечает за ту функцию которая вам нужна. Так же нужна разобраться с параметрами этой команды. Второй способ более простой, но актуален только для Ansys Classic - это использовать внутри программного комплекса операцию и посмотреть в log-файле с помощью какой команды эта операция была осуществлена.
В ходе выполнение дипломной работы мне было необходимо написать макрос. Он состоял из двух частей, каждая их частей относится к отдельному расчету. Первая часть макроса, используется в линейном статическом анализе, и находит все узловые контактные давления, пересчитывает их в элементные контактные давления, и записывает в файл полученные значения давлений и сохраняет в таблицу номер элемента с которого были взяты те или иные давления. Вторая часть макроса, используется в линейном термическом анализе. Задача этого макроса - это считать данные с файла о элементных контактных давлениях, по формуле 1.1 пересчитать их в тепловой поток и приложить полученный тепловой поток. Самое сложное в этом макросе, когда прикладываешь тепловой поток на элемент, то нужно приложить его именно на том же элемент с которого было взято контактное давление.

q = m · Fw · Ft · P · V, [Вт/мм2];   (1.1)
Где, q тепловой поток
mкоэффициент трения;
Fw коэффициент, учитывающий распределение тепла между контактирующими поверхностями;
Ft – коэффициент, учитывающий долю перехода энергии трения в тепловую энергию ;
P – давление на контактной поверхности, МПа ;
V – кинетическая скорость, мм/с.

Основные команды использованные в макросе:

— *Get – получение необходимой информация из узла, элемента(давления, напряжения, перемещения);
— *VWrite – сохранение информации в файл;
— *Set – запись информации в таблицу;
— *Do – создание цикла;
— *Create – создание файла для записи.

Листинг программы

Программа для определения элементных давлений та записи их в файл.
nsel,all
set,last
ESEL,S,TYPE,,3
NSLE,S
*get,count,elem,0,count
*get,minid,elem,0,num,min
*dim,test,,count,1
*dim,test2,,count,1
*dim,test1,,9,1
*do,alrcount,1,count,1
*SET,TEST(alrcount,1,1) , minid
*GET,minid,elem,minid,NXTH
*enddo
*CREATE,ansuitmp
*CFOPEN,'RESTT1','out',' '
*do,alrcountA,1,count,1
stress=0
ESEL,S, , , test(alrcountA,1,1)
NSLE,S
*get,nodemin,node,0,num,min
*get,ncount,node,,count
nncount=ncount/2
*do,aA,1,ncount,1
contpres=0
*GET,contpres,node,nodemin,cont,pres
*SET,TEST1(aA,1,1),contpres
*GET,nodemin,node,nodemin,NXTH
stress=stress+contpres
*enddo
*SET,TEST2(alrcountA,1,1),stress/nncount
resultss=stress/nncount
*VWRITE,resultss, , , , , , , , ,
(f20.5)
*enddo
*CFCLOS
*END
/INPUT,ansuitmp
Программа для считывания информации про элементные давления из файла, пересчета их в тепловой поток, и приложения полученный тепловой поток к элементам.
ESEL,S,TYPE,,3
NSLE,S
*get,tcount,elem,0,count
*get,tminid,elem,0,num,min
*dim,test5,,tcount,1
*CREATE,ansuitmp
*VREAD,test5,'D:\практика\16.10.2012\Last\cyl_files\dp0\SYS-1\MECH\restt1','out', ,JIK,1,tcount,1,0,
(f20.5)
*END
/INPUT,ansuitmp
!*
*do,talrcount,1,tcount,1
qq=0.5*0.5*0.3*(test5(talrcount,1,1)*4.45)
SFE,tminid,,HFLUX,1,qq, ,
*GET,tminid,elem,tminid,NXTH
*enddo
ALLSEL,ALL
nsel,all
set,last










































































Комментариев нет:

Отправить комментарий