A derived class of linearAlgebra::OperatorContext to encapsulate the action of a discrete operator on vectors, matrices, etc. for enriched basis. More...
#include <OrthoEFEOverlapOperatorContext.h>
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 | |
OrthoEFEOverlapOperatorContext (const FEBasisManager< ValueTypeOperand, ValueTypeOperator, memorySpace, dim > &feBasisManager, const FEBasisDataStorage< ValueTypeOperator, memorySpace > &classicalBlockBasisDataStorage, const FEBasisDataStorage< ValueTypeOperator, memorySpace > &enrichmentBlockEnrichmentBasisDataStorage, const FEBasisDataStorage< ValueTypeOperator, memorySpace > &enrichmentBlockClassicalBasisDataStorage, const size_type maxCellTimesNumVecs, const bool calculateWings=true) | |
Constructor where the classical dofs have a different quadrature rule than that of the enrichment dofs. This can happen when the classical dofs have a different quadrature than that of the enrichment dofs. For example one can have Adaptive quadrature for the enrichment functions and GLL for the classical dofs. More... | |
OrthoEFEOverlapOperatorContext (const FEBasisManager< ValueTypeOperand, ValueTypeOperator, memorySpace, dim > &feBasisManager, const FEBasisDataStorage< ValueTypeOperator, memorySpace > &classicalBlockBasisDataStorage, const FEBasisDataStorage< ValueTypeOperator, memorySpace > &enrichmentBlockBasisDataStorage, const size_type maxCellTimesNumVecs, const bool calculateWings=true) | |
Constructor where the classical dofs have a different quadrature rule than that of the enrichment dofs. This can happen when the classical dofs have a different quadrature than that of the enrichment dofs. For example one can have Adaptive quadrature for the enrichment functions and GLL for the classical dofs. More... | |
OrthoEFEOverlapOperatorContext (const FEBasisManager< ValueTypeOperand, ValueTypeOperator, memorySpace, dim > &feBasisManager, const FEBasisDataStorage< ValueTypeOperator, memorySpace > &classicalBlockGLLBasisDataStorage, const FEBasisDataStorage< ValueTypeOperator, memorySpace > &enrichmentBlockBasisDataStorage, std::shared_ptr< linearAlgebra::LinAlgOpContext< memorySpace > > linAlgOpContext) | |
Constructor where the classical dofs have a different quadrature rule than that of the enrichment dofs. This can happen when the classical dofs have a different quadrature than that of the enrichment dofs. For example one can have Adaptive quadrature for the enrichment functions and GLL for the classical dofs. More... | |
OrthoEFEOverlapOperatorContext (const FEBasisManager< ValueTypeOperand, ValueTypeOperator, memorySpace, dim > &feBasisManager, const FEBasisDataStorage< ValueTypeOperator, memorySpace > &classicalBlockGLLBasisDataStorage, const FEBasisDataStorage< ValueTypeOperator, memorySpace > &enrichmentBlockEnrichmentBasisDataStorage, const FEBasisDataStorage< ValueTypeOperator, memorySpace > &enrichmentBlockClassicalBasisDataStorage, std::shared_ptr< linearAlgebra::LinAlgOpContext< memorySpace > > linAlgOpContext) | |
Constructor where the classical dofs have a different quadrature rule than that of the enrichment dofs. This can happen when the classical dofs have a different quadrature than that of the enrichment dofs. For example one can have Adaptive quadrature for the enrichment functions and GLL for the classical dofs. More... | |
void | apply (linearAlgebra::MultiVector< ValueTypeOperand, memorySpace > &X, linearAlgebra::MultiVector< ValueType, memorySpace > &Y) const override |
Apply AX = B where A is the discretized matrix, X is the operand and B is the result. More... | |
Storage | getBasisOverlap (const size_type cellId, const size_type basisId1, const size_type basisId2) const |
Storage | getBasisOverlapInCell (const size_type cellId) const |
const Storage & | getBasisOverlapInAllCells () const |
Private Attributes | |
const FEBasisManager< ValueTypeOperand, ValueTypeOperator, memorySpace, dim > * | d_feBasisManager |
std::shared_ptr< Storage > | d_basisOverlap |
std::vector< size_type > | d_cellStartIdsBasisOverlap |
std::vector< size_type > | d_dofsInCell |
const size_type | d_maxCellTimesNumVecs |
bool | d_isMassLumping |
std::shared_ptr< linearAlgebra::Vector< ValueTypeOperator, memorySpace > > | d_diagonal |
std::shared_ptr< utils::MemoryStorage< ValueTypeOperator, memorySpace > > | d_basisOverlapEnrichmentBlock |
const EFEBasisDofHandler< ValueTypeOperand, ValueTypeOperator, memorySpace, dim > * | d_efebasisDofHandler |
size_type | d_nglobalEnrichmentIds |
A derived class of linearAlgebra::OperatorContext to encapsulate the action of a discrete operator on vectors, matrices, etc. for enriched basis.
ValueTypeOperator | The datatype (float, double, complex<double>, etc.) for the underlying operator e.g. the \(\integral_{\omega} N_i^E(x) N_j^E(x) dx\) in this case where E is the enrichment functions. |
ValueTypeOperand | The datatype (float, double, complex<double>, etc.) of the vector, matrices, etc. on which the operator will act. |
memorySpace | The memory sapce (HOST, DEVICE, HOST_PINNED, etc.) in which the data of the operator and its operands reside. |
using dftefe::basis::OrthoEFEOverlapOperatorContext< ValueTypeOperator, ValueTypeOperand, memorySpace, dim >::Storage = dftefe::utils::MemoryStorage<ValueTypeOperator, memorySpace> |
using dftefe::basis::OrthoEFEOverlapOperatorContext< 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)
dftefe::basis::OrthoEFEOverlapOperatorContext< ValueTypeOperator, ValueTypeOperand, memorySpace, dim >::OrthoEFEOverlapOperatorContext | ( | const FEBasisManager< ValueTypeOperand, ValueTypeOperator, memorySpace, dim > & | feBasisManager, |
const FEBasisDataStorage< ValueTypeOperator, memorySpace > & | classicalBlockBasisDataStorage, | ||
const FEBasisDataStorage< ValueTypeOperator, memorySpace > & | enrichmentBlockEnrichmentBasisDataStorage, | ||
const FEBasisDataStorage< ValueTypeOperator, memorySpace > & | enrichmentBlockClassicalBasisDataStorage, | ||
const size_type | maxCellTimesNumVecs, | ||
const bool | calculateWings = true |
||
) |
Constructor where the classical dofs have a different quadrature rule than that of the enrichment dofs. This can happen when the classical dofs have a different quadrature than that of the enrichment dofs. For example one can have Adaptive quadrature for the enrichment functions and GLL for the classical dofs.
feBasisManager | FEBasisManager object for getting the processor local to cell mapping of the distributed vector |
cfeBasisDataStorage | Classical FEBasisDataStorage object for getting the basisvalues of the classical dofs |
efeBasisDataStorage | Enrichment FEBasisDataStorage object for getting the basisvalues of the enrichment dofs |
constraintsX | Constraints for X |
constraintsY | Constraints for Y |
maxCellTimesNumVecs | cell times number of vectors |
dftefe::basis::OrthoEFEOverlapOperatorContext< ValueTypeOperator, ValueTypeOperand, memorySpace, dim >::OrthoEFEOverlapOperatorContext | ( | const FEBasisManager< ValueTypeOperand, ValueTypeOperator, memorySpace, dim > & | feBasisManager, |
const FEBasisDataStorage< ValueTypeOperator, memorySpace > & | classicalBlockBasisDataStorage, | ||
const FEBasisDataStorage< ValueTypeOperator, memorySpace > & | enrichmentBlockBasisDataStorage, | ||
const size_type | maxCellTimesNumVecs, | ||
const bool | calculateWings = true |
||
) |
Constructor where the classical dofs have a different quadrature rule than that of the enrichment dofs. This can happen when the classical dofs have a different quadrature than that of the enrichment dofs. For example one can have Adaptive quadrature for the enrichment functions and GLL for the classical dofs.
feBasisManager | FEBasisManager object for getting the processor local to cell mapping of the distributed vector |
cfeBasisDataStorage | Classical FEBasisDataStorage object for getting the basisvalues of the classical dofs |
efeBasisDataStorage | Enrichment FEBasisDataStorage object for getting the basisvalues of the enrichment dofs |
constraintsX | Constraints for X |
constraintsY | Constraints for Y |
maxCellTimesNumVecs | cell times number of vectors |
dftefe::basis::OrthoEFEOverlapOperatorContext< ValueTypeOperator, ValueTypeOperand, memorySpace, dim >::OrthoEFEOverlapOperatorContext | ( | const FEBasisManager< ValueTypeOperand, ValueTypeOperator, memorySpace, dim > & | feBasisManager, |
const FEBasisDataStorage< ValueTypeOperator, memorySpace > & | classicalBlockGLLBasisDataStorage, | ||
const FEBasisDataStorage< ValueTypeOperator, memorySpace > & | enrichmentBlockBasisDataStorage, | ||
std::shared_ptr< linearAlgebra::LinAlgOpContext< memorySpace > > | linAlgOpContext | ||
) |
Constructor where the classical dofs have a different quadrature rule than that of the enrichment dofs. This can happen when the classical dofs have a different quadrature than that of the enrichment dofs. For example one can have Adaptive quadrature for the enrichment functions and GLL for the classical dofs.
feBasisManager | FEBasisManager object for getting the processor local to cell mapping of the distributed vector |
cfeBasisDataStorage | Classical FEBasisDataStorage object for getting the basisvalues of the classical dofs |
efeBasisDataStorage | Enrichment FEBasisDataStorage object for getting the basisvalues of the enrichment dofs |
constraintsX | Constraints for X |
constraintsY | Constraints for Y |
maxCellTimesNumVecs | cell times number of vectors |
dftefe::basis::OrthoEFEOverlapOperatorContext< ValueTypeOperator, ValueTypeOperand, memorySpace, dim >::OrthoEFEOverlapOperatorContext | ( | const FEBasisManager< ValueTypeOperand, ValueTypeOperator, memorySpace, dim > & | feBasisManager, |
const FEBasisDataStorage< ValueTypeOperator, memorySpace > & | classicalBlockGLLBasisDataStorage, | ||
const FEBasisDataStorage< ValueTypeOperator, memorySpace > & | enrichmentBlockEnrichmentBasisDataStorage, | ||
const FEBasisDataStorage< ValueTypeOperator, memorySpace > & | enrichmentBlockClassicalBasisDataStorage, | ||
std::shared_ptr< linearAlgebra::LinAlgOpContext< memorySpace > > | linAlgOpContext | ||
) |
Constructor where the classical dofs have a different quadrature rule than that of the enrichment dofs. This can happen when the classical dofs have a different quadrature than that of the enrichment dofs. For example one can have Adaptive quadrature for the enrichment functions and GLL for the classical dofs.
feBasisManager | FEBasisManager object for getting the processor local to cell mapping of the distributed vector |
cfeBasisDataStorage | Classical FEBasisDataStorage object for getting the basisvalues of the classical dofs |
efeBasisDataStorage | Enrichment FEBasisDataStorage object for getting the basisvalues of the enrichment dofs |
constraintsX | Constraints for X |
constraintsY | Constraints for Y |
maxCellTimesNumVecs | cell times number of vectors |
|
override |
Apply AX = B where A is the discretized matrix, X is the operand and B is the result.
utils::MemoryStorage< ValueTypeOperator, memorySpace > dftefe::basis::OrthoEFEOverlapOperatorContext< ValueTypeOperator, ValueTypeOperand, memorySpace, dim >::getBasisOverlap | ( | const size_type | cellId, |
const size_type | basisId1, | ||
const size_type | basisId2 | ||
) | const |
const utils::MemoryStorage< ValueTypeOperator, memorySpace > & dftefe::basis::OrthoEFEOverlapOperatorContext< ValueTypeOperator, ValueTypeOperand, memorySpace, dim >::getBasisOverlapInAllCells |
utils::MemoryStorage< ValueTypeOperator, memorySpace > dftefe::basis::OrthoEFEOverlapOperatorContext< ValueTypeOperator, ValueTypeOperand, memorySpace, dim >::getBasisOverlapInCell | ( | const size_type | cellId | ) | const |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |