00001
00054 #ifndef _VACC_H_
00055 #define _VACC_H_
00056
00057
00058 #include "maloc/maloc.h"
00059 #include "apbs/vhal.h"
00060
00061
00062 #include "apbs/valist.h"
00063 #include "apbs/vclist.h"
00064 #include "apbs/vatom.h"
00065 #include "apbs/vunit.h"
00066 #include "apbs/apolparm.h"
00067
00073 struct sVaccSurf {
00074 Vmem *mem;
00075 double *xpts;
00076 double *ypts;
00077 double *zpts;
00078 char *bpts;
00080 double area;
00081 int npts;
00082 double probe_radius;
00084 };
00085
00090 typedef struct sVaccSurf VaccSurf;
00091
00097 struct sVacc {
00098
00099 Vmem *mem;
00100 Valist *alist;
00101 Vclist *clist;
00102 int *atomFlags;
00105 VaccSurf *refSphere;
00106 VaccSurf **surf;
00109 Vset acc;
00111 double surf_density;
00114 };
00115
00120 typedef struct sVacc Vacc;
00121
00122 #if !defined(VINLINE_VACC)
00123
00129 VEXTERNC unsigned long int Vacc_memChk(
00130 Vacc *thee
00131 );
00132
00133 #else
00134
00135 # define Vacc_memChk(thee) (Vmem_bytes((thee)->mem))
00136
00137 #endif
00138
00146 VEXTERNC VaccSurf* VaccSurf_ctor(
00147 Vmem *mem,
00148 double probe_radius,
00149 int nsphere
00150 );
00151
00159 VEXTERNC int VaccSurf_ctor2(
00160 VaccSurf *thee,
00161 Vmem *mem,
00162 double probe_radius,
00163 int nsphere
00164 );
00165
00171 VEXTERNC void VaccSurf_dtor(
00172 VaccSurf **thee
00173 );
00174
00180 VEXTERNC void VaccSurf_dtor2(
00181 VaccSurf *thee
00182 );
00183
00198 VEXTERNC VaccSurf* VaccSurf_refSphere(
00199 Vmem *mem,
00200 int npts
00201 );
00202
00210 VEXTERNC VaccSurf* Vacc_atomSurf(
00211 Vacc *thee,
00212 Vatom *atom,
00213 VaccSurf *ref,
00215 double probe_radius
00216 );
00217
00218
00223 VEXTERNC Vacc* Vacc_ctor(
00224 Valist *alist,
00225 Vclist *clist,
00227 double surf_density
00229 );
00230
00235 VEXTERNC int Vacc_ctor2(
00236 Vacc *thee,
00237 Valist *alist,
00238 Vclist *clist,
00240 double surf_density
00242 );
00243
00248 VEXTERNC void Vacc_dtor(
00249 Vacc **thee
00250 );
00251
00256 VEXTERNC void Vacc_dtor2(
00257 Vacc *thee
00258 );
00259
00270 VEXTERNC double Vacc_vdwAcc(
00271 Vacc *thee,
00272 double center[VAPBS_DIM]
00273 );
00274
00286 VEXTERNC double Vacc_ivdwAcc(
00287 Vacc *thee,
00288 double center[VAPBS_DIM],
00289 double radius
00290 );
00291
00306 VEXTERNC double Vacc_molAcc(
00307 Vacc *thee,
00308 double center[VAPBS_DIM],
00309 double radius
00310 );
00311
00330 VEXTERNC double Vacc_fastMolAcc(
00331 Vacc *thee,
00332 double center[VAPBS_DIM],
00333 double radius
00334 );
00335
00347 VEXTERNC double Vacc_splineAcc(
00348 Vacc *thee,
00349 double center[VAPBS_DIM],
00350 double win,
00351 double infrad
00352 );
00353
00359 VEXTERNC void Vacc_splineAccGrad(
00360 Vacc *thee,
00361 double center[VAPBS_DIM],
00362 double win,
00363 double infrad,
00364 double *grad
00365 );
00366
00378 VEXTERNC double Vacc_splineAccAtom(
00379 Vacc *thee,
00380 double center[VAPBS_DIM],
00381 double win,
00382 double infrad,
00383 Vatom *atom
00384 );
00385
00396 VEXTERNC void Vacc_splineAccGradAtomUnnorm(
00397 Vacc *thee,
00398 double center[VAPBS_DIM],
00399 double win,
00400 double infrad,
00401 Vatom *atom,
00402 double *force
00403 );
00404
00416 VEXTERNC void Vacc_splineAccGradAtomNorm(
00417 Vacc *thee,
00418 double center[VAPBS_DIM],
00419 double win,
00420 double infrad,
00421 Vatom *atom,
00422 double *force
00423 );
00424
00432 VEXTERNC void Vacc_splineAccGradAtomNorm4(
00433 Vacc *thee,
00434 double center[VAPBS_DIM],
00435 double win,
00436 double infrad,
00437 Vatom *atom,
00438 double *force
00439 );
00440
00448 VEXTERNC void Vacc_splineAccGradAtomNorm3(
00449 Vacc *thee,
00450 double center[VAPBS_DIM],
00451 double win,
00452 double infrad,
00453 Vatom *atom,
00454 double *force
00455 );
00456
00457
00467 VEXTERNC double Vacc_SASA(
00468 Vacc *thee,
00469 double radius
00470 );
00471
00479 VEXTERNC double Vacc_totalSASA(
00480 Vacc *thee,
00481 double radius
00482 );
00483
00491 VEXTERNC double Vacc_atomSASA(
00492 Vacc *thee,
00493 double radius,
00494 Vatom *atom
00495 );
00496
00503 VEXTERNC VaccSurf* Vacc_atomSASPoints(
00504 Vacc *thee,
00505 double radius,
00506 Vatom *atom
00507 );
00508
00514 VEXTERNC void Vacc_atomdSAV(
00515 Vacc *thee,
00516 double radius,
00517 Vatom *atom,
00518 double *dSA
00519 );
00520
00526 VEXTERNC void Vacc_atomdSASA(
00527 Vacc *thee,
00528 double dpos,
00529 double radius,
00530 Vatom *atom,
00531 double *dSA
00532 );
00533
00539 VEXTERNC void Vacc_totalAtomdSASA(
00540 Vacc *thee,
00541 double dpos,
00542 double radius,
00543 Vatom *atom,
00544 double *dSA
00545 );
00546
00552 VEXTERNC void Vacc_totalAtomdSAV(
00553 Vacc *thee,
00554 double dpos,
00555 double radius,
00556 Vatom *atom,
00557 double *dSA,
00558 Vclist *clist
00559 );
00560
00568 VEXTERNC double Vacc_totalSAV(
00569 Vacc *thee,
00570 Vclist *clist,
00571 APOLparm *apolparm,
00573 double radius
00574 );
00575
00582 VEXTERNC int Vacc_wcaEnergy(
00583 Vacc *thee,
00584 APOLparm *apolparm,
00585 Valist *alist,
00586 Vclist *clist
00587 );
00594 VEXTERNC int Vacc_wcaForceAtom(Vacc *thee,
00595 APOLparm *apolparm,
00596 Vclist *clist,
00597 Vatom *atom,
00598 double *force
00599 );
00600
00606 VEXTERNC int Vacc_wcaEnergyAtom(
00607 Vacc *thee,
00608 APOLparm *apolparm,
00609 Valist *alist,
00610 Vclist *clist,
00611 int iatom,
00612 double *value
00613 );
00614
00615 #endif