|
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:
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
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.
|
|