00001 00057 #ifndef _VGREEN_H_ 00058 #define _VGREEN_H_ 00059 00060 /* Generic headers */ 00061 #include "maloc/maloc.h" 00062 #include "apbs/vhal.h" 00063 00064 /* Specific headers */ 00065 #include "apbs/vunit.h" 00066 #include "apbs/vatom.h" 00067 #include "apbs/valist.h" 00068 00069 00075 struct sVgreen { 00076 00077 Valist *alist; 00078 Vmem *vmem; 00079 double *xp; 00081 double *yp; 00083 double *zp; 00085 double *qp; 00087 int np; 00088 }; 00089 00094 typedef struct sVgreen Vgreen; 00095 00096 /* /////////////////////////////////////////////////////////////////////////// 00097 // Class Vgreen: Inlineable methods (vgreen.c) 00099 00100 #if !defined(VINLINE_VGREEN) 00101 00109 VEXTERNC Valist* Vgreen_getValist(Vgreen *thee); 00110 00118 VEXTERNC unsigned long int Vgreen_memChk(Vgreen *thee); 00119 00120 #else /* if defined(VINLINE_VGREEN) */ 00121 # define Vgreen_getValist(thee) ((thee)->alist) 00122 # define Vgreen_memChk(thee) (Vmem_bytes((thee)->vmem)) 00123 #endif /* if !defined(VINLINE_VGREEN) */ 00124 00125 /* /////////////////////////////////////////////////////////////////////////// 00126 // Class Vgreen: Non-Inlineable methods (vgreen.c) 00128 00135 VEXTERNC Vgreen* Vgreen_ctor(Valist *alist); 00136 00144 VEXTERNC int Vgreen_ctor2(Vgreen *thee, Valist *alist); 00145 00151 VEXTERNC void Vgreen_dtor(Vgreen **thee); 00152 00158 VEXTERNC void Vgreen_dtor2(Vgreen *thee); 00159 00184 VEXTERNC int Vgreen_helmholtz(Vgreen *thee, int npos, double *x, double *y, 00185 double *z, double *val, double kappa); 00186 00214 VEXTERNC int Vgreen_helmholtzD(Vgreen *thee, int npos, double *x, double *y, 00215 double *z, double *gradx, double *grady, double *gradz, double kappa); 00216 00237 VEXTERNC int Vgreen_coulomb_direct(Vgreen *thee, int npos, double *x, 00238 double *y, double *z, double *val); 00239 00260 VEXTERNC int Vgreen_coulomb(Vgreen *thee, int npos, double *x, double *y, 00261 double *z, double *val); 00262 00286 VEXTERNC int Vgreen_coulombD_direct(Vgreen *thee, int npos, double *x, 00287 double *y, double *z, double *pot, double *gradx, double *grady, double 00288 *gradz); 00289 00314 VEXTERNC int Vgreen_coulombD(Vgreen *thee, int npos, double *x, double *y, 00315 double *z, double *pot, double *gradx, double *grady, double *gradz); 00316 00317 #endif /* ifndef _VGREEN_H_ */