Cpm model
Hello everyone,
I'm using the cpm model to do a simple 2D unconfined compression test. After generating the packing, I load the packing into the compression test in which I erase the other walls except the upper and the lower walls but it seems that there is no cohesion since the packing explodes after loading. I wonder why there is no cohesion within the particles.
Here is my srcipts for making the packing:
from yade import pack
O.materials.
O.materials.
sp = pack.SpherePack()
size = .3
sp.makeCloud(
O.bodies.
walls=aabbWalls
wallIds=
#O.bodies.
#O.bodies.
#O.cell.hSize = Matrix3(size,0,0, 0,size,0, 0,0,.1)
print len(O.bodies)
r = numpy.zeros(400)
zdim = 5.e-2
for i in range(400):
p=O.bodies[i]
p.state.
p.state.mass = 2650 * zdim * pi * p.shape.radius**2 # 0.1 = thickness of cylindrical particle
inertia = 0.5 * p.state.mass * p.shape.radius**2
p.state.inertia = (.5*inertia,
r[i] = p.shape.radius
O.dt = .5*utils.
print O.dt
triax=TriaxialS
wall_
wall_
wall_
wall_
wall_
wall_
internalComp
stressMask = 3, #1 is x, 2 is y, 4 is z, Bitmask, if imposed goal`s are stresses (0 for none, 7 for all, 1 for direction 1, 5 for directions 1 and 3, etc. :ydefault:`7)
goal1 = -1.e7*(
goal2 = -1.e7*(
#goal1 = -1.e7,
#goal2 = -1.e7,
goal3 = 0.,
max_vel=0.01,
label = 'triax'
)
O.engines = [
ForceResetter(),
InsertionSor
InteractionLoop(
[
[
[
),
triax,
NewtonIntegr
]
while 1:
O.run(1000,True)
unb=
area=0.
for i in range(400):
p = O.bodies[i]
area += pi*p.shape.
areatotal = triax.width*
void=
voidratio=
print 'unbalanced force:'
if unb<0.001:
O.
break
any kind of help is appreciated.
Question information
- Language:
- English Edit question
- Status:
- Solved
- For:
- Yade Edit question
- Assignee:
- No assignee Edit question
- Solved by:
- Jan Stránský
- Solved:
- 2020-12-30
- Last query:
- 2020-12-30
- Last reply:
- 2020-12-29
Jan Stránský (honzik) said : | #1 |
Hello,
please read [1] and provide:
- version of Yade you use
- MWE, showing the explosion (packing creation itself is not really very helpful..)
> I wonder why there is no cohesion within the particles.
without any code, we can just guess..
There might be no cohesion because:
- you did not define cohesion at all
- you did not define cohesion properly
- cohesion is too weak
- cohesion is OK, other factor are problematic (e.g. unrealistic loading, making cohesion apparently vanish)
- ...
A few notes:
> Ig2_Sphere_
do you need 6D?
> O.save(
I **personally** consider exporting the packing (centers + radii) a better approach.
This way, you can also use independent material for packing creation.
cheers
Jan
Chen Lifan (chenlifan) said : | #3 |
Jan, thank you for your advice.
I'm using the yade of version 2018.02b. And below is my scripts for unconfined compression test :
from minieigen import *
from yade import plot
import numpy as np
import math, random
O.load(
width = triax.width
O.engines = O.engines[
O.bodies.erase(400)
O.bodies.erase(401)
O.bodies.erase(404)
O.bodies.erase(405)
top_wall = O.bodies[403]
bottom_wall = O.bodies[402]
top_wall.
bottom_
top_pos = top_wall.state.pos
bottom_pos = bottom_
height0 = top_pos[
zdim = 5.e-2
wall_area = width*zdim
r = numpy.zeros(400)
for i in range(400):
r[i] = O.bodies[
print 'Height: ',height0,'Initial stress: ', getStress(
top_wall.
O.run()
O.engines += [PyRunner(
globals(
fout = file('uniax_
fout.close()
def output():
print O.forces.
fout = open('uniax_
ystrain = (height0-
stress = O.forces.
print>
fout.close()
if ystrain >= 2.0:
O.
O.pause()
|
#4 |
> O.load(
please provide a MWE, W = working. With this, I get
RuntimeError: Simulation file to load doesn't exist: rve_2nd.yade.gz
(note, rve_1st.yade.gz is saved in the first part, should we use this one?)
> O.save(...)
> O.load(...)
Here, it basically means that you continue the simulation from the point where you saved it.
At the saved state, there is no cohesion.
There is no special reason, why cohesion should appear after O.load.
Have a look at examples/concrete [2] how cohesion is used.
For this approach, I suggest to save centers and radii of spheres (e.g. using export.text / ymport.text), not full simulation using O.save / O.load.
This way, you can also use independent (simpler) materials/approach for packing creation.
cheers
Jan
[2] https:/
Chen Lifan (chenlifan) said : | #5 |
Thanks Jan Stránský, that solved my question.