STFC
MPI für Kohlenforschung

University College London

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.





This manual was generated using htp, an HTML pre-processor Powered by htp