01安装
- 1
下载并解压插件包
MaterialImporter-1.5.0.zip,解压到任意临时目录。里面有install.bat、uninstall.bat、README.txt、help.html(就是本文档的离线版)和一个materialImporter文件夹。 - 2
双击 install.bat
它会把materialImporter复制到%USERPROFILE%\abaqus_plugins\materialImporter,也就是你的用户目录下,形如C:\Users\你的用户名\abaqus_plugins\materialImporter。这是 Abaqus 默认会扫描的个人插件目录,不需要管理员权限,也不用去改 Abaqus 安装目录。脚本会顺手清掉上一版残留的__pycache__,屏幕上打印复制了哪些文件。 - 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
确认会员状态
激活需要有效会员。页签顶部有一个开通会员按钮,会打开网站的 会员页。建议先确认会员再发验证码 —— 服务器要在验证码校验之后才能知道你的会员状态,非会员的话那条短信就白花了。 - 2
填手机号 → 点「发送验证码」
验证码 5 分钟内有效。 - 3
填验证码 → 点「激活」
成功后页签上会显示授权状态和到期时间。
激活之后基本不用再管
授权保存在本机,有效期 30 天,插件会在到期前 7 天自动续期(打开插件时静默完成,不需要再收短信)。只要你保持联网使用,就不会遇到过期。
要留意的只有一种情况:连续一个月以上不联网使用。 授权过期后在线库和本地 JSON 导入都会停(见第 09 节),所以长期出差、进隔离内网之前, 先联网打开一次插件把有效期续上。
Abaqus 2022 及更早的版本
这些版本自带 Python 2.7,插件的联网模块无法运行,没有激活途径。因此从未激活过的机器在这些版本上不设门槛,本地 JSON 导入直接可用, 在线材料库页签不会出现 —— 把人挡在门外、同时又不给他开门的办法,我们没有采用。 但已经激活过、后来过期的机器在这里同样会被拦:那条记录只可能来自同一台机器上 更新的 Abaqus,续期的路是通的;只在某些启动方式里认过期,等于把「开旧版本」写成一条明路。
03界面说明
Plug-ins → 材料库 → 导入材料... 打开对话框。上半部分是两个页签:
| 页签 | 用途 |
|---|---|
engstudy.top | 激活、续期,以及从在线材料库拉取材料。Abaqus 2023+ 才有 |
本地 JSON 文件 | 选择一个 JSON 材料库文件并读取。所有版本都有 |

本地 JSON 文件 页签)。从上到下三段:页签区、要导入的材料 列表、导入目标。列表右上角的 全选 / 清空 用来批量勾选。
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): ...紧跟在后面的是网站对缺失属性的逐条说明 —— 哪个材料的哪个本构块没有建立、为什么没有。这些句子是网站原文,插件不改写、不过滤、不去重。
放在消息区而不是弹窗,有两个实际好处:几十种材料的说明可以往上滚着看,而且能直接选中复制。导入完后请往下看一眼消息区,尤其是当你导入的材料要用于强度分析时 —— 见下面这条。

--- Material Importer -> model ... --- 这一行之后就是 created / skipped / failed 的名单。这块区域在 CAE 窗口下方,可以拖高、可以滚动、可以选中复制。缺弹性属性的材料,导入后是「热学专用」的
Abaqus 的各向同性 *ELASTIC 必须同时有弹性模量和泊松比,缺一个插件就不建这个块(不猜、不补 0)。 这种材料只有密度和热学属性,拿去做任何应力分析都会在求解阶段报错。消息区会写明是哪些材料,别跳过。
04从在线材料库导入
- 1
切到 engstudy.top 页签
确认状态显示已激活。 - 2
点「获取材料列表」
拉取当前可用的材料。 - 3
在列表里勾选
可以多选,也可以全选。 - 4
点「导入」
材料出现在模型树的 Materials 节点下。

获取材料列表,在线库的材料就读进下方 要导入的材料 列表;列表上方那行状态文字会写读到了多少种。关于在线库的数据范围,说清楚一点
在线库目前提供的是室温标量 —— 密度、弹性模量、泊松比、屈服强度、抗拉强度、热导率、比热、热膨胀系数。完整清单见 材料参数库。
因此导入后的塑性是理想弹塑性:屈服之后应力不再上升,承载能力偏保守,塑性应变偏大。做压溃、冲压成形、极限承载、螺栓过载这类分析时,请用第 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"。
三条硬性要求,不满足会报错
- 第一行的塑性应变必须是 0,这一行的应力就是屈服强度
- 应力必须 > 0
- 塑性应变必须严格递增
另外:应变是无量纲小数,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}
}三个子块都可以直接写一个数。conductivity 和 expansion 支持 type(默认 ISOTROPIC)。
zeroTemperature 是最容易出事的一个参数
它是热膨胀的参考温度(对应 *EXPANSION, ZERO=),单位是摄氏度。Abaqus 没有单位制概念,这里就是一个裸数字。
如果你把它当成开尔文、又把初始温度场设成 293,就会凭空多出 273 度的温差和一堆假的热应力,而且不会有任何警告 —— 你只会看到一个「热应力怎么这么大」的结果, 却没有任何线索指向这个参数。
(膨胀系数 α 本身不受影响:1/K 和 1/°C 数值相同,因为两者都是「每温度区间」。会错的只有参考点,所以这个坑特别容易漏。)
5.6 损伤与失效 damage
四种损伤起始准则,每种都可以带一个 evolution:
| 子块 | 列(按顺序) |
|---|---|
ductile | fractureStrain, stressTriaxiality, strainRate |
shear | fractureStrain, shearStressRatio, strainRate(另可加 ks) |
johnsonCook | d1…d5, meltingTemperature, transitionTemperature, referenceStrainRate |
fld | minorStrain, 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}
}
}evolution 的 type 取 DISPLACEMENT(默认,用 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。
OGDEN、POLYNOMIAL、REDUCED_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 拟合里 mu 或 alpha 为负是常事,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_SINE 是 A, 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 刚度阻尼)、composite、structural。 都是单个数,不支持温度相关。
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"}支持 C15 到 C80 共 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 而不是 concreteDamagedPlasticity,GB 50010 那批材料会全部当成纯弹性材料导进去、曲线被静默忽略。 1.4.1 才修好。
不用标号,自己写整块
concreteDamagedPlasticity 也可以脱离 grade 单独用。五个塑性标量必须齐全, 另有四张可选子表:compressionHardening([屈服应力, 非弹性应变])、tensionStiffening([屈服应力, 开裂应变])、compressionDamage([损伤因子, 非弹性应变])、tensionDamage([损伤因子, 开裂应变])。 两张损伤子表还支持 tensionRecovery / compressionRecovery。
5.13 复合材料与各向异性弹性(1.4.1 起)
用 elastic 的 type 加显式 table。两个子类配的 Section 不一样,别拿错:
| type | 常数个数与顺序 | 配什么 Section |
|---|---|---|
LAMINA | E1, E2, Nu12, G12, G13, G23(6) | Composite Shell Section,逐层给角度 |
ENGINEERING_CONSTANTS | E1, 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/E2LAMINA 只需要 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 时需要自己换算,对照下表。
| 物理量 | 插件里的单位 | 手册常用单位 | 换算 |
|---|---|---|---|
| 长度 | mm | m | ×1000 |
| 力 | N | N | ×1 |
| 应力 / 模量 | MPa | GPa | ×1000 |
| 密度 | t/mm³ | kg/m³ | ×1e-12 |
| 能量 | mJ | J | ×1000 |
| 热导率 | mW/(mm·K) | W/(m·K) | ×1(数值相同) |
| 比热 | mJ/(t·K) | J/(kg·K) | ×1e6 |
| 热膨胀系数 | 1/°C | 10⁻⁶/K | ×1e-6 |
| 温度 | °C(摄氏度) | °C | ×1 |
| 应变 | 无量纲小数 | % | ÷100 |
几个常见值,可以用来自查:
- 钢:密度
7.85e-9,E210000,ν0.3 - 铝:密度
2.7e-9,E70000,ν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 it | JSON 里有插件不认识的键。最常见的原因是键名拼错了 —— 上面这行里的 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 | 同一个材料里同时写了 elastic 和 hyperelastic。两者是描述同一件事的两种方式, Abaqus 建材料时两个都收,矛盾要到求解时才暴露, 而且那条消息不会提材料名 —— 所以插件在导入前就拦掉。橡胶类用 hyperelastic(5.7), 金属类用 elastic,删掉不适用的那个。 |
| hyperelastic: type OGDEN needs either an explicit "table" of coefficients or a "testData" block | OGDEN、POLYNOMIAL、REDUCED_POLYNOMIAL 的系数个数随阶数 n 变,MARLOW 完全由实测数据定义 —— 这四种插件没法替你排列,必须自己写 table, 或者给一个 testData 块让 Abaqus 自己拟合。见 5.7。 列名固定的那五种(NEO_HOOKE 等)直接写系数键名就行。 |
| creep: law POWER_LAW needs an explicit "table" | 只有三种蠕变律有固定列名:STRAIN 和 TIME 是 A, n, m,HYPERBOLIC_SINE 是 A, B, n, deltaH, R。用别的律就得自己写 table,见 5.8。 |
| damping: needs at least one of alpha, beta, composite, structural | damping 块是空的,或者里面的键都拼错了。四个因子至少给一个,见 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。文档中标注的校验规则与报错文案,均对应插件当前实际行为。