← Back to team overview

yade-users team mailing list archive

Re: [Question #669048]: CU triaxial (PFV)

 

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

    Status: Answered => Open

SayedHessam is still having a problem:
Dear Robert,

Thank you for your valuable comment.

BTW,  I have just two more questions about your last comment (#5).  You mentioned I am trying to compress an incompressible fluid, whereas Water is incompressible fluid and so what do you mean exactly about it??
Also, you said I  imposed the pressure at the centre and my boundary conditions are not flow. While I want to model Triaxial CU (Undrained Condition) and water cannot flow out from the assembly??

Regards
Sam


You can find herewith MWE.py, as you requested:


from yade import pack

############################################
### DEFINING VARIABLES AND MATERIALS ###
############################################

nRead=readParamsFromTable(
 num_spheres=700,
 compFricDegree = 35, 
 key='_Triax_PFV_CU_', 
 unknownOk=True
)
from yade.params import table

num_spheres=table.num_spheres
key=table.key
targetPorosity = 0.425 
compFricDegree = table.compFricDegree 
finalFricDegree = 35 
rate=-0.01 
damp=0.2 
stabilityThreshold=0.01 
young=1e8 
mn,mx=Vector3(0,0,0),Vector3(1,1,1) 

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

walls=aabbWalls([mn,mx],thickness=0,material='walls')

############################
### DEFINING ENGINES ###
############################

triax=TriaxialStressController(
 maxMultiplier=1.+2e4/young, 
 finalMaxMultiplier=1.+2e3/young, 
 thickness = 0,
 stressMask = 7,
 internalCompaction=True, 
)

newton=NewtonIntegrator(damping=damp)

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()]
 ),
 FlowEngine(dead=1,label="flow"),
 GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=100,timestepSafetyCoefficient=0.8),
 triax,
 TriaxialStateRecorder(iterPeriod=100,file='WallStresses'+table.key),
 newton,
]
O.dt=.5*utils.PWaveTimeStep()

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

#######################################
### APPLYING CONFINING PRESSURE ###
#######################################

triax.goal1=triax.goal2=triax.goal3=-100000

while 1:
  O.run(1000, True)
  unb=unbalancedForce()
  print 'unbalanced force:',unb,' mean stress: ',triax.meanStress
  if unb<stabilityThreshold and abs(-100000-triax.meanStress)/100000<0.001:
    break

O.save('confinedState'+key+'.yade.gz')
print "### Isotropic state saved ###"
print triax.porosity
print triax.meanStress
print len(O.bodies)

###################################################
### REACHING A SPECIFIED POROSITY PRECISELY ###
###################################################

import sys 
while triax.porosity>targetPorosity:
 compFricDegree = 0.95*compFricDegree
 setContactFriction(radians(compFricDegree))
 print "\r Friction: ",compFricDegree," porosity:",triax.porosity,
 sys.stdout.flush()
 O.run(500,1)

O.save('compactedState'+key+'.yade.gz')
print "### Compacted state saved ###"

while 1:
  O.run(100, True)
  unb=unbalancedForce()
  print 'unbalanced force:',unb,' mean stress: ',triax.meanStress
  if unb<stabilityThreshold and abs(-100000-triax.meanStress)/100000<0.001:
    break

##############################
### DEVIATORIC LOADING ###
##############################

triax.internalCompaction=False

setContactFriction(radians(finalFricDegree))


triax.stressMask = 0
triax.goal2=rate
triax.goal1=-rate / 2.0
triax.goal3=-rate / 2.0

newton.damping=0.1

O.saveTmp()

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