Class GeneralizedKirkwood
- All Implemented Interfaces:
LambdaInterface
NeighborList
.- Since:
- 1.0
- Author:
- Michael J. Schnieders
derived from:
TINKER code by Michael J. Schnieders and Jay W. Ponder - See Also:
-
Nested Class Summary
-
Field Summary
Modifier and TypeFieldDescriptionstatic final double
Default surface tension for apolar models with an explicit dispersion term.static final double
Using a S.P. of 0.0334 kcal/mol/A^3, and a limiting surface tension of 0.103 kcal/mol/A^2, the cross-over point is 9.2515 A.static final double
Default dielectric offsetstatic final double
Default constant for the Generalized Kirkwood cross-term.static final double
Default solvent pressure for apolar models with an explicit volume term.static final double
Default value of beta0 for tanh scalingstatic final double
Default value of beta1 for tanh scalingstatic final double
Default value of beta2 for tanh scalingdouble
Conversion from electron**2/Ang to kcal/mole.final double
The Generalized Kirkwood cross-term parameter.final double
Water probe radius. -
Constructor Summary
ConstructorDescriptionGeneralizedKirkwood
(ForceField forceField, Atom[] atoms, ParticleMeshEwald particleMeshEwald, Crystal crystal, ParallelTeam parallelTeam, double gkCutoff) Constructor for GeneralizedKirkwood. -
Method Summary
Modifier and TypeMethodDescriptionvoid
Apply solute radii definitions used to calculate Born radii.void
computeBornRadiivoid
computeInducedGKFieldvoid
computePermanentGKFielddouble[]
getBaseRadii.double[]
getBorn()
double
Returns the cavitation component of the solvation energy.Return the Chandler Cavitation instance.double
Getter for the fieldcutoff
.double
Get the 2nd partial derivative of the energy with respect to lambda.double
getdEdL()
Get the partial derivative of the energy with respect to lambda.void
getdEdXdL
(double[] gradient) Get the gradient of dEdL with respect to each parameter.double
Return the descreening dielectric offset.double[]
getDescreenRadii.double
Returns the dielectric offset (in Angstroms).double
Returns the dispersion component of the solvation energy.double
Returns the GK component of the solvation energy.double
Returns the GK component of the solvation energy.double
Returns the GK component of the solvation energy.getGrad()
int
getInteractionsdouble
Get the current value of the state variable.boolean
Checks whether GK uses the Native Environment Approximation.double[]
Getter for the fieldneckScale
.getNonPolarModel.getNonPolarModel
(String nonpolarModel) getNonPolarModel.double[]
Getter for the fieldoverlapScale
.double[]
Return perfect Born radii read in as keywords, or base radii if perfect radii are not available.double
Returns the probe radius (typically 1.4 Angstroms).double
Returns the solvent relative permittivity (typically 1.0).double
Returns the solvent relative permittivity (typically 78.3).double
Getter for the fieldsurfaceTension
.double[]
boolean
boolean
GK is using perfect radii where available.void
init()
void
reduce
(AtomicDoubleArray3D g, AtomicDoubleArray3D t, AtomicDoubleArray3D lg, AtomicDoubleArray3D lt) void
Setter for the fieldatoms
.void
setCrystal
(Crystal crystal) Setter for the fieldcrystal
.void
setCutoff
(double cutoff) Setter for the fieldcutoff
.void
setElementHCTScaleFactors
(HashMap<Integer, Double> elementHCT) Setter for element-specific HCT overlap scale factorsvoid
setLambda
(double lambda) Set the current value of the state variable.void
setNeighborList
(int[][][] neighbors) setNeighborList.void
setSneck
(double sneck_input) void
setTanhBetas
(double[] betas) void
setUse
(boolean[] use) Setter for the fielduse
.double
solvationEnergy
(boolean gradient, boolean print) solvationEnergydouble
solvationEnergy
(double gkInducedCorrectionEnergy, boolean gradient, boolean print) solvationEnergyvoid
udpateSoluteParameters
(int i) Update GK solute parameters for a given atom.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface ffx.potential.bonded.LambdaInterface
dEdLZeroAtEnds
-
Field Details
-
DEFAULT_DIELECTRIC_OFFSET
public static final double DEFAULT_DIELECTRIC_OFFSETDefault dielectric offset- See Also:
-
electric
public double electricConversion from electron**2/Ang to kcal/mole. -
DEFAULT_TANH_BETA0
public static final double DEFAULT_TANH_BETA0Default value of beta0 for tanh scaling- See Also:
-
DEFAULT_TANH_BETA1
public static final double DEFAULT_TANH_BETA1Default value of beta1 for tanh scaling- See Also:
-
DEFAULT_TANH_BETA2
public static final double DEFAULT_TANH_BETA2Default value of beta2 for tanh scaling- See Also:
-
DEFAULT_GKC
public static final double DEFAULT_GKCDefault constant for the Generalized Kirkwood cross-term.- See Also:
-
gkc
@FFXProperty(name="gkc", propertyGroup=ImplicitSolvent, defaultValue="2.455", description="The Generalized Kirkwood cross-term parameter.") public final double gkcThe Generalized Kirkwood cross-term parameter. -
probe
public final double probeWater probe radius. -
DEFAULT_SOLVENT_PRESSURE
public static final double DEFAULT_SOLVENT_PRESSUREDefault solvent pressure for apolar models with an explicit volume term.From work by Chandler et al., the following relationship for cavitation free energy as a function of spherical particle size was found: Cross-Over = 3 * S.T. / S.P.
A S.P. of 0.0334 kcal/mol/A^3 was obtained using explicit AMOEBA water simulations and solvent excluded volumes.
A S.P. of 0.0343 kcal/mol/A^3 is obtained assuming a macroscopic surface tension of 0.103 kcal/mol/A^3 and a cross-over of 9.0 (i.e. S.P. = 3 * S.T. / Cross-Over)
Both values are in reasonably good agreement, and 0.0334 is chosen as our default.
- See Also:
-
DEFAULT_CAVDISP_SURFACE_TENSION
public static final double DEFAULT_CAVDISP_SURFACE_TENSIONDefault surface tension for apolar models with an explicit dispersion term.Experimental value: 0.103 kcal/mol/Ang^2
More physical value, used for simulations: 0.080 kcal/mol/Ang^2
- See Also:
-
DEFAULT_CROSSOVER
public static final double DEFAULT_CROSSOVERUsing a S.P. of 0.0334 kcal/mol/A^3, and a limiting surface tension of 0.103 kcal/mol/A^2, the cross-over point is 9.2515 A.Using a S.P. of 0.0334 kcal/mol/A^3, and a limiting surface tension of 0.08 (i.e. 80% of the experimentally observed surface tension of 0.103 kcal/mol/A^2), we derive a cross-over of:
9.251 A = 3 * 0.103 kcal/mol/A^2 / 0.0334 kcal/mol/A^3.
- See Also:
-
-
Constructor Details
-
GeneralizedKirkwood
public GeneralizedKirkwood(ForceField forceField, Atom[] atoms, ParticleMeshEwald particleMeshEwald, Crystal crystal, ParallelTeam parallelTeam, double gkCutoff) Constructor for GeneralizedKirkwood.- Parameters:
forceField
- aForceField
object.atoms
- an array ofAtom
objects.particleMeshEwald
- aParticleMeshEwald
object.crystal
- aCrystal
object.parallelTeam
- aParallelTeam
object.
-
-
Method Details
-
getUsePerfectRadii
public boolean getUsePerfectRadii()GK is using perfect radii where available.- Returns:
- True if using perfect radii.
-
getPerfectRadii
public double[] getPerfectRadii()Return perfect Born radii read in as keywords, or base radii if perfect radii are not available.- Returns:
- Array of perfect Born radii.
-
getNonPolarModel
getNonPolarModel.- Parameters:
nonpolarModel
- aString
object.- Returns:
- a
GeneralizedKirkwood.NonPolarModel
object.
-
computeBornRadii
public void computeBornRadii()computeBornRadii -
computeInducedGKField
public void computeInducedGKField()computeInducedGKField -
computePermanentGKField
public void computePermanentGKField()computePermanentGKField -
getBaseRadii
public double[] getBaseRadii()getBaseRadii.- Returns:
- an array of
invalid reference
double
-
getDescreenRadii
public double[] getDescreenRadii()getDescreenRadii.- Returns:
- an array of
invalid reference
double
-
getCavitationEnergy
public double getCavitationEnergy()Returns the cavitation component of the solvation energy.- Returns:
- Cavitation energy
-
getChandlerCavitation
Return the Chandler Cavitation instance.- Returns:
- ChandlerCavitation instance.
-
getCutoff
public double getCutoff()Getter for the fieldcutoff
.- Returns:
- a double.
-
setCutoff
public void setCutoff(double cutoff) Setter for the fieldcutoff
.- Parameters:
cutoff
- a double.
-
getDielecOffset
public double getDielecOffset()Returns the dielectric offset (in Angstroms).- Returns:
- Currently: 0.09 Angstroms.
-
getDescreenOffset
public double getDescreenOffset()Return the descreening dielectric offset.- Returns:
- The offset (A).
-
getDispersionEnergy
public double getDispersionEnergy()Returns the dispersion component of the solvation energy.- Returns:
- Dispersion energy
-
getDispersionRegion
-
getFieldGK
-
getFieldGKCR
-
getSurfaceAreaRegion
-
getGeneralizedKirkwoordEnergy
public double getGeneralizedKirkwoordEnergy()Returns the GK component of the solvation energy.- Returns:
- GK electrostatic energy
-
getGeneralizedKirkwoordPermanentEnergy
public double getGeneralizedKirkwoordPermanentEnergy()Returns the GK component of the solvation energy.- Returns:
- GK electrostatic energy
-
getGeneralizedKirkwoordPolariztionEnergy
public double getGeneralizedKirkwoordPolariztionEnergy()Returns the GK component of the solvation energy.- Returns:
- GK electrostatic energy
-
getGrad
-
getInteractions
public int getInteractions()getInteractions- Returns:
- a int.
-
getLambda
public double getLambda()Get the current value of the state variable.- Specified by:
getLambda
in interfaceLambdaInterface
- Returns:
- state
-
setLambda
public void setLambda(double lambda) Set the current value of the state variable. May be ignored if lambda is not being applied.Updates the value of lPow.
- Specified by:
setLambda
in interfaceLambdaInterface
- Parameters:
lambda
- a double.
-
getNativeEnvironmentApproximation
public boolean getNativeEnvironmentApproximation()Checks whether GK uses the Native Environment Approximation.This (previously known as born-use-all) is useful for rotamer optimization under continuum solvent. If a large number of sidechain atoms are completely removed from the GK/GB calculation, the remaining sidechains are overly solvated. The NEA says "we will keep all sidechains not under optimization in some default state and let them contribute to Born radii calculations, but still exclude their solvation energy components."
- Returns:
- Whether the NEA is in use.
-
getNonPolarModel
getNonPolarModel.- Returns:
- a
GeneralizedKirkwood.NonPolarModel
object.
-
getOverlapScale
public double[] getOverlapScale()Getter for the fieldoverlapScale
.- Returns:
- an array of
invalid reference
double
-
getNeckScale
public double[] getNeckScale()Getter for the fieldneckScale
.- Returns:
- an array of
invalid reference
double
-
getTanhCorrection
public boolean getTanhCorrection() -
getProbeRadius
public double getProbeRadius()Returns the probe radius (typically 1.4 Angstroms).- Returns:
- Radius of the solvent probe.
-
getSolventPermittivity
public double getSolventPermittivity()Returns the solvent relative permittivity (typically 78.3).- Returns:
- Relative permittivity of the solvent.
-
getSolutePermittivity
public double getSolutePermittivity()Returns the solvent relative permittivity (typically 1.0).- Returns:
- Relative permittivity of the solute.
-
getSurfaceTension
public double getSurfaceTension()Getter for the fieldsurfaceTension
.- Returns:
- a double.
-
getTorque
-
getd2EdL2
public double getd2EdL2()Get the 2nd partial derivative of the energy with respect to lambda.The 2nd derivative is 0.0. (U=Lambda*Egk, dU/dL=Egk, d2U/dL2=0.0)
- Specified by:
getd2EdL2
in interfaceLambdaInterface
- Returns:
- d2EdL2
-
getdEdL
public double getdEdL()Get the partial derivative of the energy with respect to lambda.- Specified by:
getdEdL
in interfaceLambdaInterface
- Returns:
- dEdL
-
getdEdXdL
public void getdEdXdL(double[] gradient) Get the gradient of dEdL with respect to each parameter.These contributions are already aggregated into the arrays used by PME.
- Specified by:
getdEdXdL
in interfaceLambdaInterface
- Parameters:
gradient
- - A double array of length the number of parameters in the model (commonly 3 * number of atoms).
-
init
public void init() -
reduce
public void reduce(AtomicDoubleArray3D g, AtomicDoubleArray3D t, AtomicDoubleArray3D lg, AtomicDoubleArray3D lt) -
getSelfEnergy
-
getBorn
public double[] getBorn() -
setElementHCTScaleFactors
Setter for element-specific HCT overlap scale factors- Parameters:
elementHCT
- HashMap containing element name keys and scale factor values
-
setAtoms
Setter for the fieldatoms
.- Parameters:
atoms
- an array ofAtom
objects.
-
setCrystal
Setter for the fieldcrystal
.- Parameters:
crystal
- aCrystal
object.
-
setNeighborList
public void setNeighborList(int[][][] neighbors) setNeighborList.- Parameters:
neighbors
- an array ofinvalid reference
int
-
setUse
public void setUse(boolean[] use) Setter for the fielduse
.- Parameters:
use
- an array ofinvalid reference
boolean
-
solvationEnergy
public double solvationEnergy(boolean gradient, boolean print) solvationEnergy- Parameters:
gradient
- a boolean.print
- a boolean.- Returns:
- a double.
-
solvationEnergy
public double solvationEnergy(double gkInducedCorrectionEnergy, boolean gradient, boolean print) solvationEnergy- Parameters:
gkInducedCorrectionEnergy
- GK vacuum to SCRF polarization energy cost.gradient
- a boolean.print
- a boolean.- Returns:
- a double.
-
udpateSoluteParameters
public void udpateSoluteParameters(int i) Update GK solute parameters for a given atom. This should only be called after each atom is assigned a "SoluteType".- Parameters:
i
- The atom to update.
-
applySoluteRadii
public void applySoluteRadii()Apply solute radii definitions used to calculate Born radii. -
setSneck
public void setSneck(double sneck_input) -
getTanhBetas
public double[] getTanhBetas() -
setTanhBetas
public void setTanhBetas(double[] betas)
-