2.1 基本原理
利用蒙特卡罗法产生随机数的方法也称为随机抽样法. 本文选用乘同余数法产生伪随机数,乘同余数法的一般形式是对任意初值x1由如下递推公式确定:
其中:xn表示数序列; a表示乘子; M表示模; modM表示除以模后取余数.
通过构造随机模型使得某一随机变量的数学期望等于所求的解,最基本的随机变量在区间[0,1]上服从均匀分布. 若产生[0,1]的均匀随机变量x,为了获取[a,b]上的随机变量X,则由式(3)经变换可得到:
X=a+(b-a)x(4)
其中:X,x均表示随机变量; a,b表示常数.
基于上述的均匀分布函数,随机生成骨料的中心点坐标,以及用均匀分布的随机变量产生一个随机粒径Di. 蒙特卡罗法以其特有的优点被广泛应用于计算数学和物理工程领域,成为解决许多复杂问题的重要手段. 蒙特卡罗法的优点有:程序结构简单,对计算机性能要求不高,在计算机上容易实现; 收敛速度与问题维数无关,受问题的条件限制影响较小.
2.2 程序研发
Abaqus软件具有很强的通用性,拥有前处理器、隐式求解器、显示求解器、后处理器等模块,可以解决许多复杂的非线性问题. Abaqus软件在混凝土和再生混凝土数值模拟方面应用较广,但由于软件本身的局限性,使得自动化建模、参数化分析等研究无法进行,需要通过二次开发或结合其它软件才能实现. 结合Python语言,程序设计流程如图2所示.
图2 设计流程
Fig.2 Design process
在Python脚本的编制过程中,首先定义模型的尺寸、骨料所占的百分比、骨料界面区的厚度以及老砂浆的厚度,其次根据基于以上骨料级配理论内置一个粒径分布函数,基于蒙特卡罗法内置一个random随机函数,从粒径d1,d2中生成一个随机浮点数,并获取粒径的随机数(d=d2+random()*(d1-d2)),根据设置的投放量的要求将骨料粒径分级并存入到数组中.
投放空间划分为均匀的小格子,调取随机粒径函数依次投放骨料,将骨料按级配随机投放到划分的均匀网格中,记录投放次数以及骨料的投放点的中心位置,设置不同骨料间的净距条件,若新投放的骨料与已投骨料之间无交点,则记录投放的中心位置,存入数组中; 若有交点,则删除新投放骨料,重新循环投放直到得到满足要求的骨料模型,再通过面平移得到新旧砂浆的界面区. 最后运用Abaqus和Python之间的交互作用[16],在Abaqus中进行装配以及网格和荷载的布置等,开始计算分析.
2.3 生成模型验证
将骨料粒径分为三级,分别为20~15 mm、15~10 mm、10~5 mm,再生骨料最大粒径为20 mm,最小粒径5 mm. 骨料投放的区域为边长为100 mm的立方体,其中投放率设置在45%~60%之间,图3为按投放率阶梯生成的三维细观模型.
图3 不同骨料含量模型
Fig.3 Different recycled aggregate models
经与文献[3-4]对比分析,本文方法建立的计算模型具有明显优势:本文方法可快速生成不同骨料含量的计算模型,建模效率高; 模型骨料符合级配要求,与再生混凝土真实细观结构吻合较好; 不同大小的骨料随机排列,分布均匀,满足随机性要求; 骨料投放率可达60%,满足数值计算要求.