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