Default density for particles

Asked by Anton Gladky

Hi, all!
Default is the density for particles?

Is it 1 [massUnit/(lengthUnit^3)]?

Thanks

Question information

Language:
English Edit question
Status:
Solved
For:
ESyS-Particle Edit question
Assignee:
No assignee Edit question
Solved by:
Anton Gladky
Solved:
Last query:
Last reply:

This question was reopened

Revision history for this message
Anton Gladky (gladky-anton) said :
#1

Sorry for mistakes,

What is the default density for particles?

Is it 1 [massUnit/(lengthUnit^3)]?

Revision history for this message
Diego Peinado Martín (diego-peinado) said :
#2

Hi Anton. Yes that is the default density. Well, perhaps all the magnitudes in Esys aré non dimensional, and as a result of the units you want tu use, you should scale some magnitudes and to interpret others. The default density is 1. By the way, if you uses 2D simulation, be careful because then the density is calculated as a disk. For instance, if M=gr, and L=mm aré the choosen units and the material density is 2600 kg/m^3, then the density should be 2,6x10^-3 gr/mm^3.

Revision history for this message
Anton Gladky (gladky-anton) said :
#3

Thanks Diego Peinado Martín, that solved my question.

Revision history for this message
Anton Gladky (gladky-anton) said :
#4

Hi, all!

I have one more problem with this Units. It seems I have chosen the suitable for me values.
Calculations are here: http://geom.com.ua/Esys_Formulas.pdf

But the problem is with density again. Playing with parameters I found, that the default density is set to aprox.0.245
According to my calculation, it is density equals 0.245*10^17[kg/m^3]. Is that possible? Where am I wrong?

Thank you

Revision history for this message
Diego Peinado Martín (diego-peinado) said :
#5

Hello, I'm sorry but I did not understand quite well the problem. Now I'm trying to use nondimensional quantities as Dion sugested me some time ago.

For defining physically your problem, you should take some physical values. The force in a collision depends on how much the particles interact.

Lets do two examples as how do I fix the parameters.

Material glass with a density of 2500 kg/m3, this is the real density. The diameters are around 1 mm, some bigger, some smaller, but no so much, so my natural length L = 1 mm, I divide all the diameters and lenghts by 1 mm, so I manage a nondimensional length. I would like to use a density of unity, so I must define a unit of mass so I can nondimensionalize the mass magnitudes.

If I have 2500 kg/m3 = 1 M/mm^3 being M my mass unit (the factor by which I have to multiply all my results to have physical magnitudes), so M = 2.5e-6 kg. If my particles are of d=1.0 mm, then in simulation units I have r = 0.5 L. If the problem is 3D, then the mass in simulation units is m = 4/3*pi*r^3 * 1 M = 0.7854 M. The particles mass is 0.7854 M, being M = 2.5e-6 kg, BUT in my simulations I have only a pure number 0.7854, number I have to multiply by 2.5e-6 to obtain kg.

Lets simulate a collision without gravity. The approximation velocity is 100 mm/s. I have to choose a natural time for nondimensionalizing time magnitude, So I can choose T=L/V = 1/100 s. This is my natural time, so in simulation units, I use as approximation velocity V = 1 L/T = 100 mm/s (only the number 1). Finally, if I have the timestep dt=1e-4, then after 1000 timesteps I have a simulation time of 0.1 T = 0.1/100 s = 1e-3 s. What about k ??. Ok, here is a lot of recipes. There is a general agreement that you can simulate with values 1e5 times less than the real ones, so the time step that can be used is smaller. Imagine you want to use k = 10.000 N/mm = 10.000 kg * m /s^2 / mm = 10.000.000 kg/s^2 = 400e4 M/T^2 This is a very large value giving a time step very small, the time of collision would be pi/sqrt(2*k/m) = 9.8e-5 T. It's usual to use as high value around 2e5 M/T^2, giving a collision time of 0.00622 (dt around 1e-4 -> 62 time steps is the collision duration).

If we are simulating a gravity driven problem, then the natural time can be sqrt(L/g). So as g = 9810 mm/s^2, and T= sqrt(1mm/9810 mm/s^2) = 1/sqrt(9810) s, so in simulation units g = 1 L/T^2. So in simulation units I have d = 1L, m=0.7854M, rho=1M/L^3, and g=1*L/T^2, and the time is given in T units. The only problem is to choose the values of k, gamma, etc ... I must leave now, but I will post some references ...

I hope this will help (I'm still a bit confused with units).

Revision history for this message
Diego Peinado Martín (diego-peinado) said :
#6

Hello, I'm sorry but I did not understand quite well the problem. Now I'm trying to use nondimensional quantities as Dion sugested me some time ago.

For defining physically your problem, you should take some physical values. The force in a collision depends on how much the particles interact.

Lets do two examples as how do I fix the parameters.

Material glass with a density of 2500 kg/m3, this is the real density. The diameters are around 1 mm, some bigger, some smaller, but no so much, so my natural length L = 1 mm, I divide all the diameters and lenghts by 1 mm, so I manage a nondimensional length. I would like to use a density of unity, so I must define a unit of mass so I can nondimensionalize the mass magnitudes.

If I have 2500 kg/m3 = 1 M/mm^3 being M my mass unit (the factor by which I have to multiply all my results to have physical magnitudes), so M = 2.5e-6 kg. If my particles are of d=1.0 mm, then in simulation units I have r = 0.5 L. If the problem is 3D, then the mass in simulation units is m = 4/3*pi*r^3 * 1 M = 0.7854 M. The particles mass is 0.7854 M, being M = 2.5e-6 kg, BUT in my simulations I have only a pure number 0.7854, number I have to multiply by 2.5e-6 to obtain kg.

Lets simulate a collision without gravity. The approximation velocity is 100 mm/s. I have to choose a natural time for nondimensionalizing time magnitude, So I can choose T=L/V = 1/100 s. This is my natural time, so in simulation units, I use as approximation velocity V = 1 L/T = 100 mm/s (only the number 1). Finally, if I have the timestep dt=1e-4, then after 1000 timesteps I have a simulation time of 0.1 T = 0.1/100 s = 1e-3 s. What about k ??. Ok, here is a lot of recipes. There is a general agreement that you can simulate with values 1e5 times less than the real ones, so the time step that can be used is smaller. Imagine you want to use k = 10.000 N/mm = 10.000 kg * m /s^2 / mm = 10.000.000 kg/s^2 = 400e4 M/T^2 This is a very large value giving a time step very small, the time of collision would be pi/sqrt(2*k/m) = 9.8e-5 T. It's usual to use as high value around 2e5 M/T^2, giving a collision time of 0.00622 (dt around 1e-4 -> 62 time steps is the collision duration).

If we are simulating a gravity driven problem, then the natural time can be sqrt(L/g). So as g = 9810 mm/s^2, and T= sqrt(1mm/9810 mm/s^2) = 1/sqrt(9810) s, so in simulation units g = 1 L/T^2. So in simulation units I have d = 1L, m=0.7854M, rho=1M/L^3, and g=1*L/T^2, and the time is given in T units. The only problem is to choose the values of k, gamma, etc ... I must leave now, but I will post some references ...

I hope this will help (I'm still a bit confused with units).

Revision history for this message
Diego Peinado Martín (diego-peinado) said :
#7

Ok, I'm sorry, I've just understood your problem. You have some kind of press giving a force of 1e5 N on a surface. So is from here where you have to define your natural time scale. I do not know if this force is applied to a particle, a particle pair, or to a wall that transmit a pressure to the particles. Lets imagine there is a press, so the upper wall acts to the material with this force in a 1 m x 1 m area, then the pressure P = 1e5 Pa = 1e5 kg/(m*s^2).= 100 kg/(mm*s^2)

 So T= sqrt(M/L/P), being L the natural length in this case as previous is the particle diameter d=1mm, not the press length 1m that only served us to calculate the presion. T = sqrt(2.5e-6 kg /1 mm / (1e2 kg/(mm*s^2))) = 1.58e-4 s.
So in simulation units, d = 1 L, rho = 1 M/L^3, P = 1 M/(L*T^2) ( P = 1 2.5e-6kg/(1mm*(1.58e-4)^2 s^2) = 100 kg/mm/s^2), the press lenght should be 1000L, and the time is expressed in T (1.58e-4 secs). This is an example in which almost all the parameters can be set to 1 (when interpreting the results, you can scale to physical units). The k can be set to 100.000 M/T^2, so the dt is less than 0.1*sqrt(m/2k) = 0.1*sqrt(0.7854/200.000) = 1.98e-4, so you can choose dt = 1e-4 T. Finally we have:
d = 1 L
rho = 1 M/L^3
P=1 M/(L*T^2)
k = 100.000 M/T^2
dt = 1e-4 T

I still have to send you the references.

Revision history for this message
Anton Gladky (gladky-anton) said :
#8

Thank you, Diego for this answer. Will try tomorrow to use your way.

As I understood from Aachen course, It is necessary to choose three main physical units: Force, Time and Length. After that it is possible to get all other units. That is what I tried to do here http://geom.com.ua/Esys_Formulas.pdf

But in my case I get very large density factor. What is 10^17. That confused me a littler bit.

Anyway, thanks again! Hope will solve the problem soon.

Revision history for this message
Dion Weatherley (d-weatherley) said :
#9

Hi Anton and Diego,

When I do fracture simulations, I explicitly set the density of particles using LsmMpi.setParticleDensity(..). This subroutine will set the density of tagged particles so you need to tag all particles with a particular tag (12345 in the example below) before using setParticleDensity(..). It is dead easy to tag all particles using LSMGenGeo - just supply the tag as an argument to the InsertGenerator3D.generatePacking(..) subroutine. Here is the syntax for setParticleDensity:

sim.setParticleDensity(
   tag=12345,
   mask = -1,
   Density=9.8765
)

This will set the density of all particles with tag=12345 to a value of 9.8765.

Regarding scaling units, Diego's suggestions are very similar to what I normally do (and a very good explanation...thanks Diego!). Assuming you are wishing to model breakage in a model with RotBonds (e.g. rot_compress.py), here are the parameter values I typically use:

radii in range [0.2, 1.0] (assumed to be equivalent to millimeters)
particle density = 0.23
normalStiffness = 50000.0 (the elastic contact modulus for bonds)
normalBreakForce = 310.0 (the breaking stress for bonds)

These values are calibrated from UCS tests to achieve a Young's modulus and peak stress equivalent to a particular type of granite. When using these parameters, the following scaling of units applies:

L = 10^3 (i.e. lengths are measured in millimetres)
F = 1 (i.e. forces are measured in Newtons)
V = 1/7 (i.e. velocities are measured in "approximately" 10's of m/s)

One more thing: I usually "correct" my particle densities for the inherent porosity of the particle packing. For particles with radii in the range [0.2,1.0], the porosity is approximately 0.33 for a decent packing. I then choose a "bulk density" for the particle model as a whole and set:
                                 particle density = (bulk density) / (1 - porosity)
The rationale for this correction is so that the sum of the masses of particles comprising a model of a given volume is the same as the total mass of a bulk material of the same material. In essence, I lump the mass of the bulk material onto the particles. Not really sure how important this is but I found some time ago that this approach made scaling of units in quasi-static and dynamic simulations work better (density is relatively unimportant for quasi-static simulations but very important for dynamic ones). Because of the porosity correction, the bulk density I use in simulations is usually about 0.15, meaning that the scaling factor for model densities is approximately RHO = 0.15/3000 for modelling granite with a density of 3000 kg/m^3.

I hope this information is helpful. One of these days I really need to write a good explanation of all this stuff!

Cheers,

Dion.

Revision history for this message
Anton Gladky (gladky-anton) said :
#10

>
> radii in range [0.2, 1.0] (assumed to be equivalent to millimeters)
> particle density = 0.23
> normalStiffness = 50000.0 (the elastic contact modulus for bonds)
> normalBreakForce = 310.0 (the breaking stress for bonds)
>
>
Dion, in this case what is the physical (natural) value for density?
I mean, 0.23=3000kg/m^3 ? Right?

Thanks
______________________________

Anton Gladkyy

Revision history for this message
Dion Weatherley (d-weatherley) said :
#11

Hi Anton,

> I mean, 0.23=3000kg/m^3 ? Right?

No, not quite. The correction for particle packing porosity is important. Particles don't necessarily have a direct analogue in the "real world" but one can (in theory) measure the bulk density of both a piece of rock and the bulk density of a particle model simulated in ESyS-Particle. If one conducted this experiment, one would find that the particle density is not equal to the bulk density of the "simulated" rock. You need to correct the particle densities based upon the porosity of the particle packing.

For radii in the range [0.2,1.0], the artificial porosity of the packing is about 0.33. That means that the "correct" bulk density of the particle model is = (particle density) * (1 - 0.33). If you set the particle density to 0.23, the bulk density is 0.15. Therefore, the scaling of density is
0.15 = 3000kg/m^3

This issue with scaling densities caused me a lot of problems until I started correcting based on the packing porosity. Although I'm not clever enough to prove it mathematically, I think an analogy to the "lumped mass approximation" in Finite Element simulations might be relevant.

Cheers,

Dion.

Revision history for this message
Anton Gladky (gladky-anton) said :
#12

 Ok, thanks, Dion,
it seems I understood what you mean.

So, in this case you have:
   0.15=3000
   1 [ESyS][kg/m^3] = 20000 [physical][kg/m^3]?

I just want to be clear about, what physical units should I choose as
"primary units":
force, length, time? And other physical units can be received from those
one?

Revision history for this message
Dion Weatherley (d-weatherley) said :
#13

Hi Anton,

> what physical units should I choose as "primary units": force, length, time?

You can choose any three physical quantities as your primary units as long as together these chosen three quantities have units that include all three of the fundamental units of Mass, Length and Time. If the chosen units meet this criterion you can derive scaling relations for Mass, Length and Time and hence scaling relations for every other physical quantity.

For rock breakage simulations that I wish to calibrate against laboratory uniaxial compression simulations, I've found it is convenient to use Length, Force and Density as my primary units. I decided to measure lengths in millimetres, forces in Newtons and density in units of 1/20000. Why did I do this? Mostly it was convenient to do so, for the following reasons:

1/ To construct a particle model with sufficiently few particles that the simulation won't take many days to run, it is best to ensure that a) the smallest particle is no less than 1/10th the size of the largest particle, and b) the sample dimensions are no more than about 30-50 times the size of the largest particle. Since laboratory samples are usually roughly 50mm in diameter, it is convenient to make the particle model 50 units in diameter with individual particle radii in the range 0.1 to 1.0 units (or in real units, 0.1 to 1mm)

2) If we use millimeters for length units, choosing Newtons for force units is handy: a) we can calibrate model parameters so that the peak force reported by a UCS simulation is exactly the same numerical value as the force measured in the equivalent lab experiment, and b) when we measure length in mm and force in N, stresses are reported by simulations in MPa (which is handy when we want to measure quantities like Young's modulus and peak stress!)

3) The choice of density scaling was admittedly rather arbitrary now that I look back on it. Since previous work with ESyS-Particle had always used a density of 1.0 unit, I started out scaling densities such that 1.0 model density unit was equivalent to 3000 kg/m^3. At some point whilst I was playing around with ideas about artificial porosity etc., I changed this to 0.15 units == 3000 kg/m^3. The new value stuck but last week I did some tests and it really doesn't matter much whether model densities are unity or 0.15.

You may prefer to use another physical quantity rather than density as the third primary unit. On paper, using velocity units measured in m/s is a nice replacement. In that case we have primary unit scaling relations:

Lm/Lr = 1/10^-3 = 1000.0
Fm/Fr = 1/1 = 1.0
Vm/Vr = 1/1 = 1.0

where Lm is length in model units, Lr is length in "real" units (i.e. metres, kilograms and seconds) etc.

With these three as primary units we can derive scaling relations for Mass and Time:

Tm/Tr = Vr/Vm * Lm/Lr = 1.0 * 1000.0 = 1000.0
(i.e. model time units are equivalent to milliseconds)

Mm/Mr = Fm/Fr * Lr/Lm * ( Tm/Tr )^2 = 1.0 * 10^-3 * ( 10^3 )^2 = 1000.0
(i.e model masses are equivalent to grams)

Using millimetres, milliseconds and grams for model units is easy to remember and you have the added bonus that forces are reported in Newtons, stresses in MPa and velocities in m/s. I wish I'd noticed that months ago! ;-)

I hope this helps.

Cheers,

Dion.

Revision history for this message
Anton Gladky (gladky-anton) said :
#14

Thanks all for these answers. It seems everything is very clear for me now.

Revision history for this message
Dion Weatherley (d-weatherley) said :
#15

One more thing: If you decide to use the velocity scaling I suggested previously, you need to be careful to explicitly set the particle densities in simulations to ensure dimensional consistency.

To illustrate this, suppose I wish to model a sample with a bulk density of 3000 kg/m^3 using the scaling relations above and a particle packing with a porosity of 0.33. Bulk densities in the simulations will be related to real density (in kg/m^3) by the following scaling relation:

Dm/Dr = Mm/Mr * ( Lr/Lm )^3 = 10^3 * ( 10^-3 )^3 = 10^-6

So the bulk density of the particle model needs to be scaled relative to the actual density of 3000 kg/m^3 so that bulk density = Dm/Dr * (bulk density) = 10^-6 * 3000 = 3 * 10^-3.

Now we need to correct for the artificial porosity when we set particle densities, so the particle density is going to be:
Dp = 3 * 10 ^-3 / (1 - 0.33) = 0.00448

When you use LsmMpi.setParticleDensity(..) you need to use a particle density of 0.00448 so that particle densities are consistent with your chosen unit scaling (i.e. lengths in mm, forces in N and velocities in m/s) and that densities are corrected for the artificial porosity of the particle packing.

When you choose a value for other physical quantities (e.g. acceleration due to gravity) you need to be dimensionally consistent. You won't need to consider the artificial porosity for these quantities but you will need to supply a value for these quantities that is already scaled into model units (e.g. setting g = 9.81 is not appropriate unless Am/Ar = 1.0).

Cheers,

Dion.

Revision history for this message
Anton Gladky (gladky-anton) said :
#16

I have created small ODS-file for converting units. http://geom.com.ua/MeasureUnits.ods

I hope understood everything correctly :)

Revision history for this message
Michele Griffa (michele-griffa) said :
#17

Hello everybody

I've followed this thread very carefully. I thanks Dion, Anton and Diego for all the information and examples provided.

Although all the examples, I still have doubts about how the density is fixed.

1) I understood that if we do not set the particle density parameter explicitly it is automatically fixed to 1 in ESyS's implemented equations, whenever it occurs. Is this right ?

2) I'll make the case of my example to explain what I do not understand:

I chose Mass, Time and Length as the reference independent variables.

As units for the model I chose the following:

- for mass, M_0 = 1 Kg
- for time, T_0 = 1 sec
- for length, L_0 = 1.5e-4 m = 0.15 mm

So, for example, the radius of the particles is in the range [0.2; 1.0], where 1.0 means in absolute units L_0.

In my model, I had to impose a force normal to a confining wall. In the real world, i.e., in ab experiments, this force is F = 40 kN.
In the ESyS model this force has to be rescaled by M_0, T_0 and L_0 properly.
Since M_0 = 1 Kg and T_0 = 1 sec, essentially F has to be divided by L_0. Finally result, the force in the model is F_model = 2.67e8.

Now, I did not fixed the particle density inside the model, so I suppose in the equations it's equal to 1.

What's the correspondent real-world density I'm using ?

If I'm not wrong, the real-world density, rho, is given by the following formula:

rho = rho_model * M_0 * (L_0)e-3

Since rho_model = 1 and I chose also M_0 = 1 Kg but L_0 = 1.5e-4, I get an irrealistic value for the density

rho = 1 * 1 Kg * (1.5e-4 m)e-3 = 3e11 Kg me-3

Am I doing the right scaling ?

I did not consider in this case the difference between particle density and bulk density, considering the porosity of the particle assembly, but the order degree should more or less with or without that correction.

So, it means that I have either to change density in units of the model, rho_model, not equal to 1 anymore, or I have to choose another value for M_0.

If I want to change the density used in the equations inside the model and I've got already particles which are tagged in different ways because I have to distinguish among particles attached to walls, particles bonded and not bonded, how can I assign the density inside the model such that it's the same for each particle, independent of its tag ?
Is it possible to do that in LSMGenGeo or can I do that just in the ESyS script ?

Thanks a lot in advance for your support

Best regards

Michele

Revision history for this message
Anton Gladky (gladky-anton) said :
#18

Hi, Michele!

Please. check it http://geom.com.ua/MeasureUnits.ods

Your case is the last. Length is chosen to 6666.67 as you have
1/(0.15*10e-3)
I have got F=5.33e+8, as a=2*L_0/t^2 => F=m/a
Your initial density will be 2.96e11.
Please, check formulas in that table, hope you will find it useful.

>If I want to change the density used in the equations inside the model and
I've got already particles which are tagged in different ways because I have
to >distinguish among particles attached to walls, particles bonded and not
bonded, how can I assign the density inside the model such that it's the
same for >each particle, independent of its tag ?

I did it a loop, where all tags where iterated. And then I used
setParticleDensity for each tag.

>Is it possible to do that in LSMGenGeo or can I do that just in the ESyS
script ?
LSMGenGeo gives you just geometry, that is why it is nor related to physical
units at all.

______________________________
[ENG] Best Regards
[GER] Mit freundlichen Grüßen
[RUS] С наилучшими пожеланиями
[UKR] З найкращими побажаннями

Anton Gladkyy

2009/11/24 Michele Griffa <email address hidden>

> Your question #85817 on ESyS-Particle changed:
> https://answers.launchpad.net/esys-particle/+question/85817
>
> Michele Griffa posted a new comment:
> Hello everybody
>
> I've followed this thread very carefully. I thanks Dion, Anton and Diego
> for all the information and examples provided.
>
> Although all the examples, I still have doubts about how the density is
> fixed.
>
> 1) I understood that if we do not set the particle density parameter
> explicitly it is automatically fixed to 1 in ESyS's implemented
> equations, whenever it occurs. Is this right ?
>
> 2) I'll make the case of my example to explain what I do not understand:
>
> I chose Mass, Time and Length as the reference independent variables.
>
> As units for the model I chose the following:
>
> - for mass, M_0 = 1 Kg
> - for time, T_0 = 1 sec
> - for length, L_0 = 1.5e-4 m = 0.15 mm
>
> So, for example, the radius of the particles is in the range [0.2; 1.0],
> where 1.0 means in absolute units L_0.
>
> In my model, I had to impose a force normal to a confining wall. In the
> real world, i.e., in ab experiments, this force is F = 40 kN.
> In the ESyS model this force has to be rescaled by M_0, T_0 and L_0
> properly.
> Since M_0 = 1 Kg and T_0 = 1 sec, essentially F has to be divided by L_0.
> Finally result, the force in the model is F_model = 2.67e8.
>
> Now, I did not fixed the particle density inside the model, so I suppose
> in the equations it's equal to 1.
>
> What's the correspondent real-world density I'm using ?
>
> If I'm not wrong, the real-world density, rho, is given by the following
> formula:
>
> rho = rho_model * M_0 * (L_0)e-3
>
> Since rho_model = 1 and I chose also M_0 = 1 Kg but L_0 = 1.5e-4, I get
> an irrealistic value for the density
>
> rho = 1 * 1 Kg * (1.5e-4 m)e-3 = 3e11 Kg me-3
>
> Am I doing the right scaling ?
>
> I did not consider in this case the difference between particle density
> and bulk density, considering the porosity of the particle assembly, but
> the order degree should more or less with or without that correction.
>
> So, it means that I have either to change density in units of the model,
> rho_model, not equal to 1 anymore, or I have to choose another value for
> M_0.
>
> If I want to change the density used in the equations inside the model and
> I've got already particles which are tagged in different ways because I have
> to distinguish among particles attached to walls, particles bonded and not
> bonded, how can I assign the density inside the model such that it's the
> same for each particle, independent of its tag ?
> Is it possible to do that in LSMGenGeo or can I do that just in the ESyS
> script ?
>
> Thanks a lot in advance for your support
>
> Best regards
>
> Michele
>
> --
> You received this question notification because you are a direct
> subscriber of the question.
>

Revision history for this message
Dion Weatherley (d-weatherley) said :
#19

Hi Michele,

Just to be sure, I would recommend that you explicitly set the density of all particles using setParticleDensity, even if you want the density to be equal to 1. This is safer that assuming the density is 1.0 by default.

Your choice of units for any given problem is really just for convenience. If you want to avoid really large numbers like 3e11 then changing your mass and time units will help.

For simulations of laboratory experiments I use Newtons, millimetres, and metres/second because of reasons explained earlier in this thread. For your application Michele, I'd suggest you try using the same units as I.

Cheers,

Dion.

Revision history for this message
Michele Griffa (michele-griffa) said :
#20

Hi Dion

Thanks a lot for the suggestions

When you say

>Just to be sure, I would recommend that you explicitly set the density
>of all particles using setParticleDensity, even if you want the density
>to be equal to 1. This is safer that assuming the density is 1.0 by
>default.

does it mean that, in the equations, as implemented inside ESyS-Particle code, the density is not fixed equal to 1 as default ?

From the various thread on the Launchpad site I understood it is.

I got a little bit confused about this detail.

Sorry for the continuous questions

Best regards

Michele
------------------------------------------------------------------------------------------------------------------------------
Michele Griffa, Ph.D.
EMPA, Swiss Federal Laboratories for Materials Testing and Research (ETH Domain)

Überlandstrasse 129
8600, Dübendorf, Switzerland

Ph.: +41 (0) 44 823 4789
Fax: +41 (0) 44 823 4009
email: <email address hidden>
Web site: http://www.empa.ch

Personal web site: http://www.calcolodistr.altervista.org/en/index_en.html
-----------------------------------------------------------------------------------------------------------------------------

>-----Original Message-----
>From: <email address hidden> [mailto:<email address hidden>] On Behalf Of
>Dion Weatherley
>Sent: Dienstag, 24. November 2009 21:40
>To: Griffa, Michele
>Subject: Re: [Question #85817]: Default density for particles
>
>Question #85817 on ESyS-Particle changed:
>https://answers.launchpad.net/esys-particle/+question/85817
>
>Dion Weatherley posted a new comment:
>Hi Michele,
>
>Just to be sure, I would recommend that you explicitly set the density
>of all particles using setParticleDensity, even if you want the density
>to be equal to 1. This is safer that assuming the density is 1.0 by
>default.
>
>Your choice of units for any given problem is really just for
>convenience. If you want to avoid really large numbers like 3e11 then
>changing your mass and time units will help.
>
>For simulations of laboratory experiments I use Newtons, millimetres,
>and metres/second because of reasons explained earlier in this thread.
>For your application Michele, I'd suggest you try using the same units
>as I.
>
>Cheers,
>
>Dion.
>
>--
>You received this question notification because you are a direct
>subscriber of the question.

Revision history for this message
Jose Cunha (jpcunha) said :
#21

Hello, i got to this question when looking to understand how the mass or density of particles is defined (i do now).
But here i see everyone finds the need to scale their models, is there any inconvenience in using m, N and s as primary units?

Revision history for this message
Dion Weatherley (d-weatherley) said :
#22

Hi Michele and Jose,

> the density is not fixed equal to 1 as default ?

There is an unconfirmed bug report that when geometry files are imported via ReadGeometry(..) that the density is 0.75 instead of 1.0. However when creating geometries in simulation (with RandomBoxPacker for example) the density is 1.0. We plan to check (and fix) this before the next major release.

Having said that, in my personal opinion it is not a good idea to make assumptions about default values for parameters unless you have tested that assumption carefully. I prefer to specifically set the values of all parameters so I know precisely what the value of those parameters are. Since it is really a trivial matter to call SetParticleDensity(..) for each group of tagged particles, that is what I would recommend.

> is there any inconvenience in using m, N and s as primary units?

Jose, there is no fundamental problem with using MKS units in ESyS-Particle if you find that most convenient. In many cases, using MKS is not as convenient as another set of primary units. For comparison of simulations with laboratory experiments I've found that using mm, msec and grams is very helpful. These units mean that forces will be reported in Newtons and velocities will be reported in m/s. Since it is often the case that we wish to compare forces or velocities measured in laboratory experiments with those in simulations, this choice of units is quite convenient.

Another reason for changing the primary units relates to a potential problem with generating particle geometries. Recently I found that LSMGenGeo can sometimes struggle to make a good packing of particles if the mean radius is significantly different from 1.0 (i.e. if particles have radii of ~10000.0). The same problem probably applies to generating packings with RandomBoxPacker in simulation. It is always best to check the particle packing before starting a simulation e.g. by visualising the particles in paraview. If you find that your particle packing is not adequate due to having very large particle radii, you may need to choose a different set of primary units so that particles have a mean radius of ~ 1.0.

Cheers,

Dion.

Revision history for this message
Anton Gladky (gladky-anton) said :
#23

Another reason for changing the primary units relates to a potential
> problem with generating particle geometries. Recently I found that
> LSMGenGeo can sometimes struggle to make a good packing of particles if
> the mean radius is significantly different from 1.0 (i.e. if particles
> have radii of ~10000.0). The same problem probably applies to generating
> packings with RandomBoxPacker in simulation. It is always best to check
> the particle packing before starting a simulation e.g. by visualising
> the particles in paraview. If you find that your particle packing is not
> adequate due to having very large particle radii, you may need to choose
> a different set of primary units so that particles have a mean radius of
> ~ 1.0.
>
>
I can confirm this problem. I was trying to generate the standard
laboratory-sized specimen in [m], and the packing was not so good, as I
wanted. So I found that it is easier for me to generate the specimen in [mm]
and then just to scale the geometry with external script.

Revision history for this message
Jessica (jescarish) said :
#24

Hello!!

I am confused with the system of units used. Suppose I have a particle with r=0.04 meter. How am I going to calculate for the mass? It is mention above that the density = [mass unit/length unit^3]. What is the equivalent mass unit for this particle? For this problem, I have only a fixed particle radius.

Revision history for this message
Will (will-hancock) said :
#25

Hi Jessica,

You can set the density using:

sim.setParticleDensity(
   tag = 0,
   mask = -1,
   Density = 1.0
)

Where tag corresponds to the tag you have given your particles. From there you will be able to calculate your mass using the volume of a sphere multiplied by density.

Things get more tricky where you decide to scale your simulation, that is where you may use a sphere of 1m radius to represent your particles of 0.04m radius.

Cheers,
Will

Revision history for this message
Jessica (jescarish) said :
#26

Thanks Will, I think that solved my problem. But I still have few questions.

1. Base on the discussions above, as what I have understood, the best unit to use for particle radius is in millimeter? Since the resulting units for velocity and force will be in m/s and Newton respectively.

2. I am using LSMGenGeo as my particle packer, is it convenient to use the sim.setParticleDensity(..) for this type of packer?

3. If the answer of my following questions are yes, then is it possible to specify the following properties to the simulation?

density = 1506 kg/m^3
mass = 2.6 x 10 ^-9 kg
radius = 75 micrometer = 0.75 mm

4. If this is possible, how will I set the mass for this problem using GenGeo?

I guess that's all.

Thanks,

Jessica

Revision history for this message
Dion Weatherley (d-weatherley) said :
#27

Hi Jessica,

In answer to your questions:

1. My suggestion to use mm, N and msec applies primarily to simulations of laboratory experiments in which the smallest indivisible volume (akin to a single particle in the simulation) is about 0.1mm. For the majority of laboratory rock breakage experiments, this is not a bad starting point. This unit scaling may not be the most convenient for other applications though. I usually start my determining the length scale corresponding to one particle radius then choose two more units of measure that are convenient. If you typically measure forces (for example) in the experiments in units of milliNewtons, then that might be a good unit for forces in your simulations.

2. When you generate a particle setup in GenGeo, you need to provide a tag for particles in the InsertGenerator.generatePacking(..) subroutine. In your simulation script, you can supply that particle tag to LsmMpi.setParticleDensity(..) to prescribe the density of particles. You cannot use setParticleDensity in your LSMGenGeo script as this subroutine is only defined in ESyS-Particle, not LSMGenGeo.

3. I think my answer to question 1 also applies here. Try to identify three physical quantities as your "fundamental quantities" and decide what is the most convenient unit of measure for each. Once you've chosen those three quantities (and units) rescale all other physical quantities so they are consistent with these.

4. There is no problem using setParticleDensity in simulations using LSMGenGeo packings. In fact, setParticleDensity was initially implemented specifically for this purpose.

Cheers,

Dion.

Revision history for this message
Jessica (jescarish) said :
#28

Thanks a lot for the answers!! I guess that solved my problem.

Revision history for this message
ceguo (hhh-guo) said :
#29

Thanks all for the information you've provided! It is of great usefulness! But I still wonder if the parameter scale for particles is the same with the simulation ones, like plate speed and set dt?

For example, if I choose length, force and density as the base units, say 1L = 1mm, 1F = 1N, and 1D = 10000 kg/m3. So I set particle radius 0.2~0.6 to simulate 0.2mm~0.6mm in real world, particle density = 0.265 to simulate 2650 kg/m3 in real world, etc. Then according to this scaling velocity is 1V = 10 m/s and time is 1T = 0.0001 s. So if I set plate speed in the WallLoaderRunnable subroutine vPlate = 0.012, does this mean the loading speed is 0.12 m/s in real. Since the sample is 12L = 12mm in height, the axial strain rate is 10 /s (seems too large). Similarly if dt is set to 1.0e-4, does this mean dt is 1.0e-8 s in real?

Tks

Ning

Revision history for this message
Dion Weatherley (d-weatherley) said :
#30

Hi Ning,

The short answer to all your questions is: Yes!

If you set vPlate=0.012 then this is equivalent to a real world speed of 0.12m/s. A while ago I tested this out by measuring wavespeeds in simulation units, converting to real units and comparing with the wavespeeds of materials of known physical properties. The scaling worked as expected. When I converted from the measured wavespeed in simulation units to real units I obtained the expected wavespeed in m/s.

Regarding seemingly large strain rates, this is something that happens quite regularly in DEM simulations for practical reasons. If we set the strain rate equal to that of a laboratory experiment, the simulation would take an enormously long time to run. It is common therefore to (artificially) increase the simulation strain rate to reduce computation time. Of course you need to be careful when doing this, to avoid artifacts in your simulation results due to the artificially high strain rate.

Since laboratory experiments are typically quasi-static, we really only need to ensure the simulations are also quasi-static. This can be done by choosing a vPlate that is a small fraction (say 1%) of the compressional wavespeed in the model. In some cases you may also need to add some artificial viscosity/damping to the simulation to maintain quasi-static conditions.

I hope this helps.

Cheers,

Dion.