当模型分组较多,在赋参时如果漏掉了某一分组或者某一范围的单元时,就会出现节点零刚度现象。
例如建立一个5*5*5的立方体,在z方向将模型分为5个组,以模拟5个地层,见图1。若只对其中某几个组赋参数并开始计算,则提示节点零刚度,见图2。
此时,解决方法有:1、仔细检查各模型分组赋参情况,确保每一个分组都已赋参;2、当模型分组较多,建议先对模型进行整体赋值,再分组赋值,如果分组间参数有不同,仍需排查各分组赋值情况,详情见命令流1。
图2 节点零刚度报错
命令流1:
;建立模型并分组
model new
zone create brick size 5 5 5
fish def group
loop i(0,4)
j = i+1
gname = string(j)
command
zone group @gname range position-z @i @j
endcommand
endloop
end
@group
;设置边界条件
zone face skin
zone face apply velocity-x 0 range group 'West' or 'East'
zone face apply velocity-y 0 range group 'South' or 'North'
zone face apply velocity-z 0 range group 'Bottom'
;赋本构以及赋参-方法1
zone cmodel assign elastic
zone initialize dens 1800
zone prop bulk 3e8 shear 1e8 range group '1'
zone prop bulk 4e8 shear 2e8 range group '2'
zone prop bulk 5e8 shear 3e8 range group '3'
zone prop bulk 6e8 shear 4e8 range group '4'
;zone prop bulk 7e8 shear 5e8 range group '5'
;分组5的赋值语句已注释,以模拟遗漏分组5赋参
;此时,直接计算会提示节点零刚度,解除注释即可正常计算。
;赋本构以及赋参-方法2
zone cmodel assign elastic
zone initialize dens 1800
zone prop bulk 3e8 shear 1e8
zone prop bulk 4e8 shear 2e8 range group '2'
zone prop bulk 5e8 shear 3e8 range group '3'
zone prop bulk 6e8 shear 4e8 range group '4'
;zone prop bulk 7e8 shear 5e8 range group '5'
;注意,此时分组5的赋值语句仍被注释,但可顺利计算
;此方法的弊端为,分组5作为被遗漏赋参的组,其参数为分组1单元的参数
;因此,若各分组间参数有不同时,仍需排查是否每个组都已经赋参
;如果当有分组的密度值没有赋上时,则会有以下提示:
;Zone 101 requires a density if gravity is non-zero.
;此时,只需排查各分组的密度赋值情况即可。
;设置重力加速度并求解
model gravity 9.81
model solve
======因素2======
因素2主要针对的是第三方软件建立的模型计算。按照因素1中提供的方法(尤其是方法2)仍不能解决节点零刚度问题时,需考虑出现零刚度的节点是否为多余节点。解决方法为:对模型进行merge操作,见命令流2:
命令流2:
zone gridpoint merge tolerance-relative 1e-5
;容差可选择相对容差(tolerance-relative)和绝对容差(tolerance-absolute)
;容差的值应该小于zone的最小尺寸
以某隧道模型为例,该模型通过midas-gts建立,导入flac3d之后,对模型整体赋参,计算时提示节点零刚度,详情如下:
model new
zone import 'test.flac3d'
zone face skin
zone face apply velocity-x 0 range group 'West' or 'East'
zone face apply velocity-y 0 range group 'South' or 'North'
zone face apply velocity-z 0 range group 'Bottom'
zone cmodel assign elastic
zone prop bulk 3e8 shear 1e8 dens 1800
model gravity 9.81
zone initialize-stresses ratio 0.5
model solve
图3 模型图
此时,考虑模型存在多余节点,对模型进行merge操作后,计算顺利进行,命令流以及计算结果如下。
model new
zone import 'test.flac3d'
zone gridpoint merge tolerance-relative 1e-5
zone face skin
zone face apply velocity-x 0 range group 'West' or 'East'
zone face apply velocity-y 0 range group 'South' or 'North'
zone face apply velocity-z 0 range group 'Bottom'
zone cmodel assign elastic
zone prop bulk 3e8 shear 1e8 dens 1800
model gravity 9.81
zone initialize-stresses ratio 0.5
model solve
通过fish函数获取每一个单元的组成节点,并与报错的88753号节点进行比较,通过设置判别条件,可判断其是否为多余节点,笔者已经证明,但不是本文讨论的重点,因此此处不再赘述。
如果出现节点零刚度的情况,首先应确认模型各个分组或者说整个模型都已经赋予了相应参数;如果模型全部赋予了参数仍提示节点零刚度,则应考虑存在多余节点,此时对节点进行merge。