00001 00063 #ifndef _VGREEN_H_ 00064 #define _VGREEN_H_ 00065 00066 /* Generic headers */ 00067 #include "maloc/maloc.h" 00068 #include "apbs/vhal.h" 00069 00070 /* Specific headers */ 00071 #include "apbs/vunit.h" 00072 #include "apbs/vatom.h" 00073 #include "apbs/valist.h" 00074 00075 00081 struct sVgreen { 00082 00083 Valist *alist; 00084 Vmem *vmem; 00085 double *xp; 00087 double *yp; 00089 double *zp; 00091 double *qp; 00093 int np; 00094 }; 00095 00100 typedef struct sVgreen Vgreen; 00101 00102 /* /////////////////////////////////////////////////////////////////////////// 00103 // Class Vgreen: Inlineable methods (vgreen.c) 00105 00106 #if !defined(VINLINE_VGREEN) 00107 00115 Valist* Vgreen_getValist(Vgreen *thee); 00116 00124 unsigned long int Vgreen_memChk(Vgreen *thee); 00125 00126 #else /* if defined(VINLINE_VGREEN) */ 00127 # define Vgreen_getValist(thee) ((thee)->alist) 00128 # define Vgreen_memChk(thee) (Vmem_bytes((thee)->vmem)) 00129 #endif /* if !defined(VINLINE_VGREEN) */ 00130 00131 /* /////////////////////////////////////////////////////////////////////////// 00132 // Class Vgreen: Non-Inlineable methods (vgreen.c) 00134 00141 Vgreen* Vgreen_ctor(Valist *alist); 00142 00150 int Vgreen_ctor2(Vgreen *thee, Valist *alist); 00151 00157 void Vgreen_dtor(Vgreen **thee); 00158 00164 void Vgreen_dtor2(Vgreen *thee); 00165 00190 int Vgreen_helmholtz(Vgreen *thee, int npos, double *x, double *y, 00191 double *z, double *val, double kappa); 00192 00220 int Vgreen_helmholtzD(Vgreen *thee, int npos, double *x, double *y, 00221 double *z, double *gradx, double *grady, double *gradz, double kappa); 00222 00243 int Vgreen_coulomb_direct(Vgreen *thee, int npos, double *x, 00244 double *y, double *z, double *val); 00245 00266 int Vgreen_coulomb(Vgreen *thee, int npos, double *x, double *y, 00267 double *z, double *val); 00268 00292 int Vgreen_coulombD_direct(Vgreen *thee, int npos, double *x, 00293 double *y, double *z, double *pot, double *gradx, double *grady, double 00294 *gradz); 00295 00320 int Vgreen_coulombD(Vgreen *thee, int npos, double *x, double *y, 00321 double *z, double *pot, double *gradx, double *grady, double *gradz); 00322 00323 #endif /* ifndef _VGREEN_H_ */ 00324