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.
_______________________________________________
Mailing list: https://launchpad.net/~yade-users
Post to : [email protected]
Unsubscribe : https://launchpad.net/~yade-users
More help : https://help.launchpad.net/ListHelp