Re: [Yade-users] [Question #625502]: How to get the minimum porosity of packing using randomDensePack

2017-05-04 Thread Huihuang Xia
Question #625502 on Yade changed:
https://answers.launchpad.net/yade/+question/625502

Status: Answered => Solved

Huihuang Xia confirmed that the question is solved:
Thanks Tina,

I will try your advice.

Regards,

Huihuang

-- 
You received this question notification because your team yade-users is
an answer contact for Yade.

___
Mailing list: https://launchpad.net/~yade-users
Post to : yade-users@lists.launchpad.net
Unsubscribe : https://launchpad.net/~yade-users
More help   : https://help.launchpad.net/ListHelp


Re: [Yade-users] [Question #625502]: How to get the minimum porosity of packing using randomDensePack

2017-05-04 Thread Huihuang Xia
Question #625502 on Yade changed:
https://answers.launchpad.net/yade/+question/625502

Huihuang Xia confirmed that the question is solved:
Thanks Tina Asia, that solved my question.

-- 
You received this question notification because your team yade-users is
an answer contact for Yade.

___
Mailing list: https://launchpad.net/~yade-users
Post to : yade-users@lists.launchpad.net
Unsubscribe : https://launchpad.net/~yade-users
More help   : https://help.launchpad.net/ListHelp


Re: [Yade-users] [Question #625502]: How to get the minimum porosity of packing using randomDensePack

2017-05-04 Thread Tina Asia
Question #625502 on Yade changed:
https://answers.launchpad.net/yade/+question/625502

Status: Open => Answered

Tina Asia proposed the following answer:
Hi Huihuang,

I just posted a same question here:
https://answers.launchpad.net/yade/+question/630281
https://answers.launchpad.net/yade/+question/628632

Jan answered my two questions, and I have tried Jan's methods. They
really work well for my simulations.

Cheers,

Tina @ Yade

-- 
You received this question notification because your team yade-users is
an answer contact for Yade.

___
Mailing list: https://launchpad.net/~yade-users
Post to : yade-users@lists.launchpad.net
Unsubscribe : https://launchpad.net/~yade-users
More help   : https://help.launchpad.net/ListHelp


Re: [Yade-users] [Question #625502]: How to get the minimum porosity of packing using randomDensePack

2017-04-24 Thread Huihuang Xia
Question #625502 on Yade changed:
https://answers.launchpad.net/yade/+question/625502

Status: Answered => Open

Huihuang Xia is still having a problem:
Thanks Robert,

I added the following function at the bottom of session1 and using
PyRunner call this function, but the exported text file contains
nothing.

Here is my code:

# -*- coding: utf-8 -*-

from yade import pack
from yade import export

###   DEFINING VARIABLES AND MATERIALS   ###


# The following 5 lines will be used later for batch execution
nRead=readParamsFromTable(
num_spheres=5000,# number of spheres
compFricDegree = 30, # contact friction during the confining phase
key='_triax_base_', # put you simulation's name here
unknownOk=True
)
from yade.params import table

num_spheres=table.num_spheres# number of spheres
key=table.key
targetPorosity = 0.43 #the porosity we want for the packing
compFricDegree = table.compFricDegree # initial contact friction during the 
confining phase (will be decreased during the REFD compaction process)
finalFricDegree = 30 # contact friction during the deviatoric loading
rate=-0.02 # loading rate (strain rate)
damp=0.2 # damping coefficient
stabilityThreshold=0.01 # we test unbalancedForce against this value in 
different loops (see below)
young=5e6 # contact stiffness
mn,mx=Vector3(0,0,0),Vector3(1,1,1) # corners of the initial packing


## create materials for spheres and plates
O.materials.append(FrictMat(young=young,poisson=0.5,frictionAngle=radians(compFricDegree),density=2600,label='spheres'))
O.materials.append(FrictMat(young=young,poisson=0.5,frictionAngle=0,density=0,label='walls'))

## create walls around the packing
walls=aabbWalls([mn,mx],thickness=0,material='walls')
wallIds=O.bodies.append(walls)

## use a SpherePack object to generate a random loose particles packing
global sp
sp=pack.SpherePack()
sp.makeCloud(mn,mx,-1,0.,num_spheres,False, 0.95,seed=1) #"seed" make the 
"random" generation always the same
sps=O.bodies.append([sphere(center,rad,material='spheres') for center,rad in 
sp])
 #or alternatively (higher level function doing exactly the same):
 #sp.toSimulation(material='spheres')


###   DEFINING ENGINES   ###


triax=TriaxialStressController(
## TriaxialStressController will be used to control stress and strain. 
It controls particles size and plates positions.
## this control of boundary conditions was used for instance in 
http://dx.doi.org/10.1016/j.ijengsci.2008.07.002
maxMultiplier=1.+2e4/young, # spheres growing factor (fast growth)
finalMaxMultiplier=1.+2e3/young, # spheres growing factor (slow growth)
thickness = 0,
## switch stress/strain control using a bitmask. What is a bitmask, 
huh?!
## Say x=1 if stess is controlled on x, else x=0. Same for for y and z, 
which are 1 or 0.
## Then an integer uniquely defining the combination of all these tests 
is: mask = x*1 + y*2 + z*4
## to put it differently, the mask is the integer whose binary 
representation is xyz, i.e.
## "100" (1) means "x", "110" (3) means "x and y", "111" (7) means "x 
and y and z", etc.
stressMask = 7,
internalCompaction=True, # If true the confining pressure is generated 
by growing particles
)

newton=NewtonIntegrator(damping=damp)

O.engines=[
ForceResetter(),
InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Box_Aabb()]),
InteractionLoop(
[Ig2_Sphere_Sphere_ScGeom(),Ig2_Box_Sphere_ScGeom()],
[Ip2_FrictMat_FrictMat_FrictPhys()],
[Law2_ScGeom_FrictPhys_CundallStrack()]
),
PyRunner(command='stop()',iterPeriod=10),
## We will use the global stiffness of each body to determine an 
optimal timestep (see 
https://yade-dem.org/w/images/1/1b/Chareyre_licensed.pdf)

GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=100,timestepSafetyCoefficient=0.8),
triax,
TriaxialStateRecorder(iterPeriod=100,file='WallStresses'+table.key),
newton
]

#Display spheres with 2 colors for seeing rotations better
Gl1_Sphere.stripes=0
if nRead==0: yade.qt.Controller(), yade.qt.View()

## UNCOMMENT THE FOLLOWING SECTIONS ONE BY ONE
## DEPENDING ON YOUR EDITOR, IT COULD BE DONE
## BY SELECTING THE CODE BLOCKS BETWEEN THE SUBTITLES
## AND PRESSING CTRL+SHIFT+D

###
###   APPLYING CONFINING PRESSURE   ###
###

#the value of (isotropic) confining stress defines the target stress to be 
applied in all three directions
triax.goal1=triax.goal2=triax.goal3=-1

def stop():
if O.iter>5000:
O.pause()
# filter this sp into a sphere
pred=pack.inSphere((0.5,0.5,0.5),0.25)

Re: [Yade-users] [Question #625502]: How to get the minimum porosity of packing using randomDensePack

2017-04-23 Thread Robert Caulk
Question #625502 on Yade changed:
https://answers.launchpad.net/yade/+question/625502

Status: Open => Answered

Robert Caulk proposed the following answer:
Hello,

I noticed you are not following the same procedure used by [1] to
achieve a specified porosity. Also, in your script you are not
triaxially compressing your cube before extracting your predicate. And
even if you did triaxially compress your cube before extraction, you are
extracting your predicate from the original non-compacted spherepack
(sp). So "assembly" is a sphere of spheres with the same porosity as the
original makeCloud sphere pack.

The error you are receiving is probably due to the fact that you are
trying to append a sphere pack into the middle of another sphere pack,
resulting in maybe some instability and the loss of all spheres from
your box.

Maybe this is the procedure you need:

Follow [1] to get to a cube of specified porosity
create a new cube spherepack from the compacted spheres
use filterSpherePack to create a spherical spherepack with the cube spherepack 
and the predicate
remove the cube bodies from your simulation
add the new spherical spherepack to your simulation

Cheers,

Robert

[1]https://github.com/yade/trunk/blob/e4e757f2e98a620e3177b7a36a1d10f69f6a6a28/examples
/triax-tutorial/script-session1.py

-- 
You received this question notification because your team yade-users is
an answer contact for Yade.

___
Mailing list: https://launchpad.net/~yade-users
Post to : yade-users@lists.launchpad.net
Unsubscribe : https://launchpad.net/~yade-users
More help   : https://help.launchpad.net/ListHelp


Re: [Yade-users] [Question #625502]: How to get the minimum porosity of packing using randomDensePack

2017-04-23 Thread Huihuang Xia
Question #625502 on Yade changed:
https://answers.launchpad.net/yade/+question/625502

Status: Needs information => Open

Huihuang Xia gave more information on the question:
Thanks Robert,

https://answers.launchpad.net/yade/+question/246971, gives a good
example. Thus, I want to do a tri-axial compression on a cubic sample
and filter a stone particle shape using pack.filterSpherePack from this
sample. Is this method correct?

According to
https://github.com/yade/trunk/blob/e4e757f2e98a620e3177b7a36a1d10f69f6a6a28/examples
/triax-tutorial/script-session1.py, here is  a code was used to filter a
sphere from a cubic sample, but this code failed, because it got the
following error:

Desktop/sphere$ yade sphere.py
Welcome to Yade 2016.06a 
TCP python prompt on localhost:9000, auth cookie `ecssdy'
XMLRPC info provider on http://localhost:21000
Running script sphere.py
[[ ^L clears screen, ^U kills line. F12 controller, F11 3d view (use h-key for 
showing help), F10 both, F9 generator, F8 plot. ]]

Yade [1]: 
---
ValueErrorTraceback (most recent call last)
/home/huihuang/YADE/install/lib/x86_64-linux-gnu/yade-2016.06a/py/yade/__init__.pyc
 in refreshEvent(self)
190 def zxySlot(self): self.setViewAxes((0,-1,0),(1,0,0))
191 def refreshEvent(self):
--> 192 self.refreshValues()
193 self.activateControls()
194 def deactivateControls(self):

/home/huihuang/YADE/install/lib/x86_64-linux-gnu/yade-2016.06a/py/yade/__init__.pyc
 in refreshValues(self)
263 self.iterLabel.setText('#%ld / %ld, %.1f/s 
%s'%(O.iter,stopAtIter,self.iterPerSec,subStepInfo))
264 if t!=float('inf'):
--> 265 s=int(t); ms=int(t*1000)%1000; 
us=int(t*100)%1000; ns=int(t*10)%1000
266 
self.virtTimeLabel.setText(u'%03ds%03dm%03dμ%03dn'%(s,ms,us,ns))
267 else: self.virtTimeLabel.setText(u'[ ∞ ] ?!')

ValueError: cannot convert float NaN to integer


Here is my code:

from yade import pack
from yade import export


###   DEFINING VARIABLES AND MATERIALS   ###


# The following 5 lines will be used later for batch execution
nRead=readParamsFromTable(
num_spheres=3000,# number of spheres
compFricDegree = 30, # contact friction during the confining phase
key='_triax_base_', # put you simulation's name here
unknownOk=True
)
from yade.params import table

num_spheres=table.num_spheres# number of spheres
key=table.key
targetPorosity = 0.43 #the porosity we want for the packing
compFricDegree = table.compFricDegree # initial contact friction during the 
confining phase (will be decreased during the REFD compaction process)
finalFricDegree = 30 # contact friction during the deviatoric loading
rate=-0.02 # loading rate (strain rate)
damp=0.2 # damping coefficient
stabilityThreshold=0.01 # we test unbalancedForce against this value in 
different loops (see below)
young=5e6 # contact stiffness
mn,mx=Vector3(0,0,0),Vector3(1,1,1) # corners of the initial packing


## create materials for spheres and plates
O.materials.append(FrictMat(young=young,poisson=0.5,frictionAngle=radians(compFricDegree),density=2600,label='spheres'))
O.materials.append(FrictMat(young=young,poisson=0.5,frictionAngle=0,density=0,label='walls'))

## create walls around the packing
walls=aabbWalls([mn,mx],thickness=0,material='walls')
wallIds=O.bodies.append(walls)

## use a SpherePack object to generate a random loose particles packing
global sp
sp=pack.SpherePack()
sp.makeCloud(mn,mx,-1,0.,num_spheres,False, 0.95,seed=1) #"seed" make the 
"random" generation always the same
O.bodies.append([sphere(center,rad,material='spheres') for center,rad in sp])


###   DEFINING ENGINES   ###


triax=TriaxialStressController(
## TriaxialStressController will be used to control stress and strain. 
It controls particles size and plates positions.
## this control of boundary conditions was used for instance in 
http://dx.doi.org/10.1016/j.ijengsci.2008.07.002
maxMultiplier=1.+2e4/young, # spheres growing factor (fast growth)
finalMaxMultiplier=1.+2e3/young, # spheres growing factor (slow growth)
thickness = 0,
## switch stress/strain control using a bitmask. What is a bitmask, 
huh?!
## Say x=1 if stess is controlled on x, else x=0. Same for for y and z, 
which are 1 or 0.
## Then an integer uniquely defining the combination of all these tests 
is: mask = x*1 + y*2 + z*4
## to put it differently, the mask is the integer whose binary 
representation is xyz, i.e.
## "100" (1) means "x", "110" (3) means "x and y", "111" (7) means "x 
and y and z", 

Re: [Yade-users] [Question #625502]: How to get the minimum porosity of packing using randomDensePack

2017-04-23 Thread Huihuang Xia
Question #625502 on Yade changed:
https://answers.launchpad.net/yade/+question/625502

Huihuang Xia posted a new comment:
Thanks Robert,

https://answers.launchpad.net/yade/+question/246971, gives a good
example. Thus, I want to do a tri-axial compression on a cubic sample
and filter a stone particle shape using pack.filterSpherePack from this
sample. Is this method correct?

According to
https://github.com/yade/trunk/blob/e4e757f2e98a620e3177b7a36a1d10f69f6a6a28/examples
/triax-tutorial/script-session1.py, here is  a code was used to filter a
sphere from a cubic sample, but this code failed, because it got the
following error:

Desktop/sphere$ yade sphere.py
Welcome to Yade 2016.06a 
TCP python prompt on localhost:9000, auth cookie `ecssdy'
XMLRPC info provider on http://localhost:21000
Running script sphere.py
[[ ^L clears screen, ^U kills line. F12 controller, F11 3d view (use h-key for 
showing help), F10 both, F9 generator, F8 plot. ]]

Yade [1]: 
---
ValueErrorTraceback (most recent call last)
/home/huihuang/YADE/install/lib/x86_64-linux-gnu/yade-2016.06a/py/yade/__init__.pyc
 in refreshEvent(self)
190 def zxySlot(self): self.setViewAxes((0,-1,0),(1,0,0))
191 def refreshEvent(self):
--> 192 self.refreshValues()
193 self.activateControls()
194 def deactivateControls(self):

/home/huihuang/YADE/install/lib/x86_64-linux-gnu/yade-2016.06a/py/yade/__init__.pyc
 in refreshValues(self)
263 self.iterLabel.setText('#%ld / %ld, %.1f/s 
%s'%(O.iter,stopAtIter,self.iterPerSec,subStepInfo))
264 if t!=float('inf'):
--> 265 s=int(t); ms=int(t*1000)%1000; 
us=int(t*100)%1000; ns=int(t*10)%1000
266 
self.virtTimeLabel.setText(u'%03ds%03dm%03dμ%03dn'%(s,ms,us,ns))
267 else: self.virtTimeLabel.setText(u'[ ∞ ] ?!')

ValueError: cannot convert float NaN to integer


Here is my code:

from yade import pack
from yade import export


###   DEFINING VARIABLES AND MATERIALS   ###


# The following 5 lines will be used later for batch execution
nRead=readParamsFromTable(
num_spheres=3000,# number of spheres
compFricDegree = 30, # contact friction during the confining phase
key='_triax_base_', # put you simulation's name here
unknownOk=True
)
from yade.params import table

num_spheres=table.num_spheres# number of spheres
key=table.key
targetPorosity = 0.43 #the porosity we want for the packing
compFricDegree = table.compFricDegree # initial contact friction during the 
confining phase (will be decreased during the REFD compaction process)
finalFricDegree = 30 # contact friction during the deviatoric loading
rate=-0.02 # loading rate (strain rate)
damp=0.2 # damping coefficient
stabilityThreshold=0.01 # we test unbalancedForce against this value in 
different loops (see below)
young=5e6 # contact stiffness
mn,mx=Vector3(0,0,0),Vector3(1,1,1) # corners of the initial packing


## create materials for spheres and plates
O.materials.append(FrictMat(young=young,poisson=0.5,frictionAngle=radians(compFricDegree),density=2600,label='spheres'))
O.materials.append(FrictMat(young=young,poisson=0.5,frictionAngle=0,density=0,label='walls'))

## create walls around the packing
walls=aabbWalls([mn,mx],thickness=0,material='walls')
wallIds=O.bodies.append(walls)

## use a SpherePack object to generate a random loose particles packing
global sp
sp=pack.SpherePack()
sp.makeCloud(mn,mx,-1,0.,num_spheres,False, 0.95,seed=1) #"seed" make the 
"random" generation always the same
O.bodies.append([sphere(center,rad,material='spheres') for center,rad in sp])


###   DEFINING ENGINES   ###


triax=TriaxialStressController(
## TriaxialStressController will be used to control stress and strain. 
It controls particles size and plates positions.
## this control of boundary conditions was used for instance in 
http://dx.doi.org/10.1016/j.ijengsci.2008.07.002
maxMultiplier=1.+2e4/young, # spheres growing factor (fast growth)
finalMaxMultiplier=1.+2e3/young, # spheres growing factor (slow growth)
thickness = 0,
## switch stress/strain control using a bitmask. What is a bitmask, 
huh?!
## Say x=1 if stess is controlled on x, else x=0. Same for for y and z, 
which are 1 or 0.
## Then an integer uniquely defining the combination of all these tests 
is: mask = x*1 + y*2 + z*4
## to put it differently, the mask is the integer whose binary 
representation is xyz, i.e.
## "100" (1) means "x", "110" (3) means "x and y", "111" (7) means "x 
and y and z", etc.
stressMask = 7,

Re: [Yade-users] [Question #625502]: How to get the minimum porosity of packing using randomDensePack

2017-04-21 Thread Huihuang Xia
Question #625502 on Yade changed:
https://answers.launchpad.net/yade/+question/625502

Status: Answered => Open

Huihuang Xia is still having a problem:
Hi Robert,

Thanks for your reply, but in my simulation, the stone particle was
scanned by a 3D laser scanner.
https://github.com/yade/trunk/blob/e4e757f2e98a620e3177b7a36a1d10f69f6a6a28/examples
/triax-tutorial/script-session1.py As for this example, I have tried
this code, but all failed, because the stone particle is a irregular
one.


Huihuang Xia

-- 
You received this question notification because your team yade-users is
an answer contact for Yade.

___
Mailing list: https://launchpad.net/~yade-users
Post to : yade-users@lists.launchpad.net
Unsubscribe : https://launchpad.net/~yade-users
More help   : https://help.launchpad.net/ListHelp


Re: [Yade-users] [Question #625502]: How to get the minimum porosity of packing using randomDensePack

2017-04-21 Thread Robert Caulk
Question #625502 on Yade changed:
https://answers.launchpad.net/yade/+question/625502

Status: Open => Answered

Robert Caulk proposed the following answer:
Hello Huihuang,

You can compact a cloud of spheres to a specified porosity by following
the same steps used in [1]. However, the minimum possible porosity
really depends on your sphere size distribution. A wider distribution of
sphere sizes will enable lower porosity and the width of that
distribution is controlled by the arguments radius and rRelFuzz in
randomDensePack[2] and rMean and rRelFuzz in makeCloud[3].

Cheers,

Robert

[1]https://github.com/yade/trunk/blob/e4e757f2e98a620e3177b7a36a1d10f69f6a6a28/examples
/triax-tutorial/script-session1.py

[2]https://yade-dem.org/doc/yade.pack.html#yade.pack.randomDensePack

[3]https://yade-
dem.org/doc/yade.pack.html#yade._packSpheres.SpherePack.makeCloud

-- 
You received this question notification because your team yade-users is
an answer contact for Yade.

___
Mailing list: https://launchpad.net/~yade-users
Post to : yade-users@lists.launchpad.net
Unsubscribe : https://launchpad.net/~yade-users
More help   : https://help.launchpad.net/ListHelp


[Yade-users] [Question #625502]: How to get the minimum porosity of packing using randomDensePack

2017-04-21 Thread Huihuang Xia
New question #625502 on Yade:
https://answers.launchpad.net/yade/+question/625502

Hi,

I am working on a project modeling stone particle using cohesive elements, but 
in my simulation, randomDensePack always give a low porosity about 0.7. Thus, 
some numerical simulations using this low porosity packing can not get a  
satisfactory results. Can you tell me how to insert sub-particles to the 
profile of a  stone particle as many as possible? 

Huihuang Xia



-- 
You received this question notification because your team yade-users is
an answer contact for Yade.

___
Mailing list: https://launchpad.net/~yade-users
Post to : yade-users@lists.launchpad.net
Unsubscribe : https://launchpad.net/~yade-users
More help   : https://help.launchpad.net/ListHelp