ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

基于ANSYS的混凝土细观建模:多面体骨料与界面过渡区模拟

2026/9/23 8:52:30 拓冰建站 浏览量
基于ANSYS的混凝土细观建模:多面体骨料与界面过渡区模拟 1. 细观建模这事为什么值得折腾混凝土在宏观上看着是均匀材料但把它放大到毫米尺度粗骨料、砂浆、界面过渡区、孔隙、微裂缝全冒出来了。做混凝土细观模拟本质就是把这些真实组分的空间分布和力学行为“搬”进有限元软件里然后再去做损伤演化、裂缝扩展、强度预测这些宏观试验很难直接观测的事情。搞过混凝土材料试验的朋友肯定有体会想通过试验把界面过渡区ITZ的单独贡献拆出来几乎是做不到的。试件破坏之后裂缝到底是从骨料界面走还是穿过骨料内部肉眼能看到结果但很难定量。而细观数值模型可以自由控制骨料形状、级配、体积率、ITZ厚度和材料参数相当于把“配方”完全掌握在自己手里这对研究混凝土破坏机制、优化配合比、评估再生骨料或纤维增强混凝土都非常有参考价值。这个项目的核心目标是在ANSYS中建立一套混凝土细观3D模型骨料用多面体而非球体按给定级配实现高体积率密堆积并且在骨料周围生成一圈独立的界面过渡区单元。相比常见的球形骨料模型多面体骨料更接近真实碎石或卵石的轮廓应力传递路径和裂缝萌生模式也更贴近实际相比二维模型三维模型能捕捉骨料之间的空间连锁和约束效应结果更符合真实破坏规律。这套模型适合谁用结构工程和建筑材料方向的研究生、做细观数值计算的高校科研人员、从事混凝土材料数字孪生和性能预测的工程师还有想把自己试验数据“喂”进数值模型做参数反演的课题组。如果只做宏观构件分析用均匀材料加损伤本构就够了不必来碰细观模型但如果关心“裂缝从哪里起”“骨料咬合怎么影响软化和延性”这类机制问题这套细观模型值得折腾。需要提前说明的是本文基于常见实践整理建模过程中涉及的参数、命令流和算法思路以通用性为主大家结合自己课题的具体材料参数做替换即可。2. 多面体骨料生成从随机形状到真实级配2.1 为什么不用球体非要造多面体很多早期细观模型图省事直接把骨料简化成球体再随机扔进基体里。球体骨料模型做渗流、做弹性模量预测没问题但一旦涉及裂缝扩展和界面剥离球形骨料的几何约束太强了——真实碎石骨料有尖锐棱角这些棱角处应力集中明显是微裂缝最容易萌生的位置。另外球体骨料在空间里的堆积方式偏“理想”相邻骨料之间的相互锁嵌效应根本体现不出来模拟出来的混凝土延性往往偏大强度预测偏差也明显。多面体骨料则能较好地还原真实骨料的几何特征面数越多轮廓越接近卵石面数少、棱角突出则接近破碎石。将骨料的多面体几何与界面过渡区结合后应力在骨料棱角附近的集中程度可以被真实地反映出来裂缝的路径也更容易沿着界面过渡区扩展这与试验观测到的结果高度一致。2.2 多面体随机生成的核心算法思路要生成随机多面体骨料核心思路并不依赖复杂的三维建模软件而是采用“球面随机点凸包构造缩放拉伸”三步法全过程可在MATLAB或Python里完成最终输出ANSYS可直接读取的几何数据。第一步随机生成骨料中心点。这个过程不是纯随机撒点而是按照实际工程级配曲线的累计分布进行抽样确保大骨料、中骨料、小骨料的数量比例符合设计。第二步生成多面体凸包。在球面上随机取若干点通常8到14个对这些点做凸包运算得到一个多面体。多面体的面数由随机点数量决定。为保证骨料不出现“细长条”或“扁片”这种过于极端的形状可以对凸包进行各向异性的缩放约束比如三个主轴长度比控制在0.5到2.0之间。第三步按目标粒径缩放。将多面体统一缩放到参考粒径再乘上该骨料对应的粒径因子。这一步非常关键因为后面做混叠建模时骨料的实际几何尺寸必须精确控制否则要么体积率上不去要么相邻骨料互相穿插。这一套流程下来每颗骨料都是一个不规则的凸多面体既有随机性又保证了基本几何稳定。如果有更高的形状要求还可以在凸包基础上引入顶点扰动让骨料表面更粗糙、更接近自然碎石。2.3 级配怎么定从富勒级配到实际筛分混凝土细观模型的级配选择直接决定骨料的尺寸分布和体积率。常用方案有两种富勒级配曲线富勒基于最大密实度理论推导的连续级配公式是 P(D) (D/D_max)^0.5。这是细观模型中最常用的级配方式因为它天然对应最密堆积能让模型在给定体积率下容纳更多骨料。实际筛分级配根据具体配合比设计中的筛分数据直接指定各粒径区间骨料的质量或体积占比。实际编程时不要直接从概率密度抽样而是将级配曲线离散成粒径区间每个区间内的骨料数量按照体积份额换算。这一步换算容易出错很多刚开始做的人直接把质量比当成数量比来用结果小骨料数量爆炸、大骨料反而稀稀拉拉。举个例子如果5到10毫米粒径区间的骨料质量占比为30%换算成体积后考虑骨料密度一致体积占比同样是30%。但计算该区间骨料数量时要用“该区间总体积除以单颗骨料平均体积”而不是简单的概率分配。否则生成的骨料尺寸分布和实际配合比根本挂不上钩。2.4 密堆积如何把体积率从30%推到50%以上密堆积是细观模型建模里最头疼、最耗时的环节。真实混凝土中粗骨料体积率在40%到60%之间而随机投放算法如果处理不好往往只能做到30%左右再往上就会频繁出现骨料重叠怎么也放不进去。我常用的方案是“分级投放渐进收缩”策略先把所有骨料按粒径从大到小排序大的优先放。这种策略符合“先骨架后填充”的物理直觉大骨料占据空间主体小骨料填充缝隙。每次投放前做碰撞检测判断新骨料与已投放骨料是否相交。多面体相交检测比球体复杂很多需要调几何算法库但原理上就是判断两个凸包是否有公共点。如果骨料放不进去不要直接放弃而是执行“收缩”操作——把该骨料中心点的随机搜索半径逐步缩小换个位置重新尝试。这和真实混凝土搅拌过程中骨料“自己找到位置”的过程类似每个骨料最终在临近空间里找到稳定位置。多次尝试仍失败的骨料做降级处理将其尺寸缩放到当前空隙允许的最大尺寸或者放入下一批次以牺牲少量级配精度换取更高的整体体积率。这套流程跑下来体积率可以做到50%左右。如果再配合振动密实算法模拟振捣棒的振动给骨料施加微小随机位移还能进一步提升但计算量会显著增加。3. 界面过渡区建模ANSYS里怎么处理这层“薄弱环”3.1 为什么ITZ层绝对不能忽略界面过渡区是骨料与砂浆之间的薄层厚度一般在20到50微米。这个区域因为水膜效应和壁效应水灰比偏高、氢氧化钙晶体富集、孔隙率大是混凝土内部最薄弱的环节。试验统计表明混凝土在受荷时超过60%的裂缝起始于界面过渡区。在细观模型里如果没有ITZ层骨料和砂浆直接紧密连接界面强度被人为抬高模拟出来的混凝土强度和延性都偏大破坏模式也会从“界面产生裂缝并扩展”错变成“骨料内部直接破坏”这显然和物理事实不符。建立ITZ层单元不仅能在力学行为上模拟出这个薄弱环节还能在后续做裂缝扩展分析时为裂缝沿界面扩展提供天然的“指引路径”。3.2 ITZ几何生成蒙皮法生成ITZ层最实用的方式叫“蒙皮法”对骨料的每个表面面片沿外法线方向偏移一个厚度 t_ITZ得到一层薄壳几何壳与骨料表面之间的封闭区域就是ITZ单元所占据的空间。具体步骤如下导出骨料多面体的面片数据包括所有顶点坐标和三角形面片索引。计算每个面片的法向量。将面片顶点沿法线方向偏移t_ITZ得到外表面。原骨料表面和外表面之间的区域在有限元里可以划分成一层薄壳单元层内网格厚度即是ITZ厚度。蒙皮法的好处是ITZ厚度均匀可控网格质量较高缺点是如果骨料形状过于尖锐法线方向偏移后可能出现尖角处外表面自相交。解决方法是在骨料生成阶段就对尖锐棱角做平滑化处理把顶点最小夹角限制在15度以上。3.3 共有节点还是界面单元这是个关键选择在ANSYS中实现ITZ层有两种主流方案共节点方案骨料、ITZ、砂浆三种材料在相接界面上共用节点网格连续。这种方案建模最简单应力应变在界面处连续传递适用于弹性分析和损伤萌生阶段研究。但如果要模拟裂缝沿界面滑移、脱粘这种方案不够灵活。界面单元方案在ITZ与骨料、ITZ与砂浆之间插入零厚度或有限厚度的界面单元如ANSYS的INTER系列。界面单元可以定义法向和切向的粘结-滑移本构模拟脱粘过程。这种方案更符合真实物理机制但建模工作量和非线性计算成本都显著增加。从实用角度出发建议第一批模型用共节点方案跑通计算流程后续研究裂缝扩展时再升级到界面单元方案。一次到位上界面单元新手很容易因为接触设置不当导致计算不收敛平白消耗大量时间。3.4 ITZ厚度的设定与敏感性分析ITZ厚度不是随便取的它和水泥粒径、水灰比、骨料表面吸附性都有关系。细观模型中常用的取值范围是20到100微米具体取值建议结合文献数据或自己的显微硬度试验结果。不同尺度模型对ITZ厚度的敏感程度不同。当骨料粒径为毫米级时ITZ厚度取20微米和取50微米对整体强度的影响可能在5%以内但ITZ厚度的变化对裂缝路径影响非常明显——更厚的ITZ让裂缝更容易沿着界面绕行导致宏观延性更好但极限承载力下降。建议在建立主模型前先做3到4组不同ITZ厚度的敏感性测试找到对结果不太敏感的范围值再固定在该范围内进行参数研究。这样做既能保证精度又能避免每改一次ITZ厚度就重新建一遍模型的低效循环。4. ANSYS APDL实操从几何数据到可计算有限元模型4.1 数据接口如何将多面体几何导入ANSYS在多面体骨料生成工具Python或MATLAB中最终输出的应是ANSYS能直接读取的几何数据。我推荐用CDREAD/CDFILE格式或者直接生成APDL脚本。最稳妥的方式是写一个Python脚本直接生成APDL命令流文件里面包含所有骨料的多面体面定义和体定义。以Python输出APDL为例核心思路是为每颗骨料生成一个block或polyhedron的定义语句。ANSYS支持用节点和面来定义体虽然也可以直接用CAD导入STP模型但几十上百颗骨料逐个导入再装配效率反而更低直接在APDL中生成几何更干净。典型数据产生格式每颗骨料一个中心坐标、若干顶点坐标、面片索引列表输出内容顶点作为关键点K面片作为面A再通过面围成体VA4.2 材料参数与单元类型选择单元类型推荐使用SOLID185或SOLID186。对于规则六面体网格SOLID185完全够用且计算效率高对于四面体网格或复杂过渡区网格SOLID187更稳定。材料参数方面需要准备三套材料区域弹性模量(GPa)泊松比抗压强度(MPa)抗拉强度(MPa)粗骨料50~700.16~0.20120~2006~10砂浆基体20~300.20~0.2430~503~5界面过渡区15~250.22~0.2620~351.5~2.5这些参数不是固定的实际值要根据原材料试验获取。注意ITZ的弹性模量通常介于骨料和砂浆之间但强度明显低于二者——这正是它在模型中扮演“弱环节”的底气。对于材料本构弹性阶段用线弹性就行进入损伤和破坏研究阶段推荐在ANSYS里用Concrete Damaged Plasticity模型或直接调用户自定义材料子程序UMAT。4.3 网格划分策略几何越复杂网格越要讲究网格划分是细观模型最重要的一个环节也是很多朋友“卡壳”的重灾区。ITZ层非常薄如果网格尺寸划分不当整个模型很容易出现畸形单元计算不收敛。我的经验是分三步走先对砂浆基体划分粗网格网格尺寸控制在骨料最小粒径的1/3到1/5。这样能保证网格数量不至于爆炸。对ITZ层单独划分网格使用分层网格或薄壳网格厚度方向至少划分1个单元且保证单元长宽比不要超过5:1。对骨料区域划分中等网格并在骨料表面与ITZ接触的位置做局部加密。这里有个很实用的技巧先画骨料和ITZ再画砂浆。这样边界处的节点能更好地吻合不容易出现节点错位和强制约束产生的虚假应力集中。4.4 边界条件与荷载施加细观模型常用来做单轴压缩和单轴拉伸模拟。边界条件建议采用“底部固支、顶部均匀位移加载”的方式。用位移控制加载比用力控制更容易收敛尤其在裂缝扩展阶段位移控制可以捕捉到软化段力控制则容易发散。加载速率要注意有限元显式或隐式求解时加载速率过快会引入惯性效应导致结果偏大。建议加载速率设为准静态范围即应变率10⁻⁵/s量级并检查动能与内能的比值。如果动能占比超过5%就要把加载速率再放慢。周期性边界条件在细观模型里也是一个好选项。如果研究的是代表性体积元RVE而不是单一大试件建议用周期性边界条件来消除边界效应结果更均匀。ANSYS里可以通过CE约束方程来施加周期性边界条件。5. 试算案例一个立方体试件的完整建模过程5.1 案例参数设定假设我们要建一个100mm×100mm×100mm的标准立方体试件粗骨料体积率为45%骨料粒径范围为5mm到20mm采用富勒级配曲线ITZ厚度为50微米。这样规模的计算模型骨料数量大约在80到120颗之间。如果粒径范围更宽比如从2mm到30mm骨料数量会急剧增加到几百颗计算量成倍增长。建议第一轮模型把粒径下限控制在5mm以上先把流程跑通再逐步放宽。5.2 建模时间与计算资源预算建模阶段骨料生成和投放耗时最长。用Python脚本做多面体生成和密堆积计算8核心桌面CPU大概需要2到6小时。网格划分在ANSYS中大约需要30到60分钟。单轴压缩有限元求解如果网格量在100万到200万单元之间16GB内存的台式机通常能跑单工况计算时间大约4到12小时。解析时建议第一步只跑到峰值荷载前30%检查应力云图是否合理、有没有穿透或畸变单元确认无误后再放全长时程。这能帮你省下至少半天以上的无效计算时间。5.3 算例结果解读的关键指标计算完成后不要只看“应力-应变曲线对不对”。要重点检查以下几点破坏模式查看等效塑性应变云图是否能看出裂缝从ITZ起点、沿界面扩展、汇入砂浆、形成贯通裂缝的过程如果应力集中直接出现在骨料内部说明ITZ参数设置过强或骨料本身过于脆弱。强度指标单轴压缩模拟得到的峰值应力要落在试验值的合理波动范围内。偏差超过20%先回头检查级配和体积率再检查材料参数最后检查边界条件。泊松比响应加载初期横向应变与纵向应变的比值应接近材料宏观泊松比。如果偏差过大可能是模型几何结构刚度分布不合理。局部应力集中统计骨料棱角附近的应力峰值看是否在ITZ单元中率先达到破坏准则。如果砂浆中先出现大范围屈服说明骨料体积率偏低或ITZ强度设得过高。6. 常见问题与排查技巧实录6.1 骨料投放率始终上不去这是密堆积算法最最常见的问题。如果你尝试了很多次体积率始终卡在30%以下大概率是投放顺序或收缩策略出了问题。排插步骤先检查粒径区间是否过宽。跨度太大时小骨料会严重堵塞大骨料之间的空隙。解决方法是把投放过程分成多轮每轮只投放一个粒径区间的骨料从小到大还是从大到小可以测试但我实际用下来从大到小的整体效果更稳定。其次检查碰撞检测算法本身。多面体相交检测很吃实现细节如果用的是简化包围盒检测会出现大量假碰撞导致明明有空位但算法判定重叠。这一步务必用精确的凸包相交判断。6.2 ITZ网格出现了大量畸变单元薄层结构网格畸变是细观模型的老大难。核心原因有两类一是骨料表面三角形面片质量太差存在狭长三角形偏移后自然产生畸形六面体二是ITZ厚度与骨料表面局部曲率半径不匹配凹角处网格严重压缩。解决方法是骨料生成阶段就限制三角形面片的最小内角做一次网格质量检查去掉质量极差的面片再进入下一步。另外ITZ厚度可以稍微放宽到80到100微米牺牲一点精度换取计算稳定性在第一批模型里非常划算。6.3 计算不收敛怎么快速定位非线性计算不收敛的排查顺序如下先看网格质量如果最小雅可比行列式值接近0或为负直接重新划分这些区域的网格。再看接触设置如果是界面单元方案检查接触刚度、摩擦系数和粘聚力参数是否合理缩小时间步重新尝试。最后看边界条件有没有约束不足导致的刚体位移。约束不足判断方法很直观——查看第一步增量后的位移云图如果某一块区域位移异常巨大基本就是欠约束。6.4 计算时间不可接受模型太大导致的计算时间过长两个最高效的解决办法对称性利用和网格尺寸重新分配。如果试件几何、级配分布和边界条件都是对称的可以只建1/2或1/4模型计算量立刻降为原来的1/4到1/8。不过注意如果研究裂缝扩展裂缝路径可能不再对称这时对称模型只适合做到峰值前阶段。调整网格尺寸上砂浆基体远离ITZ的区域可以使用较粗网格将加密区限制在ITZ周围和骨料接触区域附近。这样网格总量可以降低30%到50%而精度几乎不受影响。7. 从模型到研究这套细观模型还能往哪个方向延伸模型建好并验证通过后可以做很多延伸工作。我给几个值得尝试的方向作为参考多尺度联合把细观模型算出来的等效力学参数回传给宏观构件模型。这就是“细观-宏观”两尺度联动分析。比如梁柱节点的滞回曲线、剪力墙的推覆曲线都可以从这个体系里得到更可靠的输入参数。温度场耦合混凝土高温下骨料和砂浆的热膨胀系数不匹配会产生热应力裂缝。在细观模型基础上加温度条件可以直接模拟火灾下混凝土的爆裂和内部损伤演化。再生骨料替代研究真实再生骨料外面裹着一层老砂浆在模型里可以把“骨料老ITZ新ITZ”看成三层结构对比不同替代率下力学性能的变化规律。纤维增韧模拟在砂浆基体里随机投放短切纤维研究纤维跨接裂缝对混凝土韧性的提升机制。骨料和纤维共存时的空间竞争关系在细观模型中展现得淋漓尽致。从我个人的使用体验来说这套“多面体骨料ITZ层细观建模”最大的价值在于把混凝土的复杂破坏机制从“黑箱”变成了“透明箱”每次后处理查看应力云图和裂缝路径时都能清晰看到裂缝如何绕过抗拉强度更高的骨料、沿着薄弱的界面展开最终汇成宏观的破坏面。这种直观的机制洞察是均匀材料模型给不了的。最后分享两个建模过程中最实用的建议第一不要一上来就追求高体积率和大粒径范围先用小模型比如30%体积率、一两个粒径区间把整个流程跑通再逐步升级到高体积率全级配模型第二所有几何生成脚本和ANSYS命令流一定要做好版本管理骨料投放参数、ITZ厚度、网格尺寸这些关键变量要记录在案否则改了参数忘记记录回头排查结果差异时只能推倒重来。