← Back to team overview

yade-users team mailing list archive

[Question #692579]: Can't reach isotropic state in 2D biaxial compression

 

New question #692579 on Yade:
https://answers.launchpad.net/yade/+question/692579

Hi,
I am trying to conduct a 2D biaxial compression test by blocking the freedom along z-axis. 
I want to make a 2D sample with 70 mm width and 140 mm  height and reach the isotropic state of 100 kPa. Learn from previous answers, I come to the following MWE and I meet the followoing problems.

1. It is strange that the stress of top wall and right wall always go to 150 kPa (and keep constant around 150 kPa) even if I set the confining pressure as 100 kPa. Did I set something wrong with the TriaxialStressController?

I guess it might be related to the maxMultiplier and finalMaxMultiplier, I also tried by using more smaller Multiplier but I still couldn't gain the desired stress state.

2. One more thing that I'd like to confirm when I review the question [1] : In 2D biaxial test, is the mean stress the average of (top + right) or averge of (top+front+right)? In the MWE below, I use average of (top + right).

Here the MWE:
from yade import pack, plot

num_spheres = 500
compFricDegree = 30
finalFricDegree = 18
rate = 0.01
damp = 0.1
stabilityThreshold = 0.001
young = 5e6
mn,mx=Vector3(0,0,0),Vector3(0.07,0.14,1)
key = 'biax'
confinement=100e3

O.materials.append(FrictMat(young=young,poisson=0.5,frictionAngle=radians(compFricDegree),density=2600,label='spheres'))
O.materials.append(FrictMat(young=young,poisson=0.5,frictionAngle=0,density=0,label='walls'))

walls=utils.aabbWalls([mn,mx],thickness=0,material='walls')
wallIds=O.bodies.append(walls)

sp=pack.SpherePack()
sp.makeCloud(Vector3(0,0,0.5),Vector3(0.07,0.14,0.5) ,-1,0.3333,num_spheres,False, 0.95)
O.bodies.append([utils.sphere(center,rad,material='spheres') for center,rad in sp])
Gl1_Sphere.quality=3
# Blocked certain degress of freedom to make 2D-Model in plane-XY
for i in O.bodies:
 if isinstance(i.shape, Sphere): i.state.blockedDOFs='zXY'

O.dt=.5*utils.PWaveTimeStep()
O.usesTimeStepper=True

triax=TriaxialStressController(
    maxMultiplier=1.005,
    finalMaxMultiplier=1.001,
    thickness = 0,
    stressMask = 3,
    internalCompaction=True,
)

newton=NewtonIntegrator(damping=damp)
unb=unbalancedForce()

O.engines=[
 ForceResetter(),
 InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Box_Aabb()]),
 InteractionLoop(
  [Ig2_Sphere_Sphere_ScGeom(),Ig2_Box_Sphere_ScGeom()],
  [Ip2_FrictMat_FrictMat_FrictPhys()],
  [Law2_ScGeom_FrictPhys_CundallStrack()]
 ),
 GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=100,timestepSafetyCoefficient=0.8),
 triax,
 TriaxialStateRecorder(iterPeriod=100,file='WallStresses'+key),
 newton,
]

triax.goal1=triax.goal2=-confinement
triax.goal3=0
triax.wall_front_activated=False
triax.wall_back_activated=False

Gl1_Sphere.stripes=0
yade.qt.Controller(), yade.qt.View()

while 1:
  O.run(1000, True)
  unb=unbalancedForce()
  print 'unbalanced force:',unb,' top:',triax.stress(triax.wall_top_id)[1],"right:",triax.stress(triax.wall_right_id)[0]
  if unb<stabilityThreshold and abs(-triax.stress(triax.wall_right_id)[0]-confinement)/confinement<0.01 and abs(-triax.stress(triax.wall_top_id)[1]-confinement)/confinement<0.01:
    break

O.save('2D_sample.yade.gz')
print "### Isotropic state saved ###"

Do you have any suggestions?

Thanks
Leonard

[1]https://answers.launchpad.net/yade/+question/216096

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