先看结论:同样一块材料,被压、被剪、被拉,坏起来的时点和集中度完全不同。这次我把"材料到底多坏"这件事交给了 AI——从读模型、抽数据、算损伤、画图,到把单轴/直剪/巴西劈裂三个工况横向比一遍,全程由大模型编排,我只负责在关键处校对。它把 PFC 里的离散裂纹,桥接成了连续损伤力学能直接用的量,还顺带回答了:这三个试验,谁的破坏最脆。
跑完一个 PFC 单元试验,你多半会盯着这几千条裂纹发呆。单轴 3859 条,直剪 977 条,巴西 370 条。可这些数字到底代表"材料多坏"?横向比不了,纵向也说不清。
你真正想问的是:材料什么时候开始损伤?损伤多大?哪里加速(崩)?
这三个问题都不是"裂纹几条"能直接回答的。以前,这得靠人一张张图看、一条条裂纹手动数。现在不一样了——AI 能直接把一堆离散裂纹压成连续损伤力学的标量 D,跟应力-应变叠到同一张图上,三个工况一次性横向比完。我要做的,只是在它算完以后,替它校正几个"是不是合理"的地方。
这篇文章本身,就是 VibePFC 的一次实操:让大模型读懂 PFC、自己写脚本算损伤、自动出对比报告。人从"手摸每一条裂纹"退到"只在关键处校准"。本文的方法、图、结论,全部由 AI 编排生成后再经人校对。
三个工况跑下来,损伤的量级、时点、空间分布都拉开了,而且是 AI 一次性横比出来的:
有意思的是,单轴峰值 90 MPa、巴西却只有 7.3 MPa 就裂了,但损伤量级巴西最小。强度低≠损伤大,这俩是两回事。这种"非直觉"的对比,正是把量横放在一起才看得出来的——也是 AI 干得比人快的部分。
离散元里最直观的是键:断一条键,就是一处微裂纹。所以最自然的损伤是——断键占总键数的比例:
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 真裂多少"的信息。
我把它做成了一个可复用、可复现的流程,而不是一次性脚本:
.his,AI 不再去摸模型,直接读这四列。D_bond = 断键/总键数、D_E = 1 − E_sec/E_0,E_0 用线性回归从小应变段拟合。关键在这最后一条。AI 最难能可贵的不是"会跑脚本",而是它肯把不合常理的地方说出来,等你来拍板。比如巴西那个 D_E 负值,它没有偷偷抹掉,而是标出来问你"这是不是该解释一下"——这种"不确定就摊开"的尽责,才是把 AI 用进数值模拟该有的样子。
单元试验的意义,是用单一加载路径把材料的一种属性逼出来:
选这三个,是因为损伤对路径敏感:同样一块材料,被压、被剪、被拉,微裂纹生发的时点和集中度完全不同——这正是"损伤不是个标量常数、而是个随路径演化的量"的最好证明。
图1 单轴压缩的应力-应变与损伤演化
单轴的应力-应变几乎全程近线性,峰值 90.05 MPa @ 5.58‰。但注意看损伤:峰值前D_bond 一直压着不到 0.3%,关键键是在接近峰值时才率先断的(峰时 D_bond 2.65%);峰值后裂纹才雪崩式增长,D_bond 终值 16.6%。
主走向 174.6°,接近水平但裂纹没能聚成一条贯通带——中部 |y|<5mm 里只有 15.4% 的裂纹。它是分散的压剪混合破坏,不是单一破裂面,所以能量最能耗散,最"韧"。
图2 直剪试验的剪应力与损伤演化
直剪是最早"动手"的:峰值前D_bond 已经有 4.84% 键断了(单轴峰才 2.65%)。损伤加速点 6.48‰,早于峰值 7.80‰——剪切面在峰值前就成核贯通了。
峰后剪应力在残余平台(约 13 MPa)锁住,裂纹还在长但应力不涨。裂纹沿 y≈0 的剪切面聚成水平贯通带(63.5% 在 |y|<5mm),主走向 22.4°——标准的剪切盒沿中性面滑移。
这条"损伤先于峰值"是三个工况里独一份的,也正是剪切破坏能预报的根据。
图3 巴西劈裂的应力与损伤演化
巴西是最极端的:峰值前 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 为准。
最后说个容易踩的坑:图里 E_0 是拿 “σ < 40% 峰值” 那一段回归出来的。材料要是应力-应变前段非线性(比如巴西的硬化段),E_0 会偏小,D_E 就可能失真——所以永远别只看 D_E,要把 D_bond 一起摆出来。这也是 AI 在自查清单里专门列出来的一条。
这套 plot_damage 已经做成了 pfc-crack-damage 技能,接进 pfc-run 就能一个命令跑三个工况:同一个 .his 格式,--n-bond 传总键数,出来直接叠图。这就是把离散裂纹算成连续损伤的完整闭环——一条裂纹好数,一千条,让 AI 自己回答"材料多坏了"。
这套裂纹分析,从「走向玫瑰(看方向)」到「开度/错动(看量)」,再到这次的损伤变量(看有多坏、坏多快),就是 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)单轴/直剪/巴西_损伤图.png(图1-3)、封面(三条损伤演化曲线)损伤变量分析报告-单轴直剪巴西.html(自包含,三工况详尽指标)参考资料
D_E 与 D_bond 的差异语义详见技能 design.md。