本文摘要(由AI生成):
本文主要介绍了Radioss模型优化RADOPT及实例。RADOPT功能在Radioss中为用户提供了简单的方法来设置优化问题,通过定义优化文件<name>.radopt,然后OptiStruct产生对应的.fem后缀的Bulk格式的优化文件。通常Radioss的模型一般涉及到许多非线性的问题,OptiStruct使用等效静载法ESLM来对Radioss模型进行相应的转换。等效静载荷是指在给定的时间步长下产生与动力/非线性分析相同的响应场的载荷。RADOPT优化流程包括定义优化文件、设置优化目标、设置优化约束、设置优化设计变量、运行优化设计、输出优化结果等步骤。最后,文章还分享了一个实例,介绍了如何使用RADOPT进行实体单元拓扑优化。
【Radioss每周干货】又上线啦!本期我们来讲讲Radioss模型优化RADOPT及实例。
自从HyperWorks 13.0版本更新后,就有了RADOPT的功能,它调用了OptiStruct中的优化功能来对Radioss模型进行优化。
RADOPT优化介绍
在Radioss中的RADOPT功能给用户提供了比较简单的方法来设置优化问题。
它通过定义优化文件<name>.radopt ,然后OptiStruct 产生对应的.fem后缀的Bulk格式的优化文件。
通常Radioss的模型一般涉及到许多非线性的问题,那么OptiStruct使用等效静载法ESLM(Equivalent Static Load Method)来对Radioss模型进行相应的转换。
ESLM是由汉阳大学Park博士提出的,它是一种适用于动态荷载作用下的优化设计的技术。等效静载荷是指在给定的时间步长下产生与动力/非线性分析相同的响应场的载荷。
如上图所示,计算出与该时间历程中的每个时间步长相对应的等效静态负载,从而在静态环境中复 制该系统的动态/非线性行为。分析计算的等效静荷载(如上面所解释的)被认为是单独的荷载情况,并且这些多个荷载情况用于线性响应优化循环中。然后,将优化循环的更新设计传递给分析以用于验证和计算总体收敛。
等效静载法ESLM在OptiStruct中是响应瞬态优化的一种有效方法,它是动态和非线性的解决方案。更多的关于等效静载法ESLM的内容参见OptiStruct的用户手册。
RADOPT的优化流程
首先进行RADOPT除了常规的Radioss模型的starter输入文件和engine输入文件,还需要一个用于定义优化问题的名为<name>.radopt文件。
1
首先将名为 <name>.radopt的优化文件传递给OptiStruct。然后根据名字<name> OptiStruct可以自动识别在同一目录下的相应的Radioss的模型输入文件(<name>_0000.rad 和 <name>_0001.rad)。
2
OptiStruct将Radioss模型转换成相应的.fem后缀的OptiStruct的优化文件,并且运行优化计算。
3
然后OptiStruct将优化设计变量转换到相应的Radioss模型文件中,形成新的Radioss模型:
新的starter 文件 <name>_rad_s#_i###_0000.rad
新的engine 文件 <name>_rad_s#_i###_0001.rad
然后让Radioss计算新的Radioss模型(这就是外部循环)。与此相对的运行OptiStruct称为内部循环(Inner loop)。在第一个外部循环中Radioss将首先计算原有Radioss模型,这样可以作为结果比对的基础。
4
在运行完 Radioss 的外部循环后,OptiStruct 读取 Radioss 结果值。
5
如果Radioss结果值比上一次结果值要差或不满足优化设计的约束等,也就是优化不收敛,那么OptiStruct 的优化过程继续,产生新的设计变量后循环步骤3、4、5直到优化设计收敛。
6
最后RADOPT优化设计结束并输出优化后的相应的 Radioss模型文件。
RADOPT优化文件的定义
在一个优化设计中有:
优化目标
优化约束
优化设计变量
每一个优化设计都会有一个优化的目标,它可以是结构减重(质量最小化) ,或是性能提高(应变最小化,或内能最大化),或是体积最小化等等。在RADOPT中使用卡片/DESOBJ来描述。type=0或1来选择最大化还是最小化。
在卡片中用优化响应(/DRESP1)来定义目标描述的是什么。是质量,还是体积等等。然后用type=0或1来选择最大化还是最小化响应。
▇ 优化的约束
优化的约束定义了优化响应的上下限。比如对某一构件我们定义了减重(质量最小化)的目标,但是构件减重后的其他性能比如受力时最大变形必须仍然满足一定的条件(比如结构某点的位移不超过某个数值),那么这个条件就是我们需要的优化的约束,用卡片/DCONSTR来定义。
▇ 优化的变量
优化的变量通常和实际模型有关,比如它可以是模型中单元属性,比如壳单元的厚度等。它可以用/DVAPREL1卡片定义,它还可以是在:
尺寸优化(size optimization)中的/DESVAR中定义,
拓扑优化(topology optimization)的/DTPL卡片中定义,
形貌优化(topography optimization)的/DTPG卡片中,
自由尺寸优化( free-size optimization)的/DSIZE卡片中,
自由形状优化(Free-shape optimization)的/DSHAPE卡片中
(关于如何定义上面这些不同类型的优化可以参见OptiStruct 用户手册)
实际上上面的这些Radioss优化卡片非常类似OptiStruct相应的卡片,比如/DTPL类似OptiStruct中的DTPL卡片。
另外如果你已经是OptiStruct的用户,你甚至可以使用/BULK, /BULKFMT, /BULKPROP, /BULKMAT以及/BULK/IO卡片将OptiStruct中的bulk格式的优化语句直接用在RADOPT的优化文件<name>.radopt中。
运行RADOPT优化
有两种方法运行RADOPT优化,一种是使用求解器窗口(Solver GUI)运行RADOPT。如下图所示只要输入文件选择<name>.radopt的优化文件,然后选择 “-radopt”点击“运行”就可以了。
还有一种方法是使用命令行运行RADOPT优化。那么首先需要确认设置好了环境变量。比如:
▇ Linux (bash):
export RADIOSS_STARTER=$ALTAIR_HOME/hwsolvers/radios/bin/linux64/<radioss_starter executable>
export RADIOSS_ENGINE=$ALTAIR_HOME/hwsolvers/radios/bin/linux64/<radioss_engine executable>
▇ Windows:
set RADIOSS_STARTER=%ALTAIR_HOME%\hwsolvers\radioss\bin\win64\<radioss_starter executable>
set RADIOSS_ENGINE=%ALTAIR_HOME%\hwsolvers\radioss\bin\win64\<radioss_engine executable>
比如下图所示在windows中设置RADIOSS_STARTER 环境变量:
然后运行RADOPT优化的命令为:
直接使用命令
▇ Linux (bash):
[optistruct@host~]$ $ALTAIR_HOME/hwsolvers/optistruct/bin/linux64/<optistruct_executable> <name>.radopt –radopt
▇ Windows:
[optistruct@host~]$ $ALTAIR_HOME/hwsolvers/optistruct/bin/win64/<optistruct_executable> <name>.radopt -radopt
使用脚本
▇ Windows中使用OptiStruct脚本
[optistruct@host~]$ $ALTAIR_HOME/hwsolvers/scripts/optistruct.bat <name>.radopt –radopt
▇ Windows中使用Radioss脚本
[optistruct@host~]$ $ALTAIR_HOME/hwsolvers/scripts/radioss.bat <name>.radopt -radopt
Using direct calls to executable (Windows machines)
这两种方法各有所长,前一个因为使用求解器界面所以比较容易操作,后一种使用命令的方法可以很方便的使用在自己编写的其他脚本中。这里再次提醒需要将Radioss模型文件和<name>.radopt的优化文件放在同一工作目录下。
实例分享: Radioss实体单元拓扑优化 (Topology Optimization) |
在Radioss中使用/DTPL可以设置拓扑优化。与典型的优化问题一样,在Radioss拓扑优化也有三个要素:
目标(在本例中最小化结构的体积)
约束(本例中最大位移小于5mm)
设计变量(钩实例拓扑优化设计)
在Radioss中设置优化需要增加一个单独的后缀为radopt的文件,并且文件名必须与starter 和engine文件名相同。在这个后缀为radopt的文件中可以定义优化的目标,优化的约束等等。
更多关于Radioss优化参见工具书中的 Design Optimization。
概要
▇ 实例目标
这个实例的目标是介绍如何在实体单元中设置拓扑优化。
在钩状结构的顶部设置rigid body,并施加向下的集中力。选择下图中红色部分为优化设计的区域。
Units: mm, s, ton, N, and MPa
▇ 优化设置
- 优化目标:最小化红色优化区域的体积
- 优化约束:Node group 120的最大位移小于5.0 [mm]
▇ 拓扑优化:
- 使用优化质量控制 MEMBSIZ=1
- 定义拔模方向 DRAW=1
优化设计详细介绍
▇ 优化目标
/DESOBJ 卡片用于定义优化的目标。在这个实例中优化的目标是最小化(type=0 min)优化设计响应#10 (即体积). 在/DRESP1/10中定义的RTYPE=3 即为体积(这个可以参见工具书)。PTYPE=3 以及 grpart=4即定义group part ID 为 4 是优化区域。
(点击图片可查看高清大图)
▇ 优化约束
在这个实例中定义钩状结构在集中力的作用下最终位移少于5.0mm以保障结构质量。所有需要使用/DCONSTR卡片和/DRESPS1卡片来定义这个优化约束。
在/DRESPS1卡片中定义优化响应是node group ID=120的总位移。然后将这个响应#11使用到约束/DCONSTR中,并且定义最大值cmax为5.0,即node group ID=120的总位移不能超过5.0mm。
▇ 拓扑优化
/DTPL卡片支持下面的拓扑优化设计:
TMIN: 最小化厚度
STRESS: 应力约束
MEMBSIZ: 构件尺寸约束
MESH: 网格类型
DRAW:拔模方向约束
EXTR: 挤压方向约束
PATRN: 多模铸造约束
PATREP: 多模铸造重复约束
更多的关于拓扑优化的设计可以参见工具书/DTPL卡片。
在这个拓扑优化实例中使用了:
▇ 构件尺寸约束(设置 MEMBSIZ=1)
拓扑优化中,构件尺寸约束其实更是一种质量控制的方法。在这个例子中我们设置最小直径(MINDIM)是1。
其实我们建议MINDIM为单元平均网格的3倍到12倍。在这个例子中优化区域的固体单元的网格约0.7mm。所以MINDIM将在优化中自动调整到单元平均尺寸的3倍。
▇ 拔模方向定义 (设置 DRAW=1)
在拓扑优化中允许定义拔模方向以便允许模具沿给定方向滑动。
DTYP用于定义模的类型,在这个实例中使用DTYP=1 即single die的类型,这个类型用于3D优化设计。
拔模的方向可以有两种不同的方法来定义。一个使用节点ID(从DAID到DFID的方向)。还有一种方法是使用坐标(从(XDA,YDA,ZDA)到(XDF,YDF,ZDF)的方向)。
不同的拔模方向会得出不同的拓扑优化结果。比如下图中显示的左边优化结构是拔模方向为垂直厚度方向,和右边优化结果是拔模方向沿着z方向。
不同拔模方向的拓扑优化结果
仿真结果及结论
运行Radioss优化的模型后在结果文件中需要检查以下几点:
1
检查是否最后一个设计为最优设计,并且是否是可行的(feasible)设计。在*.out 文件 (在这个实例中是hook_opt.out) 中的每一个内部迭代中最后是否有下面的信息:
“FEASIBLE DESIGN (ALL CONSTRAINTS SATISFIED).“ –这个表面得到的设计是好的。
“INFEASIBLE DESIGN (AT LEAST ONE CONSTRAINT VIOLATED).” -这个表明得到的设计还需进一步优化。
以上信息也可以在hwsolver.mesg文件中得到。
2
在 *.out 文件 (hook_opt.out)中, 检查每次优化的定义以及结果. 比如通过搜索“Objective Function: Minimize VOLUM”, “Run Type: Topology Optimization” 等等关键字。
3
在运行Radioss优化时,会自动有一个相应的OptiStruct模型(*.fem)产生,这个模型中是hook_opt.fem。如果用户熟悉OptiStruct的,可以同时检查相应的优化设置在自动产生出的*.fem文件中是否与*.radopt中定义的相一致。
在这个实例中,在比如*.eslout (hook_opt.eslout)中显示其中的一次优化迭代的结果:
还可以在每个ANIM (*.h3d), T01 文件中使用HV和HG直观的观察每个优化迭代的结果。
最终在这个实例中优化区域的体积变化:
- 优化前,体积是 324.715
- 拓扑优化后,体积是 230.202
构件体积优化的迭代过程
下图显示了在优化过程中总位移一直得到了很好的控制(小于5mm):
构件优化迭代过程中的最大位移约束的控制