SIRIUS 7.5.0
Electronic structure library and applications
|
Represent the k-point independent part of Hamiltonian. More...
#include <hamiltonian.hpp>
Public Member Functions | |
Hamiltonian0 (Potential &potential__, bool precompute_lapw__) | |
Constructor. More... | |
Hamiltonian0 (Hamiltonian0< T > &&src)=default | |
Default move constructor. | |
Hamiltonian_k< T > | operator() (K_point< T > &kp__) const |
Return a Hamiltonian for the given k-point. More... | |
Simulation_context & | ctx () const |
Potential & | potential () const |
Local_operator< T > & | local_op () const |
Q_operator< T > & | Q () const |
D_operator< T > & | D () const |
auto const & | hmt (int ia__) const |
template<spin_block_t sblock> | |
void | apply_hmt_to_apw (Atom const &atom__, int ngv__, sddk::mdarray< std::complex< T >, 2 > &alm__, sddk::mdarray< std::complex< T >, 2 > &halm__) const |
Apply the muffin-tin part of the Hamiltonian to the apw basis functions of an atom. More... | |
void | add_o1mt_to_apw (Atom const &atom__, int num_gkvec__, sddk::mdarray< std::complex< T >, 2 > &alm__) const |
Add correction to LAPW overlap arising in the infinite-order relativistic approximation (IORA). More... | |
void | apply_bmt (wf::Wave_functions< T > &psi__, std::vector< wf::Wave_functions< T > > &bpsi__) const |
Apply muffin-tin part of magnetic filed to the wave-functions. More... | |
void | apply_so_correction (wf::Wave_functions< T > &psi__, std::vector< wf::Wave_functions< T > > &hpsi__) const |
Apply SO correction to the first-variational LAPW wave-functions. More... | |
Private Member Functions | |
Hamiltonian0 (Hamiltonian0< T > const &src)=delete | |
Hamiltonian0< T > & | operator= (Hamiltonian0< T > const &src)=delete |
Private Attributes | |
Simulation_context & | ctx_ |
Simulation context. More... | |
Potential * | potential_ {nullptr} |
Alias for the potential. More... | |
Unit_cell & | unit_cell_ |
Alias for unit cell. More... | |
std::unique_ptr< Local_operator< T > > | local_op_ |
Local part of the Hamiltonian operator. More... | |
std::unique_ptr< D_operator< T > > | d_op_ |
D operator (non-local part of Hamiltonian). More... | |
std::unique_ptr< Q_operator< T > > | q_op_ |
Q operator (non-local part of S-operator). More... | |
std::vector< sddk::mdarray< std::complex< T >, 2 > > | hmt_ |
Represent the k-point independent part of Hamiltonian.
T | Precision of the wave-functions (float or double). |
Definition at line 74 of file hamiltonian.hpp.
sirius::Hamiltonian0< T >::Hamiltonian0 | ( | Potential & | potential__, |
bool | precompute_lapw__ | ||
) |
Constructor.
Definition at line 35 of file hamiltonian.cpp.
sirius::Hamiltonian0< T >::~Hamiltonian0 |
Definition at line 94 of file hamiltonian.cpp.
|
inline |
Return a Hamiltonian for the given k-point.
Definition at line 530 of file hamiltonian.hpp.
|
inline |
Definition at line 114 of file hamiltonian.hpp.
|
inline |
Definition at line 119 of file hamiltonian.hpp.
|
inline |
Definition at line 124 of file hamiltonian.hpp.
|
inline |
Definition at line 129 of file hamiltonian.hpp.
|
inline |
Definition at line 134 of file hamiltonian.hpp.
|
inline |
Definition at line 139 of file hamiltonian.hpp.
template void sirius::Hamiltonian0< T >::apply_hmt_to_apw< spin_block_t::nm > | ( | Atom const & | atom__, |
int | ngv__, | ||
sddk::mdarray< std::complex< T >, 2 > & | alm__, | ||
sddk::mdarray< std::complex< T >, 2 > & | halm__ | ||
) | const |
Apply the muffin-tin part of the Hamiltonian to the apw basis functions of an atom.
The following matrix is computed:
\[ b_{L_2 \nu_2}^{\alpha}({\bf G'}) = \sum_{L_1 \nu_1} \sum_{L_3} a_{L_1\nu_1}^{\alpha}({\bf G'}) \langle u_{\ell_1\nu_1}^{\alpha} | h_{L3}^{\alpha} | u_{\ell_2\nu_2}^{\alpha} \rangle \langle Y_{L_1} | R_{L_3} | Y_{L_2} \rangle \]
Definition at line 100 of file hamiltonian.cpp.
void sirius::Hamiltonian0< T >::add_o1mt_to_apw | ( | Atom const & | atom__, |
int | num_gkvec__, | ||
sddk::mdarray< std::complex< T >, 2 > & | alm__ | ||
) | const |
Add correction to LAPW overlap arising in the infinite-order relativistic approximation (IORA).
Definition at line 128 of file hamiltonian.cpp.
void sirius::Hamiltonian0< T >::apply_bmt | ( | wf::Wave_functions< T > & | psi__, |
std::vector< wf::Wave_functions< T > > & | bpsi__ | ||
) | const |
Apply muffin-tin part of magnetic filed to the wave-functions.
Definition at line 156 of file hamiltonian.cpp.
void sirius::Hamiltonian0< T >::apply_so_correction | ( | wf::Wave_functions< T > & | psi__, |
std::vector< wf::Wave_functions< T > > & | hpsi__ | ||
) | const |
Apply SO correction to the first-variational LAPW wave-functions.
Raising and lowering operators:
\[ L_{\pm} Y_{\ell m}= (L_x \pm i L_y) Y_{\ell m} = \sqrt{\ell(\ell+1) - m(m \pm 1)} Y_{\ell m \pm 1} \]
Definition at line 215 of file hamiltonian.cpp.
|
private |
Simulation context.
Definition at line 78 of file hamiltonian.hpp.
|
private |
Alias for the potential.
Definition at line 81 of file hamiltonian.hpp.
|
private |
Alias for unit cell.
Definition at line 84 of file hamiltonian.hpp.
|
private |
Local part of the Hamiltonian operator.
Definition at line 87 of file hamiltonian.hpp.
|
private |
D operator (non-local part of Hamiltonian).
Definition at line 90 of file hamiltonian.hpp.
|
private |
Q operator (non-local part of S-operator).
Definition at line 93 of file hamiltonian.hpp.
|
private |
Definition at line 95 of file hamiltonian.hpp.