00001 00007 /* 00008 Primary class for pairwise force calculations over pairs of patches. 00009 Takes care of boxes, depositing of forces etc. 00010 */ 00011 00012 #ifndef COMPUTEPPAIR_H 00013 #define COMPUTEPPAIR_H 00014 00015 #include "Compute.h" 00016 #include "PatchTypes.h" 00017 00018 #include "Box.h" 00019 #include "OwnerBox.h" 00020 00021 class Patch; 00022 class Node; 00023 class PatchMap; 00024 00025 class ComputePatchPair : public Compute { 00026 00027 public: 00028 ComputePatchPair(ComputeID c, PatchID pid[], int t[]); 00029 virtual ~ComputePatchPair(); 00030 00031 virtual void initialize(); 00032 virtual void atomUpdate(); 00033 virtual void doWork(); 00034 00035 protected : 00036 int numAtoms[2]; 00037 CompAtomExt *pExt[2]; 00038 CompAtom* p[2]; 00039 Results* r[2]; 00040 00041 // DMK - Atom Separation (water vs. non-water) 00042 #if NAMD_SeparateWaters != 0 00043 int numWaterAtoms[2]; 00044 #endif 00045 00046 virtual void doForce(CompAtom* p[2], CompAtomExt* pExt[2], Results* r[2]); 00047 Patch *patch[2]; 00048 00049 // private: // hack for ComputeNonbondedPair::noWork() 00050 PatchID patchID[2]; 00051 int trans[2]; 00052 Box<Patch,CompAtom> *positionBox[2]; 00053 Box<Patch,Results> *forceBox[2]; 00054 }; 00055 00056 #endif 00057
1.3.9.1