自动化仿真分析和结构参数优化的功能,通常均需要通过脚本程序实现。然而,对于不同拓扑结构的产品,仿真分析中需要加载/约束的位置通常会有所不同,使得实现自动化仿真的程序很难做到通用。因此,当产品结构的拓扑构型变化时,自动化仿真程序也需要相应的修改,程序不具有通用性。例如:Abaqus中一般通过线/面上点的坐标或线/面的索引id来获取,但当结构拓扑改变时,所需加载/约束的点/线/面也会改变,其索引id和其上点的坐标均会改变,使得程序中线/面的选择很难实现通用。此外,针对较复杂的结构,仿真程序中需要选择的线/面等较多,通过程序实现约束位置的选择十分不便。本文提出了一种通用的参数化建模及自动化仿真分析方法,可用于不同拓扑结构的产品自动化仿真分析和结构参数优化。实现思路如下:
(1)在第三方CAD软件(本文以Catia为例)建立结构的参数化模型,并将该模型的所有加载/约束的点/线/面提取出来,并按照一定的命名规则进行命名(如:pressure、cload、tie、symmetry、disp等);
(2)将CAD模型导入CAE软件(文本以Abaqus为例)中,通过事先约定的“名称---载荷/约束类型”规则,对CAD模型中的点/线/面施加对应的约束/载荷(如:pressure---该位置施加压力载荷、cload---该位置施加集中力载荷、tie---该位置施加固定约束、symmetry---该位置施加对称约束、disp---该位置施加位移约束等)。
该方法也适用于将结构的几何模型导入第三方网格划分软件生成网格模型,再导入Abaqus中实现在孤立网格上的自动约束和加载。
1. 基于Catia的参数化建模
不失一般性,本文以如下图结构作为示例,详细介绍为实现通用结构的自动化仿真分析,采用商用CAD软件Catia的参数化建模方法。
图 Catia中结构参数化模型
如上图所示,零件由两个几何体组成,并建立了两个设计参数(totalLength和totalWidth),并将设计参数导出到designTable中(链接到文件designTable.txt)。提取所需加载/约束的线/面特征存放入几何图形集中,并按照一定的规则命名(本示例中,temp_pressure表示该面施加压力载荷,temp_disp123表示该面施加XYZ三个方向的约束,其余类似)。
由于Abaqus对其导入的几何模型(sat、igs、stp、Catia V5等)通常采用默认的命名方式(-1、-2,-3等)进行命名,无法延用几何模型中零部件/几何集等原有的名称(stp格式也仅可以保留装配模型的零部件名称)。因此,无法直接满足 “名称---载荷/约束类型”的命名规则。为了解决该问题,可以将几何模型与每个载荷约束面分别存储为一个文件,文件名遵循 “名称---载荷/约束类型”规则,并分别导入Abaqus中。
本文基于Python语言对Catia进行二次开发,自动输出以下文件(本文以stp格式为例)。
其中,testPart.stp为实体几何模型文件,其余stp文件为待加载/约束的几何线/面特征。
部分代码如下:
def updateModel():
import win32com.client
import os
current_path = os.getcwd()
fileList = os.listdir(current_path)
for file in fileList:
if file.endswith('stp'):
os.remove(file)
catia = win32com.client.Dispatch('catia.application')
docs = catia.documents
partDoc = docs.open(os.path.join(current_path, "testPart.CATPart"))
part = partDoc.part
relations = part.Relations
table = relations.item("designTable")
table.FilePath = os.path.join(current_path, 'designTable.txt')
part.Update()
partDoc.ExportData(os.path.join(current_path, "testPart.stp"), "stp")
…………
2. 基于Abaqus的自动化仿真分析
(1) 将第1节中的所有stp文件均导入Abaqus中,并对除testPart.stp几何模型外的所有几何线/面特征创建set和surface,名称沿用“名称---载荷/约束类型”的命名规则;
(2) 将第1节中的所有stp文件对应的几何特征进行布尔运算,生成新部件(新部件保留了原始部件所创建的set和surface,便于材料的赋予和约束载荷的直接施加,而无需使用程序实现对线/面等的提取);
(3) 对新部件进行网格划分;
(4) 根据set和surface的名称,创建对应的载荷/约束。
注意:对于几何线特征,布尔运算时无法进行合并,因此,当需要对几何线施加约束或载荷时,需要额外处理(下图中的createSetWithNodes函数)。处理思路为:
(1) 获取结构外表面的所有节点;
(2) 判断节点是否位于几何特征线上;
(3) 存储所有位于几何特征线的节点,并创建set。
代码框架如下:
3. 应用推广
以上方法/程序具有如下通用性:
(1) 上述基于Catia的参数化建模可以用其它CAD软件替代,只需保证加载/约束线/面的命名规则,并分别导出即可;
(2) 若结构拓扑不变,仅尺寸变化,则只需更新designTable.txt文件中的设计参数值即可,自动化仿真程序保持不变,可用于结构尺寸优化;
(3) 若结构拓扑不变,而加载/约束的线/面有变化,则只需更新catia模型文件中提取的几何图形集中对应的线/面,自动化仿真程序保持不变;
(4) 若加载/约束的类型有增加,只需在自动化仿真程序中扩充相应加载/约束程序(补充一次即可);
(5) 若拓扑构型有变化,需要在Catia中重新建立参数化模型,并根据命名规则提取待加载/约束的几何特征,而自动化仿真程序保持不变(或少量修改)。
内容简介:文章中涉及到的脚本程序和文件