Growing String Method (GSM)

Overview

The Growing String Method (GSM) is an adaptive path-based algorithm for finding minimum energy paths and transition states between a given reactant and product. Unlike NEB, which creates all images at once, GSM grows the path incrementally from both endpoints, adding new nodes only where needed. This adaptive growth strategy can be significantly more efficient than NEB for large molecular systems.

MAPLE's GSM implementation features Kabsch alignment of endpoints, two-ended adaptive growth with constrained mini-relaxation in the hyperplane orthogonal to the local path direction, energy-weighted tangents, a dynamic growth policy (including side pausing and forced connector pulls), and CI-STRING refinement followed by P-RFO TS optimization from the highest-energy image.

Parameters

Parameter Type Default Description
grow_step float 0.12 Step size for growing new nodes (Angstrom).
grow_step_min float 0.02 Minimum growing step size.
grow_backtrack float 0.5 Backtracking factor during growth.
grow_relax_iters int 10 Relaxation iterations after each growth step.
grow_relax_tol float 2.5e-3 Force tolerance for growth relaxation.
grow_energy_tol float 1.0e-3 Energy tolerance for growth relaxation (Eh).
pause_imbalance int 2 Pause growth from one end if it leads the other by this many nodes.
refine_end_every int 3 Re-optimize endpoint images every N growth steps.
merge_threshold float 0.5 Distance threshold for merging approaching fronts (Angstrom).
n_images int 9 Target number of string images.
max_iter_relax int 300 Maximum iterations for full string relaxation.
string_f_max_th float 5.0e-3 Max force convergence threshold for string.
string_f_rms_th float 1.0e-3 RMS force convergence threshold for string.
lbfgs_memory int 7 L-BFGS memory for string relaxation.
lbfgs_curvature float 70.0 L-BFGS initial curvature estimate.
lbfgs_max_step float 0.2 L-BFGS maximum step.
reparam_every int 3 Reparametrize string every N iterations.
refine str None Post-string refinement: None, "cistring", or "stringts".
cistring_f_max_th float 4.0e-3 Max force threshold for CI-String refinement.
cistring_f_rms_th float 2.0e-3 RMS force threshold for CI-String refinement.
max_iter_grow int 100 Maximum iterations for the growing phase.
log_every int 1 Log progress every N iterations.
guide_conn_min float 0.3 Minimum connectivity for geodesic guiding.
guide_d_switch float 4.0 Distance switch for geodesic guidance.
guide_inc_trigger int 2 Trigger for increasing guidance strength.

Input Example

#model=ani1xnr
#ts(method=string,refine=stringts)
#device=gpu0

XYZ /path/to/reactant.xyz
XYZ /path/to/product.xyz

Output

  • *_gsm_grow_final.xyz — The final path after the growth phase is complete, before reparameterization and refinement.
  • *_gsm_mep.xyz — The reparameterized minimum energy path with equally spaced images.
  • *_stringts_ts.xyz — The final optimized TS geometry obtained from P-RFO refinement of the highest-energy image along the string.

Comparison with NEB

Both GSM and NEB are path-based methods that require reactant and product endpoints. The key differences are:

Aspect NEB String/GSM
Path construction All images created at once via interpolation Images grown adaptively from both ends
Computational cost All images evaluated at every iteration Only frontier images evaluated during growth
Large systems Can be expensive due to many simultaneous images More efficient; fewer evaluations needed during growth
Path resolution Uniform resolution along entire path Adaptive resolution; concentrates images where needed
Robustness Well-established; generally robust Can stall for very large structural differences

For small to medium systems with modest structural changes, NEB and GSM typically perform comparably. For large systems (hundreds of atoms) or reactions with large geometric rearrangements, GSM's adaptive growth can provide significant computational savings.