Young's modulus

Submitted by jw851602 on Thu, 11/07/2013 - 12:57

I have a question regarding to the usage of a realistic Young's modulus in my simulations.
Up to now I have used a value of 5e6 N/mm² for my particles because this value is used in most of the examples. Now I want to implement a realistic value of 2.1e11 N/mm² (Steel). I know that I have to reduce the timestep, but I don't know exactly which correlation I have to consider.
In the documentation of the command "fix check/timestep/gran" there are two equations and with my parameters I get the following values for my dt_max:

dt_r_max = PI*r*sqrt(rho/G)/(0.1631*nu+0.8766)
r = 0.01 m
rho = 7850 kg/m³
nu = 0.3
E = 2.1e11
G = E/(2*(1+nu)) = 8.077e10
dt_r_max = 1.058e-5

Is this correct?

When I execute my simulation with dt = 1.058e-5 there is so much more kinetic energy in there and all of my particles suddenly have a positive z-velocity and fly out of my simulation box (file "bowl_E21e11.png") contrary to my simulation with E=5e6, dt=1e-4. Are there any explanations?

Furthermore it would be great to speed up my simulation. How do I find a good value for the "neighbor" and "neighbor_modify" commands? And where can I read something helpful about improving parallelisation?

In my simulation 20000 particles are set into vibration in a bowl. Here is the code, the STL (file extension changed to .txt in order to prepare the file for uploading it into the forum) of the bowl and a picture of the setup for your imagination.

===========================================================================

### Initialization

units si
dimension 3
newton off
processors 3 3 1
boundary f f f
atom_style granular
atom_modify map array
communicate single vel yes

#Read Particle Start Position
read_data restart/init20000.rstrt

###Settings

neighbor 0.03 bin
neigh_modify delay 0

### Material and interaction properties

fix m1 all property/global youngsModulus peratomtype 2.1e11
fix m2 all property/global poissonsRatio peratomtype 0.3
fix m3 all property/global coefficientRestitution peratomtypepair 1 0.8
fix m4 all property/global coefficientFriction peratomtypepair 1 0.15
fix m5 all property/global characteristicVelocity scalar 2

### physics

pair_style gran/hooke/history
pair_coeff * *
fix grav all gravity 9.81 vector 0 0 -1.0

### walls

fix cad all mesh/surface/stress file geometrie.stl type 1 scale 0.001 move 0 0 0
fix wall all wall/gran/hooke/history mesh n_meshes 1 meshes cad

### numeric

fix integrate all nve/sphere
timestep 1.058e-5

### Output

dump dumpmesh all mesh/vtk 200 post/mesh*.vtk id stress
dump dmp all custom 200 post/dump*.stream id type x y z ix iy iz vx vy vz fx fy fz &
omegax omegay omegaz radius

### Monitoring

thermo_style custom step atoms ke cpu
thermo 1000

### Vibration

# Variables Definiton

variable x_amp equal 0.002
variable alpha_amp equal 0.5
variable frequency equal 60

# derived variables

variable omega equal 2*PI*v_frequency
variable x_dot_amp equal v_x_amp*v_omega
variable alpha_amp_rad equal v_alpha_amp*(PI/180)
variable alpha_dot_amp equal v_alpha_amp_rad*v_omega

variable x_dot equal v_x_dot_amp*cos(v_omega*(step*dt))
variable y_dot equal v_x_dot_amp*sin(v_omega*(step*dt))
variable z_dot equal 0
variable alpha_dot equal v_alpha_dot_amp*sin(v_omega*(step*dt)+PI)
variable beta_dot equal v_alpha_dot_amp*cos(v_omega*(step*dt))

variable startPos_x_dot equal 0
variable startPos_y_dot equal (-1)*v_x_amp
variable startPos_z_dot equal 0
variable startPos_alpha_dot equal v_alpha_amp_rad

### Reach Start Position

fix startPosX all move/mesh mesh cad linear/variable v_startPos_x_dot v_startPos_y_dot v_startPos_z_dot
fix startPosAlpha all move/mesh mesh cad rotate/variable origin 0 0 0 axis 1 0 0 omega v_startPos_alpha_dot

run 10000

unfix startPosAlpha
unfix startPosX

### Start Vibration

fix xVibration all move/mesh mesh cad linear/variable v_x_dot v_y_dot v_z_dot
fix alphaVibration all move/mesh mesh cad rotate/variable origin 0 0 0 axis 1 0 0 omega v_alpha_dot
fix betaVibration all move/mesh mesh cad rotate/variable origin 0 0 0 axis 0 1 0 omega v_beta_dot

run 600000

===========================================================================

Thank you for your help!

Best regards,
Jan

AttachmentSize
Plain text icon Bowl STL287.36 KB
Image icon Picture of setup335.38 KB
Image icon Simulation with Young's modulus 2.1e11185.02 KB

zamir | Fri, 11/08/2013 - 02:32

I'm no expert, but consider this: If the simulation you used to prepare the init20000.rstrt file used a Young's modulus of 5e-6PA, then the particles will be initialized in your current simulation with a relatively large overlap. If the Young's modulus is suddenly increased by several orders of magnitude, the inter-particle forces will be very high at the onset of your simulation, and therefore, you may experience some very high energies.

If this is true, then to remedy this, you will want to ramp your Young's modulus up gradually, possibly with high damping. Or, as an inelegant alternative, just start your simulation with very high damping, like 500 N-s/m or something, then reduce after a few thousand timesteps.

uhelfenstein | Mon, 11/11/2013 - 09:49

Hi Jan

In the formula you calculated the Rayleigh time TR which is not equal to the maximum time step. It is crecommended to use a time step in the range of 0.1 TR ... 0.3 TR.

Regards,

Urs

PaulWinkler's picture

PaulWinkler | Wed, 11/20/2013 - 12:25

Hi,

you are using SI units, so Y-modulus is in Pa (N/m²). The given number 2.1e11 N/mm² is wrong. I think it should be 2.1e5 N/mm² and 2.1e11 N/m². May be you mixed it up. because in the script it seems to be ok.
To reduce the velocity at the beginning and stay with bigger time steps, see fix nve/limit command.

Regards,
Paul