yade-users team mailing list archive
-
yade-users team
-
Mailing list archive
-
Message #26068
Re: [Question #698058]: confused by UniaxialStrainer's parameters and uniaxial compression test
Question #698058 on Yade changed:
https://answers.launchpad.net/yade/+question/698058
Status: Answered => Open
Ziyu Wang is still having a problem:
Thanks for your reply!
Your reply has helped me solve the above problems.With the solution you provided, I solved problems 1 and 2, and also figured out the problem of sign.Thank you again!
However, when I ran the modified code, I found that the stress-strain curve of uniaxial test remained linear, and there was no sign of failure.I guess it's due to the material parameters.I hope someone can help me.
Thanks!
Below is my script.
#######code#######
from yade import pack,qt,plot
isoPrestress=0
sphere_radius=2e-3
normalCohesion=1e9
shearCohesion=1e9
RollingStiffness=1
material_1=O.materials.append(CohFrictMat(young=1e9,poisson=0.4,frictionAngle=atan(0.5),density=2036,normalCohesion=normalCohesion,shearCohesion=shearCohesion,fragile=False))
sp=pack.randomDensePack(pack.inCylinder((0,0,-0.05),(0,0,0.05),0.025),radius=sphere_radius,rRelFuzz=0.02,returnSpherePack=True,spheresInCell=2000)
sp.toSimulation(material=material_1)
for b in O.bodies:
b.shape.color=(0,1,0)
factor=1.5
damping=0.4
strainRate_Tension=-0.05
#renderer=qt.Renderer()
#renderer.dispScale=(10,10,10)
bb=uniaxialTestFeatures()
negIds,posIds,axis,crossSectionArea=bb['negIds'],bb['posIds'],bb['axis'],bb['area']
O.engines=[
ForceResetter(),
InsertionSortCollider([Bo1_Sphere_Aabb(aabbEnlargeFactor=factor,label='bo1s'),],verletDist=0.05*sphere_radius),
InteractionLoop(
[Ig2_Sphere_Sphere_ScGeom6D(interactionDetectionFactor=factor,label='ig2ss')],
[Ip2_CohFrictMat_CohFrictMat_CohFrictPhys(setCohesionNow=True,setCohesionOnNewContacts=False)],
[Law2_ScGeom6D_CohFrictPhys_CohesionMoment(useIncrementalForm=True,always_use_moment_law=False)],
),
NewtonIntegrator(damping=damping,label='damper'),
PyRunner(iterPeriod=1,command='addPlotData()'),
PyRunner(iterPeriod=4,command='stopIfDamaged()',label='damageChecker'),
]
O.dt=0
O.step()
for i in O.interactions:
i.phys.unp=i.geom.penetrationDepth
bo1s.aabbEnlargeFactor=1
ig2ss.interactionDetectionFactor=1
O.dt=0.5*PWaveTimeStep()
for i in O.interactions:
i.phys.cohesionDisablesFriction=True
O.engines=O.engines[:4]+[UniaxialStrainer(strainRate=strainRate_Tension,axis=axis,asymmetry=0,posIds=posIds,negIds=negIds,crossSectionArea=crossSectionArea,blockDisplacements=False,blockRotations=False,setSpeeds=True,label='strainer',stressUpdateInterval=1)]+O.engines[4:]
dim=utils.aabbExtrema()
for i in posIds + negIds:
O.bodies[i].shape.color = (1,1,1)
for i in O.interactions:
if isinstance(O.bodies[i.id1].shape,Sphere) and isinstance(O.bodies[i.id2].shape,Sphere):
if O.bodies[i.id1].shape.color==(1,1,1) or O.bodies[i.id2].shape.color==(1,1,1):
i.phys.normalAdhesion*=600
i.phys.shearAdhesion*=600
def addPlotData():
plot.addData(i=O.iter,sigma=-strainer.avgStress,eps=-strainer.strain)
def stopIfDamaged():
if O.iter<2 or 'sigma' not in plot.data : return
sigma=plot.data['sigma']
extremum=max(sigma)
if extremum==0 : return
if abs(sigma[-1]/extremum)<0.3 or abs(strainer.strain)>5e2:
print('Max stress:',extremum)
print('damaged')
O.pause()
plot.setLiveForceAlwaysUpdate=True
plot.plots={'eps':('sigma'),'i':('eps')}
plot.plot()
O.saveTmp()
--
You received this question notification because your team yade-users is
an answer contact for Yade.