Trying to model rock extraction through block caving method (using RpmMat)

Asked by Daniel Enrique Morales Molina

Hi all! ,
I'm Daniel Morales (a newcomer in Yade), and I'm trying to model the block caving method of an underground mine (http://technology.infomine.com/reviews/Blockcaving/ or https://sites.google.com/site/alexvyazmensky/). So, the basic idea is that if you make a "cave" bigger enough inside of a mountain, you change the geometry and then the stress field, leading to a fracture and comminution process, and you can extract the rock.
Basically, I want to reproduce the process shown in (https://sites.google.com/site/alexvyazmensky/) but in 3D.
And I think that the DEM method is an option. So, I want to use Yade to model the rock.
I've already downloaded the software and reproduced some examples. So I'm now trying (based on gravdep.py) to reproduce a Rock Material using RockPM material, but I can't make it work.
I've defined the material:

rockId=O.materials.append(RpmMat(young=30e9,poisson=0.2,density=4800,initCohesive=True,stressCompressMax=40e9,frictionAngle=radians(30)))

and the spheres:
sp=pack.randomDensePack(pred,spheresInCell=2000,radius=0.5)

but when I run the script, all the spheres show not cohesion.
I will appreciate any kind of help.
Thanks!.

Question information

Language:
English Edit question
Status:
Solved
For:
Yade Edit question
Assignee:
No assignee Edit question
Solved by:
Luc Scholtès
Solved:
Last query:
Last reply:
Revision history for this message
Anton Gladky (gladky-anton) said :
#1

Hi, Daniel,

to have a cohesion between particles you should have 0-distance
between them. Otherwise there will not be cohesion. Consider, for
example, using a hexagonal packing.

Anton

Revision history for this message
Daniel Enrique Morales Molina (dmorales-ing-uchile) said :
#2

Hi Anton,
Thanks for your answer, but still I can't model a material with cohesion.
I'll show my code (based on gravdep), so maybe someone can help me:
-----------------------begin code------------------------------------------
# based on gravity deposition in box (with a square hole),
# import yade modules that we will use below

from yade import pack, plot
from yade.ymport import stl
from math import *

# import geometry stl the box with a square hole made in blender
O.bodies.append(stl("/home/dmorales/Escritorio/Dropbox/CMM/Back Caving/yade/caja.stl"))
#package domain
pred=pack.inAlignedBox(minAABB=(-6,-6,-5),maxAABB=(6,6,5))
#cohfrictmat
rockId=O.materials.append(CohFrictMat(young=30e5,poisson=0.2,density=4800,frictionAngle=0,normalCohesion=10,shearCohesion=2))
#dense pack
sp=pack.regularHexa(pred,gap=0.001,radius=0.5)
# add the spheres
O.bodies.append(sp)

O.engines=[
   ForceResetter(),
   InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Facet_Aabb()]),
   InteractionLoop(
 [Ig2_Sphere_Sphere_ScGeom6D(),Ig2_Facet_Sphere_Dem3DofGeom()], #to handle CohFrictPhys we need SCGeom6D between spheres, and Dem3DofGeom between spheres and facet
  [Ip2_CohFrictMat_CohFrictMat_CohFrictPhys(),Ip2_FrictMat_FrictMat_FrictPhys()], #CoFrictPhys between spheres and FrictMat between spheres and facet
  [Law2_ScGeom6D_CohFrictPhys_CohesionMoment(),Law2_Dem3DofGeom_FrictPhys_CundallStrack()] # law2 for CohFrictPhys and FrictPhys
 ),
   GravityEngine(gravity=(0,0,-9.81)),
   NewtonIntegrator(damping=0.7),
   # call the checkUnbalanced function (defined below) every 1 seconds
   PyRunner(command='checkUnbalanced()',realPeriod=1),
   # call the addPlotData function every 200 steps
   PyRunner(command='addPlotData()',iterPeriod=200)
]
O.dt=0.5*utils.PWaveTimeStep()

O.trackEnergy=True

def checkUnbalanced():
   if utils.unbalancedForce()<.005:
      O.pause()

def addPlotData():
   plot.addData(i=O.iter,unbalanced=utils.unbalancedForce(),**O.energy)

plot.plots={'i':('unbalanced',None,O.energy.keys)}

plot.plot()
from yade import qt
qt.Controller()
qt.View()
--------------end code-------------
El 04-07-2011, a las 16:35, Anton Gladky escribió:

> Your question #163754 on Yade changed:
> https://answers.launchpad.net/yade/+question/163754
>
> Status: Open => Answered
>
> Anton Gladky proposed the following answer:
> Hi, Daniel,
>
> to have a cohesion between particles you should have 0-distance
> between them. Otherwise there will not be cohesion. Consider, for
> example, using a hexagonal packing.
>
> Anton
>
> --
> If this answers your question, please go to the following page to let us
> know that it is solved:
> https://answers.launchpad.net/yade/+question/163754/+confirm?answer_id=0
>
> If you still need help, you can reply to this email or go to the
> following page to enter your feedback:
> https://answers.launchpad.net/yade/+question/163754
>
> You received this question notification because you asked the question.

Revision history for this message
Anton Gladky (gladky-anton) said :
#3

> sp=pack.regularHexa(pred,gap=0.001,radius=0.5)

Try to use gap=0.0

Anton

Revision history for this message
Daniel Enrique Morales Molina (dmorales-ing-uchile) said :
#4

Hi Anton, I tried, but still the spheres behaves like spheres with no
cohesion.
Daniel

On Tue, Jul 5, 2011 at 3:56 PM, Anton Gladky <
<email address hidden>> wrote:

> Question #163754 on Yade changed:
> https://answers.launchpad.net/yade/+question/163754
>
> Status: Open => Answered
>
> Anton Gladky proposed the following answer:
> > sp=pack.regularHexa(pred,gap=0.001,radius=0.5)
>
> Try to use gap=0.0
>
> Anton
>
> --
> You received this question notification because you are a member of
> yade-users, which is an answer contact for Yade.
>
> _______________________________________________
> Mailing list: https://launchpad.net/~yade-users
> Post to : <email address hidden>
> Unsubscribe : https://launchpad.net/~yade-users
> More help : https://help.launchpad.net/ListHelp
>

--
Daniel Morales
75 17 61 39

Revision history for this message
Best Luc Scholtès (luc) said :
#5

Hi Daniel,

I am not sure since I am not the one who wrote this contact law but there is a parameter in

Ip2_CohFrictMat_CohFrictMat_CohFrictPhys()

called

setCohesionNow

which is False by default.

I had a look at the sources and I think that you should try to define it in your script like

Ip2_CohFrictMat_CohFrictMat_CohFrictPhys(setCohesionNow=True)

otherwise all your interactions will be frictional only.

Can anyone confirm?

  Luc

Revision history for this message
Daniel Enrique Morales Molina (dmorales-ing-uchile) said :
#6

Hi Luc,
Yes, I've tried as you said and works fine!
Thanks!. I'll continue with de modelling!
Daniel

On Tue, Jul 5, 2011 at 8:01 PM, Luc Scholtès <
<email address hidden>> wrote:

> Question #163754 on Yade changed:
> https://answers.launchpad.net/yade/+question/163754
>
> Status: Open => Answered
>
> Luc Scholtès proposed the following answer:
> Hi Daniel,
>
> I am not sure since I am not the one who wrote this contact law but
> there is a parameter in
>
> Ip2_CohFrictMat_CohFrictMat_CohFrictPhys()
>
> called
>
> setCohesionNow
>
> which is False by default.
>
> I had a look at the sources and I think that you should try to define it
> in your script like
>
> Ip2_CohFrictMat_CohFrictMat_CohFrictPhys(setCohesionNow=True)
>
> otherwise all your interactions will be frictional only.
>
> Can anyone confirm?
>
> Luc
>
> --
> You received this question notification because you are a member of
> yade-users, which is an answer contact for Yade.
>
> _______________________________________________
> Mailing list: https://launchpad.net/~yade-users
> Post to : <email address hidden>
> Unsubscribe : https://launchpad.net/~yade-users
> More help : https://help.launchpad.net/ListHelp
>

--
Daniel Morales
75 17 61 39

Revision history for this message
Daniel Enrique Morales Molina (dmorales-ing-uchile) said :
#7

Thanks Luc Scholtès, that solved my question.