工程师平台
返回插件介绍

材料导入插件 · 帮助文档

适用版本 1.5.0。这份文档按你实际会遇到的顺序排:装 → 激活 → 用 → 出错怎么办。如果你只想解决一个报错,直接跳到 第 08 节 · 报错原因对照表

下载插件包 1.5.0

01安装

  1. 1

    下载并解压插件包

    MaterialImporter-1.5.0.zip,解压到任意临时目录。里面有 install.batuninstall.batREADME.txthelp.html(就是本文档的离线版)和一个 materialImporter 文件夹。
  2. 2

    双击 install.bat

    它会把 materialImporter 复制到 %USERPROFILE%\abaqus_plugins\materialImporter,也就是你的用户目录下,形如 C:\Users\你的用户名\abaqus_plugins\materialImporter。这是 Abaqus 默认会扫描的个人插件目录,不需要管理员权限,也不用去改 Abaqus 安装目录。脚本会顺手清掉上一版残留的 __pycache__,屏幕上打印复制了哪些文件。
  3. 3

    重启 CAE

    必须完全关掉再开,Abaqus 只在启动时扫描插件目录。成功的话 Plug-ins 菜单下会多出 材料库 → 导入材料... 一项(没配中文 locale 时显示为 Material Library → Import materials...,两者是同一个插件,见第 07 节)。

升级时务必先删掉旧副本,否则菜单里会出现两个「材料库」

Abaqus 会同时扫描两个位置:上面那个用户目录,以及安装环境里配置的 plugin_central_dir(形如 D:\SIMULIA\CAE\plugins\2025)。手工复制装到后者的那一份不会被 install.bat 覆盖 —— 它还在,还会被加载,而且可能是旧的那份在跑(装完发现行为没变化,多半就是这个原因)。1.2.1 的 install.bat 会自动扫描这些位置,发现旧副本就把完整路径列出来问你要不要删,不用自己去找。想自己确认的话,在 CAE 命令行区执行:

print(session.pluginCentralDir)

把输出目录里的 materialImporter 文件夹删掉,只留用户目录那一份。

两个常见安装问题

菜单里没出现。如果是手工复制安装的,九成是层级放错了 —— materialImporter_plugin.py 必须正好 <插件目录>\materialImporter\ 下面,不能多套一层文件夹(比如解压出来的 materialImporter\materialImporter\),也不能直接平铺在插件目录里。正确的结构是:

<插件目录>\materialImporter\materialImporter_plugin.py
                            \materialImporterDB.py
                            \materialImporterKernel.py
                            ... 共 8 个 .py 文件

不要改动 .py 文件的后缀或编码。Abaqus 是靠文件名以 _plugin.py 结尾来发现插件的。

02第一次使用:激活

插件是会员制付费工具,用手机号 + 短信验证码激活,没有账号密码。第一次打开插件时会自动停在 engstudy.top 页签上。

  1. 1

    确认会员状态

    激活需要有效会员。页签顶部有一个 开通会员 按钮,会打开网站的 会员页建议先确认会员再发验证码 —— 服务器要在验证码校验之后才能知道你的会员状态,非会员的话那条短信就白花了。
  2. 2

    填手机号 → 点「发送验证码」

    验证码 5 分钟内有效。
  3. 3

    填验证码 → 点「激活」

    成功后页签上会显示授权状态和到期时间。

激活之后基本不用再管

授权保存在本机,有效期 30 天,插件会在到期前 7 天自动续期(打开插件时静默完成,不需要再收短信)。只要你保持联网使用,就不会遇到过期。

要留意的只有一种情况:连续一个月以上不联网使用。 授权过期后在线库和本地 JSON 导入都会停(见第 09 节),所以长期出差、进隔离内网之前, 先联网打开一次插件把有效期续上。

Abaqus 2022 及更早的版本

这些版本自带 Python 2.7,插件的联网模块无法运行,没有激活途径。因此从未激活过的机器在这些版本上不设门槛,本地 JSON 导入直接可用, 在线材料库页签不会出现 —— 把人挡在门外、同时又不给他开门的办法,我们没有采用。 但已经激活过、后来过期的机器在这里同样会被拦:那条记录只可能来自同一台机器上 更新的 Abaqus,续期的路是通的;只在某些启动方式里认过期,等于把「开旧版本」写成一条明路。

03界面说明

Plug-ins材料库导入材料... 打开对话框。上半部分是两个页签:

页签用途
engstudy.top激活、续期,以及从在线材料库拉取材料。Abaqus 2023+ 才有
本地 JSON 文件选择一个 JSON 材料库文件并读取。所有版本都有
Abaqus 材料导入对话框,停在「本地 JSON 文件」页签
对话框全貌(停在 本地 JSON 文件 页签)。从上到下三段:页签区、要导入的材料 列表、导入目标。列表右上角的 全选 / 清空 用来批量勾选。
对话框的 engstudy.top 页签,包含手机号与验证码输入
切到 engstudy.top 页签就是激活界面:最上面一行是会员提示和 开通会员 按钮,下面是手机号、短信验证码,以及 发送验证码 / 激活 / 解除激活。未激活时插件打开就停在这一页。

下半部分是材料列表导入目标,两个页签共用:

选项含义
覆盖已存在的同名材料勾选时,模型里已存在的同名材料会被替换。不勾选时遇到同名会跳过并在消息区说明。1.2.1 起:替换失败不会损坏原有材料—— 新材料先在临时名下建好、确认无误才换上去,所以 JSON 里一个手误不会让你丢掉模型里已经调好的那份
模型材料建在哪个模型里。默认是当前模型

列表上方有一行状态文字,会显示读到了多少种材料、当前授权状态。

3.1 筛选材料(1.3 起)

材料列表上方有个筛选框。空格分隔多个词表示「且」,不区分大小写 —— 输入 steel 304 只留下同时含这两个词的条目。

勾选的规则是「你看到勾上的,就是你会得到的」

  • 列表刚读进来时是全勾的,小型 JSON 库可以直接点导入,一次全建
  • 在你自己动手勾选之前,勾选跟着筛选走 —— 筛出 4 种钢就只导这 4 种, 不会把当前看不见的另外 52 种一起带进去
  • 你一旦勾了或取消勾了任何一项,勾选就归你了:之后再改筛选词不会再动它。 被筛掉、当前看不见的勾选依然算数,所以可以筛一次勾几个、再换个词勾几个
  • 列表上方显示的始终是真实勾选总数(含当前看不见的);全选 只勾当前可见的,清空 清掉全部

1.2 起:导入结果打印在 CAE 的消息区,不再弹窗

点「导入」之后不会有对话框,界面直接关闭。结果在 CAE 下方消息区(Message area)逐行打印,形如:

--- Material Importer -> model "Model-1" ---
  created (56): Metal_Steel_A36, Metal_Al_6061_T6, ...
  skipped (2): ...
  failed (1): ...

紧跟在后面的是网站对缺失属性的逐条说明 —— 哪个材料的哪个本构块没有建立、为什么没有。这些句子是网站原文,插件不改写、不过滤、不去重。

放在消息区而不是弹窗,有两个实际好处:几十种材料的说明可以往上滚着看,而且能直接选中复制。导入完后请往下看一眼消息区,尤其是当你导入的材料要用于强度分析时 —— 见下面这条。

Abaqus CAE 消息区里的材料导入汇总
真实的消息区(Message area)输出:--- Material Importer -> model ... --- 这一行之后就是 created / skipped / failed 的名单。这块区域在 CAE 窗口下方,可以拖高、可以滚动、可以选中复制。

缺弹性属性的材料,导入后是「热学专用」的

Abaqus 的各向同性 *ELASTIC 必须同时有弹性模量和泊松比,缺一个插件就不建这个块(不猜、不补 0)。 这种材料只有密度和热学属性,拿去做任何应力分析都会在求解阶段报错。消息区会写明是哪些材料,别跳过。

04从在线材料库导入

  1. 1

    切到 engstudy.top 页签

    确认状态显示已激活。
  2. 2

    点「获取材料列表」

    拉取当前可用的材料。
  3. 3

    在列表里勾选

    可以多选,也可以全选。
  4. 4

    点「导入」

    材料出现在模型树的 Materials 节点下。
engstudy.top 页签上点「获取材料列表」之后的材料清单
已激活状态下点 获取材料列表,在线库的材料就读进下方 要导入的材料 列表;列表上方那行状态文字会写读到了多少种。

关于在线库的数据范围,说清楚一点

在线库目前提供的是室温标量 —— 密度、弹性模量、泊松比、屈服强度、抗拉强度、热导率、比热、热膨胀系数。完整清单见 材料参数库

因此导入后的塑性是理想弹塑性:屈服之后应力不再上升,承载能力偏保守,塑性应变偏大。做压溃、冲压成形、极限承载、螺栓过载这类分析时,请用第 05 节的方式提供真实的硬化曲线。

插件不会拿抗拉强度去凑一条硬化曲线 —— 凑曲线需要颈缩时的应变,那个数在线库没有。缺数据时插件的做法是告诉你缺,而不是编一个。

05从本地 JSON 导入(格式全说明)

插件的全部能力都在这条路上:多点硬化曲线、每个属性的温度相关表、Johnson-Cook、应变率相关、四种损伤准则加演化。

数据本来存在 Ansys Engineering Data 里的话,那边导出的 XML 是 MatML 结构, 和下面这套 JSON 不通用 —— 数值在 pr0 / pa0 的间接寻址后面,单位得按幂次相乘算, 还有 7.88860905221012e-31 这种不能当 0 处理的哨兵值。搬数据前先看这篇: Ansys 材料库 XML(MatML)格式详解

不想从零写的话,站内两个参数库能直接导出这套 JSON:复合材料参数库(正交各向异性常数,Lamina 与 Engineering Constants 两种填法)和 Johnson-Cook 参数库(A、B、n、m、C 与 d1~d5)。两个库都已经是 tonne-mm-s,拿来就能改。

5.1 文件的基本形状

UTF-8 编码,顶层是 {"materials": [...]} 或者直接一个数组 [...]。(Excel 导出带的 BOM 会被自动忽略。)

{"materials": [
  {"name": "Steel_45", ... },
  {"name": "Al_6061_T6", ... }
]}
必需说明
name必需Abaqus 材料名。只能用字母、数字、下划线 —— Abaqus 不接受 -,也不建议用中文(见下方提示)
description可选写进材料的说明栏,建议记数据来源、热处理状态、单位制
density可选见 5.2
elastic可选见 5.3
plastic可选见 5.4
thermal可选见 5.5
damage可选见 5.6
hyperelastic可选见 5.7(1.3 起)
creep可选见 5.8(1.3 起)
damping可选见 5.9(1.3 起)
concreteDamagedPlasticity可选见 5.12(1.4.1 起)
grade可选混凝土标号简写,见 5.12(1.4.1 起)

两条最容易踩的

不要写中文材料名。除非你按第 07 节改过 Abaqus 的语言配置,否则 Abaqus 会把中文字符全部显示成 ?,材料名会变成一串问号 —— 而且这个问题会跟着 .inp 文件传下去。中文信息请写在 description 里。

缺数据就不要写这个键。不要用 0 补齐。泊松比 0、密度 0 在 Abaqus 里都是合法输入,会被当成真数据算下去,不会有任何警告。

5.2 密度 density

单值,可以直接写一个数:

"density": 7.85e-9

等价于 "density": {"value": 7.85e-9}。温度相关时用表格(见 5.10)。

5.3 弹性 elastic

"elastic": {"youngsModulus": 210000, "poissonsRatio": 0.3}

校验:E > 0−1 < ν < 0.5(两端都不含)。不满足会直接报错并指出是哪个材料。

各向异性用 type + 显式表格,列的排布按 Abaqus 该类型的规定:

"elastic": {"type": "ENGINEERING_CONSTANTS",
            "table": [[E1, E2, E3, Nu12, Nu13, Nu23, G12, G13, G23]]}

复合材料的两个子类怎么选、常数顺序、Nu12 和 Nu21 的区别、正定条件,单独写在 5.13。

5.4 塑性 plastic

多点硬化曲线(最常用)

"plastic": {"table": [[355, 0.000],
                      [420, 0.020],
                      [480, 0.050],
                      [540, 0.120]]}

每行 [真应力, 等效塑性应变]hardening 可选 "ISOTROPIC"(默认)或 "KINEMATIC"

三条硬性要求,不满足会报错

  1. 第一行的塑性应变必须是 0,这一行的应力就是屈服强度
  2. 应力必须 > 0
  3. 塑性应变必须严格递增

另外:应变是无量纲小数0.02 表示 2%,不要写成 2

必须是真应力 + 对数塑性应变

手册和拉伸报告给的几乎都是工程应力应变,直接填进去不会报错,只会让结果偏小。换算:

σ_true = σ_eng × (1 + ε_eng)
ε_true = ln(1 + ε_eng)
ε_pl   = ε_true − σ_true / E

并且只在抗拉强度点之前有效 —— 过了抗拉强度,工程曲线反映的是试样颈缩这个几何失稳,不再是材料行为,那一段不能用。

Abaqus 怎么处理曲线之外的区间

超过最后一个数据点之后,应力保持最后一个值不变(完全水平),不做斜率延伸。所以如果曲线只给到 5% 应变、而模型里某处实际到了 30%,那 25% 的区间里材料是理想塑性的、承载被低估 ——Abaqus 不会提示你。尽量把曲线给到你预期的最大塑性应变。

Johnson-Cook 塑性

"plastic": {"hardening": "JOHNSON_COOK",
            "A": 355, "B": 480, "n": 0.28, "m": 1.0,
            "meltingTemperature": 1500, "transitionTemperature": 20}

应变率相关(可选,加在 plastic 里面)

"plastic": {"table": [[355, 0.0], [480, 0.05]],
            "rateDependent": {"type": "JOHNSON_COOK",
                              "C": 0.014, "epsilonDot0": 1.0}}

幂律形式:{"type": "POWER_LAW", "multiplier": ..., "exponent": ...}

5.5 热学 thermal

"thermal": {
  "conductivity": 48,
  "specificHeat": 4.8e8,
  "expansion": {"alpha": 1.16e-5, "zeroTemperature": 20}
}

三个子块都可以直接写一个数。conductivityexpansion 支持 type(默认 ISOTROPIC)。

zeroTemperature 是最容易出事的一个参数

它是热膨胀的参考温度(对应 *EXPANSION, ZERO=),单位是摄氏度。Abaqus 没有单位制概念,这里就是一个裸数字。

如果你把它当成开尔文、又把初始温度场设成 293,就会凭空多出 273 度的温差和一堆假的热应力,而且不会有任何警告 —— 你只会看到一个「热应力怎么这么大」的结果, 却没有任何线索指向这个参数。

(膨胀系数 α 本身不受影响:1/K 和 1/°C 数值相同,因为两者都是「每温度区间」。会错的只有参考点,所以这个坑特别容易漏。)

5.6 损伤与失效 damage

四种损伤起始准则,每种都可以带一个 evolution

子块列(按顺序)
ductilefractureStrain, stressTriaxiality, strainRate
shearfractureStrain, shearStressRatio, strainRate(另可加 ks)
johnsonCookd1…d5, meltingTemperature, transitionTemperature, referenceStrainRate
fldminorStrain, majorStrain
"damage": {
  "ductile": {
    "table": [[0.35, -0.33, 0.0],
              [0.21,  0.00, 0.0],
              [0.15,  0.33, 0.0]],
    "evolution": {"type": "DISPLACEMENT", "value": 0.1}
  }
}

evolutiontypeDISPLACEMENT(默认,用 value displacementAtFailure)或 ENERGY(用 fractureEnergy);可选 softening(默认 LINEAR)、degradation(默认 MAXIMUM)。

不要用延伸率当断裂应变

延伸率(A、A50)是工程量,依赖标距长度,5d 和 10d 试样测出来的数不一样。它不是韧性损伤要的等效塑性断裂应变(后者依赖应力三轴度)。

把延伸率填进 fractureStrain 会得到一个能跑完、但失效位置和失效载荷都错的模型。没有真实的三轴度-断裂应变数据,就不要写 damage 块 —— 缺这块只是不做失效判断,填错了则整个分析结论是错的。

5.7 超弹性 hyperelastic(1.3 起)

橡胶、密封圈、减振垫这类大变形材料。两条路:给已经拟合好的系数,或者直接给实测曲线让 Abaqus 自己拟合。

给系数

"hyperelastic": {"type": "MOONEY_RIVLIN",
                 "C10": 0.65, "C01": 0.16, "D1": 0.0}

列名固定的几种:NEO_HOOKE(C10, D1)、MOONEY_RIVLIN(C10, C01, D1)、YEOH(C10, C20, C30, D1, D2, D3)、ARRUDA_BOYCE(mu, lambdaM, D1)、VAN_DER_WAALS(mu, lambdaM, a, beta, D1)。type 不写时默认 OGDEN

OGDENPOLYNOMIALREDUCED_POLYNOMIAL 的列数随阶数 n 变,MARLOW 完全由实测数据定义 —— 这四种必须自己写 table,或者用下面的 testData。 两样都没有会直接报错。

给实测曲线

"hyperelastic": {"type": "OGDEN", "n": 3,
                 "testData": {
                   "uniaxial": [[0.0, 0.0], [1.2, 0.10], [2.4, 0.35]],
                   "biaxial":  [[0.0, 0.0], [1.8, 0.10]],
                   "planar":   [[0.0, 0.0], [1.5, 0.10]]
                 }}

四个可选子块:uniaxial / biaxial / planar [应力, 应变]volumetric[压力, 体积比]。 可以直接写成行的数组(上面这种),也可以写成 {"table": [...]}。四个一个都不给会报错。

这一块的系数故意不做范围检查

合格的 Ogden 拟合里 mualpha 为负是常事,D1 = 0 则是表示「按完全不可压缩处理」的标准写法 —— 和弹性模量里那个「明显是手误」的 0 不是一回事。 套用常规的正值规则会把正确数据挡在外面,那比放过一个手误更糟。

5.8 蠕变 creep(1.3 起)

高温长期承载下累积的非弹性应变。

"creep": {"law": "TIME", "A": 3.2e-14, "n": 4.5, "m": -0.3}

law 可选 STRAIN(应变硬化,默认)、TIME(时间硬化)—— 两者都是 A, n, m 三个数;HYPERBOLIC_SINEA, B, n, deltaH, R 五个数。 用其它律就得自己写 table,否则报错。

两件事容易忽略

首列系数 A 不能是 0。0 的意思是「不蠕变」,那应该直接不写 creep 块,而不是写一个恒为零的蠕变律 —— 插件按录入错误处理,直接报错。

蠕变块只有配合弹性块才有意义,幂律形式通常还要配合塑性块。 这一条插件不重复检查:Abaqus 求解时会自己报,而且会指名是哪个材料。

5.9 阻尼 damping(1.3 起)

"damping": {"alpha": 12.5, "beta": 0.0}

四个因子都可选,但至少要给一个alpha(Rayleigh 质量阻尼)、beta(Rayleigh 刚度阻尼)、compositestructural。 都是单个数,不支持温度相关

0 在这里是有意义的值 —— 上面那行 "beta": 0.0 表示「只对质量加阻尼、 不对刚度加」,所以「没写」和「写 0」是两回事,插件按键是否存在来区分。负值会报错。

5.10 温度相关(任何属性都支持)

把该属性写成 table,并在每行末尾多加一列温度,插件会自动打开 temperatureDependency

"density": {"table": [[7.85e-9,  20],
                      [7.78e-9, 400]]},

"elastic": {"table": [[210000, 0.30,  20],
                      [201000, 0.31, 200],
                      [186000, 0.32, 400]]},

"thermal": {"conductivity": {"table": [[48,  20],
                                       [45, 200],
                                       [39, 400]]}}

温度相关的硬化曲线:按温度分组,每组内部塑性应变从 0 开始递增:

"plastic": {"table": [[355, 0.00,  20],
                      [480, 0.05,  20],
                      [280, 0.00, 400],
                      [390, 0.05, 400]]}

温度必须递增排列。也可以用 "temperatureDependency": true/false 显式指定。

5.11 一个完整的材料

{"materials": [{
  "name": "Steel_45_Normalized",
  "description": "45 normalized, bar d25, tonne-mm-s, degC",
  "density": 7.85e-9,
  "elastic": {"youngsModulus": 210000, "poissonsRatio": 0.3},
  "plastic": {"table": [[355, 0.000], [420, 0.020],
                        [480, 0.050], [540, 0.120]]},
  "thermal": {"conductivity": 48,
              "specificHeat": 4.8e8,
              "expansion": {"alpha": 1.16e-5, "zeroTemperature": 20}}
}]}

安装包里的 materialImporter/materials_sample.json 就是一份可以直接导入的样例,先拿它跑一遍流程最省事。

5.12 混凝土按标号生成 grade(1.4.1 起)

混凝土不用自己敲曲线,写一个标号就行 —— 插件按 GB 50010-2010(2015 版)附录 C 展开成密度、弹性和整套 CDP 曲线:

{"name": "C30_GB50010", "grade": "C30"}

支持 C15C80 共 14 个等级(每 5 MPa 一档)。安装包里附了 materialImporter/materials_concrete_gb50010.json,14 个等级都在里面,可以直接导入。

覆盖生成结果

同一个材料里你自己写的键优先,生成器只补你没写的。 五个 CDP 塑性标量(默认 dilationAngle 30、eccentricity 0.1、fb0fc0 1.16、K 0.6667、viscosityParameter 0.0005)单独写哪个就改哪个:

{"name": "C30_soft", "grade": "C30",
 "concreteDamagedPlasticity": {"dilationAngle": 36,
                               "viscosityParameter": 0.001}}

1.4 的用户请升级

这个覆盖写法在 1.4 里是不起作用的:生成器当时把用户的整个 spec 丢掉了。 更要紧的是 1.4 把 CDP 块认成 concrete 而不是 concreteDamagedPlasticityGB 50010 那批材料会全部当成纯弹性材料导进去、曲线被静默忽略。 1.4.1 才修好。

不用标号,自己写整块

concreteDamagedPlasticity 也可以脱离 grade 单独用。五个塑性标量必须齐全, 另有四张可选子表:compressionHardening[屈服应力, 非弹性应变])、tensionStiffening[屈服应力, 开裂应变])、compressionDamage[损伤因子, 非弹性应变])、tensionDamage[损伤因子, 开裂应变])。 两张损伤子表还支持 tensionRecovery / compressionRecovery

5.13 复合材料与各向异性弹性(1.4.1 起)

elastictype 加显式 table。两个子类配的 Section 不一样,别拿错:

type常数个数与顺序配什么 Section
LAMINAE1, E2, Nu12, G12, G13, G23(6)Composite Shell Section,逐层给角度
ENGINEERING_CONSTANTSE1, E2, E3, Nu12, Nu13, Nu23, G12, G13, G23(9)实体单元 Section
ORTHOTROPIC / ANISOTROPIC刚度矩阵分量,9 / 21 个按 Abaqus 该类型的规定排列
"elastic": {"type": "LAMINA",
            "table": [[181000, 10300, 0.28, 7170, 7170, 4000]]}

(这一行是格式示意,不是可以直接拿去用的材料数据 —— 复合材料的常数随纤维体积含量、 铺层工艺、树脂批次变化很大,请用你自己的材料数据表。)

温度相关时每行末尾加一列温度,个数从 6 变 7、从 9 变 10,插件按个数自动识别。

Nu12 不是手册上那个小数字

Abaqus 要的是 Nu12 = −ε₂/ε₁,也就是沿纤维方向拉伸时的横向收缩比, 典型值 0.25~0.35。而不少手册给的是 Nu21,典型值只有 0.01~0.03。两者的关系是 Nu21 = Nu12 × E2/E1

填错了插件和 Abaqus 都不会报错,只是横向偏软,要到结果对不上才发现。 看到一个远小于 0.1 的泊松比配上 E1/E2 相差好几倍,先怀疑它其实是 Nu21。

刚度矩阵必须正定,否则报错的位置离原因很远

常数不满足正定条件时,材料能导入成功,要到建 Section 时才报 material is not positive definite —— 那时候你多半不会想到是材料表里的某个数。导入前自己核一遍:

E1, E2, E3, G12, G13, G23 > 0
|Nu12| < sqrt(E1/E2)
|Nu13| < sqrt(E1/E3)
|Nu23| < sqrt(E2/E3)
1 − Nu12·Nu21 − Nu23·Nu32 − Nu31·Nu13 − 2·Nu21·Nu32·Nu13 > 0
    其中 Nu21 = Nu12·E2/E1, Nu31 = Nu13·E3/E1, Nu32 = Nu23·E3/E2

LAMINA 只需要 E1, E2, G12, G13, G23 > 0|Nu12| < sqrt(E1/E2)

这两类必须用 1.4.1 或更高

1.4 的各向异性弹性把 temperatureDependency 恒置为真,最后一个弹性常数会被当成温度读掉 —— 一个 6 常数的 LAMINA 变成 5 常数加一个 4000 度的温度点。1.4.1 修好了,并且加了常数个数校验:个数不对直接报错,而不是错位读下去。

06单位对照表

插件用的是 tonne-mm-s 单位制(也就是 mm 制,应力单位为 MPa)。在线库的数据由服务端换算好;自己写 JSON 时需要自己换算,对照下表。

物理量插件里的单位手册常用单位换算
长度mmm×1000
NN×1
应力 / 模量MPaGPa×1000
密度t/mm³kg/m³×1e-12
能量mJJ×1000
热导率mW/(mm·K)W/(m·K)×1(数值相同)
比热mJ/(t·K)J/(kg·K)×1e6
热膨胀系数1/°C10⁻⁶/K×1e-6
温度°C(摄氏度)°C×1
应变无量纲小数%÷100

几个常见值,可以用来自查:

  • 钢:密度 7.85e-9,E 210000,ν 0.3
  • 铝:密度 2.7e-9,E 70000,ν 0.33
  • 钢的比热 480 J/(kg·K) → 4.8e8

自查窍门

密度那一栏如果不是 e-9 这个量级,就一定错了。金属的密度在 mm 制下都是 1e-9 ~ 2e-8 之间。

07中文界面设置

插件界面已经中文化,但 Abaqus 默认会把非 ASCII 字符显示成 ?。这不是字体问题,是 Abaqus 的语言配置里缺一行别名。

不做这一步也没关系 —— 插件会检测到并自动回落到英文界面,功能完全不受影响,不会出现一屏问号。

怎么开中文

编辑 Abaqus 安装目录下的语言配置文件:

<Abaqus 安装目录>\SMA\Configuration\locale.txt

[Alias] 段里加一行:

[Alias]
Chinese (Simplified)_China.936 = zh_CN

保存后重启 CAE,插件界面即为中文。

两点说明

1. 这一步只影响插件界面。[Default] 段里的 zh_CN 保持 0 不要改 —— 改了会把整个 CAE 切成中文,而 CAE 的中文翻译覆盖并不完整,反而更难用。

2. 改前请备份 locale.txt。这是 Abaqus 的安装文件,不是插件的文件,插件不会自动去改客户的 Abaqus。

08报错原因对照表

带着一个具体现象来的,直接在这张表里 Ctrl+F 找关键词。左列是你看到的,右列是原因和处理。

表里几条最常撞上的塑性报错(第一行不为 0、应变不递增、各行列数不一致), 原因和改法在塑性表三类报错里逐条展开;单位换算相关的几条见Abaqus 单位制与换算。全部实战文章在这里

看到的现象原因与处理
菜单里没有「材料库」目录层级错了,见第 01 节的提示框。materialImporter_plugin.py 必须正好在 <插件目录>\materialImporter\ 下。
界面全是 ? 或方框locale.txt[Alias] 行,见第 07 节。不是字体问题,装字体没有用。
请先激活插件:在 engstudy.top 页签填入手机号…本机从未激活过。按第 02 节激活一次即可,之后本地导入可以离线用。
授权已过期,导入已停止。请到 engstudy.top 页签重新激活以续期…授权超过 30 天没有联网续期(通常是长期没打开过插件)。 1.2.1 起在线库和本地 JSON 导入都会停。到 engstudy.top 页签重新激活一次即可恢复, 需要会员在有效期内;你的 JSON 文件、模型里已建好的材料、本机激活记录都没有被删,重新激活也不占新席位
engstudy.top 在线材料库需要 Abaqus 2023 或更高版本当前 Abaqus 自带 Python 2.7,联网模块无法运行。请用本地 JSON(第 05 节),功能一个不少。
提示需要会员手机号验证通过了但没有有效会员。点页签上的 开通会员 按钮,或直接开 会员页注意:服务器只能在验证码校验之后才知道会员状态,所以建议先确认会员再发验证码。
提示设备数已达上限,并列出设备授权按设备绑定,席位用满了。列表里有每台设备的最后使用时间,选一台释放即可。超过 30 天未使用的设备会自动释放。
提示稍后再试 / 倒计时验证码发送太频繁。等倒计时结束再点,插件不会自动重发(短信是真金白银,不做自动重试)。
xxx 不是合法的 JSON:…JSON 语法错。最常见的是多余的逗号(最后一项后面不能有逗号)和中文标点(全角引号、全角逗号)。把文件粘到 JSON 校验工具 里一眼就能看到位置。
plastic: needs a "table" of [yieldStress, plasticStrain] rows塑性块没给表格。多点硬化曲线必须用 table,不能只给一个屈服强度标量。
plastic: 第一行塑性应变必须为 0 / 应变必须递增见 5.4 的三条硬性要求。温度相关时是每个温度分组内部从 0 开始递增。
elastic: 泊松比超出范围必须严格落在 −1 和 0.5 之间。填 0.5 也不行(不可压缩,该用超弹或杂交单元)。
all rows must have the same length表格里某一行少写或多写了一个数。常见于加了温度列但漏了某一行。
模态频率或波速差很多先查密度。mm 制下金属密度是 e-9 量级,填了 7850 会差 10¹² 倍,而 Abaqus 不会报错。见第 06 节。
承载明显偏低、塑性区偏大两个可能:(1)用的是在线库的室温标量,塑性是理想弹塑性(第 04 节);(2)硬化曲线填的是工程应力应变而不是真应力(5.4)。
凭空出现热应力zeroTemperature 和初始温度场的单位不一致。两边都必须是摄氏度,见 5.5。
某个材料的某块没建立这是正常行为,不是 bug。看消息区 —— 它会逐条说明哪块没建、为什么。 缺数据时插件不会补 0。
点了导入,什么都没弹出来1.2 起就是这样设计的,导入结果不再弹窗。看 CAE 下方消息区,见第 03 节。1.1 及更早会弹一个汇总框。
菜单里出现两个「材料库」装了两份。install.bat 装到用户目录,但手工复制到 plugin_central_dir 的那份还在。1.2.1 起 install.bat 会把这些旧副本列出来问你要不要删; 手动处理见第 01 节的升级提示框。
WARNING xxx: this release does not build plastics, so the material was created without itJSON 里有插件不认识的键。最常见的原因是键名拼错了 —— 上面这行里的 plastics 就是 plastic 多打了一个 s,硬化曲线整块被当成陌生键跳过, 材料以「只有弹性」导入,看起来完全成功,CAE 建材料时也不报错,要到模型怎么加载都不屈服才发现。先照 5.1 的键名表核一遍。 另一种原因是这份 JSON 是给更新的插件版本写的,本版还没有那个本构块。材料照样建好了,只是少了这一块,求解前务必看一眼消息区 —— 一块只剩密度的橡胶不会报任何错,直到结果不对才发现「有质量、没刚度」。 1.2.1 起这种情况会明确写出来,1.2 及更早是悄悄跳过的。
模型里出现名叫 zzMaterialImporterScratch0 的材料那是导入时的临时名。勾了「覆盖已存在的同名材料」时,1.2.1 起会先把新材料建在临时名下, 确认无误才改名换上去 —— 这样替换失败也不会毁掉原有材料(1.2 及更早是先删后建,JSON 里一个手误就会让你丢掉模型里已经调好的那份)。 如果你看到它留着,说明那一次导入失败了,而模型里原来那份是完好的;直接删掉这个临时材料即可。
CAE 闪退 / SEGMENTATION FAULT in ABQcaeG / ipc_TOO_LITTLE_SENT / WSAENOTSOCK这是 1.1 的已知缺陷,1.2 已经修好。先说结论:材料其实已经成功建好了 —— 重开 CAE 打开那个 .cae 文件,材料都在,不用重做。原因是 1.1 在导入完成时弹的那个汇总框,开在了 Abaqus 的提交事务内部; 模态框会开启嵌套事件循环,而提交事务不可重入,退栈时就崩了。1.2 把汇总改成输出到消息区,不再弹框。 升级直接跑 install.bat 覆盖即可,激活记录不会丢,同时按第 01 节确认没有残留的旧副本。
elastic: type LAMINA needs 6 values per row, or 7 with a trailing temperature column, got 5各向异性弹性的常数个数不对。每种 type 的个数是固定的:LAMINA 6、ENGINEERING_CONSTANTS 9、ORTHOTROPIC 9、ANISOTROPIC 21,顺序见 5.13。温度相关时每行末尾多一列温度。这个校验是 1.4.1 才加的 —— 1.4 不查个数,少写一个常数不报错, 而是把最后一个常数当成温度读掉,算出来的结果是错的。碰到这条报错说明你已经在安全的版本上了,补齐个数即可。 (如果你在 JSON 里显式写了 temperatureDependency,个数不符时报的是另一句,形如 with temperatureDependency true needs 7 values per row (6 constants plus a temperature), got 6。)
elastic and hyperelastic are two alternatives for the same property -- a material cannot carry both; drop whichever does not apply同一个材料里同时写了 elastichyperelastic。两者是描述同一件事的两种方式, Abaqus 建材料时两个都收,矛盾要到求解时才暴露, 而且那条消息不会提材料名 —— 所以插件在导入前就拦掉。橡胶类用 hyperelastic(5.7), 金属类用 elastic,删掉不适用的那个。
hyperelastic: type OGDEN needs either an explicit "table" of coefficients or a "testData" blockOGDENPOLYNOMIALREDUCED_POLYNOMIAL 的系数个数随阶数 n 变,MARLOW 完全由实测数据定义 —— 这四种插件没法替你排列,必须自己写 table, 或者给一个 testData 块让 Abaqus 自己拟合。见 5.7。 列名固定的那五种(NEO_HOOKE 等)直接写系数键名就行。
creep: law POWER_LAW needs an explicit "table"只有三种蠕变律有固定列名:STRAINTIMEA, n, mHYPERBOLIC_SINEA, B, n, deltaH, R。用别的律就得自己写 table,见 5.8。
damping: needs at least one of alpha, beta, composite, structuraldamping 块是空的,或者里面的键都拼错了。四个因子至少给一个,见 5.9。 另外负值会报错damping.beta: must not be negative), 但 0 是合法且有意义的 —— "beta": 0.0 表示只对质量加阻尼、不对刚度加。
creep: A must be positive, got 0蠕变律的首列系数是速率系数,填 0 等于「不蠕变」。 真不需要蠕变就整块删掉 creep,而不是写一个恒为零的蠕变律 —— 插件按录入错误处理。见 5.8。

09授权与设备管理

项目说明
激活方式手机号 + 短信验证码,需有效会员。没有账号密码
有效期30 天,到期前 7 天打开插件时自动续期,不需要再收短信
离线使用授权在有效期内,本地 JSON 导入不需要联网。在线库需要联网。过期后两条路都停,见下方说明
设备绑定按设备绑定,有席位上限。超限时会列出已绑定设备及各自最后使用时间,由你选择释放哪一台
自动释放超过 30 天未使用的设备自动释放席位,所以换电脑、重装系统不会把自己锁在门外
主动释放插件里可以主动释放本机席位(换机前建议先释放)
服务器故障服务器出问题时本地授权不会被删除,故障期间照常可用。这是刻意的设计

1.2.1 起:授权过期后,两条导入路径都会停

在线材料库和你自己的本地 JSON 导入,都需要授权在有效期内。过期后点「导入」会被拦下,并提示去 engstudy.top 页签重新激活。

你的数据一个字节都不会少:过期不删你的 JSON 文件、不删已经建进 .cae 模型里的材料、也不删本机激活记录。 重新激活不占新席位,续期后立刻恢复。

1.2 及更早的行为不同:那时过期只影响在线库,本地 JSON 仍可导入。如果你按那个说法安排过工作, 请注意这一条变了。

长期离线的用户请注意:授权有效期 30 天,剩 7 天以内联网使用会自动续期。出差、进隔离内网超过一个月之前, 先联网打开一次插件把有效期续上;否则回来时要先联网重新激活才能继续导入。

授权在有效期内时,本地 JSON 的导入是纯本地的 —— 不需要联网,文件不会被上传,插件也不会改动它。 授权状态以插件里 engstudy.top 页签的提示为准。

已绑定的设备可以在网站的 插件席位管理 里查看。

10隐私与本地数据

插件在本机只写两个文件,都在 %LOCALAPPDATA% 下的插件目录里:

文件内容
install.json一个随机安装标识,用于生成设备指纹
license.json授权令牌、到期时间
update.json上次检查更新的时间、服务器返回的版本与公告、你关掉过哪条公告(1.5.0 起)
  • 不保存手机号
  • 不保存验证码
  • 不保存密码(本来就没有密码)
  • 令牌不会写进 Abaqus 工作目录,也不会出现在 abaqus.rpy 里 —— 登录和下载都在 GUI 进程内完成,交给内核的只有一个临时 JSON 文件的路径
  • 发送给服务器的设备信息:设备指纹(一串哈希)、插件版本、机器名(用于你在网站上分辨自己的设备列表)

卸载:双击插件包里的 uninstall.bat,它删掉 %USERPROFILE%\abaqus_plugins\materialImporter;手工删这个文件夹是一样的效果。 uninstall.bat 不动本地授权文件 —— 想同时清掉授权,把上面那两个文件也删掉。换机器前建议先在插件里释放本机席位,比等 30 天自动释放快。

11更新提醒与公告(1.5.0 起)

插件会检查本站有没有发布新版本,并显示网站公告。它不会自己下载或替换任何文件:发现新版本时只提示一句,并可以帮你打开下载页,装不装由你决定。

为什么不做自动更新

Abaqus 插件无论如何都要完全重启 CAE 才能生效,自动替换换不来任何方便; 但它会开一个「服务器说下什么、本机就执行什么」的远程执行入口。这笔交换不划算,所以不做。

它什么时候联网,发送什么

  • 最多每 24 小时一次;在插件里手动点检查不受这个限制
  • 这个请求不带授权令牌,只带设备指纹和插件版本
  • 失败一律静默,不弹窗、不影响导入。失败时也不记时间戳 —— 服务器故障一天,不应该换来插件安静一整天

状态怎么读

插件里的更新状态有三种说法,别把后两种看混:

  • 有新版本 —— 附版本号和更新说明
  • 已是最新 —— 后面会附上检查日期,说明确实连上过服务器
  • 尚未检查更新 —— 从来没成功连上过(全新安装、或者一直没联网)。 这不等于「已是最新」

公告

网站可以推一条公告。公告可以关掉,关掉之后同一条不再出现 —— 按公告编号记住,换了新公告还会显示。

服务器可以标记最低支持版本

本站可以声明一个最低支持版本,低于它的插件导入会被拦下。这是为了把已知会算错的版本挡在门外(比如 1.4 会把复合材料的最后一个弹性常数当温度读掉), 不是防破解的锁 —— 它读的是你自己目录下的缓存文件。

服务器没设置、读不到、或者版本号填错时一律放行。 后台一个笔误不应该能一次锁死全部用户。

插件版本 1.5.0。文档中标注的校验规则与报错文案,均对应插件当前实际行为。