![]() |
(git:5e7fe52)
|
Routines for the propagation via RT-BSE method. More...
Data Types | |
| interface | get_sigma |
| interface | get_hartree |
Functions/Subroutines | |
| subroutine, public | run_propagation_bse (force_env) |
| Runs the electron-only real time BSE propagation. | |
| subroutine, public | initialize_rtbse_env (rtbse_env) |
| Calculates the initial values, based on restart/scf density, and other non-trivial values. | |
| subroutine, public | initialize_singleparticle_hamiltonian (rtbse_env) |
| Calculates the single particle Hamiltonian. | |
| subroutine, public | initialize_hartree_potential (rtbse_env) |
| Calculates the Hartree potential. | |
| subroutine, public | initialize_cohsex_selfenergy (rtbse_env) |
| Calculates the COHSEX reference self-energy. | |
| real(kind=dp) function, public | rho_metric (rho_new, rho_old, nspin, workspace_opt) |
| Determines the metric for the density matrix, used for convergence criterion. | |
| subroutine, public | antiherm_metric (real_fm, imag_fm, workspace, metric) |
| Determines the metric of the antihermitian part of the matrix. | |
| subroutine, public | propagate_density (rtbse_env, exponential, rho_old, rho_new) |
| Updates the density in rtbse_env, using the provided exponential The new density is saved to a different matrix, which enables for comparison of matrices. | |
| subroutine, public | get_electron_number (rtbse_env, rho, electron_n_re, electron_n_im) |
| Outputs the number of electrons in the system from the density matrix. | |
| subroutine, public | get_idempotence_deviation (rtbse_env, rho, deviation_metric) |
| Outputs the deviation from idempotence of density matrix. | |
| subroutine, public | init_hartree (rtbse_env, v_dbcsr) |
| Creates the RI matrix and populates it with correct values. | |
| subroutine, public | cp_cfm_gexp (amatrix, bmatrix, exponential, eig_scale_opt, work_opt) |
| Calculates the exponential of a matrix in a generalized eigenvalue problem. Specifically, it assumes we have a Hermitian matrix A in the eigenvalue problem AX = BXE, where B is some overlap matrix and E is a diagonal matrix of real eigenvalues. Then, it calculates exp(B^(-1) A) = X exp(E) X^C B. | |
Routines for the propagation via RT-BSE method.
| subroutine, public rt_bse::run_propagation_bse | ( | type(force_env_type), pointer | force_env | ) |
| subroutine, public rt_bse::initialize_rtbse_env | ( | type(rtbse_env_type), pointer | rtbse_env | ) |
| subroutine, public rt_bse::initialize_singleparticle_hamiltonian | ( | type(rtbse_env_type), pointer | rtbse_env | ) |
| subroutine, public rt_bse::initialize_hartree_potential | ( | type(rtbse_env_type), pointer | rtbse_env | ) |
| subroutine, public rt_bse::initialize_cohsex_selfenergy | ( | type(rtbse_env_type), pointer | rtbse_env | ) |
| real(kind=dp) function, public rt_bse::rho_metric | ( | type(cp_cfm_type), dimension(:), intent(in), pointer | rho_new, |
| type(cp_cfm_type), dimension(:), intent(in), pointer | rho_old, | ||
| integer, intent(in) | nspin, | ||
| type(cp_cfm_type), optional, pointer | workspace_opt ) |
Determines the metric for the density matrix, used for convergence criterion.
| rho_new | Array of new density matrices (one for each spin index) |
| rho_old | Array of old density matrices (one for each spin index) |
| nspin | Number of spin indices |
| workspace_opt | Optionally provide external workspace to save some allocation time |
Definition at line 605 of file rt_bse.F.
| subroutine, public rt_bse::antiherm_metric | ( | type(cp_fm_type), intent(in) | real_fm, |
| type(cp_fm_type), intent(in), optional | imag_fm, | ||
| type(cp_cfm_type), dimension(:), pointer | workspace, | ||
| real(kind=dp), intent(out) | metric ) |
| subroutine, public rt_bse::propagate_density | ( | type(rtbse_env_type) | rtbse_env, |
| type(cp_cfm_type), dimension(:), pointer | exponential, | ||
| type(cp_cfm_type), dimension(:), pointer | rho_old, | ||
| type(cp_cfm_type), dimension(:), pointer | rho_new ) |
Updates the density in rtbse_env, using the provided exponential The new density is saved to a different matrix, which enables for comparison of matrices.
| rtbse_env | Entry point of the calculation - contains current state of variables |
| exponential | Real and imaginary parts ( + spin) of the exponential propagator |
Definition at line 937 of file rt_bse.F.
| subroutine, public rt_bse::get_electron_number | ( | type(rtbse_env_type) | rtbse_env, |
| type(cp_cfm_type), dimension(:), pointer | rho, | ||
| real(kind=dp), intent(out) | electron_n_re, | ||
| real(kind=dp), intent(out) | electron_n_im ) |
Outputs the number of electrons in the system from the density matrix.
| rtbse_env | Entry point - rtbse environment |
| rho | Density matrix in AO basis |
| electron_n_re | Real number of electrons |
| electron_n_im | Imaginary number of electrons, which can arise from numerical non-hermiticity |
Definition at line 977 of file rt_bse.F.
| subroutine, public rt_bse::get_idempotence_deviation | ( | type(rtbse_env_type) | rtbse_env, |
| type(cp_cfm_type), dimension(:), pointer | rho, | ||
| real(kind=dp), intent(out) | deviation_metric ) |
Outputs the deviation from idempotence of density matrix.
| rtbse_env | Entry point - rtbse environment |
| rho | Density matrix in AO basis |
| electron_n_re | Real number of electrons |
| electron_n_im | Imaginary number of electrons, which can arise from numerical non-hermiticity |
Definition at line 1004 of file rt_bse.F.
| subroutine, public rt_bse::init_hartree | ( | type(rtbse_env_type), intent(in), pointer | rtbse_env, |
| type(dbcsr_type) | v_dbcsr ) |
Creates the RI matrix and populates it with correct values.
| qs_env | Quickstep environment - entry point of calculation |
Definition at line 1237 of file rt_bse.F.
| subroutine, public rt_bse::cp_cfm_gexp | ( | type(cp_cfm_type), intent(in) | amatrix, |
| type(cp_cfm_type), intent(in) | bmatrix, | ||
| type(cp_cfm_type) | exponential, | ||
| complex(kind=dp), intent(in), optional | eig_scale_opt, | ||
| type(cp_cfm_type), dimension(:), optional, pointer | work_opt ) |
Calculates the exponential of a matrix in a generalized eigenvalue problem. Specifically, it assumes we have a Hermitian matrix A in the eigenvalue problem AX = BXE, where B is some overlap matrix and E is a diagonal matrix of real eigenvalues. Then, it calculates exp(B^(-1) A) = X exp(E) X^C B.
| amatrix | Matrix to exponentiate |
| bmatrix | Overlap matrix |
| exponential | Exponential exp(B^(-1) A) is stored here after the routine is finished |
| eig_scale_opt | Optionally scale eigenvalues by a complex number before exponentiating them |
| work_opt | Optionally provide workspace (of size at least 4) that is used in the calculation |
Definition at line 1503 of file rt_bse.F.