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

#include <ultrasoft_precond_k.hpp>

Inherits sirius::local::OperatorBase.

Public Member Functions

 Ultrasoft_preconditioner (Simulation_context &simulation_context, const Q_operator< double > &q_op, int ispn, const Beta_projectors_base< double > &bp, const fft::Gvec &gkvec)
 
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)
 
const Simulation_contextctx () const
 
- Public Member Functions inherited from sirius::local::OperatorBase
 OperatorBase (int n)
 
int size () const
 

Private Attributes

Simulation_contextctx_
 
Teter< numeric_t > P
 
const Q_operator< double > & q_op
 
int ispn_
 
const Beta_projectors_base< double > & bp_
 
sddk::mdarray< int, 1 > ipiv_
 
sddk::mdarray< numeric_t, 2 > LU_
 

Detailed Description

template<class numeric_t>
class sirius::Ultrasoft_preconditioner< numeric_t >

Ultrasoft preconditioner for direct minimization.

(1+T)⁻¹ + G R G⊹ where R = -Q (1 + C Q)⁻¹ and G are the "preconditioned" beta projectors, C = B⊹ K B TODO: what is K?

Hasnip, P. J., & Pickard, C. J. (). Electronic energy minimisation with ultrasoft pseudopotentials. , 174(1), 24–29. http://dx.doi.org/10.1016/j.cpc.2005.07.011

Definition at line 152 of file ultrasoft_precond_k.hpp.

Constructor & Destructor Documentation

◆ Ultrasoft_preconditioner()

template<class numeric_t >
sirius::Ultrasoft_preconditioner< numeric_t >::Ultrasoft_preconditioner ( Simulation_context simulation_context,
const Q_operator< double > &  q_op,
int  ispn,
const Beta_projectors_base< double > &  bp,
const fft::Gvec gkvec 
)

Definition at line 179 of file ultrasoft_precond_k.hpp.

Member Function Documentation

◆ apply() [1/2]

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

Definition at line 230 of file ultrasoft_precond_k.hpp.

◆ apply() [2/2]

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

Definition at line 239 of file ultrasoft_precond_k.hpp.

◆ ctx()

template<class numeric_t >
const Simulation_context & sirius::Ultrasoft_preconditioner< numeric_t >::ctx ( ) const
inline

Definition at line 162 of file ultrasoft_precond_k.hpp.

Member Data Documentation

◆ ctx_

template<class numeric_t >
Simulation_context& sirius::Ultrasoft_preconditioner< numeric_t >::ctx_
private

Definition at line 169 of file ultrasoft_precond_k.hpp.

◆ P

template<class numeric_t >
Teter<numeric_t> sirius::Ultrasoft_preconditioner< numeric_t >::P
private

Definition at line 170 of file ultrasoft_precond_k.hpp.

◆ q_op

template<class numeric_t >
const Q_operator<double>& sirius::Ultrasoft_preconditioner< numeric_t >::q_op
private

Definition at line 171 of file ultrasoft_precond_k.hpp.

◆ ispn_

template<class numeric_t >
int sirius::Ultrasoft_preconditioner< numeric_t >::ispn_
private

Definition at line 172 of file ultrasoft_precond_k.hpp.

◆ bp_

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

Definition at line 173 of file ultrasoft_precond_k.hpp.

◆ ipiv_

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

Definition at line 174 of file ultrasoft_precond_k.hpp.

◆ LU_

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

Definition at line 175 of file ultrasoft_precond_k.hpp.


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