Alternative Hybrid Setup Methods
This page describes two alternative methods for setting up a hybrid QM/MM calculation.
Unless you have a good reason for using them we strongly recommend that
you use the standard theory=hybrid method instead.
The hybrid_setup input stream
hybrid_setup is basically a modified z-matrix input processor
which allows control information for the hybrid module to be
presented. It is recommended that the argument list for hybrid_setup
should include all the arguments that will later be presented
when hybrid energies and gradients are presented.
The input data is structured in the same way as a z-matrix, except that:
- The keyword gamess may be appended to a z-matrix atom
definition to indicate that the atom is part of the QC fragment
treated through the GAMESS-UK code. Other QC treatments may be
presented here as they are available, e.g. mndo,
mopac or nwdft. The qm_theory= argument must
match these keywords. Alternatively, the keyword qm may be
used to denote that the atom is in the QM fragment, this allows
a hybrid_setup input to be adapted more readily to a different QM code.
- The keyword attribute followed by an attribute string
may be used to associate an attribute with a particular atom. The
meaning of the attributes, which are used to control the MM
parameterisation, are described in The dl_poly documentation in the
ChemShell user manual. Only one attribute may be associated with each
atom in this way.
- The keyword type followed by a string may be used to specify the MM type of an atom.
- The new block of data dummies allows the definition of
dummy (or terminating) atoms. Each dummy is specified as if it were a z-matrix
atom entry for the (H-)atom concerned, including the keyword
gamess (or other QC specification)
appended to the entry.
- The block of data forcefield allows the user to feed the forcefield
data at this point.
As an example, consider a hybrid calculation on 1,2-diphenylethene, using
ethene as the QC part. The first four atoms are declared as gamess atoms.
In addition, to control MM parameterisation the C's are
assigned the junction attribute to signify a QC--MM boundary, and the first two H's the qc
attribute. The two dummy atoms are defined by z-matrix
definitions based on the bonds which they are terminating.
#
# hybrid example - (Ph)HC=CH(Ph)
#
set args { electrostatics_option=unpolarised \
qm_theory=gamess: listing=gamess.out }
#
hybrid_setup $args zmatrix=z {
zmatrix au
c1 type C2_q \
gamess attribute junction
c2 c1 c1c2 type C2_q \
gamess attribute junction
h1 c1 ch1 c2 cch1 type H1_q \
gamess attribute qc
h2 c2 ch2 c1 cch2 h1 hcch type H1_q \
gamess attribute qc
c%111 c1 c1c111 c2 c111c1c2 h1 c111cch type C2
c%112 c%111 cc c1 ccc%11 c2 ttw%11 type C2
c%113 c%112 cc c%111 a120 c1 tfl%11 type C2
c%114 c%113 cc c%112 a120 c%111 t0 type C2
c%115 c%114 cc c%113 a120 c%112 t0 type C2
c%116 c%115 cc c%114 a120 c%113 t0 type C2
h%112 c%112 ch c%111 a120 c1 t0 type H1
h%113 c%113 ch c%112 a120 c%111 t180 type H1
h%114 c%114 ch c%113 a120 c%112 t180 type H1
h%115 c%115 ch c%114 a120 c%113 t180 type H1
h%116 c%116 ch c%115 a120 c%114 t180 type H1
c%211 c2 c2c211 c1 c211c2c1 h2 c211cch type C2
c%212 c%211 cc c2 ccc%21 c1 ttw%21 type C2
c%213 c%212 cc c%211 a120 c2 tfl%21 type C2
c%214 c%213 cc c%212 a120 c%211 t0 type C2
c%215 c%214 cc c%213 a120 c%212 t0 type C2
c%216 c%215 cc c%214 a120 c%213 t0 type C2
h%112 c%212 ch c%211 a120 c2 t0 type H1
h%113 c%213 ch c%212 a120 c%211 t180 type H1
h%114 c%214 ch c%213 a120 c%212 t180 type H1
h%115 c%215 ch c%214 a120 c%213 t180 type H1
h%116 c%216 ch c%215 a120 c%214 t180 type H1
dummies
h 1 1.8 5 0.0 2 0.0 gamess
h 2 1.8 16 0.0 1 0.0 gamess
variables
cc 2.5
ch 1.8
c1c2 2.5
ch1 1.8
ch2 1.8
cch1 120.0
cch2 120.0
hcch 180.0
c1c111 2.5
c111c1c2 120.0
c111cch 180.0
ccc%11 120.0
ttw%11 30.0
tfl%11 180.0
c2c211 2.5
c211c2c1 120.0
c211cch 180.0
ccc%21 120.0
ttw%21 30.0
tfl%21 180.0
constants
t0 0
a120 120
t180 180
forcefield
declare C2 3
declare H1 1
subgroup C2 C2_q "qc carbon"
subgroup H1 H1_q "qc hydrogen"
mm2bond C2 C2 8.0667 1.3900
mm2bond C2 H1 4.600 1.1010
mm2angle C2 C2 C2 0.430 120.000 0.120
mm2angle C2 C2 H1 0.360 120.000 0.090
mm2ptor * C2 C2 * 0.000 9.200 0.00
# note the factor of 28.776 compared to the macromodel table
# (this includes 1/2 for the v/2 part)
ptor * * C2 * 0.71925 180.0 2 k-ijl
mm2_vdw C2 H1 3.4400 0.0455 0.0000
mm2_vdw C2 C2 3.8800 0.0440 0.0000
mm2_vdw H1 H1 3.0000 0.0470 0.0000
end
opt theory=hybrid : $args zmatrix=z result=r
Setting up the QM/MM Calculation explicitly
The hybrid_setup input format is convenient for small
cases where the user wishes to set the atomic attributes and parameters
individually. For macromolecular systems, and when not done directly via
theory=hybrid, however it is not practical. The
structure will be taken from a file (e.g. in PDB format) and the atomic
attributes must be set automatically.
The hybrid interface allows this; simply replace the hybrid_setup phase
of the calculation with a series of Tcl commands to assign elements
of the global Tcl variable hybrid as follows:
Element |
Argument type |
Suggested (hybrid_Setup defaults) |
To specify |
mm_theory |
module name |
mm |
MM module to invoke |
mm_theory_args |
Tcl List
|
" " |
Arguments to pass to the M code |
qm_theory |
module name |
mopac |
QM module to invoke |
qm_theory_args |
Tcl List
|
" " |
Arguments to pass to the QM code |
calculations |
Tcl List
|
{mm mopac} |
QM and MM modules |
$mm_theory,coords |
Fragment tag
|
hybrid.$mm_theory.coords |
Name of input structure for $mm_theory |
$mm_theory,energy |
Matrix tag
|
hybrid.$mm_theory.energy |
Name of matrix to hold MM Energy |
$mm_theory,gradient |
Matrix tag
|
hybrid.$mm_theory.gradient |
Name of matrix to hold MM Gradient |
$mm_theory,dipole |
Matrix tag
|
hybrid.$mm_theory.dipole |
Name of matrix to hold MM Dipole??? |
$qm_theory,coords |
Fragment tag
|
hybrid.$qm_theory.coords |
Name of input structure for $qm_theory |
$qm_theory,energy |
Matrix tag
|
hybrid.$qm_theory.energy |
Name of matrix to hold QM energy |
$qm_theory,gradient |
Matrix tag
|
hybrid.$qm_theory.gradient |
Name of matrix to hold QM gradient |
$qm_theory,dipole |
Matrix tag
|
hybrid.$qm_theory.dipole |
Name of matrix to hold QM Dipole |
defs |
Tcl List
|
none |
list of calculations for this atom (excluding mm) |
defs_save |
Tcl List
|
none |
same as defs |
attributes |
Tcl List
|
none |
attributes for this atom |
type |
Tcl List
|
free |
mm atom types for the atom |
charge |
Tcl List
|
unset |
list of mm site charges |
pol |
Tcl List
|
unset |
mm site polarisabilities (DRF only) |
name |
Tcl List
|
unset |
mm site labels (DRF only) |
dummies |
Tcl List
|
unset |
dummy atom specifications |
debug |
integer |
0 |
debug output |
For each atom in the quantum fragment, the corresponding defs element
should contain the name of the QM code.
In addition, a file hybrid.ff, containing the forcefield definitions
should be provided (this is generated from the forcefield data
block if hybrid_setup is employed.
|