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.
Thanks for your helpful script on gradually reducing the forces on the wall @cheng.
In my case, I would like to reduce the stresses on the wall from the geostatic pressure to a specific pressure (halmostatic pressure) that has the same value in all directions and gradually increases with depth.
How can I limit the final value with this so that I end up at this specific value after a specific creep time? I am starting with different primary stresses in the horizontal and vertical directions.
I hope someone can give me some help to get started.
If you are using something similar to the example provided above, you can just use an if statement in the do_relaxation function to limit the load applied with gp.force.load().
Hi, thanks for your reply. To get from geostatic pressure to halmostatic pressure (both depth-dependent), I found another workaround using a combination of fish-local and table with zone face apply command. For the geostatic pressure, I assumed an average value for the pressure gradient (0.022).
zone face apply stress-normal [0.022] table 'Pressure_reduction' time creep fish-local [[y]zone.pos.y(y)] range group 'Face'
In the table, I defined my reduction factor depending on the creep time.
Another question: Can I also use the zone face apply command to add a specific value that changes over the creep time, depending on the creep time?