A wrapper for Mike Holst's PMG multigrid code. More...
Data Structures | |
struct | sVpmg |
Contains public data members for Vpmg class/module. More... | |
Files | |
file | vpmg.h |
Contains declarations for class Vpmg. | |
file | vpmg-private.h |
Class Vpmg private method declaration. | |
file | vpmg.c |
Class Vpmg methods. | |
Typedefs | |
typedef struct sVpmg | Vpmg |
Declaration of the Vpmg class as the Vpmg structure. | |
Functions | |
unsigned long int | Vpmg_memChk (Vpmg *thee) |
Return the memory used by this structure (and its contents) in bytes. | |
Vpmg * | Vpmg_ctor (Vpmgp *parms, Vpbe *pbe, int focusFlag, Vpmg *pmgOLD, MGparm *mgparm, PBEparm_calcEnergy energyFlag) |
Constructor for the Vpmg class (allocates new memory). | |
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). | |
void | Vpmg_dtor (Vpmg **thee) |
Object destructor. | |
void | Vpmg_dtor2 (Vpmg *thee) |
FORTRAN stub object destructor. | |
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 useChargeMap, Vgrid *chargeMap) |
Fill the coefficient arrays prior to solving the equation. | |
int | Vpmg_solve (Vpmg *thee) |
Solve the PBE using PMG. | |
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. | |
double | Vpmg_energy (Vpmg *thee, int extFlag) |
Get the total electrostatic energy. | |
double | Vpmg_qfEnergy (Vpmg *thee, int extFlag) |
Get the "fixed charge" contribution to the electrostatic energy. | |
double | Vpmg_qfAtomEnergy (Vpmg *thee, Vatom *atom) |
Get the per-atom "fixed charge" contribution to the electrostatic energy. | |
double | Vpmg_qmEnergy (Vpmg *thee, int extFlag) |
Get the "mobile charge" contribution to the electrostatic energy. | |
double | Vpmg_dielEnergy (Vpmg *thee, int extFlag) |
Get the "polarization" contribution to the electrostatic energy. | |
double | Vpmg_dielGradNorm (Vpmg *thee) |
Get the integral of the gradient of the dielectric function. | |
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. | |
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. | |
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. | |
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. | |
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. | |
void | Vpmg_unsetPart (Vpmg *thee) |
Remove partition restrictions. | |
int | Vpmg_fillArray (Vpmg *thee, double *vec, Vdata_Type type, double parm, Vhal_PBEType pbetype) |
Fill the specified array with accessibility values. | |
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. | |
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). | |
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. | |
void | Vpmg_ibPermanentMultipoleForce (Vpmg *thee, int atomID, double force[3]) |
Compute the ionic boundary force for permanent multipoles. | |
void | Vpmg_dbPermanentMultipoleForce (Vpmg *thee, int atomID, double force[3]) |
Compute the dielectric boundary force for permanent multipoles. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. |
A wrapper for Mike Holst's PMG multigrid code.
Vpmg* Vpmg_ctor | ( | Vpmgp * | parms, | |
Vpbe * | pbe, | |||
int | focusFlag, | |||
Vpmg * | pmgOLD, | |||
MGparm * | mgparm, | |||
PBEparm_calcEnergy | energyFlag | |||
) |
Constructor for the Vpmg class (allocates new memory).
pbe | PMG parameter object | |
focusFlag | PBE-specific variables | |
pmgOLD | 1 for focusing, 0 otherwise | |
mgparm | Old Vpmg object to use for boundary conditions | |
energyFlag | MGparm parameter object for boundary conditions What types of energies to calculate |
References Vpmg_ctor2().
Referenced by initMG().
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).
parms | Memory location for object | |
pbe | PMG parameter object | |
focusFlag | PBE-specific variables | |
pmgOLD | 1 for focusing, 0 otherwise | |
mgparm | Old Vpmg object to use for boundary conditions (can be VNULL if focusFlag = 0) | |
energyFlag | MGparm parameter object for boundary conditions (can be VNULL if focusFlag = 0) What types of energies to calculate (ignored if focusFlag = 0) |
References sVpmg::a1cf, sVpmg::a2cf, sVpmg::a3cf, sVpmgp::bcfl, BCFL_FOCUS, sVpmg::ccf, sMGparm::center, sVpmg::charge, sVpmg::chargeSrc, sMGparm::chgs, sVpmg::epsx, sVpmg::epsy, sVpmg::epsz, sVpmgp::errtol, sVpmg::extDiEnergy, extEnergy(), sVpmg::extQfEnergy, sVpmg::extQmEnergy, sVpmg::fcf, sVpmg::filled, focusFillBound(), sMGparm::glen, sVpmg::gxcf, sVpmg::gycf, sVpmg::gzcf, sVpmgp::iinfo, sVpmg::iparm, sVpmgp::ipcon, sVpmgp::iperf, sVpmgp::ipkey, IPKEY_LPBE, IPKEY_NPBE, IPKEY_SMPBE, sVpmgp::irite, sVpmgp::istop, sVpmgp::itmax, sVpmg::iwork, sVpmg::kappa, MAXION, MCT_PARALLEL, sVpmgp::meth, sVpmgp::mgcoar, sVpmgp::mgdisc, sVpmgp::mgkey, sVpmgp::mgprol, sVpmgp::mgsmoo, sVpmgp::mgsolv, sVpmgp::n_ipc, sVpmgp::n_iz, sVpmgp::n_rpc, sVpmgp::narr, sVpmgp::narrc, sVpmgp::nc, sVpmgp::nf, sVpmgp::niwk, sVpmgp::nlev, sVpmgp::nonlin, sVpmgp::nrwk, sVpmgp::nu1, sVpmgp::nu2, sVpmgp::nx, sVpmgp::nxc, sVpmgp::ny, sVpmgp::nyc, sVpmgp::nz, sVpmgp::nzc, sVpmgp::omegal, sVpmgp::omegan, sMGparm::partDisjCenter, sMGparm::partDisjLength, sMGparm::partDisjOwnSide, sVpmg::pbe, PCE_NO, sVpmg::pmgp, sVpmg::pvec, sVpmg::rparm, sVpmg::rwork, sVpbe::smsize, sVpbe::smvolume, sVpmg::tcf, sMGparm::type, sVpmg::u, sMGparm::useAqua, sVpmg::vmem, Vpbe_getBulkIonicStrength(), Vpbe_getIons(), Vpbe_getZkappa2(), Vpmg_dtor(), Vpmg_unsetPart(), sVpmg::xf, sVpmg::yf, and sVpmg::zf.
Referenced by Vpmg_ctor().
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.
perm | Vpmg object | |
induced | Permanent multipole potential | |
atomID | Induced dipole potential | |
force | Atom index (returned) force |
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.
dbForce | Vpmg object | |
atomID | 3*sizeof(double) space to hold the dielectric boundary force in units of k_B T/AA | |
srfm | Valist ID of desired atom Surface discretization method |
References sVpbe::acc, sVpbe::alist, sVpmgp::bcfl, BCFL_FOCUS, sVpmg::epsx, sVpmg::epsy, sVpmg::epsz, sVpmg::filled, sVpmgp::hx, sVpmgp::hy, sVpmgp::hzed, sVpmgp::nx, sVpmgp::ny, sVpmgp::nz, sVatom::partID, sVpmg::pbe, sVpmg::pmgp, sVpmg::splineWin, sVpmg::u, Valist_getAtom(), Vatom_getPosition(), Vatom_getRadius(), Vpbe_getSoluteDiel(), Vpbe_getSolventDiel(), Vpbe_getSolventRadius(), Vpbe_getTemperature(), Vpbe_getZmagic(), Vpmg_splineSelect(), VPMGSMALL, VSM_SPLINE, VSM_SPLINE3, VSM_SPLINE4, Vunit_kb, Vunit_Na, sVpmgp::xlen, sVpmgp::xmax, sVpmgp::xmin, sVpmgp::ylen, sVpmgp::ymax, sVpmgp::ymin, sVpmgp::zlen, sVpmgp::zmax, and sVpmgp::zmin.
Referenced by forceMG(), and Vpmg_force().
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.
induced | Vpmg object | |
nlInduced | Induced dipole potential | |
atomID | Non-local induced dipole potential | |
force | Atom index (returned) force |
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.
perm | Vpmg object | |
nlInduced | Permanent multipole potential | |
atomID | Non-local induced dipole potential | |
force | Atom index (returned) force |
void Vpmg_dbPermanentMultipoleForce | ( | Vpmg * | thee, | |
int | atomID, | |||
double | force[3] | |||
) |
Compute the dielectric boundary force for permanent multipoles.
atomID | Vpmg object | |
force | Atom index (returned) force |
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:
where epsilon is the dielectric parameter and u(x) is the dimensionless electrostatic potential. The energy is scaled to units of k_b T.
extFlag | Vpmg object If this was a focused calculation, include (1 -- for serial calculations) or ignore (0 -- for parallel calculations) energy contributions from outside the focusing domain |
References sVpmg::epsx, sVpmg::epsy, sVpmg::epsz, sVpmg::extDiEnergy, sVpmg::filled, sVpmgp::hx, sVpmgp::hy, sVpmgp::hzed, sVpmgp::nx, sVpmgp::ny, sVpmgp::nz, sVpmg::pbe, sVpmg::pmgp, sVpmg::pvec, sVpmg::u, and Vpbe_getZmagic().
Referenced by energyMG(), extEnergy(), and Vpmg_energy().
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):
where epsilon is the dielectric parameter. The integral is returned in units of A^2.
thee | Vpmg object |
References sVpmg::epsx, sVpmg::epsy, sVpmg::epsz, sVpmg::filled, sVpmgp::hx, sVpmgp::hy, sVpmgp::hzed, sVpmgp::nx, sVpmgp::ny, sVpmgp::nz, sVpmg::pmgp, and sVpmg::pvec.
void Vpmg_dtor | ( | Vpmg ** | thee | ) |
Object destructor.
thee | Pointer to memory location of object to be destroyed |
References Vpmg_dtor2().
Referenced by initMG(), killMG(), and Vpmg_ctor2().
void Vpmg_dtor2 | ( | Vpmg * | thee | ) |
FORTRAN stub object destructor.
thee | Pointer to object to be destroyed |
References sVpmg::a1cf, sVpmg::a2cf, sVpmg::a3cf, sVpmg::ccf, sVpmg::charge, sVpmg::epsx, sVpmg::epsy, sVpmg::epsz, sVpmg::fcf, sVpmg::gxcf, sVpmg::gycf, sVpmg::gzcf, sVpmg::iparm, sVpmg::iwork, sVpmg::kappa, sVpmgp::narr, sVpmgp::niwk, sVpmgp::nrwk, sVpmgp::nx, sVpmgp::ny, sVpmgp::nz, sVpmg::pmgp, sVpmg::pvec, sVpmg::rparm, sVpmg::rwork, sVpmg::tcf, sVpmg::u, sVpmg::vmem, sVpmg::xf, sVpmg::yf, and sVpmg::zf.
Referenced by Vpmg_dtor().
double Vpmg_energy | ( | Vpmg * | thee, | |
int | extFlag | |||
) |
Get the total electrostatic energy.
extFlag | Vpmg object If this was a focused calculation, include (1 -- for serial calculations) or ignore (0 -- for parallel calculations) energy contributions from outside the focusing domain |
References sVpmgp::nonlin, sVpmg::pbe, sVpmg::pmgp, Vpbe_getBulkIonicStrength(), Vpmg_dielEnergy(), Vpmg_qfEnergy(), and Vpmg_qmEnergy().
Referenced by energyMG().
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.
atomID | Vpmg object | |
field | Atom index The (returned) electric field |
int Vpmg_fillArray | ( | Vpmg * | thee, | |
double * | vec, | |||
Vdata_Type | type, | |||
double | parm, | |||
Vhal_PBEType | pbetype | |||
) |
Fill the specified array with accessibility values.
vec | Vpmg object | |
type | A nx*ny*nz*sizeof(double) array to contain the values to be written | |
parm | What to write | |
pbetype | Parameter for data type definition (if needed) Parameter for PBE type (if needed) |
References sVpmg::charge, sVpmg::epsx, sVpmg::epsy, sVpmg::epsz, sVpmg::filled, sVpmgp::hx, sVpmgp::hy, sVpmgp::hzed, sVpbe::ionConc, sVpbe::ionQ, sVpmg::kappa, sVpbe::maxIonRadius, sVpbe::numIon, sVpmgp::nx, sVpmgp::ny, sVpmgp::nz, sVpmg::pbe, PBE_LPBE, PBE_NPBE, PBE_SMPBE, sVpmg::pmgp, sVpbe::solventRadius, sVpmg::u, Vacc_ivdwAcc(), Vacc_molAcc(), Vacc_splineAcc(), Vacc_vdwAcc(), Vcap_exp(), VDT_CHARGE, VDT_DIELX, VDT_DIELY, VDT_DIELZ, VDT_EDENS, VDT_IVDW, VDT_KAPPA, VDT_LAP, VDT_NDENS, VDT_POT, VDT_QDENS, VDT_SMOL, VDT_SSPL, VDT_VDW, Vgrid_ctor(), Vgrid_curvature(), Vgrid_dtor(), Vgrid_gradient(), Vpbe_getSoluteDiel(), Vpbe_getSolventDiel(), Vpbe_getVacc(), Vpbe_getZmagic(), sVpmgp::xmin, sVpmgp::ymin, and sVpmgp::zmin.
Referenced by writedataMG().
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 | useChargeMap, | |||
Vgrid * | chargeMap | |||
) |
Fill the coefficient arrays prior to solving the equation.
surfMeth | Vpmg object | |
splineWin | Surface discretization method | |
chargeMeth | Spline window (in A) for surfMeth = VSM_SPLINE | |
useDielXMap | Charge discretization method | |
dielXMap | Boolean to use dielectric map argument | |
useDielYMap | External dielectric map | |
dielYMap | Boolean to use dielectric map argument | |
useDielZMap | External dielectric map | |
dielZMap | Boolean to use dielectric map argument | |
useKappaMap | External dielectric map | |
kappaMap | Boolean to use kappa map argument | |
useChargeMap | External kappa map | |
chargeMap | Boolean to use charge map argument External charge map |
References bcCalc(), sVpmgp::bcfl, BCFL_FOCUS, sVpmg::chargeMap, sVpmg::chargeMeth, sVpmg::dielXMap, sVpmg::dielYMap, sVpmg::dielZMap, sVpmg::epsx, sVpmg::epsy, sVpmg::epsz, fillcoCharge(), fillcoCoef(), sVpmg::filled, sVpmgp::hx, sVpmgp::hy, sVpmgp::hzed, sVpmg::kappa, sVpmg::kappaMap, sVpmgp::nx, sVpmgp::ny, sVpmgp::nz, sVpmg::pbe, sVpmg::pmgp, sVpmg::rparm, sVpmg::splineWin, sVpmg::surfMeth, sVpmg::tcf, sVpmg::useChargeMap, sVpmg::useDielXMap, sVpmg::useDielYMap, sVpmg::useDielZMap, sVpmg::useKappaMap, Vpbe_getBulkIonicStrength(), Vpbe_getSoluteDiel(), Vpbe_getSolventDiel(), VPMGSMALL, VRC_FAILURE, VRC_SUCCESS, sVpmgp::xcent, sVpmg::xf, sVpmgp::xlen, sVpmgp::xmax, sVpmgp::xmin, sVpmgp::ycent, sVpmg::yf, sVpmgp::ylen, sVpmgp::ymax, sVpmgp::ymin, sVpmgp::zcent, sVpmg::zf, sVpmgp::zlen, sVpmgp::zmax, and sVpmgp::zmin.
Referenced by initMG().
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.
force | Vpmg object | |
atomID | 3*sizeof(double) space to hold the force in units of k_B T/AA | |
srfm | Valist ID of desired atom | |
chgm | Surface discretization method Charge discretization method |
References Vpmg_dbForce(), Vpmg_ibForce(), and Vpmg_qfForce().
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.
perm | Vpmg object | |
induced | Permanent multipole potential | |
atomID | Induced dipole potential | |
force | Atom index (returned) force |
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.
force | Vpmg object | |
atomID | 3*sizeof(double) space to hold the boundary force in units of k_B T/AA | |
srfm | Valist ID of desired atom Surface discretization method |
References sVpbe::acc, sVpbe::alist, sVpmgp::bcfl, BCFL_FOCUS, sVpmgp::hx, sVpmgp::hy, sVpmgp::hzed, sVpmg::kappa, MAXION, sVpmgp::nonlin, sVpmgp::nx, sVpmgp::ny, sVpmgp::nz, sVatom::partID, sVpmg::pbe, sVpmg::pmgp, sVpmg::splineWin, sVpmg::u, Valist_getAtom(), Vatom_getPosition(), Vatom_getRadius(), Vcap_exp(), Vpbe_getBulkIonicStrength(), Vpbe_getIons(), Vpbe_getMaxIonRadius(), Vpbe_getZkappa2(), Vpbe_getZmagic(), Vpmg_splineSelect(), VPMGSMALL, VSM_SPLINE, VSM_SPLINE3, VSM_SPLINE4, sVpmgp::xlen, sVpmgp::xmax, sVpmgp::xmin, sVpmgp::ylen, sVpmgp::ymax, sVpmgp::ymin, sVpmgp::zlen, sVpmgp::zmax, and sVpmgp::zmin.
Referenced by forceMG(), and Vpmg_force().
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.
induced | Vpmg object | |
nlInduced | Induced dipole potential | |
atomID | Non-local induced dipole potential | |
force | Atom index (returned) force |
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.
perm | Vpmg object | |
nlInduced | Permanent multipole potential | |
atomID | Induced dipole potential | |
force | Atom index (returned) force |
void Vpmg_ibPermanentMultipoleForce | ( | Vpmg * | thee, | |
int | atomID, | |||
double | force[3] | |||
) |
Compute the ionic boundary force for permanent multipoles.
atomID | Vpmg object | |
force | Atom index (returned) force |
unsigned long int Vpmg_memChk | ( | Vpmg * | thee | ) |
Return the memory used by this structure (and its contents) in bytes.
thee | Object for memory check |
References sVpmg::vmem.
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.
path | Vpmg object | |
title | The file to which the matrix is to be written | |
mxtype | The title of the matrix | |
flag | The type of REAL-valued matrix, a 3-character string of the form "R_A" where the '_' can be one of:
|
References sVpmg::iparm, sVpmg::iwork, sVpmgp::nx, sVpmgp::ny, sVpmgp::nz, sVpmg::pmgp, sVpmg::rparm, sVpmg::rwork, and sVpmg::vmem.
Referenced by writematMG().
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.
atom | The Vpmg object The atom for energy calculations |
References sVpmgp::bcfl, BCFL_FOCUS, sVpmgp::hx, sVpmgp::hy, sVpmgp::hzed, sVpmgp::nx, sVpmgp::ny, sVpmgp::nz, sVatom::partID, sVpmg::pmgp, sVpmg::u, Vatom_getCharge(), Vatom_getPosition(), sVpmg::xf, sVpmg::yf, and sVpmg::zf.
Referenced by energyMG(), and storeAtomEnergy().
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.
perm | Vpmg object | |
induced | Permanent multipole potential | |
atomID | Induced dipole potential | |
force | Atom index | |
torque | (returned) force (returned) torque |
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:
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.
extFlag | Vpmg object If this was a focused calculation, include (1 -- for serial calculations) or ignore (0 -- for parallel calculations) energy contributions from outside the focusing domain |
References sVpmg::chargeMeth, sVpmg::useChargeMap, VCM_BSPL2, Vpmg_qfEnergyPoint(), and Vpmg_qfEnergyVolume().
Referenced by energyMG(), extEnergy(), and Vpmg_energy().
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.
force | Vpmg object | |
atomID | 3*sizeof(double) space to hold the force in units of k_B T/A | |
chgm | Valist ID of desired atom Charge discretization method |
References qfForceSpline1(), qfForceSpline2(), qfForceSpline4(), VCM_BSPL2, VCM_BSPL4, and VCM_TRIL.
Referenced by forceMG(), and Vpmg_force().
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.
induced | Vpmg object | |
nlInduced | Induced dipole potential | |
atomID | Non-local induced dipole potential | |
force | Atom index (returned) force |
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.
perm | Vpmg object | |
nlInduced | Permanent multipole potential | |
atomID | Non-local induced dipole potential | |
force | Atom index | |
torque | (returned) force (returned) torque |
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).
atomID | Vpmg object Atom index |
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.
atomID | Vpmg object | |
force | Atom index | |
torque | (returned) force (returned) torque |
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:
for the NPBE and
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.
extFlag | Vpmg object If this was a focused calculation, include (1 -- for serial calculations) or ignore (0 -- for parallel calculations) energy contributions from outside the focusing domain |
References sVpbe::ipkey, IPKEY_SMPBE, sVpmg::pbe, and Vpmg_qmEnergySMPBE().
Referenced by energyMG(), extEnergy(), and Vpmg_energy().
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.
lowerCorner | Vpmg object | |
upperCorner | Partition lower corner | |
bflags | Partition upper corner 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. |
References sVpbe::alist, sVpmgp::hx, sVpmgp::hy, sVpmgp::hzed, sVpmgp::nx, sVpmgp::ny, sVpmgp::nz, sVatom::partID, sVpmg::pbe, sVpmg::pmgp, sVatom::position, sVpmg::pvec, Valist_getAtom(), Valist_getNumberAtoms(), VAPBS_BACK, VAPBS_DOWN, VAPBS_FRONT, VAPBS_LEFT, VAPBS_RIGHT, VAPBS_UP, VPMGSMALL, sVpmgp::xcent, sVpmgp::ycent, and sVpmgp::zcent.
Referenced by extEnergy(), and setPartMG().
int Vpmg_solve | ( | Vpmg * | thee | ) |
Solve the PBE using PMG.
thee | Vpmg object |
References sVpmg::a1cf, sVpmg::a2cf, sVpmg::a3cf, sVpmg::ccf, sVpmg::charge, sVpmg::epsx, sVpmg::epsy, sVpmg::epsz, sVpmg::fcf, sVpmg::filled, sVpmg::gxcf, sVpmg::gycf, sVpmg::gzcf, sVpmg::iparm, sVpmg::iwork, sVpmg::kappa, sVpmgp::key, sVpmgp::meth, sVpmgp::nx, sVpmgp::ny, sVpmgp::nz, sVpmg::pbe, sVpmg::pmgp, sVpmg::rparm, sVpmg::rwork, sVpmg::tcf, sVpmg::u, Vpbe_getZkappa2(), VPMGSMALL, sVpmg::xf, sVpmg::yf, and sVpmg::zf.
Referenced by solveMG().
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 |
References sVpmg::charge, sVpmg::fcf, sVpmg::filled, sVpmg::gxcf, sVpmg::gycf, sVpmg::gzcf, sVpmgp::hx, sVpmgp::hy, sVpmgp::hzed, sVpmgp::nx, sVpmgp::ny, sVpmgp::nz, sVpmg::pbe, sVpmg::pmgp, sVpmg::tcf, sVpmg::u, Vpbe_getSolventDiel(), and zlapSolve().
void Vpmg_unsetPart | ( | Vpmg * | thee | ) |
Remove partition restrictions.
thee | Vpmg object |
References sVpbe::alist, sVpmgp::nx, sVpmgp::ny, sVpmgp::nz, sVatom::partID, sVpmg::pbe, sVpmg::pmgp, sVpmg::pvec, Valist_getAtom(), and Valist_getNumberAtoms().
Referenced by extEnergy(), and Vpmg_ctor2().