先做一个小例子。
(1)准备一个简单的、能算的 Ansys 算例,注意!一定要简单!!!
(2)导出求解文件(.dat)文件在 Solution
→ Write Input File
中导出求解文件
(3) Win + R
,调出 运行
,输入 cmd
,打开 cmd 命令窗口,在其中输入以下命令:
"D:\Program Files\ANSYS Inc\v211\ANSYS\bin\winx64\ansys211" -b -dir "E:\APDL-Batch-Demo" -i Static.dat -o file.out
其中:
"D:\Program Files\ANSYS Inc\v211\ANSYS\bin\winx64\ansys211"
是求解器的执行程序路径, ansys211
实际是 ansys211.exe
执行程序;
-b
表示Batch模式;
-dir "E:\APDL-Batch-Demo"
求解文件(.dat)的所在路径;
-i Static.dat
求解文件的名称;
-o file.out
指定输出文件
此外,还可指定求解时的CPU个数:
-np 4
指定计算核心数为4;
等待求解完成,文件夹的变化如下
求解器的执行程序路径也可以改写成:
"%AWP_ROOT211%\ANSYS\bin\winx64\ansys211"
其中:"%AWP_ROOT211%
是系统环境变量。
那为什么 "%AWP_ROOT211%
能够起作用呢?
这是因为 "%AWP_ROOT211%
已经添加到系统的环境变量中,所以在cmd中可以识别。这也是为什么有些软件在安装的过程中需要添加环境变量的原因。
同理求解器的执行程序路径也可以改写成:
"%ANSYS211_DIR%\bin\winx64\ansys211"
以上命令汇总:
"D:\Program Files\ANSYS Inc\v211\ANSYS\bin\winx64\ansys211" -b -dir "E:\APDL-Batch-Demo" -i Static.dat -o file.out
"%AWP_ROOT211%\ANSYS\bin\winx64\ansys211" -b -dir "E:\APDL-Batch-Demo" -i Static.dat -o file.out
"%ANSYS211_DIR%\bin\winx64\ansys211" -b -dir "E:\APDL-Batch-Demo" -i Static.dat -o file.out
"%ANSYS211_DIR%\bin\winx64\ansys211" -b -np 4 -dir "E:\APDL-Batch-Demo" -i Static.dat -o file.out
上面展示了有限元分析(Ansys)的采用命令行方式运行 Batch
模式的基本流程:
输入求解文件
→ 求解器求解
→ 返回结果文件
其实以上的内容看似和二次开发关系不大,但如果以文本模式打开 .dat
文件,可以发现,它是ansys的本身的开发语言——APDL,也就是说,用户提交了一个以 APDL语言
编写的求解文件,通过求解器解释给计算机,让计算机进行计算,结果返回给求解器,求解器最终输出结果文件,也就是 .rst
文件(结构与耦合结果文件)。
通俗点说即:用户想进行有限元分析,提出了一些需求,有人(Ansys)开发出一个 求解器
,并且为了保证用户和求解器能正常交互,所以定义了 交流语言
(APDL语言),这样用户的需求就可以通过 交流语言
, 借助求解器与计算机的 翻译交流
得以满足,以上的整个过程可以简称为 求解
或者 编译
。
实际上,作为用户而言, 求解器
是个黑匣子,里面具体如何运行无从得知,市面上有也有非常多的 求解器
,商用的以及开源的都有。以 WorkBench
为例,这个产品本身就属于 一次开发
, 同时,它也开放了一些接口,得以让用户在 WB
的框架下进行相应的 二次开发
,这个 二次开发
是基于有限元仿真的基本流程的,因为 编译
的过程是黑匣子,无需开发。那么 二次开发
的重点就在如何得到 求解文件
以及如何处理 结果文件
上。通常情况下,为了得到 求解文件
和处理 结果文件
,用户会在Workbench平台中做非常多的操作,这些操作,可以通过鼠标点击来实现,当然也可以通过 特定语言
来实现(IronPython),然后WorkBench的执行程序会将这些 特定语言
翻译
给计算机,在去执行用户的 命令
。
下面给出WorkBench在cmd命令窗口运行.py 文件的命令
"%AWP_ROOT211%\Framework\bin\Win64\RunWB2" -b -i -r"path\main.py"
其中:
"%AWP_ROOT211%\Framework\bin\Win64\RunWB2"
是 RunWB2.exe
执行程序的路径求解器的执行程序路径;
-i
表示交互模式
-b
表示Batch模式
-r"path\main.py"
是.py执行文件的 绝对路径
;
WorkBench 运行.py的逻辑和Ansys求解的逻辑一致,即采用了 求解器
能够识别的语言,并 编译
给计算机,最终执行用户的 命令
。
实际上 Mechanical 中的二次开发的语言也是 ironpython ,但是它的执行程序是嵌套在 Workbench 平台下的,并不能脱离 WB 平台单独运行,因此也就无法在 cmd 命令窗口使用命令去单独运行。它的安装路径如下:
D:\Program Files\ANSYS Inc\v211\aisol\bin\winx64\AnsysWBU.exe
双击打开会弹出一下窗口
最后总结一下:ANSYS 二次开发,或者说编程的逻辑就是用 解释器
能读懂的语言
,执行用户下达的 命令
。
这里 能读懂的语言
如何编写,实际上就是用户需要学习的,即API(Application Programming Interface)。
案例展示如何在WB平台下录制脚本,作为基础代码。
这样就得到了一个基础代码(未修改)。
# encoding: utf-8
# 2021 R1
SetScriptVersion(Version="21.1.216")
template1 = GetTemplate(
TemplateName="Static Structural",
Solver="ANSYS")
system1 = template1.CreateSystem()
将 test.wbjn
名称直接修改为 test.py
, 在cmd窗口输入:
"%AWP_ROOT211%\Framework\bin\Win64\RunWB2" -b -i -r"C:\Users\Tiyaya\Desktop\test.py"
其中:
-r"C:\Users\Tiyaya\Desktop\test.py"
需要根据实际地址修改;
效果如下:
上面展示的是基于 ANSYS2021R1 的二次开发技术,实际上 Anasys 官方也做了python相关的二次开发的项目叫做 pyansys
,官方地址是:
其中和结构相关的有关的主要如下图:
里面还有其它 Ansys 的产品模块,所以 pyansys
项目的目的就是通过 Python 使用 Ansys 产品,前提是需要安装 Ansys 的本体产品,例如做有限元分析的前后处理,调用 Ansys 的求解器求解等等,而且很多 Python 相关的 package
是后期开发出来的,对 Ansys 的版本是有要求的。
例如:PyMAPDL
最低的建议版本要求是2021R1,同时也对安装的 python解释器
有版本要求(3.9~3.12)。
PyMechanical
最低的建议版本要求是2023R2