1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
  
     | 
    
      // 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<int> & 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
 
     |