Analysis
NQCDynamics.Analysis
— ModuleAnalysis functions common enough to be included in the main package.
NQCDynamics.Analysis.Diatomic
— ModuleAnalysis functions for surface chemistry of diatomic molecules.
NQCDynamics.Analysis.Diatomic.com_velocity_condition
— Methodcom_velocity_condition(x::AbstractArray, indices::Vector{Int}, simulation::AbstractSimulation; surface_normal::AbstractVector=[0,0,1])
Evaluates true if the centre of mass velocity vector of the diatomic molecule points to the surface.
NQCDynamics.Analysis.Diatomic.get_desorption_frame
— Methodget_desorption_frame(trajectory::Vector, diatomic_indices::Vector{Int}, simulation::AbstractSimulation;surface_normal::Vector=[0,0,1], surface_distance_threshold=5.0*u"Å")
Determines the index in a trajectory where surface desorption begins.
This is evaluated using two conditions:
In the trajectory, the diatomic must be
surface_distance_threshold
or further away from the highest other atom. (Insurface_normal
direction).Desorption begins at the turning point of the centre of mass velocity component along
surface_normal
, indicating overall movement away from the surface.
NQCDynamics.Analysis.Diatomic.surface_distance_condition
— Methodsurface_distance_condition(x::AbstractArray, indices::Vector{Int}, simulation::AbstractSimulation; surface_distance_threshold=5.0*u"Å")
Checks that the diatomic molecule is at least `surface_distance_threshold` away from the highest substrate atom in the simulation.
NQCDynamics.Analysis.Diatomic.transform_U
— Methodtransform_U(config::Matrix, index1::Int, index2::Int, sim::Simulation)
Builds diatomic Cartesian to internal coordinate transformation matrix as described in the SI of 10.1021/jacsau.0c00066