I believe the “solve relax” function in FLAC3D carries out stiffness reduction until the zone is null.
Previously a fish function was made available for UDEC and 3DEC, which instead “zonked” excavations, by incrementally reducing the reaction forces on the excavation boundaries when applied through the "block gridpoint apply reaction… " command.
Is a similar “zonk” function, which applies stress reduction to the excavation faces, rather than stiffness reduction of the excavation core available for FLAC3D?
Hello, The zone relax command reduces stiffness, stresses and densities of the zone. Currently, this is only available in FLAC3D with plans to add this functionality to other codes in the future. The “zonk” function is sufficient, but lacks when trying to keep spurious inertial effects in check. Here is more information regarding zone relax.
; A simple example to manually relax by gradually reducing the reactions
model new
model large-strain off
zone create radial-cylinder size 1 1 50 50 ratio 1 1 1 1.1 point 1 20 0 0 …
point 2 0 0.2 0 point 3 0 0 20 dimension 1 1 1 1 group “Rock” fill on group “Excavation”
zone reflect normal -1 0 0 origin 0 0 0
zone reflect normal 0 0 -1 origin 0 0 0
zone face skin
zone cmodel assign mohr-coulomb
zone property density 2 bulk 5e8 shear 3e8 friction 30 cohesion 2000
zone face apply vel-z 0 range group “bottom” or “top”
zone face apply vel-x 0 range group “west” or “east”
zone face apply vel-y 0 range group “north” or “south”
zone initialize stress xx -8 yy -10 zz -12
model solve
; so far the model should be in equilibrium
; now start relaxation
zone cmodel assign null range group “Excavation”
zone face group “Wall” range group “Excavation” group “Rock”
zone gridpoint fix velocity (0,0,0) range group “Wall”
model cycle 1 ; A must to calculate the reactions
; read reactions and store them
[global gpWall = list(gp.list)(gp.isGroup(::gp.list,“Wall”))]
fish operator get_reactions(gp)
gp.extra(gp,1) = gp.force.unbal(gp)
end
[get_reactions(::gpWall)]
[global starting_step = mech.step]
[global relaxation_steps = 5000] ; set how many steps to relax
fish define relaxation_factor
local fac = 1.0 - float(mech.step() - starting_step)/float(relaxation_steps)
if fac > 0.0 then
relaxation_factor = fac
else
relaxation_factor = 0.0
endif
end
fish define do_relaxation
loop foreach local gp gpWall
gp.force.load(gp) = -gp.extra(gp,1)*relaxation_factor
endloop
end
zone gridpoint free velocity range group “Wall”
model solve cycle [relaxation_steps] fish-call -1 do_relaxation
model solve convergence 1
model save “done”
I don’t understand why I obtain an higher displacement with relax 0 in the second case with rerspect to null and why, in the two steps excavation sequenc,e I obtain a different value as the final one (26 cm vs 44 cm).
Moreover, it seems that in the first step, even if I relax 90% of the forces, the displacement is very small, compared with the final one.
Is this command suitable to model the deconfinement factor?
It is less efficient to have an accurate answer without datafile. We suggest you send to the email address of technical support with complete datafile so that the issue can be duplicated.