← Back to team overview

yade-users team mailing list archive

Uniaxial Test results

 

hi,
I have written two contact law(simple and cohesive) and lp functor,
I want to check them, how can I check it?
I used UniaxialStrainer and drew the graph sigma:epsilon, and obtained
E(young module) from slip of graph,
but the result is bad.
My material have E=74e9, from graph obtained ~30e9 (from my law).
I did uniaxial test  with your law,  the graph is attached. the graph is
same for both of compression and tension .
I forget anything?
The crossSection from utils.uniaxialTestFeatures() is 2*Area(Area is
calculated by hand). it is possible?!


The code:

import itertools, time
from yade import utils, pack,timing,plot

planeSize=Vector3(0.08,0.08,0.006)
rSphere=0.001
strainRate=0.001

#Add material
O.materials.append(FrictMat(young=74.1e9,frictionAngle=0.179,poisson=0.2,density=2500,
                       label='PlaneMaterial'))

#generate a FCC Pack
a=2*rSphere;
Spheres=[]
h=a*sqrt(2)/2
ii,jj,kk=[range(0,10),range(0,20),range(0,30)]

for i,j,k in itertools.product(ii,jj,kk):
    x,y,z=0+rSphere+i*sqrt(2)*a,0+rSphere+j*h,0+rSphere+k*h
    if j%2==0: x+= sqrt(2)*a/2. if k%2==0 else -sqrt(2)*a/2.
    if k%2!=0: x+=sqrt(2)*a/2.

Spheres+=[utils.sphere((x,y,z),radius=rSphere,color=(1,0,1),material='PlaneMaterial')]

PlaneIds=O.bodies.append(Spheres)

bb=utils.uniaxialTestFeatures()
negIds,posIds,axis,crossSectionArea=bb['negIds'],bb['posIds'],bb['axis'],bb['area']
O.dt=0.8*utils.PWaveTimeStep()

#O.initializers=[
#       BoundDispatcher([Bo1_Sphere_Aabb()])
#]
O.engines=[
        ForceResetter(),

        BoundDispatcher([
                Bo1_Sphere_Aabb(aabbEnlargeFactor=1.07)
        ]),

        InsertionSortCollider(),

        InteractionDispatchers(
                [Ig2_Sphere_Sphere_Dem3DofGeom()],
                [Ip2_FrictMat_FrictMat_FrictPhys()],
                [Law2_Dem3DofGeom_FrictPhys_Basic()]
                 ),

        #GravityEngine(gravity=[0,0,-9.81]),
        NewtonIntegrator(),
        UniaxialStrainer(strainRate=-strainRate,axis=axis,asymmetry=0,

posIds=posIds,negIds=negIds,crossSectionArea=crossSectionArea,
                    blockDisplacements=False,blockRotations=False,
                    setSpeeds=True,label='strainer'),
        PeriodicPythonRunner(virtPeriod=3e-7/strainRate,realPeriod=1,

command='addPlotData()',label='plotDataCollector',initRun=True)
]

plot.plots={'eps':('sigma',)}

O.saveTmp('initial');
def addPlotData():

yade.plot.addData({'t':O.time,'i':O.iter,'eps':strainer.strain,'sigma':strainer.avgStress})

Attachment: UniaxialStrainTest_MyLawWithoutCohesion.pdf
Description: Adobe PDF document

Attachment: UniaxialStrainTest.pdf
Description: Adobe PDF document


Follow ups