Dealing with relaxation in sequential excavation

Hi guys,

I would like to ask for suggestion about how to deal with vertical displacement (upward) from stress relaxation due to large scale block excavation (block delete and/or block excavate commands) in open pit mining simulation. In initial stage, I always first solve with elastic only command and then reset displacement before solve for plastic stage. However in the next stages of excavation, I cannot reset vertical displacement because this can be distorted my solve result. Do you guys have any recommendation about this for me to deal with vertical displacement from relaxation in another run step?

Note: Stiffness parameters that I used are Young’s modulus= 2GPa and Poisson’s ratio = 0.3

Thanks in advance.

You could try a more sophisticated constitutive model that is stiffer during unloading than it is during loading. This is what people do with soil, but it may not be appropriate for rock. What you probably want to do is store all of the displacements in an extra variable at the end of the SOLVE ELASTIC ONLY, and then after solving again, subtract off the stored displacements for plotting. Example below.

model solve elastic only

; store gp displacements in extra variable 1
fish def store_disp
loop foreach gp block.gp.list
block.gp.extra(gp) = block.gp.disp(gp)
end_loop
end
;[store_disp]

; do the same thing using splitting (faster!)
[block.gp.extra(::block.gp.list) ::= block.gp.disp(::block.gp.list)]

model solve cyc 1000

; put change in gp displacements in extra variable 2
fish def delta_disp
loop foreach gp block.gp.list
block.gp.extra(gp,2) = block.gp.disp(gp) - block.gp.extra(gp,1)
end_loop
end
;[delta_disp]

; same thing with splitting
[block.gp.extra(::block.gp.list,2) ::= block.gp.disp(::block.gp.list) - block.gp.extra(::block.gp.list)]

2 Likes

This really help me to solve the problem! Thanks for your suggestion.

Is any way to plot displacement vectors from Block GP Extra that I was loop?

You would need to create vectors for plotting. Modify the second function as shown and then plot User Defined Data - Vectors

fish def delta_disp
loop foreach gp block.gp.list
dd = block.gp.disp(gp) - block.gp.extra(gp,1)

; this for contours
block.gp.extra(gp,2) = dd

; this for vectors
udv = data.vector.create(block.gp.pos(gp))
data.vector.value(udv) = dd

end_loop
end
[delta_disp]

1 Like

Thank you so much Jim.

Hi Jim, a quick one, will there be an Itasca constitutive model that is stiffer during unloading than it is during loading for rocks? Thanks.

This is a question for @cheng