00001 00075 #ifndef _VGREEN_H_ 00076 #define _VGREEN_H_ 00077 00078 /* Generic headers */ 00079 #include "maloc/maloc.h" 00080 #include "apbs/vhal.h" 00081 00082 /* Specific headers */ 00083 #include "apbs/vunit.h" 00084 #include "apbs/vatom.h" 00085 #include "apbs/valist.h" 00086 00087 00093 struct sVgreen { 00094 00095 Valist *alist; 00096 Vmem *vmem; 00097 double *xp; 00099 double *yp; 00101 double *zp; 00103 double *qp; 00105 int np; 00106 }; 00107 00112 typedef struct sVgreen Vgreen; 00113 00114 /* /////////////////////////////////////////////////////////////////////////// 00115 // Class Vgreen: Inlineable methods (vgreen.c) 00117 00118 #if !defined(VINLINE_VGREEN) 00119 00127 Valist* Vgreen_getValist(Vgreen *thee); 00128 00136 unsigned long int Vgreen_memChk(Vgreen *thee); 00137 00138 #else /* if defined(VINLINE_VGREEN) */ 00139 # define Vgreen_getValist(thee) ((thee)->alist) 00140 # define Vgreen_memChk(thee) (Vmem_bytes((thee)->vmem)) 00141 #endif /* if !defined(VINLINE_VGREEN) */ 00142 00143 /* /////////////////////////////////////////////////////////////////////////// 00144 // Class Vgreen: Non-Inlineable methods (vgreen.c) 00146 00153 Vgreen* Vgreen_ctor(Valist *alist); 00154 00162 int Vgreen_ctor2(Vgreen *thee, Valist *alist); 00163 00169 void Vgreen_dtor(Vgreen **thee); 00170 00176 void Vgreen_dtor2(Vgreen *thee); 00177 00202 int Vgreen_helmholtz(Vgreen *thee, int npos, double *x, double *y, 00203 double *z, double *val, double kappa); 00204 00232 int Vgreen_helmholtzD(Vgreen *thee, int npos, double *x, double *y, 00233 double *z, double *gradx, double *grady, double *gradz, double kappa); 00234 00255 int Vgreen_coulomb_direct(Vgreen *thee, int npos, double *x, 00256 double *y, double *z, double *val); 00257 00278 int Vgreen_coulomb(Vgreen *thee, int npos, double *x, double *y, 00279 double *z, double *val); 00280 00304 int Vgreen_coulombD_direct(Vgreen *thee, int npos, double *x, 00305 double *y, double *z, double *pot, double *gradx, double *grady, double 00306 *gradz); 00307 00332 int Vgreen_coulombD(Vgreen *thee, int npos, double *x, double *y, 00333 double *z, double *pot, double *gradx, double *grady, double *gradz); 00334 00335 #endif /* ifndef _VGREEN_H_ */ 00336