vpmg.c File Reference

Class Vpmg methods. More...

#include "apbscfg.h"
#include "vpmg-private.h"
#include "apbs/vpmg.h"
#include "apbs/vhal.h"
Include dependency graph for vpmg.c:

Functions

VPUBLIC unsigned long int Vpmg_memChk (Vpmg *thee)
 Return the memory used by this structure (and its contents) in bytes.
VPUBLIC 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.
VPUBLIC VpmgVpmg_ctor (Vpmgp *pmgp, Vpbe *pbe, int focusFlag, Vpmg *pmgOLD, MGparm *mgparm, PBEparm_calcEnergy energyFlag)
 Constructor for the Vpmg class (allocates new memory).
VPUBLIC int Vpmg_ctor2 (Vpmg *thee, Vpmgp *pmgp, Vpbe *pbe, int focusFlag, Vpmg *pmgOLD, MGparm *mgparm, PBEparm_calcEnergy energyFlag)
 FORTRAN stub constructor for the Vpmg class (uses previously-allocated memory).
VPUBLIC int Vpmg_solve (Vpmg *thee)
 Solve the PBE using PMG.
VPUBLIC void Vpmg_dtor (Vpmg **thee)
 Object destructor.
VPUBLIC void Vpmg_dtor2 (Vpmg *thee)
 FORTRAN stub object destructor.
VPUBLIC 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.
VPUBLIC void Vpmg_unsetPart (Vpmg *thee)
 Remove partition restrictions.
VPUBLIC int Vpmg_fillArray (Vpmg *thee, double *vec, Vdata_Type type, double parm, Vhal_PBEType pbetype)
 Fill the specified array with accessibility values.
VPRIVATE double Vpmg_polarizEnergy (Vpmg *thee, int extFlag)
 Determines energy from polarizeable charge and interaction with fixed charges according to Rocchia et al.
VPUBLIC double Vpmg_energy (Vpmg *thee, int extFlag)
 Get the total electrostatic energy.
VPUBLIC double Vpmg_dielEnergy (Vpmg *thee, int extFlag)
 Get the "polarization" contribution to the electrostatic energy.
VPUBLIC double Vpmg_dielGradNorm (Vpmg *thee)
 Get the integral of the gradient of the dielectric function.
VPUBLIC double Vpmg_qmEnergy (Vpmg *thee, int extFlag)
 Get the "mobile charge" contribution to the electrostatic energy.
VPUBLIC double Vpmg_qmEnergySMPBE (Vpmg *thee, int extFlag)
 Vpmg_qmEnergy for SMPBE.
VPUBLIC double Vpmg_qfEnergy (Vpmg *thee, int extFlag)
 Get the "fixed charge" contribution to the electrostatic energy.
VPRIVATE double Vpmg_qfEnergyPoint (Vpmg *thee, int extFlag)
 Calculates charge-potential energy using summation over delta function positions (i.e. something like an Linf norm).
VPUBLIC double Vpmg_qfAtomEnergy (Vpmg *thee, Vatom *atom)
 Get the per-atom "fixed charge" contribution to the electrostatic energy.
VPRIVATE double Vpmg_qfEnergyVolume (Vpmg *thee, int extFlag)
 Calculates charge-potential energy as integral over a volume.
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.
VPRIVATE void focusFillBound (Vpmg *thee, Vpmg *pmgOLD)
 For focusing, fill in the boundaries of the new mesh based on the potential values in the old mesh.
VPRIVATE void extEnergy (Vpmg *thee, Vpmg *pmgOLD, PBEparm_calcEnergy extFlag, double partMin[3], double partMax[3], int bflags[6])
 For focusing, set external energy data members in new Vpmg object based on energy calculations on old Vpmg object from regions outside the indicated partition.
VPRIVATE double bcfl1sp (double size, double *apos, double charge, double xkappa, double pre1, double *pos)
 Calculate pre1*(charge/d)*(exp(-xkappa*(d-size))/(1+xkappa*size) due to a specific ion at a specific point.
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 effect of the Debye-Huckel potential due to a single charge.
VPRIVATE void bcfl2 (double size, double *apos, double charge, double *dipole, double *quad, double xkappa, double eps_p, double eps_w, double T, double *gxcf, double *gycf, double *gzcf, double *xf, double *yf, double *zf, int nx, int ny, int nz)
 Increment all boundary points to include the Debye-Huckel potential due to a single multipole site. (truncated at quadrupole).
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-Huckel potential tensor for a spherical ion with a central charge, dipole and quadrupole. See the code for an in depth description.
VPRIVATE void bcCalc (Vpmg *thee)
 Fill boundary condition arrays.
VPRIVATE void fillcoCoefMap (Vpmg *thee)
 Fill operator coefficient arrays from pre-calculated maps.
VPRIVATE void fillcoCoefMol (Vpmg *thee)
 Fill operator coefficient arrays from a molecular surface calculation.
VPRIVATE void fillcoCoefMolIon (Vpmg *thee)
 Fill ion (nonlinear) operator coefficient array from a molecular surface calculation.
VPRIVATE void fillcoCoefMolDiel (Vpmg *thee)
 Fill differential operator coefficient arrays from a molecular surface calculation.
VPRIVATE void fillcoCoefMolDielNoSmooth (Vpmg *thee)
 Fill differential operator coefficient arrays from a molecular surface calculation without smoothing.
VPRIVATE void fillcoCoefMolDielSmooth (Vpmg *thee)
 Fill differential operator coefficient arrays from a molecular surface calculation with smoothing.
VPRIVATE void fillcoCoefSpline (Vpmg *thee)
 Fill operator coefficient arrays from a spline-based surface calculation.
VPRIVATE void fillcoCoef (Vpmg *thee)
 Top-level driver to fill all operator coefficient arrays.
VPRIVATE Vrc_Codes fillcoCharge (Vpmg *thee)
 Top-level driver to fill source term charge array.
VPRIVATE Vrc_Codes fillcoChargeMap (Vpmg *thee)
 Fill source term charge array from a pre-calculated map.
VPRIVATE void fillcoChargeSpline1 (Vpmg *thee)
 Fill source term charge array from linear interpolation.
VPRIVATE double bspline2 (double x)
 Evaluate a cubic B-spline.
VPRIVATE double dbspline2 (double x)
 Evaluate a cubic B-spline derivative.
VPRIVATE void fillcoChargeSpline2 (Vpmg *thee)
 Fill source term charge array from cubic spline interpolation.
VPUBLIC 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.
VPUBLIC 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.
VPUBLIC 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.
VPUBLIC 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.
VPUBLIC 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.
VPRIVATE void qfForceSpline1 (Vpmg *thee, double *force, int atomID)
 Charge-field force due to a linear spline charge function.
VPRIVATE void qfForceSpline2 (Vpmg *thee, double *force, int atomID)
 Charge-field force due to a cubic spline charge function.
VPRIVATE void qfForceSpline4 (Vpmg *thee, double *force, int atomID)
 Charge-field force due to a quintic spline charge function.
VPRIVATE void markSphere (double rtot, double *tpos, int nx, int ny, int nz, double hx, double hy, double hz, 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 points inside the sphere to the specified value.
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 Dirichlet boundary conditions. Store the solution in thee->u.
VPUBLIC 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.
VPRIVATE double VFCHI4 (int i, double f)
 Return 2.5 plus difference of i - f.
VPRIVATE double bspline4 (double x)
 Evaluate a 5th Order B-Spline (4th order polynomial).
VPUBLIC double dbspline4 (double x)
 Evaluate a 5th Order B-Spline derivative (4th order polynomial).
VPUBLIC double d2bspline4 (double x)
 Evaluate the 2nd derivative of a 5th Order B-Spline.
VPUBLIC double d3bspline4 (double x)
 Evaluate the 3rd derivative of a 5th Order B-Spline.
VPUBLIC void fillcoPermanentMultipole (Vpmg *thee)
 Fill source term charge array for the use of permanent multipoles.
VPRIVATE void fillcoCoefSpline4 (Vpmg *thee)
 Fill operator coefficient arrays from a 7th order polynomial based surface calculation.
VPRIVATE void fillcoCoefSpline3 (Vpmg *thee)
 Fill operator coefficient arrays from a 5th order polynomial based surface calculation.

Detailed Description

Class Vpmg methods.

Author:
Nathan Baker
Version:
Id
vpmg.c 1538 2009-12-21 20:31:00Z yhuang01
Attention:
 *
 * APBS -- Adaptive Poisson-Boltzmann Solver
 *
 * Nathan A. Baker (baker@biochem.wustl.edu)
 * Dept. of Biochemistry and Molecular Biophysics
 * Center for Computational Biology
 * Washington University in St. Louis
 *
 * Additional contributing authors listed in the code documentation.
 *
 * Copyright (c) 2002-2009, Washington University in St. Louis.
 * Portions Copyright (c) 2002-2009.  Nathan A. Baker
 * Portions Copyright (c) 1999-2002.  The Regents of the University of California.
 * Portions Copyright (c) 1995.  Michael Holst
 *
 * All rights reserved.
 * 
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met: 
 *
 * -  Redistributions of source code must retain the above copyright notice, this
 * list of conditions and the following disclaimer.  
 * 
 * - Redistributions in binary form must reproduce the above copyright notice,
 * this list of conditions and the following disclaimer in the documentation
 * and/or other materials provided with the distribution.
 * 
 * - Neither the name of Washington University in St. Louis nor the names of its
 * contributors may be used to endorse or promote products derived from this
 * software without specific prior written permission.
 * 
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * 

Function Documentation

VPRIVATE void bcCalc ( Vpmg thee  ) 
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 effect of the Debye-Huckel potential due to a single charge.

Author:
Nathan Baker
Parameters:
apos Size of the ion
charge Position of the ion
xkappa Charge of the ion
pre1 Exponential screening factor
gxcf Unit- and dielectric-dependent prefactor
gycf Set to x-boundary values
gzcf Set to y-boundary values
xf Set to z-boundary values
yf Boundary point x-coordinates
zf Boundary point y-coordinates
nx Boundary point z-coordinates
ny Number of grid points in x-direction
nz Number of grid points in y-direction Number of grid points in y-direction
VPRIVATE double bcfl1sp ( double  size,
double *  apos,
double  charge,
double  xkappa,
double  pre1,
double *  pos 
)

Calculate pre1*(charge/d)*(exp(-xkappa*(d-size))/(1+xkappa*size) due to a specific ion at a specific point.

Author:
Nathan Baker
Returns:
Value of above function in arbitrary units (dependent on pre-factor)
Parameters:
apos Atom size
charge Atom position
xkappa Atom charge
pre1 Exponential screening factor
pos Unit- and dielectric-dependent prefactor Function evaluation position
VPRIVATE void bcfl2 ( double  size,
double *  apos,
double  charge,
double *  dipole,
double *  quad,
double  xkappa,
double  eps_p,
double  eps_w,
double  T,
double *  gxcf,
double *  gycf,
double *  gzcf,
double *  xf,
double *  yf,
double *  zf,
int  nx,
int  ny,
int  nz 
)

Increment all boundary points to include the Debye-Huckel potential due to a single multipole site. (truncated at quadrupole).

Author:
Michael Schnieders
Parameters:
apos Size of the ion
charge Position of the ion
dipole Charge of the ion
quad Dipole of the ion
xkappa Traceless Quadrupole of the ion
eps_p Exponential screening factor
eps_w Solute dielectric
T Solvent dielectric
gxcf Temperature
gycf Set to x-boundary values
gzcf Set to y-boundary values
xf Set to z-boundary values
yf Boundary point x-coordinates
zf Boundary point y-coordinates
nx Boundary point z-coordinates
ny Number of grid points in x-direction
nz Number of grid points in y-direction Number of grid points in y-direction

References multipolebc(), Vunit_ec, Vunit_eps0, and Vunit_kb.

Here is the call graph for this function:

VPRIVATE double bspline2 ( double  x  ) 

Evaluate a cubic B-spline.

Author:
Nathan Baker
Returns:
Cubic B-spline value
Parameters:
x Position

Referenced by fillcoChargeSpline2(), and qfForceSpline2().

VPRIVATE double bspline4 ( double  x  ) 

Evaluate a 5th Order B-Spline (4th order polynomial).

Author:
: Michael Schnieders
Returns:
5th Order B-Spline
Parameters:
x Position

Referenced by fillcoPermanentMultipole(), and qfForceSpline4().

VPUBLIC double d2bspline4 ( double  x  ) 

Evaluate the 2nd derivative of a 5th Order B-Spline.

Author:
: Michael Schnieders
Returns:
2nd derivative of a 5th Order B-Spline
Parameters:
x Position

Referenced by fillcoPermanentMultipole().

VPUBLIC double d3bspline4 ( double  x  ) 

Evaluate the 3rd derivative of a 5th Order B-Spline.

Author:
: Michael Schnieders
Returns:
3rd derivative of a 5th Order B-Spline
Parameters:
x Position
VPRIVATE double dbspline2 ( double  x  ) 

Evaluate a cubic B-spline derivative.

Author:
Nathan Baker
Returns:
Cubic B-spline derivative
Parameters:
x Position

Referenced by qfForceSpline2().

VPUBLIC double dbspline4 ( double  x  ) 

Evaluate a 5th Order B-Spline derivative (4th order polynomial).

Author:
: Michael Schnieders
Returns:
5th Order B-Spline derivative
Parameters:
x Position

Referenced by fillcoPermanentMultipole(), and qfForceSpline4().

VPRIVATE void extEnergy ( Vpmg thee,
Vpmg pmgOLD,
PBEparm_calcEnergy  extFlag,
double  partMin[3],
double  partMax[3],
int  bflags[6] 
)

For focusing, set external energy data members in new Vpmg object based on energy calculations on old Vpmg object from regions outside the indicated partition.

Author:
Nathan Baker, Todd Dolinsky
Parameters:
pmgOLD Newly created PMG manager
extFlag Old PMG manager, source of energies
partMin Energy calculation flag
partMax Partition lower corner
bflags Partition upper corner Which boundaries to include the calculation

References sVpbe::alist, sVpmg::extDiEnergy, sVpmg::extQfEnergy, sVpmg::extQmEnergy, 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, Vpmg_dielEnergy(), Vpmg_qfEnergy(), Vpmg_qmEnergy(), Vpmg_setPart(), Vpmg_unsetPart(), sVpmgp::xcent, sVpmgp::ycent, and sVpmgp::zcent.

Referenced by energyMG(), and Vpmg_ctor2().

Here is the call graph for this function:

VPRIVATE Vrc_Codes fillcoCharge ( Vpmg thee  ) 

Top-level driver to fill source term charge array.

Returns:
Success/failure status
Author:
Nathan Baker

References sVpmg::chargeMeth, sVpmg::chargeSrc, fillcoChargeMap(), fillcoChargeSpline1(), fillcoChargeSpline2(), fillcoInducedDipole(), fillcoNLInducedDipole(), fillcoPermanentMultipole(), sVpmg::useChargeMap, VCM_BSPL2, VCM_BSPL4, VCM_CHARGE, VCM_INDUCED, VCM_NLINDUCED, VCM_PERMANENT, VCM_TRIL, VRC_FAILURE, and VRC_SUCCESS.

Referenced by Vpmg_fillco().

Here is the call graph for this function:

VPRIVATE Vrc_Codes fillcoChargeMap ( Vpmg thee  ) 

Fill source term charge array from a pre-calculated map.

Returns:
Success/failure status
Author:
Nathan Baker

References sVpmg::charge, sVpmg::chargeMap, sVpmgp::hx, sVpmgp::hy, sVpmgp::hzed, sVpmgp::nx, sVpmgp::ny, sVpmgp::nz, sVpmg::pbe, sVpmg::pmgp, Vgrid_value(), Vpbe_getZmagic(), VRC_FAILURE, VRC_SUCCESS, sVpmg::xf, sVpmg::yf, and sVpmg::zf.

Referenced by fillcoCharge().

Here is the call graph for this function:

VPRIVATE void fillcoChargeSpline1 ( Vpmg thee  ) 
VPRIVATE void fillcoChargeSpline2 ( Vpmg thee  ) 
VPRIVATE void fillcoCoef ( Vpmg thee  ) 

Top-level driver to fill all operator coefficient arrays.

Author:
Nathan Baker

References fillcoCoefMap(), fillcoCoefMol(), fillcoCoefSpline(), fillcoCoefSpline3(), fillcoCoefSpline4(), sVpmg::surfMeth, sVpmg::useDielXMap, sVpmg::useDielYMap, sVpmg::useDielZMap, sVpmg::useKappaMap, VSM_MOL, VSM_MOLSMOOTH, VSM_SPLINE, VSM_SPLINE3, and VSM_SPLINE4.

Referenced by Vpmg_fillco().

Here is the call graph for this function:

VPRIVATE void fillcoCoefMap ( Vpmg thee  ) 
VPRIVATE void fillcoCoefMol ( Vpmg thee  ) 

Fill operator coefficient arrays from a molecular surface calculation.

Author:
Nathan Baker

References fillcoCoefMap(), fillcoCoefMolDiel(), fillcoCoefMolIon(), sVpmg::useDielXMap, sVpmg::useDielYMap, sVpmg::useDielZMap, and sVpmg::useKappaMap.

Referenced by fillcoCoef().

Here is the call graph for this function:

VPRIVATE void fillcoCoefMolDiel ( Vpmg thee  ) 

Fill differential operator coefficient arrays from a molecular surface calculation.

Author:
Nathan Baker

References fillcoCoefMolDielNoSmooth(), fillcoCoefMolDielSmooth(), sVpmg::surfMeth, and VSM_MOLSMOOTH.

Referenced by fillcoCoefMol().

Here is the call graph for this function:

VPRIVATE void fillcoCoefMolDielNoSmooth ( Vpmg thee  ) 
VPRIVATE void fillcoCoefMolDielSmooth ( Vpmg thee  ) 

Fill differential operator coefficient arrays from a molecular surface calculation with smoothing.

Molecular surface, dielectric smoothing following an implementation of Bruccoleri, et al. J Comput Chem 18 268-276 (1997).

This algorithm uses a 9 point harmonic smoothing technique - the point in question and all grid points 1/sqrt(2) grid spacings away.

Note:
This uses thee->a1cf, thee->a2cf, thee->a3cf as temporary storage.
Author:
Todd Dolinsky

References sVpmg::a1cf, sVpmg::a2cf, sVpmg::a3cf, sVpmg::epsx, sVpmg::epsy, sVpmg::epsz, sVpmgp::nx, sVpmgp::ny, sVpmgp::nz, sVpmg::pbe, sVpmg::pmgp, and Vpbe_getSolventDiel().

Referenced by fillcoCoefMolDiel().

Here is the call graph for this function:

VPRIVATE void fillcoCoefMolIon ( Vpmg thee  ) 
VPRIVATE void fillcoCoefSpline ( Vpmg thee  ) 
VPRIVATE void fillcoCoefSpline3 ( Vpmg thee  ) 
VPRIVATE void fillcoCoefSpline4 ( Vpmg thee  ) 
VPUBLIC void fillcoPermanentMultipole ( Vpmg thee  ) 
VPRIVATE void focusFillBound ( Vpmg thee,
Vpmg pmg 
)

For focusing, fill in the boundaries of the new mesh based on the potential values in the old mesh.

Author:
Nathan Baker
Parameters:
pmgOLD New PMG object (the one just created) Old PMG object

References sVpmg::gxcf, sVpmg::gycf, sVpmg::gzcf, sVpmgp::hx, sVpmgp::hy, sVpmgp::hzed, sVpmgp::nx, sVpmgp::ny, sVpmgp::nz, sVpmg::pbe, sVpmg::pmgp, SINH_MIN, sVpmg::u, Vpbe_getSoluteCenter(), Vpbe_getSoluteCharge(), Vpbe_getSoluteRadius(), Vpbe_getSolventDiel(), Vpbe_getTemperature(), Vpbe_getXkappa(), VPMGSMALL, Vunit_ec, Vunit_eps0, Vunit_kb, sVpmgp::xcent, sVpmgp::ycent, and sVpmgp::zcent.

Referenced by Vpmg_ctor2().

Here is the call graph for this function:

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 points inside the sphere to the specified value.

Author:
Nathan Baker
Parameters:
tpos Sphere radius
nx Sphere position
ny Number of grid points
nz Number of grid points
hx Number of grid points
hy Grid spacing
hz Grid spacing
xmin Grid spacing
ymin Grid lower corner
zmin Grid lower corner
array Grid lower corner
markVal Grid values Value to mark with

Referenced by fillcoCoefMolDielNoSmooth(), and fillcoCoefMolIon().

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-Huckel potential tensor for a spherical ion with a central charge, dipole and quadrupole. See the code for an in depth description.

Author:
Michael Schnieders
Parameters:
kappa Distance to the boundary
eps_p Exponential screening factor
eps_w Solute dielectric
rad Solvent dielectric
tsr Radius of the sphere Contraction-independent portion of each tensor

Referenced by bcfl2().

VPRIVATE void qfForceSpline1 ( Vpmg thee,
double *  force,
int  atomID 
)

Charge-field force due to a linear spline charge function.

Author:
Nathan Baker
Parameters:
atomID Set to force Valist atom ID

References sVpbe::alist, sVpmgp::bcfl, BCFL_FOCUS, sVpmgp::hx, sVpmgp::hy, sVpmgp::hzed, sVpmgp::nx, sVpmgp::ny, sVpmgp::nz, sVatom::partID, sVpmg::pbe, sVpmg::pmgp, sVpmg::u, Valist_getAtom(), Vatom_getCharge(), Vatom_getPosition(), VPMGSMALL, sVpmgp::xmax, sVpmgp::xmin, sVpmgp::ymax, sVpmgp::ymin, sVpmgp::zmax, and sVpmgp::zmin.

Referenced by Vpmg_qfForce().

Here is the call graph for this function:

VPRIVATE void qfForceSpline2 ( Vpmg thee,
double *  force,
int  atomID 
)

Charge-field force due to a cubic spline charge function.

Author:
Nathan Baker
Parameters:
atomID Set to force Valist atom ID

References sVpbe::alist, sVpmgp::bcfl, BCFL_FOCUS, bspline2(), dbspline2(), sVpmgp::hx, sVpmgp::hy, sVpmgp::hzed, sVpmgp::nx, sVpmgp::ny, sVpmgp::nz, sVatom::partID, sVpmg::pbe, sVpmg::pmgp, sVpmg::u, Valist_getAtom(), Vatom_getCharge(), Vatom_getPosition(), sVpmgp::xlen, sVpmgp::xmax, sVpmgp::xmin, sVpmgp::ylen, sVpmgp::ymax, sVpmgp::ymin, sVpmgp::zlen, sVpmgp::zmax, and sVpmgp::zmin.

Referenced by Vpmg_qfForce().

Here is the call graph for this function:

VPRIVATE void qfForceSpline4 ( Vpmg thee,
double *  force,
int  atomID 
)

Charge-field force due to a quintic spline charge function.

Author:
Michael Schnieders
Parameters:
atomID Set to force Valist atom ID

References sVpbe::alist, bspline4(), dbspline4(), sVpmg::filled, sVpmgp::hx, sVpmgp::hy, sVpmgp::hzed, sVpmgp::nx, sVpmgp::ny, sVpmgp::nz, sVpmg::pbe, sVpmg::pmgp, sVpmg::u, Valist_getAtom(), Vatom_getCharge(), Vatom_getPosition(), VFCHI4(), sVpmgp::xlen, sVpmgp::xmax, sVpmgp::xmin, sVpmgp::ylen, sVpmgp::ymax, sVpmgp::ymin, sVpmgp::zlen, sVpmgp::zmax, and sVpmgp::zmin.

Referenced by Vpmg_qfForce().

Here is the call graph for this function:

VPRIVATE double VFCHI4 ( int  i,
double  f 
)

Return 2.5 plus difference of i - f.

Author:
Michael Schnieders
Returns:
(2.5+((double)(i)-(f)))

Referenced by fillcoPermanentMultipole(), and qfForceSpline4().

VPRIVATE double Vpmg_polarizEnergy ( Vpmg thee,
int  extFlag 
)

Determines energy from polarizeable charge and interaction with fixed charges according to Rocchia et al.

Author:
Nathan Baker
Returns:
Energy in kT
Parameters:
extFlag If 1, add external energy contributions to result

References sVpbe::alist, sVpmg::charge, sVpmgp::hx, sVpmgp::hy, sVpmgp::hzed, sVpmgp::nx, sVpmgp::ny, sVpmgp::nz, sVpmg::pbe, sVpmg::pmgp, sVpmg::u, Valist_getAtom(), Valist_getNumberAtoms(), Vatom_getCharge(), Vatom_getPosition(), Vgrid_ctor(), Vgrid_curvature(), Vpbe_getSoluteDiel(), Vpbe_getSolventDiel(), Vpbe_getTemperature(), Vunit_ec, Vunit_eps0, Vunit_kb, sVpmgp::xmin, and sVpmgp::ymin.

Here is the call graph for this function:

VPRIVATE double Vpmg_qfEnergyPoint ( Vpmg thee,
int  extFlag 
)

Calculates charge-potential energy using summation over delta function positions (i.e. something like an Linf norm).

Author:
Nathan Baker
Returns:
Energy in kT
Parameters:
extFlag If 1, add external energy contributions to result

References sVpbe::alist, sVpmgp::bcfl, BCFL_FOCUS, sVpmg::extQfEnergy, sVpmgp::hx, sVpmgp::hy, sVpmgp::hzed, sVpmgp::nx, sVpmgp::ny, sVpmgp::nz, sVatom::partID, sVpmg::pbe, sVpmg::pmgp, sVpmg::pvec, sVpmg::u, Valist_getAtom(), Valist_getNumberAtoms(), Vatom_getCharge(), Vatom_getPosition(), sVpmgp::xmax, sVpmgp::xmin, sVpmgp::ymax, sVpmgp::ymin, sVpmgp::zmax, and sVpmgp::zmin.

Referenced by Vpmg_qfEnergy().

Here is the call graph for this function:

VPRIVATE double Vpmg_qfEnergyVolume ( Vpmg thee,
int  extFlag 
)

Calculates charge-potential energy as integral over a volume.

Author:
Nathan Baker
Returns:
Energy in kT
Parameters:
extFlag If 1, add external energy contributions to result

References sVpmg::charge, sVpmg::extQfEnergy, 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 Vpmg_qfEnergy().

Here is the call graph for this function:

VPUBLIC double Vpmg_qmEnergySMPBE ( Vpmg thee,
int  extFlag 
)
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.

Author:
David Gohara
Parameters:
acc Surface method, currently VSM_SPLINE, VSM_SPLINE5, or VSM_SPLINE7
gpos Accessibility object
win Position array -> array[3]
infrad Spline window
atom Inflation radius
force Atom object Force array -> array[3]

References Vacc_splineAccGradAtomNorm(), Vacc_splineAccGradAtomNorm3(), Vacc_splineAccGradAtomNorm4(), VSM_SPLINE, VSM_SPLINE3, and VSM_SPLINE4.

Referenced by Vpmg_dbForce(), and Vpmg_ibForce().

Here is the call graph for this function:

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 Dirichlet boundary conditions. Store the solution in thee->u.

Author:
Nathan Baker
Note:
Vpmg_fillco must be called first
Parameters:
source Solution term vector
work1 Source term vector Work vector

References sVpmgp::hx, sVpmgp::hy, sVpmgp::hzed, sVpmgp::nx, sVpmgp::ny, sVpmgp::nz, sVpmg::pmgp, sVpmg::u, sVpmgp::xlen, sVpmgp::ylen, and sVpmgp::zlen.

Referenced by Vpmg_solveLaplace().


Generated by  doxygen 1.6.2