61#ifndef _APBSROUTINES_H_
62#define _APBSROUTINES_H_
75 #include "TABIPBstruct.h"
79 #include "GeometricFlowWrap.h"
82#if defined(ENABLE_PBAM) || defined(ENABLE_PBSAM)
87 #include "PBSAMWrap.h"
246 double realCenter[3],
305 int *nenergy,
double *totEnergy,
double *qfEnergy,
double *qmEnergy,
520 double atomwcaEnergy[],
587 int *nenergy,
double *totEnergy,
double *qfEnergy,
double *qmEnergy,
733VEXTERNC
void killBEM(
756VEXTERNC
int setPartBEM(
NOsh *nosh,
BEMparm *bemparm);
771VEXTERNC
int energyBEM(
NOsh* nosh,
int icalc,
772 int *nenergy,
double *totEnergy,
double *qfEnergy,
double *qmEnergy,
797VEXTERNC
void printBEMPARM(
BEMparm *bemparm);
808VEXTERNC
int writedataBEM(
int rank,
NOsh *nosh,
PBEparm *pbeparm);
819VEXTERNC
int writematBEM(
int rank,
NOsh *nosh,
PBEparm *pbeparm);
830VEXTERNC
int solveGeometricFlow(
847VEXTERNC
int solvePBAM(
863VEXTERNC
int solvePBSAM(
Header file for header dependencies.
struct sAPOLparm APOLparm
Declaration of the APOLparm class as the APOLparm structure.
enum eBEMparm_CalcType BEMparm_CalcType
Declare BEMparm_CalcType type.
struct sBEMparm BEMparm
Parameter structure for BEM-specific variables from input files.
struct sFEMparm FEMparm
Declaration of the FEMparm class as the FEMparm structure.
VEXTERNC void printPBEPARM(PBEparm *pbeparm)
Print out generic PBE params loaded from input.
VEXTERNC int loadPotMaps(NOsh *nosh, Vgrid *pot[NOSH_MAXMOL])
Load the potential maps given in NOsh into grid objects.
VEXTERNC void killForce(Vmem *mem, NOsh *nosh, int nforce[NOSH_MAXCALC], AtomForce *atomForce[NOSH_MAXCALC])
Free memory from MG force calculation.
VEXTERNC void storeAtomEnergy(Vpmg *pmg, int icalc, double **atomEnergy, int *nenergy)
Store energy in arrays for future use.
VEXTERNC int solveMG(NOsh *nosh, Vpmg *pmg, MGparm_CalcType type)
Solve the PBE with MG.
VEXTERNC int postRefineFE(int icalc, FEMparm *feparm, Vfetk *fetk[NOSH_MAXCALC])
Estimate error, mark mesh, and refine mesh after solve.
VEXTERNC int partFE(int i, NOsh *nosh, FEMparm *feparm, Vfetk *fetk[NOSH_MAXCALC])
Partition mesh (if applicable)
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.
VEXTERNC int preRefineFE(int i, FEMparm *feparm, Vfetk *fetk[NOSH_MAXCALC])
Pre-refine mesh before solve.
VEXTERNC void startVio()
Wrapper to start MALOC Vio layer.
VEXTERNC void killKappaMaps(NOsh *nosh, Vgrid *kappa[NOSH_MAXMOL])
Destroy the loaded kappa maps.
VEXTERNC double returnEnergy(Vcom *com, NOsh *nosh, double totEnergy[NOSH_MAXCALC], int iprint)
Access net local energy.
VEXTERNC int printElecEnergy(Vcom *com, NOsh *nosh, double totEnergy[NOSH_MAXCALC], int iprint)
Combine and pretty-print energy data.
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)
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.
VEXTERNC int setPartMG(NOsh *nosh, MGparm *mgparm, Vpmg *pmg)
Set MG partitions for calculating observables and performing I/O.
VEXTERNC void killMeshes(NOsh *nosh, Gem *alist[NOSH_MAXMOL])
Destroy the loaded meshes.
VEXTERNC void killDielMaps(NOsh *nosh, Vgrid *dielXMap[NOSH_MAXMOL], Vgrid *dielYMap[NOSH_MAXMOL], Vgrid *dielZMap[NOSH_MAXMOL])
Destroy the loaded dielectric.
VEXTERNC void killMG(NOsh *nosh, Vpbe *pbe[NOSH_MAXCALC], Vpmgp *pmgp[NOSH_MAXCALC], Vpmg *pmg[NOSH_MAXCALC])
Kill structures initialized during an MG calculation.
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.
VEXTERNC int solveFE(int i, PBEparm *pbeparm, FEMparm *feparm, Vfetk *fetk[NOSH_MAXCALC])
Solve-estimate-refine.
VEXTERNC void killEnergy()
Kill arrays allocated for energies.
VEXTERNC int loadChargeMaps(NOsh *nosh, Vgrid *charge[NOSH_MAXMOL])
Load the charge maps given in NOsh into grid objects.
VEXTERNC int printElecForce(Vcom *com, NOsh *nosh, int nforce[NOSH_MAXCALC], AtomForce *atomForce[NOSH_MAXCALC], int i)
Combine and pretty-print force data.
VEXTERNC void killMolecules(NOsh *nosh, Valist *alist[NOSH_MAXMOL])
Destroy the loaded molecules.
VEXTERNC void printFEPARM(int icalc, NOsh *nosh, FEMparm *feparm, Vfetk *fetk[NOSH_MAXCALC])
Print out FE-specific params loaded from input.
VEXTERNC int writedataMG(int rank, NOsh *nosh, PBEparm *pbeparm, Vpmg *pmg)
Write out observables from MG calculation to file.
VEXTERNC int forceAPOL(Vacc *acc, Vmem *mem, APOLparm *apolparm, int *nforce, AtomForce **atomForce, Valist *alist, Vclist *clist)
Calculate non-polar forces.
VEXTERNC int printEnergy(Vcom *com, NOsh *nosh, double totEnergy[NOSH_MAXCALC], int iprint)
Combine and pretty-print energy data (deprecated...see printElecEnergy)
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.
VEXTERNC int printApolForce(Vcom *com, NOsh *nosh, int nforce[NOSH_MAXCALC], AtomForce *atomForce[NOSH_MAXCALC], int i)
Combine and pretty-print force data.
VEXTERNC int writematMG(int rank, NOsh *nosh, PBEparm *pbeparm, Vpmg *pmg)
Write out operator matrix from MG calculation to file.
VEXTERNC int writedataFE(int rank, NOsh *nosh, PBEparm *pbeparm, Vfetk *fetk)
Write FEM data to files.
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.
VEXTERNC void printMGPARM(MGparm *mgparm, double realCenter[3])
Print out MG-specific params loaded from input.
VEXTERNC void killPotMaps(NOsh *nosh, Vgrid *pot[NOSH_MAXMOL])
Destroy the loaded potential maps.
VEXTERNC void killFE(NOsh *nosh, Vpbe *pbe[NOSH_MAXCALC], Vfetk *fetk[NOSH_MAXCALC], Gem *gem[NOSH_MAXMOL])
Kill structures initialized during an FE calculation.
VEXTERNC int energyAPOL(APOLparm *apolparm, double sasa, double sav, double atomsasa[], double atomwcaEnergy[], int numatoms)
Calculate non-polar energies.
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.
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.
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.
VEXTERNC int printApolEnergy(NOsh *nosh, int iprint)
Combine and pretty-print energy data.
VEXTERNC Vrc_Codes loadMeshes(NOsh *nosh, Gem *gm[NOSH_MAXMOL])
Load the meshes given in NOsh into geometry objects.
VEXTERNC int loadKappaMaps(NOsh *nosh, Vgrid *kappa[NOSH_MAXMOL])
Load the kappa maps given in NOsh into grid objects.
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.
VEXTERNC Vparam * loadParameter(NOsh *nosh)
Loads and returns parameter object.
VEXTERNC void killChargeMaps(NOsh *nosh, Vgrid *charge[NOSH_MAXMOL])
Destroy the loaded charge maps.
VEXTERNC int loadMolecules(NOsh *nosh, Vparam *param, Valist *alist[NOSH_MAXMOL])
Load the molecules given in NOsh into atom lists.
struct sGEOFLOWparm GEOFLOWparm
Parameter structure for GEOFLOW-specific variables from input files.
struct sMGparm MGparm
Declaration of the MGparm class as the MGparm structure.
enum eMGparm_CalcType MGparm_CalcType
Declare MGparm_CalcType type.
#define NOSH_MAXCALC
Maximum number of calculations in a run.
#define NOSH_MAXMOL
Maximum number of molecules in a run.
struct sNOsh NOsh
Declaration of the NOsh class as the NOsh structure.
struct sPBAMparm PBAMparm
Parameter structure for PBAM-specific variables from input files.
struct sPBEparm PBEparm
Declaration of the PBEparm class as the PBEparm structure.
struct sPBSAMparm PBSAMparm
Parameter structure for PBSAM-specific variables from input files.
struct sVacc Vacc
Declaration of the Vacc class as the Vacc structure.
struct sValist Valist
Declaration of the Valist class as the Valist structure.
struct sVclist Vclist
Declaration of the Vclist class as the Vclist structure.
struct sVfetk Vfetk
Declaration of the Vfetk class as the Vfetk structure.
struct sVgrid Vgrid
Declaration of the Vgrid class as the sVgrid structure.
struct sVpbe Vpbe
Declaration of the Vpbe class as the Vpbe structure.
struct sVpmg Vpmg
Declaration of the Vpmg class as the Vpmg structure.
struct sVpmgp Vpmgp
Declaration of the Vpmgp class as the sVpmgp structure.
Structure to hold atomic forces.
Reads and assigns charge/radii parameters.
Contains declarations for class Vfetk.