APDL的全称是ANSYS Parametric Design Language(ANSYS参数化设计语言),是一种解释型语言,具有变量定义、判断、循环、文件读写等功能。
用户可以利用APDL编写出参数化的用户程序,从而实现有限元分析的全过程,即建立参数化的CAD模型、参数化的网格划分与控制、参数化的材料定义、参数化的载荷和边界条件定义、参数化的分析控制和求解以及参数化的后处理。
学会使用APDL是成为ANSYS高级用户的重要标志。本文将介绍笔者过去几年实际工作中的一些APDL应用经验,欢迎广大同行指点、交流。
ANSYS的APDL编写完后通常保存为后缀为.txt或.inp的文本文件,从微软自带的记事本到Notepad++,PSPAD,UltraEdit等专业开发程序都可作为编辑工具。笔者最初是用Notepad++作为APDL的编写工具,将背景设置成护眼色,使用起来也颇满意。偶然一次,看到部门里一位澳大利亚留学回来的IT工程师同事在用Sublime开发Python代码,一下子就被Monokai主题配色深深地吸引住了。从此,笔者投向了Sublime的怀抱,其工作界面如下图。
需要说明的是,Sublime安装完后,需要再安装APDL-Syntax-master插件(可从GITHUB下载),才可以支持ANSYS APDL语法高亮。
另外,编写APDL命令流时,可打开ANSYS官方的 Element Reference 和 Command Reference 两个pdf文件作为工具书供随时查阅参考。
ANSYS的前处理体验相对HyperMesh/ANSA等专业前处理软件来说,相差得不是一点点。主要体现在以下两个方面:
1.3D几何模型特征简化、拓扑修复 结构分析的几何模型通常由设计部门提供,往往存在大量的倒角、圆角、安装定位孔、注塑浇口甚至破面等缺陷,面对这样的几何模型,ANSYS处理起来是相当吃力甚至无法处理。
2.布尔运算 网格划分前,通常需要对体、面进行剖分以获得较为规则的网格。ANSYS的布尔操作常常不是失败,就是生成了一些碎细的线、面、体,需要更多的时间来处理修复。
Workbench的出现,在很大程度上提升了ANSYS的前处理能力,HyperMesh等专业前处理软件也可以导出ANSYS的cdb文件。因此,对于工程中较为复杂的模型,可运用APDL读入cdb模型,然后在命令流文件中定义材料参数、接触参数、约束、载荷等,最终提交给程序求解。
对于较为简单、规则的模型,可直接利用APDL参数化建模,方便几何尺寸、材料属性、载荷、约束等参数的影响分析。尤其对于多层薄膜复合材料问题(比如十多层),在APDL中可方便修改叠层设计(各铺层厚度)、各铺层材料属性/铺角等,大大提高建模、研究效率。
示例如下:
/prep7
! ---------------------------------------
! parameters defination
! ---------------------------------------
*set, all, , ! clear all parameters
R1 = 5.0 ! radius of thin film
T1 = 5.0e-3 ! thickness of thin film
P1 = 1.0 ! pressure
ESZ = 0.2 ! global element size
! ---------------------------------------
! element and material property
! ---------------------------------------
et, 1, shell181
keyopt, 1, 1, 0 ! bending and membrane stiffness (default)
keyopt, 1, 8, 0 ! store data for botoom of bottom layer and top of top layer (default)
sectype, 1, shell
secdata, T1, 1, 0.0, 3
secoffset, MID
mp, ex, 1, 190e6 ! Si
mp, dens, 1, 2.33e-6
mp, nuxy, 1, 0.278
! ---------------------------------------
! thin film geometry modeling and meshing
! ---------------------------------------
csys, 0
mat, 1
type, 1
real, 1
cyl4, 0, 0, 0, 0, R1, 360
wprota, , 90
asbw, all
wprota, , , 90
asbw, all
asel, all
aatt, 1, 1, 1 ! mat, real, type
mshape, 0, 2D
allsel
lesize, all, ESZ
amesh, all
csys, 1
nsel, s, loc, x, R1
d, all, all, 0
! secplot, 1 ! plot the geometry of a shell section
! /eshape, 1 ! displays elements with shapes determined from the section definition
csys, 0
allsel
save
finish
利用APDL可方便的设置分析类型、重启动、求解器、输出内容、载荷、单元生死、非线性控制等。
示例如下:
! ---------------------------------------
! solve
! ---------------------------------------
/solu
antype, static ! perform a static analysis
nropt, full ! use full newton-raphson
outpr, all, none
outres, basic, all ! write the solution for every substep
sfa, all, 1, pres, P1
! sf, all, pres, P1
solcontrol, on ! used optimizied nonlinear solution defaults
nlgeom, on ! includes large-deflection effects
kbc, 0 ! ramped loading
nsubst, 45, 60, 30 ! specifles the number of substeps to be taken in this load step
time, 1 ! sets the time for a load step
allsel
solve
finish
注意,当APDL命令流较长时,直接复制粘贴在命令流输入框会花费较长时间。推荐的快速读入方法是,将APDL命令流保存为文本文件(.txt或.inp后缀),然后在GUI中通过File > Read Input from提交,或在ANSYS Mechanical APDL Product Launcher通过ANSYS Batch提交,如下图。
利用APDL可以方便地从结果文件中提取模态频率、谐响应、接触力、节点位移/温度/电压等数据,并按一定格式写出(FORTRAN输入输出格式控制),可将写出的数据用MATLAB/Python读入进行数据处理、绘图。用较少的代码,即可省去在量的重复操作,大大提高工作效率。
示例如下:
*cfopen, , ndisp
*vwrite,
(' i_SET LoadStep N_UX N_UY N_UZ')
*vwrite, NodeDisp(1,1), NodeDisp(1,2), NodeDisp(1,3), NodeDisp(1,4), NodeDisp(1,5)
(F6.0, 4x, F4.0, 2x, E20.10, 2x, E20.10, 2x, E20.10)
*cfc
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删