DFT-EFE
 
Loading...
Searching...
No Matches
dftefe::linearAlgebra::OrthonormalizationFunctions< ValueTypeOperator, ValueTypeOperand, memorySpace > Class Template Reference

#include <OrthonormalizationFunctions.h>

Collaboration diagram for dftefe::linearAlgebra::OrthonormalizationFunctions< ValueTypeOperator, ValueTypeOperand, memorySpace >:

Public Types

using ValueType = blasLapack::scalar_type< ValueTypeOperator, ValueTypeOperand >
 
using RealType = blasLapack::real_type< ValueType >
 
using OpContext = OperatorContext< ValueTypeOperator, ValueTypeOperand, memorySpace >
 

Public Member Functions

 OrthonormalizationFunctions (const size_type eigenVectorBatchSize, const ElpaScalapackManager &elpaScala, std::shared_ptr< const utils::mpi::MPIPatternP2P< memorySpace > > mpiPatternP2P, std::shared_ptr< LinAlgOpContext< memorySpace > > linAlgOpContext, const bool useScalpack=true)
 
 ~OrthonormalizationFunctions ()=default
 Default Destructor. More...
 
OrthonormalizationError CholeskyGramSchmidt (MultiVector< ValueTypeOperand, memorySpace > &X, MultiVector< ValueType, memorySpace > &orthogonalizedX, const OpContext &B=IdentityOperatorContext< ValueTypeOperator, ValueTypeOperand, memorySpace >())
 
OrthonormalizationError MultipassCGS (MultiVector< ValueTypeOperand, memorySpace > &X, size_type maxPass, RealType shiftTolerance, RealType identityTolerance, MultiVector< ValueType, memorySpace > &orthogonalizedX, const OpContext &B=IdentityOperatorContext< ValueTypeOperator, ValueTypeOperand, memorySpace >())
 
OrthonormalizationError MultipassLowdin (MultiVector< ValueTypeOperand, memorySpace > &X, size_type maxPass, RealType shiftTolerance, RealType identityTolerance, MultiVector< ValueType, memorySpace > &orthogonalizedX, const OpContext &B=IdentityOperatorContext< ValueTypeOperator, ValueTypeOperand, memorySpace >())
 
OrthonormalizationError ModifiedGramSchmidt (MultiVector< ValueTypeOperand, memorySpace > &X, MultiVector< ValueType, memorySpace > &orthogonalizedX, const OpContext &B=IdentityOperatorContext< ValueTypeOperator, ValueTypeOperand, memorySpace >())
 

Private Member Functions

void computeXTransOpX (MultiVector< ValueTypeOperand, memorySpace > &X, utils::MemoryStorage< ValueType, memorySpace > &S, const OpContext &Op, const bool &useBatched=true)
 
void computeXTransOpX (MultiVector< ValueTypeOperand, memorySpace > &X, const std::shared_ptr< const ProcessGrid > &processGrid, ScaLAPACKMatrix< ValueType > &overlapMatPar, const OpContext &Op)
 

Private Attributes

std::shared_ptr< MultiVector< ValueType, memorySpace > > d_XinBatchSmall
 
std::shared_ptr< MultiVector< ValueType, memorySpace > > d_XinBatch
 
std::shared_ptr< MultiVector< ValueType, memorySpace > > d_XoutBatchSmall
 
std::shared_ptr< MultiVector< ValueType, memorySpace > > d_XoutBatch
 
size_type d_eigenVecBatchSize
 
size_type d_batchSizeSmall
 
const ElpaScalapackManagerd_elpaScala
 
const bool d_useELPA
 
const bool d_useScalapack
 

Member Typedef Documentation

◆ OpContext

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace>
using dftefe::linearAlgebra::OrthonormalizationFunctions< ValueTypeOperator, ValueTypeOperand, memorySpace >::OpContext = OperatorContext<ValueTypeOperator, ValueTypeOperand, memorySpace>

◆ RealType

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace>
using dftefe::linearAlgebra::OrthonormalizationFunctions< ValueTypeOperator, ValueTypeOperand, memorySpace >::RealType = blasLapack::real_type<ValueType>

◆ ValueType

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace>
using dftefe::linearAlgebra::OrthonormalizationFunctions< ValueTypeOperator, ValueTypeOperand, memorySpace >::ValueType = blasLapack::scalar_type<ValueTypeOperator, ValueTypeOperand>

Constructor & Destructor Documentation

◆ OrthonormalizationFunctions()

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace>
dftefe::linearAlgebra::OrthonormalizationFunctions< ValueTypeOperator, ValueTypeOperand, memorySpace >::OrthonormalizationFunctions ( const size_type  eigenVectorBatchSize,
const ElpaScalapackManager elpaScala,
std::shared_ptr< const utils::mpi::MPIPatternP2P< memorySpace > >  mpiPatternP2P,
std::shared_ptr< LinAlgOpContext< memorySpace > >  linAlgOpContext,
const bool  useScalpack = true 
)

◆ ~OrthonormalizationFunctions()

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace>
dftefe::linearAlgebra::OrthonormalizationFunctions< ValueTypeOperator, ValueTypeOperand, memorySpace >::~OrthonormalizationFunctions ( )
default

Default Destructor.

Member Function Documentation

◆ CholeskyGramSchmidt()

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace>
OrthonormalizationError dftefe::linearAlgebra::OrthonormalizationFunctions< ValueTypeOperator, ValueTypeOperand, memorySpace >::CholeskyGramSchmidt ( MultiVector< ValueTypeOperand, memorySpace > &  X,
MultiVector< ValueType, memorySpace > &  orthogonalizedX,
const OpContext B = IdentityOperatorContext<ValueTypeOperator, ValueTypeOperand, memorySpace>() 
)

MultiVector<ValueType, memorySpace> copyX(X, 0.0); copyX = X; double norm = OrthonormalizationFunctionsInternal:: doesOrthogonalizationPreserveSubspace<ValueTypeOperator, ValueTypeOperand, memorySpace>(copyX, orthogonalizedX, B); std::stringstream ss; ss << norm; retunValue.msg += " Max LInf norm |(I-QQ^HM)U|: " + ss.str();

Here is the call graph for this function:

◆ computeXTransOpX() [1/2]

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace>
void dftefe::linearAlgebra::OrthonormalizationFunctions< ValueTypeOperator, ValueTypeOperand, memorySpace >::computeXTransOpX ( MultiVector< ValueTypeOperand, memorySpace > &  X,
const std::shared_ptr< const ProcessGrid > &  processGrid,
ScaLAPACKMatrix< ValueType > &  overlapMatPar,
const OpContext Op 
)
private
Here is the call graph for this function:

◆ computeXTransOpX() [2/2]

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace>
void dftefe::linearAlgebra::OrthonormalizationFunctions< ValueTypeOperator, ValueTypeOperand, memorySpace >::computeXTransOpX ( MultiVector< ValueTypeOperand, memorySpace > &  X,
utils::MemoryStorage< ValueType, memorySpace > &  S,
const OpContext Op,
const bool &  useBatched = true 
)
private
Here is the call graph for this function:

◆ ModifiedGramSchmidt()

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace>
OrthonormalizationError dftefe::linearAlgebra::OrthonormalizationFunctions< ValueTypeOperator, ValueTypeOperand, memorySpace >::ModifiedGramSchmidt ( MultiVector< ValueTypeOperand, memorySpace > &  X,
MultiVector< ValueType, memorySpace > &  orthogonalizedX,
const OpContext B = IdentityOperatorContext<ValueTypeOperator, ValueTypeOperand, memorySpace>() 
)
Here is the call graph for this function:

◆ MultipassCGS()

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace>
OrthonormalizationError dftefe::linearAlgebra::OrthonormalizationFunctions< ValueTypeOperator, ValueTypeOperand, memorySpace >::MultipassCGS ( MultiVector< ValueTypeOperand, memorySpace > &  X,
size_type  maxPass,
RealType  shiftTolerance,
RealType  identityTolerance,
MultiVector< ValueType, memorySpace > &  orthogonalizedX,
const OpContext B = IdentityOperatorContext<ValueTypeOperator, ValueTypeOperand, memorySpace>() 
)

-----------------------—DEBUG ONLY---------------------------— double norm = OrthonormalizationFunctionsInternal:: doesOrthogonalizationPreserveSubspace<ValueTypeOperator, ValueTypeOperand, memorySpace>(copyX, orthogonalizedX, B); -----------------------—DEBUG ONLY---------------------------—

Here is the call graph for this function:

◆ MultipassLowdin()

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace>
OrthonormalizationError dftefe::linearAlgebra::OrthonormalizationFunctions< ValueTypeOperator, ValueTypeOperand, memorySpace >::MultipassLowdin ( MultiVector< ValueTypeOperand, memorySpace > &  X,
size_type  maxPass,
RealType  shiftTolerance,
RealType  identityTolerance,
MultiVector< ValueType, memorySpace > &  orthogonalizedX,
const OpContext B = IdentityOperatorContext<ValueTypeOperator, ValueTypeOperand, memorySpace>() 
)

-----------------------—DEBUG ONLY---------------------------— double norm = OrthonormalizationFunctionsInternal:: doesOrthogonalizationPreserveSubspace<ValueTypeOperator, ValueTypeOperand, memorySpace>(copyX, orthogonalizedX, B); -----------------------—DEBUG ONLY---------------------------—

-----------------------—DEBUG ONLY---------------------------— std::stringstream ss; ss << norm; retunValue.msg += " Max LInf norm |(I-QQ^HM)U|: " + ss.str(); -----------------------—DEBUG ONLY---------------------------—

Here is the call graph for this function:

Member Data Documentation

◆ d_batchSizeSmall

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace>
size_type dftefe::linearAlgebra::OrthonormalizationFunctions< ValueTypeOperator, ValueTypeOperand, memorySpace >::d_batchSizeSmall
private

◆ d_eigenVecBatchSize

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace>
size_type dftefe::linearAlgebra::OrthonormalizationFunctions< ValueTypeOperator, ValueTypeOperand, memorySpace >::d_eigenVecBatchSize
private

◆ d_elpaScala

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace>
const ElpaScalapackManager* dftefe::linearAlgebra::OrthonormalizationFunctions< ValueTypeOperator, ValueTypeOperand, memorySpace >::d_elpaScala
private

◆ d_useELPA

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace>
const bool dftefe::linearAlgebra::OrthonormalizationFunctions< ValueTypeOperator, ValueTypeOperand, memorySpace >::d_useELPA
private

◆ d_useScalapack

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace>
const bool dftefe::linearAlgebra::OrthonormalizationFunctions< ValueTypeOperator, ValueTypeOperand, memorySpace >::d_useScalapack
private

◆ d_XinBatch

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace>
std::shared_ptr<MultiVector<ValueType, memorySpace> > dftefe::linearAlgebra::OrthonormalizationFunctions< ValueTypeOperator, ValueTypeOperand, memorySpace >::d_XinBatch
private

◆ d_XinBatchSmall

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace>
std::shared_ptr<MultiVector<ValueType, memorySpace> > dftefe::linearAlgebra::OrthonormalizationFunctions< ValueTypeOperator, ValueTypeOperand, memorySpace >::d_XinBatchSmall
private

◆ d_XoutBatch

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace>
std::shared_ptr<MultiVector<ValueType, memorySpace> > dftefe::linearAlgebra::OrthonormalizationFunctions< ValueTypeOperator, ValueTypeOperand, memorySpace >::d_XoutBatch
private

◆ d_XoutBatchSmall

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace>
std::shared_ptr<MultiVector<ValueType, memorySpace> > dftefe::linearAlgebra::OrthonormalizationFunctions< ValueTypeOperator, ValueTypeOperand, memorySpace >::d_XoutBatchSmall
private

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