plastic dissipation
Hello,
I want to calculate the plastic dissipation in triaxial test.
I use "Law2_ScGeom_
"FATAL /home/hamdi/
This is my code :
from yade import ymport, utils , plot
import math
#---------------- SIMULATIONS DEFINED HERE (assembly, material, boundary conditions)
#### packing (previously constructed)
PACKING=
OUT=PACKING+
#### Simulation Control
DAMP=0.4 # numerical damping
saveData=100 # data record interval
iterMax=60000 # maximum number of iteration (to be adjusted)
saveVTK=10000 # Vtk files record interval
#### Boundary Conditions
confinement=-1e6
#uniaxial_
delta_stress=-1e6
stress_max=-200e6
strainRate=-0.01
#### Material microproperties -> Lac du Bonnet granite (cf. A DEM model for soft and hard rock, Scholtes & Donze, JMPS 2013)
intR=1.4464# allows near neighbour interaction and coordination number K=13 (determined with coordinationNum
DENS=4000 # could be adapted to match material density: dens_DEM=
YOUNG=65e9
FRICT=10
ALPHA=0.4
TENS=8e6
COH=160e6
#### material definition
def sphereMat(): return JCFpmMat(
def wallMat(): return JCFpmMat(
#### preprocessing to get dimensions
O.bodies.
dim=utils.
xinf=dim[0][0]
xsup=dim[1][0]
X=xsup-xinf
yinf=dim[0][1]
ysup=dim[1][1]
Y=ysup-yinf
zinf=dim[0][2]
zsup=dim[1][2]
Z=zsup-zinf
R=0
Rmax=0
numSpheres=0.
for o in O.bodies:
if isinstance(
numSpheres+=1
R+=o.
if o.shape.
Rmax=
Rmean=R/numSpheres
O.reset() # all previous lines were for getting dimensions of the packing to create walls at the right positions (below) because walls have to be genrated after spheres for FlowEngine
#### now we construct the surrounding walls with right dimensions
### walls
mn,mx=Vector3(
walls=utils.
wallIds=
### packing
beam=O.
### set a color to the spheres
for o in O.bodies:
if isinstance(
o.shape.
#---------------- ENGINES DEFINED HERE
#### simulation is defined here (DEM loop, interaction law, servo control, recording, etc...)
O.engines=[
InteractionLoop(
[Ig2_
[Ip2_
#[Law2_
[Law2_
),
]
plot.plots=
plot.plot()
#---------------- SIMULATION STARTS HERE
#### manage interaction detection factor during the first timestep and then set default interaction range ((cf. A DEM model for soft and hard rock, Scholtes & Donze, JMPS 2013))
O.step();
### initializes the interaction detection factor
SSgeom.
Saabb.aabbEnlar
#### coordination number verification and reinforcement of boundary particles
numSSlinks=0
numCohesivelinks=0
numFrictionalLi
for i in O.interactions:
if not i.isReal : continue
if isinstance(
numSSlinks+=1
if i.phys.isCohesive :
numCohesi
else :
numFricti
print "nbSpheres=", numSpheres," | coordination number =", 2.0*numCohesive
#### APPLYING ISOTROPIC LOADING
triax.stressMask=7
triax.goal1=
triax.goal2=
triax.goal3=
triax.max_vel=0.01
while 1:
if confinement==0:
O.run(
break
O.run(100,True)
unb=unbalance
#note: triax.stress(k) returns a stress vector, so we need to keep only the normal component
meanS=
print 'unbalanced force:',unb,' mean stress: ',meanS
if unb<0.005 and abs(meanS-
O.run(
e10=
e20=
e30=
break
#O.save(
#### APPLYING DEVIATORIC LOADING
#### !!! if you want to block boundary particles to simulate extreme friction on platens -> not sure that it works!
#for o in O.bodies:
#if isinstance(
#if (o.state.
#o.state.
#o.shape.
#### Do you want friction on loading platens? (Rk: not much effect as the interparticle friction is set to the minimum value-> 10 here for the particles)
O.bodies[
O.bodies[
triax.stressMask=7
triax.goal1=
triax.goal2=
triax.goal3=
triax.max_vel=1
for i in range(0,
if ( abs(triax.goal2) < abs(stress_max) ):
O.run(200,True)
triax.
triax.stressMask=5
triax.goal1=
triax.goal2=
triax.goal3=
triax.max_vel=1
#triax.
O.run(iterMax)
Question information
- Language:
- English Edit question
- Status:
- Answered
- For:
- Yade Edit question
- Assignee:
- No assignee Edit question
- Last query:
- Last reply:
Can you help with this problem?
Provide an answer of your own, or ask Yor1 for more information if necessary.