4. 响应定义与提取

在OptiStruct的优化流程中,响应(Response)是连接“设计变量”与“优化目标/约束”的桥梁。设计变量改变结构形状或尺寸,求解器计算结构性能,而响应卡片则负责把求解结果中我们关心的那部分量提取出来,交给优化算法判断。因此,响应定义得是否正确、提取方式是否恰当,直接决定了优化能否收敛、结果是否可信。本节围绕质量、刚度(柔度)、频率、应力、位移这几类最常见的结构响应,说明它们在OptiStruct中的卡片设置方式与使用要点。

响应卡片的基本结构

OptiStruct中所有响应都通过DESRESP(设计响应)卡片定义,其基本格式为:

DESRESP, ID, TYPE, LABEL, ...
       属性字段(如节点、单元、属性、工况等)

其中ID是响应的唯一编号,后续在DRESP1或目标/约束卡片中引用;TYPE决定提取哪一类物理量,例如MASS、COMP、FREQ、STRESS、DISP等;LABEL是用户可读的名称。属性字段则指定具体的对象范围,比如节点集、单元集、属性集或工况编号。理解这张卡片的字段含义,是正确设置所有响应的前提。

质量响应:MASS与VOLUME

质量响应用于控制结构总质量或指定区域的质量,是最基础的响应之一。典型设置如下:

DESRESP, 10, MASS, TOTAL_MASS
DESRESP, 11, VOLUME, PART_VOL
        PSHELL, 100

第一条定义整体质量响应,不指定属性时默认统计整个模型;第二条通过PSHELL限定只统计属性号为100的壳单元区域体积。质量响应常用于“最小化质量”目标,或作为“质量不超过某值”的约束。需要注意的是,若模型包含非结构质量(如集中质量单元),应确认是否纳入统计范围,避免优化后实际质量与预期不符。

刚度响应:COMP(柔度)

刚度在OptiStruct中通常以柔度(Compliance)形式表达,柔度越小表示刚度越大。柔度响应通过COMP类型定义:

DESRESP, 20, COMP, STIFF_COMP
        LOAD, 1

这里LOAD指定载荷工况编号。柔度响应一般作为最小化目标,或作为“柔度不超过上限”的约束。若模型有多个工况,可以分别定义多个柔度响应,再通过加权或分别约束的方式处理。需要强调的是,柔度是全局量,反映整体变形能,不能直接对应某个局部刚度,若关注局部刚度应改用位移响应。

频率响应:FREQ

频率响应用于提取模态分析得到的各阶固有频率,设置方式为:

DESRESP, 30, FREQ, MODE1_FREQ
        MODE, 1
DESRESP, 31, FREQ, MODE2_FREQ
        MODE, 2

MODE字段指定模态阶次。频率响应常用于避免共振,例如约束一阶频率不低于某值,或使某阶频率远离激励频率。实际使用中要注意:优化过程中结构拓扑或尺寸变化可能导致模态顺序发生交换,因此建议对关心的频段内多阶模态分别定义响应并同时约束,而不是只盯住“第一阶”。此外,频率响应通常需要配合模态分析工况(EIGRL或EIGRA)使用。

应力响应:STRESS

应力响应用于提取单元或节点的应力值,常见设置如下:

DESRESP, 40, STRESS, MAX_STRESS
        PSHELL, 100
        LOAD, 1

该响应统计属性100所辖单元在工况1下的最大应力。应力响应可作为约束,例如“最大应力不超过材料许用应力”。需要特别注意的是,OptiStruct中应力响应默认提取的是单元应力,对于壳单元通常取上/下表面及中面的组合值,具体取决于STRESS卡片的VONMISES或DIRECT等选项。若关注疲劳或局部屈服,应明确是取Von Mises等效应力还是某个方向的正应力,并在卡片中相应设置。

位移响应:DISP

位移响应用于提取指定节点的位移分量,设置方式为:

DESRESP, 50, DISP, TIP_DISP
        NODE, 2001
        COMP, 3
        LOAD, 1

其中NODE指定节点号,COMP指定分量(1/2/3对应X/Y/Z平动,4/5/6对应转动),LOAD指定工况。位移响应常用于控制局部变形,例如“悬臂端Z向位移不超过2mm”。与柔度相比,位移响应更局部、更直观,适合对特定位置有明确变形要求的场景。

响应定义中的常见问题与检查要点

实际设置响应时,以下几类问题最容易导致优化失败或结果异常:一是响应ID重复或未被目标/约束卡片正确引用;二是工况编号与LOAD卡片不匹配,导致提取到空值;三是节点集或属性集范围过大或过小,使响应失去局部意义;四是频率响应未考虑模态交换,约束失效。建议在正式优化前,先用一次静力或模态分析验证各响应卡片能否正常输出,并检查响应值是否与手工估算或经验判断一致。

OptiStruct 结构响应定义与提取关系图 DESRESP 卡片 → 响应类型 → 提取对象 → 优化目标/约束 求解结果源 静力分析 位移 / 应力 / 柔度 模态分析 固有频率 / 振型 质量统计 总质量 / 分区质量 体积计算 单元体积 / 属性体积 工况载荷 LOAD 编号 DESRESP 卡片 MASS / VOLUME 质量 / 体积响应 COMP 柔度(刚度倒数) FREQ 固有频率 STRESS 单元应力 DISP 节点位移 优化目标 / 约束 最小化质量 目标函数 最小化柔度 目标函数 频率约束 f ≥ f_min 应力约束 σ ≤ σ_allow 位移约束 |u| ≤ u_max 关键字段 ID 响应唯一编号 TYPE MASS/COMP/FREQ STRESS/DISP LABEL 用户可读名称 NODE / PSHELL 提取对象范围 LOAD 工况编号 MODE 模态阶次 COMP 位移/应力分量 提示:响应定义后应先用一次静力/模态分析验证输出值,确认与手工估算或经验判断一致,再进入优化循环。

响应提取的验证与调试

响应卡片设置完成后,不建议直接进入优化。更稳妥的做法是先做一次“响应提取验证”:将优化任务暂时改为仅计算一次分析,在OUTPUT中请求输出各响应值,然后检查.out或.h3d文件中的响应结果。例如,质量响应应等于模型总质量或指定区域质量;柔度响应应等于载荷向量与位移向量的点积;一阶频率应与模态分析结果一致。若发现响应值为零或明显异常,优先检查工况编号、节点/属性集引用和分量设置。只有确认响应提取正确后,再将其接入目标函数或约束,才能保证优化过程稳定可靠。

实用建议:对于多工况问题,建议为每个工况分别定义柔度、应力、位移响应,并在优化卡片中通过DRESP2或加权方式组合,而不是只定义一个“综合响应”。这样在结果解读时能清楚看到每个工况的响应变化,便于判断约束是否真正起作用。