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

#include <inverse_overlap.hpp>

Inherits sirius::local::Overlap_operator.

Public Member Functions

 InverseS_k (Simulation_context &simulation_context, const Q_operator< double > &q_op, const Beta_projectors_base< double > &bp, int ispn)
 
sddk::mdarray< numeric_t, 2 > apply (const sddk::mdarray< numeric_t, 2 > &X, sddk::memory_t pm=sddk::memory_t::none)
 
void apply (sddk::mdarray< numeric_t, 2 > &Y, const sddk::mdarray< numeric_t, 2 > &X, sddk::memory_t pm=sddk::memory_t::none)
 
- Public Member Functions inherited from sirius::local::Overlap_operator
 Overlap_operator (Simulation_context &simulation_context, int n)
 
const Simulation_contextctx () const
 
int size () const
 global dimension of the operator More...
 

Public Attributes

const std::string label {"inverse overlap"}
 

Private Member Functions

void initialize (const Beta_projectors_base< double > &bp)
 

Private Attributes

const Q_operator< double > & q_op_
 
const Beta_projectors_base< double > & bp_
 
const int ispn_
 
sddk::mdarray< numeric_t, 2 > LU_
 
sddk::mdarray< int, 1 > ipiv_
 

Additional Inherited Members

- Protected Attributes inherited from sirius::local::Overlap_operator
Simulation_contextctx_
 
int n_
 

Detailed Description

template<class numeric_t>
class sirius::InverseS_k< numeric_t >

Ref: 10.1016/j.cpc.2005.07.011 Electronic energy minimisation with ultrasoft pseudopotentials Hasnip & Pickard

Definition at line 103 of file inverse_overlap.hpp.

Constructor & Destructor Documentation

◆ InverseS_k()

template<class numeric_t >
sirius::InverseS_k< numeric_t >::InverseS_k ( Simulation_context simulation_context,
const Q_operator< double > &  q_op,
const Beta_projectors_base< double > &  bp,
int  ispn 
)
inline

Definition at line 106 of file inverse_overlap.hpp.

Member Function Documentation

◆ apply() [1/2]

template<class numeric_t >
sddk::mdarray< numeric_t, 2 > sirius::InverseS_k< numeric_t >::apply ( const sddk::mdarray< numeric_t, 2 > &  X,
sddk::memory_t  pm = sddk::memory_t::none 
)

apply wfct computes (X + Beta*P*Beta^H*X) where P = -Q*(I + B*Q)⁻¹

Definition at line 257 of file inverse_overlap.hpp.

◆ apply() [2/2]

template<class numeric_t >
void sirius::InverseS_k< numeric_t >::apply ( sddk::mdarray< numeric_t, 2 > &  Y,
const sddk::mdarray< numeric_t, 2 > &  X,
sddk::memory_t  pm = sddk::memory_t::none 
)

apply wfct computes (X + Beta*P*Beta^H*X) where P = -Q*(I + B*Q)⁻¹

Definition at line 194 of file inverse_overlap.hpp.

◆ initialize()

template<class numeric_t >
void sirius::InverseS_k< numeric_t >::initialize ( const Beta_projectors_base< double > &  bp)
private

Definition at line 159 of file inverse_overlap.hpp.

Member Data Documentation

◆ label

template<class numeric_t >
const std::string sirius::InverseS_k< numeric_t >::label {"inverse overlap"}

Definition at line 121 of file inverse_overlap.hpp.

◆ q_op_

template<class numeric_t >
const Q_operator<double>& sirius::InverseS_k< numeric_t >::q_op_
private

Definition at line 125 of file inverse_overlap.hpp.

◆ bp_

template<class numeric_t >
const Beta_projectors_base<double>& sirius::InverseS_k< numeric_t >::bp_
private

Definition at line 126 of file inverse_overlap.hpp.

◆ ispn_

template<class numeric_t >
const int sirius::InverseS_k< numeric_t >::ispn_
private

Definition at line 127 of file inverse_overlap.hpp.

◆ LU_

template<class numeric_t >
sddk::mdarray<numeric_t, 2> sirius::InverseS_k< numeric_t >::LU_
private

Definition at line 129 of file inverse_overlap.hpp.

◆ ipiv_

template<class numeric_t >
sddk::mdarray<int, 1> sirius::InverseS_k< numeric_t >::ipiv_
private

Definition at line 130 of file inverse_overlap.hpp.


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