Re: [Yade-users] [Question #694100]: Simulation compared to real tests
Question #694100 on Yade changed: https://answers.launchpad.net/yade/+question/694100 Status: Answered => Open Amedeo Galletti is still having a problem: I calibrated my model by changing the various parameters one by one to see what would happened to the results of the simulation. Then I choose the parameters that matches my soil. My soil is a Bristol Sand. I've the results of real direct shear test on that sand. The real friction angle is 38°. Sorry for my poor English. Thanks for you patience and your help. Amedeo -- 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 : yade-users@lists.launchpad.net Unsubscribe : https://launchpad.net/~yade-users More help : https://help.launchpad.net/ListHelp
Re: [Yade-users] [Question #694100]: Simulation compared to real tests
Question #694100 on Yade changed: https://answers.launchpad.net/yade/+question/694100 Amedeo Galletti gave more information on the question: Hello, Thanks Luc for your quick answer. The properties in the script are the ones that I used in the simulation. Yes, I've calibrated the model. Yes, I'm aware of the spherical simplification. How can I check if the emergent/macroscopic friction angle of my DEM model is exactly half of my real model? Sorry for the double replay, I misclicked. Regards, Amedeo -- 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 : yade-users@lists.launchpad.net Unsubscribe : https://launchpad.net/~yade-users More help : https://help.launchpad.net/ListHelp
Re: [Yade-users] [Question #694100]: Simulation compared to real tests
Question #694100 on Yade changed: https://answers.launchpad.net/yade/+question/694100 Status: Answered => Open Amedeo Galletti is still having a problem: Hello, Thanks Luc for your quick answer. The properties in the script are the ones that I used in the simulation. Yes, I've calibrated the model. Yes, I'm aware of the spherical simplification. -- 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 : yade-users@lists.launchpad.net Unsubscribe : https://launchpad.net/~yade-users More help : https://help.launchpad.net/ListHelp
[Yade-users] [Question #694100]: Simulation compared to real tests
New question #694100 on Yade: https://answers.launchpad.net/yade/+question/694100 Goodmoring, using this script [1] I've made some simulation with different value of SN parameter and PI (25000, 5 an 75000 for SN and respectively 2500, 5000 and 7500 for PI). By comparing those result with real shear test performed on a Bristol Sand ( confining stress was set on 25, 50 and 75 kPa) I've observed that the simulated stress-strain graph is exactly the half of the stress-strain curve at each confining stress. I've tried to double SN and PI parameters on the simulation, and the results o a stress-strain curve match the real stress-strain curve at each confining stress. How is that possible? Is There something I don't understand that makes this possible, like a "trick" on the script? Thanks for your help. [1] ### from yade import pack,plot,export import math sp=pack.SpherePack() O.periodic=True # dimensions of sample (fixed by particle size such as L/D~15) RADIUS=0.001 length=0.06 height=length/3 width=length thickness=RADIUS # friction angles compFRIC=15. # during compaction (controls porosity) FRIC=40. # during shear # boundary conditions PI=5e3 # sample preparation: pressure applied for the isotropic compaction SN=50e3 # normal stress RATE=0.1 # shear velocity (top plate) # simulation control DAMPSHEAR=0 ITER=8e4 VTK=20 OUT='TEST' O.cell.hSize=Matrix3(length,0,0,0,3*height,0,0,0,width) O.materials.append(CohFrictMat(isCohesive=True,density=2500,young=1e8,poisson=0.5,frictionAngle=radians(0.),normalCohesion=1e100,shearCohesion=1e100,label='boxMat')) O.materials.append(CohFrictMat(isCohesive=True,density=1600,young=230e6,poisson=0.3,frictionAngle=radians(compFRIC),normalCohesion=0,shearCohesion=0,label='sphereMat')) upBox = utils.box(center=(0,2*height+thickness/2.0,0),orientation=Quaternion(1,0,0,0),extents=(2*length,thickness/2.,2*width),fixed=1,wire=False,color=(1,0,0),material='boxMat') lowBox = utils.box(center=(0,height-thickness/2.0,0),orientation=Quaternion(1,0,0,0),extents=(2*length,thickness/2.,2*width),fixed=1,wire=False,color=(1,0,0),material='boxMat') O.bodies.append([upBox,lowBox]) sp.makeCloud((0,height+1.5*RADIUS,0),(length,2*height-1.5*RADIUS,width),rMean=RADIUS,rRelFuzz=0.001,periodic=True) O.bodies.append([utils.sphere(s[0],s[1],color=(0,0,1),material='sphereMat') for s in sp]) effCellVol=(O.bodies[0].state.pos[1]-O.bodies[1].state.pos[1])*O.cell.hSize[0,0]*O.cell.hSize[2,2] volRatio=(O.cell.hSize[0,0]*O.cell.hSize[1,1]*O.cell.hSize[2,2])/effCellVol #print 'volRatio=',volRatio O.engines=[ ForceResetter() ,InsertionSortCollider([Bo1_Box_Aabb(),Bo1_Sphere_Aabb()],verletDist=-0.1,allowBiggerThanPeriod=True) ,InteractionLoop( [Ig2_Sphere_Sphere_ScGeom6D(),Ig2_Box_Sphere_ScGeom6D()], [Ip2_CohFrictMat_CohFrictMat_CohFrictPhys()], [Law2_ScGeom6D_CohFrictPhys_CohesionMoment()] ) ,GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=100,timestepSafetyCoefficient=0.8,defaultDt=utils.PWaveTimeStep()) ,PeriTriaxController(dynCell=True,maxUnbalanced=1e-3,relStressTol=1e-4,stressMask=7,goal=(-PI/volRatio,-PI/volRatio,-PI/volRatio),globUpdate=1,maxStrainRate=(1,1,1),doneHook='triaxDone()',label='triax') ,NewtonIntegrator(damping=0.3,label='newton') ,PyRunner(command='dataRecorder()',iterPeriod=100,label='recData',dead=False) ,VTKRecorder(fileName=OUT+'.',iterPeriod=1,skipNondynamic=1,recorders=['spheres','colors','velocity','bstresses','stress','boxes','intr','boxes'],label='saveSolid',dead=True) ] def dataRecorder(): h=vol=vol_s=nb_s=0. h=O.bodies[0].state.pos[1]-O.bodies[1].state.pos[1] vol=h*O.cell.hSize[0,0]*O.cell.hSize[2,2] contactStress=getStress(vol) for o in O.bodies: if isinstance(o.shape,Sphere) and o.shape.color[0]!=1: nb_s+=1 vol_s += 4.*pi/3.*(o.shape.radius)**3 n = 1-vol_s/vol nbFrictCont=0. for i in O.interactions: if i.isReal and i.phys.cohesionBroken: nbFrictCont+=1 plot.addData( iter=O.iter ,contactStress01=((contactStress[0,1])/1000),contactStress11=(contactStress[1,1]) ,xW=(O.bodies[0].state.pos[0]*1000) ,height=h ,volume=vol ,porosity=n ) def triaxDone(): global phase volRatio=(O.cell.hSize[0,0]*O.cell.hSize[1,1]*O.cell.hSize[2,2])/((O.bodies[0].state.pos[1]-O.bodies[1].state.pos[1])*O.cell.hSize[0,0]*O.cell.hSize[2,2]) h=O.bodies[0].state.pos[1]-O.bodies[1].state.pos[1] vol=h*O.cell.hSize[0,0]*O.cell.hSize[2,2] contactStress=getStress(vol) vol_s=Rmean=Rmax=nbSph=0 Rmin=1e6 for o in O.bodies: if isinstance(o.shape,Sphere): nbSph+=1 Rmean+=o.shape.radius if o.shape.radius>Rmax: Rmax=o.shape.radius if o.shape.radius= (int(iterShear+ITER)) ): print 'iter=',O.iter,' -> FINISHED!' plot.saveDataTxt(OUT) O.save(OUT+'_sheared.yade') sys.exit(0) -- 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 : y
Re: [Yade-users] [Question #693550]: Relative Density
Question #693550 on Yade changed: https://answers.launchpad.net/yade/+question/693550 Amedeo Galletti posted a new comment: Hi, I want to create a pack of spheres with a certain relative density (for example a Sand with Dr=40%) . I want to do it at the beginning (when I'm creating the sample). My goal is to recreate a direct shear test of a sand, I think that Dr is an important parameter in order to recreate a sand. I also found this on the Yade documentation [1], but I'm not able to fit it into the script that I posted earlier. I'm even not sure that is the right tool to achieve Relative Density of my sample. Anyway thanks for your patience. I hope that I explained a bit better. Regards, Amedeo [1] https://www.yade- dem.org/doc/yade.pack.html?highlight=reldensity#yade._packSpheres.SpherePack.relDensity -- 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 : yade-users@lists.launchpad.net Unsubscribe : https://launchpad.net/~yade-users More help : https://help.launchpad.net/ListHelp
Re: [Yade-users] [Question #693550]: Relative Density
Question #693550 on Yade changed: https://answers.launchpad.net/yade/+question/693550 Amedeo Galletti posted a new comment: ### from yade import pack,plot,export import math sp=pack.SpherePack() O.periodic=True # dimensions of sample (fixed by particle size such as L/D~15) RADIUS=0.05 length=15*(2*RADIUS) height=length width=length thickness=RADIUS # friction angles compFRIC=10. # during compaction (controls porosity) FRIC=30. # during shear # boundary conditions PI=1.e5 # sample preparation: pressure applied for the isotropic compaction SN=5.e6 # normal stress RATE=0.1 # shear velocity (top plate) # simulation control DAMPSHEAR=0. ITER=2e5 VTK=20 OUT='TEST' O.cell.hSize=Matrix3(length,0,0,0,3*height,0,0,0,width) O.materials.append(CohFrictMat(isCohesive=True,density=2500,young=1e8,poisson=0.5,frictionAngle=radians(0.),normalCohesion=1e100,shearCohesion=1e100,label='boxMat')) O.materials.append(CohFrictMat(isCohesive=True,density=2500,young=1e8,poisson=0.5,frictionAngle=radians(compFRIC),normalCohesion=0,shearCohesion=0,label='sphereMat')) upBox = utils.box(center=(0,2*height+thickness/2.0,0),orientation=Quaternion(1,0,0,0),extents=(2*length,thickness/2.,2*width),fixed=1,wire=False,color=(1,0,0),material='boxMat') lowBox = utils.box(center=(0,height-thickness/2.0,0),orientation=Quaternion(1,0,0,0),extents=(2*length,thickness/2.,2*width),fixed=1,wire=False,color=(1,0,0),material='boxMat') O.bodies.append([upBox,lowBox]) sp.makeCloud((0,height+1.5*RADIUS,0),(length,2*height-1.5*RADIUS,width),rMean=RADIUS,rRelFuzz=0.2,periodic=True) O.bodies.append([utils.sphere(s[0],s[1],color=(0,0,1),material='sphereMat') for s in sp]) effCellVol=(O.bodies[0].state.pos[1]-O.bodies[1].state.pos[1])*O.cell.hSize[0,0]*O.cell.hSize[2,2] volRatio=(O.cell.hSize[0,0]*O.cell.hSize[1,1]*O.cell.hSize[2,2])/effCellVol #print 'volRatio=',volRatio O.engines=[ ForceResetter() ,InsertionSortCollider([Bo1_Box_Aabb(),Bo1_Sphere_Aabb()],verletDist=-0.1,allowBiggerThanPeriod=True) ,InteractionLoop( [Ig2_Sphere_Sphere_ScGeom6D(),Ig2_Box_Sphere_ScGeom6D()], [Ip2_CohFrictMat_CohFrictMat_CohFrictPhys()], [Law2_ScGeom6D_CohFrictPhys_CohesionMoment()] ) ,GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=100,timestepSafetyCoefficient=0.8,defaultDt=utils.PWaveTimeStep()) ,PeriTriaxController(dynCell=True,mass=10,maxUnbalanced=1e-3,relStressTol=1e-4,stressMask=7,goal=(-PI/volRatio,-PI/volRatio,-PI/volRatio),globUpdate=1,maxStrainRate=(1,1,1),doneHook='triaxDone()',label='triax') ,NewtonIntegrator(damping=0.3,label='newton') ,PyRunner(command='dataRecorder()',iterPeriod=10,label='recData',dead=True) ,VTKRecorder(fileName=OUT+'.',iterPeriod=1,skipNondynamic=1,recorders=['spheres','colors','velocity','bstresses'],label='saveSolid',dead=True) ] def dataRecorder(): h=vol=vol_s=nb_s=0. h=O.bodies[0].state.pos[1]-O.bodies[1].state.pos[1] vol=h*O.cell.hSize[0,0]*O.cell.hSize[2,2] contactStress=getStress(vol) for o in O.bodies: if isinstance(o.shape,Sphere) and o.shape.color[0]!=1: nb_s+=1 vol_s += 4.*pi/3.*(o.shape.radius)**3 n = 1-vol_s/vol nbFrictCont=0. for i in O.interactions: if i.isReal and i.phys.cohesionBroken: nbFrictCont+=1 plot.addData( iter=O.iter ,stress_upWall0=abs(O.forces.f(0)[0]/(O.cell.hSize[0,0]*O.cell.hSize[2,2])),stress_upWall1=abs(O.forces.f(0)[1]/(O.cell.hSize[0,0]*O.cell.hSize[2,2])),stress_upWall2=abs(O.forces.f(0)[2]/(O.cell.hSize[0,0]*O.cell.hSize[2,2])) ,contactStress00=(contactStress[0,0]),contactStress01=(contactStress[0,1]),contactStress02=(contactStress[0,2]),contactStress10=(contactStress[1,0]),contactStress11=(contactStress[1,1]),contactStress12=(contactStress[1,2]),contactStress20=(contactStress[2,0]),contactStress21=(contactStress[2,1]),contactStress22=(contactStress[2,2]) ,xW=O.bodies[0].state.pos[0] ,height=h ,volume=vol ,porosity=n ,k=2.0*nbFrictCont/nb_s ,unbF=unbalancedForce() ) def triaxDone(): global phase volRatio=(O.cell.hSize[0,0]*O.cell.hSize[1,1]*O.cell.hSize[2,2])/((O.bodies[0].state.pos[1]-O.bodies[1].state.pos[1])*O.cell.hSize[0,0]*O.cell.hSize[2,2]) h=O.bodies[0].state.pos[1]-O.bodies[1].state.pos[1] vol=h*O.cell.hSize[0,0]*O.cell.hSize[2,2] contactStress=getStress(vol) vol_s=Rmean=Rmax=nbSph=0 Rmin=1e6 for o in O.bodies: if isinstance(o.shape,Sphere): nbSph+=1 Rmean+=o.shape.radius if o.shape.radius>Rmax: Rmax=o.shape.radius if o.shape.radius= (int(iterShear+ITER)) ): print 'iter=',O.iter,' -> FINISHED!' plot.saveDataTxt(OUT) O.save(OUT+'_sheared.yade') sys.exit(0) Im refering to this script. I need to control the Relative Density of the sample. For example for a Sand of Dr=40% . -- You received this question notification because your team yade-users is an ans
[Yade-users] [Question #693550]: Relative Density
New question #693550 on Yade: https://answers.launchpad.net/yade/+question/693550 How can I control Relative Density in a script? Is relDensity good? https://www.yade-dem.org/doc/yade.pack.html?highlight=reldensity#yade._packSpheres.SpherePack.relDensity -- 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 : yade-users@lists.launchpad.net Unsubscribe : https://launchpad.net/~yade-users More help : https://help.launchpad.net/ListHelp
Re: [Yade-users] [Question #693282]: Looking for Direct Shear test script
Question #693282 on Yade changed: https://answers.launchpad.net/yade/+question/693282 Amedeo Galletti posted a new comment: Hello, Sorry for the lack of infos. I’m new to the yade community. Luc, thanks for your support. I’ve used a script that you posted on this forum: ### from yade import pack,plot,export import math sp=pack.SpherePack() O.periodic=True # dimensions of sample (fixed by particle size such as L/D~15) RADIUS=0.05 length=15*(2*RADIUS) height=length width=length thickness=RADIUS # friction angles compFRIC=10. # during compaction (controls porosity) FRIC=30. # during shear # boundary conditions PI=1.e5 # sample preparation: pressure applied for the isotropic compaction SN=5.e6 # normal stress RATE=0.1 # shear velocity (top plate) # simulation control DAMPSHEAR=0. ITER=2e5 VTK=20 OUT='TEST' O.cell.hSize=Matrix3(length,0,0,0,3*height,0,0,0,width) O.materials.append(CohFrictMat(isCohesive=True,density=2500,young=1e8,poisson=0.5,frictionAngle=radians(0.),normalCohesion=1e100,shearCohesion=1e100,label='boxMat')) O.materials.append(CohFrictMat(isCohesive=True,density=2500,young=1e8,poisson=0.5,frictionAngle=radians(compFRIC),normalCohesion=0,shearCohesion=0,label='sphereMat')) upBox = utils.box(center=(0,2*height+thickness/2.0,0),orientation=Quaternion(1,0,0,0),extents=(2*length,thickness/2.,2*width),fixed=1,wire=False,color=(1,0,0),material='boxMat') lowBox = utils.box(center=(0,height-thickness/2.0,0),orientation=Quaternion(1,0,0,0),extents=(2*length,thickness/2.,2*width),fixed=1,wire=False,color=(1,0,0),material='boxMat') O.bodies.append([upBox,lowBox]) sp.makeCloud((0,height+1.5*RADIUS,0),(length,2*height-1.5*RADIUS,width),rMean=RADIUS,rRelFuzz=0.2,periodic=True) O.bodies.append([utils.sphere(s[0],s[1],color=(0,0,1),material='sphereMat') for s in sp]) effCellVol=(O.bodies[0].state.pos[1]-O.bodies[1].state.pos[1])*O.cell.hSize[0,0]*O.cell.hSize[2,2] volRatio=(O.cell.hSize[0,0]*O.cell.hSize[1,1]*O.cell.hSize[2,2])/effCellVol #print 'volRatio=',volRatio O.engines=[ ForceResetter() ,InsertionSortCollider([Bo1_Box_Aabb(),Bo1_Sphere_Aabb()],verletDist=-0.1,allowBiggerThanPeriod=True) ,InteractionLoop( [Ig2_Sphere_Sphere_ScGeom6D(),Ig2_Box_Sphere_ScGeom6D()], [Ip2_CohFrictMat_CohFrictMat_CohFrictPhys()], [Law2_ScGeom6D_CohFrictPhys_CohesionMoment()] ) ,GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=100,timestepSafetyCoefficient=0.8,defaultDt=utils.PWaveTimeStep()) ,PeriTriaxController(dynCell=True,mass=10,maxUnbalanced=1e-3,relStressTol=1e-4,stressMask=7,goal=(-PI/volRatio,-PI/volRatio,-PI/volRatio),globUpdate=1,maxStrainRate=(1,1,1),doneHook='triaxDone()',label='triax') ,NewtonIntegrator(damping=0.3,label='newton') ,PyRunner(command='dataRecorder()',iterPeriod=10,label='recData',dead=True) ,VTKRecorder(fileName=OUT+'.',iterPeriod=1,skipNondynamic=1,recorders=['spheres','colors','velocity','bstresses'],label='saveSolid',dead=True) ] def dataRecorder(): h=vol=vol_s=nb_s=0. h=O.bodies[0].state.pos[1]-O.bodies[1].state.pos[1] vol=h*O.cell.hSize[0,0]*O.cell.hSize[2,2] contactStress=getStress(vol) for o in O.bodies: if isinstance(o.shape,Sphere) and o.shape.color[0]!=1: nb_s+=1 vol_s += 4.*pi/3.*(o.shape.radius)**3 n = 1-vol_s/vol nbFrictCont=0. for i in O.interactions: if i.isReal and i.phys.cohesionBroken: nbFrictCont+=1 plot.addData( iter=O.iter ,stress_upWall0=abs(O.forces.f(0)[0]/(O.cell.hSize[0,0]*O.cell.hSize[2,2])),stress_upWall1=abs(O.forces.f(0)[1]/(O.cell.hSize[0,0]*O.cell.hSize[2,2])),stress_upWall2=abs(O.forces.f(0)[2]/(O.cell.hSize[0,0]*O.cell.hSize[2,2])) ,contactStress00=(contactStress[0,0]),contactStress01=(contactStress[0,1]),contactStress02=(contactStress[0,2]),contactStress10=(contactStress[1,0]),contactStress11=(contactStress[1,1]),contactStress12=(contactStress[1,2]),contactStress20=(contactStress[2,0]),contactStress21=(contactStress[2,1]),contactStress22=(contactStress[2,2]) ,xW=O.bodies[0].state.pos[0] ,height=h ,volume=vol ,porosity=n ,k=2.0*nbFrictCont/nb_s ,unbF=unbalancedForce() ) def triaxDone(): global phase volRatio=(O.cell.hSize[0,0]*O.cell.hSize[1,1]*O.cell.hSize[2,2])/((O.bodies[0].state.pos[1]-O.bodies[1].state.pos[1])*O.cell.hSize[0,0]*O.cell.hSize[2,2]) h=O.bodies[0].state.pos[1]-O.bodies[1].state.pos[1] vol=h*O.cell.hSize[0,0]*O.cell.hSize[2,2] contactStress=getStress(vol) vol_s=Rmean=Rmax=nbSph=0 Rmin=1e6 for o in O.bodies: if isinstance(o.shape,Sphere): nbSph+=1 Rmean+=o.shape.radius if o.shape.radius>Rmax: Rmax=o.shape.radius if o.shape.radius= (int(iterShear+ITER)) ): print 'iter=',O.iter,' -> FINISHED!' plot.saveDataTxt(OUT) O.save(OUT+'_sheared.yade') sys.exit(0) Is it suitable for a model of a direct shear test? Wh
[Yade-users] [Question #693282]: Looking for Direct Shear test script
New question #693282 on Yade: https://answers.launchpad.net/yade/+question/693282 I was looking for a direct shear test script on https://yade-dem.org/doc/tutorial.html , I only found https://yade-dem.org/doc/tutorial-examples.html#periodic-simple-shear . Do you know where I can find a script that simulate a direct shear test? Thanks -- 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 : yade-users@lists.launchpad.net Unsubscribe : https://launchpad.net/~yade-users More help : https://help.launchpad.net/ListHelp