本文摘要(由ai生成):
这篇推文介绍了一个用离散元模拟土石混合填料强夯过程的算例,包括模型的主要内容、初始地基的生成、Clump 强夯锤的生成、强夯过程的模拟以及结果对比。研究结果表明,该模型的参数标定是合理的,模拟的夯锤在竖向的位移行为与实际情况类似。该模型可供读者进行相关研究,如利用 PFC 和 FLAC 耦合技术模拟加筋土的强夯过程。
1. 模型概述
土石混合填料的强夯过程是研究的热点。使用离散元对土石混合填料、砂土地基等进行模拟是天然的选择。本篇推文将详细介绍一个用离散元模拟土石混合填料强夯过程的算例,读者可以在此基础上进行自己的研究。本文末将给出关于这部分研究的具体展望。
本模型的主要内容如下:
1. 在PFC中生成初始地基模型
2. 使用hysteretic接触模型模拟强夯这类动力学问题
3. 使用PFC中的geometry命令,并生成Clump组成的强夯锤
4. 使用命令流控制Clump组成的强夯锤以一定的能量强夯地基
5. 对锤的位移时程曲线进行监测,对地基内的沉降数据进行提取和处理
本项目包含所有模型代码和数据处理代码及文件。推文将对本模型进行较为详细的介绍,是一个非常好的学习案例,可以供大家参考。模型如下图:
我们首先初始地基,先使用赫兹接触模型,加快计算效率,之后再变为hysteretic接触模型。hysteretic接触模型有个恢复系数,这是与赫兹接触模型的不同。
首先生成墙体,然后采用ball distribue命令生成土石混合料,求解平衡。这个时候的模型还没有进行重力沉降,都是悬浮的。
之后对整个模型施加重力,让其沉降,如下图,可以看到底部力链粗,上部细。
这个模型中生成Clump强夯锤往往是难点。
为了确定生成强夯锤的位置,我们先遍历模型中所有的ball,得到整个模型的最大高度。
fish define GetMaxh maxh=0 maxr=0 loop foreach local bp ball.list if maxh<ball.pos.z(bp) then maxh = ball.pos.z(bp) maxr = ball.radius(bp) endif endloop end @GetMaxh
然后再模型中用geometry 命令生成一个圆柱,指定了接下来生成Clump的形状,如下图所示:
geometry generate ... cylinder axis (0,0,1) base (0,0,[lz]) ... height [height_hammer] radius [radius_hammer]
接下来将该geometry ,导出为stl文件,并再导入。
geometry export 'cylinder.stl' format stl geometry import 'cylinder.stl'
接着我们就可以生成这个形状的Clump了
clump template create name 'clu_tem_hammer' ... geometry 'cylinder' ... surfcalculate ... bubblepack ratio 0.7 distance 170 clump replicate id [id_hammer] name 'clu_tem_hammer' density [density_hammer] position (0,0,[maxh+maxr+height_hammer/2.+dz])
这样强夯锤就生成完了,效果如下图:
在强夯前,我们需要将接触改为hysteretic接触模型,代码如下:
contact cmat default type ball-pebble ... model hysteretic property hz_shear [hz_G_hammer] hz_poiss [hz_miu_hammer] ... fric [fric_ball_hammer] dp_en [restitution_coef_ball_hammer] contact cmat default type ball-ball ... model hysteretic property hz_shear [hz_G_ball] hz_poiss [hz_miu_ball] ... fric [fric_ball_ball] dp_en [restitution_coef_ball_ball] contact cmat default type ball-facet ... model hysteretic property hz_shear [hz_G_wall] hz_poiss [hz_miu_wall] ... fric [fric_ball_wall] dp_en [restitution_coef_ball_wall] contact cmat apply
然后写一个循环函数,我们可以定义循环次数和每次夯击的能量,将Clump锤夯击进地基中。这个函数也是本项目的一大亮点,可以实现夯击的自动化,而不用一步步复代码。
fish define load loop local i (1,10) command clump delete clumps clump replicate id [id_hammer] name 'clu_tem_hammer' density [density_hammer] ... position (0,0,[maxh+maxr+height_hammer/2.+dz]) model mechanical time-total 0.0 clump history name [string.build('z_disp_hammer%1',i)] displacement-z id [id_hammer] model history name [string.build('t%1',i)] mechanical time-total endcommand point_hammer = clump.find(id_hammer) clump.vel.z(point_hammer) = -10.84 command model solve mechanical time [target_time] model save [string.build('Result%1',i)] endcommand endloop end @load
我们从代码中可以看到,整个夯击为10次,不断的重复删除、生成Clump夯击锤,然后以能级换算而来的速度夯击进土中,并监测了锤的位移。每次夯击都会生成一个结果文件。
基于此项目代码,作者模拟了李希等[1]中的数值模型,将文章进行了复现,下面展示部分结果,验证了本模型的正确性。
首先是夯击次数与夯沉量的关系:
夯击次数与夯沉量的关系与试验结果还是比较符合的,表明参数标定是合理的。
位移时程曲线:
本研究中的:
论文中的:
可以看出,模拟的夯锤在竖向的位移行为是类似的。夯锤打入后土体会沉降,且会有一个反弹的过程。
本文复现了一篇文献中的土石料强夯研究,您可以借助这份代码进行您自己相关研究。例如可以利用PFC和FLAC耦合技术,模拟加筋土,然后再强夯评价加固效果,或者分析加筋土的力学行为,钢筋与土之间的作用机理。
私信我获得。公g众h中:离散元及有限差分模拟,找到文章介绍获得。
该模型的主要文件如下,前5个是模型文件,第6个是用Python处理地基沉降的文件。
用Python对PFC中结果文件的批量处理也是个难题,本项目编写的代码解决了这一问题。
[1]李希,张勋,马新岩,等.土石混合填料强夯过程三维离散元模拟[J].北京交通大学学报,2020,44(03):88-92+108.