(git:b1f098b)
Loading...
Searching...
No Matches
ls_matrix_exp Module Reference

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.
 

Detailed Description

Routines for calculating a complex matrix exponential with dbcsr matrices. Based on the code in matrix_exp.F from Florian Schiffmann.

Author
Samuel Andermatt (02.14)

Function/Subroutine Documentation

◆ cp_complex_dbcsr_gemm_3()

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 )

Parameters
transa: 'N' -> normal 'T' -> transpose alpha,beta :: can be 0.0_dp and 1.0_dp
transb...
alpha...
A_rem x k matrix ( ! for transa = 'N'), real part
A_imm x k matrix ( ! for transa = 'N'), imaginary part
B_rek x n matrix ( ! for transb = 'N'), real part
B_imk x n matrix ( ! for transb = 'N'), imaginary part
beta...
C_rem x n matrix, real part
C_imm x n matrix, imaginary part
filter_eps...
Author
Samuel Andermatt
Note
C should have no overlap with A, B This subroutine uses three real matrix multiplications instead of two complex This reduces the amount of flops and memory bandwidth by 25%, but for memory bandwidth true complex algebra is still superior (one third less bandwidth needed) limited cases matrix multiplications

Definition at line 63 of file ls_matrix_exp.F.

Here is the caller graph for this function:

◆ taylor_only_imaginary_dbcsr()

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

Parameters
exp_H...
im_matrix...
nsquare...
ntaylor...
filter_eps...
Author
Samuel Andermatt (02.2014)

Definition at line 162 of file ls_matrix_exp.F.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ taylor_full_complex_dbcsr()

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

Parameters
exp_H...
re_part...
im_part...
nsquare...
ntaylor...
filter_eps...
Author
Samuel Andermatt (02.2014)

Definition at line 257 of file ls_matrix_exp.F.

Here is the caller graph for this function:

◆ bch_expansion_imaginary_propagator()

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.

Parameters
propagatorThe exponent of the matrix exponential
density_reReal part of the density matrix
density_imImaginary part of the density matrix
filter_epsThe filtering threshold for all matrices
filter_eps_small...
eps_expThe accuracy of the exponential
Author
Samuel Andermatt (02.2014)

Definition at line 348 of file ls_matrix_exp.F.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ bch_expansion_complex_propagator()

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.

Parameters
propagator_reReal part of the exponent
propagator_imImaginary part of the exponent
density_reReal part of the density matrix
density_imImaginary part of the density matrix
filter_epsThe filtering threshold for all matrices
filter_eps_small...
eps_expThe accuracy of the exponential
Author
Samuel Andermatt (02.2014)

Definition at line 437 of file ls_matrix_exp.F.

Here is the call graph for this function:
Here is the caller graph for this function: