01为什么 Abaqus 不管单位
Abaqus 的输入文件里,材料是这样写的:
*MATERIAL, NAME=Steel
*DENSITY
7.85e-09,
*ELASTIC
206000., 0.3
*PLASTIC
345., 0.
480., 0.06通篇没有一个单位符号。求解器拿到的就是一堆浮点数,它按牛顿第二定律、 按胡克定律去组装刚度矩阵和质量矩阵,至于这些数代表 kg 还是 tonne, 它无从判断也不打算判断。
这个设计是合理的 —— 有限元求解本来就是纯数值的,强行绑定单位反而限制使用。 但代价落在用户身上:量纲一致性是一条没有任何人替你检查的约束。 几何是 mm 建的、模量填了 GPa、密度填了 kg/m³,这三样单独看都「对」, 凑在一起就是三套不同的单位制,而模型照跑不误。
02两套单位制:基本量决定其余一切
单位制只需要定四个基本量:长度、质量、时间、温度。 其余全是导出量,由这四个乘除出来,没有自由度。
| SI(m 制) | CAE 常用(mm 制) | |
|---|---|---|
| 长度 | m | mm |
| 质量 | kg | tonne(t,即 10³ kg) |
| 时间 | s | s |
| 温度 | K 或 °C | K 或 °C |
为什么 mm 制的质量必须是吨
因为大家都希望力还是牛顿。力的量纲是质量 × 长度 ÷ 时间²,长度取了 mm(10-3 m), 要让结果仍然等于 1 N,质量就必须补上 103:
1 t · mm / s²
= 10³ kg × 10⁻³ m / s²
= 1 kg·m/s²
= 1 N ← 力的数值不用换力不用换,应力就等于 N/mm² = MPa —— 这正是工程上写模量最顺手的单位。 整套 mm 制其实就是围绕「力还是 N、应力还是 MPa」倒推出来的。
03十项换算系数(SI → mm 制)
下面这张表和插件帮助文档第 06 节里的对照表是同一套系数。标黄的三行是实际出错最集中的三项。
| 物理量 | SI 里常写成 | mm 制里应写成 | 数值怎么变 |
|---|---|---|---|
| 长度 | m | mm | ×1000 |
| 力 | N | N | 不变 |
| 应力 / 模量 | GPa(或 Pa) | MPa | ×1000(Pa 则 ×1e-6) |
| 密度 | kg/m³ | t/mm³ | ×1e-12 |
| 能量 | J | mJ | ×1000 |
| 热导率 | W/(m·K) | mW/(mm·K) | 不变 |
| 比热 | J/(kg·K) | mJ/(t·K) | ×1e6 |
| 热膨胀系数 | 10⁻⁶/K | 1/°C | ×1e-6 |
| 温度 | °C | °C(保持摄氏) | 不变 |
| 应变 | % | 无量纲小数 | ÷100 |
12, 照抄进 Abaqus 就大了一百万倍。要填的是 1.2e-5。密度那 10¹² 是怎么来的
ρ = 7850 kg/m³
质量:kg → t ÷10³
体积:m³ → mm³ ÷10⁹ (1 m³ = 10⁹ mm³)
合计 ÷10¹²
ρ = 7.85e-9 t/mm³两个方向的缩放叠在一起才是 1012,只记得除以 1000 的人会填成 7.85,差九个数量级。
热导率为什么不用换
1 mW/(mm·K)
= 10⁻³ W / (10⁻³ m · K)
= 1 W/(m·K) ← 分子分母的 10⁻³ 抵消了能量降了三个数量级,长度也降了三个数量级,正好抵消。 钢的热导率在两套里都写 45。
比热为什么要乘 10⁶
1 mJ/(t·K)
= 10⁻³ J / (10³ kg · K)
= 10⁻⁶ J/(kg·K) ← 分子分母同向缩小,不抵消,叠加
所以 460 J/(kg·K) → 4.6e8 mJ/(t·K)Steel_Q345 那条写的就是 "conductivity": 45.0, "specificHeat": 4.6e8,一个不变一个 4.6 亿 —— 看着别扭,但那是对的。04三个「不报错但结果全错」的症状
单位错了不会有任何提示,只能靠结果反推。下面三种是最常见的, 出现其中任何一种,先回去查单位,不要先怀疑网格。
症状一:模态频率差几十倍
固有频率正比于 √(刚度/质量)。刚度来自模量、质量来自密度, 这两项分属两套单位时,比值就会整体偏掉一个固定倍数。 典型情况:几何是 mm、模量填了 MPa(对的),密度却填了 7850(kg/m³,错的)。密度大了 1012 倍, 频率就小了 106 倍 —— 本该 1200 Hz 的一阶模态算出 0.0012 Hz。
这个症状的好处是太离谱,一眼能看出来。真正危险的是下面两个。
症状二:承载偏低、塑性区偏大
模量和屈服应力填的是 Pa 而不是 MPa(少了 106), 于是材料在模型里软得像橡皮:同样的载荷下位移大、塑性区大、承载能力评估偏保守。 偏保守往往不会引起怀疑 —— 结构「算不过」,人的第一反应是加料,而不是查单位。 这一条造成的浪费比症状一大得多。
症状三:凭空出现热应力
热膨胀系数 α 的数值本身不容易错(1.2e-5 两套里都这么写), 但它必须配一个零应变参考温度。参考温度没设或设错, 模型一开始就带着一段「初始温差」,于是在没有任何热载荷的静力分析里, 结果里也会冒出可观的应力。
- 在 CAE 里随便选一个材料,看密度那一栏的数量级:mm 制的金属一定在
1e-9附近,SI 制的一定在1e3附近。 出现7.85、7850000这种中间值,必错。 - 模量除以屈服应力,金属大致在 300~1000 这个范围(无量纲)。 这个比值和单位制无关,只要两项同套就成立。差得离谱说明两项不同套。
- 有热分析的话,用比热除以热导率,mm 制下这个比值应该在 106 ~ 107 量级。落在个位数说明比热没乘。
05温度:唯一一个「单位没变但照样错」的量
温度在两套单位制里都可以写摄氏度,系数是 1,看上去最没有风险。 但它有两个和换算无关的坑:
- 摄氏和开氏混用。 温度差在两个标度下相同(Δ1°C = Δ1 K), 所以热膨胀、热传导这些只吃温差的地方,写哪个都对。 但只要模型里出现绝对温度 —— 辐射换热的 T⁴、 Johnson-Cook 的熔点与转变温度 —— 就必须是绝对标度, 这时候把 20 当成 20 K 而不是 293 K,差出一个数量级。
- 同一个模型里两种标度并存。 材料表用摄氏、初始条件用开氏, 是最常见的组合。求解器不会拦,它只是把两个数当成同一条轴上的坐标。
06这一步能不能不自己做
换算本身是小学算术,问题在于它是每换一种材料就要重来一遍的算术, 而且做错了没有任何反馈。一个模型十种材料、每种六七个属性, 就是六七十次手工乘除,其中任何一次点错小数点都会静默地进入结果。
本站的Abaqus 材料导入插件在这一步的做法是:材料按一套确定的单位存放,导入时按目标单位制统一换算再写进模型, 十项一起换,不存在「换对了一半」。它支持的属性和这张表一一对应 —— 密度、弹性、塑性、热膨胀、热导率、比热,加上几种损伤模型。
如果你的参数来自 Ansys,那边的单位约定又是另一回事(材料库 XML 里一律是 SI 基本单位, 应力是 Pa 不是 MPa),Ansys 材料库 XML 格式详解里有一张直接换到 Abaqus mm 制的系数表。