VibrationalAnalysis API
VibrationalAnalysis
— ModuleVibrationalAnalysis.jl
This module contains functions to perform vibrational analysis on a QMCFC output.
Usage
Can read directly from rst-file, moldescriptor-file and hessian-file and perform vibrational analysis on the system.
julia> read_calculate("restart.rst", "hessian.dat", "moldescriptor.dat")
Or directly perform a vibrational analysis with atom masses, atom coordinates, atom charges and hessian of the system.
julia> wavenumbers, intensities, _, _ = calculate(atom_masses, atom_coords, atom_charges, hessian)
+julia> write_wavenumber_intensity(wavenumbers, intensities, filename="wavenumbers.dat")
Module Index
VibrationalAnalysis.VibrationalAnalysis
VibrationalAnalysis.calculate
VibrationalAnalysis.calculate
VibrationalAnalysis.read_hessian
VibrationalAnalysis.read_moldescriptor
VibrationalAnalysis.read_rst
VibrationalAnalysis.wavenumber_eV
VibrationalAnalysis.wavenumber_hartree
VibrationalAnalysis.wavenumber_kcal
VibrationalAnalysis.write_calculate_output
VibrationalAnalysis.write_calculate_output
VibrationalAnalysis.write_calculate_output
VibrationalAnalysis.write_modes
VibrationalAnalysis.write_modes
Detailed API
VibrationalAnalysis.VibrationalAnalysis
— ModuleVibrationalAnalysis.jl
This module contains functions to perform vibrational analysis on a QMCFC output.
Usage
Can read directly from rst-file, moldescriptor-file and hessian-file and perform vibrational analysis on the system.
julia> read_calculate("restart.rst", "hessian.dat", "moldescriptor.dat")
Or directly perform a vibrational analysis with atom masses, atom coordinates, atom charges and hessian of the system.
julia> wavenumbers, intensities, _, _ = calculate(atom_masses, atom_coords, atom_charges, hessian)
+julia> write_wavenumber_intensity(wavenumbers, intensities, filename="wavenumbers.dat")
VibrationalAnalysis.calculate
— Methodcalculate(atom_masses, atom_coords, atom_charges, hessian)
Calculates the wavenumbers, force constants and reduced masses from the atom masses, atom coordinates, and the hessian.
Arguments
atom_masses::Vector{Float64}
: Vector of atom_masses (n)atom_coords::Matrix{Float64}
: Matrix of atom coordinates (3xn)hessian::Matrix{Float64}
: Matrix of the hessian (3nx3n)
Keyword Arguments
wavenumber::Function
: The wavenumber function to use. Eitherwavenumber_kcal
,wavenumber_eV
orwavenumber_hartree
. Default iswavenumber_kcal
.
Returns
wavenumbers::Vector{Float64}
: The wavenumbers.force_constants::Vector{Float64}
: The force constants.reduced_masses::Vector{Float64}
: The reduced masses.eigenvectors_internal_normalized::Matrix{Float64}
: The eigenvectors in internal coordinates.
Example
julia> calculate(atom_masses, atom_coords, hessian)
+julia> calculate(atom_masses, atom_coords, hessian, wavenumber=wavenumber_hartree)
+julia> calculate(atom_masses, atom_coords, hessian, wavenumber=wavenumber_eV)
VibrationalAnalysis.calculate
— Methodcalculate(atom_masses, atom_coords, atom_charges, hessian)
Calculates the wavenumbers, intensities, force constants and reduced masses from the atom masses, atom coordinates, atom charges and the hessian.
Arguments
atom_masses::Vector{Float64}
: Vector of atom_masses (n)atom_coords::Matrix{Float64}
: Matrix of atom coordinates (3xn)atom_charges::Vector{Float64}
: Vector of atom charges (n)hessian::Matrix{Float64}
: Matrix of the hessian (3nx3n)
Keyword Arguments
wavenumber::Function
: The wavenumber function to use. Eitherwavenumber_kcal
,wavenumber_eV
orwavenumber_hartree
. Default iswavenumber_kcal
.
Returns
wavenumbers::Vector{Float64}
: The wavenumbers.intensities::Vector{Float64}
: The intensities.force_constants::Vector{Float64}
: The force constants.reduced_masses::Vector{Float64}
: The reduced masses.eigenvectors_internal_normalized::Matrix{Float64}
: The eigenvectors in internal coordinates.
Example
julia> calculate(atom_masses, atom_coords, atom_charges, hessian)
+julia> calculate(atom_masses, atom_coords, atom_charges, hessian, wavenumber=wavenumber_hartree)
+julia> calculate(atom_masses, atom_coords, atom_charges, hessian, wavenumber=wavenumber_eV)
VibrationalAnalysis.read_hessian
— Methodread_hessian(hessian_file::String) -> hessian::Matrix{Float64}
Reads a hessian file and returns a nxn Matrix of the hessian.
Arguments
hessian_file::String
: The hessian file.
VibrationalAnalysis.read_moldescriptor
— Methodread_moldescriptor(moldescriptor_file::String) -> atom_charges::Vector{Float64}
Reads a moldescriptor file and returns atom_charges.
Arguments
moldescriptor_file::String
: The moldescriptor file.
VibrationalAnalysis.read_rst
— Methodread_rst(rst_file::String) -> atom_names::Vector{String}, atom_masses::Vector{Float64}, atom_coords::Matrix{Float64}, atom_types::Vector{Int64}
Reads a restart file and returns a tuple of atom names, masses, and coordinates.
Arguments
rst_file::String
: The restart file.
VibrationalAnalysis.wavenumber_eV
— Methodwavenumber_eV(eigenvalues::Vector{Float64}) -> wavenumbers::Vector{Float64}, omega::Vector{Float64}
Convert eigenvalues
from eV Å^-2 g^-1 to wavenumbers
in cm^-1. Made for ASE hessian files. Output include omega
in s^-2.
$ω = √v$
$ν̃ = 1/(2π * c) * ω$
Arguments
eigenvalues::Vector{Float64}
: The eigenvalues.
VibrationalAnalysis.wavenumber_hartree
— Methodwavenumber_hartree(eigenvalues::Vector{Float64}) -> wavenumbers::Vector{Float64}, omega::Vector{Float64}
Convert eigenvalues
from hartree bor^-2 g^-1 to wavenumbers
in cm^-1. Made for DFTB hessian files. Output include omega
in s^-2.
$ω = √v$
$ν̃ = 1/(2π * c) * ω$
Arguments
eigenvalues::Vector{Float64}
: The eigenvalues.
VibrationalAnalysis.wavenumber_kcal
— Methodwavenumber_kcal(eigenvalues::Vector{Float64}) -> wavenumbers::Vector{Float64}, omega::Vector{Float64}
Convert eigenvalues
from kcal Å^-2 g^-1 to wavenumbers
in cm^-1. Made for QMCFC hessian files. Output include omega
in s^-2.
$ω = √v$
$ν̃ = 1/(2π * c) * ω$
Arguments
eigenvalues::Vector{Float64}
: The eigenvalues.
VibrationalAnalysis.write_calculate_output
— Methodwrite_calculate_output(wavenumbers, intensities, force_constants, reduced_masses; filename = stdout)
Write the wavenumbers, intensities, force constants and reduced masses to a file.
Arguments
wavenumbers::Vector{Float64}
: The wavenumbers.intensities::Vector{Float64}
: The intensities.force_constants::Vector{Float64}
: The force constants.reduced_masses::Vector{Float64}
: The reduced masses.
Keyword Arguments
filename::String
: The name of the file. Default is stdout
Example
julia> using VibrationalAnalysis
+julia> write_calculate_output(wavenumbers, intensities, force_constants, reduced_masses)
VibrationalAnalysis.write_calculate_output
— Methodwrite_calculate_output(wavenumbers, force_constants, reduced_masses, eigenvectors_internal_normalized; filename = stdout)
Write the wavenumbers, force constants and reduced masses to a file.
Arguments
wavenumbers::Vector{Float64}
: The wavenumbers.force_constants::Vector{Float64}
: The force constants.reduced_masses::Vector{Float64}
: The reduced masses.
Keyword Arguments
filename::String
: The name of the file. Default is stdout.
Example
julia> using VibrationalAnalysis
+julia> write_calculate_output(wavenumbers, force_constants, reduced_masses)
VibrationalAnalysis.write_calculate_output
— Methodwrite_calculate_output(wavenumbers, intensities; filename = stdout)
Write the wavenumbers and intensities to a file.
Arguments
wavenumbers::Vector{Float64}
: The wavenumbers.intensities::Vector{Float64}
: The intensities.
Keyword Arguments
filename::String
: The name of the file. Default is stdout
Example
julia> using VibrationalAnalysis
+julia> write_calculate_output(wavenumbers, intensities)
VibrationalAnalysis.write_modes
— Methodwrite_modes(eigenvectors_internal_normalized, coord, atom_names; filename, amplitude, step)
Write the modes to a file in xyz format.
Arguments
eigenvectors_internal_normalized::Matrix{Float64}
: The eigenvectors in internal coordinates.coord::Matrix{Float64}
: The coordinates of the atoms.atom_names::Vector{String}
: The names of the atoms.
Keyword Arguments
filename::String
: The name of the file. Default is "modes".amplitude::Float64
: The amplitude of the mode. Default is 0.25.step::Float64
: The step size of the mode. Default is 0.01.
Example
julia> using VibrationalAnalysis
+julia> write_modes(eigenvectors_internal_normalized, atom_coords, atom_names)
+shell> cat modes-1.xyz
VibrationalAnalysis.write_modes
— Methodwrite_modes(eigenvectors_internal_normalized)
Write the modes to a file in matrix format.
Arguments
eigenvector_internal::Matrix{Float64}
: The eigenvectors in internal coordinates.
Keyword Arguments
filename::String
: The name of the file. Default is stdout.
Example
julia> using VibrationalAnalysis
+julia> write_modes(eigenvectors_internal_normalized)
+shell> cat modes.dat