APBS 3.0.0
Loading...
Searching...
No Matches
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
116struct 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;
189};
190
195typedef 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
226VEXTERNC 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
242VEXTERNC 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
260VEXTERNC void Vpmg_dtor(
261 Vpmg **thee
263 );
264
269VEXTERNC void Vpmg_dtor2(
270 Vpmg *thee
271 );
272
281VEXTERNC 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,
299 );
300
306VEXTERNC int Vpmg_solve(
307 Vpmg *thee
308 );
309
321VEXTERNC int Vpmg_solveLaplace(
322 Vpmg *thee
323 );
324
334VEXTERNC double Vpmg_energy(
335 Vpmg *thee,
336 int extFlag
340 );
341
359VEXTERNC double Vpmg_qfEnergy(
360 Vpmg *thee,
361 int extFlag
365 );
366
386VEXTERNC double Vpmg_qfAtomEnergy(
387 Vpmg *thee,
388 Vatom *atom
389 );
390
415VEXTERNC double Vpmg_qmEnergy(
416 Vpmg *thee,
417 int extFlag
421 );
422
423
442VEXTERNC double Vpmg_dielEnergy(
443 Vpmg *thee,
444 int extFlag
448 );
449
450
467VEXTERNC double Vpmg_dielGradNorm(
468 Vpmg *thee
469 );
470
482VEXTERNC int Vpmg_force(
483 Vpmg *thee,
484 double *force,
486 int atomID,
487 Vsurf_Meth srfm,
488 Vchrg_Meth chgm
489 );
490
502VEXTERNC int Vpmg_qfForce(
503 Vpmg *thee,
504 double *force,
506 int atomID,
507 Vchrg_Meth chgm
508 );
509
521VEXTERNC int Vpmg_dbForce(
522 Vpmg *thee,
523 double *dbForce,
525 int atomID,
526 Vsurf_Meth srfm
527 );
528
540VEXTERNC int Vpmg_ibForce(
541 Vpmg *thee,
542 double *force,
544 int atomID,
545 Vsurf_Meth srfm
546 );
547
553VEXTERNC void Vpmg_setPart(
554 Vpmg *thee,
555 double lowerCorner[3],
556 double upperCorner[3],
557 int bflags[6]
561 );
562
567VEXTERNC void Vpmg_unsetPart(
568 Vpmg *thee
569 );
570
576VEXTERNC 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
591VPUBLIC 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
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
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
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
742 Vpmg *thee,
743 Vgrid *induced,
744 Vgrid *nlInduced,
745 int atomID,
746 double force[3]
747 );
748
757 Vpmg *thee,
758 Vgrid *induced,
759 Vgrid *nlInduced,
760 int atomID,
761 double force[3]
762 );
763
772 Vpmg *thee,
773 Vgrid *induced,
774 Vgrid *nlInduced,
775 int atomID,
776 double force[3]
777 );
778
785VEXTERNC 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
811VPRIVATE 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
834VPRIVATE 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
863VPRIVATE 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
885VPRIVATE 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
910VPRIVATE 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
933VPRIVATE double bspline2(
934 double x /** Position */
935 );
936
942VPRIVATE double dbspline2(
943 double x
944 );
945
951VPRIVATE double VFCHI4(
952 int i,
953 double f
954 );
955
961VPRIVATE double bspline4(
962 double x
963 );
964
970VPRIVATE double dbspline4(
971 double x
972 );
973
979VPRIVATE double d2bspline4(
980 double x
981 );
982
988VPRIVATE double d3bspline4(
989 double x
990 );
991
998VPRIVATE double Vpmg_polarizEnergy(
999 Vpmg *thee,
1000 int extFlag
1002 );
1009VPRIVATE double Vpmg_qfEnergyPoint(
1010 Vpmg *thee,
1011 int extFlag
1013 );
1014
1020VPRIVATE double Vpmg_qfEnergyVolume(
1021 Vpmg *thee,
1022 int extFlag
1024 );
1025
1031VPRIVATE 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
1047VPRIVATE void focusFillBound(
1048 Vpmg *thee,
1049 Vpmg *pmg
1050 );
1051
1058VPRIVATE 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
1080VPRIVATE 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
1109VPRIVATE 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
1126VPRIVATE double bcfl1sp(
1127 double size,
1128 double *apos,
1129 double charge,
1130 double xkappa,
1131 double pre1,
1132 double *pos
1133 );
1134
1139VPRIVATE void bcCalc(
1140 Vpmg *thee
1141 );
1142
1147VPRIVATE void fillcoCoef(
1148 Vpmg *thee
1149 );
1150
1155VPRIVATE void fillcoCoefMap(
1156 Vpmg *thee
1157 );
1158
1164VPRIVATE void fillcoCoefMol(
1165 Vpmg *thee
1166 );
1167
1173VPRIVATE void fillcoCoefMolIon(
1174 Vpmg *thee
1175 );
1176
1182VPRIVATE void fillcoCoefMolDiel(
1183 Vpmg *thee
1184 );
1185
1191VPRIVATE void fillcoCoefMolDielNoSmooth(
1192 Vpmg *thee
1193 );
1194
1208VPRIVATE void fillcoCoefMolDielSmooth(
1209 Vpmg *thee
1210 );
1211
1217VPRIVATE void fillcoCoefSpline(
1218 Vpmg *thee
1219 );
1220
1226VPRIVATE void fillcoCoefSpline3(
1227 Vpmg *thee
1228 );
1229
1235VPRIVATE void fillcoCoefSpline4(
1236 Vpmg *thee
1237 );
1238
1244VPRIVATE Vrc_Codes fillcoCharge(
1245 Vpmg *thee
1246 );
1247
1253VPRIVATE Vrc_Codes fillcoChargeMap(
1254 Vpmg *thee
1255 );
1256
1261VPRIVATE void fillcoChargeSpline1(
1262 Vpmg *thee
1263 );
1264
1269VPRIVATE void fillcoChargeSpline2(
1270 Vpmg *thee
1271 );
1272
1277VPRIVATE void fillcoPermanentMultipole(
1278 Vpmg *thee
1279 );
1280
1286 Vpmg *thee
1287 );
1288
1295 Vpmg *thee
1296 );
1297
1304VPRIVATE 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
1317VPRIVATE void qfForceSpline1(
1318 Vpmg *thee,
1319 double *force,
1320 int atomID
1321 );
1322
1327VPRIVATE void qfForceSpline2(
1328 Vpmg *thee,
1329 double *force,
1330 int atomID
1331 );
1332
1337VPRIVATE void qfForceSpline4(
1338 Vpmg *thee,
1339 double *force,
1340 int atomID
1341 );
1342
1343
1351VPRIVATE void zlapSolve(
1352 Vpmg *thee,
1353 double **solution,
1354 double **source,
1355 double **work1
1356 );
1357
1364VPRIVATE 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
1384VPRIVATE double Vpmg_qmEnergySMPBE(Vpmg *thee, int extFlag);
1385VPRIVATE 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 eVdata_Type Vdata_Type
Declaration of the Vdata_Type type as the Vdata_Type enum.
Definition vhal.h:302
enum eVchrg_Meth Vchrg_Meth
Declaration of the Vchrg_Meth type as the Vchrg_Meth enum.
Definition vhal.h:244
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.