00001
00007 #ifndef PME_REAL_SPACE_H__
00008 #define PME_REAL_SPACE_H__
00009
00010 #include "PmeBase.h"
00011 #include "Vector.h"
00012
00013 class PmeRealSpace {
00014
00015 public:
00016 PmeRealSpace(PmeGrid grid, int natoms);
00017 ~PmeRealSpace();
00018
00019 void fill_charges(double **q_arr, double **q_arr_list, int &q_arr_count,
00020 int &stray_count, char *f_arr, char *fz_arr, PmeParticle p[]);
00021 void compute_forces(const double * const *q_arr, const PmeParticle p[],
00022 Vector f[]);
00023
00024 void compute_forces_order4_partial(int first, int last, const double * const *q_arr, const PmeParticle p[],
00025 Vector f[]);
00026 private:
00027 void fill_charges_order4(double **q_arr, double **q_arr_list, int &q_arr_count,
00028 int &stray_count, char *f_arr, char *fz_arr, PmeParticle p[]);
00029 void compute_forces_order4(const double * const *q_arr, const PmeParticle p[],
00030 Vector f[]);
00031 void fill_b_spline(PmeParticle p[]);
00032
00033 const int N;
00034 const PmeGrid myGrid;
00035 double *M, *dM;
00036 };
00037
00038
00039 #endif
00040