Files
lammps/src/read_data.h
2023-12-01 14:52:47 -05:00

128 lines
3.1 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.
------------------------------------------------------------------------- */
#ifdef COMMAND_CLASS
// clang-format off
CommandStyle(read_data,ReadData);
// clang-format on
#else
#ifndef LMP_READ_DATA_H
#define LMP_READ_DATA_H
#include "command.h"
namespace LAMMPS_NS {
class Fix;
class ReadData : public Command {
public:
ReadData(class LAMMPS *);
~ReadData() override;
void command(int, char **) override;
static bool is_data_section(const std::string &);
private:
int me, compressed;
char *line, *keyword, *buffer, *style;
FILE *fp;
char **coeffarg;
int ncoeffarg, maxcoeffarg;
std::string argoffset1, argoffset2;
bigint id_offset, mol_offset;
int nlocal_previous;
bigint natoms;
bigint nbonds, nangles, ndihedrals, nimpropers;
int ntypes, nbondtypes, nangletypes, ndihedraltypes, nimpropertypes;
bigint nellipsoids;
class AtomVecEllipsoid *avec_ellipsoid;
bigint nlines;
class AtomVecLine *avec_line;
bigint ntris;
class AtomVecTri *avec_tri;
bigint nbodies;
class AtomVecBody *avec_body;
// type labels
class LabelMap *lmap;
// box info read from file
int triclinic, triclinic_general;
int xloxhi_flag, yloyhi_flag, zlozhi_flag, tilt_flag;
int avec_flag, bvec_flag, cvec_flag, abc_origin_flag;
double boxlo[3], boxhi[3];
double xy, xz, yz;
double avec[3], bvec[3], cvec[3];
double abc_origin[3];
// optional args
int addflag, offsetflag, shiftflag, coeffflag, settypeflag;
int tlabelflag, blabelflag, alabelflag, dlabelflag, ilabelflag;
tagint addvalue;
int toffset, boffset, aoffset, doffset, ioffset;
double shift[3];
int extra_atom_types, extra_bond_types, extra_angle_types;
int extra_dihedral_types, extra_improper_types;
int groupbit;
int nfix;
Fix **fix_index;
char **fix_header;
char **fix_section;
// methods
void open(const std::string &);
void scan(int &, int &, int &, int &);
int reallocate(int **, int, int);
void header(int);
void parse_keyword(int);
void skip_lines(bigint);
void parse_coeffs(char *, const char *, int, int, int, int, int *);
int style_match(const char *, const char *);
void atoms();
void velocities();
void bonds(int);
void bond_scan(int, char *, int *);
void angles(int);
void dihedrals(int);
void impropers(int);
void bonus(bigint, class AtomVec *, const char *);
void bodies(int, class AtomVec *);
void mass();
void paircoeffs();
void pairIJcoeffs();
void bondcoeffs();
void anglecoeffs(int);
void dihedralcoeffs(int);
void impropercoeffs(int);
void typelabels(int);
void fix(Fix *, char *);
};
} // namespace LAMMPS_NS
#endif
#endif