NAMD
ComputePme.h
Go to the documentation of this file.
1 
7 #ifndef COMPUTEPME_H
8 #define COMPUTEPME_H
9 
10 #include "Compute.h"
11 #include "PmeBase.h"
12 #include "NamdTypes.h"
13 #include "PatchTypes.h"
14 #include "Box.h"
15 #include "OwnerBox.h"
16 
17 class PmeRealSpace;
18 class ComputeMgr;
19 class SubmitReduction;
20 class PmeGridMsg;
21 class ComputePmeMgr;
22 class Patch;
23 
25 
26 public:
27 
30  static void select(void);
31 
32  static int numGrids;
33  static Bool alchOn;
34  static Bool alchFepOn;
38  static Bool lesOn;
39  static int lesFactor;
40  static Bool pairOn; // alias for pairInteractionOn
41  static Bool selfOn; // alias for pairInteractionSelf
42 
43  static Bool LJPMEOn;
44 
45 };
46 
47 
48 class ComputePme : public Compute, public ComputePmeUtil {
49 public:
51  virtual ~ComputePme();
52  void initialize();
53  void atomUpdate();
54  int noWork();
55  void doWork();
56  void doQMWork() ;
57  void ungridForces();
58  void setMgr(ComputePmeMgr *mgr) { myMgr = mgr; }
59 
60  friend class ComputePmeMgr;
61  private:
62 #if defined(NAMD_CUDA) || defined(NAMD_HIP)
63  int cuda_atoms_offset;
64  float *f_data_host; // force buffers for CUDA
65  float *f_data_dev;
66 #endif
67 
68  PatchID patchID;
69  Patch *patch;
70  Box<Patch,CompAtom> *positionBox;
71  Box<Patch,CompAtom> *avgPositionBox;
72  Box<Patch,Results> *forceBox;
73 
74  PmeGrid myGrid;
75  int numGridsMax; // Only used for deallocating arrays
76  int offload;
77 
78  Bool qmForcesOn;
79 
80  PmeRealSpace *myRealSpace[PME_MAX_EVALS];
81  int numLocalAtoms;
82  PmeParticle *localData;
83  ResizeArray<PmeParticle> localData_alloc;
84  unsigned char *localPartition;
85  ResizeArray<unsigned char> localPartition_alloc;
86  ResizeArray<Vector> localResults_alloc;
87  int numGridAtoms[PME_MAX_EVALS];
88  PmeParticle *localGridData[PME_MAX_EVALS];
89  ComputePmeMgr *myMgr;
90 
91  int atomsChanged;
92 
93  // Local array constructed at each time step with QM charges for
94  Real *qmLocalCharges ;
95  // Local array with indices of QM atoms
96  int *qmLoclIndx ;
97  int numLocalQMAtoms;
98 
99 };
100 
102 
103 #endif
104 
void ungridForces()
Definition: ComputePme.C:4090
int32 ComputeID
Definition: NamdTypes.h:288
void doWork()
Definition: ComputePme.C:3136
void doQMWork()
Definition: ComputePme.C:3078
float Real
Definition: common.h:118
static int numGrids
Definition: ComputePme.h:32
static Bool alchOn
Definition: ComputePme.h:33
float * f_data_host
Definition: ComputePme.C:448
Definition: Patch.h:35
float * f_data_dev
Definition: ComputePme.C:449
int Bool
Definition: common.h:142
static BigReal alchElecLambdaStart
Definition: ComputePme.h:37
ComputePme(ComputeID c, PatchID pid)
Definition: ComputePme.C:2712
int noWork()
Definition: ComputePme.C:3039
void setMgr(ComputePmeMgr *mgr)
Definition: ComputePme.h:58
static Bool LJPMEOn
Definition: ComputePme.h:43
static Bool alchDecouple
Definition: ComputePme.h:36
static int lesFactor
Definition: ComputePme.h:39
void initialize()
Definition: ComputePme.C:2751
static Bool pairOn
Definition: ComputePme.h:40
static Bool lesOn
Definition: ComputePme.h:38
#define PME_MAX_EVALS
Definition: PmeBase.h:41
static void select(void)
Definition: ComputePme.C:6448
static Bool selfOn
Definition: ComputePme.h:41
virtual ~ComputePme()
Definition: ComputePme.C:2985
void atomUpdate()
Definition: ComputePme.C:2710
static Bool alchFepOn
Definition: ComputePme.h:34
int32 PatchID
Definition: NamdTypes.h:287
ResizeArray< ComputePme * > & getComputes(ComputePmeMgr *mgr)
Definition: ComputePme.C:615
double BigReal
Definition: common.h:123
static Bool alchThermIntOn
Definition: ComputePme.h:35