Construct a Reaction-Path Problem
A reaction-path problem bundles all computational ingredients needed to evaluate the quantum-mechanical ground-state energy of a sequence of molecular geometries (reaction path or scan). Each geometry is evaluated as a separate ground-state problem, with optional specialized handling for embedded calculations.
Goal
Build a reaction-path problem from a reaction configuration.
Prerequisites
A reaction configuration (see Create a ReactionConfiguration)
(For
simplereaction builder) a ground-state problem builder (see Construct a Ground State Energy Problem)
Steps
Create the reaction-path problem builder (simple case)
The
reaction_path()builder wraps a ground-state problem builder to run it over all geometries in the reaction configuration..simple(problem_builder): applies the same ground-state problem builder to every geometry.
See Understanding and Using Kvantify Qrunch’s Fluent Builder Pattern for details on the builder pattern and how to use them.
Example:
import qrunch as qc # Create a simple reaction-path builder reaction_problem_builder = ( qc.problem_builder_creator() .reaction_path() .simple(problem_builder) # Required ground-state problem builder .create() )
Build the reaction-path problem
You can build either a restricted or unrestricted reaction-path problem, just like for single-geometry ground-state problems:
# Unrestricted reaction_problem = reaction_problem_builder.build_unrestricted(reaction_configuration) # or Restricted reaction_problem = reaction_problem_builder.build_restricted(reaction_configuration)
In both cases, the result is a reaction-path problem object containing one ground-state problem per geometry.
Alternative: Even-Handed Reaction Builder
The even_handed() reaction-path builder implements the Even-handed subsystem selection method
(see doi:10.1063/1.5050533).
This approach:
Uses Wavefunction-in-DFT projection-based embedding
Selects subsystems consistently along the path
Accepts all configuration options of the
projective_embeddingground-state problem builder (see Create a Projective-Embedding Ground-State Problem for details)
Example:
import qrunch as qc
even_handed_reaction_problem_builder = (
qc.problem_builder_creator()
.reaction_path()
.even_handed()
# Add .<projective_embedding options> here
.create()
)
reaction_problem = even_handed_reaction_problem_builder.build_restricted(reaction_configuration)
See Also
Next Step
You can use the reaction-path problem to calculate energies along the path: