![]() |
Octopus
|
Data Types | |
type | hamiltonian_elec_t |
Functions/Subroutines | |
subroutine, public | hamiltonian_elec_init (hm, namespace, space, gr, ions, ext_partners, st, theory_level, xc, mc, kpoints, need_exchange, xc_photons) |
subroutine, public | hamiltonian_elec_end (hm) |
logical function | hamiltonian_elec_hermitian (hm) |
pure logical function | hamiltonian_elec_needs_mgga_term (hm, terms) |
subroutine | hamiltonian_elec_span (hm, delta, emin, namespace) |
pure logical function, public | hamiltonian_elec_inh_term (hm) |
subroutine, public | hamiltonian_elec_set_inh (hm, st) |
subroutine, public | hamiltonian_elec_remove_inh (hm) |
subroutine, public | hamiltonian_elec_adjoint (hm) |
subroutine, public | hamiltonian_elec_not_adjoint (hm) |
subroutine | hamiltonian_elec_update (this, mesh, namespace, space, ext_partners, time) |
(re-)build the Hamiltonian for the next application: More... | |
subroutine, public | hamiltonian_elec_update_pot (this, mesh, accumulate) |
Update the KS potential of the electronic Hamiltonian. More... | |
subroutine, public | hamiltonian_elec_epot_generate (this, namespace, space, gr, ions, ext_partners, st, time) |
real(real64) function, public | hamiltonian_elec_get_time (this) |
pure logical function, public | hamiltonian_elec_apply_packed (this) |
subroutine, public | zhamiltonian_elec_apply_atom (hm, namespace, space, latt, species, pos, ia, mesh, psi, vpsi) |
subroutine, public | hamiltonian_elec_update_with_ext_pot (this, mesh, space, ext_partners, time, mu) |
This is an extension of "hamiltonian_elec_update_pot" to be used by the CFM4 propagator. It updates the Hamiltonian by considering a weighted sum of the external potentials at times time(1) and time(2), weighted by alpha(1) and alpha(2). More... | |
logical function, public | hamiltonian_elec_needs_current (hm, states_are_real) |
subroutine, public | zhamiltonian_elec_apply_all (hm, namespace, gr, st, hst) |
subroutine, public | magnus (hm, namespace, mesh, psi, hpsi, ik, vmagnus, set_phase) |
subroutine | vborders (mesh, hm, psi, hpsi) |
logical function, public | hamiltonian_elec_has_kick (hm) |
subroutine | hamiltonian_elec_set_mass (this, namespace, mass) |
set the effective electron mass, checking whether it was previously redefined. More... | |
subroutine, public | hamiltonian_elec_copy_and_set_phase (hm, gr, kpt, psib, psib_with_phase) |
Copy a batch to another batch and apply the Bloch phase to it. More... | |
subroutine, public | hamiltonian_elec_diagonal (hm, mesh, diag, ik) |
subroutine | dhamiltonian_elec_apply (hm, namespace, mesh, psib, hpsib, terms, set_bc) |
subroutine | dhamiltonian_elec_magnus_apply (hm, namespace, mesh, psib, hpsib, vmagnus) |
subroutine, public | dhamiltonian_elec_apply_batch (hm, namespace, mesh, psib, hpsib, terms, set_bc) |
subroutine | dhamiltonian_elec_external (this, mesh, psib, vpsib) |
subroutine, public | dhamiltonian_elec_apply_single (hm, namespace, mesh, psi, hpsi, ist, ik, terms, set_bc, set_phase) |
subroutine | dhamiltonian_elec_magnus_apply_batch (hm, namespace, mesh, psib, hpsib, vmagnus) |
subroutine | dh_mgga_terms (hm, mesh, psib, hpsib, lapl_psib, ghost_update) |
Computes the orbital-dependent part of the mGGA potential. More... | |
subroutine, public | dvmask (mesh, hm, st) |
subroutine | zhamiltonian_elec_apply (hm, namespace, mesh, psib, hpsib, terms, set_bc) |
subroutine | zhamiltonian_elec_magnus_apply (hm, namespace, mesh, psib, hpsib, vmagnus) |
subroutine, public | zhamiltonian_elec_apply_batch (hm, namespace, mesh, psib, hpsib, terms, set_bc) |
subroutine | zhamiltonian_elec_external (this, mesh, psib, vpsib) |
subroutine, public | zhamiltonian_elec_apply_single (hm, namespace, mesh, psi, hpsi, ist, ik, terms, set_bc, set_phase) |
subroutine | zhamiltonian_elec_magnus_apply_batch (hm, namespace, mesh, psib, hpsib, vmagnus) |
subroutine | zh_mgga_terms (hm, mesh, psib, hpsib, lapl_psib, ghost_update) |
Computes the orbital-dependent part of the mGGA potential. More... | |
subroutine, public | zvmask (mesh, hm, st) |
Variables | |
integer, parameter, public | length = 1 |
integer, parameter, public | velocity = 2 |
subroutine, public hamiltonian_elec_oct_m::hamiltonian_elec_init | ( | type(hamiltonian_elec_t), intent(inout), target | hm, |
type(namespace_t), intent(in) | namespace, | ||
class(space_t), intent(in) | space, | ||
type(grid_t), intent(inout), target | gr, | ||
type(ions_t), intent(inout), target | ions, | ||
type(partner_list_t), intent(inout) | ext_partners, | ||
type(states_elec_t), intent(inout), target | st, | ||
integer, intent(in) | theory_level, | ||
type(xc_t), intent(in), target | xc, | ||
type(multicomm_t), intent(in) | mc, | ||
type(kpoints_t), intent(in), target | kpoints, | ||
logical, intent(in), optional | need_exchange, | ||
type(xc_photons_t), intent(in), optional, target | xc_photons | ||
) |
Definition at line 328 of file hamiltonian_elec.F90.
subroutine, public hamiltonian_elec_oct_m::hamiltonian_elec_end | ( | type(hamiltonian_elec_t), intent(inout), target | hm | ) |
Definition at line 767 of file hamiltonian_elec.F90.
|
private |
Definition at line 830 of file hamiltonian_elec.F90.
|
private |
Definition at line 842 of file hamiltonian_elec.F90.
|
private |
Definition at line 863 of file hamiltonian_elec.F90.
pure logical function, public hamiltonian_elec_oct_m::hamiltonian_elec_inh_term | ( | type(hamiltonian_elec_t), intent(in) | hm | ) |
Definition at line 885 of file hamiltonian_elec.F90.
subroutine, public hamiltonian_elec_oct_m::hamiltonian_elec_set_inh | ( | type(hamiltonian_elec_t), intent(inout) | hm, |
type(states_elec_t), intent(in) | st | ||
) |
Definition at line 893 of file hamiltonian_elec.F90.
subroutine, public hamiltonian_elec_oct_m::hamiltonian_elec_remove_inh | ( | type(hamiltonian_elec_t), intent(inout) | hm | ) |
Definition at line 908 of file hamiltonian_elec.F90.
subroutine, public hamiltonian_elec_oct_m::hamiltonian_elec_adjoint | ( | type(hamiltonian_elec_t), intent(inout) | hm | ) |
Definition at line 922 of file hamiltonian_elec.F90.
subroutine, public hamiltonian_elec_oct_m::hamiltonian_elec_not_adjoint | ( | type(hamiltonian_elec_t), intent(inout) | hm | ) |
Definition at line 939 of file hamiltonian_elec.F90.
|
private |
(re-)build the Hamiltonian for the next application:
Definition at line 957 of file hamiltonian_elec.F90.
subroutine, public hamiltonian_elec_oct_m::hamiltonian_elec_update_pot | ( | type(hamiltonian_elec_t), intent(inout) | this, |
class(mesh_t), intent(in) | mesh, | ||
logical, intent(in), optional | accumulate | ||
) |
Update the KS potential of the electronic Hamiltonian.
Adds PCM contributions
Adds possible absorbing potential
Definition at line 1184 of file hamiltonian_elec.F90.
subroutine, public hamiltonian_elec_oct_m::hamiltonian_elec_epot_generate | ( | type(hamiltonian_elec_t), intent(inout) | this, |
type(namespace_t), intent(in) | namespace, | ||
class(electron_space_t), intent(in) | space, | ||
type(grid_t), intent(in) | gr, | ||
type(ions_t), intent(inout), target | ions, | ||
type(partner_list_t), intent(in) | ext_partners, | ||
type(states_elec_t), intent(inout) | st, | ||
real(real64), intent(in), optional | time | ||
) |
Generates the real-space PCM potential due to nuclei which do not change during the SCF calculation.
Local field effects due to static electrostatic potentials (if they were). The laser and the kick are included in subroutine v_ks_hartree (module v_ks).
Definition at line 1284 of file hamiltonian_elec.F90.
real(real64) function, public hamiltonian_elec_oct_m::hamiltonian_elec_get_time | ( | type(hamiltonian_elec_t), intent(inout) | this | ) |
Definition at line 1367 of file hamiltonian_elec.F90.
pure logical function, public hamiltonian_elec_oct_m::hamiltonian_elec_apply_packed | ( | class(hamiltonian_elec_t), intent(in) | this | ) |
Definition at line 1375 of file hamiltonian_elec.F90.
subroutine, public hamiltonian_elec_oct_m::zhamiltonian_elec_apply_atom | ( | type(hamiltonian_elec_t), intent(in) | hm, |
type(namespace_t), intent(in) | namespace, | ||
class(space_t), intent(in) | space, | ||
type(lattice_vectors_t), intent(in) | latt, | ||
class(species_t), intent(in) | species, | ||
real(real64), dimension(1:space%dim), intent(in) | pos, | ||
integer, intent(in) | ia, | ||
class(mesh_t), intent(in) | mesh, | ||
complex(real64), dimension(:,:), intent(in) | psi, | ||
complex(real64), dimension(:,:), intent(out) | vpsi | ||
) |
[in] | psi | (grnp_part, hmddim) |
[out] | vpsi | (grnp, hmddim) |
Definition at line 1384 of file hamiltonian_elec.F90.
subroutine, public hamiltonian_elec_oct_m::hamiltonian_elec_update_with_ext_pot | ( | type(hamiltonian_elec_t), intent(inout) | this, |
class(mesh_t), intent(in) | mesh, | ||
class(space_t), intent(in) | space, | ||
type(partner_list_t), intent(in) | ext_partners, | ||
real(real64), dimension(1:2), intent(in) | time, | ||
real(real64), dimension(1:2), intent(in) | mu | ||
) |
This is an extension of "hamiltonian_elec_update_pot" to be used by the CFM4 propagator. It updates the Hamiltonian by considering a weighted sum of the external potentials at times time(1) and time(2), weighted by alpha(1) and alpha(2).
Definition at line 1417 of file hamiltonian_elec.F90.
logical function, public hamiltonian_elec_oct_m::hamiltonian_elec_needs_current | ( | type(hamiltonian_elec_t), intent(in) | hm, |
logical, intent(in) | states_are_real | ||
) |
Definition at line 1608 of file hamiltonian_elec.F90.
subroutine, public hamiltonian_elec_oct_m::zhamiltonian_elec_apply_all | ( | type(hamiltonian_elec_t), intent(inout) | hm, |
type(namespace_t), intent(in) | namespace, | ||
type(grid_t), intent(in) | gr, | ||
type(states_elec_t), intent(inout) | st, | ||
type(states_elec_t), intent(inout) | hst | ||
) |
Definition at line 1626 of file hamiltonian_elec.F90.
subroutine, public hamiltonian_elec_oct_m::magnus | ( | type(hamiltonian_elec_t), intent(in) | hm, |
type(namespace_t), intent(in) | namespace, | ||
class(mesh_t), intent(in) | mesh, | ||
complex(real64), dimension(:,:), intent(inout), contiguous | psi, | ||
complex(real64), dimension(:,:), intent(out), contiguous | hpsi, | ||
integer, intent(in) | ik, | ||
real(real64), dimension(:, :, :), intent(in) | vmagnus, | ||
logical, intent(in), optional | set_phase | ||
) |
[in] | set_phase | If set to .false. the phase will not be added to the states. |
Definition at line 1675 of file hamiltonian_elec.F90.
|
private |
Definition at line 1727 of file hamiltonian_elec.F90.
logical function, public hamiltonian_elec_oct_m::hamiltonian_elec_has_kick | ( | type(hamiltonian_elec_t), intent(in) | hm | ) |
Definition at line 1747 of file hamiltonian_elec.F90.
|
private |
set the effective electron mass, checking whether it was previously redefined.
Definition at line 1759 of file hamiltonian_elec.F90.
subroutine, public hamiltonian_elec_oct_m::hamiltonian_elec_copy_and_set_phase | ( | type(hamiltonian_elec_t), intent(in) | hm, |
type(grid_t), intent(in) | gr, | ||
type(distributed_t), intent(in) | kpt, | ||
type(wfs_elec_t), intent(in) | psib, | ||
type(wfs_elec_t), intent(out) | psib_with_phase | ||
) |
Copy a batch to another batch and apply the Bloch phase to it.
On exist, psib_with_phase is packed If no phase is defined, a packed copy of psib is returned
TODO: This should should probably belong to wfs_elec_t, but cannot due to circular dependencies
[in] | kpt | k-point distribution |
[in] | psib | Batched wave functions |
[out] | psib_with_phase | Batched wave functions with phase applied |
Definition at line 1783 of file hamiltonian_elec.F90.
subroutine, public hamiltonian_elec_oct_m::hamiltonian_elec_diagonal | ( | type(hamiltonian_elec_t), intent(in) | hm, |
class(mesh_t), intent(in) | mesh, | ||
real(real64), dimension(:,:), intent(out), contiguous | diag, | ||
integer, intent(in) | ik | ||
) |
[out] | diag | hpsi(grmeshnp, hmdnspin) |
Definition at line 1814 of file hamiltonian_elec.F90.
|
private |
[in] | set_bc | If set to .false. the boundary conditions are assumed to be set previously. |
Definition at line 1925 of file hamiltonian_elec.F90.
|
private |
Definition at line 1954 of file hamiltonian_elec.F90.
subroutine, public hamiltonian_elec_oct_m::dhamiltonian_elec_apply_batch | ( | type(hamiltonian_elec_t), intent(in) | hm, |
type(namespace_t), intent(in) | namespace, | ||
class(mesh_t), intent(in) | mesh, | ||
type(wfs_elec_t), intent(inout), target | psib, | ||
type(wfs_elec_t), intent(inout), target | hpsib, | ||
integer, intent(in), optional | terms, | ||
logical, intent(in), optional | set_bc | ||
) |
[in] | set_bc | If set to .false. the boundary conditions are assumed to be set previously. |
Definition at line 1982 of file hamiltonian_elec.F90.
|
private |
Definition at line 2198 of file hamiltonian_elec.F90.
subroutine, public hamiltonian_elec_oct_m::dhamiltonian_elec_apply_single | ( | type(hamiltonian_elec_t), intent(in) | hm, |
type(namespace_t), intent(in) | namespace, | ||
class(mesh_t), intent(in) | mesh, | ||
real(real64), dimension(:,:), intent(inout), target, contiguous | psi, | ||
real(real64), dimension(:,:), intent(inout), target, contiguous | hpsi, | ||
integer, intent(in) | ist, | ||
integer, intent(in) | ik, | ||
integer, intent(in), optional | terms, | ||
logical, intent(in), optional | set_bc, | ||
logical, intent(in), optional | set_phase | ||
) |
[in] | ist | the index of the state |
[in] | ik | the index of the k-point |
[in,out] | psi | (grmeshnp_part, hmddim) |
[in,out] | hpsi | (grmeshnp, hmddim) |
Definition at line 2247 of file hamiltonian_elec.F90.
|
private |
Definition at line 2281 of file hamiltonian_elec.F90.
|
private |
Computes the orbital-dependent part of the mGGA potential.
This reads as \( L\psi =-\nabla \cdot [\vtau \nabla \psi]\).
It is trivial to show that this operator is self-adjoint. However, this is never the case with finite differences. This is thus reimplemented as L\psi = -1/2(v_\tau \Delta \psi - \psi \Delta[v_\tau] + \Delta [v_\tau \psi]
The same expression was proposed in Richter et al., J. Chem. Phys. 159, 124117 (2023).
Definition at line 2343 of file hamiltonian_elec.F90.
subroutine, public hamiltonian_elec_oct_m::dvmask | ( | class(mesh_t), intent(in) | mesh, |
type(hamiltonian_elec_t), intent(in) | hm, | ||
type(states_elec_t), intent(inout) | st | ||
) |
Definition at line 2394 of file hamiltonian_elec.F90.
|
private |
[in] | set_bc | If set to .false. the boundary conditions are assumed to be set previously. |
Definition at line 2498 of file hamiltonian_elec.F90.
|
private |
Definition at line 2527 of file hamiltonian_elec.F90.
subroutine, public hamiltonian_elec_oct_m::zhamiltonian_elec_apply_batch | ( | type(hamiltonian_elec_t), intent(in) | hm, |
type(namespace_t), intent(in) | namespace, | ||
class(mesh_t), intent(in) | mesh, | ||
type(wfs_elec_t), intent(inout), target | psib, | ||
type(wfs_elec_t), intent(inout), target | hpsib, | ||
integer, intent(in), optional | terms, | ||
logical, intent(in), optional | set_bc | ||
) |
[in] | set_bc | If set to .false. the boundary conditions are assumed to be set previously. |
Definition at line 2555 of file hamiltonian_elec.F90.
|
private |
Definition at line 2771 of file hamiltonian_elec.F90.
subroutine, public hamiltonian_elec_oct_m::zhamiltonian_elec_apply_single | ( | type(hamiltonian_elec_t), intent(in) | hm, |
type(namespace_t), intent(in) | namespace, | ||
class(mesh_t), intent(in) | mesh, | ||
complex(real64), dimension(:,:), intent(inout), target, contiguous | psi, | ||
complex(real64), dimension(:,:), intent(inout), target, contiguous | hpsi, | ||
integer, intent(in) | ist, | ||
integer, intent(in) | ik, | ||
integer, intent(in), optional | terms, | ||
logical, intent(in), optional | set_bc, | ||
logical, intent(in), optional | set_phase | ||
) |
[in] | ist | the index of the state |
[in] | ik | the index of the k-point |
[in,out] | psi | (grmeshnp_part, hmddim) |
[in,out] | hpsi | (grmeshnp, hmddim) |
Definition at line 2820 of file hamiltonian_elec.F90.
|
private |
Definition at line 2854 of file hamiltonian_elec.F90.
|
private |
Computes the orbital-dependent part of the mGGA potential.
This reads as \( L\psi =-\nabla \cdot [\vtau \nabla \psi]\).
It is trivial to show that this operator is self-adjoint. However, this is never the case with finite differences. This is thus reimplemented as L\psi = -1/2(v_\tau \Delta \psi - \psi \Delta[v_\tau] + \Delta [v_\tau \psi]
The same expression was proposed in Richter et al., J. Chem. Phys. 159, 124117 (2023).
Definition at line 2916 of file hamiltonian_elec.F90.
subroutine, public hamiltonian_elec_oct_m::zvmask | ( | class(mesh_t), intent(in) | mesh, |
type(hamiltonian_elec_t), intent(in) | hm, | ||
type(states_elec_t), intent(inout) | st | ||
) |
Definition at line 2967 of file hamiltonian_elec.F90.
integer, parameter, public hamiltonian_elec_oct_m::length = 1 |
Definition at line 320 of file hamiltonian_elec.F90.
integer, parameter, public hamiltonian_elec_oct_m::velocity = 2 |
Definition at line 320 of file hamiltonian_elec.F90.