yade-users team mailing list archive
-
yade-users team
-
Mailing list archive
-
Message #13704
Re: [Question #404135]: intRadius(aabbenlargefactor) doesn't work
Question #404135 on Yade changed:
https://answers.launchpad.net/yade/+question/404135
Description changed to:
Hi All,
I am a beginner and have been trying to remodel the triaxial compression process in below paper:
[1] Scholt E S L and Donz E F E D E. 2013. A DEM model for soft and hard rocks: Role of grain interlocking on strength [J]. J. Mech. Phys. Solids.,61(2): 352-369.
In chapter 2.2 interaction range is introduced.
Relavent contents can be found in Yade documentation:
https://yade-dem.org/doc/user.html#scene-construction
(user's manual--->scene construction-->creating interactions)
I tried to run a simpler triaxial test using CohFrictMat as a first
step. There are 500 particles, and parameters goes as follows: young =
5e6, normalcohesion = shearcohesion = 4500, confining pressure = 10kPa.
Particles are packed randomly in a 0.15*0.15*0.3 box. Confining pressure
is reached by internal compaction.
After a stable status is reached, count the number of all interactions. Then the aabbenlargefunctor and interactiondetection factor is altered to 1.25(or 1.5). Next step, count the total number of interactions again and the two factors are set to 1.
This method didn't work correctly:
1. Whatever the two factor is, 1.25 or 1.5, total interactions before and after alteration show little difference.
2. Besides, after the alteration, the utils.avgNumInteractions() is printed instantly and always turn out to be less than 7. According to [1], this number should be around 10 when intRaius is 1.25, and around 14 when intRadius is 1.5.
3. Stress and strain data is recorded, stress-strain curve show no obvious difference under different intRadius.
The code is like this:
*********************************************************************
from yade import pack
num_intr = 0
O.materials.append(CohFrictMat(young=5e6, poisson=0.333,frictionAngle=0,normalCohesion = 4500, shearCohesion = 4500, density=2600, label='spheres'))
O.materials.append(FrictMat(young=5e6, poisson=0.333,frictionAngle=0,density=0,label='walls'))
O.bodies.append(aabbWalls([Vector3(0,0,0),Vector3(0.15,0.3,0.15)],thickness=0,material='walls'))
sp = pack.SpherePack()
sp.makeCloud(Vector3(0,0,0),Vector3(0.15,0.3,0.15),-1,0.3333,500)
O.bodies.append([sphere(center,rad,material='spheres') for center,rad in sp])
triax=TriaxialStressController(maxMultiplier=1.+4e-3,finalMaxMultiplier=1.+1e-4,stressMask = 7,internalCompaction=True)
triax.goal1=triax.goal2=triax.goal3=-1e4
O.engines=[
ForceResetter(),
InsertionSortCollider([Bo1_Sphere_Aabb(label = 'bo1s'),Bo1_Box_Aabb()]),
InteractionLoop(
[Ig2_Sphere_Sphere_ScGeom6D(label = 'ig2ss'),Ig2_Box_Sphere_ScGeom()],
[Ip2_FrictMat_FrictMat_FrictPhys(),Ip2_CohFrictMat_CohFrictMat_CohFrictPhys(label = 'ip2cc')],
[Law2_ScGeom_FrictPhys_CundallStrack(),Law2_ScGeom6D_CohFrictPhys_CohesionMoment()]
),
GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=100,timestepSafetyCoefficient=0.8),
triax,
NewtonIntegrator(damping=0.2),
PyRunner(command = 'isotropic_compaction()', iterPeriod = 1000, label = 'checker'),
]
def isotropic_compaction():
global num_intr
if unbalancedForce()<0.01 and abs(-1e4-triax.meanStress)/1e4<0.001:
for i in O.interactions:
num_intr = num_intr + 1
print '*************************************************'
print 'total interactions before reset intR is ', num_intr
print 'current step is ',O.iter
bo1s.aabbEnlargeFactor = 1.25
ig2ss.interactionDetectionFactor = 1.25
ip2cc.setCohesionNow = True
num_intr = 0
checker.iterPeriod = 1
checker.command = 'set_interaction()'
O.pause()
def set_interaction():
global num_intr
bo1s.aabbEnlargeFactor = -1
ig2ss.interactionDetectionFactor = -1
for i in O.interactions:
num_intr = num_intr + 1
print '************************************************'
print 'current step is ',O.iter
print 'coordn = ', utils.avgNumInteractions()
print 'total interactions after reset intR is ', num_intr
num_intr = 0
O.pause()
--
You received this question notification because your team yade-users is
an answer contact for Yade.