APBS  1.4.1
routines.h
Go to the documentation of this file.
1 
61 #ifndef _APBSROUTINES_H_
62 #define _APBSROUTINES_H_
63 
64 #include "apbs.h"
65 
66 #ifdef HAVE_MC_H
67 # include "mc/mc.h"
68 # include "apbs/vfetk.h"
69 #endif
70 #ifdef HAVE_MCX_H
71 # include "mcx/mcx.h"
72 #endif
73 
77 #define APBSRC 13
78 
83 struct AtomForce {
84  double ibForce[3];
85  double qfForce[3];
86  double dbForce[3];
87  double sasaForce[3];
88  double savForce[3];
89  double wcaForce[3];
90 };
91 
95 typedef struct AtomForce AtomForce;
96 
102 VEXTERNC Vparam* loadParameter(
103  NOsh *nosh
105  );
106 
112 VEXTERNC int loadMolecules(
113  NOsh *nosh,
114  Vparam *param,
116  Valist *alist[NOSH_MAXMOL]
118  );
119 
126 VEXTERNC void killMolecules(NOsh *nosh, Valist *alist[NOSH_MAXMOL]);
127 
137 VEXTERNC int loadDielMaps(NOsh *nosh,
138  Vgrid *dielXMap[NOSH_MAXMOL],
139  Vgrid *dielYMap[NOSH_MAXMOL],
140  Vgrid *dielZMap[NOSH_MAXMOL]
141  );
142 
151 VEXTERNC void killDielMaps(NOsh *nosh, Vgrid *dielXMap[NOSH_MAXMOL],
152  Vgrid *dielYMap[NOSH_MAXMOL], Vgrid *dielZMap[NOSH_MAXMOL]);
153 
161 VEXTERNC int loadKappaMaps(NOsh *nosh, Vgrid *kappa[NOSH_MAXMOL]);
162 
169 VEXTERNC void killKappaMaps(NOsh *nosh, Vgrid *kappa[NOSH_MAXMOL]);
170 
178 VEXTERNC int loadPotMaps(NOsh *nosh, Vgrid *pot[NOSH_MAXMOL]);
179 
186 VEXTERNC void killPotMaps(NOsh *nosh, Vgrid *pot[NOSH_MAXMOL]);
187 
195 VEXTERNC int loadChargeMaps(NOsh *nosh, Vgrid *charge[NOSH_MAXMOL]);
196 
203 VEXTERNC void killChargeMaps(NOsh *nosh, Vgrid *charge[NOSH_MAXMOL]);
204 
210 VEXTERNC void printPBEPARM(PBEparm *pbeparm);
211 
218 VEXTERNC void printMGPARM(MGparm *mgparm, double realCenter[3]);
219 
225 VEXTERNC int initMG(
226  int icalc,
227  NOsh *nosh,
228  MGparm *mgparm,
229  PBEparm *pbeparm,
230  double realCenter[3],
231  Vpbe *pbe[NOSH_MAXCALC],
232  Valist *alist[NOSH_MAXMOL],
233  Vgrid *dielXMap[NOSH_MAXMOL],
234  Vgrid *dielYMap[NOSH_MAXMOL],
235  Vgrid *dielZMap[NOSH_MAXMOL],
236  Vgrid *kappaMap[NOSH_MAXMOL],
237  Vgrid *chargeMap[NOSH_MAXMOL],
238  Vpmgp *pmgp[NOSH_MAXCALC],
239  Vpmg *pmg[NOSH_MAXCALC],
240  Vgrid *potMap[NOSH_MAXMOL]
241  );
242 
248 VEXTERNC void killMG(
249  NOsh *nosh,
250  Vpbe *pbe[NOSH_MAXCALC],
251  Vpmgp *pmgp[NOSH_MAXCALC],
252  Vpmg *pmg[NOSH_MAXCALC]
253 );
254 
263 VEXTERNC int solveMG(NOsh *nosh, Vpmg *pmg, MGparm_CalcType type);
264 
273 VEXTERNC int setPartMG(NOsh *nosh, MGparm *mgparm, Vpmg *pmg);
274 
288 VEXTERNC int energyMG(NOsh* nosh, int icalc, Vpmg *pmg,
289  int *nenergy, double *totEnergy, double *qfEnergy, double *qmEnergy,
290  double *dielEnergy);
291 
296 VEXTERNC void killEnergy();
297 
311 VEXTERNC int forceMG(Vmem *mem, NOsh *nosh, PBEparm *pbeparm, MGparm *mgparm,
312  Vpmg *pmg, int *nforce, AtomForce **atomForce, Valist *alist[NOSH_MAXMOL]);
313 
322 VEXTERNC void killForce(Vmem *mem, NOsh *nosh, int nforce[NOSH_MAXCALC],
323  AtomForce *atomForce[NOSH_MAXCALC]);
324 
329 VEXTERNC void storeAtomEnergy(
330  Vpmg *pmg,
331  int icalc,
332  double **atomEnergy,
333  int *nenergy
334  );
335 
352 VEXTERNC int writedataFlat(NOsh *nosh, Vcom *com, const char *fname,
353  double totEnergy[NOSH_MAXCALC], double qfEnergy[NOSH_MAXCALC],
354  double qmEnergy[NOSH_MAXCALC], double dielEnergy[NOSH_MAXCALC],
355  int nenergy[NOSH_MAXCALC], double *atomEnergy[NOSH_MAXCALC],
356  int nforce[NOSH_MAXCALC], AtomForce *atomForce[NOSH_MAXCALC]);
357 
374 VEXTERNC int writedataXML(NOsh *nosh, Vcom *com, const char *fname,
375  double totEnergy[NOSH_MAXCALC], double qfEnergy[NOSH_MAXCALC],
376  double qmEnergy[NOSH_MAXCALC], double dielEnergy[NOSH_MAXCALC],
377  int nenergy[NOSH_MAXCALC], double *atomEnergy[NOSH_MAXCALC],
378  int nforce[NOSH_MAXCALC], AtomForce *atomForce[NOSH_MAXCALC]);
379 
389 VEXTERNC int writedataMG(int rank, NOsh *nosh, PBEparm *pbeparm, Vpmg *pmg);
390 
400 VEXTERNC int writematMG(int rank, NOsh *nosh, PBEparm *pbeparm, Vpmg *pmg);
401 
411 VEXTERNC double returnEnergy(Vcom *com, NOsh *nosh, double totEnergy[NOSH_MAXCALC], int iprint);
412 
418 VEXTERNC int printEnergy(
419  Vcom *com,
420  NOsh *nosh,
421  double totEnergy[NOSH_MAXCALC],
423  int iprint
424  );
425 
431 VEXTERNC int printElecEnergy(
432  Vcom *com,
433  NOsh *nosh,
434  double totEnergy[NOSH_MAXCALC],
436  int iprint
437  );
438 
444 VEXTERNC int printApolEnergy(
445  NOsh *nosh,
446  int iprint
447  );
448 
454 VEXTERNC int printForce(
455  Vcom *com,
456  NOsh *nosh,
457  int nforce[NOSH_MAXCALC],
458  AtomForce *atomForce[NOSH_MAXCALC],
459  int i
460  );
461 
467 VEXTERNC int printElecForce(
468  Vcom *com,
469  NOsh *nosh,
470  int nforce[NOSH_MAXCALC],
471  AtomForce *atomForce[NOSH_MAXCALC],
472  int i
473  );
474 
480 VEXTERNC int printApolForce(
481  Vcom *com,
482  NOsh *nosh,
483  int nforce[NOSH_MAXCALC],
484  AtomForce *atomForce[NOSH_MAXCALC],
485  int i
486  );
487 
492 VEXTERNC void startVio();
493 
499 VEXTERNC int energyAPOL(
500  APOLparm *apolparm,
501  double sasa,
502  double sav,
503  double atomsasa[],
504  double atomwcaEnergy[],
505  int numatoms
506  );
507 
513 VEXTERNC int forceAPOL(
514  Vacc *acc,
515  Vmem *mem,
516  APOLparm *apolparm,
518  int *nforce,
520  AtomForce **atomForce,
522  Valist *alist,
523  Vclist *clist
524  );
525 
531 VEXTERNC int initAPOL(
532  NOsh *nosh,
533  Vmem *mem,
534  Vparam *param,
535  APOLparm *apolparm,
536  int *nforce,
537  AtomForce **atomForce,
538  Valist *alist
539  );
540 
541 
542 #ifdef HAVE_MC_H
543 #include "apbs/vfetk.h"
544 
553 VEXTERNC void printFEPARM(int icalc, NOsh *nosh, FEMparm *feparm,
554  Vfetk *fetk[NOSH_MAXCALC]);
555 
570 VEXTERNC int energyFE(NOsh* nosh, int icalc, Vfetk *fetk[NOSH_MAXCALC],
571  int *nenergy, double *totEnergy, double *qfEnergy, double *qmEnergy,
572  double *dielEnergy);
573 
581 VEXTERNC Vrc_Codes initFE(
582  int icalc,
583  NOsh *nosh,
584  FEMparm *feparm,
585  PBEparm *pbeparm,
586  Vpbe *pbe[NOSH_MAXCALC],
587  Valist *alist[NOSH_MAXMOL],
588  Vfetk *fetk[NOSH_MAXCALC]
589 );
590 
596 VEXTERNC void killFE(
597  NOsh *nosh,
598  Vpbe *pbe[NOSH_MAXCALC],
599  Vfetk *fetk[NOSH_MAXCALC],
600  Gem *gem[NOSH_MAXMOL]
601 );
602 
612 VEXTERNC int preRefineFE(int i,
613  FEMparm *feparm,
614  Vfetk *fetk[NOSH_MAXCALC]
615 );
616 
626 VEXTERNC int partFE(int i, NOsh *nosh, FEMparm *feparm,
627  Vfetk *fetk[NOSH_MAXCALC]);
628 
638 VEXTERNC int solveFE(int i,
639  PBEparm *pbeparm,
640  FEMparm *feparm,
641  Vfetk *fetk[NOSH_MAXCALC]
642 );
643 
655 VEXTERNC int postRefineFE(int icalc,
656  FEMparm *feparm,
657  Vfetk *fetk[NOSH_MAXCALC]
658 );
659 
669 VEXTERNC int writedataFE(int rank, NOsh *nosh, PBEparm *pbeparm, Vfetk *fetk);
670 
676 VEXTERNC Vrc_Codes loadMeshes(
677  NOsh *nosh,
678  Gem *gm[NOSH_MAXMOL]
680  );
681 
686 VEXTERNC void killMeshes(
687  NOsh *nosh,
688  Gem *alist[NOSH_MAXMOL]
689  );
690 #endif
691 
692 #endif
VEXTERNC Vparam * loadParameter(NOsh *nosh)
Loads and returns parameter object.
Definition: routines.c:60
#define NOSH_MAXMOL
Maximum number of molecules in a run.
Definition: nosh.h:79
Contains public data members for Vpbe class/module.
Definition: vpbe.h:84
Oracle for solvent- and ion-accessibility around a biomolecule.
Definition: vacc.h:108
VEXTERNC int loadChargeMaps(NOsh *nosh, Vgrid *charge[NOSH_MAXMOL])
Load the charge maps given in NOsh into grid objects.
Definition: routines.c:770
VEXTERNC int energyAPOL(APOLparm *apolparm, double sasa, double sav, double atomsasa[], double atomwcaEnergy[], int numatoms)
Calculate non-polar energies.
Definition: routines.c:4507
Electrostatic potential oracle for Cartesian mesh data.
Definition: vgrid.h:81
VEXTERNC int writedataFlat(NOsh *nosh, Vcom *com, const char *fname, double totEnergy[NOSH_MAXCALC], double qfEnergy[NOSH_MAXCALC], double qmEnergy[NOSH_MAXCALC], double dielEnergy[NOSH_MAXCALC], int nenergy[NOSH_MAXCALC], double *atomEnergy[NOSH_MAXCALC], int nforce[NOSH_MAXCALC], AtomForce *atomForce[NOSH_MAXCALC])
Write out information to a flat file.
Definition: routines.c:1741
VEXTERNC Vrc_Codes loadMeshes(NOsh *nosh, Gem *gm[NOSH_MAXMOL])
Load the meshes given in NOsh into geometry objects.
double ibForce[3]
Definition: routines.h:84
VEXTERNC int postRefineFE(int icalc, FEMparm *feparm, Vfetk *fetk[NOSH_MAXCALC])
Estimate error, mark mesh, and refine mesh after solve.
Definition: routines.c:4079
Contains public data members for Vpmg class/module.
Definition: vpmg.h:116
VEXTERNC int solveMG(NOsh *nosh, Vpmg *pmg, MGparm_CalcType type)
Solve the PBE with MG.
Definition: routines.c:1341
VEXTERNC int writematMG(int rank, NOsh *nosh, PBEparm *pbeparm, Vpmg *pmg)
Write out operator matrix from MG calculation to file.
Definition: routines.c:1653
VEXTERNC int setPartMG(NOsh *nosh, MGparm *mgparm, Vpmg *pmg)
Set MG partitions for calculating observables and performing I/O.
Definition: routines.c:1377
VEXTERNC void killChargeMaps(NOsh *nosh, Vgrid *charge[NOSH_MAXMOL])
Destroy the loaded charge maps.
Definition: routines.c:849
Header file for header dependencies.
VEXTERNC void killForce(Vmem *mem, NOsh *nosh, int nforce[NOSH_MAXCALC], AtomForce *atomForce[NOSH_MAXCALC])
Free memory from MG force calculation.
Definition: routines.c:1636
double savForce[3]
Definition: routines.h:88
VEXTERNC int loadKappaMaps(NOsh *nosh, Vgrid *kappa[NOSH_MAXMOL])
Load the kappa maps given in NOsh into grid objects.
Definition: routines.c:575
VEXTERNC int loadDielMaps(NOsh *nosh, Vgrid *dielXMap[NOSH_MAXMOL], Vgrid *dielYMap[NOSH_MAXMOL], Vgrid *dielZMap[NOSH_MAXMOL])
Load the dielectric maps given in NOsh into grid objects.
Definition: routines.c:250
VEXTERNC int initMG(int icalc, NOsh *nosh, MGparm *mgparm, PBEparm *pbeparm, double realCenter[3], Vpbe *pbe[NOSH_MAXCALC], Valist *alist[NOSH_MAXMOL], Vgrid *dielXMap[NOSH_MAXMOL], Vgrid *dielYMap[NOSH_MAXMOL], Vgrid *dielZMap[NOSH_MAXMOL], Vgrid *kappaMap[NOSH_MAXMOL], Vgrid *chargeMap[NOSH_MAXMOL], Vpmgp *pmgp[NOSH_MAXCALC], Vpmg *pmg[NOSH_MAXCALC], Vgrid *potMap[NOSH_MAXMOL])
Initialize an MG calculation.
Definition: routines.c:1074
VEXTERNC void storeAtomEnergy(Vpmg *pmg, int icalc, double **atomEnergy, int *nenergy)
Store energy in arrays for future use.
Definition: routines.c:1724
VEXTERNC void killMG(NOsh *nosh, Vpbe *pbe[NOSH_MAXCALC], Vpmgp *pmgp[NOSH_MAXCALC], Vpmg *pmg[NOSH_MAXCALC])
Kill structures initialized during an MG calculation.
Definition: routines.c:1315
VEXTERNC int printApolForce(Vcom *com, NOsh *nosh, int nforce[NOSH_MAXCALC], AtomForce *atomForce[NOSH_MAXCALC], int i)
Combine and pretty-print force data.
Definition: routines.c:3314
VEXTERNC void printFEPARM(int icalc, NOsh *nosh, FEMparm *feparm, Vfetk *fetk[NOSH_MAXCALC])
Print out FE-specific params loaded from input.
Definition: routines.c:3743
VEXTERNC void killPotMaps(NOsh *nosh, Vgrid *pot[NOSH_MAXMOL])
Destroy the loaded potential maps.
Definition: routines.c:751
VEXTERNC void killFE(NOsh *nosh, Vpbe *pbe[NOSH_MAXCALC], Vfetk *fetk[NOSH_MAXCALC], Gem *gem[NOSH_MAXMOL])
Kill structures initialized during an FE calculation.
Definition: routines.c:3526
VEXTERNC int printElecEnergy(Vcom *com, NOsh *nosh, double totEnergy[NOSH_MAXCALC], int iprint)
Combine and pretty-print energy data.
Definition: routines.c:2696
double dbForce[3]
Definition: routines.h:86
VEXTERNC int partFE(int i, NOsh *nosh, FEMparm *feparm, Vfetk *fetk[NOSH_MAXCALC])
Partition mesh (if applicable)
Definition: routines.c:3879
VEXTERNC void killKappaMaps(NOsh *nosh, Vgrid *kappa[NOSH_MAXMOL])
Destroy the loaded kappa maps.
Definition: routines.c:662
enum eMGparm_CalcType MGparm_CalcType
Declare MGparm_CalcType type.
Definition: mgparm.h:89
VEXTERNC int energyFE(NOsh *nosh, int icalc, Vfetk *fetk[NOSH_MAXCALC], int *nenergy, double *totEnergy, double *qfEnergy, double *qmEnergy, double *dielEnergy)
Calculate electrostatic energies from FE solution.
Definition: routines.c:4019
VEXTERNC int printForce(Vcom *com, NOsh *nosh, int nforce[NOSH_MAXCALC], AtomForce *atomForce[NOSH_MAXCALC], int i)
Combine and pretty-print force data (deprecated...see printElecForce)
Definition: routines.c:2823
VEXTERNC void printPBEPARM(PBEparm *pbeparm)
Print out generic PBE params loaded from input.
Definition: routines.c:867
VEXTERNC int writedataMG(int rank, NOsh *nosh, PBEparm *pbeparm, Vpmg *pmg)
Write out observables from MG calculation to file.
Definition: routines.c:2237
Parameter structure for FEM-specific variables from input files.
Definition: femparm.h:133
Structure to hold atomic forces.
Definition: routines.h:83
Reads and assigns charge/radii parameters.
Definition: vparam.h:135
Contains public data members for Vpmgp class/module.
Definition: vpmgp.h:80
VEXTERNC int printEnergy(Vcom *com, NOsh *nosh, double totEnergy[NOSH_MAXCALC], int iprint)
Combine and pretty-print energy data (deprecated...see printElecEnergy)
Definition: routines.c:2628
VEXTERNC double returnEnergy(Vcom *com, NOsh *nosh, double totEnergy[NOSH_MAXCALC], int iprint)
Access net local energy.
Definition: routines.c:2596
VEXTERNC int loadPotMaps(NOsh *nosh, Vgrid *pot[NOSH_MAXMOL])
Load the potential maps given in NOsh into grid objects.
Definition: routines.c:679
Parameter structure for PBE variables from input files.
Definition: pbeparm.h:117
VEXTERNC void killMeshes(NOsh *nosh, Gem *alist[NOSH_MAXMOL])
Destroy the loaded meshes.
VEXTERNC void killMolecules(NOsh *nosh, Valist *alist[NOSH_MAXMOL])
Destroy the loaded molecules.
Definition: routines.c:233
VEXTERNC int forceMG(Vmem *mem, NOsh *nosh, PBEparm *pbeparm, MGparm *mgparm, Vpmg *pmg, int *nforce, AtomForce **atomForce, Valist *alist[NOSH_MAXMOL])
Calculate forces from MG solution.
Definition: routines.c:1490
Parameter structure for MG-specific variables from input files.
Definition: mgparm.h:114
VEXTERNC void killDielMaps(NOsh *nosh, Vgrid *dielXMap[NOSH_MAXMOL], Vgrid *dielYMap[NOSH_MAXMOL], Vgrid *dielZMap[NOSH_MAXMOL])
Destroy the loaded dielectric.
Definition: routines.c:550
VPUBLIC Vrc_Codes initFE(int icalc, NOsh *nosh, FEMparm *feparm, PBEparm *pbeparm, Vpbe *pbe[NOSH_MAXCALC], Valist *alist[NOSH_MAXMOL], Vfetk *fetk[NOSH_MAXCALC])
Initialize FE solver objects.
Definition: routines.c:3554
VEXTERNC int printElecForce(Vcom *com, NOsh *nosh, int nforce[NOSH_MAXCALC], AtomForce *atomForce[NOSH_MAXCALC], int i)
Combine and pretty-print force data.
Definition: routines.c:3071
VEXTERNC void printMGPARM(MGparm *mgparm, double realCenter[3])
Print out MG-specific params loaded from input.
Definition: routines.c:1041
VEXTERNC int printApolEnergy(NOsh *nosh, int iprint)
Combine and pretty-print energy data.
Definition: routines.c:2761
Container class for list of atom objects.
Definition: valist.h:78
Class for parsing fixed format input files.
Definition: nosh.h:183
double sasaForce[3]
Definition: routines.h:87
Contains public data members for Vfetk class/module.
Definition: vfetk.h:176
VEXTERNC int loadMolecules(NOsh *nosh, Vparam *param, Valist *alist[NOSH_MAXMOL])
Load the molecules given in NOsh into atom lists.
Definition: routines.c:95
#define NOSH_MAXCALC
Maximum number of calculations in a run.
Definition: nosh.h:83
VEXTERNC int forceAPOL(Vacc *acc, Vmem *mem, APOLparm *apolparm, int *nforce, AtomForce **atomForce, Valist *alist, Vclist *clist)
Calculate non-polar forces.
Definition: routines.c:4562
VEXTERNC int solveFE(int i, PBEparm *pbeparm, FEMparm *feparm, Vfetk *fetk[NOSH_MAXCALC])
Solve-estimate-refine.
Definition: routines.c:3956
Atom cell list.
Definition: vclist.h:117
VEXTERNC void startVio()
Wrapper to start MALOC Vio layer.
Definition: routines.c:58
double wcaForce[3]
Definition: routines.h:89
double qfForce[3]
Definition: routines.h:85
VEXTERNC int initAPOL(NOsh *nosh, Vmem *mem, Vparam *param, APOLparm *apolparm, int *nforce, AtomForce **atomForce, Valist *alist)
Upperlevel routine to the non-polar energy and force routines.
Definition: routines.c:4308
Parameter structure for APOL-specific variables from input files.
Definition: apolparm.h:129
VEXTERNC int writedataXML(NOsh *nosh, Vcom *com, const char *fname, double totEnergy[NOSH_MAXCALC], double qfEnergy[NOSH_MAXCALC], double qmEnergy[NOSH_MAXCALC], double dielEnergy[NOSH_MAXCALC], int nenergy[NOSH_MAXCALC], double *atomEnergy[NOSH_MAXCALC], int nforce[NOSH_MAXCALC], AtomForce *atomForce[NOSH_MAXCALC])
Write out information to an XML file.
Definition: routines.c:1977
VEXTERNC int energyMG(NOsh *nosh, int icalc, Vpmg *pmg, int *nenergy, double *totEnergy, double *qfEnergy, double *qmEnergy, double *dielEnergy)
Calculate electrostatic energies from MG solution.
Definition: routines.c:1423
VEXTERNC int preRefineFE(int i, FEMparm *feparm, Vfetk *fetk[NOSH_MAXCALC])
Pre-refine mesh before solve.
Definition: routines.c:3886
VEXTERNC int writedataFE(int rank, NOsh *nosh, PBEparm *pbeparm, Vfetk *fetk)
Write FEM data to files.
Definition: routines.c:4140
VEXTERNC void killEnergy()
Kill arrays allocated for energies.
Definition: routines.c:1628