Public bug reported: I seem to get a Segmentation fault (core dumped) when using GridConnection, PFacet, and randomDensePack. And I am not sure why. I have attached an image and "working" example.
Thanks in advance, Justin Edit: I could not seem to upload an picture or example code. Thus code below: from yade.gridpfacet import * import numpy as np from yade import utils from yade import ymport import sys,time,math,random from yade import qt qt.View() #print(os.path.basename(__file__)) #quit() ########### ParallelEngine, -j4 boxCenter = (0,0,.025) ## double check that /2 would create correct length, I.e., import based_70 to see if they match... they should boxDem = (.2123/2,.212/2,.064/2) ### based_70 is 212.3x212.21x63.65 boxDem = (.07,.07,.025) ### blen = boxDem[0]*2 ## Length of Ball pit bhei = .025 ## Height of Ball pit # Spheres information sphereRadius = .004 # [m] nu = .48 #G = 300000 # [Pa] den_rub = 89724 # [kg/m^3] yng_rub = 3000000 # [Pa] fric_rub = radians(38) # [degrees] O.materials.append(FrictMat(frictionAngle=fric_rub,young=yng_rub,density=den_rub,poisson=nu,label='rubber')) O.materials.append(FrictMat(young=200e9,density=8050,poisson=.3, label='steel')) # used steel properties to make rigid ## Stud informtion #studStartZ = (.01+.022+.01905) studStartZ = (.01+bhei+.01905) transVel = 0.000222*2 rotVel = 0.00872665*2 ### pack auto fills, i.e., I no longer pick the amount of spheres pred = pack.inAlignedBox((-(boxDem[0]-.001),-(boxDem[0]-.001),bhei+sphereRadius/2+.001),((boxDem[0]-.001),(boxDem[0]-.001),bhei+.045)) sp = pack.randomDensePack(pred, radius=sphereRadius, memoizeDb='tmp/single_grass.sqlite', returnSpherePack=True) sp.toSimulation(wire=False,material='rubber') ## Time step set to 20% of Rayleigh Wave O.dt=.2*utils.RayleighWaveTimeStep() # 0.0011302534626965682 print(O.dt) ### Steps needed to run sim sphereFalls = 1000 ### Steps spheres need to fall and level out and turn on studs startRot = sphereFalls+math.floor((studStartZ-bhei-.01)/transVel/O.dt) ### Step needed for transVel to get studs level with spheres ## Rotation steps deg_to_rad_length = (60*pi/180); # [rad] num_sec_roto = deg_to_rad_length/rotVel; # [s] num_of_steps_roto = num_sec_roto/O.dt; endSim = startRot + math.floor(num_of_steps_roto) ### total steps in sim O.engines=[ ###Reset all forces stored in Scene::forces (O.forces in python). Typically, this is the first engine to be run at every step. In addition, reset those energies that should be reset, if energy tracing is enabled. ## Resets forces and moments that act on bodies ForceResetter(), ## Using bounding boxes find possible body collisions. InsertionSortCollider([ Bo1_Facet_Aabb(), Bo1_PFacet_Aabb(), Bo1_Sphere_Aabb(), Bo1_GridConnection_Aabb(), Bo1_PFacet_Aabb(), ]), InteractionLoop([ Ig2_Facet_Sphere_ScGeom(), Ig2_Wall_PFacet_ScGeom(), Ig2_Wall_Sphere_ScGeom(), Ig2_Sphere_Sphere_ScGeom(), Ig2_Sphere_GridConnection_ScGridCoGeom(), Ig2_Sphere_PFacet_ScGridCoGeom(), Ig2_GridNode_GridNode_GridNodeGeom6D(), Ig2_GridConnection_GridConnection_GridCoGridCoGeom(), Ig2_GridConnection_PFacet_ScGeom(), Ig2_PFacet_PFacet_ScGeom(), ], [ # Ip2_CohFrictMat_CohFrictMat_CohFrictPhys(setCohesionNow=True,setCohesionOnNewContacts=True), # internal cylinder physics Ip2_CohFrictMat_CohFrictMat_CohFrictPhys(setCohesionNow=True), # internal cylinder physics ## Currently grass does not interact with facet, probably should not matter, since the spheres will be holding them up. 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 ]), NewtonIntegrator(damping=.2,gravity=[0,0,-9.81], label='newtonInt'), ] ## Grass Information #O.materials.append(CohFrictMat(young=8e5,poisson=0.3,density=4e3,frictionAngle=np.radians(30),normalCohesion=1e5,shearCohesion=1e5,momentRotationLaw=True,label='grass')) ## Properties Need to be corrected O.materials.append(CohFrictMat(young=100,poisson=0.3,density=40,frictionAngle=np.radians(30),normalCohesion=1e5,shearCohesion=1e5,momentRotationLaw=True,label='grass')) #rCyl = 0.0006 ## Radius, Grass was about 1.2 [mm] wide rCyl = 0.0026 ## Grass was about 1.2 [mm] wide nL = 4 ## No exact Number here, just trial and error L = bhei ## Height of spheres ### Grass Creation ### Create all nodes first : nodesIds=[] idxc = -1 x_gap = 0.009 ## Between lumps is roughly 9 [mm] y_gap = 0.01905 ## Between lines of backing is .75 inch apart range_x = int(math.floor(blen/x_gap)) ## finding the range for x range_y = int(math.floor(blen/y_gap)) ## finding the range for z cen_y = -(range_y/2)*y_gap ## Allows the "box" of grass to be center in Z color=[255./255.,102./255.,0./255.] steel_r = (1/4*0.00635)/2 ### Converting 1/4 steel to m, to a sphere radius box = [] box.append(O.bodies.append( gridNode([-boxDem[0],-boxDem[1],0],steel_r,wire=False,fixed=True,material='steel',color=color) )) box.append(O.bodies.append( gridNode([boxDem[0],-boxDem[1],0],steel_r,wire=False,fixed=True,material='steel',color=color) )) box.append(O.bodies.append( gridNode([boxDem[0],boxDem[1],0],steel_r,wire=False,fixed=True,material='steel',color=color) )) box.append(O.bodies.append( gridNode([-boxDem[0],boxDem[1],0],steel_r,wire=False,fixed=True,material='steel',color=color) )) O.bodies.append( gridConnection(box[0],box[1],steel_r,color=color,material='steel') ) O.bodies.append( gridConnection(box[1],box[2],steel_r,color=color,material='steel') ) O.bodies.append( gridConnection(box[2],box[0],steel_r,color=color,material='steel') ) O.bodies.append( gridConnection(box[2],box[3],steel_r,color=color,material='steel') ) O.bodies.append( gridConnection(box[3],box[0],steel_r,color=color,material='steel') ) O.bodies.append( pfacet(box[0],box[1],box[2],wire=False,material='steel',color=color) ) O.bodies.append( pfacet(box[0],box[2],box[3],wire=False,material='steel',color=color) ) O.stopAtIter=endSim ### Stop sim at endSim steps #O.run() ** Affects: yade Importance: Undecided Status: New -- You received this bug notification because you are a member of Yade developers, which is subscribed to Yade. https://bugs.launchpad.net/bugs/1852197 Title: Segmentation fault on pfacet gridconnection contact Status in Yade: New Bug description: I seem to get a Segmentation fault (core dumped) when using GridConnection, PFacet, and randomDensePack. And I am not sure why. I have attached an image and "working" example. Thanks in advance, Justin Edit: I could not seem to upload an picture or example code. Thus code below: from yade.gridpfacet import * import numpy as np from yade import utils from yade import ymport import sys,time,math,random from yade import qt qt.View() #print(os.path.basename(__file__)) #quit() ########### ParallelEngine, -j4 boxCenter = (0,0,.025) ## double check that /2 would create correct length, I.e., import based_70 to see if they match... they should boxDem = (.2123/2,.212/2,.064/2) ### based_70 is 212.3x212.21x63.65 boxDem = (.07,.07,.025) ### blen = boxDem[0]*2 ## Length of Ball pit bhei = .025 ## Height of Ball pit # Spheres information sphereRadius = .004 # [m] nu = .48 #G = 300000 # [Pa] den_rub = 89724 # [kg/m^3] yng_rub = 3000000 # [Pa] fric_rub = radians(38) # [degrees] O.materials.append(FrictMat(frictionAngle=fric_rub,young=yng_rub,density=den_rub,poisson=nu,label='rubber')) O.materials.append(FrictMat(young=200e9,density=8050,poisson=.3, label='steel')) # used steel properties to make rigid ## Stud informtion #studStartZ = (.01+.022+.01905) studStartZ = (.01+bhei+.01905) transVel = 0.000222*2 rotVel = 0.00872665*2 ### pack auto fills, i.e., I no longer pick the amount of spheres pred = pack.inAlignedBox((-(boxDem[0]-.001),-(boxDem[0]-.001),bhei+sphereRadius/2+.001),((boxDem[0]-.001),(boxDem[0]-.001),bhei+.045)) sp = pack.randomDensePack(pred, radius=sphereRadius, memoizeDb='tmp/single_grass.sqlite', returnSpherePack=True) sp.toSimulation(wire=False,material='rubber') ## Time step set to 20% of Rayleigh Wave O.dt=.2*utils.RayleighWaveTimeStep() # 0.0011302534626965682 print(O.dt) ### Steps needed to run sim sphereFalls = 1000 ### Steps spheres need to fall and level out and turn on studs startRot = sphereFalls+math.floor((studStartZ-bhei-.01)/transVel/O.dt) ### Step needed for transVel to get studs level with spheres ## Rotation steps deg_to_rad_length = (60*pi/180); # [rad] num_sec_roto = deg_to_rad_length/rotVel; # [s] num_of_steps_roto = num_sec_roto/O.dt; endSim = startRot + math.floor(num_of_steps_roto) ### total steps in sim O.engines=[ ###Reset all forces stored in Scene::forces (O.forces in python). Typically, this is the first engine to be run at every step. In addition, reset those energies that should be reset, if energy tracing is enabled. ## Resets forces and moments that act on bodies ForceResetter(), ## Using bounding boxes find possible body collisions. InsertionSortCollider([ Bo1_Facet_Aabb(), Bo1_PFacet_Aabb(), Bo1_Sphere_Aabb(), Bo1_GridConnection_Aabb(), Bo1_PFacet_Aabb(), ]), InteractionLoop([ Ig2_Facet_Sphere_ScGeom(), Ig2_Wall_PFacet_ScGeom(), Ig2_Wall_Sphere_ScGeom(), Ig2_Sphere_Sphere_ScGeom(), Ig2_Sphere_GridConnection_ScGridCoGeom(), Ig2_Sphere_PFacet_ScGridCoGeom(), Ig2_GridNode_GridNode_GridNodeGeom6D(), Ig2_GridConnection_GridConnection_GridCoGridCoGeom(), Ig2_GridConnection_PFacet_ScGeom(), Ig2_PFacet_PFacet_ScGeom(), ], [ # Ip2_CohFrictMat_CohFrictMat_CohFrictPhys(setCohesionNow=True,setCohesionOnNewContacts=True), # internal cylinder physics Ip2_CohFrictMat_CohFrictMat_CohFrictPhys(setCohesionNow=True), # internal cylinder physics ## Currently grass does not interact with facet, probably should not matter, since the spheres will be holding them up. 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 ]), NewtonIntegrator(damping=.2,gravity=[0,0,-9.81], label='newtonInt'), ] ## Grass Information #O.materials.append(CohFrictMat(young=8e5,poisson=0.3,density=4e3,frictionAngle=np.radians(30),normalCohesion=1e5,shearCohesion=1e5,momentRotationLaw=True,label='grass')) ## Properties Need to be corrected O.materials.append(CohFrictMat(young=100,poisson=0.3,density=40,frictionAngle=np.radians(30),normalCohesion=1e5,shearCohesion=1e5,momentRotationLaw=True,label='grass')) #rCyl = 0.0006 ## Radius, Grass was about 1.2 [mm] wide rCyl = 0.0026 ## Grass was about 1.2 [mm] wide nL = 4 ## No exact Number here, just trial and error L = bhei ## Height of spheres ### Grass Creation ### Create all nodes first : nodesIds=[] idxc = -1 x_gap = 0.009 ## Between lumps is roughly 9 [mm] y_gap = 0.01905 ## Between lines of backing is .75 inch apart range_x = int(math.floor(blen/x_gap)) ## finding the range for x range_y = int(math.floor(blen/y_gap)) ## finding the range for z cen_y = -(range_y/2)*y_gap ## Allows the "box" of grass to be center in Z color=[255./255.,102./255.,0./255.] steel_r = (1/4*0.00635)/2 ### Converting 1/4 steel to m, to a sphere radius box = [] box.append(O.bodies.append( gridNode([-boxDem[0],-boxDem[1],0],steel_r,wire=False,fixed=True,material='steel',color=color) )) box.append(O.bodies.append( gridNode([boxDem[0],-boxDem[1],0],steel_r,wire=False,fixed=True,material='steel',color=color) )) box.append(O.bodies.append( gridNode([boxDem[0],boxDem[1],0],steel_r,wire=False,fixed=True,material='steel',color=color) )) box.append(O.bodies.append( gridNode([-boxDem[0],boxDem[1],0],steel_r,wire=False,fixed=True,material='steel',color=color) )) O.bodies.append( gridConnection(box[0],box[1],steel_r,color=color,material='steel') ) O.bodies.append( gridConnection(box[1],box[2],steel_r,color=color,material='steel') ) O.bodies.append( gridConnection(box[2],box[0],steel_r,color=color,material='steel') ) O.bodies.append( gridConnection(box[2],box[3],steel_r,color=color,material='steel') ) O.bodies.append( gridConnection(box[3],box[0],steel_r,color=color,material='steel') ) O.bodies.append( pfacet(box[0],box[1],box[2],wire=False,material='steel',color=color) ) O.bodies.append( pfacet(box[0],box[2],box[3],wire=False,material='steel',color=color) ) O.stopAtIter=endSim ### Stop sim at endSim steps #O.run() To manage notifications about this bug go to: https://bugs.launchpad.net/yade/+bug/1852197/+subscriptions _______________________________________________ Mailing list: https://launchpad.net/~yade-dev Post to : yade-dev@lists.launchpad.net Unsubscribe : https://launchpad.net/~yade-dev More help : https://help.launchpad.net/ListHelp