Technical Documentation
ELECTROSTATICS ENERGY FUNCTION: Introduction

This Electrostatics term is of the Exclusion type (i.e., indexed by the Atom Exclusion Type). An Inclusion version of this term is also available, see [ElectroI]. 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 or if it is part of an atom pair in the exclusion list. 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 ElectroX module is located in the Energy sub-directory of the Yup package, hence: Yup.Energy.ElectroX.

The electrostatics term is introduced into a simulation by first creating an (empty) instance of the ElectroX object. As this is an Exclusion list term, an empty object means that all pair interactions will be considered. This can be modified by adding atom pairs, whose interaction should not be considered, to an exclusion list. Previously excluded pairs may also be removed, which will restore that pair interaction. All these actions affect only a list of candidate pairs. The compile process binds Coordinate and Gradient AtomVectors to the ElectroX module and then goes through the candidate pairs to form a compiled exclusion list in which all the atoms that are involved 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 exclusion list is fixed because the Coordinates are different at each call. Changes to the molecular model can be made by excluding new pairs or restoring previously excluded pairs. These actions affect the candidate list and immediately clear the compiled list. Therefore the ElectroX module must be compiled again before evaluation can resume. The state of the ElectroX 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

ElectroX

Introduction: this page.

Create

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

Data

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

Manage

Managing electrostatics pairs: excluding pairs, and restoring excluded pairs. The methods: exclude() and include().

Compile

Preparing an ElectroX 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: used to access and to assign values to the electrostatics parameters

Print

Documents the print, repr, delete and compare operators.

Write

Writing the finalized electrostatics record to the force field file.

ElectroX
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