Kinetica.jl API - ASE Interface
Kinetic Calculator
Kinetica.ASENEBCalculator
— TypeASENEBCalculator(calc_builder, calcdir_head::String[, neb_k=0.1, ftol=0.01,
climb::Bool=true, climb_ftol=0.1, maxiters=500,
interpolation::String="idpp", n_images=11, parallel::Bool=false,
geom_optimiser::String="BFGSLineSearch", neb_optimiser::String="ode",
remove_unconverged::Bool=true, vibration_displacement=1e-2,
imaginary_freq_tol=1e-2, k_max=nothing, t_unit::String="s"])
ASE-driven NEB-based TST kinetic calculator.
On invocation with an ASE-compatible energy/force calculator, optimises species geometries, creates and optimises NEB endpoints, interpolates, runs CI-NEB, and performs vibrational analysis on reactants and transition state. Caches all relevant values for TST rate constant calculation during kinetic simulation.
This calculator writes many of its results to disk, both to allow for picking up from failed calculations with minimal repeated calculations, but also such that results from one CRN are usable in others with the same reactions, eliminating unneccessary recalculation.
calc_builder
should be a Julia function that returns a Python ASE Calculator object. See src/ase/builders.jl for examples. calcdir_head
represents the directory under which all calculations should take place and all checkpointing data will be saved.
NEB images can be optimised in parallel when parallel=true
, although this is currently not memory-safe due to PythonCall's handling of the Python GIL, so should be used with caution.
Individual species and reaction endpoints are optimised under the geom_optimiser
optimisation method. In the event a NEB optimisation fails to reach convergence, the corresponding reaction is marked as unconverged and will be removed from the CRN if remove_unconverged=true
before kinetic simulation begins. If an optimisation fails completely, the corresponding reaction will be removed irrespective of this option.
Contains fields for:
- ASE Calculator object builder function (
calc_builder
) - Calculation head directory (
calcdir_head
) - (CI-)NEB spring constant (
neb_k
) - NEB convergence force tolerance (
ftol
) - Whether to enable CI-NEB after RMS force falls below
climb_ftol
(climb
) - CI-NEB activation force tolerance (
climb_ftol
) - Maximum number of iterations for NEB and geometry optimisations (
maxiters
) - NEB interpolation method (
interpolation
, currently either"linear"
or"idpp"
are supported) - Number of NEB images (
n_images
) - Whether to run parallel image optimisations (
parallel
, see above) - Geometry optimisation method (
geom_optimiser
, currently one of["BFGSLineSearch", "fire", "bfgs", "lbfgs"]
) - NEB optimisation method (
neb_optimiser
, currently one of["fire", "lbfgs", "mdmin", "ode"]
) - Whether to remove unconverged reactions before kinetic simulation (
remove_unconverged
) - Atomic displacement for vibrational analysis (
vibration_displacement
) - Tolerance under which imaginary frequencies will be allowed to exist (
imaginary_freq_tol
) - Maximum rate constant to allow under partial diffusion control (
k_max
, disabled if left asnothing
) - Time unit for rate constants (
t_unit
) - Multiplier for time unit (
t_mult
) - Vector of reaction hashes that have been calculated and cached (
cached_rhashes
) - Cache of transition states and their properties, each indexed by their reaction ID (
ts_cache
) - Working copy of a CRN
SpeciesData
(sd
) - Working copy of a CRN
RxData
(rd
)
(calc::ASENEBCalculator)(; T, P)
Calculates rates with ASE NEB calculator using TST.
Requires temperature (T
) and pressure (P
) as keyword arguments.
Automatically dispatches to a method with correct formula for k_max
-aware calculation if this is defined in the underlying ASENEBCalculator
.
Rate Constant Calculation
Kinetica.get_entropy
— Functionget_entropy(sd, sid, T, P)
Returns the entropy of a given species in sd
, indexed by species ID sid
, at temperature T
and pressure P
.
get_entropy(ts_cache, rid, mass, T, P)
Returns the entropy of the given transition state of reaction ID rid
at temperature T
and pressure P
.
mass
is usually provided as a result of accumulating reactant masses.
get_entropy(mass, inertias, geometry, symmetry, mult, vib_energies, T, P)
Returns the entropy of a given system at temperature T
and pressure P
.
Used as the generic backend for species-specific and TS-specific methods.
Kinetica.get_enthalpy
— Functionget_enthalpy(sd, sid, T)
Returns the enthalpy of a given species in sd
, indexed by species ID sid
, at temperature T
.
get_enthalpy(ts_cache, rid, T)
Returns the enthalpy of the given transition state of reaction ID rid
at temperature T
.
get_enthalpy(energy, vib_energies, geometry, T)
Returns the enthalpy of a given system at temperature T
.
Used as the generic backend for species-specific and TS-specific methods.
Kinetica.calculate_entropy_enthalpy
— Functioncalculate_entropy_enthalpy(calc, T, P)
Returns the entropy and enthalpy change of all reactions in calc.rd
at temperature T
and pressure P
.
Calculates entropy and enthalpy of every reactant species and transition state in the CRN within calc.rd
, returning the resulting entropy and enthalpy changes in units of J/mol/K and J/mol respectively.