diff --git a/tools/reax/README.txt b/tools/reax/README.txt index 83ae92a2d..8fbc595ac 100644 --- a/tools/reax/README.txt +++ b/tools/reax/README.txt @@ -1,13 +1,17 @@ === ReaxFF tools === =============================== The programs in this folder can be used to analyze the output of simulations using the ReaxFF potentials; -mol_fra.c: analyzes the output of fix reax/bonds +mol_fra.c: reads the output of fix reax/bonds + and identifies fragments Compile it using a C compiler To test, run it with Cutoff.dic and bonds.reax Contact: Aidan Thompson -bondConnectCheck.f90: analyzes the output of fix reax/bonds. +bondConnectCheck.f90: reads the output of fix reax/bonds. + Does not do fragment analysis. + Compile it using FORTRAN compiler + To test, run it with bonds.reax Contact: Paul Liangliang Huang diff --git a/tools/reax/bondConnectCheck.f90 b/tools/reax/bondConnectCheck.f90 index e00836dfc..feff1ed3e 100644 --- a/tools/reax/bondConnectCheck.f90 +++ b/tools/reax/bondConnectCheck.f90 @@ -1,232 +1,232 @@ !# DEC.9, 2010 !# HLL !# NCSU !# !# This is a program to read the output from 'fix reax/bond', TPRD, Lammps -!# The output is saved into file "bonds.connect", where each image is divided +!# The output is saved into file "bonds.reax", where each image is divided !# into three parts: !# !# (1) Head, 7 Lines; !# (2) Body, No._of_atom Lines; !# (3) Tail, 1 Line !# !# The total number of images is related with the output frequence and number of iterations. !# In this case, it is "number of iteration+1". !# !# Each line in Body part is made up of the following parameters: !# id, type, nb, id_1, id_2, ... id_nb, mol, bo_1, bo_2, ... bo_nb, abo, nlp, q !# abo = atomic bond order !# nlp = number of lone pairs !# q = atomic charge !# !# PLEASE DOUBLE CHECK YOUR OWN LAMMPS INPUT SCRIPT & OUTPUT AND MAKE CORRESPONDING CHSNGES program main implicit none integer I, J, K, L integer image, natom integer headline, tailline integer id, atype, nb, bd1, bd2, bd3, bd4, mol double precision bo1, bo2, bo3, bo4, abo, nlp, q -open (unit=10, file='bonds.connect') +open (unit=10, file='bonds.reax') open (unit=20, file='N129.txt', status='unknown') open (unit=21, file='N133.txt', status='unknown') open (unit=22, file='N137.txt', status='unknown') open (unit=23, file='N141.txt', status='unknown') open (unit=24, file='N145.txt', status='unknown') open (unit=25, file='N149.txt', status='unknown') open (unit=26, file='N153.txt', status='unknown') open (unit=27, file='N157.txt', status='unknown') open (unit=30, file='reactionRecord.txt', status='unknown') !# Make changes accordingly. -image = 2000 +image = 1 headline = 7 tailline = 1 -natom = 160 +natom = 384 do I = 1, image+1 ! Skip the head part do J = 1, headline read(10,*) end do ! Each image has 'natom' lines do K = 1, natom ! read in the first three number each line to determine: ! (1) what type of atom it is, atype ! the correspondence in Lammps: 1-C, 2-H, 3-O, 4-N, 5-S ! (2) how many bonds it has, nb ! this 'nb' determines the following bond_link information & bond_order paramaters of the same line read(10,*) id, atype, nb ! TEST ! write(*,*) id, atype, nb if (atype .eq. 4) then backspace 10 ! Should have some easier way to replace this "IF", I am just toooo lazy. ! Thanks to the fact that the maximum number of bonds is 4. ^-^ !??? is it possible that nb = 0 ??? KEEP THAT IN MIND. if (nb.eq.0) then read(10,*) id, atype, nb, mol, abo, nlp, q if (id .eq. 129) then write(20, 200) id, atype, nb, mol, abo, nlp, q elseif (id .eq. 133) then write(21, 200) id, atype, nb, mol, abo, nlp, q elseif (id .eq. 137) then write(22, 200) id, atype, nb, mol, abo, nlp, q elseif (id .eq. 141) then write(23, 200) id, atype, nb, mol, abo, nlp, q elseif (id .eq. 145) then write(24, 200) id, atype, nb, mol, abo, nlp, q elseif (id .eq. 149) then write(25, 200) id, atype, nb, mol, abo, nlp, q elseif (id .eq. 153) then write(26, 200) id, atype, nb, mol, abo, nlp, q elseif (id .eq. 157) then write(27, 200) id, atype, nb, mol, abo, nlp, q 200 format(4I4, 3f14.3) endif ! If bd .ne. 3, it measn reaction is happening to Nitrogen atom. write (30, 300) I, id, atype, nb, mol, abo, nlp, q 300 format(5I4, 3f14.3) elseif (nb.eq.1) then read(10,*) id, atype, nb, bd1, mol, bo1, abo, nlp, q if (id .eq. 129) then write(20, 201) id, atype, nb, bd1, mol, bo1, abo, nlp, q elseif (id .eq. 133) then write(21, 201) id, atype, nb, bd1, mol, bo1, abo, nlp, q elseif (id .eq. 137) then write(22, 201) id, atype, nb, bd1, mol, bo1, abo, nlp, q elseif (id .eq. 141) then write(23, 201) id, atype, nb, bd1, mol, bo1, abo, nlp, q elseif (id .eq. 145) then write(24, 201) id, atype, nb, bd1, mol, bo1, abo, nlp, q elseif (id .eq. 149) then write(25, 201) id, atype, nb, bd1, mol, bo1, abo, nlp, q elseif (id .eq. 153) then write(26, 201) id, atype, nb, bd1, mol, bo1, abo, nlp, q elseif (id .eq. 157) then write(27, 201) id, atype, nb, bd1, mol, bo1, abo, nlp, q 201 format(5I4, 4f14.3) endif ! If bd .ne. 3, it measn reaction is happening to Nitrogen atom. write (30, 301) I, id, atype, nb, bd1, mol, bo1, abo, nlp, q 301 format(6I4, 4f14.3) elseif (nb.eq.2) then read(10,*) id, atype, nb, bd1, bd2, mol, bo1, bo2, abo, nlp, q if (id .eq. 129) then write(20, 202) id, atype, nb, bd1, bd2, mol, bo1, bo2, abo, nlp, q elseif (id .eq. 133) then write(21, 202) id, atype, nb, bd1, bd2, mol, bo1, bo2, abo, nlp, q elseif (id .eq. 137) then write(22, 202) id, atype, nb, bd1, bd2, mol, bo1, bo2, abo, nlp, q elseif (id .eq. 141) then write(23, 202) id, atype, nb, bd1, bd2, mol, bo1, bo2, abo, nlp, q elseif (id .eq. 145) then write(24, 202) id, atype, nb, bd1, bd2, mol, bo1, bo2, abo, nlp, q elseif (id .eq. 149) then write(25, 202) id, atype, nb, bd1, bd2, mol, bo1, bo2, abo, nlp, q elseif (id .eq. 153) then write(26, 202) id, atype, nb, bd1, bd2, mol, bo1, bo2, abo, nlp, q elseif (id .eq. 157) then write(27, 202) id, atype, nb, bd1, bd2, mol, bo1, bo2, abo, nlp, q 202 format(6I4, 5f14.3) endif ! If bd .ne. 3, it measn reaction is happening to Nitrogen atom. write (30, 302) I, id, atype, nb, bd1, bd2, mol, bo1, bo2, abo, nlp, q 302 format(7I4, 5f14.3) elseif (nb.eq.3) then read(10,*) id, atype, nb, bd1, bd2, bd3, mol, bo1, bo2, bo3, abo, nlp, q if (id .eq. 129) then write(20, 203) id, atype, nb, bd1, bd2, bd3, mol, bo1, bo2, bo3, abo, nlp, q elseif (id .eq. 133) then write(21, 203) id, atype, nb, bd1, bd2, bd3, mol, bo1, bo2, bo3, abo, nlp, q elseif (id .eq. 137) then write(22, 203) id, atype, nb, bd1, bd2, bd3, mol, bo1, bo2, bo3, abo, nlp, q elseif (id .eq. 141) then write(23, 203) id, atype, nb, bd1, bd2, bd3, mol, bo1, bo2, bo3, abo, nlp, q elseif (id .eq. 145) then write(24, 203) id, atype, nb, bd1, bd2, bd3, mol, bo1, bo2, bo3, abo, nlp, q elseif (id .eq. 149) then write(25, 203) id, atype, nb, bd1, bd2, bd3, mol, bo1, bo2, bo3, abo, nlp, q elseif (id .eq. 153) then write(26, 203) id, atype, nb, bd1, bd2, bd3, mol, bo1, bo2, bd3, abo, nlp, q elseif (id .eq. 157) then write(27, 203) id, atype, nb, bd1, bd2, bd3, mol, bo1, bo2, bo3, abo, nlp, q 203 format(7I4, 6f14.3) endif elseif (nb.eq.4) then read(10,*) id, atype, nb, bd1, bd2, bd3, bd4, mol, bo1, bo2, bo3, bo4, abo, nlp, q if (id .eq. 129) then write(20, 204) id, atype, nb, bd1, bd2, bd3, bd4, mol, bo1, bo2, bo3, bo4, abo, nlp, q elseif (id .eq. 133) then write(21, 204) id, atype, nb, bd1, bd2, bd3, bd4, mol, bo1, bo2, bo3, bo4, abo, nlp, q elseif (id .eq. 137) then write(22, 204) id, atype, nb, bd1, bd2, bd3, bd4, mol, bo1, bo2, bo3, bo4, abo, nlp, q elseif (id .eq. 141) then write(23, 204) id, atype, nb, bd1, bd2, bd3, bd4, mol, bo1, bo2, bo3, bo4, abo, nlp, q elseif (id .eq. 145) then write(24, 204) id, atype, nb, bd1, bd2, bd3, bd4, mol, bo1, bo2, bo3, bo4, abo, nlp, q elseif (id .eq. 149) then write(25, 204) id, atype, nb, bd1, bd2, bd3, bd4, mol, bo1, bo2, bo3, bo4, abo, nlp, q elseif (id .eq. 153) then write(26, 204) id, atype, nb, bd1, bd2, bd3, bd4, mol, bo1, bo2, bd3, bo4, abo, nlp, q elseif (id .eq. 157) then write(27, 204) id, atype, nb, bd1, bd2, bd3, bd4, mol, bo1, bo2, bo3, bo4, abo, nlp, q 204 format(8I4, 7f14.3) endif ! If bd .ne. 3, it measn reaction is happening to Nitrogen atom. write (30, 304) I, id, atype, nb, bd1, bd2, bd3, bd4, mol, bo1, bo2, bo3, bo4, abo, nlp, q 304 format(9I4, 7f14.3) ! Corresponding to "if (nb.eq.0) then " endif ! Corresponding to "if (atype .eq. 4) then" endif enddo do L =1,tailline read(10,*) enddo enddo end program main