![]() |
(git:b77b4be)
|
Utilities for X-ray absorption spectroscopy using TDDFPT. More...
Functions/Subroutines | |
subroutine, public | setup_xas_tdp_prob (donor_state, qs_env, xas_tdp_env, xas_tdp_control) |
Builds the matrix that defines the XAS TDDFPT generalized eigenvalue problem to be solved for excitation energies omega. The problem has the form omega*G*C = M*C, where C contains the response orbitals coefficients. The matrix M and the metric G are stored in the given donor_state. | |
subroutine, public | solve_xas_tdp_prob (donor_state, xas_tdp_control, xas_tdp_env, qs_env, ex_type) |
Solves the XAS TDP generalized eigenvalue problem omega*C = matrix_tdp*C using standard full diagonalization methods. The problem is Hermitian (made that way even if not TDA) | |
subroutine, public | include_os_soc (donor_state, xas_tdp_env, xas_tdp_control, qs_env) |
Includes the SOC effects on the precomputed spin-conserving and spin-flip excitations from an open-shell calculation (UKS or ROKS). This is a perturbative treatment. | |
subroutine, public | include_rcs_soc (donor_state, xas_tdp_env, xas_tdp_control, qs_env) |
Includes the SOC effects on the precomputed restricted closed-shell singlet and triplet excitations. This is a perturbative treatmnent. | |
subroutine, public | rcs_amew_soc_elements (amew_soc, lr_soc, lr_overlap, domo_soc, pref_trace, pref_overall, pref_diags, symmetric) |
Computes the rcs SOC matrix elements between excited states AMEWs based on the LR orbitals. | |
Utilities for X-ray absorption spectroscopy using TDDFPT.
subroutine, public xas_tdp_utils::setup_xas_tdp_prob | ( | type(donor_state_type), pointer | donor_state, |
type(qs_environment_type), pointer | qs_env, | ||
type(xas_tdp_env_type), pointer | xas_tdp_env, | ||
type(xas_tdp_control_type), pointer | xas_tdp_control | ||
) |
Builds the matrix that defines the XAS TDDFPT generalized eigenvalue problem to be solved for excitation energies omega. The problem has the form omega*G*C = M*C, where C contains the response orbitals coefficients. The matrix M and the metric G are stored in the given donor_state.
donor_state | the donor_state for which the problem is restricted |
qs_env | ... |
xas_tdp_env | ... |
xas_tdp_control | ... |
-In the SPIN-UNRESTRICTED, spin-conserving case: the on- and off-diagonal elements of M are: M_d = A + B + C -D M_o = B + C - E where the submatrices A, B, C, D and E are:
-In both above cases, the matrix M is always projected onto the unperturbed unoccupied ground state: M <= Q * M * Q^T = (1 - SP) * M * (1 - PS)
-In the SPIN-FLIP case: Only the TDA is implemented, that is, there are only on-diagonal elements: M_d = A + C - D where the submatrices A, C and D are:
All possibilities: TDA or full-TDDFT, singlet or triplet, xc or hybrid, etc are treated in the same routine to avoid recomputing stuff Under TDA, only the on-diagonal elements of M are computed In the case of non-TDA, one turns the problem Hermitian
Definition at line 168 of file xas_tdp_utils.F.
subroutine, public xas_tdp_utils::solve_xas_tdp_prob | ( | type(donor_state_type), pointer | donor_state, |
type(xas_tdp_control_type), pointer | xas_tdp_control, | ||
type(xas_tdp_env_type), pointer | xas_tdp_env, | ||
type(qs_environment_type), pointer | qs_env, | ||
integer, intent(in) | ex_type | ||
) |
Solves the XAS TDP generalized eigenvalue problem omega*C = matrix_tdp*C using standard full diagonalization methods. The problem is Hermitian (made that way even if not TDA)
donor_state | ... |
xas_tdp_control | ... |
xas_tdp_env | ... |
qs_env | ... |
ex_type | whether we deal with singlets, triplets, spin-conserving open-shell or spin-flip |
Definition at line 458 of file xas_tdp_utils.F.
subroutine, public xas_tdp_utils::include_os_soc | ( | type(donor_state_type), pointer | donor_state, |
type(xas_tdp_env_type), pointer | xas_tdp_env, | ||
type(xas_tdp_control_type), pointer | xas_tdp_control, | ||
type(qs_environment_type), pointer | qs_env | ||
) |
Includes the SOC effects on the precomputed spin-conserving and spin-flip excitations from an open-shell calculation (UKS or ROKS). This is a perturbative treatment.
donor_state | ... |
xas_tdp_env | ... |
xas_tdp_control | ... |
qs_env | ... |
Definition at line 1502 of file xas_tdp_utils.F.
subroutine, public xas_tdp_utils::include_rcs_soc | ( | type(donor_state_type), pointer | donor_state, |
type(xas_tdp_env_type), pointer | xas_tdp_env, | ||
type(xas_tdp_control_type), pointer | xas_tdp_control, | ||
type(qs_environment_type), pointer | qs_env | ||
) |
Includes the SOC effects on the precomputed restricted closed-shell singlet and triplet excitations. This is a perturbative treatmnent.
donor_state | ... |
xas_tdp_env | ... |
xas_tdp_control | ... |
qs_env | ... |
Definition at line 1939 of file xas_tdp_utils.F.
subroutine, public xas_tdp_utils::rcs_amew_soc_elements | ( | type(dbcsr_type) | amew_soc, |
type(dbcsr_type) | lr_soc, | ||
type(dbcsr_type) | lr_overlap, | ||
real(dp), dimension(:, :) | domo_soc, | ||
real(dp) | pref_trace, | ||
real(dp) | pref_overall, | ||
real(dp), optional | pref_diags, | ||
logical, optional | symmetric | ||
) |
Computes the rcs SOC matrix elements between excited states AMEWs based on the LR orbitals.
amew_soc | output dbcsr matrix with the SOC in the AMEW basis (needs to be fully resereved) |
lr_soc | dbcsr matrix with the SOC wrt the LR orbitals |
lr_overlap | dbcsr matrix with the excited states LR orbital overlap |
domo_soc | the SOC in the basis of the donor MOs |
pref_trace | see notes |
pref_overall | see notes |
pref_diags | see notes |
symmetric | if the outcome is known to be symmetric, only elements with iex <= jex are done |
Definition at line 2882 of file xas_tdp_utils.F.