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, and a dynamic growth policy including side pausing and forced connector pulls. In the current runtime, the equal-arc GSM path is finalized by taking the highest-energy image into the String-TS/P-RFO output path.
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 | Accepted explicit refinement values: "cistring" or "stringts". Other values, including NEB-only refine keywords, are rejected during input parsing. |
cistring_f_max_th |
float | 4.0e-3 | Compatibility threshold for CI-String-style refinement settings; current String-TS output follows the HEI-to-P-RFO finalization path. |
cistring_f_rms_th |
float | 2.0e-3 | Compatibility threshold for CI-String-style refinement settings; current String-TS output follows the HEI-to-P-RFO finalization path. |
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
Checked-in MAPLE example: examples/ts/string/inp1.inp. It uses the same reactant/product endpoint files as the NEB example. The portable form below is for an input file saved in the MAPLE repository root; if you save the input elsewhere, adjust the XYZ paths because relative paths are resolved from the input file location.
#model=ANI-1xnr
#ts(method=string,refine=stringts)
#device=gpu0
XYZ examples/ts/neb/react.xyz
XYZ examples/ts/neb/prod.xyz
Output
The current runtime writes the String/GSM path and then the String-TS finalization files from the highest-energy image.
*_gsm_grow_final.xyz— The final path after the growth phase is complete, before reparameterization.*_gsm_mep.xyz— The reparameterized minimum energy path with equally spaced images.*_gsm_hei.xyz— The highest-energy image selected from the reparameterized string.*_stringts_mep.xyz— The path with the refined TS inserted after the selected HEI.*_stringts_ts.xyz— The final optimized TS geometry obtained from P-RFO refinement of the highest-energy image along the string.
Visualization
The String-TS visualization uses *_stringts_mep.xyz for the path and *_stringts_ts.xyz for the refined TS geometry.
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.
