00001 00052 #ifndef _VGREEN_H_ 00053 #define _VGREEN_H_ 00054 00055 /* Generic headers */ 00056 #include "maloc/maloc.h" 00057 #include "apbs/vhal.h" 00058 00059 /* Specific headers */ 00060 #include "apbs/vunit.h" 00061 #include "apbs/vatom.h" 00062 #include "apbs/valist.h" 00063 00064 00070 struct sVgreen { 00071 00072 Valist *alist; 00073 Vmem *vmem; 00074 double *xp; 00076 double *yp; 00078 double *zp; 00080 double *qp; 00082 int np; 00083 }; 00084 00089 typedef struct sVgreen Vgreen; 00090 00091 /* /////////////////////////////////////////////////////////////////////////// 00092 // Class Vgreen: Inlineable methods (vgreen.c) 00094 00095 #if !defined(VINLINE_VGREEN) 00096 00104 Valist* Vgreen_getValist(Vgreen *thee); 00105 00113 unsigned long int Vgreen_memChk(Vgreen *thee); 00114 00115 #else /* if defined(VINLINE_VGREEN) */ 00116 # define Vgreen_getValist(thee) ((thee)->alist) 00117 # define Vgreen_memChk(thee) (Vmem_bytes((thee)->vmem)) 00118 #endif /* if !defined(VINLINE_VGREEN) */ 00119 00120 /* /////////////////////////////////////////////////////////////////////////// 00121 // Class Vgreen: Non-Inlineable methods (vgreen.c) 00123 00130 Vgreen* Vgreen_ctor(Valist *alist); 00131 00139 int Vgreen_ctor2(Vgreen *thee, Valist *alist); 00140 00146 void Vgreen_dtor(Vgreen **thee); 00147 00153 void Vgreen_dtor2(Vgreen *thee); 00154 00179 int Vgreen_helmholtz(Vgreen *thee, int npos, double *x, double *y, 00180 double *z, double *val, double kappa); 00181 00209 int Vgreen_helmholtzD(Vgreen *thee, int npos, double *x, double *y, 00210 double *z, double *gradx, double *grady, double *gradz, double kappa); 00211 00232 int Vgreen_coulomb_direct(Vgreen *thee, int npos, double *x, 00233 double *y, double *z, double *val); 00234 00255 int Vgreen_coulomb(Vgreen *thee, int npos, double *x, double *y, 00256 double *z, double *val); 00257 00281 int Vgreen_coulombD_direct(Vgreen *thee, int npos, double *x, 00282 double *y, double *z, double *pot, double *gradx, double *grady, double 00283 *gradz); 00284 00309 int Vgreen_coulombD(Vgreen *thee, int npos, double *x, double *y, 00310 double *z, double *pot, double *gradx, double *grady, double *gradz); 00311 00312 #endif /* ifndef _VGREEN_H_ */ 00313