Bond particles pair_style gran/hooke/history

Dear lammps-users,

Since a while now I have been trying to model compression on a solid cube. Since the mechanics of the cube should be based on the discrete element method (DEM), I would like to use pair_styles of the granular functions of LAMMPS. However, all particles should be bonded, in order for the cube to be an actual solid. When I compress the cube in the z-direction, particles will move apart in the x- and y-direction due to the Poisson’s effect. In this direction, particles do not interact anymore, while I actually would like a bonded contact being streched in the latter directions due to the Poisson’s effect. This should then give stress results of the bindings.

Does anybody know if this is possible to model with LAMMPS?
If yes, with what function could I assign a bonded contact without removing interactions corresponding to DEM?
Below you can see my script so far:

#------------------------------------Initialization--------------------------------------------------------------------------------------------

atom_style sphere
boundary p p p

newton off
comm_modify vel yes

------------------------------------Make geometry--------------------------------------------------------------------------------------------

lattice sc 1
region reg block 0 100 0 100 0 100 units box
create_box 1 reg
create_atoms 1 box

neighbor 0.2 bin
neigh_modify delay 5

#-------------------------------------Define binding criteria----------------------------------------------------------------------------------

pair_style gran/hooke/history 561e6 241e6 50 NULL 5 0
pair_coeff * *

#------------------------------------------Settings--------------------------------------------------------------------------------------------

compute peratom all pe/atom

variable tmp equal “lz”
variable L0 equal {tmp} print "length, tmp: {tmp}"
print “Initial Length, L0: ${L0}”

#------------------------------------------Deformation-----------------------------------------------------------------------------------------

variable srate equal 1.0e1
variable srate1 equal “v_srate/1.0e3”

fix 2 all deform 1 z erate ${srate1} x volume y volume #units box remap x//box length increases by srate1 * 100 percent

variable L equal “lz - v_L0”

Output strain and stress info to file

variable strain equal “v_L/v_L0”
variable p1 equal “v_strain”
variable p2 equal “-pxx”
variable p3 equal “-pyy”
variable p4 equal “-pzz”

fix def1 all print 100 “{p1} {p2} {p3} {p4}” file solid_comp_lin.def1.txt screen no

#--------------------------------------Run simulation------------------------------------------------------------------------------------------

timestep 0.001

dump 1 all custom 500 dump.solid id type xs ys zs radius c_peratom fx fy fz

run 10000

It would be great if somebody could give me some advice!
Thanks a lot for the input in advance.

Best,

Aksel

Dear lammps-users,

Since a while now I have been trying to model compression on a solid cube.
Since the mechanics of the cube should be based on the discrete element
method (DEM), I would like to use pair_styles of the granular functions of
LAMMPS. However, all particles should be bonded, in order for the cube to
be an actual solid. When I compress the cube in the z-direction, particles
will move apart in the x- and y-direction due to the Poisson's effect. In
this direction, particles do not interact anymore, while I actually would
like a bonded contact being streched in the latter directions due to the
Poisson's effect. This should then give stress results of the bindings.

Does anybody know if this is possible to model with LAMMPS?
If yes, with what function could I assign a bonded contact without removing
interactions corresponding to DEM?

dear aksel,

to add (explicit) bonded interactions to your system without removing
the DEM interactions, you would need to do:
- change your atom style from sphere to "hybrid sphere bond"
- use special_bonds lj/coul 1.0 1.0 1.0
- define a suitable bond style, bond_coeff parameters
- define bonds either through reading a data file or using LAMMPS
commands that create bonds

HTH,
     axel.

To make a solid based on the discrete element method, I try to implement bonds in my simulation. I don’t have a datafile for defining bonds, so I wanted to use create_bond command, not sure if this is possible like that though…

When I run the script, I get: ERROR: Numeric index is out of bounds (…/force.cpp: 763).
The error comes up at the bond_coeff command line.

Does somebody know how I should adjust this line to make it run again?

Thank you in advance for helping!

The script is below:

#------------------------------------Initialization--------------------------------------------------------------------------------------------

atom_style hybrid sphere bond
boundary p p p

newton off
comm_modify vel yes

------------------------------------Make geometry--------------------------------------------------------------------------------------------

lattice sc 1
region reg block 0 10 0 10 0 10 units box
create_box 1 reg
create_atoms 1 box

neighbor 0.2 bin
neigh_modify delay 5

#-------------------------------------Define binding criteria----------------------------------------------------------------------------------
special_bonds lj/coul 1.0 1.0 1.0
bond_style harmonic
bond_coeff 1 80.0 1.0
create_bonds all all 1 1.0 1.5

pair_style gran/hooke/history 561e6 241e6 50 NULL 5 0
pair_coeff * *

#------------------------------------------Settings--------------------------------------------------------------------------------------------

compute peratom all pe/atom

variable tmp equal “lz”
variable L0 equal {tmp} print "length, tmp: {tmp}"
print “Initial Length, L0: ${L0}”

#------------------------------------------Deformation-----------------------------------------------------------------------------------------

variable srate equal -1.0e1
variable srate1 equal “v_srate/1.0e3”

fix 2 all deform 1 z erate ${srate1} x volume y volume #units box remap x//box length increases by srate1 * 100 percent

variable L equal “lz - v_L0”

Output strain and stress info to file

variable strain equal “v_L/v_L0”
variable p1 equal “v_strain”
variable p2 equal “-pxx”
variable p3 equal “-pyy”
variable p4 equal “-pzz”

fix def1 all print 100 “{p1} {p2} {p3} {p4}” file solid_comp_lin.def1.txt screen no

#--------------------------------------Run simulation------------------------------------------------------------------------------------------

timestep 0.001

dump 1 all custom 500 dump.solid id type xs ys zs radius c_peratom fx fy fz

run 10000

To make a solid based on the discrete element method, I try to implement
bonds in my simulation. I don't have a datafile for defining bonds, so I
wanted to use create_bond command, not sure if this is possible like that
though...

When I run the script, I get: ERROR: Numeric index is out of bounds
(../force.cpp: 763).
The error comes up at the bond_coeff command line.

Does somebody know how I should adjust this line to make it run again?

in order to be able to define bonds, you have to reserve space for
them. this has to be done when the simulation box is defined (which
can only be done once) and it cannot be changed later.
please see the documentation for the create_box command how to include
extra space for bond types, bonds per atoms and exclusions.

axel.