00001
00049 #ifndef _VACC_H_
00050 #define _VACC_H_
00051
00052
00053 #include "maloc/maloc.h"
00054 #include "apbs/vhal.h"
00055
00056
00057 #include "apbs/valist.h"
00058 #include "apbs/vclist.h"
00059 #include "apbs/vatom.h"
00060 #include "apbs/vunit.h"
00061
00067 struct sVaccSurf {
00068 Vmem *mem;
00069 double *xpts;
00070 double *ypts;
00071 double *zpts;
00072 int *bpts;
00074 double area;
00075 int npts;
00076 double probe_radius;
00078 };
00079
00084 typedef struct sVaccSurf VaccSurf;
00085
00091 struct sVacc {
00092
00093 Vmem *mem;
00094 Valist *alist;
00095 Vclist *clist;
00096 int *atomFlags;
00099 VaccSurf *refSphere;
00100 VaccSurf **surf;
00103 Vset acc;
00105 double surf_density;
00108 };
00109
00114 typedef struct sVacc Vacc;
00115
00116 #if !defined(VINLINE_VACC)
00117
00123 unsigned long int Vacc_memChk(
00124 Vacc *thee
00125 );
00126
00127 #else
00128
00129 # define Vacc_memChk(thee) (Vmem_bytes((thee)->mem))
00130
00131 #endif
00132
00140 VaccSurf* VaccSurf_ctor(
00141 Vmem *mem,
00142 double probe_radius,
00143 int nsphere
00144 );
00145
00153 int VaccSurf_ctor2(
00154 VaccSurf *thee,
00155 Vmem *mem,
00156 double probe_radius,
00157 int nsphere
00158 );
00159
00165 void VaccSurf_dtor(
00166 VaccSurf **thee
00167 );
00168
00174 void VaccSurf_dtor2(
00175 VaccSurf *thee
00176 );
00177
00192 VaccSurf* VaccSurf_refSphere(
00193 Vmem *mem,
00194 int npts
00195 );
00196
00204 VaccSurf* Vacc_atomSurf(
00205 Vacc *thee,
00206 Vatom *atom,
00207 VaccSurf *ref,
00209 double probe_radius
00210 );
00211
00212
00217 Vacc* Vacc_ctor(
00218 Valist *alist,
00219 Vclist *clist,
00221 double surf_density
00223 );
00224
00229 int Vacc_ctor2(
00230 Vacc *thee,
00231 Valist *alist,
00232 Vclist *clist,
00234 double surf_density
00236 );
00237
00242 void Vacc_dtor(
00243 Vacc **thee
00244 );
00245
00250 void Vacc_dtor2(
00251 Vacc *thee
00252 );
00253
00264 double Vacc_vdwAcc(
00265 Vacc *thee,
00266 double center[VAPBS_DIM]
00267 );
00268
00280 double Vacc_ivdwAcc(
00281 Vacc *thee,
00282 double center[VAPBS_DIM],
00283 double radius
00284 );
00285
00300 double Vacc_molAcc(
00301 Vacc *thee,
00302 double center[VAPBS_DIM],
00303 double radius
00304 );
00305
00324 double Vacc_fastMolAcc(
00325 Vacc *thee,
00326 double center[VAPBS_DIM],
00327 double radius
00328 );
00329
00341 double Vacc_splineAcc(
00342 Vacc *thee,
00343 double center[VAPBS_DIM],
00344 double win,
00345 double infrad
00346 );
00347
00353 void Vacc_splineAccGrad(
00354 Vacc *thee,
00355 double center[VAPBS_DIM],
00356 double win,
00357 double infrad,
00358 double *grad
00359 );
00360
00372 double Vacc_splineAccAtom(
00373 Vacc *thee,
00374 double center[VAPBS_DIM],
00375 double win,
00376 double infrad,
00377 Vatom *atom
00378 );
00379
00390 void Vacc_splineAccGradAtomUnnorm(
00391 Vacc *thee,
00392 double center[VAPBS_DIM],
00393 double win,
00394 double infrad,
00395 Vatom *atom,
00396 double *force
00397 );
00398
00410 void Vacc_splineAccGradAtomNorm(
00411 Vacc *thee,
00412 double center[VAPBS_DIM],
00413 double win,
00414 double infrad,
00415 Vatom *atom,
00416 double *force
00417 );
00418
00428 double Vacc_SASA(
00429 Vacc *thee,
00430 double radius
00431 );
00432
00440 double Vacc_totalSASA(
00441 Vacc *thee,
00442 double radius
00443 );
00444
00452 double Vacc_atomSASA(
00453 Vacc *thee,
00454 double radius,
00455 Vatom *atom
00456 );
00457
00464 VaccSurf* Vacc_atomSASPoints(
00465 Vacc *thee,
00466 double radius,
00467 Vatom *atom
00468 );
00469
00470 #endif
00471