Files
lammps/src/lammps.h

224 lines
7.3 KiB
C++

/* -*- c++ -*- ----------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
https://www.lammps.org/, 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.
------------------------------------------------------------------------- */
#ifndef LMP_LAMMPS_H
#define LMP_LAMMPS_H
#include <cstdio>
#include <mpi.h>
namespace LAMMPS_NS {
class LAMMPS {
public:
// ptrs to fundamental LAMMPS classes
class Memory *memory; // memory allocation functions
class Error *error; // error handling
class Universe *universe; // universe of processors
class Input *input; // input script processing
// ptrs to top-level LAMMPS-specific classes
class Atom *atom; // atom-based quantities
class Update *update; // integrators/minimizers
class Neighbor *neighbor; // neighbor lists
class Comm *comm; // inter-processor communication
class Domain *domain; // simulation box
class Force *force; // inter-particle forces
class Modify *modify; // fixes and computes
class Group *group; // groups of atoms
class Output *output; // thermo/dump/restart
class Timer *timer; // CPU timing info
//
class KokkosLMP *kokkos; // KOKKOS accelerator class
class AtomKokkos *atomKK; // KOKKOS version of Atom class
class MemoryKokkos *memoryKK; // KOKKOS version of Memory class
class Python *python; // Python interface
class CiteMe *citeme; // handle citation info
const char *version; // LAMMPS version string = date
int num_ver; // numeric version id derived from *version*
// that is constructed so that will be greater
// for newer versions in numeric or string
// value comparisons
//
MPI_Comm world; // MPI communicator
FILE *infile; // infile
FILE *screen; // screen output
FILE *logfile; // logfile
//
double initclock; // wall clock at instantiation
int skiprunflag; // 1 inserts timer command to skip run and minimize loops
char *suffix, *suffix2, *suffixp; // suffixes to add to input script style names
int suffix_enable; // 1 if suffixes are enabled, 0 if disabled
char *exename; // pointer to argv[0]
//
char ***packargs; // arguments for cmdline package commands
int num_package; // number of cmdline package commands
//
int clientserver; // 0 = neither, 1 = client, 2 = server
void *cslib; // client/server messaging via CSlib
MPI_Comm cscomm; // MPI comm for client+server in mpi/one mode
const char *match_style(const char *style, const char *name);
static const char *installed_packages[];
static bool is_installed_pkg(const char *pkg);
static bool has_git_info();
static const char *git_commit();
static const char *git_branch();
static const char *git_descriptor();
LAMMPS(int, char **, MPI_Comm);
~LAMMPS();
void create();
void post_create();
void init();
void destroy();
void print_config(FILE *); // print compile time settings
private:
struct package_styles_lists *pkg_lists;
void init_pkg_lists();
void help();
/// Default constructor. Declared private to prohibit its use
LAMMPS(){};
/// Copy constructor. Declared private to prohibit its use
LAMMPS(const LAMMPS &){};
};
} // namespace LAMMPS_NS
#endif
/* ERROR/WARNING messages:
E: Invalid command-line argument
One or more command-line arguments is invalid. Check the syntax of
the command you are using to launch LAMMPS.
E: Cannot use -reorder after -partition
Self-explanatory. See doc page discussion of command-line switches.
E: Processor partitions do not match number of allocated processors
The total number of processors in all partitions must match the number
of processors LAMMPS is running on.
E: Must use -in switch with multiple partitions
A multi-partition simulation cannot read the input script from stdin.
The -in command-line option must be used to specify a file.
E: Can only use -pscreen with multiple partitions
Self-explanatory. See doc page discussion of command-line switches.
E: Can only use -plog with multiple partitions
Self-explanatory. See doc page discussion of command-line switches.
E: Cannot open universe screen file
For a multi-partition run, the master screen file cannot be opened.
Check that the directory you are running in allows for files to be
created.
E: Cannot open log.lammps for writing
The default LAMMPS log file cannot be opened. Check that the
directory you are running in allows for files to be created.
E: Cannot open universe log file
For a multi-partition run, the master log file cannot be opened.
Check that the directory you are running in allows for files to be
created.
E: Cannot open input script %s
Self-explanatory.
E: Cannot open screen file
The screen file specified as a command-line argument cannot be
opened. Check that the directory you are running in allows for files
to be created.
E: Cannot open logfile
The LAMMPS log file named in a command-line argument cannot be opened.
Check that the path and name are correct.
E: Smallint setting in lmptype.h is invalid
It has to be the size of an integer.
E: Imageint setting in lmptype.h is invalid
Imageint must be as large or larger than smallint.
E: Tagint setting in lmptype.h is invalid
Tagint must be as large or larger than smallint.
E: Bigint setting in lmptype.h is invalid
Size of bigint is less than size of tagint.
E: MPI_LMP_TAGINT and tagint in lmptype.h are not compatible
The size of the MPI datatype does not match the size of a tagint.
E: MPI_LMP_BIGINT and bigint in lmptype.h are not compatible
The size of the MPI datatype does not match the size of a bigint.
E: Small to big integers are not sized correctly
This error occurs when the sizes of smallint, imageint, tagint, bigint,
as defined in src/lmptype.h are not what is expected. Contact
the developers if this occurs.
E: Cannot use -kokkos on without KOKKOS installed
Self-explanatory.
E: Using suffix gpu without GPU package installed
Self-explanatory.
E: Using suffix intel without INTEL package installed
Self-explanatory.
E: Using suffix kk without KOKKOS package enabled
Self-explanatory.
E: Using suffix omp without OPENMP package installed
Self-explanatory.
E: Too many -pk arguments in command line
The string formed by concatenating the arguments is too long. Use a
package command in the input script instead.
U: Cannot use -cuda on and -kokkos on together
This is not allowed since both packages can use GPUs.
*/