[lammps-users] stress-strain relation

Hi,
I am applying two tensile tests to my system. I introduce total of 6% (approx.)expansion in both runs. But one ends with a segmentation fault where I am trying to increase the x-dimension by 2% between 10ps intervals and I repeat it 3 times in order to give 6% expansion. I wonder what is causing this.

the input that runs fine is below:
units real
atom_style molecular
read_restart npt.data
temperature temper all full units box
neighbor 1.0 bin
neigh_modify delay 10 check yes
thermo 100

total of 6% expansion in ±x direction

target x dimensions are adjusted accordingly

fix 1 all volume/rescale 100 x -5.2607 62.0607
fix 2 all npt 300.15 300.15 50 aniso NULL NULL 1.0 1.0 1.0 1.0 1000
timestep 1
dump 1 all custom 1000 stress.bin sxx syy szz
dump 2 all custom 10000 atoms.* x y z
run 20000
write_restart strain.20ps

The input that gives segmentation fault is below:
units real
atom_style molecular
read_restart npt.data
temperature temper all full units box
neighbor 1.0 bin
neigh_modify delay 10 check yes
thermo 100
fix 1 all volume/rescale 1000 x -3.9905 60.1554
fix 2 all npt 300.15 300.15 50 aniso NULL NULL 1.0 1.0 1.0 1.0 1000
timestep 1
dump 1 all custom 1000 stress2.bin sxx syy szz
run 2000
unfix 1
run 10000
fix 1 all volume/rescale 1000 x -4.6383 61.4383
run 2000
unfix 1
run 10000
fix 1 all volume/rescale 1000 x -5.299 62.099
run 2000
unfix 1
run 10000
write_restart strain2.36ps

the second input runs up to the second fix volume/rescale than stops. Can it be something to do with x dimensions that I define? I manually calculate them to enter in input but precision may not match with what the computer calculates from previous fix. What can I do about this?

When I did the similar test first with fix uniaxial, it did not work with npt. And when I use NVE, after the first fix uniaxial, initial and target strains become same for all of the following deformations.

Initial strain = 1.001 0.9995 0.9995
Target strain = 1.001 0.9995 0.9995

input script:

fix 1 all nve

applying strain of 0.1% for the first time

fix 2 all uniaxial 500 x 1.001
run 1000
unfix 2
dump …
run 5000
undump 1

applying strain of 0.1% for the 2nd time

fix 3 all uniaxial 500 x 1.001
run 1000
unfix 3
dump …
run 5000
undump 2

…goes like this. since I am not comfortable with uniaxial and it wants to keep volume constant, I prefered volume/rescale with P constraints only in x.

Thank you for taking the time to read this long mail, I would appreciate for you suggestions.

Burcu

Hi,
      I am not sure why the errors are but i would prefer while using the volume/rescale command just changing one extreme coordinate value of the cell twice then both once, in order to reduce the error(however i feel there should not be any error as it is just a little different % of strain than what you intended, which should be ok) involved in manually putting the round off values of strain.
    Another thing i was wondering as i am also interested in these kind of tests, i am not sure if the sxx syy etc values are the ones which gives the right value of stresses to calculate modulus as those does not contain the virial terms due to angle,bond, dihedral etc and perhaps monitoring pxx pyy ..etc should give the actual values of different stresses.

Thanks
Arnab

Burcu Eksioglu wrote:

Arnab - thank you for your suggestions. I am actually monitoring pxx pyy and pzz due to the same concern you mentioned. I suppose pxx, pyy… in thermo_style custom command are the pressure tensors that contain intra-molecular interactions.

I also have another question to the group: can we apply a tensile load to one of the six independent stress components in LAMMPS?

Burcu

Burcu,

You are right that pxx, pyy, etc include the
intra-molecular interactions. And yes, you can apply a
tensile load in LAMMPS to any of the six independent
components. For pxx, pyy, pzz, you would expand the x,
y, or z box dimension using fix npt of fix
volume/rescale. See:

http://www.cs.sandia.gov/~sjplimp/lammps/doc/fix_npt.html
http://www.cs.sandia.gov/~sjplimp/lammps/doc/fix_volume_rescale.html

For pxy, pxz, pyz, you'd have to impose a shear. This
is a bit more difficult, but can be done. You could
build parallel walls out of particles and pull the
walls in opposite directions to impose shear on the
material between the walls.

Paul