FrictionProviders.jl
This package provides MLIP interfaces for the prediction of electronic friction tensors for molecular systems.
FrictionProviders.ACEdsODF
— MethodACEdsODF(model, gamma, atoms_julip; friction_unit=u"ps^-1")
ACEfriction.jl tensorial electronic friction provider.
Arguments
model
This is the ACEfriction.FrictionModel
used to predict the friction tensor.
gamma
The function used to evaluate the friction tensor from the model using the ACEfriction model and JuLIP Atoms as an input.
Set this to ACEfriction.Gamma
unless you need a custom function to postprocess your friction tensor before it is used in dynamics.
atoms_julip
A copy of the structure which the friction tensor will be predicted from as JuLIP.Atoms
. This should contain the same atoms and positions, in the same order as your Dynamics Simulation if you are using the model for dynamics. If you are using isotopes, their atomic masses need to be correctly set within this structure to receive the correct friction.
friction_unit
The unit in which the ACEfriction model predicts the friction tensor. By default, this is a relaxation rate tensor in inverse ps.
FrictionProviders.AceLDFA
— MethodAceLDFA(friction_IP; density_unit=u"Å^-3")
ACE.jl electron density friction provider.
# Arguments
## friction_IP
This is the JuLIP potential created from the fitted ACE model, which is used to predict the electron density as a function of atomic positions.
## density_unit
The unit in which the ACE model predicts the electron density. By default, this is in Å^-3 and should be converted to atomic units of Bohr^-3.
FrictionProviders.LDFAFriction
— MethodLDFAFriction(density, atoms; friction_atoms=collect(Int, range(atoms)))
FrictionProvider for the Local Density Friction Approximation.
# Arguments
## density
This should be an interface to the prediction of the electronic density as a function of atomic positions.
It should support a `density` method.
## atoms
`NQCBase.Atoms` for the structure in question. This determines the correct fitting curve between Wigner-Seitz radii and electronic friction as shown in Gerrits2020.
Usually, this is the same `Atoms` object as you use in your dynamics simulation.
## friction_atoms
The atom indices which electronic friction should be applied to.
FrictionProviders.friction_matrix_indices
— Methodfriction_matrix_indices(model, indices)
Returns the indices of the friction matrix corresponding to the given Atom indices.
FrictionProviders.get_friction_matrix
— Methodget_friction_matrix(model::ACEdsODF, R::AbstractMatrix, friction_atoms::AbstractVector, cutoff::Float64)
getfrictionmatrix uses an ACEdsODF
model to predict the friction matrix for friction_atoms
and return it for just those atoms.
This behaviour is different to NQCModels.friction!, which returns friction for the whole system, not just friction_atoms
.
FrictionProviders.get_friction_matrix
— Methodget_friction_matrix(model::LDFAFriction, R::AbstractMatrix)
getfrictionmatrix uses the specified density model to predict the friction matrix for friction_atoms
and return it for just those atoms. Units of friction are mass-weighted, and the atomic unit of friction is: [Eh / ħ / me] Convert common friction units such as ps^-1 or meV ps Å^-2 using UnitfulAtomic.austrip
.
This behaviour is different to NQCModels.friction!, which returns friction for the whole system, not just friction_atoms
.