How to do model bearing capacity of soil

Asked by veerawat

I need to make model bearing capacity of soil .By wanting to know the weight that can be received . What to do model ?

Question information

Language:
English Edit question
Status:
Solved
For:
Yade Edit question
Assignee:
No assignee Edit question
Solved by:
Jan Stránský
Solved:
Last query:
Last reply:

This question was reopened

Revision history for this message
Robert Caulk (rcaulk) said :
#1

You could use Terzaghi's theory for bearing capacity :-)

[1] https://en.wikipedia.org/wiki/Bearing_capacity#Terzaghi's_Bearing_Capacity_Theory

Revision history for this message
veerawat (suesan) said :
#3

Yes . I use terzaghi’s theory .Can. you building model bearing ?

Revision history for this message
Robert Caulk (rcaulk) said :
#4

I am sorry, I do not understand what you are asking. Can you please rephrase your question?

Revision history for this message
veerawat (suesan) said :
#5

I want to make a model bearing capacity of soil . But I can’t resize the pressure wall. I want to resize the pressed wall, what to do?

This is my code#######

from yade import pack

sp=pack.SpherePack()
## corners of the initial packing
mn,mx=Vector3(0,0,0),Vector3(10,10,10)

## box size, radius, number of ball
sp.makeCloud(minCorner=mn,maxCorner=mx,rRelFuzz=.1,num=1500)

## create material #0, which will be used as default
O.materials.append(FrictMat(young=15000000,poisson=.4,frictionAngle=radians(30),density=2600,label='spheres'))
O.materials.append(FrictMat(young=15000000,poisson=.4,frictionAngle=0,density=0,label='frictionless'))

## copy spheres from the packing into the scene
## use default material, don't care about that for now
O.bodies.append([sphere(center,rad,material='spheres') for center,rad in sp])
## create walls around the packing
walls=aabbWalls(thickness=1e-10,material='frictionless')
wallIds=O.bodies.append(walls)
# wall of each side
triax=TriaxialCompressionEngine(
 wall_bottom_id=wallIds[2],
 wall_top_id=wallIds[2],
 wall_left_id=wallIds[0],
 wall_right_id=wallIds[2],
 wall_back_id=wallIds[2],
 wall_front_id=wallIds[2],
 internalCompaction=False,

 sigmaIsoCompaction=-50000,
 sigmaLateralConfinement=-50000,
 max_vel=10,
 strainRate=0.01,
 label="triax"
)

O.engines=[
 ForceResetter(),
 InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Box_Aabb()]),
 InteractionLoop(
  [Ig2_Sphere_Sphere_ScGeom(),Ig2_Box_Sphere_ScGeom()],
  [Ip2_FrictMat_FrictMat_FrictPhys()],
  [Law2_ScGeom_FrictPhys_CundallStrack()]
 ),
 GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=100,timestepSafetyCoefficient=0.8),
 triax,

 NewtonIntegrator(damping=.4)
]

from yade import plot
O.engines=O.engines[0:5]+[PyRunner(iterPeriod=20,command='history()',label='recorder')]+O.engines[5:7]
def history():
 plot.addData(e11=-triax.strain[0], e22=-triax.strain[1], e33=-triax.strain[2],
  s11=-triax.stress(0)[0],
  s22=-triax.stress(2)[1],
  s33=-triax.stress(4)[2],
  i=O.iter)

plot.plots={'i': ('e11','e22','e33',None,'s11','s22','s33')}

O.saveTmp()
plot.plot()

Revision history for this message
veerawat (suesan) said :
#6
Revision history for this message
Robert Caulk (rcaulk) said :
#7

>But I can’t resize the pressure wall. I want to resize the pressed wall, what to do?

What is the pressure/pressed wall? It would help to understand if you mention the methods you have already tried. (e.g. I tried to change _insert command here_ but I see that it doesn't change the size).

I think maybe you want to use facets [1] to model the application of weight, but I am still a bit unsure what you are asking.

[1]https://yade-dem.org/doc/yade.geom.html

Revision history for this message
veerawat (suesan) said :
#8

 I want to make a model of soil weight bearing. Which the pressure that I use is needed as a square of various sizes.
but my code is not scalable. What should I do?

Revision history for this message
Jan Stránský (honzik) said :
#9

Hello,

> What should I do?

help us to help you :-)
If you expect a help from us, you should try to formulate your problem both shortly but at the same time as specifically as possible. Also read [2].
It may happen that the formulation is not complete or too vague (like your description here). Then you should provide required information. E.g. answer:
- What is the pressure/pressed wall? (Robert's question)
- it would help to understand if you mention the methods you have already tried (Robert's info request)
- have you tried [1]? if yes, why is did not help?

Some other notes:

> I want to make a model of soil weight bearing.

yes, this is clear form the original post, you do not need to repeat this, rather focus on the information that are missing.

> But I can’t resize the pressure wall.

Yade wall is an infinite plate, is cannot be resized. Use a different type of a boundary (as already proposed by Robert), e.g. facet or box.

cheers
Jan

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

Revision history for this message
veerawat (suesan) said :
#10

ok sir, so i saw your video that you make" rod pressure soil" .I really want to make a pressure that you make . i try to use that code for my model but it is not working.i can not understand a code that you make and trying to run a code. it does not work too.can you please help me to make a pressure for my model. this is my model

from yade import pack, plot

# create rectangular box from facets
O.bodies.append(geom.facetBox((.5,.5,.5),(.5,.5,.5),wallMask=63))

# create empty sphere packing
# sphere packing is not equivalent to particles in simulation, it contains only the pure geometry

O.materials.append(FrictMat(density=1000,young=1e4,poisson=0.3,frictionAngle=radians(30),label='sphereMat'))

# sphere packing is not equivalent to particles in simulation, it contains only the pure geometry
sp=pack.SpherePack()
# generate randomly spheres with uniform radius distribution
O.materials.append(FrictMat(density=1000,young=1e4,poisson=0.3,frictionAngle=radians(30),label='sphereMat'))

sp.makeCloud((0,0,0),(1,1,1),rMean=.03,rRelFuzz=.01,num=10000,seed=10000)
# add the sphere pack to the simulation
sp.toSimulation()

O.engines=[
 ForceResetter(),
 InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Facet_Aabb()]),
 InteractionLoop(
  # handle sphere+sphere and facet+sphere collisions
  [Ig2_Sphere_Sphere_ScGeom(),Ig2_Facet_Sphere_ScGeom()],
  [Ip2_FrictMat_FrictMat_FrictPhys()],
  [Law2_ScGeom_FrictPhys_CundallStrack()]
 ),
 NewtonIntegrator(gravity=(0,0,-9.81),damping=0.4),
 # call the checkUnbalanced function (defined below) every 2 seconds

]
O.dt=.5*PWaveTimeStep()

#
O.saveTmp()

Revision history for this message
veerawat (suesan) said :
#11

ok sir, so i saw your video that you make" rod pressure soil" .I really want to make a pressure that you make . i try to use that code for my model but it is not working.i can not understand a code that you make and trying to run a code. it does not work too.can you please help me to make a pressure for my model. this is my model

from yade import pack, plot

# create rectangular box from facets
O.bodies.append(geom.facetBox((.5,.5,.5),(.5,.5,.5),wallMask=63))

# create empty sphere packing
# sphere packing is not equivalent to particles in simulation, it contains only the pure geometry

O.materials.append(FrictMat(density=1000,young=1e4,poisson=0.3,frictionAngle=radians(30),label='sphereMat'))

# sphere packing is not equivalent to particles in simulation, it contains only the pure geometry
sp=pack.SpherePack()
# generate randomly spheres with uniform radius distribution
O.materials.append(FrictMat(density=1000,young=1e4,poisson=0.3,frictionAngle=radians(30),label='sphereMat'))

sp.makeCloud((0,0,0),(1,1,1),rMean=.03,rRelFuzz=.01,num=10000,seed=10000)
# add the sphere pack to the simulation
sp.toSimulation()

O.engines=[
 ForceResetter(),
 InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Facet_Aabb()]),
 InteractionLoop(
  # handle sphere+sphere and facet+sphere collisions
  [Ig2_Sphere_Sphere_ScGeom(),Ig2_Facet_Sphere_ScGeom()],
  [Ip2_FrictMat_FrictMat_FrictPhys()],
  [Law2_ScGeom_FrictPhys_CundallStrack()]
 ),
 NewtonIntegrator(gravity=(0,0,-9.81),damping=0.4),
 # call the checkUnbalanced function (defined below) every 2 seconds

]
O.dt=.5*PWaveTimeStep()

#
O.saveTmp()

Revision history for this message
veerawat (suesan) said :
#12

if you don't understand that the meaning that i try to say please tell me . my English is not good . thank you

Revision history for this message
Jan Stránský (honzik) said :
#13

> i saw your video that you make" rod pressure soil"

please provide a link

> but it is not working.
> it does not work too

please be more specific. If it gives errors, provide the errors. If the results are not as expected, describe actual and expected results....

> i can not understand a code that you make

please provide the code (if you want help to understand it)

cheers
Jan

Revision history for this message
veerawat (suesan) said :
#14

Dear jan,

this's link

https://www.youtube.com/watch?v=b_yLp0onOzg

i want to put the compressin like this video for my script :

from yade import pack, plot

# create rectangular box from facets
O.bodies.append(geom.facetBox((.5,.5,.5),(.5,.5,.5),wallMask=63))

# create empty sphere packing
# sphere packing is not equivalent to particles in simulation, it contains only the pure geometry

O.materials.append(FrictMat(density=1000,young=1e4,poisson=0.3,frictionAngle=radians(30),label='sphereMat'))

# sphere packing is not equivalent to particles in simulation, it contains only the pure geometry
sp=pack.SpherePack()
# generate randomly spheres with uniform radius distribution
O.materials.append(FrictMat(density=1000,young=1e4,poisson=0.3,frictionAngle=radians(30),label='sphereMat'))

sp.makeCloud((0,0,0),(1,1,1),rMean=.03,rRelFuzz=.01,num=10000,seed=10000)
# add the sphere pack to the simulation
sp.toSimulation()

O.engines=[
 ForceResetter(),
 InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Facet_Aabb()]),
 InteractionLoop(
  # handle sphere+sphere and facet+sphere collisions
  [Ig2_Sphere_Sphere_ScGeom(),Ig2_Facet_Sphere_ScGeom()],
  [Ip2_FrictMat_FrictMat_FrictPhys()],
  [Law2_ScGeom_FrictPhys_CundallStrack()]
 ),
 NewtonIntegrator(gravity=(0,0,-9.81),damping=0.4),
 # call the checkUnbalanced function (defined below) every 2 seconds

]
O.dt=.5*PWaveTimeStep()

#
O.saveTmp()

thank for helping me

Revision history for this message
Jan Stránský (honzik) said :
#15

Some notes:
- define material prior to creating bodies
- use box [1] for simple geometries instead of facets

a MWE:
###
from yade import pack

O.materials.append(FrictMat(density=1000,young=1e4,poisson=0.3,frictionAngle=radians(30),label='sphereMat'))

# create rectangular box from boxes (maybe there is some library function, but I did not find it quickly)
cx,cy,cz = .5,.5,.5 # center of the box
dx,dy,dz = .5,.5,.5 # half-dimensions of the box
t = 0.025 # half-thickness of walls
topx,topy = 0.2, 0.3 # top box half-dimensions
left = box((cx-dx-t,cy,cz),(t,dy,dz),fixed=True,wire=True)
right = box((cx+dx+t,cy,cz),(t,dy,dz),fixed=True,wire=True)
front = box((cx,cy-dy-t,cz),(dx,t,dz),fixed=True,wire=True)
back = box((cx,cy+dy+t,cz),(dx,t,dz),fixed=True,wire=True)
bottom = box((cx,cy,cz-dz-t),(dx,dy,t),fixed=True,wire=True)
top = box((cx,cy,cz+dz+t),(topx,topy,t),fixed=True)
O.bodies.append((left,right,back,front,bottom,top))

sp=pack.SpherePack()
# generate randomly spheres with uniform radius distribution
sp.makeCloud((0,0,0),(1,1,1),rMean=.03,rRelFuzz=.01,num=10000,seed=10000)
# add the sphere pack to the simulation
sp.toSimulation()

O.engines=[
   ForceResetter(),
   InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Box_Aabb()]),
   InteractionLoop(
      [Ig2_Sphere_Sphere_ScGeom(),Ig2_Box_Sphere_ScGeom()],
      [Ip2_FrictMat_FrictMat_FrictPhys()],
      [Law2_ScGeom_FrictPhys_CundallStrack()]
   ),
   NewtonIntegrator(gravity=(0,0,-9.81),damping=0.4),
]
O.dt=.5*PWaveTimeStep()

top.state.vel = (0,0,-.5) # setting velocity is the simplest boundary condition, but you can also apply force or whatever...
###

cheers
Jan

[3] https://yade-dem.org/doc/yade.utils.html#yade.utils.box

Revision history for this message
veerawat (suesan) said :
#16

this is what i need thank you so much.

But i got a little bit problem. Some particles at the mid-bottom and a box of facet are got through the box. Is there anyway i can fix it?

here is video:

https://drive.google.com/file/d/1lL5rkv1UiJ8U3bbQauXj1j7wqv18DNYa/view?usp=drivesdk

Revision history for this message
Best Jan Stránský (honzik) said :
#17

You can:
- stop the simulation before it occurs
- use somewhat sophisticated simulation control (then just prescribe velocity and let it run)

cheers
Jan

Revision history for this message
veerawat (suesan) said :
#18

thanks jan . you are the best

Revision history for this message
veerawat (suesan) said :
#19

Thanks Jan Stránský, that solved my question.

Revision history for this message
Bowonchanok Maneerat (lnwnew5555) said :
#20

Dear jan ,

I appreciate the things you do so much indeed. So now the top box drop down with velocity that set up, I would like to know that can the top box drop down by force.and How to change it ?

Revision history for this message
Jan Stránský (honzik) said :
#21

O.forces.setPermF(top.id,forceVector) # [1]
or for older Yade versions
O.forces.addF(top.id,forceVector) # if I remember correctly

cheers
Jan

[1] https://yade-dem.org/doc/yade.wrapper.html#yade.wrapper.ForceContainer.setPermF