QuantumModels

NQCModels.QuantumModelsModule
QuantumModels

Models defined within this module subtype the QuantumModel and provide potentials as Hermitian matrices and derivatives as arrays of Hermitian matrices.

source
NQCModels.QuantumModels.AndersonHolsteinType

Newns-Anderson model

The Anderson Impurity Model (AIM) describes a localized impurity state interacting with a continuous band of bath states. AIM is a foundamental model in condensed matter physics and quantum chemistry, introduced by P.W. Anderson in 1961. The Newns-Anderson model is a generalization of the AIM, which includes the possibility of multiple impurity states and a more complex interaction with the bath. A key advantage of using the AIM lies in its ability to yield analytical solutions for the energy level distribution and the hybridization (coupling) density, making it a powerful tool for theoretical analysis.

source
NQCModels.QuantumModels.BosonBathType
BosonBath(density::SpectralDensity, N::Integer)

Bosonic bath with given spectral density.

Useful for sampling the bath uncoupled from the spin for spin-boson dynamics.

source
NQCModels.QuantumModels.ErpenbeckThossType
struct ErpenbeckThoss{T<:AbstractFloat} <: QuantumModel

1D two-state Quantum system capable of modelling a molecule adsorbed on a metal surface or a single-molecule junction.

In the two references, all of the parameters are identical except for the particle mass m and the vertical shift c applied to the ϵ₀ state. Both references modify the shift to ensure the quantum ground-state has an energy of 0 eV. Note that the mass m is specified in atomic mass units (amu) not atomic units. If a value for the vertical offset c is not explicitly provided whne constructing the model, it is automatically determined in the constructor from the Morse potential zero-point energy.

References

  • PHYSICAL REVIEW B 97, 235452 (2018)
  • J. Chem. Phys. 151, 191101 (2019)
source
NQCModels.QuantumModels.MiaoSubotnikType
MiaoSubotnik{T<:AbstractFloat} <: QuantumModel

Double well model with parameters matching those of Miao and Subotnik in the reference. This model should be paired with the AndersonHolstein model to couple to the bath of metallic states.

References

  • J. Chem. Phys. 150, 041711 (2019)
source
NQCModels.QuantumModels.QuantumFrictionModelType
QuantumFrictionModel <: QuantumModel

These models are defined identically to a typical QuantumModel but allocate extra temporary arrays when used with NQCDynamics.jl.

This allows for the calculation of electronic friction internally from the diabatic potential after diagonalisation and calculation of nonadiabatic couplings.

When a molecular dynamics with electronic friction simulation is set up in NQCDynamics, the QuantumFrictionModel is paired with a FrictionEvaluationMethod in order to calculate the electronic friction from the potential and derivative matrices.

source
NQCModels.QuantumModels.QuantumModelType
QuantumModel <: Model

QuantumModels are used when a system has multiple electronic states and the dynamics of the system are propagated by a Hamiltonian in the diabatic representation. This is the case for the majority of model systems.

Implementation

QuantumModels should implement:

  • potential!(model, R)
  • derivative!(model, D, R)
  • nstates(model)
  • ndofs(model)

Example

In this example we create a simple 2 state, 1 dimensional quantum model MyModel. As noted above, we implement the 4 relevant functions then evaluate the potential. Potential and Derivative functions take in positions as abstract matrices, since this is a 1D model the argument R should be a Real wrapped in a 1x1 matrix. It is recommended that you use the hcat() function to do this.

using StaticArrays: SMatrix
using LinearAlgebra: Hermitian

struct MyModel <: NQCModels.QuantumModels.QuantumModel end

NQCModels.nstates(::MyModel) = 2
NQCModels.ndofs(::MyModel) = 1

function NQCModels.potential!(::MyModel, V::Hermitian, R::AbstractMatrix) 
    V11 = R[1]
    V22 = -R[1]
    V12 = 1
    V = Hermitian(SMatrix{2,2}(V11, V12, V12, V22))
end

function NQCModels.derivative!(::MyModel, D::Hermitian, R::AbstractMatrix)
    D = Hermitian(SMatrix{2,2}(1, 0, 0, 1))
end

model = MyModel()
V = Hermitian(zeros(2,2))
NQCModels.potential!(model, V, hcat(10))

# output

2×2 Hermitian{Int64, SMatrix{2, 2, Int64, 4}}:
 10    1
  1  -10
source
NQCModels.QuantumModels.WideBandBathType
struct: WideBandBath <: QuantumFrictionModel

An explicit impurity-bath model which couples a quantum model to a discritised bath. The bath density of states is explicitly given by the wide-band approximation and the bath is discretised using the trapezoidal rule.

It is recommended that this is the explicit bath model used in conjuction with MDEF and the friction evaluators defined in NQCCalculators.jl. For the modelling of explicit bathstate dynamics (i.e. using dynamics methods such as IESH) it is recommended that the user use the Anderson-Holstein model alongside the Shenvi-Gauss Legendre discretisation scheme.

source
NQCModels.derivative!Method
function NQCModels.derivative!(model::AndersonHolstein, D::AbstractMatrix{<:Hermitian}, R::AbstractMatrix)
    output: nothing

Updates the derivative of the Anderson-Holstein Hamiltonian with respect to all spatial degrees of freedom to have the correct values for a given position R.

This function is multiple dispatched over the shape of derivative(model.impurity_model) as these impurities may be defined over different numbers of spatial degrees of freedom.

source
NQCModels.derivative!Method
function NQCModels.derivative!(model::WideBandBath, D::AbstractMatrix{<:Hermitian}, R::AbstractMatrix)
    output: nothing

Updates the derivative of the Anderson-Holstein Hamiltonian with respect to all spatial degrees of freedom to have the correct values for a given position R.

This fucntion is multiple dispatched over the shape of derivative(model.model) as these sub-models may be defined over different numbers of spatial degrees of freedom.

source
NQCModels.potential!Method

potential!(model::GatesHollowayElbow, V::Hermitian, R::AbstractMatrix)

finds the 2x2 potential matrix for a particle with an internal degree of freedom, x, and a distance from the surface, z, modelled as the sum of a repulsive and Morse potential. As it's currently implemented, the model is only defined for a single particle as the potential is only caclulated based on a single pair of x and z values.

source
NQCModels.potentialMethod

potential(model::GatesHollowayElbow, R::AbstractMatrix)

finds the 2x2 potential matrix for a particle with an internal degree of freedom, x, and a distance from the surface, z, modelled as the sum of a repulsive and Morse potential. As it's currently implemented, the model is only defined for a single particle as the potential is only caclulated based on a single pair of x and z values.

source