DFT-EFE
 
Loading...
Searching...
No Matches
dftefe::basis::CFEOverlapOperatorContext< ValueTypeOperator, ValueTypeOperand, memorySpace, dim > Class Template Reference

A derived class of linearAlgebra::OperatorContext to encapsulate the action of a discrete operator on vectors, matrices, etc. More...

#include <CFEOverlapOperatorContext.h>

Inheritance diagram for dftefe::basis::CFEOverlapOperatorContext< ValueTypeOperator, ValueTypeOperand, memorySpace, dim >:
Collaboration diagram for dftefe::basis::CFEOverlapOperatorContext< ValueTypeOperator, ValueTypeOperand, memorySpace, dim >:

Public Types

using ValueType = linearAlgebra::blasLapack::scalar_type< ValueTypeOperator, ValueTypeOperand >
 define ValueType as the superior (bigger set) of the ValueTypeOperator and ValueTypeOperand (e.g., between double and complex<double>, complex<double> is the bigger set) More...
 
using Storage = dftefe::utils::MemoryStorage< ValueTypeOperator, memorySpace >
 

Public Member Functions

 CFEOverlapOperatorContext (const FEBasisManager< ValueTypeOperand, ValueTypeOperator, memorySpace, dim > &feBasisManager, const FEBasisDataStorage< ValueTypeOperator, memorySpace > &feBasisDataStorage, const size_type maxCellTimesNumVecs)
 Constructor. More...
 
 CFEOverlapOperatorContext (const FEBasisManager< ValueTypeOperand, ValueTypeOperator, memorySpace, dim > &feBasisManager, const FEBasisDataStorage< ValueTypeOperator, memorySpace > &feBasisDataStorage, std::shared_ptr< linearAlgebra::LinAlgOpContext< memorySpace > > linAlgOpContext)
 
void apply (linearAlgebra::MultiVector< ValueTypeOperand, memorySpace > &X, linearAlgebra::MultiVector< ValueType, memorySpace > &Y) const override
 
Storage getBasisOverlap (const size_type cellId, const size_type basisId1, const size_type basisId2) const
 
Storage getBasisOverlapInCell (const size_type cellId) const
 
const StoragegetBasisOverlapInAllCells () const
 

Private Attributes

const FEBasisManager< ValueTypeOperand, ValueTypeOperator, memorySpace, dim > * d_feBasisManager
 
std::shared_ptr< Storaged_basisOverlap
 
std::vector< size_typed_cellStartIdsBasisOverlap
 
std::vector< size_typed_dofsInCell
 
const size_type d_maxCellTimesNumVecs
 
bool d_isMassLumping
 
std::shared_ptr< linearAlgebra::Vector< ValueTypeOperator, memorySpace > > d_diagonal
 

Detailed Description

template<typename ValueTypeOperator, typename ValueTypeOperand, utils::MemorySpace memorySpace, size_type dim>
class dftefe::basis::CFEOverlapOperatorContext< ValueTypeOperator, ValueTypeOperand, memorySpace, dim >

A derived class of linearAlgebra::OperatorContext to encapsulate the action of a discrete operator on vectors, matrices, etc.

Template Parameters
ValueTypeOperatorThe datatype (float, double, complex<double>, etc.) for the underlying operator. Ususlly ValueTypeBasisData in FE basis
ValueTypeOperandThe datatype (float, double, complex<double>, etc.) of the vector, matrices, etc. on which the operator will act. Ususlly ValueTypeBasisCoeff in FE basis
memorySpaceThe memory space (HOST, DEVICE, HOST_PINNED, etc.) in which the data of the operator and its operands reside

Member Typedef Documentation

◆ Storage

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace, size_type dim>
using dftefe::basis::CFEOverlapOperatorContext< ValueTypeOperator, ValueTypeOperand, memorySpace, dim >::Storage = dftefe::utils::MemoryStorage<ValueTypeOperator, memorySpace>

◆ ValueType

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace, size_type dim>
using dftefe::basis::CFEOverlapOperatorContext< ValueTypeOperator, ValueTypeOperand, memorySpace, dim >::ValueType = linearAlgebra::blasLapack::scalar_type<ValueTypeOperator, ValueTypeOperand>

define ValueType as the superior (bigger set) of the ValueTypeOperator and ValueTypeOperand (e.g., between double and complex<double>, complex<double> is the bigger set)

Constructor & Destructor Documentation

◆ CFEOverlapOperatorContext() [1/2]

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace, size_type dim>
dftefe::basis::CFEOverlapOperatorContext< ValueTypeOperator, ValueTypeOperand, memorySpace, dim >::CFEOverlapOperatorContext ( const FEBasisManager< ValueTypeOperand, ValueTypeOperator, memorySpace, dim > &  feBasisManager,
const FEBasisDataStorage< ValueTypeOperator, memorySpace > &  feBasisDataStorage,
const size_type  maxCellTimesNumVecs 
)

Constructor.

Here is the call graph for this function:

◆ CFEOverlapOperatorContext() [2/2]

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace, size_type dim>
dftefe::basis::CFEOverlapOperatorContext< ValueTypeOperator, ValueTypeOperand, memorySpace, dim >::CFEOverlapOperatorContext ( const FEBasisManager< ValueTypeOperand, ValueTypeOperator, memorySpace, dim > &  feBasisManager,
const FEBasisDataStorage< ValueTypeOperator, memorySpace > &  feBasisDataStorage,
std::shared_ptr< linearAlgebra::LinAlgOpContext< memorySpace > >  linAlgOpContext 
)
Here is the call graph for this function:

Member Function Documentation

◆ apply()

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace, size_type dim>
void dftefe::basis::CFEOverlapOperatorContext< ValueTypeOperator, ValueTypeOperand, memorySpace, dim >::apply ( linearAlgebra::MultiVector< ValueTypeOperand, memorySpace > &  X,
linearAlgebra::MultiVector< ValueType, memorySpace > &  Y 
) const
override
Here is the call graph for this function:

◆ getBasisOverlap()

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace, size_type dim>
utils::MemoryStorage< ValueTypeOperator, memorySpace > dftefe::basis::CFEOverlapOperatorContext< ValueTypeOperator, ValueTypeOperand, memorySpace, dim >::getBasisOverlap ( const size_type  cellId,
const size_type  basisId1,
const size_type  basisId2 
) const
Here is the call graph for this function:

◆ getBasisOverlapInAllCells()

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace, size_type dim>
const utils::MemoryStorage< ValueTypeOperator, memorySpace > & dftefe::basis::CFEOverlapOperatorContext< ValueTypeOperator, ValueTypeOperand, memorySpace, dim >::getBasisOverlapInAllCells

◆ getBasisOverlapInCell()

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace, size_type dim>
utils::MemoryStorage< ValueTypeOperator, memorySpace > dftefe::basis::CFEOverlapOperatorContext< ValueTypeOperator, ValueTypeOperand, memorySpace, dim >::getBasisOverlapInCell ( const size_type  cellId) const
Here is the call graph for this function:

Member Data Documentation

◆ d_basisOverlap

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace, size_type dim>
std::shared_ptr<Storage> dftefe::basis::CFEOverlapOperatorContext< ValueTypeOperator, ValueTypeOperand, memorySpace, dim >::d_basisOverlap
private

◆ d_cellStartIdsBasisOverlap

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace, size_type dim>
std::vector<size_type> dftefe::basis::CFEOverlapOperatorContext< ValueTypeOperator, ValueTypeOperand, memorySpace, dim >::d_cellStartIdsBasisOverlap
private

◆ d_diagonal

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace, size_type dim>
std::shared_ptr<linearAlgebra::Vector<ValueTypeOperator, memorySpace> > dftefe::basis::CFEOverlapOperatorContext< ValueTypeOperator, ValueTypeOperand, memorySpace, dim >::d_diagonal
private

◆ d_dofsInCell

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace, size_type dim>
std::vector<size_type> dftefe::basis::CFEOverlapOperatorContext< ValueTypeOperator, ValueTypeOperand, memorySpace, dim >::d_dofsInCell
private

◆ d_feBasisManager

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace, size_type dim>
const FEBasisManager<ValueTypeOperand, ValueTypeOperator, memorySpace, dim>* dftefe::basis::CFEOverlapOperatorContext< ValueTypeOperator, ValueTypeOperand, memorySpace, dim >::d_feBasisManager
private

◆ d_isMassLumping

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace, size_type dim>
bool dftefe::basis::CFEOverlapOperatorContext< ValueTypeOperator, ValueTypeOperand, memorySpace, dim >::d_isMassLumping
private

◆ d_maxCellTimesNumVecs

template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace, size_type dim>
const size_type dftefe::basis::CFEOverlapOperatorContext< ValueTypeOperator, ValueTypeOperand, memorySpace, dim >::d_maxCellTimesNumVecs
private

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