4. 子模型边界驱动数据提取

子模型法能否成立,关键不在局部网格画得多细,而在于全局模型是否把正确的边界驱动量传递给了局部模型。子模型边界上的位移、转角、温度等量,本质上来自全局解在切割面(或切割线、切割点)上的插值结果。因此本节要解决三个问题:全局模型该输出什么、怎么设置场输出、结果文件如何组织与复用。

一、驱动量的物理含义与提取对象

子模型边界条件分为位移驱动与温度驱动两大类。位移驱动用于结构静力/动力子模型,边界上需要的是全局解在切割面上的位移矢量;若子模型采用壳或梁单元,还需转角。温度驱动用于热-力耦合或纯热子模型,边界上需要的是节点温度;若做热应力子模型,则温度场与位移场需分别驱动。

在 Abaqus 中,子模型边界驱动通过 *SUBMODEL 与 *BOUNDARY, SUBMODEL 或 *TEMPERATURE, SUBMODEL 实现,其数据来源是全局分析的 .odb 结果文件。Abaqus 会在子模型求解时,自动从全局 odb 中按切割面几何位置插值出边界节点上的驱动值。因此,全局模型必须在切割面附近有足够密的网格和完整的场输出,否则插值精度会直接决定子模型的可信度。

二、全局模型的场输出设置

全局分析不需要输出全部积分点结果,但必须保证切割面区域有连续、可插值的节点场。推荐做法是:在全局模型的 Step 中定义 FIELD OUTPUT,勾选 U(位移)与 NT(节点温度,若做热分析),输出频率设为 Every n increments 或 Last increment,具体取决于子模型要对应哪个时刻。若子模型只关心最终状态,输出最后一帧即可;若关心加载过程,则需按增量输出多帧。

一个常见的误区是只输出 S(应力)而忽略 U。子模型边界驱动依赖的是位移/温度场,应力场不参与边界插值。因此全局 odb 中必须包含 U,热分析必须包含 NT。若全局模型使用了节点集或面集,建议在切割面附近建立命名集合,便于后续在子模型中核对边界区域。

若全局模型规模很大,可只对切割面附近的单元集合设置场输出请求,减少 odb 体积,但切割面必须完整覆盖,不能有缺口。

三、结果文件管理与子模型引用

子模型 INP 中通过 *SUBMODEL 指定全局 odb 路径与全局分析步名称,例如:

*SUBMODEL, GLOBAL ELSET=ALL, GLOBAL STEP=1
*BOUNDARY, SUBMODEL
CUT-FACE, 1, 3
*TEMPERATURE, SUBMODEL
CUT-FACE, 11, 11

其中 GLOBAL STEP 对应全局分析步编号,CUT-FACE 是子模型边界节点集。Abaqus 会在求解时读取全局 odb,按节点坐标插值出边界值。若全局 odb 被移动或重命名,子模型会报错找不到驱动文件,因此建议将全局 odb 与子模型 INP 放在同一工作目录,或在 *SUBMODEL 中写绝对路径。

结果文件管理上,建议按“全局-子模型”成对命名,例如 global_v1.odb 与 submodel_v1.inp,并在子模型目录中保留一份全局 odb 的副本或软链接。若需多次迭代子模型,只需替换子模型 INP,全局 odb 可复用,避免重复计算全局模型。

四、驱动量提取的验证与常见问题

子模型求解完成后,应检查边界驱动是否合理。最直接的方法是:在子模型 odb 中查看边界节点上的位移/温度,与全局 odb 中同一位置的插值结果对比,二者应基本一致。若差异明显,通常有三个原因:全局网格在切割面附近过粗、全局 odb 缺少对应分析步的 U/NT 输出、或子模型边界节点集与全局切割面几何不匹配。

另一个常见问题是时间/增量对应错误。子模型默认读取全局分析步的最后一帧,若子模型需要中间时刻,必须在 *SUBMODEL 中通过 GLOBAL STEP 与 GLOBAL INCREMENT 指定,或使用 *STEP 中的 SUBMODEL 参数控制。否则子模型边界驱动会与预期时刻不符,导致结果失真。

子模型边界驱动数据提取与传递链 全局模型 粗网格 · 整体结构 Step: FIELD OUTPUT U / NT 输出请求 求解 全局结果文件 global.odb 位移场 U 温度场 NT 插值 子模型 局部细网格 · 切割面 *BOUNDARY, SUBMODEL *TEMPERATURE, SUBMODEL 切割面驱动量传递示意 全局模型切割面 节点位移 U / 温度 NT 插值 子模型边界节点 边界条件驱动 全局 odb 提供 U/NT → 子模型按切割面插值 → 边界节点获得驱动值

五、可复用的提取检查清单

为保证每次子模型分析都能顺利提取驱动量,建议在提交全局分析前核对以下条目:

检查项要求常见错误
场输出变量必须包含 U;热分析必须包含 NT只输出 S,子模型报错缺驱动
输出频率覆盖子模型所需时刻只输出 Last increment,无法取中间帧
切割面网格全局网格足够密,无缺口切割面附近网格过粗,插值失真
节点集命名切割面附近建立命名集合子模型边界节点集与全局几何不匹配
odb 路径子模型 INP 中路径正确odb 被移动或重命名,求解中断
分析步对应GLOBAL STEP 与全局分析步一致步号写错,读取错误时刻结果

完成上述设置后,子模型求解时 Abaqus 会自动完成插值与边界施加,用户无需手动导出节点数据。若需在外部工具中处理驱动量,也可通过 abaqus odbreport 或 Python 脚本 odbAccess 从全局 odb 中提取切割面节点位移/温度,再按子模型节点坐标插值写入 INP。这种方式适合需要自定义插值算法或批量处理多工况的场景。

子模型边界驱动依赖全局 odb 的完整性。若全局分析因收敛问题中断,odb 中可能缺少最后一帧的 U/NT,此时子模型会读取失败或使用不完整数据。建议在全局分析完成后先检查 odb 中切割面附近的结果帧是否完整,再提交子模型。

总结来说,子模型边界驱动数据提取的核心是“全局输出对、子模型引用对、切割面对”。全局模型负责在切割面附近输出连续、完整的位移/温度场;子模型通过 *SUBMODEL 引用全局 odb 并自动插值;结果文件按版本成对管理,确保可追溯、可复用。掌握这一链条后,子模型分析才能真正发挥局部精细化的价值。