资讯详情

混凝土细观模拟入门:实体ITZ与CDP模型下的损伤演化分析

📅 2026/10/11 4:14:46 | 华诺云谱 👁 阅读
混凝土细观模拟入门:实体ITZ与CDP模型下的损伤演化分析
我接触混凝土细观数值模拟也有几年了最初从宏观均质模型转过来的时候整天对着云图发呆不知道那些花花绿绿的损伤斑块到底算不算数。后来把骨料-砂浆-界面过渡区ITZ这套细观三相结构真正吃透了才体会到细观模拟最迷人的地方在于你不需要预设裂缝路径裂缝会自己从材料最薄弱的地方长出来。这篇内容就专门写给想入门的初学者算例路线用的是实体单元过渡区加混凝土损伤塑性CDP模型也就是标题里说的“塑形损伤”那套东西。整体思路是随机生成圆形骨料在骨料外面包一层实体ITZ再浸泡在砂浆基体里用CDP模型去算单轴压缩观察损伤从哪里萌生、怎么贯通。这个组合特别适合起步原因后面会详细说。先给个总览整个流程包括细观几何生成、过渡区实体化分区、网格划分、CDP参数标定、加载计算、结果判读六大块。我会把每一步的关键参数和踩坑点都摊开讲并且告诉你为什么这么选、不这么选会出什么问题。适合完全没接触过细观模型的初学者也适合已经试过内聚力界面模型但被收敛问题折磨到想放弃的朋友。1. 为什么细观模拟这条路我推荐从实体ITZ加CDP模型走起1.1 从宏观到细观算的东西到底有什么差别宏观混凝土模型把材料看成均匀的一团输入一个应力-应变关系算出来的是整体响应裂缝用固定裂纹带或者弥散开裂来处理。这种做法的局限很明显你无法回答“裂缝为什么从这里开始”的问题。细观模型就不一样了它把混凝土拆成骨料、砂浆、界面过渡区三个部分破坏过程是由材料内部的强度不均主导的界面过渡区最弱所以损伤往往先在这里萌生。很多初学者看了几篇文献一上来就想复现“界面脱粘-裂缝绕行-骨料桥接”的经典破坏过程于是直接学习内聚力单元建模。这个东西原理不难但用起来非常折腾界面本构参数怎么标定、初始损伤准则用哪个、损伤演化刚度折减怎么给、切向和法向行为怎么耦合任何一个参数都能让计算翻车。我见过有人光是调内聚力参数就调了两个月最后还是不出裂缝。这不是能力问题是这条路不适合入门。1.2 过渡区用实体单元而不是内聚力单元的原因实体单元方案在概念上朴素得多把ITZ当作一层真实厚度的、力学性能较弱的材料和骨料、砂浆一样用实体单元离散。这样做有几个实打实的好处。第一网格是连续的各相之间不需要定义接触和绑定天然共节点不会出现接触收敛问题第二ITZ本构直接复用CDP模型参数体系统一不用单独学一套界面本构第三损伤云图里能清楚看到ITZ内部和边缘的损伤演变视觉上非常直观。当然实体ITZ也有它的软肋厚度怎么取、网格怎么划、参数怎么折减这些都需要经验。但这些问题都有相对成熟的工程化做法可控性远高于内聚力模型。所以我的建议很明确初学者先把实体ITZ方案跑通理解细观模拟的基本逻辑再考虑要不要上高端界面模型。这一篇我们就把实体ITZ这条路走到头。2. 动手前先把三件事定下来ITZ厚度、骨料占比、网格量级2.1 ITZ厚度别学论文取0.02mm先取能画网格的厚度界面过渡区在真实混凝土中大概只有20到50微米但做细观数值模拟时很少有人真按这个尺寸来。原因很简单如果ITZ厚度取0.02毫米而试件尺寸是150毫米网格量会爆炸而且ITZ层内至少要有一两层单元单元高宽比会非常难看计算精度反而下降。实际工程研究中细观模型的ITZ厚度通常会放大到0.1到0.5毫米这是为了在“物理真实性”和“计算可行性”之间找平衡。初学者我建议直接取0.2毫米配合骨料直径2到8毫米的圆形骨料网格密度适中算一个2D平面应变试件非常轻松。等你把流程跑通了再尝试不同厚度做参数敏感性分析。这里有个经验规律ITZ越薄模型越接近真实但网格划分难度和收敛难度同步上升ITZ越厚破坏越集中在过渡区试件的整体强度会被明显拉低。所以不要盲目跟风文献里的某个值先跑一个你自己试件尺寸下合理的厚度。2.2 骨料级配与体积率先用Walraven思路简化投放细观模型的骨料级配一般参考Fuller级配曲线也就是最大堆积密度曲线。在2D简化模型里常用Walraven公式把三维级配换算到二维平面上的骨料面积占比。说白了就是给定最大粒径、最小粒径和骨料总体积率就能算出每个粒径区间内需要放多少颗骨料。初学者不需要把公式推导啃一遍但得理解背后的投放逻辑粒径大的骨料少放几颗粒径小的多放几颗整体面积率要符合设定。我建议第一个算例把骨料面积率控制在45%到55%这是混凝土细观模型的常见区间。低于40%模型偏“砂浆”破坏形态不够典型高于60%骨料挤在一起ITZ互相重叠投放算法容易失败网格划分也会跟着遭殃。另外首算例不要搞太复杂的级配用三种粒径段就够了比如4到8毫米、8到12毫米、12到16毫米每段按级配曲线分配数量这样既贴近实际又不至于让投放过程变成瓶颈。2.3 网格量级与单元类型选择2D细观模型建议用平面应变单元比如常用的四节点减缩积分单元类型名称类似CPS4R或者带非协调模式的四节点单元类似CPS4I。平面应变假设对于模拟混凝土试件的内部截面是合理的计算量比3D模型小一到两个数量级非常适合初学者反复试参数。我一个典型的150毫米见方试件骨料六七十颗网格尺寸控制在1到2毫米总单元数也就几千到两万之间单次计算在普通笔记本上几分钟到半小时就能跑完。3D模型当然更真实但骨料投放、网格生成、计算代价都会显著上升。我的建议很直接第一个算例别碰3D。很多教材里的漂亮结果图都是3D颗粒模型但那是研究级配置不是入门配置。先让2D算例的所有环节跑通你对整个流程的心理预期才会建立起来。3. 随机骨料生成与过渡区实体化的全过程实操3.1 投放算法核心随机落位与重叠判断骨料投放的本质是一个带约束的随机填充问题。你要在矩形试件区域内按“从大到小”的顺序放置圆形骨料先放大粒径后放小粒径这样小颗粒能钻进大颗粒留下的空隙填充率会更高。每放一颗新骨料之前都要检查它与所有已放骨料的距离如果两圆心距离小于两半径之和就说明重叠了重新生成随机位置。另外还要检查骨料是否超出试件边界一般要求骨料圆心离边界至少一个半径加一点余量避免骨料被边界切掉太多。这个算法的实现有很多现成脚本但初学者最好自己写一遍因为“重叠判断”这个逻辑在细观建模里到处都在用。实现起来就是一个循环加距离判断几十行代码的事。写完之后你会发现后面做骨料级配统计、坐标输出、半径分布检查都是在这个基础上加几行而已。3.2 在Python里生成几何数据再导入建模软件我推荐的流程是先用Python脚本生成骨料的圆心坐标和半径把数据保存成文本文件然后回到有限元软件的草图环境里用脚本或手动方式把这些圆画出来。更省力的做法是直接在支持Python脚本的有限元软件里写一个建模脚本连画图带装配一起完成。但初学阶段我建议用“笨办法”导出坐标看一眼数据再在软件里用画圆功能逐个输入圆心和半径。虽然繁琐但你会对每个骨料的几何位置有直观认识排查问题时脑子里能浮现出模型的形状。生成骨料之后接下来就是过渡区实体化。这一步在草图里的操作逻辑是每个骨料圆先画一个同圆心的大圆半径比骨料半径大0.2毫米这个大圆和骨料圆之间的环形区域就是ITZ。然后把所有大圆画好之后在试件矩形框里做布尔切割把砂浆区域、ITZ区域、骨料区域分成三个独立的“面”。这三个面在装配里是共边界的网格划分时只要保证边界节点对齐就是共节点模型不需要任何接触定义。3.3 网格划分的卡点和技巧实体ITZ方案最容易翻车的地方就是网格划分。环形区域如果太薄网格会出现极端畸变单元角度很差计算时很容易报负特征值错误。解决的办法有几个第一环形区域沿厚度方向至少划分两圈单元这要求ITZ厚度不能小于两倍网格尺寸第二骨料内部网格可以适当粗一些因为骨料弹性模量高、破坏概率低但ITZ区域的网格必须加密第三环形区域的单元类型不要用太高级的二次单元一阶减缩积分单元在大变形和损伤问题里反而更稳。如果你发现ITZ区域的网格形状仍然很差可以考虑先用“自由网格”划分整个试件然后检查环形区域的单元质量。正常情况下0.2毫米ITZ、1毫米骨料内网格、0.5毫米ITZ内网格这个配置能划出比较均匀的网格。实在不行就把ITZ厚度调到0.3毫米网格尺寸跟着放大一点。记住网格质量是细观模型的生命线宁可用多一点单元也不能用畸变单元硬算。4. CDP模型参数模板一套能直接跑通的塑性损伤参数4.1 五个塑性参数怎么取CDP模型在有限元软件里需要输入的塑性参数一共五个膨胀角、偏心率、双轴抗压强度与单轴抗压强度之比、拉压子午线不变量应力比、粘性系数。前四个在绝大多数工程分析里都有成熟的默认经验值膨胀角取30到35度混凝土和砂浆都适用偏心率取默认的0.1强度比取1.16不变量应力比取2/3。这几个值一般不敏感稍微调整影响不大初学者完全可以直接照抄。粘性系数是初学者最容易忽略的参数。默认值是0代表完美的率无关塑性听起来很严谨但实际计算中一旦进入软化段局部损伤集中会导致切线刚度奇异计算极容易发散。实践经验是把粘性系数设成1e-5到1e-3之间的一个小值它相当于给本构加了微小的粘性正则化能让损伤局部化过程稳定下来。注意这个值不是越大越好太大会让结构响应偏离真实脆性行为峰值强度被抬高。我一般从1e-4起调还发散就往上加能收敛就别再加。4.2 拉压应力-应变曲线和损伤曲线的生成CDP的关键输入是压缩和拉伸的应力-非弹性应变关系以及对应的损伤因子曲线。很多初学者在这个环节直接卡住因为他们拿到的材料数据往往是完整的应力-应变曲线但CDP需要你把它转换成“非弹性应变”形式还要额外给出损伤演化。先说压缩。你手上有一条从实验或规范公式得到的混凝土单轴受压应力-应变曲线把横坐标从总应变变成非弹性应变公式是非弹性应变 总应变 - 应力/初始弹性模量。也就是说扣掉应力-应变关系里按弹性模量“恢复”的那部分弹性应变剩下的就是非弹性应变。然后把这组数据按表格输入软件。损伤因子可以用一个简化公式估算损伤因子 1 - 应力/(初始弹性模量乘以总应变) 的平方根。这个公式来自能量等效假设虽然不是严格推导但作为工程近似完全够用。拉伸曲线的处理方式相同只不过拉伸软化段更陡开裂应变范围很小通常在1e-4到1e-3之间。一个实操小技巧输入曲线时上升段尽量多取几个点特别是接近峰值的位置下降段不能一直给到应变为零那样软化太彻底计算极难收敛。压缩曲线我一般给到峰值后下降到峰值应力的20%就截断拉伸曲线给到峰值应力的10%左右截断。这种截断处理是工程常态不会显著影响破坏模式预测。4.3 砂浆、骨料、ITZ三套材料怎么差异化细观模型里三套材料的参数必须拉开差距否则细观模拟就失去了意义。骨料可以设定为线弹性材料弹性模量通常取50到70吉帕泊松比0.16到0.2密度按骨料实际取值。骨料一般不参与塑性损伤这样可以减少非线性计算的规模。砂浆的强度参数需要比整浇混凝土略高一个常用做法是取相同强度等级混凝土的参数再上浮10%到20%因为宏观混凝土的强度已经被ITZ削弱了。ITZ的参数是三套材料里最关键的。经验取值是ITZ的弹性模量取砂浆的50%到70%抗压强度取砂浆的60%到80%抗拉强度取砂浆的50%到70%。具体数字会影响破坏路径ITZ越弱裂缝越倾向于贴着骨料走试件宏观强度越低ITZ强度提高裂缝就更容易穿骨料。你可以先按我建议的中间值算一版然后用参数敏感性分析去观察破坏模式的变化这本身就是一个很好的学习题目。注意ITZ的CDP曲线也要按比例整体缩放不能只缩放峰值强度而把软化段斜率留成和砂浆一样。5. 单轴压缩算例的完整加载流程与不收敛排查5.1 边界条件、加载速率与单位制匹配新手在细观模型里最容易犯的第一个错误是单位制混乱。我建议全部用毫米-吨-秒单位制长度用毫米密度用吨每立方毫米应力单位是兆帕力的单位是牛。比如混凝土密度2400千克每立方米换算过来是2.4e-9吨每立方毫米。如果你习惯用千克每立方毫米也是可以的但力单位会变成千牛不同软件后处理时容易看错强烈建议统一。边界条件方面单轴压缩算例通常用位移加载。试件底部约束竖直方向位移顶部用一个刚性垫板接触或者直接约束顶面节点的竖直位移。我更推荐用刚性垫板在试件上方画一个弹性模量极高的钢垫板给垫板顶面施加竖直向下的位移这样可以让试件顶面的应力分布更均匀避免直接约束试件顶面节点导致的端部应力集中。底部同样可以加一块垫板。垫板的模量取钢材的即可比如210000兆帕算弹性即可。加载速率在位移控制下其实不太敏感关键是增量步控制。第一个算例建议把总位移设为试件高度的0.3%到0.5%。比如试件高100毫米就压0.3到0.5毫米。初始增量步设0.001最小增量步1e-7最大增量步0.01。这样算出来能看到包括软化段在内的完整响应。5.2 不让计算随便发散的三个旋钮细观模型比宏观模型更容易发散原因在于局部破坏导致应力重分布非常剧烈。我的排查顺序是固定的先看网格再看加载最后看本构。网格方面检查ITZ区域是否有畸变单元可以用软件的单元质量检查功能。加载方面检查是不是增量为长导致的突然跨越突变点把最大增量调小再试一次。本构方面就是前面说的粘性系数和曲线截断位置。如果还是发散还有一个常用招数打开自动稳定化功能。有限元软件通常提供体积粘性稳定机制它对收敛性帮助很大代价是引入微小的额外能量耗散所以稳定化参数不能给太大。一般从默认值或者1e-4开始试能收敛就尽量调低。我自己调试时有个习惯先把粘性系数调到1e-3放开算确保能出结果再一点点降回1e-5到1e-4找到收敛性和准确性的平衡点。这一步对初学者来说很重要你要直接上手默认零粘性大概率第一个算例就摔跟头。5.3 计算时间和输出控制细观模型的计算时间主要取决于非线性迭代次数和单元数量。2D入门算例在普通笔记本电脑上通常不会超过半小时。如果算得很慢先检查单元类型是不是用了二次单元或者把网格加密过头了。初次验证模型时网格不用太密能看出破坏趋势就行等确认参数没问题再把网格加密做正式计算。输出控制方面损伤相关的场输出一定要开比如拉伸损伤因子、压缩损伤因子、等效塑性应变。力-位移曲线的数据你还需要记录反力信息和顶部位移后处理时用软件直接提取支座反力和加载点位移就行。增量步不要存得太多可以设置每5个增量步输出一次这样文件体积小后处理也流畅。6. 损伤云图和力-位移曲线怎么看出门道6.1 损伤云图里隐藏的破坏信息计算跑完之后第一件事是拉出损伤云图。压缩损伤因子常见变量名类似DAMAGEC和拉伸损伤因子类似DAMAGET要分开看。在单轴压缩试件里初期扩散到整个试件的是微小的压缩损伤它们零星出现在ITZ和砂浆的局部应力集中区。随着载荷增加你会发现损伤开始沿着某些ITZ区段连接成带形成一条倾斜的损伤带——这正是细观模拟最让人兴奋的时刻因为你没有预设裂缝位置裂缝路径是材料自己“选”出来的。有一个细节容易看走眼损伤因子云图不等于裂缝云图。损伤因子达到0.9以上才代表材料基本丧失承载力0.3到0.6的范围更多是微裂纹密集区。所以你看到一大片0.3的损伤区域不要慌这不是宏观裂缝只是损伤萌生区。真正的贯通裂缝会在云图上表现为一条清晰的高损伤窄带。初学者要培养这个判读习惯否则很容易被满屏的颜色吓到误以为模型坏了。6.2 从反力位移数据到应力应变曲线后处理时拉出加载点的位移和支反力横坐标位移除以试件高度就是应变纵坐标反力除以试件截面积就是应力。这样就能画出应力-应变曲线。曲线的形状能告诉你很多信息初始线性段斜率对应的是模型的等效弹性模量它的数值应该和宏观混凝土的弹性模量大致接近峰值应力是模型的抗压强度应该落在你预期的强度范围内峰值后的下降段斜率反映的是软化行为和延性如果下降得太陡说明损伤局部化过强模型偏脆这往往是网格尺寸效应的结果。网格尺寸对细观模型的影响很大。单元越大裂缝带宽越大耗散能量越多宏观曲线下降段越平缓单元越小裂缝越窄曲线越陡。这也是细观模拟的一个难点结果对网格有一定依赖性。初学阶段你不要指望完全消除这个效应只要保证你对比的算例用的是同一套网格密度趋势性结论就依然有效。6.3 结果合理性检查清单与常见误判每次算完我都按一个固定清单检查结果。第一应力-应变曲线的峰值是否在合理范围内。如果你设的砂浆是C30宏观试件峰值应力可能在25到30兆帕之间因为ITZ会削弱整体强度。如果峰值高得离谱多半是ITZ参数设得太强或者骨料没参与破坏。第二损伤带是否穿过ITZ并绕过骨料这是细观破坏的典型特征。如果损伤全部在砂浆里乱长可能是ITZ太强或者网格太粗。第三拉伸损伤和压缩损伤的比例是否合理单轴压缩试件中通常拉伸损伤更明显因为混凝土受压破坏本质上是横向受拉开裂导致的。还有一个常见的误判把边界处的应力集中看成损伤。如果损伤云图在试件端部出现整齐的一排高损伤区大概率是加载边界效应不是真实破坏。这时候检查是不是没设垫板或者垫板刚度不够。边界效应的问题不解决后面所有结果分析都没有意义。说到底细观模拟的精髓不在于软件操作多熟练而在于你能不能把每一张云图和每一条曲线背后的力学故事讲出来。实体ITZ加CDP模型的这套组合就是帮你建立这个叙事能力最快的一条路。跑通第一个算例之后你可以试着把圆形骨料换成随机多边形把2D换成3D球体把单轴压缩换成三点弯曲每前进一步你对混凝土破坏过程的理解都会更立体。
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑