| Thread Previous • Date Previous • Date Next • Thread Next |
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
| Thread Previous • Date Previous • Date Next • Thread Next |