FEM / CAE — 结构 · 热 · CFD · 多物理场
此技能治理工程声明 — 它不驱动求解器或批准设计。 它与求解器驱动 / MCP(PyMAPDL、PyMechanical、Abaqus / OpenFOAM 驱动、OASiS、CAE MCP)配对,后者执行;此技能决定结果是否可以被断言、在什么可靠级别,以及何时必须由人类决定。
概述
治理全程有限元与 CAE 分析。与执行器配对(PyMAPDL、PyMechanical、PyFluent、Abaqus/OpenFOAM 驱动、CAE MCP — 见下方“治理层,非执行器”) 执行器定位已安装的求解器、构建脚本/命令流、并启动无头/批处理;此技能指导和审计理想化、读取日志以检查收敛、检查/解析结果,并在每次运行中强制实施专业实践(理想化 → 网格划分 → 连接 → 求解控制 → 收敛 → 网格无关性 → V&V)。方法论与求解器无关;此处深究适用于 Ansys / Simcenter / Thermal Desktop,广度覆盖 Abaqus、LS-DYNA、MSC/Simcenter Nastran、COMSOL、OpenFOAM、Fluent、CFX、STAR-CCM+、CalculiX、Code_Aster(见 references/software-landscape.md)。
核心原则(作为门控强制实施):
- 除非其离散化(网格/时间步)误差已被处理(在 ENGINEERING 级别限定并说明,例如最后一级细化的 QoI 变化,或单网格 ZZ/SPR 估计),或在 SIGNOFF 级别通过渐近范围内的 GCI 研究充分证明,否则任何结果都不被信任;未经任何误差说明而报告的单网格数值永远不是结果。外加下方的收敛检查。
- 收敛关注量 (QoI),而非峰值 — 尖角、点载荷、裂纹尖端的峰值是永不收敛的奇异点。
- 大多数误差源于前处理(理想化、边界条件、连接)— 将这些决策前置。
- 验证先于确认;校准 ≠ 确认 — 没有运行证据,代理不得声称获批。
此 SKILL.md 是路由器。 深度内容位于 references/ 中 — 仅当相关主题出现时才加载参考文件。
何时使用
- 结构(静力/模态/屈曲/非线性/显式)、热(稳态/瞬态/辐射)、CFD(RANS/LES、CHT)、电磁学(低/高频)、振动声学/NVH、多体 以及 耦合多物理场(热-力、FSI、电磁-热)。
- 失效与耐久性: 断裂 / 损伤容限、疲劳(包括振动/频谱)、复合材料、塑性 / 安定 / 棘轮效应、屈曲与稳定性、碰撞 / 冲击 / 跌落。
- 接触、热接触电阻、螺栓/焊接/刚性连接件;网格划分与网格无关性 (GCI);单元/求解器/单位选择。
- 无头/批处理求解与结果解析;优化、校准、逆参数识别 / 模型更新。
- V&V / UQ;子结构化 / ROM;低温 / 真空 / 航天器热。
- 决定代理可以自动化无头执行的内容 vs 必须由人类完成的内容(下一节)。
不适用于: 纯粹的 CAD 建模或更适合手算封闭解的问题。
★ 代理能力与无头-vs-人类契约
精确界定谁做什么。分类:AGENT-HEADLESS(完全可脚本化/批处理,无 GUI)· AGENT-VIA-API(Python/日志 API,需要会话 + 许可证)· HUMAN-GUI(必须至少交互一次)· HUMAN-JUDGMENT(代理不得单独做出的工程决策)· LICENSE-GATED。各平台完整细节:references/agent-automation-boundary.md。
| 操作 | 分类 | 如何 / 为什么 |
|---|---|---|
| CAD 导入 | AGENT-VIA-API | PyMAPDL/PyMechanical/run_journal 导入 STEP/Parasolid |
| 几何清理 / 大量特征抑制 | AGENT-VIA-API + HUMAN-JUDGMENT | 可脚本化的特征抑制/收缩;杂乱的修复 + 抑制什么 是判断 |
| 网格划分 | AGENT-HEADLESS (Ansys) · SEED-IN-GUI (NX) | PyMAPDL/PyMechanical 完全无头网格划分;NX .fem/.sim 模板在批处理中无法解析 → 在 GUI 中创建一次种子 |
| 材料创建/赋值 | AGENT-HEADLESS | 所有平台均可脚本化;提供随温度变化的数据 |
| 接触 / 连接 | AGENT-HEADLESS (构建) + HUMAN-JUDGMENT (类型) | 定义是可脚本化的;绑定 vs 摩擦 / RBE2 vs RBE3 是工程选择 |
| 边界条件与载荷 | AGENT-HEADLESS | 可脚本化;代理不得自行发明载荷工况 |
| 暴露优化参数 | AGENT-HEADLESS (PyMAPDL *SET) · HUMAN-GUI (Workbench P#、NX 表达式、HEEDS 标签) | 只有 PyMAPDL 对参数化是无 GUI 的 |
| 求解(稳态/瞬态/非线性) | AGENT-HEADLESS + LICENSE-GATED | ansys -b, nastran.exe, tmgnx, abaqus job=, fluent -g, OpenFOAM, cfx5solve -batch, starccm+ -batch |
| 电磁求解(电机/RF/涡流) | AGENT-VIA-API + LICENSE-GATED | PyAEDT (import ansys.aedt.core, non_graphical=True)、COMSOL/getDP 批处理;端口/激励/扫频是工程设置 |
| 优化 / DOE / 校准 | AGENT-HEADLESS (PyMAPDL+SciPy, optiSLang -b, HEEDS CLI) + GUI-AUTHOR-ONCE | 在 GUI 中创建一次研究/标签,然后无头运行 |
| 结果提取 | AGENT-HEADLESS | PyDPF, pyNastran (.op2/.f06), .odb, SINDA .out, CGNS/VTK |
| 后处理图像/绘图 | AGENT-HEADLESS | pyvista 离屏渲染, ParaView pvbatch |
| 关联 / 模型更新 (MAC, 节点配对) | HUMAN-GUI | 交互式测试↔分析节点配对是 GUI 工作 |
模板 / .sim / 项目创建 (NX) | HUMAN-GUI | 模板注册未在无头模式下初始化 → 预先创建种子,然后驱动它 |
| 许可 | LICENSE-GATED | 每个并行求解器实例消耗自己的席位 |
代理绝不可自动执行: 单独选择理想化 / 单元 / 接触类型 / 边界条件 (HUMAN-JUDGMENT) · 接受固定在物理边界上的校准旋钮 · 将奇异峰值或未收敛的结果报告为结果 · 宣称验证 / 网格无关性 / 批准而缺少运行证据 · 未经授权执行不可逆的推送/覆盖。
配对与执行器契约
此技能是治理层,而非执行器。 与任何驱动求解器的工具配对 (PyMAPDL, PyMechanical, Abaqus / OpenFOAM 驱动, OASiS, CAE MCP):执行器运行;此技能治理声明。 不相信没有来源的求解器输出 — 只有在执行器返回以下内容时,结果才是可信的:
- 运行清单 (
run_manifest.json,模板scripts/run_manifest_template.json) — 可追溯性主干 (NAFEMS R0033)。 - 求解器名称 + 确切版本 — 从检测到的安装的横幅/
-help中读取,绝不假设。 - 输入命令流哈希 + 结果文件哈希(例如
.inp/.dat/.cdb和.rst/.rth/.op2的 SHA-256)— 将数值与产生它的确切命令流和结果绑定。 - 命令 + 标志证据 — 实际的启动行,根据该版本验证的标志(版本对齐命令规则,步骤 0)。
- 隔离的工作空间 — 一个干净的工作目录;输出写入其中,从不覆盖先前的“最终”文件而不带有
superseded_by指针。
缺少此来源的结果最多是 SMOKE/DEBUG 伪影 — 按此措辞(references/claim-templates.md)。
执行模式(每项任务选择一种 — 设定强制门控与可声明的范围)
| 模式 | 使用时机 | 强制门控 | 绝不 |
|---|---|---|---|
| SMOKE | 证明环境/命令流/求解/解析能运行 | 步骤 0;求解完成;结果文件已写入且可读 | 声明任何工程数值;调整任何参数 |
| DEBUG | 查找故障原因 | 针对症状的一个决定性测试;如果是热分析则加上连通性门控 | 将诊断性求解呈现为结果 |
| ENGINEERING | 可用结果 + 合理性检查 | 单位;连通性;反力/热/质量平衡;收敛;QoI 提取;奇异性检查 | 声称批准;报告奇异峰值 |
| SIGNOFF | 可辩护的交付物 | 所有 ENGINEERING + 网格与时间步无关性 (GCI, 渐近范围) + 可追溯报告 + 误差界限 | 跳过任何门控;对不确定性含糊其辞 |
SMOKE/DEBUG 结果是流程/物理检查,绝不是工程结论 — 请标记。
★ 声明前自检 — 在陈述任何工程数值之前回答所有问题
这是使此技能值得信赖的门控。在你输入应力、温度、频率、裕度、阻力或“通过”之前, 回答这些问题。如果任何一个答案是否 / 未知,你没有结果 — 你只有 SMOKE/DEBUG 输出:说出来并停止。
- 模式? 我处于哪个执行模式,且其强制门控是否已通过?(SMOKE/DEBUG ⇒ 不是工程结论。)
- 单位? 是否验证了统一的单位系统 (1g-质量 / 手算检查)?密度是否未被单位污染?
- 离散化误差是否被处理? 网格和时间步误差是否已被限定并说明(SIGNOFF 为 GCI;ENGINEERING 为单网格 ZZ/SPR 估计)?一个孤立的单网格数值永远不是结果。
- 是否排除了奇异性? QoI 是否位于拐角 / 点载荷 / 裂纹尖端伪影处?在引用之前应读取远离的值或线性化。
- 平衡是否已检查? 反力 = 施加的力;热/质量/能量平衡在容差内;收敛基于残差历史,而非退出代码?
- 是否指明了许用值? 是否存在相对于命名准则 / 设计规范的裕度 — 而非裸数值?
- 是否越过了人类判断门控? 我是否暗自选择了载荷工况、接触类型、许用值、特征抑制或批准?如果是 — 停止并上报 (
references/escalation-examples.md)。
然后使用 references/claim-templates.md 中的匹配模板表述结果。代理没有运行证据绝不声称批准,并且绝不自行授权工程决策。 精确的求解器标志 / API 调用本身就是一个声明 — 根据步骤 0 中的版本对齐命令规则确认。
步骤 0 — 始终首先执行:环境发现
永远不要假设版本或路径。查找已安装/许可的内容,然后确认平台 + 物理场 + QoI。
Get-ChildItem "C:\Program Files\ANSYS Inc" -Recurse -Filter "ANSYS*.exe" -ErrorAction SilentlyContinue | Select FullName # MAPDL/Mechanical/Fluent/CFX
Get-ChildItem "C:\Program Files\Siemens" -Recurse -Include "nastran.exe","run_journal.exe","tmgnx.cmd","ugraf.exe" -ErrorAction SilentlyContinue
Get-ChildItem "C:\Program Files" -Recurse -Filter "abq*.bat" -ErrorAction SilentlyContinue # Abaqus; also `which icem`, OpenFOAM `foamVersion`
$env:ANSYSLMD_LICENSE_FILE; $env:LM_LICENSE_FILE
(Get-CimInstance Win32_Processor | Measure-Object NumberOfCores -Sum).Sum # 物理核心
Linux:ansysNNN -b, nastran, abaqus, simpleFoam, fluent -g;检查 $LM_LICENSE_FILE, nproc。
版本对齐命令(规则): 永远不要发出你未验证存在于检测到的版本中的求解器命令、标志或 API 调用 — 版本会重命名标志并改变 API。在依赖它之前,请针对已安装版本的 -help/文档进行确认,尤其是在 ENGINEERING/SIGNOFF 时。
规范工作流(按顺序运行)
- 目标 + QoI — 驱动决策的标量(裕度、挠度、频率、峰值温度、阻力)。不是“运行模型”。
- 分析类型 — 静力/模态/屈曲/热/CFD/耦合;线性 vs 非线性(材料?大变形?接触?湍流?)。
- 理想化 (影响最大) — 1D/2D/3D;仅当几何和载荷和边界条件对称时才使用对称;抑制无关特征。 →
references/meshing-convergence.md。 - 材料 — 正确的本构模型;随温度变化的属性;低温时使用 ∫α(T)dT。 →
references/material-modeling.md。 - 网格 — 单元阶次/族、关注区域加密、质量标准。 →
references/meshing-convergence.md。 - 连接与接触。 →
references/mechanical-connections.md,references/thermal-contact-resistance.md。 - 边界条件与载荷 — 仅移除适合模型维度/类型的刚体模式(未约束的3D 实体有 6 个;2D、轴对称、纯壳和循环对称模型不同);载荷施加于真实区域(绝无点载荷/约束 → 奇异性);自由体的惯性释放。 →
references/advanced-methods.md。 - 求解控制 — 求解器类型、核心数、子步 + 容差。 →
references/solver-numerics.md。 - 验证 — 平衡、网格/时间步无关性、收敛历史。 →
references/vv-uq.md。 - 确认 — 与测试 / 手算 / NAFEMS 基准对比(校准 ≠ 确认)。
- 后处理与报告 — 正确的度量、平均值与未平均值检查、裕度、说明的假设。
一致的单位(选择一个系统;求解器是无单位的)
| 系统 | 长度 | 力 | 应力/E | 质量 | 密度(钢) | g |
|---|---|---|---|---|---|---|
| SI (m) | m | N | Pa | kg | 7850 kg/m³ | 9.81 m/s² |
| mm-t-s(常见 CAE) | mm | N | MPa | 吨 | 7.85e-9 t/mm³ | 9810 mm/s² |
密度是默默的破坏者: 错误单位的密度在静力分析中可能通过,但会破坏所有动力学/显式/瞬态热结果。MAPDL 的 /UNITS 只是元数据。通过 1g 质量检查或手算固有频率来验证。
单元选择与网格质量(深度:references/meshing-convergence.md)
- 二次单元(边中点)用于应力/弯曲几何,尤其是四面体 — 避免对压力使用线性 TET4(常应变 → 过刚、应力收敛慢;仅作为远离 QoI 的填充单元可接受)。显式/大变形使用线性。(剪切自锁 实际影响弯曲中的完全积分线性四边形/六面体 — 寄生剪切;通过减缩积分、非协调模式或二次单元修复 — 与 TET4 的常应变刚度缺陷不同。)现代二次实体对于轻度弯曲,以约 1 个单元贯穿厚度作为起点(曲率驱动 — 通过收敛确认);线性单元需要多个,且精度关键的弯曲希望 ≥2 个二次单元。
- 壳单元如果厚度/长度 ≲ 1/10–1/20;三维应力/贯穿厚度使用实体;细长件使用梁。考虑 sh
…
[为翻译截断]