1产品与手册简介
↑ 返回目录1.1WebCAE 是什么
WebCAE 是一套全流程的有限元工程分析软件,涵盖几何准备(CAD 导入与参数化建模)、网格划分、材料、边界条件与载荷的指定、求解以及结果后处理。其主要应用领域是结构强度与动力学:实体、壳、梁及其组合。此外还支持传热、热-力耦合问题、声学和流体流动。
产品运行于两个平台,二者使用同一个计算内核:
- 桌面应用(Windows、macOS):原生求解器,支持多线程,问题规模仅受机器内存限制;
- 浏览器:同一内核编译为 WebAssembly;便于初步了解和运行小型模型,受限于标签页内存和单线程。
桌面原生路径被视为基准,验证数据均在该路径上取得。如果某个模型在两个平台上的结果不同,则以原生结果为准,并明确说明二者的差异(参见平台、性能与质量控制)。
1.2如何阅读本手册
本手册说明程序究竟计算什么:采用何种提法、哪些单元和方法、基于哪些假设。它不能替代有限元教科书,但其中的公式取自实现本身,而非教科书。凡实现比经典提法更简化之处,均直接注明。
各章按计算流程的顺序排列:
- 几何与 CAD 和 网格:计算模型从何而来。
- 材料模型、边界条件、载荷与约束、接触与连接:用户需要指定的内容。
- 有限元单元库:模型如何离散化。
- 线性分析类型、非线性计算与动力学、传热与多物理场:求解哪些问题以及采用何种提法。
- 求解器:如何求解所得到的方程组。
- 结果、后处理与强度评估:工程师得到什么以及如何计算。
- 工程、脚本与自动化、平台、性能与质量控制:如何使用以及为何可以信任结果。
小节的典型结构为:用途、提法与方程、输入与输出、实现方式、局限性、验证(指向验证算例的链接)、脚本命令示例。
1.3就绪状态
每个小节标有以下三种状态之一:
| 状态 | 含义 |
|---|---|
| 稳定 | 已包含在发布版本中,界面和脚本均可使用,并已通过验证算例或与解析解的比对确认。 |
| 测试版 | 已实现,用户可用,并有自动化测试覆盖,但出现在最近一次发布之后,或仅在较窄的问题集上经过检验。 |
| 实验性 | 原型、工程估算或仅部分覆盖的模块。尚未与独立基准进行完整比对;结果需要自行核验。 |
状态的标注较为审慎:若在两个状态之间犹豫,则选取更严格的一个。状态随每次发布重新评定。
1.4计量单位
求解器内部所有量均采用协调的国际单位制(SI):长度为米,力为牛顿,应力、压力和弹性模量为帕斯卡,密度为 kg/m³,温度为开尔文。求解器与量纲无关:它只求解方程组,只有输入单位协调时结果才正确。因此,单位换算只在模型与求解器之间的边界这一处进行,其他地方一概不做。
用户可独立选择两件事:
- 载荷和属性的输入单位制:SI、公制工程单位制(mm、N、MPa)或英制;
- 存储几何的场景长度单位;通常为毫米,与原始 CAD 一致。
结果显示时带有单位标注。手册中的公式适用于任何协调的单位制:除非另有说明,均默认采用 SI。
1.5检验与验证
关于精度的论断依据公开的验证计划:两百多个具有解析解的问题、NAFEMS 和 MacNeal–Harder 问题,以及非线性和动力学基准题。每个问题都公布了提法、基准值、所得值、偏差以及运行时所用的求解器版本。手册正文中的链接指向具体的算例;完整列表见验证页面。
验证计划中与基准值比对的容许误差为 5 %。不得为使算例通过而放宽该容许误差:超出容许误差的偏差被视为缺陷,须在计算中消除,而不是修改判据。
1.6相关页面
2几何与 CAD
↑ 返回目录WebCAE 中的计算从几何开始:以边界表示(B-Rep)形式存在的实体、片体和线。实体可由 CAD 文件导入,可由基本体和草图构建,也可由杆件和壳面片(patch)组装而成。后续的一切——网格、边界条件、结果——都绑定在这一表示的面、边和顶点上。因此,本章不仅介绍获取几何的方式,还介绍如何引用其中的元素,以及几何发生变化时绑定关系会发生什么。
每项操作都经过统一的命令层。功能区按钮、右键菜单项和 DSL 语句执行的是同一条命令,因此用鼠标构建的内容都可以用脚本复现(语法见页面 /docs/dsl)。例外情况已在各小节中注明:中面和与 Onshape 的同步仅在界面中可用,DSL 中按路径导入文件仅在批处理模式下有效。
2.1几何内核与单位稳定
几何由开源内核 Open CASCADE Technology(OCCT 7.9)构建和检验。文档中的体可以是实体(solid)、片体(shell)、线框(wire)或点。布尔运算、倒圆角、缝合以及有效性检验均由 OCCT 完成。该内核由同一份源代码分别编译用于桌面应用和浏览器(WebAssembly)。
单位分为三层。
- 几何以毫米为单位。基本体、草图和导入模型的坐标均为场景单位(mm)。
- 求解器接收 SI 单位的数据(米、牛顿、帕斯卡、千克)。换算在求解器边界的同一处完成,用户不可见。
- 脚本单位由命令
units m|mm|in设定。它作用于不属于场景坐标的尺寸:单元尺寸size=、加密区的半径和尺寸、过程化生成的梁、壳和点质量。构建实体的命令(box、primitive、move)的坐标不做换算,仍为场景毫米。
units 命令的脚本按米制处理:其中的 mesh tet size=6 表示六米。请以 units mm 开始脚本。构建实体的命令不考虑脚本单位——这是有意为之的设计,但在混合脚本中很容易引起错误。units mm
box dx=20 dy=20 dz=100
list faces of body12.2STEP 导入稳定
STEP(AP203、AP214、AP242)是主要的交换格式。文件由 OCCT 的 STEP 读取器读取;文件中的单位换算为毫米。内容被拆分为各个体:优先为实体,若没有实体则为壳,否则整个结果作为一个体。体的名称尽可能取自 STEP 数据。大型装配体随曲面细分的进行逐步显示。
读取后,每个体都要经过有效性检验(类似 BRepCheck),模型会获得下列就绪状态之一:
- 有效实体——可以生成体网格;
- 有效片体——仅可使用表面网格;
- 需要检查——装配体中部分体有问题,其余可用;
- 不支持或读取错误——不启动计算,原因以代码给出。
如果因故未执行检验,状态会标记为未检验,而不会被当作“合格”。片体的体网格划分会被明确阻止并给出原因代码,而不是被悄悄替换成别的操作。
在界面中,可通过导入按钮或拖放到画布上加载文件。在 DSL 中,带文件路径的 import 命令在批处理(node)模式下有效;在应用内部请通过界面加载。
import "bracket.step"
list faces of body12.3IGES 与 STL 导入测试版
IGES 由 OCCT 内核读取,读取后曲面被缝合成壳,若封闭则缝合成体。在 DSL 中,格式由参数 format=iges 或文件扩展名指定。与 STEP 一样,DSL 中按路径导入在批处理模式下执行。
STL 是三角形网格,而非 B-Rep。WebCAE 可读取二进制和文本 STL,合并重合顶点,检查水密性(每条边恰好属于两个三角形),并据此将该体归为实体或片体。为了能按编号引用各面,三角形按相邻三角形之间的二面角被分割为“面”(默认阈值约为 35°);分割段的边界成为边。对这样的刻面体,体网格直接按其三角形划分。
2.4拓扑编号稳定
每个面、边和顶点都有一个编号。该编号与模型树中节点旁显示的编号相同,也是 DSL 所接受的地址:surface number N、edge number N、vertex number N。对于体,编号在模型树中按体排列。
编号规则:
- 每个实体的编号只发放一次,并绑定到拓扑注册表中的稳定标识符,而不是数组中的位置;
- 删除后编号不会被复用:计数器只增不减,以免报告或脚本中的引用开始指向另一个实体;
- 如果某个面在操作后仍保持同一稳定标识符,其编号不变;新生成的面获得新编号;
- 类型词(
surface、edge、vertex)是必需的,并会被检查:若 27 号是顶点,则surface number 27会被拒绝; - 按外形尺寸的地址(
face z-、vertex "x-,y-,z-")和裸索引不受支持,并会给出明确错误。装配体中并不存在“z- 面”,这样的地址会被悄悄指向别的实体。
可通过命令 list faces of <体> 和 list edges of <体> 获知编号:它们会打印每个面的编号、面积、形心和法线,或每条边的长度、中点和方向。
list faces of body1
fix surface number 3
load surface number 5 pressure=-1000000list faces 结果选取的,则操作之后需要重新读取。当边界条件的绑定丢失时,该记录会保留并加以标记(参见几何修复)。2.5基本体、布尔运算与变换稳定
体的基本操作集合:
- 基本体:
box、cylinder、sphere、cone、torus、wedge、pipe、hollowBox、半球(primitive <形状> 参数); - 布尔运算
boolean union|cut|intersect target= tool=、缝合与合并(sew、union); - 边的倒圆角与倒角(
fillet、chamfer),指定厚度的抽壳(hollow); - 变换:
move、rotate、mirror、scale,线性和圆形阵列(pattern); - 按轮廓构建:
sketch(按点构成的轮廓)、extrude、revolve、sweep、loft; - 面的直接编辑:偏移(
offset_face、pull)、移动(move_face)和拔模(draft_face)。
布尔运算借助 OCCT 构建并保留历史:内核会报告哪些面被修改、生成或删除,编号和绑定关系依据这一历史迁移。
units mm
box dx=60 dy=40 dz=10
primitive cylinder r=8 h=10
boolean cut target=body1 tool=body22.6参数化 CAD 模型测试版
参数化模型保存的不是体,而是配方:先是草图,然后是对它的各项操作。修改草图或尺寸会重新计算整个链条,并就地替换该体——它保留名称、颜色和编号。
草图位于某个平面(xy、xz、yz、参考平面或某个面)上,使用以毫米为单位的局部坐标 (u, v)。草图实体包括:折线和矩形、圆、圆弧。对草图的操作有:extrude(添加、切除或新建体)、revolve、沿路径草图的 sweep、按截面的 loft、thread(螺纹——装饰性或几何性)。支持草图编辑:移动、旋转、镜像、轮廓偏移、修剪与延伸。
草图约束包括点重合、水平、竖直、平行、垂直、共线、相等、同心、中点、对称、相切、固定和尺寸(距离、角度、半径、直径)。尺寸可以命名,并可按编号修改。
约束求解器将约束归结为关于草图坐标的残差 \mathbf{r}(\mathbf{x}),并用带数值雅可比矩阵 \mathbf{J} 的 Levenberg–Marquardt 方法最小化 \tfrac{1}{2}\lVert \mathbf{r}\rVert^{2}:
草图的自由度数为 n_{\text{dof}} = n_{\text{var}} - \operatorname{rank}(\mathbf{J})。按秩确定的方法在存在重复约束时同样正确,而此时“变量数减方程数”会给出负数。草图会被判定为完全约束、欠约束(给出自由度数)或过约束(列出相互冲突的约束)。如果方程组无法求解,草图几何不会被部分修改。
界面:参数化操作面板(FeaturePanel)、功能区的“操作”组、模型树中的分支。DSL:命令 cad,其子命令有 sketch、extrude、revolve、sweep、loft、thread、constraint、dimension、solve、recompute、move、rotate、mirror、offset、trim、extend。
cad sketch plane=xy points=0,0,40,0,40,20,0,20 id=sketch1
cad extrude sketch=sketch1 distance=10
cad recompute2.7几何修复与 auto-fix测试版
导入的模型往往不适合划分网格:面间间隙、退化边、小倒角以及比单元更小的孔。WebCAE 区分三种操作。
- 导入时修复。 一组受预算限制的阶段:壳的缝合、用 OCCT 工具修正形状(ShapeFix)、共面与共轴面的合并(UnifySameDomain)、将封闭壳装配成体。结果会检验有效性,对同一输入重复运行会得到相同的形状。
- 网格划分前的 auto-fix。 作用于副本。无论结果如何,原体、模型树和原始 STEP 都不会被改动。小特征(短边、小面、窄条(sliver)、小于单元的孔和圆角)会被填平,使网格划分器不必为它们加密网格。阈值与用户指定的单元尺寸挂钩,而不是绝对的毫米值。每个阶段都必须证明情况没有变坏:结果有效、体的数量未变、体积偏离不超过允许值。否则该阶段回滚,原因写入报告。
- 显式命令。
defeature <体> maxHoleRadius= maxFaceArea=按您给定的阈值删除孔和面;repair <体> [merge] [heal] tolerance=以给定公差合并接缝并修复间隙;simplify按体积和对角线阈值舍弃装配体中的小体;shrinkwrap构建装配体的外壳。自动模式由命令autofix on|off开启和关闭;autofix element=<mm>打印针对给定单元尺寸的报告。
边界条件不会被悄悄丢失。 如果 auto-fix 的某个阶段会移除与边界条件相关联的面,该阶段就会回滚到较温和的配置。如果绑定仍然丢失(编辑几何、重新导入),边界条件记录会保留在模型中并被标记为孤立,报告则逐一列出这些记录。在绑定恢复之前,带有孤立条件的计算不会启动:缺少所需面的网格看起来像是一次成功的计算,但求解的是另一个问题。
autofix on element=2
defeature body1 maxHoleRadius=1.5
repair body1 merge heal tolerance=0.012.8压印与分割稳定
压印(imprint)把一条线或一个平面投到面上并沿其切分该面;B-Rep 中出现内部边和带有各自编号的新面。这是在片体上获得桁条与框线、载荷作用区或固定区而不改变体体积的主要方法。压印边成为网格线,因此布置在其上的杆件与壳共用节点。
命令的变体:
imprint <体> points=x,y,z,…——沿给定方向或沿法线(project=)投影到片体上的折线;imprint <体> plane point=x,y,z normal=x,y,z——用平面截取片体或实体;imprint <体 A> <体 B>——两个体相互压印(在接触面上形成公共痕迹);split target=<体> plane=<名称>或point= normal=——将体分割为独立的部分。
参数 fuzzy= 以脚本单位给出操作的公差。
units mm
imprint body1 points=-10,100,0, 2010,100,0
list edges of body12.9多体装配测试版
装配体是同一文档中的一组体。体可以隐藏、抑制(排除出计算)、平移和旋转。体的相交通过测量其公共部分的体积来判定。相接触的体可以粘合为统一的模型,也可以保持分离并使用接触。粘合时,WebCAE 用布尔运算(fragment)对齐公共面的拓扑;对于过盈配合存在真实体积相交的情形,提供三种模式:切除(体积归较小的体)、分割为若干部分,或保持原样(此时过盈处的材料被计算两次,并给出警告)。筛选配对的公差与布尔运算本身的公差分别设定。
计算之前会检查装配体网格的连通性:“全部粘合”未能连接的体(没有接触)会形成没有约束的独立块,对它们的线性计算会发散。这类情况在进入求解器之前即被捕获。网格粘合的详情见章节“网格”。
2.10中面实验性
对于薄壁零件,实体模型是多余的:2 mm 厚的板用壳来计算更方便。“中面”操作(仅限界面,位于几何操作面板)会寻找近似平行的面对,其间距落在给定的厚度范围内,并在它们之间构建片体。可找到平面对和圆柱面对;在角部汇合的区域通过把自由边拉向交接平面来封闭。找到的面对厚度会输出在片体的名称中;壳截面厚度(section shell t=)需要另行指定。
2.11框架、梁与壳面片稳定
对于桁架、框架和加筋壳,WebCAE 绕过实体,直接构建计算模型。有两种方式。
参数化框架 frame。 节点和杆件按创建顺序从 1 开始编号。杆件是 Timoshenko 梁,截面取自截面库或由尺寸给定(矩形、圆形、管、工字钢、槽钢、角钢、T 形、箱形);可以在杆件另一端指定不同截面(锥形)并在两端设置铰。壳由四边形单元组成的面片给出:平面四边形(geom=quad)、圆柱或圆锥(geom=cyl)、两条折线之间的直纹面(geom=ruled)或显式的点网格(geom=points)。面片节点在公差范围内与已有节点重合,因此壳和杆件共用节点。加强筋通过命令 frame stiffen 沿面片的网格线添加。
B-Rep 边上的梁。 assign beam edges=… section=rect w= h= flush=outer|inner [ecc=] 将 Timoshenko 杆布置在片体所选的边上(包括压印边)。参数 flush 将边贴近蒙皮的外表面或内表面,ecc 沿法线偏移杆轴。偏移在运动学上予以考虑,因此有效刚度包含 Steiner 定理(平行轴定理)项 I = I_{0} + A\,e^{2}(其中 e 为杆轴到蒙皮中面的距离),而不只是截面自身的惯性矩。
用户得到的是:杆件与壳通过公共节点连接的模型,而不是近似的刚性约束。可进行的计算有静力、模态和屈曲分析;对于自由体的模态分析(船体、飞机),提供不检查机构的模式,其中第一到第六阶振型是刚体模态。
units mm
frame node at=0,0,0
frame node at=1000,0,0
frame member 1 2 section=rect w=20 h=40
frame support node=1 dofs=all
frame load node=2 force=0,0,-500
frame solve staticframe probe shellcheck 按文档检查:未合并的重复节点和 T 形接头的数量必须为零,否则结构是断开的。2.12与 Onshape 同步测试版
应用连接到 Onshape 文档(OAuth 2.0 授权),获取带版本信息(microversion)的 STEP 格式模型,并按普通导入的方式加载。再次同步会用新版本替换已导入的体,并尝试把边界条件、载荷、约束和接触迁移到改变后的几何上。
迁移依靠几何匹配进行:对旧模型中的每个面、边和顶点,在新模型中寻找位置、方向和尺寸上最接近的实体。找不到可靠对应关系的记录不会被删除:它们会返回到“需要检查”列表中,最终消息会给出已迁移和未迁移条件的数量。对新几何的引用只使用文档编号。
2.13FreeCAD 连接器实验性
FreeCAD 的附加组件添加了命令“Analyze in WebCAE”。它将所选的体或文档中所有可见的体导出为 STEP,并在 WebCAE 中打开:在浏览器中或通过专用链接在桌面应用中打开。传输是单向且一次性的。
Mod)进行安装;尚未确认已发布到 FreeCAD Addon Manager 目录。没有与运行中的 FreeCAD 联动的自动化测试。2.14网格的导入与导出实验性
现成的网格可以取自外部程序,也可以输出到外部。支持 Abaqus(.inp)、Gmsh(.msh;导出为 2.2 格式)和 Nastran(.bdf、.nas)。除网格外,还可导出变形后的表面和拓扑优化的等值面(STL、STEP)。
- “工程”菜单导出带有体(
SOLID_<k>)和表面(SURF_<N>,即surface number N)的网格,并可将其导入回来。文件中的坐标采用 SI 单位(米)。 - DSL:
import mesh file="model.inp"和export mesh file="out.msh" [deformed] [scale=k]。DSL 中的网格导入只读取节点和四面体,不含体和表面;导出时坐标以场景单位(mm)写出,不做换算。
import mesh file="part.inp"
export mesh file="part_out.bdf"3网格
↑ 返回目录网格将 B-Rep 几何转化为有限单元。WebCAE 为任意实体生成四面体(tet4、tet10);在几何允许之处生成六面体、棱柱(楔形)和棱锥;在片体上生成四边形和三角形壳单元;沿线生成梁单元。单元类型及其公式见页面 /docs/elements;本章介绍网格如何生成、由什么控制,以及如何评价其质量与充分性。
网格划分在两种环境中运行:桌面应用(原生网格划分器进程)和浏览器(WebAssembly)。二者由同一份源代码构建,但对同一几何,结果的单元数和质量可能不同。以原生路径为基准;Web 版仅供参考。某些功能只在桌面版中提供(边界层、不受限制的大型装配体网格划分)——各小节中均有说明。
3.1四面体网格划分器稳定
四面体由开源网格划分器 Netgen 6.2 在 OCCT 几何之上生成。表面网格建立在 B-Rep 的面上,体网格则采用 Delaunay 方法,辅以推进波前法补充,随后优化单元形状(交换、光顺);方法的详细描述见 Schöberl J., NETGEN: An advancing front 2D/3D-mesh generator based on abstract rules, Computing and Visualization in Science, 1997。网格是协调的:两个面的公共边界上,节点重合。
生成的结果:
- 一阶(tet4)或二阶(tet10)的节点和四面体;
- 每个单元的区域(体编号),以便按体指定材料;
- 边界三角形,每个都带有其所属 B-Rep 面的编号。因此以
surface number N形式给出的条件在网格重建后依然有效:它们绑定在面上,而不是节点上。
用户可设定尺寸、过渡平滑度(grading)、曲率密度(safety)、最小尺寸和单元阶次(尺寸控制)。有三种质量档位:“草稿”(快速粗网格,不做优化,一阶)、“标准”和“最终”(面向正式计算的完整优化)。
如果网格未能生成,或质量不合格,网格划分器会用修改后的参数重试。这一过程绝不会悄悄进行:应用会显示横幅,说明哪些体是在被修改的设置下划分的,哪些比所要求的尺寸更粗,以及原因(档位、密度或浏览器限制)。未能划分网格的体会单独列出,仅在您同意后才被排除出计算。
可通过“取消”按钮或命令 mesh cancel 中断生成。对于装配体,已有的部分结果(已划分好的体)会保留。
units mm
box dx=60 dy=30 dz=10
mesh tet size=3 order=1mesh tet size=5,0.48 %)、杆的纵向响应(0.03 %)、带孔平板(四分之一模型对整体模型,1.38 %)。3.2P1 与 P2 单元阶次稳定
线性四面体 tet4 在单元内给出常应变,在弯曲和近不可压缩材料中会“闭锁”。二次 tet10 有十个节点(四个角点和六个棱边中点),应变线性变化,且棱边和面可以是曲线形的。在同一网格上,tet10 通常明显比 tet4 精确;代价是节点数,对于典型的四面体网格,节点数约增加 7–8 倍。
P2 网格分两步生成。网格划分器先生成 P1 网格,然后添加棱边中点,并把其中位于边界上的点移到 CAD 曲面上:单元的棱边和面由此具有原始几何的曲率。之后检查每个单元的雅可比是否为正。tet10 映射的行列式恰为三次多项式,因此把它按四面体上的 3 次 Bernstein 基展开:若 20 个系数符号全部相同,则雅可比在单元的整个区域内为正(Johnen A., Remacle J.-F., Geuzaine C., Geometrical validity of curvilinear finite elements, J. Comput. Phys., 2013)。对于条件被违反的单元,中间节点会局部拉直,网格仍可用于计算。该判据是充分而非必要的:拉直也可能在原本可接受的单元上触发。
阶次可通过命令 mesh 的参数 order=1|2 全局设定,或通过网格面板中的“线性/二次”开关设定。对于六面体,阶次由同一开关设定:生成 hex8 之后,中间节点在直棱边上放在中点,在曲棱边上则放在基本体的表面上(hex20)。混合网格中的棱柱和棱锥保持一阶;二次混合网格被禁用(明确拒绝,参见混合区域)。
units mm
mesh tet size=4 order=23.3局部单元阶次测试版
零件可以用 tet4 计算,而只在需要的区域保留二次单元。此时尺寸 h 和阶次 p 仍是相互独立的设置:区域 refine zone … order=2 在与球相交的单元中保留 tet10,外加一层过渡单元,区域之外则保留 tet4。
为使位移场保持连续,在 P2 单元与相邻 tet4 的公共棱边上,棱边中点通过约束方程与其两个端点关联:
其中 u_{a}、u_{b} 为棱边两个角点的位移,u_{\text{m}} 为其中间节点的位移。该约束恰好在区域边界上消除二次项,并作为普通约束方程提交给求解器。
units mm
mesh tet size=6 order=1
refine zone at=30,15,5 radius=8 size=1.5 order=23.4单元尺寸控制稳定
单元尺寸可同时由多个来源设定,最终结果不由优先级决定,而取最小值。在点 \mathbf{p} 处,网格划分器得到
其中 h_{\text{glob}} 为全局尺寸,h_{\text{face}} 为面上设定的尺寸,R 为局部曲率半径,s 为曲率密度参数(safety),h_{\text{zone},k} 为覆盖该点的各加密区尺寸,h_{\text{min}} 和 h_{\text{max}} 为尺寸的下限和上限。有几个容易误解的推论:面上的尺寸并不比区域“更重要”(在区域内取较小者),而且没有任何输入能使结果比全局尺寸更粗。
参数:
- 全局尺寸——以毫米给出,或按特征尺寸 L 取预设:“草稿”为 L/10,“标准”为 L/20,“精细”为 L/40;
- safety s——曲率密度 h \le R/s,范围 0.3–6,默认 1.5。s 越小,圆角和孔处的网格越粗。当尺寸由曲率而非滑块决定时,这是唯一的调节手段:界面会显示有多少个面受曲率限制,并预测单元数;
- grading——从细单元到粗单元的过渡平滑度;越小越平滑;
- 最小尺寸——下限;0 表示自动(取最大尺寸的一定比例);
- 体、面、边、顶点上的尺寸——“单元尺寸”和“局部尺寸”选项卡;在 DSL 中是绑定到
surface number N的区域; - 加密区——球(中心、半径、尺寸),
refine zone at=x,y,z radius=r size=h。对于局部六面体层,有圆柱、孔周围的环、长方体、圆角和环面区域(参见混合区域); - 清除区域——
refine clear。
“尺寸场”模式按有效单元尺寸为各体着色,并显示由哪个来源决定了它,以及是否触及下限。在质量直方图上可选取最差的单元,并在它们接触到的那些 CAD 面上设置局部尺寸(“细化区域”)。
units mm
mesh tet size=5 safety=1.2
refine zone at=50,20,0 radius=15 size=1.5
refine clearunits 时是米(参见单位)。边和顶点上的尺寸实现为围绕它们的局部加密,而不是对边上单元长度的硬性指定。尺寸下限可能使所要求的尺寸无法生成;界面会报告这一点并给出最终尺寸。3.5边界层实验性
对于近壁区域(流体动力学、薄接触层),需要沿壁面的棱柱层。层由层数 n、增长系数 q(范围 1–5)和第一层厚度 h_{1} 给定。总厚度是等比级数之和:
界面(“边界层”面板)显示这一总厚度。层由 Netgen 在选定的面上生成;在计算网格中,棱柱被剖分为四面体。层在桌面应用的界面中设定;同样的参数可通过内置 JS 控制台使用。
inflate=、layers=、ratio=、first=)的 DSL 命令 mesh 会拒绝执行:不能把各向同性加密冒充边界层。该功能较新,没有独立验证;界面中也如此标注。3.6网格质量指标测试版
对于四面体,应用计算三组量。
单元形状(“网格质量”面板)。 棱边比 \mathrm{ER} = \ell_{\max}/\ell_{\min},取自四面体的六条棱边。直方图按 q = 1/\mathrm{ER} 在 0 到 1 之间分为十个区间;鼠标悬停在柱上会在画布上高亮对应单元,点击则只保留这些单元。
归一化雅可比(SICN)。 在网格档案中,该字段称为 SICN(signed inverse condition number,带符号逆条件数),容差阈值与它比较。实际上,网格划分器对四面体计算的是从其第一个顶点出发的各棱边的归一化行列式:
正四面体给出 q_{J} = 1/\sqrt{2} \approx 0.71,由相互正交棱边构成的直角角点给出 1。这不是文献中 SICN 的完整定义(按该定义,正四面体给出 1):该量按一个角点计算,适用于 WebCAE 内部的网格比较,但不适合与其他软件的数值对照。行列式符号与网格中占多数的符号不同的单元被视为翻转;行列式为零则为退化。
容差。 接受阈值 q_{J,\min} \ge 0.1 的应用方式如下:
- 接受——没有翻转和退化的单元,\min q_{J} \ge 0.1;
- 警告——雅可比处处为正,但 \min q_{J} < 0.1(薄片):允许计算,并给出可能不可靠的提示;
- 拒绝——存在翻转或退化的单元,或网格为空:计算被阻止;
- 网格的不连通块(装配体散开)无条件阻止计算:刚度矩阵奇异。
对于六面体,阈值相同,度量为单元八个角点上缩放雅可比的最小值(Verdict 的定义);不允许出现非正值。对于 tet10,有效性依据 Bernstein 系数判定(参见单元阶次)。
线性 hex8 在弯曲时会闭锁:当厚度方向上的单元数较少时,挠度偏小,界面会在网格旁给出此类警告。
3.7体六面体网格测试版
结构化六面体给出规则的网格,厚度方向的单元数可预测,但并非对每个体都能自动生成。应用按由易到难的顺序尝试各条路线,失败时如实退回到四面体。
- 结构化基本体。 长方体、圆柱(O-grid 拓扑:中心的方形块和四个极向块)、球、截锥、半球:超限插值(transfinite interpolation),
mesh hex nx=… ny=… nz=…。 - 拉伸。 体被判定为棱柱形(“2.5D”):带孔的截面沿某一方向拉伸;允许旋转体。
- 分解。 体被分割为棱柱,每个棱柱的截面是一个四边形块;协调各界面,然后在每个块中生成结构化六面体网格并缝合节点。
- 失败。 如果没有任何路线给出可接受的网格,则生成四面体网格,并以代码输出原因:不存在悄悄的替换。
生成的六面体网格在使用前要通过验收:网格体积与体的精确体积核对,自由面必须位于 B-Rep 边界上,网格必须是单一连通分量,没有悬挂节点,也没有被三个及以上单元共用的面,八个角点上缩放雅可比的最小值不低于质量阈值(0.1)。未通过验收的网格不会进入计算。
在桌面应用中,如果已安装,还可使用外部生成器:HOHQMesh(等厚平面零件)和 SALOME 的块方法 HexaBlock。在“自动”模式下,它们按“结构化拉伸 → HexaBlock → 四面体”的链条接入。
units mm
box dx=60 dy=30 dz=10
mesh hex size=5mesh tet 和局部六面体区域。在 DSL 中,mesh hex size=… 之后支持在已接受的六面体网格上对单个体进行静力分析(脚本路径下的计算在 WebAssembly 求解器上进行);多个体、同一脚本中的局部六面体区域、模态分析、屈曲和热分析在这种网格上均不支持。命令 mesh hex decompose 只生成网格并打印报告。六面体网格在浏览器和桌面版中使用同一份代码生成(没有网格划分器的原生版本)。3.8局部六面体区域与混合网格测试版
当某一处需要六面体层(孔边、轴颈、接触垫片)时,其余部分保持为四面体。区域相对于选定的面或体给出,其余参数为层数、级数和耦合方式。
区域类型:
refine tube surface number N thickness=t——沿圆柱面的层(孔边、轴颈);refine inflate surface number N thickness=t——沿平面或球面的层(接触垫片);refine box at=… dx= dy= dz=——体内部的长方体,用结构化六面体填充(clip=on时按边界裁剪);refine sweep surface number A to surface number B——同一个体的两个平行平面之间的棱柱。
层参数:layers(1–12)、bias——从壁面起的厚度级数系数(1–3)、elements=wedge|hex——层的单元类型、conform=weld|mpc——耦合方式。
界面协调性。 六面体四边形面的双线性迹与同一面上两个四面体的分段线性迹并不一致,因此把 hex8 直接与 tet4 粘合无法通过片试验(patch test)。默认情况下,层由棱柱(wedge6)构成:界面上每个三角形之上的棱柱,按构造即与四面体协调。当 elements=hex 时,过渡由棱锥(pyr5)完成:hex8 的界面单元向其自身中心剖分为棱锥,而在四面体一侧的面上,棱锥由两个具有相同对角线的四面体替代。方式 conform=mpc 生成独立的层,并通过节点约束方程将其与四面体相连。
混合网格在片试验中实测的吻合度(位移的最大相对误差):棱柱与四面体粘合——约 10^{-14}(Web 平台);hex8 与两个 tet4 直接粘合——3.1 \times 10^{-3}(原生);hex8 → pyr5 → tet4 过渡——9 \times 10^{-15}(原生)。不同平台的数值不混用。
对于 Kirsch 问题(带孔平板),孔边采用棱柱的混合网格,在 1635–4473 个自由度下,\sigma_{\theta} 最大值的误差在 0.1–0.9 % 之内,沿孔弧线的均方根误差为 0.7–1.2 %。纯四面体网格在 1374–12828 个自由度下,峰值误差在 −17…+4 % 之间波动,沿弧线的均方根误差不低于 5.3 %。
units mm
refine tube surface number 12 thickness=3 layers=3 bias=1.2
refine sweep surface number 1 to surface number 2 layers=4elements=hex 的接头需要过渡棱锥;hex8 直接与 tet4 粘合的旧文件不允许重新计算——必须重新生成网格。3.9装配体与接触对的网格测试版
装配体有两个相反的任务。固定连接的体(焊接、胶接、过盈配合)必须在接合处共用节点——否则刚度矩阵会分裂为互不相连的块。可能分离或滑动的体(接触)则独立划分网格,接合处由求解器的接触算法保证。
粘合(bonding=1)。 相接触的体作为一个协调的模型划分网格:公共面按构造即共用节点。模式有:全部粘合、粘合选定的组、不粘合(bonding=0)。对于接触、公差范围内的间隙和重叠,会执行专门的布尔运算;筛选配对的公差(bondtol=)与运算本身的公差(fuzzy=)分别设定。接合处模式 glue=auto|contact|full:按接触的快速粘合、完整的相交搜索,或自动选择。重叠由参数 interference=cut|split|ignore 处理:把体积交给较小的体(默认)、将相交部分碎分(体积精确,但过盈配合的碎片可能是薄膜),或保持原样(过盈处的材料被计算两次)。
接触对。 彼此没有粘合的体各自单独划分网格;接触面上的节点不必重合。计算之前会检查界面是否就绪:接触区域可能已塌缩为同一个区域,没有找到配对,间隙过大,或者粘合的配对不协调。每种此类结果都会明确报告。
并行网格划分。 分别划分网格时,各体独立且并行生成,进度按体显示,结果汇集为一个网格。如果某个体在原生模式下未能划分,可以由内置的 Web 网格划分器补划;应用会警告此类网格可能略有不同。粘合时,装配体作为统一的模型划分。
对现成网格的缝合。 命令 weld [tol=] 和“缝合”面板在公差范围内合并已生成网格中重合的节点(0 表示自动,取外形对角线的一小部分)。这是节点的缝合而不是几何的缝合:适用于有意拼合的壳面片。
units mm
mesh tet size=8 bonding=1 glue=auto interference=cutinterference=split 下,过盈配合区域的小薄片可能使网格划分失败。单个体上的 safety 尺寸仅在各体分别划分时生效。浏览器中大型装配体的网格划分受标签页内存限制,因此那里的设置是固定的;对于重型装配体,请使用桌面应用。3.10壳与梁的网格测试版
壳。 片体(B-Rep shell)划分为表面网格:mesh shell size=h element=tri|quad。三角形在每个面的参数空间中生成——沿面的轮廓做约束 Delaunay 三角剖分,并投影到曲面上。四边形按“1 → 3”方案由三角形得到:每个三角形通过形心和棱边中点分为三个四边形。棱边中点由相邻单元共用,因此网格在面的接缝处是协调的,且无论三角形有多少,单元全部为四边形。四边形的棱边长度为原三角形棱边长度的 0.29 到 0.5,所以原始三角剖分要生成得明显更粗。
对于边为直线的四边形面(箱体、板),参数 pattern=structured(与 element=quad 一起)用 Coons 超限混合生成结构化网格,各棱边的分段数相互协调。如果形体中有不适用的面(孔、圆弧),命令会拒绝并给出该面的编号,而不是混合不相容的网格。
梁。 梁网格沿选定的线(B-Rep 的棱边)生成:给定单元数或尺寸;将梁布置到棱边上时,会与相邻的壳形成共用节点(框架与梁)。装配体的单元在计算步骤中编译。
units mm
mesh shell size=10 element=quad
assign beam edges=3,7 section=rect w=10 h=30 flush=outermesh shell element=quad pattern=structured,0.09 %)。固支板对照 Timoshenko 解的测试,在四边形网格上,对应 25、12、10 和 6 mm 的尺寸,偏差分别为 −2.2、−0.8、−0.35 和 +0.35 %。3.11Zienkiewicz–Zhu 误差指示器与自适应加密测试版
应力最大值无法区分真实的应力集中(孔、过渡圆角)与粗网格造成的假象。为此使用 Zienkiewicz–Zhu 误差指示器。有限元应力场 \boldsymbol{\sigma}_{h} 在单元之间是间断的。通过对节点周围单元片的局部光顺来恢复连续场 \boldsymbol{\sigma}^{*},并以残差的能量范数估计单元上的误差:
其中 \mathbf{C} 为弹性矩阵。模型的相对误差 \eta_{\text{rel}} = \eta \,/\, \sqrt{\lVert\boldsymbol{\sigma}^{*}\rVert_{E}^{2}+\eta^{2}}。对于 tet10,恢复在超收敛的 Gauss 点上以 SPR 方法进行(Zienkiewicz O.C., Zhu J.Z., The superconvergent patch recovery and a posteriori error estimates, Int. J. Numer. Meth. Eng., 1992);单元上的积分精确计算,没有积分误差。对于 tet4 和混合网格,使用节点平均,其精度较低。
命令 hotspots 依据指示器和应力场找出热点及其尺寸,命令 refine adaptive 闭合循环:计算 → 热点 → 热点处的加密区 → 重建网格 → 计算。当满足下列条件之一时循环停止:网格收敛指数(GCI,参见收敛性研究)不高于目标值,诊断出奇异性,相对误差 \eta_{\text{rel}} 不高于给定值,或遍数用完。
refine adaptive 的参数:passes——遍数,从 1 到 8(默认 3);gci——以百分数表示的目标 GCI 带宽(默认 5);tol——以百分数表示的目标 ZZ 相对误差;refine——每遍中热点处单元尺寸缩小的倍数(默认 1.8);minsize——尺寸下限;grading、max_hotspots、at=、radius=——过渡平滑度、热点个数和显式的测量区域。执行之后可使用测量量 adaptive_passes、adaptive_verdict、adaptive_gci_percent、adaptive_richardson_peak、adaptive_zz_error_percent。
units mm
solve
refine adaptive passes=3 gci=5 tol=2 refine=1.6 minsize=0.5
probe adaptive_verdict子模型(submodel at=… box=… size=… order=2)延续同一思路:围绕应力集中源切出一个子区域,网格划得很细(包括二次 tet10),并按 Saint-Venant 原理(位移边界插值法)把整体粗模型的位移传递到切割边界上。切割边界节点(含中间节点)的位移通过约束方程以非齐次 Dirichlet 条件给出。
submodel 和 refine adaptive:粗的 P1 网格(h = 6 mm)使峰值偏低 41.3 %,采用局部 tet10 的子模型最终结果与 K_t = 3.08 相差 −3.57 %。一个算例对应两项功能,因此状态标注较为审慎。3.12网格收敛性研究测试版
网格收敛不同于求解器收敛。这里,在越来越细的网格上进行的一系列独立计算,回答的问题是:所选的量(最常见的是应力集中源处的应力峰值)趋向于什么。如果它不趋于稳定,则结果表中的任何数字都是网格的假象。
序列的度量是上一次迭代热点周围球内场的最大值,而不是全局最大值:在不同网格上,全局最大值可能出现在模型的不同位置(一个在孔边,另一个在固定端),这样比较的就是不同的点。特征单元尺寸取自球内网格本身,为 h = \overline{\Delta V_{e}}^{\,1/3}(Celik I.B. et al., Procedure for estimation and reporting of uncertainty due to discretization in CFD applications, J. Fluids Eng., 2008),而不是所要求的尺寸:网格划分器给出的并不是所要求的那个尺寸。
对最后三个网格,其尺寸为 h_{1} > h_{2} > h_{3},值为 f_{1}, f_{2}, f_{3}:
这里 p 为观测到的收敛阶,f_{\text{ext}} 为向无限细网格的 Richardson 外推,GCI 为 Roache 网格收敛指数(ASME V&V 20),不确定度带宽等于 \mathrm{GCI}\cdot\lvert f_{3}\rvert。阶 p 按带符号处理(Celik 的公式中取整个表达式的绝对值):p 的符号本身就是发散的诊断。对于不相等的 r_{21}、r_{32},取几何平均 r_{\text{eff}},而不是 Celik 的迭代公式。
对序列的判定:
- 已收敛——GCI 不高于目标值(默认 5 %),结果记为 f_{\text{ext}} \pm 带宽;
- 继续加密——序列收敛,但带宽仍然较宽;增量符号交替变化时同样如此(序列围绕极限摆动,外推不可靠);
- 可能存在奇异性——p \le 0,增量不减小:峰值随加密而增大。这对尖锐的内凹角(应力按 h^{-\lambda} 增长,270° 角的 \lambda \approx 0.456)、集中力或沿棱边的刚性固定是典型情形。加密网格无济于事——请增加圆角或更换提法;
- 数据不足——少于三个网格;不正确——尺寸没有减小,峰值为零或非数值,或网格在两次迭代之间没有变化。
不存在因迭代次数上限而悄悄停止的情况:判定始终是上述之一。
4材料模型
↑ 返回目录本章介绍 WebCAE 所计算的本构关系:定律包含什么、用户设定哪些参数、该定律在哪些分析类型中起作用,以及如何验证。部分模型已在计算内核中实现,但尚未接入实体的计算;这类模型标注为实验性,其小节中也直接说明了这一点。
约定。拉伸为正。定律中的应力和应变按 Voigt 顺序 [xx,\,yy,\,zz,\,xy,\,yz,\,zx] 排列;剪应变采用工程剪应变(\gamma_{ij} = 2\varepsilon_{ij}),剪应力采用张量剪应力(\tau_{ij} = \sigma_{ij})。在求解器边界上一切均为 SI 单位(Pa、K、kg/m³、s);在界面中,输入字段接受 MPa、GPa、psi、°C,并在输入时换算为 SI。在 DSL 中,应力和模量以帕斯卡给出,塑性相关的温度以开尔文给出。
| 模型 | 分析类型 | 状态 |
|---|---|---|
| 各向同性弹性 | 所有线性和非线性分析 | 稳定 |
| 带取向的三维正交各向异性 | 线性静力分析,四面体 | 测试版 |
| 层合壳 | 静力、模态、屈曲、热载荷 | 稳定 |
| J2 塑性 | 实体的非线性静力分析(桌面版),显式动力学 | 稳定 |
| Johnson–Cook | 显式动力学;静力分析中不含速率与温度 | 稳定 |
| Neo-Hooke | 实体的非线性静力分析 | 稳定 |
| 材料破坏准则 | 显式动力学(单元侵蚀) | 测试版 |
| 基于弹性解的强度准则 | 后处理 | 测试版 |
| Mooney–Rivlin、Yeoh、Arruda–Boyce、Ogden | 内核;未接入实体计算 | 实验性 |
| F = Fe·Fp、Norton–Bailey、Perzyna、Prony、Drucker–Prager、GTN | 内核;未接入实体计算 | 实验性 |
4.1线弹性各向同性材料稳定
所有线性计算的基本定律,也是所有非线性计算的弹性部分。只要应力未达到屈服,且应变相对于 1 很小,它就足够使用。
Voigt 形式的胡克定律:
对角线上的 \mu 块对应工程剪应变:\tau_{xy} = \mu\gamma_{xy}。允许 -1 < \nu < 0.5。当 \nu \to 0.5 时,矩阵 \mathbf{C} 的体积部分退化,线性四面体会闭锁;对于近不可压缩材料,请采用二阶单元(参见单元)。
用户设定杨氏模量 E、泊松比 \nu、密度 \rho(参见下一小节)。得到的结果是位移、应变、应力以及导出量(von Mises 等效应力、主应力),详见线性分析一章。
一个材料指定给整个体。对于由多个体组成的装配体,每个体有各自的材料,包括体与体接合处不同的 E、\nu、\rho。
material E=200e9 nu=0.3 density=78504.2密度、热膨胀与温度相关性稳定
模态分析、动力学、重力和加速度需要密度 \rho(kg/m³);没有密度时,涉及质量的请求会被拒绝,而不是采用默认值。对于壳和层合板,质量取自材料或各层的密度。
热膨胀由线膨胀系数 \alpha(1/K)给出。热应变是各向同性的,应力由力学部分决定:
热载荷和耦合问题见传热与多物理场一章。这里要注意的是 \alpha 为常数:不存在 \alpha(T) 相关性。材料模型中的温度相关性有三处:热导率表 \kappa(T)(kappa_table="T:k,…",温度单位为 °C,节点之间线性插值,表外取端点常数)、Johnson–Cook 模型中屈服强度的温度系数,以及层合板各层的热膨胀。杨氏模量不依赖于温度。
4.3材料库稳定
内置材料库是一张统一的预设表;界面中的材料卡片、DSL 和编程接口都使用它。预设包含 E、\nu、\rho、热导率、比热容、\alpha 以及用于安全系数的屈服强度。
- 钢:通用结构钢(200 GPa、0.3、7850 kg/m³)、20 钢、40Cr(40Х)、09Mn2Si(09Г2С)、不锈钢 304。
- 铝:通用铝(70 GPa、0.33)、D16T(Д16Т)、6061。
- 钛:通用钛(116 GPa、0.32)和 VT6(ВТ6,对应 Ti-6Al-4V);铜(120 GPa、0.34);塑料 ABS 和 PA6。
- 作为 Neo-Hooke 材料的橡胶:\mu = 3.36 MPa,K = 166.7 MPa。
- 塑性预设:S355 钢(J2,\sigma_y = 355 MPa)、6061-T6 铝(J2)、OFHC 铜和 4340 钢(Johnson–Cook)。
- 用于 CFD 的介质:空气、水、发动机机油、煤油。
数值为参考性的成组数据:具体牌号的比热容和强度极限请取自您的证书。普通预设中的屈服强度只用于安全系数,不包含塑性;塑性出现在带显式定律的预设以及您自行设定了塑性的材料中。
用户可以向工程的材料库添加自己的材料、修改它们并指定给体。对于层合壳,有单独的铺层正交各向异性材料库(内置的单向塑料 140/10 GPa)。
在 DSL 中,预设提供基础值,显式参数则对其进行覆盖:
material steel E=210e94.4三维正交各向异性材料与取向测试版
适用于三个轴向性质各不相同的材料:单向和编织复合材料、木材、轧制材。该定律由材料轴下的九个独立常数 E_1, E_2, E_3, \nu_{12}, \nu_{23}, \nu_{13}, G_{12}, G_{23}, G_{13} 以及每个单元中的轴向取向给定。
按 Voigt 顺序的柔度矩阵,剪应变为工程剪应变:
泊松比定义为在单轴 \sigma_i 作用下 \nu_{ij} = -\varepsilon_j/\varepsilon_i;对称性给出 \nu_{ji} = \nu_{ij}E_j/E_i。正定性在计算之前检查:E_i > 0,G_{ij} > 0,三对的 1 - \nu_{ij}\nu_{ji} > 0,且
不通过检查的参数组会被拒绝,并给出被违反条件的名称。
取向。在每个单元的形心处构造右手三元组 (\mathbf{e}_1, \mathbf{e}_2, \mathbf{e}_3),矩阵 \mathbf{Q} 的各行是它在整体坐标轴中的向量。单元刚度矩阵通过 Bond 旋转得到,应力则返回到材料轴中:
三元组的设定模式:
surface——轴 \mathbf{e}_3 等于参考面上离形心最近的三角形的外法线;\mathbf{e}_1 为给定方向axis在切平面上的投影,\mathbf{e}_2 = \mathbf{e}_3\times\mathbf{e}_1。适用于沿曲面铺设的层合零件。cartesian——统一的三元组:\mathbf{e}_3 沿normal,\mathbf{e}_1 为axis的投影。cylindrical——\mathbf{e}_3 沿从通过origin的圆柱轴出发的径向。spherical——\mathbf{e}_3 沿从点origin出发的径向。
角度 angle 使 \mathbf{e}_1、\mathbf{e}_2 绕 \mathbf{e}_3 旋转:\mathbf{e}_1' = \cos\theta\,\mathbf{e}_1 + \sin\theta\,\mathbf{e}_2。如果给定轴的投影退化,则取备用方向;此类单元的个数记录在结果中。三元组可以在模型上显示。
该求解与通用的各向同性装配分开:对于 TET4 和 TET10 四面体,刚度按旋转后的矩阵装配,方程组用共轭梯度法求解,并采用按节点分块的预条件子,约束(CE、刚性区域)用罚函数引入。结果:位移,整体坐标轴下和材料轴下的应力(localStressXX…XZ,探针 ortho_local_s11_max 及类似量),三元组场。
material E1=140e9 E2=10e9 E3=10e9 nu12=0.3 nu23=0.4 nu13=0.3 G12=5e9 G23=3.5e9 G13=5e9 density=1600
orientation surface number 3 axis=1,0,0 angle=30在界面中,正交各向异性定律在材料卡片中选择(“三维正交各向异性”,九个常数,参考面,方向,角度);圆柱和球模式可通过 DSL 使用。
4.5层合壳:层合板理论稳定
层合壳用沿厚度平均的单一定律——刚度组合——来代替一组铺层。它适用于复合材料面板和夹层板,其厚度相对于尺寸很小。铺层自下而上(从 -z_e 到 +z_e)给定,各层有自己的正交各向异性材料、厚度和角度。
材料轴下的铺层,平面应力状态:
从单元的 x_e 轴起,绕 +z_e 逆时针旋转角度 \theta(c = \cos\theta,s = \sin\theta):
项 \bar Q_{16}、\bar Q_{26} 正比于 \sin 2\theta,并随角度变号;在 0^\circ 和 90^\circ 时它们为零,因此仅在这些角度上的检验捕捉不到符号和剪切项的错误。产品的检验语料会计算 \pm15^\circ、\pm30^\circ、\pm45^\circ、\pm60^\circ、\pm75^\circ 以及非对称铺层。
对于位于 z_{k-1} 与 z_k 之间的第 k 层(从参考面起算),单位宽度的刚度组合为:
这里 \boldsymbol\varepsilon_0 = [\varepsilon_{xx}, \varepsilon_{yy}, \gamma_{xy}],\boldsymbol\kappa = [\kappa_{xx}, \kappa_{yy}, \kappa_{xy}](扭曲率采用工程定义),\varepsilon(z) = \varepsilon_0 + z\kappa。耦合矩阵 \mathbf{B} 对非对称铺层不为零;此时拉伸会引起弯曲。铺层的横向剪切 \bar{\mathbf{Q}}_s 由 G_{13}、G_{23} 经同样的旋转构造:
剪切不均匀性修正:默认对所有铺层取 k_s = 5/6。变体 shear=energetic 按铺层取 k_s^{(k)} = \min\bigl(1,\ \tfrac56\,G_{\max}/G_k\bigr)(夹层板的软芯使 k_s 趋近于 1);这是工程上的启发式做法,而不是由平衡条件推出的结论。
参考面相对于中面偏移 z_0(offset=bottom|middle|top|数值)时,无需重新装配即可重新换算刚度组合:\mathbf{B}' = \mathbf{B} + z_0\mathbf{A},\mathbf{D}' = \mathbf{D} + 2z_0\mathbf{B} + z_0^2\mathbf{A}。
单元为四节点 MITC4(Dvorkin、Bathe 1984;Bathe、Dvorkin 1985):剪切按绑定点处的协变应变计算,膜与弯曲采用 2\times 2 个 Gauss 点,绕法线的转动由具有膜剪切刚度 A_{66} 的 Hughes–Brezzi 罚项稳定化。刚度组合 (\mathbf{A},\mathbf{B},\mathbf{D},\mathbf{A}_s) 直接进入单元,因此各向同性壳是刚度组合的特例(\mathbf{A} = Et/(1-\nu^2)\,\mathbf{C},\mathbf{D} = Et^3/(12(1-\nu^2))\,\mathbf{C},\mathbf{B}=0)。
计量铺层角度的 x_e 轴,由参考轴在壳上的投影(axis=X|Y|Z)、坐标系(cs=)和旋转 phi= 确定。如果参考轴几乎与单元垂直,则取备用轴,此类单元的个数会被报告。
壳的热载荷通过内力 \mathbf{N}_T = \int \bar{\mathbf{Q}}\,\bar{\boldsymbol\alpha}\,\Delta T\,dz 和力矩 \mathbf{M}_T 进入;铺层应力按力学应变 \varepsilon - \bar\alpha\Delta T(z) 计算。铺层需要 \alpha_1、\alpha_2(沿纤维和垂直于纤维)。
用户设定的内容:铺层的正交各向异性材料(E1 E2 nu12 G12 G13 G23,密度,强度,\alpha_1,\alpha_2)以及铺层顺序(plies="名称:厚度:角度,…"、symmetric、repeat、offset、shear)。铺层厚度以脚本长度单位给出,模量以帕斯卡给出。在界面中是壳截面中的铺层顺序编辑器。两个平台上的提法相同:在桌面版(基准)中壳按原生路径计算,在浏览器中按 Web 构建计算。
ortho name=ud E1=140e9 E2=10e9 nu12=0.3 G12=5e9 G13=5e9 G23=3.5e9
section shell laminate plies="ud:0.25:45,ud:0.25:-45,ud:0.25:0" symmetric=truemesh shell element=quad):三角形单元没有膜与弯曲的耦合。不支持:多层铺层的几何非线性、隐式动力学(层合板的质量未接入,计算也不会被替换成各向同性壳)。采用一阶理论:位移沿厚度线性分布,剪切沿厚度为常数。相对于三维弹性理论,它会低估厚板的挠度:边长/厚度比为 4–10 时为 -10 \ldots -12\,\%,比值为 20 时为 -4\ldots-5\,\%,比值为 100 时为 -0.2\,\%(正交铺层,基准为 Pagano 的三维解,由独立代码复现)。4.6铺层破坏准则与层间应力测试版
按铺层的后处理:根据单元中壳的广义应变(或其节点 SPR 恢复值),计算铺层在材料轴下的应力 (\sigma_1, \sigma_2, \tau_{12}),取铺层底部、中部、顶部三个点,然后计算破坏指数。这些准则需要 ortho 中的铺层强度 X_t, X_c, Y_t, Y_c, S;缺少其中任何一个,准则都会被拒绝并给出字段名称。
- 最大应力:FI = \max\bigl(\lvert\sigma_1\rvert/X,\ \lvert\sigma_2\rvert/Y,\ \lvert\tau_{12}\rvert/S\bigr),X 和 Y 按应力符号选取。
- Tsai–Hill:FI = (\sigma_1/X)^2 - \sigma_1\sigma_2/X^2 + (\sigma_2/Y)^2 + (\tau_{12}/S)^2。
- Tsai–Wu:FI = F_1\sigma_1 + F_2\sigma_2 + F_{11}\sigma_1^2 + F_{22}\sigma_2^2 + F_{66}\tau_{12}^2 + 2F_{12}\sigma_1\sigma_2,F_1 = 1/X_t - 1/X_c,F_{11} = 1/(X_tX_c),F_{12} = -\tfrac12\sqrt{F_{11}F_{22}}。
- Hashin(平面,四种模式):拉伸时纤维断裂 (\sigma_1/X_t)^2 + (\tau_{12}/S)^2,纤维屈曲 (\sigma_1/X_c)^2,拉伸时基体开裂 (\sigma_2/Y_t)^2 + (\tau_{12}/S)^2,压缩时 (\sigma_2/2S_{23})^2 + \bigl[(Y_c/2S_{23})^2 - 1\bigr]\sigma_2/Y_c + (\tau_{12}/S)^2;铺层指数为各模式中的最大值。
- 分层:FI = (\tau_{13}/S_{13})^2 + (\tau_{23}/S_{23})^2,按层间剪切计算。
强度储备系数 RF 是使 FI = 1 的载荷乘子:对于线性准则为 1/FI,对于二次准则为 1/\sqrt{FI},对于 Tsai–Wu 和 Hashin 的“基体压缩”模式则为方程 a\lambda^2 + b\lambda = 1 的正根。DSL 探针:laminate_fi_<准则>、laminate_rf_<准则>、laminate_s1、laminate_s2、laminate_t12、laminate_t13、laminate_t23,对第 N 层加后缀 _plyN(1 为最下层)。
一阶理论下的层间应力:\tau_{13}、\tau_{23} 在铺层厚度内为常数。选项 interlaminar=equilibrium 通过沿厚度、从自由下表面起对平衡方程积分来恢复 \tau_{xz}、\tau_{yz}(梯度取自网格的相邻单元),\sigma_{zz} 则按同一原理估计。
4.7J2 塑性稳定
用于金属的 Huber–von Mises 模型:屈服之前为弹性工作,之后为带硬化的塑性流动。它用于实体的非线性计算(小应变或几何非线性)以及显式动力学。非线性迭代的总体方案见关于材料非线性的章节。
带背应力张量 \boldsymbol\alpha 的屈服面:
其中 \mathbf{s} 为应力偏量。积分采用径向返回(Simo, Hughes, Computational Inelasticity, 1998, 第 3 章;Wilkins, 1964)。弹性试探步 \mathbf{s}^{\mathrm{tr}} = 2\mu\,\mathrm{dev}(\boldsymbol\varepsilon - \boldsymbol\varepsilon_p);若 f^{\mathrm{tr}} \le 0,则该步为弹性。否则,取法向 \mathbf{n} = \boldsymbol\xi^{\mathrm{tr}}/\lVert\boldsymbol\xi^{\mathrm{tr}}\rVert:
关于等效塑性应变增量 \Delta p 的标量方程严格单调,根唯一:对于线性硬化,\Delta p = f^{\mathrm{tr}}/(3\mu + H);对于曲线,则在区间 [0,\ f^{\mathrm{tr}}/3\mu] 上采用带二分法的安全 Newton 法。切线为算法切线(与积分器一致)、对称:
硬化。曲线 \sigma_c(p) 是单轴单调加载的应力–应变曲线:
- 理想塑性:\sigma_c = \sigma_{y0};
- 按切线模量 E_t 的线性硬化:\sigma_c = \sigma_{y0} + Hp,H = E E_t/(E - E_t);
- 多线性:表格 (p_i, \sigma_i),第一个点 p_0 = 0 给出 \sigma_{y0},p 严格递增,\sigma 不递减;超出最后一点后应力保持常数(理想塑性),而不是沿斜率延伸。
随动硬化比例 \beta \in [0, 1](0 为各向同性,1 为 Prager 线性随动)混合两种机制:半径 R = \sigma_{y0} + (1-\beta)\bigl(\sigma_c(p) - \sigma_{y0}\bigr),中心位移 \Delta\boldsymbol\alpha = \sqrt{2/3}\,\beta\,\bigl[\sigma_c(p_{n+1}) - \sigma_c(p_n)\bigr]\,\mathbf{n}。单轴曲线与 \beta 无关,而反向屈服(Bauschinger 效应)则依赖于它。软化被禁止(H \ge 0)。
非线性静力分析的运动学:在几何非线性模式下,该定律接受 Green–Lagrange 应变并返回第二类 Piola–Kirchhoff 应力张量(塑性在这一对量中是可加的:小应变、大转动);输出为 Cauchy 应力 \sigma = \mathbf{F}\mathbf{S}\mathbf{F}^T/J。在“仅材料”模式下,\varepsilon = \mathrm{sym}\nabla\mathbf{u}。加载历史(loadpath="1,0")给出卸载后的残余应变以及循环。
用户设定的内容:E、\nu(弹性部分)、\sigma_{y0}(yield=,Pa)、硬化(hardening=linear|multilinear、et=、curve="p:σ,p:σ,…")、kinematic=。结果:等效塑性应变(节点场,探针 plastic_strain)、已塑性化的 Gauss 点比例,对于理想塑性则为极限载荷比例。
material E=210e9 nu=0.3 plasticity=j2 yield=250e6 hardening=linear et=1e9
nlgeom material loadpath="1,0"
solve4.8Johnson–Cook稳定
适用于高应变率和受热条件下金属的定律:屈服强度随速率增大,随温度降低。主要应用领域是显式动力学:冲击、穿甲、加速。
速率系数仅在 \dot\varepsilon^* > 1 时起作用(低于此值取 1:准静态作为下界)。返回过程与 J2 相同,但 \Delta p 的方程中包含该步的速率 \dot{\bar\varepsilon}_p = \Delta p/\Delta t 以及当前的温度系数。绝热升温通过给定定律材料的比热容 c_p 开启:\Delta T = \eta\,q\,\Delta p/(\rho c_p),\eta 为 Taylor–Quinney 系数(默认 0.9);温度分步变化,该步的屈服按该步起始时的温度计算。
参数:A、B(Pa)、n、C、m、\dot\varepsilon_0(epsdot0,1/s)、T_{\mathrm{room}}(troom,K)、T_{\mathrm{melt}}(tmelt,K)、taylor、cp。随动硬化与 Johnson–Cook 不能组合使用(会被拒绝)。
material E=120e9 nu=0.34 density=8900 plasticity=jc A=90e6 B=292e6 n=0.31 C=0.025 m=1.09 tmelt=1356 cp=3854.9材料破坏准则测试版
这些准则作用于 J2 或 Johnson–Cook 塑性定律之内,用于显式动力学中的单元侵蚀;静力分析和模态分析会忽略它们。任一准则触发即视为该 Gauss 点失效。产品对单元所做的处理见侵蚀一节。
- \varepsilon_p \ge \varepsilon_{\mathrm{fail}}——极限等效塑性应变(
ep:)。 - Johnson–Cook 累积损伤 D = \sum \Delta\varepsilon_p/\varepsilon_f \ge 1(
jc:d1/d2/d3/d4/d5):
d_3 的符号与 Johnson、Cook(Eng. Fract. Mech. 21(1), 1985, 31–48)一致:对金属 d_3 < 0;\eta 限制在区间 [-3, 3] 内。
- \sigma_1 \ge \sigma_{\max}——最大主应力(
smax:,Pa)。 - \sigma_m \ge p_{\mathrm{spall}}——静水拉应力,层裂(
spall:,Pa)。
损伤 D 不会降低刚度:它只触发失效。
material steel plasticity=j2 yield=355e6 fail="ep:0.25,smax:1.2e9"4.10Neo-Hooke 材料稳定
用于橡胶和弹性体在有限应变下的超弹性材料。它在 Total Lagrangian 提法下用于实体的非线性静力分析(几何非线性)。
第二类 Piola–Kirchhoff 应力张量 \mathbf{S} = 2\,\partial W/\partial\mathbf{C},切线 \mathbb{D} = 4\,\partial^2 W/\partial\mathbf{C}\partial\mathbf{C} 以解析式给出(与有限差分核对,至 10^{-8})。输出应力为 Cauchy 应力,\boldsymbol\sigma = \mathbf{F}\mathbf{S}\mathbf{F}^T/J。常数 \mu、\kappa 按各向同性弹性小节中的公式取自材料的 E、\nu(在橡胶卡片中则给出 \mu 和 K)。单元:HEX8、TET4、WEDGE6、PYR5、HEX20、TET10、HEX27。
nlgeom on);在线性静力分析中以及在带四面体的盒体路径上,非线性材料会被拒绝,而不是以非线性之名按线性计算。material E=1e7 nu=0.45 model="neo-hookean" density=1100
nlgeom on4.11Mooney–Rivlin、Yeoh、Arruda–Boyce、Ogden实验性
这些势函数用于描述 Neo-Hooke 定律无法描述的橡胶拉伸曲线。内核包含全部四种,且都带解析切线;但在当前版本中,“材料卡片—实体计算”的链路尚未完整,因此本章标为实验性。
每个势函数都加上体积部分 \tfrac\kappa2(J-1)^2(Arruda–Boyce 为 \tfrac\kappa2\bigl[\tfrac12(J^2-1)-\ln J\bigr]);若给定了可压缩性参数 D_1,则 \kappa = 2/D_1。小应变模量:Mooney–Rivlin \mu_0 = 2(C_{10}+C_{01}),Yeoh \mu_0 = 2C_{10},Arruda–Boyce \mu_0 = \mu,Ogden \mu_0 = \sum\mu_p(Abaqus 约定;经典的 c_p = \mu_p/\alpha_p 由标志 ogden_abaqus=false 选择)。对于 Ogden,主伸长比通过 \mathbf{C} 的谱分解得到。
4.12有限弹塑性应变 F = Fe·Fp实验性
在可加的 J2 方案不成立之处——数十个百分点的应变——需要乘法塑性。已实现一个定律原型,但未接入界面和 DSL。
梯度分解为 \mathbf{F} = \mathbf{F}_e\mathbf{F}_p,\det\mathbf{F}_p = 1。弹性采用弹性构形中的 Hencky 弹性:由 \mathbf{C}_e = \mathbf{F}_e^T\mathbf{F}_e 的谱分解得到对数应变 h_a = \tfrac12\ln\lambda_a,Kirchhoff 应力为 \boldsymbol\tau = K\,\mathrm{tr}(\mathbf{h})\,\mathbf{1} + 2\mu\,\mathrm{dev}(\mathbf{h})。流动为基于 Mises 的相关联流动,线性硬化 \sigma_y = \sigma_{y0} + Hp;增量 \Delta p = f^{\mathrm{tr}}/(3\mu + H) 在对数应变空间中闭式求得,塑性部分通过指数映射更新:\mathbf{F}_p^{n+1} = \exp(\Delta p\,\mathbf{N})\,\mathbf{F}_p^{n},\mathbf{N} = \tfrac32\,\mathrm{dev}(\boldsymbol\tau)/q。该方案与 Eterovic、Bathe(1990)和 Simo(1992)的同类。为了传入 Newton 迭代,Cauchy 应力 \boldsymbol\sigma = \boldsymbol\tau/J 被换算为第二类 Piola–Kirchhoff 应力张量,切线 \partial\mathbf{S}/\partial\mathbf{E} 采用四阶中心差分;在 HEX8、HEX20、HEX27 和 TET10 单元上应用 \bar F 修正以防止体积闭锁。
4.13Norton–Bailey 蠕变实验性
金属在高温和长期载荷下的幂律蠕变:恒定应力下应变增长,恒定应变下应力松弛。
q 为 Mises 等效应力;内核中有时间硬化与应变硬化以及积分形式 \bar\varepsilon_{cr} = A q^n t^m(NAFEMS Test 10B)。积分步为隐式 Euler,采用径向返回和关于 q_{n+1} 的标量方程,切线为解析式。DSL 中的参数:creep_a、creep_n、creep_m。
4.14Perzyna 黏塑性实验性
与速率相关的塑性流动:应力可以超过静态极限,超出的部分引起黏塑性流动。
隐式 Euler,在区间上求标量方程 \Delta p - \Delta t\bigl\langle (f^{\mathrm{tr}} - (3\mu + H)\Delta p)/\eta\bigr\rangle^m = 0,切线为解析式。当 \Delta t\to\infty 时,定律趋于静态 J2;当 \eta 很小时,趋于刚塑性。
4.15黏弹性:Prony 级数与流变链实验性
聚合物的线性黏弹性:模量随时间松弛。剪切模量采用 Prony 级数形式,体积模量类似:
各分支的内变量用精确的指数递推更新(Simo, Hughes, 1998, §10.2):\mathbf{h}_i^{n+1} = e^{-\Delta t/\tau_i}\mathbf{h}_i^n + 2G_0 g_i\,\beta_i\,\Delta\mathbf{e},\beta_i = (1 - e^{-\Delta t/\tau_i})\,\tau_i/\Delta t;至多六个分支,未给出 k_i 时取 k_i = g_i。另有一维的 Maxwell、Kelvin–Voigt、Zener 和 Burgers 链,采用精确的指数步,以及带能量平衡的热力学阻尼器。
4.16用于土体和岩石的 Drucker–Prager实验性
用于土、混凝土和岩石的、与压力相关的塑性:抗剪强度随围压增大,流动伴随剪胀。
锥面是按 Mohr–Coulomb 面的三轴压缩子午线拟合的,因此在侧向压力 P_c 下的极限轴向应力为
势函数为非相关联的:g = q + \beta p,\beta = 6\sin\psi/(3-\sin\psi),剪胀角 0 \le \psi \le \varphi。返回到锥面的光滑壁;若投影越过锥顶,则返回到锥顶(de Souza Neto, Perić, Owen, 2008, §8.3)。当 \psi \ne \varphi 时,切线不对称。DSL 中的参数:cohesion(Pa)、friction_angle、dilatancy_angle(度)。
4.17GTN 多孔塑性实验性
内核中只有 Gurson–Tvergaard–Needleman 屈服函数 \Phi = (q/\sigma_y)^2 + 2q_1 f\cosh\bigl(3q_2 p/2\sigma_y\bigr) - (1 + q_3 f^2) = 0 以及极限等效应力随压力变化的曲线。没有孔隙率演化、应力积分器,也没有接入计算。
4.18基于弹性解的强度准则测试版
叠加在节点应力场之上的安全系数后处理:更换准则或极限值不需要重新计算。它不属于材料定律,也不是塑性。对每个节点计算利用率 u 和安全系数 n = 1/u(应力为零时设有上限)。
| 准则 | 利用率 u |
|---|---|
| von Mises | \sigma_{vm}/\sigma_y |
| Tresca | (\sigma_1 - \sigma_3)/\sigma_y |
| Saint-Venant | (\sigma_1 - \nu\sigma_3)/\sigma_y |
| Rankine | \max(\sigma_1/S_t,\ -\sigma_3/S_c) |
| Coulomb–Mohr | \sigma_1/S_t - \sigma_3/S_c(\sigma_1 \ge 0 \ge \sigma_3 时);否则按主应力的符号 |
| Drucker–Prager | \bigl[\sigma_{vm} + \beta(\sigma_1+\sigma_3)\bigr]/\sigma_{eq},\beta = \frac{S_c-S_t}{S_c+S_t},\sigma_{eq} = \frac{2S_tS_c}{S_c+S_t} |
| Goodman、Soderberg、Gerber | \sigma_{vm}/2S_f + \sigma_{vm}/2S_u;\sigma_{vm}/2S_f + \sigma_{vm}/2S_y;\sigma_{vm}/2S_f + (\sigma_{vm}/2S_u)^2 |
5边界条件、载荷与约束
↑ 返回目录在 WebCAE 中,一个边界条件或载荷就是一条记录。记录由四部分组成:类型(固定、载荷、刚性约束、约束方程)、要素(位移、力、压力、加速度等)、带数值的分量,以及该记录所施加的几何对象列表:顶点、边、面或实体。对象通过模型树中的编号来寻址(surface number 3、edge number 7、vertex number 2),而不是通过包围盒中的方位。模型树中的表单与脚本命令创建的是同一条记录,二者共用同一套逻辑;命令语法见页面 /docs/dsl。
记录编译器把所有记录汇集成一个统一的问题提法并交给求解器。记录是可叠加的:同一个面上的压力和力合成一个总面力,同一个面上不同分量的固定会累积。数值按项目的单位制输入(单位标注在输入框旁边),几何以 mm 存储,而在求解器边界处一律换算为 SI:米、牛顿、帕斯卡、千克。换算只在一处完成,下游不再重复换算。
温度类作用(给定温度、热流、对流、辐射、体积热生成)以及热弹性的温度变化,在热分析一节中描述:传热与多物理场。实体间的接触与粘合见 接触与连接 一节。本节汇集的是力学作用和约束。
| 设定内容 | 施加对象 | 进入计算的方式 |
|---|---|---|
| 固定、给定位移 | 顶点、边、面、实体 | 消去自由度 |
| 法向约束(滚轴、对称) | 面 | 面上各节点的约束方程 |
| 力 | 顶点、边、面、实体 | 节点力 |
| 压力、分布力 | 面 | 沿面的一致节点力 |
| 加速度、重力 | 整个模型 | 体力 \rho\,\mathbf{a} |
| 远程力、力矩、位移 | 顶点、边、面、实体 | 虚拟主节点与 RBE2 |
| 刚性约束 RBE2、MPC 方程 | 顶点、边、面、实体 | 消去从属自由度 |
5.1固定与给定位移稳定
固定使所选几何上的节点沿一个、两个或三个轴的位移为零。给定位移则使这些节点取非零值 d。两种情形都是对自由度集合 S 的 Dirichlet 条件 u_i = d。
条件被精确满足,不使用罚函数。S 中的自由度从系统中消去:解写为 \mathbf{u} = \mathbf{T}\,\mathbf{u}_{\mathrm{f}} + \mathbf{u}_0,其中 \mathbf{u}_{\mathrm{f}} 为自由自由度,\mathbf{u}_0 携带非零值 d,求解的是缩减后的系统
不引入 Lagrange 乘子。刚性约束和 MPC 方程使用同一套消去机制,详见 求解器 一节。
用户需要指定:目标(顶点、边、面或实体)、分量 all、x、y 或 z,以及数值。数值为零是固定,非零是以项目长度单位表示的给定位移。分量 all 配非零数值时,三个轴上取相同的值。结果:位移场和支座反力(命令 reactions,见 结果 一节)。
需要了解的规则:
- 同一个面上的 x、y、z 固定会累积;三个轴即完全固定;
- 每个自由度只允许一个从属约束。因此在同一个面、同一个轴上,固定(d=0)优先于给定位移;对于同一个面和轴上的两个给定位移,按顺序取第一个生效,若数值不同则给出警告;
- 给定位移只允许施加在面上。位于顶点、边或实体上的非零记录不会被悄悄丢弃:计算会报告该记录需要使用面;
- 带有给定位移的模型视为已被约束:不会发出“无约束”警告;
- 在实体的单个顶点上固定会给出警告:反力集中在一个节点,该处应力随网格加密而增长,应力最大值成为网格的性质而非模型的性质。用三个顶点消除六个刚体模态,则是提法所允许的;
- 对于实体,只固定平动自由度。实体面上的“转动”记录不被求解器接受;梁和壳的支座通过框架命令(
frame support)设定。
fix surface number 1
fix surface number 2 component=z value=0.5
fix edge number 45.2法向约束:滚轴与对称面稳定
法向约束禁止面上的节点沿曲面法向运动,而保留其在切平面内的自由度。数值为零时是滚轴或对称面;数值非零时是沿外法向的给定位移(膨胀、收缩)。
对面上的节点 a,写出方程
其中 \mathbf{n}_a 为节点法向。它由相邻边界三角形的法向加权平均得到,权重等于它们在该节点处的内角(Thürmer G., Wüthrich C., Computing vertex normals from polygonal facets, Journal of Graphics Tools, 1998)。按面积加权的方案经过检验后被否决:对被对角线剖分的平面四边形,它会使法向发生偏移,而按角度加权不受剖分影响。
如果节点位于两个带法向约束的面的交界处,则三个自由度上会出现多个方程。它们用带主元选取的完整 Gauss–Jordan 方法化简,且不对法向做平均。两个正交的对称面给出两个独立的行,节点保持沿其交线滑动的自由度。近似平行的法向(被分为两个面的光滑曲面)给出冗余的行,该行被舍去。相互矛盾的约束给出警告,且该行不被应用。在三个独立平面的角点处,节点被固定。
没有专门的“对称”类型。对称面就是 d=0 的法向约束,在垂直于坐标轴的平面上,它等价于固定一个分量。模型对称部分上的载荷按占整体的比例给定:若截取了四分之一,则施加四分之一的力。产品中没有反对称(条件 u_t = 0 且 u_n 自由)。
fix surface number 2 component=normal value=0
fix surface number 3 component=normal value=0.055.3集中力、线力与体力稳定
力用矢量(N)给定,并施加在顶点、边、面或实体上。求解器如何处理合力,取决于目标的类型。
- 顶点。 集中力作用在一个网格节点上。顶点必须恰好对应一个节点;否则计算拒绝。点力下应力是奇异的,点附近的数值依赖于网格,应根据远离该点的截面来判断结果(Saint-Venant 原理)。
- 边。 合力在位于该边上的节点间平均分配。边上所有节点的份额相同,不考虑每个节点所对应的线段长度。因此在网格不均匀的边上,得到的不是均匀线载荷,而是“每个节点等量”的载荷。
- 面。 合力 \mathbf{F} 除以以 m² 计的面积:得到均匀面力 \mathbf{t}=\mathbf{F}/A,并按一致方式积分(见下一小节)。因此节点力之和等于 \mathbf{F}。
- 实体。 合力按体积分配:\mathbf{f}_a = (\mathbf{F}/V)\int_{\Omega} N_a\,dV,其中 V 为实体体积。对装配体,寻址的是实体;未指定实体时,力作用于整个模型。
实体上不能给定集中力矩:体单元的节点没有转动刚度。施加在区域上的力矩通过 远程载荷 给定。对于梁和壳,节点力和力矩可使用命令 frame load node=… force=… moment=…(见 框架、梁与壳面片)。
load vertex number 3 force=0,0,-100
load edge number 5 force=0,-2000,0
load surface number 2 force=5000 component=z5.4面上的压力与分布力稳定
压力 p 沿面的法向作用,压向实体时为正。分布力是以矢量形式给定的、单位为 Pa 的面力 \mathbf{t}_d。面上作用的面力为
其中 \mathbf{n}_{\mathrm{out}} 为外法向。节点力是一致的:
每个面的外法向由相邻单元确定:法向由所属单元的形心指向外侧。这样,即使在整个模型的形心位于材料之外的内表面(管道内腔、镗孔)上,压力的符号也是正确的。对线性单元(tri3、quad4)的平面,积分是精确的。对二次单元的面,采用 tri6(三点积分)和 quad8(3\times3 Gauss 积分)。在平面 tri6 上,角节点得到 0,中间节点各得合力的三分之一;在平面矩形 quad8 上,角节点得到合力的 -1/12,中间节点得到 +1/3。这是二次单元经典的节点分配比例。
面上的力(以 N 计)通过除以以 m² 计的面积转换为面力;distributed_force 记录则直接以 Pa 给定。同一个面上的压力和力叠加为一个载荷。
frame load patch=… p=…),对梁则用线分布载荷(frame load member=… q=…)。units mm
load surface number 1 pressure=10
load surface number 4 distributed_force=2 component=y5.5随动压力测试版
随动压力随面一起转动,始终沿当前变形构型的法向作用。对于大位移和大转动,这是气体或液体压力唯一正确的模型。面由坐标 (\xi,\eta) 参数化,当前坐标为 \mathbf{x}=\sum N_a(\xi,\eta)\,\mathbf{x}_a,其中 \mathbf{x}_a=\mathbf{X}_a+\mathbf{u}_a。载荷比例为 \lambda 时的节点力:
采用 Hibbitt (1979) 的格式,另见 Wriggers, Nonlinear Finite Element Methods, 2008, §4.2.5。适用于 tri3、quad4、tri6 和 quad8 面,积分方案的选取使积分精确,并且闭合曲面上力与力矩之和在机器精度内为零。载荷的切线刚度是解析的,一般情形下不对称(单个面上的载荷是非保守的);对恒定压力下的闭合曲面,各面之和是对称的。提法的细节以及对 Newton 迭代的贡献,见 非线性计算与动力学 一节。
压力模式在实体的非线性计算设置中选择:“随动”或“死”。启用几何非线性时,默认采用随动。在“仅材料非线性”(小应变)模式下,压力为死载荷。对于任意面,有显式命令 nlgeom follower nodes="…" p=…,需给出该面的节点(3、4、6 或 8 个,p>0 表示压向实体)。
5.6加速度、重力与旋转稳定
加速度是作用于整个模型的体载荷。给定矢量 \mathbf{a}(m/s²);材料上作用的体力为
重力是特例。沿 -z 方向的重力取 a_z=-9.81\,\mathrm{m/s^2}:\rho\mathbf{a} 前的符号为正,矢量 \mathbf{a} 即体力作用的方向。x、y、z 方向的分量记录叠加为一个矢量。节点力通过对体积的一致积分计算,因此合力在积分精度内等于 \rho V\mathbf{a}。
需要材料密度。对于没有密度的壳,加速度会被悄悄丢失,因此计算会拒绝并要求给定密度。对于装配体,密度按实体取值。
载荷列表中没有作为独立静力作用的离心载荷 \omega^2\rho\,r。旋转结构以另外的方式考虑:陀螺项和旋转软化包含在转子分析中(转子动力学),初始角速度在隐式动力学中给定,而基础的地震激励则在动力学和谱分析中通过基础加速度施加(相对提法 \mathbf{F}=-\mathbf{M}\boldsymbol{\iota}\,\mathbf{a}_0\,k(t))。
load accel=-9.81 component=z5.7远程力、力矩与位移测试版
远程载荷在任意点 \mathbf{x}_m(可位于实体之外)施加力 \mathbf{F} 和力矩 \mathbf{M},并把它们传递给所选的面、边、顶点或实体。在该点创建一个虚拟主节点。目标的节点按刚体规则成为从属节点:
力和力矩施加在主节点上。消去从属节点后,它们作为等效载荷分配到目标上。远程位移给定的是主节点的自由度:三个位移和三个转角,每个轴都可以启用或关闭。点、力和力矩在所选局部坐标系中给定。
remote load surface number 2 point=150,5,5 force=1000,0,0 moment=0,0,5
remote motion surface number 2 point=1,2,3 translate=0.01,0,0 uaxes=1,0,05.8刚性约束 RBE2 与约束方程稳定
刚性区域(RBE2)使从属节点与主节点一起作为一个刚体运动;公式见 有限元库 一节。记录中需要指明主目标和从目标,二者可以是顶点、边、面或实体中的任意一种。
它如何进入计算。主目标和从目标的节点构成一个刚体;主节点选取最靠近主目标形心的节点。对二次网格,中间节点也成为从属节点。从属自由度通过变换 \mathbf{u}=\mathbf{T}\mathbf{u}_{\mathrm{f}}+\mathbf{u}_0 消去:不使用 Lagrange 乘子和罚函数,依赖链被折叠,缩减后的系统由同一个求解器求解(见 求解器)。两个约束对同一个自由度冲突或出现环路时,计算会停止并给出原因代码。
为使约束不与其他条件相矛盾,在计算前从中排除:
- 被边界条件固定的节点(被排除的数量以警告报告);
- 已在另一个刚性约束中成为从属的节点(交集被去除);
- 主目标中已在另一个约束中成为从属的节点:它们不会被选为主节点,如果没有空闲节点,则该约束被跳过。
如果没有剩下任何从节点,则该约束被跳过并给出警告。
在项目中可以对顶点的自由度给定一般形式的约束方程 \sum_i c_i\,u_i = r(MPC)。方程的第一项是从属自由度,其余为主自由度。自由方程只能在界面表单中创建;脚本中没有对应的命令(对于框架有 frame constraint)。运动铰(转动铰、圆柱铰、球铰)由刚性区域和围绕虚拟主节点的线性方程组装而成;脚本中没有对应的命令,也没有验证算例。
pinned 和 coupling-x/y/z 被提供为“铰接”和“单轴”,但在求解器中所有这些记录都经由同一个 RBE2 通道,采用完全约束。若只需沿单一方向的约束,请给定 MPC 方程。在实体上(节点有三个自由度),与“铰接”约束的差别看不出来;在梁和壳上则差别显著。rigid link master vertex number 6 slaves surface number 25.9局部坐标系测试版
对沿倾斜轴方向的载荷,需要使用局部坐标系(CS)。笛卡尔 CS 由原点、z 轴以及(必要时)x 轴方向给定。三轴系按如下方式构造:\mathbf{e}_z 为归一化的 z 轴矢量,\mathbf{e}_x 为经 Gram–Schmidt 正交化的 x 轴,\mathbf{e}_y=\mathbf{e}_z\times\mathbf{e}_x。如果未给定 x 轴或其与 z 平行,则补充一个任意的垂直方向,此时只有指定 x 才能使 CS 绕 z 旋转。
与 CS 绑定的记录的分量 x,给定数值 q,表示矢量 q\,\mathbf{e}_x(y、z 同理)。旋转只在载荷编译器中进行一次;下游的所有数值已经是全局的。CS 的原点只用于远程点,集中力作为自由矢量不读取它。CS 绑定对力、分布力、加速度、远程力和远程位移起作用。
cs turned origin=0,0,0 axisZ=0,0,1 axisX=1,1,0
load surface number 2 fx=1000 cs=turned5.10螺栓预紧实验性
虚拟螺栓无需建立螺纹即可模拟连接的拧紧:两个法兰被轴向力 F_0 拉紧,螺栓作为弹性杆承受该力。适用于评估装配体中接头的张开和螺栓载荷。
模型如何建立。在螺栓头和螺母支承面的形心处创建两个主节点;每个主节点通过刚性区域与其所在面的节点相连。两个主节点之间引入 Timoshenko 梁,截面积为 A,轴向刚度为 k_b=EA/L,其中 L 为两形心之间的距离。沿螺栓轴向在主节点上施加自平衡的力偶 \pm F_0。预紧力可以通过力 F_0 或拧紧力矩给定:F_0 = T/(K\,d),其中 K 为扭矩系数(默认 0.2),d 为直径。截面积:公称值 \pi d^2/4,应力截面积 A_s=\tfrac{\pi}{4}(d-0.9382\,P)^2(采用粗牙螺距,ISO 898-1),或手动给定。强度等级(8.8、10.9、12.9)决定默认屈服强度:640、900 和 1080 MPa;该值可以手动给定。
对每个螺栓的后处理:工作力 F_{\mathrm{work}}=F_0+k_b\,\Delta u,其中 \Delta u 为解中主节点的相对轴向位移;应力 \sigma=F_{\mathrm{work}}/A;安全系数 \mathrm{SF}=\sigma_y/\sigma。标记出螺栓屈服、低安全系数(小于 1.25)以及接头张开(工作力几乎降为零)的情形。
bolt 出现在已发布版本之后。bolt surface number 10 surface number 20 preload=20000 diameter=12 class=10.95.11弹簧与点质量测试版
弹簧是模型两个区域之间,或区域与固定基础之间的弹性约束;点质量是没有刚度的单节点单元。这两种单元在 有限元库 一节中描述,这里说明它们如何进入条件列表。
弹簧通过一条记录创建,记录带有自己的目标(面、边或顶点)和以 N/m 计的刚度 k;对基础,则用单词 ground 代替第二个目标。另外还可以设定横向刚度、扭转刚度和预紧力 F_0。后处理给出伸长量 \Delta L 和工作力 F=F_0+k\,\Delta L。点质量使用命令 mass,在产品中它影响由梁和壳构成的框架的模态与动力分析。
spring surface number 3 ground k=2e6 preload=100
mass node=1000,0,0 m=1005.12循环对称实验性
循环对称允许只计算盘、轮或叶片环的一个扇区,而不是整个结构。提法如下:扇区绕轴重复 N 次,扇区角为 \Delta\theta=2\pi/N。扇区下边界的节点绕轴旋转 +\Delta\theta(Rodrigues 公式),并在容差范围内与上边界的节点匹配。对每一对节点施加三个约束方程
这是指标 k=0 的谐波:变形状态在所有扇区中相同。计算之后,可以把结果展开为完整的 360^\circ:位移被旋转,应力张量作为张量被旋转(此时 von Mises 等效应力不变)。
对于谐波 k\ge1(Floquet–Bloch 波),代码中按实部和虚部构造带复相位因子 \mathrm{e}^{\mathrm{i}k\Delta\theta} 的约束。静力求解器是实数求解器,不携带这样的场,因此谐波 k\ge1 不用于计算。
用户设定扇区的下边界和上边界(面)、扇区数、轴和容差:在界面中是边界条件步骤的“循环对称”部分,在脚本中是命令 cyclic。扇区的计算是带约束方程的线性静力分析。
cyclic 出现在已发布版本之后。cyclic surface number 1 surface number 2 sectors=12 axis=0,0,1 tol=0.055.13步、相位与载荷的时间规律测试版
载荷记录本身没有“阶段”的概念,但有几种计算以不同方式使用它们。
- 线性静力分析。 载荷步滑块表示对唯一解的缩放:各场乘以比例 s/N。这里没有真正的逐步加载。
- 非线性静力分析。 载荷和给定位移按比例 \lambda 成比例增长;加载路径
loadpath="1,0"包含卸载,"1,-1,1"为循环。详见 非线性计算与动力学 一节。 - 谐响应。 力、压力和分布力可以带相位角 \Delta\varphi:F(t)=F\cos(\omega t+\Delta\varphi)(参数
phase,单位为度)。加速度不带相位。静力计算忽略相位并对此给出提示。 - 动力学。 载荷乘以幅值规律 k(t),由表
amplitude="t:k,…"给定。 - 单元的生与死。 施工与开挖阶段整体启用和停用实体:非线性计算与动力学。
5.14几何重建时记录会怎样测试版
几何自动修复、缝合、实体抑制和布尔运算可能会去掉记录所绑定的面或顶点。规则是:记录绝不会被悄悄删除。
- 记录保留在项目状态中,并被标记为孤立(“目标丢失”);修复报告中会指明有多少条记录失去了绑定,以及是哪些记录。
- 孤立记录不会转移到其他对象上。如果若干个面合并为一个,原有的任何记录都不会迁移到合并后的面上:在用户自行选择面之前,迁移会改变物理含义。
- 计算不会假装该记录不存在。在脚本中,计算会拒绝,并列出丢失的记录及其目标。在界面中,该记录被排除出计算并按名称给出警告;如果此后没有约束,则计算被阻止。
- 在求解器中没有接收端的记录(例如中面接缝的自动连接,在接缝节点建立之前),不会被转换为占位方程:它被标记为未实现,计算会拒绝并给出其名称。
- 几何自动修复会获得带有记录的面的列表,并且不会去除这些面。
6接触与连接
↑ 返回目录由多个实体组成的装配体,需要确定各实体在界面处如何连接。在 WebCAE 中,每一对实体选择一种模式:粘合、弹簧连接、无摩擦接触、摩擦接触或无连接。模式在“连接”面板(配对矩阵)中设定,或使用命令 contact;可以为整个装配体设置默认模式,并对个别配对覆盖该设置。
各模式在提法上有本质区别。粘合(bonded、tied)是线性的:界面传递任何力,且不会张开。无摩擦接触是单向的:实体只传递压力,并可能分离,因此问题是非线性的,需要按载荷步求解。摩擦增加了对历史的依赖。并非每种模式都适用于每种计算类型。如果某一配对被设为所选计算不支持的模式,计算会明确拒绝;它既不会用另一种模式代替,也不会在没有该配对的情况下继续计算。
| 模式 | 线性静力 | 非线性静力 | 隐式动力学 | 平台 |
|---|---|---|---|---|
| Bonded(共用节点) | 支持 | 支持,作为单一实体 | 按计算规则(动力学) | 桌面端和浏览器 |
| Tied(精确 MPC 约束) | 支持 | 拒绝 | 拒绝 | 桌面端和浏览器 |
| Penalty(弹簧连接) | 支持 | 拒绝 | 拒绝 | 桌面端和浏览器 |
| Frictionless(无摩擦) | 支持,按载荷步 | 支持 | 支持 | 仅桌面端 |
| Frictional(Coulomb 摩擦) | 拒绝 | 拒绝 | 支持 | 仅桌面端 |
对带无摩擦接触的模态分析、线性屈曲和谐响应,问题被线性化:法向刚度按计算时刻的间隙取值,特征问题中不更新活动配对的集合。桌面(原生)应用被视为基准;浏览器支持粘合和弹簧连接。
6.1接触对的搜索测试版
命令 contact pairs all|visible <mode> 以及面板中的按钮,会为装配体中所有相互接触的实体创建配对。判据是实体表面之间的距离,而不是包围盒的相交:包围盒对形状一无所知,对它来说,嵌在另一零件切口中的零件与仅仅紧邻该切口的零件无法区分。距离按 OpenCascade 内核在导入时生成的边界曲面细分来计算。对每一对确定界面的类型:接触、可测量的间隙(结构性界面),或带有相交体积的重叠(过盈配合或装配错误)。容差是相对的:与装配体的外形尺寸挂钩。位于阈值附近的配对,可用 B-Rep 中实体之间的精确距离加以确认。
按钮“检查连通性”会找出实体群以及“漂浮”的组件,即既未被固定、也没有连接模式相连的部分。在模态分析、屈曲和谐响应中,只要各群尚未连接,计算就会拒绝,并列出未连接的实体。
contact pairs all tied
contact body1 body2 frictionless6.2共用节点的粘合(bonded)稳定
最可靠的连接:在网格生成阶段,实体相互接触的面获得共用节点,位移场通过界面按构造是连续的。求解器中没有附加条件,实体只是共享自由度。这种粘合除几何误差外不引入误差,并且适用于所有计算类型。
通过网格参数控制:bonding=0|1 启用粘合,glue=auto|contact|full 选择快速的接触搜索或完整的相交搜索,interference=cut|split|ignore 决定如何处理真实的重叠。在 cut 模式下,有争议的体积归较小的实体(销钉排挤板的材料),界面变为精确接触,体积等于并集。在 split 模式下,重叠被分割:体积准确,但配合的碎片可能成为破坏网格的薄片。在 ignore 模式下,重叠予以保留,材料被计算两次。
mesh tet size=125 bonding=1 glue=full6.3不一致网格上的粘合(tied)测试版
当两个实体在界面处的网格不同(密度不同、节点分离)时,需要使用 tied 粘合。对从属侧(slave)的每个节点,找到它在主侧(master)面上的投影点,从属节点的位移通过重心权重 w_k 用该面的节点来表示:
每个节点有三个约束方程,对于二次网格,中间节点也成对加入。约束被精确满足:从属自由度从系统中消去,如同刚性约束(求解器),不引入 Lagrange 乘子。所用方法为节点对曲面(NTS);它基于 Wriggers P., Computational Contact Mechanics, 2006 中给出的通用接触提法。
“连接”面板的设置:
- 公式。 “自动”对直接求解器选用运动学约束,对大型装配体上采用代数多重网格预条件子的迭代求解器选用弹簧约束。“运动学(Exact MPC)”和“罚函数”则显式指定。
- MPC 间隙上限。 从属节点—主节点距离与主面尺寸之比;超出上限的配对被否决(默认 0.8)。
计算前会检查界面:具有共用节点的一致面被跳过;界面上一个配对也找不到、间隙超过上限、以及只有一个区域的计算会被拒绝,并给出原因。
contact body1 body2 tied6.4罚函数连接(penalty)测试版
Penalty 配对使用与 tied 相同的配对几何,但连接是柔性的:在从属节点与主面上的点之间设置刚度为 k 的弹簧。当 k\to\infty 时,解趋向于 tied。当精确约束使大型装配体的条件数恶化,或界面需要略有让步时,使用该模式。
用户设定相对于计算刚度的倍数(默认 1.0,粘合为 10.0),或自己的 k 值(N/m)。
6.5无摩擦接触(frictionless)稳定
实体只沿曲面法向传递压力。间隙 g 与法向压力 p 的 Signorini 条件:
间隙为 g = g_0 + \mathbf{n}\cdot\bigl(\mathbf{u}_s - \sum_k w_k\,\mathbf{u}_{m_k}\bigr),针对从属侧的节点 s 和主面上的点。条件通过势函数 \Pi_c=\tfrac12\,k\sum\langle -g\rangle^2 的罚函数进行正则化(其中 \langle x\rangle=\max(x,0)):压力 p=k\langle -g\rangle,活动配对的切线刚度 k\,\mathbf{n}\mathbf{n}^{\mathsf T} 对称且正定。配对在穿透 g<0 时处于活动状态;为避免活动配对的集合来回抖动,切换中加入了滞回。
计算按载荷步进行。每一步用带阻尼和非单调线搜索(Armijo 条件)的 Newton 法求解非线性系统;罚值随步数逐渐增大到给定值。步数在计算页签中设定。每一步之后,在变形构型上重新搜索配对,间隙值被传递,使配对重新打开时不会附加虚假的位移。
产品中的 mortar 这一名称指带加权间隙的提法。约束按从属面的节点建立:每个从属节点对应主面的至多三个节点,带有重心权重,间隙和法向取在投影点处。产品中没有带多边形裁剪的完整段对段积分(Popp A., Gee M., Wall W., A finite deformation mortar contact formulation using a primal–dual active set strategy, 2009)。增广 Lagrange 法(Uzawa 方法)在核心中作为研究选项实现;没有纳入产品路径,解依赖于罚函数。因此仍存在量级为 p/k 的残余穿透。
用户设定接触刚度 k(N/m)或相对于计算值的倍数、载荷步数以及配对的实体。结果:各面上的接触压力、状态(张开、接触)、接触力、按载荷步的历史。
contact frictionless
mesh tet size=0.25 order=1 bonding=0
load surface number 8 force=-25 component=z
solve
extract contact_pressure target="surface number 7"6.6Coulomb 摩擦接触测试版
摩擦按 Coulomb 定律限制接触中的切向力:\lVert\mathbf{t}_t\rVert\le\mu\,p_n,低于极限为黏着,达到极限为滑移。该定律是不可逆的,因此结果依赖于加载历史:对每个活动接触点,记住已接受的状态。
在隐式瞬态动力学中,对每个从属节点保存其在主面上的位置以及累积的弹性滑移 \mathbf{e}。切向力用长度 s_{\mathrm{tol}} 正则化,即处于 Coulomb 极限时的弹性滑移:
其中试探弹性滑移 \mathbf{e}_{\mathrm{tr}}=\mathbf{e}_{\mathrm{old}}+\Delta\mathbf{s}_t 由先前的值与节点相对于主面材料点的切向位移相加得到,然后被平滑地限制在长度 s_{\mathrm{tol}} 以内。该限制是连续可微的,因此在过渡区切线刚度也有定义。该定律给出真正的静摩擦:受低于极限的水平力作用的物块保持不动。切线通过对配对力的中心差分得到,并与之相协调,包括换面片时投影的移动。
用户设定的系数 \mu 取值范围为 0<\mu\le10(表单中默认 0.3),以及可选的长度 s_{\mathrm{tol}}(参数 slip,单位 m;默认取接触面边长的一个比例)。结果:接触压力、状态(张开、黏着、滑移)、黏着和滑移的计数、摩擦力做功、换面片的次数。
在非线性接触的核心中还有一个带回到 Coulomb 锥的准静态变体(黏着试探,以及在 \Phi=\lVert\mathbf{t}_{\mathrm{tr}}\rVert-\mu p_n>0 时的径向回映,滑移的一致切线),它已通过解析问题验证;在产品中并未接入。
u0=static 与带摩擦的配对同时使用时会拒绝。实体之间不得共用节点。contact body1 body2 frictional mu=0.3
solve transient dt=0.001 tend=0.36.7大位移接触与自接触测试版
在实体的几何非线性静力分析中,接触建立在变形构型上:每次组装时都重新搜索配对,也就是在每次 Newton 迭代时,而不仅仅是在载荷步之间。曲面由实体各面的三角形构成(六面体的面分成两个三角形)。对从属节点,在主三角形上找到最近点(按 Ericson 投影),间隙为
其中 \mathbf{n} 为接触法向,由主面节点法向插值得到:它在棱和顶点处是连续的,否则在不共面面片之间的棱上,力的方向会发生跳变。接触在 g<0 时处于活动状态;从属节点上按核心的内力约定作用罚力 \varepsilon\,g\,\mathbf{n},主三角形的节点上则按重心权重作用大小相等、方向相反的力,因此 Newton 第三定律被精确满足。切线与力相协调,通过对配对的十二个坐标做中心差分得到(它是非对称的)。相对的法向会剔除虚假的配对:实体下表面的节点不会穿过实体厚度“侵入”同一实体的上表面。
罚值自动选取:\varepsilon=\kappa\,E\,h,其中 E 为两个实体中较小的模量,h 为各面的平均边长,\kappa 为用户设定的倍数(默认 10)。自接触通过计算页签上的复选框启用(\kappa 也在该处设定):实体的表面与自身接触,节点拓扑邻域内的三角形被排除出搜索。对梁和壳的节点列表,有命令 nlgeom contact 和 nlgeom beamcontact。
nlgeom on method=load steps=10
contact body1 body2 frictionless
solve6.8梁与壳的接触实验性
对梁采用线对线接触(Wriggers P., Zavarise G., On contact between three-dimensional beams undergoing large deflections, 1997):对一对线段,取轴线上的最近点 \mathbf{x}_1(\xi)、\mathbf{x}_2(\zeta),间隙为
其中 r 为截面半径,力是沿法向的罚力,并通过线性权重传递到四个节点上(力之和与力矩之和为零)。对平行线段,取重叠段的中点,并把力乘以重叠比例,使结果不依赖于网格的错位。梁可以发生自接触。
对壳,接触建立在中面上,并偏移半个厚度:g = s\,(\mathbf{x}_s-\mathbf{p})\cdot\mathbf{n}-(o_s+o_m),其中 o 为偏移量,s=\pm1 为所在侧。主侧双面壳的所在侧按节点—三角形配对记忆,否则一次迭代中穿过中面的节点会从反面被推出。
配对通过命令 nlgeom contact 和 nlgeom beamcontact 设定,其中给出按模型编号的节点列表、截面半径和罚值。
6.9显式动力学中的接触测试版
显式格式中采用侵蚀接触:沿存活单元的整个外表面的单向罚函数节点—段接触。表面随侵蚀而更新,冲击体遇到的是新暴露的空腔。罚刚度用主面刚度的一个比例 \alpha 给定(参数 contactStiffness,默认 0.25):过小会造成深度穿透,过大则造成能量增长,这在能量平衡中可以看到。历史输出中给出接触能量和总平衡。
格式、侵蚀与准则的描述见 非线性计算与动力学 一节。
explicit erodingContact=on contactStiffness=0.256.10热接触测试版
热接触通过界面的传导率 h_c 把两个分离实体的温度联系起来:q_c=h_c\,(T_A-T_B)。它不依赖于力学接触,也不影响力学。提法、间隙容差和结果在 传热与多物理场 一节中描述;与基准的对比也在那里。
核心中还有一个依赖于压力和间隙的传导率模型 h_c(p_n,g_n),属于 Cooper–Mikic–Yovanovich 型(Cooper M., Mikic B., Yovanovich M., Thermal contact conductance, 1969):界面闭合时 h_c=h_0+h_p\,(p_n/p_{\mathrm{ref}})^{\alpha},有间隙时 h_c=k_{\mathrm{gas}}/(g_n+g_0),并按极限间隙截断。该模型只经过核心的内部测试验证;在界面和脚本中并未接入:用户设定的是常数 h_c,力学接触的压力不影响传导率。
contact body1 body2 thermal hc=10006.11内聚力区域(CZM)实验性
内聚力区域用“牵引力—张开”定律描述胶接和复合材料接缝的分层。产品中的定律是双线性的:刚度为 K 的弹性段,直到峰值牵引力 T_{\max},然后线性软化,直至张开量 \delta_f 时完全破坏:
其中 D\in[0,1] 为标量损伤变量,卸载时不减小;G_c 为断裂能(曲线下的面积)。对混合模式,有效张开量为 \delta_m=\sqrt{\delta_n^2+\delta_s^2},破坏准则采用 Benzeggagh–Kenane 的幂律(Benzeggagh M., Kenane M., 1996):
其中 G_I=\tfrac12 K_n\delta_n^2,G_{II}=\tfrac12 K_t\delta_s^2,指数 \eta 默认为 1.45。在混合模式下,\delta_0 和 \delta_f 按当前的模式比计算;在比例加载下,损伤起始等价于二次名义应力准则(Camanho P., Dávila C., 2002)。
用户设定一对曲面(主面和从属面)及参数;在“连接”面板中,配对上有内聚接触的复选框,带强度 T_n 和能量 G_{Ic} 的输入框,其余参数通过脚本命令设定:刚度 K_n、K_t(N/m³),强度 T_n、T_s(Pa),断裂能 G_{Ic}、G_{IIc}(J/m²),指数 \eta。结果:界面上损伤 D 的最大值与平均值、法向和切向牵引力的峰值、最大张开量、处理的节点对数。
重要的是该定律如何进入计算。在产品中,界面是作为后处理器来计算的:根据已有解的位移,把每个从属节点上的位移跳跃与最近的主节点相比较,并计算损伤和牵引力。在全局迭代内部不会重新计算带软化的平衡,因此结果不能显示随着裂纹扩展,接缝的承载能力如何下降。把该定律集成到非线性解中(带损伤的接触对),核心中有节点—曲面配对层面的实现,但没有接入界面和脚本。
contact cohesive master="surface number 3" slave="surface number 4" kn=1e12 kt=1e12 tn_max=30e6 gc_n=4506.12接触的“收敛”判据测试版
在接触问题中,Newton 收敛并不保证物理平衡:活动配对的集合可能抖动,而罚函数问题可能“收敛”到物体失去支承而不动的解。因此,“收敛”判据由若干条件构成,而不仅仅是 Newton 迭代。
- 对于逐步模式下的无摩擦接触,必须达到全部载荷:如果各步被中断或取消,则判据为假。
- 按自由自由度计算的物理平衡残差(不含稳定化刚度),不得超过以载荷百分数表示的容差。只有这一条件不依赖于 Newton 做了什么。
- 如果 Newton 未收敛,允许使用小穿透的备用判据,但仅限于最终解中存在有穿透的配对。在有载荷而无接触的计算中,不会因集合为空而得到“收敛”。
- 提示信息会给出活动配对的数量、以载荷百分数表示的平衡残差以及最大位移;对于失去支承的物体(“机构”)或未闭合的接触,会明确指出。
对非线性静力,判据按 Newton–Raphson 准则构建(见 非线性计算与动力学),问题未收敛时不接受结果。计算不支持的模式会拒绝:共用节点的实体不作为接触,静力中的摩擦也不会退回到无摩擦的配对。
7有限元库
↑ 返回目录结构单元被组装为同一个全局系统:每个节点有六个自由度 [u_x, u_y, u_z, \theta_x, \theta_y, \theta_z]。体单元只带三个位移;没有梁、壳或刚性约束与之相连的节点,其转动自由度没有刚度,会被自动固定。因此,实体、壳、梁、弹簧和点质量可以共存于同一个模型中。
本节说明有哪些单元、它们按何种提法构建,以及它们的适用界限。带有类型代码和节点数的简要目录见页面 /docs/elements;本节末尾的汇总表已与内核代码核对。
7.1通用约定稳定
所有体单元均为等参单元(Tet10 除外,见下文)。形函数对物理坐标的梯度通过映射的 Jacobi 矩阵得到:
应变和应力按 Voigt 顺序 [\varepsilon_{xx},\varepsilon_{yy},\varepsilon_{zz},\gamma_{xy},\gamma_{yz},\gamma_{zx}] 书写,剪应变采用工程定义 \gamma = 2\varepsilon。矩阵 \mathbf{B} 由形函数梯度组成:节点 i 的块在 \varepsilon_{xx} 行、u_x 列处为 \partial N_i/\partial x,在 \varepsilon_{yy} 行、u_y 列处为 \partial N_i/\partial y,在 \varepsilon_{zz} 行、u_z 列处为 \partial N_i/\partial z,而剪切行各带两个梯度(例如 \gamma_{xy}:在 u_x 列为 \partial N_i/\partial y,在 u_y 列为 \partial N_i/\partial x)。各向同性弹性:
单元刚度矩阵由 Gauss 点积分得到:
几何非线性路径(Total Lagrangian)使用相同的形函数和相同的积分方案:其中切线刚度由材料部分和几何部分构成,\mathbf{K}_T = \mathbf{K}_{\text{mat}} + \mathbf{K}_{\text{geo}},而默认材料为 Saint-Venant–Kirchhoff(详见 非线性计算与动力学 一节)。各向异性、塑性和超弹性材料在 材料模型 一节中描述;这里只讨论单元本身。
边界条件和约束(刚性区域、约束方程)按“主—从”方案被精确地从系统中消去:求解的是系统 \mathbf{T}^{\mathsf T}\mathbf{K}\,\mathbf{T}\,\mathbf{u}_r = \mathbf{T}^{\mathsf T}\mathbf{f},而不是罚函数系统。这不会恶化条件数,也不会使约束只被近似满足。
单位。几何以毫米(或由命令 units 声明的单位)给定,在求解器边界处一律换算为 SI:米、牛顿、帕斯卡、千克。截面尺寸、壳的厚度和点单元的质量,由用户以与几何相同的单位输入(质量以千克计)。
7.2线性四面体 Tet4稳定
四节点单纯形,应变为常数。它是针对任意 CAD 几何自动生成网格的主要单元:对物体形状稳健,但对弯曲的描述较弱。
形函数与重心坐标一致,N_i = L_i,i = 1,\dots,4。梯度 \nabla L_i 为常数,因此 \mathbf{B} 也是常数,精确积分给出
即在重心处取一个 Gauss 点。单元内应力为常数,\boldsymbol{\sigma} = \mathbf{C}\mathbf{B}\mathbf{u}_e;节点场通过对相邻单元取平均构造。
该单元在任意畸变的网格上通过分片试验:仿射位移场可复现到机器精度。但常应变意味着弯曲时存在寄生刚度。在由 \approx 1400 个四面体构成的悬臂梁上,一阶固有频率被高估 22\,\%(相同单元尺寸的 Tet10 给出 -0.16\,\%)。对于受弯的实体,请采用 Tet10。
mesh tet size=10 order=17.3二次四面体 Tet10稳定
十节点单元:四个顶点和六个棱中点。二次位移场使单元内部的应变线性变化,并在相同网格上消除 Tet4 的大部分弯曲闭锁。
用重心坐标表示的形函数(N_i 为顶点,N_{ij} 为顶点 i 与 j 之间的棱中点):
梯度:\nabla N_i = (4L_i - 1)\nabla L_i,\nabla N_{ij} = 4(L_j\nabla L_i + L_i\nabla L_j)。积分采用二阶四点公式,点为 (a,b,b,b) 及其置换,a = 0.5854101966,b = 0.1381966011,权重 V_e/4。对于棱为直线的单元,被积式 \mathbf{B}^{\mathsf T}\mathbf{C}\mathbf{B} 是二次多项式,该公式是精确的。
实现中的一个重要特点:在主组装器中,Tet10 是次参数的。几何由四个顶点确定(映射为线性,Jacobi 行列式为常数),而位移场由十个节点确定。位于 CAD 曲面上、发生偏移的中间节点位置,不用于刚度矩阵:单元按棱为直线来积分。这使其在曲线边界上保持非退化,但曲线边界处单元的体积和刚度按弦而不是按弧计算。对于光滑边界,误差随单元尺寸减小而减小,但并不因曲棱而获得额外的精度提高。主组装器就是这样构建的;在带粘合与接触的多实体计算分支中使用的是其他单元实现,它们的映射可能有所不同。
Tet10 面上的表面载荷按六节点三角形(Tri6)一致地积分,而不是平均分配到顶点。
内核在单元形心处计算应力,在该点角节点的贡献为零(4L_i - 1 = 0)。对于节点云图,后处理器计算单元每个节点上的应力,并按相邻单元数取平均,因此在材料交界处和应力集中处,场是被平滑的。
mesh tet size=10 order=27.4六面体 Hex8稳定
八节点三线性单元,用于规则的体积:长形实体、梁、板以及孔壁处的层。在结构化网格上,它给出光滑的应力场,所需单元数比四面体更少。
自然坐标 (\xi,\eta,\zeta) \in [-1,1]^3 中的形函数:
积分为完全积分,2\times2\times2 个 Gauss 点,位于 \pm 1/\sqrt{3},权重为 1。矩阵 \mathbf{K}_e 按“通用约定”一节中的公式组装,不做任何修改。
这里必须明确指出:在线性路径中,Hex8 没有 B-bar(选择性体积投影)、没有非协调模式,也没有减缩积分。当梁的高度方向单元很少时,该单元会发生弯曲时的剪切闭锁,当 \nu \to 0.5 时发生体积闭锁。对策是沿高度方向加密网格,或改用 Hex20。例如:结构化网格 128\times8\times8 上的悬臂梁与 Euler–Bernoulli 解的偏差为 1.03\,\%;网格 96\times6\times6 上的悬臂(高度方向六个单元)由于剪切闭锁,偏差约为 2\,\%。在显式动力学中,Hex8 是一个独立的单点单元,采用 Flanagan–Belytschko 沙漏控制;它与本小节中的矩阵无关。
应力在单元中心 \xi = \eta = \zeta = 0 处计算。
mesh hex size=5 order=17.5六面体 Hex20(Serendipity)稳定
二十节点单元:八个顶点和十二个棱中点,没有面中心节点和体中心节点。二次插值使其在弯曲时比 Hex8 柔软得多:沿厚度一层单元就足以得到合理的估计。适用于孔周围的环、疲劳应力集中处,以及需要光滑边界几何的接触问题。
Serendipity 族的形函数。坐标为 (\xi_i,\eta_i,\zeta_i) = (\pm1,\pm1,\pm1) 的顶点:
平行于 \xi 轴的棱中点(\xi_i = 0):
沿 \eta 和 \zeta 的棱类推。积分为 3\times3\times3(27 个 Gauss 点,\pm\sqrt{0.6} 和 0,权重 5/9、8/9、5/9)。与 Tet10 不同,Hex20 是完全等参的:使用全部二十个节点的坐标,因此 CAD 边界上棱的曲率体现在 \mathbf{J} 中。
应力在单元中心计算。该单元在畸变网格上可精确通过分片试验;在单根悬臂上,相对于 Hex8,闭锁的消除十分显著。
mesh hex … order=2);任意 CAD 实体用四面体剖分。与 Tet10 处于同一网格中的 Hex20 只有实验形式,见 Hex20–Tet10 二次过渡。节点应力平均使用单元中心的值。mesh hex size=5 order=27.6六面体 Hex27(三次二次)实验性
二十七节点单元,采用完整的二次 Lagrange 基:在 Hex20 的节点之外,加上六个面的中心和体中心。形函数是一维二次 Lagrange 多项式的乘积:
其中 (a,b,c) \in \{-1,0,1\}^3 为节点 n 的位置。积分为 3\times3\times3。该单元比 serendipity 单元更完整:在强畸变和弯曲时更精确,但代价更高。
Hex27 不在产品的网格流程之内:网格划分器不生成它,因此该单元只能通过直接提供连接关系来使用。Hex27 的质量矩阵在隐式动力学中未实现,此类计算会拒绝并说明原因;模态分析和热分析可以使用。
7.7三棱柱 Wedge6稳定
六节点线性三棱柱:底面为三角形,沿高度方向线性插值。出现在壁面处的棱柱层(inflation)以及六面体与四面体之间的过渡中。
形函数是底面重心坐标与沿高度的线性因子的乘积:
其中 k 为底面顶点编号,下三角形(\zeta=-1)取减号,上三角形取加号。积分是三角形上的三点公式(点 (1/6,1/6)、(2/3,1/6)、(1/6,2/3),权重 1/6)与沿高度的两点 Gauss 公式的乘积:共六个点。权重之和等于参考棱柱的体积,即 1。
该单元线性完备,因此在与 Tet4 缝合的界面上通过分片试验。退化的(非正)Jacobi 行列式会使计算停止并给出提示。
7.8金字塔 Pyr5测试版
五节点线性金字塔:四边形底面和一个顶点。在混合网格中作为过渡单元需要,用于六面体的四边形面与四面体的两个三角形面相遇之处。
把六面体直接“退化”为金字塔(合并四个顶部节点)不是线性完备的,也不能通过分片试验,因此采用金字塔单元的有理基(Zgainski 等)。在实现中它写在“塌缩”坐标中,\hat a, \hat b \in [-1,1],w \in [0,1),其中截面的物理坐标按 (1-w) 收缩:
在物理坐标 \xi = \hat a(1-w)、\eta = \hat b(1-w) 中,基含有有理项 \xi_i\eta_i\,\xi\eta/(1-w)——名称即由此而来。积分:在 (\hat a, \hat b) 上取 2\times2 个 Gauss 点,在 [0,1] 上沿 w 取两个 Gauss 节点,共八个点。积分点不会落在映射退化的顶点 w=1 处。体积等于底面积与高之积的三分之一,与真实金字塔一致。应力在金字塔轴线上 w = 1/2 处计算。
7.9混合网格:Hex8、Wedge6、Pyr5、Tet4测试版
混合网格把一层六面体或三棱柱(在孔壁处、应力集中区、长形块体中)与四面体的其余部分连接起来。界面有两种做法:按公共节点缝合(conformal;经由 Pyr5 和 Wedge6 过渡),或采用节点—曲面约束方程。对于协调界面,Hex8 的面向中心划分为金字塔,而位于两个 Tet4 一侧的金字塔则沿同一条对角线划分为两个 Tet4,因此三角形面是重合的。
界面的正确性由分片试验检验:在“棱柱 + 四面体”的缝合网格上,均匀应力场可复现到 5\cdot10^{-13}。混合网格中的应力在每个单元的节点处计算,并对相邻单元取平均:孔壁处第一层六面体的中心距壁面有半层之遥,用中心值会使应力峰值被低估 12–15 %。
mesh … order=2 联用不受支持,并会拒绝且给出提示。应力在界面处不连续,平均是可视化的选择,而不是平衡量。7.10Hex20–Pyr13–Tet10 二次过渡实验性
二次单元的界面要求公共面上的迹相一致:Hex20 的八节点面必须与 Tet10 的两个六节点面相接。为此有两个原型;用户流程(脚本、网格划分器)无法使用它们。
第一个是针对平面 Hex20–Tet10 界面的“公共迹”(common trace)。面带有九个节点:四个角点、四个棱中点和三角剖分对角线的中点。迹一致的条件是对节点值的三个线性关系(这九个值必须是平行四边形上同一个完整二次多项式的值)。它们作为约束方程施加,而主自由度通过精确有理数运算的全局 Gauss–Jordan 约化选取,因此刚体模态和所有二次场都得以保留。网格由单独的适配器组装(从 Tet10 实体中挖去矩形空腔,并嵌入 Hex20)。在由 96 个 Tet10 和一个 Hex20 构成、边界上给定精确二次场的网格上,位移偏差的量级为 10^{-8}。
第二个是把线性混合网格转换为协调的二次 Hex20–Pyr13–Tet10 网格,其公共面为 Quad8 和 Tri6。十三节点金字塔 Pyr13 是二阶金字塔单元(5 个顶点和 8 个棱中点)。Pyr13 在求解器中并不作为刚度单元存在。 只有形函数,以及在网格准备一侧对 Gauss 点处 Jacobi 行列式的检查;该转换器没有进入发行版,在这样的网格上无法计算。
mesh order=2 与六面体区域联用会拒绝。公共迹原型面向平面(平行四边形)界面;对曲线界面尚未得到证明。过渡单元 Wedge6 和 Pyr5 没有二次形式。混合二次网格的计算应视为研究性质。7.11闭锁:有什么、没有什么稳定
闭锁是单元的寄生刚度,源于其插值无法复现所需的变形。下面如实列出已实现的内容。
- 弯曲单元的剪切闭锁。 MITC4 壳通过假设的横向剪切将其消除(小节 MITC4 壳)。三角形壳 DKT 在边中点引入 Kirchhoff 约束,不含横向剪切。Timoshenko 梁采用 Hermite 矩阵的标准 \Phi 修正构建;当 \Phi 很小时,它过渡为无闭锁的 Euler–Bernoulli 单元。
- 体单元的剪切闭锁。 通过提高阶次来解决:用 Tet10、Hex20、Hex27 取代 Tet4、Hex8、Wedge6、Pyr5。对于 Hex8(在线性路径中),没有 B-bar、没有非协调模式、也没有减缩积分。
- \nu \to 0.5 时的体积闭锁。 没有混合列式:随着 \nu 趋近 0.5,线性单元比应有的情形更刚硬。二次单元会减弱闭锁,但并未消除;对近似不可压缩的材料,请使用超弹性模型(见 材料模型)。
- F-bar。 对于有限变形的乘法型塑性 \mathbf{F} = \mathbf{F}_e\mathbf{F}_p,在 Hex8、Hex20、Hex27 和 Tet10 单元上引入变形梯度的体积平均(F-bar):\bar{\mathbf{F}} = (\bar J / J)^{1/3}\mathbf{F},其中 \bar J 为单元内的平均值。这部分代码只存在于工作版本中,未进入发行版;请将其视为实验性的。
- 显式动力学。 Hex8 采用单点积分,使用精确的体积平均梯度,并按 Flanagan–Belytschko 做沙漏控制(黏性型和刚度型)。
- 壳的膜闭锁。 四边形壳的膜部分是普通的双线性 Q4,采用完全积分,没有非协调模式;在粗网格上面内弯曲时,它比精确解更刚硬。对三角形壳,膜部分是常应变的 CST。
7.12Timoshenko 梁稳定
用于框架、桁架和加劲肋的两节点空间杆单元。每个节点六个自由度,每个单元十二个。材料和截面由六个数给定:E、G、A、I_y、I_z、J。剪切模量取为 G = E/(2(1+\nu))。
局部轴(x 沿从节点 1 到节点 2 的轴线)中的刚度为闭式,不需要点积分。轴向和扭转部分:
xy 平面内的弯曲(自由度 v_1,\theta_{z1},v_2,\theta_{z2}):
在 xz 平面内,矩阵相同,但 I_z \to I_y,\kappa_y \to \kappa_z,且“位移—转角”耦合项的符号相反,因为 \theta_y = -dw/dx。当 \Phi \to 0 时得到 Euler–Bernoulli 单元(细长梁),当 \Phi 较大时剪切柔度增大;不存在闭锁。产品中的剪切系数是固定的:\kappa_y = \kappa_z = 5/6(矩形,Timoshenko 经典取值);该值与截面形状无关。
方位。局部 x 轴由节点 1 指向节点 2。参考向量为全局 Z(对于近乎竖直的梁,\lvert x_z\rvert > 0.9999,则取全局 Y)。然后 y = v_{\text{ref}} \times x,归一化,z = x \times y。矩阵通过变换 \mathbf{K}_g = \mathbf{T}^{\mathsf T}\mathbf{K}_l\,\mathbf{T},\mathbf{T} = \operatorname{blockdiag}(\mathbf{R},\mathbf{R},\mathbf{R},\mathbf{R}) 转换到全局轴。
端部的内力按 \mathbf{f}_l = \mathbf{k}_l\,\mathbf{u}_l 恢复,约定为:N > 0 为拉力,T > 0 为沿从节点 1 到节点 2 的轴线按右手定则的力矩;剪力和弯矩作为截面内力给出。
frame node at=0,0,0
frame node at=1000,0,0
frame member 1 2 section=rect w=40 h=80
frame support node=1 dofs="all"
frame load node=2 force=0,0,-50007.13扩展梁:剪切、偏移与非结构质量稳定
扩展型梁把 Timoshenko 单元扩展到二十二个数,并解除基本型的三个假设:轴线通过形心、截面在主轴上、滚转为零。
- 滚转与参考向量。 截面绕梁轴转过给定角度,并可用任意参考向量来确定 xy 平面(而不是自动确定)。
- 离心矩 I_{yz}。 如果截面轴不是主轴,则单元转过主轴角 \alpha,\tan 2\alpha = -2I_{yz}/(I_y - I_z),此时两个平面内的弯曲解耦。
- 轴线偏移。 截面中心在每一端相对于节点独立偏移(刚性臂):\mathbf{u}_c = \mathbf{u}_n + \boldsymbol{\theta}\times\mathbf{r},\boldsymbol{\theta}_c = \boldsymbol{\theta}_n。柔性长度为两端截面中心之间的距离。这样可以模拟位于板面上的加劲肋,并计入平行轴定理(Steiner 定理):偏心不是靠人为增大惯性矩,而是通过几何传递。
- 剪切中心。 单元建立在剪切中心,弯曲与扭转在该处解耦;通过同一个刚性臂 \mathbf{s} 转换到截面中心:\mathbf{K}_c = \mathbf{T}_s^{\mathsf T}\mathbf{K}_{sc}\mathbf{T}_s。当作用线不通过剪切中心时,出现弯扭耦合。
- 剪切系数 \kappa_y、\kappa_z 在单元数据中单独设定(默认 5/6)。
- 非结构质量,每单位长度(kg/m):作为一致平动质量加入。
节点刚度为 \mathbf{K}_n = \mathbf{A}^{\mathsf T}\mathbf{K}_c\mathbf{A},其中 \mathbf{A} 把节点自由度转换为截面中心的自由度。同样的 \mathbf{A} 也用于质量、几何刚度和热力。当附加数据为零时,矩阵与基本梁一致。类型的选择是自动的:滚转、偏移、剪切中心或非结构质量非零时,启用扩展类型。
assign beam edges=12,14 section=rect w=10 h=30 flush=outer7.14梁铰稳定
梁端的铰会在梁的局部轴中切断三个力矩之一——M_y、M_z 或扭矩 T——的传递。允许在任一端设铰,也允许在跨内设铰。
实现中不使用罚弹簧。带铰的梁端获得一个坐标相同的专属孪生节点:孪生节点的三个位移等于主节点的位移,转角仅沿未释放的轴通过方程 \mathbf{a}\cdot(\boldsymbol{\theta}_d - \boldsymbol{\theta}_n) = 0 相连。被释放的转角仍是孪生节点的自由自由度,其刚度完全由单元提供——这是由求解器完成的静力凝聚。所有梁都在同一轴上被释放的节点,在该转角上被固定;对作用于这样的转角上的力矩没有任何东西可以平衡,计算会拒绝并给出该节点的名称。
7.15梁截面库稳定
截面按类型和尺寸选取;据此计算 A、I_y、I_z、J 以及最外纤维 c_y、c_z(截面模量 W_y = I_y/c_z,W_z = I_z/c_y)。类型:矩形、箱形截面、实心圆、管、工字钢、T 形、槽钢、角钢。内核中也提供直接以一组数输入 A、I_y、I_z、J、c_y、c_z。
组合型材通过矩形求和并施以 Steiner 平移来计算,切口则按带负号的矩形处理:
Saint-Venant 扭转常数:
- 圆和管——极惯性矩,J = \pi (D^4 - d^4)/32;
- 边长为 a \ge b 的实心矩形——Roark 公式,J = a\,b^3\left[\tfrac13 - 0.21\tfrac{b}{a}\left(1 - \tfrac{b^4}{12a^4}\right)\right];
- 箱形——按 Bredt 的薄壁闭口轮廓,J = 4A_m^2\,t / s,其中 A_m 为中线所围面积,s 为其周长,t 为较小的壁厚;
- 工字钢、T 形、槽钢、角钢——开口薄壁型材,J = \tfrac13\sum b_i t_i^3。
对于开口型材,这是一阶估计:翼缘与腹板的圆角和交接处在 A、I 和 J 中不予考虑。
根据内力构造截面上的应力分布:\sigma = N/A \pm M_y z/I_y \pm M_z y/I_z;由剪力引起的切应力按 Zhuravskii 公式(静矩通过截面点网格数值计算),由扭转引起的切应力对圆和管按相应公式,箱形按 Bredt,其余按开口薄壁型材理论。等效应力按 von Mises。
7.16基于网格的截面与型材目录实验性
内核中增加了一个单独的模块,用于计算任意截面的特性:带切口的多边形。面积、形心、I_y、I_z、I_{yz} 和主轴由轮廓精确计算(Green 定理)。扭转和剪切由在 Tri6 网格上的有限元计算求得,对翘曲函数 \omega 和横向剪切函数 \Psi 求解两个 Poisson 问题:
其中 I_p 为极惯性矩,k_s 为能量剪切系数(Timoshenko 梁的剪切能与弹性解的能量相等),\mathbf{g} 为剪切场。还可确定剪切中心。模块返回剪切面积 k_s A:对窄矩形为 5/6,对薄圆管恰为 1/2。该模块还增加了标准型材目录(按 EN 的 IPE、HEA、HEB、HEM 工字钢,以及按 GOST 8239 和 GOST 8240 的工字钢和槽钢)。
7.17共旋梁稳定
对于大位移和大转动问题,梁采用 Battini–Pacoste 共旋列式重新计算(Battini J.-M., Pacoste C., CMAME 191, 2002)。构型由节点位置和节点的完整转动 \mathbf{R}_g 给定;转动增量是空间旋量 \delta\mathbf{w},更新是乘法形式的,\mathbf{R}_g \leftarrow \exp(\delta\mathbf{w})\,\mathbf{R}_g(有限转动下角度相加是不正确的)。
单元的刚性坐标架由弦以及节点平均 y 轴建立。在小应变下,该坐标架中的变形量是小量:伸长 \bar u = l - l_0 和转角 \bar{\boldsymbol\theta}_i = \log\left(\mathbf{R}_r^{\mathsf T}\mathbf{R}_{g,i}\mathbf{R}_0\right)。对它们不加修改地应用前述小节中的线性 Timoshenko 单元,\mathbf{f}_l = \mathbf{K}_l\,[\bar u, \bar{\boldsymbol\theta}_1, \bar{\boldsymbol\theta}_2]。全局轴中的内力由精确的虚功得到;切线矩阵通过对解析内力做数值微分得到,采用与 Newton 法相同的旋量更新,因此与迭代相协调。
支持基本梁以及不带偏移和剪切中心的扩展梁;否则计算会明确拒绝,而不是悄悄替换物理。
7.18MITC4 壳稳定
四节点平面 Reissner–Mindlin 壳单元,用于板材、板和薄壁结构。每个节点六个自由度;单元在局部坐标架中构建,由三部分组成:膜、带横向剪切的弯曲,以及绕法向转动的罚项。
局部坐标架由节点构建:法向为对角线的向量积,轴 e_1 沿棱 1\to2,并相对法向正交化。四个节点被投影到坐标架平面上,不模拟翘曲。全局轴中的单元矩阵:\mathbf{K}_g = \mathbf{T}^{\mathsf T}\mathbf{K}_l\,\mathbf{T}。弯曲部分使用的不是转动向量 \theta_x, \theta_y,而是法向的倾角 \beta_x = -\theta_y、\beta_y = \theta_x,因此 \mathbf{T} 的转动块中含有一个额外的置换。
膜是平面应力下的双线性等参 Q4,采用 2\times2 完全积分:
弯曲。曲率和横向剪切:
弯曲部分按 2\times2 Gauss 积分。对剪切采用 MITC4(Dvorkin E. N., Bathe K.-J., 1984; Bathe K.-J., Dvorkin E. N., 1985):剪切的协变分量只在四个绑定点(各边中点)上计算,并线性插值:
其中绑定点 A,C 位于 \xi=0、\eta=\mp1,而 D,B 位于 \xi=\mp1、\eta=0。绑定点处的协变分量 \gamma_\xi = \partial_\xi w - (\partial_\xi x\,\beta_x + \partial_\xi y\,\beta_y) 恰用该点的 Jacobi 矩阵计算。它们在每个积分点上通过 \mathbf{J}^{-1} 转换为笛卡尔分量 [\gamma_{xz},\gamma_{yz}]。假设剪切在 t/L \to 0 时消除了剪切闭锁。对于矩形单元,这些公式与矩形版本在机器精度内一致。
应力在单元中心 \xi=\eta=0 处计算:膜应力 \boldsymbol{\sigma}_m = \mathbf{C}_{ps}\boldsymbol{\varepsilon}_m 加上上、下纤维的弯曲应力,\sigma_b = \pm 6m/t^2,m = \mathbf{D}_b\boldsymbol{\kappa}。输出 \sigma_{xx}, \sigma_{yy}, \tau_{xy} 以及各纤维上平面应力下的 von Mises 等效应力 \sqrt{\sigma_{xx}^2 - \sigma_{xx}\sigma_{yy} + \sigma_{yy}^2 + 3\tau_{xy}^2};横向切应力无法通过这种方式恢复。压力产生的节点载荷是一致的(\int N_i\,p\,dA,采用完整的 Jacobi 行列式);压力的方向与单元外法向相反。
参考面的偏移 z_0(参数 offset=bottom|middle|top,或命令 section shell 中的数值)在刚度包中考虑:\mathbf{B}' = \mathbf{B} + z_0\mathbf{A},\mathbf{D}' = \mathbf{D} + 2z_0\mathbf{B} + z_0^2\mathbf{A};此时单元等价于刚性偏移的各向同性单元(已由测试验证)。
units mm
section shell t=4
mesh shell size=40 element=quad pattern=structured7.19法向转动(drilling)稳定
膜 Q4 和 CST 不含绕法向的转动自由度 \theta_z,而壳节点具有该自由度,并进入全局系统。若不补充,矩阵在此自由度上是退化的。把 \theta_z 约束为零(接地弹簧)会高估曲壳的弯曲刚度,因此采用 Hughes–Brezzi 罚项(Hughes T. J. R., Brezzi F., 1989):它把 \theta_z 约束的不是零,而是单元自身位移场的转动:
其中 \gamma 为无量纲罚参数,由测试确定,相对于膜刚度很小;在界面和脚本中不可调。在纯膜或纯弯曲状态下,罚项不会引入明显的能量,而是在折角处把相邻的不共面壳的转动联系起来。对带层合板的单元,使用刚度包的膜剪切刚度。
7.20三角形壳 CST 与 DKT稳定
用于非结构化表面网格的三节点平面单元:三角形可由任何表面网格划分器生成,无需重组。由 CST 膜、DKT 弯曲和同样的法向转动罚项组成。
膜为常应变单纯形:\mathbf{B} 为常数,\mathbf{K}_m = t\,A\,\mathbf{B}^{\mathsf T}\mathbf{C}_{ps}\mathbf{B},一个点。弯曲为 Discrete Kirchhoff Triangle(Batoz J.-L., Bathe K.-J., Ho L.-W., 1980):曲率用三个节点的九个自由度 [w,\theta_x,\theta_y] 表示,Kirchhoff 假设在各边中点离散地满足,\boldsymbol{\kappa} = \mathbf{B}_{DKT}(\xi,\eta)\,\mathbf{u}。积分采用各边中点处的三个点,权重 A/3。DKT 中没有横向剪切,按构造不存在剪切闭锁。
应力:膜应力在单元内为常数,弯曲应力取在形心 \xi=\eta=1/3 处,在上、下纤维上为 \sigma_b = \pm 6m/t^2。
surface=quad)。units mm
mesh shell size=20 surface=tri7.21层合壳(ABD 刚度包)测试版
四节点 MITC4 壳,输入的不是各向同性的 E, \nu, t,而是单位宽度上的本构刚度包:
刚度包按经典层合板理论逐层组装,横向剪切取一阶(FSDT)。对于边界为 z_{k-1}, z_k(自参考面起算)的第 k 层:
其中 \bar{\mathbf{Q}}_k 为经铺层角旋转后的该层折减刚度(角度从单元的 x_e 轴绕法向量起),\bar{\mathbf{Q}}^s_k 为该层的横向剪切刚度。剪切系数:均匀的 5/6,或按层的“能量”系数 \kappa_k = \min\{1, \tfrac56\,G_{\max}/G_k\}(对软芯夹层板 \kappa \to 1)。其余部分与 MITC4 相同:带假设应变的剪切使用完整的矩阵 \mathbf{A}_s(2\times2),并加入膜—弯曲耦合 \mathbf{B} 和转动罚项。各向同性情形被恒等地复现(回归检验在 10^{-12} 水平)。
另外:材料轴中的逐层应力和失效准则——最大应力、Tsai–Hill、Tsai–Wu、Hashin(二维)以及按层间切应力的分层指数;层间应力由 FSDT 或由平衡方程恢复。热力 \mathbf{N}_T、\mathbf{M}_T 按各层的热膨胀系数计算。
units mm
ortho name=ud E1=140e9 E2=10e9 nu12=0.3 G12=5e9 G13=5e9 G23=3.5e9
section shell laminate plies="ud:0.25:0,ud:0.25:45" repeat=2 symmetric=true shear=energetic
mesh shell size=40 element=quad pattern=structured7.22共旋壳稳定
对于壳的大位移和大转动,在线性 MITC4 和 CST+DKT 单元之上,采用共旋列式 EICR(element-independent corotational;Rankin–Nour-Omid;Felippa C. A., Haugen B., CMAME 194, 2005)。与共旋梁一样,构型是节点位置和完整转动,更新为乘法形式。
单元坐标架仅由节点位置确定:对四边形,法向取自对角线,轴 e_1 为相对两边中点连线向量的投影;对三角形,则取棱 1\to2。变形自由度是坐标架中的节点位移 \bar{\mathbf{u}}_i = \mathbf{R}_r^{\mathsf T}(\mathbf{x}_i - \mathbf{x}_c) - \mathbf{R}_0^{\mathsf T}(\mathbf{X}_i - \mathbf{X}_c) 以及转角 \bar{\boldsymbol\theta}_i = \log(\mathbf{R}_r^{\mathsf T}\mathbf{R}_{g,i}\mathbf{R}_0)。对它们不加修改地应用单元的线性刚度:\bar{\mathbf{f}} = \mathbf{K}_l\,\bar{\mathbf{d}}。内力是能量 \tfrac12\bar{\mathbf{d}}^{\mathsf T}\mathbf{K}_l\bar{\mathbf{d}} 对全局自由度的精确梯度(投影项消去坐标架刚体模态和形心平动所做的功);切线通过对与旋量更新相协调的解析力做差分得到。
代码也支持层合类型,但它没有单独的验证算例。
7.23点质量测试版
具有六个自由度、没有刚度的单节点单元(\mathbf{K} = 0)。参数:质量 m(kg)以及全局轴中的三个转动惯量 I_{xx}、I_{yy}、I_{zz}(SI 单位)。质量矩阵是对角的:
用于在框架和壳模型的模态与动力分析中模拟附属设备、发动机和配重。点可以由节点或坐标给定。
units mm
mass node=1000,0,0 m=100 Ixx=0.5 Iyy=0.5 Izz=0.87.24弹簧测试版
模型两个区域之间,或区域与固定基础之间的弹性连接。区域可选面、边或顶点。
实现:在所选每个区域的形心处创建一个主节点;它通过刚性区域(RBE2)与区域的节点相连;在两个主节点之间设置一个具有等效特性的两节点 Timoshenko 单元。给定纵向刚度 k(N/m);在面积固定的情形下取 E_{\text{eq}} = kL/A_{\text{eq}},使 EA/L = k。横向刚度 k_t 和扭转刚度 k_\theta 是可选的:I_{\text{eq}} = k_t L^3 / (12 E_{\text{eq}}),J_{\text{eq}} = k_\theta L / G_{\text{eq}};缺省时,弯曲刚度和扭转刚度可忽略不计。“三轴”模式在基础上设置三个相互独立的正交弹簧 k_x, k_y, k_z。可以有预紧力 F_0——沿弹簧轴线的自平衡力偶。后处理给出伸长量 \Delta L = (\mathbf{u}_B - \mathbf{u}_A)\cdot\mathbf{e} 和工作力 F = F_0 + k\,\Delta L。
spring surface number 3 ground k=2e6 preload=1007.25刚性单元与约束方程稳定
刚性区域(RBE2)使从属节点与主节点一起作为一个刚体运动:
这样力和力矩都得以传递,而三自由度与六自由度节点的连接(体实体与梁)无需特殊手段即可解决。
一般形式的约束方程 \sum_i c_i u_i = r(在其他体系中称为 CE/MPC)同样被精确消去:第一项为从属自由度,其余为主自由度。从属自由度的冲突和约束环路会被检测到,并使计算停止。
rigid link master vertex number 6 slaves surface number 27.26质量矩阵、几何刚度、应力稳定
质量矩阵。 对于体单元,在模态分析中单元质量 \rho V_e 在其节点间平均分配(集中的、对角的),仅含平动。对规则的 Hex8 和 Tet4,这与 HRZ 集中法一致;对 Tet10 和 Hex20,均分给出正确的总质量,但频率不够准确(不过在悬臂的弯曲模态上,P2 仍给出良好的结果)。模态分析中没有实体的一致质量。对于梁和壳,内核中实现了两种矩阵——集中的和一致的。
- Timoshenko 梁:Przemieniecki 一致质量,含弯曲转动惯量 \rho I 和扭转惯量 \rho J;当 \Phi \to 0 时为 Hermite 质量。这一惯量对深梁和高阶模态至关重要(NAFEMS FV5)。
- 壳(MITC4、CST+DKT):一致平动质量 M_{ab} = \rho t\int N_aN_b\,dA,对三角形的闭式为 \rho t A/12\cdot[2\ 1\ 1; 1\ 2\ 1; 1\ 1\ 2];模态质量中不计弯曲的转动惯量。
- 实体的隐式动力学:可选一致质量 \rho\int N^{\mathsf T}N\,dV、集中的 HRZ(一致质量的对角线,按总质量缩放——始终为正,不同于 serendipity 单元的行求和)以及“按节点均分”。对于 Hex27,动力学中的质量矩阵未实现。
- 隐式动力学中的梁和壳带有节点的平动质量和转动惯量:梁每端为 \tfrac12\rho L\,\operatorname{diag}(I_y+I_z, I_y, I_z),壳为 \rho t^3/12\cdot A_i,其中 A_i 为分配给节点的面积份额。这一提法是在最近一次发行之后出现的。
- 显式动力学:对角质量(HRZ 集中法);对形状规则的 Hex8,节点处为 \rho V/8。
几何刚度 \mathbf{K}_\sigma(用于屈曲和预载下的频率)。对实体——由真实应力张量构造,对应三个位移的块:
对梁——由轴力 N 构造(Przemieniecki 矩阵,弯曲块中的贡献为 N/L)。对壳——仅由膜力 \mathbf{N} 对全部三个平动构造,\int \nabla u_k^{\mathsf T}\mathbf{N}\nabla u_k\,dA;不计转动的贡献。符号对所有类型一致:拉力起稳定作用。
单元层面的应力。 基本恢复按公式 \boldsymbol{\sigma} = \mathbf{C}\mathbf{B}\mathbf{u}_e 在单元的特征点处进行(六面体和三棱柱取中心,四面体取形心,金字塔取高度中点处的轴线)。节点场是对相邻单元的平均;对于 Tet10 和混合网格,先在每个单元的节点处计算应力,然后再取平均。对梁——端部内力 \mathbf{f} = \mathbf{k}\mathbf{u} 并在最外纤维处估计;对壳——在单元中心的上、下纤维处。更精确的方法(平滑、误差指示器)在 结果、后处理与强度评估 一节中描述。
7.27热单元测试版
热问题是定义在相同几何上的标量场 T(每个节点一个自由度):Tet4、Hex8、Wedge6、Pyr5,以及二次的 Tet10、Hex20、Hex27,使用相同的积分方案和形函数。单元:K^e_{ij} = \int\kappa\,\nabla N_i\cdot\nabla N_j\,dV,体积热生成产生的载荷 F^e_i = \int Q\,N_i\,dV。二次单元的面——Tri6 和 Quad8——并不是独立的单元,而是用于边界条件积分的面:采用六点 4 阶 Dunavant 公式的六节点三角形,以及采用 3\times3 Gauss 公式的八节点四边形;热流、对流、辐射和热接触在其上积分。各种提法(稳态、瞬态、含辐射的非线性、热接触、热弹性)在 传热与多物理场 一节中描述。
7.28汇总表稳定
表中 n 为节点数,DOF 为单元自由度数,“质量”指模态分析中实现的是哪种矩阵。详情见上面的各小节。
| 单元 | n | DOF | 积分方案 | 特点 | 质量(模态分析) | \mathbf{K}_\sigma | 状态 |
|---|---|---|---|---|---|---|---|
| Tet4 | 4 | 12 | 1 点 | 常应变 | 节点处 \rho V/4 | 有 | 稳定 |
| Tet10 | 10 | 30 | 4 点(2 阶) | 次参数 | 节点处 \rho V/10 | 有 | 稳定 |
| Hex8 | 8 | 24 | 2\times2\times2 | 完全积分,无 B-bar | 节点处 \rho V/8 | 有 | 稳定 |
| Hex20 | 20 | 60 | 3\times3\times3 | serendipity,等参 | 节点处 \rho V/20 | 有 | 稳定 |
| Hex27 | 27 | 81 | 3\times3\times3 | 三次二次 Lagrange,网格划分器不生成 | 节点处 \rho V/27 | 有 | 实验性 |
| Wedge6 | 6 | 18 | 3 × 2 | 过渡,棱柱层 | 节点处 \rho V/6 | 有 | 稳定 |
| Pyr5 | 5 | 15 | 塌缩坐标中 2\times2\times2 | 有理基,过渡 | 节点处 \rho V/5 | 有 | beta |
| Timoshenko 梁 | 2 | 12 | 闭式 | \kappa = 5/6,Saint-Venant 扭转 | 一致 + 转动惯量 | 轴力 | 稳定 |
| 扩展梁 | 2 | 12 | 闭式 | 滚转、刚性臂、剪切中心、NSM | 截面中心处的一致质量 | 轴力 | 稳定 |
| MITC4 壳 | 4 | 24 | 2\times2 | MITC4 剪切,Hughes–Brezzi 罚项 | 一致,平动 | 膜力 | 稳定 |
| CST+DKT 壳 | 3 | 18 | 1 / 3 点 | DKT 弯曲,CST 膜 | 一致,平动 | 膜力 | 稳定 |
| 层合壳 | 4 | 24 | 2\times2 | ABD 刚度包,FSDT,至多 36 个数 | 刚度包单位面积质量 | 刚度包膜力 | beta |
| 共旋梁与壳 | 2 / 3 / 4 | 12 / 18 / 24 | 同线性单元 | EICR,大转动 | 在隐式动力学中 | — | 稳定 |
| 点质量 | 1 | 6 | — | \mathbf{K}=0 | 对角的 m、I | — | beta |
| 弹簧 | 2 | 12 | 闭式 | 等效梁与刚性蛛网 | — | — | beta |
| 刚性区域(RBE2) | 1 + k | 每节点 6 | — | 约束消去 | — | — | 稳定 |
库中没有的内容:作为刚度单元的 Pyr13 和 Wedge15;二次壳;结构组装器中的平面(应变、应力)单元和轴对称单元——此类问题用壳和带对称条件的窄楔形体单元来模拟,平面单元只存在于显式动力学中;带翘曲自由度的梁;非线性和单向弹簧。
带有类型代码的简要单元目录见页面 /docs/elements。
8线性分析类型
↑ 返回目录本节汇集结构保持线弹性、位移和转角均为小量、且载荷不随之改变的各类计算,包括静力分析、固有频率与振型、特征值屈曲、对谐波激励的稳态响应、对响应谱和随机振动的响应,以及子模型、超单元缩减和转子动力学等辅助手段。接触、塑性、大位移和随时间变化的瞬态动力学见非线性计算与动力学一节。单元及其公式见有限元单元库一节;方程组与特征值问题的求解方法见求解器一节。
所有分析类型的共同约定:
- 梁和壳在每个节点有六个自由度(三个位移和三个转角),实体单元有三个位移自由度;
- 固定约束、约束方程和刚性区域通过“主–从”方法从方程组中消去,因此特征值问题和谐响应分析中的约束与静力分析相同;
- 求解器边界采用国际单位制(m、N、Pa、kg),几何以毫米存储,换算只在一处完成(见单位制);
- 实体单元的质量矩阵为集中质量矩阵:单元质量在其节点之间平均分配,对二次单元则包括中间节点。对于框架的模态分析,梁和壳可使用一致质量矩阵;
- 原生(桌面端)路径与浏览器路径的结果基于同一套公式;以原生路径为基准。
| 分析类型 | 输出内容 | 状态 | 脚本命令 |
|---|---|---|---|
| 静力分析 | 位移、应变、应力、反力 | 稳定 | solve static |
| 模态分析 | 频率与振型 | 稳定 | solve modal |
| 预应力模态分析 | 载荷作用下的频率与振型 | 测试版 | solve modal prestress=on |
| 屈曲分析 | 临界载荷因子与屈曲模态 | 稳定 | solve buckling |
| 谐响应 | 幅频特性、相频特性、指定频率下的场 | 稳定 | solve harmonic |
| 响应谱 | 基底剪力、位移、应力 | 稳定 | solve spectrum |
| 随机振动(PSD) | 均方根值 1σ 和 3σ | 实验性 | solve psd |
| 子模型法 | 应力集中处的局部求解 | 测试版 | submodel |
| Craig–Bampton 超单元 | 缩减矩阵 | 实验性 | cms |
| 转子动力学 | Campbell 图 | 实验性 | solve rotor |
8.1线性静力分析稳定
静力分析确定结构在不变载荷作用下的位移。当应力处于弹性范围、位移相对于尺寸很小、且惯性可以忽略时,应使用静力分析。
公式
线弹性体的虚位移原理:对任意容许的 \delta\mathbf{u}
其中 \mathbf{C} 为弹性张量,\mathbf{b} 为体积力(包括由加速度产生的体积力),\mathbf{t} 为面载荷(压力、分布力),\mathbf{F}_i 为集中力。用单元形函数离散后得到方程组
其中 \mathbf{B} 为应变矩阵(形函数的梯度)。对于梁和壳,局部刚度矩阵被旋转到整体坐标轴,所有单元类型汇集成一个每节点六个自由度的方程组。
固定约束与约束方程
固定约束(包括给定非零位移的约束)、约束方程 \sum_i c_i u_i = r 和刚性区域通过线性变换从方程组中消去:
固定约束是没有主自由度的约束(u = \text{const})。刚性区域使从属节点按刚体运动学跟随:\mathbf{u}_d = \mathbf{u}_m + \boldsymbol{\theta}_m \times (\mathbf{x}_d - \mathbf{x}_m)。它既传递力也传递力矩,因此适用于实体单元与梁、壳单元的连接。相互冲突或循环的约束会以错误代码拒绝求解,而不是悄悄选择其中之一。刚度为零的自由度(例如只有实体单元的节点上的转角)会被自动固定,以避免矩阵奇异。
只要结构被约束而不发生刚体运动,缩减后的方程组就是对称正定的。求解方式(直接分解,或带预处理器的共轭梯度法)根据问题规模选择,详见求解器一节。
用户输入与输出结果
需要设定材料、固定约束、载荷(力、压力、加速度、力矩、远端载荷)、约束,以及线性设定下的接触。结果包括:节点位移、应变和应力(各分量、von Mises 等效应力、主应力)、支座反力、梁的内力,以及壳的膜力和弯曲内力。等效应力按下式计算:
关于应力恢复和强度评估的详细内容,见结果、后处理与强度评估一节。
在脚本中,静力分析是默认的计算类型:
material E=200000000000 nu=0.3 density=7850
fix surface number 1
load surface number 2 force=5000 component=z
solve static在界面中,计算在“计算”步骤启动,结果在结果步骤查看。
8.2模态分析稳定
模态分析求出受约束结构自由振动的固有频率和振型。它用于避免共振、评估结构的刚度和质量,也是谐响应、谱分析和随机振动分析的基础。
公式
缩减矩阵的广义特征值问题:
振型 \boldsymbol{\varphi}_r 关于质量矩阵正交:\boldsymbol{\varphi}_i^{\mathsf{T}} \mathbf{M} \boldsymbol{\varphi}_j = m_i\,\delta_{ij}。输出时振型按位移模的最大值归一化:\max \lvert \mathbf{u} \rvert = 1。这只是便于显示的归一化;此时广义质量 m_r 不等于 1,并在计算参与系数时予以考虑(见响应谱)。
质量矩阵由材料密度(实体单元、壳、梁)、梁和层合壳的非结构质量,以及用户设定的集中质量组装而成。集中质量不带转动惯量,除非在该集中质量上显式给定。
参与系数与有效质量
对于方向 d(自由度中的单位向量 \mathbf{t}_d),计算
所有模态的有效质量之和趋于自由平动自由度的质量(约束节点上的质量进入基础)。这些量在谱分析中输出,用于确定质量覆盖率;普通模态计算的面板显示频率和振型。
实现方式
缩减矩阵 \mathbf{K}_r = \mathbf{T}^{\mathsf{T}}\mathbf{K}\mathbf{T} 和 \mathbf{M}_r = \mathbf{T}^{\mathsf{T}}\mathbf{M}\mathbf{T} 通过对角缩放调整到良好的条件数;低阶模态采用子空间迭代,只做一次刚度分解(对框架则采用分块 LOBPCG 方法)。自由结构(梁、壳):最低阶的零模态以零频率返回,分解时使用谱移。详细内容及按问题规模选择方法的做法,见求解器一节。
用户输入与输出结果
需要设定模态数、固定约束、带密度的材料、集中质量和约束。结果包括:以赫兹计的频率,以及用于查看和动画的振型。密度是必需的:没有质量就没有固有频率,计算将被拒绝。
fix surface number 1
solve modal nmodes=6
probe frequency mode=18.3预应力模态分析测试版
载荷会改变固有频率:拉伸使结构变刚(频率升高),压缩使结构变软(频率降低,在稳定性边界处趋于零)。这类计算适用于弦、叶片、受压杆件,以及一般在较大恒定载荷下工作的结构。
公式
首先在所加载荷下求解线性静力问题,得到应力 \boldsymbol{\sigma}_0。然后据此组装几何刚度矩阵(应力状态刚度矩阵)\mathbf{K}_\sigma,并求解问题
对于实体单元,矩阵 \mathbf{K}_\sigma 中节点对 a、b 的子块是一个标量积分,对三个位移分量重复:
符号约定为:拉伸产生正贡献,压缩产生负贡献。
为什么求解的是这个问题,而不是公式 f = f_0\sqrt{1 - P/P_{\text{cr}}}。该公式是单模态的 Rayleigh–Ritz 缩减,仅当振动模态与屈曲模态一致时才是精确的。对铰支梁确实如此(偏差 0 %),对悬臂梁误差可达 4 %,但对 2:1 的铰支板,在载荷为临界载荷一半时,公式使频率偏低 14 %,而在临界载荷时频率降为零,真实值却是 f_0 的 60 %。因此产品中计算的是完整问题。
用户输入与输出结果
需要设定固定约束、载荷(面载荷、集中载荷、体积载荷)和模态数;在界面中勾选“考虑加载状态”,在脚本中使用 prestress=on。结果:载荷作用下的频率和振型。
在下列情形中,计算会明确地拒绝,而不是返回一个看似合理的数值:没有密度;没有任何约束;载荷为零(没有预应力,这就是普通模态分析);矩阵 \mathbf{K} + \mathbf{K}_\sigma 失去正定性(结构已经屈曲,不存在固有频率);特征值问题未收敛。
fix surface number 1
load surface number 2 force=-1000 component=z
solve modal nmodes=3 prestress=on8.4线性屈曲稳定
特征值计算求出使理想结构丧失稳定(分岔)的载荷因子 \lambda_{\text{cr}} 及屈曲模态。适用于压杆、框架、壳板和平板。
公式
在参考载荷 \mathbf{f}_{\text{ref}} 下求解线性静力问题,由位移求得内力并组装几何刚度矩阵 \mathbf{K}_G = \mathbf{K}_\sigma(\mathbf{u}_{\text{ref}})。临界因子是下列问题的最小正 \lambda:
临界载荷等于 \lambda_{\text{cr}}\,\mathbf{f}_{\text{ref}}。参考载荷取模型的全部载荷:面载荷、集中载荷、体积载荷和加速度载荷。该因子作用于全部载荷。
\mathbf{K}_G 按单元类型组装:
- 梁:通过轴力 N(取单元两端的平均值),采用 Przemieniecki 一致几何刚度(矩阵见下);
- 壳:通过膜力 N = \sigma_m t(四边形、三角形和层合壳);
- 实体单元:通过应力张量 \boldsymbol{\sigma},与上一小节相同。
对于梁,v–\theta_z 平面内的“挠度–转角”子块如下(w–\theta_y 平面内为镜像子块,耦合项符号相反):
所有单元类型采用同一符号约定(拉伸起稳定作用,压缩起失稳作用),因此混合模型可以组装成同一个矩阵。
模态排序
返回指定数量的最小正因子,按升序排列。负的 \lambda(载荷反向时发生的失稳)不输出:对于这种情形,请改变载荷的符号。重根(例如方板的对称模态)作为单独的模态输出。振型按位移最大值归一化。
实现方式
矩阵 -\mathbf{K}_G 是不定的且为低秩,因此对其直接做逆迭代会发散。大规模问题使用谱移和子空间的 K 正交归一化,小规模问题使用对称矩阵对的稠密求解器。与独立稠密求解器的校核结果吻合到六位有效数字。详细内容见求解器一节。
fix surface number 1
load surface number 6 force=-100 component=z
solve buckling nmodes=2
probe load_factor mode=18.5谐响应稳定
谐响应分析确定结构在给定频率范围内对按谐波规律变化的载荷的稳态响应。结果为幅频特性和相频特性,以及选定频率下的场。用于评估振动载荷下的共振和振幅。
公式
载荷 F\cos(\omega t + \varphi) 以复振幅 \hat{\mathbf{F}} = \mathbf{F}\,e^{i\varphi} 表示,响应 \mathbf{u}(t) = \operatorname{Re}\left(\hat{\mathbf{u}}\,e^{i\omega t}\right) 满足
相位角 \varphi 在每个载荷上分别设定(正值为超前),因此可以设定反相的力。载荷按相位分组,模态力为复数。输出包括幅值 \lvert \hat{\mathbf{u}} \rvert、相位、速度幅值 \omega\lvert \hat{\mathbf{u}} \rvert 和加速度幅值 \omega^{2}\lvert \hat{\mathbf{u}} \rvert、模型最大值包络线以及峰值频率;在选定的频率和相位下可查看位移场。
阻尼模型
从三种模型中选择其一,它们互相排斥。
模态阻尼。 所有保留模态取同一个临界阻尼比 \zeta:\mathbf{C}_m = \operatorname{diag}(2\zeta\, m_j\,\omega_j)。
Rayleigh 阻尼。 \mathbf{C} = \alpha\mathbf{M} + \beta\mathbf{K}。在模态基下该矩阵精确地为对角阵,模态的临界阻尼比为
系数可直接给定(\alpha 以 1/s 计,\beta 以 s 计),也可由两组“频率–临界阻尼比”(f_1, \zeta_1)、(f_2, \zeta_2) 确定:
若某组数据导致 \alpha 或 \beta 为负(即在部分频谱上出现负阻尼),则被拒绝。在 Rayleigh 模式下不再另外加入 \zeta。
按实体的 Rayleigh 阻尼。 装配体的每个实体有各自的一对 (\alpha_r, \beta_r),\mathbf{C} = \sum_r (\alpha_r\mathbf{M}_r + \beta_r\mathbf{K}_r)。这是非比例阻尼,模态矩阵是满阵:
在每个频率上求解一个规模等于模态数的复方程组。不使用对角近似:它会丢失各模态经由实体边界产生的耦合。结果面板会就零阻尼、临界阻尼比大于一以及强非比例性发出警告。
不支持结构(滞后)阻尼。
两种求解方法
模态叠加法。 响应按保留的振型展开 \hat{\mathbf{u}} = \sum_j \boldsymbol{\varphi}_j q_j,在每个频率上求解方程组
对恒定的 \zeta,这就是 q_j = \hat{f}_j / \left[m_j(\omega_j^{2} - \omega^{2} + 2i\zeta\omega_j\omega)\right]。该方法速度快,但依赖于保留的模态数:舍去的高阶模态的贡献(静力修正)不会被加入。模态力只考虑载荷和振型的平动分量。频率网格为线性或对数分布,并可在共振点附近选择性加密。
直接法(Direct FRF)。 不截断基底,在每个频率上求解完整的稀疏复方程组 \left(\mathbf{K} - \omega^{2}\mathbf{M} + i\omega\mathbf{C}\right)\hat{\mathbf{u}} = \hat{\mathbf{F}}(采用 COLAMD 排序的稀疏 LU 分解;在整个频率范围内只对结构分解一次)。Rayleigh 阻尼按单元设定:\mathbf{C} = \sum_e(\alpha_e\mathbf{M}_e + \beta_e\mathbf{K}_e),统一的一对系数是其特例。支持所有单元类型,包括梁和壳,也支持齐次约束方程和刚性区域。在每个频率上检查复方程组的残差;若残差超限或出现奇异(无阻尼共振),计算将以错误中止,而不会改用模态法替代。此外还输出复数场:支座反力、应力(线性分量以复振幅表示)、梁的内力、壳的应力。对复振幅不计算 von Mises 等效应力之类的非线性不变量。直接法需显式启用(method=direct),或在按实体设定 Rayleigh 阻尼且原生求解器可用时自动选用。它要求 Rayleigh 阻尼(恒定的 \zeta 仅在模态基下有定义),并且仅在桌面应用中可用。
用户输入与输出结果
需要设定频率范围(f_{\min}、f_{\max})、点数、模态法使用的模态数、阻尼模型,以及带相位的载荷。结果:选定节点处的幅频特性和相频特性、模型包络线、峰值频率、指定频率下的场;直接法还包括反力和应力。
fix surface number 1
load surface number 2 force=-1000 component=z phase=0
solve harmonic fmin=380 fmax=440 npoints=61 nmodes=6 zeta=0.05
probe harmonic_amplitude x=200 freq=406用两组数据设定 Rayleigh 阻尼的直接法:
solve harmonic method=direct rayleigh f1=50 z1=0.02 f2=500 z2=0.05 fmin=10 fmax=1000 npoints=408.6响应谱(RSA)稳定
谱分析根据设计加速度谱(地震谱、冲击谱和振动谱)给出的基础运动,评估结构的最大响应。计算建立在已完成的模态分析之上,不需要时间积分。
公式
基础沿方向 d(向量 \mathbf{t}_d)以加速度 a_g(t) 运动:
对于周期为 T_m 的模态 m 和谱中的伪加速度 S_a(T_m),峰值为(参与系数 \Gamma 和有效质量 M_{\text{eff}} 与模态分析相同,公式见上):
其中 V_m 为模态基底剪力。质量按特征值问题的集中质量矩阵计算;振型乘以 \Gamma,因此结果与振型的归一化和符号无关。
模态组合
同一量的各模态峰值贡献 r_m(带符号!)按下列规则之一组合:
- SRSS:R = \sqrt{\sum_m r_m^{2}},用于频率分散的情形;
- CQC:R = \sqrt{\sum_m\sum_n \rho_{mn}\, r_m r_n},用于频率接近的情形,相关系数取 Der Kiureghian 公式(Der Kiureghian,1981):
- ABS:R = \sum_m \lvert r_m \rvert,保守的上界估计。
CQC 中的临界阻尼比 \zeta 决定相关性;规范谱的纵坐标按 5 % 给定,不随 \zeta 换算。激励方向在模态之后组合:按方向做 SRSS,R = \sqrt{\sum_d R_d^{2}},或采用 100–30–30 规则(ASCE 7-16,第 12.5.3 条):R = \max_d\left(R_d + 0.3\sum_{e\neq d}R_e\right)。
剩余质量
舍去的模态对零周期加速度(ZPA)产生刚性响应。剩余质量 M_{\text{res},d} = M_{\text{ref},d} - \sum_m M_{\text{eff},m,d},其中 M_{\text{ref},d} 为未约束平动自由度的质量。对基底剪力的修正 V_{\text{res}} = M_{\text{res},d}\cdot \text{ZPA}_d 按 SRSS 与模态响应叠加(NRC Regulatory Guide 1.92,ANSYS:missing mass)。对于位移场和应力场,剩余部分通过单独的静力求解 \mathbf{K}\mathbf{u}_{\text{res}} = \text{ZPA}\,\mathbf{M}\,(\mathbf{t}_d - \sum_m\Gamma_{m,d}\boldsymbol{\varphi}_m) 得到,约束相同。规范要求每个方向的质量覆盖率不低于 90 %(SP 14.13330,ASCE 7-16,第 12.9.1.1 条):覆盖率不足时,结果会标注警告,说明其不适用于设计,应增加模态数。
设计谱
- SP 14.13330.2018:场地设计地震烈度 7、8、9 度,土类别 I–IV,用途系数 K_0、容许损伤系数 K_1、能量耗散系数 K_\psi;竖向分量采用单独的谱,公式相同,取 K_\psi = 1,并乘以系数 0.75(第 5.12 条)。
- ASCE 7-16 和 7-22:参数 S_s、S_1(7-16,系数 F_a、F_v 按表取值)或 S_{DS}、S_{D1}(7-22),场地类别,周期 T_L,R,I_e。
- 用户表格:(周期或频率,S_a)数据对,采用线性或对数插值,单位为 g 的倍数或 m/s²。
规范参数不会被悄悄代入:缺少的内容会在运行模态分析之前以错误形式指出。
输出内容
模态表(频率、周期、广义质量、\Gamma、有效质量及其占比、累计占比、S_a、模态基底剪力)、各方向的质量覆盖率、各方向及合成的基底剪力,以及各场。位移按分量组合且非负(包络),组合时位移的符号丢失,这是 RSA 的惯例。应力和应变分量在应用 SRSS 或 CQC 之前,先按模态贡献的符号组合。von Mises 等效应力、主应力和等效应变不是由分量包络计算得到的:它们取为二次不变量在 SRSS/CQC 组合椭球上的最大值(“响应谱椭球峰值”,response-spectrum ellipsoid peak)。这是包络线的峰值,而不是给定加速度时程的时间最大值;此类场适用于方向间采用 SRSS、模态间采用 SRSS 或 CQC 规则的组合结果。
fix surface number 1
solve spectrum code=sp14 intensity=8 soil=II dir=x,y combine=cqc dircombine=srss zeta=0.05 nmodes=20
probe spectrum_base_shear dir=x
probe spectrum_cumulative_mass dir=x8.7随机振动(PSD)实验性
随机振动分析评估结构在平稳高斯基础激励下的均方根(RMS)响应,激励由加速度功率谱密度(PSD、ASD)给定——典型应用于运输、航空和航天技术。
公式
激励为单边密度 S_a(f),单位为 g^2/Hz(或国际单位,m²/s⁴ 每 Hz),由“频率–密度”点表给出,采用分段对数(log–log)或线性插值。在点 (f_1, S_1)、(f_2, S_2) 之间,log–log 插值为 S(f) = S_1(f/f_1)^{k},k = \ln(S_2/S_1)/\ln(f_2/f_1)。输入 RMS 值 a_{\text{rms}} = \sqrt{\int S_a\,df} 按分段解析积分。
响应由模态叠加构造。模态 j 对相对位移和绝对加速度的传递函数:
广义坐标的协方差通过对频率直接积分计算(在共振点附近加密的网格上用梯形法),不假定频率分散:
节点处响应的方差:\sigma^{2} = \sum_j\sum_k \phi_j\,\phi_k\,V_{jk},其中 \phi_j 为振型 j 在该节点的值。CQC 相关矩阵 \rho_{jk}(公式与响应谱相同)会被计算并作为诊断输出,但方差本身使用 V_{jk}。输出相对位移、绝对加速度和 von Mises 等效应力的 RMS 1σ 值和 3σ 值(RMS 的三倍,对高斯过程不被超越的概率为 99.73 %)。
对于受白噪声激励的单质量系统,得到 Miles 公式(Miles,1954):
(第二个公式适用于小阻尼。)
实现方式与简化
从模态分析中取得频率、振型以及沿方向的参与系数 \Gamma(按质量,与响应谱相同);模态应力由振型恢复。von Mises 应力估计为 \sigma_{\text{vM}}^{2} \approx \sum_j\sum_k s_j s_k V_{jk},其中 s_j 为第 j 阶振型的 von Mises 等效应力。这是一种简化:von Mises 标量没有符号,也没有应力张量各分量之间的互相关,因此该估计对单一主导模态是准确的,当多个模态贡献显著时只是近似值。对位移使用节点处振型向量的模,结果写入激励方向的分量。疲劳和极值分布不作计算:3σ 是 RMS 的线性放大,而不是时间上的峰值。
solve psd)使用质量参与系数和模态应力;工程结论请以它为准。请自行检查随模态数和频率网格密度的收敛性。fix surface number 1
solve psd psd=[(20,0.01),(80,0.04),(350,0.04),(2000,0.005)] dir=z zeta=0.02 modes=10
probe psd_disp_3sigma
probe psd_stress_1sigma8.8子模型法测试版
边界位移插值法(Cut Boundary Displacement Method)可在不加密整个零件网格的情况下,得到孔、圆角等应力集中处的精确应力。它基于 Saint-Venant 原理:远离应力集中处,粗网格的位移场接近精确值,即使边缘处的应力峰值被低估了 1.5–2 倍。
公式
- 在中等网格上求解全局模型:得到场 \mathbf{u}_g(\mathbf{x})。
- 围绕关注区域截取局部子模型:通过布尔运算取实体与切割盒的交集,然后划分细网格(线性或二次)。
- 子模型的面分为切割面(位于原实体内部)和原有自由面(孔、圆角、外表面)。
- 在切割面的每个节点(包括二次单元的中间节点)上施加 Dirichlet 条件,取插值得到的全局位移:
插值采用全局网格四面体上的重心坐标(按全局单元的阶次为线性或二次);位于曲线边界上全局网格之外的点,投影到最近的单元上。
- 局部方程组由同一个结构求解器求解;自由面上不加载荷。
用户输入与输出结果
在界面中,子模型在结果步骤的“子模型法”部分启动(它调用与脚本相同的命令)。在全局 solve 之后需设定:中心 at=x,y,z(默认为应力最大值的热点,或已找到的应力集中热点),区域尺寸 radius= 或 box=dx,dy,dz,子模型单元尺寸 size=,阶次 order=1|2。结果:子模型中位于切割边界附近边界层之外的 von Mises 应力峰值、切割边界上的节点数和单元数(submodel_peak_vm、submodel_cut_node_count、submodel_element_count)。
mesh tet size=12 order=1
fix surface number 1
load surface number 3 pressure=-100000000
solve static
submodel at=60,30,4 box=36,36,8 size=2.4 order=2
probe submodel_peak_vm8.9Craig–Bampton 缩减(CMS)实验性
部件模态综合法(Craig、Bampton,1968)用超单元替代大型子装配体:超单元由边界自由度和少量固定边界的正则模态组成。适用于子系统要在动力学分析中反复使用的装配体。
公式
自由度分为边界自由度 b 和内部自由度 i。静力模态(约束模态)与固定界面的正则模态:
变换与缩减矩阵:
质量矩阵 \hat{\mathbf{M}} 在模态坐标上的子块为单位阵。完整的场通过逆变换恢复。
实际实现情况
已实现稠密矩阵运算:静力模态和正则模态、缩减矩阵、线性四面体的位移和应力恢复、缩减载荷向量。该模块已通过小矩阵上的自动测试验证(Guyan 极限、\hat{\mathbf{K}} 的分块对角性、最低阶特征值吻合)。命令 cms 和结果中的“Craig–Bampton 超单元”部分接受边界面和模态数,但在当前构建中,用户的有限元网格并未传入其中:计算在内置的质量–弹簧测试链上进行。因此,这些命令不能用于对实际子装配体做缩减。
cms boundary="surface number 1" modes=68.10转子动力学实验性
转子动力学研究旋转如何改变固有频率:陀螺效应使弯曲频率分裂为正进动(FW)和反进动(BW)。结果以 Campbell 图表示(频率随转速变化),并带有同步激励线 1× 和 2×,二者的交点即为临界转速。
公式
在绕轴以角速度 \Omega 旋转的参考系中:
其中 \mathbf{G} 为反对称的 Coriolis 项矩阵(\mathbf{G}^{\mathsf{T}} = -\mathbf{G}),\mathbf{M}_{\text{spin}} 为垂直于轴线平面内离心力引起的软化。问题在状态空间中线性化,矩阵为
并通过完整的非对称特征值问题求解(Householder 化为 Hessenberg 形式,再用双重位移 QR 算法)。从共轭复特征值对中取频率 \operatorname{Im}\lambda 和临界阻尼比 -\operatorname{Re}\lambda/\lvert\lambda\rvert。临界转速是 k = 1, 2 时 \omega_i(\Omega) = k\,\Omega 的交点,通过在转速网格上线性插值求得。
实际实现情况
这不是对用户转子的完整计算,而是一个原型:
- 矩阵 \mathbf{G} 由集中质量的 Coriolis 项构造;圆盘通过极转动惯量产生的陀螺力矩、带刚度和阻尼的轴承,以及油膜的交叉系数,均不参与计算路径;
- 进动方向由频率相对于静止转子的偏移符号判定,模态按频率列表中的序号匹配,没有按振型跟踪,因此在模态交叉处分类可能有误;
- 命令
solve rotor和结果中的“转子动力学”部分针对内置的两自由度模型(质量 2 kg,刚度 2·10⁴ N/m,陀螺系数 0.4)计算图线,而不是针对用户的网格;轴线、转速范围、步数和模态数这些参数只控制扫描过程。
solve rotor axis=z speed_min=0 speed_max=1000 steps=20 modes=4
probe rotor_crit_speed_19非线性计算与动力学
↑ 返回目录本节描述刚度依赖于解、或不能忽略惯性的计算:大位移和大转动、带极限点通过的失稳、施工与开挖阶段、隐式与显式动力学。线性静力分析、模态分析和线性屈曲见线性分析类型一节。材料模型(塑性、超弹性、蠕变)见材料模型一节,接触见接触与连接一节,线性求解器见求解器一节。
单位与其他各处相同:几何采用毫米,求解器边界采用国际单位制(米、牛顿、帕斯卡、千克、秒)。结果以界面单位返回。动力学中的时间以秒计。
各项功能在何处计算:
| 功能 | 桌面端(基准) | 浏览器 |
|---|---|---|
| 几何非线性、弧长法、阶段分析 | 支持 | 不支持,明确拒绝 |
| 实体隐式动力学 | 支持 | 支持,仅限弹性模型和不含接触、约束与塑性的 Total Lagrangian |
| 梁和壳的隐式动力学 | 支持 | 有限支持 |
| 显式动力学 | 支持 | 支持 |
平台不支持的计算会以明确的原因拒绝。不会悄悄替换为线性解:在非线性路径中,任何不受支持的单元类型、约束或材料都会引发带说明文字的错误,而不是给出简化的答案。
9.1实体的几何非线性稳定
当线性刚度不再能描述结构时启用:位移与截面尺寸相当,单元发生明显转动,压力始终垂直于变形后的表面。对于实体,采用完全拉格朗日列式(Total Lagrangian):所有积分都在初始构形 V_0 上进行。
公式
高斯点处的位移梯度和变形梯度:
梯度由位移构造,而不是由 \nabla(\mathbf{X}+\mathbf{u}) 构造:当 \lvert\mathbf{u}\rvert \ll \lvert\mathbf{X}\rvert 时,相近数值相减会丢失有效数字。出于同样的原因,Green–Lagrange 张量通过 \mathbf{H} 计算:
第二类 Piola–Kirchhoff 张量 \mathbf{S} 按材料定律计算。默认采用 Saint-Venant–Kirchhoff 模型:
对于橡胶和弹性体的大变形,可选用超弹性模型:可压缩 Neo-Hooke 模型,其能量为 W = \tfrac{\mu}{2}(\bar I_1 - 3) + \tfrac{\kappa}{2}(J-1)^2,\bar I_1 = J^{-2/3} I_1,还有 Mooney–Rivlin、Yeoh、Arruda–Boyce 和 Ogden 模型(参数见材料模型一节)。该列式是纯位移型的,没有单独的压力场。
内力的虚功 \int_{V_0} \mathbf{S}:\delta\mathbf{E}\,dV_0 给出内力向量和切线矩阵。采用工程剪应变的 Voigt 记法(顺序为 11、22、33、12、23、13):
矩阵 \mathbf{B}_{NL} 依赖于 \mathbf{F}:对节点 i 和分量 m,E_{11} 行等于 F_{m1}\,\partial N_i/\partial X,\gamma_{12} 行等于 F_{m1}\,\partial N_i/\partial Y + F_{m2}\,\partial N_i/\partial X,依此类推。切线矩阵是材料部分与几何部分之和:
切线矩阵是解析的且对称(跟随载荷和接触的贡献除外)。对各向同性的 Saint-Venant–Kirchhoff 模型,\mathbb{D} 为常数。对超弹性和弹塑性定律,\mathbb{D} 是该定律的一致切线,因此 Newton 迭代为二次收敛。
积分点方案与线性组装相同(见有限元单元库一节):TET4 取一个点,TET10 取四个点,HEX8 取 2\times2\times2(完全积分),HEX20 取 3\times3\times3。内核还支持棱柱、金字塔和 HEX27。Solve 按钮和 DSL 的路径接入一阶和二阶的四面体与六面体,以及 Hex8–Pyr5–Tet4 混合网格;其他类型组合会明确拒绝。
用户得到的结果
位移、支座反力(最终构形中的 \mathbf{f}_{\mathrm{int}} - \lambda\,\mathbf{f}_{\mathrm{ext}})、Green–Lagrange 应变、真实 Cauchy 应力,以及由其得到的 von Mises 等效应力和主应力。Cauchy 应力通过前推(push-forward)得到:
单元值是高斯点上按体积 V_0 的平均;节点值是相邻单元以其体积 V_0 为权重的平均。这不是超收敛恢复:在梯度较大的区域,节点峰值被抹平。对于已接受的载荷步,保存完整的场,后处理器中可在各步之间切换。快照的内存受预算限制;溢出时各步均匀抽稀,保留第一步和最后一步。
Solution 面板与 DSL 共用以下设置:载荷步数、每步迭代上限、残差容差、压力模式(跟随或死载荷)、接触罚函数倍数。跟随压力沿当前构形的法向作用:\mathbf{f}_a = -\lambda p \int N_a\,\tilde{\mathbf{n}}\,d\xi\,d\eta,其中 \tilde{\mathbf{n}} = \mathbf{x}_{,\xi}\times\mathbf{x}_{,\eta}。该载荷的切线已计入,一般情况下是非对称的(单个面的载荷是非保守的)。
nlgeom on pressure=dead steps=10 maxiter=25 tol=1e-6
solve static大位移时低阶单元的闭锁,在 L/h = 20、PL^2/EI = 10 的悬臂弯曲问题上做了测量(沿长度 40 个单元,沿厚度 1 个单元)。基准为独立积分得到的 Euler 弹性曲线。端点位移的最大误差:
| 单元 | 误差 |
|---|---|
| TET4 | 56.5 % |
| HEX8 | 8.9 % |
| TET10 | 0.16 % |
| HEX20 | 0.19 % |
这是特定网格上的闭锁,并非对任意几何的保证。大位移弯曲问题请使用二阶单元。
9.2共旋梁和壳稳定
对于梁和壳,完全拉格朗日列式是多余的:应变保持为小量,大的是转动。这里采用共旋(corotational)方法:单元坐标架跟随节点,在其中使用线性单元,几何非线性完全来自坐标架的转动。
节点的构形由位置 \mathbf{x} = \mathbf{X} + \mathbf{u} 和完整的转动 \mathbf{R}_g\in SO(3) 给出。转动增量是空间自旋 \delta\mathbf{w},更新采用乘法形式:
不能直接叠加角度:在大转动下这是不对的。因此节点转动以向量 \log\mathbf{R}_g 输出,其角度取值范围为 [0, \pi]。
梁
采用 Battini 和 Pacoste(2002)的列式。单元坐标架 \mathbf{R}_r 根据弦线和节点转角的 y 轴平均位置构造。坐标架中的变形量:
它们在小应变下是小量,因此可直接对其使用线性 Timoshenko 单元:\bar{\mathbf{f}}_l = \mathbf{K}_l\,[\bar u,\bar{\boldsymbol\theta}_1,\bar{\boldsymbol\theta}_2]^{T}。内力由计入转动导数的精确虚功得到;切线是解析的(与有限差分的吻合度达 10^{-9})。
壳
在线性壳之上采用与单元无关的共旋列式 EICR(Rankin 和 Nour-Omid;Felippa 和 Haugen,CMAME 194,2005):四边形采用 Q4 膜、MITC4 弯曲和绕法向的虚拟转动刚度;三角形采用 CST 膜与 DKT 弯曲。单元坐标架仅取决于节点位置。力是能量 \tfrac12\bar{\mathbf{d}}^{T}\mathbf{K}_l\bar{\mathbf{d}} 对整体自由度的精确梯度;投影项消除坐标架刚体模态上的功。切线是解析的。
用户得到的结果
节点位移和转角(转角以完整转动向量表示)、反力、梁两端在单元当前坐标架中的内力 N, V_y, V_z, T, M_y, M_z。对于壳,计算单元中心上下表面纤维的 von Mises 等效应力,由坐标架变形量按线性关系得到,输出两者中的较大值。非线性计算中没有沿厚度的应力场。
节点力矩由在空间中固定的轴向量给定,并与空间自旋共轭。在平面问题中,这样的载荷是保守的;空间问题中没有跟随力矩。
frame solve static nlgeom=on steps=10 maxiter=30 tol=1e-69.3Newton–Raphson 迭代与载荷步稳定
问题:求 \mathbf{u},使内力与载荷比例 \lambda 下所施加的力相平衡。自由自由度上的残差:
载荷分步从 \lambda = 0 增加到 \lambda = 1。每一步执行 Newton–Raphson 方法,每次迭代都完整重新计算切线:
转动采用乘法更新(见上一小节)。切线矩阵由稀疏 LU(Eigen 库)分解,稀疏模式的符号分析在各次迭代之间重复使用。采用 LU 而不是 Cholesky,是因为共旋单元的切线在非平衡状态下是非对称的;关于线性求解器的详细内容见求解器一节。
收敛准则
当相对残差不超过容差时接受该步:
其中 f_{\mathrm{ref}} 为载荷的参考范数(见下)。准则仅基于残差;没有基于位移增量或能量的准则。参考范数计入跟随载荷(否则平衡状态下外力为零的纯跟随载荷问题,其相对残差会等于 1),并且在以给定位移加载或卸载到 \lambda = 0 时,计入由模型总载荷给出的下界。若残差在第一次求解之前就已经很小,则不算数:至少要执行一次增量计算。
自动步长缩减
初始步长 \Delta\lambda 是给定步数的 1/N。如果 Newton 迭代在规定的迭代次数内未收敛(或残差为非数值),则放弃该步,状态回退到最后一个被接受的状态,并将 \Delta\lambda 减半。如果 Newton 迭代很快收敛,则步长增大。步长的增大与缩减都有上下限。缩减到最小值以下则报错“自动步长耗尽”。所有被接受的步和回退都会被计数并在结果中显示。
载荷路径
对于弹塑性问题和循环加载,载荷可按任意目标比例 \lambda 的序列施加:\{1, 0\} 为加载并完全卸载(残余变形),\{1, -1, 1\} 为循环。自动步长在每一段上都起作用。载荷路径仅支持载荷控制。
用户输入
| 参数 | DSL | 含义 |
|---|---|---|
| 步数 | steps= | 到 \lambda = 1 的目标步数(默认 10) |
| 每步迭代次数 | maxiter= | Newton 迭代次数上限(默认 25) |
| 残差容差 | tol= | 相对容差 \varepsilon(默认 10^{-6}) |
| 步数上限 | maxsteps= | 已接受步数的总数,包括缩减后的步 |
| 控制自由度 | controldof= | 用于“载荷–位移”曲线;默认取 \lvert u\rvert 最大者 |
| 载荷路径 | loadpath="1,0" | 依次给出的目标比例 \lambda |
用户可见的拒绝原因是固定的:自动步长耗尽(未找到平衡);达到步数上限;切线奇异(机构,或载荷控制下的极限点);落到 \lambda=1 未收敛;输入有误;路径跑到了非物理分支(弧长法)。报告原因的同时还会给出已达到的 \lambda 和步数。
9.4Crisfield 弧长法稳定
当加载路径上存在载荷极限点(snap-through)或回折(snap-back)时,载荷控制会在这些点停止:切线奇异。弧长法沿平衡曲线本身前进,而不是沿 \lambda 前进。
未知量是增量 \Delta\mathbf{u} 和 \Delta\lambda,外加一个约束方程。实现的是 Crisfield 的圆柱形变体:弧长约束只施加在自由自由度的位移上,
迭代中的校正量分解为 \delta\mathbf{u} = \delta\mathbf{u}_r + \delta\lambda\,\delta\mathbf{u}_t,其中 \delta\mathbf{u}_r = \mathbf{K}_T^{-1}\mathbf{r},\delta\mathbf{u}_t = \mathbf{K}_T^{-1}\mathbf{f}_{\mathrm{ref}},而 \delta\lambda 是下列二次方程的根
两个根中,取使更新后的增量与校正前的增量夹角较小的那个。若为复根,则缩减步长。
预测器为切线型;载荷增量的符号按 Feng 方法确定:取前一增量与切线向量的标量积的符号。这在多自由度 snap-back 时并不够,因此增加了 Crisfield 折返检查:被接受的步增量必须与前一步成锐角,否则拒绝该步并将弧长减半。弧长根据校正器的迭代次数调整。如果弧长步越过了 \lambda = 1,则该步被回退,并用载荷控制的小子步“降落”到 \lambda = 1。如果无法降落(刚度为负的分支),则采用最后一个收敛的弧长步。
结果中,用户得到沿路径完整的 \lambda(u) 历程:包含 u 增大时 \lambda 减小的区段,以及 snap-back 之后 \lambda<0 的部分。方法在 Solve 步骤中选择(“方法”列表),在 DSL 中使用 method=arc。
frame solve static nlgeom=on method=arc steps=40 maxiter=40 tol=1e-6loadpath)同样被拒绝。弧长法的验收是在弹性梁和壳上进行的;对带塑性历史的实体,没有通过极限点的验证。该方法构造路径,但不替用户选择分支:在带有多个分支的分岔点处,路径取决于缺陷(见下一小节)。如果载荷的绝对值偏离给定值太远,保险机制会以“路径跑偏”拒绝并停止计算。9.5初始缺陷与后屈曲行为测试版
受压的完善结构按分岔失稳;实际结构按极限载荷失稳,极限载荷取决于初始偏差的形状和幅值(缺陷敏感性,Koiter)。典型流程:线性屈曲计算 \to 按求得的模态引入缺陷 \to 弧长法非线性计算。
命令 imperfection 取线性屈曲的第 k 阶特征模态 \boldsymbol\phi_k,按最大平动位移归一化,并移动网格节点的坐标:
其中 w_0 是以模型长度单位表示的最大位移(参数 scale)。连续多条命令会叠加各模态(多模态缺陷)。适用于壳网格、实体网格和框架。该命令要求在同一模型上先执行 solve buckling,并会改变工作模型的几何:之后的计算在扰动后的网格上进行。
solve buckling nmodes=3
imperfection mode=1 scale=0.5
solve static nlgeom=on method=arc steps=20 maxiter=30 tol=1e-5imperfection 的后屈曲极限载荷,目前还没有与独立基准的定量对照。9.6迭代中的材料非线性稳定
材料非线性进入同一个 Newton 循环。每个高斯点保存该定律的历史(已接受的状态);迭代时定律由已接受状态出发计算,而不是在迭代过程中累积。已接受状态在步收敛之后更新,步回退时状态保持不变。因此在相同位移下重新组装是幂等的,而步长缩减不会破坏历史。
定律返回应力和一致切线 \partial\mathbf{S}/\partial\mathbf{E}。对 Mises 塑性(各向同性、随动、多线性硬化)和 Johnson–Cook,定律的输入是 Green–Lagrange 张量,输出是第二类 Piola–Kirchhoff 张量:塑性在这一对量上是加法的。各定律及其参数的说明见材料模型一节。
“仅材料非线性”模式(nlgeom=material)关闭实体的几何非线性:\boldsymbol\varepsilon = \mathrm{sym}\,\nabla\mathbf{u},不组装 \mathbf{K}_{\mathrm{geo}},压力为死载荷。
对理想塑性,在最后一个目标载荷处自动步长耗尽,意味着承载能力耗尽。此时产品把最后一个收敛的平衡作为结果返回,并报告极限载荷比例(\lambda_{\mathrm{lim}});对有硬化的情形,这种拒绝仍然是计算错误。
material steel plasticity=j2 yield=250e6
nlgeom material steps=20 loadpath="1,0"
solve static9.7非线性问题中的给定位移测试版
除力之外,也可以用给定位移加载(作动器、过盈配合、试样拉伸)。在非线性静力分析中,非零给定位移通过平动自由度上的线性约束方程引入,其右端与 \lambda 成正比:
其中 c_i 为约束系数(对给定位移,为系数 1 的一个自由度),\bar r 为给定值(求解器边界上以米计);方程的第一项为从属自由度。位移随载荷比例增长,在载荷路径 \{1, 0\} 中回到零。平动上的约束在大位移下仍然是精确的。给定位移与力、跟随压力和载荷路径兼容。
仅用位移加载时没有外力,通常的残差参考范数为零:舍入残差除以零会使计算错误地不收敛。因此参考范数取为给定位移的能量尺度。这一改动不影响由力加载的计算。
9.8实体隐式动力学稳定
考虑惯性和阻尼的瞬态动力学:适用于载荷随时间的变化相对于基频周期很快、但不需要冲击和应力波的情形(后者请用显式格式)。求解半离散运动方程
载荷为 \mathbf{F}(t) = k(t)\,\mathbf{F}_0,其中 k(t) 是由“时间–系数”数据对表给出的分段线性幅值。
格式
实现了 Newmark-\beta 和 HHT-\alpha(Hilber–Hughes–Taylor)。没有广义 \alpha 格式(Chung–Hulbert)。两种格式写成同一形式:
Newmark 对应 \alpha = 0;默认 \beta = 1/4,\gamma = 1/2(梯形法则:无条件稳定,无数值阻尼)。对于 HHT-\alpha,参数 \alpha\in[-1/3, 0],且 \beta = (1-\alpha)^2/4,\gamma = (1-2\alpha)/2;对高频的数值阻尼随 \alpha 的减小而增强:\Omega\to\infty 时谱半径的极限等于 (1+\alpha)/(1-\alpha)。广义的 \beta、\gamma 在 \gamma \ge 1/2 且 \beta \ge (\gamma + 1/2)^2/4 时被接受,即仅限无条件稳定的情形;其余情形(包括“线性加速度”)会被拒绝,以免出现悄无声息的不稳定。
格式的未知量是该步的增量 \Delta\mathbf{u}。Newton 迭代使用有效切线
Rayleigh 阻尼 \mathbf{C} = a_R\mathbf{M} + b_R\mathbf{K}_0;\mathbf{K}_0 是初始构形的切线,计算过程中不更新(与工业代码中的材料阻尼相同)。系数可由一对 (a_R, b_R) 或两组“频率–临界阻尼比”给定。如果某步不收敛,则递归地将其减半,直到给定的深度(同一输出步内的子步)。在小应变且无塑性(\mathbf{K} 为常数)的情况下,采用快速的线性路径,整个计算只做一次分解。
用户输入
步长 h 和终止时间是必需的。质量:一致质量(默认)、按 HRZ 的集中质量,或“在节点间平均分配”。运动学:小应变,或大位移(Total Lagrangian)。初始条件:满载下的静力状态(“释放”)或零值;所有节点或选定实体的初速度。基础加速度按相对形式给定:\mathbf{F} = -\mathbf{M}\boldsymbol\iota\,\mathbf{a}_0\,k(t)。结果:探针点上随时间变化的位移、速度和加速度,能量序列(动能、内部功、阻尼耗散、外力功、平衡),Mises 应力和塑性应变的最大值,场的帧,以及各节点的 Mises 包络。
solve transient dt=1e-4 tend=0.05 scheme=hht alpha=-0.05 amplitude="0:0,0.001:1"
solve transient dt=1e-4 tend=0.05 rayleigh f1=50 z1=0.02 f2=500 z2=0.05这里的键 alpha= 和 beta= 是格式参数,而不是 Rayleigh 系数。直接积分的替代方案是模态叠加(method=modal),采用精确的 Duhamel 积分和剩余模态的静力修正;它是线性的,不能替代非线性动力学。
9.9梁和壳的隐式动力学、约束与基础测试版
对于梁和壳,动力学在转动群 SO(3) 上进行。节点带有转动惯量;空间形式的转动 Euler 方程
该步的转角增量 \Delta\boldsymbol\theta = \log(\mathbf{R}\,\mathbf{R}_n^{T}) 进入 Newmark/HHT,转动子块的切线包含 \mathbf{T}^{-1} 的导数。质量:一致质量或集中质量;支持初始角速度 \mathbf{w}_0(绕质心的刚体转动)。
对于实体,另外还提供:CE/MPC 和 RBE2 约束、法向约束、远端力和力矩、支座的给定运动(绝对形式下 u = k(t)\bar u)、基础加速度(地震激励)。动力学在独立自由度中进行,缩减质量为 \mathbf{M}_r = \mathbf{T}^{T}\mathbf{M}\mathbf{T}。接触和摩擦(节点–表面罚函数、正则化 Coulomb 摩擦)见接触与连接一节。
9.10显式动力学稳定
显式格式用于快速过程:冲击、穿透、爆炸加载、波的传播。时间步长受 Courant–Friedrichs–Lewy 条件限制,但不需要求解方程组,也没有迭代:每步只计算一次内力。运动方程采用中心差分格式(Verlet 的速度形式)和对角质量矩阵进行积分:
按 HRZ(Hinton–Rock–Zienkiewicz)的集中质量:把一致质量的对角线按单元总质量缩放。对于二阶单元,按行求和会使角点的质量为负,而这种方法的质量仍为正。
临界时间步长
时间步长不超过波穿过最小单元所需时间的估计值:
其中 L_e 为单元的特征尺寸(六面体取 V/A_{\max},四面体取 3V/A_{\max},A_{\max} 为最大面的面积),\alpha_{\Delta t} 为用户设定的安全系数(dtScale)。对 HEX8,采用单元的严格极限 2/\omega_{\max},由 \mathbf{M}^{-1}\mathbf{K}_e 的最大特征值给出。对 \nu=0.3 的立方体,它等于 0.735\,L_e/c(体积“呼吸”模态),因此仅凭 L_e/c 的估计并不安全。时间步长在计算过程中重新计算:针对存活单元,并在有限变形时按当前尺寸。如果网格中存在特征尺寸异常小的退化单元,则对其质量进行缩放,使它们不会把整个计算的步长压到零。缩放会扭曲这些单元的惯性。
单元、材料、载荷
三维 TET4、TET10、HEX8;二维 QUAD4 和 QUAD8(平面应变或平面应力)。HEX8 是单点单元,采用精确的体积平均梯度,并按 Flanagan–Belytschko 方法控制“沙漏”(黏性和刚度两种形式,系数由用户设定,计算会报告沙漏能量与内能之比,并在比值过大时发出警告)。材料:线弹性、J2 塑性(理想、线性或多线性硬化,含各向同性与随动份额)、Johnson–Cook(速率、温度、绝热升温)、用于冲击波的 Mie–Grüneisen 状态方程(见材料模型一节)。体积黏性 q_1(线性)和 q_2(二次)抑制波前的振荡。
载荷与条件:实体或表面的初速度、固定、对称、表面的给定运动(按表给出速度或位移)、刚性墙、体积力和重力、吸收边界。计算中维护能量平衡:动能和内能、沙漏能、侵蚀能、外部作用所做的功。
有限变形
对 TET4 和 HEX8,可以启用有限变形模式(largeStrain=on):更新拉格朗日列式、当前网格上的梯度、Jaumann 次弹性并按 Hughes–Winget 方法转动累积应变、在步长估计中采用当前体积和单元尺寸。不启用时,列式为几何线性(小应变和小转动)。对应变达到量级 1 的冲击,必须使用此模式:几何线性列式下的 Taylor 冲击与理论相差 1.6 % 和 5.1 %(无量纲载荷 \rho U^2/\sigma_y 分别为 0.25 和 0.5)。
material E=124e9 nu=0.34 density=8960 plasticity=j2 yield=300e6
explicit endTime=0.00017 dtScale=0.8 largeStrain=on
bc explicit_velocity body vx=-91.5
bc rigid_wall plane x 0 friction=0
solve explicit9.11单元侵蚀与破坏测试版
在穿透和层裂计算中,达到破坏准则的单元从内力中移除。准则可以组合,任一准则达到即发生破坏:
- 极限等效塑性应变 \varepsilon_p \ge \varepsilon_{\mathrm{fail}};
- Johnson–Cook 累积损伤 D = \sum \Delta\varepsilon_p/\varepsilon_f,其中 \varepsilon_f = [d_1 + d_2 e^{d_3\eta}]\,[1 + d_4\ln\dot\varepsilon^*]\,[1 + d_5 T^*];
- 最大主应力 \sigma_1 \ge \sigma_{\max};
- 层裂压力 \sigma_m \ge p_{\mathrm{spall}}。
被移除的单元不再承力,但其节点的质量保留(动量守恒),步长按存活单元计算,单元的内能被固定为侵蚀能,能量平衡保持封闭。侵蚀接触是针对存活单元整个外表面的单边罚函数节点–线段接触;随着侵蚀的进行会露出新的面,冲击体遇到的是形成的空腔。
material steel plasticity=j2 yield=355e6 fail="ep:0.25,smax:1.2e9"
explicit endTime=0.03 dtScale=0.8 largeStrain=on erodingContact=on9.12显式动力学中的波动问题测试版
弹性波在土体和固体中的传播。波源:面上的压力或切向载荷、节点力、按时间规律给压力的爆炸空腔、光滑膨胀中心(无旋体积力,纯 P 波)。时间规律:Ricker 脉冲、指数、扫频、简谐、阶跃、表格。弹性层用于定义成层半空间。虚拟检波器记录节点处或离给定点最近的节点处的位移、速度和加速度;据此计算 PPV、到达时间和波速。场 \nabla\cdot\mathbf{u} 和 \lvert\nabla\times\mathbf{u}\rvert 输出到网格和节点上。
Lysmer–Kuhlemeyer 无反射边界给出与速度成正比的应力:
密度和波速取自相邻单元的材料,法向取自面本身,阻尼器隐式地进入时间步。
explicit geophone at=0,0,-100 name=g1
explicit layer axis=z at=-300 E=2e9 nu=0.3 density=1800
bc explicit_absorbing surface number 49.13单元的生与死、施工与开挖阶段稳定
对于分层建造构筑物、开挖土方、隧道掘进和逐层堆焊,活动单元的集合随阶段变化,载荷和约束是累积的,位移和应力也是累积的。设定阶段列表:每个阶段在其开始时激活一些实体(生)并停用一些实体(死)。
“软单元”方法:网格保持完整,系统规模在各阶段之间不变。非活动单元不会被删除;其内力和切线乘以一个小的软化系数 s(参数 stagesoft),定律为弹性且无历史,不分配密度和重量。算法的误差与该系数成正比:相对误差量级为 0.04\,s。仅属于非活动单元的节点跟随活动部分:在阶段开始时,其位置按与活动实体交界上最近的节点设定。
生。在阶段开始时,新单元的参考构形取为当前构形:\mathbf{H} = \nabla(\mathbf{u} - \mathbf{u}_{\mathrm{ref}}) = \mathbf{0},\mathbf{S} = \mathbf{0},塑性历史为空。单元以无应力状态“出生”在变形后的构形上,而不是初始网格上。死。单元变软,其残余力被清零;它所卸掉的载荷,由结构随阶段载荷增量逐步承接。
阶段的加载沿参数 \lambda\in[0,1] 进行:
其中 \mathbf{b} 是新活动单元集合在阶段开始构形 \mathbf{u}_0 上的内力(按构造处于平衡),\mathbf{f}_{\mathrm{stage}} 为阶段的全部载荷。差值 \mathbf{f}_{\mathrm{stage}} - \mathbf{b} 既包含外载荷的增量,也包含已“死”单元的“开挖力”。Newton 迭代和自动步长与非线性静力分析共用。阶段的容差按模型的全部载荷来度量。重量和体积力按实体分配:非活动实体没有重量。
结果按阶段保存;命令 stage view 切换查看和测量。
nlgeom on pressure=dead
stage add name=L1
stage add name=L2 activate=body2
solve static
stage view 29.14耦合 T(t) → u(t)测试版
非稳态温度可以在动力学中对结构加载。耦合是单向的:热传导步给出 T_{n+1},热载荷 \mathbf{f}_{\mathrm{th}}(T_{n+1}) 进入力学求解;变形对温度没有反向影响(没有 Gough–Joule 项)。两种模式:准静态(每个热步求 \mathbf{K}\mathbf{u} = \mathbf{f}_{\mathrm{ext}} + \mathbf{f}_{\mathrm{th}}(T),无惯性)和动力学——与隐式动力学相同的 Newmark/HHT 积分器,右端带热载荷;HHT 取 (1+\alpha)\mathbf{f}_{\mathrm{th}}(T_{n+1}) - \alpha\mathbf{f}_{\mathrm{th}}(T_n)。每个热步对应给定数目的力学步。非稳态热传导的公式见传热与多物理场一节。
9.15取消计算测试版
Solve 步骤中的“取消”按钮会设置原生求解器的取消标志,并中断对结果的等待。具体停止什么,取决于所做的计算。
标志在以下位置被查询:显式动力学循环的每一步(计算返回状态为“已取消”的部分结果)、非稳态热传导的每一步之后(部分帧)、mortar 接触的载荷步中。在非线性静力的 Newton 循环、隐式动力学和分阶段计算中没有查询点:界面立即显示已取消,但内核可能会一直运行到当前调用结束。
9.16“已收敛”标志的诚实性稳定
把结果当作解展示的非线性计算,比拒绝求解的计算更糟。产品中采用如下做法。
对于载荷控制,只有在达到 \lambda = 1(或载荷路径的最后一个目标)且最后一步按残差收敛时,计算才被视为收敛。自动步长耗尽、达到步数上限、切线奇异、出现非数值——都会以带原因代码、已达到的 \lambda 和步数的拒绝来处理,而不是把最后一步当作结果。界面中的状态显示为“已收敛:达到 \lambda = 1”或“未收敛:原因”。检验:没有平衡解的问题返回 converged = false 且 \lambda < 1。
局部进展不会被掩盖:用户可以看到已接受的步数、回退次数和迭代次数。对于理想塑性,极限载荷是单独的明确结果,并标注为极限载荷比例。翻转的单元(雅可比行列式非正)被视为非数值并缩减步长:在超过极限的压力下,计算不会返回带负体积的“已收敛”解。对原生结果的完整性做检查:不了解塑性或载荷路径的旧二进制文件会被拒绝,并提示更新应用,而不是返回弹性结果。
10传热与多物理场
↑ 返回目录本节描述热问题(热传导、辐射、热接触)、热弹性、流体或气体绕流(CFD)以及空腔声学。各模块的成熟度不同:热传导和热弹性在桌面端和浏览器中均可计算,CFD 仅在桌面端可用;声学和 Gough–Joule 效应目前仍属实验性。每个小节的状态标在标题中,局限则单独列在提示框里。
输入与输出的单位:几何采用 mm,时间采用秒,温度采用 °C(辐射公式中由内核自行换算为开尔文),热导率 \kappa 采用 W/(m·K),比热容 c_p 采用 J/(kg·K),密度采用 kg/m³,热流密度采用 W/m²,对流换热系数 h 采用 W/(m²·K),体积热生成率 Q 采用 W/m³,热膨胀系数 \alpha 采用 1/K。求解器边界采用国际单位制。
桌面版本由原生内核计算,浏览器版本则用同一份代码编译为 WebAssembly 运行。以桌面端为基准。在已验证的问题(非线性热传导、耦合热弹性动力学)上,两个平台的数值在打印位数内一致。CFD 仅在桌面端可用。
10.1稳态热传导测试版
稳态问题在给定温度、热流、对流和体积热生成率的条件下,给出稳定的温度场。用于评估零件内的温差、散热功率,也是耦合热弹性的第一步。
公式
区域 \Omega 内各向同性材料的 Fourier 方程:
边界上互不相交各部分的边界条件(法向 \mathbf n 指向外):
- 温度:T=T_D;
- 热流,以流入物体为正:\kappa\,\partial_n T=q;
- 对流:-\kappa\,\partial_n T=h\,(T-T_\infty);
- 向环境辐射:-\kappa\,\partial_n T=\varepsilon\sigma\,(T_K^4-T_{\infty K}^4)——见非线性热传导。
线性情形(无辐射)的弱形式:求 T,使其在给定温度的边界上等于 T_D,且对任意试函数 w
离散后得到对称正定方程组 \mathbf K\,\mathbf T=\mathbf F,其矩阵为 K_{ij}=\int_\Omega\kappa\,\nabla N_i\cdot\nabla N_j\,dV+\int_{\Gamma_h}h\,N_iN_j\,dA,向量为 F_i=\int_\Omega Q\,N_i\,dV+\int_{\Gamma_q}q\,N_i\,dA+\int_{\Gamma_h}h\,T_\infty N_i\,dA。
用户输入与输出结果
用户设定材料的 \kappa(每个实体分别设定)、按表面编号施加在面上的温度、热流和对流系数,以及整个实体或选定实体的体积热生成率 Q。结果为节点处的温度场、最小值和最大值,以及以瓦计的功率平衡:
左侧为热生成和流入的热流,右侧为通过给定温度的面(按反力)、对流和辐射的散热。平衡的偏差表明边界条件与矩阵是否一致。
实现方式
单元为线性和二次四面体(4 节点和 10 节点)。内核也支持 8/20/27 节点的六面体、楔形和金字塔单元。边界面为一阶和二阶的三角形和四边形。矩阵是稀疏的:小规模方程组用 LDL^T 直接分解求解,大规模的用带不完全 Cholesky 预处理器的共轭梯度法。如果没有任何一个面给定温度或对流,则问题是奇异的(温度只能确定到一个常数),计算会拒绝并给出说明。
界面:功能区中的热分析,边界条件步骤中的热边界条件(“热流”“体积热生成”),结果为“温度”场和功率平衡。
material preset=steel kappa=40
thermal surface number 1 temperature=100
thermal surface number 2 convection=25 ambient=20
load heat_generation=2e6
solve thermal10.2瞬态热传导测试版
瞬态计算给出温度在随时间变化的载荷下的演化:加热与冷却、热冲击、循环工况。当零件的热惯性很重要、而不仅仅关心稳态时需要用到。
公式
热容矩阵 C_{ij}=\int_\Omega\rho c_p\,N_iN_j\,dV 取一致矩阵或对角的 HRZ 矩阵(Hinton、Rock、Zienkiewicz,1976):对一致矩阵的对角线按单元缩放,使其总和等于 \int\rho c_p\,dV。对角矩阵可消除陡峭波前上的振荡,但仅支持线性单元。
时间积分采用 \theta 方法:
当 \theta=1 时,格式为隐式 Euler:一阶精度,L 稳定,单调。当 \theta=\tfrac12 时为 Crank–Nicolson:二阶精度,A 稳定,但在载荷突变处会产生衰减振荡——这是格式本身的性质。步长矩阵是常数,因此只分解一次。步长按终止时间调整:\Delta t_{\text{used}}=t_{\text{end}}/\lceil t_{\text{end}}/\Delta t\rceil。也可以由用户设定非均匀的步长表。
用户输入
必须设定步长 \Delta t、终止时间和初始温度:产品不会猜测初始状态。此外还有材料的密度和 c_p、\theta 格式与热容类型、探针(以 mm 为单位的点,吸附到最近的节点)、保存的场帧数。每个载荷通道都乘以分段线性的时间表 k(t):温度 T_D(t)=T_D\,k_T(t)、热流、对流系数、环境温度、热生成率。表之外的系数保持不变。给定值的节点在 t=0 时的温度等于 T_D(0),因此 t=0 时壁面的突变不会在第一步产生脉冲。
能量平衡
对步长方程的各行求和,得到精确恒等式
其中 P 为热生成、热流和给定温度处反力的总功率,减去对流和辐射。产品输出该恒等式的残差,以及累计能量 \int\rho c_p\,\Delta T\,dV 的独立积分。机器精度量级的残差表明,反力、对流和热源的组装与矩阵一致。
界面:计算步骤中的“稳态 / 瞬态”切换,以及步长、时间、格式和 k(t) 表的字段。
material preset=steel kappa=40 specific_heat=460
thermal surface number 1 temperature=120
solve thermal transient dt=0.1 tend=16 t0=20 theta=0.5 probes="10,0,0;20,0,0"10.3非线性热传导:κ(T) 与辐射测试版
如果模型中存在辐射边界或 \kappa(T) 表,则自动启用非线性模式。用于高温工况:受热零件的冷却、辐射散热、热导率强烈依赖温度的材料。
公式
按 Stefan–Boltzmann 定律由表面向环境辐射:
其中 \sigma 的单位为 W/(m²·K⁴),\varepsilon 为发射率。
\kappa(T) 的关系是由“温度 : 热导率”数据对构成的分段线性表;表之外取端点的值。稳态问题的残差和切线矩阵:
切线是完整的且非对称(由于 \kappa'),因此 Newton–Raphson 方法为二次收敛。在瞬态计算中,\theta 方法的每一步求解非线性方程
其雅可比矩阵为 \tfrac{1}{\Delta t}\mathbf C+\theta\,\mathbf J_{\text{int}}。Newton 步按残差范数进行阻尼;收敛准则为计入舍入水平的相对残差。
用户输入与输出结果
辐射:发射率 \varepsilon\in(0,1] 和以 °C 计的环境温度。\kappa(T) 表是“°C : W/(m·K)”数据对,温度严格递增,\kappa>0。结果还会补充 Newton 迭代次数、残差历程和平衡中的辐射功率。如果方法未收敛,则不给出温度:计算会拒绝,而不是给出近似值。
material preset=steel kappa_table="0:20,400:60" specific_heat=460
thermal surface number 2 radiation=0.85 ambient=20
solve thermal transient dt=5 tend=600 t0=900 theta=0.510.4接触界面的热接触测试版
热接触模拟装配体中两个分离实体之间的热阻:通过界面的热流与界面处的温度跳跃成正比。适用于螺栓连接和压配合连接、垫片、接触垫。力学接触见接触一节;热接触与之无关,也不影响力学。
公式
一对实体中,一个为从属体(slave,命令中的第一个),另一个为主控体(master)。在从属面的高斯点处求出其在主控面上的投影;如果到主控面的距离不超过容差、法向几乎反平行且间隙沿法向,则该点被计为界面。实体的其余面保持绝热。对矩阵的贡献 \mathbf K_c=\sum h_c\,w\,\boldsymbol\varphi\boldsymbol\varphi^T,其中 \boldsymbol\varphi=[N_s;\,-N_m],是对称且半正定的:界面本身既不产生热量,也不带走热量。方法为按从属点的配点法,不使用 mortar 乘子。由于该贡献是线性的,仅靠接触本身并不会启用 Newton 迭代。
用户输入与输出结果
界面传导率 h_c,单位 W/(m²·K),以及以 mm 计的间隙容差(默认取面平均尺寸的四分之一)。结果:通过界面的功率、相连表面的面积、相连点的个数、平均温度跳跃。如果 h_c\le0、在容差范围内找不到界面、或实体通过公共节点粘合,计算将被拒绝:界面既不会被悄悄地绝热,也不会被悄悄地视为理想接触。
contact body1 body2 thermal hc=1000
thermal surface number 5 temperature=100
thermal surface number 32 temperature=0
solve thermal10.5热弹性(单向,静力)测试版
单向热弹性:温度影响应力应变状态,变形对温度没有反向影响。用于在温度场已知或已算出的情况下计算零件的温度应力。
公式
热应变是各向同性的:\boldsymbol\varepsilon_{th}=\alpha\,\Delta T\,\mathbf I,\Delta T=T-T_{\text{ref}},其中 T_{\text{ref}} 为无应力温度。应力由应变的力学部分确定:
实体
对各向同性材料,\mathbb C\,\boldsymbol\varepsilon_{th}=c_0\,(1,1,1,0,0,0)^T,其中
节点力对全部七种实体单元类型进行组装。对于二次四面体,载荷采用比刚度更精确的积分方案(27 个点):被积函数含有形函数梯度与二次 \Delta T 场的乘积。应力由全应变恢复,因此在后处理器中要从中减去球形部分 c_0\,\mathbf I。\Delta T 的来源:用户给定的均匀值,或稳态热计算得到的节点场(耦合热弹性)。
梁和框架
设定均匀的 \Delta T 以及截面各面之间的温差 \Delta T_y、\Delta T_z。截面温度 T(y,z)=T_{\text{ref}}+\Delta T+g_y\,y+g_z\,z,g_y=\Delta T_y/h_y。等效节点力:轴向 N_T=E\,A\,\alpha\,\Delta T,弯曲 M_{T,z}=E\,I_z\,\alpha\,g_y 和 M_{T,y}=E\,I_y\,\alpha\,g_z。同样的量也要从内力中扣除。加热不产生横向力和扭转。
壳
对于处于平面应力状态的各向同性壳,c_0=E\,\alpha\,\Delta T/(1-\nu)(不是 1-2\nu:第三方向不受约束)。对于层合壳(MITC4),热内力和热力矩按层计算:
其中 \bar{\mathbb Q}_k 为该层在单元坐标轴中的折算刚度,\bar{\boldsymbol\alpha}_k=(\alpha_1c^2+\alpha_2s^2,\ \alpha_1s^2+\alpha_2c^2,\ 2(\alpha_1-\alpha_2)\,sc)^T 为按铺层角旋转后该层的膨胀系数(剪切为工程剪应变),z 自参考面起算,弯曲部分的符号由所采用的曲率方向确定。温度沿厚度线性分布:设定中面上的 \Delta T 和“上表面减下表面”的温差。各层的应力按力学应变 \boldsymbol\varepsilon-\bar{\boldsymbol\alpha}_k\,\Delta T(z) 计算。
用户输入
材料的系数 \alpha 和加热:均匀的 \Delta T(DSL 中为 deltaT=),或热计算得到的温度场(仅限实体)。对梁使用 dt、dty、dtz;对壳使用 shell_temperature dt=… gradient=… 或 temperature=… reference=…(无应力温度)。零模式不算作载荷,此时不需要 \alpha;\Delta T 非零而没有 \alpha 时,计算会明确拒绝。
nlgeom)同时使用不受支持。界面:分析类型“热弹性”(\Delta T 和 \alpha 字段)、计算步骤中的“耦合热弹性”(热 → 应力);对于梁和壳,在其面板中设置温度字段。
material preset=steel
fix surface number 1
solve thermoelastic deltaT=8010.6耦合热弹性动力学测试版
瞬态的“温度 → 位移”计算:热场随时间变化,力学响应计入惯性。用于热冲击、快速加热、热弹性波,这些情形下准静态近似是不可接受的。
这里“耦合”的含义
耦合是单向的:温度 T(t) 影响位移 \mathbf u(t),产品计算中没有反向影响(变形产生的加热)。这一名称沿用自“热和力学在同一网格、同一步长中”的提法。对钢材,无量纲的反馈强度
约为 1 %。对快速过程(冲击、超声),该修正可能是显著的,见 Gough–Joule。
公式
热载荷算子 \mathbf G 用与静力分析相同的积分 F_i=\int c_0\,\nabla N_i\,dV 组装一次,在每一步中归结为矩阵与向量的乘法。每步的顺序为“先热、后力学”(Armero–Simo 等温分裂,1992):先由 \theta 热步给出 T_{n+1},再将热载荷 \mathbf f_{th}(T_{n+1}) 代入力学步的右端。对 HHT-α,积分器取 (1+\alpha)\,\mathbf f_{th}(T_{n+1})-\alpha\,\mathbf f_{th}(T_n)。在单向耦合下,格式无条件稳定,其阶数等于热格式与力学格式阶数中较小者。
两种模式:
- 准静态,无惯性:在每个热步求解 \mathbf K_s\,\mathbf u=\mathbf f_{\text{ext}}+\mathbf f_{th};线性问题只分解一次。允许使用 J2 弹塑性材料(仅限桌面端)。
- 动力学:Newmark 或 HHT-α 积分,一个热步对应若干个力学步。
热部分可以使用非线性热传导中的辐射和 \kappa(T)。
用户输入与输出结果
必须设定步长、终止时间和初始温度;此外还有无应力温度、热格式 \theta、力学格式、Rayleigh 阻尼、热载荷和力学载荷的 k(t) 表,以及探针。结果:各帧的温度场和位移场,探针处的 T、\mathbf u、\dot{\mathbf u} 序列,扣除热应变后的应力张量,等效应力,包络线,能量,热平衡。
solve thermoelastic transient mode=dynamic dt=1e-6 tend=2e-4 t0=20 tref=20 scheme=hht alpha=-0.210.7Gough–Joule 效应实验性
热弹性耦合的反向通道“变形 → 温度”:快速压缩时物体升温,拉伸时则降温。该效应作为体积热源进入热方程。
已实现的内容
在绝热加载下,由此得到 \Delta T=-\dfrac{T_{\text{ref}}\,\beta}{\rho c_p}\,\operatorname{tr}\boldsymbol\varepsilon(Kelvin,1853;Biot,1956)。格式带一步滞后:力学步之后组装节点功率,并混入下一个热步的右端。仅在准静态模式下有效;带该效应的动力学会被拒绝。
术语说明。在文献中,“Gough–Joule 效应”指弹性体的熵弹性:拉伸的橡胶会发热,加热时则会收缩。这里实现的是可压缩线弹性体的线性热弹性(压热)Kelvin 效应。与超弹性定律相联系的橡胶熵弹性模型并未实现。
10.8CFD:不可压缩流动(SU2)稳定
CFD 计算流体或气体绕物体或在通道内的稳态流动:速度场和压力场、壁面力、压力损失、流量。计算在桌面应用中由外部求解器 SU2(Stanford University Unstructured,开源代码,LGPL-2.1 许可证)完成;CFD 在浏览器中不可用。
求解的方程
不可压缩 Navier–Stokes 方程(密度和黏度为常数):
在层流模式下 \mu_t=0。在湍流模式下采用 Reynolds 平均方程(RANS),涡黏性 \mu_t 取自 Menter k–\omega SST(1994)或 Spalart–Allmaras(1992)模型。不使用 Euler(无黏)方程和可压缩方程。不求解能量:流动是等温的,没有 Archimedes 浮力。
方法为基于原始四面体对偶网格的顶点中心有限体积法(Economon 等,AIAA J.,2016)。对流通量采用通量差分裂(FDS),按 MUSCL 格式达到二阶精度并采用 Venkatakrishnan 限制器;湍流量采用迎风格式。定常化采用基于伪时间的隐式 Euler,使用自适应 Courant 数,必要时采用几何多重网格。
用户输入与输出结果
介质:空气、水、油或煤油(密度和黏度在材料中设定)。按表面编号设定的边界条件:给定速度的入口(大小、方向、湍流强度)、给定表压的出口、无滑移壁面(可选力监测)、滑移壁面、对称面。未标记的面成为不监测力的无滑移壁面;这类面的清单会输出到警告中。对于湍流计算,壁面附近需要棱柱网格层(y⁺ 约为 1):模型积分到壁面。
停止准则由用户设定:最大迭代次数和容差。当存在监测力的壁面时,收敛由力系数的稳定(Cauchy 准则)确定;对于内部流动,由压力残差的相对下降确定。
国际单位制下的结果:速度场和压力场、涡量、Q 准则、C_p、壁面切应力、y^+、系数 C_d、C_l 和力(在给定参考面积和长度时)、入口与出口之间的压差、质量流量、残差历程。后处理器:切片、流线、等值面、粒子。
与产品其他部分的联系
CFD 使用同一份几何、同一个表面编号日志和同一个视口。计算是单向且孤立的:没有向强度计算传递压力、也没有热耦合(CHT),力和压力需要由您手动传递。
界面:计算步骤中的 CFD 设置、边界条件和“流动”后处理器。
cfd fluid air
cfd set speed=15 turbulence=sst iterations=500
cfd inlet surface number 1
cfd outlet surface number 2
cfd wall surface number 3 monitor=on
solve cfd10.9CFD:瞬态问题与物体运动测试版
当流动不能趋于定常(圆柱后的涡脱落、脉动)或边界在运动(壁面转动、转子、物体的活塞式移动)时,需要瞬态模式。
已实现的内容
物理时间采用二阶双时间步(dual time stepping)积分:在每个物理步内执行内迭代直至收敛。用户设定步长、持续时间、内迭代次数和保存帧的频率。会话保存在磁盘上,计算可以取消并从检查点继续;帧在后处理器中回放。
运动:
- 转动壁面(表面速度按转轴和转速设定);
- 流体区域的旋转坐标系(MRF 方法)——转子的定常平均解;
- 沿单一方向的给定物体平移(线性、简谐、表达式、表格),采用时间一阶的弹性 ALE 方案进行网格变形;壁面速度相对于网格步长受到控制;
- 单自由度转子的给定转动和自由转动(力矩、阻尼)。
运动的结果为位移、速度、力、功率和功,按选定的帧归一化。
cfd set mode=transient dt=0.001 time=0.005 inner=40 output=1
solve cfd10.10空腔声学(Helmholtz 方程)实验性
空气(或充液)空腔的模态分析:固有频率和压力振型。用于评估腔体容积的共振——腔室、风道、车厢。
公式
对简谐过程 e^{i\omega t},压力幅值 p 的 Helmholtz 方程:
壁面上为声学刚性条件 \partial_n p=0(自然边界条件)。有限元离散导出广义特征值问题
对于长度为 L 的封闭刚性管,纵向模态的频率为 f_n=n\,c_0/(2L),包括零频(常压)。零模态在计算中也存在。
实现方式
单元为带一致声学质量的线性四面体。矩阵是稠密的,问题通过对矩阵 \mathbf M_a 做 Cholesky 分解化为标准形式,再用 Jacobi 方法对对称矩阵对角化来求解。这种方法适用于小型空腔(至多几百个节点);对大型网格而言,它太慢且占用内存过多。
用户设定声速 c_0(空气 343 m/s,水 1481 m/s)、密度 \rho_0 和模态数。空腔取为已划分四面体网格的实体。结果:以 Hz 计的频率、各节点上的压力振型,以及视图窗口中驻波 p(\mathbf x)\cos\omega t 的动画。
impedance= 和 fsi= 会被解析并检查数值寻址,但不影响固有频率。振型的归一化是约定的,因此计算后打印的“声压级”没有物理意义;只使用频率和振型。该计算中不构造对声源的响应。如果没有网格,计算会代入内置的试验通道 1 m × 0.1 m × 0.1 m:运行前请确认网格已划分。仅支持四面体组装;对网格尺寸的依赖和频率的收敛性尚未研究。界面:结果步骤中的“振动声学(Helmholtz)”部分。
solve acoustics c0=343 rho0=1.204 modes=5
probe acoustic_f110.11振动声学实验性
振动声学描述振动的结构与空腔中空气的相互作用:结构辐射声音,空腔中的压力又对结构加载。产品中没有把这一计算作为统一的耦合问题;目前只有一些单独的预备件。
代码中现有的内容
- 边界阻抗(Robin 条件)。阻尼矩阵 \mathbf C_a=\dfrac{\rho_0}{Z_a}\int_{\Gamma_z}N^TN\,dA,其中声阻抗 Z_a 以瑞利(Rayl,Pa·s/m)计;对空气,波阻抗 \rho_0c_0\approx413 瑞利。
- 结构与空腔的耦合矩阵 \mathbf C_{fsi}=\int_{\Gamma}\mathbf N_u^T\,\mathbf n\,N_p\,dA,作用在公共边界上。
- 空腔对声源的频率响应:\left(\mathbf K_a-\omega^2\mathbf M_a+i\omega\,\mathbf C_a\right)\mathbf p=\mathbf q,在频率网格上求解,并换算为声压级 \text{SPL}=20\log_{10}(p_{\text{rms}}/p_{\text{ref}}),其中 p_{\text{ref}}=20 μPa(空气)和 1 μPa(水)。
这些是带有单元测试的独立函数。由它们并未组装出“结构–空腔”耦合系统,频率响应和阻抗矩阵也没有从界面和 DSL 接入计算。只有空腔声学的刚性壁面模态计算可用。
11求解器:直接法、迭代法与特征值求解器
↑ 返回目录离散化之后,任何线性问题都归结为一个带稀疏矩阵的代数方程组。本章说明这些方程组如何求解:采用哪些方法,为什么这些方法对有限元矩阵是正确的,产品如何校核结果,以及在哪些情况下如实拒绝求解。本章描述方法及其适用边界,内部参数的选取不在本章范围内。
实现中使用开源库:MFEM(稀疏矩阵与共轭梯度法)、Eigen(稀疏分解与小型稠密问题)、AMGCL(代数多重网格预条件器,仅用于桌面应用)。在 macOS 上,直接分解也可由 Apple Accelerate 完成。内核的全部运算均采用双精度(IEEE 754 binary64)。求解器边界处采用国际单位制:米、牛顿、帕斯卡、千克。用户看到的结果以其自身的单位显示,换算只在一处完成。
桌面应用的原生路径被视为基准。浏览器版本使用相同的公式,但为单线程,受限于标签页内存,且不含多重网格预条件器。差异在正文中另行指明。
11.1有限元方程组:稀疏性、正定性与约束稳定
静力问题在组装之后具有如下形式
刚度矩阵 \mathbf{K} 具有三条性质,方法的选择以此为依据。它是稀疏的:节点只与共享单元的节点相关联,每行有几十个非零元素,且非零元素所占比例随模型增大而下降。它是对称的,因为双线性型是对称的。它是半正定的,而在刚体位移被约束之后是正定的:对许可子空间内的所有 \mathbf{v} \neq \mathbf{0},有 \mathbf{v}^{\mathsf T}\mathbf{K}\mathbf{v} > 0。对于实体,网格加密时条件数按 O(h^{-2}) 增长。薄壳和杆件的条件数增长得更快:大致随膜刚度与弯曲刚度之比的平方增长,即 (L/t)^2。
统一的装配器把梁、壳和实体单元组装为一个方程组,每个节点有六个自由度(三个位移、三个转角)。没有刚度的自由度,例如仅被实体单元包围的节点的转角,会被自动消去。
边界条件与约束
固定约束、线性约束方程、刚性区域(RBE2)以及可精确消去的粘接界面,均通过消去从属自由度处理,而不是通过拉格朗日乘子:
矩阵 \mathbf{T} 把独立自由度 \mathbf{u}_r 与完整向量联系起来,\mathbf{u}_0 承载约束的非齐次部分。只要 \mathbf{K} 在许可子空间上是对称正定的,缩减矩阵 \mathbf{K}_r = \mathbf{T}^{\mathsf T}\mathbf{K}\mathbf{T} 就仍然是对称正定的。不会出现带零块的鞍点系统。因此,线性静力分析只需对称正定矩阵的方法(Cholesky、共轭梯度),而不需要不定矩阵的方法(MINRES、带选主元的分解)。带罚函数的接触会向 \mathbf{K} 中添加刚度,同样保持正定性,但会使条件数变差。
缩放
求解之前,缩减后的方程组按对角线进行对称缩放:
这是一个等价变换:结果不变,但位移与转角之间、约束行与弹性行之间的量级差异得以消除。对角线非正的行不做缩放。
11.2矩阵存储与重排序稳定
矩阵以稀疏行压缩格式 CSR 存储(行偏移、列索引和数值三个数组)。相邻单元的重复贡献在组装时求和。缩减矩阵通过三重乘积 \mathbf{T}^{\mathsf T}\mathbf{K}\mathbf{T} 以同一格式得到。对于直接分解,矩阵被转换为 Eigen 格式,必要时只取下三角。
单元局部矩阵并行计算,但按单元编号的顺序依次累加到全局矩阵中。因此组装得到的矩阵与线程数无关。
因子 \mathbf{L} 的非零元素个数取决于未知量的编号顺序。对称分解采用近似最小度排序(AMD):Amestoy P., Davis T., Duff I., An approximate minimum degree ordering algorithm, SIAM J. Matrix Anal. Appl., 1996。Apple Accelerate 和 Eigen 的 SimplicialLDLT 都使用该排序。对于非对称和复数方程组,稀疏 LU 采用按列的 COLAMD 排序。嵌套剖分排序(METIS)和逆 Cuthill–McKee 排序(RCM)在求解器中未采用。
对于三维网格,在良好排序下,因子的内存大致按 O(n^{4/3}) 增长,分解的运算量大致按 O(n^{2}) 增长(George A.,嵌套剖分)。Eigen SimplicialLDLT 在实体模型上的实测指数略高,约为 n^{2.3}。计算界面按自由度数的经验幂律给出直接求解器的内存预测。
11.3稀疏直接求解器稳定
对于对称正定矩阵,采用 Cholesky 分解或带预先置换 \mathbf{P} 的 \mathbf{L}\mathbf{D}\mathbf{L}^{\mathsf T} 分解:
在正定矩阵上,该分解无需选主元即可保持稳定(Golub G., Van Loan C., Matrix Computations)。因此置换只依据填充选取,而不依据元素大小。该方法在舍入误差范围内是精确的。条件数影响答案的精度,但不影响能否得到答案,而迭代法则并非如此。分解失败意味着失去了正定性或内存不足。
在 macOS 上,分解由 Apple Accelerate 的稀疏求解器完成(Cholesky 或 \mathbf{L}\mathbf{D}\mathbf{L}^{\mathsf T}),它是多线程且向量化的。在 Windows、Linux 和浏览器中使用 Eigen SimplicialLDLT,它是单线程的,明显更慢。在产品的模型上,直接法与迭代法给出一致的位移:相对偏差约为 10^{-9}(见下表)。若分解失败,则启用备用路径,只有当它们全部用尽时,计算才返回未收敛标志。
分解只做一次,并可复用于多个右端项:用于特征值问题、按频率网格的谐响应分析,以及步长恒定的隐式瞬态计算。
对于可能不定的矩阵,例如带预应力模态分析中的 \mathbf{K} + \mathbf{K}_{\sigma},不按大小置换的 \mathbf{L}\mathbf{D}\mathbf{L}^{\mathsf T} 分解不能保证稳定性,其本身也无法区分正定与不定。因此分解之后会检查对角阵 \mathbf{D} 的符号。若矩阵不再正定(载荷高于临界值),计算返回未收敛标志,而不是一个看似合理的频率。
对于非对称方程组(某些非线性问题的切线矩阵)和复数方程组,采用 COLAMD 排序的稀疏 LU,见谐响应分析和非线性计算。
测量
带固定端和压力的壳,原生路径,Apple M5,Apple Accelerate(2026年10月13日测量):
| 自由度数 | 时间,s | 内存(RSS),GB |
|---|---|---|
| 13 824 | 0.07 | — |
| 144 150 | 0.8 | 0.9 |
| 584 064 | 6.0 | 3.2 |
| 1 000 000 | 7.4 | 4.3 |
| 2 100 000 | 12.8 | 8.2 |
对于实体,由于填充更多,直接法的代价更高。在具有 8.9 万个活动自由度的 Hex20 模型上,Accelerate 在基准平台上用 35 s 求解,而 Linux x86-64 试验台上的单线程 Eigen(第三个平台,非基准,仅供参考)用 734 s。因此在 Windows 和 Linux 上,对于超过中等规模的实体模型,产品选择迭代求解器,见求解器选择。
11.4小规模系统的稠密求解器稳定
对于小型框架和壳模型,以及用于基准校核,采用稠密求解。算法如下:先检查矩阵的对称性,然后就地做 Cholesky 分解。对于正定矩阵,Cholesky 无需选主元即稳定,因此不需要缩放和置换。如果矩阵不对称或不正定(机构、失稳),分解回退为按列选主元的 LU。对称性要显式检查,因为 Cholesky 只读取一个三角,对非对称矩阵会悄悄给出错误答案。对于奇异矩阵,结果为非有限值,调用方据此识别出机构。
稠密求解需要 O(n^2) 的内存和 O(n^3) 的时间,因此只适用于小模型。在原生路径上,超过较小规模的壳和框架模型会自动切换到稀疏分解,在浏览器中则受标签页内存决定的规模上限限制。稠密与稀疏路径给出相同的位移:在壳模型上的相对偏差约为 10^{-11}。
11.5迭代求解器:带代数多重网格预条件器的 CG测试版
带预条件器 \mathbf{M} 的共轭梯度法沿一系列共轭方向的步进求解 \tilde{\mathbf{K}}\tilde{\mathbf{u}} = \tilde{\mathbf{f}}。当矩阵本身和预条件器都是对称正定时,该方法是正确的。收敛速度由预条件后矩阵的条件数决定:迭代次数按 \sqrt{\kappa(\mathbf{M}^{-1}\tilde{\mathbf{K}})} 增长(Saad Y., Iterative Methods for Sparse Linear Systems, 2003, 第6章)。
在桌面应用中,预条件器是来自 AMGCL 库的平滑聚合代数多重网格(AMG)(Vaněk P., Mandel J., Brezina M., Computing 56, 1996;Demidov D., AMGCL, Lobachevskii J. Math., 2019)。相互关联的节点组被合并为聚合体,据此构造粗网格层,每一层执行光滑,最粗层采用直接求解。一次 V 循环用作预条件器。在方程组为分块结构的情形,聚合会考虑节点的三个自由度。光滑器是对称的,因此 V 循环按构造即为对称,这正是共轭梯度法所要求的。AMG 的特点是:网格加密时迭代次数几乎不增长。在 Linux x86-64 试验台上(仅供参考),对于具有 14、105、202 和 346 千个活动自由度的 Hex8,AMG-CG 分别在 32、43、48 和 52 次迭代内收敛。单独的 Jacobi 或 Gauss–Seidel 不具备这一性质。
停止准则是相对残差。对于 AMG 路径,它是残差的欧几里得范数与右端项范数之比:\lVert \mathbf{r}_k \rVert_2 / \lVert \tilde{\mathbf{f}} \rVert_2 \le \varepsilon。对于其余各级(MFEM 的共轭梯度法),它是预条件残差的范数与初始值之比。容差 \varepsilon 和最大迭代次数由用户在“计算”步骤中设定;默认值为 \varepsilon = 10^{-6} 和 5000 次迭代。残差的变化过程显示在计算窗口中,计算可以取消。
防止错误运行的保护。 产品在每次迭代中检查预条件器:标量积 (\mathbf{M}^{-1}\mathbf{r}, \mathbf{r}) 必须保持为正。否则共轭梯度法停止并指明原因,而不是沿着无意义的方向继续迭代。残差发散同样会中断 AMG 级。共轭梯度法残差的欧几里得范数是非单调的,在实体上可能暂时增大然后才收敛,因此只有在明确发散时才会中断。当某一级失败时,计算转入备用路径。如果没有任何一级收敛,结果被标记为未收敛。
与直接法在基准平台上的对比(Apple M5,2 个线程,2026年10月21日在负载较高的机器上测量,时间仅供参考;同一模型由两条路径分别计算):
| 模型 | 活动自由度数 | AMG-CG:迭代次数,s | 直接法(Accelerate),s | 位移偏差 |
|---|---|---|---|---|
| Hex20 | 36 432 | 179, 13.3 | 6.2 | 10^{-9} |
| Hex20 | 89 280 | 218, 40.3 | 35.4 | 4 \cdot 10^{-10} |
| Tet10 | 45 000 | 78, 6.2 | 3.9 | 2 \cdot 10^{-9} |
| Tet10 | 104 544 | 100, 10.2 | 18.1 | 3 \cdot 10^{-9} |
| Hex8 | 147 852 | 46, 8.7 | 91.3 | 5 \cdot 10^{-10} |
迭代路径在时间上的优势随模型规模增大而增长,并在直接法内存不足时成为决定性因素。
浏览器版本中没有 AMGCL。那里的迭代路径使用共轭梯度法配较简单的预条件器(小型方程组用不完全 Cholesky,大型方程组用 Gauss–Seidel)。它们在细网格上收敛较慢,因此浏览器的迭代次数不能照搬到桌面端。
11.6结果校核:残差、收敛标志、拒绝而非替代测试版
任何计算都会返回收敛标志。仅当达到的残差不超过容差且结果为有限值时,才会置位该标志。若无此标志,界面显示警告“未收敛——下列数值可能不可靠”,脚本以错误“solver did not converge”结束。结果不会被当作成功的结果给出。
内核遵循的原则:
- 拒绝而非悄悄替代。 如果所选方法不适用或内存放不下,计算返回带有原因和自由度数的错误,而不是悄悄地用另一种方式、以另一种精度计算。求解器设置中的非法值在输入时即被拒绝。对于薄壳,规模上限取决于机器内存(会考虑“设置 → 计算”中的限额);超过该上限,计算拒绝执行。
- 每一步都校核。 共轭梯度法检查预条件器的正定性,AMG 检查残差增长。谐响应计算在每个频率上检查残差。非线性求解器能识别奇异切线并给出诊断。
- 特征值问题。 对于原生路径上的框架和壳,会校核每个所请求特征对的相对残差。对于实体,停止准则是里兹值的稳定,该路径上特征对的残差不输出到产品中。
- 平衡校核。 支承反力和积分量可通过后处理命令查询;对于框架模型,可使用
frame probe equilibrium,即力和力矩上的相对残差 \lVert \sum \mathbf{R} + \sum \mathbf{F} \rVert。
精度与可复现性。 内核的所有路径均采用双精度运算。刚度矩阵与线程数无关。不声称逐位可复现:多线程求和与库分解可能产生舍入水平的差异。不同平台之间没有逐位一致,也不预期有:它们使用不同的库、不同的运算顺序,原生路径上还可能出现融合乘加运算。早期对悬臂梁的浏览器解与原生解的比对,相对偏差约为 10^{-9}。
11.7无矩阵(算子)路径测试版
在无矩阵方法中,不组装全局矩阵:求解器只知道 \mathbf{K}\mathbf{v} 对向量的作用。对于实体的简单线性静力分析(面约束和面载荷,无刚性区域和约束),产品使用 MFEM 的算子组装(部分组装,partial assembly),单元为一阶和二阶,采用配 Jacobi(对角)预条件器的共轭梯度法。该算子在物理上与已组装矩阵相同:早期对悬臂梁的部分组装与完整组装的比对,偏差约为 10^{-11}。
几何多重网格法(MFEM 的 h-多重网格,配切比雪夫光滑)作为研究试验台进行过检验:问题规模增大 225 倍(189 至 42 483 个自由度)时,迭代次数仅增大了 1.9 倍(28 至 52),即收敛与网格无关。该方法未纳入产品的计算路径:它需要嵌套的网格层次,而产品构造的是非结构网格。
11.8特征值问题:模态分析与屈曲稳定
模态分析求解广义问题
失稳:(\mathbf{K}_r + \lambda\,\mathbf{K}_{\sigma})\boldsymbol{\varphi} = \mathbf{0},其中 \mathbf{K}_{\sigma} 是由预应力状态产生的几何刚度,而 \lambda_{\text{cr}} 是最小的正特征值(临界载荷系数)。提法和假设在线性分析类型一章中说明。这里说明求解方式。
分块逆迭代(子空间)
对于实体和混合模型,采用带 Rayleigh–Ritz 过程的子空间迭代(Bathe K.-J., Finite Element Procedures, 2014, 第11章)。迭代步为:
块中包含的向量比所请求的振型更多;p \times p 的小型稠密问题用标准方法(Eigen)求解。当所请求的里兹值在相邻两步之间的相对变化小到可以忽略时,迭代停止。矩阵 \mathbf{K}_r 只分解一次,此后每个 \mathbf{K}_r^{-1}\mathbf{b} 就是一对三角求解。在 macOS 上,对中等规模的模型采用 Accelerate 分解,其他平台采用 Eigen SimplicialLDLT。对于非常大的模型,\mathbf{K}_r^{-1} 通过带内部容差的 AMG-CG 近似施加;近似逆需要谨慎(见局限)。质量矩阵上添加了一个小的对角附加项(“下限”),以免无质量自由度破坏小矩阵 \mathbf{M}_p 的 Cholesky 分解;由它产生的虚假高阶模态会被滤除。
屈曲问题使用同一子空间,但形式不同。矩阵 -\mathbf{K}_{\sigma} 是变号且低秩的,因此谱按常数 c 平移,向量在 \mathbf{K}_r 的标量积下正交归一化。倒数 \theta = 1/\lambda 由平移后的值重新换算得到。
框架与壳:LOBPCG
对于原生路径上的框架和壳,采用分块方法 LOBPCG(Knyazev A., SIAM J. Sci. Comput., 2001),其精确预条件器为单次 Cholesky 分解得到的 \mathbf{K}_r^{-1}。本质上它是带局部最优方向的分块 Lanczos。它使用一致质量矩阵,对屈曲问题不需要平移谱。支承载荷下的静力分析用同一分解求解,因此其误差不进入临界系数。停止准则是每一对所请求特征对的相对残差。与稠密路径在相同模型上的比对,偏差不超过 10^{-7}。对于小型方程组仍保留稠密路径:广义问题通过 \mathbf{K}_r 的 Cholesky 分解化为标准问题,并用 Jacobi 方法求解。它是基准方法,但时间按 n^3 增长。
自由体与机构
对于未约束的模型,矩阵 \mathbf{K}_r 是奇异的(六个刚体模态)。此时对谱做平移:以小的 \tau > 0 求解 (\mathbf{K}_r + \tau\,\mathbf{M}_r)\boldsymbol{\varphi} = (\lambda + \tau)\,\mathbf{M}_r\boldsymbol{\varphi},然后减去平移量。刚体模态保持为零频率,并与弹性模态分开。对于框架,命令 frame solve modal free=on 显式剔除六个刚体运动振型。如果弹性振型被刚体模态“淹没”(振型少于所请求的数量,且第一个频率接近零),产品拒绝该结果并指明原因:模型约束不足。
solve modal nmodes=6
solve buckling nmodes=411.9谐响应分析的复数方程组测试版
稳态谐响应 \mathbf{u}(t) = \operatorname{Re}\left(\hat{\mathbf{u}}\,e^{i\omega t}\right) 在瑞利阻尼下,对每个频率给出一个复数方程组
该矩阵是复对称的,但有阻尼时不是厄米的,因此 Cholesky 方法不适用。采用稀疏复数 LU(Eigen SparseLU,COLAMD 排序)。结构的符号分析对整个频率网格只做一次,数值分解则在每个频率上进行。约束和缩减与静力分析相同,方程组按对角线缩放。求解之后,在每个频率上计算相对残差;若超过容差,计算停止并指明频率。奇异(无阻尼共振)同样给出带频率的错误,而不是虚假的答案。在脚本中可选择振型分解法(modal)或直接法(direct)。
solve harmonic fmin=20 fmax=400 npoints=60 method=direct rayleigh a=1.5 b=0.00000211.10非线性计算中的线性代数稳定
非线性问题(几何非线性和材料非线性、接触、弧长法)通过牛顿迭代求解。每次迭代求解一个带切线矩阵的线性方程组 \mathbf{K}_T(\mathbf{u})\,\Delta\mathbf{u} = -\mathbf{r}(\mathbf{u})。切线矩阵由稀疏直接分解来分解。只要稀疏结构不变,符号分析和排序就在各次迭代之间复用;结构变化(例如活动接触的改变)会触发新的分析。牛顿收敛准则、载荷步和弧长法在非线性计算与动力学一章中说明。
11.11并行性与平台测试版
桌面应用使用 OpenMP:单元矩阵的并行组装和多线程 AMG 预条件器。Apple Accelerate 的直接求解器自身即为多线程。默认线程数通过测量选定,用户可在“设置 → 计算”(“求解器核心数”)中更改。扩展性受内存带宽而非核心数限制:在 21.5 万自由度的模型上(Apple M5),两个核心带来 1.2–1.5 倍的加速,六个核心约为 1.8 倍,十个核心则不比六个更快。该设置对经由 AMG 的路径起作用;部分原生计算是单线程的。
浏览器版本是单线程的,只使用标签页的内存(32 位 WebAssembly 模块不超过 4 GB),且不含 AMG。在大模型上,浏览器远在原生路径的极限之前就遇到内存和时间的限制。浏览器中的求解器模式和规模阈值不可配置。Eigen 直接分解在那里工作到内存阈值,超过之后采用迭代 CG。
验证的基准数值是原生的。在同一几何上,各平台可能出现分歧:例如浏览器与桌面的网格划分器构造出不同的网格。比较数值时,请留意平台标注。
11.12求解器选择:自动与手动测试版
用户在两个界面上控制选择。
“计算”步骤,求解器面板。 类型(直接或迭代)、“优先直接求解器”复选框、直接法的内存限额(MB)。对于迭代模式,可设置容差和最大迭代次数。面板显示直接法的内存预测和所选路径。如果预测超出限额,求解器切换为迭代并显示通知。存在活动接触时,类型固定为迭代 CG。
“设置 → 计算”(仅桌面端):求解器模式“自动”/“直接”/“迭代”、直接法的规模阈值(以自由度计)、线程数、内存限额。“自动”模式在阈值以内选择直接法,超过则选择迭代法。阈值留空表示自动选择:对于实体,阈值由计算界面的内存限额推算。在 Windows 和 Linux 上,实体模型的自动阈值较低,因为那里直接法较慢(见直接求解器)。对于壳和框架,直接法在调用期间自动提升,因为迭代方法在它们上不可靠。
在脚本中没有专门选择线性求解器的命令:solve 使用文档的设置。这些设置可通过脚本的编程接口(cae.solver、cae.compute)访问。
11.13原型与未实现部分:GPU、云端、无矩阵 P2实验性
这些模块存在于代码中,但没有接入产品的计算。列出它们是为了使能力边界清晰。
- WebGPU 上用于 Tet10 和 Hex20 的无矩阵 PCG。 该模块逐单元计算 \mathbf{y}_e = \mathbf{K}_e\mathbf{u}_e,采用图着色,以对角线和两层 p-多重网格作预条件。它有测试覆盖,但没有任何计算调用它。求解器面板上的“Matrix-Free P2 GPU”复选框保存在工程中,不改变任何行为。
- WebGPU CG 求解器。 该模块在 GPU 上以单精度求解稀疏方程组,并带有 CPU 备用变体;开发测试确认,计算不会调用它。产品内核以双精度计算。
- 混合云计算。 路由模块和网格传输客户端决定是否把计算交给远程服务器(依据模型规模、分析类型、“Auto / Force Local / Force Cloud”设置)。服务器端未接入计算,模式的选择不改变计算。在当前版本中,计算始终在本地执行。
- 用于 P2 四面体的带 IC(0) 的 LOBPCG。 稀疏模态分析的研究模块;未纳入主路径。
- 几何多重网格法(GMG)。 存在于测试试验台中(见上文),计算中不使用。
12结果、后处理与强度评估
↑ 返回目录计算完成后,求解器给出位移(梁和壳还有转角)。其余一切——应力、应变、反力、安全裕度、网格误差估计——都由后处理器据此构造。本章说明具体计算了什么、在哪些坐标轴和单位下、后处理器在何处做了简化,以及哪些量只是估计而非严格计算的结果。
全章的约定:
- 张量按 Voigt 顺序 [xx,\ yy,\ zz,\ xy,\ yz,\ zx] 书写;拉伸为正;
- 对于应力,剪切分量为张量分量;对于应变,\gamma_{ij} = 2\,\varepsilon_{ij}(工程剪应变);
- 线弹性计算的后处理器依据位移和单元材料工作:\boldsymbol{\varepsilon} = \mathbf{B}\,\mathbf{u}_e,\boldsymbol{\sigma} = \mathbf{C}\,\boldsymbol{\varepsilon},其中 \mathbf{B} 和 \mathbf{C} 与单元刚度矩阵中的相同;
- 在非线性计算中,各场(柯西应力、塑性应变、反力)由非线性内核给出,不再通过位移的线性重构重新计算。
12.1结果场与单位稳定
一次计算的结果是一组节点场。它们可以在模型上着色、用探针读取、输出到报告和文件。主要的组别:
| 组别 | 场 | 量纲 |
|---|---|---|
| 位移 | u_x, u_y, u_z,模 \lvert\mathbf{u}\rvert | 长度 |
| 转角(梁、壳) | \theta_x, \theta_y, \theta_z | rad |
| 应力 | \sigma_{xx}, \sigma_{yy}, \sigma_{zz}, \sigma_{xy}, \sigma_{yz}, \sigma_{zx},Mises 等效应力,\sigma_1,\sigma_3 | 压强 |
| 应变 | \varepsilon_{xx}, \varepsilon_{yy}, \varepsilon_{zz}, \gamma_{xy}, \gamma_{yz}, \gamma_{zx},等效应变,塑性应变 | 无量纲 |
| 安全裕度 | 安全系数或利用率(按所选准则) | 无量纲 |
| 反力 | 支承节点处的反力模 | 力 |
| 接触 | 压强、状态、切向力 | 压强、代码、力 |
应力和应变的分量不仅可以在全局坐标轴下显示,也可以在用户坐标系(直角坐标或柱坐标)下显示:张量在每个节点按公式 T'_{ij} = \mathbf{v}_i^{\mathsf T}\,\mathbf{T}\,\mathbf{v}_j 换算,其中 \mathbf{v}_i 是该点处坐标系的单位矢量。不变量(Mises、\sigma_1、\sigma_3)与坐标系的选择无关。
单位
求解器边界处采用国际单位制(m、N、Pa、kg),模型几何以毫米存储。结果场以流水线自然得到它们时所用的单位存储:
- 应力——以帕斯卡计;
- 位移——以模型单位(mm)计,使变形图可直接与原始几何叠加而无需换算;
- 反力按模型坐标计算,因此显示之前换算为牛顿;
- 应变和安全系数是无量纲的。
显示采用状态栏中选定的单位制:国际单位制、“公制工程”(mm、N、MPa)或英制(in、lbf、psi)。一张表为图例、探针、按数值过滤、手动色标范围和报告换算数值,因此色标上的标注与数字始终一致。在 DSL 中,除非量的描述另有说明,量以国际单位制返回。在 VTK 文件中,单位包含在场名中(displacement_mm、vonMises_Pa、reactionMag_N)——ParaView 不识别单位。
12.2应力向节点的恢复稳定
有限元给出的是单元内部的应力,而着色和探针使用的是节点值。“单元 → 节点”的转换是一个单独的步骤,有其自身的误差。
计算内容
对于线弹性计算,单元内一点的应力为 \boldsymbol{\sigma} = \mathbf{C}\,\mathbf{B}(\mathbf{x})\,\mathbf{u}_e,其中对各向同性材料
计算点取决于单元类型:
- TET4——应变为常数,每个单元一个应力;
- TET10——在边为直边的单元内部,应力线性变化;它依据单元自身形函数的梯度,在单元的十个节点上计算;
- HEX8、HEX20、HEX27、棱柱、金字塔——单元中心(形心)处一个值。
节点取包含它的各单元的算术平均。被平均的是张量分量而非等效量:Mises、\sigma_1 和 \sigma_3 是由平均后的张量再计算的,因为主应力非线性地依赖于各分量。权重按单元个数,不按体积。在 TET4/TET10 混合网格(二次单元区域)中,每个单元在自己的基下计算,节点按自己的相邻单元取平均,场在节点处保持单值。
在实体的非线性计算中,柯西应力取自单元的高斯点,在初始构型下按单元体积平均,然后节点按相邻单元以该体积为权重平均。
在热弹性模式下,从正应力分量中减去热部分 \sigma^{\text{th}} = E\,\alpha\,\Delta T/(1-2\nu),因此显示的应力是机械应力。
在结果面板中,可以在“节点”(平均)场与“逐单元”场之间切换。逐单元场呈阶梯状,但如实显示单元之间的跳变;两种模式之差是对网格解析梯度程度的粗略估计(更精确的估计见误差指示器)。
需要了解的事项
材料与物体的边界。 节点场是单值的,因此在两种材料(或两个相连物体)的边界上,平均会抹平具有不同 E 的材料之间应力的物理跳变。边界上的节点值是两个不同量的平均,而不是“左侧”或“右侧”的值。对于跳变显著的位置,请查看逐单元模式或单独的区域。正因如此,多材料模型不生成安全裕度图:边界节点处的许用应力不能归属于任何一种材料。相反,误差指示器是按材料分别恢复场的。
边界附近的峰值。 单元中心的值会在粗网格上低估峰值:形心位于单元深处,而不在纤维上。在悬臂的纯弯曲中,对 TET10 网格(高度方向四层单元),节点计算在最外纤维上的误差为 0.34 %,而同一计算的形心值误差为 14–18 %(开发时的测量)。
梁在节点处不做平均。 框架的一个节点上汇集着内力各不相同的杆件,平均在提法上就是错误的。
12.3等效应力与等效应变稳定
由应力张量计算出便于与材料极限比较的标量。
Mises 等效应力(畸变能):
主应力 \sigma_1 \ge \sigma_2 \ge \sigma_3 是 3\times3 对称矩阵的特征值。它们用 Smith 三角公式以闭式求得:设 q = \operatorname{tr}\boldsymbol{\sigma}/3,p = \sqrt{\lVert \boldsymbol{\sigma} - q\mathbf{I}\rVert_F^2/6},\mathbf{B} = (\boldsymbol{\sigma} - q\mathbf{I})/p,\varphi = \tfrac13\arccos\!\left(\det\mathbf{B}/2\right),则
对于球张量(p = 0),三者均等于 q。模型上输出的场是 \sigma_1(最大主应力)和 \sigma_3(最小主应力);\sigma_2 可在场计算器中获得。
Tresca 应力强度——极端主应力之差:
它用于强度图(Tresca 准则)和 ASME 的应力线性化。
等效应变。 对于偏量为 \mathbf{e} = \boldsymbol{\varepsilon} - \tfrac13\operatorname{tr}\boldsymbol{\varepsilon}\,\mathbf{I} 的应变张量 \boldsymbol{\varepsilon},“等效应变”场等于偏量的范数:
其中 \varepsilon_{xy} = \gamma_{xy}/2,依此类推。这不是按不可压缩性归一化的“塑性”等效应变(\sqrt{2/3}\,\lVert\mathbf{e}\rVert):在不可压缩材料的单轴拉伸中,所显示的值是轴向应变的 \sqrt{3/2}\approx 1.22 倍。累积塑性应变 \bar\varepsilon^{p} 由非线性计算的材料模型作为单独的场输出。
12.4强度准则与安全系数测试版
强度图是对已算出的节点应力所做的后处理;更换准则或极限不需要重新计算。对每个节点计算“利用率” D,安全系数 n = 1/D。若 D = 0,则裕度以显示的上限为限。
| 准则 | 利用率 D | 所需的材料性能 |
|---|---|---|
| Mises | \sigma_{\text{vm}}/\sigma_y | 屈服极限 \sigma_y |
| Tresca | (\sigma_1-\sigma_3)/\sigma_y | \sigma_y |
| Rankine | \max\!\left(\sigma_1/\sigma_t,\ -\sigma_3/\sigma_c\right) | 拉伸极限 \sigma_t 与压缩极限 \sigma_c |
| Coulomb–Mohr | \sigma_1/\sigma_t - \sigma_3/\sigma_c(当 \sigma_1\ge0\ge\sigma_3) | \sigma_t、\sigma_c |
| Saint-Venant | (\sigma_1 - \nu\,\sigma_3)/\sigma_y | \sigma_y(或 \sigma_t)、\nu |
| Drucker–Prager | \left[\sigma_{\text{vm}} + \beta(\sigma_1+\sigma_3)\right]/\sigma_{\text{lim}} | \sigma_t、\sigma_c |
| 疲劳:Goodman、Soderberg、Gerber | 见下 | 疲劳极限、\sigma_u 或 \sigma_y |
对于 Drucker–Prager,\beta = (\sigma_c - \sigma_t)/(\sigma_c + \sigma_t),\sigma_{\text{lim}} = 2\sigma_t\sigma_c/(\sigma_c + \sigma_t);常数的选取使该准则在单轴拉伸和压缩达到极限时恰好给出 D=1。
图中的三种疲劳变体是对脉动循环(从零开始)的简化估计(幅值等于平均值 \sigma_{\text{vm}}/2),疲劳极限为 \sigma_e:
对于任意的加载循环,请使用按 S-N 曲线的疲劳计算。
如果所选准则缺少某项性能,面板会指出缺少的性能,而不是按默认值生成图。
自定义的强度条件可在场计算器中设定为“裕度”场 K = [\sigma]/f(\sigma)。
12.5壳的结果稳定
对于壳(带膜部分的 MITC4 四边形和 CST+DKT 三角形),应力在沿厚度的纤维上输出。在单元中心计算膜部分和弯曲部分:
其中 \boldsymbol{\kappa} 为曲率,m_{\alpha\beta} 为单位长度上的弯矩,\sigma^m 为平面应力状态的膜应力(\sigma_{zz} \approx 0)。符号“+”为上纤维(沿单元法向),“−”为下纤维。纤维上的等效应力是平面的:
在结果面板中选择纤维:上纤维、下纤维或模值较大者。分量在单元局部坐标系中计算。节点平均之前,平面张量被旋转到全局坐标轴(\boldsymbol{\sigma}_{\text{glob}} = \mathbf{R}^{\mathsf T}\boldsymbol{\sigma}_{\text{loc}}\mathbf{R}),否则在曲壳上的平均会把不同基下的分量混在一起;上、下纤维分别平均。
对于层合壳,应力按层恢复:在每层的三个点(底、中、顶),依据广义应变 (\boldsymbol{\varepsilon}^0, \boldsymbol{\kappa}) 和该层的刚度;横向剪应力 \tau_{13}、\tau_{23} 为单独的场。广义应变通过逐片拟合(SPR)传递到节点,不会跨越不同截面的接缝或折角做平滑。
12.6梁的结果测试版
对每个梁单元,后处理器依据节点位移恢复两端的内力:\mathbf{f} = \mathbf{k}_{\text{loc}}\,\mathbf{T}\,\mathbf{u}_e,其中 \mathbf{T} 是到局部坐标轴的旋转。输出轴力 N、剪力 Q_y、Q_z、扭矩 T 和弯矩 M_y、M_z。符号:N>0 为拉伸,T>0 沿从第一个节点指向第二个节点的轴按右手定则。如果单元上作用有分布载荷,则端部内力要按等效载荷的贡献修正(\mathbf{f}_{\text{int}} = \mathbf{f}_{\text{solver}} - \mathbf{F})。
内力图显示单元端点的值,并以线段相连;在两个单元交汇的节点处,取两个端点值的平均。因此集中载荷下剪力的跳变在图上被抹平:在跳变点处,请查看单元端点的值。
截面上的应力有两种计算方式。
按库存特性估计(用于汇总和查找最不利截面):\sigma = N/A \pm \lvert M_y\rvert/W_z \pm \lvert M_z\rvert/W_y——模值之和,即截面角点处的应力。对于圆形和管形截面,这是保守估计:两个平面内弯曲最大的点并不重合。
沿截面的分布(“截面”面板)——在截面点网格的节点上:
其中被截取部分的静矩 Q 和宽度 b 在截面网格上数值计算(茹拉夫斯基公式)。扭转剪应力:圆形和管形——\tau = T r/J;矩形——普朗特应力函数的近似;闭口箱形——Bredt 公式 \tau = T/(2A_m t);薄壁开口型材(工字形、T 形、槽形、角钢)——沿板厚的线性规律。等效应力:\sigma_{\text{vm}} = \sqrt{\sigma_{xx}^2 + 3\tau^2},其中 \tau = \sqrt{\tau_{xy}^2 + \tau_{xz}^2}。
12.7材料局部轴向的应力测试版
对于正交各向异性实体(纤维复合材料、木材、轧材),胡克定律写在材料轴 1,2,3 下,而同一坐标轴下的应力比全局轴下的更重要:据此校核沿纤维方向和垂直于纤维方向的强度。轴的取向可以按表面、按直角、柱或球坐标系为物体设定,外加面内转角。
正交各向异性材料的刚度矩阵(九个独立常数 E_i、\nu_{ij}、G_{ij})通过 Bond 变换转换到全局轴,应变通过全局轴下的 \mathbf{B}\mathbf{u} 计算,而应力则转换到材料轴:\boldsymbol{\sigma}_{\text{loc}} = \mathbf{T}_\sigma\,\boldsymbol{\sigma}_{\text{glob}},其中 \mathbf{T}_\sigma 是应力的 Bond 矩阵。场 \sigma_{11}、\sigma_{22}、\sigma_{12} 可用于着色和探针(stress_local11、stress_local22、stress_local12);节点上的值是相邻单元的平均。
12.8支承反力与力的平衡稳定
作用于被约束自由度上的反力,是支承作用于物体的力。对于实体,它通过受约束自由度上平衡方程的残差计算:
其中 \mathbf{K}\mathbf{u} 针对受约束节点逐单元组装(\sum_e \int_{\Omega_e} \mathbf{B}^{\mathsf T}\boldsymbol{\sigma}\,d\Omega),而 \mathbf{F} 是右端项,包括面载荷、集中载荷、体载荷和节点载荷。反力既对应固定约束(零位移),也对应给定的非零位移;后一种情况下,它显示为施加该位移所需的力。
输出内容有:按每条边界条件记录的反力(分量和模)、支承节点上的分布以及总反力 \sum R_x, \sum R_y, \sum R_z。平衡校核是把总反力与所施加载荷之和比较:对于静力问题,\sum \mathbf{R} + \sum \mathbf{F} = \mathbf{0}。对于框架模型(梁、壳),反力由节点处端部内力与节点载荷的平衡得到。
反力是两个大数之差,因此任何在受约束节点的 \mathbf{F} 中遗漏的载荷,都会整个进入结果。后处理器对右端项的完整性进行记账:如果某种载荷未能计入(例如作用在网格中未找到的顶点上的力),反力数值会连同明确的警告一起输出,而不是悄悄给出。
示例
reactions
probe reaction_z12.9按 ASME VIII-2 的应力线性化(SCL)测试版
在压力容器和管道中,强度准则不是峰值,而是沿壁厚的应力积分分量。应力分类线(SCL)自内表面(x=0)贯穿壁厚至外表面(x=t);沿线的场被分解为膜应力、弯曲应力和峰值部分(ASME BPVC Section VIII Division 2, Annex 5-A;EN 13445-3;GOST 34233)。
被线性化的是线的局部坐标系中的张量分量(x 轴沿 SCL,其余轴为子午方向和环向),而等效量则是由线性化后的张量再计算的:
在外表面上,弯曲部分等于 -\boldsymbol{\sigma}_b^{\text{in}}。峰值部分是表面上的余量:\boldsymbol{\sigma}_F = \boldsymbol{\sigma}(x_s) - \boldsymbol{\sigma}_m - \boldsymbol{\sigma}_b(x_s)。积分用沿线等距点上的复合 Simpson 公式计算。对每一个分量(P_m、P_b、各表面上的 P_m + P_b、F)给出 Mises 和 Tresca 等效应力(强度 \sigma_1 - \sigma_3)。
许用应力(如果给定了材料性能):
裕度为许用值与实际值之比。许用值 S_m 也可以直接给定。
线由两个点(内侧、外侧)以及用于确定子午方向的第三个点或容器轴线来定义;沿线的点数默认为 47。
scl 在其后加入。界面与 DSL 中的位置
结果面板“线性化”:在模型上点击三次(内侧点、外侧点、子午线上的点),得到沿厚度的分布曲线图和分量表。
scl p1=(50,0,0) p2=(62,0,0) samples=47 criterion=tresca
probe scl_pm
probe scl_pm_pb12.10应力集中热点与 Zienkiewicz–Zhu 误差指示器测试版
应力最大值回答不了这样的问题:它是物理上的应力集中(孔、圆角),还是粗网格的假象(约束角点)。有限元应力场的误差估计可以回答这一问题。
方法
用于四面体网格(TET4、TET10 及混合网格)的 Zienkiewicz–Zhu (1987) 指示器。
- 有限元场 \boldsymbol{\sigma}_h 在单元之间是间断的。它取自单元的四个高斯点(应力的超收敛点)。
- 恢复出连续场 \boldsymbol{\sigma}^*:在节点周围的单元片上拟合一个多项式(SPR——逐片超收敛恢复,Zienkiewicz–Zhu 1992);节点取该多项式的值。恢复按材料分别进行,因此材料边界上的跳变不会被抹平。
- 单元误差是差的能量范数:
全局相对误差 \eta = \lVert e\rVert / \sqrt{\lVert\boldsymbol{\sigma}^*\rVert^2 + \lVert e\rVert^2}。对于 TET10,差 \boldsymbol{\sigma}^* - \boldsymbol{\sigma}_h 在单元上是二次多项式,积分精确求得(解析质量矩阵),没有求积误差。除绝对误差 \eta_e 外,还输出误差密度 \eta_e/\sqrt{V_e}——它与单元尺寸无关。
从误差到热点
- Dörfler 标记(Dörfler 1996):承载总平方误差中比例 \theta 的最小单元集,\sum_{e\in M}\eta_e^2 \ge \theta \sum_e \eta_e^2;经典取值 \theta = 0.5。该准则通过误差而不是单元个数来设定,因此与网格尺寸无关。
- 合并:把被标记的单元(按公共面)合并为连通组。
- 滤除噪声:孤立单元和很小的组更多地与退化单元而非物理相关;它们不会悄悄消失,而是作为被舍弃者显示在报告中。如果模型上的误差较小且均匀,则没有热点,面板会如实写明。
- 按误差密度排序,密度为 \sqrt{\sum\eta_e^2/\sum V_e},而不是按总和:按总和排序会把网格最粗的区域排在第一位。
对于每个热点,给出其中心、外接球半径、体积、占总误差的份额和当前的单元尺寸。从热点出发构造加密区(球),尺寸为 h_{\text{new}} = h_{\text{old}}/k(默认缩小一半),并留有网格过渡带的余量;可以用一个按钮创建,或在所有热点处同时创建。
界面与 DSL 中的位置
结果面板“热点”:列表,按钮“此处建球”和“所有热点建球”。在 DSL 中——hotspots 以及自动循环 refine adaptive,用户在其中设定目标误差:gci(网格收敛性阈值,%)和 tol(ZZ 误差阈值,%)。
hotspots refine=2 minsize=0.5
probe hotspot_count
refine adaptive passes=3 gci=5 tol=212.11网格收敛性:Richardson 外推与 GCI测试版
求解器收敛(一次计算内残差的下降)是一回事;按网格的收敛(网格加密时应力峰值趋向何值)是另一回事。该模块通过在越来越细的网格上进行的一系列独立计算来回答第二个问题。
度量——取自上一迭代已固定的热点球内场的最大值(全局最大值在不同网格上可能位于不同位置,不能比较)。单元的特征尺寸 h 取自该球内网格本身,为 h = (\overline{\Delta V_e})^{1/3}(Celik et al., ASME J. Fluids Eng., 2008),而不是所要求的尺寸:网格划分器给出的并不是所要求的尺寸,而该方法使用的是 h 之比。
依据最后三个网格(h_1 > h_2 > h_3,峰值 f_1, f_2, f_3)计算:
阶数 p 按带符号计算,不取 Celik 记法中的模:负的 p 是发散的诊断,而不是噪声。结论为以下之一:
- “已收敛”:极限 f_{\text{ext}} \pm \text{GCI}\cdot\lvert f_3\rvert,GCI 不高于目标(默认 5 %);
- “收敛,但带宽仍然较宽”——继续加密;
- “不收敛——可能存在奇异性”(p \le 0):添加圆角,继续加密也得不到答案;
- “历史数据不足”(少于三次迭代)或“输入不可用”。
如果增量的符号发生了变化(序列围绕极限振荡),则结论为“继续加密”:这样的序列中外推不可靠。
12.12基于 S-N 曲线的疲劳测试版
高周疲劳范围内按应力的寿命估计:线性静力计算给出应力分布,它按载荷历史缩放,寿命则在每个节点按 Wöhler 曲线计算。
S-N 曲线——三种之一:
- Basquin: \sigma_a = \sigma'_f\,(2N_f)^b,由此 N_f = \tfrac12(\sigma_a/\sigma'_f)^{1/b};可选的疲劳极限 \sigma_e:低于它则 N_f = \infty。
- 双斜率,在基准循环数 N_e 处折弯:当 \sigma_a \ge \sigma_e 时 N_f = N_e(\sigma_a/\sigma_e)^{1/b_1},低于极限时 N_f = N_e(\sigma_a/\sigma_e)^{1/b_2}(b_2 = 0 时为无限寿命)。
- 表格式: 在 \log\sigma–\log N 坐标下分段插值。
平均应力修正 \sigma_m 把循环 (\sigma_a, \sigma_m) 换算为等效的对称幅值 \sigma_{a,\text{eq}}:
| 方法 | \sigma_{a,\text{eq}} | 所需 |
|---|---|---|
| Goodman | \sigma_a/(1-\sigma_m/\sigma_u) | \sigma_u |
| Gerber | \sigma_a/(1-(\sigma_m/\sigma_u)^2) | \sigma_u |
| Morrow | \sigma_a/(1-\sigma_m/\sigma'_f) | \sigma'_f |
| Soderberg | \sigma_a/(1-\sigma_m/\sigma_y) | \sigma_y |
当 \sigma_m \ge 分母的极限时,修正给出无穷大(静力破坏)。默认情况下,当平均应力为压应力 \sigma_m \le 0 时不施加修正(保守,\sigma_{a,\text{eq}} = \sigma_a);压缩有利影响的计入需显式开启。
载荷用以下方式之一设定:应力比 R = \sigma_{\min}/\sigma_{\max}(默认 R=-1);缩放系数范围;静力解的缩放系数历史;若干步结果的序列(非比例加载)。历史用“雨流”法(rainflow,ASTM E1049-85,§5.4.4)分解为闭合循环和半循环 \{\Delta\sigma,\ \sigma_m,\ w\}(权重 1 或 0.5),残余半循环以权重 0.5 计入。损伤按 Palmgren–Miner 规则累加:
这里 N_{\text{blocks}} 是以给定载荷块的重复次数表示的寿命。
用于计算循环的标量应力为 Mises、带符号的 Mises(符号取模最大的主应力的符号)或 \sigma_1。结果是损伤 D、\log_{10}N_f、等效幅值和疲劳安全系数 n = \sigma_a^{\text{allow}}(N_{\text{target}})/\sigma_{a,\text{eq}} 的场——即目标寿命下的许用幅值与等效幅值之比(设有上限),以及最危险的节点。
fatigue sigma_f=900e6 b=-0.09 sigma_e=200e6 sigma_u=600e6 correction=goodman r_ratio=0
probe fatigue_min_log_life12.13断裂力学:KI、J 评估与 Paris 裂纹扩展实验性
该模块依据线弹性断裂力学的闭式公式以及假想裂纹处的应力,给出工程估计。这不是沿裂纹尖端周围的围线或区域计算 J 积分,也不是在带裂纹的网格上的计算。
公式。
- K_I = Y\,\sigma\sqrt{\pi a};对于无限大板中的中心裂纹 2a,Y=1,K_I = \sigma\sqrt{\pi a}。
- 能量释放率(Griffith–Irwin):G = K_I^2/E',其中 E' = E(平面应力)或 E/(1-\nu^2)(平面应变)。
- Paris 疲劳裂纹扩展:da/dN = C\,(\Delta K)^m,\Delta K = Y\,\Delta\sigma\sqrt{\pi a}。在 Y 为常数时,积分可解析求得:N = \dfrac{a_f^{\,1-m/2} - a_0^{\,1-m/2}}{(1-m/2)\,C\,(Y\Delta\sigma\sqrt\pi)^m}(m=2 时——N = \ln(a_f/a_0)/[C(Y\Delta\sigma\sqrt\pi)^2])。
- 起裂准则:当 K_I \ge K_{Ic} 时裂纹失稳;临界长度 a_c = \dfrac1\pi\left(\dfrac{K_{Ic}}{Y\sigma}\right)^2,裕度 n = K_{Ic}/K_I。
- 对于 DCB(I 型)和 ENF(II 型)试样,模块中有梁的柔度、G 和临界载荷公式;它们用于内聚区的验证算例。
按棱边估计(fracture edge number N):用户指定棱边(假想裂纹的位置)、初始长度和最终长度 a_0 与 a_f、Paris 参数 C、m、韧性 K_{Ic} 和形状因子 Y。在棱边的节点上取张开应力 \sigma_{\text{open}}——无裂纹模型计算中的最大主应力。随后 K_I = Y\,\sigma_{\text{open}}\sqrt{\pi a_0},J = K_I^2/E',而循环次数通过对 Paris 定律积分得到,其中 \Delta\sigma = \sigma_{\text{open}}(“从零到最大”的循环)。单位:K_{Ic} 以 MPa·√m 计,C 对应以 MPa·√m 计的 \Delta K 和以米计的裂纹长度;在结果面板中,a_0 和 a_f 以毫米输入,在 DSL 中以米输入。
fracture edge number 7 a0=0.002 af=0.008 c=1e-11 m=3 ki_c=50
probe sif_k1
probe paris_cycles12.14场计算器:自定义表达式稳定
工程师可以设定自己的场——基于结果节点场的表达式——它像内置场一样在模型上着色:带图例、探针和按数值过滤。
表达式由以下变量构成:应力分量 sxx … szx、vm、s1 s2 s3,应变分量 exx … gxz、eeq、epeq,位移 ux uy uz umag,以及数字、常数和函数(abs sqrt cbrt sign exp log log10 sin cos tan atan atan2 min max hypot clamp pow,算术运算与乘幂)。解析是安全的(不执行任意代码)。
量纲在解析阶段检查。 表达式内部一切按国际单位制(Pa、m)。单位是具名的量:许用值写作 250*MPa,而不是 250e6。表达式 250e6/vm 被拒绝(量纲为 1/Pa),vm + 5 同样(压强不能与数字相加)。结果的量纲由表达式推出:Pa → “压强”(按单位制以 MPa、psi 或 Pa 显示),米 → “长度”,1 → 无量纲;其他幂次无从显示,表达式被拒绝并给出量纲名称。可选的 unit= 是对量纲的断言:不一致则拒绝。
按自定义准则的安全裕度(单独的场类型):K = [\sigma]/f(\boldsymbol\sigma),其中 f 是以压强为单位的准则(例如 vm 或 max(s1, -s3*ft/fc)),[\sigma] 是常数许用值。当 f=0 时,裕度以上限为限;当 f<0 或为非数值时,该节点未定义。
值未定义的节点得到“非数”并被计数:它们的个数和第一个原因写入报告;不会悄悄代入零。
epeq)会被拒绝并给出名称。对于谱分析的包络,主应力和不变量没有定义(分量的幅值不构成带符号的张量),这类变量会被拒绝。field define name=sigma_ratio expr="vm / (250*MPa)" unit=none
field safety name=n_shell criterion="vm" allowable="250*MPa"
probe n_shell12.15探针、过滤器与测量稳定
在界面中,通过点击模型放置探针;面板显示节点处场的值。自动探针标出所选场在模型上的最小值和最大值。按数值过滤器只在模型上保留落在给定范围之外或之内的节点。色标范围可以手动固定(以所选单位制的显示单位计)。
在 DSL 中:
probe displacement_magnitude at=0,0,100
minmax vonMises
legend range min=0 max=250
result field vonMisesprobe <quantity> at=… 对落入给定坐标周围容差窗口 tol= 内的节点上的场取平均(不插值;如果只给定一个坐标,得到的是该截面的平均值);如果窗口中没有节点,命令拒绝执行并要求放宽容差。minmax 返回整个节点数组上的最小值和最大值(表达式的值取最大值)。可用的量有:位移、vonMises、principalMax、principalMin、张量分量、材料局部应力、反力(reaction_x、reaction_y、reaction_z、reaction_magnitude)、线性化、疲劳、断裂力学、优化的结果,以及动力学和频率量。完整清单见页面 /docs/dsl。
tol=。minmax 在所有验证算例中用作测量手段;它们自身的行为(单位、聚合、对错误参数的拒绝)由脚本测试验证。12.16参数化 DOE 与代理模型优化实验性
“参数化 DOE 与优化”一章由三个部分组成;目前它们都没有与有限元模型的计算相连。
- 试验设计。 拉丁超立方(LHS),从若干候选中按点间最小距离最大(maximin)选取;确定性生成器,种子可固定。称为“Sobol”的模式实现为 Halton 序列(按素数基底的基数逆序)——低偏差,但不是 Sobol 序列。
- 代理模型。 普通克里金(带常数趋势的高斯过程):相关函数为高斯型或指数型,对相关矩阵作 Cholesky 分解,预测均值与方差,期望改进(Expected Improvement)用于贝叶斯优化。相关长度由点间平均距离的启发式规则选取,而不是通过最大化似然。
- 带约束的优化器。 先取一组初始 DOE 点,然后对罚函数 f(\mathbf p) + c\,v(\mathbf p)^2 做局部模式搜索(逐坐标,无改进时步长减半),其中 v 为约束的最大违反量。输出最优解、可行点上的 Pareto 前沿、历史记录以及最优点处的有限差分灵敏度 \partial f/\partial p_k。这不是 SQP 方法:其中没有梯度和二次子问题。
约束可对应力、频率、屈曲系数和位移设定;目标和实体地址遵循与产品其余部分相同的编号规则(文档编号,不使用 bbox 地址)。
doe run 都按内置的模型函数计算目标与约束(质量——作为杆件尺寸的乘积,应力和频率——对高度和长度的简化依赖),而不是按您的模型的计算;默认参数为长度、宽度、高度。代理模型和期望改进已实现并通过测试验证,但在产品的端到端流程中未被调用。因此结果展示的是算法的运行,而不是您零件的最优结构。不能把结果 doe_best_mass 当作工程结论使用。doe param name=thickness min=1 max=10
doe run method=lhs samples=20 objective=mass
probe doe_feasible_count12.17结果导出稳定
- VTK(legacy ASCII,
UNSTRUCTURED_GRID)用于 ParaView:未变形网格的节点,所有受支持类型的单元(TET4、二次 TET10、HEX8、棱柱、金字塔),位移作为矢量场VECTORS(用于 Warp By Vector),节点标量(位移模、Mises、\sigma_1、\sigma_3、安全系数、应变、接触、以 N 计的反力)以及温度。单位写在场名中。在界面中——项目菜单,在 DSL 中——export vtk path=...(按路径写入文件在桌面和脚本环境中可用)。 - 网格,为计算软件包格式:
export mesh file="model.inp",必要时附带变形后的几何和位移比例。 - HTML 报告:计算参数、探针和视口快照;数字按所选单位制输出。
FIELD)写出,而不是带符号的矢量:不能对其应用 Warp By Vector。文件为 ASCII,对大模型而言体积很大。12.18图例与变形图稳定
模型上的色标从场中取范围(节点上的最小值和最大值),标注取自所选单位制的单位表;范围可以手动固定(双击色标两端或 legend range min= max=)。对于接触,色标是分类的(状态),对于安全系数,高于上限的值标注为“无穷大”。变形图绘制 \mathbf{x} + s\,\mathbf{u},比例 s 由用户选择;s = 1 时显示的是真实变形,s 更大时则是示意性的,因此数值请取自探针和图例,而不要取自图像。
13项目、脚本与自动化
↑ 返回目录在 WebCAE 中,同一个计算可以用三种方式完成:在界面中用鼠标操作,用内置的 DSL 语言编写脚本,或者通过 MCP 委托给外部 AI 助手。三种方式使用同一个模型和同一套命令,因此结果不取决于所用的方式。本章说明工作流程、项目文件、脚本语言、助手的接入、现成的示例、数据交换和本地化。
这对工程师有什么用。脚本把计算变成可复现的文档:可以把它放在报告旁边,在新版本上重新运行并比较数值。项目文件保存的是连同结果在内的模型,而不仅仅是原始数据。DSL 命令的详细手册另行维护:DSL 脚本语言。
13.1工作流程:六个步骤稳定
界面被组织为由六个步骤组成的链条。每个步骤对应顶部面板上的一个标签页和各自的参数面板。
| 步骤 | 工程师的操作 | 得到的结果 |
|---|---|---|
| 1. 几何 | 构建基本体和草图,导入 STEP 和 IGES,切割、粘合,修复几何(见几何与 CAD) | 带有面、边、顶点编号的实体、曲面片和线 |
| 2. 模型 | 设定材料并将其指派给实体,梁截面、壳厚度、分组 | 不含载荷的计算模型 |
| 3. 载荷与边界条件 | 设置固定约束、力、压力、温度、接触和约束 | 与实体编号绑定的边界条件记录 |
| 4. 网格 | 选择网格类型、单元尺寸、单元阶次、加密区 | 四面体、六面体、壳或梁的网格 |
| 5. 计算 | 选择分析类型和求解器参数,启动计算 | 位移、应力、温度场,频率、振型,稳定性系数 |
| 6. 结果 | 查看场、探针、反力、截面,导出 | 表格、图片、文件 |
第 5 步的分析类型从以下几组中选择:结构(静力、模态分析、屈曲、谐响应、瞬态动力学)、热、显式动力学和 CFD。由 frame 命令定义的梁和壳模型经过相同的步骤,但在第 3 步和第 4 步中显示的是框架面板,而不是通常的面板。
这些步骤并不构成刚性的流水线。可以返回到任何可用的步骤。“几何”“模型”和“载荷与边界条件”步骤始终开放;“网格”和“计算”需要有几何或网格,“结果”在存在计算结果时开放。对模型的更改可以撤销和重做(Undo 和 Redo)。
自动保存会把模型的快照(不含结果)写入浏览器或应用程序的本地存储,以便在标签页重新加载或故障后保留。这是一种保险,而不能代替把项目保存到文件。
13.2项目文件 .wce稳定
项目保存为一个扩展名为 .wce 的文件。原来的扩展名 .caeweb 仍可打开;下次保存时会建议使用 .wce。扩展名不说明内容:读取方依据签名和压缩方式判断格式,因此重命名后的文件同样可以打开。
文件内保存的是完整的模型,而不仅仅是原始数据。
- 几何:原始 STEP 的字节、每个实体经过校验的 B-Rep、创建和导入的实体、带稳定标识符的拓扑快照、实体编号日志。
- 模型:材料及其指派、截面、分组、边界条件、载荷、接触和约束、网格与计算设置。
- 网格:四面体、六面体、混合单元和表面网格,以及单元质量。
- 结果:静力、温度场、显式、谐响应、框架结果(静力、振型、屈曲、动力学)、加载步历史、自适应重划分的存档。
数值数组(节点、单元、场)存放在二进制块中,不转码为文本,而整个容器经 gzip 压缩。文件记录数据模式的版本。旧文件可由新版应用打开:缺失的字段取默认值,过时的实体地址在读取时转换为编号。旧版本的应用拒绝打开更新模式的文件,而不是在丢失数据的情况下读取。
不保存的有:界面的临时状态(当前标签页、状态、选择)、被中断计算的部分序列、脚本和终端日志。项目可通过“项目”菜单、将文件拖入窗口、在桌面端双击(应用已注册 .wce)以及供助手使用的 cae_open_project 命令打开。“项目”菜单还可以把结果与模型分开保存并读回。
13.3统一命令层与操作日志测试版
产品的任何功能都作为统一命令层的一条命令来接入。功能区按钮、上下文菜单项、DSL 的一行以及助手的调用,都指向同一个函数。界面中的表单和脚本不重复逻辑,因此同一操作在任何路径上都给出相同的结果。这是一条开发规则:一项新功能只有在界面和脚本两处都可达时才算完成。
可用的有三个界面。第一个是图形界面。第二个是 DSL 语言,逐行执行。第三个是 JavaScript 的编程接口 cae.*,终端和 MCP 桥通过它工作。在窗口底部的终端中,以 cae. 开头的行作为 JavaScript 执行;其他行先尝试作为 JavaScript,再尝试作为 DSL。可以一次粘贴多行。
操作日志是自动建立的。终端显示两个通道:计算内核的命令(几何、网格、材料、边界条件、启动计算;始终显示)和界面事件(切换标签页、选择、可见性、相机;通过“UI 事件”复选框开启)。命令以 cae.* 调用的形式记录,例如 cae.fix(...) 或 cae.setMeshOrder(...)。这样的行可以复制并重新执行,也就是说,可以根据日志组装出宏。
cae.* 调用,而不是 DSL 的行,且不保存在项目中。并非每个操作都有可重放的行:部分事件被记录为可读的注释。在 3D 视图中用鼠标进行的选择和显示设置只存在于界面中。DSL 的覆盖不完整,脚本中的若干模式会带说明地拒绝执行,而不是悄悄替换;限制清单维护在 DSL 页面上。某些命令只在应用程序内部可用,例如自动搜索接触对的 contact pairs。因此状态为 beta:该原则在主链条上得到遵守,但不保证适用于每一个操作。13.4结果的可复现性测试版
要使计算能够重现,需要脚本、程序版本和平台。在同一平台上,重新运行同一脚本会得到相同的网格和相同的数值:网格划分器是确定性的。桌面端与浏览器之间,同一几何上的网格可能不同,因此不同平台的数值应带着平台标注来比较(见平台差异)。
结果带有“求解器纪元”标记。当求解器中修复了一个可能使已保存结果的数值超出 5 % 容差的错误时,纪元号会增加。打开在这类修复之前保存的项目时,程序会显示持续性的提示“结果可能已过时”。结果本身不会被删除:可以将它与重新计算的结果比较。报告、DSL(解释器响应中的 staleResults 字段)和 MCP 给出同样的判定。
产品版本可见于各面板、“关于”窗口和“设置 → 更新”、cae_get_state 的响应以及 cae.version 属性。点击版本号可打开更新历史。
13.5DSL 脚本语言稳定
DSL 是一种文本命令语言。脚本是普通的 UTF-8 文件,每行一条命令;注释以 # 或 // 开头,块和循环用 { } 括起。每条命令是一个词,后面跟位置参数和形如 key=value 的命名参数。矢量以逗号分隔的数字书写:origin=0,0,10。数字允许使用指数:E=200e9。
该语言包含变量(let)、条件(if/else)、循环(for x in [0..3]、while)、函数(func/return)和内置函数(abs、sqrt、min、max、floor、ceil、round、len、str、num、basename)。输出用 print,把值写入结构化响应用 record。为防止死循环,执行步数限制为一百万,递归深度限制为 64。
命令涵盖整条链条:几何(primitive、boolean、sketch、extrude、import)、材料与截面(material、section、assign)、网格(mesh、refine)、边界条件(fix、load、contact、remote)、计算(solve static|modal|buckling|thermal|nonlinear|...)、结果(probe、minmax、reactions、hotspots)和输出(export vtk)。脚本的长度单位由命令 units 设定;载荷和材料常数以国际单位制给出。
实体寻址
面、边和顶点只能通过模型树中的编号寻址:surface number N、edge number N、vertex number N。必须写出实体类型这个词。按外形尺寸的方向(face z-)和裸索引会因语法错误而被拒绝。编号可通过命令 list faces of body1 或 list edges of body1 获知。在脚本中,list 的结果可以保存到变量中:每个面都有 .n(编号)、.area、.centroid、.normal。这使得可以按条件选择面并将编号代入命令:fix surface number faces[0].n。详见小节拓扑编号。
从几何到结果的脚本示例
截面 20×20 mm、长 100 mm 的悬臂杆:一端固定,另一端受 5000 N 拉力。二阶四面体,线性静力,然后按公式 \delta = FL/(EA) 校核。
# 悬臂杆 20x20x100 mm,沿 z 轴受 5 kN 拉力
units mm
material E=200e9 nu=0.3 density=7850
primitive box dx=20 dy=20 dz=100
mesh tet size=8 order=2
fix surface number 5
load surface number 6 force=5000 component=z
solve static
reactions
minmax vonMises
minmax displacement_magnitude在此例中,面 5 是 z=0 处的端面,面 6 是 z=100 mm 处的端面。对于长方体,面按 x-、x+、y-、y+、z-、z+ 的顺序编号;对于其他物体,请在设置边界条件之前用命令 list faces of body1 查看编号。预期结果:总反力在数值上等于所施加的力(5000 N),而端面的最大位移接近解析值 \delta = FL/(EA) = 5000\cdot 0.1/(2\cdot 10^{11}\cdot 4\cdot 10^{-4}) \approx 6.25\cdot 10^{-6} m。固定端完全禁止端面上的位移,因此其附近会出现局部集中,最大 Mises 应力将超过均匀的 F/A = 12.5 MPa。与解析解比较时,请取远离固定端的值。
脚本在应用程序的终端中运行,或通过 MCP 的 cae_run_script 命令运行;print 的输出和 record 记录的值连同执行状态一起返回。
在脚本中,list 的结果可以保存并用循环遍历,例如输出各面的编号、面积和法向。
let faces = list faces of body1
for f in faces {
print f.n f.area f.normal
}units 命令的脚本被视为以米为单位,因此其中的 mesh tet size=6 是六米:请以 units mm 开始脚本。部分命令只在应用程序内部、在打开了模型的情况下工作,而不能在无头运行中使用。脚本中不可用或带说明地拒绝的模式,列在 DSL 页面的已知限制一节中;该语言不保证界面的每个操作都有对应的命令。13.6面向 AI 助手的 MCP 服务器测试版
MCP(Model Context Protocol)是一个开放协议,助手(Claude Desktop、Claude Code、Cursor 等)通过它调用工具。WebCAE 提供一个本地桥,把助手与应用程序的打开窗口连接起来。助手操作的是真实的模型:打开项目、检查面和边、指派材料、设置边界条件、划分网格、启动计算、获得数值和屏幕截图。
这些工具带有类型,并分为几组:检查(cae_inspect_surfaces、cae_inspect_edges、cae_get_state、cae_get_model_context)、构建(cad_create_from_template、cad_create_from_script、cae_import_step_artifact、cae_open_project)、模型设定(cae_set_material、cae_add_boundary_condition)、计算与查看(cae_solve、cae_screenshot),以及通用的 cae_run_script,它以字符串形式接收 DSL 脚本,并返回 print 的输出、record 记录的值和状态。边界条件的目标用同样的编号 surface number N 寻址;沿坐标轴的伪名称(“上表面”)会被桥拒绝。工具清单和参数见:MCP 服务器。
该桥只监听本地地址。在发布的桌面版本中,它默认是关闭的:连接上没有授权,常开的端口会把模型交给本机上的任何进程。启用方式是顶部面板的“MCP”按钮,或在应用启动时启用。应用程序的活动窗口只有一个:如果连接了多个客户端,命令进入同一个窗口,其余的等待。
13.7示例库测试版
应用程序中有附带已算出结果的现成项目:0.2.1 发布版中约九十个,工作分支中超过一百个。它们可以从顶部面板的“示例”菜单、“设置 → 打开示例”以及形如 ?example=<id> 的链接打开。项目打开时即带有结果场、图例和探针,无需重新计算。示例按行业(汽车制造、机械制造、铁路运输、采矿、石油天然气、能源、航空航天、建筑、造船)和分析类型分组:静力、模态分析、屈曲、大挠度、接触、RBE2 约束、CFD(RANS)、框架与壳结构。网站上的展示页展示的是同样的模型。
另有一组非线性与多物理场算例:带摩擦的制动蹄片、带 RBE2 约束的塔架地震分析、拱的动力跳跃屈曲、带热弹性冲击的汇流排焦耳加热,而在工作分支中还有超弹性减震衬套、带蠕变和疲劳的涡轮盘扇区、双层梁 DCB 的分层、消声器声腔。每个算例都保存了构建脚本和数值标识。0.2.1 发布之后新增的算例不在其中。
13.8数据交换:项目、结果、几何测试版
“项目”菜单汇集了交换操作。
- 几何:导入 STEP 和 IGES(见导入 STEP和导入 IGES 与 STL),存在几何时可导出为 STEP 和 IGES。
- 项目:“新建项目”“保存项目…”“打开项目…”(
.wce格式,见上文)。 - 结果:“导出结果…”和“导入结果…”使用
.wce和.caeweb文件,而导入也接受.vtk。这使得可以把结果场传给同事而不必传递整个项目。 - VTK:把带场的网格导出为 ParaView 可读取的
.vtk格式。对于显式和 CFD 计算,使用计算模块生成的 VTK。 - DSL:
export vtk [path=...]。
在桌面端,文件对话框是系统对话框。在支持 File System Access API 的浏览器(Chrome、Edge)中,项目直接保存到所选文件,在其余浏览器(Safari、Firefox)中则作为普通文件下载。
13.9网格交换与变形形状导出实验性
在工作树中(而不在已发布的 0.2.1 版本中)新增了有限元网格的交换,以及向类 CAD 格式的结果导出。Abaqus(.inp)、Gmsh(.msh)和 Nastran(.bdf)网格的导入与导出,以及变形形状和应力等值面向 STL 和 STEP 的导出,在存在网格或位移场时,可通过“项目”菜单中的相应项打开。关于网格导入及其局限的详情,见小节网格的导入与导出。
13.10本地化与单位制测试版
界面已翻译成四种语言:英语、俄语、西班牙语和中文。语言依据页面地址、参数 lng、已保存的设置和浏览器语言确定;可在设置中切换。英语是源语言:若没有译文,则显示英文文本,而不是内部键名。
翻译的完整程度并不一致。西班牙语和中文语言包覆盖了英文字符串中的几乎全部(约 98 %)。俄语语言包在 2026 年 10 月底时翻译了约四分之三:未翻译的有若干面板,其中包括一部分通用标签、材料和截面编辑器、平面与坐标系、树的上下文菜单。这些位置以英文显示。
单位的选择与语言无关。可用三种输入单位制:国际单位制(m、N、Pa、kg)、公制工程单位制(mm、N、MPa、°C)和英制(in、lbf、psi、°F)。单位标注取自参考表:在俄语语言包中使用符合 GOST 8.417 的西里尔字母符号,在其余语言包中使用国际符号。求解器边界处始终是国际单位制:换算由唯一的转换模块完成,而几何以毫米存储。
units 的单位给出。14平台、性能与质量控制
↑ 返回目录本章回答三个实际问题。计算应在哪里运行:桌面应用还是浏览器,以及两者的结果有何不同。程序能计算多大规模的问题、需要多长时间。为什么这些数值值得信赖,具体检验的是什么。这里的数值是在具体的机器上测得的,每个数值都标明了平台。不同平台的数值未经标注不能比较。
原则只有一条:基准是桌面端的原生路径。验证、性能测量和差异分析都在它上面进行。浏览器版本使用同一个内核,编译为 WebAssembly,用于初步了解和小型模型。如果在同一模型上各平台的结果不同,则以原生结果为准,并明确说明差异。
14.1桌面端与浏览器:什么在哪里计算稳定
桌面应用提供 Windows 版(64 位,NSIS 安装程序,为当前用户安装)和适用于 Apple 处理器的 macOS 版(DMG 镜像;没有适用于 Intel 处理器的镜像)。没有 Linux 版。浏览器版在支持 WebAssembly 的现代浏览器中运行;项目在 Chrome 和 Edge 中直接保存到所选文件,在 Safari 和 Firefox 中作为普通文件下载。
| 参数 | 桌面端 | 浏览器 |
|---|---|---|
| 计算内核 | 原生,C++ | 同一内核,编译为 WebAssembly |
| 求解器 | 稀疏直接法与带 AMG 预条件器的迭代 CG,多线程矩阵组装 | 内存阈值以内为直接 Cholesky,超过则为不带 AMG 的迭代 CG,单线程 |
| 内存 | 受机器内存限制;启动前显示内存预测 | 每个模块最多 4 GB 线性内存(32 位寻址)以及标签页内存 |
| 网格划分器 | Netgen,多个实体并行构建,可随时取消 | WebAssembly 中的 Netgen,多个实体在工作线程池中并行 |
| 几何 | OpenCASCADE,原生 STEP 导入 | WebAssembly 中的 OpenCASCADE |
| CFD | macOS 上有(SU2);Windows 版没有 | 无 |
| 计算设置 | “设置 → 计算”:求解器模式、线程数、内存限额 | 不可配置 |
| 更新 | 安装新的发布版本 | 页面在加载时更新;有新版本时应用会提示重新加载 |
对工程师而言,由此得出一条实用规则。浏览器适合查看现成的示例、构建并检查小型模型、检验脚本。工作模型、由数十个实体组成的装配体、数百万自由度、CFD,以及一切需要可复现地重复的计算,请在桌面端进行。
桌面端的主要计算默认走原生路径。如果原生路径失败(没有二进制文件、响应错误、超出规模),程序会报告原因,而不会改用浏览器路径:悄悄切换平台会在没有警告的情况下给出不同的数值。
14.2典型问题规模与用时测试版
下面汇总了原生路径的测量。每张表都标明了机器。这些是供规划使用的数量级,而不是保证:用时取决于处理器、机器负载、问题类型和网格质量。测量是在不同时间、不同机器上进行的,不合并为一张表。
实体的线性静力分析,原生求解器,8 线程,28 GB 内存,2026 年 9 月 2 日测量。 二阶四面体,带代数多重网格预条件器的 CG(AMGCL,Gauss–Seidel 光滑器,聚合中含物体的刚体运动基)。时间为总时间:构建预条件器与求解。
| 自由度数 | 时间,s | CG 迭代次数 | 内存,GB |
|---|---|---|---|
| 17.5 万 | 2.4 | 20 | 1.1 |
| 40.8 万 | 5.6 | 19 | 2.4 |
| 78.8 万 | 11.0 | 21 | 4.6 |
| 135 万 | 20.3 | 25 | 8.1 |
| 213 万 | 31.4 | 21 | 12.7 |
迭代次数几乎不随规模增长:多重网格预条件器使收敛实际上与网格步长无关。在一个真实的天线 CAD 模型上(74.1 万自由度,Tet10),同一方法在 8 线程上用 10.7 s,在单线程上用 19.8 s;单线程的稀疏直接 Cholesky(Eigen)耗时 843 s、内存 6.7 GB;在 macOS 上,Apple Accelerate 直接求解器明显更快。在小型模型(几万自由度)上,直接法比迭代法更快也更可靠,因此只要模型能放入内存限额,自动选择就保留直接法。
MITC4 壳的静力分析,原生求解器,Apple M5,24 GB,2026 年 10 月 13 日测量。 1000×1000×10 mm 的方板,边缘固定,均布压力;时间从按下“求解”到出结果,包括模型准备和数据传输。
| 自由度数 | 时间,s | 原生求解器内存峰值,GB | 挠度相对基准 |
|---|---|---|---|
| 100 万 | 7.2 | 5.9 | +0.008 % |
| 200 万 | 16.8 | 6.4 | +0.008 % |
求解器单独在 200 万自由度时占用 6–7 GB,但整个应用程序连同界面在同样规模下占用约 15.7 GB(100 万时约 9.6 GB),在 24 GB 的机器上,200 万自由度时会开始使用交换空间。因此壳静力分析的规模上限取决于物理内存:目前 24 GB 时约为 180 万自由度,16 GB 时约为 100 万。超过上限时,计算在启动前就带着原因拒绝,而不会转向浏览器路径。
网格构建,原生网格划分器 Netgen,Apple M5(4 个性能核心和 6 个能效核心),24 GB,2026 年 8 月和 10 月在负载较高的机器上测量。
| 任务(测量日期) | 结果 |
|---|---|
| 由 15 个实体、634 个曲面组成的装配体,12 万个四面体(10.08) | 顺序构建 13.8 s;四个实体同时构建时约 4.3 s(加速 3.2×) |
| 同一文件,细网格(13.10) | 525 万个四面体用 435 s,内存峰值约 3.2 GB |
| 由 271 个实体组成的装配体,209 万个四面体(11.08) | 原生 352–433 s(271 个实体中的 270 个),作为对比,浏览器中为 621 s |
网格划分器的加速来自同时构建的多个实体(按性能核心数),而不是单个实体内部的线程:十个线程作用于一个实体只带来 1.2×。
关于浏览器的已知情况。 问题规模受限于每个模块 4 GB 的线性内存和求解器的单线程。按 2026 年 7 月的测量,二阶静力分析的实际上限约为一百万个四面体,二阶绑定接触约为几十万。确切的界限取决于问题类型、浏览器和标签页的空闲内存。手册中没有浏览器的可比用时表:基准是原生路径。
14.3平台差异测试版
桌面端和浏览器由同一份源代码构建,但并非逐位一致:原生版本使用带融合乘加的处理器指令和系统数学库,而浏览器版本没有。浮点数最后几位上的差异有时会带来明显的后果,尤其是在网格划分器中。
- 网格可能不同。 在由 271 个实体组成的装配体上,两个平台都能构建的 269 个实体中,有 115 个(43 %)得到相同的网格,其余的四面体个数不同,最差的实体相差 11.9 %。四面体总数的一致程度达到 0.01 %,因为朝不同方向的差异相互抵消。每个平台各自是确定性的:重复运行会得到同样的网格。
- 失败情况可能不同。 有些实体在浏览器中无法划分网格而在桌面端可以(同一装配体中的一个实体,桌面端为 20 599 个四面体),反之亦然(同一装配体中的另一个实体)。原因是网格算法在样条曲面上、在算术略有不同时发散,而不是内存损坏。实际结论:网格划分器在一个平台上失败,并不证明几何有缺陷,请尝试另一个平台或改变单元尺寸。
- 原生平台的网格质量并不总是更高。 在 10 mm 的测试立方体、单元尺寸 4 mm 的条件下,最小 SICN(单元的有符号逆条件数,见网格质量指标)在桌面端为 0.146,在浏览器中为 0.182。原生路径仍是基准,这是一项决定,而不是因为它处处更好:它与桌面端用户得到的结果一致。
- 影响数值的是网格,而不是求解器。 带数值验收的 DSL 算例集在原生网格划分器上全部通过。更换网格划分器的平台时,集合中 115 个数值测量中有 111 个逐位一致;其余四个相差的量从 10^{-13} 到 5\cdot 10^{-2} 个百分点,即至少比容差小一百倍。
- 功能。 CFD 只在桌面端有(Windows 版中没有)。在浏览器中测得的验证卡片标注为“WASM”。
14.4验证程序稳定
公开的验证程序即验证页面。目录中有 213 个算例;其中 211 个有已执行的运行,且全部通过。两个 MacNeal–Harder 算例(直悬臂梁和扭曲悬臂梁)以“开发中”发布:提法已有,运行尚无。对每个已执行的算例,页面上显示提法、基准、所得值、偏差、网格和求解器版本。213 个算例中有 207 个发布了 DSL 脚本:可以将其粘贴到应用程序的终端中重复该计算。
| 类别 | 算例数 | 检验内容 |
|---|---|---|
| 非线性与接触 | 112 | 接触与摩擦、超弹性、塑性与蠕变、损伤与断裂、几何非线性与稳定性、分阶段施工、动力学与显式 |
| 解析解 | 50 | 闭式解:梁与板、厚壁圆筒、屈曲、动力学与谐响应、谱、随机振动、热传导、热弹性、混合网格 |
| NAFEMS | 22 | 线性静力(LE 系列)、固有频率(FV)、传热(T) |
| CFD | 14 | 管道和通道中的流动、绕流、压降、物体上的力(SU2 计算) |
| 梁与壳 | 10 | 加筋板、机身、船体、偏心肋 |
| MacNeal–Harder | 5 | 三个已执行:弯曲悬臂梁、矩形板、分片试验;两个在开发中 |
示例:NAFEMS LE1,椭圆膜、赫兹接触:球、刚性套筒内的厚壁圆筒(拉梅问题)、方板屈曲、带极限点的 Lee 框架、Re = 40 时流中的圆柱。
三类基准。解析解:弹性理论和动力学的公式,其结果有闭式解。已发表的基准:NAFEMS 和 MacNeal–Harder 算例集。不变量与平衡:能量、力的平衡、对称性、与物体旋转或加载步无关性,用于无法给出数值基准的情形。
14.5容差政策 ≤5 %稳定
与基准核对的容差是统一的:偏差不超过 5 %。偏差相对于基准值计算:
其中 v_{\text{calc}} 是 WebCAE 的结果,v_{\text{ref}} 是基准。对于含多个量的算例,卡片中给出每个量的偏差,而表格中每个算例只有一个数。
规则是严格的:不为了让算例通过而放宽容差。超过 5 % 的偏差被视为缺陷,并在计算中而不是在准则中消除。如果某个算例无法做到,则不用宽松的容差将其关闭,而是以“开发中”发布,或附原因推迟。
211 个已执行算例的偏差分布:
| 指标 | 数值 |
|---|---|
| 偏差不高于 1 % | 165 个算例(78 %) |
| 偏差不高于 2 % | 190 个算例(90 %) |
| 偏差不高于 5 % | 211 个算例(100 %) |
| 平均偏差 | 0.59 % |
| 中位数 | 0.05 % |
| 最大 | 4.88 %(NAFEMS LE11) |
百分之几十分之一量级的偏差,通常出现在分片试验、平衡、不变量以及有精确解析解的问题上。在有应力集中的问题、粗网格上的壳以及薄体上,偏差更接近界限:5 % 的容差反映的是该方法在所选网格上的真实精度,而不是留有富余的裕量。因此请把该容差理解为算例的上限,而不是您的任何模型的精度。
14.6自动回归检验测试版
质量由开发时运行的多层检验来保持。2026 年 10 月底的数量级:
- 单元测试——数百个文件中约五千项检验:公式、矩阵组装、文件解析、命令、界面;
- 类型检查分两遍,分别针对产品和测试:捕获测试运行所遗漏的错误,因为测试的执行环境不检查类型;
- 端到端脚本集——约八十个文件,运行从几何到结果的完整链条;
- 网格语料库——来自真实 STEP 文件的 17 个任务,网格划分器为原生;检验结果、网格质量和连通性;
- DSL 算例集——74 个用例,115 项带容差的数值检验,原生网格划分器;
- 应用原生部分的测试——约二百五十项;
- 内核的原生物理检验——约九十项:复频率响应、给定的非线性轨迹、壳中的应力恢复;
- 验证算例——即那 213 个,带有可执行脚本。
一项新测试只有在证明了它能变红之后才会被接受:把回归放回产品代码中,测试必须失败,然后再撤销修改。这是防范“绿色空壳”——什么也不检验的测试——的保护。另有一条关于测试数量的规则:不给出已执行测试数量的闸门静默,不算结果,因为测试集可能已不再能构建。
14.7GPU 与云端模式实验性
计算始终在处理器上、在本地进行。显卡和远程服务器不参与计算。
代码中有原型:WebGPU 上的 CG 求解器、用于 Tet10 和 Hex20 的无矩阵变体,以及在浏览器、本地模块和远程服务器之间路由计算的路由器。它们有各自的测试覆盖,但产品的计算不调用它们,产品中也没有服务器端。在计算面板和“设置 → 计算”中有相应的开关(“WebGPU 加速”“Matrix-Free P2 GPU”“Hybrid Cloud RPC”):目前它们保存在项目中,不改变计算。详见:原型与未实现部分。
14.8版本与结果标识稳定
应用程序、安装程序、网站和验证卡片采用统一的编号:语义化版本 MAJOR.MINOR.PATCH,发布标签为 vX.Y.Z。当前版本为 0.2.1。修复使最后一位增加;新功能或新的物理使中间一位增加;在主版本号为零期间,不兼容的更改同样计入中间一位。文档页面上的计划版本标注为“计划”,不带日期。
在哪里查看版本:
- 在程序中:顶部和底部面板中的版本图标、“关于”窗口、“设置 → 更新”;点击版本号会打开按发布版本分组的更新历史;
- 在脚本中:属性
cae.version和 MCP 中cae_get_state的响应返回形如WebCAE 0.2.1的字符串; - 在验证卡片中:“求解器版本”字段。
卡片中运行的标识记录为 WebCAE <version> · <short commit>。提交之后的标记 +dirty 表示运行时被跟踪的文件中有未提交的修改:这样的数值只有连同这些修改才能被精确复现。在引入统一编号之前记录的卡片不会被重写,因为它们的数值是由其他构建得到的。它们显示为“引入编号之前(0.1.1 之前)”或“未记录版本”。在 211 个已执行的算例中,目前带版本号标识的有 14 个,“引入编号之前”的有 28 个,“未记录版本”的有 169 个。对旧卡片重新测量并记录版本的工作尚未完成。
文件兼容性。旧版本保存的项目可由新版本打开。更新模式的项目,旧版本拒绝打开,而不是在丢失数据的情况下读取。如果更新之后已保存结果的数值可能已发生变化,程序会给出“结果可能已过时”的警告(见结果的可复现性)。
15术语表与参考文献
↑ 返回目录15.1术语表
| 术语 | 含义 |
|---|---|
| 自由度(DOF) | 离散问题的未知量:节点的位移或转角、节点的温度。问题规模通常以自由度数表示。 |
| 刚度矩阵 \mathbf{K} | 在线性问题中联系节点位移与节点力:\mathbf{K}\mathbf{u}=\mathbf{f}。对称;施加约束后为正定。参见求解器。 |
| 切线矩阵 \mathbf{K}_T | 非线性问题中残差对位移的导数;材料部分与几何部分之和。参见非线性计算。 |
| 几何刚度 \mathbf{K}_G(\mathbf{K}_\sigma) | 初始应力对刚度的贡献;是屈曲分析和带预应力模态分析的基础。参见线性分析类型。 |
| 残差 | 外力与内力之差 \mathbf{r}=\mathbf{f}_{ext}-\mathbf{f}_{int};其范数是主要的收敛判据。 |
| Gauss 点 | 单元上的数值积分点;应变和应力在这些点上计算。参见单元库。 |
| 闭锁(locking) | 单元刚度被人为夸大:薄壳和梁中的剪切闭锁,近不可压缩材料中的体积闭锁。 |
| MITC | 张量分量混合插值——消除壳的剪切闭锁的一种方法(Dvorkin–Bathe)。 |
| P1 / P2 | 线性和二次形函数;分别对应 Tet4 和 Tet10。 |
| RBE2 | 刚性连接:从节点随主节点作为一个整体运动。参见边界条件。 |
| MPC / 约束方程 | 自由度之间的线性关系,从方程组中被精确消去。 |
| 罚函数 | 通过大刚度弹簧近似施加约束;精度取决于其大小。 |
| 弧长法 | 对参数进行延拓的方法,可通过“载荷—位移”曲线的极值点。参见弧长法。 |
| 径向返回 | 在一点处对弹塑性状态进行积分的算法:弹性试探步并投影到屈服面。参见材料模型。 |
| SICN | 通过归一化雅可比度量四面体质量;值 \le 0 表示单元翻转。产品中采用的定义和阈值见章节网格。 |
| ZZ / SPR | 基于恢复应力场的 Zienkiewicz–Zhu 离散误差估计。 |
| Richardson 外推 | 根据三套网格上的结果估计网格加密时某个量的极限值。 |
| von Mises、Tresca | 屈服准则的等效应力;公式见后处理。 |
| SCL | 按 ASME VIII-2 的应力分类线:薄膜、弯曲和峰值分量。 |
| HHT-α、Newmark | 运动方程的隐式时间积分格式。参见隐式动力学。 |
| 中心差分 | 显式积分格式;时间步小于临界值时稳定。参见显式动力学。 |
| AMG | 用于迭代求解大型方程组的代数多重网格预条件子。参见迭代求解器。 |
| WebAssembly(WASM) | 浏览器的可执行代码格式;计算内核的浏览器版本即在其中运行。 |
15.2参考文献
本手册提法所依据的教科书和专著:
- Bathe K.-J. Finite Element Procedures. 2nd ed. Watertown: K.-J. Bathe, 2014.
- Zienkiewicz O.C., Taylor R.L., Zhu J.Z. The Finite Element Method: Its Basis and Fundamentals. 7th ed. Butterworth-Heinemann, 2013.
- Hughes T.J.R. The Finite Element Method: Linear Static and Dynamic Finite Element Analysis. Dover, 2000.
- Belytschko T., Liu W.K., Moran B., Elkhodary K. Nonlinear Finite Elements for Continua and Structures. 2nd ed. Wiley, 2014.
- Simo J.C., Hughes T.J.R. Computational Inelasticity. Springer, 1998.
- Wriggers P. Computational Contact Mechanics. 2nd ed. Springer, 2006.
- Crisfield M.A. Non-linear Finite Element Analysis of Solids and Structures. Vol. 1–2. Wiley, 1991, 1997.
- Reddy J.N. Mechanics of Laminated Composite Plates and Shells. 2nd ed. CRC Press, 2004.
- Clough R.W., Penzien J. Dynamics of Structures. 3rd ed. Computers & Structures, 2003.
- Saad Y. Iterative Methods for Sparse Linear Systems. 2nd ed. SIAM, 2003.
- Davis T.A. Direct Methods for Sparse Linear Systems. SIAM, 2006.
- Timoshenko S.P., Goodier J.N. Theory of Elasticity. 3rd ed. McGraw-Hill, 1970.
- Lekhnitskii S.G. Theory of Elasticity of an Anisotropic Body. Moscow: Mir Publishers, 1981.
关于具体方法的论文:
- Dvorkin E.N., Bathe K.-J. A continuum mechanics based four-node shell element for general nonlinear analysis. Engineering Computations, 1984, 1(1).
- Batoz J.-L., Bathe K.-J., Ho L.-W. A study of three-node triangular plate bending elements. Int. J. Numer. Meth. Eng., 1980, 15.
- Hughes T.J.R., Brezzi F. On drilling degrees of freedom. Comput. Methods Appl. Mech. Eng., 1989, 72.
- Battini J.-M., Pacoste C. Co-rotational beam elements with warping effects in instability problems. Comput. Methods Appl. Mech. Eng., 2002, 191.
- Felippa C.A., Haugen B. A unified formulation of small-strain corotational finite elements. Comput. Methods Appl. Mech. Eng., 2005, 194.
- Zienkiewicz O.C., Zhu J.Z. The superconvergent patch recovery and a posteriori error estimates. Int. J. Numer. Meth. Eng., 1992, 33.
- Dörfler W. A convergent adaptive algorithm for Poisson's equation. SIAM J. Numer. Anal., 1996, 33.
- Celik I.B. et al. Procedure for estimation and reporting of uncertainty due to discretization in CFD applications. J. Fluids Eng., 2008, 130.
- Popp A., Gee M.W., Wall W.A. A finite deformation mortar contact formulation using a primal–dual active set strategy. Int. J. Numer. Meth. Eng., 2009, 79.
- Wriggers P., Zavarise G. On contact between three-dimensional beams undergoing large deflections. Commun. Numer. Meth. Eng., 1997, 13.
- Camanho P.P., Dávila C.G. Mixed-mode decohesion finite elements for the simulation of delamination in composite materials. NASA/TM-2002-211737, 2002.
- Benzeggagh M.L., Kenane M. Measurement of mixed-mode delamination fracture toughness. Compos. Sci. Technol., 1996, 56.
- Cooper M.G., Mikic B.B., Yovanovich M.M. Thermal contact conductance. Int. J. Heat Mass Transfer, 1969, 12.
- Craig R.R., Bampton M.C.C. Coupling of substructures for dynamic analyses. AIAA J., 1968, 6(7).
- Der Kiureghian A. A response spectrum method for random vibration analysis of MDF systems. Earthquake Eng. Struct. Dyn., 1981, 9.
- Miles J.W. On structural fatigue under random loading. J. Aeronaut. Sci., 1954, 21.
- Hinton E., Rock T., Zienkiewicz O.C. A note on mass lumping and related processes in the finite element method. Earthquake Eng. Struct. Dyn., 1976, 4.
- Knyazev A.V. Toward the optimal preconditioned eigensolver: LOBPCG. SIAM J. Sci. Comput., 2001, 23.
- Vaněk P., Mandel J., Brezina M. Algebraic multigrid by smoothed aggregation for second and fourth order elliptic problems. Computing, 1996, 56.
- Johnen A., Remacle J.-F., Geuzaine C. Geometrical validity of curvilinear finite elements. J. Comput. Phys., 2013, 233.
- Economon T.D. et al. SU2: An open-source suite for multiphysics simulation and design. AIAA J., 2016, 54(3).
标准与基准问题集:
- NAFEMS. The Standard NAFEMS Benchmarks. Rev. 3, 1990; Selected Benchmarks for Natural Frequency Analysis, 1987.
- MacNeal R.H., Harder R.L. A proposed standard set of problems to test finite element accuracy. Finite Elements in Analysis and Design, 1985, 1.
- ASME Boiler and Pressure Vessel Code, Section VIII, Division 2, Part 5.
- ASTM E1049-85. Standard Practices for Cycle Counting in Fatigue Analysis.
- VDI 2230 Blatt 1. Systematische Berechnung hochbeanspruchter Schraubenverbindungen.
15.3开源组件
计算内核和模型准备使用开源库:
| 组件 | 用途 |
|---|---|
| MFEM | 有限元基础设施:空间、装配、部分求解器 |
| Eigen | 稠密与稀疏线性代数,直接分解 |
| AMGCL | 代数多重网格预条件子(桌面版) |
| Apple Accelerate | 稀疏直接分解(桌面版,macOS) |
| Netgen | 四面体网格生成 |
| Open CASCADE Technology | 几何内核:导入、布尔运算、拓扑 |
| SU2 | 有限体积法流动计算 |
各组件的许可证列于页面开源。