Files
lammps/src/lammps.h
2022-09-10 03:29:32 -04:00

104 lines
4.0 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
MPI_Comm external_comm; // MPI comm encompassing external programs
// when multiple programs launched by mpirun
// set by -mpicolor command line arg
void *mdicomm; // for use with MDI code coupling library
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