PmeKSpace.h

Go to the documentation of this file.
00001 
00007 #ifndef PME_K_SPACE_H__
00008 #define PME_K_SPACE_H__
00009 
00010 #include "PmeBase.h"
00011 #include "Lattice.h"
00012 
00013 #include "ComputeMoa.h"
00014 #include "ComputeMoaMgr.decl.h" 
00015 
00016 class PmeKSpace {
00017 #ifdef OPENATOM_VERSION
00018   friend class ComputeMoaMgr;
00019 #endif //OPENATOM_VERSION
00020 
00021 public:
00022   PmeKSpace(PmeGrid grid, int K2_start, int K2_end, int K3_start, int K3_end);
00023 #ifdef OPENATOM_VERSION
00024   PmeKSpace(PmeGrid grid, int K2_start, int K2_end, int K3_start, int K3_end, CProxy_ComputeMoaMgr moaProxy);
00025 #endif //OPENATOM_VERSION
00026   ~PmeKSpace();
00027 
00028   double compute_energy(float q_arr[], const Lattice &lattice, double ewald, double virial[], int useCkLoop);
00029   double compute_energy_orthogonal_helper(float q_arr[], const Lattice &lattice, double ewald, double virial[]);
00030   void compute_energy_orthogonal_subset(float q_arr[], double *recips, double partialVirial[], double *partialEnergy, int k1from, int k1to);
00031   
00032 
00033 private:
00034   // b-spline moduli
00035   double *bm1, *bm2, *bm3; 
00036   double *exp1, *exp2, *exp3;
00037   double i_pi_volume, piob;
00038 
00039   const PmeGrid myGrid;
00040   const int k2_start, k2_end, k3_start, k3_end;
00041 
00042   void init_exp(double *xp, int K, int k_start, int k_end, double recip);
00043 };
00044 
00045 #endif

Generated on Thu Sep 21 01:17:14 2017 for NAMD by  doxygen 1.4.7