SIRIUS 7.5.0
Electronic structure library and applications
Public Member Functions | Private Member Functions | Private Attributes | List of all members
sirius::Hamiltonian0< T > Class Template Reference

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_contextctx () const
 
Potentialpotential () 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_contextctx_
 Simulation context. More...
 
Potentialpotential_ {nullptr}
 Alias for the potential. More...
 
Unit_cellunit_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_
 

Detailed Description

template<typename T>
class sirius::Hamiltonian0< T >

Represent the k-point independent part of Hamiltonian.

Template Parameters
TPrecision of the wave-functions (float or double).

Definition at line 74 of file hamiltonian.hpp.

Constructor & Destructor Documentation

◆ Hamiltonian0()

template<typename T >
sirius::Hamiltonian0< T >::Hamiltonian0 ( Potential potential__,
bool  precompute_lapw__ 
)

Constructor.

Definition at line 35 of file hamiltonian.cpp.

◆ ~Hamiltonian0()

template<typename T >
sirius::Hamiltonian0< T >::~Hamiltonian0

Definition at line 94 of file hamiltonian.cpp.

Member Function Documentation

◆ operator()()

template<typename T >
Hamiltonian_k< T > sirius::Hamiltonian0< T >::operator() ( K_point< T > &  kp__) const
inline

Return a Hamiltonian for the given k-point.

Definition at line 530 of file hamiltonian.hpp.

◆ ctx()

template<typename T >
Simulation_context & sirius::Hamiltonian0< T >::ctx ( ) const
inline

Definition at line 114 of file hamiltonian.hpp.

◆ potential()

template<typename T >
Potential & sirius::Hamiltonian0< T >::potential ( ) const
inline

Definition at line 119 of file hamiltonian.hpp.

◆ local_op()

template<typename T >
Local_operator< T > & sirius::Hamiltonian0< T >::local_op ( ) const
inline

Definition at line 124 of file hamiltonian.hpp.

◆ Q()

template<typename T >
Q_operator< T > & sirius::Hamiltonian0< T >::Q ( ) const
inline

Definition at line 129 of file hamiltonian.hpp.

◆ D()

template<typename T >
D_operator< T > & sirius::Hamiltonian0< T >::D ( ) const
inline

Definition at line 134 of file hamiltonian.hpp.

◆ hmt()

template<typename T >
auto const & sirius::Hamiltonian0< T >::hmt ( int  ia__) const
inline

Definition at line 139 of file hamiltonian.hpp.

◆ apply_hmt_to_apw()

template<typename T >
template<spin_block_t sblock>
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.

◆ add_o1mt_to_apw()

template<typename T >
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.

◆ apply_bmt()

template<typename T >
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.

◆ apply_so_correction()

template<typename T >
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} \]

  • apply L_{+} operator *‍/

Definition at line 215 of file hamiltonian.cpp.

Member Data Documentation

◆ ctx_

template<typename T >
Simulation_context& sirius::Hamiltonian0< T >::ctx_
private

Simulation context.

Definition at line 78 of file hamiltonian.hpp.

◆ potential_

template<typename T >
Potential* sirius::Hamiltonian0< T >::potential_ {nullptr}
private

Alias for the potential.

Definition at line 81 of file hamiltonian.hpp.

◆ unit_cell_

template<typename T >
Unit_cell& sirius::Hamiltonian0< T >::unit_cell_
private

Alias for unit cell.

Definition at line 84 of file hamiltonian.hpp.

◆ local_op_

template<typename T >
std::unique_ptr<Local_operator<T> > sirius::Hamiltonian0< T >::local_op_
private

Local part of the Hamiltonian operator.

Definition at line 87 of file hamiltonian.hpp.

◆ d_op_

template<typename T >
std::unique_ptr<D_operator<T> > sirius::Hamiltonian0< T >::d_op_
private

D operator (non-local part of Hamiltonian).

Definition at line 90 of file hamiltonian.hpp.

◆ q_op_

template<typename T >
std::unique_ptr<Q_operator<T> > sirius::Hamiltonian0< T >::q_op_
private

Q operator (non-local part of S-operator).

Definition at line 93 of file hamiltonian.hpp.

◆ hmt_

template<typename T >
std::vector<sddk::mdarray<std::complex<T>, 2> > sirius::Hamiltonian0< T >::hmt_
private

Definition at line 95 of file hamiltonian.hpp.


The documentation for this class was generated from the following files: