![]() |
(git:b77b4be)
|
Routines for calculating a complex matrix exponential with dbcsr matrices. Based on the code in matrix_exp.F from Florian Schiffmann. More...
Functions/Subroutines | |
subroutine, public | cp_complex_dbcsr_gemm_3 (transa, transb, alpha, a_re, a_im, b_re, b_im, beta, c_re, c_im, filter_eps) |
Convenience function. Computes the matrix multiplications needed for the multiplication of complex sparse matrices. C = beta * C + alpha * ( A ** transa ) * ( B ** transb ) | |
subroutine, public | taylor_only_imaginary_dbcsr (exp_h, im_matrix, nsquare, ntaylor, filter_eps) |
specialized subroutine for purely imaginary matrix exponentials | |
subroutine, public | taylor_full_complex_dbcsr (exp_h, re_part, im_part, nsquare, ntaylor, filter_eps) |
subroutine for general complex matrix exponentials on input a separate dbcsr_type for real and complex part on output a size 2 dbcsr_p_type, first element is the real part of the exponential second the imaginary | |
subroutine, public | bch_expansion_imaginary_propagator (propagator, density_re, density_im, filter_eps, filter_eps_small, eps_exp) |
The Baker-Campbell-Hausdorff expansion for a purely imaginary exponent (e.g. rtp) Works for a non unitary propagator, because the density matrix is hermitian. | |
subroutine, public | bch_expansion_complex_propagator (propagator_re, propagator_im, density_re, density_im, filter_eps, filter_eps_small, eps_exp) |
The Baker-Campbell-Hausdorff expansion for a complex exponent (e.g. rtp) Works for a non unitary propagator, because the density matrix is hermitian. | |
Routines for calculating a complex matrix exponential with dbcsr matrices. Based on the code in matrix_exp.F from Florian Schiffmann.
subroutine, public ls_matrix_exp::cp_complex_dbcsr_gemm_3 | ( | character(len=1), intent(in) | transa, |
character(len=1), intent(in) | transb, | ||
real(kind=dp), intent(in) | alpha, | ||
type(dbcsr_type), intent(in) | a_re, | ||
type(dbcsr_type), intent(in) | a_im, | ||
type(dbcsr_type), intent(in) | b_re, | ||
type(dbcsr_type), intent(in) | b_im, | ||
real(kind=dp), intent(in) | beta, | ||
type(dbcsr_type), intent(inout) | c_re, | ||
type(dbcsr_type), intent(inout) | c_im, | ||
real(kind=dp), intent(in), optional | filter_eps | ||
) |
Convenience function. Computes the matrix multiplications needed for the multiplication of complex sparse matrices. C = beta * C + alpha * ( A ** transa ) * ( B ** transb )
transa | : 'N' -> normal 'T' -> transpose alpha,beta :: can be 0.0_dp and 1.0_dp |
transb | ... |
alpha | ... |
A_re | m x k matrix ( ! for transa = 'N'), real part |
A_im | m x k matrix ( ! for transa = 'N'), imaginary part |
B_re | k x n matrix ( ! for transb = 'N'), real part |
B_im | k x n matrix ( ! for transb = 'N'), imaginary part |
beta | ... |
C_re | m x n matrix, real part |
C_im | m x n matrix, imaginary part |
filter_eps | ... |
Definition at line 63 of file ls_matrix_exp.F.
subroutine, public ls_matrix_exp::taylor_only_imaginary_dbcsr | ( | type(dbcsr_p_type), dimension(2) | exp_h, |
type(dbcsr_type), pointer | im_matrix, | ||
integer, intent(in) | nsquare, | ||
integer, intent(in) | ntaylor, | ||
real(kind=dp), intent(in) | filter_eps | ||
) |
specialized subroutine for purely imaginary matrix exponentials
exp_H | ... |
im_matrix | ... |
nsquare | ... |
ntaylor | ... |
filter_eps | ... |
Definition at line 161 of file ls_matrix_exp.F.
subroutine, public ls_matrix_exp::taylor_full_complex_dbcsr | ( | type(dbcsr_p_type), dimension(2) | exp_h, |
type(dbcsr_type), pointer | re_part, | ||
type(dbcsr_type), pointer | im_part, | ||
integer, intent(in) | nsquare, | ||
integer, intent(in) | ntaylor, | ||
real(kind=dp), intent(in) | filter_eps | ||
) |
subroutine for general complex matrix exponentials on input a separate dbcsr_type for real and complex part on output a size 2 dbcsr_p_type, first element is the real part of the exponential second the imaginary
exp_H | ... |
re_part | ... |
im_part | ... |
nsquare | ... |
ntaylor | ... |
filter_eps | ... |
Definition at line 256 of file ls_matrix_exp.F.
subroutine, public ls_matrix_exp::bch_expansion_imaginary_propagator | ( | type(dbcsr_type), pointer | propagator, |
type(dbcsr_type), pointer | density_re, | ||
type(dbcsr_type), pointer | density_im, | ||
real(kind=dp), intent(in) | filter_eps, | ||
real(kind=dp), intent(in) | filter_eps_small, | ||
real(kind=dp), intent(in) | eps_exp | ||
) |
The Baker-Campbell-Hausdorff expansion for a purely imaginary exponent (e.g. rtp) Works for a non unitary propagator, because the density matrix is hermitian.
propagator | The exponent of the matrix exponential |
density_re | Real part of the density matrix |
density_im | Imaginary part of the density matrix |
filter_eps | The filtering threshold for all matrices |
filter_eps_small | ... |
eps_exp | The accuracy of the exponential |
Definition at line 350 of file ls_matrix_exp.F.
subroutine, public ls_matrix_exp::bch_expansion_complex_propagator | ( | type(dbcsr_type), pointer | propagator_re, |
type(dbcsr_type), pointer | propagator_im, | ||
type(dbcsr_type), pointer | density_re, | ||
type(dbcsr_type), pointer | density_im, | ||
real(kind=dp), intent(in) | filter_eps, | ||
real(kind=dp), intent(in) | filter_eps_small, | ||
real(kind=dp), intent(in) | eps_exp | ||
) |
The Baker-Campbell-Hausdorff expansion for a complex exponent (e.g. rtp) Works for a non unitary propagator, because the density matrix is hermitian.
propagator_re | Real part of the exponent |
propagator_im | Imaginary part of the exponent |
density_re | Real part of the density matrix |
density_im | Imaginary part of the density matrix |
filter_eps | The filtering threshold for all matrices |
filter_eps_small | ... |
eps_exp | The accuracy of the exponential |
Definition at line 437 of file ls_matrix_exp.F.