Files
lammps/src/input.h
2023-08-25 17:34:32 -04:00

151 lines
4.5 KiB
C++

/* -*- c++ -*- ----------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
https://www.lammps.org/, Sandia National Laboratories
LAMMPS development team: developers@lammps.org
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_INPUT_H
#define LMP_INPUT_H
#include "pointers.h"
#include <map>
namespace LAMMPS_NS {
class Command;
class Input : protected Pointers {
friend class Info;
friend class Error;
friend class Deprecated;
friend class SimpleCommandsTest_Echo_Test;
public:
int narg; // # of command args
char **arg; // parsed args for command
class Variable *variable; // defined variables
Input(class LAMMPS *, int, char **);
~Input() override;
void file(); // process all input
void file(const char *); // process an input script
char *one(const std::string &); // process a single command
void substitute(char *&, char *&, int &, int &, int); // substitute for variables in a string
void write_echo(const std::string &); // send text to active echo file pointers
int get_jump_skip() const { return jump_skip; }
protected:
char *command; // ptr to current command
int echo_screen; // 0 = no, 1 = yes
int echo_log; // 0 = no, 1 = yes
private:
int me; // proc ID
int maxarg; // max # of args in arg
char *line, *copy, *work; // input line & copy and work string
int maxline, maxcopy, maxwork; // max lengths of char strings
int nfile; // current # of open input files
int label_active; // 0 = no label, 1 = looking for label
char *labelstr; // label string being looked for
int jump_skip; // 1 if skipping next jump, 0 otherwise
bool utf8_warn; // true if need to warn about UTF-8 chars
FILE **infiles; // list of open input files
int *inlines; // list of saved line numbers of open input files
public:
typedef Command *(*CommandCreator)(LAMMPS *);
typedef std::map<std::string, CommandCreator> CommandCreatorMap;
CommandCreatorMap *command_map;
private:
void parse(); // parse an input text line
char *nextword(char *, char **); // find next word in string with quotes
int numtriple(char *); // count number of triple quotes
void reallocate(char *&, int &, int); // reallocate a char string
int execute_command(); // execute a single command
int meta(const std::string &); // process meta-commands
void clear(); // input script commands
void echo();
void ifthenelse();
void include();
void jump();
void label();
void log();
void next_command();
void partition();
void plugin();
void print();
void python();
void quit();
void shell();
void variable_command();
void angle_coeff(); // LAMMPS commands
void angle_style();
void atom_modify();
void atom_style();
void bond_coeff();
void bond_style();
void bond_write();
void boundary();
void comm_modify();
void comm_style();
void compute();
void compute_modify();
void dielectric();
void dihedral_coeff();
void dihedral_style();
void dimension();
void dump();
void dump_modify();
void fix();
void fix_modify();
void group_command();
void improper_coeff();
void improper_style();
void kspace_modify();
void kspace_style();
void labelmap();
void lattice();
void mass();
void min_modify();
void min_style();
void molecule();
void neigh_modify();
void neighbor_command();
void newton();
void package();
void pair_coeff();
void pair_modify();
void pair_style();
void pair_write();
void processors();
void region();
void reset_timestep();
void restart();
void run_style();
void special_bonds();
void suffix();
void thermo();
void thermo_modify();
void thermo_style();
void timestep();
void timer_command();
void uncompute();
void undump();
void unfix();
void units();
};
} // namespace LAMMPS_NS
#endif