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