APBS  3.0.0
vpmg.h
Go to the documentation of this file.
1 
80 #ifndef _VPMG_H_
81 #define _VPMG_H_
82 
83 #include "apbscfg.h"
84 
85 #include "maloc/maloc.h"
86 
87 #include "generic/vhal.h"
88 #include "generic/vacc.h"
89 #include "generic/vcap.h"
90 #include "generic/vpbe.h"
91 #include "generic/mgparm.h"
92 #include "generic/pbeparm.h"
93 #include "generic/vmatrix.h"
94 #include "pmgc/mgdrvd.h"
95 #include "pmgc/newdrvd.h"
96 #include "pmgc/mgsubd.h"
97 #include "pmgc/mikpckd.h"
98 #include "pmgc/matvecd.h"
99 #include "mg/vpmgp.h"
100 #include "mg/vgrid.h"
101 
105 #define VPMGMAXPART 2000
106 
116 struct sVpmg {
117 
118  Vmem *vmem;
122 #ifdef BURY_FORTRAN
123  Vpde *pde;
124  Vmgdriver *mgdriver;
125 #endif
126 
127  double *epsx;
128  double *epsy;
129  double *epsz;
130  double *kappa;
131  double *pot;
132  double *charge;
134  int *iparm;
135  double *rparm;
136  int *iwork;
137  double *rwork;
138  double *a1cf;
140  double *a2cf;
142  double *a3cf;
144  double *ccf;
145  double *fcf;
146  double *tcf;
147  double *u;
148  double *xf;
149  double *yf;
150  double *zf;
151  double *gxcf;
152  double *gycf;
153  double *gzcf;
154  double *pvec;
155  double extDiEnergy;
157  double extQmEnergy;
159  double extQfEnergy;
161  double extNpEnergy;
164  double splineWin;
168  int filled;
182  int usePotMap;
189 };
190 
195 typedef struct sVpmg Vpmg;
196 
197 /* /////////////////////////////////////////////////////////////////////////
200 #if !defined(VINLINE_VPMG)
201 
208  VEXTERNC unsigned long int Vpmg_memChk(
209  Vpmg *thee /**< Object for memory check */
210  );
211 
212 #else /* if defined(VINLINE_VPMG) */
213 
214 # define Vpmg_memChk(thee) (Vmem_bytes((thee)->vmem))
215 
216 #endif /* if !defined(VINLINE_VPMG) */
217 
218 /* /////////////////////////////////////////////////////////////////////////
221 
226 VEXTERNC Vpmg* Vpmg_ctor(
227  Vpmgp *parms, /**< PMG parameter object */
228  Vpbe *pbe,
229  int focusFlag,
230  Vpmg *pmgOLD,
231  MGparm *mgparm,
232  PBEparm_calcEnergy energyFlag
233  );
234 
242 VEXTERNC int Vpmg_ctor2(
243  Vpmg *thee,
244  Vpmgp *parms,
245  Vpbe *pbe,
246  int focusFlag,
247  Vpmg *pmgOLD,
249  MGparm *mgparm,
251  PBEparm_calcEnergy energyFlag
254  );
255 
260 VEXTERNC void Vpmg_dtor(
261  Vpmg **thee
263  );
264 
269 VEXTERNC void Vpmg_dtor2(
270  Vpmg *thee
271  );
272 
281 VEXTERNC int Vpmg_fillco(
282  Vpmg *thee,
284  double splineWin,
287  int useDielXMap,
288  Vgrid *dielXMap,
289  int useDielYMap,
290  Vgrid *dielYMap,
291  int useDielZMap,
292  Vgrid *dielZMap,
293  int useKappaMap,
294  Vgrid *kappaMap,
295  int usePotMap,
296  Vgrid *potMap,
297  int useChargeMap,
298  Vgrid *chargeMap
299  );
300 
306 VEXTERNC int Vpmg_solve(
307  Vpmg *thee
308  );
309 
321 VEXTERNC int Vpmg_solveLaplace(
322  Vpmg *thee
323  );
324 
334 VEXTERNC double Vpmg_energy(
335  Vpmg *thee,
336  int extFlag
340  );
341 
359 VEXTERNC double Vpmg_qfEnergy(
360  Vpmg *thee,
361  int extFlag
365  );
366 
386 VEXTERNC double Vpmg_qfAtomEnergy(
387  Vpmg *thee,
388  Vatom *atom
389  );
390 
415 VEXTERNC double Vpmg_qmEnergy(
416  Vpmg *thee,
417  int extFlag
421  );
422 
423 
442 VEXTERNC double Vpmg_dielEnergy(
443  Vpmg *thee,
444  int extFlag
448  );
449 
450 
467 VEXTERNC double Vpmg_dielGradNorm(
468  Vpmg *thee
469  );
470 
482 VEXTERNC int Vpmg_force(
483  Vpmg *thee,
484  double *force,
486  int atomID,
487  Vsurf_Meth srfm,
488  Vchrg_Meth chgm
489  );
490 
502 VEXTERNC int Vpmg_qfForce(
503  Vpmg *thee,
504  double *force,
506  int atomID,
507  Vchrg_Meth chgm
508  );
509 
521 VEXTERNC int Vpmg_dbForce(
522  Vpmg *thee,
523  double *dbForce,
525  int atomID,
526  Vsurf_Meth srfm
527  );
528 
540 VEXTERNC int Vpmg_ibForce(
541  Vpmg *thee,
542  double *force,
544  int atomID,
545  Vsurf_Meth srfm
546  );
547 
553 VEXTERNC void Vpmg_setPart(
554  Vpmg *thee,
555  double lowerCorner[3],
556  double upperCorner[3],
557  int bflags[6]
561  );
562 
567 VEXTERNC void Vpmg_unsetPart(
568  Vpmg *thee
569  );
570 
576 VEXTERNC int Vpmg_fillArray(
577  Vpmg *thee,
578  double *vec,
580  Vdata_Type type,
581  double parm,
582  Vhal_PBEType pbetype,
583  PBEparm * pbeparm
584  );
585 
591 VPUBLIC void Vpmg_fieldSpline4(
592  Vpmg *thee,
593  int atomID,
594  double field[3]
595  );
596 
605  Vpmg *thee,
606  int atomID
607  );
608 
615  Vpmg *thee,
616  int atomID,
617  double force[3],
618  double torque[3]
619  );
620 
626  Vpmg *thee,
627  int atomID,
628  double force[3]
629  );
630 
636  Vpmg *thee,
637  int atomID,
638  double force[3]
639  );
640 
647 VEXTERNC void Vpmg_qfDirectPolForce(
648  Vpmg *thee,
649  Vgrid *perm,
650  Vgrid *induced,
651  int atomID,
652  double force[3],
653  double torque[3]
654  );
655 
665  Vpmg *thee,
666  Vgrid *perm,
667  Vgrid *nlInduced,
668  int atomID,
669  double force[3],
670  double torque[3]
671  );
672 
680 VEXTERNC void Vpmg_ibDirectPolForce(
681  Vpmg *thee,
682  Vgrid *perm,
683  Vgrid *induced,
684  int atomID,
685  double force[3]
686  );
687 
697  Vpmg *thee,
698  Vgrid *perm,
699  Vgrid *nlInduced,
700  int atomID,
701  double force[3]
702  );
703 
711 VEXTERNC void Vpmg_dbDirectPolForce(
712  Vpmg *thee,
713  Vgrid *perm,
714  Vgrid *induced,
715  int atomID,
716  double force[3]
717  );
718 
728  Vpmg *thee,
729  Vgrid *perm,
730  Vgrid *nlInduced,
731  int atomID,
732  double force[3]
733  );
734 
741 VEXTERNC void Vpmg_qfMutualPolForce(
742  Vpmg *thee,
743  Vgrid *induced,
744  Vgrid *nlInduced,
745  int atomID,
746  double force[3]
747  );
748 
756 VEXTERNC void Vpmg_ibMutualPolForce(
757  Vpmg *thee,
758  Vgrid *induced,
759  Vgrid *nlInduced,
760  int atomID,
761  double force[3]
762  );
763 
771 VEXTERNC void Vpmg_dbMutualPolForce(
772  Vpmg *thee,
773  Vgrid *induced,
774  Vgrid *nlInduced,
775  int atomID,
776  double force[3]
777  );
778 
785 VEXTERNC void Vpmg_printColComp(
786  Vpmg *thee,
787  char path[72],
788  char title[72],
789  char mxtype[3],
797  int flag
801  );
802 
803 
804 
811 VPRIVATE void bcolcomp(
812  int *iparm,
813  double *rparm,
814  int *iwork,
815  double *rwork,
816  double *values,
817  int *rowind,
818  int *colptr,
819  int *flag
824  );
825 
826 
827 
834 VPRIVATE void bcolcomp2(
835  int *iparm,
836  double *rparm,
837  int *nx,
838  int *ny,
839  int *nz,
840  int *iz,
841  int *ipc,
842  double *rpc,
843  double *ac,
844  double *cc,
845  double *values,
846  int *rowind,
847  int *colptr,
848  int *flag
853  );
854 
855 
856 
863 VPRIVATE void bcolcomp3(
864  int *nx,
865  int *ny,
866  int *nz,
867  int *ipc,
868  double *rpc,
869  double *ac,
870  double *cc,
871  double *values,
872  int *rowind,
873  int *colptr,
874  int *flag
875  );
876 
877 
878 
885 VPRIVATE void bcolcomp4(
886  int *nx,
887  int *ny,
888  int *nz,
889  int *ipc,
890  double *rpc,
891  double *oC,
892  double *cc,
893  double *oE,
894  double *oN,
895  double *uC,
896  double *values,
897  int *rowind,
898  int *colptr,
899  int *flag
900  );
901 
902 
903 
910 VPRIVATE void pcolcomp(
911  int *nrow,
912  int *ncol,
913  int *nnzero,
914  double *values,
915  int *rowind,
916  int *colptr,
917  char *path,
918  char *title,
919  char *mxtype
920  );
921 
922 
923 
924 /* ///////////////////////////////////////////////////////////////////////////
925 // Internal routines
927 
933 VPRIVATE double bspline2(
934  double x /** Position */
935  );
936 
942 VPRIVATE double dbspline2(
943  double x
944  );
945 
951 VPRIVATE double VFCHI4(
952  int i,
953  double f
954  );
955 
961 VPRIVATE double bspline4(
962  double x
963  );
964 
970 VPRIVATE double dbspline4(
971  double x
972  );
973 
979 VPRIVATE double d2bspline4(
980  double x
981  );
982 
988 VPRIVATE double d3bspline4(
989  double x
990  );
991 
998 VPRIVATE double Vpmg_polarizEnergy(
999  Vpmg *thee,
1000  int extFlag
1002  );
1009 VPRIVATE double Vpmg_qfEnergyPoint(
1010  Vpmg *thee,
1011  int extFlag
1013  );
1014 
1020 VPRIVATE double Vpmg_qfEnergyVolume(
1021  Vpmg *thee,
1022  int extFlag
1024  );
1025 
1031 VPRIVATE void Vpmg_splineSelect(
1032  int srfm,
1034  Vacc *acc,
1035  double *gpos,
1036  double win,
1037  double infrad,
1038  Vatom *atom,
1039  double *force
1040  );
1041 
1047 VPRIVATE void focusFillBound(
1048  Vpmg *thee,
1049  Vpmg *pmg
1050  );
1051 
1058 VPRIVATE void bcfl1(
1059  double size,
1060  double *apos,
1061  double charge,
1062  double xkappa,
1063  double pre1,
1064  double *gxcf,
1065  double *gycf,
1066  double *gzcf,
1067  double *xf,
1068  double *yf,
1069  double *zf,
1070  int nx,
1071  int ny,
1072  int nz
1073  );
1074 
1080 VPRIVATE void bcfl2(
1081  double size,
1082  double *apos,
1083  double charge,
1084  double *dipole,
1085  double *quad,
1086  double xkappa,
1087  double eps_p,
1088  double eps_w,
1089  double T,
1090  double *gxcf,
1091  double *gycf,
1092  double *gzcf,
1093  double *xf,
1094  double *yf,
1095  double *zf,
1096  int nx,
1097  int ny,
1098  int nz
1099  );
1100 
1109 VPRIVATE void multipolebc(
1110  double r,
1111  double kappa,
1112  double eps_p,
1113  double eps_w,
1114  double rad,
1115  double tsr[3]
1116  );
1117 
1126 VPRIVATE double bcfl1sp(
1127  double size,
1128  double *apos,
1129  double charge,
1130  double xkappa,
1131  double pre1,
1132  double *pos
1133  );
1134 
1139 VPRIVATE void bcCalc(
1140  Vpmg *thee
1141  );
1142 
1147 VPRIVATE void fillcoCoef(
1148  Vpmg *thee
1149  );
1150 
1155 VPRIVATE void fillcoCoefMap(
1156  Vpmg *thee
1157  );
1158 
1164 VPRIVATE void fillcoCoefMol(
1165  Vpmg *thee
1166  );
1167 
1173 VPRIVATE void fillcoCoefMolIon(
1174  Vpmg *thee
1175  );
1176 
1182 VPRIVATE void fillcoCoefMolDiel(
1183  Vpmg *thee
1184  );
1185 
1191 VPRIVATE void fillcoCoefMolDielNoSmooth(
1192  Vpmg *thee
1193  );
1194 
1208 VPRIVATE void fillcoCoefMolDielSmooth(
1209  Vpmg *thee
1210  );
1211 
1217 VPRIVATE void fillcoCoefSpline(
1218  Vpmg *thee
1219  );
1220 
1226 VPRIVATE void fillcoCoefSpline3(
1227  Vpmg *thee
1228  );
1229 
1235 VPRIVATE void fillcoCoefSpline4(
1236  Vpmg *thee
1237  );
1238 
1244 VPRIVATE Vrc_Codes fillcoCharge(
1245  Vpmg *thee
1246  );
1247 
1253 VPRIVATE Vrc_Codes fillcoChargeMap(
1254  Vpmg *thee
1255  );
1256 
1261 VPRIVATE void fillcoChargeSpline1(
1262  Vpmg *thee
1263  );
1264 
1269 VPRIVATE void fillcoChargeSpline2(
1270  Vpmg *thee
1271  );
1272 
1277 VPRIVATE void fillcoPermanentMultipole(
1278  Vpmg *thee
1279  );
1280 
1285 VPRIVATE void fillcoInducedDipole(
1286  Vpmg *thee
1287  );
1288 
1295  Vpmg *thee
1296  );
1297 
1304 VPRIVATE void extEnergy(
1305  Vpmg *thee,
1306  Vpmg *pmgOLD,
1307  PBEparm_calcEnergy extFlag,
1308  double partMin[3],
1309  double partMax[3],
1310  int bflags[6]
1311  );
1312 
1317 VPRIVATE void qfForceSpline1(
1318  Vpmg *thee,
1319  double *force,
1320  int atomID
1321  );
1322 
1327 VPRIVATE void qfForceSpline2(
1328  Vpmg *thee,
1329  double *force,
1330  int atomID
1331  );
1332 
1337 VPRIVATE void qfForceSpline4(
1338  Vpmg *thee,
1339  double *force,
1340  int atomID
1341  );
1342 
1343 
1351 VPRIVATE void zlapSolve(
1352  Vpmg *thee,
1353  double **solution,
1354  double **source,
1355  double **work1
1356  );
1357 
1364 VPRIVATE void markSphere(
1365  double rtot,
1366  double *tpos,
1367  int nx,
1368  int ny,
1369  int nz,
1370  double hx,
1371  double hy,
1372  double hzed,
1373  double xmin,
1374  double ymin,
1375  double zmin,
1376  double *array,
1377  double markVal
1378  );
1379 
1384 VPRIVATE double Vpmg_qmEnergySMPBE(Vpmg *thee, int extFlag);
1385 VPRIVATE double Vpmg_qmEnergyNONLIN(Vpmg *thee, int extFlag);
1386 
1387 
1388 
1389 // Additional macros and definitions. May not be needed
1390 
1391 // Added by Vincent Chu 9/13/06 for SMPB
1392 #define VCUB(x) ((x)*(x)*(x))
1393 #define VLOG(x) (log(x))
1394 
1395 #define IJK(i,j,k) (((k)*(nx)*(ny))+((j)*(nx))+(i))
1396 #define IJKx(j,k,i) (((i)*(ny)*(nz))+((k)*(ny))+(j))
1397 #define IJKy(i,k,j) (((j)*(nx)*(nz))+((k)*(nx))+(i))
1398 #define IJKz(i,j,k) (((k)*(nx)*(ny))+((j)*(nx))+(i))
1399 #define VFCHI(iint,iflt) (1.5+((double)(iint)-(iflt)))
1400 
1401 
1402 #endif /* ifndef _VPMG_H_ */
1403 
enum ePBEparm_calcEnergy PBEparm_calcEnergy
Define ePBEparm_calcEnergy enumeration as PBEparm_calcEnergy.
Definition: pbeparm.h:91
enum eVchrg_Src Vchrg_Src
Declaration of the Vchrg_Src type as the Vchrg_Meth enum.
Definition: vhal.h:262
enum eVsurf_Meth Vsurf_Meth
Declaration of the Vsurf_Meth type as the Vsurf_Meth enum.
Definition: vhal.h:133
enum eVhal_PBEType Vhal_PBEType
Declaration of the Vhal_PBEType type as the Vhal_PBEType enum.
Definition: vhal.h:151
enum eVchrg_Meth Vchrg_Meth
Declaration of the Vchrg_Meth type as the Vchrg_Meth enum.
Definition: vhal.h:244
enum eVdata_Type Vdata_Type
Declaration of the Vdata_Type type as the Vdata_Type enum.
Definition: vhal.h:302
VPRIVATE void pcolcomp(int *nrow, int *ncol, int *nnzero, double *values, int *rowind, int *colptr, char *path, char *title, char *mxtype)
Print a column-compressed matrix in Harwell-Boeing format.
Definition: vpmg.c:11023
VEXTERNC void Vpmg_dbMutualPolForce(Vpmg *thee, Vgrid *induced, Vgrid *nlInduced, int atomID, double force[3])
Dielectric boundary mutual polarization force for induced dipoles based on 5th order B-Splines....
VEXTERNC void Vpmg_ibNLDirectPolForce(Vpmg *thee, Vgrid *perm, Vgrid *nlInduced, int atomID, double force[3])
Ionic boundary direct polarization force between permanent multipoles and non-local induced dipoles b...
VEXTERNC int Vpmg_fillArray(Vpmg *thee, double *vec, Vdata_Type type, double parm, Vhal_PBEType pbetype, PBEparm *pbeparm)
Fill the specified array with accessibility values.
Definition: vpmg.c:892
VEXTERNC int Vpmg_ibForce(Vpmg *thee, double *force, int atomID, Vsurf_Meth srfm)
Calculate the osmotic pressure on the specified atom in units of k_B T/AA.
Definition: vpmg.c:5845
VEXTERNC void Vpmg_dtor(Vpmg **thee)
Object destructor.
Definition: vpmg.c:561
VEXTERNC double Vpmg_qfPermanentMultipoleEnergy(Vpmg *thee, int atomID)
Computes the permanent multipole electrostatic hydration energy (the polarization component of the hy...
VEXTERNC void Vpmg_dbDirectPolForce(Vpmg *thee, Vgrid *perm, Vgrid *induced, int atomID, double force[3])
Dielectric boundary direct polarization force between permanent multipoles and induced dipoles,...
VEXTERNC double Vpmg_dielGradNorm(Vpmg *thee)
Get the integral of the gradient of the dielectric function.
Definition: vpmg.c:1342
VEXTERNC void Vpmg_qfPermanentMultipoleForce(Vpmg *thee, int atomID, double force[3], double torque[3])
Computes the q-Phi Force for permanent multipoles based on 5th order B-splines.
VEXTERNC int Vpmg_ctor2(Vpmg *thee, Vpmgp *parms, Vpbe *pbe, int focusFlag, Vpmg *pmgOLD, MGparm *mgparm, PBEparm_calcEnergy energyFlag)
FORTRAN stub constructor for the Vpmg class (uses previously-allocated memory)
Definition: vpmg.c:153
VEXTERNC int Vpmg_solveLaplace(Vpmg *thee)
Solve Poisson's equation with a homogeneous Laplacian operator using the solvent dielectric constant....
Definition: vpmg.c:7042
VEXTERNC void Vpmg_qfMutualPolForce(Vpmg *thee, Vgrid *induced, Vgrid *nlInduced, int atomID, double force[3])
Mutual polarization force for induced dipoles based on 5th order B-Splines. This force arises due to ...
VEXTERNC void Vpmg_qfNLDirectPolForce(Vpmg *thee, Vgrid *perm, Vgrid *nlInduced, int atomID, double force[3], double torque[3])
q-Phi direct polarization force between permanent multipoles and non-local induced dipoles based on 5...
VPRIVATE void bcolcomp(int *iparm, double *rparm, int *iwork, double *rwork, double *values, int *rowind, int *colptr, int *flag)
Build a column-compressed matrix in Harwell-Boeing format.
Definition: vpmg.c:10741
VEXTERNC void Vpmg_ibPermanentMultipoleForce(Vpmg *thee, int atomID, double force[3])
Compute the ionic boundary force for permanent multipoles.
VEXTERNC void Vpmg_ibDirectPolForce(Vpmg *thee, Vgrid *perm, Vgrid *induced, int atomID, double force[3])
Ionic boundary direct polarization force between permanent multipoles and induced dipoles,...
VEXTERNC void Vpmg_ibMutualPolForce(Vpmg *thee, Vgrid *induced, Vgrid *nlInduced, int atomID, double force[3])
Ionic boundary mutual polarization force for induced dipoles based on 5th order B-Splines....
VEXTERNC double Vpmg_dielEnergy(Vpmg *thee, int extFlag)
Get the "polarization" contribution to the electrostatic energy.
Definition: vpmg.c:1279
VEXTERNC int Vpmg_solve(Vpmg *thee)
Solve the PBE using PMG.
Definition: vpmg.c:401
VEXTERNC double Vpmg_qfAtomEnergy(Vpmg *thee, Vatom *atom)
Get the per-atom "fixed charge" contribution to the electrostatic energy.
Definition: vpmg.c:1791
VEXTERNC void Vpmg_dtor2(Vpmg *thee)
FORTRAN stub object destructor.
Definition: vpmg.c:571
VEXTERNC double Vpmg_qmEnergy(Vpmg *thee, int extFlag)
Get the "mobile charge" contribution to the electrostatic energy.
Definition: vpmg.c:1386
VEXTERNC int Vpmg_force(Vpmg *thee, double *force, int atomID, Vsurf_Meth srfm, Vchrg_Meth chgm)
Calculate the total force on the specified atom in units of k_B T/AA.
Definition: vpmg.c:5822
VPRIVATE void bcolcomp4(int *nx, int *ny, int *nz, int *ipc, double *rpc, double *oC, double *cc, double *oE, double *oN, double *uC, double *values, int *rowind, int *colptr, int *flag)
Build a column-compressed matrix in Harwell-Boeing format.
Definition: vpmg.c:10858
VPRIVATE void bcolcomp2(int *iparm, double *rparm, int *nx, int *ny, int *nz, int *iz, int *ipc, double *rpc, double *ac, double *cc, double *values, int *rowind, int *colptr, int *flag)
Build a column-compressed matrix in Harwell-Boeing format.
Definition: vpmg.c:10795
VPRIVATE void bcolcomp3(int *nx, int *ny, int *nz, int *ipc, double *rpc, double *ac, double *cc, double *values, int *rowind, int *colptr, int *flag)
Build a column-compressed matrix in Harwell-Boeing format.
Definition: vpmg.c:10831
VEXTERNC void Vpmg_dbNLDirectPolForce(Vpmg *thee, Vgrid *perm, Vgrid *nlInduced, int atomID, double force[3])
Dielectric bounday direct polarization force between permanent multipoles and non-local induced dipol...
VEXTERNC double Vpmg_qfEnergy(Vpmg *thee, int extFlag)
Get the "fixed charge" contribution to the electrostatic energy.
Definition: vpmg.c:1687
VPUBLIC void Vpmg_fieldSpline4(Vpmg *thee, int atomID, double field[3])
Computes the field at an atomic center using a stencil based on the first derivative of a 5th order B...
VEXTERNC double Vpmg_energy(Vpmg *thee, int extFlag)
Get the total electrostatic energy.
Definition: vpmg.c:1248
VEXTERNC void Vpmg_dbPermanentMultipoleForce(Vpmg *thee, int atomID, double force[3])
Compute the dielectric boundary force for permanent multipoles.
VEXTERNC void Vpmg_qfDirectPolForce(Vpmg *thee, Vgrid *perm, Vgrid *induced, int atomID, double force[3], double torque[3])
q-Phi direct polarization force between permanent multipoles and induced dipoles, which are induced b...
VEXTERNC int Vpmg_dbForce(Vpmg *thee, double *dbForce, int atomID, Vsurf_Meth srfm)
Calculate the dielectric boundary forces on the specified atom in units of k_B T/AA.
Definition: vpmg.c:6010
VEXTERNC int Vpmg_fillco(Vpmg *thee, Vsurf_Meth surfMeth, double splineWin, Vchrg_Meth chargeMeth, int useDielXMap, Vgrid *dielXMap, int useDielYMap, Vgrid *dielYMap, int useDielZMap, Vgrid *dielZMap, int useKappaMap, Vgrid *kappaMap, int usePotMap, Vgrid *potMap, int useChargeMap, Vgrid *chargeMap)
Fill the coefficient arrays prior to solving the equation.
Definition: vpmg.c:5655
VEXTERNC int Vpmg_qfForce(Vpmg *thee, double *force, int atomID, Vchrg_Meth chgm)
Calculate the "charge-field" force on the specified atom in units of k_B T/AA.
Definition: vpmg.c:6267
VEXTERNC void Vpmg_unsetPart(Vpmg *thee)
Remove partition restrictions.
Definition: vpmg.c:872
VEXTERNC void Vpmg_printColComp(Vpmg *thee, char path[72], char title[72], char mxtype[3], int flag)
Print out a column-compressed sparse matrix in Harwell-Boeing format.
Definition: vpmg.c:87
VEXTERNC void Vpmg_setPart(Vpmg *thee, double lowerCorner[3], double upperCorner[3], int bflags[6])
Set partition information which restricts the calculation of observables to a (rectangular) subset of...
Definition: vpmg.c:627
Contains declarations for class MGparm.
Contains declarations for class PBEparm.
Parameter structure for MG-specific variables from input files.
Definition: mgparm.h:114
Parameter structure for PBE variables from input files.
Definition: pbeparm.h:117
Oracle for solvent- and ion-accessibility around a biomolecule.
Definition: vacc.h:108
Contains public data members for Vatom class/module.
Definition: vatom.h:84
Electrostatic potential oracle for Cartesian mesh data.
Definition: vgrid.h:81
Contains public data members for Vpbe class/module.
Definition: vpbe.h:84
Contains public data members for Vpmg class/module.
Definition: vpmg.h:116
double * rparm
Definition: vpmg.h:135
double extNpEnergy
Definition: vpmg.h:161
double * gycf
Definition: vpmg.h:152
int useDielZMap
Definition: vpmg.h:176
double * rwork
Definition: vpmg.h:137
Vchrg_Src chargeSrc
Definition: vpmg.h:166
Vpbe * pbe
Definition: vpmg.h:120
double * epsz
Definition: vpmg.h:129
double splineWin
Definition: vpmg.h:164
double * pot
Definition: vpmg.h:131
Vgrid * dielXMap
Definition: vpmg.h:172
double * u
Definition: vpmg.h:147
int filled
Definition: vpmg.h:168
int useChargeMap
Definition: vpmg.h:186
int * iparm
Definition: vpmg.h:134
double * tcf
Definition: vpmg.h:146
int usePotMap
Definition: vpmg.h:182
double * a1cf
Definition: vpmg.h:138
double * fcf
Definition: vpmg.h:145
Vchrg_Meth chargeMeth
Definition: vpmg.h:165
Vpmgp * pmgp
Definition: vpmg.h:119
double extDiEnergy
Definition: vpmg.h:155
double * a3cf
Definition: vpmg.h:142
double * pvec
Definition: vpmg.h:154
double * a2cf
Definition: vpmg.h:140
Vgrid * potMap
Definition: vpmg.h:184
int useDielYMap
Definition: vpmg.h:173
double * xf
Definition: vpmg.h:148
Vgrid * kappaMap
Definition: vpmg.h:181
double * yf
Definition: vpmg.h:149
int useDielXMap
Definition: vpmg.h:170
double * epsx
Definition: vpmg.h:127
double extQmEnergy
Definition: vpmg.h:157
int * iwork
Definition: vpmg.h:136
double * kappa
Definition: vpmg.h:130
Vgrid * dielYMap
Definition: vpmg.h:175
Vgrid * dielZMap
Definition: vpmg.h:178
Vsurf_Meth surfMeth
Definition: vpmg.h:163
int useKappaMap
Definition: vpmg.h:179
double * gxcf
Definition: vpmg.h:151
Vmem * vmem
Definition: vpmg.h:118
double * epsy
Definition: vpmg.h:128
double extQfEnergy
Definition: vpmg.h:159
double * zf
Definition: vpmg.h:150
double * ccf
Definition: vpmg.h:144
double * charge
Definition: vpmg.h:132
double * gzcf
Definition: vpmg.h:153
Vgrid * chargeMap
Definition: vpmg.h:188
Contains public data members for Vpmgp class/module.
Definition: vpmgp.h:80
Contains declarations for class Vacc.
Contains declarations for class Vcap.
Potential oracle for Cartesian mesh data.
Contains generic macro definitions for APBS.
Contains inclusions for matrix data wrappers.
Contains declarations for class Vpbe.
VPRIVATE double Vpmg_qfEnergyPoint(Vpmg *thee, int extFlag)
Calculates charge-potential energy using summation over delta function positions (i....
Definition: vpmg.c:1704
VPRIVATE void multipolebc(double r, double kappa, double eps_p, double eps_w, double rad, double tsr[3])
This routine serves bcfl2. It returns (in tsr) the contraction independent portion of the Debye-Hucke...
Definition: vpmg.c:3487
VPRIVATE void Vpmg_splineSelect(int srfm, Vacc *acc, double *gpos, double win, double infrad, Vatom *atom, double *force)
Selects a spline based surface method from either VSM_SPLINE, VSM_SPLINE5 or VSM_SPLINE7.
Definition: vpmg.c:1893
VPRIVATE void fillcoCoef(Vpmg *thee)
Top-level driver to fill all operator coefficient arrays.
Definition: vpmg.c:5247
VPRIVATE double d3bspline4(double x)
Evaluate the 3rd derivative of a 5th Order B-Spline.
Definition: vpmg.c:7229
VPRIVATE Vrc_Codes fillcoChargeMap(Vpmg *thee)
Fill source term charge array from a pre-calculated map.
Definition: vpmg.c:5343
VPRIVATE void fillcoCoefMolDiel(Vpmg *thee)
Fill differential operator coefficient arrays from a molecular surface calculation.
Definition: vpmg.c:4726
VPRIVATE void fillcoCoefMap(Vpmg *thee)
Fill operator coefficient arrays from pre-calculated maps.
Definition: vpmg.c:4489
VPRIVATE void zlapSolve(Vpmg *thee, double **solution, double **source, double **work1)
Calculate the solution to Poisson's equation with a simple Laplacian operator and zero-valued Dirichl...
Definition: vpmg.c:6898
VPRIVATE void fillcoChargeSpline2(Vpmg *thee)
Fill source term charge array from cubic spline interpolation.
Definition: vpmg.c:5528
VPRIVATE void fillcoCoefSpline(Vpmg *thee)
Fill operator coefficient arrays from a spline-based surface calculation.
Definition: vpmg.c:5022
VPRIVATE void fillcoNLInducedDipole(Vpmg *thee)
Fill source term charge array for non-local induced dipoles.
VPRIVATE void fillcoCoefMol(Vpmg *thee)
Fill operator coefficient arrays from a molecular surface calculation.
Definition: vpmg.c:4612
VPRIVATE void qfForceSpline4(Vpmg *thee, double *force, int atomID)
Charge-field force due to a quintic spline charge function.
Definition: vpmg.c:6561
VPRIVATE void qfForceSpline1(Vpmg *thee, double *force, int atomID)
Charge-field force due to a linear spline charge function.
Definition: vpmg.c:6311
VPRIVATE double Vpmg_qfEnergyVolume(Vpmg *thee, int extFlag)
Calculates charge-potential energy as integral over a volume.
Definition: vpmg.c:1861
VPRIVATE void bcfl1(double size, double *apos, double charge, double xkappa, double pre1, double *gxcf, double *gycf, double *gzcf, double *xf, double *yf, double *zf, int nx, int ny, int nz)
Increment all boundary points by pre1*(charge/d)*(exp(-xkappa*(d-size))/(1+xkappa*size) to add the ef...
Definition: vpmg.c:2564
VPRIVATE void fillcoChargeSpline1(Vpmg *thee)
Fill source term charge array from linear interpolation.
Definition: vpmg.c:5391
VPRIVATE double dbspline2(double x)
Evaluate a cubic B-spline derivative.
Definition: vpmg.c:5512
VPRIVATE double dbspline4(double x)
Evaluate a 5th Order B-Spline derivative (4th order polynomial)
Definition: vpmg.c:7170
VPRIVATE void fillcoCoefMolIon(Vpmg *thee)
Fill ion (nonlinear) operator coefficient array from a molecular surface calculation.
Definition: vpmg.c:4628
VPRIVATE void bcCalc(Vpmg *thee)
Fill boundary condition arrays.
Definition: vpmg.c:4382
VPRIVATE double Vpmg_qmEnergySMPBE(Vpmg *thee, int extFlag)
Vpmg_qmEnergy for SMPBE.
Definition: vpmg.c:1490
VPRIVATE void fillcoPermanentMultipole(Vpmg *thee)
Fill source term charge array for the use of permanent multipoles.
Definition: vpmg.c:7240
VPRIVATE void markSphere(double rtot, double *tpos, int nx, int ny, int nz, double hx, double hy, double hzed, double xmin, double ymin, double zmin, double *array, double markVal)
Mark the grid points inside a sphere with a particular value. This marks by resetting the the grid po...
Definition: vpmg.c:6849
VPRIVATE void fillcoCoefMolDielSmooth(Vpmg *thee)
Fill differential operator coefficient arrays from a molecular surface calculation with smoothing.
Definition: vpmg.c:4891
VPRIVATE void fillcoCoefSpline3(Vpmg *thee)
Fill operator coefficient arrays from a 5th order polynomial based surface calculation.
Definition: vpmg.c:10430
VPRIVATE void fillcoCoefSpline4(Vpmg *thee)
Fill operator coefficient arrays from a 7th order polynomial based surface calculation.
Definition: vpmg.c:9939
VPRIVATE void qfForceSpline2(Vpmg *thee, double *force, int atomID)
Charge-field force due to a cubic spline charge function.
Definition: vpmg.c:6448
VPRIVATE double bspline4(double x)
Evaluate a 5th Order B-Spline (4th order polynomial)
Definition: vpmg.c:7136
VPRIVATE Vrc_Codes fillcoCharge(Vpmg *thee)
Top-level driver to fill source term charge array.
Definition: vpmg.c:5287
VPRIVATE void fillcoCoefMolDielNoSmooth(Vpmg *thee)
Fill differential operator coefficient arrays from a molecular surface calculation without smoothing.
Definition: vpmg.c:4737
VPRIVATE double Vpmg_polarizEnergy(Vpmg *thee, int extFlag)
Determines energy from polarizeable charge and interaction with fixed charges according to Rocchia et...
Definition: vpmg.c:1148
VPRIVATE void fillcoInducedDipole(Vpmg *thee)
Fill source term charge array for use of induced dipoles.
VPRIVATE double d2bspline4(double x)
Evaluate the 2nd derivative of a 5th Order B-Spline.
Definition: vpmg.c:7202
VPRIVATE double VFCHI4(int i, double f)
Return 2.5 plus difference of i - f.
Definition: vpmg.c:7132
Contains declarations for class Vpmgp.