Energy and Gradient evaluation
Using the energy and eandg drivers
Sometimes, particularly for testing purposes it is useful to
calculate a single point energy.
Using the interfaces to QM methods provided in ChemShell this is
not completely straightforward, since it is necessary to invoke
first an initialisation function, the energy (or gradient function)
and finally a termination function. Normally separate function
invocations are hidden from the user as they are issued from
another driver module (such as newopt).
For simplicity, a number of additional drivers are provided to request
a single point calculation. These are energy and
gradient and eandg, calculating energy,
gradient and energy+gradient respectively.
They take the following arguments:
Argument |
Argument type |
Mandatory |
Default |
To specify |
theory= |
Energy/Gradient code
|
yes |
- |
Method for computation |
coords= |
Fragment tag
|
yes |
- |
Fragment object containing the coordinates |
energy= |
Matrix tag
|
no |
- |
Matrix to hold the resulting energy |
gradient= |
Matrix tag
|
no |
- |
Matrix to hold the resulting gradient |
list_option= |
Output keyword
|
no |
- |
How much information to report |
In the absence of energy= and gradient= arguments
the results of the calculations are not saved to disk.
Use list_option=full if the gradient is required in the output listing.
As an example, consider calculating a B3LYP energy for the
Fragment tag
named c:
energy coords=c energy=e_b3lyp theory=gamess : { hamiltonian=b3lyp basis=dzp }
Multiple state calculations: multeg and multegh
Single point calculations can also be carried out for multiple electronic
states, for QM methods which support such calculations.
The multeg driver calculates energies and gradients for the
requested states, while multegh also calculates interstate
coupling gradients between all pairs of the requested states.
The syntax is similar to that of single state calculations:
Argument |
Argument type |
Mandatory |
Default |
To specify |
theory= |
Energy/Gradient code
|
yes |
- |
Method for computation (currently mndo, gaussian and molpro are supported) |
states= |
Tcl List
|
no |
- |
List of requested electronic states (ordered by increasing energy) |
coords= |
Fragment tag
|
yes |
- |
Fragment object containing the coordinates |
energy= |
Matrix tag
|
no |
- |
Matrix to hold the resulting energies |
gradient= |
Matrix tag
|
no |
- |
Matrix to hold the resulting gradients |
isc_gradient= |
Matrix tag
|
no |
- |
Matrix to hold the resulting interstate coupling gradients (only for multegh) |
list_option= |
Output keyword
|
no |
- |
How much information to report |
Notes regarding multiple state calculations
- A method capable of calculating multiple states must be selected via the sub-arguments to the theory keyword (e.g. GUGA-CI in MNDO, CASSCF in Gaussian, and MCSCF or RS2 in Molpro).
- The resulting gradients are stored as 3-dimensional matrices.
Multiple state calculations with Gaussian
- Gaussian multiple state calculations are state-averaged.
- For technical reasons, Gaussian multiple state calculations are limited to two adjacent states.
Multiple state calculations with Molpro
- Molpro multiple state calculations are state-averaged.
- multegh calculations are only supported for MCSCF, as RS2 interstate coupling gradients are not available in Molpro.
- Molpro has an internal limit of 5 CPMCSCF gradient directives. This means that multeg calculations using MCSCF are limited to 5 states, and multegh to 2 states.
- The symmetry of the states should not be specified, as this will be taken automatically from the value of mcscf_wf.
- MCSCF interstate coupling gradients are calculated by scaling the non-adiabatic coupling by the difference in energy between the states. This scaling is unstable when the states are extremely close to degeneracy, which can lead to convergence problems with conical intersection optimisations (unless the penalty function algorithm is used, which does not require interstate coupling gradients).
|