2. 参数化建模基础
在Ansys Mechanical中,参数化建模并不是“把尺寸改成变量”这么简单。它本质上是一套以参数为输入、以几何/网格/边界条件为中间载体、以结果量为输出的可追溯数据链。只有把这条链上的每个环节都显式定义清楚,后续的优化设计点(Design Points)才能被正确驱动和回读。本节围绕参数定义、参数集管理、表达式与函数、参数间关联关系以及建模规范五个方面展开。
一、参数在Mechanical中的三种角色
Mechanical中的参数按数据流向可分为三类:输入参数(Input Parameter)、输出参数(Output Parameter)和中间派生参数(Derived Parameter)。输入参数通常来自CAD尺寸、材料属性或边界条件数值;输出参数是求解后提取的结果量,如最大等效应力、总质量、最大变形;派生参数则是通过表达式由前两者计算得到的量,例如安全系数 = 许用应力 / 最大等效应力。
在Workbench项目页中,参数以“P”标记显示。Mechanical内部通过Parameter Set总线与Workbench的Parameter Set单元格通信。理解这一点很关键:Mechanical里定义的参数不会自动出现在Workbench参数集中,必须勾选参数名左侧的复选框,使其状态从“D”(本地)变为“P”(参数化)。
二、参数集管理与命名规范
参数集是Workbench中所有参数的汇总视图,每一行对应一个参数,列包括ID、Parameter Name、Value、Unit、Type等。工程实践中建议遵循以下命名约定:
- 输入参数以
in_开头,如in_plate_thickness、in_hole_dia; - 输出参数以
out_开头,如out_max_stress、out_total_mass; - 派生参数以
calc_开头,如calc_safety_factor; - 单位统一使用SI或项目约定单位,避免同一参数在不同位置混用mm与m。
参数集支持导出为.csv或.txt,也支持从外部表格导入。当参数数量超过20个时,建议按功能分组,例如几何组、材料组、载荷组、结果组,便于在优化模块中筛选。
三、表达式与函数
Mechanical的参数表达式支持四则运算、幂运算、三角函数、对数以及条件判断。表达式可以直接写在参数值单元格中,以=开头。例如:
in_plate_thickness = 8 [mm]
in_hole_dia = in_plate_thickness * 1.5
calc_safety_factor = 235 [MPa] / out_max_stress
calc_mass_ratio = out_total_mass / 2.7 [kg]
常用函数包括abs()、sqrt()、min()、max()、sin()、cos()、tan()、log()、exp()。条件表达式可用if(condition, true_value, false_value),例如:
calc_status = if(out_max_stress < 200 [MPa], 1, 0)
需要注意:表达式中的单位必须显式书写,否则Mechanical会按当前单位制推断,容易产生量纲错误。当表达式引用另一个参数时,被引用参数必须已经定义,且不能形成循环引用。
四、参数间关联关系
参数之间的关联关系决定了优化时哪些量会联动变化。典型关系有三类:几何驱动关系(如孔径随板厚变化)、物理约束关系(如安全系数由应力计算得到)、目标评价关系(如质量比用于轻量化评价)。下图展示了本节核心的参数化数据链与关联结构。
图中左侧为输入参数,中间为几何与边界条件,右侧为输出参数,下方为派生参数与参数集总线。蓝色实线表示输入驱动几何,绿色实线表示几何进入求解,紫色虚线表示输出结果通过表达式生成派生参数,红色虚线表示参数集对全部参数的统一管理。这张图的核心信息是:参数化不是单点变量,而是一条从输入到输出的可追溯链。
五、参数化模型搭建规范
要让参数化模型在优化模块中稳定运行,需要遵守以下规范:
- 几何层面:优先使用草图尺寸和特征参数驱动,避免直接拖动面或使用非参数化布尔运算。命名选择(Named Selection)应绑定到几何面或体,而不是节点编号。
- 网格层面:网格尺寸可以作为输入参数,但需注意网格质量随尺寸变化可能引起求解失败。建议设置网格尺寸上下限,并在优化前做一次参数扫描验证。
- 边界条件层面:载荷和约束的数值可以参数化,但作用位置应通过命名选择固定,避免因几何变化导致选择集失效。
- 结果层面:输出参数应选择稳定的结果量,避免选择依赖网格节点的极值点。对于应力集中区域,建议使用局部命名选择上的最大等效应力,而不是全局最大值。
- 参数集层面:每次修改参数后,检查Parameter Set中的单位、类型和依赖关系是否一致。导出参数表作为版本记录。
六、一个可复用的参数定义示例
以下示例展示了一个带孔板的参数化定义,可直接作为建模起点:
# 输入参数
in_plate_length = 200 [mm]
in_plate_width = 100 [mm]
in_plate_thickness = 8 [mm]
in_hole_dia = 12 [mm]
in_load = 1500 [N]
in_E = 210000 [MPa]
in_nu = 0.3
# 派生参数
calc_hole_ratio = in_hole_dia / in_plate_width
calc_safety_factor = 235 [MPa] / out_max_stress
calc_mass_ratio = out_total_mass / 2.7 [kg]
# 输出参数(求解后回读)
out_max_stress
out_max_deform
out_total_mass
在这个示例中,in_hole_dia和in_plate_thickness是优化时最常调整的设计变量;out_max_stress和out_total_mass是评价指标;calc_safety_factor和calc_mass_ratio用于快速判断设计是否满足约束。搭建完成后,建议先手动修改一次in_hole_dia,观察几何、网格和结果是否同步更新,确认参数链完整后再进入优化模块。
参数化建模的质量直接决定后续优化能否收敛。把参数定义、命名、表达式和关联关系在建模阶段就规范好,比在优化阶段反复排查要高效得多。