/* -*- 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