FrictionModels
NQCModels.FrictionModels.ASEFrictionProvider
— TypeASEFrictionProvider{A} <: ElectronicFrictionProvider
Obtain the electronic friction from an ASE calculator that implements get_friction_tensor
. Assumes that the units of friction are "eV/Å/Å". Construct by passing the ase atoms object with the calculator already attached.
NQCModels.FrictionModels.AdiabaticFrictionModel
— TypeAdiabaticFrictionModel <: AdiabaticModel
AdiabaticFrictionModel
s must implement potential!
, derivative!
, and friction!
potential!
and friction!
should be the same as for the AdiabaticModel
.
friction!
must fill an AbstractMatrix
with size = (ndofs*natoms, ndofs*natoms)
.
NQCModels.FrictionModels.CompositeFrictionModel
— TypeCompositeFrictionModel{M,F} <: AdiabaticFrictionModel
Combine an AdiabaticModel
with an ElectronicFrictionProvider
.
This allows for arbitrary composition of potentials and friction providers, such that any adiabatic model can be augmented with any form of electronic friction.
NQCModels.FrictionModels.ElectronicFrictionProvider
— TypeElectronicFrictionProvider
Abstract type for defining models that provide electronic friction only. Subtypes of this should implement friction!
and ndofs
.
NQCModels.FrictionModels.RandomFriction
— TypeRandomFriction <: ElectronicFrictionProvider
Provide a random positive semi-definite matrix of friction values. Used mostly for testing and examples.
NQCModels.FrictionModels.friction!
— Functionfriction!(model::AdiabaticFrictionModel, F, R:AbstractMatrix)
Fill F
with the electronic friction as a function of the positions R
.
This need only be implemented for AdiabaticFrictionModel
s.
NQCModels.FrictionModels.friction
— Methodfriction(model::Model, R)
Obtain the friction for the current position R
.
This is an allocating version of friction!
.