#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the Common Development
# and Distribution License Version 1.0 (the "License").
#
# You can obtain a copy of the license at
# http://www.opensource.org/licenses/CDDL-1.0.  See the License for the
# specific language governing permissions and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each file and
# include the License file in a prominent location with the name LICENSE.CDDL.
# If applicable, add the following below this CDDL HEADER, with the fields
# enclosed by brackets "[]" replaced with your own identifying information:
#
# Portions Copyright (c) [yyyy] [name of copyright owner]. All rights reserved.
#
# CDDL HEADER END
#

#
# Copyright (c) 2015, Regents of the University of Minnesota.
# All rights reserved.
#
# Contributors:
#    Ryan S. Elliott
#    Andrew Akerson
#


This directory (LennardJones612__MD_414112407348_001) contains a Lennard-Jones
Driver which reads a parameter file containing the parameters for up to 139
species.  It supports shifted and non-shifted energy behavior.  The driver is
written in C++.

This Model Driver complies with the KIM API interface standard, using any NBC
and iterator or locator mode, publishes its parameters, and supports optional
computation of `energy', `forces', `particleEnergy', `process_dEdr', and
`process_d2Edr2'.  Its initialization routine takes a KIM API object pointer, a
pointer to a two-dimensional character array (each row of which contains the
full path to a parameter file) of the form a[b][c], a pointer to the value of
c, and a pointer to the value of b.  This Model Driver expects b = 1.

The model driver implements the functional form:

       phi_{ij}(r) = 4 * epsilon_{ij} *
                     [ (sigma_{ij}/r)^12 - (sigma_{ij}/r)^6 ] + shift_{ij},

where i, j = 0, 1, 2, ..., N-1, and N is the number of supported species.


The format of the parameter file is as follows:

* Blank lines and lines beginning with the `#' character are ignored.

* Line 0 : N, shift
   - N         : integer number of distinct particle species
   - shift     : integer value: 0-for no shift; 1-for shifts.
                 All shift values are computed at run time
* Lines 1,2,...: species_i, species_j, cutoff, epsilon, sigma
   - species_i : A valid KIM API particle species string
   - species_j : A valid KIM API particle species string
   - cutoff    : double cutoff distance value (in Angstroms) for phi_{ij}(r)
   - epsilon   : double energy value (in eV) for  epsilon_{ij}
   - sigma     : double sigma distance value (in Angstroms) for sigma_{ij}


The parameter file must contain all "like-like" parameter sets (i.e., lines
where species_i and species_j are identical) for each species which occurs in
the file.  The model driver uses the Lorentz-Berthelot rules to generate any
"cross-interaction" parameter sets which are not provided.  The model driver
sets the KIM API `cutoff' argument to max_{ij}(cutoff_{ij}) where the set of
{ij} values considered is taken from the list of species provided by the
Simulator.  Thus, the `cutoff' argument can change depending on the KIM
descriptor file provided by the Simulator in the call to KIM_API_init() or
KIM_API_string_init().  This allows the Simulator to use the smallest valid
cutoff value for the particular simulation to be performed.

The contents of the directory are as follows (before any compilation is
performed):


CreateDispatch.sh
     Bash shell script used to generate, at compile time, a C++ switch
     statement that calls the correct templated version of the LennardJones612
     compute function.

LennardJones612.cpp
     Implementation of Model Driver interface consisting of wrapper functions
     that call the corresponding member functions of the implementation object.

LennardJones612.hpp
     Header file for the (minimal) Model Driver interface.  Here we use the
     "pointer to implementation" (pimpl) pattern to hide all implementation
     details.

LennardJones612.kim.tpl
     KIM descriptor template file, contains all variables and methods that are
     exposed through the KIM API interface

LennardJones612Implementation.cpp
     Actual implementation of the LennardJones612 driver code.

LennardJones612Implementation.hpp Header file for implementation of
     LennardJones612.  Includes definition of the compute function since this
     is templated in order to provide the highest possible computational
     efficiency.

LICENSE.CDDL
     The Common Development and Distribution License (CDDL) Version 1.0 file

Makefile
     Makefile to compile and build executables with GNU or Intel compilers

README
     This file