ABAQUS里细观混凝土模型,骨料生成一般用Python脚本在CAE里跑,手动画不现实。圆形骨料最简单,椭圆和多边形更像碎石,先按Fuller级配算各粒径区间数量,再随机生成圆心和半径,投放用拒绝采样,新骨料与已投放骨料距离小于两者半径之和加最小间距就丢弃重投,循环到体积分数达标。多边形骨料先画外接圆,在圆周上按随机角度取顶点,做凸包检查,凹点删掉,再缩放旋转。脚本挂在File → Run Script下面,跑完生成Part和Assembly。
ABAQUS 2022,File → Run Script,D:\abaqus_plugins\agg_itz\main.py,Python 3.10.4,随机种子 20240612,体积分数 0.42,粒径 5–20 mm,最小间距 0.5 mm,ITZ厚度 0.08 mm,全局网格 0.6 mm,骨料内部 1.2 mm,界面 0.15 mm。
ITZ生成可以在脚本里对每个骨料轮廓向外偏置,内边界是骨料表面,外边界偏置0.08mm,二维形成环,三维形成壳或实体层,再和背景砂浆做布尔运算,背景块减所有骨料和ITZ得到砂浆。骨料与ITZ共节点,ITZ与砂浆共节点,网格不匹配就Tie。零厚度界面用Surface-based Cohesive,主面ITZ外表面,从面砂浆内表面,或者直接插cohesive单元。DIGIMAT生成骨料快,导入ABAQUS后ITZ网格经常要重划,COMSOL随机几何也类似,ABAQUS的Python接口改参数更直接。

有一次投200个骨料,空调坏了,办公室闷,旁边同事吃泡面,味道大,键盘上全是汗。布尔运算跑到一半CAE卡死,报错Cannot complete boolean operation. The resulting geometry has invalid edges. 以为体积分数太高,降到0.35重投,还是错。检查发现两个骨料几乎相切,最小间距设0.2,浮点误差导致重叠0.001,布尔失败。改成最小间距0.8,投放后做距离检查,距离小于半径和+0.05就删除重投。又发现ITZ偏置方向反了,偏到骨料内部,ITZ和骨料重叠,网格扭曲,msg里23 elements have negative Jacobian。打印每个骨料中心坐标,在CAE里量距离才看出来,调了一下午。
Property → Material → Mechanical → Elastic → Traction,Type: Traction Separation,Damage → Quads Damage,Kn 1e5,Ks 1e5,Kt 1e5,tn0 2.5,ts0 3.0,tt0 3.0,Gc 0.05,viscosity 1e-5。Interaction → Special → Cohesive → Surface-based。Step → Dynamic, Explicit,时间 0.01,质量缩放 1e-6。
网格方面骨料内部用Tet,ITZ用Sweep或Structured,厚度方向至少两层,0.08mm厚网格0.04mm,全局网格不能比ITZ厚,不然界面单元畸变。Mesh → Verify检查分析网格,看negative Jacobian和aspect ratio。Assembly里Merge/Cut,先建Part再Instance,布尔在Assembly里做。Set分Aggregate,ITZ,Mortar,材料指派按Set。加载和边界条件在Step里加,输出请求记得选SDV和DAMAGEFT。
跑之前检查Random seed,体积分数,最小间距,ITZ厚度,偏置方向,布尔顺序,Set名称,材料指派,网格尺寸,D:\abaqus_plugins\agg_itz\run_042,ITZ厚度 0.08,网格 0.
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删