← Back to team overview

yade-users team mailing list archive

Re: [Question #404135]: intRadius(aabbenlargefactor) doesn't work

 

Question #404135 on Yade changed:
https://answers.launchpad.net/yade/+question/404135

Jan Stránský proposed the following answer:
Hello,

thanks for reducing the script, but next time please do it in more
sophisticated way. Your question is about intRadius, but in your script
there is nothing like this.. :-)

There are a few problems in your scripts:

As Jerome pointed, there should be one step between setting intRadius and
counting interactions (new interactions need collider to run and
InteractionLoop to decide which interactions are real and which only
potential etc.). Just instant setting of a parameter does not creates new
interactions by itself. So number of interactions in isotropic_compaction()
function is not "before reset intR", but actually before setting it :-)

So you will get actual number of interactions in set_interactions()
function, but the number will be before reset of intR (as there is not step
between interaction counting and intR resetting) :-)

I tried your original script with the behavior you described. However, if I
set normalCohesion to 4500e10, I got approx double interactions. I am not
familiar with CohFrictMat, so you will have to ask somebody else how to
deal with this problem.

As Jerome proposed, a small script (not only here, but in general) could be
a way to understand how things works..

cheers
Jan


2016-11-17 4:43 GMT+01:00 weijy <question404135@xxxxxxxxxxxxxxxxxxxxx>:

> 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.
>
> _______________________________________________
> Mailing list: https://launchpad.net/~yade-users
> Post to     : yade-users@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~yade-users
> More help   : https://help.launchpad.net/ListHelp
>

-- 
You received this question notification because your team yade-users is
an answer contact for Yade.