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@lists.launchpad.net
Unsubscribe : https://launchpad.net/~yade-users
More help   : https://help.launchpad.net/ListHelp

Reply via email to