a cloud with a target porosity
Hi,
I am a beginer in YADE. I want to prepare a cloud with defined distribution (table of psdSizes and psdCumm are from a file) and with defined porosity. Is it possible to obtain with a simple script like this below (no 1)? Why doesn't work the option "porosity="? The cloud has porosity 0.75 what is too big. I know from an experiment, that the bed has porosity equal to 0.41.
Alternatively, I try to resolve the problem with a trixial test, but the porosity is still too big (no 2) - it is about 0.46-0.47. Is in general the script no 2 prepared correctly for my problem?
Which way is better and what should be changed to resolve my problem?
I am using YADE 1.11.0-
I will be grateful for your help,
Wojtek
---------------- script no 1:
from yade import pack
l_x = 0.3 #[m]
l_y = 0.6 #[m]
l_z = 0.3 #[m]
file = 'p06_25'
number = 5000
n_band = sum(1 for line in open(file+'.txt'))
input = open(file+
psdSizes = []
psdCumm = []
try:
for line in input:
psdSizes.
psdCumm.
finally:
input.close()
psdCumm[0] = 0.0
psdCumm[n_band-1] = 1.0
corner1 = Vector3(
corner2 = Vector3(
sp = pack.SpherePack()
sp.makeCloud(
O.bodies.
print ' particles = ',len(O.bodies)
print ' porosity = ',utils.
from yade import qt
qt.View()
---------------- script no 2 (sorry for Polish comments):
from yade import plot
from yade.pack import *
from yade import utils
O=Omega()
#------
#rozmiar obszaru obliczeniowego:
length = 0.25
height = 0.5
width = 0.25
#grubosc scianek (musza to byc bryly a nie plaszczyzny):
thickness = 0.001
#liczba czastek:
number = 5000
#predkosc kompresji (scianki, ktora sie rusza):
v = 1.0
#liczba iteracji:
maxIter = 150000
#plik:
plik = 'p06_23'
#sprawdzenie liczby przedzialow:
n_band = sum(1 for line in open(plik+'.txt'))
#czytanie danych o rozkladzie zloza:
input = open(plik+
psdSizes = []
psdCumm = []
try:
for linijka in input:
psdSizes.
psdCumm.
finally:
input.close()
#korekta wartosci skrajjnych (musi byc 0 i 1):
psdCumm[0] = 0.0
psdCumm[n_band-1] = 1.0
#informacje o zadaniu:
os.system('clear')
print '|-----
print '| Particle distribution Olsztyn 2014 |'
print '|-----
print ''
print ' length = ', length
print ' height = ', height
print ' width = ', width
print ' thickness = ', thickness
print ' v = ', v
print ' maxIter = ', maxIter
print ' n_bands = ',n_band
print ' psdSizes, psdCumm '
print ''
#dane stali:
stDensity = 7860 #sprawdzone
stYoung = 2e11 #sprawdzone
stPoisson = 0.3 #sprawdzone
stFrAngle = 30 #
#dane szkla:
spDensity = 2600 #sprawdzone
spYoung = 50e9 #sprawdzone
spPoisson = 0.18 #sprawdzone 0.18-0.3
#spFrAngle = 15 # 0
#spFrAngle = 10 #
spFrAngle = 15 #
#------
#definicja materialu scian:
O.materials.
#definicja poszczegolnych bokow kostki tworzacej obszar obliczeniowy:
leftBox = box( center=
lowBox = box( center=
rightBox = box( center=
upBox = box( center=
behindBox = box( center=
inFrontBox = box( center=
#dodawanie cial do sceny - mozna to uzyc w state.pos[]
O.bodies.
#------
#definicja materialu sfer:
O.materials.
#definiowanie pozycji chmury:
mincorner = Vector3(
maxcorner = Vector3(
#tworzenie chmury:
sp = yade._packSpher
sp.makeCloud(
#dodanie chmury do sceny:
O.bodies.
#------
#informacja o liczbie sfer i o porowatosci:
print ' particles = ',len(O.bodies)
print ' porosity = ',utils.
#plot.resetData()
#------
#definiowanie ustawien solwera:
O.engines=[
ForceResetter(),
InsertionSortC
InteractionLoop(
[Ig2_
[Ip2_
[Law2_
),
NewtonIntegrat
PyRunner(
PyRunner(
]
def letSave():
if O.iter == maxIter-1:
from yade import export
export.
print "------
print "maxIter = ",maxIter
print "mumber of particles = ",len(O.bodies)
print "hight current = ", O.bodies[
print "porosity = ",utils.
def letPlot():
plot.
plot.plots=
plot.plot()
from yade import qt; qt.Controller(
#definiowanie warunkow kompresji:
O.engines = O.engines+
O.dt=.4*
#O.run(maxIter)
O.stopAtIter=
from yade import plot, utils
Question information
- Language:
- English Edit question
- Status:
- Solved
- For:
- Yade Edit question
- Assignee:
- No assignee Edit question
- Solved by:
- Wojciech Sobieski
- Solved:
- Last query:
- Last reply: