Re: [Yade-users] [Question #706562]: Trying to add Oedometric test

2023-05-09 Thread Huan
Question #706562 on Yade changed:
https://answers.launchpad.net/yade/+question/706562

Description changed to:
Hello,

I am confuse by the Oedometric test provided in the example: 
https://yade-dem.org/doc/tutorial-examples.html?highlight=oedometric
I don't understand where the max and min load come. I was able to add the test 
to my experiment, but I decided to remove it first because after the 
compression the sphere would be directly bounce off through the plate.


Following is my current code:

import random
import math
from yade import geom, pack, utils, plot, ymport
import pandas as pd

# Define material properties
youngModulus = 1e7
poissonRatio = 0.25
density = 2000

# Create material
material = O.materials.append(FrictMat(young=youngModulus, 
poisson=poissonRatio, density=density))

# Define cylinder with funnel parameters
center = (0, 0, 0)
diameter = 0.102
height = 0.18

# create cylindrical body with radius 0.102 m and height 0.064 m
cylinder = geom.facetCylinder(center=center, radius=diameter/2, height=height, 
segmentsNumber=80, wallMask=6)

# assign material to each body in the cylinder
for body in cylinder:
body.bodyMat = material

# add cylinder to simulation
O.bodies.append(cylinder)

# Define cylinder with funnel parameters
center1 = (0,0,height/2)
dBunker = 0.4
dOutput = 0.102
hBunker = 0
hOutput = 0.15
hPipe = 0

# create funnel as a bunker with diameter 0.102 m, height 0.064 m
funnel = geom.facetBunker(center=center1, dBunker=dBunker, dOutput=dOutput, 
hBunker=hBunker,hOutput=hOutput, hPipe=hPipe, segmentsNumber=80, wallMask=4)

# assign material to each body in the funnel
for body in funnel:
body.bodyMat = material

# add funnel to simulation
O.bodies.append(funnel)

# define sphere parameters and number of spheres
rMean1 = (0.0125+0.019)/4
rRelFuzz1 = (0.019-0.0125)/4/rMean1
num1 = 28
rMean2 = (0.0095+0.0125)/4
rRelFuzz2 = (0.0125-0.0095)/4/rMean2
num2 = 86
rMean3 = (0.00475+0.0095)/4
rRelFuzz3 = (0.0095-0.00475)/4/rMean3
num3 = 2071
rMean4 = (0.00236+0.00475)/4
rRelFuzz4 = (0.00475-0.00236)/4/rMean4
num4 = 18997

#create empty sphere packing
sp = pack.SpherePack()

# generate randomly sphere
sp.makeCloud((-dBunker/4,-dBunker/4,1.3*height),(dBunker/4,dBunker/4,2*height), 
rMean = rMean1, rRelFuzz = rRelFuzz1, num = num1)
sp.makeCloud((-dBunker/4,-dBunker/4,1.3*height),(dBunker/4,dBunker/4,2*height), 
rMean = rMean2, rRelFuzz = rRelFuzz2, num = num2)
sp.makeCloud((-dBunker/4,-dBunker/4,1.3*height),(dBunker/4,dBunker/4,2*height), 
rMean = rMean3, rRelFuzz = rRelFuzz3, num = num3)
sp.makeCloud((-dBunker/4,-dBunker/4,1.3*height),(dBunker/4,dBunker/4,2*height), 
rMean = rMean4, rRelFuzz = rRelFuzz4, num = num4)

# add the sphere pack to the simulation
sp.toSimulation(material = material)

### Finding method to fix this color doesn't seems to work###
for body in O.bodies:
   if not isinstance(body.shape, Sphere): 
   continue
   if body.shape.radius == rMean1:
   body.shape.color = (0,0,1) #blue
   if body.shape.radius == rMean2:
   body.shape.color = (1,0,0) #red
   if body.shape.radius == rMean3:
   body.shape.color = (0,1,0) #green
   if body.shape.radius == rMean4:
   body.shape.color = (1,1,0) #yellow
   if body.shape.radius == rRelFuzz1:
   body.shape.color = (0,0,1) #blue
   if body.shape.radius == rRelFuzz2:
   body.shape.color = (1,0,0) #red
   if body.shape.radius == rRelFuzz3:
   body.shape.color = (0,1,0) #green
   if body.shape.radius == rRelFuzz4:
   body.shape.color = (1,1,0) #yellow
### Finding method to fix this color doesn't seems to work###

O.engines = [
ForceResetter(),
InsertionSortCollider([Bo1_Sphere_Aabb(), Bo1_Facet_Aabb()]),
InteractionLoop(
# handle sphere+sphere and facet+sphere collisions
[Ig2_Sphere_Sphere_ScGeom(), Ig2_Facet_Sphere_ScGeom()],
[Ip2_FrictMat_FrictMat_FrictPhys()],
[Law2_ScGeom_FrictPhys_CundallStrack()]
),
NewtonIntegrator(gravity=(0, 0, -9.81), damping=0.4),
# call the checkUnbalanced function (defined below) every 2 seconds
PyRunner(command='checkUnbalanced()', realPeriod=2),
# call the addPlotData function every 200 steps
PyRunner(command='addPlotData()', iterPeriod=100)
]
O.dt = .5 * PWaveTimeStep()

# enable energy tracking; any simulation parts supporting it
# can create and update arbitrary energy types, which can be
# accessed as O.energy['energyName'] subsequently
O.trackEnergy = True


# if the unbalanced forces goes below .05, the packing
# is considered stabilized, therefore we stop collected
# data history and stop
def checkUnbalanced():
if unbalancedForce() < 1e-2:
O.pause()
plot.saveDataTxt('bbb.txt.bz2')
# plot.saveGnuplot('bbb') is also possible


# collect history of data which will be plotted
def addPlotData():
# each item is given a names, by which it can be the unsed in plot.plots
 

Re: [Yade-users] [Question #706562]: Trying to add Oedometric test

2023-05-09 Thread Huan
Question #706562 on Yade changed:
https://answers.launchpad.net/yade/+question/706562

Description changed to:
Hello,

I am confuse by the Oedometric test provided in the example: 
https://yade-dem.org/doc/tutorial-examples.html?highlight=oedometric
I don't understand where the max and min load come. I was able to add the test 
to my experiment, but I decided to remove it first because after the 
compression the sphere would be directly bounce off through the plate.


Following is my current code:

import random
import math
from yade import geom, pack, utils, plot, ymport
import pandas as pd

# Define material properties
youngModulus = 1e7
poissonRatio = 0.25
density = 2000

# Create material
material = O.materials.append(FrictMat(young=youngModulus, 
poisson=poissonRatio, density=density))

# Define cylinder with funnel parameters
center = (0, 0, 0)
diameter = 0.102
height = 0.18

# create cylindrical body with radius 0.102 m and height 0.064 m
cylinder = geom.facetCylinder(center=center, radius=diameter/2, height=height, 
segmentsNumber=80, wallMask=6)

# assign material to each body in the cylinder
for body in cylinder:
body.bodyMat = material

# add cylinder to simulation
O.bodies.append(cylinder)

# Define cylinder with funnel parameters
center1 = (0,0,height/2)
dBunker = 0.4
dOutput = 0.102
hBunker = 0
hOutput = 0.15
hPipe = 0

# create funnel as a bunker with diameter 0.102 m, height 0.064 m
funnel = geom.facetBunker(center=center1, dBunker=dBunker, dOutput=dOutput, 
hBunker=hBunker,hOutput=hOutput, hPipe=hPipe, segmentsNumber=80, wallMask=4)

# assign material to each body in the funnel
for body in funnel:
body.bodyMat = material

# add funnel to simulation
O.bodies.append(funnel)

# define sphere parameters and number of spheres
rMean1 = (0.0125+0.019)/4
rRelFuzz1 = (0.019-0.0125)/4/rMean1
num1 = 28
rMean2 = (0.0095+0.0125)/4
rRelFuzz2 = (0.0125-0.0095)/4/rMean2
num2 = 86
rMean3 = (0.00475+0.0095)/4
rRelFuzz3 = (0.0095-0.00475)/4/rMean3
num3 = 2071
rMean4 = (0.00236+0.00475)/4
rRelFuzz4 = (0.00475-0.00236)/4/rMean4
num4 = 18997

#create empty sphere packing
sp = pack.SpherePack()

# generate randomly sphere
sp.makeCloud((-dBunker/4,-dBunker/4,1.3*height),(dBunker/4,dBunker/4,2*height), 
rMean = rMean1, rRelFuzz = rRelFuzz1, num = num1)
sp.makeCloud((-dBunker/4,-dBunker/4,1.3*height),(dBunker/4,dBunker/4,2*height), 
rMean = rMean2, rRelFuzz = rRelFuzz2, num = num2)
sp.makeCloud((-dBunker/4,-dBunker/4,1.3*height),(dBunker/4,dBunker/4,2*height), 
rMean = rMean3, rRelFuzz = rRelFuzz3, num = num3)
sp.makeCloud((-dBunker/4,-dBunker/4,1.3*height),(dBunker/4,dBunker/4,2*height), 
rMean = rMean4, rRelFuzz = rRelFuzz4, num = num4)

# add the sphere pack to the simulation
sp.toSimulation(material = material)

for body in O.bodies:
   if not isinstance(body.shape, Sphere): 
   continue
   if body.shape.radius == (rMean1, rRelFuzz1):
   body.shape.color = (0,0,1) #blue
   if body.shape.radius == (rMean2, rRelFuzz2):
   body.shape.color = (1,0,0) #red
   if body.shape.radius == (rMean3, rRelFuzz3):
   body.shape.color = (0,1,0) #green
   if body.shape.radius == (rMean4, rRelFuzz4):
   body.shape.color = (1,1,0) #yellow

O.engines = [
ForceResetter(),
InsertionSortCollider([Bo1_Sphere_Aabb(), Bo1_Facet_Aabb()]),
InteractionLoop(
# handle sphere+sphere and facet+sphere collisions
[Ig2_Sphere_Sphere_ScGeom(), Ig2_Facet_Sphere_ScGeom()],
[Ip2_FrictMat_FrictMat_FrictPhys()],
[Law2_ScGeom_FrictPhys_CundallStrack()]
),
NewtonIntegrator(gravity=(0, 0, -9.81), damping=0.4),
# call the checkUnbalanced function (defined below) every 2 seconds
PyRunner(command='checkUnbalanced()', realPeriod=2),
# call the addPlotData function every 200 steps
PyRunner(command='addPlotData()', iterPeriod=100)
]
O.dt = .5 * PWaveTimeStep()

# enable energy tracking; any simulation parts supporting it
# can create and update arbitrary energy types, which can be
# accessed as O.energy['energyName'] subsequently
O.trackEnergy = True


# if the unbalanced forces goes below .05, the packing
# is considered stabilized, therefore we stop collected
# data history and stop
def checkUnbalanced():
if unbalancedForce() < 1e-2:
O.pause()
plot.saveDataTxt('bbb.txt.bz2')
# plot.saveGnuplot('bbb') is also possible


# collect history of data which will be plotted
def addPlotData():
# each item is given a names, by which it can be the unsed in plot.plots
# the **O.energy converts dictionary-like O.energy to plot.addData 
arguments
plot.addData(i=O.iter, unbalanced=unbalancedForce(), **O.energy)


# define how to plot data: 'i' (step number) on the x-axis, unbalanced force
# on the left y-axis, all energies on the right y-axis
# (O.energy.keys is function which will be called to get all defined energies)
# None 

[Yade-users] [Question #706562]: Trying to add Oedometric test

2023-05-09 Thread Huan
New question #706562 on Yade:
https://answers.launchpad.net/yade/+question/706562

Hello,

I am confuse by the Oedometric test provided in the example: 
https://yade-dem.org/doc/tutorial-examples.html?highlight=oedometric
I don't understand where the max and min load come. I was able to add the test 
to my experiment, but I decided to remove it first because after the 
compression the sphere would be directly bounce off through the plate.


Following is my current code:

import random
import math
from yade import geom, pack, utils, plot, ymport
import pandas as pd

# Define material properties
youngModulus = 1e7
poissonRatio = 0.25
density = 2000

# Create material
material = O.materials.append(FrictMat(young=youngModulus, 
poisson=poissonRatio, density=density))

# Define cylinder with funnel parameters
center = (0, 0, 0)
diameter = 0.102
height = 0.18

# create cylindrical body with radius 0.102 m and height 0.064 m
cylinder = geom.facetCylinder(center=center, radius=diameter/2, height=height, 
segmentsNumber=80, wallMask=6)

# assign material to each body in the cylinder
for body in cylinder:
body.bodyMat = material

# add cylinder to simulation
O.bodies.append(cylinder)

# Define cylinder with funnel parameters
center1 = (0,0,height/2)
dBunker = 0.4
dOutput = 0.102
hBunker = 0
hOutput = 0.15
hPipe = 0

# create funnel as a bunker with diameter 0.102 m, height 0.064 m
funnel = geom.facetBunker(center=center1, dBunker=dBunker, dOutput=dOutput, 
hBunker=hBunker,hOutput=hOutput, hPipe=hPipe, segmentsNumber=80, wallMask=4)

# assign material to each body in the funnel
for body in funnel:
body.bodyMat = material

# add funnel to simulation
O.bodies.append(funnel)

# define sphere parameters and number of spheres
rMean1 = (0.0125+0.019)/4
rRelFuzz1 = (0.019-0.0125)/4/rMean1
num1 = 28
rMean2 = (0.0095+0.0125)/4
rRelFuzz2 = (0.0125-0.0095)/4/rMean2
num2 = 86
rMean3 = (0.00475+0.0095)/4
rRelFuzz3 = (0.0095-0.00475)/4/rMean3
num3 = 2071
rMean4 = (0.00236+0.00475)/4
rRelFuzz4 = (0.00475-0.00236)/4/rMean4
num4 = 18997

#create empty sphere packing
sp = pack.SpherePack()

# generate randomly sphere
sp.makeCloud((-dBunker/4,-dBunker/4,1.3*height),(dBunker/4,dBunker/4,2*height), 
rMean = rMean1, rRelFuzz = rRelFuzz1, num = num1)
sp.makeCloud((-dBunker/4,-dBunker/4,1.3*height),(dBunker/4,dBunker/4,2*height), 
rMean = rMean2, rRelFuzz = rRelFuzz2, num = num2)
sp.makeCloud((-dBunker/4,-dBunker/4,1.3*height),(dBunker/4,dBunker/4,2*height), 
rMean = rMean3, rRelFuzz = rRelFuzz3, num = num3)
sp.makeCloud((-dBunker/4,-dBunker/4,1.3*height),(dBunker/4,dBunker/4,2*height), 
rMean = rMean4, rRelFuzz = rRelFuzz4, num = num4)

# add the sphere pack to the simulation
sp.toSimulation(material = material)

for body in O.bodies:
   if not isinstance(body.shape, Sphere): 
   continue
   if body.shape.radius == rRelFuzz1: #SP
   body.shape.color = (0,0,1) #blue
   if body.shape.radius == rRelFuzz2: #SP1
   body.shape.color = (1,0,0) #red
   if body.shape.radius == rRelFuzz3: #SP2
   body.shape.color = (0,1,0) #green
   if body.shape.radius == rRelFuzz4: #SP3
   body.shape.color = (1,1,0) #yellow

O.engines = [
ForceResetter(),
InsertionSortCollider([Bo1_Sphere_Aabb(), Bo1_Facet_Aabb()]),
InteractionLoop(
# handle sphere+sphere and facet+sphere collisions
[Ig2_Sphere_Sphere_ScGeom(), Ig2_Facet_Sphere_ScGeom()],
[Ip2_FrictMat_FrictMat_FrictPhys()],
[Law2_ScGeom_FrictPhys_CundallStrack()]
),
NewtonIntegrator(gravity=(0, 0, -9.81), damping=0.4),
# call the checkUnbalanced function (defined below) every 2 seconds
PyRunner(command='checkUnbalanced()', realPeriod=2),
# call the addPlotData function every 200 steps
PyRunner(command='addPlotData()', iterPeriod=100)
]
O.dt = .5 * PWaveTimeStep()

# enable energy tracking; any simulation parts supporting it
# can create and update arbitrary energy types, which can be
# accessed as O.energy['energyName'] subsequently
O.trackEnergy = True


# if the unbalanced forces goes below .05, the packing
# is considered stabilized, therefore we stop collected
# data history and stop
def checkUnbalanced():
if unbalancedForce() < 1e-2:
O.pause()
plot.saveDataTxt('bbb.txt.bz2')
# plot.saveGnuplot('bbb') is also possible


# collect history of data which will be plotted
def addPlotData():
# each item is given a names, by which it can be the unsed in plot.plots
# the **O.energy converts dictionary-like O.energy to plot.addData 
arguments
plot.addData(i=O.iter, unbalanced=unbalancedForce(), **O.energy)


# define how to plot data: 'i' (step number) on the x-axis, unbalanced force
# on the left y-axis, all energies on the right y-axis
# (O.energy.keys is function which will be called to get all defined energies)
# None separates left and right y-axis
plot.plots = {'i': 

Re: [Yade-users] [Question #706540]: Trouble in generating sphere packing

2023-05-09 Thread Huan
Question #706540 on Yade changed:
https://answers.launchpad.net/yade/+question/706540

Status: Answered => Solved

Huan confirmed that the question is solved:
Thanks Karol Brzezinski, 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


[Yade-users] [Question #706560]: Removing a box side

2023-05-09 Thread Carine Tanissa
New question #706560 on Yade:
https://answers.launchpad.net/yade/+question/706560

How to drop particles in the box to a certain void ratio and then remove one 
side of the box and see them roll?

-- 
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 #706553]: About simulating constant volume condition in a triaxial test

2023-05-09 Thread Leonard
Question #706553 on Yade changed:
https://answers.launchpad.net/yade/+question/706553

Leonard posted a new comment:
Hi Karol,

Thanks very much for your reply.

Yes, the strainDamping is a good clue.

I add one line of code "triax.strainDamping=0.01" in the MWE and run the
simulation. I compare the results with the original MWE results whose
triax.strainDamping=0.99 by default. I found:

triax.strainDamping=0.99 gives ev=4.3e-4 at e22=0.4
triax.strainDamping=0.01 gives ev=2.2e-6 at e22=0.4, which is much close to 
zero.

This suggests that using a small strainDamping can make it close to a
perfect constant volume condition, although the stress-strain results
also change.

Thanks
Leonard

-- 
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 #706553]: About simulating constant volume condition in a triaxial test

2023-05-09 Thread Karol Brzezinski
Question #706553 on Yade changed:
https://answers.launchpad.net/yade/+question/706553

Karol Brzezinski posted a new comment:
After second thought I think that I misunderstood the problem. Because you are 
actually checking if the obtained strain is equall to the value expected from 
the prescribed rate.
Maybe strainDamping is [1] is the source of the error... I cannot check right 
now, but it looks like a good clue, since affects the change in strain rate.

Cheers,
Karol

[1] https://yade-
dem.org/doc/yade.wrapper.html?highlight=triaxialstresscontroller#yade.wrapper.TriaxialStressController.strainDamping

-- 
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 #706553]: About simulating constant volume condition in a triaxial test

2023-05-09 Thread Karol Brzezinski
Question #706553 on Yade changed:
https://answers.launchpad.net/yade/+question/706553

Karol Brzezinski proposed the following answer:
After some 'gymnastics', I would propose:

triax.goal2=-(2*rate+rate**2)/(1+2*rate+rate**2)
triax.goal1=rate
triax.goal3=rate

Cheers,
Karol

-- 
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 #706553]: About simulating constant volume condition in a triaxial test

2023-05-09 Thread Karol Brzezinski
Question #706553 on Yade changed:
https://answers.launchpad.net/yade/+question/706553

Status: Open => Answered

Karol Brzezinski proposed the following answer:
Hi Leonard,

triax.goal2=rate
triax.goal1=-0.5*rate
triax.goal3=-0.5*rate

Comes from the fact that volumetric strain is equal to e11+e22+e33 for
small deformations. One assumes e22=e33  and wants  e11+e22+e33 = 0. So
2*e22 = -e11, hence e22=e33=0.5*e11.

The error comes from the inaccuracy of the formula for large strains
(apparently, your strains are large if the error is not acceptable). You
can propose your own triax.goals by taking into account that the actual
volumetric strain is (1+e11)*(1+e22)*(1+e33).

Cheers,
Karol

-- 
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 #706540]: Trouble in generating sphere packing

2023-05-09 Thread Karol Brzezinski
Question #706540 on Yade changed:
https://answers.launchpad.net/yade/+question/706540

Status: Open => Answered

Karol Brzezinski proposed the following answer:
Hi Huan,

For each radius, I prescribed some 'spread', so the radii of particles
fall between given sieve sizes (rRelFuzz1 = (0.019-0.0125)/4/rMean1).

If you want to have all the particles in a given size to have equal
radius, set rRelFuzz = 0 everywhere.  In such a case, your colouring
method should work.

As Jan said, please open a new topic for the new question.

Cheers,
Karol

-- 
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 #706553]: About simulating constant volume condition in a triaxial test

2023-05-09 Thread Leonard
New question #706553 on Yade:
https://answers.launchpad.net/yade/+question/706553

Hi,

I would like to simulate a constant volume condition in a triaxial test (i.e., 
undrained triaxial test).

In general, we can simulate the constant volume by setting triax controller 
like:

triax.stressMask = 0 ## all strain control
triax.goal2=rate
triax.goal1=-0.5*rate
triax.goal3=-0.5*rate

For a constant volume condition, volumetric strain should be zero 
theoretically, while there could be some fluctuation in volumetric strain since 
it is a numerical simulation. It is OK if I only have a small amount of 
volumetric strain during the simulation (e.g. below 1e-5). However, I always 
get accumulation in volumetric strain to a relative large value (e.g. up to 
1e-3), which doesn't satisfy the constant volume condition.

Do you have any ideas about simulating a constant volume condition more 
precisely? For example, what parameters we can adjust to help us simulate 
constant volume more accurately?


A MWE below modified from Bruno's triaxial script shows the accumulation in 
volumetric strain during undrained loading.

from yade import pack

nRead = readParamsFromTable(
num_spheres=1000, 
compFricDegree=30,  
key='_triax_base_', 
unknownOk=True
)
from yade.params import table

num_spheres = table.num_spheres
key = table.key
targetPorosity = 0.43 
compFricDegree = table.compFricDegree 
finalFricDegree = 30  
rate = -0.01
damp = 0.2 
stabilityThreshold = 0.01  
young = 5e6 
mn, mx = Vector3(0, 0, 0), Vector3(1, 1, 1) 

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'))

walls = aabbWalls([mn, mx], thickness=0, material='walls')
wallIds = O.bodies.append(walls)

sp = pack.SpherePack()

sp.makeCloud(mn, mx, -1, 0., num_spheres, False, 0.95, seed=1) 
O.bodies.append([sphere(center, rad, material='spheres') for center, rad in sp])


triax = TriaxialStressController(
maxMultiplier=1. + 2e4 / young,
finalMaxMultiplier=1. + 2e3 / young,
thickness=0,

stressMask=7,
internalCompaction=True, 
)

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()]),
## 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
]

Gl1_Sphere.stripes = 0
if nRead == 0:
yade.qt.Controller(), yade.qt.View()


triax.goal1 = triax.goal2 = triax.goal3 = -1

while 1:
O.run(1000, True)
unb=unbalancedForce()
print 'unbalanced force:',unb,' mean stress: ',triax.meanStress
if unbtargetPorosity:
compFricDegree = 0.95*compFricDegree
setContactFriction(radians(compFricDegree))
print "\r Friction: ",compFricDegree," porosity:",triax.porosity,
sys.stdout.flush()
O.run(500,1)


triax.internalCompaction=False

setContactFriction(radians(finalFricDegree))

triax.stressMask = 0
triax.goal2=rate
triax.goal1=-0.5*rate
triax.goal3=-0.5*rate

newton.damping=0.6

from yade import plot

def history():
plot.addData(e11=-triax.strain[0], e22=-triax.strain[1], 
e33=-triax.strain[2],ev=-triax.strain[0]-triax.strain[1]-triax.strain[2],

s11=-triax.stress(triax.wall_right_id)[0],s22=-triax.stress(triax.wall_top_id)[1],s33=-triax.stress(triax.wall_front_id)[2],i=O.iter)


O.engines=O.engines[0:5]+[PyRunner(iterPeriod=20,command='history()',label='recorder')]+O.engines[5:7]


O.run(100,True)

plot.plots={'e22':('s11',None,'ev')}

plot.plot()
##

Thanks
Leonard





-- 
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 #706540]: Trouble in generating sphere packing

2023-05-09 Thread Jan Stránský
Question #706540 on Yade changed:
https://answers.launchpad.net/yade/+question/706540

Jan Stránský posted a new comment:
Hello,

> Also, I would like to use oedometric test on the simulation. My
question is how would I know the load that I should use?

plese open a new question for a new question ([1], point 5)

Cheers
Jan

[1] https://www.yade-dem.org/wiki/Howtoask

-- 
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 #706540]: Trouble in generating sphere packing

2023-05-09 Thread Huan
Question #706540 on Yade changed:
https://answers.launchpad.net/yade/+question/706540

Status: Open => Solved

Huan confirmed that the question is solved:
Thanks Karol Brzezinski, 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 #706540]: Trouble in generating sphere packing

2023-05-09 Thread Huan
Question #706540 on Yade changed:
https://answers.launchpad.net/yade/+question/706540

Status: Solved => Open

Huan is still having a problem:

Thanks Karol, that solve my problem.

# set color for sphere
for body in O.bodies:
   if not isinstance(body.shape, Sphere):
   continue
   if body.shape.radius == rMean1: #SP1
   body.shape.color = (0,0,1) #blue
   if body.shape.radius == rMean2: #SP1
   body.shape.color = (1,0,0) #red
   if body.shape.radius == rMean3: #SP2
   body.shape.color = (0,1,0) #green
   if body.shape.radius == rMean4: #SP3
   body.shape.color = (1,1,1) #white
I try this to create color for the spheres, but it doesn't seems to work. Any 
idea?

Also, I would like to use oedometric test on the simulation. My question
is how would I know the load that I should use?

-- 
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 #706540]: Trouble in generating sphere packing

2023-05-09 Thread Huan
Question #706540 on Yade changed:
https://answers.launchpad.net/yade/+question/706540

Huan posted a new comment:
Thanks Karol, that solve my problem.

# set color for sphere
for body in O.bodies:
   if not isinstance(body.shape, Sphere): 
   continue
   if body.shape.radius == rMean1: #SP1
   body.shape.color = (0,0,1) #blue
   if body.shape.radius == rMean2: #SP1
   body.shape.color = (1,0,0) #red
   if body.shape.radius == rMean3: #SP2
   body.shape.color = (0,1,0) #green
   if body.shape.radius == rMean4: #SP3
   body.shape.color = (1,1,1) #white
I try this to create color for the spheres, but it doesn't seems to work. Any 
idea?

Also, I would like to use oedometric test on the simulation. My question
is how would I know the load that I should use?

-- 
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 #706540]: Trouble in generating sphere packing

2023-05-09 Thread Huan
Question #706540 on Yade changed:
https://answers.launchpad.net/yade/+question/706540

Status: Answered => Open

Huan is still having a problem:
Thanks Karol, that solve my problem.

# set color for sphere
for body in O.bodies:
   if not isinstance(body.shape, Sphere): 
   continue
   if body.shape.radius == rMean1: #SP1
   body.shape.color = (0,0,1) #blue
   if body.shape.radius == rMean2: #SP1
   body.shape.color = (1,0,0) #red
   if body.shape.radius == rMean3: #SP2
   body.shape.color = (0,1,0) #green
   if body.shape.radius == rMean4: #SP3
   body.shape.color = (1,1,1) #white
I try this to create color for the spheres, but it doesn't seems to work. Any 
idea?

Also, I would like to use oedometric test on the simulation. My question
is how would I know the load that I should use?

-- 
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 #706485]: Consolidation of Peat Soil Using Discrete Element Method

2023-05-09 Thread Jan Stránský
Question #706485 on Yade changed:
https://answers.launchpad.net/yade/+question/706485

Status: Open => Needs information

Jan Stránský requested more information:
Hello,

> i am still new to this software

welcome :-)

TLTR: please provide more information [1]

> I am currently doing a research on the consolidation of peat soil by
using discrete element method.

Please be more specific about the project, purpose of using DEM, what actually 
is "consolidation", "peat soil" etc.
Based on this very general information, we cannot give back anything better 
then too very general..

> I would love to learn more about this software.

See documentation first [2,3,4,5]

> Below are the command (oedometric test) that is related to my studies

How is it related to your studies?

What is the original source of the script?
How does it differ from the original source?
...?

> I would love to create representative particles both for spherical and
fibrous material in order to create the virtual testing.

What are "representative particles"?
What is "spherical material" and "fibrous material"?
What specifically do you want to test virtually?
...?

Cheers
Jan

[1] https://www.yade-dem.org/wiki/Howtoask
[2] https://yade-dem.org/doc/
[3] https://yade-dem.org/doc/introduction.html
[4] https://yade-dem.org/doc/tutorial.html
[5] https://yade-dem.org/doc/user.html

-- 
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