APBS
1.5
|
A wrapper for Mike Holst's PMG multigrid code. More...
Files | |
file | vpmg.c |
Class Vpmg methods. | |
file | vpmg.h |
Contains declarations for class Vpmg. | |
Data Structures | |
struct | sVpmg |
Contains public data members for Vpmg class/module. More... | |
Typedefs | |
typedef struct sVpmg | Vpmg |
Declaration of the Vpmg class as the Vpmg structure. | |
Functions | |
VEXTERNC unsigned long int | Vpmg_memChk (Vpmg *thee) |
Return the memory used by this structure (and its contents) in bytes. More... | |
VEXTERNC Vpmg * | Vpmg_ctor (Vpmgp *parms, Vpbe *pbe, int focusFlag, Vpmg *pmgOLD, MGparm *mgparm, PBEparm_calcEnergy energyFlag) |
Constructor for the Vpmg class (allocates new memory) More... | |
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) More... | |
VEXTERNC void | Vpmg_dtor (Vpmg **thee) |
Object destructor. More... | |
VEXTERNC void | Vpmg_dtor2 (Vpmg *thee) |
FORTRAN stub object destructor. More... | |
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. More... | |
VEXTERNC int | Vpmg_solve (Vpmg *thee) |
Solve the PBE using PMG. More... | |
VEXTERNC int | Vpmg_solveLaplace (Vpmg *thee) |
Solve Poisson's equation with a homogeneous Laplacian operator using the solvent dielectric constant. This solution is performed by a sine wave decomposition. More... | |
VEXTERNC double | Vpmg_energy (Vpmg *thee, int extFlag) |
Get the total electrostatic energy. More... | |
VEXTERNC double | Vpmg_qfEnergy (Vpmg *thee, int extFlag) |
Get the "fixed charge" contribution to the electrostatic energy. More... | |
VEXTERNC double | Vpmg_qfAtomEnergy (Vpmg *thee, Vatom *atom) |
Get the per-atom "fixed charge" contribution to the electrostatic energy. More... | |
VEXTERNC double | Vpmg_qmEnergy (Vpmg *thee, int extFlag) |
Get the "mobile charge" contribution to the electrostatic energy. More... | |
VEXTERNC double | Vpmg_dielEnergy (Vpmg *thee, int extFlag) |
Get the "polarization" contribution to the electrostatic energy. More... | |
VEXTERNC double | Vpmg_dielGradNorm (Vpmg *thee) |
Get the integral of the gradient of the dielectric function. More... | |
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. More... | |
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. More... | |
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. More... | |
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. More... | |
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 the problem domain. More... | |
VEXTERNC void | Vpmg_unsetPart (Vpmg *thee) |
Remove partition restrictions. More... | |
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. More... | |
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-spline. More... | |
VEXTERNC double | Vpmg_qfPermanentMultipoleEnergy (Vpmg *thee, int atomID) |
Computes the permanent multipole electrostatic hydration energy (the polarization component of the hydration energy currently computed in TINKER). More... | |
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. More... | |
VEXTERNC void | Vpmg_ibPermanentMultipoleForce (Vpmg *thee, int atomID, double force[3]) |
Compute the ionic boundary force for permanent multipoles. More... | |
VEXTERNC void | Vpmg_dbPermanentMultipoleForce (Vpmg *thee, int atomID, double force[3]) |
Compute the dielectric boundary force for permanent multipoles. More... | |
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 by the sum of the permanent intramolecular field and the permanent reaction field. More... | |
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 5th Order B-Splines. Keep in mind that the "non-local" induced dipooles are just a mathematical quantity that result from differentiation of the AMOEBA polarization energy. More... | |
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, which are induced by the sum of the permanent intramolecular field and the permanent reaction field. More... | |
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 based on 5th order Keep in mind that the "non-local" induced dipooles are just a mathematical quantity that result from differentiation of the AMOEBA polarization energy. More... | |
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, which are induced by the sum of the permanent intramolecular field and the permanent reaction field. More... | |
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 dipoles. Keep in mind that the "non-local" induced dipooles are just a mathematical quantity that result from differentiation of the AMOEBA polarization energy. More... | |
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 self-consistent convergence of the solute induced dipoles and reaction field. More... | |
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. This force arises due to self-consistent convergence of the solute induced dipoles and reaction field. More... | |
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. This force arises due to self-consistent convergence of the solute induced dipoles and reaction field. More... | |
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. More... | |
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. More... | |
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. More... | |
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. More... | |
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. More... | |
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. More... | |
VEXTERNC void | Vpackmg (int *iparm, double *rparm, size_t *nrwk, int *niwk, int *nx, int *ny, int *nz, int *nlev, int *nu1, int *nu2, int *mgkey, int *itmax, int *istop, int *ipcon, int *nonlin, int *mgsmoo, int *mgprol, int *mgcoar, int *mgsolv, int *mgdisc, int *iinfo, double *errtol, int *ipkey, double *omegal, double *omegan, int *irite, int *iperf) |
Print out a column-compressed sparse matrix in Harwell-Boeing format. More... | |
A wrapper for Mike Holst's PMG multigrid code.
VPRIVATE void bcolcomp | ( | int * | iparm, |
double * | rparm, | ||
int * | iwork, | ||
double * | rwork, | ||
double * | values, | ||
int * | rowind, | ||
int * | colptr, | ||
int * | flag | ||
) |
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 | ||
) |
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 | ||
) |
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 | ||
) |
VPRIVATE void pcolcomp | ( | int * | nrow, |
int * | ncol, | ||
int * | nnzero, | ||
double * | values, | ||
int * | rowind, | ||
int * | colptr, | ||
char * | path, | ||
char * | title, | ||
char * | mxtype | ||
) |
VEXTERNC void Vpackmg | ( | int * | iparm, |
double * | rparm, | ||
size_t * | nrwk, | ||
int * | niwk, | ||
int * | nx, | ||
int * | ny, | ||
int * | nz, | ||
int * | nlev, | ||
int * | nu1, | ||
int * | nu2, | ||
int * | mgkey, | ||
int * | itmax, | ||
int * | istop, | ||
int * | ipcon, | ||
int * | nonlin, | ||
int * | mgsmoo, | ||
int * | mgprol, | ||
int * | mgcoar, | ||
int * | mgsolv, | ||
int * | mgdisc, | ||
int * | iinfo, | ||
double * | errtol, | ||
int * | ipkey, | ||
double * | omegal, | ||
double * | omegan, | ||
int * | irite, | ||
int * | iperf | ||
) |
VEXTERNC Vpmg* Vpmg_ctor | ( | Vpmgp * | parms, |
Vpbe * | pbe, | ||
int | focusFlag, | ||
Vpmg * | pmgOLD, | ||
MGparm * | mgparm, | ||
PBEparm_calcEnergy | energyFlag | ||
) |
Constructor for the Vpmg class (allocates new memory)
parms | PMG parameter object |
pbe | PBE-specific variables |
focusFlag | 1 for focusing, 0 otherwise |
pmgOLD | Old Vpmg object to use for boundary conditions |
mgparm | MGparm parameter object for boundary conditions |
energyFlag | What types of energies to calculate |
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)
thee | Memory location for object |
parms | PMG parameter object |
pbe | PBE-specific variables |
focusFlag | 1 for focusing, 0 otherwise |
pmgOLD | Old Vpmg object to use for boundary conditions (can be VNULL if focusFlag = 0) |
mgparm | MGparm parameter object for boundary conditions (can be VNULL if focusFlag = 0) |
energyFlag | What types of energies to calculate (ignored if focusFlag = 0) |
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, which are induced by the sum of the permanent intramolecular field and the permanent reaction field.
thee | Vpmg object |
perm | Permanent multipole potential |
induced | Induced dipole potential |
atomID | Atom index |
force | (returned) force |
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.
thee | Vpmg object |
dbForce | 3*sizeof(double) space to hold the dielectric boundary force in units of k_B T/AA |
atomID | Valist ID of desired atom |
srfm | Surface discretization method |
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. This force arises due to self-consistent convergence of the solute induced dipoles and reaction field.
thee | Vpmg object |
induced | Induced dipole potential |
nlInduced | Non-local induced dipole potential |
atomID | Atom index |
force | (returned) force |
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 dipoles. Keep in mind that the "non-local" induced dipooles are just a mathematical quantity that result from differentiation of the AMOEBA polarization energy.
thee | Vpmg object |
perm | Permanent multipole potential |
nlInduced | Non-local induced dipole potential |
atomID | Atom index |
force | (returned) force |
VEXTERNC void Vpmg_dbPermanentMultipoleForce | ( | Vpmg * | thee, |
int | atomID, | ||
double | force[3] | ||
) |
Compute the dielectric boundary force for permanent multipoles.
thee | Vpmg object |
atomID | Atom index |
force | (returned) force |
VEXTERNC double Vpmg_dielEnergy | ( | Vpmg * | thee, |
int | extFlag | ||
) |
Get the "polarization" contribution to the electrostatic energy.
Using the solution at the finest mesh level, get the electrostatic energy due to the interaction of the mobile charges with the potential: \f[ G = \frac{1}{2} \int \epsilon (\nabla u)^2 dx \f] where epsilon is the dielectric parameter and u(x) is the dimensionless electrostatic potential. The energy is scaled to units of k_b T.
thee | Vpmg object |
extFlag | If this was a focused calculation, include (1 – for serial calculations) or ignore (0 – for parallel calculations) energy contributions from outside the focusing domain |
VEXTERNC double Vpmg_dielGradNorm | ( | Vpmg * | thee | ) |
Get the integral of the gradient of the dielectric function.
Using the dielectric map at the finest mesh level, calculate the integral of the norm of the dielectric function gradient routines of Im et al (see Vpmg_dbForce for reference): \f[ \int \| \nabla \epsilon \| dx \f] where epsilon is the dielectric parameter. The integral is returned in units of A^2.
thee | Vpmg object |
VEXTERNC void Vpmg_dtor | ( | Vpmg ** | thee | ) |
VEXTERNC void Vpmg_dtor2 | ( | Vpmg * | thee | ) |
VEXTERNC double Vpmg_energy | ( | Vpmg * | thee, |
int | extFlag | ||
) |
Get the total electrostatic energy.
thee | Vpmg object |
extFlag | If this was a focused calculation, include (1 – for serial calculations) or ignore (0 – for parallel calculations) energy contributions from outside the focusing domain |
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-spline.
thee | Vpmg object |
atomID | Atom index |
field | The (returned) electric field |
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.
thee | Vpmg object |
vec | A nx*ny*nz*sizeof(double) array to contain the values to be written |
type | What to write |
parm | Parameter for data type definition (if needed) |
pbetype | Parameter for PBE type (if needed) |
pbeparm | Pass in the PBE parameters (if needed) |
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.
thee | Vpmg object |
surfMeth | Surface discretization method |
splineWin | Spline window (in A) for surfMeth = VSM_SPLINE |
chargeMeth | Charge discretization method |
useDielXMap | Boolean to use dielectric map argument |
dielXMap | External dielectric map |
useDielYMap | Boolean to use dielectric map argument |
dielYMap | External dielectric map |
useDielZMap | Boolean to use dielectric map argument |
dielZMap | External dielectric map |
useKappaMap | Boolean to use kappa map argument |
kappaMap | External kappa map |
usePotMap | Boolean to use potential map argument |
potMap | External potential map |
useChargeMap | Boolean to use charge map argument |
chargeMap | External charge map |
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.
thee | Vpmg object |
force | 3*sizeof(double) space to hold the force in units of k_B T/AA |
atomID | Valist ID of desired atom |
srfm | Surface discretization method |
chgm | Charge discretization method |
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, which are induced by the sum of the permanent intramolecular field and the permanent reaction field.
thee | Vpmg object |
perm | Permanent multipole potential |
induced | Induced dipole potential |
atomID | Atom index |
force | (returned) force |
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.
thee | Vpmg object |
force | 3*sizeof(double) space to hold the boundary force in units of k_B T/AA |
atomID | Valist ID of desired atom |
srfm | Surface discretization method |
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. This force arises due to self-consistent convergence of the solute induced dipoles and reaction field.
thee | Vpmg object |
induced | Induced dipole potential |
nlInduced | Non-local induced dipole potential |
atomID | Atom index |
force | (returned) force |
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 based on 5th order Keep in mind that the "non-local" induced dipooles are just a mathematical quantity that result from differentiation of the AMOEBA polarization energy.
thee | Vpmg object |
perm | Permanent multipole potential |
nlInduced | Induced dipole potential |
atomID | Atom index |
force | (returned) force |
VEXTERNC void Vpmg_ibPermanentMultipoleForce | ( | Vpmg * | thee, |
int | atomID, | ||
double | force[3] | ||
) |
Compute the ionic boundary force for permanent multipoles.
thee | Vpmg object |
atomID | Atom index |
force | (returned) force |
VEXTERNC unsigned long int Vpmg_memChk | ( | Vpmg * | thee | ) |
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.
thee | Vpmg object |
path | The file to which the matrix is to be written |
title | The title of the matrix |
mxtype | The type of REAL-valued matrix, a 3-character string of the form "R_A" where the '_' can be one of:
|
flag | The operator to compress:
|
Get the per-atom "fixed charge" contribution to the electrostatic energy.
Using the solution at the finest mesh level, get the electrostatic energy due to the interaction of the fixed charges with the potential:
where q$ is the charge and r is the location of the atom of interest. The result is returned in units of k_B T. Clearly, no self-interaction terms are removed. A factor a 1/2 has to be included to convert this to a real energy.
thee | The Vpmg object |
atom | The atom for energy calculations |
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 by the sum of the permanent intramolecular field and the permanent reaction field.
thee | Vpmg object |
perm | Permanent multipole potential |
induced | Induced dipole potential |
atomID | Atom index |
force | (returned) force |
torque | (returned) torque |
VEXTERNC double Vpmg_qfEnergy | ( | Vpmg * | thee, |
int | extFlag | ||
) |
Get the "fixed charge" contribution to the electrostatic energy.
Using the solution at the finest mesh level, get the electrostatic energy due to the interaction of the fixed charges with the potential: \f[ G = \sum_i q_i u(r_i) \f] and return the result in units of k_B T. Clearly, no self-interaction terms are removed. A factor a 1/2 has to be included to convert this to a real energy.
thee | Vpmg object |
extFlag | If this was a focused calculation, include (1 – for serial calculations) or ignore (0 – for parallel calculations) energy contributions from outside the focusing domain |
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.
thee | Vpmg object |
force | 3*sizeof(double) space to hold the force in units of k_B T/A |
atomID | Valist ID of desired atom |
chgm | Charge discretization method |
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 self-consistent convergence of the solute induced dipoles and reaction field.
thee | Vpmg object |
induced | Induced dipole potential |
nlInduced | Non-local induced dipole potential |
atomID | Atom index |
force | (returned) force |
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 5th Order B-Splines. Keep in mind that the "non-local" induced dipooles are just a mathematical quantity that result from differentiation of the AMOEBA polarization energy.
thee | Vpmg object |
perm | Permanent multipole potential |
nlInduced | Non-local induced dipole potential |
atomID | Atom index |
force | (returned) force |
torque | (returned) torque |
VEXTERNC double Vpmg_qfPermanentMultipoleEnergy | ( | Vpmg * | thee, |
int | atomID | ||
) |
Computes the permanent multipole electrostatic hydration energy (the polarization component of the hydration energy currently computed in TINKER).
thee | Vpmg object |
atomID | Atom index |
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.
thee | Vpmg object |
atomID | Atom index |
force | (returned) force |
torque | (returned) torque |
VEXTERNC double Vpmg_qmEnergy | ( | Vpmg * | thee, |
int | extFlag | ||
) |
Get the "mobile charge" contribution to the electrostatic energy.
Using the solution at the finest mesh level, get the electrostatic energy due to the interaction of the mobile charges with the potential: \f[ G = \frac{1}{4 I_s} \sum_i c_i q_i^2 \int \kappa^2(x) e^{-q_i u(x)} dx \f] for the NPBE and \f[ G = \frac{1}{2} \int \overline{\kappa}^2(x) u^2(x) dx \f] for the LPBE. Here i denotes the counterion species, I_s is the bulk ionic strength, kappa^2(x) is the modified Debye-Huckel parameter, c_i is the concentration of species i, q_i is the charge of species i, and u(x) is the dimensionless electrostatic potential. The energy is scaled to units of k_b T.
thee | Vpmg object |
extFlag | If this was a focused calculation, include (1 – for serial calculations) or ignore (0 – for parallel calculations) energy contributions from outside the focusing domain |
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 the problem domain.
thee | Vpmg object |
lowerCorner | Partition lower corner |
upperCorner | Partition upper corner |
bflags | Booleans indicating whether a particular processor is on the boundary with another partition. 0 if the face is not bounded (next to) another partition, and 1 otherwise. |
VEXTERNC int Vpmg_solve | ( | Vpmg * | thee | ) |
VEXTERNC int Vpmg_solveLaplace | ( | Vpmg * | thee | ) |
Solve Poisson's equation with a homogeneous Laplacian operator using the solvent dielectric constant. This solution is performed by a sine wave decomposition.
thee | Vpmg object |