Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 8 additions & 9 deletions src/DynamicsMethods/IntegrationAlgorithms/mint.jl
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ using UnPack: @unpack
using MuladdMacro: @muladd
using StaticArrays: SMatrix
using LinearAlgebra: Hermitian, tr, dot
using FastLapackInterface
using NQCDynamics.DynamicsMethods: MappingVariableMethods
using NQCModels: nstates, NQCModels

Expand Down Expand Up @@ -98,8 +97,8 @@ function propagate_mapping_variables!(integrator_cache, cache, X, P, rtmp, dt)
NQCCalculators.update_cache!(cache, rtmp)
eigen = NQCCalculators.get_eigen(cache, rtmp)

set_C_propagator!(C, integrator_cache, eigen, dt)
set_D_propagator!(D, integrator_cache, eigen, dt)
set_C_propagator!(C, integrator_cache, eigen.w, eigen.Z, dt)
set_D_propagator!(D, integrator_cache, eigen.w, eigen.Z, dt)

# tmp_vec1 = C*X - D*P
mul!(tmp_vec1, C, X)
Expand All @@ -114,21 +113,21 @@ function propagate_mapping_variables!(integrator_cache, cache, X, P, rtmp, dt)
end

"Get the `C` propagator for the mapping variables."
function set_C_propagator!(C, integrator_cache, eigen::HermitianEigenWs, dt::Real)
function set_C_propagator!(C, integrator_cache, eigenvalues::AbstractVector, eigenvectors::AbstractMatrix, dt::Real)
fill!(C, zero(eltype(C)))
for i in axes(C,1)
C[i,i] = cos(eigen.w[i] * dt)
C[i,i] = cos(eigenvalues[i] * dt)
end
transform_matrix!(C, eigen.Z, integrator_cache.tmp_mat)
transform_matrix!(C, eigenvectors, integrator_cache.tmp_mat)
end

"Get the `D` propagator for the mapping variables."
function set_D_propagator!(D, integrator_cache, eigen::HermitianEigenWs, dt::Real)
function set_D_propagator!(D, integrator_cache, eigenvalues::AbstractVector, eigenvectors::AbstractMatrix, dt::Real)
fill!(D, zero(eltype(D)))
for i in axes(D,1)
D[i,i] = sin(-eigen.w[i] * dt)
D[i,i] = sin(-eigenvalues[i] * dt)
end
transform_matrix!(D, eigen.Z, integrator_cache.tmp_mat)
transform_matrix!(D, eigenvectors, integrator_cache.tmp_mat)
end

function transform_matrix!(M, transform, tmp_mat)
Expand Down
6 changes: 2 additions & 4 deletions src/DynamicsUtils/density_matrix_dynamics.jl
Original file line number Diff line number Diff line change
Expand Up @@ -76,12 +76,10 @@ end

function evaluate_transformation(cache::Abstract_QuantumModel_Cache, r::AbstractMatrix)
NQCCalculators.update_cache!(cache, r)
#NQCCalculators.evaluate_eigen!(cache, r)
return cache.eigen.Z
return NQCCalculators.get_eigen(cache, r).Z
end

function evaluate_transformation(cache::Abstract_QuantumModel_Cache, r::AbstractArray{T,3}) where {T}
NQCCalculators.update_cache!(cache, r)
#centroid_eigs = NQCCalculators.get_centroid_eigen(cache, r)
return cache.centroid_eigen.Z
return NQCCalculators.get_centroid_eigen(cache, r).Z
end