Kinetica.jl API - ASE Interface

Kinetic Calculator

Kinetica.ASENEBCalculatorType
ASENEBCalculator(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 as nothing)
  • 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)
source
(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.

source

Rate Constant Calculation

Kinetica.get_entropyFunction
get_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.

source
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.

source
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.

source
Kinetica.get_enthalpyFunction
get_enthalpy(sd, sid, T)

Returns the enthalpy of a given species in sd, indexed by species ID sid, at temperature T.

source
get_enthalpy(ts_cache, rid, T)

Returns the enthalpy of the given transition state of reaction ID rid at temperature T.

source
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.

source
Kinetica.calculate_entropy_enthalpyFunction
calculate_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.

source