了解动态波传播(Dynamic Wave Propagation)尤其是地震波的传播过程是岩土地震工程的一个重要任务,对于深部矿井的诱发地震控制、岩爆预测以及尾矿坝的稳定性分析具有非常重要的意义。下面的示例演示了 3DEC-FLAC3D 在一个简单的一维动态波传播问题上的耦合方案。
2. 动态模块回顾
在创建模型之前,首先回顾3DEC和FLAC3D的动态模块。解决动态波传播问题需要使用动态模块(model config dynamic),当进行耦合分析时,可以打开或关闭动态功能(model dynamic active=on/off)。
dynamic.safety.factor
dynamic.solve(STR)
dynamic.step
dynamic.time.total
dynamic.timestep
dynamic.timestep.given
dynamic.timestep.max
block.gp.mass.dynamic(BGP_PNT)
gp.dynamic.mul(GP_PNT)
gp.dynamic.timestep(GP_PNT)
zone.dynamic.mul(ZONE_PNT) [旧的格式gp_dynmul]
zone.dynamic.time.total(ZONE_PNT) [旧格式dytime]
zone.dynamic.timestep [旧格式dydt]
struct.node.dynamic.timestep(STRUCT_NODE_PNT)
Python函数:
itasca.zone.dynamic_time_total
itasca.zone.dynamic_timestep
itasca.zone.set_dynamic_time_total
itasca.zone.set_dynamic_timestep
3. 模型建立
创建一个 1x1x25米的FLAC3D模型,并在其上添加了一个 1x1x25米的3DEC块。材料性质均为弹性介质(zone cmodel assign elastic),然后对3DEC模型和FLAC3D模型分别定义耦合面,接着建立耦合,操作步骤与【FLAC3D和3DEC之间的耦合】的描述完全相同。动态模拟的关键步骤是定义波型,在真实的分析中,可以导入地震波。
zone face apply vel-x 1 fish wave range pos-z 0
5. 讨论
对边坡或大坝(包括尾矿坝)等地表结构的地震响应进行数值模拟时需要输入地震信号,地震输入通常由通过基底材料向上传播的平面波表示,而模型两侧的边界条件必须考虑在没有结构的情况下存在的自由场运动。大多数情况下,使用横向边界就可以,当然前提是边界应放置在足够远的距离上,以减少波的反射并实现自由场条件,如下图所示。在基底水平边界AC上施加地震剪切波,在垂直方向上沿AB和CD使用固定边界。边界的距离取决于土层的阻尼特性,当材料阻尼较高时,可以使用相对较小的距离;但是当材料阻尼较低时,边界距离会严重影响计算结果,小的边界距离会导致模型不切实际。
另一种方法是强制执行自由场运动,使边界保留其非反射特性,适当吸收来自结构的向外波,这种方法最初用于连续有限体积程序NESSI。FLAC3D使用了这种算法,对主网格与自由场网格私信并行计算。值得说明的是,Itasca软件的自由场边界是向外扩展分离的,而Plaxis的自由场边界是向内扩展连续的。
6. 代码
本文使用的代码来自于最新发布的Itasca V9.00.166【Itasca软件 V9.00.166 新功能和改进】,主要目的是测试软件的新功能,例子本身没有什么实际意义。
zone create brick size 1 1 25
zone cmodel assign elastic
zone prop density 1000 bulk 2e9 shear 1e9
zone face apply vel-y 0
zone face apply vel-z 0
block create brick 0 1 0 1 25 50
block zone gen edge 0.5
block zone cmodel assign elastic
block zone prop density 1000 bulk 2e9 shear 1e9
block gridpoint apply vel-y 0 range pos-z 25 50
block gridpoint apply vel-z 0 range pos-z 25 50
zone face group 'f3d_faces' range pos-z 25
block gridpoint group '3dec_gps' range pos-z 25
create zone-face-group 'f3d_faces' block-gp-group '3dec_gps'
fish define wave
global freq
if mech.time > 1.0/freq
wave = 0.0
else
wave = 0.5 * (1.0-math.cos(2.0*math.pi*freq*mech.time))
endif
end
40.0] =
zone face apply vel-x 1 fish wave range pos-z 0
zone his name 'source' vel-x pos 0 0 0
zone his name 'f3d' vel-x pos 0 0 20
block his name '3dec' vel-x pos 0 0 30
model his name 'time' dynamic time-total
model large-strain off
model solve time 0.06