← Back to team overview

yade-users team mailing list archive

Re: [Question #682985]: A strange phenomenon in constant-p(mean stress) simulations

 

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

Description changed to:
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)

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