add NWChem wrapper to client/server mode for AIMD
This commit is contained in:
@ -72,6 +72,7 @@ client or server code:
|
|||||||
examples/message
|
examples/message
|
||||||
examples/COUPLE/README
|
examples/COUPLE/README
|
||||||
examples/COUPLE/lammps_mc
|
examples/COUPLE/lammps_mc
|
||||||
|
examples/COUPLE/lammps_nwchem
|
||||||
examples/COUPLE/lammps_vasp :ul
|
examples/COUPLE/lammps_vasp :ul
|
||||||
|
|
||||||
The examples/message dir couples a client instance of LAMMPS to a
|
The examples/message dir couples a client instance of LAMMPS to a
|
||||||
@ -80,6 +81,10 @@ server instance of LAMMPS.
|
|||||||
The lammps_mc dir shows how to couple LAMMPS as a server to a simple
|
The lammps_mc dir shows how to couple LAMMPS as a server to a simple
|
||||||
Monte Carlo client code as the driver.
|
Monte Carlo client code as the driver.
|
||||||
|
|
||||||
|
The lammps_nwchem dir shows how to couple LAMMPS as a client code
|
||||||
|
running MD timestepping to NWChem acting as a server providing quantum
|
||||||
|
DFT forces, through a Python wrapper script on NWChem.
|
||||||
|
|
||||||
The lammps_vasp dir shows how to couple LAMMPS as a client code
|
The lammps_vasp dir shows how to couple LAMMPS as a client code
|
||||||
running MD timestepping to VASP acting as a server providing quantum
|
running MD timestepping to VASP acting as a server providing quantum
|
||||||
DFT forces, through a Python wrapper script on VASP.
|
DFT forces, through a Python wrapper script on VASP.
|
||||||
|
|||||||
@ -64,8 +64,9 @@ in this pseudo code is a pointer to an instance of the CSlib.
|
|||||||
|
|
||||||
See the src/MESSAGE/server_md.cpp and src/MESSAGE/fix_client_md.cpp
|
See the src/MESSAGE/server_md.cpp and src/MESSAGE/fix_client_md.cpp
|
||||||
files for details on how LAMMPS uses these messages. See the
|
files for details on how LAMMPS uses these messages. See the
|
||||||
examples/COUPLE/lammps_vasp/vasp_wrapper.py file for an example of how
|
examples/COUPLE/lammps_vasp/vasp_wrap.py or
|
||||||
a quantum code (VASP) can use these messages.
|
examples/COUPLE/lammps_nwchem/nwchem_wrap.py files for examples of how
|
||||||
|
a quantum code (VASP or NWChem) can use these messages.
|
||||||
|
|
||||||
The following pseudo-code uses these values, defined as enums.
|
The following pseudo-code uses these values, defined as enums.
|
||||||
|
|
||||||
|
|||||||
@ -6,23 +6,16 @@ codes or calling LAMMPS as a library. The examples are provided for
|
|||||||
demonstration purposes. The physics they calculate is too simple to
|
demonstration purposes. The physics they calculate is too simple to
|
||||||
model a realistic problem.
|
model a realistic problem.
|
||||||
|
|
||||||
|
In many of the examples included here, LAMMPS must first be built as a
|
||||||
|
library.
|
||||||
|
|
||||||
See these sections of the LAMMPS manaul for details:
|
See these sections of the LAMMPS manaul for details:
|
||||||
|
|
||||||
2.5 Building LAMMPS as a library (doc/Section_start.html#start_5)
|
Build LAMMPS as a library (doc/Build_basics.html)
|
||||||
6.10 Coupling LAMMPS to other codes (doc/Section_howto.html#howto_10)
|
Link LAMMPS as a library to another code (doc/Build_link.html)
|
||||||
6.29 Using LAMMPS in client/server mode (doc/Section_howto.html#howto_29)
|
Coupling LAMMPS to other codes (doc/Howto_couple.html)
|
||||||
|
Using LAMMPS in client/server mode (doc/Howto_client_server.html)
|
||||||
In all of the examples included here, LAMMPS must first be built as a
|
Library interface to LAMMPS (doc/Howto_library.html)
|
||||||
library. Basically, in the src dir you type one of
|
|
||||||
|
|
||||||
make mode=lib machine
|
|
||||||
make mode=shlib machine
|
|
||||||
|
|
||||||
to create the static library liblammps_machine.a or the shared library
|
|
||||||
liblammps_machine.so for your code to link against. A soft link
|
|
||||||
(liblammps.a or liblammps.so) is also created that points to the most
|
|
||||||
recently built static or shared library. Your code build can simply
|
|
||||||
use the soft link if you prefer.
|
|
||||||
|
|
||||||
The library interface to LAMMPS is in src/library.cpp. Routines can
|
The library interface to LAMMPS is in src/library.cpp. Routines can
|
||||||
be easily added to this file so an external program can perform the
|
be easily added to this file so an external program can perform the
|
||||||
@ -36,10 +29,12 @@ simple simple example of driver code calling LAMMPS as a lib
|
|||||||
multiple example of driver code calling multiple instances of LAMMPS
|
multiple example of driver code calling multiple instances of LAMMPS
|
||||||
lammps_mc client/server coupling of Monte Carlo client
|
lammps_mc client/server coupling of Monte Carlo client
|
||||||
with LAMMPS server for energy evaluation
|
with LAMMPS server for energy evaluation
|
||||||
|
lammps_nwchem client/server coupling of LAMMPS client with
|
||||||
|
NWChem quantum DFT as server for quantum forces
|
||||||
lammps_quest MD with quantum forces, coupling to Quest DFT code
|
lammps_quest MD with quantum forces, coupling to Quest DFT code
|
||||||
lammps_spparks grain-growth Monte Carlo with strain via MD,
|
lammps_spparks grain-growth Monte Carlo with strain via MD,
|
||||||
coupling to SPPARKS kinetic MC code
|
coupling to SPPARKS kinetic MC code
|
||||||
lammps_vasp client/server coupling of LAMMPS client with
|
lammps_vasp client/server coupling of LAMMPS client with
|
||||||
VASP quantum DFT as server for quantum forces
|
VASP quantum DFT as server for quantum forces
|
||||||
library collection of useful inter-code communication routines
|
library collection of useful inter-code communication routines
|
||||||
fortran a simple wrapper on the LAMMPS library API that
|
fortran a simple wrapper on the LAMMPS library API that
|
||||||
|
|||||||
197
examples/COUPLE/lammps_nwchem/README
Normal file
197
examples/COUPLE/lammps_nwchem/README
Normal file
@ -0,0 +1,197 @@
|
|||||||
|
Sample LAMMPS MD wrapper on NWChem via client/server coupling
|
||||||
|
|
||||||
|
See the MESSAGE package (doc/Section_messages.html#MESSAGE) and
|
||||||
|
Section_howto.html#howto10 for more details on how client/server
|
||||||
|
coupling works in LAMMPS.
|
||||||
|
|
||||||
|
In this dir, the nwchem_wrap.py is a wrapper on the NWChem electronic
|
||||||
|
structure code so it can work as a "server" code which LAMMPS drives
|
||||||
|
as a "client" code to perform ab initio MD. LAMMPS performs the MD
|
||||||
|
timestepping, sends NWChem a current set of coordinates each timestep,
|
||||||
|
NWChem computes forces and energy (and virial) and returns that info
|
||||||
|
to LAMMPS.
|
||||||
|
|
||||||
|
Messages are exchanged between NWChem and LAMMPS via a client/server
|
||||||
|
library (CSlib), which is included in the LAMMPS distribution in
|
||||||
|
lib/message. As explained below you can choose to exchange data
|
||||||
|
between the two programs either via files or sockets (ZMQ). If the
|
||||||
|
nwchem_wrap.py program became parallel, or the CSlib library calls were
|
||||||
|
integrated into NWChem directly, then data could also be exchanged via
|
||||||
|
MPI.
|
||||||
|
|
||||||
|
There are 2 examples provided in the planeware and ao_basis
|
||||||
|
sub-directories. See details below.
|
||||||
|
|
||||||
|
----------------
|
||||||
|
|
||||||
|
Build LAMMPS with its MESSAGE package installed:
|
||||||
|
|
||||||
|
See the Build extras doc page and its MESSAGE package
|
||||||
|
section for details.
|
||||||
|
|
||||||
|
CMake:
|
||||||
|
|
||||||
|
-D PKG_MESSAGE=yes # include the MESSAGE package
|
||||||
|
-D MESSAGE_ZMQ=value # build with ZeroMQ support, value = no (default) or yes
|
||||||
|
|
||||||
|
Traditional make:
|
||||||
|
|
||||||
|
cd lammps/lib/message
|
||||||
|
python Install.py -m -z # build CSlib with MPI and ZMQ support
|
||||||
|
cd lammps/src
|
||||||
|
make yes-message
|
||||||
|
make mpi
|
||||||
|
|
||||||
|
You can leave off the -z if you do not have ZMQ on your system.
|
||||||
|
|
||||||
|
----------------
|
||||||
|
|
||||||
|
Build the CSlib in a form usable by the nwchem_wrapper.py script:
|
||||||
|
|
||||||
|
% cd lammps/lib/message/cslib/src
|
||||||
|
% make shlib # build serial and parallel shared lib with ZMQ support
|
||||||
|
% make shlib zmq=no # build serial and parallel shared lib w/out ZMQ support
|
||||||
|
|
||||||
|
This will make a shared library versions of the CSlib, which Python
|
||||||
|
requires. Python must be able to find both the cslib.py script and
|
||||||
|
the libcsnompi.so library in your lammps/lib/message/cslib/src
|
||||||
|
directory. If it is not able to do this, you will get an error when
|
||||||
|
you run nwchem_wrapper.py.
|
||||||
|
|
||||||
|
You can do this by augmenting two environment variables, either from
|
||||||
|
the command line, or in your shell start-up script. Here is the
|
||||||
|
sample syntax for the csh or tcsh shells:
|
||||||
|
|
||||||
|
setenv PYTHONPATH ${PYTHONPATH}:/home/sjplimp/lammps/lib/message/cslib/src
|
||||||
|
setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:/home/sjplimp/lammps/lib/message/cslib/src
|
||||||
|
|
||||||
|
----------------
|
||||||
|
|
||||||
|
Prepare to use NWChem and the nwchem_wrap.py script
|
||||||
|
|
||||||
|
You can run the nwchem_wrap.py script as-is to test that the coupling
|
||||||
|
between it and LAMMPS is functional. This will use the included
|
||||||
|
nwchem_lammps.out files output by a previous NWChem run.
|
||||||
|
|
||||||
|
But note that the as-is version of nwchem_wrap.py will not attempt to
|
||||||
|
run NWChem.
|
||||||
|
|
||||||
|
To do this, you must edit the 1st nwchemcmd line at the top of
|
||||||
|
nwchem_wrapper.py to be the launch command needed to run NWChem on
|
||||||
|
your system. It can be a command to run NWChem in serial or in
|
||||||
|
parallel, e.g. an mpirun command. Then comment out the 2nd nwchemcmd
|
||||||
|
line immediately following it.
|
||||||
|
|
||||||
|
Ensure you have the necessary NWChem input file in this directory,
|
||||||
|
suitable for the NWChem calculation you want to perform.
|
||||||
|
|
||||||
|
Example input files are provided for both atom-centered AO basis sets
|
||||||
|
and plane-wave basis sets. Note that the NWChem template file should
|
||||||
|
be matched to the LAMMPS input script (# of atoms and atom types, box
|
||||||
|
size, etc).
|
||||||
|
|
||||||
|
Once you run NWChem yourself, the nwchem_lammps.out file will be
|
||||||
|
overwritten.
|
||||||
|
|
||||||
|
The syntax of the wrapper is:
|
||||||
|
nwchem_wrap.py file/zmq ao/pw input_template
|
||||||
|
* file/zmg = messaging mode, must match LAMMPS messaging mode
|
||||||
|
* ao/pw = basis set mode, selects between atom-centered and plane-wave
|
||||||
|
the input_template file must correspond to the appropriate basis set mode:
|
||||||
|
the "ao" mode supports the scf and dft modules in NWChem,
|
||||||
|
the "pw" mode supports the nwpw module.
|
||||||
|
* input_template = NWChem input file used as template, must include a
|
||||||
|
"geometry" block with the atoms in the simulation, dummy
|
||||||
|
xyz coordinates should be included (but are not used).
|
||||||
|
Atom ordering must match LAMMPS input.
|
||||||
|
|
||||||
|
During a simulation, the molecular orbitals from the previous timestep
|
||||||
|
will be used as the initial guess for the next NWChem calculation. If
|
||||||
|
a file named "nwchem_lammps.movecs" is in the directory the wrapper is
|
||||||
|
called from, these orbitals will be used as the initial guess orbitals
|
||||||
|
in the first step of the simulation.
|
||||||
|
|
||||||
|
----------------
|
||||||
|
|
||||||
|
Example directories
|
||||||
|
|
||||||
|
(1) planewave
|
||||||
|
|
||||||
|
Demonstrates coupling of the nwpw module in NWChem with LAMMPS. Only fully
|
||||||
|
periodic boundary conditions and orthogonal simulation boxes are currently
|
||||||
|
supported by the wrapper. The included files provide an example run using a
|
||||||
|
2 atom unit cell of tungsten.
|
||||||
|
|
||||||
|
Files:
|
||||||
|
* data.W LAMMPS input with geometry information
|
||||||
|
* in.client.W LAMMPS simulation input
|
||||||
|
* log.client.output LAMMPS simulation output
|
||||||
|
* w.nw NWChem template input file
|
||||||
|
* nwchem_lammps.out NWChem output
|
||||||
|
|
||||||
|
(2) ao_basis
|
||||||
|
|
||||||
|
Demonstrates coupling of the scf (or dft) modules in NWChem with
|
||||||
|
LAMMPS. Only fully aperiodic boundary conditions are currently
|
||||||
|
supported by the wrapper. The included files provide an example run
|
||||||
|
using a single water molecule.
|
||||||
|
|
||||||
|
Files:
|
||||||
|
* data.h2o LAMMPS input with geometry information
|
||||||
|
* in.client.h2o LAMMPS simulation input
|
||||||
|
* log.client.output LAMMPS simulation output
|
||||||
|
* h2o.nw NWChem template input file
|
||||||
|
* nwchem_lammps.out NWChem output
|
||||||
|
|
||||||
|
As noted above, you can run the nwchem_wrap.py script as-is to test that
|
||||||
|
the coupling between it and LAMMPS is functional. This will use the included
|
||||||
|
nwchem_lammps.out files.
|
||||||
|
|
||||||
|
----------------
|
||||||
|
|
||||||
|
To run in client/server mode:
|
||||||
|
|
||||||
|
NOTE: The nwchem_wrap.py script must be run with Python version 2, not
|
||||||
|
3. This is because it used the CSlib python wrapper, which only
|
||||||
|
supports version 2. We plan to upgrade CSlib to support Python 3.
|
||||||
|
|
||||||
|
Both the client (LAMMPS) and server (nwchem_wrap.py) must use the same
|
||||||
|
messaging mode, namely file or zmq. This is an argument to the
|
||||||
|
nwchem_wrap.py code; it can be selected by setting the "mode" variable
|
||||||
|
when you run LAMMPS. The default mode = file.
|
||||||
|
|
||||||
|
Here we assume LAMMPS was built to run in parallel, and the MESSAGE
|
||||||
|
package was installed with socket (ZMQ) support. This means either of
|
||||||
|
the messaging modes can be used and LAMMPS can be run in serial or
|
||||||
|
parallel. The nwchem_wrap.py code is always run in serial, but it
|
||||||
|
launches NWChem from Python via an mpirun command which can run NWChem
|
||||||
|
itself in parallel.
|
||||||
|
|
||||||
|
When you run, the server should print out thermodynamic info every
|
||||||
|
timestep which corresponds to the forces and virial computed by NWChem.
|
||||||
|
NWChem will also generate output files each timestep. Output files from
|
||||||
|
previous timesteps are archived in a "nwchem_logs" directory.
|
||||||
|
|
||||||
|
The examples below are commands you should use in two different
|
||||||
|
terminal windows. The order of the two commands (client or server
|
||||||
|
launch) does not matter. You can run them both in the same window if
|
||||||
|
you append a "&" character to the first one to run it in the
|
||||||
|
background.
|
||||||
|
|
||||||
|
--------------
|
||||||
|
|
||||||
|
File mode of messaging:
|
||||||
|
|
||||||
|
% mpirun -np 1 lmp_mpi -v mode file < in.client.W
|
||||||
|
% python nwchem_wrap.py file pw w.nw
|
||||||
|
|
||||||
|
% mpirun -np 2 lmp_mpi -v mode file < in.client.h2o
|
||||||
|
% python nwchem_wrap.py file ao h2o_dft.nw
|
||||||
|
|
||||||
|
ZMQ mode of messaging:
|
||||||
|
|
||||||
|
% mpirun -np 1 lmp_mpi -v mode zmq < in.client.W
|
||||||
|
% python nwchem_wrap.py zmq pw w.nw
|
||||||
|
|
||||||
|
% mpirun -np 2 lmp_mpi -v mode zmq < in.client.h2o
|
||||||
|
% python nwchem_wrap.py zmq ao h2o_dft.nw
|
||||||
20
examples/COUPLE/lammps_nwchem/ao_basis/data.h2o
Normal file
20
examples/COUPLE/lammps_nwchem/ao_basis/data.h2o
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
LAMMPS H2O data file
|
||||||
|
|
||||||
|
3 atoms
|
||||||
|
|
||||||
|
2 atom types
|
||||||
|
|
||||||
|
-10.0 10.0 xlo xhi
|
||||||
|
-10.0 10.0 ylo yhi
|
||||||
|
-10.0 10.0 zlo zhi
|
||||||
|
|
||||||
|
Masses
|
||||||
|
|
||||||
|
1 15.994915008544922
|
||||||
|
2 1.0078250169754028
|
||||||
|
|
||||||
|
Atoms
|
||||||
|
|
||||||
|
1 1 0.0 0.0 0.0
|
||||||
|
2 2 0.0 0.756723 -0.585799
|
||||||
|
3 2 0.0 -0.756723 -0.585799
|
||||||
25
examples/COUPLE/lammps_nwchem/ao_basis/h2o.nw
Normal file
25
examples/COUPLE/lammps_nwchem/ao_basis/h2o.nw
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
echo
|
||||||
|
|
||||||
|
memory global 40 mb stack 23 mb heap 5 mb
|
||||||
|
|
||||||
|
geometry units angstrom noautosym
|
||||||
|
O 0.0 0.0 0.0
|
||||||
|
H 1.0 0.5 0.0
|
||||||
|
H -1.0 0.5 0.0
|
||||||
|
end
|
||||||
|
|
||||||
|
basis
|
||||||
|
O library 6-31g*
|
||||||
|
H library 6-31g*
|
||||||
|
end
|
||||||
|
|
||||||
|
scf
|
||||||
|
maxiter 100
|
||||||
|
end
|
||||||
|
|
||||||
|
#dft
|
||||||
|
# xc b3lyp
|
||||||
|
#end
|
||||||
|
|
||||||
|
task scf gradient
|
||||||
|
#task dft gradient
|
||||||
33
examples/COUPLE/lammps_nwchem/ao_basis/in.client.h2o
Normal file
33
examples/COUPLE/lammps_nwchem/ao_basis/in.client.h2o
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
# H2O with NWChem
|
||||||
|
|
||||||
|
variable mode index file
|
||||||
|
|
||||||
|
if "${mode} == file" then &
|
||||||
|
"message client md file tmp.couple" &
|
||||||
|
elif "${mode} == zmq" &
|
||||||
|
"message client md zmq localhost:5555" &
|
||||||
|
|
||||||
|
variable x index 1
|
||||||
|
variable y index 1
|
||||||
|
variable z index 1
|
||||||
|
|
||||||
|
units metal
|
||||||
|
atom_style atomic
|
||||||
|
atom_modify sort 0 0.0 map yes
|
||||||
|
|
||||||
|
boundary m m m
|
||||||
|
read_data data.h2o
|
||||||
|
|
||||||
|
replicate $x $y $z
|
||||||
|
|
||||||
|
velocity all create 300.0 87287 loop geom
|
||||||
|
|
||||||
|
neighbor 0.3 bin
|
||||||
|
neigh_modify delay 0 every 10 check no
|
||||||
|
|
||||||
|
fix 1 all nve
|
||||||
|
fix 2 all client/md
|
||||||
|
fix_modify 2 energy yes
|
||||||
|
|
||||||
|
thermo 1
|
||||||
|
run 3
|
||||||
77
examples/COUPLE/lammps_nwchem/ao_basis/log.client.output
Normal file
77
examples/COUPLE/lammps_nwchem/ao_basis/log.client.output
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
LAMMPS (18 Sep 2018)
|
||||||
|
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:87)
|
||||||
|
using 1 OpenMP thread(s) per MPI task
|
||||||
|
# H2O with NWChem
|
||||||
|
|
||||||
|
variable mode index file
|
||||||
|
|
||||||
|
if "${mode} == file" then "message client md file tmp.couple" elif "${mode} == zmq" "message client md zmq localhost:5555"
|
||||||
|
message client md zmq localhost:5555
|
||||||
|
variable x index 1
|
||||||
|
variable y index 1
|
||||||
|
variable z index 1
|
||||||
|
|
||||||
|
units metal
|
||||||
|
atom_style atomic
|
||||||
|
atom_modify sort 0 0.0 map yes
|
||||||
|
|
||||||
|
boundary m m m
|
||||||
|
read_data data.h2o
|
||||||
|
orthogonal box = (-10 -10 -10) to (10 10 10)
|
||||||
|
1 by 1 by 1 MPI processor grid
|
||||||
|
reading atoms ...
|
||||||
|
3 atoms
|
||||||
|
|
||||||
|
replicate $x $y $z
|
||||||
|
replicate 1 $y $z
|
||||||
|
replicate 1 1 $z
|
||||||
|
replicate 1 1 1
|
||||||
|
orthogonal box = (-10 -10 -10) to (10 10 10)
|
||||||
|
1 by 1 by 1 MPI processor grid
|
||||||
|
3 atoms
|
||||||
|
Time spent = 5.8016e-05 secs
|
||||||
|
|
||||||
|
velocity all create 300.0 87287 loop geom
|
||||||
|
|
||||||
|
neighbor 0.3 bin
|
||||||
|
neigh_modify delay 0 every 10 check no
|
||||||
|
|
||||||
|
fix 1 all nve
|
||||||
|
fix 2 all client/md
|
||||||
|
fix_modify 2 energy yes
|
||||||
|
|
||||||
|
thermo 1
|
||||||
|
run 3
|
||||||
|
Per MPI rank memory allocation (min/avg/max) = 0.02705 | 0.02705 | 0.02705 Mbytes
|
||||||
|
Step Temp E_pair E_mol TotEng Press Volume
|
||||||
|
0 300 0 0 -2068.2746 10.354878 8000
|
||||||
|
1 368.98118 0 0 -2068.2567 12.735851 8000
|
||||||
|
2 459.96278 0 0 -2068.2332 15.876195 8000
|
||||||
|
3 572.94479 0 0 -2068.204 19.775912 8000
|
||||||
|
Loop time of 0.0174769 on 1 procs for 3 steps with 3 atoms
|
||||||
|
|
||||||
|
Performance: 14.831 ns/day, 1.618 hours/ns, 171.655 timesteps/s
|
||||||
|
8.4% CPU use with 1 MPI tasks x 1 OpenMP threads
|
||||||
|
|
||||||
|
MPI task timing breakdown:
|
||||||
|
Section | min time | avg time | max time |%varavg| %total
|
||||||
|
---------------------------------------------------------------
|
||||||
|
Pair | 0 | 0 | 0 | 0.0 | 0.00
|
||||||
|
Neigh | 0 | 0 | 0 | 0.0 | 0.00
|
||||||
|
Comm | 2.555e-06 | 2.555e-06 | 2.555e-06 | 0.0 | 0.01
|
||||||
|
Output | 8.4169e-05 | 8.4169e-05 | 8.4169e-05 | 0.0 | 0.48
|
||||||
|
Modify | 0.017383 | 0.017383 | 0.017383 | 0.0 | 99.46
|
||||||
|
Other | | 7.694e-06 | | | 0.04
|
||||||
|
|
||||||
|
Nlocal: 3 ave 3 max 3 min
|
||||||
|
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||||
|
Nghost: 0 ave 0 max 0 min
|
||||||
|
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||||
|
Neighs: 0 ave 0 max 0 min
|
||||||
|
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||||
|
|
||||||
|
Total # of neighbors = 0
|
||||||
|
Ave neighs/atom = 0
|
||||||
|
Neighbor list builds = 0
|
||||||
|
Dangerous builds not checked
|
||||||
|
Total wall time: 0:00:01
|
||||||
622
examples/COUPLE/lammps_nwchem/ao_basis/nwchem_lammps.out
Normal file
622
examples/COUPLE/lammps_nwchem/ao_basis/nwchem_lammps.out
Normal file
@ -0,0 +1,622 @@
|
|||||||
|
argument 1 = nwchem_lammps.nw
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
============================== echo of input deck ==============================
|
||||||
|
echo
|
||||||
|
|
||||||
|
memory global 40 mb stack 23 mb heap 5 mb
|
||||||
|
|
||||||
|
geometry units angstrom noautosym
|
||||||
|
O 0 0 0
|
||||||
|
H 0 0.756723 -0.585799
|
||||||
|
H 0 -0.756723 -0.585799
|
||||||
|
end
|
||||||
|
|
||||||
|
scf
|
||||||
|
vectors input nwchem_lammps.movecs
|
||||||
|
end
|
||||||
|
|
||||||
|
dft
|
||||||
|
vectors input nwchem_lammps.movecs
|
||||||
|
end
|
||||||
|
|
||||||
|
basis
|
||||||
|
O library 6-31g*
|
||||||
|
H library 6-31g*
|
||||||
|
end
|
||||||
|
|
||||||
|
scf
|
||||||
|
maxiter 100
|
||||||
|
end
|
||||||
|
|
||||||
|
task scf gradient
|
||||||
|
|
||||||
|
================================================================================
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Northwest Computational Chemistry Package (NWChem) 6.8
|
||||||
|
------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
Environmental Molecular Sciences Laboratory
|
||||||
|
Pacific Northwest National Laboratory
|
||||||
|
Richland, WA 99352
|
||||||
|
|
||||||
|
Copyright (c) 1994-2017
|
||||||
|
Pacific Northwest National Laboratory
|
||||||
|
Battelle Memorial Institute
|
||||||
|
|
||||||
|
NWChem is an open-source computational chemistry package
|
||||||
|
distributed under the terms of the
|
||||||
|
Educational Community License (ECL) 2.0
|
||||||
|
A copy of the license is included with this distribution
|
||||||
|
in the LICENSE.TXT file
|
||||||
|
|
||||||
|
ACKNOWLEDGMENT
|
||||||
|
--------------
|
||||||
|
|
||||||
|
This software and its documentation were developed at the
|
||||||
|
EMSL at Pacific Northwest National Laboratory, a multiprogram
|
||||||
|
national laboratory, operated for the U.S. Department of Energy
|
||||||
|
by Battelle under Contract Number DE-AC05-76RL01830. Support
|
||||||
|
for this work was provided by the Department of Energy Office
|
||||||
|
of Biological and Environmental Research, Office of Basic
|
||||||
|
Energy Sciences, and the Office of Advanced Scientific Computing.
|
||||||
|
|
||||||
|
|
||||||
|
Job information
|
||||||
|
---------------
|
||||||
|
|
||||||
|
hostname = mcq
|
||||||
|
program = /usr/bin/nwchem
|
||||||
|
date = Mon Sep 23 16:28:27 2019
|
||||||
|
|
||||||
|
compiled = Wed_Aug_15_19:14:19_2018
|
||||||
|
source = /home/edo/debichem-team/nwchem/nwchem-6.8.1
|
||||||
|
nwchem branch = 6.8.1
|
||||||
|
nwchem revision = v6.8-133-ge032219
|
||||||
|
ga revision = 5.6.5
|
||||||
|
use scalapack = T
|
||||||
|
input = nwchem_lammps.nw
|
||||||
|
prefix = nwchem_lammps.
|
||||||
|
data base = ./nwchem_lammps.db
|
||||||
|
status = restart
|
||||||
|
nproc = 1
|
||||||
|
time left = -1s
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Memory information
|
||||||
|
------------------
|
||||||
|
|
||||||
|
heap = 655358 doubles = 5.0 Mbytes
|
||||||
|
stack = 3014651 doubles = 23.0 Mbytes
|
||||||
|
global = 5242880 doubles = 40.0 Mbytes (distinct from heap & stack)
|
||||||
|
total = 8912889 doubles = 68.0 Mbytes
|
||||||
|
verify = yes
|
||||||
|
hardfail = no
|
||||||
|
|
||||||
|
|
||||||
|
Directory information
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
0 permanent = .
|
||||||
|
0 scratch = .
|
||||||
|
|
||||||
|
|
||||||
|
Previous task information
|
||||||
|
-------------------------
|
||||||
|
|
||||||
|
Theory = scf
|
||||||
|
Operation = gradient
|
||||||
|
Status = ok
|
||||||
|
Qmmm = F
|
||||||
|
Ignore = F
|
||||||
|
|
||||||
|
|
||||||
|
Geometries in the database
|
||||||
|
--------------------------
|
||||||
|
|
||||||
|
Name Natoms Last Modified
|
||||||
|
-------------------------------- ------ ------------------------
|
||||||
|
1 geometry 3 Mon Sep 23 16:26:29 2019
|
||||||
|
|
||||||
|
The geometry named "geometry" is the default for restart
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Basis sets in the database
|
||||||
|
--------------------------
|
||||||
|
|
||||||
|
Name Natoms Last Modified
|
||||||
|
-------------------------------- ------ ------------------------
|
||||||
|
1 ao basis 2 Mon Sep 23 16:26:29 2019
|
||||||
|
|
||||||
|
The basis set named "ao basis" is the default AO basis for restart
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
NWChem Input Module
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Scaling coordinates for geometry "geometry" by 1.889725989
|
||||||
|
(inverse scale = 0.529177249)
|
||||||
|
|
||||||
|
|
||||||
|
------
|
||||||
|
auto-z
|
||||||
|
------
|
||||||
|
|
||||||
|
|
||||||
|
Geometry "geometry" -> ""
|
||||||
|
-------------------------
|
||||||
|
|
||||||
|
Output coordinates in angstroms (scale by 1.889725989 to convert to a.u.)
|
||||||
|
|
||||||
|
No. Tag Charge X Y Z
|
||||||
|
---- ---------------- ---------- -------------- -------------- --------------
|
||||||
|
1 O 8.0000 0.00000000 0.00000000 0.11715980
|
||||||
|
2 H 1.0000 0.00000000 0.75672300 -0.46863920
|
||||||
|
3 H 1.0000 0.00000000 -0.75672300 -0.46863920
|
||||||
|
|
||||||
|
Atomic Mass
|
||||||
|
-----------
|
||||||
|
|
||||||
|
O 15.994910
|
||||||
|
H 1.007825
|
||||||
|
|
||||||
|
|
||||||
|
Effective nuclear repulsion energy (a.u.) 9.1972032776
|
||||||
|
|
||||||
|
Nuclear Dipole moment (a.u.)
|
||||||
|
----------------------------
|
||||||
|
X Y Z
|
||||||
|
---------------- ---------------- ----------------
|
||||||
|
0.0000000000 0.0000000000 0.0000000000
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Z-matrix (autoz)
|
||||||
|
--------
|
||||||
|
|
||||||
|
Units are Angstrom for bonds and degrees for angles
|
||||||
|
|
||||||
|
Type Name I J K L M Value
|
||||||
|
----------- -------- ----- ----- ----- ----- ----- ----------
|
||||||
|
1 Stretch 1 2 0.95697
|
||||||
|
2 Stretch 1 3 0.95697
|
||||||
|
3 Bend 2 1 3 104.51122
|
||||||
|
|
||||||
|
|
||||||
|
XYZ format geometry
|
||||||
|
-------------------
|
||||||
|
3
|
||||||
|
geometry
|
||||||
|
O 0.00000000 0.00000000 0.11715980
|
||||||
|
H 0.00000000 0.75672300 -0.46863920
|
||||||
|
H 0.00000000 -0.75672300 -0.46863920
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
internuclear distances
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
center one | center two | atomic units | angstroms
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
2 H | 1 O | 1.80841 | 0.95697
|
||||||
|
3 H | 1 O | 1.80841 | 0.95697
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
number of included internuclear distances: 2
|
||||||
|
==============================================================================
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
internuclear angles
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
center 1 | center 2 | center 3 | degrees
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
2 H | 1 O | 3 H | 104.51
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
number of included internuclear angles: 1
|
||||||
|
==============================================================================
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Basis "ao basis" -> "" (cartesian)
|
||||||
|
-----
|
||||||
|
O (Oxygen)
|
||||||
|
----------
|
||||||
|
Exponent Coefficients
|
||||||
|
-------------- ---------------------------------------------------------
|
||||||
|
1 S 5.48467170E+03 0.001831
|
||||||
|
1 S 8.25234950E+02 0.013950
|
||||||
|
1 S 1.88046960E+02 0.068445
|
||||||
|
1 S 5.29645000E+01 0.232714
|
||||||
|
1 S 1.68975700E+01 0.470193
|
||||||
|
1 S 5.79963530E+00 0.358521
|
||||||
|
|
||||||
|
2 S 1.55396160E+01 -0.110778
|
||||||
|
2 S 3.59993360E+00 -0.148026
|
||||||
|
2 S 1.01376180E+00 1.130767
|
||||||
|
|
||||||
|
3 P 1.55396160E+01 0.070874
|
||||||
|
3 P 3.59993360E+00 0.339753
|
||||||
|
3 P 1.01376180E+00 0.727159
|
||||||
|
|
||||||
|
4 S 2.70005800E-01 1.000000
|
||||||
|
|
||||||
|
5 P 2.70005800E-01 1.000000
|
||||||
|
|
||||||
|
6 D 8.00000000E-01 1.000000
|
||||||
|
|
||||||
|
H (Hydrogen)
|
||||||
|
------------
|
||||||
|
Exponent Coefficients
|
||||||
|
-------------- ---------------------------------------------------------
|
||||||
|
1 S 1.87311370E+01 0.033495
|
||||||
|
1 S 2.82539370E+00 0.234727
|
||||||
|
1 S 6.40121700E-01 0.813757
|
||||||
|
|
||||||
|
2 S 1.61277800E-01 1.000000
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Summary of "ao basis" -> "" (cartesian)
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
Tag Description Shells Functions and Types
|
||||||
|
---------------- ------------------------------ ------ ---------------------
|
||||||
|
O 6-31g* 6 15 3s2p1d
|
||||||
|
H 6-31g* 2 2 2s
|
||||||
|
|
||||||
|
|
||||||
|
NWChem SCF Module
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
ao basis = "ao basis"
|
||||||
|
functions = 19
|
||||||
|
atoms = 3
|
||||||
|
closed shells = 5
|
||||||
|
open shells = 0
|
||||||
|
charge = 0.00
|
||||||
|
wavefunction = RHF
|
||||||
|
input vectors = ./nwchem_lammps.movecs
|
||||||
|
output vectors = ./nwchem_lammps.movecs
|
||||||
|
use symmetry = F
|
||||||
|
symmetry adapt = F
|
||||||
|
|
||||||
|
|
||||||
|
Summary of "ao basis" -> "ao basis" (cartesian)
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
Tag Description Shells Functions and Types
|
||||||
|
---------------- ------------------------------ ------ ---------------------
|
||||||
|
O 6-31g* 6 15 3s2p1d
|
||||||
|
H 6-31g* 2 2 2s
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Forming initial guess at 0.0s
|
||||||
|
|
||||||
|
|
||||||
|
Loading old vectors from job with title :
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Starting SCF solution at 0.0s
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
----------------------------------------------
|
||||||
|
Quadratically convergent ROHF
|
||||||
|
|
||||||
|
Convergence threshold : 1.000E-04
|
||||||
|
Maximum no. of iterations : 100
|
||||||
|
Final Fock-matrix accuracy: 1.000E-07
|
||||||
|
----------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
#quartets = 1.540D+03 #integrals = 8.874D+03 #direct = 0.0% #cached =100.0%
|
||||||
|
|
||||||
|
|
||||||
|
Integral file = ./nwchem_lammps.aoints.0
|
||||||
|
Record size in doubles = 65536 No. of integs per rec = 43688
|
||||||
|
Max. records in memory = 2 Max. records in file = 326674
|
||||||
|
No. of bits per label = 8 No. of bits per value = 64
|
||||||
|
|
||||||
|
|
||||||
|
iter energy gnorm gmax time
|
||||||
|
----- ------------------- --------- --------- --------
|
||||||
|
1 -75.9732571733 7.14D-01 3.37D-01 0.3
|
||||||
|
2 -76.0055117003 3.10D-01 1.79D-01 0.3
|
||||||
|
3 -76.0098071888 1.15D-01 5.21D-02 0.3
|
||||||
|
4 -76.0105377099 2.55D-03 9.57D-04 0.3
|
||||||
|
5 -76.0105386346 9.48D-06 3.52D-06 0.3
|
||||||
|
|
||||||
|
|
||||||
|
Final RHF results
|
||||||
|
------------------
|
||||||
|
|
||||||
|
Total SCF energy = -76.010538634624
|
||||||
|
One-electron energy = -123.058850386783
|
||||||
|
Two-electron energy = 37.851108474513
|
||||||
|
Nuclear repulsion energy = 9.197203277646
|
||||||
|
|
||||||
|
Time for solution = 0.1s
|
||||||
|
|
||||||
|
|
||||||
|
Final eigenvalues
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
1
|
||||||
|
1 -20.5603
|
||||||
|
2 -1.3419
|
||||||
|
3 -0.7071
|
||||||
|
4 -0.5711
|
||||||
|
5 -0.4979
|
||||||
|
6 0.2108
|
||||||
|
7 0.3042
|
||||||
|
8 1.0227
|
||||||
|
9 1.1318
|
||||||
|
10 1.1678
|
||||||
|
11 1.1719
|
||||||
|
12 1.3809
|
||||||
|
13 1.4341
|
||||||
|
14 2.0201
|
||||||
|
15 2.0337
|
||||||
|
|
||||||
|
ROHF Final Molecular Orbital Analysis
|
||||||
|
-------------------------------------
|
||||||
|
|
||||||
|
Vector 2 Occ=2.000000D+00 E=-1.341930D+00
|
||||||
|
MO Center= -7.7D-08, 1.6D-07, -5.6D-02, r^2= 5.0D-01
|
||||||
|
Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function
|
||||||
|
----- ------------ --------------- ----- ------------ ---------------
|
||||||
|
2 0.475861 1 O s 6 0.439201 1 O s
|
||||||
|
1 -0.209676 1 O s
|
||||||
|
|
||||||
|
Vector 3 Occ=2.000000D+00 E=-7.070591D-01
|
||||||
|
MO Center= 5.8D-08, -1.2D-07, -1.0D-01, r^2= 7.7D-01
|
||||||
|
Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function
|
||||||
|
----- ------------ --------------- ----- ------------ ---------------
|
||||||
|
4 0.507651 1 O py 8 0.306488 1 O py
|
||||||
|
16 0.230979 2 H s 18 -0.230979 3 H s
|
||||||
|
|
||||||
|
Vector 4 Occ=2.000000D+00 E=-5.710712D-01
|
||||||
|
MO Center= 6.9D-07, -2.0D-07, 1.7D-01, r^2= 6.9D-01
|
||||||
|
Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function
|
||||||
|
----- ------------ --------------- ----- ------------ ---------------
|
||||||
|
5 0.555446 1 O pz 9 0.403175 1 O pz
|
||||||
|
6 0.325535 1 O s 2 0.164591 1 O s
|
||||||
|
|
||||||
|
Vector 5 Occ=2.000000D+00 E=-4.979251D-01
|
||||||
|
MO Center= -9.5D-08, -7.1D-08, 9.7D-02, r^2= 6.0D-01
|
||||||
|
Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function
|
||||||
|
----- ------------ --------------- ----- ------------ ---------------
|
||||||
|
3 0.639615 1 O px 7 0.511470 1 O px
|
||||||
|
|
||||||
|
Vector 6 Occ=0.000000D+00 E= 2.108019D-01
|
||||||
|
MO Center= -5.7D-07, 1.0D-06, -6.5D-01, r^2= 2.6D+00
|
||||||
|
Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function
|
||||||
|
----- ------------ --------------- ----- ------------ ---------------
|
||||||
|
6 1.415545 1 O s 17 -1.041449 2 H s
|
||||||
|
19 -1.041447 3 H s 9 -0.508218 1 O pz
|
||||||
|
5 -0.217054 1 O pz
|
||||||
|
|
||||||
|
Vector 7 Occ=0.000000D+00 E= 3.042327D-01
|
||||||
|
MO Center= -1.9D-09, -9.8D-07, -6.2D-01, r^2= 2.7D+00
|
||||||
|
Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function
|
||||||
|
----- ------------ --------------- ----- ------------ ---------------
|
||||||
|
17 1.395012 2 H s 19 -1.395014 3 H s
|
||||||
|
8 -0.833805 1 O py 4 -0.329272 1 O py
|
||||||
|
|
||||||
|
Vector 8 Occ=0.000000D+00 E= 1.022735D+00
|
||||||
|
MO Center= -1.1D-10, 6.2D-07, -4.7D-02, r^2= 1.4D+00
|
||||||
|
Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function
|
||||||
|
----- ------------ --------------- ----- ------------ ---------------
|
||||||
|
16 0.838912 2 H s 18 -0.838911 3 H s
|
||||||
|
8 -0.662620 1 O py 17 -0.459236 2 H s
|
||||||
|
19 0.459235 3 H s 14 -0.343167 1 O dyz
|
||||||
|
|
||||||
|
Vector 9 Occ=0.000000D+00 E= 1.131842D+00
|
||||||
|
MO Center= 2.2D-07, 3.1D-07, 2.0D-01, r^2= 1.6D+00
|
||||||
|
Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function
|
||||||
|
----- ------------ --------------- ----- ------------ ---------------
|
||||||
|
6 1.636696 1 O s 2 -0.921950 1 O s
|
||||||
|
9 0.708679 1 O pz 16 0.548799 2 H s
|
||||||
|
18 0.548800 3 H s 17 -0.474050 2 H s
|
||||||
|
19 -0.474049 3 H s 5 -0.419243 1 O pz
|
||||||
|
10 -0.387486 1 O dxx 15 -0.318053 1 O dzz
|
||||||
|
|
||||||
|
Vector 10 Occ=0.000000D+00 E= 1.167786D+00
|
||||||
|
MO Center= 2.2D-05, 5.1D-09, 1.1D-01, r^2= 1.1D+00
|
||||||
|
Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function
|
||||||
|
----- ------------ --------------- ----- ------------ ---------------
|
||||||
|
7 -1.036049 1 O px 3 0.962745 1 O px
|
||||||
|
|
||||||
|
Vector 11 Occ=0.000000D+00 E= 1.171944D+00
|
||||||
|
MO Center= -2.2D-05, -4.7D-07, -3.9D-02, r^2= 1.1D+00
|
||||||
|
Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function
|
||||||
|
----- ------------ --------------- ----- ------------ ---------------
|
||||||
|
5 0.761007 1 O pz 16 0.661205 2 H s
|
||||||
|
18 0.661206 3 H s 6 -0.462694 1 O s
|
||||||
|
9 -0.370404 1 O pz 17 -0.357353 2 H s
|
||||||
|
19 -0.357353 3 H s 13 0.249348 1 O dyy
|
||||||
|
|
||||||
|
Vector 12 Occ=0.000000D+00 E= 1.380937D+00
|
||||||
|
MO Center= -2.5D-09, 2.4D-07, 5.7D-02, r^2= 1.4D+00
|
||||||
|
Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function
|
||||||
|
----- ------------ --------------- ----- ------------ ---------------
|
||||||
|
8 1.537091 1 O py 4 -1.037376 1 O py
|
||||||
|
17 -0.915091 2 H s 19 0.915090 3 H s
|
||||||
|
|
||||||
|
Vector 13 Occ=0.000000D+00 E= 1.434077D+00
|
||||||
|
MO Center= 5.4D-08, -5.6D-07, -3.9D-01, r^2= 1.4D+00
|
||||||
|
Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function
|
||||||
|
----- ------------ --------------- ----- ------------ ---------------
|
||||||
|
6 3.574401 1 O s 2 -1.418426 1 O s
|
||||||
|
9 -1.174649 1 O pz 17 -0.784923 2 H s
|
||||||
|
19 -0.784925 3 H s 13 -0.644454 1 O dyy
|
||||||
|
5 0.506381 1 O pz 15 -0.402328 1 O dzz
|
||||||
|
16 -0.323132 2 H s 18 -0.323132 3 H s
|
||||||
|
|
||||||
|
Vector 14 Occ=0.000000D+00 E= 2.020054D+00
|
||||||
|
MO Center= -2.1D-08, 1.2D-08, 1.6D-01, r^2= 6.2D-01
|
||||||
|
Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function
|
||||||
|
----- ------------ --------------- ----- ------------ ---------------
|
||||||
|
15 1.008815 1 O dzz 13 -0.580616 1 O dyy
|
||||||
|
10 -0.366779 1 O dxx 6 -0.227333 1 O s
|
||||||
|
|
||||||
|
Vector 15 Occ=0.000000D+00 E= 2.033720D+00
|
||||||
|
MO Center= -5.0D-08, 6.6D-08, 1.2D-01, r^2= 6.1D-01
|
||||||
|
Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function
|
||||||
|
----- ------------ --------------- ----- ------------ ---------------
|
||||||
|
11 1.732051 1 O dxy
|
||||||
|
|
||||||
|
|
||||||
|
center of mass
|
||||||
|
--------------
|
||||||
|
x = 0.00000000 y = 0.00000000 z = 0.09751017
|
||||||
|
|
||||||
|
moments of inertia (a.u.)
|
||||||
|
------------------
|
||||||
|
6.315433940446 0.000000000000 0.000000000000
|
||||||
|
0.000000000000 2.193636332720 0.000000000000
|
||||||
|
0.000000000000 0.000000000000 4.121797607726
|
||||||
|
|
||||||
|
Mulliken analysis of the total density
|
||||||
|
--------------------------------------
|
||||||
|
|
||||||
|
Atom Charge Shell Charges
|
||||||
|
----------- ------ -------------------------------------------------------
|
||||||
|
1 O 8 8.87 2.00 0.90 2.90 0.92 2.07 0.08
|
||||||
|
2 H 1 0.57 0.46 0.10
|
||||||
|
3 H 1 0.57 0.46 0.10
|
||||||
|
|
||||||
|
Multipole analysis of the density wrt the origin
|
||||||
|
------------------------------------------------
|
||||||
|
|
||||||
|
L x y z total open nuclear
|
||||||
|
- - - - ----- ---- -------
|
||||||
|
0 0 0 0 0.000000 0.000000 10.000000
|
||||||
|
|
||||||
|
1 1 0 0 -0.000002 0.000000 0.000000
|
||||||
|
1 0 1 0 0.000001 0.000000 0.000000
|
||||||
|
1 0 0 1 -0.875296 0.000000 0.000000
|
||||||
|
|
||||||
|
2 2 0 0 -5.372336 0.000000 0.000000
|
||||||
|
2 1 1 0 -0.000002 0.000000 0.000000
|
||||||
|
2 1 0 1 0.000001 0.000000 0.000000
|
||||||
|
2 0 2 0 -3.071804 0.000000 4.089795
|
||||||
|
2 0 1 1 0.000000 0.000000 0.000000
|
||||||
|
2 0 0 2 -4.444596 0.000000 1.960717
|
||||||
|
|
||||||
|
|
||||||
|
Parallel integral file used 1 records with 0 large values
|
||||||
|
|
||||||
|
NWChem Gradients Module
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
wavefunction = RHF
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
RHF ENERGY GRADIENTS
|
||||||
|
|
||||||
|
atom coordinates gradient
|
||||||
|
x y z x y z
|
||||||
|
1 O 0.000000 0.000000 0.221400 0.000001 0.000000 0.014490
|
||||||
|
2 H 0.000000 1.429999 -0.885600 -0.000001 0.007296 -0.007245
|
||||||
|
3 H 0.000000 -1.429999 -0.885600 -0.000000 -0.007296 -0.007245
|
||||||
|
|
||||||
|
----------------------------------------
|
||||||
|
| Time | 1-e(secs) | 2-e(secs) |
|
||||||
|
----------------------------------------
|
||||||
|
| CPU | 0.00 | 0.07 |
|
||||||
|
----------------------------------------
|
||||||
|
| WALL | 0.00 | 0.03 |
|
||||||
|
----------------------------------------
|
||||||
|
|
||||||
|
Task times cpu: 0.2s wall: 0.1s
|
||||||
|
|
||||||
|
|
||||||
|
NWChem Input Module
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
|
||||||
|
Summary of allocated global arrays
|
||||||
|
-----------------------------------
|
||||||
|
No active global arrays
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
GA Statistics for process 0
|
||||||
|
------------------------------
|
||||||
|
|
||||||
|
create destroy get put acc scatter gather read&inc
|
||||||
|
calls: 225 225 3182 894 878 0 0 68
|
||||||
|
number of processes/call 1.00e+00 1.00e+00 1.00e+00 0.00e+00 0.00e+00
|
||||||
|
bytes total: 8.62e+05 5.44e+05 1.23e+05 0.00e+00 0.00e+00 5.44e+02
|
||||||
|
bytes remote: 0.00e+00 0.00e+00 0.00e+00 0.00e+00 0.00e+00 0.00e+00
|
||||||
|
Max memory consumed for GA by this process: 39432 bytes
|
||||||
|
|
||||||
|
MA_summarize_allocated_blocks: starting scan ...
|
||||||
|
MA_summarize_allocated_blocks: scan completed: 0 heap blocks, 0 stack blocks
|
||||||
|
MA usage statistics:
|
||||||
|
|
||||||
|
allocation statistics:
|
||||||
|
heap stack
|
||||||
|
---- -----
|
||||||
|
current number of blocks 0 0
|
||||||
|
maximum number of blocks 18 28
|
||||||
|
current total bytes 0 0
|
||||||
|
maximum total bytes 1060104 16000888
|
||||||
|
maximum total K-bytes 1061 16001
|
||||||
|
maximum total M-bytes 2 17
|
||||||
|
|
||||||
|
|
||||||
|
CITATION
|
||||||
|
--------
|
||||||
|
Please cite the following reference when publishing
|
||||||
|
results obtained with NWChem:
|
||||||
|
|
||||||
|
M. Valiev, E.J. Bylaska, N. Govind, K. Kowalski,
|
||||||
|
T.P. Straatsma, H.J.J. van Dam, D. Wang, J. Nieplocha,
|
||||||
|
E. Apra, T.L. Windus, W.A. de Jong
|
||||||
|
"NWChem: a comprehensive and scalable open-source
|
||||||
|
solution for large scale molecular simulations"
|
||||||
|
Comput. Phys. Commun. 181, 1477 (2010)
|
||||||
|
doi:10.1016/j.cpc.2010.04.018
|
||||||
|
|
||||||
|
AUTHORS
|
||||||
|
-------
|
||||||
|
E. Apra, E. J. Bylaska, W. A. de Jong, N. Govind, K. Kowalski,
|
||||||
|
T. P. Straatsma, M. Valiev, H. J. J. van Dam, D. Wang, T. L. Windus,
|
||||||
|
J. Hammond, J. Autschbach, K. Bhaskaran-Nair, J. Brabec, K. Lopata,
|
||||||
|
S. A. Fischer, S. Krishnamoorthy, M. Jacquelin, W. Ma, M. Klemm, O. Villa,
|
||||||
|
Y. Chen, V. Anisimov, F. Aquino, S. Hirata, M. T. Hackler, V. Konjkov,
|
||||||
|
D. Mejia-Rodriguez, T. Risthaus, M. Malagoli, A. Marenich,
|
||||||
|
A. Otero-de-la-Roza, J. Mullin, P. Nichols, R. Peverati, J. Pittner, Y. Zhao,
|
||||||
|
P.-D. Fan, A. Fonari, M. J. Williamson, R. J. Harrison, J. R. Rehr,
|
||||||
|
M. Dupuis, D. Silverstein, D. M. A. Smith, J. Nieplocha, V. Tipparaju,
|
||||||
|
M. Krishnan, B. E. Van Kuiken, A. Vazquez-Mayagoitia, L. Jensen, M. Swart,
|
||||||
|
Q. Wu, T. Van Voorhis, A. A. Auer, M. Nooijen, L. D. Crosby, E. Brown,
|
||||||
|
G. Cisneros, G. I. Fann, H. Fruchtl, J. Garza, K. Hirao, R. A. Kendall,
|
||||||
|
J. A. Nichols, K. Tsemekhman, K. Wolinski, J. Anchell, D. E. Bernholdt,
|
||||||
|
P. Borowski, T. Clark, D. Clerc, H. Dachsel, M. J. O. Deegan, K. Dyall,
|
||||||
|
D. Elwood, E. Glendening, M. Gutowski, A. C. Hess, J. Jaffe, B. G. Johnson,
|
||||||
|
J. Ju, R. Kobayashi, R. Kutteh, Z. Lin, R. Littlefield, X. Long, B. Meng,
|
||||||
|
T. Nakajima, S. Niu, L. Pollack, M. Rosing, K. Glaesemann, G. Sandrone,
|
||||||
|
M. Stave, H. Taylor, G. Thomas, J. H. van Lenthe, A. T. Wong, Z. Zhang.
|
||||||
|
|
||||||
|
Total times cpu: 0.2s wall: 0.1s
|
||||||
197
examples/COUPLE/lammps_nwchem/lammps_nwchem/README
Normal file
197
examples/COUPLE/lammps_nwchem/lammps_nwchem/README
Normal file
@ -0,0 +1,197 @@
|
|||||||
|
Sample LAMMPS MD wrapper on NWChem via client/server coupling
|
||||||
|
|
||||||
|
See the MESSAGE package (doc/Section_messages.html#MESSAGE) and
|
||||||
|
Section_howto.html#howto10 for more details on how client/server
|
||||||
|
coupling works in LAMMPS.
|
||||||
|
|
||||||
|
In this dir, the nwchem_wrap.py is a wrapper on the NWChem electronic
|
||||||
|
structure code so it can work as a "server" code which LAMMPS drives
|
||||||
|
as a "client" code to perform ab initio MD. LAMMPS performs the MD
|
||||||
|
timestepping, sends NWChem a current set of coordinates each timestep,
|
||||||
|
NWChem computes forces and energy (and virial) and returns that info
|
||||||
|
to LAMMPS.
|
||||||
|
|
||||||
|
Messages are exchanged between NWChem and LAMMPS via a client/server
|
||||||
|
library (CSlib), which is included in the LAMMPS distribution in
|
||||||
|
lib/message. As explained below you can choose to exchange data
|
||||||
|
between the two programs either via files or sockets (ZMQ). If the
|
||||||
|
nwchem_wrap.py program became parallel, or the CSlib library calls were
|
||||||
|
integrated into NWChem directly, then data could also be exchanged via
|
||||||
|
MPI.
|
||||||
|
|
||||||
|
There are 2 examples provided in the planeware and ao_basis
|
||||||
|
sub-directories. See details below.
|
||||||
|
|
||||||
|
----------------
|
||||||
|
|
||||||
|
Build LAMMPS with its MESSAGE package installed:
|
||||||
|
|
||||||
|
See the Build extras doc page and its MESSAGE package
|
||||||
|
section for details.
|
||||||
|
|
||||||
|
CMake:
|
||||||
|
|
||||||
|
-D PKG_MESSAGE=yes # include the MESSAGE package
|
||||||
|
-D MESSAGE_ZMQ=value # build with ZeroMQ support, value = no (default) or yes
|
||||||
|
|
||||||
|
Traditional make:
|
||||||
|
|
||||||
|
cd lammps/lib/message
|
||||||
|
python Install.py -m -z # build CSlib with MPI and ZMQ support
|
||||||
|
cd lammps/src
|
||||||
|
make yes-message
|
||||||
|
make mpi
|
||||||
|
|
||||||
|
You can leave off the -z if you do not have ZMQ on your system.
|
||||||
|
|
||||||
|
----------------
|
||||||
|
|
||||||
|
Build the CSlib in a form usable by the nwchem_wrapper.py script:
|
||||||
|
|
||||||
|
% cd lammps/lib/message/cslib/src
|
||||||
|
% make shlib # build serial and parallel shared lib with ZMQ support
|
||||||
|
% make shlib zmq=no # build serial and parallel shared lib w/out ZMQ support
|
||||||
|
|
||||||
|
This will make a shared library versions of the CSlib, which Python
|
||||||
|
requires. Python must be able to find both the cslib.py script and
|
||||||
|
the libcsnompi.so library in your lammps/lib/message/cslib/src
|
||||||
|
directory. If it is not able to do this, you will get an error when
|
||||||
|
you run nwchem_wrapper.py.
|
||||||
|
|
||||||
|
You can do this by augmenting two environment variables, either from
|
||||||
|
the command line, or in your shell start-up script. Here is the
|
||||||
|
sample syntax for the csh or tcsh shells:
|
||||||
|
|
||||||
|
setenv PYTHONPATH ${PYTHONPATH}:/home/sjplimp/lammps/lib/message/cslib/src
|
||||||
|
setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:/home/sjplimp/lammps/lib/message/cslib/src
|
||||||
|
|
||||||
|
----------------
|
||||||
|
|
||||||
|
Prepare to use NWChem and the nwchem_wrap.py script
|
||||||
|
|
||||||
|
You can run the nwchem_wrap.py script as-is to test that the coupling
|
||||||
|
between it and LAMMPS is functional. This will use the included
|
||||||
|
nwchem_lammps.out files output by a previous NWChem run.
|
||||||
|
|
||||||
|
But note that the as-is version of nwchem_wrap.py will not attempt to
|
||||||
|
run NWChem.
|
||||||
|
|
||||||
|
To do this, you must edit the 1st nwchemcmd line at the top of
|
||||||
|
nwchem_wrapper.py to be the launch command needed to run NWChem on
|
||||||
|
your system. It can be a command to run NWChem in serial or in
|
||||||
|
parallel, e.g. an mpirun command. Then comment out the 2nd nwchemcmd
|
||||||
|
line immediately following it.
|
||||||
|
|
||||||
|
Ensure you have the necessary NWChem input file in this directory,
|
||||||
|
suitable for the NWChem calculation you want to perform.
|
||||||
|
|
||||||
|
Example input files are provided for both atom-centered AO basis sets
|
||||||
|
and plane-wave basis sets. Note that the NWChem template file should
|
||||||
|
be matched to the LAMMPS input script (# of atoms and atom types, box
|
||||||
|
size, etc).
|
||||||
|
|
||||||
|
Once you run NWChem yourself, the nwchem_lammps.out file will be
|
||||||
|
overwritten.
|
||||||
|
|
||||||
|
The syntax of the wrapper is:
|
||||||
|
nwchem_wrap.py file/zmq ao/pw input_template
|
||||||
|
* file/zmg = messaging mode, must match LAMMPS messaging mode
|
||||||
|
* ao/pw = basis set mode, selects between atom-centered and plane-wave
|
||||||
|
the input_template file must correspond to the appropriate basis set mode:
|
||||||
|
the "ao" mode supports the scf and dft modules in NWChem,
|
||||||
|
the "pw" mode supports the nwpw module.
|
||||||
|
* input_template = NWChem input file used as template, must include a
|
||||||
|
"geometry" block with the atoms in the simulation, dummy
|
||||||
|
xyz coordinates should be included (but are not used).
|
||||||
|
Atom ordering must match LAMMPS input.
|
||||||
|
|
||||||
|
During a simulation, the molecular orbitals from the previous timestep
|
||||||
|
will be used as the initial guess for the next NWChem calculation. If
|
||||||
|
a file named "nwchem_lammps.movecs" is in the directory the wrapper is
|
||||||
|
called from, these orbitals will be used as the initial guess orbitals
|
||||||
|
in the first step of the simulation.
|
||||||
|
|
||||||
|
----------------
|
||||||
|
|
||||||
|
Example directories
|
||||||
|
|
||||||
|
(1) planewave
|
||||||
|
|
||||||
|
Demonstrates coupling of the nwpw module in NWChem with LAMMPS. Only fully
|
||||||
|
periodic boundary conditions and orthogonal simulation boxes are currently
|
||||||
|
supported by the wrapper. The included files provide an example run using a
|
||||||
|
2 atom unit cell of tungsten.
|
||||||
|
|
||||||
|
Files:
|
||||||
|
* data.W LAMMPS input with geometry information
|
||||||
|
* in.client.W LAMMPS simulation input
|
||||||
|
* log.client.output LAMMPS simulation output
|
||||||
|
* w.nw NWChem template input file
|
||||||
|
* nwchem_lammps.out NWChem output
|
||||||
|
|
||||||
|
(2) ao_basis
|
||||||
|
|
||||||
|
Demonstrates coupling of the scf (or dft) modules in NWChem with
|
||||||
|
LAMMPS. Only fully aperiodic boundary conditions are currently
|
||||||
|
supported by the wrapper. The included files provide an example run
|
||||||
|
using a single water molecule.
|
||||||
|
|
||||||
|
Files:
|
||||||
|
* data.h2o LAMMPS input with geometry information
|
||||||
|
* in.client.h2o LAMMPS simulation input
|
||||||
|
* log.client.output LAMMPS simulation output
|
||||||
|
* h2o.nw NWChem template input file
|
||||||
|
* nwchem_lammps.out NWChem output
|
||||||
|
|
||||||
|
As noted above, you can run the nwchem_wrap.py script as-is to test that
|
||||||
|
the coupling between it and LAMMPS is functional. This will use the included
|
||||||
|
nwchem_lammps.out files.
|
||||||
|
|
||||||
|
----------------
|
||||||
|
|
||||||
|
To run in client/server mode:
|
||||||
|
|
||||||
|
NOTE: The nwchem_wrap.py script must be run with Python version 2, not
|
||||||
|
3. This is because it used the CSlib python wrapper, which only
|
||||||
|
supports version 2. We plan to upgrade CSlib to support Python 3.
|
||||||
|
|
||||||
|
Both the client (LAMMPS) and server (nwchem_wrap.py) must use the same
|
||||||
|
messaging mode, namely file or zmq. This is an argument to the
|
||||||
|
nwchem_wrap.py code; it can be selected by setting the "mode" variable
|
||||||
|
when you run LAMMPS. The default mode = file.
|
||||||
|
|
||||||
|
Here we assume LAMMPS was built to run in parallel, and the MESSAGE
|
||||||
|
package was installed with socket (ZMQ) support. This means either of
|
||||||
|
the messaging modes can be used and LAMMPS can be run in serial or
|
||||||
|
parallel. The nwchem_wrap.py code is always run in serial, but it
|
||||||
|
launches NWChem from Python via an mpirun command which can run NWChem
|
||||||
|
itself in parallel.
|
||||||
|
|
||||||
|
When you run, the server should print out thermodynamic info every
|
||||||
|
timestep which corresponds to the forces and virial computed by NWChem.
|
||||||
|
NWChem will also generate output files each timestep. Output files from
|
||||||
|
previous timesteps are archived in a "nwchem_logs" directory.
|
||||||
|
|
||||||
|
The examples below are commands you should use in two different
|
||||||
|
terminal windows. The order of the two commands (client or server
|
||||||
|
launch) does not matter. You can run them both in the same window if
|
||||||
|
you append a "&" character to the first one to run it in the
|
||||||
|
background.
|
||||||
|
|
||||||
|
--------------
|
||||||
|
|
||||||
|
File mode of messaging:
|
||||||
|
|
||||||
|
% mpirun -np 1 lmp_mpi -v mode file < in.client.W
|
||||||
|
% python nwchem_wrap.py file pw w.nw
|
||||||
|
|
||||||
|
% mpirun -np 2 lmp_mpi -v mode file < in.client.h2o
|
||||||
|
% python nwchem_wrap.py file ao h2o_dft.nw
|
||||||
|
|
||||||
|
ZMQ mode of messaging:
|
||||||
|
|
||||||
|
% mpirun -np 1 lmp_mpi -v mode zmq < in.client.W
|
||||||
|
% python nwchem_wrap.py zmq pw w.nw
|
||||||
|
|
||||||
|
% mpirun -np 2 lmp_mpi -v mode zmq < in.client.h2o
|
||||||
|
% python nwchem_wrap.py zmq ao h2o_dft.nw
|
||||||
@ -0,0 +1,20 @@
|
|||||||
|
LAMMPS H2O data file
|
||||||
|
|
||||||
|
3 atoms
|
||||||
|
|
||||||
|
2 atom types
|
||||||
|
|
||||||
|
-10.0 10.0 xlo xhi
|
||||||
|
-10.0 10.0 ylo yhi
|
||||||
|
-10.0 10.0 zlo zhi
|
||||||
|
|
||||||
|
Masses
|
||||||
|
|
||||||
|
1 15.994915008544922
|
||||||
|
2 1.0078250169754028
|
||||||
|
|
||||||
|
Atoms
|
||||||
|
|
||||||
|
1 1 0.0 0.0 0.0
|
||||||
|
2 2 0.0 0.756723 -0.585799
|
||||||
|
3 2 0.0 -0.756723 -0.585799
|
||||||
25
examples/COUPLE/lammps_nwchem/lammps_nwchem/ao_basis/h2o.nw
Normal file
25
examples/COUPLE/lammps_nwchem/lammps_nwchem/ao_basis/h2o.nw
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
echo
|
||||||
|
|
||||||
|
memory global 40 mb stack 23 mb heap 5 mb
|
||||||
|
|
||||||
|
geometry units angstrom noautosym
|
||||||
|
O 0.0 0.0 0.0
|
||||||
|
H 1.0 0.5 0.0
|
||||||
|
H -1.0 0.5 0.0
|
||||||
|
end
|
||||||
|
|
||||||
|
basis
|
||||||
|
O library 6-31g*
|
||||||
|
H library 6-31g*
|
||||||
|
end
|
||||||
|
|
||||||
|
scf
|
||||||
|
maxiter 100
|
||||||
|
end
|
||||||
|
|
||||||
|
#dft
|
||||||
|
# xc b3lyp
|
||||||
|
#end
|
||||||
|
|
||||||
|
task scf gradient
|
||||||
|
#task dft gradient
|
||||||
@ -0,0 +1,33 @@
|
|||||||
|
# H2O with NWChem
|
||||||
|
|
||||||
|
variable mode index file
|
||||||
|
|
||||||
|
if "${mode} == file" then &
|
||||||
|
"message client md file tmp.couple" &
|
||||||
|
elif "${mode} == zmq" &
|
||||||
|
"message client md zmq localhost:5555" &
|
||||||
|
|
||||||
|
variable x index 1
|
||||||
|
variable y index 1
|
||||||
|
variable z index 1
|
||||||
|
|
||||||
|
units metal
|
||||||
|
atom_style atomic
|
||||||
|
atom_modify sort 0 0.0 map yes
|
||||||
|
|
||||||
|
boundary m m m
|
||||||
|
read_data data.h2o
|
||||||
|
|
||||||
|
replicate $x $y $z
|
||||||
|
|
||||||
|
velocity all create 300.0 87287 loop geom
|
||||||
|
|
||||||
|
neighbor 0.3 bin
|
||||||
|
neigh_modify delay 0 every 10 check no
|
||||||
|
|
||||||
|
fix 1 all nve
|
||||||
|
fix 2 all client/md
|
||||||
|
fix_modify 2 energy yes
|
||||||
|
|
||||||
|
thermo 1
|
||||||
|
run 3
|
||||||
@ -0,0 +1,77 @@
|
|||||||
|
LAMMPS (18 Sep 2018)
|
||||||
|
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:87)
|
||||||
|
using 1 OpenMP thread(s) per MPI task
|
||||||
|
# H2O with NWChem
|
||||||
|
|
||||||
|
variable mode index file
|
||||||
|
|
||||||
|
if "${mode} == file" then "message client md file tmp.couple" elif "${mode} == zmq" "message client md zmq localhost:5555"
|
||||||
|
message client md zmq localhost:5555
|
||||||
|
variable x index 1
|
||||||
|
variable y index 1
|
||||||
|
variable z index 1
|
||||||
|
|
||||||
|
units metal
|
||||||
|
atom_style atomic
|
||||||
|
atom_modify sort 0 0.0 map yes
|
||||||
|
|
||||||
|
boundary m m m
|
||||||
|
read_data data.h2o
|
||||||
|
orthogonal box = (-10 -10 -10) to (10 10 10)
|
||||||
|
1 by 1 by 1 MPI processor grid
|
||||||
|
reading atoms ...
|
||||||
|
3 atoms
|
||||||
|
|
||||||
|
replicate $x $y $z
|
||||||
|
replicate 1 $y $z
|
||||||
|
replicate 1 1 $z
|
||||||
|
replicate 1 1 1
|
||||||
|
orthogonal box = (-10 -10 -10) to (10 10 10)
|
||||||
|
1 by 1 by 1 MPI processor grid
|
||||||
|
3 atoms
|
||||||
|
Time spent = 5.8016e-05 secs
|
||||||
|
|
||||||
|
velocity all create 300.0 87287 loop geom
|
||||||
|
|
||||||
|
neighbor 0.3 bin
|
||||||
|
neigh_modify delay 0 every 10 check no
|
||||||
|
|
||||||
|
fix 1 all nve
|
||||||
|
fix 2 all client/md
|
||||||
|
fix_modify 2 energy yes
|
||||||
|
|
||||||
|
thermo 1
|
||||||
|
run 3
|
||||||
|
Per MPI rank memory allocation (min/avg/max) = 0.02705 | 0.02705 | 0.02705 Mbytes
|
||||||
|
Step Temp E_pair E_mol TotEng Press Volume
|
||||||
|
0 300 0 0 -2068.2746 10.354878 8000
|
||||||
|
1 368.98118 0 0 -2068.2567 12.735851 8000
|
||||||
|
2 459.96278 0 0 -2068.2332 15.876195 8000
|
||||||
|
3 572.94479 0 0 -2068.204 19.775912 8000
|
||||||
|
Loop time of 0.0174769 on 1 procs for 3 steps with 3 atoms
|
||||||
|
|
||||||
|
Performance: 14.831 ns/day, 1.618 hours/ns, 171.655 timesteps/s
|
||||||
|
8.4% CPU use with 1 MPI tasks x 1 OpenMP threads
|
||||||
|
|
||||||
|
MPI task timing breakdown:
|
||||||
|
Section | min time | avg time | max time |%varavg| %total
|
||||||
|
---------------------------------------------------------------
|
||||||
|
Pair | 0 | 0 | 0 | 0.0 | 0.00
|
||||||
|
Neigh | 0 | 0 | 0 | 0.0 | 0.00
|
||||||
|
Comm | 2.555e-06 | 2.555e-06 | 2.555e-06 | 0.0 | 0.01
|
||||||
|
Output | 8.4169e-05 | 8.4169e-05 | 8.4169e-05 | 0.0 | 0.48
|
||||||
|
Modify | 0.017383 | 0.017383 | 0.017383 | 0.0 | 99.46
|
||||||
|
Other | | 7.694e-06 | | | 0.04
|
||||||
|
|
||||||
|
Nlocal: 3 ave 3 max 3 min
|
||||||
|
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||||
|
Nghost: 0 ave 0 max 0 min
|
||||||
|
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||||
|
Neighs: 0 ave 0 max 0 min
|
||||||
|
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||||
|
|
||||||
|
Total # of neighbors = 0
|
||||||
|
Ave neighs/atom = 0
|
||||||
|
Neighbor list builds = 0
|
||||||
|
Dangerous builds not checked
|
||||||
|
Total wall time: 0:00:01
|
||||||
@ -0,0 +1,622 @@
|
|||||||
|
argument 1 = nwchem_lammps.nw
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
============================== echo of input deck ==============================
|
||||||
|
echo
|
||||||
|
|
||||||
|
memory global 40 mb stack 23 mb heap 5 mb
|
||||||
|
|
||||||
|
geometry units angstrom noautosym
|
||||||
|
O 0 0 0
|
||||||
|
H 0 0.756723 -0.585799
|
||||||
|
H 0 -0.756723 -0.585799
|
||||||
|
end
|
||||||
|
|
||||||
|
scf
|
||||||
|
vectors input nwchem_lammps.movecs
|
||||||
|
end
|
||||||
|
|
||||||
|
dft
|
||||||
|
vectors input nwchem_lammps.movecs
|
||||||
|
end
|
||||||
|
|
||||||
|
basis
|
||||||
|
O library 6-31g*
|
||||||
|
H library 6-31g*
|
||||||
|
end
|
||||||
|
|
||||||
|
scf
|
||||||
|
maxiter 100
|
||||||
|
end
|
||||||
|
|
||||||
|
task scf gradient
|
||||||
|
|
||||||
|
================================================================================
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Northwest Computational Chemistry Package (NWChem) 6.8
|
||||||
|
------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
Environmental Molecular Sciences Laboratory
|
||||||
|
Pacific Northwest National Laboratory
|
||||||
|
Richland, WA 99352
|
||||||
|
|
||||||
|
Copyright (c) 1994-2017
|
||||||
|
Pacific Northwest National Laboratory
|
||||||
|
Battelle Memorial Institute
|
||||||
|
|
||||||
|
NWChem is an open-source computational chemistry package
|
||||||
|
distributed under the terms of the
|
||||||
|
Educational Community License (ECL) 2.0
|
||||||
|
A copy of the license is included with this distribution
|
||||||
|
in the LICENSE.TXT file
|
||||||
|
|
||||||
|
ACKNOWLEDGMENT
|
||||||
|
--------------
|
||||||
|
|
||||||
|
This software and its documentation were developed at the
|
||||||
|
EMSL at Pacific Northwest National Laboratory, a multiprogram
|
||||||
|
national laboratory, operated for the U.S. Department of Energy
|
||||||
|
by Battelle under Contract Number DE-AC05-76RL01830. Support
|
||||||
|
for this work was provided by the Department of Energy Office
|
||||||
|
of Biological and Environmental Research, Office of Basic
|
||||||
|
Energy Sciences, and the Office of Advanced Scientific Computing.
|
||||||
|
|
||||||
|
|
||||||
|
Job information
|
||||||
|
---------------
|
||||||
|
|
||||||
|
hostname = mcq
|
||||||
|
program = /usr/bin/nwchem
|
||||||
|
date = Mon Sep 23 16:28:27 2019
|
||||||
|
|
||||||
|
compiled = Wed_Aug_15_19:14:19_2018
|
||||||
|
source = /home/edo/debichem-team/nwchem/nwchem-6.8.1
|
||||||
|
nwchem branch = 6.8.1
|
||||||
|
nwchem revision = v6.8-133-ge032219
|
||||||
|
ga revision = 5.6.5
|
||||||
|
use scalapack = T
|
||||||
|
input = nwchem_lammps.nw
|
||||||
|
prefix = nwchem_lammps.
|
||||||
|
data base = ./nwchem_lammps.db
|
||||||
|
status = restart
|
||||||
|
nproc = 1
|
||||||
|
time left = -1s
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Memory information
|
||||||
|
------------------
|
||||||
|
|
||||||
|
heap = 655358 doubles = 5.0 Mbytes
|
||||||
|
stack = 3014651 doubles = 23.0 Mbytes
|
||||||
|
global = 5242880 doubles = 40.0 Mbytes (distinct from heap & stack)
|
||||||
|
total = 8912889 doubles = 68.0 Mbytes
|
||||||
|
verify = yes
|
||||||
|
hardfail = no
|
||||||
|
|
||||||
|
|
||||||
|
Directory information
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
0 permanent = .
|
||||||
|
0 scratch = .
|
||||||
|
|
||||||
|
|
||||||
|
Previous task information
|
||||||
|
-------------------------
|
||||||
|
|
||||||
|
Theory = scf
|
||||||
|
Operation = gradient
|
||||||
|
Status = ok
|
||||||
|
Qmmm = F
|
||||||
|
Ignore = F
|
||||||
|
|
||||||
|
|
||||||
|
Geometries in the database
|
||||||
|
--------------------------
|
||||||
|
|
||||||
|
Name Natoms Last Modified
|
||||||
|
-------------------------------- ------ ------------------------
|
||||||
|
1 geometry 3 Mon Sep 23 16:26:29 2019
|
||||||
|
|
||||||
|
The geometry named "geometry" is the default for restart
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Basis sets in the database
|
||||||
|
--------------------------
|
||||||
|
|
||||||
|
Name Natoms Last Modified
|
||||||
|
-------------------------------- ------ ------------------------
|
||||||
|
1 ao basis 2 Mon Sep 23 16:26:29 2019
|
||||||
|
|
||||||
|
The basis set named "ao basis" is the default AO basis for restart
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
NWChem Input Module
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Scaling coordinates for geometry "geometry" by 1.889725989
|
||||||
|
(inverse scale = 0.529177249)
|
||||||
|
|
||||||
|
|
||||||
|
------
|
||||||
|
auto-z
|
||||||
|
------
|
||||||
|
|
||||||
|
|
||||||
|
Geometry "geometry" -> ""
|
||||||
|
-------------------------
|
||||||
|
|
||||||
|
Output coordinates in angstroms (scale by 1.889725989 to convert to a.u.)
|
||||||
|
|
||||||
|
No. Tag Charge X Y Z
|
||||||
|
---- ---------------- ---------- -------------- -------------- --------------
|
||||||
|
1 O 8.0000 0.00000000 0.00000000 0.11715980
|
||||||
|
2 H 1.0000 0.00000000 0.75672300 -0.46863920
|
||||||
|
3 H 1.0000 0.00000000 -0.75672300 -0.46863920
|
||||||
|
|
||||||
|
Atomic Mass
|
||||||
|
-----------
|
||||||
|
|
||||||
|
O 15.994910
|
||||||
|
H 1.007825
|
||||||
|
|
||||||
|
|
||||||
|
Effective nuclear repulsion energy (a.u.) 9.1972032776
|
||||||
|
|
||||||
|
Nuclear Dipole moment (a.u.)
|
||||||
|
----------------------------
|
||||||
|
X Y Z
|
||||||
|
---------------- ---------------- ----------------
|
||||||
|
0.0000000000 0.0000000000 0.0000000000
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Z-matrix (autoz)
|
||||||
|
--------
|
||||||
|
|
||||||
|
Units are Angstrom for bonds and degrees for angles
|
||||||
|
|
||||||
|
Type Name I J K L M Value
|
||||||
|
----------- -------- ----- ----- ----- ----- ----- ----------
|
||||||
|
1 Stretch 1 2 0.95697
|
||||||
|
2 Stretch 1 3 0.95697
|
||||||
|
3 Bend 2 1 3 104.51122
|
||||||
|
|
||||||
|
|
||||||
|
XYZ format geometry
|
||||||
|
-------------------
|
||||||
|
3
|
||||||
|
geometry
|
||||||
|
O 0.00000000 0.00000000 0.11715980
|
||||||
|
H 0.00000000 0.75672300 -0.46863920
|
||||||
|
H 0.00000000 -0.75672300 -0.46863920
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
internuclear distances
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
center one | center two | atomic units | angstroms
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
2 H | 1 O | 1.80841 | 0.95697
|
||||||
|
3 H | 1 O | 1.80841 | 0.95697
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
number of included internuclear distances: 2
|
||||||
|
==============================================================================
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
internuclear angles
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
center 1 | center 2 | center 3 | degrees
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
2 H | 1 O | 3 H | 104.51
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
number of included internuclear angles: 1
|
||||||
|
==============================================================================
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Basis "ao basis" -> "" (cartesian)
|
||||||
|
-----
|
||||||
|
O (Oxygen)
|
||||||
|
----------
|
||||||
|
Exponent Coefficients
|
||||||
|
-------------- ---------------------------------------------------------
|
||||||
|
1 S 5.48467170E+03 0.001831
|
||||||
|
1 S 8.25234950E+02 0.013950
|
||||||
|
1 S 1.88046960E+02 0.068445
|
||||||
|
1 S 5.29645000E+01 0.232714
|
||||||
|
1 S 1.68975700E+01 0.470193
|
||||||
|
1 S 5.79963530E+00 0.358521
|
||||||
|
|
||||||
|
2 S 1.55396160E+01 -0.110778
|
||||||
|
2 S 3.59993360E+00 -0.148026
|
||||||
|
2 S 1.01376180E+00 1.130767
|
||||||
|
|
||||||
|
3 P 1.55396160E+01 0.070874
|
||||||
|
3 P 3.59993360E+00 0.339753
|
||||||
|
3 P 1.01376180E+00 0.727159
|
||||||
|
|
||||||
|
4 S 2.70005800E-01 1.000000
|
||||||
|
|
||||||
|
5 P 2.70005800E-01 1.000000
|
||||||
|
|
||||||
|
6 D 8.00000000E-01 1.000000
|
||||||
|
|
||||||
|
H (Hydrogen)
|
||||||
|
------------
|
||||||
|
Exponent Coefficients
|
||||||
|
-------------- ---------------------------------------------------------
|
||||||
|
1 S 1.87311370E+01 0.033495
|
||||||
|
1 S 2.82539370E+00 0.234727
|
||||||
|
1 S 6.40121700E-01 0.813757
|
||||||
|
|
||||||
|
2 S 1.61277800E-01 1.000000
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Summary of "ao basis" -> "" (cartesian)
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
Tag Description Shells Functions and Types
|
||||||
|
---------------- ------------------------------ ------ ---------------------
|
||||||
|
O 6-31g* 6 15 3s2p1d
|
||||||
|
H 6-31g* 2 2 2s
|
||||||
|
|
||||||
|
|
||||||
|
NWChem SCF Module
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
ao basis = "ao basis"
|
||||||
|
functions = 19
|
||||||
|
atoms = 3
|
||||||
|
closed shells = 5
|
||||||
|
open shells = 0
|
||||||
|
charge = 0.00
|
||||||
|
wavefunction = RHF
|
||||||
|
input vectors = ./nwchem_lammps.movecs
|
||||||
|
output vectors = ./nwchem_lammps.movecs
|
||||||
|
use symmetry = F
|
||||||
|
symmetry adapt = F
|
||||||
|
|
||||||
|
|
||||||
|
Summary of "ao basis" -> "ao basis" (cartesian)
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
Tag Description Shells Functions and Types
|
||||||
|
---------------- ------------------------------ ------ ---------------------
|
||||||
|
O 6-31g* 6 15 3s2p1d
|
||||||
|
H 6-31g* 2 2 2s
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Forming initial guess at 0.0s
|
||||||
|
|
||||||
|
|
||||||
|
Loading old vectors from job with title :
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Starting SCF solution at 0.0s
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
----------------------------------------------
|
||||||
|
Quadratically convergent ROHF
|
||||||
|
|
||||||
|
Convergence threshold : 1.000E-04
|
||||||
|
Maximum no. of iterations : 100
|
||||||
|
Final Fock-matrix accuracy: 1.000E-07
|
||||||
|
----------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
#quartets = 1.540D+03 #integrals = 8.874D+03 #direct = 0.0% #cached =100.0%
|
||||||
|
|
||||||
|
|
||||||
|
Integral file = ./nwchem_lammps.aoints.0
|
||||||
|
Record size in doubles = 65536 No. of integs per rec = 43688
|
||||||
|
Max. records in memory = 2 Max. records in file = 326674
|
||||||
|
No. of bits per label = 8 No. of bits per value = 64
|
||||||
|
|
||||||
|
|
||||||
|
iter energy gnorm gmax time
|
||||||
|
----- ------------------- --------- --------- --------
|
||||||
|
1 -75.9732571733 7.14D-01 3.37D-01 0.3
|
||||||
|
2 -76.0055117003 3.10D-01 1.79D-01 0.3
|
||||||
|
3 -76.0098071888 1.15D-01 5.21D-02 0.3
|
||||||
|
4 -76.0105377099 2.55D-03 9.57D-04 0.3
|
||||||
|
5 -76.0105386346 9.48D-06 3.52D-06 0.3
|
||||||
|
|
||||||
|
|
||||||
|
Final RHF results
|
||||||
|
------------------
|
||||||
|
|
||||||
|
Total SCF energy = -76.010538634624
|
||||||
|
One-electron energy = -123.058850386783
|
||||||
|
Two-electron energy = 37.851108474513
|
||||||
|
Nuclear repulsion energy = 9.197203277646
|
||||||
|
|
||||||
|
Time for solution = 0.1s
|
||||||
|
|
||||||
|
|
||||||
|
Final eigenvalues
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
1
|
||||||
|
1 -20.5603
|
||||||
|
2 -1.3419
|
||||||
|
3 -0.7071
|
||||||
|
4 -0.5711
|
||||||
|
5 -0.4979
|
||||||
|
6 0.2108
|
||||||
|
7 0.3042
|
||||||
|
8 1.0227
|
||||||
|
9 1.1318
|
||||||
|
10 1.1678
|
||||||
|
11 1.1719
|
||||||
|
12 1.3809
|
||||||
|
13 1.4341
|
||||||
|
14 2.0201
|
||||||
|
15 2.0337
|
||||||
|
|
||||||
|
ROHF Final Molecular Orbital Analysis
|
||||||
|
-------------------------------------
|
||||||
|
|
||||||
|
Vector 2 Occ=2.000000D+00 E=-1.341930D+00
|
||||||
|
MO Center= -7.7D-08, 1.6D-07, -5.6D-02, r^2= 5.0D-01
|
||||||
|
Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function
|
||||||
|
----- ------------ --------------- ----- ------------ ---------------
|
||||||
|
2 0.475861 1 O s 6 0.439201 1 O s
|
||||||
|
1 -0.209676 1 O s
|
||||||
|
|
||||||
|
Vector 3 Occ=2.000000D+00 E=-7.070591D-01
|
||||||
|
MO Center= 5.8D-08, -1.2D-07, -1.0D-01, r^2= 7.7D-01
|
||||||
|
Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function
|
||||||
|
----- ------------ --------------- ----- ------------ ---------------
|
||||||
|
4 0.507651 1 O py 8 0.306488 1 O py
|
||||||
|
16 0.230979 2 H s 18 -0.230979 3 H s
|
||||||
|
|
||||||
|
Vector 4 Occ=2.000000D+00 E=-5.710712D-01
|
||||||
|
MO Center= 6.9D-07, -2.0D-07, 1.7D-01, r^2= 6.9D-01
|
||||||
|
Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function
|
||||||
|
----- ------------ --------------- ----- ------------ ---------------
|
||||||
|
5 0.555446 1 O pz 9 0.403175 1 O pz
|
||||||
|
6 0.325535 1 O s 2 0.164591 1 O s
|
||||||
|
|
||||||
|
Vector 5 Occ=2.000000D+00 E=-4.979251D-01
|
||||||
|
MO Center= -9.5D-08, -7.1D-08, 9.7D-02, r^2= 6.0D-01
|
||||||
|
Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function
|
||||||
|
----- ------------ --------------- ----- ------------ ---------------
|
||||||
|
3 0.639615 1 O px 7 0.511470 1 O px
|
||||||
|
|
||||||
|
Vector 6 Occ=0.000000D+00 E= 2.108019D-01
|
||||||
|
MO Center= -5.7D-07, 1.0D-06, -6.5D-01, r^2= 2.6D+00
|
||||||
|
Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function
|
||||||
|
----- ------------ --------------- ----- ------------ ---------------
|
||||||
|
6 1.415545 1 O s 17 -1.041449 2 H s
|
||||||
|
19 -1.041447 3 H s 9 -0.508218 1 O pz
|
||||||
|
5 -0.217054 1 O pz
|
||||||
|
|
||||||
|
Vector 7 Occ=0.000000D+00 E= 3.042327D-01
|
||||||
|
MO Center= -1.9D-09, -9.8D-07, -6.2D-01, r^2= 2.7D+00
|
||||||
|
Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function
|
||||||
|
----- ------------ --------------- ----- ------------ ---------------
|
||||||
|
17 1.395012 2 H s 19 -1.395014 3 H s
|
||||||
|
8 -0.833805 1 O py 4 -0.329272 1 O py
|
||||||
|
|
||||||
|
Vector 8 Occ=0.000000D+00 E= 1.022735D+00
|
||||||
|
MO Center= -1.1D-10, 6.2D-07, -4.7D-02, r^2= 1.4D+00
|
||||||
|
Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function
|
||||||
|
----- ------------ --------------- ----- ------------ ---------------
|
||||||
|
16 0.838912 2 H s 18 -0.838911 3 H s
|
||||||
|
8 -0.662620 1 O py 17 -0.459236 2 H s
|
||||||
|
19 0.459235 3 H s 14 -0.343167 1 O dyz
|
||||||
|
|
||||||
|
Vector 9 Occ=0.000000D+00 E= 1.131842D+00
|
||||||
|
MO Center= 2.2D-07, 3.1D-07, 2.0D-01, r^2= 1.6D+00
|
||||||
|
Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function
|
||||||
|
----- ------------ --------------- ----- ------------ ---------------
|
||||||
|
6 1.636696 1 O s 2 -0.921950 1 O s
|
||||||
|
9 0.708679 1 O pz 16 0.548799 2 H s
|
||||||
|
18 0.548800 3 H s 17 -0.474050 2 H s
|
||||||
|
19 -0.474049 3 H s 5 -0.419243 1 O pz
|
||||||
|
10 -0.387486 1 O dxx 15 -0.318053 1 O dzz
|
||||||
|
|
||||||
|
Vector 10 Occ=0.000000D+00 E= 1.167786D+00
|
||||||
|
MO Center= 2.2D-05, 5.1D-09, 1.1D-01, r^2= 1.1D+00
|
||||||
|
Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function
|
||||||
|
----- ------------ --------------- ----- ------------ ---------------
|
||||||
|
7 -1.036049 1 O px 3 0.962745 1 O px
|
||||||
|
|
||||||
|
Vector 11 Occ=0.000000D+00 E= 1.171944D+00
|
||||||
|
MO Center= -2.2D-05, -4.7D-07, -3.9D-02, r^2= 1.1D+00
|
||||||
|
Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function
|
||||||
|
----- ------------ --------------- ----- ------------ ---------------
|
||||||
|
5 0.761007 1 O pz 16 0.661205 2 H s
|
||||||
|
18 0.661206 3 H s 6 -0.462694 1 O s
|
||||||
|
9 -0.370404 1 O pz 17 -0.357353 2 H s
|
||||||
|
19 -0.357353 3 H s 13 0.249348 1 O dyy
|
||||||
|
|
||||||
|
Vector 12 Occ=0.000000D+00 E= 1.380937D+00
|
||||||
|
MO Center= -2.5D-09, 2.4D-07, 5.7D-02, r^2= 1.4D+00
|
||||||
|
Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function
|
||||||
|
----- ------------ --------------- ----- ------------ ---------------
|
||||||
|
8 1.537091 1 O py 4 -1.037376 1 O py
|
||||||
|
17 -0.915091 2 H s 19 0.915090 3 H s
|
||||||
|
|
||||||
|
Vector 13 Occ=0.000000D+00 E= 1.434077D+00
|
||||||
|
MO Center= 5.4D-08, -5.6D-07, -3.9D-01, r^2= 1.4D+00
|
||||||
|
Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function
|
||||||
|
----- ------------ --------------- ----- ------------ ---------------
|
||||||
|
6 3.574401 1 O s 2 -1.418426 1 O s
|
||||||
|
9 -1.174649 1 O pz 17 -0.784923 2 H s
|
||||||
|
19 -0.784925 3 H s 13 -0.644454 1 O dyy
|
||||||
|
5 0.506381 1 O pz 15 -0.402328 1 O dzz
|
||||||
|
16 -0.323132 2 H s 18 -0.323132 3 H s
|
||||||
|
|
||||||
|
Vector 14 Occ=0.000000D+00 E= 2.020054D+00
|
||||||
|
MO Center= -2.1D-08, 1.2D-08, 1.6D-01, r^2= 6.2D-01
|
||||||
|
Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function
|
||||||
|
----- ------------ --------------- ----- ------------ ---------------
|
||||||
|
15 1.008815 1 O dzz 13 -0.580616 1 O dyy
|
||||||
|
10 -0.366779 1 O dxx 6 -0.227333 1 O s
|
||||||
|
|
||||||
|
Vector 15 Occ=0.000000D+00 E= 2.033720D+00
|
||||||
|
MO Center= -5.0D-08, 6.6D-08, 1.2D-01, r^2= 6.1D-01
|
||||||
|
Bfn. Coefficient Atom+Function Bfn. Coefficient Atom+Function
|
||||||
|
----- ------------ --------------- ----- ------------ ---------------
|
||||||
|
11 1.732051 1 O dxy
|
||||||
|
|
||||||
|
|
||||||
|
center of mass
|
||||||
|
--------------
|
||||||
|
x = 0.00000000 y = 0.00000000 z = 0.09751017
|
||||||
|
|
||||||
|
moments of inertia (a.u.)
|
||||||
|
------------------
|
||||||
|
6.315433940446 0.000000000000 0.000000000000
|
||||||
|
0.000000000000 2.193636332720 0.000000000000
|
||||||
|
0.000000000000 0.000000000000 4.121797607726
|
||||||
|
|
||||||
|
Mulliken analysis of the total density
|
||||||
|
--------------------------------------
|
||||||
|
|
||||||
|
Atom Charge Shell Charges
|
||||||
|
----------- ------ -------------------------------------------------------
|
||||||
|
1 O 8 8.87 2.00 0.90 2.90 0.92 2.07 0.08
|
||||||
|
2 H 1 0.57 0.46 0.10
|
||||||
|
3 H 1 0.57 0.46 0.10
|
||||||
|
|
||||||
|
Multipole analysis of the density wrt the origin
|
||||||
|
------------------------------------------------
|
||||||
|
|
||||||
|
L x y z total open nuclear
|
||||||
|
- - - - ----- ---- -------
|
||||||
|
0 0 0 0 0.000000 0.000000 10.000000
|
||||||
|
|
||||||
|
1 1 0 0 -0.000002 0.000000 0.000000
|
||||||
|
1 0 1 0 0.000001 0.000000 0.000000
|
||||||
|
1 0 0 1 -0.875296 0.000000 0.000000
|
||||||
|
|
||||||
|
2 2 0 0 -5.372336 0.000000 0.000000
|
||||||
|
2 1 1 0 -0.000002 0.000000 0.000000
|
||||||
|
2 1 0 1 0.000001 0.000000 0.000000
|
||||||
|
2 0 2 0 -3.071804 0.000000 4.089795
|
||||||
|
2 0 1 1 0.000000 0.000000 0.000000
|
||||||
|
2 0 0 2 -4.444596 0.000000 1.960717
|
||||||
|
|
||||||
|
|
||||||
|
Parallel integral file used 1 records with 0 large values
|
||||||
|
|
||||||
|
NWChem Gradients Module
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
wavefunction = RHF
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
RHF ENERGY GRADIENTS
|
||||||
|
|
||||||
|
atom coordinates gradient
|
||||||
|
x y z x y z
|
||||||
|
1 O 0.000000 0.000000 0.221400 0.000001 0.000000 0.014490
|
||||||
|
2 H 0.000000 1.429999 -0.885600 -0.000001 0.007296 -0.007245
|
||||||
|
3 H 0.000000 -1.429999 -0.885600 -0.000000 -0.007296 -0.007245
|
||||||
|
|
||||||
|
----------------------------------------
|
||||||
|
| Time | 1-e(secs) | 2-e(secs) |
|
||||||
|
----------------------------------------
|
||||||
|
| CPU | 0.00 | 0.07 |
|
||||||
|
----------------------------------------
|
||||||
|
| WALL | 0.00 | 0.03 |
|
||||||
|
----------------------------------------
|
||||||
|
|
||||||
|
Task times cpu: 0.2s wall: 0.1s
|
||||||
|
|
||||||
|
|
||||||
|
NWChem Input Module
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
|
||||||
|
Summary of allocated global arrays
|
||||||
|
-----------------------------------
|
||||||
|
No active global arrays
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
GA Statistics for process 0
|
||||||
|
------------------------------
|
||||||
|
|
||||||
|
create destroy get put acc scatter gather read&inc
|
||||||
|
calls: 225 225 3182 894 878 0 0 68
|
||||||
|
number of processes/call 1.00e+00 1.00e+00 1.00e+00 0.00e+00 0.00e+00
|
||||||
|
bytes total: 8.62e+05 5.44e+05 1.23e+05 0.00e+00 0.00e+00 5.44e+02
|
||||||
|
bytes remote: 0.00e+00 0.00e+00 0.00e+00 0.00e+00 0.00e+00 0.00e+00
|
||||||
|
Max memory consumed for GA by this process: 39432 bytes
|
||||||
|
|
||||||
|
MA_summarize_allocated_blocks: starting scan ...
|
||||||
|
MA_summarize_allocated_blocks: scan completed: 0 heap blocks, 0 stack blocks
|
||||||
|
MA usage statistics:
|
||||||
|
|
||||||
|
allocation statistics:
|
||||||
|
heap stack
|
||||||
|
---- -----
|
||||||
|
current number of blocks 0 0
|
||||||
|
maximum number of blocks 18 28
|
||||||
|
current total bytes 0 0
|
||||||
|
maximum total bytes 1060104 16000888
|
||||||
|
maximum total K-bytes 1061 16001
|
||||||
|
maximum total M-bytes 2 17
|
||||||
|
|
||||||
|
|
||||||
|
CITATION
|
||||||
|
--------
|
||||||
|
Please cite the following reference when publishing
|
||||||
|
results obtained with NWChem:
|
||||||
|
|
||||||
|
M. Valiev, E.J. Bylaska, N. Govind, K. Kowalski,
|
||||||
|
T.P. Straatsma, H.J.J. van Dam, D. Wang, J. Nieplocha,
|
||||||
|
E. Apra, T.L. Windus, W.A. de Jong
|
||||||
|
"NWChem: a comprehensive and scalable open-source
|
||||||
|
solution for large scale molecular simulations"
|
||||||
|
Comput. Phys. Commun. 181, 1477 (2010)
|
||||||
|
doi:10.1016/j.cpc.2010.04.018
|
||||||
|
|
||||||
|
AUTHORS
|
||||||
|
-------
|
||||||
|
E. Apra, E. J. Bylaska, W. A. de Jong, N. Govind, K. Kowalski,
|
||||||
|
T. P. Straatsma, M. Valiev, H. J. J. van Dam, D. Wang, T. L. Windus,
|
||||||
|
J. Hammond, J. Autschbach, K. Bhaskaran-Nair, J. Brabec, K. Lopata,
|
||||||
|
S. A. Fischer, S. Krishnamoorthy, M. Jacquelin, W. Ma, M. Klemm, O. Villa,
|
||||||
|
Y. Chen, V. Anisimov, F. Aquino, S. Hirata, M. T. Hackler, V. Konjkov,
|
||||||
|
D. Mejia-Rodriguez, T. Risthaus, M. Malagoli, A. Marenich,
|
||||||
|
A. Otero-de-la-Roza, J. Mullin, P. Nichols, R. Peverati, J. Pittner, Y. Zhao,
|
||||||
|
P.-D. Fan, A. Fonari, M. J. Williamson, R. J. Harrison, J. R. Rehr,
|
||||||
|
M. Dupuis, D. Silverstein, D. M. A. Smith, J. Nieplocha, V. Tipparaju,
|
||||||
|
M. Krishnan, B. E. Van Kuiken, A. Vazquez-Mayagoitia, L. Jensen, M. Swart,
|
||||||
|
Q. Wu, T. Van Voorhis, A. A. Auer, M. Nooijen, L. D. Crosby, E. Brown,
|
||||||
|
G. Cisneros, G. I. Fann, H. Fruchtl, J. Garza, K. Hirao, R. A. Kendall,
|
||||||
|
J. A. Nichols, K. Tsemekhman, K. Wolinski, J. Anchell, D. E. Bernholdt,
|
||||||
|
P. Borowski, T. Clark, D. Clerc, H. Dachsel, M. J. O. Deegan, K. Dyall,
|
||||||
|
D. Elwood, E. Glendening, M. Gutowski, A. C. Hess, J. Jaffe, B. G. Johnson,
|
||||||
|
J. Ju, R. Kobayashi, R. Kutteh, Z. Lin, R. Littlefield, X. Long, B. Meng,
|
||||||
|
T. Nakajima, S. Niu, L. Pollack, M. Rosing, K. Glaesemann, G. Sandrone,
|
||||||
|
M. Stave, H. Taylor, G. Thomas, J. H. van Lenthe, A. T. Wong, Z. Zhang.
|
||||||
|
|
||||||
|
Total times cpu: 0.2s wall: 0.1s
|
||||||
448
examples/COUPLE/lammps_nwchem/lammps_nwchem/nwchem_wrap.py
Normal file
448
examples/COUPLE/lammps_nwchem/lammps_nwchem/nwchem_wrap.py
Normal file
@ -0,0 +1,448 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
# ----------------------------------------------------------------------
|
||||||
|
# LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||||
|
# http://lammps.sandia.gov, Sandia National Laboratories
|
||||||
|
# Steve Plimpton, sjplimp@sandia.gov
|
||||||
|
# ----------------------------------------------------------------------
|
||||||
|
|
||||||
|
# Syntax: nwchem_wrap.py file/zmq ao/pw input_template
|
||||||
|
# file/zmg = messaging mode, must match LAMMPS messaging mode
|
||||||
|
# ao/pw = basis set mode, selects between atom-centered and plane-wave
|
||||||
|
# the input_template file must correspond to the appropriate basis set mode:
|
||||||
|
# the "ao" mode supports the scf and dft modules in NWChem,
|
||||||
|
# the "pw" mode supports the nwpw module.
|
||||||
|
# input_template = NWChem input file used as template, must include a
|
||||||
|
# "geometry" block with the atoms in the simulation, dummy
|
||||||
|
# xyz coordinates should be included (but are not used).
|
||||||
|
# Atom ordering must match LAMMPS input.
|
||||||
|
|
||||||
|
# wrapper on NWChem
|
||||||
|
# receives message with list of coords
|
||||||
|
# creates NWChem inputs
|
||||||
|
# invokes NWChem to calculate self-consistent energy of that config
|
||||||
|
# reads NWChem outputs
|
||||||
|
# sends message with energy, forces, pressure to client
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
import sys
|
||||||
|
|
||||||
|
version = sys.version_info[0]
|
||||||
|
if version == 3:
|
||||||
|
sys.exit("The CSlib python wrapper does not yet support python 3")
|
||||||
|
|
||||||
|
import subprocess
|
||||||
|
import re
|
||||||
|
import os
|
||||||
|
import shutil
|
||||||
|
from cslib import CSlib
|
||||||
|
|
||||||
|
# comment out 2nd line once 1st line is correct for your system
|
||||||
|
|
||||||
|
nwchemcmd = "mpirun -np 1 /usr/bin/nwchem nwchem_lammps.nw > "
|
||||||
|
nwchemcmd = "touch tmp"
|
||||||
|
|
||||||
|
# enums matching FixClientMD class in LAMMPS
|
||||||
|
|
||||||
|
SETUP,STEP = range(1,2+1)
|
||||||
|
DIM,PERIODICITY,ORIGIN,BOX,NATOMS,NTYPES,TYPES,COORDS,UNITS,CHARGE = range(1,10+1)
|
||||||
|
FORCES,ENERGY,VIRIAL,ERROR = range(1,4+1)
|
||||||
|
|
||||||
|
# -------------------------------------
|
||||||
|
# functions
|
||||||
|
|
||||||
|
# error message and exit
|
||||||
|
|
||||||
|
def error(txt):
|
||||||
|
print("ERROR:",txt)
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
# -------------------------------------
|
||||||
|
# read initial input file to setup problem
|
||||||
|
# return natoms
|
||||||
|
|
||||||
|
def nwchem_setup_ao(input):
|
||||||
|
|
||||||
|
template = open(input,'r')
|
||||||
|
|
||||||
|
geometry_block = False
|
||||||
|
natoms = 0
|
||||||
|
|
||||||
|
while True:
|
||||||
|
line = template.readline()
|
||||||
|
if not line: break
|
||||||
|
|
||||||
|
if geometry_block and re.search("end",line):
|
||||||
|
geometry_block = False
|
||||||
|
if geometry_block and not re.match("#",line) :
|
||||||
|
natoms += 1
|
||||||
|
if re.search("geometry",line):
|
||||||
|
geometry_block = True
|
||||||
|
|
||||||
|
return natoms
|
||||||
|
|
||||||
|
# -------------------------------------
|
||||||
|
# write a new input file for NWChem
|
||||||
|
# assumes the NWChem input geometry is to be specified in angstroms
|
||||||
|
|
||||||
|
def nwchem_input_write_ao(input,coords):
|
||||||
|
|
||||||
|
template = open(input,'r')
|
||||||
|
new_input = open("nwchem_lammps.nw",'w')
|
||||||
|
|
||||||
|
geometry_block = False
|
||||||
|
i = 0
|
||||||
|
|
||||||
|
while True:
|
||||||
|
line = template.readline()
|
||||||
|
if not line: break
|
||||||
|
|
||||||
|
if geometry_block and not re.match("#",line) and re.search("end",line):
|
||||||
|
geometry_block = False
|
||||||
|
if os.path.exists("nwchem_lammps.movecs"):
|
||||||
|
# The below is hacky, but one of these lines will be ignored
|
||||||
|
# by NWChem depending on if the input file is for scf/dft.
|
||||||
|
append = "\nscf\n vectors input nwchem_lammps.movecs\nend\n"
|
||||||
|
append2 = "\ndft\n vectors input nwchem_lammps.movecs\nend\n"
|
||||||
|
line = line + append + append2
|
||||||
|
|
||||||
|
if geometry_block and not re.match("#",line):
|
||||||
|
x = coords[3*i+0]
|
||||||
|
y = coords[3*i+1]
|
||||||
|
z = coords[3*i+2]
|
||||||
|
coord_string = " %g %g %g \n" % (x,y,z)
|
||||||
|
atom_string = line.split()[0]
|
||||||
|
line = atom_string + coord_string
|
||||||
|
i += 1
|
||||||
|
|
||||||
|
if (not re.match("#",line)) and re.search("geometry",line):
|
||||||
|
geometry_block = True
|
||||||
|
line = "geometry units angstrom noautosym\n"
|
||||||
|
|
||||||
|
print(line,file=new_input,end='')
|
||||||
|
|
||||||
|
new_input.close()
|
||||||
|
|
||||||
|
# -------------------------------------
|
||||||
|
# read a NWChem output nwchem_lammps.out file
|
||||||
|
|
||||||
|
def nwchem_read_ao(natoms, log):
|
||||||
|
|
||||||
|
nwchem_output = open(log, 'r')
|
||||||
|
energy_pattern = r"Total \w+ energy"
|
||||||
|
gradient_pattern = "x y z x y z"
|
||||||
|
|
||||||
|
eout = 0.0
|
||||||
|
fout = []
|
||||||
|
|
||||||
|
while True:
|
||||||
|
line = nwchem_output.readline()
|
||||||
|
if not line: break
|
||||||
|
|
||||||
|
# pattern match for energy
|
||||||
|
if re.search(energy_pattern,line):
|
||||||
|
eout = float(line.split()[4])
|
||||||
|
|
||||||
|
# pattern match for forces
|
||||||
|
if re.search(gradient_pattern, line):
|
||||||
|
for i in range(natoms):
|
||||||
|
line = nwchem_output.readline()
|
||||||
|
forces = line.split()
|
||||||
|
fout += [float(forces[5]), float(forces[6]), float(forces[7])]
|
||||||
|
|
||||||
|
# convert units
|
||||||
|
hartree2eV = 27.21138602
|
||||||
|
bohr2angstrom = 0.52917721092
|
||||||
|
eout = eout * hartree2eV
|
||||||
|
fout = [i * hartree2eV/bohr2angstrom for i in fout]
|
||||||
|
print(eout)
|
||||||
|
|
||||||
|
return eout,fout
|
||||||
|
|
||||||
|
# -------------------------------------
|
||||||
|
# read initial planewave input file to setup problem
|
||||||
|
# return natoms,box
|
||||||
|
def nwchem_setup_pw(input):
|
||||||
|
|
||||||
|
template = open(input,'r')
|
||||||
|
|
||||||
|
geometry_block = False
|
||||||
|
system_block = False
|
||||||
|
coord_pattern = r"^\s*\w{1,2}(?:\s+-?(?:\d+.?\d*|\d*.?\d+)){3}"
|
||||||
|
natoms = 0
|
||||||
|
box = []
|
||||||
|
|
||||||
|
while True:
|
||||||
|
line = template.readline()
|
||||||
|
if not line: break
|
||||||
|
|
||||||
|
if geometry_block and re.search("system crystal",line):
|
||||||
|
system_block = True
|
||||||
|
for i in range(3):
|
||||||
|
line = template.readline()
|
||||||
|
line = re.sub(r'd|D', 'e', line)
|
||||||
|
box += [float(line.split()[1])]
|
||||||
|
|
||||||
|
if geometry_block and not system_block and re.match("#",line) and re.search("end",line):
|
||||||
|
geometry_block = False
|
||||||
|
|
||||||
|
if system_block and re.search("end",line):
|
||||||
|
system_block = False
|
||||||
|
|
||||||
|
if geometry_block and not re.match("#",line) and re.search(coord_pattern,line):
|
||||||
|
natoms += 1
|
||||||
|
|
||||||
|
if re.search("geometry",line) and not re.match("#",line):
|
||||||
|
geometry_block = True
|
||||||
|
|
||||||
|
return natoms,box
|
||||||
|
|
||||||
|
# -------------------------------------
|
||||||
|
# write a new planewave input file for NWChem
|
||||||
|
# assumes the NWChem input geometry is to be specified fractional coordinates
|
||||||
|
|
||||||
|
def nwchem_input_write_pw(input,coords,box):
|
||||||
|
|
||||||
|
template = open(input,'r')
|
||||||
|
new_input = open("nwchem_lammps.nw",'w')
|
||||||
|
|
||||||
|
writing_atoms = False
|
||||||
|
geometry_block = False
|
||||||
|
system_block = False
|
||||||
|
coord_pattern = r"^\s*\w{1,2}(?:\s+-?(?:\d+.?\d*|\d*.?\d+)){3}"
|
||||||
|
i = 0
|
||||||
|
|
||||||
|
while True:
|
||||||
|
line = template.readline()
|
||||||
|
if not line: break
|
||||||
|
|
||||||
|
if geometry_block and re.search("system crystal",line):
|
||||||
|
system_block = True
|
||||||
|
|
||||||
|
if geometry_block and not system_block and not re.match("#",line) and re.search("end",line):
|
||||||
|
geometry_block = False
|
||||||
|
if os.path.exists("nwchem_lammps.movecs"):
|
||||||
|
append = "\nnwpw\n vectors input nwchem_lammps.movecs\nend\n"
|
||||||
|
line = line + append
|
||||||
|
|
||||||
|
if system_block and re.search("end",line):
|
||||||
|
system_block = False
|
||||||
|
|
||||||
|
if geometry_block and not re.match("#",line) and re.search(coord_pattern,line):
|
||||||
|
x = coords[3*i+0] / box[0]
|
||||||
|
y = coords[3*i+1] / box[1]
|
||||||
|
z = coords[3*i+2] / box[2]
|
||||||
|
coord_string = " %g %g %g \n" % (x,y,z)
|
||||||
|
atom_string = line.split()[0]
|
||||||
|
line = atom_string + coord_string
|
||||||
|
i += 1
|
||||||
|
|
||||||
|
if re.search("geometry",line) and not re.match("#",line):
|
||||||
|
geometry_block = True
|
||||||
|
|
||||||
|
print(line,file=new_input,end='')
|
||||||
|
|
||||||
|
new_input.close()
|
||||||
|
|
||||||
|
# -------------------------------------
|
||||||
|
# read a NWChem output nwchem_lammps.out file for planewave calculation
|
||||||
|
|
||||||
|
def nwchem_read_pw(log):
|
||||||
|
nw_output = open(log, 'r')
|
||||||
|
|
||||||
|
eout = 0.0
|
||||||
|
sout = []
|
||||||
|
fout = []
|
||||||
|
reading_forces = False
|
||||||
|
|
||||||
|
while True:
|
||||||
|
line = nw_output.readline()
|
||||||
|
if not line: break
|
||||||
|
|
||||||
|
# pattern match for energy
|
||||||
|
if re.search("PSPW energy",line):
|
||||||
|
eout = float(line.split()[4])
|
||||||
|
|
||||||
|
# pattern match for forces
|
||||||
|
if re.search("C\.O\.M", line):
|
||||||
|
reading_forces = False
|
||||||
|
if reading_forces:
|
||||||
|
forces = line.split()
|
||||||
|
fout += [float(forces[3]), float(forces[4]), float(forces[5])]
|
||||||
|
if re.search("Ion Forces",line):
|
||||||
|
reading_forces = True
|
||||||
|
|
||||||
|
# pattern match for stress
|
||||||
|
if re.search("=== total gradient ===",line):
|
||||||
|
stensor = []
|
||||||
|
for i in range(3):
|
||||||
|
line = nw_output.readline()
|
||||||
|
line = line.replace("S ="," ")
|
||||||
|
stress = line.split()
|
||||||
|
stensor += [float(stress[1]), float(stress[2]), float(stress[3])]
|
||||||
|
sxx = stensor[0]
|
||||||
|
syy = stensor[4]
|
||||||
|
szz = stensor[8]
|
||||||
|
sxy = 0.5 * (float(stensor[1]) + float(stensor[3]))
|
||||||
|
sxz = 0.5 * (stensor[2] + stensor[6])
|
||||||
|
syz = 0.5 * (stensor[5] + stensor[7])
|
||||||
|
sout = [sxx,syy,szz,sxy,sxz,syz]
|
||||||
|
|
||||||
|
# convert units
|
||||||
|
hartree2eV = 27.21138602
|
||||||
|
bohr2angstrom = 0.52917721092
|
||||||
|
austress2bar = 294210156.97
|
||||||
|
eout = eout * hartree2eV
|
||||||
|
fout = [i * hartree2eV/bohr2angstrom for i in fout]
|
||||||
|
sout = [i * austress2bar for i in sout]
|
||||||
|
|
||||||
|
return eout,fout,sout
|
||||||
|
|
||||||
|
# -------------------------------------
|
||||||
|
# main program
|
||||||
|
|
||||||
|
# command-line args
|
||||||
|
#
|
||||||
|
if len(sys.argv) != 4:
|
||||||
|
print("Syntax: python nwchem_wrap.py file/zmq ao/pw input_template")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
comm_mode = sys.argv[1]
|
||||||
|
basis_type = sys.argv[2]
|
||||||
|
input_template = sys.argv[3]
|
||||||
|
|
||||||
|
if comm_mode == "file": cs = CSlib(1,comm_mode,"tmp.couple",None)
|
||||||
|
elif comm_mode == "zmq": cs = CSlib(1,comm_mode,"*:5555",None)
|
||||||
|
else:
|
||||||
|
print("Syntax: python nwchem_wrap.py file/zmq")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
|
||||||
|
natoms = 0
|
||||||
|
box = []
|
||||||
|
if basis_type == "ao":
|
||||||
|
natoms = nwchem_setup_ao(input_template)
|
||||||
|
elif basis_type == "pw":
|
||||||
|
natoms,box = nwchem_setup_pw(input_template)
|
||||||
|
|
||||||
|
# initial message for AIMD protocol
|
||||||
|
|
||||||
|
msgID,nfield,fieldID,fieldtype,fieldlen = cs.recv()
|
||||||
|
if msgID != 0: error("Bad initial client/server handshake")
|
||||||
|
protocol = cs.unpack_string(1)
|
||||||
|
if protocol != "md": error("Mismatch in client/server protocol")
|
||||||
|
cs.send(0,0)
|
||||||
|
|
||||||
|
# endless server loop
|
||||||
|
|
||||||
|
i = 0
|
||||||
|
if not os.path.exists("nwchem_logs"):
|
||||||
|
os.mkdir("nwchem_logs")
|
||||||
|
|
||||||
|
while 1:
|
||||||
|
|
||||||
|
# recv message from client
|
||||||
|
# msgID = 0 = all-done message
|
||||||
|
|
||||||
|
msgID,nfield,fieldID,fieldtype,fieldlen = cs.recv()
|
||||||
|
if msgID < 0: break
|
||||||
|
|
||||||
|
# SETUP receive at beginning of each run
|
||||||
|
# required fields: DIM, PERIODICITY, ORIGIN, BOX,
|
||||||
|
# NATOMS, COORDS
|
||||||
|
# optional fields: others in enum above, but NWChem ignores them
|
||||||
|
|
||||||
|
if msgID == SETUP:
|
||||||
|
|
||||||
|
origin = []
|
||||||
|
box_lmp = []
|
||||||
|
natoms_recv = ntypes_recv = 0
|
||||||
|
types = []
|
||||||
|
coords = []
|
||||||
|
|
||||||
|
for field in fieldID:
|
||||||
|
if field == DIM:
|
||||||
|
dim = cs.unpack_int(DIM)
|
||||||
|
if dim != 3: error("NWChem only performs 3d simulations")
|
||||||
|
elif field == PERIODICITY:
|
||||||
|
periodicity = cs.unpack(PERIODICITY,1)
|
||||||
|
if basis_type == "ao":
|
||||||
|
if periodicity[0] or periodicity[1] or periodicity[2]:
|
||||||
|
error("NWChem AO basis wrapper only currently supports fully aperiodic systems")
|
||||||
|
elif basis_type == "pw":
|
||||||
|
if not periodicity[0] or not periodicity[1] or not periodicity[2]:
|
||||||
|
error("NWChem PW basis wrapper only currently supports fully periodic systems")
|
||||||
|
elif field == ORIGIN:
|
||||||
|
origin = cs.unpack(ORIGIN,1)
|
||||||
|
elif field == BOX:
|
||||||
|
box_lmp = cs.unpack(BOX,1)
|
||||||
|
if (basis_type == "pw"):
|
||||||
|
if (box[0] != box_lmp[0] or box[1] != box_lmp[4] or box[2] != box_lmp[8]):
|
||||||
|
error("NWChem wrapper mismatch in box dimensions")
|
||||||
|
elif field == NATOMS:
|
||||||
|
natoms_recv = cs.unpack_int(NATOMS)
|
||||||
|
if natoms != natoms_recv:
|
||||||
|
error("NWChem wrapper mismatch in number of atoms")
|
||||||
|
elif field == COORDS:
|
||||||
|
coords = cs.unpack(COORDS,1)
|
||||||
|
|
||||||
|
if not origin or not box_lmp or not natoms or not coords:
|
||||||
|
error("Required NWChem wrapper setup field not received");
|
||||||
|
|
||||||
|
# STEP receive at each timestep of run or minimization
|
||||||
|
# required fields: COORDS
|
||||||
|
# optional fields: ORIGIN, BOX
|
||||||
|
|
||||||
|
elif msgID == STEP:
|
||||||
|
|
||||||
|
coords = []
|
||||||
|
|
||||||
|
for field in fieldID:
|
||||||
|
if field == COORDS:
|
||||||
|
coords = cs.unpack(COORDS,1)
|
||||||
|
|
||||||
|
if not coords: error("Required NWChem wrapper step field not received");
|
||||||
|
|
||||||
|
else: error("NWChem wrapper received unrecognized message")
|
||||||
|
|
||||||
|
# unpack coords from client
|
||||||
|
# create NWChem input
|
||||||
|
|
||||||
|
if basis_type == "ao":
|
||||||
|
nwchem_input_write_ao(input_template,coords)
|
||||||
|
elif basis_type == "pw":
|
||||||
|
nwchem_input_write_pw(input_template,coords,box)
|
||||||
|
|
||||||
|
# invoke NWChem
|
||||||
|
|
||||||
|
i += 1
|
||||||
|
log = "nwchem_lammps.out"
|
||||||
|
archive = "nwchem_logs/nwchem_lammps" + str(i) + ".out"
|
||||||
|
cmd = nwchemcmd + log
|
||||||
|
print("\nLaunching NWChem ...")
|
||||||
|
print(cmd)
|
||||||
|
subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True)
|
||||||
|
|
||||||
|
shutil.copyfile(log,archive)
|
||||||
|
|
||||||
|
# process NWChem output
|
||||||
|
|
||||||
|
if basis_type == "ao":
|
||||||
|
energy,forces = nwchem_read_ao(natoms,log)
|
||||||
|
virial = [0,0,0,0,0,0]
|
||||||
|
elif basis_type == "pw":
|
||||||
|
energy,forces,virial = nwchem_read_pw(log)
|
||||||
|
|
||||||
|
# return forces, energy to client
|
||||||
|
cs.send(msgID,3)
|
||||||
|
cs.pack(FORCES,4,3*natoms,forces)
|
||||||
|
cs.pack_double(ENERGY,energy)
|
||||||
|
cs.pack(VIRIAL,4,6,virial)
|
||||||
|
|
||||||
|
# final reply to client
|
||||||
|
|
||||||
|
cs.send(0,0)
|
||||||
|
|
||||||
|
# clean-up
|
||||||
|
|
||||||
|
del cs
|
||||||
15
examples/COUPLE/lammps_nwchem/lammps_nwchem/planewave/data.W
Normal file
15
examples/COUPLE/lammps_nwchem/lammps_nwchem/planewave/data.W
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
LAMMPS W data file
|
||||||
|
|
||||||
|
2 atoms
|
||||||
|
|
||||||
|
1 atom types
|
||||||
|
|
||||||
|
0.0 3.16 xlo xhi
|
||||||
|
0.0 3.16 ylo yhi
|
||||||
|
0.0 3.16 zlo zhi
|
||||||
|
|
||||||
|
Atoms
|
||||||
|
|
||||||
|
1 1 0.000 0.000 0.000
|
||||||
|
2 1 1.58 1.58 1.58
|
||||||
|
|
||||||
@ -0,0 +1,34 @@
|
|||||||
|
# small W unit cell for use with NWChem
|
||||||
|
|
||||||
|
variable mode index file
|
||||||
|
|
||||||
|
if "${mode} == file" then &
|
||||||
|
"message client md file tmp.couple" &
|
||||||
|
elif "${mode} == zmq" &
|
||||||
|
"message client md zmq localhost:5555" &
|
||||||
|
|
||||||
|
variable x index 1
|
||||||
|
variable y index 1
|
||||||
|
variable z index 1
|
||||||
|
|
||||||
|
units metal
|
||||||
|
atom_style atomic
|
||||||
|
atom_modify sort 0 0.0 map yes
|
||||||
|
|
||||||
|
read_data data.W
|
||||||
|
mass 1 183.85
|
||||||
|
|
||||||
|
replicate $x $y $z
|
||||||
|
|
||||||
|
velocity all create 300.0 87287 loop geom
|
||||||
|
|
||||||
|
neighbor 0.3 bin
|
||||||
|
neigh_modify delay 0 every 10 check no
|
||||||
|
|
||||||
|
fix 1 all nve
|
||||||
|
fix 2 all client/md
|
||||||
|
fix_modify 2 energy yes
|
||||||
|
|
||||||
|
thermo 1
|
||||||
|
run 3
|
||||||
|
|
||||||
@ -0,0 +1,76 @@
|
|||||||
|
LAMMPS (18 Sep 2018)
|
||||||
|
# small W unit cell for use with NWChem
|
||||||
|
|
||||||
|
variable mode index file
|
||||||
|
|
||||||
|
if "${mode} == file" then "message client md file tmp.couple" elif "${mode} == zmq" "message client md zmq localhost:5555"
|
||||||
|
message client md file tmp.couple
|
||||||
|
variable x index 1
|
||||||
|
variable y index 1
|
||||||
|
variable z index 1
|
||||||
|
|
||||||
|
units metal
|
||||||
|
atom_style atomic
|
||||||
|
atom_modify sort 0 0.0 map yes
|
||||||
|
|
||||||
|
read_data data.W
|
||||||
|
orthogonal box = (0 0 0) to (3.16 3.16 3.16)
|
||||||
|
1 by 1 by 1 MPI processor grid
|
||||||
|
reading atoms ...
|
||||||
|
2 atoms
|
||||||
|
mass 1 183.85
|
||||||
|
|
||||||
|
replicate $x $y $z
|
||||||
|
replicate 1 $y $z
|
||||||
|
replicate 1 1 $z
|
||||||
|
replicate 1 1 1
|
||||||
|
orthogonal box = (0 0 0) to (3.16 3.16 3.16)
|
||||||
|
1 by 1 by 1 MPI processor grid
|
||||||
|
2 atoms
|
||||||
|
Time spent = 0.000187325 secs
|
||||||
|
|
||||||
|
velocity all create 300.0 87287 loop geom
|
||||||
|
|
||||||
|
neighbor 0.3 bin
|
||||||
|
neigh_modify delay 0 every 10 check no
|
||||||
|
|
||||||
|
fix 1 all nve
|
||||||
|
fix 2 all client/md
|
||||||
|
fix_modify 2 energy yes
|
||||||
|
|
||||||
|
thermo 1
|
||||||
|
run 3
|
||||||
|
Per MPI rank memory allocation (min/avg/max) = 1.8 | 1.8 | 1.8 Mbytes
|
||||||
|
Step Temp E_pair E_mol TotEng Press
|
||||||
|
0 300 0 0 -549.75686 36815830
|
||||||
|
1 300 0 0 -549.75686 36815830
|
||||||
|
2 300 0 0 -549.75686 36815830
|
||||||
|
3 300 0 0 -549.75686 36815830
|
||||||
|
Loop time of 0.400933 on 1 procs for 3 steps with 2 atoms
|
||||||
|
|
||||||
|
Performance: 0.646 ns/day, 37.123 hours/ns, 7.483 timesteps/s
|
||||||
|
0.1% CPU use with 1 MPI tasks x 1 OpenMP threads
|
||||||
|
|
||||||
|
MPI task timing breakdown:
|
||||||
|
Section | min time | avg time | max time |%varavg| %total
|
||||||
|
---------------------------------------------------------------
|
||||||
|
Pair | 0 | 0 | 0 | 0.0 | 0.00
|
||||||
|
Neigh | 0 | 0 | 0 | 0.0 | 0.00
|
||||||
|
Comm | 4.755e-06 | 4.755e-06 | 4.755e-06 | 0.0 | 0.00
|
||||||
|
Output | 0.00010114 | 0.00010114 | 0.00010114 | 0.0 | 0.03
|
||||||
|
Modify | 0.40082 | 0.40082 | 0.40082 | 0.0 | 99.97
|
||||||
|
Other | | 1.232e-05 | | | 0.00
|
||||||
|
|
||||||
|
Nlocal: 2 ave 2 max 2 min
|
||||||
|
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||||
|
Nghost: 7 ave 7 max 7 min
|
||||||
|
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||||
|
Neighs: 0 ave 0 max 0 min
|
||||||
|
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||||
|
|
||||||
|
Total # of neighbors = 0
|
||||||
|
Ave neighs/atom = 0
|
||||||
|
Neighbor list builds = 0
|
||||||
|
Dangerous builds not checked
|
||||||
|
|
||||||
|
Total wall time: 0:00:09
|
||||||
File diff suppressed because it is too large
Load Diff
28
examples/COUPLE/lammps_nwchem/lammps_nwchem/planewave/w.nw
Normal file
28
examples/COUPLE/lammps_nwchem/lammps_nwchem/planewave/w.nw
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
echo
|
||||||
|
|
||||||
|
#**** Enter the geometry using fractional coordinates ****
|
||||||
|
geometry units angstrom noautosym
|
||||||
|
system crystal
|
||||||
|
lat_a 3.16d0
|
||||||
|
lat_b 3.16d0
|
||||||
|
lat_c 3.16d0
|
||||||
|
end
|
||||||
|
W 0.0 0.0 0.0
|
||||||
|
W 0.5 0.5 0.5
|
||||||
|
end
|
||||||
|
|
||||||
|
#***** setup the nwpw gamma point code ****
|
||||||
|
nwpw
|
||||||
|
simulation_cell
|
||||||
|
ngrid 16 16 16
|
||||||
|
end
|
||||||
|
ewald_ncut 8
|
||||||
|
mulliken
|
||||||
|
lcao #old default
|
||||||
|
end
|
||||||
|
|
||||||
|
nwpw
|
||||||
|
tolerances 1.0d-9 1.0d-9
|
||||||
|
end
|
||||||
|
|
||||||
|
task pspw stress
|
||||||
448
examples/COUPLE/lammps_nwchem/nwchem_wrap.py
Normal file
448
examples/COUPLE/lammps_nwchem/nwchem_wrap.py
Normal file
@ -0,0 +1,448 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
# ----------------------------------------------------------------------
|
||||||
|
# LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||||
|
# http://lammps.sandia.gov, Sandia National Laboratories
|
||||||
|
# Steve Plimpton, sjplimp@sandia.gov
|
||||||
|
# ----------------------------------------------------------------------
|
||||||
|
|
||||||
|
# Syntax: nwchem_wrap.py file/zmq ao/pw input_template
|
||||||
|
# file/zmg = messaging mode, must match LAMMPS messaging mode
|
||||||
|
# ao/pw = basis set mode, selects between atom-centered and plane-wave
|
||||||
|
# the input_template file must correspond to the appropriate basis set mode:
|
||||||
|
# the "ao" mode supports the scf and dft modules in NWChem,
|
||||||
|
# the "pw" mode supports the nwpw module.
|
||||||
|
# input_template = NWChem input file used as template, must include a
|
||||||
|
# "geometry" block with the atoms in the simulation, dummy
|
||||||
|
# xyz coordinates should be included (but are not used).
|
||||||
|
# Atom ordering must match LAMMPS input.
|
||||||
|
|
||||||
|
# wrapper on NWChem
|
||||||
|
# receives message with list of coords
|
||||||
|
# creates NWChem inputs
|
||||||
|
# invokes NWChem to calculate self-consistent energy of that config
|
||||||
|
# reads NWChem outputs
|
||||||
|
# sends message with energy, forces, pressure to client
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
import sys
|
||||||
|
|
||||||
|
version = sys.version_info[0]
|
||||||
|
if version == 3:
|
||||||
|
sys.exit("The CSlib python wrapper does not yet support python 3")
|
||||||
|
|
||||||
|
import subprocess
|
||||||
|
import re
|
||||||
|
import os
|
||||||
|
import shutil
|
||||||
|
from cslib import CSlib
|
||||||
|
|
||||||
|
# comment out 2nd line once 1st line is correct for your system
|
||||||
|
|
||||||
|
nwchemcmd = "mpirun -np 1 /usr/bin/nwchem nwchem_lammps.nw > "
|
||||||
|
nwchemcmd = "touch tmp"
|
||||||
|
|
||||||
|
# enums matching FixClientMD class in LAMMPS
|
||||||
|
|
||||||
|
SETUP,STEP = range(1,2+1)
|
||||||
|
DIM,PERIODICITY,ORIGIN,BOX,NATOMS,NTYPES,TYPES,COORDS,UNITS,CHARGE = range(1,10+1)
|
||||||
|
FORCES,ENERGY,VIRIAL,ERROR = range(1,4+1)
|
||||||
|
|
||||||
|
# -------------------------------------
|
||||||
|
# functions
|
||||||
|
|
||||||
|
# error message and exit
|
||||||
|
|
||||||
|
def error(txt):
|
||||||
|
print("ERROR:",txt)
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
# -------------------------------------
|
||||||
|
# read initial input file to setup problem
|
||||||
|
# return natoms
|
||||||
|
|
||||||
|
def nwchem_setup_ao(input):
|
||||||
|
|
||||||
|
template = open(input,'r')
|
||||||
|
|
||||||
|
geometry_block = False
|
||||||
|
natoms = 0
|
||||||
|
|
||||||
|
while True:
|
||||||
|
line = template.readline()
|
||||||
|
if not line: break
|
||||||
|
|
||||||
|
if geometry_block and re.search("end",line):
|
||||||
|
geometry_block = False
|
||||||
|
if geometry_block and not re.match("#",line) :
|
||||||
|
natoms += 1
|
||||||
|
if re.search("geometry",line):
|
||||||
|
geometry_block = True
|
||||||
|
|
||||||
|
return natoms
|
||||||
|
|
||||||
|
# -------------------------------------
|
||||||
|
# write a new input file for NWChem
|
||||||
|
# assumes the NWChem input geometry is to be specified in angstroms
|
||||||
|
|
||||||
|
def nwchem_input_write_ao(input,coords):
|
||||||
|
|
||||||
|
template = open(input,'r')
|
||||||
|
new_input = open("nwchem_lammps.nw",'w')
|
||||||
|
|
||||||
|
geometry_block = False
|
||||||
|
i = 0
|
||||||
|
|
||||||
|
while True:
|
||||||
|
line = template.readline()
|
||||||
|
if not line: break
|
||||||
|
|
||||||
|
if geometry_block and not re.match("#",line) and re.search("end",line):
|
||||||
|
geometry_block = False
|
||||||
|
if os.path.exists("nwchem_lammps.movecs"):
|
||||||
|
# The below is hacky, but one of these lines will be ignored
|
||||||
|
# by NWChem depending on if the input file is for scf/dft.
|
||||||
|
append = "\nscf\n vectors input nwchem_lammps.movecs\nend\n"
|
||||||
|
append2 = "\ndft\n vectors input nwchem_lammps.movecs\nend\n"
|
||||||
|
line = line + append + append2
|
||||||
|
|
||||||
|
if geometry_block and not re.match("#",line):
|
||||||
|
x = coords[3*i+0]
|
||||||
|
y = coords[3*i+1]
|
||||||
|
z = coords[3*i+2]
|
||||||
|
coord_string = " %g %g %g \n" % (x,y,z)
|
||||||
|
atom_string = line.split()[0]
|
||||||
|
line = atom_string + coord_string
|
||||||
|
i += 1
|
||||||
|
|
||||||
|
if (not re.match("#",line)) and re.search("geometry",line):
|
||||||
|
geometry_block = True
|
||||||
|
line = "geometry units angstrom noautosym\n"
|
||||||
|
|
||||||
|
print(line,file=new_input,end='')
|
||||||
|
|
||||||
|
new_input.close()
|
||||||
|
|
||||||
|
# -------------------------------------
|
||||||
|
# read a NWChem output nwchem_lammps.out file
|
||||||
|
|
||||||
|
def nwchem_read_ao(natoms, log):
|
||||||
|
|
||||||
|
nwchem_output = open(log, 'r')
|
||||||
|
energy_pattern = r"Total \w+ energy"
|
||||||
|
gradient_pattern = "x y z x y z"
|
||||||
|
|
||||||
|
eout = 0.0
|
||||||
|
fout = []
|
||||||
|
|
||||||
|
while True:
|
||||||
|
line = nwchem_output.readline()
|
||||||
|
if not line: break
|
||||||
|
|
||||||
|
# pattern match for energy
|
||||||
|
if re.search(energy_pattern,line):
|
||||||
|
eout = float(line.split()[4])
|
||||||
|
|
||||||
|
# pattern match for forces
|
||||||
|
if re.search(gradient_pattern, line):
|
||||||
|
for i in range(natoms):
|
||||||
|
line = nwchem_output.readline()
|
||||||
|
forces = line.split()
|
||||||
|
fout += [float(forces[5]), float(forces[6]), float(forces[7])]
|
||||||
|
|
||||||
|
# convert units
|
||||||
|
hartree2eV = 27.21138602
|
||||||
|
bohr2angstrom = 0.52917721092
|
||||||
|
eout = eout * hartree2eV
|
||||||
|
fout = [i * hartree2eV/bohr2angstrom for i in fout]
|
||||||
|
print(eout)
|
||||||
|
|
||||||
|
return eout,fout
|
||||||
|
|
||||||
|
# -------------------------------------
|
||||||
|
# read initial planewave input file to setup problem
|
||||||
|
# return natoms,box
|
||||||
|
def nwchem_setup_pw(input):
|
||||||
|
|
||||||
|
template = open(input,'r')
|
||||||
|
|
||||||
|
geometry_block = False
|
||||||
|
system_block = False
|
||||||
|
coord_pattern = r"^\s*\w{1,2}(?:\s+-?(?:\d+.?\d*|\d*.?\d+)){3}"
|
||||||
|
natoms = 0
|
||||||
|
box = []
|
||||||
|
|
||||||
|
while True:
|
||||||
|
line = template.readline()
|
||||||
|
if not line: break
|
||||||
|
|
||||||
|
if geometry_block and re.search("system crystal",line):
|
||||||
|
system_block = True
|
||||||
|
for i in range(3):
|
||||||
|
line = template.readline()
|
||||||
|
line = re.sub(r'd|D', 'e', line)
|
||||||
|
box += [float(line.split()[1])]
|
||||||
|
|
||||||
|
if geometry_block and not system_block and re.match("#",line) and re.search("end",line):
|
||||||
|
geometry_block = False
|
||||||
|
|
||||||
|
if system_block and re.search("end",line):
|
||||||
|
system_block = False
|
||||||
|
|
||||||
|
if geometry_block and not re.match("#",line) and re.search(coord_pattern,line):
|
||||||
|
natoms += 1
|
||||||
|
|
||||||
|
if re.search("geometry",line) and not re.match("#",line):
|
||||||
|
geometry_block = True
|
||||||
|
|
||||||
|
return natoms,box
|
||||||
|
|
||||||
|
# -------------------------------------
|
||||||
|
# write a new planewave input file for NWChem
|
||||||
|
# assumes the NWChem input geometry is to be specified fractional coordinates
|
||||||
|
|
||||||
|
def nwchem_input_write_pw(input,coords,box):
|
||||||
|
|
||||||
|
template = open(input,'r')
|
||||||
|
new_input = open("nwchem_lammps.nw",'w')
|
||||||
|
|
||||||
|
writing_atoms = False
|
||||||
|
geometry_block = False
|
||||||
|
system_block = False
|
||||||
|
coord_pattern = r"^\s*\w{1,2}(?:\s+-?(?:\d+.?\d*|\d*.?\d+)){3}"
|
||||||
|
i = 0
|
||||||
|
|
||||||
|
while True:
|
||||||
|
line = template.readline()
|
||||||
|
if not line: break
|
||||||
|
|
||||||
|
if geometry_block and re.search("system crystal",line):
|
||||||
|
system_block = True
|
||||||
|
|
||||||
|
if geometry_block and not system_block and not re.match("#",line) and re.search("end",line):
|
||||||
|
geometry_block = False
|
||||||
|
if os.path.exists("nwchem_lammps.movecs"):
|
||||||
|
append = "\nnwpw\n vectors input nwchem_lammps.movecs\nend\n"
|
||||||
|
line = line + append
|
||||||
|
|
||||||
|
if system_block and re.search("end",line):
|
||||||
|
system_block = False
|
||||||
|
|
||||||
|
if geometry_block and not re.match("#",line) and re.search(coord_pattern,line):
|
||||||
|
x = coords[3*i+0] / box[0]
|
||||||
|
y = coords[3*i+1] / box[1]
|
||||||
|
z = coords[3*i+2] / box[2]
|
||||||
|
coord_string = " %g %g %g \n" % (x,y,z)
|
||||||
|
atom_string = line.split()[0]
|
||||||
|
line = atom_string + coord_string
|
||||||
|
i += 1
|
||||||
|
|
||||||
|
if re.search("geometry",line) and not re.match("#",line):
|
||||||
|
geometry_block = True
|
||||||
|
|
||||||
|
print(line,file=new_input,end='')
|
||||||
|
|
||||||
|
new_input.close()
|
||||||
|
|
||||||
|
# -------------------------------------
|
||||||
|
# read a NWChem output nwchem_lammps.out file for planewave calculation
|
||||||
|
|
||||||
|
def nwchem_read_pw(log):
|
||||||
|
nw_output = open(log, 'r')
|
||||||
|
|
||||||
|
eout = 0.0
|
||||||
|
sout = []
|
||||||
|
fout = []
|
||||||
|
reading_forces = False
|
||||||
|
|
||||||
|
while True:
|
||||||
|
line = nw_output.readline()
|
||||||
|
if not line: break
|
||||||
|
|
||||||
|
# pattern match for energy
|
||||||
|
if re.search("PSPW energy",line):
|
||||||
|
eout = float(line.split()[4])
|
||||||
|
|
||||||
|
# pattern match for forces
|
||||||
|
if re.search("C\.O\.M", line):
|
||||||
|
reading_forces = False
|
||||||
|
if reading_forces:
|
||||||
|
forces = line.split()
|
||||||
|
fout += [float(forces[3]), float(forces[4]), float(forces[5])]
|
||||||
|
if re.search("Ion Forces",line):
|
||||||
|
reading_forces = True
|
||||||
|
|
||||||
|
# pattern match for stress
|
||||||
|
if re.search("=== total gradient ===",line):
|
||||||
|
stensor = []
|
||||||
|
for i in range(3):
|
||||||
|
line = nw_output.readline()
|
||||||
|
line = line.replace("S ="," ")
|
||||||
|
stress = line.split()
|
||||||
|
stensor += [float(stress[1]), float(stress[2]), float(stress[3])]
|
||||||
|
sxx = stensor[0]
|
||||||
|
syy = stensor[4]
|
||||||
|
szz = stensor[8]
|
||||||
|
sxy = 0.5 * (float(stensor[1]) + float(stensor[3]))
|
||||||
|
sxz = 0.5 * (stensor[2] + stensor[6])
|
||||||
|
syz = 0.5 * (stensor[5] + stensor[7])
|
||||||
|
sout = [sxx,syy,szz,sxy,sxz,syz]
|
||||||
|
|
||||||
|
# convert units
|
||||||
|
hartree2eV = 27.21138602
|
||||||
|
bohr2angstrom = 0.52917721092
|
||||||
|
austress2bar = 294210156.97
|
||||||
|
eout = eout * hartree2eV
|
||||||
|
fout = [i * hartree2eV/bohr2angstrom for i in fout]
|
||||||
|
sout = [i * austress2bar for i in sout]
|
||||||
|
|
||||||
|
return eout,fout,sout
|
||||||
|
|
||||||
|
# -------------------------------------
|
||||||
|
# main program
|
||||||
|
|
||||||
|
# command-line args
|
||||||
|
#
|
||||||
|
if len(sys.argv) != 4:
|
||||||
|
print("Syntax: python nwchem_wrap.py file/zmq ao/pw input_template")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
comm_mode = sys.argv[1]
|
||||||
|
basis_type = sys.argv[2]
|
||||||
|
input_template = sys.argv[3]
|
||||||
|
|
||||||
|
if comm_mode == "file": cs = CSlib(1,comm_mode,"tmp.couple",None)
|
||||||
|
elif comm_mode == "zmq": cs = CSlib(1,comm_mode,"*:5555",None)
|
||||||
|
else:
|
||||||
|
print("Syntax: python nwchem_wrap.py file/zmq")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
|
||||||
|
natoms = 0
|
||||||
|
box = []
|
||||||
|
if basis_type == "ao":
|
||||||
|
natoms = nwchem_setup_ao(input_template)
|
||||||
|
elif basis_type == "pw":
|
||||||
|
natoms,box = nwchem_setup_pw(input_template)
|
||||||
|
|
||||||
|
# initial message for AIMD protocol
|
||||||
|
|
||||||
|
msgID,nfield,fieldID,fieldtype,fieldlen = cs.recv()
|
||||||
|
if msgID != 0: error("Bad initial client/server handshake")
|
||||||
|
protocol = cs.unpack_string(1)
|
||||||
|
if protocol != "md": error("Mismatch in client/server protocol")
|
||||||
|
cs.send(0,0)
|
||||||
|
|
||||||
|
# endless server loop
|
||||||
|
|
||||||
|
i = 0
|
||||||
|
if not os.path.exists("nwchem_logs"):
|
||||||
|
os.mkdir("nwchem_logs")
|
||||||
|
|
||||||
|
while 1:
|
||||||
|
|
||||||
|
# recv message from client
|
||||||
|
# msgID = 0 = all-done message
|
||||||
|
|
||||||
|
msgID,nfield,fieldID,fieldtype,fieldlen = cs.recv()
|
||||||
|
if msgID < 0: break
|
||||||
|
|
||||||
|
# SETUP receive at beginning of each run
|
||||||
|
# required fields: DIM, PERIODICITY, ORIGIN, BOX,
|
||||||
|
# NATOMS, COORDS
|
||||||
|
# optional fields: others in enum above, but NWChem ignores them
|
||||||
|
|
||||||
|
if msgID == SETUP:
|
||||||
|
|
||||||
|
origin = []
|
||||||
|
box_lmp = []
|
||||||
|
natoms_recv = ntypes_recv = 0
|
||||||
|
types = []
|
||||||
|
coords = []
|
||||||
|
|
||||||
|
for field in fieldID:
|
||||||
|
if field == DIM:
|
||||||
|
dim = cs.unpack_int(DIM)
|
||||||
|
if dim != 3: error("NWChem only performs 3d simulations")
|
||||||
|
elif field == PERIODICITY:
|
||||||
|
periodicity = cs.unpack(PERIODICITY,1)
|
||||||
|
if basis_type == "ao":
|
||||||
|
if periodicity[0] or periodicity[1] or periodicity[2]:
|
||||||
|
error("NWChem AO basis wrapper only currently supports fully aperiodic systems")
|
||||||
|
elif basis_type == "pw":
|
||||||
|
if not periodicity[0] or not periodicity[1] or not periodicity[2]:
|
||||||
|
error("NWChem PW basis wrapper only currently supports fully periodic systems")
|
||||||
|
elif field == ORIGIN:
|
||||||
|
origin = cs.unpack(ORIGIN,1)
|
||||||
|
elif field == BOX:
|
||||||
|
box_lmp = cs.unpack(BOX,1)
|
||||||
|
if (basis_type == "pw"):
|
||||||
|
if (box[0] != box_lmp[0] or box[1] != box_lmp[4] or box[2] != box_lmp[8]):
|
||||||
|
error("NWChem wrapper mismatch in box dimensions")
|
||||||
|
elif field == NATOMS:
|
||||||
|
natoms_recv = cs.unpack_int(NATOMS)
|
||||||
|
if natoms != natoms_recv:
|
||||||
|
error("NWChem wrapper mismatch in number of atoms")
|
||||||
|
elif field == COORDS:
|
||||||
|
coords = cs.unpack(COORDS,1)
|
||||||
|
|
||||||
|
if not origin or not box_lmp or not natoms or not coords:
|
||||||
|
error("Required NWChem wrapper setup field not received");
|
||||||
|
|
||||||
|
# STEP receive at each timestep of run or minimization
|
||||||
|
# required fields: COORDS
|
||||||
|
# optional fields: ORIGIN, BOX
|
||||||
|
|
||||||
|
elif msgID == STEP:
|
||||||
|
|
||||||
|
coords = []
|
||||||
|
|
||||||
|
for field in fieldID:
|
||||||
|
if field == COORDS:
|
||||||
|
coords = cs.unpack(COORDS,1)
|
||||||
|
|
||||||
|
if not coords: error("Required NWChem wrapper step field not received");
|
||||||
|
|
||||||
|
else: error("NWChem wrapper received unrecognized message")
|
||||||
|
|
||||||
|
# unpack coords from client
|
||||||
|
# create NWChem input
|
||||||
|
|
||||||
|
if basis_type == "ao":
|
||||||
|
nwchem_input_write_ao(input_template,coords)
|
||||||
|
elif basis_type == "pw":
|
||||||
|
nwchem_input_write_pw(input_template,coords,box)
|
||||||
|
|
||||||
|
# invoke NWChem
|
||||||
|
|
||||||
|
i += 1
|
||||||
|
log = "nwchem_lammps.out"
|
||||||
|
archive = "nwchem_logs/nwchem_lammps" + str(i) + ".out"
|
||||||
|
cmd = nwchemcmd + log
|
||||||
|
print("\nLaunching NWChem ...")
|
||||||
|
print(cmd)
|
||||||
|
subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True)
|
||||||
|
|
||||||
|
shutil.copyfile(log,archive)
|
||||||
|
|
||||||
|
# process NWChem output
|
||||||
|
|
||||||
|
if basis_type == "ao":
|
||||||
|
energy,forces = nwchem_read_ao(natoms,log)
|
||||||
|
virial = [0,0,0,0,0,0]
|
||||||
|
elif basis_type == "pw":
|
||||||
|
energy,forces,virial = nwchem_read_pw(log)
|
||||||
|
|
||||||
|
# return forces, energy to client
|
||||||
|
cs.send(msgID,3)
|
||||||
|
cs.pack(FORCES,4,3*natoms,forces)
|
||||||
|
cs.pack_double(ENERGY,energy)
|
||||||
|
cs.pack(VIRIAL,4,6,virial)
|
||||||
|
|
||||||
|
# final reply to client
|
||||||
|
|
||||||
|
cs.send(0,0)
|
||||||
|
|
||||||
|
# clean-up
|
||||||
|
|
||||||
|
del cs
|
||||||
15
examples/COUPLE/lammps_nwchem/planewave/data.W
Normal file
15
examples/COUPLE/lammps_nwchem/planewave/data.W
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
LAMMPS W data file
|
||||||
|
|
||||||
|
2 atoms
|
||||||
|
|
||||||
|
1 atom types
|
||||||
|
|
||||||
|
0.0 3.16 xlo xhi
|
||||||
|
0.0 3.16 ylo yhi
|
||||||
|
0.0 3.16 zlo zhi
|
||||||
|
|
||||||
|
Atoms
|
||||||
|
|
||||||
|
1 1 0.000 0.000 0.000
|
||||||
|
2 1 1.58 1.58 1.58
|
||||||
|
|
||||||
34
examples/COUPLE/lammps_nwchem/planewave/in.client.W
Normal file
34
examples/COUPLE/lammps_nwchem/planewave/in.client.W
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
# small W unit cell for use with NWChem
|
||||||
|
|
||||||
|
variable mode index file
|
||||||
|
|
||||||
|
if "${mode} == file" then &
|
||||||
|
"message client md file tmp.couple" &
|
||||||
|
elif "${mode} == zmq" &
|
||||||
|
"message client md zmq localhost:5555" &
|
||||||
|
|
||||||
|
variable x index 1
|
||||||
|
variable y index 1
|
||||||
|
variable z index 1
|
||||||
|
|
||||||
|
units metal
|
||||||
|
atom_style atomic
|
||||||
|
atom_modify sort 0 0.0 map yes
|
||||||
|
|
||||||
|
read_data data.W
|
||||||
|
mass 1 183.85
|
||||||
|
|
||||||
|
replicate $x $y $z
|
||||||
|
|
||||||
|
velocity all create 300.0 87287 loop geom
|
||||||
|
|
||||||
|
neighbor 0.3 bin
|
||||||
|
neigh_modify delay 0 every 10 check no
|
||||||
|
|
||||||
|
fix 1 all nve
|
||||||
|
fix 2 all client/md
|
||||||
|
fix_modify 2 energy yes
|
||||||
|
|
||||||
|
thermo 1
|
||||||
|
run 3
|
||||||
|
|
||||||
76
examples/COUPLE/lammps_nwchem/planewave/log.client.output
Normal file
76
examples/COUPLE/lammps_nwchem/planewave/log.client.output
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
LAMMPS (18 Sep 2018)
|
||||||
|
# small W unit cell for use with NWChem
|
||||||
|
|
||||||
|
variable mode index file
|
||||||
|
|
||||||
|
if "${mode} == file" then "message client md file tmp.couple" elif "${mode} == zmq" "message client md zmq localhost:5555"
|
||||||
|
message client md file tmp.couple
|
||||||
|
variable x index 1
|
||||||
|
variable y index 1
|
||||||
|
variable z index 1
|
||||||
|
|
||||||
|
units metal
|
||||||
|
atom_style atomic
|
||||||
|
atom_modify sort 0 0.0 map yes
|
||||||
|
|
||||||
|
read_data data.W
|
||||||
|
orthogonal box = (0 0 0) to (3.16 3.16 3.16)
|
||||||
|
1 by 1 by 1 MPI processor grid
|
||||||
|
reading atoms ...
|
||||||
|
2 atoms
|
||||||
|
mass 1 183.85
|
||||||
|
|
||||||
|
replicate $x $y $z
|
||||||
|
replicate 1 $y $z
|
||||||
|
replicate 1 1 $z
|
||||||
|
replicate 1 1 1
|
||||||
|
orthogonal box = (0 0 0) to (3.16 3.16 3.16)
|
||||||
|
1 by 1 by 1 MPI processor grid
|
||||||
|
2 atoms
|
||||||
|
Time spent = 0.000187325 secs
|
||||||
|
|
||||||
|
velocity all create 300.0 87287 loop geom
|
||||||
|
|
||||||
|
neighbor 0.3 bin
|
||||||
|
neigh_modify delay 0 every 10 check no
|
||||||
|
|
||||||
|
fix 1 all nve
|
||||||
|
fix 2 all client/md
|
||||||
|
fix_modify 2 energy yes
|
||||||
|
|
||||||
|
thermo 1
|
||||||
|
run 3
|
||||||
|
Per MPI rank memory allocation (min/avg/max) = 1.8 | 1.8 | 1.8 Mbytes
|
||||||
|
Step Temp E_pair E_mol TotEng Press
|
||||||
|
0 300 0 0 -549.75686 36815830
|
||||||
|
1 300 0 0 -549.75686 36815830
|
||||||
|
2 300 0 0 -549.75686 36815830
|
||||||
|
3 300 0 0 -549.75686 36815830
|
||||||
|
Loop time of 0.400933 on 1 procs for 3 steps with 2 atoms
|
||||||
|
|
||||||
|
Performance: 0.646 ns/day, 37.123 hours/ns, 7.483 timesteps/s
|
||||||
|
0.1% CPU use with 1 MPI tasks x 1 OpenMP threads
|
||||||
|
|
||||||
|
MPI task timing breakdown:
|
||||||
|
Section | min time | avg time | max time |%varavg| %total
|
||||||
|
---------------------------------------------------------------
|
||||||
|
Pair | 0 | 0 | 0 | 0.0 | 0.00
|
||||||
|
Neigh | 0 | 0 | 0 | 0.0 | 0.00
|
||||||
|
Comm | 4.755e-06 | 4.755e-06 | 4.755e-06 | 0.0 | 0.00
|
||||||
|
Output | 0.00010114 | 0.00010114 | 0.00010114 | 0.0 | 0.03
|
||||||
|
Modify | 0.40082 | 0.40082 | 0.40082 | 0.0 | 99.97
|
||||||
|
Other | | 1.232e-05 | | | 0.00
|
||||||
|
|
||||||
|
Nlocal: 2 ave 2 max 2 min
|
||||||
|
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||||
|
Nghost: 7 ave 7 max 7 min
|
||||||
|
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||||
|
Neighs: 0 ave 0 max 0 min
|
||||||
|
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||||
|
|
||||||
|
Total # of neighbors = 0
|
||||||
|
Ave neighs/atom = 0
|
||||||
|
Neighbor list builds = 0
|
||||||
|
Dangerous builds not checked
|
||||||
|
|
||||||
|
Total wall time: 0:00:09
|
||||||
2305
examples/COUPLE/lammps_nwchem/planewave/nwchem_lammps.out
Normal file
2305
examples/COUPLE/lammps_nwchem/planewave/nwchem_lammps.out
Normal file
File diff suppressed because it is too large
Load Diff
28
examples/COUPLE/lammps_nwchem/planewave/w.nw
Normal file
28
examples/COUPLE/lammps_nwchem/planewave/w.nw
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
echo
|
||||||
|
|
||||||
|
#**** Enter the geometry using fractional coordinates ****
|
||||||
|
geometry units angstrom noautosym
|
||||||
|
system crystal
|
||||||
|
lat_a 3.16d0
|
||||||
|
lat_b 3.16d0
|
||||||
|
lat_c 3.16d0
|
||||||
|
end
|
||||||
|
W 0.0 0.0 0.0
|
||||||
|
W 0.5 0.5 0.5
|
||||||
|
end
|
||||||
|
|
||||||
|
#***** setup the nwpw gamma point code ****
|
||||||
|
nwpw
|
||||||
|
simulation_cell
|
||||||
|
ngrid 16 16 16
|
||||||
|
end
|
||||||
|
ewald_ncut 8
|
||||||
|
mulliken
|
||||||
|
lcao #old default
|
||||||
|
end
|
||||||
|
|
||||||
|
nwpw
|
||||||
|
tolerances 1.0d-9 1.0d-9
|
||||||
|
end
|
||||||
|
|
||||||
|
task pspw stress
|
||||||
Reference in New Issue
Block a user