现代CAE软件不仅分析功能强大,而且人机可视化界面优异。但有时候仍需对某类模型进行大量的重复计算,即无需人工干预的批处理计算。这种类型的计算往往是对某个参数稍作改变,计算相应结果,以此获得最优的参数,如模型的几何尺寸,材料参数,或边界条件值等。通过批处理计算,可以快速的得到比较好的结论,提高CAE软件使用者的工作效率。
批处理运算对CAE软件功能提出了更高的要求。目前,大型通用仿真软件WELSIM提供了两种批处理方式。方式1,通过XML脚本文件自动运算。方式2,可视化建立多个分析工程,并执行批处理计算。本文分别介绍两种批处理计算CAE模型的流程。
方法1. 脚本批处理计算
主流的CAE软件都已经支持脚本批处理能力,由于自动化测试和脚本批处理的本质是一样的,都是一种数据持久化的宏命令。因此,已经支持自动化测试的CAE软件,肯定也具有批处理脚本计算的能力。
首先,在XML脚本中,建立一个WELSIM的计算流程。
清空目标文件夹
<wsevent object="wsApp" command="cleanFolder" arguments="$WELSIM_DATA_ROOT/97_Exported/11018" />
设置项目的单位制,这里使用的是mm-kg-s单位制。
<wsevent object="mainWindow/Std_DlgUserPref/Std_DlgUserPref" command="activate" arguments="" />
<wsevent object="mainWindow/PrefDlg/pagesWidget/general/scrollArea/qt_scrollarea_viewport/contents/tabWidget/qt_tabwidget_tabbar" command="set_tab_with_text" arguments="Units" />
<wsevent object="mainWindow/PrefDlg/pagesWidget/general/scrollArea/qt_scrollarea_viewport/contents/tabWidget/qt_tabwidget_stackedwidget/tabUnits/groupBoxUnits/radioUnitsMMKS" command="set_boolean" arguments="true" />
<wsevent object="mainWindow/PrefDlg/btnOK" command="activate" arguments="" />
添加新FEM项目,使用默认的结构静力分析。
<wsevent object="mainWindow/menuBar" command="activate" arguments="&File" />
<wsevent object="mainWindow/menuBar/&File" command="activate" arguments="Fem_NewDoc" />
从测试文件夹中导入一个几何体,文件名为 box_x20_y1_z2.step,并设置材料为钢。
<wsevent object="mainWindow/menuBar" command="activate" arguments="&Geometry" />
<wsevent object="mainWindow/menuBar/&Geometry" command="activate" arguments="Fem_ImportPart" />
<wsevent object="mainWindow/OpenDialog" command="filesSelected" arguments="$WELSIM_DATA_ROOT/01_ShapeData/box_goup/box_x20_y1_z2.step" />
<wsevent object="mainWindow/DockTreeDocking/TreeDocking/treeWidget" command="setCurrent" arguments="0.0.1.0.0.0.0.0" />
<wsevent object="mainWindow/DockPropDockingView/PropDockingView/PropView/tabWidget/qt_tabwidget_stackedwidget/propertyData" command="setCurrent" arguments="8.1" />
<wsevent object="mainWindow/DockPropDockingView/PropDockingView/PropView/tabWidget/qt_tabwidget_stackedwidget/propertyData/qt_scrollarea_viewport/11Material" command="activated" arguments="Structural Steel (ID:2)" />
设置网格密度,执行网格划分。
<wsevent object="mainWindow/DockTreeDocking/TreeDocking/treeWidget" command="setCurrent" arguments="0.0.1.0.1.0.0.0" />
<wsevent object="mainWindow/DockPropDockingView/PropDockingView/PropView/tabWidget/qt_tabwidget_stackedwidget/propertyData" command="setCurrent" arguments="4.1" />
<wsevent object="mainWindow/DockPropDockingView/PropDockingView/PropView/tabWidget/qt_tabwidget_stackedwidget/propertyData/qt_scrollarea_viewport/7MaximumSize" command="set_double" arguments="0.3" />
<wsevent object="mainWindow/Fem_MeshAll/Fem_MeshAll" command="activate" arguments="" />
设置固定边界条件,所选的边界实体是 Obj11_Face1。
<wsevent object="mainWindow/Fem_BCFixed/Fem_BCFixed" command="activate" arguments="" />
<wsevent object="mainWindow/DockTreeDocking/TreeDocking/treeWidget" command="setCurrent" arguments="0.0.1.0.2.0.1.0" />
<wsevent object="mainWindow/DockPropDockingView/PropDockingView/PropView/tabWidget/qt_tabwidget_stackedwidget/propertyData" command="setCurrent" arguments="5.1" />
<wsevent object="mainWindow/DockPropDockingView/PropDockingView/PropView/tabWidget/qt_tabwidget_stackedwidget/propertyData/qt_scrollarea_viewport/12Geometry/12SelBtnOK" command="set_selection" arguments="Obj11_Face1" />
设置力边界条件,方向是Z,大小为1000,所选的边界是表面Obj11_Face2。
<wsevent object="mainWindow/Fem_BCForce/Fem_BCForce" command="activate" arguments="" />
<wsevent object="mainWindow/DockTreeDocking/TreeDocking/treeWidget" command="setCurrent" arguments="0.0.1.0.2.0.2.0" />
<wsevent object="mainWindow/DockPropDockingView/PropDockingView/PropView/tabWidget/qt_tabwidget_stackedwidget/propertyData" command="setCurrent" arguments="5.1" />
<wsevent object="mainWindow/DockPropDockingView/PropDockingView/PropView/tabWidget/qt_tabwidget_stackedwidget/propertyData/qt_scrollarea_viewport/13Geometry/13SelBtnOK" command="set_selection" arguments="Obj11_Face2" />
<wsevent object="mainWindow/DockPropDockingView/PropDockingView/PropView/tabWidget/qt_tabwidget_stackedwidget/propertyData" command="setCurrent" arguments="9.1" />
<wsevent object="mainWindow/DockPropDockingView/PropDockingView/PropView/tabWidget/qt_tabwidget_stackedwidget/propertyData/qt_scrollarea_viewport/13ForceZConstant/quantitySpinBox" command="set_double" arguments="1000" />
求解,并添加一个应力结果节点,类型为默认的Von Mises应力,评价显示应力结果。
<wsevent object="mainWindow/Fem_Solve/Fem_Solve" command="activate" arguments="" />
<wsevent object="mainWindow/Fem_ResultStress/Fem_ResultStress" command="activate" arguments="" />
<wsevent object="mainWindow/DockTreeDocking/TreeDocking/treeWidget" command="setCurrent" arguments="0.0.1.0.3.0.0.0" />
<wsevent object="mainWindow/Fem_EvaluateResult/Fem_EvaluateResult" command="activate" arguments="" />
将项目保存为p1.wsdb。同时,关闭当前的项目。
<wsevent object="mainWindow/menuBar" command="activate" arguments="&File" />
<wsevent object="mainWindow/menuBar/&File" command="activate" arguments="Std_SaveAs" />
<wsevent object="mainWindow/QFileDialog/fileNameEdit" command="set_string" arguments="$WELSIM_DATA_ROOT/97_Exported/11018/p1.wsdb" />
<wsevent object="mainWindow/QFileDialog/buttonBox/1QPushButton0" command="activate" arguments="" />
<wsevent object="mainWindow/menuBar/&File" command="activate" arguments="Fem_CloseAllDocs" />
此时,一轮计算设置完成。需要新的一轮计算时,只需复 制粘贴以上代码,修改导入的模型和导出的项目文件名称,执行即可实现批处理。本算例的几何体相对统一,只是在长度上略有不同,因此不用修改边界条件的面名称,如果几何体差异较大,需要确认边界条件设置的面名称是正确的。
测试文本命名为11018_save_multi_structural_projects.xml,已经开源,并作为WELSIM测试算例之一保存在GitHub上。
方法2. 图形化项目文件批处理计算
WELSIM支持在项目树中同时建立多个项目。如图下图所示,建立了三个FEM项目。
设置好所有的材料,接触,边界等条件后,可以从菜单栏中点击Mesh & Solve All按钮,实现对所有项目的批处理计算。此功能可以在一个项目计算完成后,自动计算下个项目,中间无需人工干预。对于计算费时的大模型,以此方法,可以有效节约分析人员的时间。
总结
本文介绍了CAE软件的常用的两种批处理功能。两种方式各有特点,通常脚本批处理的脚本文件结构清楚易于理解、保存和修改。脚本文件通常较小,不占用硬盘空间。而项目文件批处理可以保存计算结果,评价结果时无需再次计算,但文件较大。两种批处理方式可以结合使用,使用脚本批处理进行初步筛选参数,缩小范围后,使用文件批处理计算并保存结果。