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 |