From 7722a4784f201a24d8bd40a7606ac5dfa38d8267 Mon Sep 17 00:00:00 2001 From: Ash Baldwin Date: Wed, 30 Oct 2024 11:06:45 +0000 Subject: [PATCH 1/5] changed location of get_hopping_eigenvalues() changed the location of the definition of the get_hopping_eigenvalues() function to SurfaceHoppingMethods.jl so this general surface hopping function is defined in a more appropriate location --- .../SurfaceHoppingMethods/SurfaceHoppingMethods.jl | 8 ++++++++ src/DynamicsMethods/SurfaceHoppingMethods/fssh.jl | 4 ---- src/DynamicsMethods/SurfaceHoppingMethods/rpsh.jl | 4 ---- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/DynamicsMethods/SurfaceHoppingMethods/SurfaceHoppingMethods.jl b/src/DynamicsMethods/SurfaceHoppingMethods/SurfaceHoppingMethods.jl index 95748db90..500329bff 100644 --- a/src/DynamicsMethods/SurfaceHoppingMethods/SurfaceHoppingMethods.jl +++ b/src/DynamicsMethods/SurfaceHoppingMethods/SurfaceHoppingMethods.jl @@ -84,6 +84,14 @@ function DynamicsMethods.create_problem(u0, tspan, sim::AbstractSimulation{<:Sur callback=DynamicsMethods.get_callbacks(sim)) end +function DynamicsUtils.get_hopping_eigenvalues(sim::Simulation, r::AbstractMatrix) + return Calculators.get_eigen(sim.calculator, r).values +end + +function DynamicsUtils.get_hopping_nonadiabatic_coupling(sim::RingPolymerSimulation, r::AbstractArray{T,3}) where {T} + return Calculators.get_centroid_nonadiabatic_coupling(sim.calculator, r) +end + include("decoherence_corrections.jl") include("surface_hopping.jl") include("fssh.jl") diff --git a/src/DynamicsMethods/SurfaceHoppingMethods/fssh.jl b/src/DynamicsMethods/SurfaceHoppingMethods/fssh.jl index 1ce017da1..6ce5e3f8e 100644 --- a/src/DynamicsMethods/SurfaceHoppingMethods/fssh.jl +++ b/src/DynamicsMethods/SurfaceHoppingMethods/fssh.jl @@ -83,10 +83,6 @@ function DynamicsUtils.get_hopping_velocity(::Simulation, v::AbstractMatrix) return v end -function DynamicsUtils.get_hopping_eigenvalues(sim::Simulation, r::AbstractMatrix) - return Calculators.get_eigen(sim.calculator, r).values -end - function fewest_switches_probability!(probability, v, σ, s, d, dt) probability .= 0 # Set all entries to 0 for m in axes(σ, 1) diff --git a/src/DynamicsMethods/SurfaceHoppingMethods/rpsh.jl b/src/DynamicsMethods/SurfaceHoppingMethods/rpsh.jl index d3924205d..115b7dab8 100644 --- a/src/DynamicsMethods/SurfaceHoppingMethods/rpsh.jl +++ b/src/DynamicsMethods/SurfaceHoppingMethods/rpsh.jl @@ -27,10 +27,6 @@ function DynamicsMethods.motion!(du, u, sim::RingPolymerSimulation{<:SurfaceHopp DynamicsUtils.set_quantum_derivative!(dσ, u, sim) end -function DynamicsUtils.get_hopping_nonadiabatic_coupling(sim::RingPolymerSimulation, r::AbstractArray{T,3}) where {T} - return Calculators.get_centroid_nonadiabatic_coupling(sim.calculator, r) -end - function DynamicsUtils.get_hopping_velocity(::RingPolymerSimulation, v::AbstractArray{T,3}) where {T} return get_centroid(v) end From c9efd175d083393c1795ff853035a31e20754d67 Mon Sep 17 00:00:00 2001 From: Ash Baldwin Date: Wed, 30 Oct 2024 11:10:49 +0000 Subject: [PATCH 2/5] fixing mistake in previous commit Previous commit copied over the wrong function from SurfaceHoppingMethods\rpsh.jl --- .../SurfaceHoppingMethods/SurfaceHoppingMethods.jl | 4 ++-- src/DynamicsMethods/SurfaceHoppingMethods/rpsh.jl | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/DynamicsMethods/SurfaceHoppingMethods/SurfaceHoppingMethods.jl b/src/DynamicsMethods/SurfaceHoppingMethods/SurfaceHoppingMethods.jl index 500329bff..782b30cfd 100644 --- a/src/DynamicsMethods/SurfaceHoppingMethods/SurfaceHoppingMethods.jl +++ b/src/DynamicsMethods/SurfaceHoppingMethods/SurfaceHoppingMethods.jl @@ -88,8 +88,8 @@ function DynamicsUtils.get_hopping_eigenvalues(sim::Simulation, r::AbstractMatri return Calculators.get_eigen(sim.calculator, r).values end -function DynamicsUtils.get_hopping_nonadiabatic_coupling(sim::RingPolymerSimulation, r::AbstractArray{T,3}) where {T} - return Calculators.get_centroid_nonadiabatic_coupling(sim.calculator, r) +function DynamicsUtils.get_hopping_eigenvalues(sim::RingPolymerSimulation, r::AbstractArray{T,3}) where {T} + return Calculators.get_centroid_eigen(sim.calculator, r).values end include("decoherence_corrections.jl") diff --git a/src/DynamicsMethods/SurfaceHoppingMethods/rpsh.jl b/src/DynamicsMethods/SurfaceHoppingMethods/rpsh.jl index 115b7dab8..490f69761 100644 --- a/src/DynamicsMethods/SurfaceHoppingMethods/rpsh.jl +++ b/src/DynamicsMethods/SurfaceHoppingMethods/rpsh.jl @@ -27,12 +27,12 @@ function DynamicsMethods.motion!(du, u, sim::RingPolymerSimulation{<:SurfaceHopp DynamicsUtils.set_quantum_derivative!(dσ, u, sim) end -function DynamicsUtils.get_hopping_velocity(::RingPolymerSimulation, v::AbstractArray{T,3}) where {T} - return get_centroid(v) +function DynamicsUtils.get_hopping_nonadiabatic_coupling(sim::RingPolymerSimulation, r::AbstractArray{T,3}) where {T} + return Calculators.get_centroid_nonadiabatic_coupling(sim.calculator, r) end -function DynamicsUtils.get_hopping_eigenvalues(sim::RingPolymerSimulation, r::AbstractArray{T,3}) where {T} - return Calculators.get_centroid_eigen(sim.calculator, r).values +function DynamicsUtils.get_hopping_velocity(::RingPolymerSimulation, v::AbstractArray{T,3}) where {T} + return get_centroid(v) end function perform_rescaling!( From 96081d1eb282a0baeccf4deef31a16109e27fdb6 Mon Sep 17 00:00:00 2001 From: Ash Baldwin Date: Wed, 30 Oct 2024 12:59:51 +0000 Subject: [PATCH 3/5] added RingPolymerSimulation as dependency in SurfaceHoppingMethods.jl --- .../SurfaceHoppingMethods/SurfaceHoppingMethods.jl | 1 + 1 file changed, 1 insertion(+) diff --git a/src/DynamicsMethods/SurfaceHoppingMethods/SurfaceHoppingMethods.jl b/src/DynamicsMethods/SurfaceHoppingMethods/SurfaceHoppingMethods.jl index 782b30cfd..2a407714d 100644 --- a/src/DynamicsMethods/SurfaceHoppingMethods/SurfaceHoppingMethods.jl +++ b/src/DynamicsMethods/SurfaceHoppingMethods/SurfaceHoppingMethods.jl @@ -16,6 +16,7 @@ using NQCDynamics: NQCDynamics, AbstractSimulation, Simulation, + RingPolymerSimulation, Calculators, DynamicsMethods, DynamicsUtils, From 3d82977e775f6974727698d3a1a68a07030ca710 Mon Sep 17 00:00:00 2001 From: Ash Baldwin Date: Thu, 31 Oct 2024 15:27:03 +0000 Subject: [PATCH 4/5] Moved general surface hopping functions to SurfaceHoppingMethods.jl (#356) Moved two generally applicable surface hopping functions get_hopping_nonadiabatic_coupling() and get_hopping_velocity() to SurfaceHoppingMethods.jl and moved their duplicate RingPolymer definitions to the same file to bring these definitions more in line with the duplicate function definition philosophy in the rest of NQCD --- .../SurfaceHoppingMethods.jl | 16 ++++++++++++++++ .../SurfaceHoppingMethods/fssh.jl | 8 -------- .../SurfaceHoppingMethods/rpsh.jl | 8 -------- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/DynamicsMethods/SurfaceHoppingMethods/SurfaceHoppingMethods.jl b/src/DynamicsMethods/SurfaceHoppingMethods/SurfaceHoppingMethods.jl index 2a407714d..d439ab8a6 100644 --- a/src/DynamicsMethods/SurfaceHoppingMethods/SurfaceHoppingMethods.jl +++ b/src/DynamicsMethods/SurfaceHoppingMethods/SurfaceHoppingMethods.jl @@ -93,6 +93,22 @@ function DynamicsUtils.get_hopping_eigenvalues(sim::RingPolymerSimulation, r::Ab return Calculators.get_centroid_eigen(sim.calculator, r).values end +function DynamicsUtils.get_hopping_nonadiabatic_coupling(sim::Simulation, r::AbstractMatrix) + return Calculators.get_nonadiabatic_coupling(sim.calculator, r) +end + +function DynamicsUtils.get_hopping_nonadiabatic_coupling(sim::RingPolymerSimulation, r::AbstractArray{T,3}) where {T} + return Calculators.get_centroid_nonadiabatic_coupling(sim.calculator, r) +end + +function DynamicsUtils.get_hopping_velocity(::Simulation, v::AbstractMatrix) + return v +end + +function DynamicsUtils.get_hopping_velocity(::RingPolymerSimulation, v::AbstractArray{T,3}) where {T} + return get_centroid(v) +end + include("decoherence_corrections.jl") include("surface_hopping.jl") include("fssh.jl") diff --git a/src/DynamicsMethods/SurfaceHoppingMethods/fssh.jl b/src/DynamicsMethods/SurfaceHoppingMethods/fssh.jl index 6ce5e3f8e..05145e9c1 100644 --- a/src/DynamicsMethods/SurfaceHoppingMethods/fssh.jl +++ b/src/DynamicsMethods/SurfaceHoppingMethods/fssh.jl @@ -75,14 +75,6 @@ function evaluate_hopping_probability!(sim::AbstractSimulation{<:FSSH}, u, dt) fewest_switches_probability!(sim.method.hopping_probability, v, σ, s, d, dt) end -function DynamicsUtils.get_hopping_nonadiabatic_coupling(sim::Simulation, r::AbstractMatrix) - return Calculators.get_nonadiabatic_coupling(sim.calculator, r) -end - -function DynamicsUtils.get_hopping_velocity(::Simulation, v::AbstractMatrix) - return v -end - function fewest_switches_probability!(probability, v, σ, s, d, dt) probability .= 0 # Set all entries to 0 for m in axes(σ, 1) diff --git a/src/DynamicsMethods/SurfaceHoppingMethods/rpsh.jl b/src/DynamicsMethods/SurfaceHoppingMethods/rpsh.jl index 490f69761..6d3f6bd18 100644 --- a/src/DynamicsMethods/SurfaceHoppingMethods/rpsh.jl +++ b/src/DynamicsMethods/SurfaceHoppingMethods/rpsh.jl @@ -27,14 +27,6 @@ function DynamicsMethods.motion!(du, u, sim::RingPolymerSimulation{<:SurfaceHopp DynamicsUtils.set_quantum_derivative!(dσ, u, sim) end -function DynamicsUtils.get_hopping_nonadiabatic_coupling(sim::RingPolymerSimulation, r::AbstractArray{T,3}) where {T} - return Calculators.get_centroid_nonadiabatic_coupling(sim.calculator, r) -end - -function DynamicsUtils.get_hopping_velocity(::RingPolymerSimulation, v::AbstractArray{T,3}) where {T} - return get_centroid(v) -end - function perform_rescaling!( sim::RingPolymerSimulation{<:SurfaceHopping}, velocity, γ, d ) From 5315c9927ae9f86488dfa47a0e1d2cdaf39b2851 Mon Sep 17 00:00:00 2001 From: Ash Baldwin Date: Tue, 5 Nov 2024 15:07:44 +0000 Subject: [PATCH 5/5] Imported get_centroid() to SurfaceHoppingMethods Added get_centroid() to SurfaceHoppingMethods.jl so that get_hopping_velocity() is able to work as expected. --- .../SurfaceHoppingMethods/SurfaceHoppingMethods.jl | 1 + 1 file changed, 1 insertion(+) diff --git a/src/DynamicsMethods/SurfaceHoppingMethods/SurfaceHoppingMethods.jl b/src/DynamicsMethods/SurfaceHoppingMethods/SurfaceHoppingMethods.jl index d439ab8a6..e97573d13 100644 --- a/src/DynamicsMethods/SurfaceHoppingMethods/SurfaceHoppingMethods.jl +++ b/src/DynamicsMethods/SurfaceHoppingMethods/SurfaceHoppingMethods.jl @@ -11,6 +11,7 @@ using ComponentArrays: ComponentVector using DiffEqBase: DiffEqBase using LinearAlgebra: LinearAlgebra, lmul! using OrdinaryDiffEq: OrdinaryDiffEq +using RingPolymerArrays: get_centroid using NQCDynamics: NQCDynamics,