Abaqus 悬臂梁静力仿真:从建模到结果验证
这篇笔记记录一次实际完成的 Abaqus/Standard 2022 仿真:建立矩形截面钢制悬臂梁,在自由端施加向下的 100 N 载荷,求解线弹性小变形响应,并检查位移、应力和反力。建模与后处理通过 MCP 调用 Abaqus Python 脚本完成;下面按 Abaqus/CAE 的模块顺序说明,手动操作也可参照。
自由端平均下挠为 0.19026 mm,与 Euler–Bernoulli 梁理论值 0.19048 mm 相差约 0.11%。这说明整体弯曲刚度合理,但不能据此认定所有局部应力都已收敛。
1. 问题、坐标与单位
采用 N–mm–MPa 单位制。Abaqus 输入值本身不附带单位,几何、材料和载荷必须保持一致。
| 项目 | 设置 |
|---|---|
| 长度 L | 100 mm,沿 X |
| 高度 h | 10 mm,沿 Y |
| 宽度 b | 10 mm,沿 Z |
| 几何范围 | X:0~100;Y:−5~5;Z:0~10 mm |
| 弹性模量 E | 210000 MPa |
| 泊松比 | 0.3 |
| 固定端 | X = 0 的整个端面 |
| 自由端载荷 | X = 100 端面,沿 −Y,合力 100 N |
| 分析类型 | Static, General;NLGEOM = OFF |
| 网格 | 2 mm,结构化六面体,C3D8I |
钢被理想化为各向同性线弹性材料,没有定义具体钢种、屈服应力、塑性、重力或接触。本次没有惯性与重力项,不需要密度。
2. Part:建立三维实体梁
对应基础笔记:01 Part。
- 创建模型
CantileverDemo。 - 创建部件
Beam,选择 3D → Deformable → Solid → Extrusion。 - 在 XY 草图平面画矩形,两对角点为 (0, −5) 与 (100, 5)。
- 完成草图,拉伸深度输入 10 mm。
拉伸方向为 Z,梁长沿 X。草图尺寸是 100 × 10 mm,而不是将拉伸深度设为 100 mm。
sketch.rectangle(point1=(0.0, -5.0), point2=(100.0, 5.0))
part.BaseSolidExtrude(sketch=sketch, depth=10.0)3. Property:材料、截面与赋予
对应基础笔记:02 Property。
- 创建材料
Steel。 - 在 Mechanical → Elasticity → Elastic 中输入各向同性弹性参数:E = 210000、泊松比 = 0.3。
- 创建
SteelSection,类型为 Solid → Homogeneous,选择材料Steel。 - 选择整个实体体积,创建
AllCells集合,并将截面赋予该区域。
材料、截面和截面赋予是三个独立步骤。仅创建材料不会自动使部件获得材料属性。
4. Assembly:实例和命名区域
对应基础笔记:03 Assembly。
创建部件 Beam 的 Dependent 实例 Beam-1,保持原点和方向不变。部件上的网格会传递到实例。
| 名称 | 选取对象 | 用途 |
|---|---|---|
FixedEnd | X = 0 的端面 | 固定约束 |
TipSurface | X = 100 的端面 | 端面载荷 |
FixedNodes | 固定端全部节点 | 汇总支反力 |
TipNodes | 自由端全部节点 | 统计平均位移 |
节点集需要在划分网格后创建。本次脚本先在 Part 上划分网格,再创建实例与节点集;手动按模块顺序操作时,可在 Mesh 完成后补建这两个节点集。
脚本用端面内部点定位面:固定端为 (0, 0, 5),自由端为 (100, 0, 5)。这种选取方法比依赖面序号更容易理解和检查。
5. Step 与 Interaction:分析步和输出
在 Initial 后创建 Load 分析步,选择 Static, General。
本次实际写入 INP 的参数为:步时间 1、初始增量 1、最小增量 0.00001、最大增量 1,NLGEOM 关闭。求解一个增量即达到满载。这里步时间用于描述载荷施加过程,不代表动力学分析的真实时间。
将场输出设置为:
U:节点位移。RF:节点反力。S:应力。
本模型是单一连续实体,无接触、连接器或多部件连接,Interaction 模块无需创建对象。模块流程完整,不意味着每个模块都必须创建设置。
6. Load:边界条件与端面力
对应基础笔记:05 Load。
6.1 固定端
在 Initial 步创建 Clamp,类型选择 Symmetry/Antisymmetry/Encastre → ENCASTRE,区域选择 FixedEnd。
对于本次三维实体单元,节点有效自由度为三个平移自由度,因此固定端节点的 U1、U2、U3 全部为零。
6.2 自由端载荷
在 Load 步创建 TipLoad:
| 设置 | 数值 |
|---|---|
| 类型 | Surface traction |
| 区域 | TipSurface |
| 分布 | Uniform |
| 牵引类型 | General |
| 方向 | 全局 (0, −1, 0) |
| 大小 | 1 MPa,按单位面积施力 |
| Follower | 关闭 |
| Resultant | 关闭,不使用输入合力大小的方式 |
端面面积与合力为:
这是沿端面切向的载荷。若直接对该端面施加 Pressure,将产生沿 X 的法向载荷,变成另一种问题。
本次把力均匀分布在整个端面,没有把全部载荷施加到一个角节点;载荷合力通过截面形心。
7. Mesh:网格与单元
对应基础笔记:06 Mesh。
- 在 Part 上设置 Mesh Controls → Hex + Structured。
- Element Type 选择 Standard、Linear、3D Stress、Hex、Incompatible modes,确认单元为 C3D8I。
- Seed Part 输入全局尺寸 2 mm。
- Generate Mesh。
- 更新装配实例,建立
FixedNodes和TipNodes。
长度方向 50 个单元,高度与宽度方向各 5 个,总计 1250 个单元、1836 个节点。
C3D8I 的不相容模式改善一阶实体单元的弯曲表现,适合本例的规则、低畸变网格。但其精度对畸变敏感,不能把规则长方体上的效果直接推广到复杂网格。I 代表不相容模式,不是 C3D8R 中的减缩积分 R。Abaqus 文档:Incompatible mode elements
8. Job:保存、提交与确认完成
对应基础笔记:07 Job。
- 保存模型为
cantilever.cae。 - 创建作业
CantileverDemo,关联同名模型,使用 1 个 CPU。 - Write Input,保存
CantileverDemo.inp。 - Submit,保留一致性检查。
- 确认求解真正结束,再进入后处理。
本次 .sta 记录 THE ANALYSIS HAS COMPLETED SUCCESSFULLY,.log 记录 COMPLETED,ODB 的 Load 最终帧时间为 1.0。求解器统计输入处理和分析均为 0 个警告、0 个错误。
运行日志另有 CAE 交互消息初始化失败与 socket 提示,使界面的作业状态可能滞后。它们不等于求解失败;本次使用状态文件与 ODB 满载帧交叉确认完成,没有只依赖界面状态。
9. Visualization:结果云图与提取方法
对应基础笔记:08 Visualization。
打开 CantileverDemo.odb,选择 Load 步最后一帧,显示 Contours on Deformed Shape。以下图片的变形均放大 30 倍;图例数值仍为实际结果,放大仅改变几何显示。
9.1 竖向位移 U2
Primary Variable 选择 U → U2。

固定端位移为零,自由端沿 −Y 下挠,符合横向端载荷作用下的弯曲趋势。报告中的端部挠度是 TipNodes 上 36 个节点的 U2 算术平均值,不等于某个角节点的位移,也不等于全模型最大位移模量。
9.2 Mises 应力
Primary Variable 选择 S → Mises。

总体上,固定端附近上下表面的应力较高,向自由端减小,反映弯矩沿梁长的变化。Mises 是等效应力,不显示拉压符号;如要验证上下表面的拉压关系,应进一步查看 S11。
图例峰值约 62.38 MPa,而数据表为 56.42 MPa,原因是取值口径不同: 数据表读取原始积分点最大 Mises;云图使用节点外推与平均。图中的 Avg: 75% 是平均阈值,不表示将应力乘以 75%。比较网格或软件结果时,需统一应力分量、位置和平均方式。
9.3 数值汇总
| 指标 | 结果 |
|---|---|
| 自由端平均 U2 | −0.1902596 mm |
| 全模型最大位移模量 | 0.1907993 mm |
| 最大积分点 Mises 应力 | 56.4186 MPa |
| 固定端合反力 RF2 | +99.9999957 N |
| 固定端合反力 RF1、RF3 | 约 0 N |
| 最终步时间 | 1.0 |
10. 理论校核与结论讨论
10.1 端部挠度
绕 Z 轴的截面惯性矩:
Euler–Bernoulli 梁理论给出:
按自由端平均 U2 的绝对值比较:
整体刚度与简化梁理论接近。三维实体模型还包含剪切变形、泊松效应和端部约束效应,而 Euler–Bernoulli 理论忽略剪切变形;这个偏差不能直接作为严格的离散误差估计。
10.2 力平衡
外载荷为 −100 N,固定端合反力为 +99.9999957 N,残差约为 0.0000043 N,说明载荷合力和约束传力与设定一致。本次核对了力平衡,没有另行做完整的反力矩积分校核。
10.3 应力参考与局限
梁理论根部外纤维最大弯曲正应力:
它与结果处于相同量级,但不能与固定端局部最大 Mises 逐项等同:完全固定边界附近存在三维约束效应,积分点也不位于外表面。
本次是单一网格的线弹性演示。没有进行网格收敛、塑性和安全系数评价,也未给定钢种屈服强度,因此不作“结构安全”的结论。
下一步可采用 2、1、0.5 mm 网格,比较端部平均挠度及远离固定端局部区域的同一截面应力。固定端尖角峰值可能随细化变化,不宜仅用该峰值判断整体解质量。
11. 复现资料
下载复现资料包,包含实际求解用 INP、原始结果 JSON、建模与后处理脚本。
直接使用 INP 复算:
abaqus job=CantileverDemo input=CantileverDemo.inp interactive请在新的可写目录运行,避免覆盖已有结果。如要重建 CAE 模型,在启动 CAE 前设置环境变量 CANTILEVER_OUT 为输出目录绝对路径,然后用 File → Run Script 执行 build_cantilever.py;待 .sta 确认完成,再执行 postprocess_cantilever.py。
脚本适用于本次 Abaqus 2022 / Python 2.7 环境。资料包将原脚本中的本机路径改成环境变量配置;这一打包改动尚未作为新算例重跑。原始建模、求解与后处理已实际完成。建模脚本保留了同名模型和作业的保护检查。
12. 如何让整套流程更顺畅
以下是基于本次实际过程提出的后续设计,尚未作为完整自动化系统实现。
12.1 一份参数贯穿模型和报告
用配置文件集中保存几何、材料、载荷、网格、输出路径。建模脚本读取配置,后处理输出统一 JSON,报告表格从配置与 JSON 生成,避免改载荷时在脚本和正文中重复修改。
每次运行生成独立目录,记录参数、脚本版本、Abaqus 版本和状态。已有结果保持可追溯,新算例不会覆盖旧算例。
12.2 提交、等待和后处理分开
参数检查 → 建模 → 写入 INP → 提交作业
↓
检查 STA / LOG / ODB
↓
提取 → 校核 → 出图 → 报告提交后立即返回作业标识,单独轮询完成状态。只有成功状态和目标步满载帧都存在,才进入报告生成。MCP 能 ping 通、CAE 能交互和求解成功应作为不同的检查项。
12.3 区分交互建模与批量计算
本次 MCP 后台模式没有处理请求,改用阻塞监听才完成操作。阻塞模式可用于当前演示,却占用了 CAE 的交互会话。
对于规则算例,可把建模和求解放到独立批处理,GUI 主要承担检查与可视化;需要交互修改时再连接当前 CAE。改进 GUI 内 MCP 调度时,需确认该 Abaqus 版本的线程约束和支持机制,不能仅凭后台线程启动就认定内核调用可靠。
12.4 出报告前先做自动校核
自动检查材料与截面、非空集合、单元数量、求解终态、反力平衡和理论偏差。阈值按算例定义;本例可将挠度作为回归基准,但复杂结构需要其他验证依据。
报告同时保留“未做网格收敛”等状态,避免自动生成的漂亮云图掩盖验证缺口。
12.5 笔记是发布源,数据是事实源
网站保留正文、图片、小型 JSON 和复现附件;大型 CAE、ODB 放在算例归档中,避免每次计算都扩大网站仓库。使用库内相对图片路径,让 Obsidian 和网站共用正文。
在发布前运行 Quartz 构建,检查目标页面、数学公式、图片和附件链接,再提交和推送。
12.6 让同步脚本准确报告失败
当前桌面脚本依次执行 git add .、提交与推送,最后无条件显示完成。后续建议:
- 本地构建通过后才提交,提交前展示待发布文件。
- 无改动时正常结束,不把空提交当成故障。
- 检查每一步退出码,失败立即停止。
- 优先提交明确选择的文章和附件,避免夹带未整理笔记。
- 保存提交号,并验证在线文章;GitHub 推送成功不代表网站已经部署完成。
这样每次仿真都能留下可检查的数据、可重复的操作和可阅读的笔记,出错时也能定位到具体阶段。