00001 00059 #ifndef _APBSROUTINES_H_ 00060 #define _APBSROUTINES_H_ 00061 00062 #include "apbs/apbs.h" 00063 #include "apbs/nosh.h" 00064 #include "apbs/mgparm.h" 00065 #include "apbs/pbeparm.h" 00066 #include "apbs/femparm.h" 00067 #include "apbs/vparam.h" 00068 00069 00073 #define APBSRC 13 00074 00079 struct AtomForce { 00080 double ibForce[3]; 00081 double qfForce[3]; 00082 double dbForce[3]; 00083 double sasaForce[3]; 00084 double savForce[3]; 00085 double wcaForce[3]; 00086 }; 00087 00091 typedef struct AtomForce AtomForce; 00092 00098 Vparam* loadParameter( 00099 NOsh *nosh 00101 ); 00102 00108 int loadMolecules( 00109 NOsh *nosh, 00110 Vparam *param, 00112 Valist *alist[NOSH_MAXMOL] 00114 ); 00115 00122 void killMolecules(NOsh *nosh, Valist *alist[NOSH_MAXMOL]); 00123 00133 int loadDielMaps(NOsh *nosh, Vgrid *dielXMap[NOSH_MAXMOL], 00134 Vgrid *dielYMap[NOSH_MAXMOL], Vgrid *dielZMap[NOSH_MAXMOL]); 00135 00144 void killDielMaps(NOsh *nosh, Vgrid *dielXMap[NOSH_MAXMOL], 00145 Vgrid *dielYMap[NOSH_MAXMOL], Vgrid *dielZMap[NOSH_MAXMOL]); 00146 00154 int loadKappaMaps(NOsh *nosh, Vgrid *kappa[NOSH_MAXMOL]); 00155 00162 void killKappaMaps(NOsh *nosh, Vgrid *kappa[NOSH_MAXMOL]); 00163 00171 int loadChargeMaps(NOsh *nosh, Vgrid *charge[NOSH_MAXMOL]); 00172 00179 void killChargeMaps(NOsh *nosh, Vgrid *charge[NOSH_MAXMOL]); 00180 00186 void printPBEPARM(PBEparm *pbeparm); 00187 00194 void printMGPARM(MGparm *mgparm, double realCenter[3]); 00195 00201 int initMG( 00202 int icalc, 00203 NOsh *nosh, 00204 MGparm *mgparm, 00205 PBEparm *pbeparm, 00206 double realCenter[3], 00207 Vpbe *pbe[NOSH_MAXCALC], 00208 Valist *alist[NOSH_MAXMOL], 00209 Vgrid *dielXMap[NOSH_MAXMOL], 00210 Vgrid *dielYMap[NOSH_MAXMOL], 00211 Vgrid *dielZMap[NOSH_MAXMOL], 00212 Vgrid *kappaMap[NOSH_MAXMOL], 00213 Vgrid *chargeMap[NOSH_MAXMOL], 00214 Vpmgp *pmgp[NOSH_MAXCALC], 00215 Vpmg *pmg[NOSH_MAXCALC] 00216 ); 00217 00223 void killMG( 00224 NOsh *nosh, 00225 Vpbe *pbe[NOSH_MAXCALC], 00226 Vpmgp *pmgp[NOSH_MAXCALC], 00227 Vpmg *pmg[NOSH_MAXCALC] 00228 ); 00229 00238 int solveMG(NOsh *nosh, Vpmg *pmg, MGparm_CalcType type); 00239 00248 int setPartMG(NOsh *nosh, MGparm *mgparm, Vpmg *pmg); 00249 00263 int energyMG(NOsh* nosh, int icalc, Vpmg *pmg, 00264 int *nenergy, double *totEnergy, double *qfEnergy, double *qmEnergy, 00265 double *dielEnergy); 00266 00271 void killEnergy(); 00272 00286 int forceMG(Vmem *mem, NOsh *nosh, PBEparm *pbeparm, MGparm *mgparm, 00287 Vpmg *pmg, int *nforce, AtomForce **atomForce, Valist *alist[NOSH_MAXMOL]); 00288 00297 void killForce(Vmem *mem, NOsh *nosh, int nforce[NOSH_MAXCALC], 00298 AtomForce *atomForce[NOSH_MAXCALC]); 00299 00304 void storeAtomEnergy( 00305 Vpmg *pmg, 00306 int icalc, 00307 double **atomEnergy, 00308 int *nenergy 00309 ); 00310 00327 int writedataFlat(NOsh *nosh, Vcom *com, const char *fname, 00328 double totEnergy[NOSH_MAXCALC], double qfEnergy[NOSH_MAXCALC], 00329 double qmEnergy[NOSH_MAXCALC], double dielEnergy[NOSH_MAXCALC], 00330 int nenergy[NOSH_MAXCALC], double *atomEnergy[NOSH_MAXCALC], 00331 int nforce[NOSH_MAXCALC], AtomForce *atomForce[NOSH_MAXCALC]); 00332 00349 int writedataXML(NOsh *nosh, Vcom *com, const char *fname, 00350 double totEnergy[NOSH_MAXCALC], double qfEnergy[NOSH_MAXCALC], 00351 double qmEnergy[NOSH_MAXCALC], double dielEnergy[NOSH_MAXCALC], 00352 int nenergy[NOSH_MAXCALC], double *atomEnergy[NOSH_MAXCALC], 00353 int nforce[NOSH_MAXCALC], AtomForce *atomForce[NOSH_MAXCALC]); 00354 00364 int writedataMG(int rank, NOsh *nosh, PBEparm *pbeparm, Vpmg *pmg); 00365 00375 int writematMG(int rank, NOsh *nosh, PBEparm *pbeparm, Vpmg *pmg); 00376 00386 double returnEnergy(Vcom *com, NOsh *nosh, double totEnergy[NOSH_MAXCALC], int iprint); 00387 00393 int printEnergy( 00394 Vcom *com, 00395 NOsh *nosh, 00396 double totEnergy[NOSH_MAXCALC], 00398 int iprint 00399 ); 00400 00406 int printElecEnergy( 00407 Vcom *com, 00408 NOsh *nosh, 00409 double totEnergy[NOSH_MAXCALC], 00411 int iprint 00412 ); 00413 00419 int printApolEnergy( 00420 NOsh *nosh, 00421 int iprint 00422 ); 00423 00429 int printForce( 00430 Vcom *com, 00431 NOsh *nosh, 00432 int nforce[NOSH_MAXCALC], 00433 AtomForce *atomForce[NOSH_MAXCALC], 00434 int i 00435 ); 00436 00442 int printElecForce( 00443 Vcom *com, 00444 NOsh *nosh, 00445 int nforce[NOSH_MAXCALC], 00446 AtomForce *atomForce[NOSH_MAXCALC], 00447 int i 00448 ); 00449 00455 int printApolForce( 00456 Vcom *com, 00457 NOsh *nosh, 00458 int nforce[NOSH_MAXCALC], 00459 AtomForce *atomForce[NOSH_MAXCALC], 00460 int i 00461 ); 00462 00467 void startVio(); 00468 00469 #ifdef HAVE_MC_H 00470 #include "apbs/vfetk.h" 00471 00480 void printFEPARM(int icalc, NOsh *nosh, FEMparm *feparm, 00481 Vfetk *fetk[NOSH_MAXCALC]); 00482 00497 int energyFE(NOsh* nosh, int icalc, Vfetk *fetk[NOSH_MAXCALC], 00498 int *nenergy, double *totEnergy, double *qfEnergy, double *qmEnergy, 00499 double *dielEnergy); 00500 00508 Vrc_Codes initFE( 00509 int icalc, 00511 NOsh *nosh, 00512 FEMparm *feparm, 00513 PBEparm *pbeparm, 00514 Vpbe *pbe[NOSH_MAXCALC], 00515 Valist *alist[NOSH_MAXMOL], 00516 Vfetk *fetk[NOSH_MAXCALC], 00517 Gem *gm[NOSH_MAXCALC] 00518 ); 00519 00525 void killFE( 00526 NOsh *nosh, 00527 Vpbe *pbe[NOSH_MAXCALC], 00528 Vfetk *fetk[NOSH_MAXCALC], 00529 Gem *gem[NOSH_MAXMOL] 00530 ); 00531 00541 int preRefineFE(int i, NOsh *nosh, FEMparm *feparm, 00542 Vfetk *fetk[NOSH_MAXCALC]); 00543 00553 int partFE(int i, NOsh *nosh, FEMparm *feparm, 00554 Vfetk *fetk[NOSH_MAXCALC]); 00555 00566 int solveFE(int i, NOsh *nosh, PBEparm *pbeparm, FEMparm *feparm, 00567 Vfetk *fetk[NOSH_MAXCALC]); 00568 00581 int postRefineFE(int icalc, NOsh *nosh, FEMparm *feparm, 00582 Vfetk *fetk[NOSH_MAXCALC]); 00583 00593 int writedataFE(int rank, NOsh *nosh, PBEparm *pbeparm, Vfetk *fetk); 00594 00600 int energyAPOL( 00601 APOLparm *apolparm, 00602 double sasa, 00603 double sav, 00604 double atomsasa[], 00605 double atomwcaEnergy[], 00606 int numatoms 00607 ); 00608 00614 int forceAPOL( 00615 Vacc *acc, 00616 Vmem *mem, 00617 APOLparm *apolparm, 00619 int *nforce, 00621 AtomForce **atomForce, 00623 Valist *alist, 00624 Vclist *clist 00625 ); 00626 00632 int initAPOL( 00633 NOsh *nosh, 00634 Vmem *mem, 00635 Vparam *param, 00636 APOLparm *apolparm, 00637 int *nforce, 00638 AtomForce **atomForce, 00639 Valist *alist 00640 ); 00641 00647 Vrc_Codes loadMeshes( 00648 NOsh *nosh, 00649 Gem *gm[NOSH_MAXMOL] 00651 ); 00652 00657 void killMeshes( 00658 NOsh *nosh, 00659 Gem *alist[NOSH_MAXMOL] 00660 ); 00661 #endif 00662 00663 #endif 00664