Commit 04cfaae5 authored by Andrew Schultz's avatar Andrew Schultz
Browse files

Fold HMA README into source code in preparation for move to MISC

parent 52a3d825
Loading
Loading
Loading
Loading

src/USER-HMA/README

deleted100644 → 0
+0 −30
Original line number Diff line number Diff line
The HMA package implements the compute hma command for LAMMPS, which implements
harmonically-mapped averaging for crystalline solids.  The current
implementation handles atomic crystals.

Computing the heat capacity relies on being able to compute the second
derivative of the energy with respect to atom positions.  This capability is
provided by the single2 method in Pair, but is currently only implemented for
the shifted-force LJ potential (lj/smooth/linear).  Pair::single2 takes a single
pair and (like Pair::single) returns the energy and sets the force as an out
parameter, but also sets the elements of 6-element double array out parameter,
which are the unique components of the atomic Hessian tensor for the pair.  A
helper method exists (Pair::pairTensor), which will compute the tensor from
linear derivatives and the vector between the positions.  HMA Heat capacity can
be computed for other models by implementing single2 in those Pair classes.

More information about HMA is available in these publications:

A. J. Schultz, D. A. Kofke, “Comprehensive high-precision high-accuracy
equation of state and coexistence properties for classical Lennard-Jones
crystals and low-temperature fluid phases”, J. Chem. Phys. 149, 204508 (2018)
https://dx.doi.org/10.1063/1.5053714

S. G. Moustafa, A. J. Schultz, D. A. Kofke, “Harmonically Assisted Methods for
Computing the Free Energy of Classical Crystals by Molecular Simulation: A
Comparative Study”, J. Chem. Theory Comput. 13, 825-834 (2017)
https://dx.doi.org/10.1021/acs.jctc.6b01082

S. G. Moustafa, A. J. Schultz, D. A. Kofke, “Very fast averaging of thermal
properties of crystals by molecular simulation”, Phys. Rev. E 92, 043303 (2015)
https://dx.doi.org/10.1103/PhysRevE.92.043303
+32 −0
Original line number Diff line number Diff line
@@ -11,6 +11,38 @@
   See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */

/* ----------------------------------------------------------------------
This compute implements harmonically-mapped averaging for crystalline solids.
The current implementation handles atomic crystals.

Computing the heat capacity relies on being able to compute the second
derivative of the energy with respect to atom positions.  This capability is
provided by the single2 method in Pair, but is currently only implemented for
the shifted-force LJ potential (lj/smooth/linear).  Pair::single2 takes a single
pair and (like Pair::single) returns the energy and sets the force as an out
parameter, but also sets the elements of 6-element double array out parameter,
which are the unique components of the atomic Hessian tensor for the pair.  A
helper method exists (Pair::pairTensor), which will compute the tensor from
linear derivatives and the vector between the positions.  HMA Heat capacity can
be computed for other models by implementing single2 in those Pair classes.

More information about HMA is available in these publications:

A. J. Schultz, D. A. Kofke, “Comprehensive high-precision high-accuracy
equation of state and coexistence properties for classical Lennard-Jones
crystals and low-temperature fluid phases”, J. Chem. Phys. 149, 204508 (2018)
https://dx.doi.org/10.1063/1.5053714

S. G. Moustafa, A. J. Schultz, D. A. Kofke, “Harmonically Assisted Methods for
Computing the Free Energy of Classical Crystals by Molecular Simulation: A
Comparative Study”, J. Chem. Theory Comput. 13, 825-834 (2017)
https://dx.doi.org/10.1021/acs.jctc.6b01082

S. G. Moustafa, A. J. Schultz, D. A. Kofke, “Very fast averaging of thermal
properties of crystals by molecular simulation”, Phys. Rev. E 92, 043303 (2015)
https://dx.doi.org/10.1103/PhysRevE.92.043303
------------------------------------------------------------------------- */

#include <cmath>
#include <cstring>
#include <mpi.h>