gov.nasa.javaGenes.forceFields
Class StillingerWeber
java.lang.Object
gov.nasa.javaGenes.forceFields.Potential
gov.nasa.javaGenes.forceFields.StillingerWeber
- All Implemented Interfaces:
- java.io.Serializable
- Direct Known Subclasses:
- StillingerWeberSi, StillingerWeberSiF
- public class StillingerWeber
- extends Potential
- implements java.io.Serializable
Implements Thomas A. Weber, Frank H. Stillinger, "Dynamical branching during
fluorination of the dimerized Si(100) surface: A molecular dynamics study,"
Journal of Chemical Physics, 92 (10) 15 May 1990.
The paper was hard to translate into a functional form. They collapsed things
into constants in places we don't want to for the search. Here's a summary
of my translation of the paper into a functional form:
two body form:
f2(r) = A(Br^-p - r^-q)exp(C/(r-a)); // cuttoff at a
three body form:
f3(rij,rjk,theta) =
(alpha + lambda((cos(theta) - cos(theta0))^2)))
exp(gamma(1/(rij - a1) + 1/(rjk - a1)) // cuttoff at a1
plus an additional term for FFF not added on (see StillingerWeberSiF.java)
delta(rij*rjk)^-m * exp(beta(1/(rij - a2) + 1/(rjk - a2))) // cutoff at a2
- See Also:
- Serialized Form
Method Summary |
void |
addSpecialThreeBody(java.lang.String name,
int index)
|
void |
addThreeBody(java.lang.String name,
int index)
|
protected void |
addToArraySizes(int next)
|
void |
addTwoBody(java.lang.String name,
int index)
|
protected double |
calculateForce(double A,
double B,
double C,
double p,
double q,
double r,
double a)
|
protected double |
calculateTwoBodyEnergy(double A,
double B,
double p,
double q,
double r)
|
protected boolean |
canModel(MultiBody m)
|
protected boolean |
cutoff(double r,
double cutoff)
|
protected void |
formSetup()
|
AlleleTemplate |
getAlleles()
|
Chromosome |
getChromosome()
|
protected int[] |
getChromosomeArraySizes()
|
double |
getCutoff(ThreeBody threeBody)
|
double |
getCutoff(TwoBody pair)
|
protected double |
getCutoffTerm(double value)
|
double |
getEnergy(MultiBodiesForOneEnergy bodies)
|
double |
getEnergy(MultiBody body)
|
protected double |
getEnergy(ThreeBody threeBody)
|
protected double |
getEnergy(TwoBody pair)
|
double |
getForce(TwoBody pair)
|
protected int |
getSpeciesIndex(java.lang.String name)
|
protected double |
getValue(int speciesIndex,
int parameterIndex)
|
boolean |
hasThreeBody(Atom a,
Atom b,
Atom c)
|
boolean |
hasTwoBody(Atom a,
Atom b)
|
protected double |
lengthTerm(double rij,
double rjk,
double cutoff)
|
void |
mustModel(ManyMultiBodiesForOneEnergy many)
|
void |
mustModel(MultiBody m)
|
protected void |
mustModel(MultiBody m,
double cutoff)
|
protected void |
need(MultiBody m,
int index)
|
protected void |
noThreeTermParameters(java.lang.String name)
|
void |
setBondLengthInterval(DoubleInterval interval)
|
void |
setChromosome(Chromosome c)
|
void |
setCutoff(MultiBody m,
double value)
|
void |
setCutoff(ThreeBody threeBody,
double value)
value is in angstoms |
void |
setCutoff(ThreeBody threeBody,
double a1_value,
double a2_value)
values are in angstoms |
void |
setCutoff(TwoBody pair,
double value)
value is in angstoms |
void |
setCutoffInterval(DoubleInterval interval)
|
void |
setExponentInterval(DoubleInterval interval)
|
void |
setFactorInterval(DoubleInterval interval)
|
protected void |
setIndices()
|
protected void |
setupAllelesAndChromosome()
|
protected void |
setupChromosomeFromPaper()
|
protected void |
setValue(double value,
int speciesIndex,
int parameterIndex)
|
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
alleleSetup
protected AlleleSetup alleleSetup
chromosome
protected Chromosome chromosome
alleles
protected AlleleTemplate alleles
setupComplete
protected boolean setupComplete
bondLengthInterval
protected DoubleInterval bondLengthInterval
exponentInterval
protected DoubleInterval exponentInterval
factorInterval
protected DoubleInterval factorInterval
angleInterval
protected DoubleInterval angleInterval
cutoffInterval
protected DoubleInterval cutoffInterval
A_index
protected final int A_index
- See Also:
- Constant Field Values
B_index
protected final int B_index
- See Also:
- Constant Field Values
C_index
protected final int C_index
- See Also:
- Constant Field Values
p_index
protected final int p_index
- See Also:
- Constant Field Values
q_index
protected final int q_index
- See Also:
- Constant Field Values
a_index
protected final int a_index
- See Also:
- Constant Field Values
numberOfTwoBodyParameters
protected final int numberOfTwoBodyParameters
- See Also:
- Constant Field Values
alpha_index
protected final int alpha_index
- See Also:
- Constant Field Values
lambda_index
protected final int lambda_index
- See Also:
- Constant Field Values
theta0_index
protected final int theta0_index
- See Also:
- Constant Field Values
gamma_index
protected final int gamma_index
- See Also:
- Constant Field Values
a1_index
protected final int a1_index
- See Also:
- Constant Field Values
numberOfThreeBodyParameters
protected final int numberOfThreeBodyParameters
- See Also:
- Constant Field Values
flourineThreeBodyParametersIncrement
protected final int flourineThreeBodyParametersIncrement
- See Also:
- Constant Field Values
specialThreeBodyParametersIncrement
protected final int specialThreeBodyParametersIncrement
- See Also:
- Constant Field Values
delta_index
protected final int delta_index
- See Also:
- Constant Field Values
m_index
protected final int m_index
- See Also:
- Constant Field Values
beta_index
protected final int beta_index
- See Also:
- Constant Field Values
a2_index
protected final int a2_index
- See Also:
- Constant Field Values
NotApplicable
protected final double NotApplicable
- See Also:
- Constant Field Values
cutoffs
protected java.util.Hashtable cutoffs
StillingerWeber
public StillingerWeber()
StillingerWeber
public StillingerWeber(DoubleInterval factorInterval,
DoubleInterval exponentInterval,
DoubleInterval cutoffInterval)
StillingerWeber
public StillingerWeber(AtomicSpecies[] elements,
DoubleInterval factorInterval,
DoubleInterval exponentInterval,
DoubleInterval cutoffInterval)
mustModel
public void mustModel(ManyMultiBodiesForOneEnergy many)
- Overrides:
mustModel
in class Potential
mustModel
protected void mustModel(MultiBody m,
double cutoff)
mustModel
public void mustModel(MultiBody m)
canModel
protected boolean canModel(MultiBody m)
need
protected void need(MultiBody m,
int index)
addTwoBody
public void addTwoBody(java.lang.String name,
int index)
addThreeBody
public void addThreeBody(java.lang.String name,
int index)
addSpecialThreeBody
public void addSpecialThreeBody(java.lang.String name,
int index)
addToArraySizes
protected void addToArraySizes(int next)
hasTwoBody
public boolean hasTwoBody(Atom a,
Atom b)
setCutoff
public void setCutoff(MultiBody m,
double value)
setCutoff
public void setCutoff(TwoBody pair,
double value)
- value is in angstoms
setCutoff
public void setCutoff(ThreeBody threeBody,
double value)
- value is in angstoms
setCutoff
public void setCutoff(ThreeBody threeBody,
double a1_value,
double a2_value)
- values are in angstoms
getCutoff
public double getCutoff(TwoBody pair)
- Overrides:
getCutoff
in class Potential
getCutoff
public double getCutoff(ThreeBody threeBody)
- Overrides:
getCutoff
in class Potential
hasThreeBody
public boolean hasThreeBody(Atom a,
Atom b,
Atom c)
getAlleles
public AlleleTemplate getAlleles()
- Specified by:
getAlleles
in class Potential
getChromosome
public Chromosome getChromosome()
setupAllelesAndChromosome
protected void setupAllelesAndChromosome()
getChromosomeArraySizes
protected int[] getChromosomeArraySizes()
formSetup
protected void formSetup()
setIndices
protected void setIndices()
setupChromosomeFromPaper
protected void setupChromosomeFromPaper()
noThreeTermParameters
protected void noThreeTermParameters(java.lang.String name)
setExponentInterval
public void setExponentInterval(DoubleInterval interval)
setFactorInterval
public void setFactorInterval(DoubleInterval interval)
setBondLengthInterval
public void setBondLengthInterval(DoubleInterval interval)
setCutoffInterval
public void setCutoffInterval(DoubleInterval interval)
getValue
protected double getValue(int speciesIndex,
int parameterIndex)
setValue
protected void setValue(double value,
int speciesIndex,
int parameterIndex)
getSpeciesIndex
protected int getSpeciesIndex(java.lang.String name)
setChromosome
public void setChromosome(Chromosome c)
- Specified by:
setChromosome
in class Potential
- Parameters:
c
- use this chromosome to establish the parameters of the potential
getEnergy
public double getEnergy(MultiBodiesForOneEnergy bodies)
- Overrides:
getEnergy
in class Potential
getEnergy
public double getEnergy(MultiBody body)
- Overrides:
getEnergy
in class Potential
getEnergy
protected double getEnergy(TwoBody pair)
calculateTwoBodyEnergy
protected double calculateTwoBodyEnergy(double A,
double B,
double p,
double q,
double r)
getForce
public double getForce(TwoBody pair)
- Overrides:
getForce
in class Potential
calculateForce
protected double calculateForce(double A,
double B,
double C,
double p,
double q,
double r,
double a)
getEnergy
protected double getEnergy(ThreeBody threeBody)
getCutoffTerm
protected double getCutoffTerm(double value)
lengthTerm
protected double lengthTerm(double rij,
double rjk,
double cutoff)
cutoff
protected boolean cutoff(double r,
double cutoff)