简支梁优化

本节处理简支梁在应力方面的优化问题,并受质量不增加的约束。本示例展示了如何进行优化,过程本身是手动的,绝非优化后的。对于工业应用,通常会编写通用脚本来处理这里解释的手动步骤。

本示例使用文件opt1.inp、opt1.sh、opt2.fbl和op3.inp,均可在CalculiX测试套件中找到。文件opt1.inp包含问题的几何形状和加载:结构是一个简支梁(一端铰接,另一端滚动),中间有点力。图45显示了冯·米塞斯应力。

图45: 梁起始几何形状中的冯·米塞斯应力
\begin{figure}\epsfig{file=opt1.eps,width=10cm}\end{figure}

优化的目标是降低梁中的应力。最高应力出现在梁的中间和支座处(参见图45)。由于梁的几何形状变化不会减少支座处的应力(支座处的峰值应力是由支座的点性质引起的),设计变量集(即允许在优化过程中改变梁几何形状的节点)被选为梁中除支座附近节点外的所有节点。这些排除的节点如图46所示。

图46: 从设计变量集中排除的节点
\begin{figure}\epsfig{file=opt2.eps,width=6cm}\end{figure}

为了执行优化,必须确定目标函数相对于设计变量的敏度,同时考虑优化每个中间设计步骤(迭代)中的任何约束。目标函数和约束通常是设计响应。首先,每个设计响应的敏度在*SENSITIVITY步骤中确定。然后,在*FEASIBLE DIRECTION步骤中选择一个设计响应作为目标函数,一个或多个作为约束。在后一步中,将无约束目标的敏度与约束的敏度结合,以获得约束目标的敏度。

设计变量已在前面讨论过,构成允许设计改变的节点集。在本示例的输入卡中,这由以下行处理:

*DESIGNVARIABLES,TYPE=COORDINATE
DESIGNNODES
"DESIGNNODES"是包含如前所述的设计节点的节点集。对于要优化结构几何形状的优化问题,类型为COORDINATE。或者,可以优化结构中各向异性材料的取向,这由TYPE=ORIENTATION覆盖。

目标函数是要最小化的设计响应。在本示例中,需要最小化从所有设计节点中的冯·米塞斯应力计算的Kreisselmeier-Steinhauser函数(参见*DESIGN RESPONSE中该函数的定义)。同样,由于局部应力奇异性,支座节点不被考虑。目标函数由以下行处理:

*DESIGN RESPONSE, NAME=STRESS_RESP
MISESSTRESS,DESIGNNODES,10.,100.
在灵敏度步骤中,以及
*OBJECTIVE,TARGET=MIN
STRESS_RESP
在可行方向步骤的输入卡中。注意,用于定义Kreisselmeier-Steinhauser函数的节点集(*DESIGN RESPONSE卡下的第二个条目)不必与设计变量集相同。*DESIGN RESPONSE卡下的第三个和第四个条目构成Kreisselmeier-Steinhauser函数中的参数。具体来说,第四个条目是参考应力值,应与模型中实际最大应力值的数量级相同。第三个参数允许将最大应力值在模型的较小或较大区域中模糊化。

除了目标函数(只允许一个目标函数)外,还可以在可行方向步骤中定义一个或多个约束。在实际示例中,优化过程中梁的质量不应增加。这由以下内容处理:

*DESIGN RESPONSE, NAME=MASS_RESP
MASS,Eall
在灵敏度步骤中,以及
*CONSTRAINT
MASS_RESP,LE,1.
在可行方向步骤中。关于条目的含义,请参阅*DESIGN RESPONSE*CONSTRAINT。注意,为了使此约束生效,用户应该为相关材料定义密度。在CalculiX中,约束是线性化的。这意味着,根据优化过程中的增量大小,约束将不会精确满足。

在CalculiX运行中,计算了目标和所有约束相对于设计变量的敏度。敏度不外乎是目标函数相对于设计变量的一阶导数(约束也是如此),即敏度显示如果改变设计变量,设计响应将如何变化。对于COORDINATE类型的设计变量,设计变量(即设计节点)的变化方向在局部上垂直于几何形状。因此,在我们的例子中,应力的敏度告诉我们如果沿局部法线方向改变几何结构,应力将如何变化(类似于质量约束)。如果敏度为正,则结构加厚时应力增加,反之亦然。可以通过使用过滤器对敏度进行后处理。在当前输入卡(opt1.inp)中,应用了以下过滤器:

*FILTER,TYPE=EXPLICIT,EDGE PRESERVATION=YES,DIRECTION WEIGHTING=YES
3.
选择过滤器为显式。对于默认为线性的过滤器,选择了3的半径(可以将其可视化为每个设计变量中的圆锥体,在其中集成敏度然后模糊),应保持尖角(EDGE PRESERVATION=YES,参见*FILTER),并且具有明显不同方向(例如正交)的表面在过滤时不考虑(或较少考虑,DIRECTION WEIGHTING=YES)。过滤器分别应用于每个设计响应。图47显示了过滤前的应力敏度,图48显示过滤后的应力敏度,图49显示过滤后的质量敏度。所有这些信息都可以通过在*NODE FILE卡下请求SEN获得。
图47: 过滤前的应力敏度
\begin{figure}\centering
\epsfig{file=opt3.eps,width=6cm}\end{figure}
图48: 过滤后的应力敏度
\begin{figure}\centering
\epsfig{file=opt4.eps,width=6cm}\end{figure}
图49: 过滤后的质量敏度
\begin{figure}\centering
\epsfig{file=opt5.eps,width=6cm}\end{figure}