What is lammps_local_hessian?
lammps_local_hessian package consists of two modules for LAMMPS software package:
- A compute module partialHessian that calculates the Hessian matrix for a group of atoms during a LAMMPS simulation. This module is a modification to the module developed by Anthony B. Costa, anthony.costa@numericalsolutions.org. Refer to http://bitbucket.org/numericalsolutions/lammps-hessian.
- A command module hessian that calculates the Hessian for a group of atoms according to the theory introduced in the following paper:
Sara Kadkhodaei and Axel van de Walle, "A simple local expression for the prefactor in transition state theory", J. Chem. Phys. 150, 144105 (2019). https://doi.org/10.1063/1.5086746 bibtex
In this method the partial Hessian is calcualted for a group of atoms while the atoms outside that group are relaxed during this procedure.
Download
lammps_local_hessian is licensed under GNU General Public License.
Tar file
- lammps_local_hessian source code: lammps_local_hessian.tar.gz
Citation
Publications making substantial use of lammps_local_hessian modules or its derivatives should cite this software package via the link "http://go.uic.edu/lammps_local_hessian" and the following paper
Sara Kadkhodaei and Axel van de Walle, "A simple local expression for the prefactor in transition state theory", J. Chem. Phys. 150, 144105 (2019). https://doi.org/10.1063/1.5086746 bibtex
License
LAMMPS_LOCAL_HESSIAN: a package for LAMMPS software to calcualte the effective hessian for a group of atoms Copyright (C) 2018 Sara Kadkhodaei sarakad@uic.edu
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/>.
Contact
Sara Kadkhodaei, sarakad@uic.edu
Add to LAMMPS
Take the following steps to add this package to your compilation of LAMMPS.
- Add the folder lammps_local_hessian to the src/ directory of the latest version of LAMMPS.
- In the makefile add the lammps_local_hessian in the Package variables.
- make yes-lammps_local_hessian
- make
For a detailed instruction on how to add packages to lammps comiplation, refer to LAMMPS manual at
https://lammps.sandia.gov/doc/Build_package.html.
Command line options
- For the compute module:
ID = user-assigned name for the computationcompute ID group-ID partialHessian epsilon
group-ID = ID of the group of atoms to perform the computation on
partialHessian = style name for this command
epsilon = displacement value for the centeral finite difference method
- For the command module:
group-ID = ID of the group of atoms to perform the command onhessian group-ID epsilon etol ftol nsteps maxiter
epsilon = displacement value for the centeral finite difference method
etol = stopping tolerance for energy (energy units) for minimizer
ftol = stopping tolerance for force (force units) for minimizer
nsteps = # of steps to run for minimizer
maxiter = max force evaluations for minimizer
****Caution****
Do not use hessian command in an input file that includes thermo or compute command. Otherwise unexpected errors may arise.
Sample LAMMPS input
# ------------------------ INITIALIZATION ----------------------------
units metal
dimension 3
atom_style atomic
atom_modify map array
boundary p p p
atom_modify sort 0 0.0
# ----------------------- ATOM DEFINITION ----------------------------
read_data data.initial.min
#define the origin of the circles that encompass the active region
variable xo equal (xlo+xhi)/2
variable yo equal (ylo+yhi)/2
variable zo equal (zlo+zhi)/2
region circ1 sphere ${xo} ${yo} ${zo} 9 units box
group active region circ1
group background subtract all active
# ------------------------ FORCE FIELDS ------------------------------
pair_style eam/alloy
pair_coeff * * Ag.eam.alloy Ag
neighbor 2.0 bin
neigh_modify delay 1 every 1
#----------------------calculate the partial Hessian for active region while relaxing the background
hessian active 0.015 0.0 1.0e-10 1000 100000
Output Hessian array
- For the compute module, "compute ID group-ID partialHessian epsilon", the best practice is to collect partial hessian into a data structure in an external C program, in a coupled simulation where one runs LAMMPS as a library. There are examples of how to do this in the examples/COUPLE directory of LAMMPS, for example, examples/COUPLE/simple/simple.c. To build LAMMPS as a share library use the tag make mode=shlib
- The command module "hessian group-ID epsilon etol ftol nsteps maxiter" automatically collects the partial hessian in hessian.out file.
Future development
Curently these module are designed for serial run. They still can be compiled with mpi but have to be executed on one core. Future improvment will design a parrallel implementation.