create_atoms h2o

lammps version 1Feb14

Dear lammps-users,
I want to add h2o molecules to a region during a loop, but I get the error

stp110-hbondchk failed

with the input file

units metal
atom_style charge
pair_style reax/c NULL checkqeq yes
boundary p p p

read_data data.Si123_h2o
molecule h2o H2O.txt
region 7 sphere 0 0 0 9.0 side out
create_atoms 0 random 1 14 7 mol h2o 3

pair_coeff * * ffield.reax Si H O

group all type 1 2 3
timestep 0.0002
thermo 10
thermo_modify format float %15.8f
dump 1 all xyz 1 trj.Si123_h2o.xyz
dump_modify 1 format “%s %15.6f %15.6f 15.6f" element Si H O dump 2 all custom 100 atmchrg.Si123_h2o id element q dump_modify 2 format "-3i %-4s %10.6f” element Si H O

fix 1 all nvt temp 100.0 3000.0 0.02 tchain 4
fix 2 all qeq/reax 1 0.0 10.0 1.0e-5 reax/c
run 10
unfix 1

fix 4 all nvt temp 3000.0 3000.0 0.02 tchain 4
run 50
unfix 4

variable a loop 10
label loop

create_atoms 0 random 2 4 7 mol h2o 6

fix 4 all nvt temp 3000.0 3000.0 0.02 tchain 4
run 50
unfix 4

next a
jump in.Si123_h2o loop

fix 5 all nvt temp 3000.0 100.0 0.02 tchain 4
run 50
unfix 5

minimize 1.0e-14 1.0e-14 10000 10000
unfix 2

The log file says that 6 atoms have been created in the beginning of the loop, but then the program stops when the run is about to start, giving the above error message.
I only get this error when I want to add h2o molecules in the loop, i.e. it doesn’t matter, if I create h2o molecules prior to the loop or not. The first create_atoms command can be left out and I still get the same error.
Also, adding any other molecule to the region, like o2, h2, or n2 works fine, even if the atoms spawn at the almost same positions.
Can someone help me with this? The data- and molecule-file are listed below.

Paul

lammps version 1Feb14

Dear lammps-users,
I want to add h2o molecules to a region during a loop, but I get the error

stp110-hbondchk failed

this looks like you are hitting a restriction of the USER-REAXC package.

inserting particles at random positions with reax/c is asking for a
lot, since it is not a fully native LAMMPS package, but rather a
standalone code that has been interfaced to LAMMPS. thus many
LAMMPS-specific features may run into problems, and inserting
molecules is one of them.

what is the purpose of your script. perhaps there is an alternate way
to do the same...

axel.

The purpose of the script is to simulate the oxidation of a hydrated Si cluster in an aqueous environment (cubic simulation box).
I first wanted to do this with ‘pour’ or ‘deposit’, but the documentation says that this is only possible if the region is defined as ‘side in’.
So I wanted circumvent this by just looping over the creation of molecules in a region, which works, but not for the creation of water molecules.

The purpose of the script is to simulate the oxidation of a hydrated Si
cluster in an aqueous environment (cubic simulation box).
I first wanted to do this with 'pour' or 'deposit', but the documentation
says that this is only possible if the region is defined as 'side in'.
So I wanted circumvent this by just looping over the creation of molecules
in a region, which works, but not for the creation of water molecules.

this will be difficult even for an interaction model that fully
supports adding molecules. it is always *much* more difficult to
insert molecules than to remove them. the typical strategy to set up
such systems would be to first equilibrate a cubic water box (with a
suitable simple standard water model), then cut a hole into it and
insert the Si cluster, then do a little relaxation (still with the
simple point charge model) and then switch to reaxx. you should be
able to do this with LAMMPS, if you can easily create the Si cluster.
otherwise, you can use the topotools plugin in VMD with a little
scripting to merge the two structures.

https://sites.google.com/site/akohlmey/software/topotools/topotools-tutorial---various-tips-tricks#TOC-Combine-multiple-data-files-with-overlap-detection-and-removal

axel.

Ray might be able to look at why the error
is being triggered inside ReaxC.

Steve

Your script has a serious flaw: reax/c uses real units. Please change
the units, timestep and damping constants. I also hope you are not
intending to raise the temperature from 100 to 3000K in 10 steps:

fix 1 all nvt temp 100.0 3000.0 0.02 tchain 4
run 10

For the hbondchk failures, change the small n to big N on line 227 of
reaxc_forces.cpp will solve the problem.

Ray

diff reaxc_forces.cpp USER-REAXC/
227c227
< for( i = 0; i < N; ++i ) {

  1. Thanks everyone for your help

Date: Mon, 17 Feb 2014 09:29:40 -0700
Subject: Re: [lammps-users] create_atoms h2o
From: [email protected]…24…
To: [email protected]…4763…
CC: [email protected]…430…orge.net

Your script has a serious flaw: reax/c uses real units. Please change

  1. yes, I totally forgot that

the units, timestep and damping constants. I also hope you are not
intending to raise the temperature from 100 to 3000K in 10 steps:

fix 1 all nvt temp 100.0 3000.0 0.02 tchain 4
run 10

  1. no, just dummy numbers

For the hbondchk failures, change the small n to big N on line 227 of
reaxc_forces.cpp will solve the problem.

  1. it did solve the problem, thanks.