【零基础学智能仿真-69】综合项目——材料参数驱动的仿真研究

课程摘要

本节通过材料与截面积联合筛选项目,整合参数记录、有限元计算、约束判断和报告生成。采用三组教学材料参数与三种截面积,逐一计算位移、应力和质量,寻找候选集内最轻可行方案;再将载荷提高20%,检查原结论是否仍成立。课程强调参数来源、单位一致、计算验收和失败记录,并用连续截面积分析说明离散最优的边界,为结业成果整理做好准备。


一、综合项目从一个明确问题开始

上一节建立了可检查的工具调用入口。本节把材料记录、参数扫描、有限元验收和报告生成连接起来,完成一个小型研究:

在相同杆长和拉力下,从给定材料与截面积中,选择满足位移和应力要求的最轻方案。

这里包含三个要素:

  • **目标:**质量尽可能小;
  • **约束:**位移和应力不能超限;
  • **设计空间:**给定材料与截面积的组合。

只有把这些条件明确下来,方案比较才有依据。

本节材料参数为课程自编教学值。`steel、aluminum、titanium`是教学标签,不对应真实材料牌号、加工状态或温度条件。

计算实际采用纯Python两单元一维杆有限元程序,复用第68节的校验与求解逻辑。


二、先写任务书,再开始计算

1. 几何与载荷

取:

\ L=1000\\ \\mathrm{mm} \\\ F=10000\\ \\mathrm{N} \\

杆为均匀截面,左端轴向固定,右端承受正向拉力,采用小变形线弹性模型。

划分两个等长单元,每个单元长度500 mm。

截面积候选为:

\ A\\in\\{80,\\ 100,\\ 120\\}\\ \\mathrm{mm\^2} \\

2. 材料记录

教学标签 弹性模量E / MPa 屈服应力 / MPa 密度 / kg·m⁻³
steel 210000 250 7850
aluminum 70000 150 2700
titanium 110000 300 4500

这些数值保存于 materials.json,同时记录教学来源声明和版本。

如果以后替换为真实材料,需要补充牌号、状态、温度、试验或数据库来源及适用范围。

3. 优化目标与约束

目标是最小化质量:

\ \\min m=\\rho AL \\

同时满足:

\ u_{\\mathrm{tip}}\\le1\\ \\mathrm{mm} \\\ \\sigma_{\\max}\\le0.6\\sigma_y \\

其中,0.6是本课设置的许用比例,不是引用某项设计规范得到的安全系数。

本节没有检查疲劳、连接、局部应力、腐蚀、温度影响或压缩屈曲。


三、单位检查:力学计算与质量计算并不使用同一组长度单位

位移和应力计算采用N--mm--MPa单位制:

\ 1\\ \\mathrm{MPa}=1\\ \\mathrm{N/mm\^2} \\

密度采用kg/m³,因此质量计算前需要转换:

\ A_{\\mathrm{m\^2}} = A_{\\mathrm{mm\^2}}\\times10\^{-6} \\\ L_{\\mathrm m} = L_{\\mathrm{mm}}\\times10\^{-3} \\

于是:

\ m= \\rho \\left(A_{\\mathrm{mm\^2}}\\times10\^{-6}\\right) \\left(L_{\\mathrm{mm}}\\times10\^{-3}\\right) \\

以titanium、100 mm²为例:

\ m = 4500\\times100\\times10\^{-6}\\times1 = 0.450\\ \\mathrm{kg} \\

如果直接把100和1000代入密度为kg/m³的表达式,质量会出现严重错误。

单位检查应发生在计算程序里,不能只依赖报告文字。


四、把一次计算扩展为九个工况

三组材料与三种面积组合,得到:

\ N=3\\times3=9 \\

每个工况采用相同流程:

\ \\text{读取材料} \\rightarrow \\text{生成参数} \\rightarrow \\text{输入校验} \\rightarrow \\text{有限元计算} \\rightarrow \\text{数值验收} \\rightarrow \\text{设计约束判断} \\

本节直接调用第68节的 execute 函数。每个工况均由程序生成自己的已确认参数,工具的几何和本构范围保持明确。

两种"通过"必须分开

数值验收检查计算是否符合当前方程和容差,包括残差、平衡及解析解比较。

设计约束检查位移和应力是否满足任务要求。

两者并不相同:

状态 含义
数值验收通过,设计可行 计算和设计约束均通过
数值验收通过,设计不可行 数值有效,但位移或应力超限
工具运行失败 没有可接受的计算结果,需要排查

例如,titanium、80 mm²可以通过数值验收,但位移超过1 mm,因此不能被选中。

算得正确,不等于满足设计要求。


五、九个方案的实际计算结果

材料 A / mm² 位移 / mm 应力 / MPa 质量 / kg 结论
steel 80 0.595238 125.000000 0.628 可行
steel 100 0.476190 100.000000 0.785 可行
steel 120 0.396825 83.333333 0.942 可行
aluminum 80 1.785714 125.000000 0.216 位移、应力超限
aluminum 100 1.428571 100.000000 0.270 位移、应力超限
aluminum 120 1.190476 83.333333 0.324 位移超限
titanium 80 1.136364 125.000000 0.360 位移超限
titanium 100 0.909091 100.000000 0.450 可行
titanium 120 0.757576 83.333333 0.540 可行

九个工况均通过数值验收,其中五个满足两项设计约束。

表中显示值经过舍入,程序按未舍入数值判断。

【插图1:质量与位移的方案比较】

横轴越靠左,方案越轻;纵轴越低,位移越小。

但可行性还包含应力约束,不能仅凭点在1 mm虚线下方就接受方案。

aluminum的三个方案虽然较轻,却不满足本题的位移要求。这不能被概括为"铝不适合轻量化",因为结论受到截面积候选范围限制。


六、用约束利用率解释"为什么不行"

定义位移利用率:

\ r_u = \\frac{u_{\\mathrm{tip}}}{1\\ \\mathrm{mm}} \\

应力利用率:

\ r_\\sigma = \\frac{\\sigma_{\\max}}{0.6\\sigma_y} \\

两者都不超过1,才满足当前约束。

程序使用 \(10^{-10}\) 的无量纲比较容差处理浮点边界。它是数值比较设置,不是设计裕量。

【插图2:逐项检查约束利用率】

以aluminum、120 mm²为例:

\ r_u=1.190476\>1 \\\ r_\\sigma = \\frac{83.333333}{0.6\\times150} \\approx0.925926\<1 \\

该方案的主要问题是位移超限,而非应力超限。

这能指导下一步研究:考虑扩大截面、缩短长度或调整材料,而不是笼统地说"仿真失败"。


七、怎样得到最轻可行方案?

正确顺序是:

  1. 保留数值验收通过的工况;
  2. 保留同时满足位移与应力约束的工况;
  3. 在这些工况中比较质量。

得到:

\ \\text{material}=\\text{titanium} \\\ A=100\\ \\mathrm{mm\^2} \\\ m=0.450\\ \\mathrm{kg} \\\ u_{\\mathrm{tip}}=0.909091\\ \\mathrm{mm} \\\ \\sigma=100\\ \\mathrm{MPa} \\

其许用应力为:

\ 0.6\\sigma_y = 0.6\\times300 = 180\\ \\mathrm{MPa} \\

应当这样表述:

在本节三组教学材料、三种截面积、10000 N拉力和两项约束下,titanium、100 mm²是当前离散候选集中最轻的可行方案。

这里限定了参数来源、载荷、约束和候选范围。


八、动手运行:从输入到研究结果包

1. 准备文件

解压课程包,将以下文件保存在同一目录:

复制代码
lesson69_study.py
lesson68_tools.py
materials.json

计算部分只依赖Python标准库。

完整主程序已放在讲义附录,求解器依赖也随包提供。

2. 先执行自测

复制代码
python lesson69_study.py --self-test

预期输出:

复制代码
SELF_TEST=PASS (nine cases, constraints, load scaling, empty set and failure retention)

自测检查九个组合、约束筛选、载荷比例关系、无可行方案和失败记录保留。

它不代表真实材料参数经过验证。

3. 生成研究结果

复制代码
python lesson69_study.py --out lesson69_run

预期输出:

复制代码
BASELINE: F=10000 N; cases=9; verified=9; feasible=5
best=titanium; A=100 mm2; mass=0.450 kg; u=0.909091 mm; stress=100.000000 MPa
LOAD_PLUS_20_PERCENT: F=12000 N; cases=9; verified=9; feasible=4
best=titanium; A=120 mm2; mass=0.540 kg; u=0.909091 mm; stress=100.000000 MPa
MODE=TEACHING_MATERIALS; method=PYTHON_1D_FEM; llm_run=False; DFT_run=False
SAVED=study.json, baseline.csv, load_plus_20_percent.csv, report.md

输出目录必须尚不存在。重复运行时更换 --out,以保留原记录。

4. 检查输出文件

文件 保存内容
study.json 输入、材料版本、完整工具结果、检查和失败原因
baseline.csv 基准载荷下的九行方案表
load_plus_20_percent.csv 载荷增加20%后的九行方案表
report.md 自动整理的教学结果摘要

程序还记录输入材料文件、主程序和求解器文件的SHA-256摘要,帮助核对复现时使用的版本。

摘要用于识别文件变化,不能证明材料来源真实。

5. 重绘正文图

安装绘图库后:

复制代码
python -m pip install matplotlib
python plot_lesson69.py

预期输出:

复制代码
FIGURES=3; SOURCE=REFERENCE_STUDY_JSON; materials=SYNTHETIC

绘图脚本默认读取随包的 reference_run/study.json。如果修改研究输入,应明确调整绘图数据路径,避免把旧图用于新结论。


九、载荷增加20%,原方案还成立吗?

保持材料、长度和截面积不变:

\ F'=1.2F=12000\\ \\mathrm{N} \\

在线性模型中:

\ u'=1.2u \\\ \\sigma'=1.2\\sigma \\

原titanium、100 mm²方案变为:

\ u'=1.2\\times0.909091 = 1.090909\\ \\mathrm{mm} \\\ \\sigma'=120\\ \\mathrm{MPa} \\

虽然应力仍低于180 MPa,但位移超过1 mm,原方案失去可行性。

重新扫描后,九个候选中有四个可行,最轻的是titanium、120 mm²:

\ m=0.540\\ \\mathrm{kg} \\\ u=0.909091\\ \\mathrm{mm} \\\ \\sigma=100\\ \\mathrm{MPa} \\

【插图3:载荷变化与重新筛选】

基准方案与重选方案的位移相同,是因为载荷与面积都增加20%,使 \(F/A\) 和 \(FL/(EA)\) 保持不变。

质量增加20%来自截面积增大。若几何不变,载荷增大本身不会改变质量。

这只是单因素情景检查,尚未纳入材料离散性、制造公差或多种载荷组合。


十、进一步思考:连续选择面积,结果会不会改变?

原任务只允许80、100、120 mm²。

如果允许面积连续变化,由位移约束:

\ A\\ge A_u = \\frac{FL}{Eu_{\\max}} \\

由应力约束:

\ A\\ge A_\\sigma = \\frac{F}{0.6\\sigma_y} \\

所以:

\ A_{\\min} = \\max(A_u,A_\\sigma) \\

基准载荷下得到解析参考:

材料 位移所需A / mm² 应力所需A / mm² 最小A / mm² 对应质量 / kg
steel 47.619 66.667 66.667 0.523333
aluminum 142.857 111.111 142.857 0.385714
titanium 90.909 55.556 90.909 0.409091

在放开原面积集合后的理想化问题中,aluminum反而具有更低质量。

但142.857 mm²不属于原候选集合,不能拿它冒充原任务中的可选方案。

这不是原结果算错,而是设计空间改变了。

连续面积结果保存在 study.json,并明确标记为解析参考,不是额外有限元扫描或智能优化结果。


十一、大模型、知识库和DFT应该放在哪一层?

环节 可以承担的工作 仍需核对
大模型 澄清目标、组织任务、解释结果 参数忠实性和文字结论
知识库 提供出处、单位和适用条件 数据版本与工况
DFT 在适当条件下贡献弹性参数等信息 收敛、张量约定、取向与尺度
有限元工具 执行规定模型 残差、平衡和参考解
筛选程序 判断约束并排序 阈值、单位和候选覆盖

本节三个材料标签没有经过DFT计算。理想晶体弹性张量也不能直接给出真实合金的宏观屈服、疲劳和加工状态数据。

本节报告由确定性程序生成。后续若接入大模型,应保留真实响应,并核对其解释是否符合原始结果。


十二、如果没有可行方案,怎么办?

可以尝试:

复制代码
python lesson69_study.py --force 50000 --out lesson69_highload

这组练习中,两组载荷均没有可行候选,程序输出:

复制代码
best=NONE

此时应讨论扩大设计空间、改变结构或调整任务,而不是仍从不合格方案中选一个"最优"。

还要区分:

  • **没有可行方案:**约束或设计空间需要讨论;
  • **工具运行失败:**输入或计算过程需要排查。

失败案例应保留,不能删除后再报告"全部成功"。


十三、研究结论怎样写?

可以采用下面的表述:

基于三组自编教学材料参数与三种截面积,完成九个均匀拉杆方案的两单元一维有限元计算。10000 N载荷下,九个工况均通过数值检查,五个满足位移和许用应力约束,其中titanium、100 mm²方案质量最低,为0.450 kg。载荷提高20%后,原方案位移超限;重新筛选得到titanium、120 mm²方案,质量0.540 kg。结论限定于本模型、参数来源和离散候选范围。

报告需要保留不可行方案及排除理由,不能只展示最终结果。


十四、课后练习与结业准备

练习1:为什么aluminum、80 mm²虽然最轻,却没有被选中?

参考答案:位移和应力均超限,不能只按质量排序。

练习2:数值验收通过、设计不可行,是否矛盾?

参考答案:不矛盾,计算正确与满足约束是两层判断。

练习3:载荷增加20%,质量会自动增加20%吗?

参考答案:几何不变时质量不变。本节重选后的质量变化来自面积增加。

练习4:连续面积参考中aluminum更轻,是否推翻离散结果?

参考答案:没有,两者设计空间不同,需要分别说明条件。

练习5:替换真实材料前,要补充哪些信息?

参考答案:牌号、状态、温度、试验或数据库来源、适用范围及版本,并重新计算。

相关推荐
天天代码码天天1 小时前
喊一声“小芽小芽”,让电脑陪孩子聊聊天:我的 C# 儿童语音伙伴升级了
人工智能
老纪的技术唠嗑局1 小时前
我们想和你一起,让 Agent 的优化有据可循
人工智能
桑年1 小时前
四、Pandas数据处理
人工智能·python·线性代数·pandas·数据可视化·数据处理
大雾的小屋1 小时前
卷积神经网络原理解析:从1989年手写邮编识别到现代计算机视觉
人工智能·计算机视觉·cnn
Luchang-Li2 小时前
DeepSeek v4.1 Flash SGLang引擎KV cache存储逻辑
人工智能
这是谁的博客?2 小时前
CUDA 内存一致性模型与同步原语深度解析:从弱内存序、作用域可见性到异步代理栅栏的 GPU 并发正确性底层原理
人工智能
u1301302 小时前
GitHub 热榜项目:周榜(2026-11-01)
人工智能·github
怕浪猫2 小时前
Super-agent 在各大模型厂商的应用情况
算法·面试·github
lifallen2 小时前
ub-mode skill:软件工程原则
人工智能·学习·ai·软件工程·ai编程