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 输入值本身不附带单位,几何、材料和载荷必须保持一致。

项目设置
长度 L100 mm,沿 X
高度 h10 mm,沿 Y
宽度 b10 mm,沿 Z
几何范围X:0~100;Y:−5~5;Z:0~10 mm
弹性模量 E210000 MPa
泊松比0.3
固定端X = 0 的整个端面
自由端载荷X = 100 端面,沿 −Y,合力 100 N
分析类型Static, General;NLGEOM = OFF
网格2 mm,结构化六面体,C3D8I

钢被理想化为各向同性线弹性材料,没有定义具体钢种、屈服应力、塑性、重力或接触。本次没有惯性与重力项,不需要密度。

2. Part:建立三维实体梁

对应基础笔记:01 Part。

  1. 创建模型 CantileverDemo。
  2. 创建部件 Beam,选择 3D → Deformable → Solid → Extrusion。
  3. 在 XY 草图平面画矩形,两对角点为 (0, −5) 与 (100, 5)。
  4. 完成草图,拉伸深度输入 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。

  1. 创建材料 Steel。
  2. 在 Mechanical → Elasticity → Elastic 中输入各向同性弹性参数:E = 210000、泊松比 = 0.3。
  3. 创建 SteelSection,类型为 Solid → Homogeneous,选择材料 Steel。
  4. 选择整个实体体积,创建 AllCells 集合,并将截面赋予该区域。

材料、截面和截面赋予是三个独立步骤。仅创建材料不会自动使部件获得材料属性。

4. Assembly:实例和命名区域

对应基础笔记:03 Assembly。

创建部件 Beam 的 Dependent 实例 Beam-1,保持原点和方向不变。部件上的网格会传递到实例。

名称选取对象用途
FixedEndX = 0 的端面固定约束
TipSurfaceX = 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。

  1. 在 Part 上设置 Mesh Controls → Hex + Structured。
  2. Element Type 选择 Standard、Linear、3D Stress、Hex、Incompatible modes,确认单元为 C3D8I。
  3. Seed Part 输入全局尺寸 2 mm。
  4. Generate Mesh。
  5. 更新装配实例,建立 FixedNodes 和 TipNodes。

长度方向 50 个单元,高度与宽度方向各 5 个,总计 1250 个单元、1836 个节点。

C3D8I 的不相容模式改善一阶实体单元的弯曲表现,适合本例的规则、低畸变网格。但其精度对畸变敏感,不能把规则长方体上的效果直接推广到复杂网格。I 代表不相容模式,不是 C3D8R 中的减缩积分 R。Abaqus 文档:Incompatible mode elements

8. Job:保存、提交与确认完成

对应基础笔记:07 Job。

  1. 保存模型为 cantilever.cae。
  2. 创建作业 CantileverDemo,关联同名模型,使用 1 个 CPU。
  3. Write Input,保存 CantileverDemo.inp。
  4. Submit,保留一致性检查。
  5. 确认求解真正结束,再进入后处理。

本次 .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。

竖向位移 U2,单位 mm,变形放大 30 倍

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

9.2 Mises 应力

Primary Variable 选择 S → Mises。

Mises 应力,单位 MPa,节点外推与平均显示,变形放大 30 倍

总体上,固定端附近上下表面的应力较高,向自由端减小,反映弯矩沿梁长的变化。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

下载原始结果 JSON。

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 推送成功不代表网站已经部署完成。

这样每次仿真都能留下可检查的数据、可重复的操作和可阅读的笔记,出错时也能定位到具体阶段。