00001 00059 #ifndef _APBSROUTINES_H_ 00060 #define _APBSROUTINES_H_ 00061 00062 #include "apbscfg.h" 00063 #include "apbs/apbs.h" 00064 #include "apbs/nosh.h" 00065 #include "apbs/mgparm.h" 00066 #include "apbs/pbeparm.h" 00067 #include "apbs/femparm.h" 00068 #include "apbs/vparam.h" 00069 00070 00074 #define APBSRC 13 00075 00080 struct AtomForce { 00081 double ibForce[3]; 00082 double qfForce[3]; 00083 double dbForce[3]; 00084 double sasaForce[3]; 00085 double savForce[3]; 00086 double wcaForce[3]; 00087 }; 00088 00092 typedef struct AtomForce AtomForce; 00093 00099 Vparam* loadParameter( 00100 NOsh *nosh 00102 ); 00103 00109 int loadMolecules( 00110 NOsh *nosh, 00111 Vparam *param, 00113 Valist *alist[NOSH_MAXMOL] 00115 ); 00116 00123 void killMolecules(NOsh *nosh, Valist *alist[NOSH_MAXMOL]); 00124 00134 int loadDielMaps(NOsh *nosh, Vgrid *dielXMap[NOSH_MAXMOL], 00135 Vgrid *dielYMap[NOSH_MAXMOL], Vgrid *dielZMap[NOSH_MAXMOL]); 00136 00145 void killDielMaps(NOsh *nosh, Vgrid *dielXMap[NOSH_MAXMOL], 00146 Vgrid *dielYMap[NOSH_MAXMOL], Vgrid *dielZMap[NOSH_MAXMOL]); 00147 00155 int loadKappaMaps(NOsh *nosh, Vgrid *kappa[NOSH_MAXMOL]); 00156 00163 void killKappaMaps(NOsh *nosh, Vgrid *kappa[NOSH_MAXMOL]); 00164 00172 int loadChargeMaps(NOsh *nosh, Vgrid *charge[NOSH_MAXMOL]); 00173 00180 void killChargeMaps(NOsh *nosh, Vgrid *charge[NOSH_MAXMOL]); 00181 00187 void printPBEPARM(PBEparm *pbeparm); 00188 00195 void printMGPARM(MGparm *mgparm, double realCenter[3]); 00196 00202 int initMG( 00203 int icalc, 00204 NOsh *nosh, 00205 MGparm *mgparm, 00206 PBEparm *pbeparm, 00207 double realCenter[3], 00208 Vpbe *pbe[NOSH_MAXCALC], 00209 Valist *alist[NOSH_MAXMOL], 00210 Vgrid *dielXMap[NOSH_MAXMOL], 00211 Vgrid *dielYMap[NOSH_MAXMOL], 00212 Vgrid *dielZMap[NOSH_MAXMOL], 00213 Vgrid *kappaMap[NOSH_MAXMOL], 00214 Vgrid *chargeMap[NOSH_MAXMOL], 00215 Vpmgp *pmgp[NOSH_MAXCALC], 00216 Vpmg *pmg[NOSH_MAXCALC] 00217 ); 00218 00224 void killMG( 00225 NOsh *nosh, 00226 Vpbe *pbe[NOSH_MAXCALC], 00227 Vpmgp *pmgp[NOSH_MAXCALC], 00228 Vpmg *pmg[NOSH_MAXCALC] 00229 ); 00230 00239 int solveMG(NOsh *nosh, Vpmg *pmg, MGparm_CalcType type); 00240 00249 int setPartMG(NOsh *nosh, MGparm *mgparm, Vpmg *pmg); 00250 00264 int energyMG(NOsh* nosh, int icalc, Vpmg *pmg, 00265 int *nenergy, double *totEnergy, double *qfEnergy, double *qmEnergy, 00266 double *dielEnergy); 00267 00272 void killEnergy(); 00273 00287 int forceMG(Vmem *mem, NOsh *nosh, PBEparm *pbeparm, MGparm *mgparm, 00288 Vpmg *pmg, int *nforce, AtomForce **atomForce, Valist *alist[NOSH_MAXMOL]); 00289 00298 void killForce(Vmem *mem, NOsh *nosh, int nforce[NOSH_MAXCALC], 00299 AtomForce *atomForce[NOSH_MAXCALC]); 00300 00305 void storeAtomEnergy( 00306 Vpmg *pmg, 00307 int icalc, 00308 double **atomEnergy, 00309 int *nenergy 00310 ); 00311 00328 int writedataFlat(NOsh *nosh, Vcom *com, const char *fname, 00329 double totEnergy[NOSH_MAXCALC], double qfEnergy[NOSH_MAXCALC], 00330 double qmEnergy[NOSH_MAXCALC], double dielEnergy[NOSH_MAXCALC], 00331 int nenergy[NOSH_MAXCALC], double *atomEnergy[NOSH_MAXCALC], 00332 int nforce[NOSH_MAXCALC], AtomForce *atomForce[NOSH_MAXCALC]); 00333 00350 int writedataXML(NOsh *nosh, Vcom *com, const char *fname, 00351 double totEnergy[NOSH_MAXCALC], double qfEnergy[NOSH_MAXCALC], 00352 double qmEnergy[NOSH_MAXCALC], double dielEnergy[NOSH_MAXCALC], 00353 int nenergy[NOSH_MAXCALC], double *atomEnergy[NOSH_MAXCALC], 00354 int nforce[NOSH_MAXCALC], AtomForce *atomForce[NOSH_MAXCALC]); 00355 00365 int writedataMG(int rank, NOsh *nosh, PBEparm *pbeparm, Vpmg *pmg); 00366 00376 int writematMG(int rank, NOsh *nosh, PBEparm *pbeparm, Vpmg *pmg); 00377 00387 double returnEnergy(Vcom *com, NOsh *nosh, double totEnergy[NOSH_MAXCALC], int iprint); 00388 00394 int printEnergy( 00395 Vcom *com, 00396 NOsh *nosh, 00397 double totEnergy[NOSH_MAXCALC], 00399 int iprint 00400 ); 00401 00407 int printElecEnergy( 00408 Vcom *com, 00409 NOsh *nosh, 00410 double totEnergy[NOSH_MAXCALC], 00412 int iprint 00413 ); 00414 00420 int printApolEnergy( 00421 NOsh *nosh, 00422 int iprint 00423 ); 00424 00430 int printForce( 00431 Vcom *com, 00432 NOsh *nosh, 00433 int nforce[NOSH_MAXCALC], 00434 AtomForce *atomForce[NOSH_MAXCALC], 00435 int i 00436 ); 00437 00443 int printElecForce( 00444 Vcom *com, 00445 NOsh *nosh, 00446 int nforce[NOSH_MAXCALC], 00447 AtomForce *atomForce[NOSH_MAXCALC], 00448 int i 00449 ); 00450 00456 int printApolForce( 00457 Vcom *com, 00458 NOsh *nosh, 00459 int nforce[NOSH_MAXCALC], 00460 AtomForce *atomForce[NOSH_MAXCALC], 00461 int i 00462 ); 00463 00468 void startVio(); 00469 00470 #ifdef HAVE_MC_H 00471 #include "apbs/vfetk.h" 00472 00481 void printFEPARM(int icalc, NOsh *nosh, FEMparm *feparm, 00482 Vfetk *fetk[NOSH_MAXCALC]); 00483 00498 int energyFE(NOsh* nosh, int icalc, Vfetk *fetk[NOSH_MAXCALC], 00499 int *nenergy, double *totEnergy, double *qfEnergy, double *qmEnergy, 00500 double *dielEnergy); 00501 00509 Vrc_Codes initFE( 00510 int icalc, 00512 NOsh *nosh, 00513 FEMparm *feparm, 00514 PBEparm *pbeparm, 00515 Vpbe *pbe[NOSH_MAXCALC], 00516 Valist *alist[NOSH_MAXMOL], 00517 Vfetk *fetk[NOSH_MAXCALC], 00518 Gem *gm[NOSH_MAXCALC] 00519 ); 00520 00526 void killFE( 00527 NOsh *nosh, 00528 Vpbe *pbe[NOSH_MAXCALC], 00529 Vfetk *fetk[NOSH_MAXCALC], 00530 Gem *gem[NOSH_MAXMOL] 00531 ); 00532 00542 int preRefineFE(int i, NOsh *nosh, FEMparm *feparm, 00543 Vfetk *fetk[NOSH_MAXCALC]); 00544 00554 int partFE(int i, NOsh *nosh, FEMparm *feparm, 00555 Vfetk *fetk[NOSH_MAXCALC]); 00556 00567 int solveFE(int i, NOsh *nosh, PBEparm *pbeparm, FEMparm *feparm, 00568 Vfetk *fetk[NOSH_MAXCALC]); 00569 00582 int postRefineFE(int icalc, NOsh *nosh, FEMparm *feparm, 00583 Vfetk *fetk[NOSH_MAXCALC]); 00584 00594 int writedataFE(int rank, NOsh *nosh, PBEparm *pbeparm, Vfetk *fetk); 00595 00601 int energyAPOL( 00602 APOLparm *apolparm, 00603 double sasa, 00604 double sav, 00605 double atomsasa[], 00606 double atomwcaEnergy[], 00607 int numatoms 00608 ); 00609 00615 int forceAPOL( 00616 Vacc *acc, 00617 Vmem *mem, 00618 APOLparm *apolparm, 00620 int *nforce, 00622 AtomForce **atomForce, 00624 Valist *alist, 00625 Vclist *clist 00626 ); 00627 00633 int initAPOL( 00634 NOsh *nosh, 00635 Vmem *mem, 00636 Vparam *param, 00637 APOLparm *apolparm, 00638 int *nforce, 00639 AtomForce **atomForce, 00640 Valist *alist 00641 ); 00642 00648 Vrc_Codes loadMeshes( 00649 NOsh *nosh, 00650 Gem *gm[NOSH_MAXMOL] 00652 ); 00653 00658 void killMeshes( 00659 NOsh *nosh, 00660 Gem *alist[NOSH_MAXMOL] 00661 ); 00662 #endif 00663 00664 #endif 00665