LS-OPT系列二:LS-OPT与abaqus的联合仿真优化
LS-OPT没有abaqus求解器接口,因此如果需要联合abaqus进行优化仿真设计,需要通过其他接口来设置,比如通过ANSA进行前处理进行设计变量的创建,然后通过User-Defined接口来调用abaqus求解器。这种方法也是比较优选的方式,一般流程是:ANSA(前处理)→ABAQUS(求解)→Meta(后处理),后续会详细介绍这种方法。
本文采用另一种常规的联合的方式:通过User-Defined调用ABAQUS直接联合仿真,这主要包括两个方面的内容:1.设计变量的创建,由于LS-OPT没有ABAQUS软件接口,因此没有像nastran那样支持求解器本身的参数化创建的方法,只能使用LSOPT软件内置的参数化设置方法,这种方法适用于所有的求解器文件,如《LS-OPT联合Nastran求解器仿真优化流程》一文中nastran求解文件参数化设置同样可以使用这种方法来创建。2.设计响应的创建,对于设计响应的创建,可以使用常用的处理方法如:《使用hypergraph、hyperview批处理进行后处理用于联合优化软件》或《使用Meta进行后处理用于联合优化软件》中所述的方法,本文使用不借用其他商业后处理软件的方式,即使用LSOPT自带的接口来创建设计响应,其中需要使用python语言对abaqus的结果文件进行后处理来生成所需的文件,用于创建设计响应。这其中有两种处理方法:1.使用LSOPT的File接口;2.使用User-Defined Postprocessor接口。
一、设计变量的创建(求解文件的参数化)
LSOPT参数化的命令格式为:
<<expression:[i]field-width>>
其中i为可选关键字,为整数变量的声明
示例:一个lsdyna的关键字文件
*SECTION_SHELL
1, 10, , 3.000
0.002, 0.002, 0.002, 0.002
可以创建参数化文件为:
*SECTION_SHELL
1, 10, , 3.000
<<Thickness_3>>,<<Thickness_3>>,<<Thickness_3>>,<<Thickness_3>>
创建了一个变量名为Thickness_3的设计变量
或者:
*SECTION_SHELL
1, 10, , 3.000
<<Thickness_3:10>>,<<Thickness_3:10>>,<<Thickness_3:10>>,<<Thickness_3:10>>
创建了一个变量名为Thickness_3且占10个字符位的设计变量
二、设计响应的创建
方法一:使用lsopt的file接口
file在stage模块下的Responses中,如果使用file接口创建设计响应,需要注意:1.file文件只能创建一个单变量;2.file文件中只需要保护输出的结果,不包含其他任何信息
以上两个注意事项在创建file结果文件时需要特别注意。
选择file后在New response中设置Name为设计响应的名称。
方法二:使用User-DefinedPostprocessor创建设计响应
其中,output file为包含需要创建设计响应的结果文件,其文件的格式为:
#
RESPONSES
1,mass,0.12
2,stress,210.2
3,strain,0.02
END
以上为标准输出格式,其中RESPONSES、END等关键字需要保持完全一致。
算例:
问题描述:长100mm,宽10mm,厚度为2mm的壳单元模型,一端固定约束,另一端受20N的载荷力。将壳单元厚度设置为优化变量,结构最大应力结果作为设计响应。
一.设计变量参数化:
根据以上描述的方法,将壳单元的厚度设置为变量名为TH01的设计变量。
*SHELL SECTION, ELSET=auto1, MATERIAL=steel
2.0
设置为:
*SHELL SECTION, ELSET=auto1, MATERIAL=steel
<<TH01>>
如果还需要对其他参数创建设计变量,安装同样的方法操作即可。
二、设计响应的创建
方法一:使用lsopt的file接口
要通过file接口创建设计响应,需要将结果输出到一个文件中,创建时按照注意事项创建。
通过python处理odb结果文件,将最大应力结果写入到max_stress.txt文件中。
结果文件中只包含最大应力结果数值。除此没有其他任何信息。
三、LSOPT优化流程的创建
1.选择User-Defined
2.选择运行abaqus的命令文件
abaqus的运行命令文件abaqusstart.bat中需要包含提取结果文件max_stress的命令:
注意:需要在命令中添加abaqus正确运行完成后传递给LSOPT的结束信号’N o r m a l’
3.选择参数化的输入文件
由于使用LSOPT自带的参数化设置方法 会是参数没有初始值,变量范围等信息,因此需要打开Setup模型中进行参数化的设置,本例中,设置参数TH01的初始值为1.0,变量为离散型变量,值为{1.0,2.0,3.0,4.0}
4.在stage中选择Response
5.选择FILE
6.选择max_stress.txt结果文件
7.修改设计响应的名称为max_stress
然后设置优化算法,设计约束,设计目标,迭代终止条件等即可。
另外一种方法:
一、设计变量参数化
同方法一。
二、设计响应的创建
方法二:使用User-DefinedPostprocessor创建设计响应
要通过User-Defined Postprocessor接口创建设计响应,需要将结果输出到一个文件中,创建时按照注意事项创建。
通过python处理odb结果文件,将最大应力结果写入到max_stress.txt文件中。
需要注意结果文件中的格式要求。只要按照要求的格式输出才可以保证LSOPT可以识别结果。
三、LSOPT优化流程的创建
1.选择User-Defined
2.选择运行abaqus的命令文件
abaqus的运行命令文件abaqusstart.bat中需要包含提取结果文件max_stress的命令:
3.选择参数化的输入文件
4.由于后处理程序使用的是User-DefinedPostprocessor模型,和abaqus求解模型是相对独立的两个模块,运行计算时会产生两个文件夹。因此,在运行User-Defined Postprocessor定义的程序时,如果需要使用abaqus的结果文件,因此需要设置两个模块之间的数据传递。
5. 将TS_Abaqus.odb结果文件传递给User-DefinedPostprocessor模块。
6.选择User-DefinedPostprocessor
7.选择运行python的命令文件
8.选择结果文件,此时LSOPT软件会自动识别结果文件中的设计响应
然后设置优化算法,设计约束,设计目标,迭代终止条件等即可。