<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>陈嘉鹏 · AlexanderChan on AlexanderChan 的博客</title><link>https://alexchan114.github.io/</link><description>Recent content in 陈嘉鹏 · AlexanderChan on AlexanderChan 的博客</description><generator>Hugo</generator><language>zh-CN</language><lastBuildDate>Mon, 19 Oct 2026 00:00:00 +0800</lastBuildDate><atom:link href="https://alexchan114.github.io/index.xml" rel="self" type="application/rss+xml"/><item><title>Jone Gorman AI 学习指南：从入门到 Agent、Physical AI 与 RSI</title><link>https://alexchan114.github.io/post/2026/10/19/jone-gorman-ai-guide/</link><pubDate>Mon, 19 Oct 2026 00:00:00 +0800</pubDate><guid>https://alexchan114.github.io/post/2026/10/19/jone-gorman-ai-guide/</guid><description>&lt;p&gt;昂贵的课程、密集的新名词，以及不断出现的技术热点，很容易让刚开始接触 AI 的人感到焦虑。这份指南从一个预算有限、计算机基础薄弱的学习者出发，把“我要学 AI”拆成可以逐步完成的事情。&lt;/p&gt;&#10;&lt;p&gt;从认识电脑，到写出第一段 Python，再到复现模型和完成一个小项目，每一步都可以留下自己的代码与记录。课程是入口，动手实践才让这些知识真正连接起来。&lt;/p&gt;&#10;&lt;p&gt;这份路线以熟悉概念、建立动手能力为目标。先理解 AI、机器学习、深度学习和生成式模型之间的联系，再学习能够调用工具的 Agent、与物理环境交互的系统，以及如何评价和改进它们。不必把所有课程看完再开始项目。&lt;/p&gt;&#10;&lt;p&gt;先放好几个概念的位置：AI 是更大的研究领域；机器学习研究从数据或经验中学习的方法；深度学习主要使用多层神经网络；LLM 是语言建模的一类模型。强化学习是一种学习与决策框架，Agent 是围绕目标组织模型、工具与环境的系统，不能把它们都当成同一种模型。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;从零起步：&lt;/strong&gt; 依次完成第 1—5 节，能读写 Python、管理环境并解释一个小模型的训练结果。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;做 Agent 应用：&lt;/strong&gt; 在基础上学习第 6—9 节，以有引用的问答或可核对的工具任务为第一个项目。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;走向物理与研究：&lt;/strong&gt; 选择第 10—13 节的一个方向，再用第 14 节的项目建立完整记录。RSI 在这里指 Recursive Self-Improvement（递归自我改进）。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;资料覆盖大学课程、YouTube 讲解、原始论文、作者代码、官方文档和研究博客。YouTube 入口优先来自作者、大学或机构的原始发布，并说明适用阶段和学习目标。视频用于建立直觉，论文用于核对证据，代码和文档用于落实方法。&lt;/p&gt;&#10;&lt;h2 id="1-认识计算机"&gt;1. 认识计算机&lt;/h2&gt;&#10;&lt;p&gt;先理解计算机的基本组成，区分 CPU、内存、存储和 GPU，知道程序、文件以及硬件之间大致如何配合。这一阶段不需要先购买高性能设备，也不需要一次掌握所有计算机知识。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://www.bilibili.com/video/BV1jx421X7zH/"&gt;计算机入门视频&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;strong&gt;动手记录：&lt;/strong&gt; 查看自己设备的处理器、内存和磁盘容量，整理常用文件的位置。内存和磁盘存储是不同概念；安装软件占用的主要是存储空间。&lt;/p&gt;&#10;&lt;h2 id="2-认识操作系统"&gt;2. 认识操作系统&lt;/h2&gt;&#10;&lt;p&gt;从熟悉的 Windows 开始，逐渐了解操作系统、终端、目录和文件权限。在需要 Linux 的课程或项目里，再学习相应操作。双系统是原文提供的一条实践路线，也可以先在虚拟机或 &lt;a href="https://learn.microsoft.com/en-us/windows/wsl/about"&gt;WSL&lt;/a&gt; 中练习。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://www.bilibili.com/video/BV1554y1n7zv/"&gt;双系统安装教程&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://www.bilibili.com/video/BV1cq421w72c/"&gt;Linux 基础操作&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;strong&gt;动手记录：&lt;/strong&gt; 在终端中完成查看当前目录、切换目录、创建文件夹和运行程序，并理解自己输入的命令做了什么。&lt;/p&gt;&#10;&lt;h2 id="3-学习-python"&gt;3. 学习 Python&lt;/h2&gt;&#10;&lt;p&gt;用一门语言建立编程基础，比同时追逐多个工具更容易开始。这里选择 Python，先学会变量、条件、循环、函数、常用数据结构、模块导入和基本报错排查，再进入机器学习代码。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://www.bilibili.com/video/BV1TN411K7sn/"&gt;Python 与 VS Code 环境搭建&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://www.bilibili.com/video/BV1o4411M71o/"&gt;Python 基础课程&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;strong&gt;动手记录：&lt;/strong&gt; 独立写一个读取文件、处理数据并输出结果的小脚本。跟着视频敲完之后，修改输入或增加一个功能，确认自己能够解释程序的行为。&lt;/p&gt;</description></item><item><title>把一次连接器仿真，变成可追溯的批量边界搜索</title><link>https://alexchan114.github.io/post/2026/10/18/connector-simulation-boundary/</link><pubDate>Sun, 18 Oct 2026 00:00:00 +0000</pubDate><guid>https://alexchan114.github.io/post/2026/10/18/connector-simulation-boundary/</guid><description>&lt;article class="cae-article"&gt;&#10;&lt;p class="article-downloads"&gt;&lt;a href="https://alexchan114.github.io/articles/connector-simulation/connector-simulation.pdf"&gt;中文 PDF&lt;/a&gt; · &lt;a href="https://alexchan114.github.io/articles/connector-simulation/connector-simulation.en.pdf"&gt;English PDF&lt;/a&gt; · &lt;a href="https://alexchan114.github.io/articles/connector-simulation/connector-simulation-sources-bilingual.zip"&gt;中英文 LaTeX 与配图源文件&lt;/a&gt;&lt;/p&gt;&lt;nav class="article-toc" aria-label="文章目录"&gt;&lt;details&gt;&lt;summary&gt;文章目录&lt;/summary&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="#先说收获"&gt;先说收获&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#问题不再是一个模型而是一族模型"&gt;问题不再是一个模型，而是一族模型&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#先把重复计算的部分缩小子结构"&gt;先把重复计算的部分缩小：子结构&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#参数化从一次-gui-操作开始"&gt;参数化从一次 GUI 操作开始&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#四种抽样共用一个有界概率映射"&gt;四种抽样，共用一个有界概率映射&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#接口是最容易被自动化放大的建模问题"&gt;接口是最容易被自动化放大的建模问题&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#把一次运行拆成可恢复的流水线"&gt;把一次运行拆成可恢复的流水线&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#接触性能先把指标定义清楚"&gt;接触性能：先把指标定义清楚&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#寻找应用边界而不只是最差样本"&gt;寻找应用边界，而不只是最差样本&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#我最终会怎样验收这样一套系统"&gt;我最终会怎样验收这样一套系统&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#结语把可解释性写进自动化"&gt;结语：把可解释性写进自动化&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#复现与公开资料"&gt;复现与公开资料&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/details&gt;&lt;/nav&gt;&lt;blockquote&gt;&#10;&lt;p&gt;&lt;strong&gt;这篇文章讨论什么？&lt;/strong&gt;连接器有限元分析的难点，不只是把一个模型算出来，而是让同一套物理模型能够可靠地产生很多样本，并解释这些样本何时失去接触性能。这里记录一条贯通降阶、参数化、调度、后处理和边界搜索的工程路线。&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;公开范围。&lt;/strong&gt;本文匿名化客户、产品和工况细节，不包含实际模型、原始公差向量、未公开接触力数据或性能指标。抽样图是独立生成的方法演示，其余配图均为示意。新增加的耦合搜索已完成离线代码与坐标检查；实际失效边界仍必须由匹配模型的完整求解确认。&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;h2 class="unnumbered" id="先说收获"&gt;先说收获&lt;/h2&gt;&#10;&lt;p&gt;一个可用的批量仿真系统，需要把三件事情分别做好：&lt;strong&gt;物理上能解释，数值上能检查，执行上能恢复。&lt;/strong&gt;减少求解时间只是第一步；如果每个样本使用了不同的接触设置、施加公差时污染了基准模型，或者把一次求解中断当作失效，那么算得再快也无法得到可信的应用边界。&lt;/p&gt;&#10;&lt;p&gt;这条路线可以概括为图 &lt;a href="#fig-workflow"&gt;1&lt;/a&gt;：用子结构降低重复计算成本，用明确的变量映射生成样本，再用统一的接触指标连接批量统计与姿态搜索。后面的每一步，都保留前面输入的身份与来源。&lt;/p&gt;&#10;&lt;figure data-latex-placement="H" id="fig-workflow"&gt;&#10;&lt;a href="https://alexchan114.github.io/articles/connector-simulation/fig01_workflow.png" rel="noopener" target="_blank"&gt;&lt;img alt="整体技术路线示意。每个样本沿同一条链路执行；搜索改变的是初始姿态，制造公差组合可以固定。图中没有实际产品模型或性能数据。" decoding="async" loading="lazy" src="https://alexchan114.github.io/articles/connector-simulation/fig01_workflow.png" style="width:100%;height:auto"/&gt;&lt;/a&gt;&#10;&lt;figcaption&gt;整体技术路线示意。每个样本沿同一条链路执行；搜索改变的是初始姿态，制造公差组合可以固定。图中没有实际产品模型或性能数据。&lt;/figcaption&gt;&#10;&lt;/figure&gt;&#10;&lt;h2 id="问题不再是一个模型而是一族模型"&gt;问题不再是一个模型，而是一族模型&lt;/h2&gt;&#10;&lt;p&gt;连接器互配是典型的接触非线性问题：几何、局部刚度、初始间隙和加载过程共同影响最终接触状态。名义几何上的一次计算，只回答了某个确定配置的问题。引入制造偏差后，需要研究一族模型的响应；进一步考虑装配偏位和偏角，又增加了新的条件变量。&lt;/p&gt;&#10;&lt;p&gt;我把这一问题写成 &lt;math display="block" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi mathvariant="bold-italic"&gt;𝒚&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi mathvariant="script"&gt;𝒮&lt;/mi&gt;&lt;mo form="prefix" stretchy="false"&gt;(&lt;/mo&gt;&lt;mi mathvariant="bold-italic"&gt;𝝃&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi mathvariant="bold-italic"&gt;𝒒&lt;/mi&gt;&lt;mo&gt;;&lt;/mo&gt;&lt;mi mathvariant="bold-italic"&gt;𝜼&lt;/mi&gt;&lt;mo form="postfix" stretchy="false"&gt;)&lt;/mo&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;\begin{equation}&#10; \mathbf{y}=\mathcal{S}(\boldsymbol{\xi},\mathbf{q};\boldsymbol{\eta}),&#10;\end{equation}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; 其中 &lt;math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mi mathvariant="bold-italic"&gt;𝝃&lt;/mi&gt;&lt;annotation encoding="application/x-tex"&gt;\boldsymbol{\xi}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; 是制造公差向量，&lt;math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mi mathvariant="bold-italic"&gt;𝒒&lt;/mi&gt;&lt;annotation encoding="application/x-tex"&gt;\mathbf{q}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; 是初始装配姿态，&lt;math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mi mathvariant="bold-italic"&gt;𝜼&lt;/mi&gt;&lt;annotation encoding="application/x-tex"&gt;\boldsymbol{\eta}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; 是材料、摩擦、预压和插入路径等物理设置，&lt;math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mi mathvariant="script"&gt;𝒮&lt;/mi&gt;&lt;annotation encoding="application/x-tex"&gt;\mathcal{S}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; 表示有限元建模、装配与求解流程，&lt;math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mi mathvariant="bold-italic"&gt;𝒚&lt;/mi&gt;&lt;annotation encoding="application/x-tex"&gt;\mathbf{y}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; 则包含接触力曲线及其终点指标。&lt;/p&gt;&#10;&lt;p&gt;这个写法首先提醒我们：&lt;strong&gt;制造公差不是装配姿态，抽样策略也不是物理设置。&lt;/strong&gt;比较采样方法时，应保持后两者一致；搜索姿态边界时，则应固定同一条制造公差向量。否则，曲线的变化无法归因。&lt;/p&gt;&#10;&lt;p&gt;项目的工作由此自然分成两层。第一层是让确定性分析足够高效，为批量运行提供底座；第二层是在同一底座上引入公差，并建立失效边界的自动搜索。本文重点是两层之间的工程连接，而不是额外引入一个预测模型。&lt;/p&gt;&#10;&lt;h2 id="先把重复计算的部分缩小子结构"&gt;先把重复计算的部分缩小：子结构&lt;/h2&gt;&#10;&lt;h3 id="core-和-sub-到底指什么"&gt;CORE 和 SUB 到底指什么&lt;/h3&gt;&#10;&lt;p&gt;有限元方法（Finite Element Method，FEM）将连续体离散成节点和单元。本文把需要保留细节的非线性接触区域称为 &lt;strong&gt;CORE（核心保留区）&lt;/strong&gt;，把适合凝聚处理的部分称为 &lt;strong&gt;SUB（子结构区）&lt;/strong&gt;。它们是工程分区名称，不是求解器的材料类型或特定单元名称。&lt;/p&gt;&#10;&lt;p&gt;图 &lt;a href="#fig-sub"&gt;2&lt;/a&gt; 用抽象网格解释这种分区：接触和局部变形集中在 CORE，远离关键接触的结构通过保留接口节点传递载荷。划分不能仅凭单元数；需要考虑接触是否会进入子结构区域、材料非线性是否重要，以及接口是否保留了正确的运动自由度。&lt;/p&gt;&#10;&lt;figure data-latex-placement="H" id="fig-sub"&gt;&#10;&lt;a href="https://alexchan114.github.io/articles/connector-simulation/fig02_substructure.png" rel="noopener" target="_blank"&gt;&lt;img alt="子结构分区与凝聚示意。左侧为完整网格，右侧为保留接口与核心细节后的使用层模型。圆点表示接口自由度，矩形不代表实际连接器几何。" decoding="async" loading="lazy" src="https://alexchan114.github.io/articles/connector-simulation/fig02_substructure.png" style="width:100%;height:auto"/&gt;&lt;/a&gt;&#10;&lt;figcaption&gt;子结构分区与凝聚示意。左侧为完整网格，右侧为保留接口与核心细节后的使用层模型。圆点表示接口自由度，矩形不代表实际连接器几何。&lt;/figcaption&gt;&#10;&lt;/figure&gt;&#10;&lt;h3 id="静力凝聚为什么能减少重复工作"&gt;静力凝聚为什么能减少重复工作&lt;/h3&gt;&#10;&lt;p&gt;将线性子结构的自由度分为内部自由度 &lt;math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;annotation encoding="application/x-tex"&gt;i&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; 与保留自由度 &lt;math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;annotation encoding="application/x-tex"&gt;b&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;，其方程可以写为 &lt;math display="block" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo form="prefix" stretchy="true"&gt;[&lt;/mo&gt;&lt;mtable&gt;&lt;mtr&gt;&lt;mtd columnalign="center" style="text-align: center"&gt;&lt;msub&gt;&lt;mi&gt;K&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/mtd&gt;&lt;mtd columnalign="center" style="text-align: center"&gt;&lt;msub&gt;&lt;mi&gt;K&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;mtr&gt;&lt;mtd columnalign="center" style="text-align: center"&gt;&lt;msub&gt;&lt;mi&gt;K&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/mtd&gt;&lt;mtd columnalign="center" style="text-align: center"&gt;&lt;msub&gt;&lt;mi&gt;K&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&lt;mo form="postfix" stretchy="true"&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mo form="prefix" stretchy="true"&gt;[&lt;/mo&gt;&lt;mtable&gt;&lt;mtr&gt;&lt;mtd columnalign="center" style="text-align: center"&gt;&lt;msub&gt;&lt;mi&gt;u&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;mtr&gt;&lt;mtd columnalign="center" style="text-align: center"&gt;&lt;msub&gt;&lt;mi&gt;u&lt;/mi&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;/msub&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&lt;mo form="postfix" stretchy="true"&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo form="prefix" stretchy="true"&gt;[&lt;/mo&gt;&lt;mtable&gt;&lt;mtr&gt;&lt;mtd columnalign="center" style="text-align: center"&gt;&lt;msub&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;mtr&gt;&lt;mtd columnalign="center" style="text-align: center"&gt;&lt;msub&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;/msub&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&lt;mo form="postfix" stretchy="true"&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;mi&gt;.&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;\begin{equation}&#10; \begin{bmatrix}K_{ii}&amp;amp;K_{ib}\\K_{bi}&amp;amp;K_{bb}\end{bmatrix}&#10; \begin{bmatrix}u_i\\u_b\end{bmatrix}&#10; =\begin{bmatrix}f_i\\f_b\end{bmatrix}.&#10;\end{equation}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; 消去内部自由度后，可得约化关系 &lt;math display="block" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mtable&gt;&lt;mtr&gt;&lt;mtd columnalign="right" style="text-align: right; padding-right: 0"&gt;&lt;msub&gt;&lt;mover&gt;&lt;mi&gt;K&lt;/mi&gt;&lt;mo accent="true"&gt;¯&lt;/mo&gt;&lt;/mover&gt;&lt;mrow&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/mtd&gt;&lt;mtd columnalign="left" style="text-align: left; padding-left: 0"&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;K&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;K&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;msubsup&gt;&lt;mi&gt;K&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mi&gt;−&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msubsup&gt;&lt;msub&gt;&lt;mi&gt;K&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;mtr&gt;&lt;mtd columnalign="right" style="text-align: right; padding-right: 0"&gt;&lt;msub&gt;&lt;mover&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mo accent="true"&gt;¯&lt;/mo&gt;&lt;/mover&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;/msub&gt;&lt;/mtd&gt;&lt;mtd columnalign="left" style="text-align: left; padding-left: 0"&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;K&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;msubsup&gt;&lt;mi&gt;K&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mi&gt;−&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msubsup&gt;&lt;msub&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mspace width="2.0em"&gt;&lt;/mspace&gt;&lt;msub&gt;&lt;mover&gt;&lt;mi&gt;K&lt;/mi&gt;&lt;mo accent="true"&gt;¯&lt;/mo&gt;&lt;/mover&gt;&lt;mrow&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;msub&gt;&lt;mi&gt;u&lt;/mi&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mover&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mo accent="true"&gt;¯&lt;/mo&gt;&lt;/mover&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;/msub&gt;&lt;mi&gt;.&lt;/mi&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&lt;annotation encoding="application/x-tex"&gt;\begin{align}&#10; \overline K_{bb}&amp;amp;=K_{bb}-K_{bi}K_{ii}^{-1}K_{ib},\\&#10; \overline f_b&amp;amp;=f_b-K_{bi}K_{ii}^{-1}f_i,\qquad&#10; \overline K_{bb}u_b=\overline f_b.&#10;\end{align}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; 这里的逆矩阵是数学表达，实际计算通常通过线性方程求解实现，并不需要显式形成整个逆矩阵。子结构生成阶段承担约化工作；使用阶段则把约化库与 CORE 装配起来。&lt;/p&gt;&#10;&lt;p&gt;收益来自复用，而不是简单地把模型中一片区域删除。如果多个样本只改变 CORE，且子结构本身与接口定义仍适用，就可以复用同一套库。反之，若子结构几何、材料、保留自由度或生成工况发生变化，就不能只因为文件名相同而继续使用旧库。&lt;/p&gt;&#10;&lt;h3 id="文件是一套不是一堆"&gt;文件是一套，不是一堆&lt;/h3&gt;&#10;&lt;p&gt;输入文件（input deck，通常为 &lt;code&gt;.inp&lt;/code&gt;）记录网格、集合与关键字。子结构相关的仿真数据库 &lt;code&gt;.sim&lt;/code&gt;、子结构库 &lt;code&gt;.sup&lt;/code&gt; 和输出数据库（Output Database，ODB，&lt;code&gt;.odb&lt;/code&gt;）是不同用途的产物，不应仅凭扩展名逐个替换。它们必须来自匹配的生成任务，并与接口节点标签一致。&lt;/p&gt;&#10;&lt;p&gt;因此，我把“库的来源”也当成输入：记录生成文件、保留集合、模型身份和校验结果。批量装配时按标签建立接口集合，而不是在大模型中临时猜测最近的坐标点。子结构方法的基本原则可参见 Abaqus 官方文档 &lt;a href="#ref-abaqus-sub"&gt;[1]&lt;/a&gt;；具体适用性仍要由当前模型验证。&lt;/p&gt;&#10;&lt;h2 id="参数化从一次-gui-操作开始"&gt;参数化从一次 GUI 操作开始&lt;/h2&gt;&#10;&lt;h3 id="先录下能成功的操作再封装"&gt;先录下能成功的操作，再封装&lt;/h3&gt;&#10;&lt;p&gt;图形用户界面（Graphical User Interface，GUI）中的一次正确操作，是自动化最可靠的起点之一。HyperMesh 的命令历史保存了对应的工具命令语言（Tool Command Language，Tcl）指令。我的做法是先在 GUI 中完成目标动作，再从历史中提取必要命令，而不是根据面板名称猜 API 参数。&lt;/p&gt;&#10;&lt;p&gt;清洗历史时，会删除视角、选择面板等与物理结果无关的动作，保留明确的实体选择、shape 施加与导出步骤，再把路径、幅值和输出名称变成函数参数。Python 负责样本、文件和进程管理，Tcl 负责在 HyperMesh 内执行已有能力。Notebook 只是交互入口，实际逻辑仍放在可被命令行调用的 Python 模块中。&lt;/p&gt;&#10;&lt;p&gt;应用程序编程接口（Application Programming Interface，API）在不同软件版本之间可能存在差异。由此得到的教训是：以安装版本和录制命令为依据，不把“新版本文档里有这个函数”当作旧版本可运行的保证。&lt;/p&gt;&#10;&lt;h3 id="shape-幅值不是毫米"&gt;shape 幅值不是毫米&lt;/h3&gt;&#10;&lt;p&gt;网格形变（mesh morphing）可以把已定义的形状扰动（shape）参数化。对存为节点扰动的 shape，一种清楚的表达是 &lt;math display="block" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi mathvariant="bold-italic"&gt;𝒙&lt;/mi&gt;&lt;mo form="prefix" stretchy="false"&gt;(&lt;/mo&gt;&lt;mi mathvariant="bold-italic"&gt;𝜶&lt;/mi&gt;&lt;mo form="postfix" stretchy="false"&gt;)&lt;/mo&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mi mathvariant="bold-italic"&gt;𝒙&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;munderover&gt;&lt;mo&gt;∑&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;j&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;msub&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mi&gt;g&lt;/mi&gt;&lt;/msub&gt;&lt;/munderover&gt;&lt;msub&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mi&gt;j&lt;/mi&gt;&lt;/msub&gt;&lt;mspace width="0.167em"&gt;&lt;/mspace&gt;&lt;mi mathvariant="normal"&gt;Δ&lt;/mi&gt;&lt;msub&gt;&lt;mi mathvariant="bold-italic"&gt;𝒙&lt;/mi&gt;&lt;mi&gt;j&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;\begin{equation}&#10; \mathbf{x}(\boldsymbol{\alpha})=\mathbf{x}_0+&#10; \sum_{j=1}^{d_g}\alpha_j\,\Delta\mathbf{x}_j,&#10;\end{equation}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; 其中 &lt;math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mi&gt;j&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding="application/x-tex"&gt;\alpha_j&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; 是无量纲幅值，&lt;math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi mathvariant="normal"&gt;Δ&lt;/mi&gt;&lt;msub&gt;&lt;mi mathvariant="bold-italic"&gt;𝒙&lt;/mi&gt;&lt;mi&gt;j&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;\Delta\mathbf{x}_j&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; 是基准模型中保存的节点位移场。若幅值为 1 对应特征尺寸变化 &lt;math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mi&gt;j&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding="application/x-tex"&gt;s_j&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;，则该特征的尺寸变化为 &lt;math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi mathvariant="normal"&gt;Δ&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;L&lt;/mi&gt;&lt;mi&gt;j&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mi&gt;j&lt;/mi&gt;&lt;/msub&gt;&lt;msub&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mi&gt;j&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;\Delta L_j=s_j\alpha_j&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;。方向、单位、标定尺度和 shape 名称必须共同记录。&lt;/p&gt;&#10;&lt;p&gt;这也是为什么我更重视“节点扰动保存了什么”，而不仅是 GUI 中输入了多少。依赖 handle、morph volume 或约束更新的 shape，可能涉及额外的重算语义。对需要稳定叠加的参数，应检查保存形式，独立施加与组合施加的结果，并用坐标验证确认期望的位移场。上面的叠加式只描述明确保存的节点扰动，不应被理解成所有交互式 morph 操作都线性、可交换。&lt;/p&gt;&#10;&lt;h3 id="一份向量可以包含不同类型的公差"&gt;一份向量可以包含不同类型的公差&lt;/h3&gt;&#10;&lt;p&gt;除几何 shape 外，参数还可以作用于不同部件的预抬量或局部位置。于是输入向量可以分组： &lt;math display="block" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi mathvariant="bold-italic"&gt;𝝃&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mo form="prefix" maxsize="120%" minsize="120%" stretchy="true"&gt;[&lt;/mo&gt;&lt;msub&gt;&lt;mi mathvariant="bold-italic"&gt;𝜶&lt;/mi&gt;&lt;mrow&gt;&lt;mi mathvariant="normal"&gt;s&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;h&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;a&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;p&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;e&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mspace width="0.278em"&gt;&lt;/mspace&gt;&lt;msub&gt;&lt;mi mathvariant="bold-italic"&gt;𝜶&lt;/mi&gt;&lt;mrow&gt;&lt;mi mathvariant="normal"&gt;p&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;r&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;e&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;l&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;i&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;f&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;t&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mspace width="0.278em"&gt;&lt;/mspace&gt;&lt;msub&gt;&lt;mi mathvariant="bold-italic"&gt;𝜶&lt;/mi&gt;&lt;mrow&gt;&lt;mi mathvariant="normal"&gt;l&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;o&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;c&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;a&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;l&lt;/mi&gt;&lt;mspace width="0.222em"&gt;&lt;/mspace&gt;&lt;mi mathvariant="normal"&gt;o&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;f&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;f&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;s&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;e&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;t&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo form="postfix" maxsize="120%" minsize="120%" stretchy="true"&gt;]&lt;/mo&gt;&lt;mi&gt;.&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;\begin{equation}&#10; \boldsymbol{\xi}=\bigl[\boldsymbol{\alpha}_{\mathrm{shape}},\;&#10; \boldsymbol{\alpha}_{\mathrm{prelift}},\;&#10; \boldsymbol{\alpha}_{\mathrm{local\ offset}}\bigr].&#10;\end{equation}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; 几何组映射到节点，预抬组映射到独立控制点与加载边界，局部偏移组映射到明确部件的坐标。让所有组共用一份记录，不等于让所有组都必须通过 morph 实现。这样既能保留同一向量的可追溯性，又避免为简单刚体平移制造复杂的形变操作。&lt;/p&gt;&#10;&lt;h2 id="四种抽样共用一个有界概率映射"&gt;四种抽样，共用一个有界概率映射&lt;/h2&gt;&#10;&lt;h3 id="为什么先定义分布再谈抽样"&gt;为什么先定义分布，再谈抽样&lt;/h3&gt;&#10;&lt;p&gt;普通正态分布没有有限上下界。如果工程上规定幅值只能位于 &lt;math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo form="prefix" stretchy="false"&gt;[&lt;/mo&gt;&lt;mi&gt;−&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo form="postfix" stretchy="false"&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;[-1,1]&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;，就不能一边使用不截断正态抽样，一边假设结果一定不会越界。直接把超界值裁到端点也不等价：裁剪会在上下界形成点质量，改变分布形态。&lt;/p&gt;&#10;&lt;p&gt;本流程采用条件截断正态。令 &lt;math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mi mathvariant="normal"&gt;Φ&lt;/mi&gt;&lt;annotation encoding="application/x-tex"&gt;\Phi&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;、&lt;math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mi&gt;ϕ&lt;/mi&gt;&lt;annotation encoding="application/x-tex"&gt;\phi&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; 为标准正态分布的累积分布函数与密度，&lt;math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;u&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mo form="prefix" stretchy="false"&gt;(&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo form="postfix" stretchy="false"&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;u\in(0,1)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;，则 &lt;math display="block" id="eq-inverse" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;α&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;σ&lt;/mi&gt;&lt;msup&gt;&lt;mi mathvariant="normal"&gt;Φ&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;−&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mspace width="-0.167em"&gt;&lt;/mspace&gt;&lt;mrow&gt;&lt;mo form="prefix" stretchy="true"&gt;[&lt;/mo&gt;&lt;mi mathvariant="normal"&gt;Φ&lt;/mi&gt;&lt;mspace width="-0.167em"&gt;&lt;/mspace&gt;&lt;mrow&gt;&lt;mo form="prefix" stretchy="true"&gt;(&lt;/mo&gt;&lt;mfrac&gt;&lt;mrow&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;/mrow&gt;&lt;mi&gt;σ&lt;/mi&gt;&lt;/mfrac&gt;&lt;mo form="postfix" stretchy="true"&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;u&lt;/mi&gt;&lt;mrow&gt;&lt;mo form="prefix" stretchy="true"&gt;{&lt;/mo&gt;&lt;mi mathvariant="normal"&gt;Φ&lt;/mi&gt;&lt;mspace width="-0.167em"&gt;&lt;/mspace&gt;&lt;mrow&gt;&lt;mo form="prefix" stretchy="true"&gt;(&lt;/mo&gt;&lt;mfrac&gt;&lt;mrow&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;/mrow&gt;&lt;mi&gt;σ&lt;/mi&gt;&lt;/mfrac&gt;&lt;mo form="postfix" stretchy="true"&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mi mathvariant="normal"&gt;Φ&lt;/mi&gt;&lt;mspace width="-0.167em"&gt;&lt;/mspace&gt;&lt;mrow&gt;&lt;mo form="prefix" stretchy="true"&gt;(&lt;/mo&gt;&lt;mfrac&gt;&lt;mrow&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;/mrow&gt;&lt;mi&gt;σ&lt;/mi&gt;&lt;/mfrac&gt;&lt;mo form="postfix" stretchy="true"&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo form="postfix" stretchy="true"&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;mo form="postfix" stretchy="true"&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mspace width="1.0em"&gt;&lt;/mspace&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;−&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mspace width="0.278em"&gt;&lt;/mspace&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mi&gt;.&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;\begin{equation}&#10;\label{eq:inverse}&#10; \alpha=\mu+\sigma\Phi^{-1}\!\left[&#10; \Phi\!\left(\frac{a-\mu}{\sigma}\right)+u&#10; \left\{\Phi\!\left(\frac{b-\mu}{\sigma}\right)&#10; -\Phi\!\left(\frac{a-\mu}{\sigma}\right)\right\}\right],&#10; \quad a=-1,\;b=1.&#10;\end{equation}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; 四种方法首先产生单位超立方体中的点，再共同使用式 &lt;a href="#eq-inverse"&gt;(7)&lt;/a&gt; 映射到各变量的幅值。这样，“怎样布点”和“变量服从什么分布”便被分开了。&lt;/p&gt;&#10;&lt;p&gt;需要特别区分：&lt;math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;annotation encoding="application/x-tex"&gt;\mu&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; 和 &lt;math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mi&gt;σ&lt;/mi&gt;&lt;annotation encoding="application/x-tex"&gt;\sigma&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; 是&lt;strong&gt;截断前母分布&lt;/strong&gt;的参数。截断后，尤其截断范围较窄时，实际样本标准差不会仍然等于 &lt;math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mi&gt;σ&lt;/mi&gt;&lt;annotation encoding="application/x-tex"&gt;\sigma&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;。即使各维使用相同映射，也不自动代表工程上已证明各变量互相独立；缺少相关性数据时，独立只是一个需要明确写出的建模假设。&lt;/p&gt;&#10;&lt;h3 id="四种方法各解决什么问题"&gt;四种方法各解决什么问题&lt;/h3&gt;&#10;&lt;p&gt;&lt;strong&gt;蒙特卡洛（Monte Carlo，MC）&lt;/strong&gt;使用独立伪随机点，概念直接，适合作为基准。有限样本中出现局部聚集和空缺是其正常表现，固定随机种子可以重现同一设计。&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;拉丁超立方抽样（Latin Hypercube Sampling，LHS）&lt;/strong&gt;在每一维把概率轴分成等概率区间，每个区间取一个点，再进行维度间配对。它保证单维分层覆盖，但并不保证所有高维组合都均匀，也不自动包含变量之间的真实制造相关性。&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Sobol 序列&lt;/strong&gt;和&lt;strong&gt;Halton 序列&lt;/strong&gt;属于低差异设计，可用于准蒙特卡洛（Quasi-Monte Carlo，QMC）方法。Sobol 常按 &lt;math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/msup&gt;&lt;annotation encoding="application/x-tex"&gt;2^m&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; 个点生成以保留设计性质；加扰设计有助于避免直接使用固定确定性图样。低维图上看起来整齐，并不能单独证明其在当前高维非线性接触问题上更准确。方法背景参见文献 &lt;a href="#ref-mckay"&gt;[3]&lt;/a&gt;,&lt;a href="#ref-sobol"&gt;[4]&lt;/a&gt;,&lt;a href="#ref-halton"&gt;[5]&lt;/a&gt;,&lt;a href="#ref-scipy-qmc"&gt;[6]&lt;/a&gt;。&lt;/p&gt;&#10;&lt;figure data-latex-placement="H" id="fig-sampling"&gt;&#10;&lt;a href="https://alexchan114.github.io/articles/connector-simulation/fig03_sampling.png" rel="noopener" target="_blank"&gt;&lt;img alt="四种方法的独立抽样演示，每种 n = 256 n=256 ，固定种子 20261018。上排是映射前的二维单位方形设计，下排是第一维映射后的幅值直方图；橙线是 N ( 0 , 1 ) N(0,1) 条件截断到 [ − 1 , 1 ] [-1,1] 后的理论密度。此图不是项目原始样本，也不是仿真性能对比。" decoding="async" loading="lazy" src="https://alexchan114.github.io/articles/connector-simulation/fig03_sampling.png" style="width:100%;height:auto"/&gt;&lt;/a&gt;&#10;&lt;figcaption&gt;四种方法的独立抽样演示，每种 &lt;math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;256&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;n=256&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;，固定种子 20261018。上排是映射前的二维单位方形设计，下排是第一维映射后的幅值直方图；橙线是 &lt;math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mo form="prefix" stretchy="false"&gt;(&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo form="postfix" stretchy="false"&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;N(0,1)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; 条件截断到 &lt;math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo form="prefix" stretchy="false"&gt;[&lt;/mo&gt;&lt;mi&gt;−&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo form="postfix" stretchy="false"&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;[-1,1]&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; 后的理论密度。此图不是项目原始样本，也不是仿真性能对比。&lt;/figcaption&gt;&#10;&lt;/figure&gt;&#10;&lt;p&gt;如图 &lt;a href="#fig-sampling"&gt;3&lt;/a&gt; 所示，布点方法改变的是有限点集的覆盖方式，共用的逆分布映射则使目标边缘分布保持一致。比较方法时，应记录样本数、随机种子或加扰设置、变量次序、上下界、物理换算系数及相关性假设。若要比较估计误差，应进行适当的重复设计与误差分析，而不能只挑一张更平滑的直方图作为证据。&lt;/p&gt;&#10;&lt;h2 id="接口是最容易被自动化放大的建模问题"&gt;接口是最容易被自动化放大的建模问题&lt;/h2&gt;&#10;&lt;h3 id="形变边界不能突然停止"&gt;形变边界不能突然停止&lt;/h3&gt;&#10;&lt;p&gt;局部区域移动，而紧邻它的网格或约束完全不动时，位移可能集中在很薄的一层单元中。视觉上不一定明显重叠，但单元可能被过度压缩，进而出现雅可比或体积问题。给定一个看似很小的公差，不能替代网格质量检查；真正重要的是相对于局部网格尺寸和过渡长度的变形梯度。&lt;/p&gt;&#10;&lt;p&gt;因此，我把关键界面的固定约束、过渡区域和形变后网格检查作为模型定义的一部分。基准无误并不意味着所有极端样本都有效；极端幅值与组合样本应先试算，再扩大批量规模。&lt;/p&gt;&#10;&lt;h3 id="局部制造偏移与整体装配偏位不是一回事"&gt;局部制造偏移与整体装配偏位不是一回事&lt;/h3&gt;&#10;&lt;p&gt;图 &lt;a href="#fig-pose"&gt;4&lt;/a&gt; 区分了两种表面相似的操作。第一种只移动某根端子的 CORE 部分而子结构不动，属于局部制造偏差的建模选择，会造成接口不共节点。第二种是整套公端相对母端移动，公端 CORE 与其子结构必须同步改变位置；这属于初始装配姿态。&lt;/p&gt;&#10;&lt;figure data-latex-placement="H" id="fig-pose"&gt;&#10;&lt;a href="https://alexchan114.github.io/articles/connector-simulation/fig04_pose.png" rel="noopener" target="_blank"&gt;&lt;img alt="两种位移的物理含义示意。虚线为原位置，实线为修改后位置；图中位移和角度仅为示意，不按比例。整体装配偏位不应人为增加公端内部接口间隙。" decoding="async" loading="lazy" src="https://alexchan114.github.io/articles/connector-simulation/fig04_pose.png" style="width:100%;height:auto"/&gt;&lt;/a&gt;&#10;&lt;figcaption&gt;两种位移的物理含义示意。虚线为原位置，实线为修改后位置；图中位移和角度仅为示意，不按比例。整体装配偏位不应人为增加公端内部接口间隙。&lt;/figcaption&gt;&#10;&lt;/figure&gt;&#10;&lt;p&gt;对于不共节点接口，可采用绑定约束（Tie constraint）。但增大位置容差，只是改变哪些节点或面可能进入绑定范围，&lt;strong&gt;不是任意几何错位都可被“修好”的理由&lt;/strong&gt;。位置调整还可能把已施加的偏差拉回去；关闭调整则需要进一步检查实际绑定覆盖与力学含义。文献 &lt;a href="#ref-abaqus-tie"&gt;[2]&lt;/a&gt; 对这些行为有明确说明。&lt;/p&gt;&#10;&lt;p&gt;代码层的最低要求，是检查对应标签节点的距离、容差是否覆盖，以及装配输入是否保留了预期偏移。最终仍需检查求解器实际建立的约束。用一个极大的统一容差跨越多个邻近端子，会让自动化变得更危险，而不是更稳健。&lt;/p&gt;&#10;&lt;h2 id="把一次运行拆成可恢复的流水线"&gt;把一次运行拆成可恢复的流水线&lt;/h2&gt;&#10;&lt;h3 id="阶段比一个返回码更重要"&gt;阶段比一个返回码更重要&lt;/h3&gt;&#10;&lt;p&gt;批量求解不是在循环里调用求解器那么简单。我把每个 case（独立工况样本）拆成几个可记录的阶段：&lt;/p&gt;&#10;&lt;div class="center"&gt;&#10;&lt;p&gt;准备输入 &lt;math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mo&gt;→&lt;/mo&gt;&lt;annotation encoding="application/x-tex"&gt;\longrightarrow&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; 装配 &lt;math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mo&gt;→&lt;/mo&gt;&lt;annotation encoding="application/x-tex"&gt;\longrightarrow&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; 输入检查 &lt;math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mo&gt;→&lt;/mo&gt;&lt;annotation encoding="application/x-tex"&gt;\longrightarrow&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; 求解 &lt;math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mo&gt;→&lt;/mo&gt;&lt;annotation encoding="application/x-tex"&gt;\longrightarrow&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; 后处理。&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;输入检查（data check）通过，不代表已经进行了完整求解；外层进程正常结束，也不代表内部求解成功。系统需要同时检查求解日志、锁文件状态和完成标记，再确认 ODB 中存在所需分析步与结果。&lt;/p&gt;&#10;&lt;p&gt;每次尝试使用独立的 attempt（运行尝试）目录，避免旧产物被误认为本次成功结果。记录中还应保留输入文件身份、所选公差行、使用的子结构库、软件版本、CPU 和内存设置、阶段耗时以及错误位置。这些元数据往往比一份孤立的结果 CSV 更有价值。&lt;/p&gt;&#10;&lt;h3 id="并行数每任务核心数和内存是三个参数"&gt;并行数、每任务核心数和内存是三个参数&lt;/h3&gt;&#10;&lt;p&gt;中央处理器（Central Processing Unit，CPU）的每任务核心数不等于同时运行的 case 数。若每个作业使用 &lt;math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;annotation encoding="application/x-tex"&gt;c&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; 核，最多同时运行 &lt;math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mi&gt;p&lt;/mi&gt;&lt;annotation encoding="application/x-tex"&gt;p&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; 个重计算任务，至少需要满足 &lt;math display="block" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;p&lt;/mi&gt;&lt;mspace width="0.167em"&gt;&lt;/mspace&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;mrow&gt;&lt;mi mathvariant="normal"&gt;a&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;v&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;a&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;i&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;l&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;a&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;b&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;l&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;e&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mspace width="2.0em"&gt;&lt;/mspace&gt;&lt;munder&gt;&lt;mo&gt;∑&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi mathvariant="script"&gt;𝒜&lt;/mi&gt;&lt;/mrow&gt;&lt;/munder&gt;&lt;msub&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mrow&gt;&lt;mi mathvariant="normal"&gt;b&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;u&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;d&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;g&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;e&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;t&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;\begin{equation}&#10; p\,c\le C_{\mathrm{available}},\qquad&#10; \sum_{k\in\mathcal{A}} M_k\le M_{\mathrm{budget}},&#10;\end{equation}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; 其中 &lt;math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mi mathvariant="script"&gt;𝒜&lt;/mi&gt;&lt;annotation encoding="application/x-tex"&gt;\mathcal{A}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; 是活动作业集合，&lt;math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;M&lt;/mi&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding="application/x-tex"&gt;M_k&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; 是用于调度评估的任务内存预算。软件的内存百分比是作业配置上限，不是实测峰值，也不是操作系统已经为它预留的物理内存。前处理、后处理、网格导出和文件缓存同样需要余量。&lt;/p&gt;&#10;&lt;p&gt;协调器可以用 Python 线程等待外部进程，但真正的有限元计算由多个独立求解器进程完成。为每条搜索路径各建一个大线程池，会导致并行数相乘；更合适的方式是用一条全局队列，分别限制网格导出、子结构生成和整体求解的并发。&lt;/p&gt;&#10;&lt;h3 id="恢复不是删除锁文件"&gt;恢复不是删除锁文件&lt;/h3&gt;&#10;&lt;p&gt;Notebook 内核中断后，外部求解器可能仍在运行。恢复之前必须判断旧任务是否存活，不能仅靠一个状态文件或随手删除 &lt;code&gt;.lck&lt;/code&gt; 来决定重复提交。已经完成的样本应复用，失败或未知的样本应有显式重试选项。&lt;/p&gt;&#10;&lt;p&gt;同时，配置改变需要分层看待。仅调整调度并发，可以在安全停止后继续使用相同物理结果；如果摩擦、插入终点、制造公差、模型或相关代码的身份改变，就不能把新结果混进旧批次。对输入做哈希并冻结配置，可以把这条原则变成系统检查，而不是依赖操作者记忆。&lt;/p&gt;&#10;&lt;h2 id="接触性能先把指标定义清楚"&gt;接触性能：先把指标定义清楚&lt;/h2&gt;&#10;&lt;p&gt;本文关注的是法向接触性能，而不是把总反力直接当成某一对接触力。对第 &lt;math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;annotation encoding="application/x-tex"&gt;i&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; 对接触，设求解器输出的总法向接触力向量为 &lt;math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;msubsup&gt;&lt;mi mathvariant="bold-italic"&gt;𝑭&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mrow&gt;&lt;mi mathvariant="normal"&gt;n&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;o&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;r&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;m&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;a&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;l&lt;/mi&gt;&lt;/mrow&gt;&lt;/msubsup&gt;&lt;annotation encoding="application/x-tex"&gt;\mathbf{F}^{\mathrm{normal}}_i&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;，当前流程取其全局 Y 分量： &lt;math display="block" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;F&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo form="prefix" stretchy="false"&gt;(&lt;/mo&gt;&lt;mi&gt;u&lt;/mi&gt;&lt;mo form="postfix" stretchy="false"&gt;)&lt;/mo&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo form="prefix" stretchy="true"&gt;|&lt;/mo&gt;&lt;msubsup&gt;&lt;mi mathvariant="bold-italic"&gt;𝑭&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mrow&gt;&lt;mi mathvariant="normal"&gt;n&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;o&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;r&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;m&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;a&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;l&lt;/mi&gt;&lt;/mrow&gt;&lt;/msubsup&gt;&lt;mo form="prefix" stretchy="false"&gt;(&lt;/mo&gt;&lt;mi&gt;u&lt;/mi&gt;&lt;mo form="postfix" stretchy="false"&gt;)&lt;/mo&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;msub&gt;&lt;mi mathvariant="bold-italic"&gt;𝒆&lt;/mi&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;/msub&gt;&lt;mo form="postfix" stretchy="true"&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mo form="prefix" stretchy="false"&gt;|&lt;/mo&gt;&lt;msub&gt;&lt;mrow&gt;&lt;mi mathvariant="normal"&gt;C&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;F&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;N&lt;/mi&gt;&lt;mn mathvariant="normal"&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo form="prefix" stretchy="false"&gt;(&lt;/mo&gt;&lt;mi&gt;u&lt;/mi&gt;&lt;mo form="postfix" stretchy="false"&gt;)&lt;/mo&gt;&lt;mo form="prefix" stretchy="false"&gt;|&lt;/mo&gt;&lt;mi&gt;.&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;\begin{equation}&#10; F_i(u)=\left|\mathbf{F}^{\mathrm{normal}}_i(u)\cdot\mathbf{e}_y\right|&#10; =|\mathrm{CFN2}_i(u)|.&#10;\end{equation}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; 这里的 &lt;code&gt;CFN2&lt;/code&gt; 是法向接触力合力的第二个坐标分量，不是单个节点的接触压力，也不是一般情形下的法向合力模长。初始偏角改变后，必须持续核对全局分量是否仍符合工程指标的定义；不能把分量和向量范数混用。&lt;/p&gt;&#10;&lt;p&gt;在指定最终插入位移 &lt;math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;u&lt;/mi&gt;&lt;mo&gt;⋆&lt;/mo&gt;&lt;/msub&gt;&lt;annotation encoding="application/x-tex"&gt;u_\star&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; 处，定义 &lt;math display="block" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;F&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;min&lt;/mi&gt;&lt;/msub&gt;&lt;mo form="prefix" stretchy="false"&gt;(&lt;/mo&gt;&lt;mi mathvariant="bold-italic"&gt;𝒒&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi mathvariant="bold-italic"&gt;𝝃&lt;/mi&gt;&lt;mo form="postfix" stretchy="false"&gt;)&lt;/mo&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;munder&gt;&lt;mi mathvariant="normal"&gt;min&lt;/mi&gt;&lt;mrow&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/munder&gt;&lt;msub&gt;&lt;mi&gt;F&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo form="prefix" stretchy="false"&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;u&lt;/mi&gt;&lt;mo&gt;⋆&lt;/mo&gt;&lt;/msub&gt;&lt;mo form="postfix" stretchy="false"&gt;)&lt;/mo&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mspace width="2.0em"&gt;&lt;/mspace&gt;&lt;mi&gt;g&lt;/mi&gt;&lt;mo form="prefix" stretchy="false"&gt;(&lt;/mo&gt;&lt;mi mathvariant="bold-italic"&gt;𝒒&lt;/mi&gt;&lt;mo&gt;;&lt;/mo&gt;&lt;mi mathvariant="bold-italic"&gt;𝝃&lt;/mi&gt;&lt;mo form="postfix" stretchy="false"&gt;)&lt;/mo&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;F&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;min&lt;/mi&gt;&lt;/msub&gt;&lt;mo form="prefix" stretchy="false"&gt;(&lt;/mo&gt;&lt;mi mathvariant="bold-italic"&gt;𝒒&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi mathvariant="bold-italic"&gt;𝝃&lt;/mi&gt;&lt;mo form="postfix" stretchy="false"&gt;)&lt;/mo&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;F&lt;/mi&gt;&lt;mrow&gt;&lt;mi mathvariant="normal"&gt;c&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;r&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;i&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;t&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mi&gt;.&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;\begin{equation}&#10; F_{\min}(\mathbf q,\boldsymbol\xi)=\min_{1\le i\le n_c}F_i(u_\star),\qquad&#10; g(\mathbf q;\boldsymbol\xi)=F_{\min}(\mathbf q,\boldsymbol\xi)-F_{\mathrm{crit}}.&#10;\end{equation}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; 其中 &lt;math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;/msub&gt;&lt;annotation encoding="application/x-tex"&gt;n_c&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; 是需要检查的接触对数量，&lt;math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;F&lt;/mi&gt;&lt;mrow&gt;&lt;mi mathvariant="normal"&gt;c&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;r&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;i&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;t&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;annotation encoding="application/x-tex"&gt;F_{\mathrm{crit}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; 是配置中的工程阈值。&lt;math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;g&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;g&amp;lt;0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; 表示至少一对接触低于阈值；&lt;math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;g&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;g\ge0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; 表示本次已验证终点上的各对接触均达到阈值。本文不公开实际项目的阈值、插入终点或尺寸标定值。&lt;/p&gt;&#10;&lt;p&gt;每个 case 按自己的最小值排名，再比较不同 case 的最小值。最弱接触对可以随公差或姿态改变，不能先选定一对、再一直盯着它搜索。输出逗号分隔值（Comma-Separated Values，CSV）时，同时保存全部通道的曲线、终点值和最弱对身份，便于检查排名为什么变化。&lt;/p&gt;&#10;&lt;p&gt;还有一个比取最小值更重要的前提：&lt;strong&gt;终点必须真的到达。&lt;/strong&gt;系统应核对最终分析步、步时间、插入位移及通道数量。一个只算到中途的低力值不能进入正常失效排名；缺失通道也不能用零填充。&lt;/p&gt;&#10;&lt;h2 id="寻找应用边界而不只是最差样本"&gt;寻找应用边界，而不只是最差样本&lt;/h2&gt;&#10;&lt;h3 id="先改变初始姿态再插入"&gt;先改变初始姿态，再插入&lt;/h3&gt;&#10;&lt;p&gt;若目标是“歪着插进去”，就不应先完全插入，再给一个转角。两者的接触路径不同。在固定制造公差 &lt;math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mi mathvariant="bold-italic"&gt;𝝃&lt;/mi&gt;&lt;annotation encoding="application/x-tex"&gt;\boldsymbol\xi&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; 后，我使用以下坐标约定： &lt;math display="block" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi mathvariant="bold-italic"&gt;𝒙&lt;/mi&gt;&lt;mrow&gt;&lt;mi mathvariant="normal"&gt;p&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;o&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;s&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;e&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;d&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi mathvariant="bold-italic"&gt;𝒄&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;R&lt;/mi&gt;&lt;mo form="prefix" stretchy="false"&gt;(&lt;/mo&gt;&lt;mi&gt;θ&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi mathvariant="bold-italic"&gt;𝒂&lt;/mi&gt;&lt;mo form="postfix" stretchy="false"&gt;)&lt;/mo&gt;&lt;mo form="prefix" maxsize="120%" minsize="120%" stretchy="true"&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi mathvariant="bold-italic"&gt;𝒙&lt;/mi&gt;&lt;mrow&gt;&lt;mi mathvariant="normal"&gt;t&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;o&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;l&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;e&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;r&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;a&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;n&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;c&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;e&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mi mathvariant="bold-italic"&gt;𝒄&lt;/mi&gt;&lt;mo form="postfix" maxsize="120%" minsize="120%" stretchy="true"&gt;)&lt;/mo&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mspace width="0.167em"&gt;&lt;/mspace&gt;&lt;mi mathvariant="bold-italic"&gt;𝒗&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;\begin{equation}&#10; \mathbf{x}_{\mathrm{posed}}=&#10; \mathbf{c}+R(\theta,\mathbf a)&#10; \bigl(\mathbf{x}_{\mathrm{tolerance}}-\mathbf{c}\bigr)&#10; +d\,\mathbf v,&#10;\end{equation}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; 其中 &lt;math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mi mathvariant="bold-italic"&gt;𝒄&lt;/mi&gt;&lt;annotation encoding="application/x-tex"&gt;\mathbf c&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; 是旋转中心，&lt;math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mi mathvariant="bold-italic"&gt;𝒂&lt;/mi&gt;&lt;annotation encoding="application/x-tex"&gt;\mathbf a&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; 是旋转轴单位向量，&lt;math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mi&gt;θ&lt;/mi&gt;&lt;annotation encoding="application/x-tex"&gt;\theta&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; 是初始偏角，&lt;math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mi mathvariant="bold-italic"&gt;𝒗&lt;/mi&gt;&lt;annotation encoding="application/x-tex"&gt;\mathbf v&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; 是全局偏位方向单位向量，&lt;math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;annotation encoding="application/x-tex"&gt;d&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; 为有符号偏位。随后再执行预定插入过程。旋转和平移的顺序是模型定义的一部分，因为它们通常不可交换。&lt;/p&gt;&#10;&lt;p&gt;公端内部已有的局部制造偏移要随整体旋转变换，公端子结构也必须与 CORE 同步改变位置；母端保持不动。参考点、耦合控制点和接口节点都需要进入坐标检查，不能只移动能在屏幕上看到的实体网格。&lt;/p&gt;&#10;&lt;h3 id="纯偏位并行粗扫再细分交叉区间"&gt;纯偏位：并行粗扫，再细分交叉区间&lt;/h3&gt;&#10;&lt;p&gt;零姿态基线通过后，在设定的正负偏位范围内并行粗扫。对按偏位幅值排序的相邻完成点，若 &lt;math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mi&gt;g&lt;/mi&gt;&lt;annotation encoding="application/x-tex"&gt;g&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; 的符号改变，就形成一个已采样交叉区间。细化时不必一次只算二分中点，而可以把区间等分为 &lt;math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;annotation encoding="application/x-tex"&gt;k&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; 份，并行提交最多 &lt;math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;k-1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; 个内部点；任务完成后再更新区间。&lt;/p&gt;&#10;&lt;p&gt;这并不假设“偏位越大，力一定越小”。粗扫发现通过、失效、再次通过时，需要保留多次交叉，并细化相应区间。主要报告从原点出发遇到的首次已采样失效边界，同时保留完整交叉信息。&lt;/p&gt;&#10;&lt;p&gt;终止条件是已发现交叉区间宽度达到偏位精度，或者触及范围、计算预算或未决错误。最终结果是一对已验证的通过点和失效点，不是仅靠插值给出的“精确极限”。若范围内没有发现失效，报告的是“该范围内未找到”，不能把搜索上限写成真实极限。&lt;/p&gt;&#10;&lt;h3 id="偏位与偏角耦合把多条切片放进同一条队列"&gt;偏位与偏角耦合：把多条切片放进同一条队列&lt;/h3&gt;&#10;&lt;p&gt;在二维切片 &lt;math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo form="prefix" stretchy="false"&gt;(&lt;/mo&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;θ&lt;/mi&gt;&lt;mo form="postfix" stretchy="false"&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;(d,\theta)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; 中，首先选取若干初始偏角，每个角度搜索正负偏位边界。多个切片共用队列，某条路径等待求解时，其他路径仍可推进。相邻偏角间距较大，或者边界位置、最弱接触对、切片状态变化明显时，再补充中间偏角。&lt;/p&gt;&#10;&lt;p&gt;图 &lt;a href="#fig-search"&gt;5&lt;/a&gt; 展示了这一流程。它更像&lt;strong&gt;批量自适应区间搜索&lt;/strong&gt;，而不是强化学习。可以画出 &lt;math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;−&lt;/mi&gt;&lt;mo form="prefix" stretchy="false"&gt;|&lt;/mo&gt;&lt;mi&gt;g&lt;/mi&gt;&lt;mo form="prefix" stretchy="false"&gt;|&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;-|g|&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; 一类阈值接近度曲线帮助观察计算过程，但这种辅助分数不替代力学判据，也不意味着算法包含策略学习或价值函数训练。&lt;/p&gt;&#10;&lt;figure data-latex-placement="H" id="fig-search"&gt;&#10;&lt;a href="https://alexchan114.github.io/articles/connector-simulation/fig05_search.png" rel="noopener" target="_blank"&gt;&lt;img alt="并行边界搜索的决策示意。样本完成后更新交叉区间，角度切片按规则加密；未知点不会被画成安全点。该图不包含实际接触力或临界偏角。" decoding="async" loading="lazy" src="https://alexchan114.github.io/articles/connector-simulation/fig05_search.png" style="width:100%;height:auto"/&gt;&lt;/a&gt;&#10;&lt;figcaption&gt;并行边界搜索的决策示意。样本完成后更新交叉区间，角度切片按规则加密；未知点不会被画成安全点。该图不包含实际接触力或临界偏角。&lt;/figcaption&gt;&#10;&lt;/figure&gt;&#10;&lt;p&gt;同一偏角下，不同整体平移不改变子结构的内部刚度关系，因此可考虑复用已验证的该角度子结构库，并在使用层平移实例 &lt;a href="#ref-abaqus-sub"&gt;[1]&lt;/a&gt;。当前工程实现保留“每个不同偏角生成一次公端库”的路线，多个偏位点共享只读缓存。缓存必须校验来源和产物完整性；失败生成任务不能因为留下几个文件就被标记为可用。&lt;/p&gt;&#10;&lt;h3 id="边界图必须说明自己没覆盖什么"&gt;边界图必须说明自己没覆盖什么&lt;/h3&gt;&#10;&lt;p&gt;一个“X 向偏位与绕 Y 偏角”的二维切片，不是所有平移、所有转角同时变化的完整姿态边界。固定某条公差向量的最差边界，也不自动等于随机总体的可靠性边界。如果需要概率结论，还要对制造变量和姿态空间的抽样设计、覆盖范围及统计不确定性另行分析。&lt;/p&gt;&#10;&lt;p&gt;有限粗网格可能漏掉比采样间距更窄的失效孤岛；相邻两个通过点之间也不能被数学证明处处通过。因此，结果图应保留通过/失效区间带、粗扫尺度、加密规则和未知区域，而不是把一条平滑线之外全部涂成“保证安全”。这不是措辞上的保守，而是算法实际能够支持的结论范围。&lt;/p&gt;&#10;&lt;h2 id="我最终会怎样验收这样一套系统"&gt;我最终会怎样验收这样一套系统&lt;/h2&gt;&#10;&lt;div aria-label="数据表，可横向滚动" class="table-scroll" role="region" tabindex="0"&gt;&lt;table&gt;&#10;&lt;caption&gt;批量仿真与边界搜索的分层验收清单。&lt;/caption&gt;&#10;&lt;thead&gt;&#10;&lt;tr&gt;&#10;&lt;th style="text-align: left;"&gt;检查层次&lt;/th&gt;&#10;&lt;th style="text-align: left;"&gt;需要回答的问题&lt;/th&gt;&#10;&lt;/tr&gt;&#10;&lt;/thead&gt;&#10;&lt;tbody&gt;&#10;&lt;tr&gt;&#10;&lt;td style="text-align: left;"&gt;几何与接口&lt;/td&gt;&#10;&lt;td style="text-align: left;"&gt;基准是否被污染？坐标是否按期望变化？固定区域、控制点和接口是否正确？&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td style="text-align: left;"&gt;物理与数值&lt;/td&gt;&#10;&lt;td style="text-align: left;"&gt;材料、接触、预压与插入步骤是否一致？畸变或不合理绑定是否影响结果？&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td style="text-align: left;"&gt;执行与恢复&lt;/td&gt;&#10;&lt;td style="text-align: left;"&gt;检查是否真的通过？求解是否完成？重试是否会重复启动仍存活的作业？&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td style="text-align: left;"&gt;后处理&lt;/td&gt;&#10;&lt;td style="text-align: left;"&gt;接触对身份是否一致？全局分量是否正确？最终时间与位移是否到达？&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td style="text-align: left;"&gt;搜索与解释&lt;/td&gt;&#10;&lt;td style="text-align: left;"&gt;边界是否由完成点支撑？未知点是否独立记录？是否交代预算、精度和覆盖范围？&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;/tbody&gt;&#10;&lt;/table&gt;&lt;/div&gt;&#10;&lt;p&gt;开发阶段可以用已知函数测试采点、并行乱序、区间收敛和恢复逻辑，用小型人工网格测试坐标变换与接口处理，再用真实导出网格检查移动和固定节点。&lt;strong&gt;这些测试证明的是软件行为，不是连接器的物理极限。&lt;/strong&gt;实际部署后，仍需先完成基线、纯偏位和偏位加偏角的小规模完整求解，再扩大范围。&lt;/p&gt;&#10;&lt;p&gt;目前实现已经具备从样本生成到批量后处理的代码链路，以及带缓存、预算和状态恢复的并行姿态搜索入口；新增整体偏位与耦合路径的真实求解验收仍需在匹配的求解环境中进行。本文因此不提供未验证的极限角度、失效概率或速度倍数。&lt;/p&gt;&#10;&lt;h2 class="unnumbered" id="结语把可解释性写进自动化"&gt;结语：把可解释性写进自动化&lt;/h2&gt;&#10;&lt;p&gt;回看整个过程，真正让仿真能够扩展的，不是某一个复杂算法，而是一连串清楚的约定：分区与保留自由度怎么选，幅值如何变成毫米，哪些输入在比较中保持不变，什么才算求解完成，以及边界曲线到底代表哪一块参数空间。&lt;/p&gt;&#10;&lt;p&gt;子结构降低了重复成本；录制 Tcl 把熟悉的 GUI 操作转成了可参数化动作；有界抽样把概率假设变成可复现的输入；统一队列与状态记录把批量运行变成可管理的计算过程；接触指标则把这些样本连接到可解释的边界问题。&lt;strong&gt;让每一条曲线都能回到输入、让每一次失败都有明确类型，比得到一张看起来很顺滑的结果图更重要。&lt;/strong&gt;&lt;/p&gt;&#10;&lt;h2 class="unnumbered" id="复现与公开资料"&gt;复现与公开资料&lt;/h2&gt;&#10;&lt;p&gt;本文配图由独立 Python/Matplotlib 脚本生成，在 Tavotto 中检查与导出，再以矢量 PDF 插入 XeLaTeX 文稿。网站附带的源稿只包含匿名方法说明与演示采样，不读取真实工程文件。版本记录以公开网站仓库为准。&lt;/p&gt;&#10;&lt;h2 id="references"&gt;参考资料&lt;/h2&gt;&lt;ol&gt;&#10;&lt;li id="ref-abaqus-sub"&gt;&lt;p&gt;Dassault Systèmes. &lt;em&gt;Using Substructures&lt;/em&gt;. Abaqus documentation. &lt;a class="uri" href="https://docs.software.vt.edu/abaqusv2025/English/SIMACAEANLRefMap/simaanl-c-superelements.htm"&gt;https://docs.software.vt.edu/abaqusv2025/English/SIMACAEANLRefMap/simaanl-c-superelements.htm&lt;/a&gt;. 方法原理参考；API 与实际安装版本需分别核对。&lt;/p&gt;&lt;/li&gt;&#10;&lt;li id="ref-abaqus-tie"&gt;&lt;p&gt;Dassault Systèmes. &lt;em&gt;Mesh Tie Constraints&lt;/em&gt;. Abaqus documentation. &lt;a class="uri" href="https://docs.software.vt.edu/abaqusv2025/English/SIMACAECSTRefMap/simacst-c-tiedconstraint.htm"&gt;https://docs.software.vt.edu/abaqusv2025/English/SIMACAECSTRefMap/simacst-c-tiedconstraint.htm&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;&#10;&lt;li id="ref-mckay"&gt;&lt;p&gt;McKay, M. D., Beckman, R. J., Conover, W. J. (1979). A Comparison of Three Methods for Selecting Values of Input Variables in the Analysis of Output from a Computer Code. &lt;em&gt;Technometrics&lt;/em&gt;, 21(2), 239–245. &lt;a class="uri" href="https://doi.org/10.1080/00401706.1979.10489755"&gt;https://doi.org/10.1080/00401706.1979.10489755&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;&#10;&lt;li id="ref-sobol"&gt;&lt;p&gt;Sobol’, I. M. (1967). On the distribution of points in a cube and the approximate evaluation of integrals. &lt;em&gt;USSR Computational Mathematics and Mathematical Physics&lt;/em&gt;, 7(4), 86–112. &lt;a class="uri" href="https://doi.org/10.1016/0041-5553(67)90144-9"&gt;https://doi.org/10.1016/0041-5553(67)90144-9&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;&#10;&lt;li id="ref-halton"&gt;&lt;p&gt;Halton, J. H. (1960). On the efficiency of certain quasi-random sequences of points in evaluating multi-dimensional integrals. &lt;em&gt;Numerische Mathematik&lt;/em&gt;, 2, 84–90. &lt;a class="uri" href="https://doi.org/10.1007/BF01386213"&gt;https://doi.org/10.1007/BF01386213&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;&#10;&lt;li id="ref-scipy-qmc"&gt;&lt;p&gt;SciPy. &lt;em&gt;Quasi-Monte Carlo submodule: scipy.stats.qmc&lt;/em&gt;. &lt;a class="uri" href="https://docs.scipy.org/doc/scipy/reference/stats.qmc.html"&gt;https://docs.scipy.org/doc/scipy/reference/stats.qmc.html&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;&#10;&lt;li id="ref-tavotto"&gt;&lt;p&gt;Tavotto. &lt;em&gt;Technology: script, editable figure, replay and export&lt;/em&gt;. &lt;a class="uri" href="https://www.tavotto.com/technology/"&gt;https://www.tavotto.com/technology/&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p class="article-downloads"&gt;&lt;a href="https://alexchan114.github.io/articles/connector-simulation/connector-simulation.pdf"&gt;中文 PDF&lt;/a&gt; · &lt;a href="https://alexchan114.github.io/articles/connector-simulation/connector-simulation.en.pdf"&gt;English PDF&lt;/a&gt; · &lt;a href="https://alexchan114.github.io/articles/connector-simulation/connector-simulation-sources-bilingual.zip"&gt;中英文 LaTeX 与配图源文件&lt;/a&gt;&lt;/p&gt;&lt;/article&gt;</description></item><item><title>让 Agent 跑通 CAE：连接 HyperMesh、Abaqus 与 ParaView</title><link>https://alexchan114.github.io/post/2026/10/18/cae-mcp/</link><pubDate>Sun, 18 Oct 2026 00:00:00 +0800</pubDate><guid>https://alexchan114.github.io/post/2026/10/18/cae-mcp/</guid><description>&lt;article class="cae-article"&gt;&#10;&lt;p class="article-downloads"&gt;&lt;a href="https://alexchan114.github.io/assets/cae-mcp/cae-mcp.pdf"&gt;PDF 阅读&lt;/a&gt; · &lt;a href="https://alexchan114.github.io/assets/cae-mcp/cae-mcp-sources-bilingual.zip"&gt;LaTeX / Tavotto 图源与数据&lt;/a&gt; · &lt;a href="https://alexchan114.github.io/assets/cae-mcp/engineering-query.txt"&gt;完整 query 整理版&lt;/a&gt; · &lt;a href="https://alexchan114.github.io/assets/cae-mcp/task_metrics.csv"&gt;实测统计 CSV&lt;/a&gt;&lt;/p&gt;&lt;blockquote&gt;&#10;&lt;p&gt;给 Agent 一个端子模型和两步加载要求，它能否检查模型、安排计算资源、完成求解，再交回可核对的曲线与云图？这个项目把 HyperMesh、Abaqus 和 ParaView 连接为三个 MCP 服务，在一个真实端子接触案例上跑通了这条链路。三组独立实测均完成两步计算；启用 MCP 与工程规程的一组耗时 21.82 分钟，得到 108 帧结果与约 1.434141 N 的驱动力峰值。&lt;/p&gt;&#10;&lt;/blockquote&gt;&lt;nav class="article-toc" aria-label="文章目录"&gt;&lt;details&gt;&lt;summary&gt;文章目录（12 节）&lt;/summary&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="#从一句工况描述开始"&gt;从一句工况描述开始&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#三个-mcp54-个工具"&gt;三个 MCP，54 个工具&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#长任务需要持久状态与实际文件"&gt;长任务需要持久状态与实际文件&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#把-odb-转换做成独立的-c-工具"&gt;把 ODB 转换做成独立的 C++ 工具&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#计算资源如何自动选择"&gt;计算资源如何自动选择&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#报错以后先读证据再生成新输入"&gt;报错以后，先读证据，再生成新输入&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#材料与截面库以及-skill-的位置"&gt;材料与截面库，以及 Skill 的位置&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#端子案例从模型检查到后处理"&gt;端子案例：从模型检查到后处理&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#三组独立实测都完成了差别在哪里"&gt;三组独立实测：都完成了，差别在哪里&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#完成计算以后仍需保留哪些工程事实"&gt;完成计算以后，仍需保留哪些工程事实&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#输入query-与可复核资料"&gt;输入、query 与可复核资料&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#实现所依据的原生接口"&gt;实现所依据的原生接口&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/details&gt;&lt;/nav&gt;&#10;&lt;h2 id="从一句工况描述开始"&gt;从一句工况描述开始&lt;/h2&gt;&#10;&lt;p&gt;传统 CAE 自动化通常从一段脚本开始：导入模型、定义集合、提交作业、提取结果。Agent 让脚本生成变得容易，但工程任务的难点往往出现在脚本之外：口述里的“右端”对应哪个区域，应用进程退出是否意味着求解成功，外推节点应力能否与积分点应力直接比较，失败后改了什么，以及下一步究竟应该读取哪个文件。&lt;/p&gt;&#10;&lt;p&gt;我把这些问题作为工具接口的一部分。Agent 解释目标并选择动作；工具检查输入、调用原生应用、保存日志并返回实际产物。本文重点是执行的可靠性和可追溯性，数值结果均来自已完成的工程任务，测量日期为 2026 年 10 月 12 日。&lt;/p&gt;&#10;&lt;p&gt;端子案例的要求可以概括为：保留已有材料、截面与网格，固定 male 根部和 shield 根部，plate 先沿全局 &lt;math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;+&lt;/mi&gt;&lt;mi&gt;Y&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;+Y&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; 预压 &lt;math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;0.3348&lt;/mn&gt;&lt;mspace width="0.167em"&gt;&lt;/mspace&gt;&lt;mrow&gt;&lt;mi mathvariant="normal"&gt;m&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;m&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;0.3348\,\mathrm{mm}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;，再与 female 一起沿全局 &lt;math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;−&lt;/mi&gt;&lt;mi&gt;Z&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;-Z&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; 移动 &lt;math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;10&lt;/mn&gt;&lt;mspace width="0.167em"&gt;&lt;/mspace&gt;&lt;mrow&gt;&lt;mi mathvariant="normal"&gt;m&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;m&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;10\,\mathrm{mm}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;，摩擦系数为 0.13。这里的位置、方向和集合均经过确认。对新的“左边”“向下”等模糊描述，先展示候选区域与坐标解释，确认后再修改工况。&lt;/p&gt;&#10;&lt;h2 id="三个-mcp54-个工具"&gt;三个 MCP，54 个工具&lt;/h2&gt;&#10;&lt;p&gt;MCP 提供 Agent 调用工具的协议。这个项目按应用分成三个服务，共用执行底座：HyperMesh 负责几何和网格，Abaqus 负责模型、求解与 ODB，ParaView 负责结果检查和可视化。&lt;/p&gt;&#10;&lt;figure data-latex-placement="H"&gt;&#10;&lt;a href="https://alexchan114.github.io/assets/cae-mcp/architecture.png" target="_blank" rel="noopener" aria-label="查看architecture原图"&gt;&lt;img src="https://alexchan114.github.io/assets/cae-mcp/architecture.png" width="1980" height="1144" loading="lazy" decoding="async" alt="Agent、三个原生应用 MCP 与共享 dispatcher 的架构" /&gt;&lt;/a&gt;&#10;&lt;figcaption&gt;按原生应用划分工具边界，底层共享任务状态、输入快照和产物记录。本文示意图与统计图均由可编辑脚本交给 Tavotto 执行、合版并导出。&lt;/figcaption&gt;&#10;&lt;/figure&gt;&#10;&lt;div class="table-scroll" role="region" tabindex="0" aria-label="数据表，可横向滚动"&gt;&lt;table&gt;&#10;&lt;caption&gt;服务范围与已经实现的能力&lt;/caption&gt;&#10;&lt;thead&gt;&#10;&lt;tr&gt;&#10;&lt;th style="text-align: left;"&gt;服务&lt;/th&gt;&#10;&lt;th style="text-align: right;"&gt;工具数&lt;/th&gt;&#10;&lt;th style="text-align: left;"&gt;能力&lt;/th&gt;&#10;&lt;/tr&gt;&#10;&lt;/thead&gt;&#10;&lt;tbody&gt;&#10;&lt;tr&gt;&#10;&lt;td style="text-align: left;"&gt;HyperMesh&lt;/td&gt;&#10;&lt;td style="text-align: right;"&gt;13&lt;/td&gt;&#10;&lt;td style="text-align: left;"&gt;STEP 导入、HM 检查、平面切分、四面体网格、Abaqus INP 导出和高级 Tcl。&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td style="text-align: left;"&gt;Abaqus&lt;/td&gt;&#10;&lt;td style="text-align: right;"&gt;29&lt;/td&gt;&#10;&lt;td style="text-align: left;"&gt;材料与截面库、区域检查、工况准备、资源计划、提交求解、错误诊断、修复、ODB 检查及转换。&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td style="text-align: left;"&gt;ParaView&lt;/td&gt;&#10;&lt;td style="text-align: right;"&gt;12&lt;/td&gt;&#10;&lt;td style="text-align: left;"&gt;数据数组与帧检查、渲染、切片、线采样、图片返回和高级 Python。&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;/tbody&gt;&#10;&lt;/table&gt;&lt;/div&gt;&#10;&lt;p&gt;每个服务包含六个通用工具：能力检测、任务状态、任务列表、产物列表、日志读取和取消。因此 54 是工具总数，包含按服务提供的通用管理接口，不能理解为 54 种独立求解算法。完整清单随文章源码提供。&lt;/p&gt;&#10;&lt;p&gt;应用脚本在各自的运行环境执行：HyperMesh 2017 使用 Tcl；Abaqus 2025 使用自己的 Python 或 C++ SDK；ParaView 6.1 使用 &lt;code&gt;pvpython&lt;/code&gt;。普通 Python 服务处理协议、排队和输入检查，避免直接混用商业软件的二进制 API 与解释器。&lt;/p&gt;&#10;&lt;p&gt;为什么保留三个 MCP？因为几何、求解和后处理有不同的输入契约、运行时和失败方式。资源管理则放进 Abaqus 服务，避免多个服务分别计算、重复占用同一份求解预算。独立 ODB2VTK 也可以绕过 MCP 直接使用。&lt;/p&gt;&#10;&lt;h2 id="长任务需要持久状态与实际文件"&gt;长任务需要持久状态与实际文件&lt;/h2&gt;&#10;&lt;p&gt;工具受理一个长任务后返回 &lt;code&gt;job_id&lt;/code&gt;，而非阻塞到求解结束。后台 dispatcher 独立管理执行进程，客户端通过状态工具继续跟踪。只有任务进入 &lt;code&gt;succeeded&lt;/code&gt;，才能把返回的真实产物路径交给下游；&lt;code&gt;queued&lt;/code&gt; 和 &lt;code&gt;running&lt;/code&gt; 都不表示完成。&lt;/p&gt;&#10;&lt;p&gt;每次任务保存请求、设置快照、原生脚本、日志、状态和结果索引。INP 依赖的 INCLUDE 文件递归复制，并记录 SHA256。资源计划也绑定输入闭包；排队期间源文件变化时，原计划不能静默用于新的输入。源模型保持只读，修复和重试产生新文件。&lt;/p&gt;&#10;&lt;p&gt;Abaqus 的完整成功检查同时要求原生完成标记、两步到达指定终点，以及非空、已关闭的新 ODB。ODB 文件存在，或者某个增量收敛，都不足以说明完整任务完成。ParaView 还要核对真实数组、帧数和取值范围，不能只交一张看起来合理的图片。&lt;/p&gt;&#10;&lt;p&gt;Windows 上还有进程生命周期问题：客户端退出可能连带结束其子进程。独立 dispatcher 的意义是让已经受理的求解不依附于一次工具调用的连接寿命。它承担本地执行管理，不替代操作系统或集群调度器。&lt;/p&gt;&#10;&lt;h2 id="把-odb-转换做成独立的-c-工具"&gt;把 ODB 转换做成独立的 C++ 工具&lt;/h2&gt;&#10;&lt;p&gt;ODB2VTK 使用 Abaqus 官方 C++ ODB API，通过 &lt;a href="https://docs.software.vt.edu/abaqusv2025/English/SIMACAECMDRefMap/simacmd-c-odbintrobulkdatacpp.htm"&gt;&lt;code&gt;bulkDataBlocks()&lt;/code&gt;&lt;/a&gt; 连续读取字段，避免逐个 FieldValue 对象访问。网格、节点标签映射和 section assignment 只构造一次，跨帧复用。输出采用二进制 VTU，并用 PVD 索引选定帧。&lt;/p&gt;&#10;&lt;p&gt;命令行支持 &lt;code&gt;inspect&lt;/code&gt;、&lt;code&gt;menu&lt;/code&gt; 和 &lt;code&gt;convert&lt;/code&gt;。未显式指定时，从 ODB 检测最后一个有帧的分析步、末帧、所有非空实例，以及存在的 &lt;code&gt;U&lt;/code&gt; 和 &lt;code&gt;S:MISES&lt;/code&gt;。也能选择多个分析步、帧列表或范围、section point、输出位置、变形倍率和复数实部或虚部。&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;.\native\odb2vtk\odb2vtk.cmd inspect --odb &amp;quot;input.odb&amp;quot;&#10;.\native\odb2vtk\odb2vtk.cmd menu --odb &amp;quot;input.odb&amp;quot;&#10;.\native\odb2vtk\odb2vtk.cmd convert --odb &amp;quot;input.odb&amp;quot; --step all --frames all --fields &amp;quot;U,S:MISES&amp;quot; --avg 75 --regions section --output &amp;quot;exports\terminal&amp;quot;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;p&gt;转换结果包含逐帧 VTU、&lt;code&gt;collection.pvd&lt;/code&gt; 和 &lt;code&gt;manifest.json&lt;/code&gt;。ODB 按只读打开，缺失值保留 NaN，未知单元默认报错，旧 ODB 不会被隐式升级。Windows 启动器负责设置当前进程的 Abaqus DLL 搜索路径；迁移机器时仍需匹配的原生运行库。&lt;/p&gt;&#10;&lt;h3 id="avg-75-的关键是区域和计算顺序"&gt;Avg 75 的关键是区域和计算顺序&lt;/h3&gt;&#10;&lt;p&gt;依照 &lt;a href="https://docs.software.vt.edu/abaqusv2025/English/SIMACAECAERefMap/simacae-c-resconceptaverage.htm"&gt;Abaqus/CAE 的默认区域定义&lt;/a&gt;，这里的平均区域是实际 &lt;strong&gt;section assignment&lt;/strong&gt;，不是仅按材料名或 section 名合并。两个 assignment 即使引用相同 section，也保留各自边界。缺少 assignment 的单元被隔离并报告，避免猜测连续区域。&lt;/p&gt;&#10;&lt;p&gt;对 Mises 等标量，处理顺序是：外推张量到单元节点，计算标量，再按区域和阈值决定是否平均。对某一节点的有效贡献值，差异百分比定义为 &lt;math display="block" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;v&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;100&lt;/mn&gt;&lt;mfrac&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;max&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;min&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi mathvariant="normal"&gt;max&lt;/mi&gt;&lt;mo&gt;&amp;#8289;&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;R&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi mathvariant="normal"&gt;min&lt;/mi&gt;&lt;mo&gt;&amp;#8289;&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mi&gt;R&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mfrac&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;v=100\frac{s_{\max}-s_{\min}}&#10;{S_{\max,R}-S_{\min,R}},&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; 其中分母取当前平均区域内全部有效外推值的范围，分子取该节点的贡献范围。在非退化区域内，&lt;math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;v&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mn&gt;75&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;v&amp;lt;75&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; 时做等权平均；等于阈值时保留不连续值。区域范围为零且贡献相等时，正阈值允许平均。阈值为 0 或 off 则关闭平均。&lt;/p&gt;&#10;&lt;figure data-latex-placement="H"&gt;&#10;&lt;a href="https://alexchan114.github.io/assets/cae-mcp/averaging.png" target="_blank" rel="noopener" aria-label="查看averaging原图"&gt;&lt;img src="https://alexchan114.github.io/assets/cae-mcp/averaging.png" width="1980" height="759" loading="lazy" decoding="async" alt="外推张量、计算标量、按 section assignment 和 Avg75 阈值平均" /&gt;&lt;/a&gt;&#10;&lt;figcaption&gt;先计算标量、再测试阈值。跨 assignment 或拒绝平均的位置保留独立的共位点，NodeLabel 仍能追溯原 ODB 节点。&lt;/figcaption&gt;&#10;&lt;/figure&gt;&#10;&lt;p&gt;结果数组包括 &lt;code&gt;S_MISES_Avg&lt;/code&gt;、差异百分比、是否实际平均以及 &lt;code&gt;SectionAssignmentId&lt;/code&gt;。后处理阶段不再插入 Clean/Merge Points，也不额外做 Cell Data to Point Data，避免抹去导出时保留的边界。&lt;/p&gt;&#10;&lt;p&gt;这实现了 section assignment 下的 scalar-before-average；壳/膜 feature-edge 附加边界和 tensor-after-average 模式没有在这里复刻。积分点结果与外推节点显示值也必须分开：同一末帧的原积分点最大 Mises 为约 644.00 MPa，而 Avg 75 外推节点显示峰值约为 1355.07 MPa，两者不是同一个测量位置。&lt;/p&gt;&#10;&lt;h2 id="计算资源如何自动选择"&gt;计算资源如何自动选择&lt;/h2&gt;&#10;&lt;p&gt;资源工具先扫描 INP、INCLUDE 和装配实例，读取节点数、单元类型、分析过程、接触和 NLGEOM。重复实例按实际装配规模计数。对本例实体网格，用 &lt;math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;msub&gt;&lt;mi&gt;N&lt;/mi&gt;&lt;mrow&gt;&lt;mi mathvariant="normal"&gt;n&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;o&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;d&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;e&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;3N_{\mathrm{node}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; 作为自由度规模代理；存在接触时乘以 1.5，得到加权规模 &lt;math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mi&gt;D&lt;/mi&gt;&lt;annotation encoding="application/x-tex"&gt;D&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;。它不是约束消元后的真实方程数。&lt;/p&gt;&#10;&lt;p&gt;CPU 基础档位为 &lt;math display="block" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;mo stretchy="false" form="prefix"&gt;(&lt;/mo&gt;&lt;mi&gt;D&lt;/mi&gt;&lt;mo stretchy="false" form="postfix"&gt;)&lt;/mo&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo stretchy="true" form="prefix"&gt;{&lt;/mo&gt;&lt;mtable&gt;&lt;mtr&gt;&lt;mtd columnalign="left" style="text-align: left"&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;/mtd&gt;&lt;mtd columnalign="left" style="text-align: left"&gt;&lt;mi&gt;D&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mn&gt;50&lt;/mn&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mn&gt;000&lt;/mn&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;mtr&gt;&lt;mtd columnalign="left" style="text-align: left"&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;/mtd&gt;&lt;mtd columnalign="left" style="text-align: left"&gt;&lt;mn&gt;50&lt;/mn&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mn&gt;000&lt;/mn&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;D&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mn&gt;200&lt;/mn&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mn&gt;000&lt;/mn&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;mtr&gt;&lt;mtd columnalign="left" style="text-align: left"&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;/mtd&gt;&lt;mtd columnalign="left" style="text-align: left"&gt;&lt;mn&gt;200&lt;/mn&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mn&gt;000&lt;/mn&gt;&lt;mo&gt;≤&lt;/mo&gt;&lt;mi&gt;D&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mn&gt;750&lt;/mn&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mn&gt;000&lt;/mn&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;mtr&gt;&lt;mtd columnalign="left" style="text-align: left"&gt;&lt;mn&gt;8&lt;/mn&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;/mtd&gt;&lt;mtd columnalign="left" style="text-align: left"&gt;&lt;mi&gt;D&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mn&gt;750&lt;/mn&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mn&gt;000&lt;/mn&gt;&lt;mi&gt;.&lt;/mi&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;c_0(D)=\begin{cases}&#10;1,&amp;amp;D&amp;lt;50{,}000,\\&#10;2,&amp;amp;50{,}000\le D&amp;lt;200{,}000,\\&#10;4,&amp;amp;200{,}000\le D&amp;lt;750{,}000,\\&#10;8,&amp;amp;D\ge750{,}000.&#10;\end{cases}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; 最终档位还受物理核、项目预算、用户限制和已配置的许可证额度约束。内存上限按规模采用 15%、30%、50% 档位，并结合可用内存和共享预算裁剪。&lt;code&gt;abaqus_plan_resources&lt;/code&gt; 只生成计划，&lt;code&gt;abaqus_submit_job&lt;/code&gt; 消费计划并在启动时再次核验。&lt;/p&gt;&#10;&lt;figure data-latex-placement="H"&gt;&#10;&lt;a href="https://alexchan114.github.io/assets/cae-mcp/resources.png" target="_blank" rel="noopener" aria-label="查看resources原图"&gt;&lt;img src="https://alexchan114.github.io/assets/cae-mcp/resources.png" width="1980" height="748" loading="lazy" decoding="async" alt="按加权自由度分档的资源规则及输入绑定和预算预留" /&gt;&lt;/a&gt;&#10;&lt;figcaption&gt;左图是资源规则的计算结果，不是多核加速实测。右图说明计划如何绑定输入、预留预算并进入原生求解。&lt;/figcaption&gt;&#10;&lt;/figure&gt;&#10;&lt;p&gt;本例选取 2 CPU、15% 内存上限。比较实验也给所有组相同的上限，使用纯线程配置，避免把资源差异混入工具比较。共享预留保证本工具启动的并发求解满足 CPU 和内存总预算；预算不足则排队，任务结束后释放。&lt;/p&gt;&#10;&lt;p&gt;这是一套透明、可解释的初始分配规则，还没有通过多规模、多 CPU 档位的重复实验寻找最优值。根据 &lt;a href="https://docs.software.vt.edu/abaqusv2025/English/SIMACAEEXCRefMap/simaexc-c-analysisproc.htm"&gt;Abaqus 作业参数定义&lt;/a&gt;，Standard 的 memory 是可分配上限；Explicit 分析阶段的实际内存也不能按同一个参数理解。系统不接管外部启动的求解，也没有把配置中的许可证上限冒充为实时许可证池查询。&lt;/p&gt;&#10;&lt;h2 id="报错以后先读证据再生成新输入"&gt;报错以后，先读证据，再生成新输入&lt;/h2&gt;&#10;&lt;p&gt;&lt;code&gt;abaqus_diagnose_job&lt;/code&gt; 读取真正的 &lt;code&gt;.dat&lt;/code&gt;、&lt;code&gt;.msg&lt;/code&gt;、&lt;code&gt;.sta&lt;/code&gt; 和日志，返回有界原文、文件哈希、分类以及适用的修复动作。未知错误保留未知，不凭关键词猜一个“万能修复”。&lt;/p&gt;&#10;&lt;p&gt;&lt;code&gt;abaqus_repair_job&lt;/code&gt; 的自动范围刻意收窄：在有诊断依据时降低初始静力增量或提高最大增量数，保存新 INP、差异和修改清单，再做资源计划与 datacheck。它不改变总载荷、材料、摩擦、固定位置或总步长。涉及物理条件的改动仍需明确确认。&lt;/p&gt;&#10;&lt;p&gt;端子产品组第一次 datacheck 实际遇到的是空节点面定义。Agent 根据原生日志确认该空 surface 未被使用，通过高级脚本注释该定义、移除一处空行，保留修改差异，再通过检查并完成求解。这次修复体现的是诊断工具与原生脚本协作，不能把它描述成受限数值修复工具已经覆盖所有语法问题。&lt;/p&gt;&#10;&lt;h2 id="材料与截面库以及-skill-的位置"&gt;材料与截面库，以及 Skill 的位置&lt;/h2&gt;&#10;&lt;p&gt;已有材料可能来自 INP、CAE 或 HyperMesh 模型。库工具采用“提取预览、再提交”的方式导入，保存原始 keyword、声明单位、来源和修订记录。更新记录时要求 &lt;code&gt;expected_revision&lt;/code&gt;，截面引用指定材料修订，避免一次覆盖让历史任务失去原参数。导出时再把库内定义绑定到明确的 ELSET；单位不会被静默换算。&lt;/p&gt;&#10;&lt;p&gt;现有四面体工况模板支持其定义范围内的均质实体截面。复合截面、未知 keyword 或无法解析的方向定义会拒绝或报告遗漏。本文端子模型沿用原材料与截面，未为其补造演示弹性参数。&lt;/p&gt;&#10;&lt;p&gt;Skill 解决的是编排规程：先检查单位和集合，遇到模糊空间描述先确认，等待长任务成功，再使用实际产物，保持平均边界，解释原生警告，并保留失败尝试。它让 Agent 更稳定地使用已有工具；确定性校验仍留在 MCP 内，避免只靠提示词维持正确性。对比中的产品组同时启用了 MCP 和工程规程，实验没有单独隔离 Skill 的贡献。&lt;/p&gt;&#10;&lt;h2 id="端子案例从模型检查到后处理"&gt;端子案例：从模型检查到后处理&lt;/h2&gt;&#10;&lt;p&gt;输入是一份已有网格的单对端子 INP，以及从整体装配提取的 HM 伴随模型。一件 female 对两片 male，另含 shield 与 prepress plate。INP 是网格编号、材料、截面及八对接触定义的权威来源，HM 用于原生模型检查；两者的节点编号不互相替代。&lt;/p&gt;&#10;&lt;p&gt;模型有 11,240 个 C3D10M 单元。male 根部两个集合各 21 个节点，shield 根部 159 个节点，共固定 201 个根部节点。female 通过 72 个节点的控制区域与 RP 耦合；plate 节点面含 1061 个节点，并耦合到独立 RP。&lt;/p&gt;&#10;&lt;div class="table-scroll" role="region" tabindex="0" aria-label="数据表，可横向滚动"&gt;&lt;table&gt;&#10;&lt;caption&gt;已经确认的两步工况，采用 mm–N–MPa 单位与全局坐标&lt;/caption&gt;&#10;&lt;thead&gt;&#10;&lt;tr&gt;&#10;&lt;th style="text-align: left;"&gt;设置&lt;/th&gt;&#10;&lt;th style="text-align: left;"&gt;数值或定义&lt;/th&gt;&#10;&lt;/tr&gt;&#10;&lt;/thead&gt;&#10;&lt;tbody&gt;&#10;&lt;tr&gt;&#10;&lt;td style="text-align: left;"&gt;Prepress&lt;/td&gt;&#10;&lt;td style="text-align: left;"&gt;plate 的 &lt;math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;U&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;+&lt;/mi&gt;&lt;mn&gt;0.3348&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;U_2=+0.3348&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; mm，&lt;math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;U&lt;/mi&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;U_3=0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;；female 保持不动。&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td style="text-align: left;"&gt;Insertion&lt;/td&gt;&#10;&lt;td style="text-align: left;"&gt;保持 plate 的 &lt;math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;U&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;annotation encoding="application/x-tex"&gt;U_2&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;；plate 与 female 同步 &lt;math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;U&lt;/mi&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;−&lt;/mi&gt;&lt;mn&gt;10&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;U_3=-10&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; mm。&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td style="text-align: left;"&gt;接触&lt;/td&gt;&#10;&lt;td style="text-align: left;"&gt;摩擦系数 0.13，硬接触，有限滑移，NLGEOM=YES。&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td style="text-align: left;"&gt;静力控制&lt;/td&gt;&#10;&lt;td style="text-align: left;"&gt;两步初始增量 0.01，总步长 1，最小增量 &lt;math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;msup&gt;&lt;mn&gt;10&lt;/mn&gt;&lt;mrow&gt;&lt;mi&gt;−&lt;/mi&gt;&lt;mn&gt;8&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;annotation encoding="application/x-tex"&gt;10^{-8}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;，最大增量 0.05，最大增量数 10000。&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td style="text-align: left;"&gt;其余约束&lt;/td&gt;&#10;&lt;td style="text-align: left;"&gt;RP 转动和未驱动平移分量保持固定；male 与 shield 根部平移固定。&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;/tbody&gt;&#10;&lt;/table&gt;&lt;/div&gt;&#10;&lt;p&gt;执行顺序为：HyperMesh 检查伴随模型，核对 INP 网格与区域，生成两步新输入，创建资源计划，运行 datacheck，处理真实报错，再提交完整求解。完成后直接读取新 ODB 的控制点 history、能量和原积分点结果，再转换全部分析步和帧，由 ParaView 核对并渲染。&lt;/p&gt;&#10;&lt;figure data-latex-placement="H"&gt;&#10;&lt;a href="https://alexchan114.github.io/assets/cae-mcp/terminal_states.png" target="_blank" rel="noopener" aria-label="查看terminal_states原图"&gt;&lt;img src="https://alexchan114.github.io/assets/cae-mcp/terminal_states.png" width="1980" height="2552" loading="lazy" decoding="async" alt="端子预压与插入终点的实际 ParaView 应力云图" /&gt;&lt;/a&gt;&#10;&lt;figcaption&gt;产品组新求解结果的两步终点，ParaView 原生渲染后由 Tavotto 合版。变形倍率为 1，各图保留自己的实际色标；视角整理不计入 Agent 任务耗时。&lt;/figcaption&gt;&#10;&lt;/figure&gt;&#10;&lt;p&gt;这里保留已有网格，前处理完成的是模型检查、区域核对、耦合与加载准备。工具链具备 STEP 导入、几何切分及四面体网格功能，但本例没有以 CAD 自动重划网格并重建全部接触作为实测起点。两步也只包含预压与插入，没有另行添加拔出。&lt;/p&gt;&#10;&lt;h3 id="用数值定义结果"&gt;用数值定义结果&lt;/h3&gt;&#10;&lt;p&gt;驱动力取两个运动 RP 的全局反力，投影到插入方向： &lt;math display="block" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;F&lt;/mi&gt;&lt;mrow&gt;&lt;mi mathvariant="normal"&gt;i&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;n&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;s&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;−&lt;/mi&gt;&lt;mo stretchy="false" form="prefix"&gt;(&lt;/mo&gt;&lt;mi&gt;R&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;F&lt;/mi&gt;&lt;mrow&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mi mathvariant="normal"&gt;f&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;e&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;m&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;a&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;l&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;e&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;R&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;F&lt;/mi&gt;&lt;mrow&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mrow&gt;&lt;mi mathvariant="normal"&gt;p&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;l&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;a&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;t&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;e&lt;/mi&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo stretchy="false" form="postfix"&gt;)&lt;/mo&gt;&lt;mi&gt;.&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;F_{\mathrm{ins}}=-(RF_{3,\mathrm{female}}+RF_{3,\mathrm{plate}}).&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; 这避免把接触两侧的内部力重复相加。产品组的新 ODB 包含 25 个 Prepress 帧与 83 个 Insertion 帧，共 108 帧；两步均达到终点，控制位移与给定值一致。&lt;/p&gt;&#10;&lt;div class="table-scroll" role="region" tabindex="0" aria-label="数据表，可横向滚动"&gt;&lt;table&gt;&#10;&lt;caption&gt;独立读取产品组新 ODB 得到的主要指标&lt;/caption&gt;&#10;&lt;thead&gt;&#10;&lt;tr&gt;&#10;&lt;th style="text-align: left;"&gt;指标&lt;/th&gt;&#10;&lt;th style="text-align: right;"&gt;数值&lt;/th&gt;&#10;&lt;/tr&gt;&#10;&lt;/thead&gt;&#10;&lt;tbody&gt;&#10;&lt;tr&gt;&#10;&lt;td style="text-align: left;"&gt;预压终点 plate &lt;math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;U&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;annotation encoding="application/x-tex"&gt;U_2&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;（mm）&lt;/td&gt;&#10;&lt;td style="text-align: right;"&gt;0.334800005&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td style="text-align: left;"&gt;插入终点 female / plate &lt;math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;msub&gt;&lt;mi&gt;U&lt;/mi&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/msub&gt;&lt;annotation encoding="application/x-tex"&gt;U_3&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;（mm）&lt;/td&gt;&#10;&lt;td style="text-align: right;"&gt;&lt;math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;−&lt;/mi&gt;&lt;mn&gt;10&lt;/mn&gt;&lt;mi&gt;/&lt;/mi&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;10&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;-10 / -10&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td style="text-align: left;"&gt;驱动力峰值（N）&lt;/td&gt;&#10;&lt;td style="text-align: right;"&gt;1.434141&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td style="text-align: left;"&gt;终点驱动力（N）&lt;/td&gt;&#10;&lt;td style="text-align: right;"&gt;0.974671&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td style="text-align: left;"&gt;末帧原积分点最大 Mises（MPa）&lt;/td&gt;&#10;&lt;td style="text-align: right;"&gt;644.000061&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td style="text-align: left;"&gt;末帧最大 PEEQ&lt;/td&gt;&#10;&lt;td style="text-align: right;"&gt;0.009152083&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td style="text-align: left;"&gt;末帧全储存 RF 三分量余额最大绝对值（N）&lt;/td&gt;&#10;&lt;td style="text-align: right;"&gt;&lt;math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;1.95&lt;/mn&gt;&lt;mo&gt;×&lt;/mo&gt;&lt;msup&gt;&lt;mn&gt;10&lt;/mn&gt;&lt;mrow&gt;&lt;mi&gt;−&lt;/mi&gt;&lt;mn&gt;6&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;1.95\times10^{-6}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;/tbody&gt;&#10;&lt;/table&gt;&lt;/div&gt;&#10;&lt;figure data-latex-placement="H"&gt;&#10;&lt;a href="https://alexchan114.github.io/assets/cae-mcp/force_energy.png" target="_blank" rel="noopener" aria-label="查看force_energy原图"&gt;&lt;img src="https://alexchan114.github.io/assets/cae-mcp/force_energy.png" width="1980" height="836" loading="lazy" decoding="async" alt="产品组独立提取的驱动力与能量 history" /&gt;&lt;/a&gt;&#10;&lt;figcaption&gt;从产品组新 ODB 独立提取的驱动力与能量 history，保留原始样本。静力步的时间轴是载荷路径参数，不代表已经指定了实际插入速度。&lt;/figcaption&gt;&#10;&lt;/figure&gt;&#10;&lt;p&gt;所选末帧能量项为 ALLWK 约 3.4821 Nmm、ALLSE 约 1.5564 Nmm、ALLPD 约 0.2456 Nmm、ALLFD 约 1.6753 Nmm。外功减去后三项的可见余额约占 ALLWK 的 0.138%，只用于这些已储存量的核对，不冒充完整能量审计。&lt;/p&gt;&#10;&lt;p&gt;PVD 使用 0–107 的顺序索引，因为两个分析步在边界的时间值可能重复。原始步名、帧值和物理总时间仍保存在 manifest 与数据中，序列索引 107 不能被解释为 107 秒。若导出坐标已施加位移，ParaView 不再做第二次 Warp。&lt;/p&gt;&#10;&lt;h2 id="三组独立实测都完成了差别在哪里"&gt;三组独立实测：都完成了，差别在哪里&lt;/h2&gt;&#10;&lt;p&gt;我使用同一输入、同一工程要求和相同算力上限，分别运行三个独立会话。每组都必须产生新的 ODB，允许读供应商文档、自写脚本和调用相同的独立 C++ 转换器。组间不共享脚本、历史解答或计算结果；实际求解串行执行，没有人为设置总时限。&lt;/p&gt;&#10;&lt;div class="table-scroll" role="region" tabindex="0" aria-label="数据表，可横向滚动"&gt;&lt;table&gt;&#10;&lt;caption&gt;对照设置。A、B 使用相同模型与推理设置，C 同时改变了模型和客户端宿主。&lt;/caption&gt;&#10;&lt;thead&gt;&#10;&lt;tr&gt;&#10;&lt;th style="text-align: left;"&gt;组别&lt;/th&gt;&#10;&lt;th style="text-align: left;"&gt;工具条件&lt;/th&gt;&#10;&lt;th style="text-align: left;"&gt;需要区分的因素&lt;/th&gt;&#10;&lt;/tr&gt;&#10;&lt;/thead&gt;&#10;&lt;tbody&gt;&#10;&lt;tr&gt;&#10;&lt;td style="text-align: left;"&gt;A&lt;/td&gt;&#10;&lt;td style="text-align: left;"&gt;三个 CAE MCP 与工程规程&lt;/td&gt;&#10;&lt;td style="text-align: left;"&gt;必须产生真实 MCP 调用和新求解产物。&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td style="text-align: left;"&gt;B&lt;/td&gt;&#10;&lt;td style="text-align: left;"&gt;原生文件与终端工具&lt;/td&gt;&#10;&lt;td style="text-align: left;"&gt;可自行编写原生脚本；未调用 CAE MCP，使用过通用规划规程。&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td style="text-align: left;"&gt;C&lt;/td&gt;&#10;&lt;td style="text-align: left;"&gt;原生文件与终端工具&lt;/td&gt;&#10;&lt;td style="text-align: left;"&gt;使用不同模型与宿主；不能把时间差归因于单一工具因素。&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;/tbody&gt;&#10;&lt;/table&gt;&lt;/div&gt;&#10;&lt;p&gt;评估器重新打开各组的新 ODB，读取控制位移、反力、能量和积分点结果，并检查原生成功标记、网格、VTK 和图片。100 分是本案例产物检查单：输入保护 5、模型定义保留 10、完整新求解 25、控制位移 15、反力与能量核对 10、原生前处理 10、108 帧及区域平均 10、图与曲线 5、资源记录和 datacheck 10。它不是总体成功率，也不是设计验证得分。&lt;/p&gt;&#10;&lt;div class="table-scroll" role="region" tabindex="0" aria-label="数据表，可横向滚动"&gt;&lt;table&gt;&#10;&lt;caption&gt;工程任务会话的实测结果，每组一次&lt;/caption&gt;&#10;&lt;thead&gt;&#10;&lt;tr&gt;&#10;&lt;th style="text-align: left;"&gt;组别&lt;/th&gt;&#10;&lt;th style="text-align: right;"&gt;检查单&lt;/th&gt;&#10;&lt;th style="text-align: right;"&gt;耗时（min）&lt;/th&gt;&#10;&lt;th style="text-align: right;"&gt;工具调用&lt;/th&gt;&#10;&lt;th style="text-align: right;"&gt;MCP 调用&lt;/th&gt;&#10;&lt;th style="text-align: right;"&gt;峰值（N）&lt;/th&gt;&#10;&lt;/tr&gt;&#10;&lt;/thead&gt;&#10;&lt;tbody&gt;&#10;&lt;tr&gt;&#10;&lt;td style="text-align: left;"&gt;A&lt;/td&gt;&#10;&lt;td style="text-align: right;"&gt;100/100&lt;/td&gt;&#10;&lt;td style="text-align: right;"&gt;21.82&lt;/td&gt;&#10;&lt;td style="text-align: right;"&gt;109&lt;/td&gt;&#10;&lt;td style="text-align: right;"&gt;47&lt;/td&gt;&#10;&lt;td style="text-align: right;"&gt;1.434141&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td style="text-align: left;"&gt;B&lt;/td&gt;&#10;&lt;td style="text-align: right;"&gt;100/100&lt;/td&gt;&#10;&lt;td style="text-align: right;"&gt;27.24&lt;/td&gt;&#10;&lt;td style="text-align: right;"&gt;81&lt;/td&gt;&#10;&lt;td style="text-align: right;"&gt;0&lt;/td&gt;&#10;&lt;td style="text-align: right;"&gt;1.434141&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td style="text-align: left;"&gt;C&lt;/td&gt;&#10;&lt;td style="text-align: right;"&gt;100/100&lt;/td&gt;&#10;&lt;td style="text-align: right;"&gt;56.13&lt;/td&gt;&#10;&lt;td style="text-align: right;"&gt;243&lt;/td&gt;&#10;&lt;td style="text-align: right;"&gt;0&lt;/td&gt;&#10;&lt;td style="text-align: right;"&gt;1.434150&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;/tbody&gt;&#10;&lt;/table&gt;&lt;/div&gt;&#10;&lt;p&gt;A 相对 B 的本次客户端墙钟时间减少约 19.9%。拆开看，三组最终原生分析分别为 647、700、637 秒；剩余任务时间分别约为 662、935、2731 秒，包含输入准备、检查、排错、后处理、网络与等待，不能称为纯模型推理时间。观察到的差异主要发生在工程组织环节，不能写成求解器提速。&lt;/p&gt;&#10;&lt;figure data-latex-placement="H"&gt;&#10;&lt;a href="https://alexchan114.github.io/assets/cae-mcp/task_effort.png" target="_blank" rel="noopener" aria-label="查看task_effort原图"&gt;&lt;img src="https://alexchan114.github.io/assets/cae-mcp/task_effort.png" width="1980" height="1540" loading="lazy" decoding="async" alt="三组工程任务耗时、token 与工具调用统计" /&gt;&lt;/a&gt;&#10;&lt;figcaption&gt;仅统计工程任务会话：耗时、普通输入与输出 token、缓存读取、工具调用。A 为 MCP 与工程规程，B、C 为原生工具组；三者均完成任务。&lt;/figcaption&gt;&#10;&lt;/figure&gt;&#10;&lt;div class="table-scroll" role="region" tabindex="0" aria-label="数据表，可横向滚动"&gt;&lt;table&gt;&#10;&lt;caption&gt;客户端报告的累计 token，普通输入与缓存读取分开列出&lt;/caption&gt;&#10;&lt;thead&gt;&#10;&lt;tr&gt;&#10;&lt;th style="text-align: left;"&gt;组别&lt;/th&gt;&#10;&lt;th style="text-align: right;"&gt;普通输入&lt;/th&gt;&#10;&lt;th style="text-align: right;"&gt;缓存读取&lt;/th&gt;&#10;&lt;th style="text-align: right;"&gt;输出&lt;/th&gt;&#10;&lt;/tr&gt;&#10;&lt;/thead&gt;&#10;&lt;tbody&gt;&#10;&lt;tr&gt;&#10;&lt;td style="text-align: left;"&gt;A&lt;/td&gt;&#10;&lt;td style="text-align: right;"&gt;119970&lt;/td&gt;&#10;&lt;td style="text-align: right;"&gt;5048320&lt;/td&gt;&#10;&lt;td style="text-align: right;"&gt;22840&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td style="text-align: left;"&gt;B&lt;/td&gt;&#10;&lt;td style="text-align: right;"&gt;121289&lt;/td&gt;&#10;&lt;td style="text-align: right;"&gt;3867776&lt;/td&gt;&#10;&lt;td style="text-align: right;"&gt;35711&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td style="text-align: left;"&gt;C&lt;/td&gt;&#10;&lt;td style="text-align: right;"&gt;132141&lt;/td&gt;&#10;&lt;td style="text-align: right;"&gt;47289728&lt;/td&gt;&#10;&lt;td style="text-align: right;"&gt;242125&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;/tbody&gt;&#10;&lt;/table&gt;&lt;/div&gt;&#10;&lt;p&gt;这些数字累计包含每轮重复携带的上下文，不是唯一 query 长度。不同客户端的 input 字段可能包含或不包含缓存，需要拆分后比较；推理 token 若属于输出子集，也不能重复相加。跨供应商 tokenizer 和路由计数没有独立校准，因此这里不推导等价算力或账单。&lt;/p&gt;&#10;&lt;p&gt;统计窗口从各组提交共同工程任务到完成并退出，只读取对应任务客户端的最终 usage。报告写作、LaTeX 编译、Tavotto 制图、实验搭建、独立评估、展示视角整理和本次博客发布全部排除。&lt;/p&gt;&#10;&lt;h3 id="排错轨迹比一个总分更有信息"&gt;排错轨迹比一个总分更有信息&lt;/h3&gt;&#10;&lt;p&gt;A 组通过结构化检查和一次有依据的输入修复完成计算。B 组自行组织原生脚本，也完成同样的交付。C 组在接触与耦合关键字布局上反复构建诊断输入，最终通过 CAE 导入、重新导出规范化关键字后完成。&lt;/p&gt;&#10;&lt;p&gt;三组保留的含错误 datacheck 数据文件分别为 1、1、15 个。这是不同诊断文件的数量，不是 15 次完整求解失败。原任务限制最多两次有依据的失败修改，原生组实际做了更多输入诊断尝试；这一过程偏离保留说明，没有被 100 分产物检查单覆盖。&lt;/p&gt;&#10;&lt;figure data-latex-placement="H"&gt;&#10;&lt;a href="https://alexchan114.github.io/assets/cae-mcp/consistency.png" target="_blank" rel="noopener" aria-label="查看consistency原图"&gt;&lt;img src="https://alexchan114.github.io/assets/cae-mcp/consistency.png" width="1980" height="814" loading="lazy" decoding="async" alt="三组驱动力曲线和相对于数值参考的曲线差异" /&gt;&lt;/a&gt;&#10;&lt;figcaption&gt;独立提取的三组插入力曲线与参考数值解的差异。接近重合说明同一模型、同一工况的数值一致性；参考解不是试验真值。&lt;/figcaption&gt;&#10;&lt;/figure&gt;&#10;&lt;p&gt;C 的峰值与数值参考差异约 0.000623%，全曲线归一化 RMSE 约 0.000656%。三组都能完成专业任务，这使比较更关注完成路径、上下文增长和错误恢复。一个案例、每组一次、MCP 与 Skill 同时启用，仍不足以建立普遍能力排序或独立因果结论。&lt;/p&gt;&#10;&lt;h2 id="完成计算以后仍需保留哪些工程事实"&gt;完成计算以后，仍需保留哪些工程事实&lt;/h2&gt;&#10;&lt;p&gt;产品组原生文件包含 6 条 dat 警告、73 条 msg 警告，其中 23 条为负特征值提示，618 个单元被标记为畸变。C 组规范化输入的检查上下文报告了 620 个畸变单元，不能据此声称网格质量改善。&lt;/p&gt;&#10;&lt;p&gt;接触非线性中的负特征值可能伴随切线刚度变化，但“最终收敛”不能排除失稳或约束问题。畸变、材料定义、接触区域及网格敏感性仍影响结果的物理可信度。因此本文证明的是给定模型和已确认工况下的工具执行、结果提取与可追溯交付；没有把这次计算扩展为试验相关性、寿命或完整插拔滞回的验证，也没有声称已获得行业公司的认可。&lt;/p&gt;&#10;&lt;h2 id="输入query-与可复核资料"&gt;输入、query 与可复核资料&lt;/h2&gt;&#10;&lt;p&gt;实际输入 INP 为 3,460,015 字节，HM 为 2,313,685 字节。各自 SHA256 随数据中的 provenance 文件提供，用于识别本次实测输入；本文公开测量统计、曲线、可移植 query、LaTeX 与可编辑 Tavotto 图源，工程模型和大体积计算文件不随文发布。&lt;/p&gt;&#10;&lt;p&gt;下面是原始任务的可移植整理版摘要，替换了本机绝对路径并省略实验目录隔离措辞，工程条件保持一致。完整整理版与原始 query 指纹随附。&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;检查 terminal_pair.hm 与 terminal_pair.inp，保留已有网格、材料、截面和八对接触。按已确认集合固定 male 与 shield 根部，建立 female 和 plate 控制点耦合。Prepress：plate 沿全局 &lt;math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;+&lt;/mi&gt;&lt;mi&gt;Y&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;+Y&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; 位移 0.3348 mm；Insertion：保持预压，plate 与 female 同时沿全局 &lt;math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;−&lt;/mi&gt;&lt;mi&gt;Z&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;-Z&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt; 位移 10 mm。摩擦 0.13，硬接触、有限滑移、NLGEOM，仅两步。以最多 2 CPU、15% 内存上限记录资源选择，运行 datacheck 后提交新求解。读取真实 RP 位移与反力、能量和原积分点应力；转换全部步骤和 108 帧，按 section assignment 做 Avg 75，在 ParaView 核对并输出终点云图、状态文件及驱动力曲线。遇到错误保留原生日志和新输入差异，不修改物理条件来强行收敛。&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;h2 id="实现所依据的原生接口"&gt;实现所依据的原生接口&lt;/h2&gt;&#10;&lt;p&gt;ODB bulk data 访问、结果平均区域以及作业执行参数均对应供应商文档。工具对这些规则的实现范围已在相应章节说明。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;p&gt;&lt;a href="https://docs.software.vt.edu/abaqusv2025/English/SIMACAECMDRefMap/simacmd-c-odbintrobulkdatacpp.htm"&gt;Abaqus：C++ bulk data 访问接口&lt;/a&gt;。&lt;/p&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;p&gt;&lt;a href="https://docs.software.vt.edu/abaqusv2025/English/SIMACAECAERefMap/simacae-c-resconceptaverage.htm"&gt;Abaqus/CAE：结果平均与区域定义&lt;/a&gt;。&lt;/p&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;p&gt;&lt;a href="https://docs.software.vt.edu/abaqusv2025/English/SIMACAEEXCRefMap/simaexc-c-analysisproc.htm"&gt;Abaqus：分析作业执行参数&lt;/a&gt;。&lt;/p&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;p&gt;&lt;a href="https://modelcontextprotocol.io/"&gt;Model Context Protocol&lt;/a&gt;。&lt;/p&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p class="article-downloads"&gt;&lt;a href="https://alexchan114.github.io/assets/cae-mcp/cae-mcp.pdf"&gt;PDF 阅读&lt;/a&gt; · &lt;a href="https://alexchan114.github.io/assets/cae-mcp/cae-mcp-sources-bilingual.zip"&gt;LaTeX / Tavotto 图源与数据&lt;/a&gt; · &lt;a href="https://alexchan114.github.io/assets/cae-mcp/engineering-query.txt"&gt;完整 query 整理版&lt;/a&gt; · &lt;a href="https://alexchan114.github.io/assets/cae-mcp/task_metrics.csv"&gt;实测统计 CSV&lt;/a&gt;&lt;/p&gt;&lt;/article&gt;</description></item><item><title>你好，世界</title><link>https://alexchan114.github.io/post/2026/07/14/hello-world/</link><pubDate>Tue, 14 Jul 2026 00:00:00 +0000</pubDate><guid>https://alexchan114.github.io/post/2026/07/14/hello-world/</guid><description>&lt;p&gt;这是网站的第一篇起始文章。&lt;/p&gt;&#10;&lt;p&gt;博客采用 Hugo XMin 主题，后续文章可以直接通过 Markdown 添加。&lt;/p&gt;&#10;&lt;pre&gt;&lt;code class="language-text"&gt;保持简单。&#10;把想法记下来。&#10;慢慢改进。&#10;&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>一则随记</title><link>https://alexchan114.github.io/note/2026/07/13/a-short-note/</link><pubDate>Mon, 13 Jul 2026 00:00:00 +0000</pubDate><guid>https://alexchan114.github.io/note/2026/07/13/a-short-note/</guid><description>&lt;p&gt;短笔记可以先记下一个想法，再逐渐发展为一篇完整文章。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;一个问题；&lt;/li&gt;&#10;&lt;li&gt;一份有用的资料；&lt;/li&gt;&#10;&lt;li&gt;一个留待核对的结果。&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>关于</title><link>https://alexchan114.github.io/about/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://alexchan114.github.io/about/</guid><description>&lt;p&gt;你好，我是 AlexanderChan。这里记录编程、机器学习与工程仿真中的学习、实践和实验。&lt;/p&gt;&#10;&lt;p&gt;我的公开项目可以在 &lt;a href="https://github.com/Alexchan114"&gt;GitHub&lt;/a&gt; 查看。&lt;/p&gt;</description></item></channel></rss>