LAMMPS Local Hessian

What is lammps_local_hessian?

lammps_local_hessian package consists of two modules for LAMMPS software package:

  1. 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, Refer to
  2. 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). 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.


lammps_local_hessian is licensed under GNU General Public License.

Tar file


Publications making substantial use of lammps_local_hessian modules or its derivatives should cite this software package via the link "" 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). bibtex


LAMMPS_LOCAL_HESSIAN: a package for LAMMPS software to calcualte the effective hessian for a group of atoms
Copyright (C) 2018  Sara Kadkhodaei 
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>.


Sara Kadkhodaei,


Take the following steps to add this package to your compilation of LAMMPS.

  1. Add the folder lammps_local_hessian to the src/ directory of the latest version of LAMMPS.
  2. In the makefile add the lammps_local_hessian in the Package variables.
  3. make yes-lammps_local_hessian
  4. make

For a detailed instruction on how to add packages to lammps comiplation, refer to LAMMPS manual at

Command line options

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

  1. 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
  2. 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.