meshi.energy.simpleEnergyTerms.angle
Class AngleEnergy

java.lang.Object
  extended by meshi.energy.AbstractEnergy
      extended by meshi.energy.simpleEnergyTerms.SimpleEnergyTerm
          extended by meshi.energy.simpleEnergyTerms.angle.AngleEnergy
All Implemented Interfaces:
Attributable, Updateable

public class AngleEnergy
extends SimpleEnergyTerm

Angle energy term. Has the general form E = SIGMAi(Ki(Ti-D0i)^2) where Ti is the angle between three consecutive atoms, D0i is their expected average angle (depends on their types) and Ki is a force constant that again, depends on the atom types.
This class is used for both calculating the angle-energy term of an energy function and for updating the forces on each atom accordingly. It is assumed that the list of angles is constant during the simulation. The numerical method was addapted from Ron Elber's Moil. Important Note: This energy term has a non-continous point at angle values of 0 or Pi. In order to circumvent these discontinuites we modified the regular parabolic form of this term near the problematic values. At about ~10 degrees (the exact value is hard coded in class AngleEnergyElement) from both 0 and PI the energy starts to climb very steeply so that energetic values of infinity are set to the discontinuous points. We thus hope the simulation could never reach them. On very rare starting condition, however, these problems might never the less be encountered.


Nested Class Summary
 
Nested classes/interfaces inherited from class meshi.energy.AbstractEnergy
AbstractEnergy.UpdateableList
 
Field Summary
protected  AngleList angleList
          The list of angles that needs to be evaluated.
protected  DistanceMatrix distanceMatrix
           
 
Fields inherited from class meshi.energy.simpleEnergyTerms.SimpleEnergyTerm
elementsList, parametersList
 
Fields inherited from class meshi.energy.AbstractEnergy
comment, filter, INFINITY, NaN, on, updateableResources, weight
 
Constructor Summary
AngleEnergy(AngleList angleList, DistanceMatrix distanceMatrix, AngleParametersList parametersList, double weight)
           
 
Method Summary
 EnergyElement createElement(java.lang.Object baseElement, Parameters parameters)
           
 
Methods inherited from class meshi.energy.simpleEnergyTerms.SimpleEnergyTerm
createElementsList, elementsList, evaluate, evaluateAtoms, test
 
Methods inherited from class meshi.energy.AbstractEnergy
addAttribute, comment, getAttribute, handleMissingParameters, isOn, off, on, toArray, toArray, toArray, toArray, toString, update
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

angleList

protected AngleList angleList
The list of angles that needs to be evaluated.


distanceMatrix

protected DistanceMatrix distanceMatrix
Constructor Detail

AngleEnergy

public AngleEnergy(AngleList angleList,
                   DistanceMatrix distanceMatrix,
                   AngleParametersList parametersList,
                   double weight)
Method Detail

createElement

public EnergyElement createElement(java.lang.Object baseElement,
                                   Parameters parameters)
Specified by:
createElement in class SimpleEnergyTerm