Energy_Non_Bonding contains procedures for calculating the MM non-bonding energy of a system. There are, in fact, currently three versions of this module which use different methods of calculation:
All modules have essentially the same structure with procedure interfaces that are similar. The major differences occur for the procedure ENERGY_NON_BONDING_OPTIONS which sets the options for the calculation and in the implementation of certain options. These differences are explained further below.
Full details about the use of the different versions of this module can be found in chapters 4 and 9 of the book A Practical Introduction to the Simulation of Molecular Systems.
This version of the module calculates all non-bonding interactions without truncation. Periodic boundary conditions and quantum atoms cannot be handled and will produce errors.
Module | Variables |
---|---|
CONSTANTS | ELECT_CONST |
DEFINITIONS | DP |
IO_UNITS | OUTPUT |
STATUS | ERROR |
ATOMS | ATMCRD, ATMFIX, NATOMS, NATOMSQM |
MM_TERMS | Many public items in the module. |
SYMMETRY | QBOX |
None.
There are three public subroutines in this module that the user is likely to want to use.
Subroutine | Purpose |
---|---|
ENERGY_NON_BONDING_INTERACTION | Calculate the non-bonding interaction energy between two distinct groups of atoms. |
ENERGY_NON_BONDING_OPTIONS | Set the options for a non-bonding energy calculation. |
ENERGY_NON_BONDING_SELF | Calculate the non-bonding self energy for a group of atoms. |
Argument | Type | Intent | Optional | Purpose |
---|---|---|---|---|
EELECT | Real | Out | No | The electrostatic energy. |
ELJ | Real | Out | No | The Lennard-Jones. |
SELECTION1 | Logical(1:NATOMS) | In | No | A first atom selection. |
SELECTION2 | Logical(1:NATOMS) | In | No | A second atom selection. |
Error | Meaning |
---|---|
There is overlap between the atom selections. | Two or more atoms occur in both atom selections. |
Argument | Type | Intent | Optional | Default | Purpose |
---|---|---|---|---|---|
DIELECTRIC | Real | In | Yes | 1 | The dielectric constant. |
Argument | Type | Intent | Optional | Purpose |
---|---|---|---|---|
EELECT | Real | Out | No | The electrostatic energy. |
ELJ | Real | Out | No | The Lennard-Jones. |
SELECTION | Logical(1:NATOMS) | In | No | An atom selection. |
Stable.
This version of the module uses the atom-based force-switching truncation method for the calculation of the non-bonding interactions. Periodic boundary conditions and quantum atoms can be handled by this module.
Module | Variables |
---|---|
CONSTANTS | ELECT_CONST, UNDEFINED |
DEFINITIONS | DP |
IO_UNITS | OUTPUT |
STATUS | ERROR |
ATOMS | ATMCRD, ATMFIX, ATMIND, ATMNAM, ATMNUM, ATMQMI, NATOMS, NATOMSMM, NATOMSQM, NFREE |
MM_TERMS | Many public items in the module. |
MOPAC_PARAMETERS | NATORB |
SEQUENCE | NRESID, RESIND |
SYMMETRY | BOXL, QBOX |
None.
There are four public subroutines in this module that the user is likely to want to use.
Subroutine | Purpose |
---|---|
ENERGY_NON_BONDING_INTERACTION | Calculate the non-bonding interaction energy between two distinct groups of atoms. |
ENERGY_NON_BONDING_OPTIONS | Set the options for a non-bonding energy calculation. |
ENERGY_NON_BONDING_SELF | Calculate the non-bonding self energy for a group of atoms. |
ENERGY_NON_BONDING_STATISTICS | Print some statistics about the non-bonding energy calculation. |
The descriptions of the subroutines ENERGY_NON_BONDING_INTERACTION and ENERGY_NON_BONDING_SELF are the same as those given above so please refer there for details.
Argument | Type | Intent | Optional | Default | Purpose |
---|---|---|---|---|---|
LIST_CUTOFF | Real | In | Yes | A large number | The truncation cutoff for list generation. |
OUTER_CUTOFF | Real | In | Yes | A large number | The truncation cutoff for evaluation of the interactions. |
INNER_CUTOFF | Real | In | Yes | A large number | The cutoff for application of the force-switching function. |
DIELECTRIC | Real | In | Yes | 1 | The dielectric constant. |
MINIMUM_IMAGE | Logical | In | Yes | .FALSE. | The minimum image flag. |
Logical | In | Yes | .FALSE. | The flag as to whether to print information during the non-bonding list generation. |
Error | Meaning |
---|---|
Invalid CUT_LIST/CUT_OFF values. | The value given for CUT_OFF was greater than that for CUT_LIST. |
This subroutine has no arguments.
The algorithm used for creating the non-bonding interaction lists could be made more efficient (and independent of the sequence information). Otherwise, stable.
This version of the module uses the Ewald method for the calculation of the non-bonding interactions. This module only works with periodic boundary conditions and cannot handle calculations of the virial, second derivatives or quantum atoms (as yet). The interaction and self energy subroutines are also not implemented.
Module | Variables |
---|---|
CONSTANTS | ELECT_CONST, PI |
DEFINITIONS | DP |
IO_UNITS | OUTPUT |
SPECIAL_FUNCTIONS | ERFC |
STATUS | ERROR |
ATOMS | ATMCRD, NATOMS, NATOMSQM, NFREE |
MM_TERMS | Many public items in the module. |
SEQUENCE | NRESID, RESIND |
SYMMETRY | BOXL, QBOX |
None.
There are two public subroutines in this module that the user is likely to want to use.
Subroutine | Purpose |
---|---|
ENERGY_NON_BONDING_OPTIONS | Set the options for a non-bonding energy calculation. |
ENERGY_NON_BONDING_STATISTICS | Print some statistics about the non-bonding energy calculation. |
The subroutines ENERGY_NON_BONDING_INTERACTION and ENERGY_NON_BONDING_SELF are not currently implemented in this module whereas the subroutine ENERGY_NON_BONDING_STATISTICS has the same interface and usage as the subroutine of the same name described above.
Argument | Type | Intent | Optional | Default | Purpose |
---|---|---|---|---|---|
LIST_CUTOFF | Real | In | Yes | A large number | The truncation cutoff for list generation. |
OUTER_CUTOFF | Real | In | Yes | A large number | The truncation cutoff for evaluation of the interactions. |
KAPPA | Real | In | Yes | 0.2 | The Ewald kappa constant. |
DIELECTRIC | Real | In | Yes | 1 | The dielectric constant. |
KMAXIMUM | Real(1:3) | In | Yes | (0,0,0) | The maximum k-vector components. |
TINFOIL | Logical | In | Yes | .TRUE. | The tin-foil boundary condition flag. |
Logical | In | Yes | .FALSE. | The flag as to whether to print information during the non-bonding list generation. |
Error | Meaning |
---|---|
Invalid CUT_LIST/CUT_OFF values. | The value given for CUT_OFF was greater than that for CUT_LIST. |
There are many improvements that need to be made to this module. Ultimately a particle mesh Ewald method needs to be implemented.