// A class for defining atomic information used by the per-atom quantities // this is required so they can be templatized #ifndef PAQ_ATC_UTILITY_H #define PAQ_ATC_UTILITY_H #include "ATC_TypeDefs.h" #include "Array.h" #include "ATC_Error.h" namespace ATC { // forward declarations class ATC_Method; class FE_Engine; class PaqAtcUtility { public: // constructor PaqAtcUtility(ATC_Method * atc, AtomType atomType=NO_ATOMS); // destructor ~PaqAtcUtility() {}; // get the number of local atoms associated with this type int nlocal() const; // get the total number of atoms on this processor int nlocal_total() const; /** get the number of spatial dimensions */ int nsd() const; /** get the timestep size */ double dt() const; /** get the map from atc to lammps indexing for this type */ const Array & atc_to_lammps_map() const; /** access to the engine */ const FE_Engine * fe_engine() const; protected: /** pointer to atc object */ ATC_Method * atc_; /** type of atoms this quantity applies to */ AtomType atomType_; /** function pointer to number of local atoms for this quantity */ int (ATC_Method::*myNlocal)() const; private: // do not define PaqAtcUtility(); }; } #endif