工程师平台
Abaqus 实战2026-09-05

Abaqus 里没有单位,所以填错了它也不会说

Abaqus 从头到尾没有「单位」这个概念。你在密度框里填 7850 还是 7.85e-9,它都照单全收,不会问你用的是哪套。一致性百分之百由建模的人负责, 而不一致的后果不是报错,是一个看起来完全正常、只是数值错了几个数量级的结果。 这篇把两套常用单位制的十项系数列全,并解释其中三项为什么反直觉。
求解器不校验量纲
没有任何一处会提示「你的密度和模量不是一套单位」。 唯一会拦你的是负数和零这种明显非法值,量纲错了它认为你是故意的。
密度差 10¹²,比热差 10⁶
从 SI 换到 mm 制,这两项是量级跨度最大的。钢的密度从 7850 变成 7.85e-9,中间隔着 12 个数量级 —— 填错一位小数都看不出来。
力和热导率数值不变
N 在两套里都是 N,W/(m·K) 的数值搬到 mW/(mm·K) 也照抄。正因为「有几项不用换」,才会有人以为整块热学都不用换。

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³,这三样单独看都「对」, 凑在一起就是三套不同的单位制,而模型照跑不误。

一致,比「用哪套」重要得多
SI 和 mm 制没有优劣之分,两套都能算出正确结果。真正致命的是混用。 所以选定一套之后,几何、材料、载荷、边界条件、输出解读,全部按那一套走, 中途不要「这个参数我记得是 MPa」。

02两套单位制:基本量决定其余一切

单位制只需要定四个基本量:长度、质量、时间、温度。 其余全是导出量,由这四个乘除出来,没有自由度。

SI(m 制)CAE 常用(mm 制)
长度mmm
质量kgtonne(t,即 10³ kg)
时间ss
温度K 或 °CK 或 °C
mm 制唯一「奇怪」的地方是质量取吨。这不是为了方便,是被逼的 —— 见下一节。

为什么 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 制里应写成数值怎么变
长度mmm×1000
NN不变
应力 / 模量GPa(或 Pa)MPa×1000(Pa 则 ×1e-6)
密度kg/m³t/mm³×1e-12
能量JmJ×1000
热导率W/(m·K)mW/(mm·K)不变
比热J/(kg·K)mJ/(t·K)×1e6
热膨胀系数10⁻⁶/K1/°C×1e-6
温度°C°C(保持摄氏)不变
应变%无量纲小数÷100
标黄的三项:密度跨 12 个数量级、比热跨 6 个、温度是唯一一个「单位没变但很多人换错」的(见第 05 节)。
热膨胀系数那一行是在换「报告的写法」,不是换量纲
α 的单位 1/K 和 1/°C 在数值上完全相同。之所以还是列了个 ×1e-6, 是因为材料报告习惯写成「12 × 10⁻⁶ /K」,纸面上那个数是 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)
热学最坑的一组:一个不变、一个乘一百万
热导率抄过来就对,紧挨着的比热却要乘 106。 人的直觉是「这两个是一类东西,应该一起处理」,于是要么两个都不换(比热小了一百万倍, 温度瞬间飙升),要么两个都换(热导率大了一千倍,温度传得过快)。 插件自带示例库里 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 两套里都这么写), 但它必须配一个零应变参考温度。参考温度没设或设错, 模型一开始就带着一段「初始温差」,于是在没有任何热载荷的静力分析里, 结果里也会冒出可观的应力。

怎么快速自查
  1. 在 CAE 里随便选一个材料,看密度那一栏的数量级:mm 制的金属一定在 1e-9 附近,SI 制的一定在 1e3 附近。 出现 7.857850000 这种中间值,必错。
  2. 模量除以屈服应力,金属大致在 300~1000 这个范围(无量纲)。 这个比值和单位制无关,只要两项同套就成立。差得离谱说明两项不同套。
  3. 有热分析的话,用比热除以热导率,mm 制下这个比值应该在 106 ~ 107 量级。落在个位数说明比热没乘。

05温度:唯一一个「单位没变但照样错」的量

温度在两套单位制里都可以写摄氏度,系数是 1,看上去最没有风险。 但它有两个和换算无关的坑:

  • 摄氏和开氏混用。 温度在两个标度下相同(Δ1°C = Δ1 K), 所以热膨胀、热传导这些只吃温差的地方,写哪个都对。 但只要模型里出现绝对温度 —— 辐射换热的 T⁴、 Johnson-Cook 的熔点与转变温度 —— 就必须是绝对标度, 这时候把 20 当成 20 K 而不是 293 K,差出一个数量级。
  • 同一个模型里两种标度并存。 材料表用摄氏、初始条件用开氏, 是最常见的组合。求解器不会拦,它只是把两个数当成同一条轴上的坐标。
一条简单的规矩
模型里没有辐射、没有 Johnson-Cook 的话,全程用摄氏度,和材料报告一致,最省事。 一旦要用到绝对温度,就整个模型改开氏,包括材料表里的温度列 —— 不要只改用到绝对温度的那一处。

06这一步能不能不自己做

换算本身是小学算术,问题在于它是每换一种材料就要重来一遍的算术, 而且做错了没有任何反馈。一个模型十种材料、每种六七个属性, 就是六七十次手工乘除,其中任何一次点错小数点都会静默地进入结果。

本站的Abaqus 材料导入插件在这一步的做法是:材料按一套确定的单位存放,导入时按目标单位制统一换算再写进模型, 十项一起换,不存在「换对了一半」。它支持的属性和这张表一一对应 —— 密度、弹性、塑性、热膨胀、热导率、比热,加上几种损伤模型。

如果你的参数来自 Ansys,那边的单位约定又是另一回事(材料库 XML 里一律是 SI 基本单位, 应力是 Pa 不是 MPa),Ansys 材料库 XML 格式详解里有一张直接换到 Abaqus mm 制的系数表。

常见问题

Abaqus 用 mm 单位制时,钢的密度应该填多少?

在 mm-tonne-s 单位制下,密度的单位是 t/mm³,由 kg/m³ 换算需要乘 1e-12(质量 kg→t 除以 1e3,体积 m³→mm³ 除以 1e9)。所以 7850 kg/m³ 对应 7.85e-9 t/mm³。填成 7.85 或 7850 都不会报错,但会让模态频率、显式动力学的时间步长、任何和惯性有关的结果整体偏掉若干个数量级。

Abaqus 的比热在 mm 单位制下为什么是 4.6e8 这么大的数?

mm 制下比热的单位是 mJ/(t·K)。1 mJ/(t·K) = 1e-3 J / (1e3 kg·K) = 1e-6 J/(kg·K),分子分母同向缩小不能抵消,所以 SI 数值要乘 1e6。460 J/(kg·K) 换过来就是 4.6e8 mJ/(t·K)。这个数看着离谱但是对的,插件自带示例库里 Steel_Q345 写的就是 4.6e8。

热导率从 SI 换到 mm 制要乘多少?

不用乘,数值不变。1 mW/(mm·K) = 1e-3 W / (1e-3 m·K) = 1 W/(m·K),能量降三个数量级、长度也降三个数量级,正好抵消。钢的热导率在两套单位制里都写 45。注意紧挨着的比热却要乘 1e6,这两项一个不变一个乘一百万,是热分析里最容易一起搞错的一组。

Abaqus 单位填错了会报错吗?

不会。Abaqus 没有单位系统,求解器拿到的只是一组浮点数,量纲一致性完全由建模者负责。唯一会被拦下的是明显非法的值,比如负的弹性模量、超出 -1 到 0.5 的泊松比、零或负的屈服应力。量纲错误只能靠结果反推:模态频率差几十倍、承载明显偏低塑性区偏大、静力分析里凭空出现热应力,这三种症状都要先查单位。

SI 和 mm 单位制哪个更好?

没有优劣,两套都能算出正确结果,选定一套贯彻到底即可。工程上 mm 制更常用,原因是几何普遍按毫米建模,而且 mm-tonne-s 制下力仍然是 N、应力正好是 MPa,和图纸、材料报告的习惯一致。真正致命的从来不是选错,而是混用——几何 mm、模量 GPa、密度 kg/m³ 这种组合每一项单看都对,凑在一起是三套单位制。

Abaqus 里温度用摄氏还是开氏?

只涉及温差的场合(热膨胀、热传导、温度相关的材料表)两者等价,Δ1°C = Δ1K,用摄氏和材料报告一致最省事。但模型里一旦出现绝对温度——辐射换热的 T⁴、Johnson-Cook 塑性和失效的熔点与转变温度——就必须用绝对标度,此时要把整个模型统一改成开氏,包括材料表里的温度列,不能只改用到绝对温度的那一处。

这一步可以不自己做

这十项换算里,密度的 10-12 和比热的 106 是漏得最多的两项。 插件按你选定的单位制一次性换完再写进模型,不会只换对一半。

在线材料库需要 Abaqus 2023 或更高版本;2022 及更早只能用本地 JSON 材料库。