New question #701341 on Yade:
https://answers.launchpad.net/yade/+question/701341
Hello,
I have encountered a problem similar to that in [1], but my script is different
from it. I have read the relevant answers in [1].
My question Description:
My script is about fluid-solid coupling triaxial compression,relevant research
is carried out by changing confining pressure and osmotic pressure.I have
successfully run some scripts (under the condition of confining pressure of 20,
40 and 60MPa respectively, the osmotic pressure is 10, 20, 30, 40 and 50MPa
respectively).
However, when the confining pressure is 80MPa, the script can run normally when
the osmotic pressure is 10 and 20MPa. When it increases to 30 and 40MPa, an
error prompt as described in the title appears.
Some problems related to locking some degrees of freedom and walls are
mentioned in [1],In my script, I did turn off the movement of the wall in the X
and Y directions (the script is shown below).I have tried to set the thickness
of the wall to a positive value, the error does not appear, but the result is
completely different from the law obtained from my previous work (the peak
strength and peak strain of the sample become larger)
I'm confused and don't know how to solve this problem. In other words, if it's
because of the wall thickness problem, why can the previous scripts run
normally?
Thanks for kindly help!!!(Maybe my problem description is too long..sorry)
---------------------------------------------script-----------------------------------------
from yade import pack, ymport, plot, utils, export, timing
from builtins import range
Sy=40e6
Wy=-80e6
rate=-0.2
damp=0.4
stabilityThreshold=0.001
key='_triax_base_'
young=3000e9
name='JCFPM_triax'
compFricDegree=30
poisson=0.4
OUT=str(Wy)+'_HM-coupling'
mn,mx=Vector3(0,0,0),Vector3(0.05,0.05,0.05)
O.materials.append(JCFpmMat(type=1,density=2640,young=young,poisson=poisson,tensileStrength=160e6,cohesion=1600e6,frictionAngle=radians(10),label='sphere'))
O.materials.append(JCFpmMat(type=1,frictionAngle=0,density=0,label='wall'))
walls=aabbWalls([mn,mx],thickness=0,material='wall')
wallIds=O.bodies.append(walls)
O.bodies.append(ymport.text('packing-JCFPM.spheres',scale=1,shift=Vector3(0,0,0),material='sphere',color=(0.6,0.5,0.15)))
triax=TriaxialStressController(
maxMultiplier=1.+4e8/young,
finalMaxMultiplier=1.+4e7/young,
thickness = 0,
stressMask = 7,
internalCompaction=True,
)
newton=NewtonIntegrator(damping=damp)
def recorder():
yade.plot.addData(
i=O.iter,
e11=-triax.strain[0],#e22=-triax.strain[1],
e33=-triax.strain[2],
s11=-triax.stress(triax.wall_right_id)[0],#0+边界id为right
#s22=-triax.stress(triax.wall_top_id)[1],#1+边界id为top
s33=-triax.stress(triax.wall_front_id)[2],#2+边界id为front
numberTc=interactionLaw.nbTensCracks,
numberSc=interactionLaw.nbShearCracks,
unb=unbalancedForce(),
flux1=flow.getBoundaryFlux(4),
flux2=flow.getBoundaryFlux(5),
timestep=O.dt
)
plot.saveDataTxt(OUT)
def stop_condition():
extremum=max(abs(s) for s in plot.data['s33'])
s=abs(plot.data['s33'][-1])
e=abs(plot.data['e33'][-1])
if e < 0.001:
return
if abs(s)/abs(extremum) < 0.9 and abs(s)>abs(Wy) :
print('Max stress and strain:',extremum,e)
presentcohesive_count = 0
for i in O.interactions:
if hasattr(i.phys, 'isCohesive'):
if i.phys.isCohesive == True:
presentcohesive_count+=1
print('the number of cohesive bond now
is:',presentcohesive_count)
O.wait()
O.engines=[
ForceResetter(),
InsertionSortCollider([Bo1_Sphere_Aabb(aabbEnlargeFactor=1.5,label='is2aabb'),Bo1_Box_Aabb()]),
InteractionLoop(
[Ig2_Sphere_Sphere_ScGeom(interactionDetectionFactor=1.5,label='ss2sc'),Ig2_Box_Sphere_ScGeom()],
[Ip2_JCFpmMat_JCFpmMat_JCFpmPhys()],
[Law2_ScGeom_JCFpmPhys_JointedCohesiveFrictionalPM(recordCracks=True,Key=OUT+'_Crack',label='interactionLaw')]
),
GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=100,timestepSafetyCoefficient=0.8),
triax,
FlowEngine(dead=1,label='flow'),
PyRunner(iterPeriod=int(1000),initRun=True,command='recorder()',label='data',dead=0),
PyRunner(iterPeriod=1000,command='stop_condition()',dead=0),
VTKRecorder(iterPeriod=500,initRun=True,fileName='triax/JFFPM-',recorders=['spheres','jcfpm','cracks'],Key='triax',label='vtk',dead=1),
newton,
]
O.step()
ss2sc.interactionDetectionFactor=-1
is2aabb.aabbEnlargeFactor=-1
cohesiveCount = 0
for i in O.interactions:
if hasattr(i.phys, 'isCohesive'):
if i.phys.isCohesive == True:
cohesiveCount+=1
print('the origin total number of cohesive bond is:',cohesiveCount)
triax.goal1=triax.goal2=triax.goal3=Wy
while 1:
O.run(1000,1)
unb=unbalancedForce()
print('unbalanced force:',unb,'mean stres:',triax.meanStress)
if unb<stabilityThreshold and abs(Wy-triax.meanStress)/abs(Wy)<0.001:
break
cohesiveCount = 0
for i in O.interactions:
if hasattr(i.phys, 'isCohesive'):
if i.phys.isCohesive == True:
cohesiveCount+=1
print('the first total number of cohesive bond is:',cohesiveCount)
yade.timing.reset()
flow.dead=0
flow.debug=False
flow.fluidBulkModulus=2.2e9
flow.permeabilityFactor=10
flow.decoupleForces = False
flow.meshUpdateInterval=1000
flow.useSolver=4
flow.viscosity=0.001
flow.bndCondIsPressure=[0,0,0,0,1,1]
flow.bndCondValue=[0,0,0,0,0,Sy]
triax.internalCompaction=False
flow.emulateAction()
triax.stressMask=3
triax.wall_left_activated=False
triax.wall_right_activated=False
triax.wall_bottom_activated=False
triax.wall_top_activated=False
triax.goal1=Wy
triax.goal2=Wy
triax.goal3=rate
plot.plots={'e33':(('s33','g'),None,('unb','b')),'i':(('numberTc','b'),('numberSc','r'),None,('s33','y'))}
plot.plot(subPlots=False)
O.run()
-----------------------------------------------------------------------------
[1]https://answers.launchpad.net/yade/+question/693071
--
You received this question notification because your team yade-users is
an answer contact for Yade.
_______________________________________________
Mailing list: https://launchpad.net/~yade-users
Post to : [email protected]
Unsubscribe : https://launchpad.net/~yade-users
More help : https://help.launchpad.net/ListHelp