![]() |
Octopus
|
Data Types | |
| type | lr_t |
Functions/Subroutines | |
| subroutine, public | lr_init (lr) |
| subroutine, public | lr_allocate (lr, st, mesh, allocate_rho) |
| subroutine, public | lr_zero (lr, st) |
| subroutine, public | lr_dealloc (lr) |
| subroutine, public | lr_copy (st, mesh, src, dest) |
| logical function, public | lr_is_allocated (this) |
| real(real64) function, public | lr_alpha_j (st, jst, ik) |
| subroutine, public | dlr_orth_vector (mesh, st, vec, ist, ik, omega, min_proj) |
| Orthogonalizes a vector vec against all the occupied states. For details on the metallic part, take a look at de Gironcoli, PRB 51, 6773 (1995). More... | |
| subroutine | dlr_build_orth_coeffs (st, ist, ik, omega, min_proj, theta, beta_ij) |
| Builds the weights for the orthogonalization in dlr_orth_vector. More... | |
| subroutine, public | dlr_build_dl_rho (mesh, st, lr, nsigma) |
| Computes the variation of the density for the Sternheimer calculations This is given in Eq. 2 of Andrade et al. Phys. Chem. Chem. Phys. 17, 31371 (2015) More... | |
| subroutine, public | dlr_orth_response (mesh, st, lr, omega) |
| subroutine, public | dlr_swap_sigma (st, mesh, plus, minus) |
| subroutine, public | dlr_dump_rho (lr, mesh, nspin, restart, rho_tag, ierr) |
| subroutine, public | dlr_load_rho (dl_rho, mesh, nspin, restart, rho_tag, ierr) |
| subroutine, public | zlr_orth_vector (mesh, st, vec, ist, ik, omega, min_proj) |
| Orthogonalizes a vector vec against all the occupied states. For details on the metallic part, take a look at de Gironcoli, PRB 51, 6773 (1995). More... | |
| subroutine | zlr_build_orth_coeffs (st, ist, ik, omega, min_proj, theta, beta_ij) |
| Builds the weights for the orthogonalization in zlr_orth_vector. More... | |
| subroutine, public | zlr_build_dl_rho (mesh, st, lr, nsigma) |
| Computes the variation of the density for the Sternheimer calculations This is given in Eq. 2 of Andrade et al. Phys. Chem. Chem. Phys. 17, 31371 (2015) More... | |
| subroutine, public | zlr_orth_response (mesh, st, lr, omega) |
| subroutine, public | zlr_swap_sigma (st, mesh, plus, minus) |
| subroutine, public | zlr_dump_rho (lr, mesh, nspin, restart, rho_tag, ierr) |
| subroutine, public | zlr_load_rho (dl_rho, mesh, nspin, restart, rho_tag, ierr) |
| subroutine, public linear_response_oct_m::lr_init | ( | type(lr_t), intent(out) | lr | ) |
Definition at line 183 of file linear_response.F90.
| subroutine, public linear_response_oct_m::lr_allocate | ( | type(lr_t), intent(inout) | lr, |
| type(states_elec_t), intent(in) | st, | ||
| class(mesh_t), intent(in) | mesh, | ||
| logical, intent(in), optional | allocate_rho | ||
| ) |
Definition at line 198 of file linear_response.F90.
| subroutine, public linear_response_oct_m::lr_zero | ( | type(lr_t), intent(inout) | lr, |
| type(states_elec_t), intent(in) | st | ||
| ) |
Definition at line 232 of file linear_response.F90.
| subroutine, public linear_response_oct_m::lr_dealloc | ( | type(lr_t), intent(inout) | lr | ) |
Definition at line 254 of file linear_response.F90.
| subroutine, public linear_response_oct_m::lr_copy | ( | type(states_elec_t), intent(in) | st, |
| class(mesh_t), intent(in) | mesh, | ||
| type(lr_t), intent(in) | src, | ||
| type(lr_t), intent(inout) | dest | ||
| ) |
Definition at line 274 of file linear_response.F90.
| logical function, public linear_response_oct_m::lr_is_allocated | ( | type(lr_t), intent(in) | this | ) |
Definition at line 317 of file linear_response.F90.
| real(real64) function, public linear_response_oct_m::lr_alpha_j | ( | type(states_elec_t), intent(in) | st, |
| integer, intent(in) | jst, | ||
| integer, intent(in) | ik | ||
| ) |
Definition at line 329 of file linear_response.F90.
| subroutine, public linear_response_oct_m::dlr_orth_vector | ( | class(mesh_t), intent(in) | mesh, |
| type(states_elec_t), intent(in) | st, | ||
| real(real64), dimension(:,:), intent(inout), contiguous | vec, | ||
| integer, intent(in) | ist, | ||
| integer, intent(in) | ik, | ||
| real(real64), intent(in) | omega, | ||
| logical, intent(in), optional | min_proj | ||
| ) |
Orthogonalizes a vector vec against all the occupied states. For details on the metallic part, take a look at de Gironcoli, PRB 51, 6773 (1995).
min_proj: Let Pc = projector onto unoccupied states, Pn= projector that removes states degenerate with n For an SCF run, we will apply Pn for the last step always, since the whole wavefunction is useful for some things and the extra cost here is small. If occ_response, previous steps will also use Pn`. If !occ_response, previous steps will use Pc, which generally reduces the number of linear-solver iterations needed. Only the wavefunctions in the unoccupied subspace are needed to construct the first-order density. I am not sure what the generalization of this scheme is for metals, so we will just use Pc if there is smearing.
Definition at line 429 of file linear_response.F90.
|
private |
Builds the weights for the orthogonalization in dlr_orth_vector.
Definition at line 455 of file linear_response.F90.
| subroutine, public linear_response_oct_m::dlr_build_dl_rho | ( | class(mesh_t), intent(in) | mesh, |
| type(states_elec_t), intent(in) | st, | ||
| type(lr_t), dimension(:), intent(inout) | lr, | ||
| integer, intent(in) | nsigma | ||
| ) |
Computes the variation of the density for the Sternheimer calculations This is given in Eq. 2 of Andrade et al. Phys. Chem. Chem. Phys. 17, 31371 (2015)
The formula is
\[ \delta n(\boldsymbol{r}, \omega) =\sum_k f_k\left\{\left[\varphi_n(\boldsymbol{r})\right]^* \delta \varphi_n(\boldsymbol{r}, \omega) +\left[\delta \varphi_n(\boldsymbol{r},-\omega)\right]^* \varphi_n(\boldsymbol{r})\right\}. \]
Definition at line 550 of file linear_response.F90.
| subroutine, public linear_response_oct_m::dlr_orth_response | ( | class(mesh_t), intent(in) | mesh, |
| type(states_elec_t), intent(in) | st, | ||
| type(lr_t), intent(inout) | lr, | ||
| real(real64), intent(in) | omega | ||
| ) |
Definition at line 797 of file linear_response.F90.
| subroutine, public linear_response_oct_m::dlr_swap_sigma | ( | type(states_elec_t), intent(in) | st, |
| class(mesh_t), intent(in) | mesh, | ||
| type(lr_t), intent(inout) | plus, | ||
| type(lr_t), intent(inout) | minus | ||
| ) |
Definition at line 817 of file linear_response.F90.
| subroutine, public linear_response_oct_m::dlr_dump_rho | ( | type(lr_t), intent(in) | lr, |
| class(mesh_t), intent(in) | mesh, | ||
| integer, intent(in) | nspin, | ||
| type(restart_t), intent(in) | restart, | ||
| character(len=*), intent(in) | rho_tag, | ||
| integer, intent(out) | ierr | ||
| ) |
Definition at line 841 of file linear_response.F90.
| subroutine, public linear_response_oct_m::dlr_load_rho | ( | real(real64), dimension(:,:), intent(inout), contiguous | dl_rho, |
| class(mesh_t), intent(in) | mesh, | ||
| integer, intent(in) | nspin, | ||
| type(restart_t), intent(in) | restart, | ||
| character(len=*), intent(in) | rho_tag, | ||
| integer, intent(out) | ierr | ||
| ) |
| [in,out] | dl_rho | (meshnp, nspin) |
Definition at line 879 of file linear_response.F90.
| subroutine, public linear_response_oct_m::zlr_orth_vector | ( | class(mesh_t), intent(in) | mesh, |
| type(states_elec_t), intent(in) | st, | ||
| complex(real64), dimension(:,:), intent(inout), contiguous | vec, | ||
| integer, intent(in) | ist, | ||
| integer, intent(in) | ik, | ||
| complex(real64), intent(in) | omega, | ||
| logical, intent(in), optional | min_proj | ||
| ) |
Orthogonalizes a vector vec against all the occupied states. For details on the metallic part, take a look at de Gironcoli, PRB 51, 6773 (1995).
min_proj: Let Pc = projector onto unoccupied states, Pn= projector that removes states degenerate with n For an SCF run, we will apply Pn for the last step always, since the whole wavefunction is useful for some things and the extra cost here is small. If occ_response, previous steps will also use Pn`. If !occ_response, previous steps will use Pc, which generally reduces the number of linear-solver iterations needed. Only the wavefunctions in the unoccupied subspace are needed to construct the first-order density. I am not sure what the generalization of this scheme is for metals, so we will just use Pc if there is smearing.
Definition at line 1007 of file linear_response.F90.
|
private |
Builds the weights for the orthogonalization in zlr_orth_vector.
Definition at line 1033 of file linear_response.F90.
| subroutine, public linear_response_oct_m::zlr_build_dl_rho | ( | class(mesh_t), intent(in) | mesh, |
| type(states_elec_t), intent(in) | st, | ||
| type(lr_t), dimension(:), intent(inout) | lr, | ||
| integer, intent(in) | nsigma | ||
| ) |
Computes the variation of the density for the Sternheimer calculations This is given in Eq. 2 of Andrade et al. Phys. Chem. Chem. Phys. 17, 31371 (2015)
The formula is
\[ \delta n(\boldsymbol{r}, \omega) =\sum_k f_k\left\{\left[\varphi_n(\boldsymbol{r})\right]^* \delta \varphi_n(\boldsymbol{r}, \omega) +\left[\delta \varphi_n(\boldsymbol{r},-\omega)\right]^* \varphi_n(\boldsymbol{r})\right\}. \]
Definition at line 1128 of file linear_response.F90.
| subroutine, public linear_response_oct_m::zlr_orth_response | ( | class(mesh_t), intent(in) | mesh, |
| type(states_elec_t), intent(in) | st, | ||
| type(lr_t), intent(inout) | lr, | ||
| complex(real64), intent(in) | omega | ||
| ) |
Definition at line 1375 of file linear_response.F90.
| subroutine, public linear_response_oct_m::zlr_swap_sigma | ( | type(states_elec_t), intent(in) | st, |
| class(mesh_t), intent(in) | mesh, | ||
| type(lr_t), intent(inout) | plus, | ||
| type(lr_t), intent(inout) | minus | ||
| ) |
Definition at line 1395 of file linear_response.F90.
| subroutine, public linear_response_oct_m::zlr_dump_rho | ( | type(lr_t), intent(in) | lr, |
| class(mesh_t), intent(in) | mesh, | ||
| integer, intent(in) | nspin, | ||
| type(restart_t), intent(in) | restart, | ||
| character(len=*), intent(in) | rho_tag, | ||
| integer, intent(out) | ierr | ||
| ) |
Definition at line 1419 of file linear_response.F90.
| subroutine, public linear_response_oct_m::zlr_load_rho | ( | complex(real64), dimension(:,:), intent(inout), contiguous | dl_rho, |
| class(mesh_t), intent(in) | mesh, | ||
| integer, intent(in) | nspin, | ||
| type(restart_t), intent(in) | restart, | ||
| character(len=*), intent(in) | rho_tag, | ||
| integer, intent(out) | ierr | ||
| ) |
| [in,out] | dl_rho | (meshnp, nspin) |
Definition at line 1457 of file linear_response.F90.