Technical Documentation
ELECTROSTATICS ENERGY FUNCTION: Introduction

This Electrostatics term is of the Inclusion type (i.e., indexed by the Atom Inclusion Type). An Exclusion version of this term is also available, see [ElectroX]. An individual term is:

qiqj

Drijn

where rij is the distance between atoms i and j, qi and qj are the (partial) charges on the atoms, D is the dielectric constant and n is either 1 or 2. Coulomb's law is obtained by setting n to 1. Setting n to 2 is an old method of accounting for charge screening; strictly speaking D should be set to 1 in this case but any value will be honored. This term does not make use of any Atom Types (Inclusion or Exclusion). Therefore, setting an atom to a null atom type will not exclude the atom from electrostatics interaction. An atom is excluded from the electrostatics interaction if it has a zero charge. The electrostatics term is asymptotic and so there is potentially a very large number of pair interactions to be considered. Usually, only the pairs that are within a limited cutoff distance are considered. This creates a discontinuity at the cutoff point which can be minimized by using a large cutoff distance. The discontinuity can be artificially eliminated by applying a trimming function. This is a continuous function (below) that is multiplied on the plain electrostatics function (above) at all distances:

[ 1 - ( rij / rfinish )2 ]2

Trimming occurs at all distances and at rfinish the energy and the gradient are both 0. Trimming is off in the default case, in which case, evaluation of the electrostatics term is terminated abruptly at rfinish. In all cases, the energy is evaluated out of a list of atom pairs that have not been excluded and which have nonzero charges and which are separated by a distance less than rcutoff which is set to a value that is somewhat larger than rfinish.

Three variations of this term have now been developed for DNA systems by Anton Petrov. [1] based on Debye-Huckel:

qiqj

exp( -k0drij )


Ddrij

[2] Based on an exponential form:

qiqj

exp( -{ k0 + k1exp[ -k0drij ] } drij )


Ddrij

[3] And based on a modified Bessel function:

qiqj

exp( -{ k0 + k1K1[ k0drij ] } drij )


Ddrij

where

drij = rij - C0

where k0, k1, C0 are constants corresponding to the data attributes known as Kappa0, Kappa1 and CoreDiameter respectively. K1(r) is a modified Bessel function of the first kind.

The ElectroI module is located in the Energy sub-directory of the Yup package, hence: Yup.Energy.ElectroI.

The Electrostatics term is introduced into a simulation by first creating an (empty) instance of the ElectroI object. Participating atom pairs are then added to this object. Previously added pairs may also be deleted. All these actions affect only a list of candidate pairs. The compile process binds Coordinate and Gradient AtomVectors to the ElectroI module and then goes through the candidate pairs to form a compiled pair list in which all the atoms that are involved and the charges that they are to use are positively identified. Only then can the electrostatics term be evaluated. (Prior attempts at evaluation will either yield an exception or null results.) The evaluate method would now be called many times as part of a molecular mechanics calculation. Each call would yield different results even though the compiled pair list is fixed because the Coordinates are different at each call. Radical changes to the molecular environment can be made by modifying charges, adding new charged pairs and modifying or deleting existing pairs. These actions affect the candidate list and immediately clear the compiled list. Therefore the ElectroI module must be compiled again before evaluation can resume. The state of the ElectroI module can be judged by examining the data attributes. The compiled pairs can also be examined in great detail by printing the object.

This manual is divided into several pages:

Name

Content

ElectroI

Introduction: this page.

Create

Creating a new ElectroI object. The function ElectroI().

Data

The data attributes of a ElectroI object; some of which may be assigned new values.

Manage

Managing electrostatics pairs: add new pairs and deleting existing pairs. The methods: add() and delete().

Compile

Preparing a ElectroI object for evaluation of the energy and gradients. The methods: update() and compile().

Evaluate

Evaluate the electrostatics energy and gradients. The method: evaluate().

Subscript

The subscript [] operator is not implemented

Print

Documents the print, repr, delete and compare operators.

Write

Writing the finalized electrostatics record to the force field file.

ElectroI
Create
Data
Manage
Compile
Evaluate
Subscript
Print
Write

OVERVIEW
Bonds
Angles
Torsions
SoftSphereI
ElectroI
VanderWaalsI
DistNOE
TorsionSeries
GenLJI
Potential
Hooke
Hand
Impropers
SoftSphereX
ElectroX
VanderWaalsX
SwissCheeseX
AngNOE
GenLJX

Technical
Introduction
Directory
Vectors
Energy
Model
Assembly
Methods
FPF
FFF
AVF
TaroScript
YammpScript
Python
Utilities

Home
Information
News
User
Technical
Programmer
iYup
Download
Showcase
ETC