How to model a steel Plate in Yade

Asked by Trishala DAKA on 2021-05-02

Hi,
I want to model a specimen like, a layer of soil with a steel plate of 1mm in the middle(layer-plate-layer). I tried to model the plate with GridNode,Gridconnection and Pfacet. But when I introduced second layer of soil on plate as soon as sphere touches the plate it is breaking.

The engines I used
   O.engines=[
  ForceResetter(),
  InsertionSortCollider([
    Bo1_Sphere_Aabb(),
    Bo1_Facet_Aabb(),
    Bo1_Wall_Aabb(),
    Bo1_GridConnection_Aabb(),
    Bo1_PFacet_Aabb(),
  ]),
  InteractionLoop([
    Ig2_Sphere_Sphere_ScGeom(),
    Ig2_Facet_Sphere_ScGeom(),
    Ig2_Wall_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),
    Ip2_FrictMat_FrictMat_FrictPhys(frictAngle=MatchMaker(algo='max'))
  ],
  [
    Law2_ScGeom6D_CohFrictPhys_CohesionMoment(),
    Law2_ScGeom_FrictPhys_CundallStrack(),
    Law2_ScGridCoGeom_FrictPhys_CundallStrack(),
  ]
  ),
  NewtonIntegrator(gravity=(0,0,-9.81),damping=0.3,label='newton'),
]

Please ask me if I need to give more information.

Thanks

Question information

Language:
English Edit question
Status:
Answered
For:
Yade Edit question
Assignee:
No assignee Edit question
Last query:
Last reply:
Karol Brzezinski (kbrzezinski) said : #1

Please provide minimum working example [1].

[1] https://www.yade-dem.org/wiki/Howtoask

Robert Caulk (rcaulk) said : #2

>Please ask me if I need to give more information.

I am glad you asked... see below.

>But when I introduced second layer of soil on plate as soon as sphere touches the plate it is breaking.

Please elaborate. What does that mean "it is breaking?" What information did you collect to determine "it" is broken? Is there an error? If so what is the error? If not, how are you verifying "something" is "broken?" What do you expect from the behavior of the model? What are you basing your script on? An example script? Can you provide the link to the example script? What did you change from the example script to getto your current script? If so, what lines of the example script did you change to lead to the "broken" behavior?

Thank you

Trishala DAKA (saidaka) said : #3

Hi,

what I meant was broken:
In the primary view I can see that pfacet is loosing its connection with gridnode when sphere is falling from top on the PLATE.

My code:

O.load('Plate_layer1.xml') # I created First Layer of soil
from yade import pack,plot,utils,export,qt
from yade.gridpfacet import *

color=[135/255,206/255,235/255]
color1=[0/255,0/255,139/255]
colorf = [192/255,192/255,192/255]

O.engines=[
  ForceResetter(),
  InsertionSortCollider([
    Bo1_Sphere_Aabb(),
    Bo1_Facet_Aabb(),
    Bo1_Wall_Aabb(),
    Bo1_GridConnection_Aabb(),
    Bo1_PFacet_Aabb(),
  ]),
  InteractionLoop([
    Ig2_Sphere_Sphere_ScGeom(),
    Ig2_Facet_Sphere_ScGeom(),
    Ig2_Wall_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=False),
    #Ip2_FrictMat_FrictMat_FrictPhys()
    Ip2_FrictMat_FrictMat_FrictPhys(frictAngle=MatchMaker(algo='max'))
  ],
  [
    Law2_ScGeom6D_CohFrictPhys_CohesionMoment(),
    Law2_ScGeom_FrictPhys_CundallStrack(),
    Law2_ScGridCoGeom_FrictPhys_CundallStrack(),
    #Law2_GridCoGridCoGeom_FrictPhys_CundallStrack(),
  ]
  ),
  #GlobalStiffnessTimeStepper(timestepSafetyCoefficient=0.8, label='timeStepper'),
  NewtonIntegrator(gravity=(0,0,-9.81),damping=0.3,label='newton'),
]

O.materials.append( CohFrictMat( young=200e9,poisson=0.3,density=8050,frictionAngle=radians(30),normalCohesion=10e9,shearCohesion=10e9,momentRotationLaw=True,label='cohfrictMat' ) )
#O.materials.append( CohFrictMat( young=200e9,poisson=0.3,density=8050,frictionAngle=radians(26),normalCohesion=5e800,shearCohesion=4e800,label='cohfrictMat' ) )
O.materials.append( FrictMat( young=200e9,poisson=0.3,density=8050,frictionAngle=radians(30),label='frictMat' ) )

L=5
l=5
nby=10
nbx=10
r=0.001 #radius
colorTG=[40./255.,102./255.,50./255.]
nodesTG=[]
for i in range(0,nbx+1):
    for j in range(0,nby+1):
        nodesTG.append( O.bodies.append(gridNode([i*l/nbx-2.5,j*L/nby-2.5,-1.55],r,fixed=False,material='cohfrictMat')) )

for i in range(0,len(nodesTG)):
   for j in range(i+1,len(nodesTG)):
         x = O.bodies[nodesTG[i]].state.pos[0]
         y = O.bodies[nodesTG[i]].state.pos[1]
         x1 = O.bodies[nodesTG[j]].state.pos[0]
         y1 = O.bodies[nodesTG[j]].state.pos[1]
         d = ((x-x1)**2 +(y-y1)**2)**0.5
         if (d <= L/nby*1.01):
               O.bodies.append( gridConnection(nodesTG[i],nodesTG[j],r,material='frictMat') )
        #PFacet connection
for k in range(0,nby):
    for i in range(0+k*(nby+1),0+k*(nby+1)+nby):
          pfacetCreator3(nodesTG[i],nodesTG[i+nby+2],nodesTG[i+1],color=colorTG,material='frictMat')
          pfacetCreator3(nodesTG[i],nodesTG[i+nby+2],nodesTG[i+nby+1], color=colorTG,material='frictMat')
O.dt = PWaveTimeStep()
qt.Controller()
qtv = qt.View()
qtr = qt.Renderer()

Thanks.

Karol Brzezinski (kbrzezinski) said : #4

Hi,

Except for the fact that we don't have "Plate_layer1.xml" file, nothing special happens in this simulation (probably, because we don't have this file, so it isn't really a working example). My advice is to use regular facets [1] or wall or box

Best wishes,
Karol

[1] https://yade-dem.org/doc/yade.utils.html?highlight=facet

Can you help with this problem?

Provide an answer of your own, or ask Trishala DAKA for more information if necessary.

To post a message you must log in.