Documentation for module matrix_exp

Routines for calculating a complex matrix exponential.

source: matrix_exp.F
Loading...

public Subroutines/Functions:

exponential of a complex matrix, calculated using arnoldi subspace method (directly applies to the MOs)
exponential of a complex matrix, calculated using pade approximation together with scaling and squaring
exponential of a complex matrix, calculated using pade approximation together with scaling and squaring
exponential of a real matrix, calculated using pade approximation together with scaling and squaring
optimization function for pade/taylor order and number of squaring steps
subroutine for general complex matrix exponentials on input a separate cp_fm_type for real and complex part on output a size 2 cp_fm_p_type, first element is the real part of the exponential second the imaginary
specialized subroutine for purely imaginary matrix exponentials

SUBROUTINEarnoldi(mos_old, mos_new, eps_exp, hre, him, mos_next, narn_old)

exponential of a complex matrix, calculated using arnoldi subspace method (directly applies to the MOs)

Arguments:
:: mos_old(2) ...
:: mos_new(2) ...
REAL(dp),
INTENT(in)
:: eps_exp ...
TYPE(cp_fm_type),
OPTIONAL, POINTER
:: hre ...
TYPE(cp_fm_type),
POINTER
:: him ...
OPTIONAL
:: mos_next(2) ...
INTEGER,
INTENT(inout)
:: narn_old ...

SUBROUTINEexp_pade_full_complex(exp_h, re_part, im_part, nsquare, npade)

exponential of a complex matrix, calculated using pade approximation together with scaling and squaring

Arguments:
:: exp_h(2) ...
TYPE(cp_fm_type),
POINTER
:: re_part ...
TYPE(cp_fm_type),
POINTER
:: im_part ...
INTEGER,
INTENT(in)
:: nsquare ...
INTEGER,
INTENT(in)
:: npade ...

SUBROUTINEexp_pade_only_imaginary(exp_h, im_part, nsquare, npade)

exponential of a complex matrix, calculated using pade approximation together with scaling and squaring

Arguments:
:: exp_h(2) ...
TYPE(cp_fm_type),
POINTER
:: im_part ...
INTEGER,
INTENT(in)
:: nsquare ...
INTEGER,
INTENT(in)
:: npade ...

SUBROUTINEexp_pade_real(exp_h, matrix, nsquare, npade)

exponential of a real matrix, calculated using pade approximation together with scaling and squaring

Arguments:
:: exp_h ...
TYPE(cp_fm_type),
POINTER
:: matrix ...
INTEGER,
INTENT(in)
:: nsquare ...
INTEGER,
INTENT(in)
:: npade ...

SUBROUTINEget_nsquare_norder(norm, nsquare, norder, eps_exp, method, do_emd)

optimization function for pade/taylor order and number of squaring steps

Arguments:
REAL(dp),
INTENT(in)
:: norm ...
INTEGER,
INTENT(out)
:: nsquare ...
INTEGER,
INTENT(out)
:: norder ...
REAL(dp),
INTENT(in)
:: eps_exp ...
INTEGER,
INTENT(in)
:: method ...
LOGICAL,
INTENT(in)
:: do_emd ...

SUBROUTINEtaylor_full_complex(exp_h, re_part, im_part, nsquare, ntaylor)

subroutine for general complex matrix exponentials on input a separate cp_fm_type for real and complex part on output a size 2 cp_fm_p_type, first element is the real part of the exponential second the imaginary

Arguments:
:: exp_h(2) ...
TYPE(cp_fm_type),
POINTER
:: re_part ...
TYPE(cp_fm_type),
POINTER
:: im_part ...
INTEGER,
INTENT(in)
:: nsquare ...
INTEGER,
INTENT(in)
:: ntaylor ...

SUBROUTINEtaylor_only_imaginary(exp_h, im_matrix, nsquare, ntaylor)

specialized subroutine for purely imaginary matrix exponentials

Arguments:
:: exp_h(2) ...
TYPE(cp_fm_type),
POINTER
:: im_matrix ...
INTEGER,
INTENT(in)
:: nsquare ...
INTEGER,
INTENT(in)
:: ntaylor ...