首页/文章/ 详情

AI 替你算损伤:单轴/直剪/巴西,谁的破坏最脆

1月前浏览202

先看结论:同样一块材料,被压、被剪、被拉,坏起来的时点和集中度完全不同。这次我把"材料到底多坏"这件事交给了 AI——从读模型、抽数据、算损伤、画图,到把单轴/直剪/巴西劈裂三个工况横向比一遍,全程由大模型编排,我只负责在关键处校对。它把 PFC 里的离散裂纹,桥接成了连续损伤力学能直接用的量,还顺带回答了:这三个试验,谁的破坏最脆。


跑完一个 PFC 单元试验,你多半会盯着这几千条裂纹发呆。单轴 3859 条,直剪 977 条,巴西 370 条。可这些数字到底代表"材料多坏"?横向比不了,纵向也说不清。

你真正想问的是:材料什么时候开始损伤?损伤多大?哪里加速(崩)?

这三个问题都不是"裂纹几条"能直接回答的。以前,这得靠人一张张图看、一条条裂纹手动数。现在不一样了——AI 能直接把一堆离散裂纹压成连续损伤力学的标量 D,跟应力-应变叠到同一张图上,三个工况一次性横向比完。我要做的,只是在它算完以后,替它校正几个"是不是合理"的地方。

这篇文章本身,就是 VibePFC 的一次实操:让大模型读懂 PFC、自己写脚本算损伤、自动出对比报告。人从"手摸每一条裂纹"退到"只在关键处校准"。本文的方法、图、结论,全部由 AI 编排生成后再经人校对。


1. 一句话结论

三个工况跑下来,损伤的量级、时点、空间分布都拉开了,而且是 AI 一次性横比出来的:


  • 损伤量级:单轴 16.6% > 直剪 10.1% > 巴西 1.8%(键分数损伤终值)。单轴最"韧",能量耗散最充分;巴西最"脆",只断了 1.8% 的键就整体劈裂。
  • 损伤时点:只有直剪的损伤加速点先于峰值——6.48‰ 处损伤加速,峰值 7.80‰ 才到。剪切面在峰值前就成核贯通,这是剪切破坏"前兆可察"的标志。单轴、巴西都在峰后。
  • 破坏模态:三个工况都是剪切键主导(82%–90%)。这跟本构的 pb_ten / pb_coh 倒挂(键先剪坏)是一致的——破坏模态由材料参数定,不是加载路径定。

有意思的是,单轴峰值 90 MPa、巴西却只有 7.3 MPa 就裂了,但损伤量级巴西最小。强度低≠损伤大,这俩是两回事。这种"非直觉"的对比,正是把量横放在一起才看得出来的——也是 AI 干得比人快的部分。


2. 用哪个量当损伤?两个,别只用第二个

离散元里最直观的是键:断一条键,就是一处微裂纹。所以最自然的损伤是——断键占总键数的比例:

D_bond = N_break / N_total

但这条路只反映了"纯微裂纹",它看不到材料整体的刚度变化。所以我再叠一个宏观的、从应力-应变里挤出来的:

D_E = 1 − E_sec / E_0,其中 E_sec = σ / ε

E_0 取小应变线性段(σ < 40% 峰值)的切线模量,用线性回归拟合。

两个量必须并列,不能只留 D_E:


  • D_bond 是纯微裂纹损伤,微观、直观,不掺水。
  • D_E 是宏观模量掉多少,但它同时含了"塑性"和"软化"。峰后材料刚度骤降,D_E 会高估真实损伤。

单轴就是个典型:峰后 D_E 一路飙到 77%,而 D_bond 终值只有 16.6%。你要只看 D_E,会以为材料碎了四分之三,其实只断了不到六分之一的键。这两者的差距,本身就是"软化多少 vs 真裂多少"的信息。


3. 这套分析,AI 是怎么一步步做到的

我把它做成了一个可复用、可复现的流程,而不是一次性脚本:


  1. 读数据:每个工况的加载 history(应力、应变、累计裂纹数)已被 PFC 导出成 .his,AI 不再去摸模型,直接读这四列。
  2. 定损伤:D_bond = 断键/总键数、D_E = 1 − E_sec/E_0,E_0 用线性回归从小应变段拟合。
  3. 探总键数:每个工况的总键数 N_total 不一样(单轴 23212、直剪 9674、巴西 21090),AI 用探针脚本分别数出来,否则 D_bond 会算错归一化。
  4. 出图:叠应力-应变(上)和 D_bond/D_E(下)两联图,标峰值、标损伤加速点。
  5. 自己校对:AI 跑完会自查——峰值对得上记录吗?E_0 数量级合理吗?有没有 ε→0 的噪声尖峰?它发现单轴 crack_evol.his 的列序不对、巴西 D_E 算出负值,都主动暴露出来而不是藏着。

关键在这最后一条。AI 最难能可贵的不是"会跑脚本",而是它肯把不合常理的地方说出来,等你来拍板。比如巴西那个 D_E 负值,它没有偷偷抹掉,而是标出来问你"这是不是该解释一下"——这种"不确定就摊开"的尽责,才是把 AI 用进数值模拟该有的样子。


4. 三个工况怎么选

单元试验的意义,是用单一加载路径把材料的一种属性逼出来:

工况      
加载路径      
逼出什么      
单轴压缩      
轴向压      
完整应力-应变 + 压剪混合      
直剪      
沿剪切面滑移      
剪切破坏 + 残余锁固      
巴西劈裂      
径向拉劈      
脆性劈裂 + 单一贯通裂面      

选这三个,是因为损伤对路径敏感:同样一块材料,被压、被剪、被拉,微裂纹生发的时点和集中度完全不同——这正是"损伤不是个标量常数、而是个随路径演化的量"的最好证明。


5. 结果

5.1 单轴:压得最久,坏得最充分

图1 单轴压缩的应力-应变与损伤演化

alt  

单轴的应力-应变几乎全程近线性,峰值 90.05 MPa @ 5.58‰。但注意看损伤:峰值前D_bond 一直压着不到 0.3%,关键键是在接近峰值时才率先断的(峰时 D_bond 2.65%);峰值后裂纹才雪崩式增长,D_bond 终值 16.6%。

主走向 174.6°,接近水平但裂纹没能聚成一条贯通带——中部 |y|<5mm 里只有 15.4% 的裂纹。它是分散的压剪混合破坏,不是单一破裂面,所以能量最能耗散,最"韧"。

5.2 直剪:碎裂早,前兆最明显

图2 直剪试验的剪应力与损伤演化

alt  

直剪是最早"动手"的:峰值前D_bond 已经有 4.84% 键断了(单轴峰才 2.65%)。损伤加速点 6.48‰,早于峰值 7.80‰——剪切面在峰值前就成核贯通了。

峰后剪应力在残余平台(约 13 MPa)锁住,裂纹还在长但应力不涨。裂纹沿 y≈0 的剪切面聚成水平贯通带(63.5% 在 |y|<5mm),主走向 22.4°——标准的剪切盒沿中性面滑移。

这条"损伤先于峰值"是三个工况里独一份的,也正是剪切破坏能预报的根据。

5.3 巴西:最脆,只有一个裂面

图3 巴西劈裂的应力与损伤演化

alt  

巴西是最极端的:峰值前 D_bond 只有 0.18%,几乎没裂纹积累。应力-应变近乎理想线弹性,一波到峰值 7.33 MPa @ 4.04‰,然后瞬间掉下去。整个试样只断了 1.75% 的键就劈开了。

裂纹 90.3% 集中在 x≈0 的竖直贯通带上,主走向 89.1°,就是一个干净的径向劈裂面。破裂效率最高,材料也最"脆"。

一个"不合理"的值,别急着改:图3 里的 D_E 在峰值算出个负值(−3.34%),这不是 bug、也没被 AI 悄悄抹掉。巴西的应力-应变初始段有非线性硬化,E_0 的线性回归被那段拉低,导致峰值处的割线模量反而略高于拟合出的 E_0。物理上它是「峰值前没有刚度退化」——和 D_bond 只有 0.18% 互相印证。对这种小应变、纯脆性的试样,D_E 不敏感,以 D_bond 为准。


6. 从数据里挤出来的三件事


  • 损伤量级:单轴 16.6% > 直剪 10.1% > 巴西 1.8%。这不是"哪个材料好",是加载路径决定的能量分配方式:单轴到处都能裂,巴西只给一条路裂。
  • 损伤时点:只有直剪的加速点先于峰值。剪切破坏"前兆可察",压、拉破坏都是"峰值当天崩",没有前兆。
  • 空间效率:巴西 90.3% 裂纹挤在一条竖向窄带里(最集中),直剪 63.5% 挤在剪切带,单轴近乎均匀散布(最分散)。裂纹越集中,破坏越脆。

最后说个容易踩的坑:图里 E_0 是拿 “σ < 40% 峰值” 那一段回归出来的。材料要是应力-应变前段非线性(比如巴西的硬化段),E_0 会偏小,D_E 就可能失真——所以永远别只看 D_E,要把 D_bond 一起摆出来。这也是 AI 在自查清单里专门列出来的一条。


7. 完整参数与数据

变量      
单轴      
直剪      
巴西      
峰值应力      
90.05 MPa      
47.77 MPa      
7.33 MPa      
峰值应变      
5.58‰      
7.80‰      
4.04‰      
初始模量 E0      
16.98 GPa      
6.29 GPa      
1.75 GPa      
总键数 N_total      
23212      
9674      
21090      
D_bond 峰值      
2.65%      
4.84%      
0.18%      
D_bond 终值      
16.63%      
10.10%      
1.75%      
损伤加速点      
6.85‰      
6.48‰      
4.24‰      
剪切键占比      
86.4%      
82.0%      
90.0%      
破坏面      
分散未贯通      
y≈0 水平带      
x≈0 竖径向带      

这套 plot_damage 已经做成了 pfc-crack-damage 技能,接进 pfc-run 就能一个命令跑三个工况:同一个 .his 格式,--n-bond 传总键数,出来直接叠图。这就是把离散裂纹算成连续损伤的完整闭环——一条裂纹好数,一千条,让 AI 自己回答"材料多坏了"。

8. 关于 VibePFC

这套裂纹分析,从「走向玫瑰(看方向)」到「开度/错动(看量)」,再到这次的损伤变量(看有多坏、坏多快),就是 VibePFC 一直在做的一件事:把 PFC 从「能跑」做到「能看懂、能出图、能判断」。

而且这次是双线:AI 负责把离散裂纹算成连续损伤、三工况横比、自查不合常理的地方;人 只在关键处校准。这就是 VibePFC 的核心态度——不是让 AI 替你做科研,而是让 AI 把那些"看得见但懒得数"的数据翻译成人能懂的结论,你只管判断它说得对不对。

VibePFC 社区 · 一起把 AI 玩进 PFC
我成立了一个 VibePFC 社群,专门聊 AI 怎么落地到 PFC / 数值模拟——让大模型读懂模型、自己改脚本、自动排查"看不懂"的问题。收一个 50 元的门槛费。
想进群的同学,加 QQ 763388012,备注"vibePFC"即可。

附:本文用到的东西


  • 技能:pfc-crack-damage(两个损伤变量 D_bond / D_E,主出口 plot_damage.py)
  • 方法:键分数损伤 = 断键/总键数;割线模量损伤 D_E = 1 − E_sec/E_0(Kachanov);E_0 用 σ<40% 峰值段线性回归
  • 底层依赖:pfc-crack-export(裂纹 CSV)、pfc-run(跑探针脚本产 .his)
  • 数据:三工况加载 history + 探针总键数(单轴 23212 / 直剪 9674 / 巴西 21090)
  • 复现:单轴/直剪/巴西_损伤图.png(图1-3)、封面(三条损伤演化曲线)
  • 完整报告:损伤变量分析报告-单轴直剪巴西.html(自包含,三工况详尽指标)

参考资料


  • 本构:PFC 6.0 linearpbond(平行键)、2D 单元试验;探索/测试均在本地 PFC 6.0 控制台无头运行验证。
  • 损伤数学:Kachanov 连续损伤力学(割线模量退化);D_E 与 D_bond 的差异语义详见技能 design.md。
  • 本文裂纹参数为占位标定值,用于演示方法与 AI 工作流,不代表最终材料参数。

来源:超级大的lobby
非线性UG离散元裂纹PFC材料控制试验
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2026-09-29
最近编辑:1月前
lobby
硕士 | 无 擅长颗粒流PFC
获赞 963粉丝 5964文章 121课程 23
点赞
收藏
作者推荐
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈