00001
00060 #ifndef _VACC_H_
00061 #define _VACC_H_
00062
00063
00064 #include "maloc/maloc.h"
00065 #include "apbs/vhal.h"
00066
00067
00068 #include "apbs/valist.h"
00069 #include "apbs/vclist.h"
00070 #include "apbs/vatom.h"
00071 #include "apbs/vunit.h"
00072 #include "apbs/apolparm.h"
00073
00079 struct sVaccSurf {
00080 Vmem *mem;
00081 double *xpts;
00082 double *ypts;
00083 double *zpts;
00084 char *bpts;
00086 double area;
00087 int npts;
00088 double probe_radius;
00090 };
00091
00096 typedef struct sVaccSurf VaccSurf;
00097
00103 struct sVacc {
00104
00105 Vmem *mem;
00106 Valist *alist;
00107 Vclist *clist;
00108 int *atomFlags;
00111 VaccSurf *refSphere;
00112 VaccSurf **surf;
00115 Vset acc;
00117 double surf_density;
00120 };
00121
00126 typedef struct sVacc Vacc;
00127
00128 #if !defined(VINLINE_VACC)
00129
00135 unsigned long int Vacc_memChk(
00136 Vacc *thee
00137 );
00138
00139 #else
00140
00141 # define Vacc_memChk(thee) (Vmem_bytes((thee)->mem))
00142
00143 #endif
00144
00152 VaccSurf* VaccSurf_ctor(
00153 Vmem *mem,
00154 double probe_radius,
00155 int nsphere
00156 );
00157
00165 int VaccSurf_ctor2(
00166 VaccSurf *thee,
00167 Vmem *mem,
00168 double probe_radius,
00169 int nsphere
00170 );
00171
00177 void VaccSurf_dtor(
00178 VaccSurf **thee
00179 );
00180
00186 void VaccSurf_dtor2(
00187 VaccSurf *thee
00188 );
00189
00204 VaccSurf* VaccSurf_refSphere(
00205 Vmem *mem,
00206 int npts
00207 );
00208
00216 VaccSurf* Vacc_atomSurf(
00217 Vacc *thee,
00218 Vatom *atom,
00219 VaccSurf *ref,
00221 double probe_radius
00222 );
00223
00224
00229 Vacc* Vacc_ctor(
00230 Valist *alist,
00231 Vclist *clist,
00233 double surf_density
00235 );
00236
00241 int Vacc_ctor2(
00242 Vacc *thee,
00243 Valist *alist,
00244 Vclist *clist,
00246 double surf_density
00248 );
00249
00254 void Vacc_dtor(
00255 Vacc **thee
00256 );
00257
00262 void Vacc_dtor2(
00263 Vacc *thee
00264 );
00265
00276 double Vacc_vdwAcc(
00277 Vacc *thee,
00278 double center[VAPBS_DIM]
00279 );
00280
00292 double Vacc_ivdwAcc(
00293 Vacc *thee,
00294 double center[VAPBS_DIM],
00295 double radius
00296 );
00297
00312 double Vacc_molAcc(
00313 Vacc *thee,
00314 double center[VAPBS_DIM],
00315 double radius
00316 );
00317
00336 double Vacc_fastMolAcc(
00337 Vacc *thee,
00338 double center[VAPBS_DIM],
00339 double radius
00340 );
00341
00353 double Vacc_splineAcc(
00354 Vacc *thee,
00355 double center[VAPBS_DIM],
00356 double win,
00357 double infrad
00358 );
00359
00365 void Vacc_splineAccGrad(
00366 Vacc *thee,
00367 double center[VAPBS_DIM],
00368 double win,
00369 double infrad,
00370 double *grad
00371 );
00372
00384 double Vacc_splineAccAtom(
00385 Vacc *thee,
00386 double center[VAPBS_DIM],
00387 double win,
00388 double infrad,
00389 Vatom *atom
00390 );
00391
00402 void Vacc_splineAccGradAtomUnnorm(
00403 Vacc *thee,
00404 double center[VAPBS_DIM],
00405 double win,
00406 double infrad,
00407 Vatom *atom,
00408 double *force
00409 );
00410
00422 void Vacc_splineAccGradAtomNorm(
00423 Vacc *thee,
00424 double center[VAPBS_DIM],
00425 double win,
00426 double infrad,
00427 Vatom *atom,
00428 double *force
00429 );
00430
00438 void Vacc_splineAccGradAtomNorm4(
00439 Vacc *thee,
00440 double center[VAPBS_DIM],
00441 double win,
00442 double infrad,
00443 Vatom *atom,
00444 double *force
00445 );
00446
00454 void Vacc_splineAccGradAtomNorm3(
00455 Vacc *thee,
00456 double center[VAPBS_DIM],
00457 double win,
00458 double infrad,
00459 Vatom *atom,
00460 double *force
00461 );
00462
00463
00473 double Vacc_SASA(
00474 Vacc *thee,
00475 double radius
00476 );
00477
00485 double Vacc_totalSASA(
00486 Vacc *thee,
00487 double radius
00488 );
00489
00497 double Vacc_atomSASA(
00498 Vacc *thee,
00499 double radius,
00500 Vatom *atom
00501 );
00502
00509 VaccSurf* Vacc_atomSASPoints(
00510 Vacc *thee,
00511 double radius,
00512 Vatom *atom
00513 );
00514
00520 void Vacc_atomdSAV(
00521 Vacc *thee,
00522 double radius,
00523 Vatom *atom,
00524 double *dSA
00525 );
00526
00532 void Vacc_atomdSASA(
00533 Vacc *thee,
00534 double dpos,
00535 double radius,
00536 Vatom *atom,
00537 double *dSA
00538 );
00539
00545 void Vacc_totalAtomdSASA(
00546 Vacc *thee,
00547 double dpos,
00548 double radius,
00549 Vatom *atom,
00550 double *dSA
00551 );
00552
00558 void Vacc_totalAtomdSAV(
00559 Vacc *thee,
00560 double dpos,
00561 double radius,
00562 Vatom *atom,
00563 double *dSA,
00564 Vclist *clist
00565 );
00566
00574 double Vacc_totalSAV(
00575 Vacc *thee,
00576 Vclist *clist,
00577 APOLparm *apolparm,
00579 double radius
00580 );
00581
00588 VPUBLIC int Vacc_wcaEnergy(
00589 Vacc *thee,
00590 APOLparm *apolparm,
00591 Valist *alist,
00592 Vclist *clist
00593 );
00600 VPUBLIC int Vacc_wcaForceAtom(Vacc *thee,
00601 APOLparm *apolparm,
00602 Vclist *clist,
00603 Vatom *atom,
00604 double *force
00605 );
00606
00607 #endif
00608