2. HyperMesh核心数据架构解析

在HyperMesh中做多求解器模型迁移,第一件必须搞清楚的事不是“怎么导出”,而是“数据到底存在哪里、归谁管”。HyperMesh并不是一个把几何、网格、材料、载荷混在一起的大仓库,它采用了一种分层、分域的组织方式:一部分数据是求解器无关的通用模型数据,另一部分数据则被绑定到具体的求解器模板(Solver Template)上。理解这条分界线,是后续所有迁移、转换、排错工作的基础。

一、HyperMesh的数据组织层次

从整体上看,HyperMesh的模型数据可以按“几何—网格—单元—属性—材料—载荷/边界条件”这条主线来理解,但它们并不是简单的线性堆叠,而是通过引用关系互相连接。几何(Geometry)是模型的形状来源,通常以曲面(Surface)、实体(Solid)、线(Line)、点(Point)等形式存在,它本身不参与求解,但为网格划分提供基础。网格(Mesh)是几何离散化后的结果,由节点(Node)和单元(Element)组成。单元是网格的最小承载单位,它必须被赋予属性(Property),属性再引用材料(Material),从而形成“单元→属性→材料”的引用链。载荷(Load)和边界条件(Boundary Condition,简称BC)则作用在节点、单元或几何上,描述工况。

这里有一个关键点:在HyperMesh中,几何、网格、单元这些对象本身是求解器无关的,它们只描述“模型长什么样、由什么组成”。而材料、属性、载荷、边界条件中的很多具体参数,则往往带有求解器专属的语义。例如,同样是“壳单元属性”,OptiStruct、Abaqus、Nastran对厚度、积分点、偏置的定义方式可能不同;同样是“约束”,不同求解器对自由度的编号和约束类型也不一样。

HyperMesh 数据架构:求解器无关层与求解器专属层 求解器无关数据(Solver-Neutral) 描述模型“是什么”,不依赖具体求解器 几何 Geometry Surface / Solid Line / Point 几何清理与简化 网格 Mesh Node 节点 Element 单元 网格质量检查 单元 Element Shell / Solid Beam / RBE 连接关系 引用链:单元 → 属性 → 材料 Property 定义截面/厚度/积分方式 Material 定义弹性模量/泊松比/密度 同一材料可被多个属性引用 求解器专属数据(Solver-Specific) 描述模型“怎么算”,绑定到具体求解器模板 材料 Material 弹性模量 E 泊松比 ν 密度 ρ 屈服/硬化曲线 不同求解器卡片格式不同 属性 Property 壳厚度 / 偏置 实体单元公式 梁截面定义 积分点/沙漏控制 求解器专属卡片 载荷 / 边界条件 集中力 / 压力 约束 / 自由度 重力 / 离心载荷 工况步 Load Step 自由度编号与约束类型随求解器变化 求解器模板 OptiStruct Abaqus Nastran LS-DYNA 决定卡片与关键字映射 虚线表示引用/绑定关系:求解器无关对象通过属性与材料、载荷、边界条件关联,最终由求解器模板解释为具体卡片

二、求解器无关数据与求解器专属数据的区分

判断一份数据属于哪一层,最直接的方法是问:换一个求解器,这份数据还能原样使用吗?如果能,它就是求解器无关的;如果不能,它就需要在迁移时做映射或转换。

几何、节点、单元拓扑、单元连接关系、网格质量指标,这些是典型的求解器无关数据。无论你最终用OptiStruct还是Abaqus,一个四面体单元的节点编号和连接关系不会变,网格的雅可比、翘曲度也不会因为求解器不同而改变。因此,在HyperMesh中划分网格、清理几何、检查网格质量,这些工作可以在确定求解器之前完成,也可以在求解器之间复用。

材料、属性、载荷、边界条件则要复杂一些。它们中的一部分参数是通用的,比如弹性模量、泊松比、密度,这些物理量本身与求解器无关;但它们在HyperMesh中的卡片形式、字段名称、单位制约定、组合方式却是求解器专属的。例如,在OptiStruct模板下,壳属性可能使用PSHELL卡片,厚度、材料ID、积分点位置都有固定字段;切换到Abaqus模板后,同样的壳属性会变成SHELL SECTION,字段顺序和可选参数都会变化。再比如约束,Nastran用SPC卡片,Abaqus用*BOUNDARY,OptiStruct用SPC或SUPORT,自由度编号也可能从1~6变成1~6但含义顺序不同。

迁移时最容易被忽略的一点:材料曲线。线弹性阶段E和ν可以通用,但塑性硬化曲线、超弹性参数、蠕变参数在不同求解器中的拟合方式和输入格式差异很大,不能简单复制数值。

三、HyperMesh中的实际组织方式

在HyperMesh的模型树(Model Browser)中,这些数据被组织成若干集合(Collector)。几何放在几何集合中,网格放在组件(Component)中,单元通过组件归属到属性,属性再引用材料。载荷和边界条件通常放在载荷集合(Load Collector)中,并按工况步(Load Step)组织。每个集合都有自己的卡片编辑器(Card Editor),你可以在其中看到当前求解器模板下的具体字段。

这里有一个非常实用的操作习惯:在开始建模前,先通过Preferences → User Profiles选择目标求解器模板。模板一旦确定,HyperMesh就会加载对应的卡片库和单位制约定。后续创建的材料、属性、载荷都会按照该模板的格式存储。如果中途切换模板,HyperMesh会尝试做一次映射,但映射结果需要逐项检查,尤其是材料本构、接触定义、连接单元这些强求解器相关的部分。

下面用一个简化的示例说明迁移时的检查顺序。假设你有一个OptiStruct模型,需要迁移到Abaqus:

1. 确认几何与网格:节点、单元、组件归属不变,直接复用。
2. 检查材料:E、ν、ρ 可通用;塑性曲线需重新按Abaqus的*PLASTIC格式整理。
3. 检查属性:PSHELL → SHELL SECTION,确认厚度、积分点、偏置字段对应。
4. 检查载荷与边界条件:SPC → *BOUNDARY,FORCE → *CLOAD,确认自由度顺序。
5. 检查工况步:OptiStruct的SUBCASE → Abaqus的*STEP,确认分析类型与输出请求。
6. 导出INP,在Abaqus中做一次数据检查(Data Check),观察是否有卡片报错。

这个顺序背后的逻辑就是:先处理求解器无关层,再处理求解器专属层;先处理引用链上游,再处理下游。因为属性引用材料,单元引用属性,如果材料或属性没有映射好,后面的载荷和边界条件即使正确,模型也无法正常求解。

四、迁移中的常见误区

第一个误区是把HyperMesh当成“格式转换器”,认为只要导出再导入就能完成迁移。实际上,HyperMesh的强项是在统一环境中管理多求解器数据,而不是无条件地自动翻译所有卡片。求解器专属数据中,有相当一部分需要人工判断和重新定义。

第二个误区是忽略单位制。HyperMesh本身不强制单位制,但求解器模板会隐含单位约定。例如Nastran常用mm-N-s,Abaqus常用m-N-s或mm-N-s,如果迁移时不统一单位,材料参数和载荷数值会整体错位。建议在模型树中显式记录单位制,并在迁移检查表中逐项核对。

第三个误区是只检查“能不能算”,不检查“算得对不对”。迁移完成后,除了做数据检查,还应该用一个简单工况做对比验证,比如悬臂梁端部挠度、平板中心位移,确认迁移前后结果在合理误差范围内。这一步能有效发现材料曲线、属性偏置、约束自由度等隐蔽问题。

核心结论:HyperMesh的数据架构可以概括为“两层一线”。两层是求解器无关层和求解器专属层;一线是“单元→属性→材料”的引用链。迁移工作的本质,就是保住无关层、映射专属层、沿引用链逐级检查。