JavaGenes, NASA Ames. Written largely by Al Globus

gov.nasa.javaGenes.forceFields
Class StillingerWeber

java.lang.Object
  extended bygov.nasa.javaGenes.forceFields.Potential
      extended bygov.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

Nested Class Summary
 class StillingerWeber.ChromosomeParametersData
           
 
Field Summary
protected  int a_index
           
protected  int A_index
           
protected  int a1_index
           
protected  int a2_index
           
protected  AlleleTemplate alleles
           
protected  AlleleSetup alleleSetup
           
protected  int alpha_index
           
protected  DoubleInterval angleInterval
           
protected  int B_index
           
protected  int beta_index
           
protected  DoubleInterval bondLengthInterval
           
protected  int C_index
           
protected  Chromosome chromosome
           
protected  DoubleInterval cutoffInterval
           
protected  java.util.Hashtable cutoffs
           
protected  int delta_index
           
protected  DoubleInterval exponentInterval
           
protected  DoubleInterval factorInterval
           
protected  int flourineThreeBodyParametersIncrement
           
protected  int gamma_index
           
protected  int lambda_index
           
protected  int m_index
           
protected  double NotApplicable
           
protected  int numberOfThreeBodyParameters
           
protected  int numberOfTwoBodyParameters
           
protected  int p_index
           
protected  int q_index
           
protected  boolean setupComplete
           
protected  int specialThreeBodyParametersIncrement
           
protected  int theta0_index
           
 
Fields inherited from class gov.nasa.javaGenes.forceFields.Potential
STILLINGER_WEBER, TERSOFF
 
Constructor Summary
StillingerWeber()
           
StillingerWeber(AtomicSpecies[] elements, DoubleInterval factorInterval, DoubleInterval exponentInterval, DoubleInterval cutoffInterval)
           
StillingerWeber(DoubleInterval factorInterval, DoubleInterval exponentInterval, DoubleInterval cutoffInterval)
           
 
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 gov.nasa.javaGenes.forceFields.Potential
getEnergy, getEnergy, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

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
Constructor Detail

StillingerWeber

public StillingerWeber()

StillingerWeber

public StillingerWeber(DoubleInterval factorInterval,
                       DoubleInterval exponentInterval,
                       DoubleInterval cutoffInterval)

StillingerWeber

public StillingerWeber(AtomicSpecies[] elements,
                       DoubleInterval factorInterval,
                       DoubleInterval exponentInterval,
                       DoubleInterval cutoffInterval)
Method Detail

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)

JavaGenes, NASA Ames. Written largely by Al Globus