![]() |
Octopus
|
Data Types | |
type | ace_t |
type | exchange_operator_t |
Functions/Subroutines | |
subroutine | ace_init (this, namespace, st) |
Initialize an instance of ACE_t. More... | |
subroutine | ace_end (this) |
End an instance of ACE_t. More... | |
subroutine, public | exchange_operator_init (this, namespace, space, st, der, mc, stencil, kpoints, cam) |
subroutine, public | exchange_operator_reinit (this, cam, st) |
subroutine, public | exchange_operator_end (this) |
subroutine, public | exchange_operator_rdmft_occ_apply (this, mesh, hpsib) |
subroutine, public | dexchange_operator_single (this, namespace, space, mesh, st_d, kpoints, phase, ist, ik, psi, hpsi, rdmft, force_noace) |
subroutine, public | dexchange_operator_apply (this, namespace, space, mesh, st_d, kpoints, phase, psib, hpsib, rdmft, force_noace) |
subroutine | dexchange_operator_apply_standard (this, namespace, space, mesh, st_d, kpoints, phase, psib, hpsib, rdmft) |
subroutine | dexchange_operator_apply_ace (this, mesh, st_d, psib, hpsib) |
subroutine, public | dexchange_operator_compute_potentials (this, namespace, space, gr, st, xst, kpoints, F_out) |
real(real64) function, public | dexchange_operator_compute_ex (mesh, st, xst) |
Compute the exact exchange energy. More... | |
subroutine, public | dexchange_operator_ace (this, namespace, mesh, st, xst, phase) |
subroutine, public | dexchange_operator_commute_r (this, namespace, mesh, st_d, ik, psi, gpsi) |
subroutine, public | dexchange_operator_hartree_apply (this, namespace, mesh, st_d, kpoints, exx_coef, psib, hpsib) |
subroutine, public | zexchange_operator_single (this, namespace, space, mesh, st_d, kpoints, phase, ist, ik, psi, hpsi, rdmft, force_noace) |
subroutine, public | zexchange_operator_apply (this, namespace, space, mesh, st_d, kpoints, phase, psib, hpsib, rdmft, force_noace) |
subroutine | zexchange_operator_apply_standard (this, namespace, space, mesh, st_d, kpoints, phase, psib, hpsib, rdmft) |
subroutine | zexchange_operator_apply_ace (this, mesh, st_d, psib, hpsib) |
subroutine, public | zexchange_operator_compute_potentials (this, namespace, space, gr, st, xst, kpoints, F_out) |
real(real64) function, public | zexchange_operator_compute_ex (mesh, st, xst) |
Compute the exact exchange energy. More... | |
subroutine, public | zexchange_operator_ace (this, namespace, mesh, st, xst, phase) |
subroutine, public | zexchange_operator_commute_r (this, namespace, mesh, st_d, ik, psi, gpsi) |
subroutine, public | zexchange_operator_hartree_apply (this, namespace, mesh, st_d, kpoints, exx_coef, psib, hpsib) |
Variables | |
type(fourier_space_op_t) | coulb |
Operator in Fourier space. More... | |
real(real64), parameter, private | tol_exx_weight = 1.0e-3_real64 |
Minimum weight below which EXX is not added. More... | |
|
private |
Initialize an instance of ACE_t.
Definition at line 206 of file exchange_operator.F90.
|
private |
End an instance of ACE_t.
Definition at line 246 of file exchange_operator.F90.
subroutine, public exchange_operator_oct_m::exchange_operator_init | ( | type(exchange_operator_t), intent(inout) | this, |
type(namespace_t), intent(in) | namespace, | ||
class(space_t), intent(in) | space, | ||
type(states_elec_t), intent(in) | st, | ||
type(derivatives_t), intent(in) | der, | ||
type(multicomm_t), intent(in) | mc, | ||
type(stencil_t), intent(in) | stencil, | ||
type(kpoints_t), intent(in) | kpoints, | ||
type(xc_cam_t), intent(in) | cam | ||
) |
Definition at line 259 of file exchange_operator.F90.
subroutine, public exchange_operator_oct_m::exchange_operator_reinit | ( | type(exchange_operator_t), intent(inout) | this, |
type(xc_cam_t), intent(in) | cam, | ||
type(states_elec_t), intent(in), optional, target | st | ||
) |
Definition at line 301 of file exchange_operator.F90.
subroutine, public exchange_operator_oct_m::exchange_operator_end | ( | type(exchange_operator_t), intent(inout) | this | ) |
Definition at line 317 of file exchange_operator.F90.
subroutine, public exchange_operator_oct_m::exchange_operator_rdmft_occ_apply | ( | type(exchange_operator_t), intent(in) | this, |
type(mesh_t), intent(in) | mesh, | ||
class(wfs_elec_t), intent(inout) | hpsib | ||
) |
Definition at line 337 of file exchange_operator.F90.
subroutine, public exchange_operator_oct_m::dexchange_operator_single | ( | type(exchange_operator_t), intent(inout) | this, |
type(namespace_t), intent(in) | namespace, | ||
class(space_t), intent(in) | space, | ||
class(mesh_t), intent(in) | mesh, | ||
type(states_elec_dim_t), intent(in) | st_d, | ||
type(kpoints_t), intent(in) | kpoints, | ||
type(phase_t), intent(in) | phase, | ||
integer, intent(in) | ist, | ||
integer, intent(in) | ik, | ||
real(real64), dimension(:, :), intent(inout), contiguous | psi, | ||
real(real64), dimension(:, :), intent(inout), contiguous | hpsi, | ||
logical, intent(in) | rdmft, | ||
logical, intent(in), optional | force_noace | ||
) |
Definition at line 420 of file exchange_operator.F90.
subroutine, public exchange_operator_oct_m::dexchange_operator_apply | ( | type(exchange_operator_t), intent(in) | this, |
type(namespace_t), intent(in) | namespace, | ||
class(space_t), intent(in) | space, | ||
type(mesh_t), intent(in) | mesh, | ||
type(states_elec_dim_t), intent(in) | st_d, | ||
type(kpoints_t), intent(in) | kpoints, | ||
type(phase_t), intent(in) | phase, | ||
class(wfs_elec_t), intent(inout) | psib, | ||
class(wfs_elec_t), intent(inout) | hpsib, | ||
logical, intent(in) | rdmft, | ||
logical, intent(in), optional | force_noace | ||
) |
Definition at line 451 of file exchange_operator.F90.
|
private |
Definition at line 478 of file exchange_operator.F90.
|
private |
Definition at line 640 of file exchange_operator.F90.
subroutine, public exchange_operator_oct_m::dexchange_operator_compute_potentials | ( | type(exchange_operator_t), intent(in) | this, |
type(namespace_t), intent(in) | namespace, | ||
class(space_t), intent(in) | space, | ||
type(grid_t), intent(in) | gr, | ||
type(states_elec_t), intent(inout), target | st, | ||
type(states_elec_t), intent(inout) | xst, | ||
type(kpoints_t), intent(in) | kpoints, | ||
real(real64), dimension(:,:,:,:,:), intent(out), optional | F_out | ||
) |
[in,out] | xst | Action of V_X on a set of KS states |
[out] | f_out | For RDMFT |
Definition at line 713 of file exchange_operator.F90.
real(real64) function, public exchange_operator_oct_m::dexchange_operator_compute_ex | ( | class(mesh_t), intent(in) | mesh, |
type(states_elec_t), intent(in) | st, | ||
type(states_elec_t), intent(in) | xst | ||
) |
Compute the exact exchange energy.
\[ E_X = \frac{1}{2} \sum_{i, \sigma \mathbf{k}} w_\mathbf{k} f_{i\sigma\mathbf{k}} \int \psi^\ast_{i \sigma \mathbf{k}}(\mathbf{r}) W_{i \sigma \mathbf{k}}(\mathbf{r}) d\mathbf{r} \]
where
\[ W_{i\sigma\mathbf{k}}(\mathbf{r}) = - \sum_{j,\mathbf{k}^\prime} f_{j\sigma\mathbf{k}^\prime}\,\omega_{\mathbf{k}^\prime} V_{ij}^{\mathbf{k},\mathbf{k}^\prime,\sigma}(\mathbf{r}) \psi_{j\sigma\mathbf{k}^\prime}(\mathbf{r}) \]
is the action of the exchange operator on a set of Kohn-Sham states.
xst
. This is what is done in the routine [in] | st | A set of KS states |
[in] | xst | V_X operating on a set of KS states |
Definition at line 1246 of file exchange_operator.F90.
subroutine, public exchange_operator_oct_m::dexchange_operator_ace | ( | type(exchange_operator_t), intent(inout) | this, |
type(namespace_t), intent(in) | namespace, | ||
class(mesh_t), intent(in) | mesh, | ||
type(states_elec_t), intent(inout) | st, | ||
type(states_elec_t), intent(inout) | xst, | ||
type(phase_t), intent(in), optional | phase | ||
) |
[in,out] | xst | Application of the exact exchange |
Definition at line 1287 of file exchange_operator.F90.
subroutine, public exchange_operator_oct_m::dexchange_operator_commute_r | ( | type(exchange_operator_t), intent(in) | this, |
type(namespace_t), intent(in) | namespace, | ||
class(mesh_t), intent(in) | mesh, | ||
type(states_elec_dim_t), intent(in) | st_d, | ||
integer, intent(in) | ik, | ||
real(real64), dimension(:, :), intent(in), contiguous | psi, | ||
real(real64), dimension(:, :, :), intent(inout), contiguous | gpsi | ||
) |
Definition at line 1412 of file exchange_operator.F90.
subroutine, public exchange_operator_oct_m::dexchange_operator_hartree_apply | ( | type(exchange_operator_t), intent(in) | this, |
type(namespace_t), intent(in) | namespace, | ||
type(mesh_t), intent(in) | mesh, | ||
type(states_elec_dim_t), intent(in) | st_d, | ||
type(kpoints_t), intent(in) | kpoints, | ||
real(real64), intent(in) | exx_coef, | ||
class(wfs_elec_t), intent(inout) | psib, | ||
class(wfs_elec_t), intent(inout) | hpsib | ||
) |
Definition at line 1473 of file exchange_operator.F90.
subroutine, public exchange_operator_oct_m::zexchange_operator_single | ( | type(exchange_operator_t), intent(inout) | this, |
type(namespace_t), intent(in) | namespace, | ||
class(space_t), intent(in) | space, | ||
class(mesh_t), intent(in) | mesh, | ||
type(states_elec_dim_t), intent(in) | st_d, | ||
type(kpoints_t), intent(in) | kpoints, | ||
type(phase_t), intent(in) | phase, | ||
integer, intent(in) | ist, | ||
integer, intent(in) | ik, | ||
complex(real64), dimension(:, :), intent(inout), contiguous | psi, | ||
complex(real64), dimension(:, :), intent(inout), contiguous | hpsi, | ||
logical, intent(in) | rdmft, | ||
logical, intent(in), optional | force_noace | ||
) |
Definition at line 1625 of file exchange_operator.F90.
subroutine, public exchange_operator_oct_m::zexchange_operator_apply | ( | type(exchange_operator_t), intent(in) | this, |
type(namespace_t), intent(in) | namespace, | ||
class(space_t), intent(in) | space, | ||
type(mesh_t), intent(in) | mesh, | ||
type(states_elec_dim_t), intent(in) | st_d, | ||
type(kpoints_t), intent(in) | kpoints, | ||
type(phase_t), intent(in) | phase, | ||
class(wfs_elec_t), intent(inout) | psib, | ||
class(wfs_elec_t), intent(inout) | hpsib, | ||
logical, intent(in) | rdmft, | ||
logical, intent(in), optional | force_noace | ||
) |
Definition at line 1656 of file exchange_operator.F90.
|
private |
Definition at line 1683 of file exchange_operator.F90.
|
private |
Definition at line 1845 of file exchange_operator.F90.
subroutine, public exchange_operator_oct_m::zexchange_operator_compute_potentials | ( | type(exchange_operator_t), intent(in) | this, |
type(namespace_t), intent(in) | namespace, | ||
class(space_t), intent(in) | space, | ||
type(grid_t), intent(in) | gr, | ||
type(states_elec_t), intent(inout), target | st, | ||
type(states_elec_t), intent(inout) | xst, | ||
type(kpoints_t), intent(in) | kpoints, | ||
complex(real64), dimension(:,:,:,:,:), intent(out), optional | F_out | ||
) |
[in,out] | xst | Action of V_X on a set of KS states |
[out] | f_out | For RDMFT |
Definition at line 1918 of file exchange_operator.F90.
real(real64) function, public exchange_operator_oct_m::zexchange_operator_compute_ex | ( | class(mesh_t), intent(in) | mesh, |
type(states_elec_t), intent(in) | st, | ||
type(states_elec_t), intent(in) | xst | ||
) |
Compute the exact exchange energy.
\[ E_X = \frac{1}{2} \sum_{i, \sigma \mathbf{k}} w_\mathbf{k} f_{i\sigma\mathbf{k}} \int \psi^\ast_{i \sigma \mathbf{k}}(\mathbf{r}) W_{i \sigma \mathbf{k}}(\mathbf{r}) d\mathbf{r} \]
where
\[ W_{i\sigma\mathbf{k}}(\mathbf{r}) = - \sum_{j,\mathbf{k}^\prime} f_{j\sigma\mathbf{k}^\prime}\,\omega_{\mathbf{k}^\prime} V_{ij}^{\mathbf{k},\mathbf{k}^\prime,\sigma}(\mathbf{r}) \psi_{j\sigma\mathbf{k}^\prime}(\mathbf{r}) \]
is the action of the exchange operator on a set of Kohn-Sham states.
xst
. This is what is done in the routine [in] | st | A set of KS states |
[in] | xst | V_X operating on a set of KS states |
Definition at line 2460 of file exchange_operator.F90.
subroutine, public exchange_operator_oct_m::zexchange_operator_ace | ( | type(exchange_operator_t), intent(inout) | this, |
type(namespace_t), intent(in) | namespace, | ||
class(mesh_t), intent(in) | mesh, | ||
type(states_elec_t), intent(inout) | st, | ||
type(states_elec_t), intent(inout) | xst, | ||
type(phase_t), intent(in), optional | phase | ||
) |
[in,out] | xst | Application of the exact exchange |
Definition at line 2501 of file exchange_operator.F90.
subroutine, public exchange_operator_oct_m::zexchange_operator_commute_r | ( | type(exchange_operator_t), intent(in) | this, |
type(namespace_t), intent(in) | namespace, | ||
class(mesh_t), intent(in) | mesh, | ||
type(states_elec_dim_t), intent(in) | st_d, | ||
integer, intent(in) | ik, | ||
complex(real64), dimension(:, :), intent(in), contiguous | psi, | ||
complex(real64), dimension(:, :, :), intent(inout), contiguous | gpsi | ||
) |
Definition at line 2636 of file exchange_operator.F90.
subroutine, public exchange_operator_oct_m::zexchange_operator_hartree_apply | ( | type(exchange_operator_t), intent(in) | this, |
type(namespace_t), intent(in) | namespace, | ||
type(mesh_t), intent(in) | mesh, | ||
type(states_elec_dim_t), intent(in) | st_d, | ||
type(kpoints_t), intent(in) | kpoints, | ||
real(real64), intent(in) | exx_coef, | ||
class(wfs_elec_t), intent(inout) | psib, | ||
class(wfs_elec_t), intent(inout) | hpsib | ||
) |
Definition at line 2697 of file exchange_operator.F90.
|
private |
Operator in Fourier space.
Definition at line 197 of file exchange_operator.F90.
|
private |
Minimum weight below which EXX is not added.
Definition at line 201 of file exchange_operator.F90.