3. 参数化建模的基本变量与表达式
在 LS-DYNA 中,参数化建模的核心思想是:把模型中会反复变化、需要被扫描或优化的数值,从关键字卡片里“抽出来”,集中定义成命名变量,再让卡片通过变量名引用这些数值。这样,修改一个变量就能同步驱动尺寸、材料、载荷等多处关键字,而不必逐张卡片手工替换。实现这一机制的关键字主要是 *PARAMETER(定义标量变量与表达式)和 *DEFINE_CURVE(定义曲线型变量,如载荷—时间、应力—应变曲线)。
一、*PARAMETER:标量变量与表达式
*PARAMETER 用于定义标量参数,其基本语法为:
*PARAMETER
$ PRMR VAL
LENGTH 200.0
WIDTH 50.0
THICK 2.0
AREA &LENGTH*&WIDTH
DENS 7.85e-9
YOUNG 210000.0
POISS 0.3
其中 PRMR 是参数名,VAL 是数值或表达式。参数名建议使用大写字母、数字和下划线,避免与关键字字段冲突。引用参数时在名字前加 &,例如 &LENGTH。表达式可以包含四则运算、括号、常用数学函数(如 SIN、COS、SQRT、ABS、LOG 等),并且可以引用已定义的参数,形成依赖链。
需要注意两点:一是参数定义顺序影响引用,被引用的参数应先定义;二是单位制必须统一,LS-DYNA 本身不强制单位,但参数化后更容易因单位混用而出错。例如上例采用 mm-ton-s 单位制,密度 7.85e-9 对应钢的 7.85 t/m³,杨氏模量 210000 对应 210 GPa。
二、*DEFINE_CURVE:曲线型设计变量
载荷、材料硬化曲线、速度曲线等往往不是单个数值,而是一条随自变量变化的曲线。*DEFINE_CURVE 用离散点定义曲线,并可通过 LCID 被其他关键字引用。典型写法:
*DEFINE_CURVE
$ LCID SIDR SFA SFO OFFA OFFO
1001 0 1.0 1.0 0.0 0.0
$ TIME FORCE
0.0 0.0
0.001 500.0
0.002 1200.0
0.003 1200.0
0.004 0.0
这里 LCID=1001 是曲线编号,后续在 *BOUNDARY_PRESCRIBED_MOTION、*LOAD_RIGID_BODY 或材料卡片中通过 LCID 引用。曲线点也可以用参数表达式生成,例如把峰值力定义为 &FMAX,则曲线点写成 &T1 &FMAX 的形式,实现“载荷幅值参数化”。
三、把尺寸、材料、载荷统一参数化
下面给出一个简支梁参数化建模的片段,展示三类变量如何协同:
*PARAMETER
$ 几何尺寸
L 500.0
B 40.0
H 20.0
$ 材料
RHO 7.85e-9
E 210000.0
NU 0.3
$ 载荷
FMAX 2000.0
TEND 0.004
$ 派生量
AREA &B*&H
IXX &B*&H**3/12.0
VMAX &FMAX*&L**3/(48.0*&E*&IXX)
随后在 *SECTION_BEAM 中引用 &B、&H,在 *MAT_ELASTIC 中引用 &RHO、&E、&NU,在 *DEFINE_CURVE 中用 &FMAX 和 &TEND 生成载荷曲线。这样,改变 L 或 FMAX 后,截面、材料、载荷曲线会同步更新,派生量 VMAX 也会自动重算,便于快速评估不同设计点。
四、表达式与依赖链的实用写法
表达式让参数之间形成依赖关系,这是参数化设计的价值所在。例如:
*PARAMETER
L 500.0
B 40.0
H 20.0
AREA &B*&H
IXX &B*&H**3/12.0
E 210000.0
FMAX 2000.0
VMAX &FMAX*&L**3/(48.0*&E*&IXX)
SIGMAX &FMAX*&L/(4.0*&IXX/&H*2.0)
这里 VMAX 是简支梁跨中挠度估算,SIGMAX 是最大弯曲应力估算。它们不是仿真结果,而是基于材料力学的解析估算,用于在提交计算前快速判断设计点是否合理。若 VMAX 超过允许挠度或 SIGMAX 超过屈服强度,就可以先调整 B、H 或 FMAX,再进入求解。
TIME、LCID、NID 等,否则可能被解析器误读。建议统一加前缀,如 P_L、P_FMAX。
五、参数化建模的检查要点
- 单位一致性:所有参数必须属于同一单位制,长度、质量、时间、力、应力之间不能混用。
- 引用顺序:被引用的参数必须在前,表达式不能循环引用。
- 曲线编号唯一:多个
*DEFINE_CURVE的LCID不能重复,否则后定义会覆盖或引起引用歧义。 - 参数名可读性:用有意义的名称,如
BEAM_L、MAT_E、LOAD_FMAX,便于后续优化时快速定位。 - 派生量验证:对关键派生量可先用简单手算核对,确认表达式无误后再批量扫描。
掌握 *PARAMETER 与 *DEFINE_CURVE 的配合后,模型就从“一次性写死”变成了“可调、可扫、可优化”的参数化模型。后续无论是做尺寸扫描、材料替换还是载荷工况对比,都只需要改动参数池中的少数几个数值,而不用逐张卡片手工修改。