00001 00048 #ifndef _APBSROUTINES_H_ 00049 #define _APBSROUTINES_H_ 00050 00051 #include "apbscfg.h" 00052 #include "apbs/apbs.h" 00053 #include "apbs/nosh.h" 00054 #include "apbs/mgparm.h" 00055 #include "apbs/pbeparm.h" 00056 #include "apbs/femparm.h" 00057 00061 #define APBSRC 13 00062 00066 #define USEHB 1 00067 00072 struct AtomForce { 00073 double ibForce[3]; 00074 double qfForce[3]; 00075 double dbForce[3]; 00076 double npForce[3]; 00077 }; 00078 00082 typedef struct AtomForce AtomForce; 00083 00091 int loadMolecules(NOsh *nosh, Valist *alist[NOSH_MAXMOL]); 00092 00099 void killMolecules(NOsh *nosh, Valist *alist[NOSH_MAXMOL]); 00100 00110 int loadDielMaps(NOsh *nosh, Vgrid *dielXMap[NOSH_MAXMOL], 00111 Vgrid *dielYMap[NOSH_MAXMOL], Vgrid *dielZMap[NOSH_MAXMOL]); 00112 00121 void killDielMaps(NOsh *nosh, Vgrid *dielXMap[NOSH_MAXMOL], 00122 Vgrid *dielYMap[NOSH_MAXMOL], Vgrid *dielZMap[NOSH_MAXMOL]); 00123 00131 int loadKappaMaps(NOsh *nosh, Vgrid *kappa[NOSH_MAXMOL]); 00132 00139 void killKappaMaps(NOsh *nosh, Vgrid *kappa[NOSH_MAXMOL]); 00140 00148 int loadChargeMaps(NOsh *nosh, Vgrid *charge[NOSH_MAXMOL]); 00149 00156 void killChargeMaps(NOsh *nosh, Vgrid *charge[NOSH_MAXMOL]); 00157 00163 void printPBEPARM(PBEparm *pbeparm); 00164 00171 void printMGPARM(MGparm *mgparm, double realCenter[3]); 00172 00192 int initMG(int icalc, NOsh *nosh, MGparm *mgparm, 00193 PBEparm *pbeparm, double realCenter[3], Vpbe *pbe[NOSH_MAXCALC], 00194 Valist *alist[NOSH_MAXMOL], Vgrid *dielXMap[NOSH_MAXMOL], 00195 Vgrid *dielYMap[NOSH_MAXMOL], Vgrid *dielZMap[NOSH_MAXMOL], 00196 Vgrid *kappaMap[NOSH_MAXMOL], Vgrid *chargeMap[NOSH_MAXMOL], 00197 Vpmgp *pmgp[NOSH_MAXCALC], Vpmg *pmg[NOSH_MAXCALC]); 00198 00207 void killMG(NOsh *nosh, Vpbe *pbe[NOSH_MAXCALC], 00208 Vpmgp *pmgp[NOSH_MAXCALC], Vpmg *pmg[NOSH_MAXCALC]); 00209 00218 int solveMG(NOsh *nosh, Vpmg *pmg, MGparm_CalcType type); 00219 00228 int setPartMG(NOsh *nosh, MGparm *mgparm, Vpmg *pmg); 00229 00243 int energyMG(NOsh* nosh, int icalc, Vpmg *pmg, 00244 int *nenergy, double *totEnergy, double *qfEnergy, double *qmEnergy, 00245 double *dielEnergy); 00246 00257 int npenergyMG(NOsh* nosh, int icalc, Vpmg *pmg, int *nenergy, 00258 double *npEnergy); 00259 00264 void killEnergy(); 00265 00279 int forceMG(Vmem *mem, NOsh *nosh, PBEparm *pbeparm, MGparm *mgparm, 00280 Vpmg *pmg, int *nforce, AtomForce **atomForce, Valist *alist[NOSH_MAXMOL]); 00281 00290 void killForce(Vmem *mem, NOsh *nosh, int nforce[NOSH_MAXCALC], 00291 AtomForce *atomForce[NOSH_MAXCALC]); 00292 00302 int writedataMG(int rank, NOsh *nosh, PBEparm *pbeparm, Vpmg *pmg); 00303 00313 int writematMG(int rank, NOsh *nosh, PBEparm *pbeparm, Vpmg *pmg); 00314 00324 int printEnergy(Vcom *com, NOsh *nosh, double totEnergy[NOSH_MAXCALC], 00325 int i); 00326 00337 int printForce(Vcom *com, NOsh *nosh, int nforce[NOSH_MAXCALC], 00338 AtomForce *atomForce[NOSH_MAXCALC], int i); 00339 00344 void startVio(); 00345 00346 #ifdef HAVE_MC_H 00347 00355 void printFEPARM(int icalc, NOsh *nosh, FEMparm *feparm, 00356 Vfetk *fetk[NOSH_MAXCALC]); 00357 00372 int energyFE(NOsh* nosh, int icalc, Vfetk *fetk[NOSH_MAXCALC], 00373 int *nenergy, double *totEnergy, double *qfEnergy, double *qmEnergy, 00374 double *dielEnergy); 00375 00390 int initFE(int icalc, NOsh *nosh, FEMparm *feparm, PBEparm *pbeparm, 00391 Vpbe *pbe[NOSH_MAXCALC], Valist *alist[NOSH_MAXMOL], 00392 Vfetk *fetk[NOSH_MAXCALC]); 00393 00403 int preRefineFE(int i, NOsh *nosh, FEMparm *feparm, 00404 Vfetk *fetk[NOSH_MAXCALC]); 00405 00415 int partFE(int i, NOsh *nosh, FEMparm *feparm, 00416 Vfetk *fetk[NOSH_MAXCALC]); 00417 00428 int solveFE(int i, NOsh *nosh, PBEparm *pbeparm, FEMparm *feparm, 00429 Vfetk *fetk[NOSH_MAXCALC]); 00430 00443 int postRefineFE(int icalc, NOsh *nosh, FEMparm *feparm, 00444 Vfetk *fetk[NOSH_MAXCALC]); 00445 00455 int writedataFE(int rank, NOsh *nosh, PBEparm *pbeparm, Vfetk *fetk); 00456 #endif 00457 00458 #endif 00459