Disappearing Spheres, clouds of clumps and compaction?
I am looking to study the gentle compression by a membrane descending on a particle bed confined within a box – then look at effects of particle shape and particle size distrbution on the structures generated.
So first I am trying to understand how to replicate the gravity example from Yade.
Woo is so comprehensive that I am struggling to know where to start, connecting the tutorials with the full documentation is proving challenging.
I am looking for pointing in the right direction or an example I have missed or some other examples doing something similar.
A few of my current questions:
Why do spheres disappear when I create a cloud of spheres inside 5 walls and apply gravity?
How do I create a cloud of clumps?
I assume then I can just settle a cloud of clumps as I am doing for spheres?
I include my journey so far below, if of interest.
Thanks, Simon
Starting from the Woo facet-facet.py example, I am able to create and settle a bed of spherical partiles under gravity, but particle disappear:
import woo
from woo.dem import *
from woo.fem import *
from woo.core import *
from random import random as rnd
from woo import pack
import woo.log, woo.utils
from minieigen import *
from math import *
mat=woo.
S=woo.master.
#Sphere sphere interactions included already, so add in wall interaction
engines=
fields=[DemField(
gravity=
# loneMask=0, # no loneMask at all
)],
)
#Create a box to contain the particles with 5 walls
S.dem.par.add([
Wall.make(
Wall.make(
Wall.make(
Wall.make(
Wall.make(
])
# sphere packing is not equivalent to particles in simulation, it contains only the pure geometry
sp=pack.
# generate randomly spheres with uniform radius distribution
sp.makeCloud(
# add the sphere pack to the simulation
sp.toSimulation(S)
S.dt=3e-4
S.saveTmp()
S.one()
This works to an extent, the particles fall under gravity, but particles appear to disappear during the simulation. Why am I loosing spheres?
But I can't work out who to add clumps rather than spheres.
However looking at some of the examples, then this will add clumps via a generator, but I don't get the settling and clumps are added all the time:
import woo
from woo.dem import *
from woo.fem import *
from woo.core import *
from random import random as rnd
from woo import pack
import woo.log, woo.utils
from minieigen import *
from math import *
mat=woo.
generators=[
PsdClumpGenera
clumps=[
],
),
]
#Set up the scene to include wall interactions and inlet for the clumps
S=woo.master.
engines=
fields=[DemField(
gravity=
)],
)
#Create a box to contain the particles with 5 walls
S.dem.par.add([
Wall.make(
Wall.make(
Wall.make(
Wall.make(
Wall.make(
])
S.dt=3e-4
S.saveTmp()
S.one()
This is obviously not the right way to go, as I don't want particles being created during the simulation.
So looking at sphere packing, I have tried a lots of different approaches.
import woo
from woo.dem import *
from woo.fem import *
from woo.core import *
from random import random as rnd
from woo import pack
import woo.log, woo.utils
from minieigen import *
from math import *
mat=woo.
S=woo.master.
engines=
fields=[DemField(
gravity=
loneMask=0, # no loneMask at all
)],
)
S.dem.par.add([
Wall.make(
Wall.make(
Wall.make(
Wall.make(
Wall.make(
])
#sp=pack.
#sp=pack.
sp=pack.
sp.add(
#sp.add(
#clump=
#addClumped(
#clumps=[
# SphereClumpGeom
# SphereClumpGeom
# ]
# generate randomly spheres with uniform radius distribution
#sp.add([clumps])
sp.makeCloud(
# add the sphere pack to the simulation
sp.toSimulation(S)
S.dt=3e-4
S.saveTmp()
S.one()
Starting from psd-clump.py then:
from woo.core import *
from woo.dem import *
from minieigen import *
import woo.log
S=woo.master.
S.engines=[
InsertionSortC
BoxInlet(
box=(
maxMass=
generator=
psdPts=
clumps=[
SphereClump
SphereClump
],
),
materials=
),
Leapfrog(
]
S.one()
#S.engines[
S.dem.nodes
from woo import pack
sp=pack.
sp.fromSimulati
Once again ok for adding clumps but doesn't stop adding and doesn't settle.
So play with it a bit more, but now crashes Woo entirely:
from woo.core import *
from woo.dem import *
from minieigen import *
from woo import utils,pack
#
import woo.log
mat=utils.
S=woo.master.
S.dem.par.
sp=pack.
# generate randomly spheres with uniform radius distribution
sp.makeCloud(
# add the sphere pack to the simulation
sp.toSimulation(S)
S.engines=[
# ForceResetter(),
Leapfrog(
InsertionSor
ContactLoop(
]
S.engines=[
InsertionSortC
BoxInlet(
box=(
maxMass=
generator=
psdPts=
clumps=[
SphereClump
SphereClump
],
),
materials=
),
Leapfrog(
]
S.one()
#S.engines[
S.dem.nodes
from woo import pack
sp=pack.
sp.fromSimulati
So as you can see I am not quite sure where to go from here.
Question information
- Language:
- English Edit question
- Status:
- Solved
- For:
- woo Edit question
- Assignee:
- No assignee Edit question
- Solved by:
- Václav Šmilauer
- Solved:
- Last query:
- Last reply: