yade-users team mailing list archive
-
yade-users team
-
Mailing list archive
-
Message #23816
[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.