questions about Reax force field and its use

Hi LAMMPS users,
i’m new in LAMMPS community!!
I’m trying to minimize the geometry of a surface of Tricalcium Aluminate.
This is the script:

clear
units real
dimension 3
boundary p p p
atom_style charge
read_data C3A_4x4x1_OH.data
pair_style reax

pair_coeff * * ffield.reax 2 3 4 6

H O Ca Al

minimize 1.0e-4 1.0e-6 100 1000
thermo_style multi
thermo 1
dump 1 all custom 1 C3A_4x4x1_min.xyz id type q x y z
print “All done!”

Log output is this:

LAMMPS (11 Jan 2012)
Reading data file …
orthogonal box = (0 0 0) to (30.496 30.496 7.624)
4 by 4 by 1 MPI processor grid
774 atoms
WARNING: Resetting reneighboring criteria during minimization (min.cpp:167)
Setting up minimization …
ia(i1,2) = 21 reax_defs.h::MBONDDEF = 20 after 1206 of 656851 pairs completed.
ia(i1,2) = 21 reax_defs.h::MBONDDEF = 20 after 1692 of 656851 pairs completed.
ia(i1,2) = 21 reax_defs.h::MBONDDEF = 20 after 1341 of 656851 pairs completed.
ia(i1,2) = 21 reax_defs.h::MBONDDEF = 20 after 1887 of 680613 pairs completed.
ia(i1,2) = 21 reax_defs.h::MBONDDEF = 20 after 8245 of 633730 pairs completed.
ia(i1,2) = 21 reax_defs.h::MBONDDEF = 20 after 1698 of 656851 pairs completed.
ia(i1,2) = 21 reax_defs.h::MBONDDEF = 20 after 815 of 680613 pairs completed.
ia(i1,2) = 21 reax_defs.h::MBONDDEF = 20 after 1953 of 680601 pairs completed.

I have no idea about this result.
Can anybody give me some advice?

Hi Nicola,

This version of ReaxFF is a Fortran implementation with no dynamic
memory allocation, i.e., arrays sizes are determined by #defined
variables in the header files. MBONDDEF is one of the variables for
allocating arrays, which is the maximum number of neighbors one atom
is allowed to have.

This error implies that in your data structure certain atom(s)
has/have more than 20 neighbors so that the array size is exceeded.
This usually means you have a bad structure. e.g. atoms are
overlapping, incorrect boundary conditions, etc.

Also, you might want to try reax/c, which has dynamic memory
allocation and runs faster.

Ray

Hi Nicola,
A bit extra to Ray's comment. Did you try first minimizing the
periodic lattice before attempting the surface relaxation? If by any
chance your x/y cell dimensions are far from the bulk equilibrium
lengths you could be building stresses that could end up "shooting
atoms to the moon" at the surface level. Notice that in your script
you are only relaxing the atomic positions and not the cell shape.
Carlos

Hi Ray, hi Carlos and all LAMMPS users.
After following your advices, in particular:

  • I have incremented MBONDDEF (from 20 to 35) in reax_defs.h
  • I have relaxed not only atomic positions, but also cell shape.
    i obtain alway the same error:

Reading data file …
orthogonal box = (0 0 0) to (15.25 15.25 7.62)
4 by 4 by 1 MPI processor grid
158 atoms
WARNING: Resetting reneighboring criteria during minimization (min.cpp:167)
Setting up minimization …
ia(i1,2) = 21 reax_defs.h::MBONDDEF = 20 after 2637 of 326540 pairs completed.
ia(i1,2) = 21 reax_defs.h::MBONDDEF = 20 after 2243 of 326555 pairs completed.
ia(i1,2) = 21 reax_defs.h::MBONDDEF = 20 after 21926 of 342657 pairs completed.
ia(i1,2) = 21 reax_defs.h::MBONDDEF = 20 after 4678 of 342645 pairs completed.
ia(i1,2) = 21 reax_defs.h::MBONDDEF = 20 after 23797 of 342690 pairs completed.
ia(i1,2) = 21 reax_defs.h::MBONDDEF = 20 after 6760 of 342678 pairs completed.

The script is this:

clear
units real

dimension 3

boundary p p p

atom_style charge

read_data C3A_4x4x1_OH.data
pair_style reax
pair_coeff * * ffield.reax 6 4 2 3
timestep 0.5

thermo_style multi

thermo 10

fix 1 all box/relax iso 1.0
min_style sd
minimize 1.0e-6 1.0e-8 1000 5000
print “All done!”

the data of system/box are:

158 atoms
4 atom types

0.0 15.25 xlo xhi
0.0 15.25 ylo yhi
0.0 7.62 zlo zhi

What can i do??? Must I continue to increment the variable?for example MBONDDEF 100???
Another thing: i know that is a bad structure. I hope, by minimization, to obtain a better structure to start MD equilibration and so simulation.

Thanks

2012/11/21 Carlos Campana <[email protected]…24…>

Nicola,

   The error message shows that your change to MBONDDEF was not successful, the copy of lammps you are using still has MBONDDEF set to 20. You need to change the variable in reax_defs.h, save the change, rebuild the reax library in by running the Makefile, rebuild lammps by running the Makefile in the lammps source directory and then copying the new version of lammps to your working directory. This does work - I have to do it every time I get a new version of Lammps. At least the error message clearly tells you what the problem is.

Kevin