00001 00007 /* 00008 Compute object which deals with a single patch. 00009 */ 00010 00011 #ifndef COMPUTEPATCH_H 00012 #define COMPUTEPATCH_H 00013 00014 #include "Compute.h" 00015 #include "PatchTypes.h" 00016 00017 #include "Box.h" 00018 #include "OwnerBox.h" 00019 00020 class Patch; 00021 class Node; 00022 class PatchMap; 00023 00024 class ComputePatch : public Compute { 00025 00026 public: 00027 ComputePatch(ComputeID c, PatchID pid); 00028 virtual ~ComputePatch(); 00029 00030 virtual void initialize(); 00031 virtual void atomUpdate(); 00032 virtual void doWork(); 00033 00034 protected : 00035 int numAtoms; 00036 CompAtomExt *pExt; 00037 CompAtom* p; 00038 Results* r; 00039 00040 // DMK - Atom Separation (water vs. non-water) 00041 #if NAMD_SeparateWaters != 0 00042 int numWaterAtoms; 00043 #endif 00044 00045 virtual void doForce(CompAtom* p, CompAtomExt* pExt, Results* r) = 0; 00046 Patch *patch; 00047 00048 // private: 00049 PatchID patchID; 00050 Box<Patch,CompAtom> *positionBox; 00051 Box<Patch,Results> *forceBox; 00052 00053 }; 00054 00055 #endif 00056