Question #248315 on Yade changed:
https://answers.launchpad.net/yade/+question/248315
Status: Answered => Open
Fu zuoguang is still having a problem:
Dear Prof. Chareyre and all users:
Thanks for helping last time and your suggestion helped me a lot to understand
the REFD method used in Yade.
In [Tong2012], the whole processes of REFD method working are composed of these
three steps:
(1). A loose cloud of nonoverlapping spheres is generated in a cubic box in
random positions with a certain PSD.
(2). A steady growth of the particles is carried out to progressively fill the
whole volume of the box and the porosity of the sample may decrease step by
step until the change of the microstructure is limited. The porosity obtained
at the end is typically higher than the target value.
(3). The friction of contact is decreased progressively. This decrease triggers
reorganizations of the contact network and compaction of the packing, while the
stress is kept constant by further increasing the sizes. This lubrication
process is continued until the porosity reaches the value of porosity that was
measured in the experiments.
I have just only finished step(1) and (2) last time and step(3) should be
appended to make up the whole process. Fortunately, the python codes of step(3)
are all in the ‘script-session1.py’ , which can be expressed as follows:
###############################################################################
while triax.porosity>targetPorosity:
compFricDegree = 0.95*compFricDegree
setContactFriction(radians(compFricDegree))
O.run(100,1)
###############################################################################
So I can use these codes after my ‘consolidation engine’ running. But I find
some different things in porosity output. My questions today are just about
that.
In Yade, the porosity of the sample can be calculated as follows:
Porosity = 1-(V(spheres)/V(total sample)).
This algorithm guided me to write my own python codes for computing it in the
process of consolidation, which can be expressed as:
###############################################################################
Porosity_in_consolidation():
# define the total volume of sample
left_wall_posi = O.bodies[0].state.pos[0] # pos[0]--x direction
right_wall_posi = O.bodies[1].state.pos[0]
bottom_wall_posi = O.bodies[2].state.pos[1] # pos[1]--y direction
top_wall_posi = O.bodies[3].state.pos[1]
back_wall_posi = O.bodies[4].state.pos[2] # pos[2]--z direction
front_wall_posi = O.bodies[5].state.pos[2]
x_length = abs(right_wall_posi - left_wall_posi)
y_length = abs(top_wall_posi - bottom_wall_posi)
z_length = abs(front_wall_posi - back_wall_posi)
sample_volume = x_length * y_length * z_length
# define the sum of spheres volume
for b in O.bodies:
if isinstance(b.shape,Sphere):
rad = b.shape.radius
single_particles_volume = (4/3) * (math.pi) * (rad**3)
sum_particles_volume.append(single_particles_volume)
total_particles_volume = sum(sum_particles_volume)
porosity = 1 - (total_particles_volume/sample_volume)
###############################################################################
These codes can run at each ‘determined steps’ in the process of simulation and
can be replaced by the class of ‘triax.porosity’ fully I think but I could see
that the results from these two ways are just different. I should take one easy
simulation example as the description.
There are just only two things in this example, one is a particle (radii
= 0.0985397727275), and a box(1.0/1.0*1.0), of which the volume is 1.0.
I run 1000 steps in this simulation and output the value of porosity at
each ‘200steps’ by these two ways. The results are as follows:
Iter radius single particle volnme sample volume
porosity triax.porosity
0 0.0985397727273 0.00300596930496 1.000003 0.996994
1.0
200 0.121439621713 0.00562640628897 1.000003 0.994374
0.992718754166
400 0.148179416869 0.01022147373 1.000003 0.989779
0.986772184731
600 0.180807048589 0.0185693175797 1.000003 0.981431
0.975969071672
800 0.22061895984 0.0337348179416 1.000003 0.966265
0.956343091843
1000 0.266531740021 0.0594835221757 1.000003 0.940517
0.920688639082
I can not understand the reason of these differences, maybe there are
some other details in the aglorithms of porosity calculation. If there
are something wrong in my comprehension of porosity, plesae tell me
that.
Seeking your help!
--
You received this question notification because you are a member of
yade-users, which is an answer contact for Yade.
_______________________________________________
Mailing list: https://launchpad.net/~yade-users
Post to : [email protected]
Unsubscribe : https://launchpad.net/~yade-users
More help : https://help.launchpad.net/ListHelp