Excavation relaxation by incrementally reducing reaction forces

Hi,

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?

Thanks

1 Like

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.

1 Like

I just quickly made a small example:

; 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”

4 Likes

Hi,
I have a problem with the relax command.
If I simulate the excavation with null I get the following vertical displacements (max 32 cm):

If I simulate the excavation with relax minimum 0 I get the following vertical displacements (max 44 cm):

If I simulate the excavation in two steps with relax minimum setting:

first step: zone relax excavate minimum 0.1 name “full” range group “Excavation=Full”
second step: zone relax modify “full” minimum 0.

I get the following:
first step

second step

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?

Thank you.

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.

1 Like