Skip to content

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:

run             minimize
new_minimizer   yes

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)

water_min.in
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)

benzene_freeze.in
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

bond_scan.in
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

2ALA_qmmm.in
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)

  1. L.-P. Wang and C. C. Song, "Geometry optimization made simple with translation and rotation coordinates", J. Chem. Phys. 144, 214108 (2016). ↩