ANSYS的APDL因能为整个求解流程编写脚本(程序)并实施控制而具有了些许魔力,特别能吸引人。
在高版中(大约是V1x,未去核实),ANSYS对APDL进行了扩展,增加了一组“APDL Math”命令(从方便表述角度,不妨称之为APDLMath箱,有黑箱之意,简称MAPDL也不错),MAPDL为处理大型矩阵和向量的数学工具包,能进行标准的线性代数运算。
利用MAPDL可访问和处理求解过程中所涉及的大型矩阵,如访问.FULL、.EMAT、.MODE、.SUB 等文件中的数据,将其读入、处理并写回,或者直接进行求解等;当然可以利用MAPDL编写自己的高级算法等,进而求解线性系统和特征值问题。
MAPDL大大增强了APDL数组操作命令(如*VOPER和*MOPER),宜将APDLMath看作“一个箱”,一个独立于APDL的数学工具箱,当然APDL数组(表示的向量或矩阵)可以转入APDLMath箱中操作,也可以从APDLMath箱中转出到APDL中。
MAPDL命令与功能如表1所示。
使用MAPDL通常有四个步骤:
(1)可利用的数据源
A.APDL生成的数组(如*DIM、*SET等)。APDL中的数组描述“普通矩阵或向量”,与APDLMath箱内矩阵和向量不同,因此本文中的“数组”多指APDL中的数组或矩阵或向量,而“矩阵和向量”多指APDLMath箱内矩阵和向量。
B.求解过程生成的数组,如.FULL、.EMAT、.MODE、.SUB等文件。
C.使用Harwell-Boeing格式或Matrix Market格式的外部资源等。
(2)将数组导入APDLMath箱,成为箱内矩阵或向量
使用命令*DMAT、*SMAT、*VEC等将矩阵数据导入APDLMath箱。不入箱不能利用MAPDL相关运算;入箱后的矩阵也只能使用MAPDL相关命令运算(赋值除外);箱内矩阵无法直接查询数值,要查询也只能先转为APDL数组。
(3)箱内矩阵或向量操作
使用命令*MULT和*AXPY生成新的矩阵。
使用APDL表达式直接修改矩阵元素,如“B(2,4)=5.8”。
当然还可转为数组,利用APDL标准操作修改数组,再入箱进行矩阵操作,过程为:
a)通过“*EXPORT,,APDL”导出矩阵转为数组,准备修改;
b)使用APDL命令*SET、*MOPER、*VFUN、*DO等修改或处理数组;
c)再次将修改后的数组导入APDLMath箱,通过*DMAT(或*VEC导入)。
(4)使用矩阵
数组再导入APDLMath箱后,这些矩阵可以求解或导出以供外部程序使用。如:
A.通过*EXPORT,,SUB导出,在APDL中作为超单元使用。
B.在APDLMath箱中,可以:
△与*LSEBGINE一起确定求解器;
△通过*LSFACTOR缩放矩阵;
△通过LLSOLVE求解未知数;
△通过命令*ITENGINE使用PCG算法找到摄动矩阵(如参数分析或灵敏度分析等)。
C.以某种格式导出矩阵到文件,以供交换。
APDLMath箱中或许有金矿,不妨在居家抗疫这段时间里,挖挖看看,或许会有所帮助。
声明:原创文章,欢迎留言与我讨论,如需转载留言