别的不说,这焊接动画确实还挺炫酷的。
简单玩一下ESI SYSWELD.
介绍了这款软件如何安装、怎么打开、怎么运行;
一个hello-world小例子,以及它的输入文件结构,和帮助文档的对应关系。
前一篇推送介绍了ESI集团的软件产品矩阵。这篇小喵来简单玩一下ESI旗下的焊接仿真软件SYSWELD。
SYSWELD
小喵这次就是简单了解一下,所以就直接从官方帮助文档上手了。
关于SYSWELD,官方提供了Reference Manual参考手册。开篇Introduction介绍了SYSWELD软件的历史:
早在1979年,人们决定开发一种软件,利用有限元对焊接效果进行数值模拟。
1980年,为了满意地处理冷裂的影响,氢的扩散又被建模并集成到规范中。从一开始,大家就同意这些科学计算将按照以下顺序依次进行:热力→冶金→机械→氢扩散,根据所需的精度,可能跳过一个阶段。自然,SYSTUS模块化架构系统被用作此开发的基础。
——可见,SYSWELD算是基于SYSTUS开发的一个使用有限元法模拟焊接的程序。可惜SYSWELD发展的还算好,SYSTUS却被ESI集团给卖了。
根据文档第一章:Generalities -Software Architecture(概论-软件架构)中介绍,SYSWELD软件分为五个不同的部分,计算分三个步骤进行,后一步使用前一步骤的结果。即多物理场耦合分析是顺序进行的。
对我这样的新手来说,看这些其实没啥用。还得先跟着Example做一个案例出来。可惜,SYSWELD确实提供了Examples Manual案例手册,也提供了相应的文件,但它不像Comsol那样有逐步的界面操作指引。而且SYSWELD自身的手册看起来好像不是基于Visual Environment环境的。官方的手册更像ANSYS APDL命令流,或是Abaqus的inp输入文件性质。对像我这样八字没一撇的初学者来说,连用哪个文件提交计算都还搞不清。
我们先从软件的安装开始。
SYSWELD安装注意事项
想要舒服地使用SYSWELD,除了软件本身的安装包外,还需要下载ESI Visual Environment。这个Visual Environment软件是ESI集团的通用仿真前处理界面,可以画网格,也可以为它旗下很多仿真软件做前处理工作。
SYSWELD本身脱胎于SYSTUS,这软件历史悠久,网上能找到的信息很少。正常安装好SYSWELD和Visual-Environment后,桌面上出现的快捷方式是一个文件夹,里面关于SYSWELD的快捷方式有这些:
其中,SYSWELD(English) Solvers是它的求解器。可以正常打开,在这个界面点击 OK以后,却什么都不会出现。
原来,在SYSWELD安装包的readme.txt文件里有句提示:想要在Windows系统下正常运行SYSWELD本身的界面,需要安装Exceed & Exceed 3D.
System requirements: To start with its own GUI, a pre-installed Exceed / Exceed 3D v14 (and higher) is required. Only solvers require a pre-installed ESI Visual Environment.
这个Exceed软件的作用有点像虚拟机,它可以让用户Windows环境下运行为Unix、Lunux或其他X11桌面上运行的应用程序。所以——可以看出SYSWELD本身的界面最早是基于Unix开发的,ESI集团后面甚至没有为它专门提供一个独立的Windows界面,而是直接把它接入了VE大家庭。
在SYSWELD 2014版本的下载链接里,还能找到Exceed v14的安装包,压缩为isz格式。
用UltraISO打开,先安装Exceed 14,再装Exceed 3D,重启后,就可以正常运行SYSWELD (SYSWORLD)的界面了。嗯,风格还真是相当的古老。
如果你想使用Visual Environment来调用SYSWELD求解器,那我们能找到的SYSWELD安装包为2021版本,对应VE 17.0. 安装好VE18.0以后,需要按照提示,创建环境变量:
VISUALENV_INSTALLPATH = {Visual Environment所在目录}
这样就可以直接从SYSWELD的快捷方式启动VE,并配置为Weld界面。
界面长这样。在左上角 Applications中,选择Weld,就是ESI为SYSWELD在Windows环境下准备的界面了。
打开Visual-Weld以后,想要正常求解,还需要配置求解器目录。在菜单 Welding Utilities - Solver Settings中,选择这个目录:
E:\Program Files\ESI Group\SYSWELD\2021.0\Solver_en\bin
注意一定要选 Solver_en\bin,少一层软件都会提示报错。如果没设置求解器目录,就不能使用Visual Environment提交计算。
SYSWELD简单案例
这软件的入门案例也不太好找。官方Example不是用Visual-Environment跑的,小喵在另外一本电子书里找到了一个参数还算比较完善的案例。
就用书里这个案例了解一下SYSWELD基本概念。
网格具体尺寸……我就估摸了一下,在HyperMesh里画的。理论上这个Visual Environment也能画,但反正前处理工具功能都大差不差,无所谓啦。
按component着色是这样的。网格画完以后,可以用随便什么格式,比如Abaqus的inp,或者LS-DYNA的.k文件格式,给VE读取就行了。只要能识别到不同单元所在的单元集即可。
焊接仿真进行之前,有个特殊的设置是需要定义焊接轨迹(trajectory)。
然后需要提取整个外表面,作为热传导面。
在VE里面,真正和焊接工艺有关的设置,都在一个Welding Advisor菜单里面。按定义顺序给用户预制好了窗口,填表就行。
按照步骤顺序,从第一步到第九步,分别是:
Project Description项目描述;
Global Parameter(主要设置单元类型是实体还是壳)
Component Properties材料参数;
Welding Process焊接过程参数设置;
Cooling Condition冷却设置;
Clamping Condition夹持设置,就是力学位移条件;
Loads and Deformations力学载荷与变形;
Contact Definition接触定义;
Solution Parameter求解参数设置。
设置内容都是书里给的参数,依次如下面几张图所示。
(7和8在这个案例中不需要定义)
具体这些参数……感兴趣的朋友在文末下载源文件自己看吧,反正都是书里给的。或者去找这本书,知乎盐选会员可以在线看电子书。
另存一份,点击下方的Generate Input Data。在项目目录里,会看到非常热闹地生成了一大堆文件和三个文件夹:
点击Solve,选择新生成的这个PANEL_BAR.vdb(文件名和用户在第1步里设置的项目名称一致),就可以启动Computation Manager。
点击Compute,选择使用多核心求解。经过一小段时间的计算,不同模块的颜色变化,计算逐步完成。其中,灰色表示未计算,蓝色表示正在运行,绿色表水完成。如果出现错误会显示橙色。
计算结束后,在Applications里面改成Viewer,在项目目录下,打开03_RESU文件夹,可以看到很多不同的结果文件。
PANEL_BAR_POST1000.erfh5文件里面有温度Temperature、相信息Phase Info;PANEL_ABR_POST2000.erfh5文件里包含位移、应力、应变等信息。温度云图动画录制出来,长下面这样:
因为前后有两道焊缝,给个俯视图:
可以看到,整个焊接过程温度动图还是很逼真的。
SYSWELD输入文件格式
小喵大概研究了一下,发现SYSWELD项目的输入文件也相当复杂。
在Visual Weld界面中,Welding Advisor最后一步下方有个按钮 Generate Input Data. 如果是ANSYS、Abaqus、LS-DYNA、Nastran这类常见的有限元求解器,输入文件一般都只有单一一个文本格式文件。但在SYSWELD这里不一样。用户点击生成输入数据按钮后,会一口气生成这么多文件\文件夹:
在Visual-Weld的帮助文档里,只解释了其中一部分文件的作用。包括:
项目名(这个案例里叫PANEL_BAR).vdb,包含与项目有关的全部信息,可以由Visual-Environment读取;
在01_DATA文件夹下,*.prj文件,会根据焊接轨迹时间等定义进行拆分;
*_DATA30.ASC文件,其中包含网格信息;
*.fct文件,包含函数定义;
*.par和*.mat文件夹,包含材料属性、接触、相比例和求解器参数等信息,由.prj文件调用;
00_SOLVE_PROJECT.DAT文件,这个文件依次调用了各个不同的输入文件。因此可以在外部使用SYSWELD的批处理模式直接提交这个文件来进行求解。
打开00_SOLVE_PROJECT.DAT文件看看,会发现它依次引用了这么多文件。可以说是层层套娃,相当的墨迹了。
这么多输入文件,在当前项目目录下,launchComputationManager.bat文件里面调用了CMInBatchMode.py;这个Python文件有上千行,其中提交计算的命令调用了GlobalAPIs.LaunchComputation(). 在GlobalAPIs.py文件中,才能看到正经用命令行启动sysweld求解器的指令。
这几个文件的结构都蛮复杂,但颠来倒去主要就是为了读取一些参数文件,然后按照预定的顺序提交计算。
由于SYSWELD软件脱胎于SYSTUS,所以前面提到的.DAT文件里面的命令语法,也都来自SYSTUS。我们可以在SYSWELD安装目录中找到SYSTUS的命令参考文档AnalysisReferenceManual:
C:\Program Files\ESI Group\SYSWELD\2021.0\Solver_en\documentation\sysworld\Content\SYSTUS_2021-0_AnalysisReferenceManualVol1_en.pdf
在这本文档里,首先就介绍了 ASSIGN命令、READ命令和DEASSIGN命令,就是前面00_SOLVE_PROJECT.DAT文件中写的内容。
以此类推,后面的_HT.DAT、_MECH.DAT啥的,其中的关键字,要么能在SYSTUS文档里找到,要么就在SYSWELD的Reference Manual手册里。就比如这个 OPTION THERMAL METALLURGY SPATIAL,SYSTUS软件中本身没这个定义,这条关键字就可以在SYSWELD文档里找到。
但总之……感觉还是不怎么太友好。