00001 00049 #ifndef _VACC_H_ 00050 #define _VACC_H_ 00051 00052 /* Generic headers */ 00053 #include "maloc/maloc.h" 00054 #include "apbs/vhal.h" 00055 00056 /* Headers specific to this file */ 00057 #include "apbs/valist.h" 00058 #include "apbs/vatom.h" 00059 #include "apbs/vunit.h" 00060 00064 #define VACCMAXNBOR 20 00065 00071 struct sVacc { 00072 00073 Vmem *vmem; 00074 Valist *alist; 00075 int **atomIDs; 00076 int *natoms; 00078 int *atomFlags; 00079 double **sphere; 00081 int nsphere; 00082 Vset acc; 00085 double grid_lower_corner[3]; 00086 double hx; 00087 double hy; 00088 double hzed; 00089 int nx; 00090 int ny; 00091 int nz; 00092 int n; 00093 double max_radius; 00094 double *area; 00097 }; 00098 00103 typedef struct sVacc Vacc; 00104 00105 /* 00106 // Class Vacc: Inlineable methods (vacc.c) 00108 00109 #if !defined(VINLINE_VACC) 00110 00117 int Vacc_memChk(Vacc *thee); 00118 00119 #else /* if defined(VINLINE_VACC) */ 00120 00121 # define Vacc_memChk(thee) (Vmem_bytes((thee)->vmem)) 00122 00123 #endif /* if !defined(VINLINE_VACC) */ 00124 00125 /* 00126 // Class Vacc: Non-Inlineable methods (vacc.c) 00128 00139 Vacc* Vacc_ctor(Valist *alist, double max_radius, int nx, 00140 int ny, int nz, int nsphere); 00141 00153 int Vacc_ctor2(Vacc *thee, Valist *alist, double max_radius, 00154 int nx, int ny, int nz, int nsphere); 00155 00172 Vacc* Vacc_ctorFocus(Valist *alist, double max_radius, 00173 int nx, int ny, int nz, int nsphere, double x_min, double y_min, 00174 double z_min, double x_max, double y_max, double z_max); 00175 00193 int Vacc_ctor2Focus(Vacc *thee, Valist *alist, double max_radius, 00194 int nx, int ny, int nz, int nsphere, double x_min, double y_min, 00195 double z_min, double x_max, double y_max, double z_max); 00196 00201 void Vacc_dtor(Vacc **thee); 00202 00207 void Vacc_dtor2(Vacc *thee); 00208 00221 double Vacc_vdwAcc(Vacc *thee, double center[3]); 00222 00237 double Vacc_ivdwAcc(Vacc *thee, double center[3], double radius); 00238 00253 double Vacc_molAcc(Vacc *thee, double center[3], double radius); 00254 00273 double Vacc_fastMolAcc(Vacc *thee, double center[3], double radius); 00274 00290 double Vacc_splineAcc(Vacc *thee, double center[3], double win, 00291 double infrad); 00292 00310 double Vacc_splineAccAtom(Vacc *thee, double center[3], double win, 00311 double infrad, int atomID); 00312 00330 void Vacc_splineAccGradAtom(Vacc *thee, double center[3], double win, 00331 double infrad, int atomID, double *force); 00332 00350 double** Vacc_sphere(Vacc *thee, int *npts); 00351 00361 double Vacc_totalSASA(Vacc *thee, double radius); 00362 00373 double Vacc_atomSASA(Vacc *thee, double radius, int iatom); 00374 00375 #endif /* ifndef _VACC_H_ */ 00376