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

12 条自查项,和消息区里对应的那句原话

Abaqus 对材料数据的态度是照单全收:负的弹性模量、不递增的硬化曲线、 阻尼全零,建材料时一句抱怨都没有,求解器照常跑,结果悄悄是错的。 交付前靠人眼一张张翻材料卡不现实。这篇把插件的两道机器校验 (导入时校验、材料健康检查)拆成12 条自查项, 每条都对应你在消息区能看到的原话,并标出机器管不到、只能靠流程兜底的三件事。
两道关,查的时机不同
导入时校验拦 JSON,材料根本不进模型;健康检查读模型里已有的材料, 手填的、旧模型继承的都查。
FAILED 和 WARNING 不是一回事
FAILED 整材料没建成、半成品已删;WARNING 材料建好了但缺块, 求解前必须人工补。
12 条之外还有三件事机器不管
材料挂没挂到 Section、真应力还是工程应力、零应变温度单位,只能靠流程自查。

01两道关:导入时校验与材料健康检查

插件 1.5.0 对材料数据有两道独立的关,区别只在「查什么时候的数据」:

  • 导入时校验发生在数据写进模型之前。 JSON 里一张表不合规,对应材料整个不建,消息区出 FAILED 行, 已经建了一半的临时材料会被删掉,模型保持干净;
  • 材料健康检查反过来,读模型里已经存在的材料: 插件导进来的、你在 Property 模块手填的、从老模型继承下来的,一视同仁。 入口是菜单 Plug-ins → 材料库 → 材料健康检查..., 它是一个内核菜单按钮,不弹对话框、不要求登录授权、不联网, 结果直接打印在 CAE 消息区。

所以正确顺序是:导入时看一眼汇总,交付前不管材料哪来的再统一体检一次。 健康检查的描述(插件注册信息里的原话)只承诺四类: 弹性模量范围、塑性硬化曲线、互斥组合(如弹性加超弹性)、单位制一致性; 下面 12 条是它和导入校验合起来的完整覆盖面。

02先认得消息区的五种结果行

导入报告以这一行为开头:

--- Material Importer -> model "模型名" ---

后面可能出现五种行,轻重完全不同:

  • created (n): ... / replaced (n): ...: 新建或覆盖成功的材料;
  • skipped, already present (n): ... [tick "Overwrite" to replace]: 同名材料已存在被跳过,勾「Overwrite(覆盖)」才会替换;
  • FAILED 材料名: 原因:这条材料没有进模型, 半成品已被删除,原因是逐字的校验串;
  • WARNING 材料名: ... created without ... -- check it before solving.: 材料建成了,但有属性块这个版本不构造,求解前必须人工核对;
  • 什么都没建成时最后一行是 nothing imported.。
WARNING 是最容易漏读的行
一块只剩密度的橡胶不会报任何错,「有质量、没刚度」要到结果不对才发现。 材料编辑器里看不出缺了块,所以 WARNING 一定要在求解前处理,不能当成功签收。

03健康检查实际查的七件事,以及它的边界

体检对模型里每种材料依次做七项检查:

  1. 经共享读取器把材料读一遍,读不出来的块、未处理的行为逐条列出;
  2. 互斥组合:同一种材料上同时挂弹性和超弹性;
  3. 各向同性弹性表的范围(弹性模量为正、泊松比在开区间内);
  4. 塑性硬化曲线:按温度分组,每组从塑性应变 0 开始、应力为正、应变递增;
  5. 阻尼四个因子全为零时提示;
  6. 密度表逐行检查必须为正;
  7. 导热系数表逐行检查必须为正。

七项之外还有一项跨材料的交叉检查:把模型里所有材料的单位样本 (密度、模量等)各自判定一遍,像 tonne-mm-s 与像 SI 的材料同时存在时,追加一行 CROSS-CHECK。

三条边界,别超范围信任它

  • 弹性范围检查只走各向同性表;LAMINA 等各向异性常数的个数 是导入时的关卡,健康检查不数个数;
  • 单位交叉检查要求模型里至少有两种带可测量值的材料, 而且每种材料的单位归属要判定明确: 落在模糊带里的材料不贡献证据,不明确时它宁可沉默;
  • 它只体检材料定义本身。材料有没有挂到 Section、曲线是不是真应力, 都不在检查范围内(见第 05 节)。

04交付前自查 12 条:每条对应哪句原话

报错串里的 %g、%s 是内核填实际数值和名字的占位符, 下表照 1.5.0 源码原串收录。「谁拦」一列说明这句话出现在哪一关。

#自查项不合格时消息区的原话(节选)谁拦
1全篇同一单位制;mm 制下金属密度必须是 e-9 量级unit-system mismatch: A look like tonne-mm-s, B look like SI -- check that every material is in the same unit system健康检查 + 导入时单位检查
2弹性模量为正elastic: youngsModulus must be positive, got %g导入时 / 体检
3泊松比严格落在 −1 与 0.5 之间,0.5 也不行elastic: poissonsRatio must be between -1 and 0.5 (exclusive), got %g导入时 / 体检
4塑性表第一行塑性应变必须是 0plastic: the first plastic strain must be 0, got %g导入时 / 体检
5屈服应力为正,塑性应变逐行严格递增plastic: yieldStress must be positive, got %g
plastic: plasticStrain must increase down the table, got %g after %g
导入时 / 体检
6温度表里每一行的数列数相同(别漏写温度列)%s: all rows must have the same length导入时
7弹性与超弹性不共存(金属用前者,橡胶用后者)elastic and hyperelastic are two alternatives for the same property -- a material cannot carry both; drop whichever does not apply导入时 / 体检
8阻尼至少给一个因子、因子非负、不能四个全是 0damping: needs at least one of alpha, beta, composite, structural
damping.%s: must not be negative, got %g
damping: every factor is zero -- it damps nothing
导入时 / 体检
9密度表每一行为正(零和负数都会被点名)density: must be positive, got %g体检
10导热系数表每一行同样必须为正conductivity: must be positive, got %g体检
11每个属性块都真的建出来了,没有被当陌生键跳过(最常见是 plastic 拼成 plastics)WARNING %s: this release does not build %s, so the material was created without %s -- check it before solving.
none of its property blocks (%s) is built by this release, which handles %s
no recognised property blocks (%s)
导入时 WARNING / FAILED
12各向异性弹性常数个数对版:LAMINA 6 个、ENGINEERING_CONSTANTS 与 ORTHOTROPIC 9 个、ANISOTROPIC 21 个(带温度再加 1 列)elastic: type LAMINA needs 6 values per row, or 7 with a trailing temperature column, got 5导入时(1.4.1 起)

温度相关塑性表注意一点:第 4、5 条是每个温度分组内部各自从 0 开始、 组内递增,报错串会插入 at temperature %g 说明是哪个温度组。 单位换算本身见帮助文档的单位对照表,每句报错的中文解释在报错原因对照表。

05机器查不到的三件事,靠流程兜底

这三类问题不会生成任何报错行,健康检查也不覆盖,必须在交付流程里留人工节点:

  1. 材料建了但没有挂上去。材料 → Section → Section Assignment 三层任何一层没做,单元就没有材料,求解可能照样出结果。查法见材料建了不生效;
  2. 硬化曲线填的是工程应力应变。Abaqus 的塑性表吃真应力和真塑性应变, 填工程值的表现是承载偏低、塑性区偏大,且全程无报错。换算见真应力真应变换算;
  3. 零应变参考温度与初始温度场单位不一致。 两边都必须是摄氏度,一边开尔文一边摄氏度的结果是凭空出现热应力。见热膨胀与参考温度。

另有一件按工况判断的事:静力通用可以不填密度,但模态、显式动力学没有密度根本算不对, 详见密度什么时候必须填,单位制的选择依据见tonne-mm-s 单位制。

06怎么跑、查的是哪个模型、报告怎么读

菜单 Plug-ins → 材料库 → 材料健康检查..., 不需要选中任何材料,它扫描整个模型。多模型文件里, 它检查的是当前视口正在显示的那个模型; 没有可用视口时,退化为按名字排序的第一个模型。 体检前先确认视口停在目标模型上。

报告以这一行开头,随后按材料名列问题:

--- Material Audit -> model "Model-1" ---
  Demo_Steel:
    - density: must be positive, got 0
  1 material(s) with issues.

上面这份是示意报告,材料名和数值都是示意值,只为说明版式。真实运行还可能出现:

  • CROSS-CHECK: unit-system mismatch: ...:跨材料单位冲突, 跟在材料问题清单之后;
  • all N material(s) look healthy.:七项检查全无问题 (但第 05 节那三件事仍需人工确认);
  • nothing to report.:检查无问题、也没有交叉冲突;
  • no materials to check.:当前模型里一种材料都没有;
  • --- Material Audit: no such model "X" ---:指定的模型名不存在。
建议把它固定进交付动作
每次交模型前做三件事:跑一次材料健康检查、确认消息区没有 WARNING 残留、 按第 05 节过一遍挂载与应力来源。整个过程不联网、不产生文件, 也不会在界面上弹任何框 —— 它刻意设计成内核命令, 原因见建材料时 CAE 闪退。

常见问题

材料健康检查需要会员、激活或联网吗?

都不需要。它是注册在内核侧的菜单按钮(材料库 → 材料健康检查),插件源码明确写了不设授权:模型里的材料是你自己的数据,跑一遍检查对服务器没有任何开销,也不生成任何可以转发的文件。在线材料库要求 Abaqus 2023 或更高版本,但健康检查是纯本地内核命令,旧版本同样可用。

导入时已经校验过了,为什么交付前还要再跑健康检查?

两关查的不是同一批数据。导入校验只核 JSON 文件,材料一旦进入模型,之后手动改过参数、从老模型继承材料、或别人在 Property 模块手填的材料都没有经过它。健康检查直接读模型里现有的全部材料,不管来源,所以能兜住导入之后发生的改动。

我明明混用了单位制,为什么健康检查没报 CROSS-CHECK?

这条交叉检查有两个触发前提:模型里至少有两种带可测量值的材料,而且每种材料的单位归属要判定明确。数值落在模糊区间的材料不贡献证据,检查宁可沉默也不猜。它只区分 tonne-mm-s 与 SI 两类,其他单位制组合不在判定范围内。最可靠的做法仍然是建模开始就统一单位制,并按帮助文档单位对照表核对密度量级(mm 制下金属密度应为 e-9 量级)。

报告说 all N materials look healthy,模型就能交付了吗?

只能说明机器覆盖的七项加单位交叉检查没有发现问题。还有三件事它不管:材料是否经 Section 和 Section Assignment 真正挂到了单元上、塑性曲线是不是真应力真应变、零应变参考温度与初始温度场是否都用摄氏度。这三项需要按交付流程人工确认。

FAILED 和 WARNING 到底差在哪?

FAILED 表示这条材料整个没有进模型:内核在构造过程中抛异常,建好一半的临时材料会被删掉,模型里不存在它,消息区给出逐字原因,改完 JSON 重新导入即可。WARNING 表示材料已经建成功,但有属性块这个版本不构造(比如键名拼错或版本不支持),材料处于「缺一块」的状态,求解前必须人工核对补齐或确认那块确实不需要。

一个文件里有多个模型,健康检查查的是哪一个?

优先取当前视口正在显示的模型;取不到(没有视口或视口显示的不是模型)时,按模型名字典序取第一个。体检前先把视口切到目标模型,或在调用 auditModel 时显式传入模型名。如果模型名不存在,报告开头会是 “Material Audit: no such model”。

我用的是 LAMINA 复合材料,健康检查为什么不数常数个数?

这是当前覆盖面的边界:体检的弹性范围检查只对各向同性弹性表执行(弹性模量为正、泊松比在区间内)。各向异性类型的常数个数(LAMINA 6 个、ENGINEERING_CONSTANTS 和 ORTHOTROPIC 9 个、ANISOTROPIC 21 个)是导入时的校验关卡,从 1.4.1 起拦截,手填进模型的 LAMINA 表不在体检范围内,需要自己按个数核对。

这一步可以不自己做

这 12 条都交给机器:菜单 Plug-ins → 材料库 →材料健康检查,不登录、不联网,报告直接出现在消息区。 你要自己记的是 12 条之外那三件机器不管的事。

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