Package ffx.potential
Class XtalEnergy
java.lang.Object
ffx.potential.XtalEnergy
- All Implemented Interfaces:
OptimizationInterface
,Potential
This class computes the energy and Cartesian coordinate gradient, plus finite difference
derivatives of lattice parameters.
- Since:
- 1.0
- Author:
- Jooyeon Park
-
Nested Class Summary
Nested classes/interfaces inherited from interface ffx.numerics.Potential
Potential.STATE, Potential.VARIABLE_TYPE
-
Constructor Summary
ConstructorDescriptionXtalEnergy
(ForceFieldEnergy forceFieldEnergy, MolecularAssembly molecularAssembly) Constructor for XtalEnergy.XtalEnergy
(ForceFieldEnergy forceFieldEnergy, MolecularAssembly molecularAssembly, boolean latticeOnly) Constructor for XtalEnergy. -
Method Summary
Modifier and TypeMethodDescriptionboolean
destroy()
Destroys this Potential and frees up any associated resources, particularly worker Threads.double
energy
(double[] x) This method is called repeatedly to compute the function energy.double
energyAndGradient
(double[] x, double[] g) This method is called repeatedly to compute the function energy and gradient.double[]
getAcceleration
(double[] acceleration) getAcceleration.double[]
getCoordinates
(double[] x) Load the current value of the parameters.Get the Potential Energy terms that is active.double[]
getMass()
Get the mass of each degree of freedom.int
Get the number of variables being operated on.double[]
getPreviousAcceleration
(double[] previousAcceleration) getPreviousAcceleration.double[]
Get the problem scaling.double
Get the total energy of the systemGet the type of all variables.double[]
getVelocity
(double[] velocity) getVelocity.void
setAcceleration
(double[] acceleration) setAcceleration.void
Set the Potential Energy terms that should be active.void
setFractionalCoordinateMode
(MolecularAssembly.FractionalMode fractionalMode) setFractionalCoordinateMode.void
setPreviousAcceleration
(double[] previousAcceleration) setPreviousAcceleration.void
setScaling
(double[] scaling) Scale the problem.void
setVelocity
(double[] velocity) setVelocity.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface ffx.numerics.OptimizationInterface
energy, energyAndGradient, getUnderlyingPotentials, scaleCoordinates, scaleCoordinatesAndGradient, unscaleCoordinates
Methods inherited from interface ffx.numerics.Potential
getConstraints, writeAdditionalRestartInfo
-
Constructor Details
-
XtalEnergy
Constructor for XtalEnergy.- Parameters:
forceFieldEnergy
- aForceFieldEnergy
object.molecularAssembly
- aMolecularAssembly
object.
-
XtalEnergy
public XtalEnergy(ForceFieldEnergy forceFieldEnergy, MolecularAssembly molecularAssembly, boolean latticeOnly) Constructor for XtalEnergy.- Parameters:
forceFieldEnergy
- aForceFieldEnergy
object.molecularAssembly
- aMolecularAssembly
object.latticeOnly
- if true, only lattice parameters are optimized.
-
-
Method Details
-
destroy
public boolean destroy()Destroys this Potential and frees up any associated resources, particularly worker Threads. Default implementation is to return true (assume destruction successful).- Specified by:
destroy
in interfaceOptimizationInterface
- Returns:
- If resource reclamation successful, or resources already reclaimed.
-
energy
public double energy(double[] x) This method is called repeatedly to compute the function energy.- Specified by:
energy
in interfaceOptimizationInterface
- Parameters:
x
- Input parameters.- Returns:
- Function value at
x
.
-
energyAndGradient
public double energyAndGradient(double[] x, double[] g) This method is called repeatedly to compute the function energy and gradient.- Specified by:
energyAndGradient
in interfaceOptimizationInterface
- Parameters:
x
- Input parameters.g
- Output gradients with respect to each parameter.- Returns:
- Function value at
x
.
-
getAcceleration
public double[] getAcceleration(double[] acceleration) getAcceleration.- Specified by:
getAcceleration
in interfacePotential
- Parameters:
acceleration
- an array ofinvalid reference
double
- Returns:
- an array of
invalid reference
double
-
getCoordinates
public double[] getCoordinates(double[] x) Load the current value of the parameters. If the supplied array is null or not large enough, a new one should be created. The filled array is returned.- Specified by:
getCoordinates
in interfaceOptimizationInterface
- Parameters:
x
- Supplied array.- Returns:
- The array filled with parameter values.
-
getEnergyTermState
Get the Potential Energy terms that is active.- Specified by:
getEnergyTermState
in interfacePotential
- Returns:
- the STATE
-
setEnergyTermState
Set the Potential Energy terms that should be active.- Specified by:
setEnergyTermState
in interfacePotential
- Parameters:
state
- include FAST varying energy terms, SLOW varying energy terms or BOTH.
-
getMass
public double[] getMass()Get the mass of each degree of freedom. This is required for molecular dynamics. -
getNumberOfVariables
public int getNumberOfVariables()Get the number of variables being operated on.- Specified by:
getNumberOfVariables
in interfaceOptimizationInterface
- Returns:
- Number of variables.
-
getPreviousAcceleration
public double[] getPreviousAcceleration(double[] previousAcceleration) getPreviousAcceleration.- Specified by:
getPreviousAcceleration
in interfacePotential
- Parameters:
previousAcceleration
- an array ofinvalid reference
double
- Returns:
- an array of
invalid reference
double
-
getScaling
public double[] getScaling()Get the problem scaling.- Specified by:
getScaling
in interfaceOptimizationInterface
- Returns:
- The scaling value used for each variable.
-
setScaling
public void setScaling(double[] scaling) Scale the problem. A good choice for optimization is the square root of the median eigenvalue of a typical Hessian.- Specified by:
setScaling
in interfaceOptimizationInterface
- Parameters:
scaling
- The scaling value to use for each variable.
-
getTotalEnergy
public double getTotalEnergy()Get the total energy of the system- Specified by:
getTotalEnergy
in interfaceOptimizationInterface
- Returns:
- the total energy
-
getVariableTypes
Get the type of all variables.- Specified by:
getVariableTypes
in interfacePotential
- Returns:
- The VARIABLE_TYPE of each variable.
-
getVelocity
public double[] getVelocity(double[] velocity) getVelocity.- Specified by:
getVelocity
in interfacePotential
- Parameters:
velocity
- an array ofinvalid reference
double
- Returns:
- an array of
invalid reference
double
-
setAcceleration
public void setAcceleration(double[] acceleration) setAcceleration.- Specified by:
setAcceleration
in interfacePotential
- Parameters:
acceleration
- an array ofinvalid reference
double
-
setFractionalCoordinateMode
setFractionalCoordinateMode.- Parameters:
fractionalMode
- aMolecularAssembly.FractionalMode
object.
-
setPreviousAcceleration
public void setPreviousAcceleration(double[] previousAcceleration) setPreviousAcceleration.- Specified by:
setPreviousAcceleration
in interfacePotential
- Parameters:
previousAcceleration
- an array ofinvalid reference
double
-
setVelocity
public void setVelocity(double[] velocity) setVelocity.- Specified by:
setVelocity
in interfacePotential
- Parameters:
velocity
- an array ofinvalid reference
double
-