![]() |
Octopus
|
This module implements the Casida equations for excited states. More...
This module implements the Casida equations for excited states.
The linear-response (Casida) formalism casts the excitation energies as the eigenvalues of a coupled (A, B) matrix problem. For a pedagogic derivation of this polarization-propagator / RPA formulation see J. Oddershede, P. Joergensen, and D. L. Yeager, "Polarization propagator methods in atomic and molecular calculations", Comput. Phys. Rep. 2, 33 (1984); https://doi.org/10.1016/0167-7977(84)90003-0 and M. E. Casida, "Time-Dependent Density Functional Response Theory for Molecules", in Recent Advances in Density Functional Methods, ed. D. P. Chong (World Scientific, 1995), p. 155; https://doi.org/10.1142/9789812830586_0005 .
The only difference between TDDFT (Casida) and TDHF (the RPA of Hartree-Fock) is the coupling kernel entering A and B: TDDFT uses the (semilocal) xc kernel f_xc, whereas TDHF uses the non-local Fock exchange. This is made explicit in Eqns. 12 and 13 (the A and B matrices) of W. Liang, S. A. Fischer, M. J. Frisch, and X. Li, J. Chem. Theory Comput. 7, 3540 (2011); https://doi.org/10.1021/ct200485x . The reduction of the full (A, B) problem to the Hermitian half-size problem solved here follows R. E. Stratmann, G. E. Scuseria, and M. J. Frisch, J. Chem. Phys. 109, 8218 (1998); https://doi.org/10.1063/1.477483 .
Data Types | |
| type | casida_save_pot_t |
| type | casida_t |
| This class contains all parameters, needed for Casida calculations. More... | |
Functions/Subroutines | |
| subroutine, public | casida_run (system, from_scratch) |
| subroutine | casida_run_legacy (sys, fromScratch) |
| subroutine | casida_count_pairs (st, namespace, n_pairs, n_occ, n_unocc, is_included, is_frac_occ) |
| number of occupied-unoccupied pairs for Casida More... | |
| subroutine | casida_type_init (cas, sys) |
| allocates stuff, and constructs the arrays pair_i and pair_j More... | |
| subroutine | casida_type_end (cas) |
| subroutine | casida_work (sys, cas) |
| this subroutine calculates electronic excitation energies using the matrix formulation of M. Petersilka, or of M. Casida More... | |
| real(real64) function | casida_matrix_factor (cas, sys) |
| subroutine | qcasida_write (cas, namespace) |
| character(len=80) pure function | theory_name (cas) |
| logical function | isnt_degenerate (cas, st, ia, jb) |
| integer function | get_global_row (cas, jb_local) |
| integer function | get_global_col (cas, ia_local) |
| subroutine | local_indices (cas, ia, jb, on_this_processor, ia_local, jb_local) |
| subroutine | doscillator_strengths (cas, mesh, st, hm) |
| real(real64) function, dimension(cas%n_pairs) | dks_matrix_elements (cas, st, mesh, dv) |
| real(real64) function | dtransition_matrix_element (cas, ia, xx) |
| calculate transition matrix elements More... | |
| subroutine | dtransition_density (cas, st, mesh, ia, n0I) |
| subroutine | dget_transition_densities (cas, sys) |
| subroutine | dcasida_get_rho (st, mesh, ii, ia, kk, rho) |
| subroutine | dcasida_calc_lr_hmat1 (sys, pert, hvar, lr_hmat1, is_saved, st_start, st_end, ik) |
| calculate one-particle matrix elements of perturbation More... | |
| subroutine | dcasida_lr_hmat2 (cas, st, lr_hmat1, ik) |
| calculate two-particle matrix elements of perturbation More... | |
| subroutine | dcasida_get_matrix (cas, namespace, hm, st, ks, gr, matrix, fxc, fxc_grad, fxc_grad_spin, restart_file, is_forces, matrixB) |
| subroutine | dwrite_k_term (cas, mat_val, iunit, ia, jb) |
| write matrix element to casida_restart file More... | |
| subroutine | dcasida_forces (cas, sys, gr, st) |
| subroutine | dcasida_get_lr_hmat1 (cas, sys, iatom, idir, dl_rho, lr_hmat1) |
| subroutine | dcasida_solve (cas, sys) |
| subroutine | dcasida_write (cas, sys) |
| subroutine | dwrite_implied_occupations (cas, iunit, ind) |
| subroutine | dwrite_distributed_matrix (cas, matrix, filename) |
| real(real64) function | dallreduce_sum (cas, variable) |
| subroutine | zoscillator_strengths (cas, mesh, st, hm) |
| complex(real64) function, dimension(cas%n_pairs) | zks_matrix_elements (cas, st, mesh, dv) |
| complex(real64) function | ztransition_matrix_element (cas, ia, xx) |
| calculate transition matrix elements More... | |
| subroutine | ztransition_density (cas, st, mesh, ia, n0I) |
| subroutine | zget_transition_densities (cas, sys) |
| subroutine | zcasida_get_rho (st, mesh, ii, ia, kk, rho) |
| subroutine | zcasida_calc_lr_hmat1 (sys, pert, hvar, lr_hmat1, is_saved, st_start, st_end, ik) |
| calculate one-particle matrix elements of perturbation More... | |
| subroutine | zcasida_lr_hmat2 (cas, st, lr_hmat1, ik) |
| calculate two-particle matrix elements of perturbation More... | |
| subroutine | zcasida_get_matrix (cas, namespace, hm, st, ks, gr, matrix, fxc, fxc_grad, fxc_grad_spin, restart_file, is_forces, matrixB) |
| subroutine | zwrite_k_term (cas, mat_val, iunit, ia, jb) |
| write matrix element to casida_restart file More... | |
| subroutine | zcasida_forces (cas, sys, gr, st) |
| subroutine | zcasida_get_lr_hmat1 (cas, sys, iatom, idir, dl_rho, lr_hmat1) |
| subroutine | zcasida_solve (cas, sys) |
| subroutine | zcasida_write (cas, sys) |
| subroutine | zwrite_implied_occupations (cas, iunit, ind) |
| subroutine | zwrite_distributed_matrix (cas, matrix, filename) |
| complex(real64) function | zallreduce_sum (cas, variable) |
Variables | |
| integer, parameter | casida_eps_diff = 1 |
| integer, parameter | casida_petersilka = 2 |
| integer, parameter | casida_tamm_dancoff = 4 |
| integer, parameter | casida_variational = 8 |
| integer, parameter | casida_casida = 16 |
| integer, parameter | solver_elpa = 1 |
| integer, parameter | solver_scalapack = 2 |
| subroutine, public casida_oct_m::casida_run | ( | class(*), intent(inout) | system, |
| logical, intent(in) | from_scratch | ||
| ) |
Definition at line 295 of file casida.F90.
|
private |
Definition at line 313 of file casida.F90.
|
private |
number of occupied-unoccupied pairs for Casida
| [out] | n_pairs | result: number of pairs |
| [out] | n_occ | result: number of occ. states per k-point; dimension (1:nik) |
| [out] | n_unocc | result: number of unocc. states per k-point;dimension (1:nik) |
| [out] | is_included | result: mask whether a state is included; dimension (st%d%nst, st%d%nst, st%d%nik) |
| [out] | is_frac_occ | result: are there fractional occupations? |
Definition at line 816 of file casida.F90.
|
private |
allocates stuff, and constructs the arrays pair_i and pair_j
Definition at line 951 of file casida.F90.
|
private |
Definition at line 1078 of file casida.F90.
|
private |
this subroutine calculates electronic excitation energies using the matrix formulation of M. Petersilka, or of M. Casida
Definition at line 1135 of file casida.F90.
|
private |
Definition at line 1347 of file casida.F90.
|
private |
Definition at line 1368 of file casida.F90.
|
private |
Definition at line 1406 of file casida.F90.
|
private |
Definition at line 1426 of file casida.F90.
|
private |
Definition at line 1440 of file casida.F90.
|
private |
Definition at line 1454 of file casida.F90.
|
private |
Definition at line 1468 of file casida.F90.
|
private |
Definition at line 1556 of file casida.F90.
|
private |
Definition at line 1755 of file casida.F90.
|
private |
calculate transition matrix elements
Casida: \( \vec{d}_k = \sum_{cv} \vec{d}_{cv} x_{cv} \sqrt{\frac{\epsilon_c - \epsilon_v}{\omega_k}} \) others: \( \vec{d}_k = \sum_{cv} \vec{d}_{cv} x_{cv} \)
| [in] | xx | these are KS matrix elements |
Definition at line 1799 of file casida.F90.
|
private |
Definition at line 1843 of file casida.F90.
|
private |
Definition at line 1887 of file casida.F90.
|
private |
Definition at line 1920 of file casida.F90.
|
private |
calculate one-particle matrix elements of perturbation
Definition at line 1958 of file casida.F90.
|
private |
calculate two-particle matrix elements of perturbation
Definition at line 2009 of file casida.F90.
|
private |
| [out] | matrixb | Off-diagonal B coupling matrix for the full TDHF (RPA) problem. |
Definition at line 2045 of file casida.F90.
|
private |
write matrix element to casida_restart file
Definition at line 2934 of file casida.F90.
|
private |
Definition at line 2950 of file casida.F90.
|
private |
Definition at line 3099 of file casida.F90.
|
private |
Definition at line 3213 of file casida.F90.
|
private |
Definition at line 3439 of file casida.F90.
|
private |
Definition at line 3600 of file casida.F90.
|
private |
Definition at line 3639 of file casida.F90.
|
private |
Definition at line 3662 of file casida.F90.
|
private |
Definition at line 3755 of file casida.F90.
|
private |
Definition at line 3954 of file casida.F90.
|
private |
calculate transition matrix elements
Casida: \( \vec{d}_k = \sum_{cv} \vec{d}_{cv} x_{cv} \sqrt{\frac{\epsilon_c - \epsilon_v}{\omega_k}} \) others: \( \vec{d}_k = \sum_{cv} \vec{d}_{cv} x_{cv} \)
| [in] | xx | these are KS matrix elements |
Definition at line 3998 of file casida.F90.
|
private |
Definition at line 4042 of file casida.F90.
|
private |
Definition at line 4086 of file casida.F90.
|
private |
Definition at line 4119 of file casida.F90.
|
private |
calculate one-particle matrix elements of perturbation
Definition at line 4157 of file casida.F90.
|
private |
calculate two-particle matrix elements of perturbation
Definition at line 4208 of file casida.F90.
|
private |
| [out] | matrixb | Off-diagonal B coupling matrix for the full TDHF (RPA) problem. |
Definition at line 4244 of file casida.F90.
|
private |
write matrix element to casida_restart file
Definition at line 5133 of file casida.F90.
|
private |
Definition at line 5149 of file casida.F90.
|
private |
Definition at line 5298 of file casida.F90.
|
private |
Definition at line 5412 of file casida.F90.
|
private |
Definition at line 5638 of file casida.F90.
|
private |
Definition at line 5799 of file casida.F90.
|
private |
Definition at line 5838 of file casida.F90.
|
private |
Definition at line 5861 of file casida.F90.
|
private |
Definition at line 189 of file casida.F90.
|
private |
Definition at line 189 of file casida.F90.
|
private |
Definition at line 189 of file casida.F90.
|
private |
Definition at line 189 of file casida.F90.
|
private |
Definition at line 189 of file casida.F90.
|
private |
Definition at line 196 of file casida.F90.
|
private |
Definition at line 196 of file casida.F90.