00001
00072 #ifndef _VACC_H_
00073 #define _VACC_H_
00074
00075
00076 #include "maloc/maloc.h"
00077 #include "apbs/vhal.h"
00078
00079
00080 #include "apbs/valist.h"
00081 #include "apbs/vclist.h"
00082 #include "apbs/vatom.h"
00083 #include "apbs/vunit.h"
00084 #include "apbs/apolparm.h"
00085
00091 struct sVaccSurf {
00092 Vmem *mem;
00093 double *xpts;
00094 double *ypts;
00095 double *zpts;
00096 int *bpts;
00098 double area;
00099 int npts;
00100 double probe_radius;
00102 };
00103
00108 typedef struct sVaccSurf VaccSurf;
00109
00115 struct sVacc {
00116
00117 Vmem *mem;
00118 Valist *alist;
00119 Vclist *clist;
00120 int *atomFlags;
00123 VaccSurf *refSphere;
00124 VaccSurf **surf;
00127 Vset acc;
00129 double surf_density;
00132 };
00133
00138 typedef struct sVacc Vacc;
00139
00140 #if !defined(VINLINE_VACC)
00141
00147 unsigned long int Vacc_memChk(
00148 Vacc *thee
00149 );
00150
00151 #else
00152
00153 # define Vacc_memChk(thee) (Vmem_bytes((thee)->mem))
00154
00155 #endif
00156
00164 VaccSurf* VaccSurf_ctor(
00165 Vmem *mem,
00166 double probe_radius,
00167 int nsphere
00168 );
00169
00177 int VaccSurf_ctor2(
00178 VaccSurf *thee,
00179 Vmem *mem,
00180 double probe_radius,
00181 int nsphere
00182 );
00183
00189 void VaccSurf_dtor(
00190 VaccSurf **thee
00191 );
00192
00198 void VaccSurf_dtor2(
00199 VaccSurf *thee
00200 );
00201
00216 VaccSurf* VaccSurf_refSphere(
00217 Vmem *mem,
00218 int npts
00219 );
00220
00228 VaccSurf* Vacc_atomSurf(
00229 Vacc *thee,
00230 Vatom *atom,
00231 VaccSurf *ref,
00233 double probe_radius
00234 );
00235
00236
00241 Vacc* Vacc_ctor(
00242 Valist *alist,
00243 Vclist *clist,
00245 double surf_density
00247 );
00248
00253 int Vacc_ctor2(
00254 Vacc *thee,
00255 Valist *alist,
00256 Vclist *clist,
00258 double surf_density
00260 );
00261
00266 void Vacc_dtor(
00267 Vacc **thee
00268 );
00269
00274 void Vacc_dtor2(
00275 Vacc *thee
00276 );
00277
00288 double Vacc_vdwAcc(
00289 Vacc *thee,
00290 double center[VAPBS_DIM]
00291 );
00292
00304 double Vacc_ivdwAcc(
00305 Vacc *thee,
00306 double center[VAPBS_DIM],
00307 double radius
00308 );
00309
00324 double Vacc_molAcc(
00325 Vacc *thee,
00326 double center[VAPBS_DIM],
00327 double radius
00328 );
00329
00348 double Vacc_fastMolAcc(
00349 Vacc *thee,
00350 double center[VAPBS_DIM],
00351 double radius
00352 );
00353
00365 double Vacc_splineAcc(
00366 Vacc *thee,
00367 double center[VAPBS_DIM],
00368 double win,
00369 double infrad
00370 );
00371
00377 void Vacc_splineAccGrad(
00378 Vacc *thee,
00379 double center[VAPBS_DIM],
00380 double win,
00381 double infrad,
00382 double *grad
00383 );
00384
00396 double Vacc_splineAccAtom(
00397 Vacc *thee,
00398 double center[VAPBS_DIM],
00399 double win,
00400 double infrad,
00401 Vatom *atom
00402 );
00403
00414 void Vacc_splineAccGradAtomUnnorm(
00415 Vacc *thee,
00416 double center[VAPBS_DIM],
00417 double win,
00418 double infrad,
00419 Vatom *atom,
00420 double *force
00421 );
00422
00434 void Vacc_splineAccGradAtomNorm(
00435 Vacc *thee,
00436 double center[VAPBS_DIM],
00437 double win,
00438 double infrad,
00439 Vatom *atom,
00440 double *force
00441 );
00442
00450 void Vacc_splineAccGradAtomNorm4(
00451 Vacc *thee,
00452 double center[VAPBS_DIM],
00453 double win,
00454 double infrad,
00455 Vatom *atom,
00456 double *force
00457 );
00458
00466 void Vacc_splineAccGradAtomNorm3(
00467 Vacc *thee,
00468 double center[VAPBS_DIM],
00469 double win,
00470 double infrad,
00471 Vatom *atom,
00472 double *force
00473 );
00474
00475
00485 double Vacc_SASA(
00486 Vacc *thee,
00487 double radius
00488 );
00489
00497 double Vacc_totalSASA(
00498 Vacc *thee,
00499 double radius
00500 );
00501
00509 double Vacc_atomSASA(
00510 Vacc *thee,
00511 double radius,
00512 Vatom *atom
00513 );
00514
00521 VaccSurf* Vacc_atomSASPoints(
00522 Vacc *thee,
00523 double radius,
00524 Vatom *atom
00525 );
00526
00532 void Vacc_atomdSAV(
00533 Vacc *thee,
00534 double radius,
00535 Vatom *atom,
00536 double *dSA
00537 );
00538
00544 void Vacc_atomdSASA(
00545 Vacc *thee,
00546 double dpos,
00547 double radius,
00548 Vatom *atom,
00549 double *dSA
00550 );
00551
00557 void Vacc_totalAtomdSASA(
00558 Vacc *thee,
00559 double dpos,
00560 double radius,
00561 Vatom *atom,
00562 double *dSA
00563 );
00564
00570 void Vacc_totalAtomdSAV(
00571 Vacc *thee,
00572 double dpos,
00573 double radius,
00574 Vatom *atom,
00575 double *dSA,
00576 Vclist *clist
00577 );
00578
00586 double Vacc_totalSAV(
00587 Vacc *thee,
00588 Vclist *clist,
00589 APOLparm *apolparm,
00591 double radius
00592 );
00593
00600 VPUBLIC int Vacc_wcaEnergy(
00601 Vacc *thee,
00602 APOLparm *apolparm,
00603 Valist *alist,
00604 Vclist *clist
00605 );
00612 VPUBLIC int Vacc_wcaForceAtom(Vacc *thee,
00613 APOLparm *apolparm,
00614 Vclist *clist,
00615 Vatom *atom,
00616 double *force
00617 );
00618
00619 #endif
00620