A strange phenomenon in constant-p(mean stress) simulations

Asked by panjinhong

Hello, everyone!

I'm trying to take a constant-p simulation under different b(intermediate principal stress ratio) with Yade but the result seems to be a bit strange. I used non-spherical clumped particle consisting of two identical spheres and periodic boundary condition.

In the Stress ratio-Deviation strain curve with different b(sorry I don't know how to upload the picture), When b=0.0 and 1.0, the curve is quite normal whose stress ratio has a peak and then drops, becomes steady. But when b=0.25 and 0.25, after the peak, the stress ratio drops and then rises. The residual value of it is even higher than the stress ratio when deviation strain is 0.3.

In my mind, this phenomenon would not happen in reality. Actually, some researchers also do constant-p simulation with PFC-3D or Liggghts, but their results didn't show this phenomenon.

Looking forward to your help, Thanks!

This is parts of my code:

O.engines=[
 ForceResetter(),
 InsertionSortCollider([Bo1_Sphere_Aabb()]),
 InteractionLoop(
  [Ig2_Sphere_Sphere_ScGeom()],
  [Ip2_FrictMat_FrictMat_FrictPhys()],
  [Law2_ScGeom_FrictPhys_CundallStrack()]
 ),
 PeriTriaxController(label='triax',
  # specify target values and whether they are strains or stresses
  goal=(sigmaIso1,sigmaIso1,sigmaIso1),stressMask=7,
  # type of servo-control
  dynCell=True,maxStrainRate=(10,10,10),
  # wait until the unbalanced force goes below this value
  maxUnbalanced=0.01,relStressTol=1e-3,
  # call this function when goal is reached and the packing is stable
  doneHook='compactionFinished1()'
 ),
 NewtonIntegrator(damping=.2),
 PyRunner(command='check()',iterPeriod=100),
]
O.dt=.5*PWaveTimeStep()

def compactionFinished():
 O.cell.trsf=Matrix3.Identity
 triax.goal=(sigmaIso,sigmaIso,-.8)
 triax.stressMask=3
 triax.maxStrainRate=(1.,1.,.01)
 triax.doneHook='triaxFinished()'
 O.engines = O.engines + [PyRunner(command='history()',iterPeriod=200,label='recorder')]
 O.engines = O.engines + [PyRunner(command='changeGoalStress()',iterPeriod=50,label='checker')]
 triax.maxUnbalanced=10

def changeGoalStress():
    s11=-triax.stress[0]
    s22=-triax.stress[1]
    s33=-triax.stress[2]
    r=-((b + 1.0) * s33 -1 * 3 * 100000) / (b - 2.0)
    s=-((1.0 - 2 * b ) * s33 + (b - 1) * 3 * 100000) / (b - 2.0)
    triax.goal=(r,s,-0.8)

Question information

Language:
English Edit question
Status:
Expired
For:
Yade Edit question
Assignee:
No assignee Edit question
Last query:
Last reply:
Revision history for this message
Launchpad Janitor (janitor) said :
#1

This question was expired because it remained in the 'Open' state without activity for the last 15 days.