Analytic model library

This page plots many of the analytic models included in NQCDynamics.

AdiabaticModels

These models are used for classical dynamics and provide a single potential energy surface.

Harmonic

using NQCModels, Plots
plot(-10:0.1:10, Harmonic())
Example block output

DiatomicHarmonic

using NQCModels, Plots

model = DiatomicHarmonic(r₀=10.0)
f(x,y) = potential(model, [x y 0])
contour(-10:0.1:10, -10:0.1:10, f, fill=true)
xlabel!("x coordinate /a₀")
ylabel!("y coordinate /a₀")
Example block output

DarlingHollowayElbow

using NQCModels, Plots
using NQCBase: eV_to_au

model = DarlingHollowayElbow()
V(x,z) = potential(model, [x, z])

x = range(-0.5, 3.5, length=200)
z = range(-0.5, 4.5, length=200)

plot(
    xlabel="Bond length /a₀",
    ylabel="Surface molecule distance /a₀",
    xlims=(-0.5, 3.5),
    ylims=(-0.5, 4.5)
)

contourf!(x, z, V)
Example block output

DiabaticModels

These models define a Hermitian potential operator in a diabatic basis. These can be used for various forms of nonadiabatic dynamics.

TullyModelOne

using NQCModels, Plots
plot(-10:0.1:10, TullyModelOne(); coupling=true)
Example block output

TullyModelTwo

using NQCModels, Plots
plot(-10:0.1:10, TullyModelTwo(); coupling=true)
Example block output

TullyModelThree

using NQCModels, Plots
plot(-10:0.1:10, TullyModelThree(); coupling=true)
Example block output

ThreeStateMorse

using NQCModels, Plots
plot(2:0.01:12, ThreeStateMorse(), ylims=(0, 0.06), coupling=true)
Example block output

OuyangModelOne

using NQCModels, Plots
plot(-10:0.1:10, OuyangModelOne())
Example block output

DoubleWell

using NQCModels, Plots
plot(-5:0.1:5, DoubleWell(); coupling=true)
Example block output

GatesHollowayElbow

using NQCModels, Plots

model = GatesHollowayElbow()
v1(x,z) = potential(model, [x z])[1,1]
v2(x,z) = potential(model, [x z])[2,2]

x = range(-0.5, 4.0, length=200)
z = range(-0.5, 4.0, length=200)

contour(x, z, v1, color=:blue, levels=0:0.01:0.1, label="V11", colorbar=false)
contour!(x, z, v2, color=:red, levels=0:0.01:0.1, label="V22")
Example block output