APBS  1.5
vacc.h
Go to the documentation of this file.
1 
62 #ifndef _VACC_H_
63 #define _VACC_H_
64 
65 #include "apbscfg.h"
66 
67 #include "maloc/maloc.h"
68 #if defined(HAVE_MC_H)
69 #include "mc/mc.h"
70 #endif
71 
72 #include "generic/vhal.h"
73 #include "generic/valist.h"
74 #include "generic/vclist.h"
75 #include "generic/vatom.h"
76 #include "generic/vunit.h"
77 #include "generic/apolparm.h"
78 
84 struct sVaccSurf {
85  Vmem *mem;
86  double *xpts;
87  double *ypts;
88  double *zpts;
89  char *bpts;
91  double area;
92  int npts;
93  double probe_radius;
95 };
96 
101 typedef struct sVaccSurf VaccSurf;
102 
108 struct sVacc {
109 
110  Vmem *mem;
113  int *atomFlags;
120  Vset acc;
122  double surf_density;
125 };
126 
131 typedef struct sVacc Vacc;
132 
133 #if !defined(VINLINE_VACC)
134 
140  VEXTERNC unsigned long int Vacc_memChk(
141  Vacc *thee
142  );
143 
144 #else /* if defined(VINLINE_VACC) */
145 
146 # define Vacc_memChk(thee) (Vmem_bytes((thee)->mem))
147 
148 #endif /* if !defined(VINLINE_VACC) */
149 
157 VEXTERNC VaccSurf* VaccSurf_ctor(
158  Vmem *mem,
159  double probe_radius,
160  int nsphere
161  );
162 
170 VEXTERNC int VaccSurf_ctor2(
171  VaccSurf *thee,
172  Vmem *mem,
173  double probe_radius,
174  int nsphere
175  );
176 
182 VEXTERNC void VaccSurf_dtor(
183  VaccSurf **thee
184  );
185 
191 VEXTERNC void VaccSurf_dtor2(
192  VaccSurf *thee
193  );
194 
209 VEXTERNC VaccSurf* VaccSurf_refSphere(
210  Vmem *mem,
211  int npts
212  );
213 
221 VEXTERNC VaccSurf* Vacc_atomSurf(
222  Vacc *thee,
223  Vatom *atom,
224  VaccSurf *ref,
226  double probe_radius
227  );
228 
233 VEXTERNC Vacc* Vacc_ctor(
234  Valist *alist,
235  Vclist *clist,
237  double surf_density
239  );
240 
245 VEXTERNC int Vacc_ctor2(
246  Vacc *thee,
247  Valist *alist,
248  Vclist *clist,
250  double surf_density
252  );
253 
258 VEXTERNC void Vacc_dtor(
259  Vacc **thee
260  );
261 
266 VEXTERNC void Vacc_dtor2(
267  Vacc *thee
268  );
269 
280 VEXTERNC double Vacc_vdwAcc(
281  Vacc *thee,
282  double center[VAPBS_DIM]
283  );
284 
296 VEXTERNC double Vacc_ivdwAcc(
297  Vacc *thee,
298  double center[VAPBS_DIM],
299  double radius
300  );
301 
316 VEXTERNC double Vacc_molAcc(
317  Vacc *thee,
318  double center[VAPBS_DIM],
319  double radius
320  );
321 
340 VEXTERNC double Vacc_fastMolAcc(
341  Vacc *thee,
342  double center[VAPBS_DIM],
343  double radius
344  );
345 
357 VEXTERNC double Vacc_splineAcc(
358  Vacc *thee,
359  double center[VAPBS_DIM],
360  double win,
361  double infrad
362  );
363 
369 VEXTERNC void Vacc_splineAccGrad(
370  Vacc *thee,
371  double center[VAPBS_DIM],
372  double win,
373  double infrad,
374  double *grad
375  );
376 
388 VEXTERNC double Vacc_splineAccAtom(
389  Vacc *thee,
390  double center[VAPBS_DIM],
391  double win,
392  double infrad,
393  Vatom *atom
394  );
395 
406 VEXTERNC void Vacc_splineAccGradAtomUnnorm(
407  Vacc *thee,
408  double center[VAPBS_DIM],
409  double win,
410  double infrad,
411  Vatom *atom,
412  double *force
413  );
414 
426 VEXTERNC void Vacc_splineAccGradAtomNorm(
427  Vacc *thee,
428  double center[VAPBS_DIM],
429  double win,
430  double infrad,
431  Vatom *atom,
432  double *force
433  );
434 
442 VEXTERNC void Vacc_splineAccGradAtomNorm4(
443  Vacc *thee,
444  double center[VAPBS_DIM],
445  double win,
446  double infrad,
447  Vatom *atom,
448  double *force
449  );
450 
458 VEXTERNC void Vacc_splineAccGradAtomNorm3(
459  Vacc *thee,
460  double center[VAPBS_DIM],
461  double win,
462  double infrad,
463  Vatom *atom,
464  double *force
465  );
466 
467 
477 VEXTERNC double Vacc_SASA(
478  Vacc *thee,
479  double radius
480  );
481 
489 VEXTERNC double Vacc_totalSASA(
490  Vacc *thee,
491  double radius
492  );
493 
501 VEXTERNC double Vacc_atomSASA(
502  Vacc *thee,
503  double radius,
504  Vatom *atom
505  );
506 
513 VEXTERNC VaccSurf* Vacc_atomSASPoints(
514  Vacc *thee,
515  double radius,
516  Vatom *atom
517  );
518 
524 VEXTERNC void Vacc_atomdSAV(
525  Vacc *thee,
526  double radius,
527  Vatom *atom,
528  double *dSA
529  );
530 
536 VEXTERNC void Vacc_atomdSASA(
537  Vacc *thee,
538  double dpos,
539  double radius,
540  Vatom *atom,
541  double *dSA
542  );
543 
549 VEXTERNC void Vacc_totalAtomdSASA(
550  Vacc *thee,
551  double dpos,
552  double radius,
553  Vatom *atom,
554  double *dSA
555  );
556 
562 VEXTERNC void Vacc_totalAtomdSAV(
563  Vacc *thee,
564  double dpos,
565  double radius,
566  Vatom *atom,
567  double *dSA,
568  Vclist *clist
569  );
570 
578 VEXTERNC double Vacc_totalSAV(
579  Vacc *thee,
580  Vclist *clist,
581  APOLparm *apolparm,
583  double radius
584  );
585 
592 VEXTERNC int Vacc_wcaEnergy(
593  Vacc *thee,
594  APOLparm *apolparm,
595  Valist *alist,
596  Vclist *clist
597  );
604 VEXTERNC int Vacc_wcaForceAtom(Vacc *thee,
605  APOLparm *apolparm,
606  Vclist *clist,
607  Vatom *atom,
608  double *force
609  );
610 
616 VEXTERNC int Vacc_wcaEnergyAtom(
617  Vacc *thee,
618  APOLparm *apolparm,
619  Valist *alist,
620  Vclist *clist,
621  int iatom,
622  double *value
623  );
624 
625 #endif /* ifndef _VACC_H_ */
VEXTERNC Vacc * Vacc_ctor(Valist *alist, Vclist *clist, double surf_density)
Construct the accessibility object.
Definition: vacc.c:132
Contains declarations for class Valist.
double * xpts
Definition: vacc.h:86
VEXTERNC int Vacc_wcaEnergyAtom(Vacc *thee, APOLparm *apolparm, Valist *alist, Vclist *clist, int iatom, double *value)
Calculate the WCA energy for an atom.
Definition: vacc.c:1580
VEXTERNC void Vacc_totalAtomdSASA(Vacc *thee, double dpos, double radius, Vatom *atom, double *dSA)
Testing purposes only.
Definition: vacc.c:1389
VEXTERNC double Vacc_atomSASA(Vacc *thee, double radius, Vatom *atom)
Return the atomic solvent accessible surface area (SASA)
Definition: vacc.c:780
Oracle for solvent- and ion-accessibility around a biomolecule.
Definition: vacc.h:108
VEXTERNC void Vacc_dtor(Vacc **thee)
Destroy object.
Definition: vacc.c:245
VaccSurf ** surf
Definition: vacc.h:117
char * bpts
Definition: vacc.h:89
VEXTERNC unsigned long int Vacc_memChk(Vacc *thee)
Get number of bytes in this object and its members.
Definition: vacc.c:63
Vset acc
Definition: vacc.h:120
VaccSurf * refSphere
Definition: vacc.h:116
VEXTERNC void Vacc_splineAccGradAtomNorm(Vacc *thee, double center[VAPBS_DIM], double win, double infrad, Vatom *atom, double *force)
Report gradient of spline-based accessibility with respect to a particular atom normalized by the acc...
Definition: vacc.c:316
VEXTERNC double Vacc_ivdwAcc(Vacc *thee, double center[VAPBS_DIM], double radius)
Report inflated van der Waals accessibility.
VEXTERNC void Vacc_splineAccGradAtomUnnorm(Vacc *thee, double center[VAPBS_DIM], double win, double infrad, Vatom *atom, double *force)
Report gradient of spline-based accessibility with respect to a particular atom (see Vpmg_splineAccAt...
Definition: vacc.c:377
VEXTERNC void Vacc_splineAccGradAtomNorm4(Vacc *thee, double center[VAPBS_DIM], double win, double infrad, Vatom *atom, double *force)
Report gradient of spline-based accessibility with respect to a particular atom normalized by a 4th o...
Definition: vacc.c:1006
VEXTERNC void VaccSurf_dtor2(VaccSurf *thee)
Destroy the surface object.
Definition: vacc.c:853
VEXTERNC int Vacc_wcaEnergy(Vacc *thee, APOLparm *apolparm, Valist *alist, Vclist *clist)
Return the WCA integral energy.
Definition: vacc.c:1721
VEXTERNC VaccSurf * VaccSurf_refSphere(Vmem *mem, int npts)
Set up an array of points for a reference sphere of unit radius.
Definition: vacc.c:926
Vmem * mem
Definition: vacc.h:85
int * atomFlags
Definition: vacc.h:113
VEXTERNC double Vacc_totalSASA(Vacc *thee, double radius)
Return the total solvent accessible surface area (SASA)
Definition: vacc.c:774
double probe_radius
Definition: vacc.h:93
VEXTERNC int Vacc_wcaForceAtom(Vacc *thee, APOLparm *apolparm, Vclist *clist, Vatom *atom, double *force)
Return the WCA integral force.
Definition: vacc.c:1756
VEXTERNC void Vacc_dtor2(Vacc *thee)
FORTRAN stub to destroy object.
Definition: vacc.c:255
Contains a collection of useful constants and conversion factors.
VEXTERNC void Vacc_splineAccGradAtomNorm3(Vacc *thee, double center[VAPBS_DIM], double win, double infrad, Vatom *atom, double *force)
Report gradient of spline-based accessibility with respect to a particular atom normalized by a 3rd o...
Definition: vacc.c:1099
VEXTERNC VaccSurf * VaccSurf_ctor(Vmem *mem, double probe_radius, int nsphere)
Allocate and construct the surface object; do not assign surface points to positions.
Definition: vacc.c:803
VEXTERNC double Vacc_vdwAcc(Vacc *thee, double center[VAPBS_DIM])
Report van der Waals accessibility.
Contains declarations for class Vatom.
double surf_density
Definition: vacc.h:122
VEXTERNC void Vacc_splineAccGrad(Vacc *thee, double center[VAPBS_DIM], double win, double infrad, double *grad)
Report gradient of spline-based accessibility.
Definition: vacc.c:561
double * zpts
Definition: vacc.h:88
VEXTERNC double Vacc_splineAccAtom(Vacc *thee, double center[VAPBS_DIM], double win, double infrad, Vatom *atom)
Report spline-based accessibility for a given atom.
Definition: vacc.c:438
Vclist * clist
Definition: vacc.h:112
VEXTERNC double Vacc_totalSAV(Vacc *thee, Vclist *clist, APOLparm *apolparm, double radius)
Return the total solvent accessible volume (SAV)
Definition: vacc.c:1503
VEXTERNC void Vacc_atomdSASA(Vacc *thee, double dpos, double radius, Vatom *atom, double *dSA)
Get the derivatve of solvent accessible area.
Definition: vacc.c:1320
VEXTERNC void Vacc_totalAtomdSAV(Vacc *thee, double dpos, double radius, Vatom *atom, double *dSA, Vclist *clist)
Total solvent accessible volume.
Definition: vacc.c:1448
VEXTERNC double Vacc_fastMolAcc(Vacc *thee, double center[VAPBS_DIM], double radius)
Report molecular accessibility quickly.
Definition: vacc.c:637
VEXTERNC double Vacc_SASA(Vacc *thee, double radius)
Build the solvent accessible surface (SAS) and calculate the solvent accessible surface area.
Definition: vacc.c:713
Contains generic macro definitions for APBS.
VEXTERNC int VaccSurf_ctor2(VaccSurf *thee, Vmem *mem, double probe_radius, int nsphere)
Construct the surface object using previously allocated memory; do not assign surface points to posit...
Definition: vacc.c:813
#define VAPBS_DIM
Our dimension.
Definition: vhal.h:402
VEXTERNC VaccSurf * Vacc_atomSASPoints(Vacc *thee, double radius, Vatom *atom)
Get the set of points for this atom's solvent-accessible surface.
Definition: vacc.c:982
Surface object list of per-atom surface points.
Definition: vacc.h:84
double area
Definition: vacc.h:91
VEXTERNC void VaccSurf_dtor(VaccSurf **thee)
Destroy the surface object and free its memory.
Definition: vacc.c:839
VEXTERNC double Vacc_molAcc(Vacc *thee, double center[VAPBS_DIM], double radius)
Report molecular accessibility.
Definition: vacc.c:608
VEXTERNC int Vacc_ctor2(Vacc *thee, Valist *alist, Vclist *clist, double surf_density)
FORTRAN stub to construct the accessibility object.
Definition: vacc.c:213
Contains public data members for Vatom class/module.
Definition: vatom.h:84
Container class for list of atom objects.
Definition: valist.h:78
Atom cell list.
Definition: vclist.h:117
int npts
Definition: vacc.h:92
Contains declarations for class Vclist.
Vmem * mem
Definition: vacc.h:110
Valist * alist
Definition: vacc.h:111
VEXTERNC void Vacc_atomdSAV(Vacc *thee, double radius, Vatom *atom, double *dSA)
Get the derivatve of solvent accessible volume.
Definition: vacc.c:1200
VEXTERNC double Vacc_splineAcc(Vacc *thee, double center[VAPBS_DIM], double win, double infrad)
Report spline-based accessibility.
Definition: vacc.c:528
Parameter structure for APOL-specific variables from input files.
Definition: apolparm.h:129
VEXTERNC VaccSurf * Vacc_atomSurf(Vacc *thee, Vatom *atom, VaccSurf *ref, double probe_radius)
Set up an array of points corresponding to the SAS due to a particular atom.
Definition: vacc.c:868
double * ypts
Definition: vacc.h:87