def get_plast ;定义函数get_plast
shearnow = 1 ;shearnow、tensionnow
tensionnow = 2 ;shearpast、tensionpast
shearpast = 4 ;的state value分别为1、2、4、8
tensionpast = 8 ;具体内容参见fish reference 2.5.3.3
v_shear_now = 0 ;需求的shearnow、tensionnow
v_tension_now = 0 ;shearpast、tensionpast的体积,初始值为0
v_shear_past = 0
v_tension_past = 0 ;flac默认的值
;xx=z_state(find_zone(11779),0) ;通过本步可验证
p_z = zone_head ;单元指针
loop while p_z # null ;开始循环,如果单元指针不为空,执行以下操作
if and(z_state(p_z,0),shearnow) = shearnow then ;判断语句,判断单元如果是shearnow状态
v_shear_now = v_shear_now + z_volume(p_z) ;则把该单元的体积加进v_shear_now
endif
if and(z_state(p_z,0),tensionnow) = tensionnow then ;同上判断语句,判断单元是否为tensionnow状态
v_tension_now = v_tension_now + z_volume(p_z)
endif
if and(z_state(p_z,0),shearpast) = shearpast then ;同上,判断单元是否shearpast
v_shear_past = v_shear_past + z_volume(p_z)
endif
if and(z_state(p_z,0),tensionpast) = tensionpast then
v_tension_past = v_tension_past + z_volume(p_z)
endif
p_z = z_next(p_z) ;单元指针指向下一个单元
endloop
ii = out('shear_now : ' + string(v_shear_now)) ;输出shear_now的体积值
ii = out('tension_now : ' + string(v_tension_now)) ;输出tension_now的体积值
ii = out('shear_past : ' + string(v_shear_past)) ;输出shear_past的体积值
ii = out('tension_past : ' + string(v_tension_past)) ;输出tension_past的体积值
end
get_plast ;执行函数
;;;运行fish后,执行pri fish就可以显示shearnow(当前剪切破坏),tensionnow(当前拉帐破坏)
;;;shearpast(过去剪切;破坏),tensionpast(过去拉帐破坏)的体积值