Optimization with the built-in geomeTRIC optimizer
TeraChem's built-in geomeTRIC optimizer (also known as the "new minimizer") is an alternative to DL-Find for minimization. It was developed by Lee-Ping Wang and Chenchen Song.1 Compared to DL-Find it offers a more powerful internal coordinate system — including translation-rotation internal coordinates (TRIC), which behave especially well for systems containing multiple non-covalent fragments — and a richer constraint syntax (freeze, set, scan).
A separate Python implementation of the geomeTRIC package, which drives TeraChem through energy/gradient calls, is documented under geomeTRIC Python.
Enabling the optimizer
The built-in geomeTRIC optimizer is selected by combining the standard run
minimize request with the new_minimizer keyword:
If new_minimizer is omitted (or set to no), TeraChem falls back to DL-Find.
Coordinate systems
The coordinate system is selected with min_coordinates:
| Value | Description |
|---|---|
cartesian (cart) |
Ordinary Cartesian coordinates |
internal |
Redundant internal coordinates |
dlc |
Delocalized internal coordinates (default) |
hdlc |
Hybrid delocalized internal coordinates — DLC for each connected fragment plus Cartesians describing fragment positions |
tric |
Translation-rotation internal coordinates — DLC for each fragment plus rotation/translation coordinates between fragments. Recommended for non-covalent complexes. |
Convergence
By default the optimizer requires all five of the following thresholds to be satisfied. Each can be tightened or loosened independently:
| Keyword | Default | Quantity |
|---|---|---|
min_converge_e |
1e-6 | Energy change between successive steps |
min_converge_grms |
3e-4 | RMS of the gradient |
min_converge_gmax |
4.5e-4 | Maximum component of the gradient |
min_converge_drms |
1.2e-3 | RMS of the displacement |
min_converge_dmax |
1.8e-3 | Maximum component of the displacement |
min_maxiter |
1000 | Maximum number of optimization steps |
Constraints
Constraints are not specified through individual keywords; instead, the start file
contains one or more $constraint_freeze, $constraint_set, and
$constraint_scan blocks terminated by $end. Atom indices in these blocks are
1-based (the first atom in the coordinate file is atom 1).
Freezing degrees of freedom
$constraint_freeze holds the listed coordinates at their initial values. Multiple
constraints of the same type are comma-separated; the atoms within one constraint
are joined with underscores.
$constraint_freeze
bond 5_6
bond 5_6,7_8,9_10
angle 1_2_3
dihedral 3_4_5_6,7_8_9_10
outofplane 1_2_3_4
xyz 5 # freeze all three Cartesian components of atom 5
xy 5-11,13,35 # freeze the x and y components only
trans-xy 1,2,3,4-10,6,7 # freeze the x,y components of the center of mass
trans-z 1,3-10,12-17 # freeze the z component of the center of mass
rotation 1-10,14-19 # freeze rotation of the listed fragment
$end
Setting targets
$constraint_set constrains a coordinate to a specific value. The value (in
Angstroms for distances, degrees for angles) appears immediately after the type:
$constraint_set
angle 30.0 3_1_2
angle 30.0 1_2_3,4_5_6
z 5.0 1-3,4
trans-x 30.0 7-10
rotation 1.0 0.0 0.0 30.0 3,5,6,10-19 # rotate fragment by 30° about axis (1,0,0)
$end
Scans
$constraint_scan runs a series of constrained optimizations, stepping the
constrained coordinate from a starting value to an ending value in a fixed number
of steps. Syntax: <type> <start> <end> <nsteps> <atom_list>.
$constraint_scan
bond 1.75 2.35 3 3_9 # 3 points from 1.75 to 2.35 Å
angle 30.0 120.0 10 3_4_5
rotation 30.0 120.0 10 1.0 0.0 0.0 3-10,12-49 # angle range about a fixed axis
trans-z 0.0 4.0 10 4,5,6,7-10
z 0.0 4.0 10 4
$end
The output trajectory contains one segment per scan point, and combining multiple constraints inside the same scan block walks the Cartesian product of the requested grids.
Examples
Plain minimization (water, PBE0/3-21G)
gpus 4
basis 3-21g
coordinates water.xyz
charge 0
method pbe0
spinmult 1
purify no
threall 1e-14
convthre 1e-8
run minimize
new_minimizer yes
end
Cartesian freeze (benzene ring fixed, substituents relaxed)
method b3lyp
basis 6-31g*
coordinates C6H6.pdb
charge 0
dftd d3
run minimize
new_minimizer yes
purify false
convthre 1e-6
threall 1e-16
end
$constraint_freeze
xyz 1-6
$end
Bond scan with explicit Cartesian coordinates
method UB3LYP
basis 6-31g
coordinates S0_WB97XD3_CCPVDZ_OPT_ANTI.xyz
charge 0
threall 1.0e-15
dftgrid 2
precision mixed
purify no
convthre 1.0e-7
run minimize
new_minimizer yes
min_coordinates cart
min_maxiter 10
end
$constraint_scan
bond 1.75 2.35 3 3_9
$end
QM/MM minimization driven through Amber
prmtop 2ALA.parm7
coordinates 2ALA.rst7
qmindices 2ALA.qmregion
basis 3-21g
method blyp
precision mixed
charge 1
spinmult 1
run minimize
new_minimizer yes
end
Summary of keywords
| Keyword | Type | Default | Description |
|---|---|---|---|
new_minimizer |
bool | no | Enable the built-in geomeTRIC optimizer |
min_coordinates |
string | dlc |
Coordinate system: cartesian/cart, internal, dlc, hdlc, tric |
min_maxiter |
int | 1000 | Maximum number of optimization steps |
min_converge_e |
float | 1e-6 | Energy convergence threshold |
min_converge_grms |
float | 3e-4 | RMS gradient convergence threshold |
min_converge_gmax |
float | 4.5e-4 | Max-component gradient threshold |
min_converge_drms |
float | 1.2e-3 | RMS displacement threshold |
min_converge_dmax |
float | 1.8e-3 | Max-component displacement threshold |
min_trust_extend |
bool | no | Allow the trust radius to extend beyond the standard maximum |
min_verbose |
int | 0 | Verbosity (0 minimal, 1 includes linear-angle and internal-iteration info, 2 adds full coordinate-system and inversion diagnostics) |
-
L.-P. Wang and C. C. Song, "Geometry optimization made simple with translation and rotation coordinates", J. Chem. Phys. 144, 214108 (2016). ↩