Triaxial test using polyhedral particles
Hello,
I am new user of YADE and I’m trying to do a Triaxial test using polyhedral shapes.
To prepare the sample I created a cloud of spheres and then replace them with polyhedral particles.
Therefore, my question is:
1- Is it possible to use polyhedral shapes using periodic boundary conditions?
If you have any suggestions about using polyhedral particles please tell me! (the following is my code)
sp0=pack.
NbParticles=
#### to replace the spheres with polyhedral particles ####
for center,radius in sp0:
t=polyhedra_
t.state.pos=center ### to give the polyhedral particle the same position as the sphere
O.bodies.append(t)
2- I am also trying to prepare a Triaxial test with polyhedral particles and walls:
I created walls using aabbWalls
Use the TriaxialStressC
However, when I run the simulation I get a warning saying that the verletDist is set to 0 because no spheres are found… and the walls move with no contacts with the particles. I used the following engine and laws:
O.engines=[
ForceResetter(),
InsertionSortC
InteractionLoop(
[Ig2_
[Ip2_
[Law2_
),
O.dt=0.
...... I tried to change the time step but its the same.
When I run a previous example “examples_
Thank you for your help!
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-08
- Last query:
- 2020-12-08
- Last reply:
- 2020-12-06
|
#1 |
Hello,
> I am new user of YADE
welcome :-)
> the following is my code
please post the code in the form of MWE [1] M=minimal, W=working, such that we can try the code ourselves.
Without it, often we can just guess..
> 1- Is it possible to use polyhedral shapes using periodic boundary conditions?
yes
###
from yade import polyhedra_utils
mat = PolyhedraMat()
p1,p2 = [polyhedra_
p1.state.pos = (1,2,2)
p2.state.pos = (19,2,2)
p1.state.vel = (1,0,0)
O.bodies.
O.periodic = True
O.cell.
O.engines=[
ForceResett
InsertionSo
Interaction
),
NewtonInteg
]
O.dt = 3e-5
###
2)
> However, when I run the simulation I get a warning saying that the verletDist is set to 0 because no spheres are found
it is just warning :-)
Collider with default verletDist expects some spherical particles.
set InsertionSortCo
to hide the warning.
> I created walls using aabbWalls
> and the walls move with no contacts with the particles
aabbWalls create 6 Boxex, not actually Walls.
You have no box-polyhdron Ig2 in your engines.
cheers
Jan
[1] https:/
[2] https:/
Jérôme Duriez (jduriez) said : | #2 |
3. You may note that stress control algorithms in TriaxialStressC
Which does not exist with a default use of Polyhedra, see eg https:/
Bilal Al Tfaily (bilaltf) said : | #3 |
Thank you Jan and Jérôme for your answers. :-)
-Yes, we can hide the warning, but setting the verletDist to 0 will prevent us from avoiding the collider to run at every time step, which will cause more computation time. Is it true? If yes, how can I choose a good value for the verletDist of non-spherical particles?
-As I read from previous discussion that aabbWalls does not work well with polyhedral particles. In addition, no Box_Polyhedra Ig2 exists in the engines. Therefore, I am trying to create real Walls using utils.wall, but now I should control the stress.
Best,
Bilal
Jan Stránský (honzik) said : | #4 |
> but setting the verletDist to 0 will prevent us from avoiding the collider to run at every time step, which will cause more computation time. Is it true?
not necessarily.
It makes collider to run fewer times, but potentially let more work on interaction geometry. Which is "cheap" for spheres, but "expensive" for polyhedrons.
> how can I choose a good value for the verletDist of non-spherical particles?
trial-and-error is a good approach here (try different values, determine the trend and choose the best one).
It depends on the simulation itself (shape of particles, density of the packing, ...), so probably a number cannot be set very generally..
cheers
Jan
Bilal Al Tfaily (bilaltf) said : | #6 |
Thanks Jan Stránský, that solved my question.