New question #695462 on Yade: https://answers.launchpad.net/yade/+question/695462
Hi, I am doing a triaxial test simulating fiber-reinforced sand in which cylinder and Pfacet are used as fiber and wall. At first I appended Pfacets to wallIds and applied forces by triax.engine, it didn't work. Then I clumped pfacets together and added forces on every clump, there's still problem. It showed that spheres did not contact with pfacet-clump but went through it. I need to know if a triaxial test with pfacet can work? If so, how? Thanks for any help!(ubuntu18.04 and yade2018.02b) ##################################### from yade.gridpfacet import * from yade import pack, plot import numpy as np from numpy import * import math from yade import utils, qt import random from yade import polyhedra_utils, qt #parameters mi,ma = (-100e-3,-100e-3,-200e-3),(100e-3,100e-3,200e-3) color=[0.,1.,1.] young=4.0e6 poisson=3 density=1e3 stabilityThreshold=0.01 #=============================meterials======================================== O.materials.append(FrictMat(young=4.0e6,poisson=.3,frictionAngle=30,density=2630e0,label='sphereMat'))#for sphere O.materials.append(FrictMat(young=3e9,poisson=.15,frictionAngle=20,density=910e+0,label='extcylMat'))#for sphere-cylinder O.materials.append(CohFrictMat(young=3e9,poisson=.15,density=910e0,frictionAngle=20,normalCohesion=1e40,shearCohesion=1e40,momentRotationLaw=True,label='intcylMat'))#for cylinder-cylinder O.materials.append( CohFrictMat( young=3e6,poisson=0.15,density=910e2,frictionAngle=20,normalCohesion=3e100,shearCohesion=3e100,momentRotationLaw=True,label='gridNodeMat' ) )#for gridNodes #O.materials.append(CohFrictMat(young=3e9,poisson=.15,density=910e6,frictionAngle=20,normalCohesion=1e40,shearCohesion=1e40,momentRotationLaw=True,label='gridNodeMat'))#for gridNodes O.materials.append(FrictMat(young=4e6,poisson=0.3,density=1000,frictionAngle=20,label='pFacetMat')) #for pfacet O.materials.append(FrictMat(young=young,poisson=0.5,frictionAngle=0,density=2630,label='walls')) #==============================Engines========================================= O.engines=[ ForceResetter(), InsertionSortCollider([ Bo1_Sphere_Aabb(), Bo1_GridConnection_Aabb(), Bo1_PFacet_Aabb(), #Bo1_Box_Aabb(), #Bo1_Cylinder_Aabb, #Bo1_Node_Aabb ]), InteractionLoop([ Ig2_Sphere_Sphere_ScGeom(), Ig2_Box_Sphere_ScGeom(), Ig2_GridNode_GridNode_GridNodeGeom6D(), Ig2_Sphere_GridConnection_ScGridCoGeom(), Ig2_GridConnection_GridConnection_GridCoGridCoGeom(), Ig2_GridConnection_PFacet_ScGeom(), #Ig2_PFacet_PFacet_ScGeom(), Ig2_Sphere_PFacet_ScGridCoGeom(), #Ig2_Sphere_ChainedCylinder_CylScGeom(), ], [ Ip2_CohFrictMat_CohFrictMat_CohFrictPhys(setCohesionNow=True,setCohesionOnNewContacts=False), # internal cylinder physics Ip2_FrictMat_FrictMat_FrictPhys(), # physics for external interactions, i.e., cylinder-cylinder, sphere-sphere, cylinder-sphere ], [ Law2_ScGeom_FrictPhys_CundallStrack(), # contact law for sphere-sphere Law2_ScGridCoGeom_FrictPhys_CundallStrack(), # contact law for cylinder-sphere Law2_ScGeom6D_CohFrictPhys_CohesionMoment(), # contact law for "internal" cylinder forces Law2_GridCoGridCoGeom_FrictPhys_CundallStrack(), # contact law for cylinder-cylinder interaction #Law2_GridCoGridCoGeom_CohFrictPhys_CundallStrack(), Law2_ScGeom_CpmPhys_Cpm(), ] ), GlobalStiffnessTimeStepper(timestepSafetyCoefficient=0.1,label='ts'), NewtonIntegrator(gravity=(0,0,0),damping=0.5,label='newton'), ] color = [255./255.,102./255.,0./255.] RNode = 0.0005 #up aa= O.bodies.append( gridNode([-150e-3, 150e-3,-200e-3],RNode, wire=False,fixed=False,material='gridNodeMat',color=color) ) bb= O.bodies.append( gridNode([ 150e-3, 150e-3,-200e-3],RNode, wire=False,fixed=False,material='gridNodeMat',color=color) ) cc= O.bodies.append( gridNode([ 150e-3,-150e-3,-200e-3],RNode, wire=False,fixed=False,material='gridNodeMat',color=color) ) dd= O.bodies.append( gridNode([-150e-3,-150e-3,-200e-3],RNode, wire=False,fixed=False,material='gridNodeMat',color=color) ) ab= O.bodies.append( gridConnection(aa,bb,RNode,color=color,material='gridNodeMat') ) cd= O.bodies.append( gridConnection(cc,dd,RNode,color=color,material='gridNodeMat') ) cb= O.bodies.append( gridConnection(cc,bb,RNode,color=color,material='gridNodeMat') ) ac= O.bodies.append( gridConnection(cc,aa,RNode,color=color,material='gridNodeMat') ) da= O.bodies.append( gridConnection(dd,aa,RNode,color=color,material='gridNodeMat') ) abc= O.bodies.append( pfacet(cc,bb,aa, wire=False,material='pFacetMat',color=color) ) acd= O.bodies.append( pfacet(cc,dd,aa, wire=False,material='pFacetMat',color=color) ) clumpup=[] clumpup=[aa,bb,cc,dd,ab,cd,cb,ac,da,abc,acd] cid1=O.bodies.clump(clumpup) #cid1.state.mass=1 print 'cid1=',cid1 O.bodies[cid1].state.blockedDOFs='xyXYZ' #clumpup.state.mass= 1 #down 4567 down0= O.bodies.append( gridNode([-150e-3, 150e-3, 200e-3],RNode, wire=False,fixed=False,material='gridNodeMat') ) down1= O.bodies.append( gridNode([ 150e-3, 150e-3, 200e-3],RNode, wire=False,fixed=False,material='gridNodeMat') ) down2= O.bodies.append( gridNode([ 150e-3,-150e-3, 200e-3],RNode, wire=False,fixed=False,material='gridNodeMat') ) down3= O.bodies.append( gridNode([-150e-3,-150e-3, 200e-3],RNode, wire=False,fixed=False,material='gridNodeMat') ) down01= O.bodies.append( gridConnection(down0,down1,RNode,color=color,material='gridNodeMat') ) down02= O.bodies.append( gridConnection(down0,down2,RNode,color=color,material='gridNodeMat') ) down03= O.bodies.append( gridConnection(down0,down3,RNode,color=color,material='gridNodeMat') ) down12= O.bodies.append( gridConnection(down1,down2,RNode,color=color,material='gridNodeMat') ) down23= O.bodies.append( gridConnection(down2,down3,RNode,color=color,material='gridNodeMat') ) down012= O.bodies.append( pfacet(down0,down1,down2, wire=False,material='pFacetMat',color=color) ) down023= O.bodies.append( pfacet(down0,down2,down3, wire=False,material='pFacetMat',color=color) ) clumpdown=[] clumpdown=[down0,down1,down2,down3,down01,down02,down03,down12,down23,down012,down023] cid2=O.bodies.clump(clumpdown) print 'cid2=',cid2 O.bodies[cid2].state.blockedDOFs='xyXYZ' #left 89 10 11 left0= O.bodies.append( gridNode([-100e-3,-150e-3,-250e-3],RNode, wire=False,fixed=False,material='gridNodeMat') ) left1= O.bodies.append( gridNode([-100e-3, 150e-3,-250e-3],RNode, wire=False,fixed=False,material='gridNodeMat') ) left2= O.bodies.append( gridNode([-100e-3, 150e-3, 250e-3],RNode, wire=False,fixed=False,material='gridNodeMat') ) left3= O.bodies.append( gridNode([-100e-3,-150e-3, 250e-3],RNode, wire=False,fixed=False,material='gridNodeMat') ) left01= O.bodies.append( gridConnection(left0,left1,RNode,color=color,material='gridNodeMat') ) left02= O.bodies.append( gridConnection(left0,left2,RNode,color=color,material='gridNodeMat') ) left03= O.bodies.append( gridConnection(left0,left3,RNode,color=color,material='gridNodeMat') ) left12= O.bodies.append( gridConnection(left1,left2,RNode,color=color,material='gridNodeMat') ) left23= O.bodies.append( gridConnection(left2,left3,RNode,color=color,material='gridNodeMat') ) left012= O.bodies.append( pfacet(left0,left1,left2, wire=False,material='pFacetMat',color=color) ) left023= O.bodies.append( pfacet(left0,left2,left3, wire=False,material='pFacetMat',color=color) ) clumpleft=[] clumpleft=[left0,left1,left2,left3,left01,left02,left03,left12,left23,left012,left023] cid3=O.bodies.clump(clumpleft) print 'cid3=',cid3 O.bodies[cid3].state.blockedDOFs='yzXYZ' #right 12 13 14 15 right0= O.bodies.append( gridNode([ 100e-3, 150e-3,-250e-3],RNode, wire=False,fixed=False,material='gridNodeMat') ) right1= O.bodies.append( gridNode([ 100e-3,-150e-3,-250e-3],RNode, wire=False,fixed=False,material='gridNodeMat') ) right2= O.bodies.append( gridNode([ 100e-3,-150e-3, 250e-3],RNode, wire=False,fixed=False,material='gridNodeMat') ) right3= O.bodies.append( gridNode([ 100e-3, 150e-3, 250e-3],RNode, wire=False,fixed=False,material='gridNodeMat') ) right01= O.bodies.append( gridConnection(right0,right1,RNode,color=color,material='gridNodeMat') ) right02= O.bodies.append( gridConnection(right0,right2,RNode,color=color,material='gridNodeMat') ) right03= O.bodies.append( gridConnection(right0,right3,RNode,color=color,material='gridNodeMat') ) right12= O.bodies.append( gridConnection(right1,right2,RNode,color=color,material='gridNodeMat') ) right23= O.bodies.append( gridConnection(right2,right3,RNode,color=color,material='gridNodeMat') ) right012= O.bodies.append( pfacet(right0,right1,right2, wire=False,material='pFacetMat',color=color) ) right023= O.bodies.append( pfacet(right0,right2,right3, wire=False,material='pFacetMat',color=color) ) clumpright=[] clumpright=[right0,right1,right2,right3,right01,right02,right03,right12,right23,right012,right023] cid4=O.bodies.clump(clumpright) print 'cid4=',cid4 O.bodies[cid4].state.blockedDOFs='yzXYZ' #front 16 17 18 19 front0= O.bodies.append( gridNode([-150e-3, 100e-3,-250e-3],RNode, wire=False,fixed=False,material='gridNodeMat') ) front1= O.bodies.append( gridNode([ 150e-3, 100e-3,-250e-3],RNode, wire=False,fixed=False,material='gridNodeMat') ) front2= O.bodies.append( gridNode([ 150e-3, 100e-3, 250e-3],RNode, wire=False,fixed=False,material='gridNodeMat') ) front3= O.bodies.append( gridNode([-150e-3, 100e-3, 250e-3],RNode, wire=False,fixed=False,material='gridNodeMat') ) front01= O.bodies.append( gridConnection(front0,front1,RNode,color=color,material='gridNodeMat') ) front02= O.bodies.append( gridConnection(front0,front2,RNode,color=color,material='gridNodeMat') ) front03= O.bodies.append( gridConnection(front0,front3,RNode,color=color,material='gridNodeMat') ) front12= O.bodies.append( gridConnection(front1,front2,RNode,color=color,material='gridNodeMat') ) front23= O.bodies.append( gridConnection(front2,front3,RNode,color=color,material='gridNodeMat') ) front012= O.bodies.append( pfacet(front0,front1,front2, wire=False,material='pFacetMat',color=color) ) front023= O.bodies.append( pfacet(front0,front2,front3, wire=False,material='pFacetMat',color=color) ) clumpfront=[] clumpfront=[front0,front1,front2,front3,front01,front02,front03,front12,front23,front012,front023] cid5=O.bodies.clump(clumpfront) print 'cid5=',cid5 O.bodies[cid5].state.blockedDOFs='xzXYZ' #back 20 21 22 23 back0= O.bodies.append( gridNode([ 150e-3,-100e-3,-250e-3],RNode, wire=False,fixed=False,material='gridNodeMat') ) back1= O.bodies.append( gridNode([-150e-3,-100e-3,-250e-3],RNode, wire=False,fixed=False,material='gridNodeMat') ) back2= O.bodies.append( gridNode([-150e-3,-100e-3, 250e-3],RNode, wire=False,fixed=False,material='gridNodeMat') ) back3= O.bodies.append( gridNode([ 150e-3,-100e-3, 250e-3],RNode, wire=False,fixed=False,material='gridNodeMat') ) back01= O.bodies.append( gridConnection(back0,back1,RNode,color=color,material='gridNodeMat') ) back02= O.bodies.append( gridConnection(back0,back2,RNode,color=color,material='gridNodeMat') ) back03= O.bodies.append( gridConnection(back0,back3,RNode,color=color,material='gridNodeMat') ) back12= O.bodies.append( gridConnection(back1,back2,RNode,color=color,material='gridNodeMat') ) back23= O.bodies.append( gridConnection(back2,back3,RNode,color=color,material='gridNodeMat') ) back012= O.bodies.append( pfacet(back0,back1,back2, wire=False,material='pFacetMat',color=color) ) back023= O.bodies.append( pfacet(back0,back2,back3, wire=False,material='pFacetMat',color=color) ) clumpback=[] clumpback=[back0,back1,back2,back3,back01,back02,back03,back12,back23,back012,back023] cid6=O.bodies.clump(clumpback) print 'cid6=',cid6 O.bodies[cid6].state.blockedDOFs='xzXYZ' #=======================================sphere================================================= sp = yade.pack.SpherePack() #sp.makeCloud(mi,ma,psdSizes=[0.09e-3,0.18e-3,0.2e-3,0.24e-3,0.28e-3,0.7e-3],psdCumm=[0.,0.2,0.4,0.6,0.8,1.0],num=65000) sp.makeCloud(mi,ma,porosity=0.66/1.66,psdSizes=[4*0.5e-3,4*0.75e-3,4*0.8e-3,4*0.9e-3,4*1.2e-3,4*2e-3],psdCumm=[0.,0.2,0.4,0.6,0.8,1.0]) # e min =0.56, and e max =0.89, e=0.66 spheres=sp.toSimulation(color=(0,0.5,0.7),material='sphereMat') sphereIDs = [b.id for b in O.bodies if type(b.shape)==Sphere] numparts = len(sphereIDs) print 'numparts =',numparts O.forces.setPermF(11,(0,0,100)) O.forces.setPermF(23,(0,0,-100)) O.forces.setPermF(35,(100,0,0)) O.forces.setPermF(47,(-100,0,0)) O.forces.setPermF(59,(0,-100,0)) O.forces.setPermF(71,(0, 100,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 : yade-users@lists.launchpad.net Unsubscribe : https://launchpad.net/~yade-users More help : https://help.launchpad.net/ListHelp