/* ----------------------------------------------------------------------
   LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
   http://lammps.sandia.gov, Sandia National Laboratories
   Steve Plimpton, sjplimp@sandia.gov

   Copyright (2003) Sandia Corporation.  Under the terms of Contract
   DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
   certain rights in this software.  This software is distributed under
   the GNU General Public License.

   See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */

#ifdef COMMAND_CLASS

CommandStyle(neb,NEB)

#else

#ifndef LMP_NEB_H
#define LMP_NEB_H

#include "stdio.h"
#include "pointers.h"

namespace LAMMPS_NS {

class NEB : protected Pointers {
 public:
  NEB(class LAMMPS *);
  NEB(class LAMMPS *, double, double, int, int, int, double *, double *);
  ~NEB();
  void command(int, char **);  // process neb command
  void run();                  // run NEB

  double ebf,ebr;              // forward and reverse energy barriers

 private:
  int me,me_universe;          // my proc ID in world and universe
  int ireplica,nreplica;
  MPI_Comm uworld;
  MPI_Comm roots;              // MPI comm with 1 root proc from each world
  FILE *fp;
  int compressed;
  double etol;                 // energy tolerance convergence criterion
  double ftol;                 // force tolerance convergence criterion
  int n1steps, n2steps;        // number of steps in stage 1 and 2
  int nevery;                  // output interval
  char *infile;                // name of file containing final state

  class FixNEB *fneb;
  int nall;                    // per-replica dimension of array all
  double **all;                // PE,plen,nlen,gradvnorm from each replica
  double *rdist;               // normalize reaction distance, 0 to 1

  void readfile(char *);
  void open(char *);
  void print_status();
};

}

#endif
#endif

/* ERROR/WARNING messages:

E: NEB command before simulation box is defined

Self-explanatory.

E: Illegal ... command

Self-explanatory.  Check the input script syntax and compare to the
documentation for the command.  You can use -echo screen as a
command-line option when running LAMMPS to see the offending line.

E: Cannot use NEB with a single replica

Self-explanatory.

E: Can only use NEB with 1-processor replicas

This is current restriction for NEB as implemented in LAMMPS.

E: Cannot use NEB with atom_modify sort enabled

This is current restriction for NEB implemented in LAMMPS.

E: Cannot use NEB unless atom map exists

Use the atom_modify command to create an atom map.

E: NEB requires use of fix neb

Self-explanatory.

E: NEB requires damped dynamics minimizer

Use a different minimization style.

E: Too many timesteps for NEB

You must use a number of timesteps that fit in a 32-bit integer
for NEB.

E: Too many timesteps

The cummulative timesteps must fit in a 64-bit integer.

E: Incorrect format in NEB coordinate file

Self-explanatory.

E: Cannot open gzipped file

LAMMPS is attempting to open a gzipped version of the specified file
but was unsuccessful.  Check that the path and name are correct.

E: Cannot open file %s

The specified file cannot be opened.  Check that the path and name are
correct.

*/
