00001 00055 #ifndef _VPMG_PRIVATE_H_ 00056 #define _VPMG_PRIVATE_H_ 00057 00058 #include "apbscfg.h" 00059 #include "apbs/vpmg.h" 00060 00061 /* /////////////////////////////////////////////////////////////////////////// 00062 // Internal routines 00064 00070 VPRIVATE double bspline2( 00071 double x 00072 ); 00073 00079 VPRIVATE double dbspline2( 00080 double x 00081 ); 00082 00088 VPRIVATE double VFCHI4( 00089 int i, 00090 double f 00091 ); 00092 00098 VPRIVATE double bspline4( 00099 double x 00100 ); 00101 00107 VPRIVATE double dbspline4( 00108 double x 00109 ); 00110 00116 VPRIVATE double d2bspline4( 00117 double x 00118 ); 00119 00125 VPRIVATE double d3bspline4( 00126 double x 00127 ); 00128 00135 VPRIVATE double Vpmg_polarizEnergy( 00136 Vpmg *thee, 00137 int extFlag 00139 ); 00146 VPRIVATE double Vpmg_qfEnergyPoint( 00147 Vpmg *thee, 00148 int extFlag 00150 ); 00151 00157 VPRIVATE double Vpmg_qfEnergyVolume( 00158 Vpmg *thee, 00159 int extFlag 00161 ); 00162 00168 VPRIVATE void Vpmg_splineSelect( 00169 int srfm, 00171 Vacc *acc, 00172 double *gpos, 00173 double win, 00174 double infrad, 00175 Vatom *atom, 00176 double *force 00177 ); 00178 00184 VPRIVATE void focusFillBound( 00185 Vpmg *thee, 00186 Vpmg *pmg 00187 ); 00188 00195 VPRIVATE void bcfl1( 00196 double size, 00197 double *apos, 00198 double charge, 00199 double xkappa, 00200 double pre1, 00201 double *gxcf, 00202 double *gycf, 00203 double *gzcf, 00204 double *xf, 00205 double *yf, 00206 double *zf, 00207 int nx, 00208 int ny, 00209 int nz 00210 ); 00211 00217 VPRIVATE void bcfl2( 00218 double size, 00219 double *apos, 00220 double charge, 00221 double *dipole, 00222 double *quad, 00223 double xkappa, 00224 double eps_p, 00225 double eps_w, 00226 double T, 00227 double *gxcf, 00228 double *gycf, 00229 double *gzcf, 00230 double *xf, 00231 double *yf, 00232 double *zf, 00233 int nx, 00234 int ny, 00235 int nz 00236 ); 00237 00246 VPRIVATE void multipolebc( 00247 double r, 00248 double kappa, 00249 double eps_p, 00250 double eps_w, 00251 double rad, 00252 double tsr[3] 00253 ); 00254 00263 VPRIVATE double bcfl1sp( 00264 double size, 00265 double *apos, 00266 double charge, 00267 double xkappa, 00268 double pre1, 00269 double *pos 00270 ); 00271 00276 VPRIVATE void bcCalc( 00277 Vpmg *thee 00278 ); 00279 00284 VPRIVATE void fillcoCoef( 00285 Vpmg *thee 00286 ); 00287 00292 VPRIVATE void fillcoCoefMap( 00293 Vpmg *thee 00294 ); 00295 00301 VPRIVATE void fillcoCoefMol( 00302 Vpmg *thee 00303 ); 00304 00310 VPRIVATE void fillcoCoefMolIon( 00311 Vpmg *thee 00312 ); 00313 00319 VPRIVATE void fillcoCoefMolDiel( 00320 Vpmg *thee 00321 ); 00322 00328 VPRIVATE void fillcoCoefMolDielNoSmooth( 00329 Vpmg *thee 00330 ); 00331 00345 VPRIVATE void fillcoCoefMolDielSmooth( 00346 Vpmg *thee 00347 ); 00348 00354 VPRIVATE void fillcoCoefSpline( 00355 Vpmg *thee 00356 ); 00357 00363 VPRIVATE void fillcoCoefSpline3( 00364 Vpmg *thee 00365 ); 00366 00372 VPRIVATE void fillcoCoefSpline4( 00373 Vpmg *thee 00374 ); 00375 00381 VPRIVATE Vrc_Codes fillcoCharge( 00382 Vpmg *thee 00383 ); 00384 00390 VPRIVATE Vrc_Codes fillcoChargeMap( 00391 Vpmg *thee 00392 ); 00393 00398 VPRIVATE void fillcoChargeSpline1( 00399 Vpmg *thee 00400 ); 00401 00406 VPRIVATE void fillcoChargeSpline2( 00407 Vpmg *thee 00408 ); 00409 00414 VPRIVATE void fillcoPermanentMultipole( 00415 Vpmg *thee 00416 ); 00417 00422 VPRIVATE void fillcoInducedDipole( 00423 Vpmg *thee 00424 ); 00425 00431 VPRIVATE void fillcoNLInducedDipole( 00432 Vpmg *thee 00433 ); 00434 00441 VPRIVATE void extEnergy( 00442 Vpmg *thee, 00443 Vpmg *pmgOLD, 00444 PBEparm_calcEnergy extFlag, 00445 double partMin[3], 00446 double partMax[3], 00447 int bflags[6] 00448 ); 00449 00454 VPRIVATE void qfForceSpline1( 00455 Vpmg *thee, 00456 double *force, 00457 int atomID 00458 ); 00459 00464 VPRIVATE void qfForceSpline2( 00465 Vpmg *thee, 00466 double *force, 00467 int atomID 00468 ); 00469 00474 VPRIVATE void qfForceSpline4( 00475 Vpmg *thee, 00476 double *force, 00477 int atomID 00478 ); 00479 00480 00488 VPRIVATE void zlapSolve( 00489 Vpmg *thee, 00490 double **solution, 00491 double **source, 00492 double **work1 00493 ); 00494 00501 VPRIVATE void markSphere( 00502 double rtot, 00503 double *tpos, 00504 int nx, 00505 int ny, 00506 int nz, 00507 double hx, 00508 double hy, 00509 double hzed, 00510 double xmin, 00511 double ymin, 00512 double zmin, 00513 double *array, 00514 double markVal 00515 ); 00516 00521 VPRIVATE double Vpmg_qmEnergySMPBE(Vpmg *thee, int extFlag); 00522 VPRIVATE double Vpmg_qmEnergyNONLIN(Vpmg *thee, int extFlag); 00523 00524 /* Added by Vincent Chu 9/13/06 for SMPB */ 00525 #define VCUB(x) ((x)*(x)*(x)) 00526 #define VLOG(x) (log(x)) 00527 00528 #define IJK(i,j,k) (((k)*(nx)*(ny))+((j)*(nx))+(i)) 00529 #define IJKx(j,k,i) (((i)*(ny)*(nz))+((k)*(ny))+(j)) 00530 #define IJKy(i,k,j) (((j)*(nx)*(nz))+((k)*(nx))+(i)) 00531 #define IJKz(i,j,k) (((k)*(nx)*(ny))+((j)*(nx))+(i)) 00532 #define VFCHI(iint,iflt) (1.5+((double)(iint)-(iflt))) 00533 00534 /* /////////////////////////////////////////////////////////////////////////// 00535 // External FORTRAN routines 00537 #define F77BCOLCOMP VF77_MANGLE(bcolcomp, BCOLCOMP) 00538 void F77BCOLCOMP(int *iparm, double *rparm, int *iwork, 00539 double *rwork, double *nzval, int *rowind, int *colptr, int *flag); 00540 00541 #define F77PCOLCOMP VF77_MANGLE(pcolcomp, PCOLCOMP) 00542 void F77PCOLCOMP(int *nrow, int *ncol, int *nonz, 00543 double *nzval, int *rowind, int *colptr, 00544 char *path, char *title, char *mxtype); 00545 00546 #define F77MGSZ VF77_MANGLE(mgsz, MGSZ) 00547 void F77MGSZ(int *mgcoar, int *mgdisc, int *mgsolv, int *nx, int *ny, 00548 int *nz, int *nlev, int *nxc, int *nyc, int *nyz, int *nf, int *nc, 00549 int *narr, int *narrc, int *n_rpc, int *n_iz, int *n_ipc, int *nrwk, 00550 int *niwk); 00551 00552 #define F77MGSZAQUA VF77_MANGLE(mgszaqua, MGSZAQUA) 00553 void F77MGSZAQUA(int *mgcoar, int *mgdisc, int *mgsolv, int *nx, int *ny, 00554 int *nz, int *nlev, int *nxc, int *nyc, int *nyz, int *nf, int *nc, 00555 int *narr, int *narrc, int *n_rpc, int *n_iz, int *n_ipc, int *nrwk, 00556 int *niwk); 00557 00558 #define F77PACKMG VF77_MANGLE(packmg, PACKMG) 00559 void F77PACKMG(int *iparm, double *rparm, int *nrwk, int *niwk, 00560 int *nx, int *ny, int *nz, int *nlev, int *nu1, int *nu2, int *mgkey, 00561 int *itmax, int *istop, int *ipcon, int *nonlin, int *mgsmoo, int *mgprol, 00562 int *mgcoar, int *mgsolv, int *mgdisc, int *iinfo, double *errtol, 00563 int *ipkey, double *omegal, double *omegan, int *irite, int *iperf); 00564 00565 #define F77CGMGDRIV VF77_MANGLE(cgmgdriv, CGMGDRIV) 00566 void F77CGMGDRIV(int *iparm, double *rparm, int *iwork, double *rwork, 00567 double *u, double *xf, double *yf, double *zf, double *gxcf, double *gycf, 00568 double *gzcf, double *a1cf, double *a2cf, double *a3cf, double *ccf, 00569 double *fcf, double *tcf); 00570 00571 #define F77NEWDRIV VF77_MANGLE(newdriv, NEWDRIV) 00572 void F77NEWDRIV(int *iparm, double *rparm, int *iwork, double *rwork, 00573 double *u, double *xf, double *yf, double *zf, double *gxcf, double *gycf, 00574 double *gzcf, double *a1cf, double *a2cf, double *a3cf, double *ccf, 00575 double *fcf, double *tcf); 00576 00577 #define F77MGDRIV VF77_MANGLE(mgdriv, MGDRIV) 00578 void F77MGDRIV(int *iparm, double *rparm, int *iwork, double *rwork, 00579 double *u, double *xf, double *yf, double *zf, double *gxcf, double *gycf, 00580 double *gzcf, double *a1cf, double *a2cf, double *a3cf, double *ccf, 00581 double *fcf, double *tcf); 00582 00583 #define F77NCGHSDRIV VF77_MANGLE(ncghsdriv, NCGHSDRIV) 00584 void F77NCGHSDRIV(int *iparm, double *rparm, int *iwork, double *rwork, 00585 double *u, double *xf, double *yf, double *zf, double *gxcf, double *gycf, 00586 double *gzcf, double *a1cf, double *a2cf, double *a3cf, double *ccf, 00587 double *fcf, double *tcf); 00588 00589 #define F77NSORDRIV VF77_MANGLE(nsordriv, NSORDRIV) 00590 void F77NSORDRIV(int *iparm, double *rparm, int *iwork, double *rwork, 00591 double *u, double *xf, double *yf, double *zf, double *gxcf, double *gycf, 00592 double *gzcf, double *a1cf, double *a2cf, double *a3cf, double *ccf, 00593 double *fcf, double *tcf); 00594 00595 #define F77NGSRBDRIV VF77_MANGLE(ngsrbdriv, NGSRBDRIV) 00596 void F77NGSRBDRIV(int *iparm, double *rparm, int *iwork, double *rwork, 00597 double *u, double *xf, double *yf, double *zf, double *gxcf, double *gycf, 00598 double *gzcf, double *a1cf, double *a2cf, double *a3cf, double *ccf, 00599 double *fcf, double *tcf); 00600 00601 #define F77NWJACDRIV VF77_MANGLE(nwjacdriv, NWJACDRIV) 00602 void F77NWJACDRIV(int *iparm, double *rparm, int *iwork, double *rwork, 00603 double *u, double *xf, double *yf, double *zf, double *gxcf, double *gycf, 00604 double *gzcf, double *a1cf, double *a2cf, double *a3cf, double *ccf, 00605 double *fcf, double *tcf); 00606 00607 #define F77NRICHDRIV VF77_MANGLE(nrichdriv, NRICHDRIV) 00608 void F77NRICHDRIV(int *iparm, double *rparm, int *iwork, double *rwork, 00609 double *u, double *xf, double *yf, double *zf, double *gxcf, double *gycf, 00610 double *gzcf, double *a1cf, double *a2cf, double *a3cf, double *ccf, 00611 double *fcf, double *tcf); 00612 00613 /* TEMPORARY USEAQUA */ 00614 #define F77CGMGDRIVAQUA VF77_MANGLE(cgmgdrivaqua, CGMGDRIVAQUA) 00615 void F77CGMGDRIVAQUA(int *iparm, double *rparm, int *iwork, double *rwork, 00616 double *u, double *xf, double *yf, double *zf, double *gxcf, double *gycf, 00617 double *gzcf, double *a1cf, double *a2cf, double *a3cf, double *ccf, 00618 double *fcf); 00619 00620 /* TEMPORARY USEAQUA */ 00621 #define F77NEWDRIVAQUA VF77_MANGLE(newdrivaqua, NEWDRIVAQUA) 00622 void F77NEWDRIVAQUA(int *iparm, double *rparm, int *iwork, double *rwork, 00623 double *u, double *xf, double *yf, double *zf, double *gxcf, double *gycf, 00624 double *gzcf, double *a1cf, double *a2cf, double *a3cf, double *ccf, 00625 double *fcf); 00626 00627 #define F77TSECND VF77_MANGLE(tsecnd, TSECND) 00628 #define F77VPMGANORM VF77_MANGLE(vpmganorm, VPMGANORM) 00629 #define F77VPMGABAND VF77_MANGLE(vpmgaband, VPMGABAND) 00630 #define F77DPBFA VF77_MANGLE(dpbfa, DPBFA) 00631 #define F77DPBDI VF77_MANGLE(dpbdi, DPBDI) 00632 #define F77EIGDRIV VF77_MANGLE(eigdriv, EIGDRIV) 00633 #define F77ANORMDRIV VF77_MANGLE(anormdriv, ANORMDRIV) 00634 00635 #define F77MYPDEFINITLPBE VF77_MANGLE(mypdefinitlpbe, MYPDEFINITLPBE) 00636 void F77MYPDEFINITLPBE(int *nion, double *ionQ, double *ionConc); 00637 00638 #define F77MYPDEFINITNPBE VF77_MANGLE(mypdefinitnpbe, MYPDEFINITNPBE) 00639 void F77MYPDEFINITNPBE(int *nion, double *ionQ, double *ionConc); 00640 00641 #define F77MYPDEFINITSMPBE VF77_MANGLE(mypdefinitsmpbe, MYPDEFINITSMPBE) 00642 void F77MYPDEFINITSMPBE(int *nion, double *ionQ, double *ionConc, 00643 double *smvolume,double *smsize); 00644 00645 #define F77MYPDEFCLEAR VF77_MANGLE(mypdefclear, MYPDEFCLEAR) 00646 void F77MYPDEFCLEAR(); 00647 00648 #endif 00649 00650