Functions | |
template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace, size_type dim> | |
void | computeBasisOverlapMatrix (const FEBasisDataStorage< ValueTypeOperator, memorySpace > &cfeBasisDataStorage, const FEBasisDataStorage< ValueTypeOperator, memorySpace > &efeBasisDataStorage, std::shared_ptr< utils::MemoryStorage< ValueTypeOperator, memorySpace > > &basisOverlap, std::vector< size_type > &cellStartIdsBasisOverlap, std::vector< size_type > &dofsInCellVec, bool calculateWings=true) |
template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace, size_type dim> | |
void | computeBasisOverlapMatrix (const FEBasisDataStorage< ValueTypeOperator, memorySpace > &classicalBlockBasisDataStorage, const FEBasisDataStorage< ValueTypeOperator, memorySpace > &enrichmentBlockEnrichmentBasisDataStorage, const FEBasisDataStorage< ValueTypeOperator, memorySpace > &enrichmentBlockClassicalBasisDataStorage, std::shared_ptr< utils::MemoryStorage< ValueTypeOperator, memorySpace > > &basisOverlap, std::vector< size_type > &cellStartIdsBasisOverlap, std::vector< size_type > &dofsInCellVec, linearAlgebra::LinAlgOpContext< memorySpace > &linAlgOpContext, bool calculateWings=true) |
template<utils::MemorySpace memorySpace> | |
void | storeSizes (utils::MemoryStorage< size_type, memorySpace > &mSizes, utils::MemoryStorage< size_type, memorySpace > &nSizes, utils::MemoryStorage< size_type, memorySpace > &kSizes, utils::MemoryStorage< size_type, memorySpace > &ldaSizes, utils::MemoryStorage< size_type, memorySpace > &ldbSizes, utils::MemoryStorage< size_type, memorySpace > &ldcSizes, utils::MemoryStorage< size_type, memorySpace > &strideA, utils::MemoryStorage< size_type, memorySpace > &strideB, utils::MemoryStorage< size_type, memorySpace > &strideC, const std::vector< size_type > &cellsInBlockNumDoFs, const size_type numVecs) |
template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace> | |
void | computeAxCellWiseLocal (const utils::MemoryStorage< ValueTypeOperator, memorySpace > &basisOverlapInAllCells, const ValueTypeOperand *x, linearAlgebra::blasLapack::scalar_type< ValueTypeOperator, ValueTypeOperand > *y, const size_type numVecs, const size_type numLocallyOwnedCells, const std::vector< size_type > &numCellDofs, const size_type *cellLocalIdsStartPtrX, const size_type *cellLocalIdsStartPtrY, const size_type cellBlockSize, linearAlgebra::LinAlgOpContext< memorySpace > &linAlgOpContext) |
void dftefe::basis::OrthoEFEOverlapOperatorContextInternal::computeAxCellWiseLocal | ( | const utils::MemoryStorage< ValueTypeOperator, memorySpace > & | basisOverlapInAllCells, |
const ValueTypeOperand * | x, | ||
linearAlgebra::blasLapack::scalar_type< ValueTypeOperator, ValueTypeOperand > * | y, | ||
const size_type | numVecs, | ||
const size_type | numLocallyOwnedCells, | ||
const std::vector< size_type > & | numCellDofs, | ||
const size_type * | cellLocalIdsStartPtrX, | ||
const size_type * | cellLocalIdsStartPtrY, | ||
const size_type | cellBlockSize, | ||
linearAlgebra::LinAlgOpContext< memorySpace > & | linAlgOpContext | ||
) |
void dftefe::basis::OrthoEFEOverlapOperatorContextInternal::computeBasisOverlapMatrix | ( | const FEBasisDataStorage< ValueTypeOperator, memorySpace > & | cfeBasisDataStorage, |
const FEBasisDataStorage< ValueTypeOperator, memorySpace > & | efeBasisDataStorage, | ||
std::shared_ptr< utils::MemoryStorage< ValueTypeOperator, memorySpace > > & | basisOverlap, | ||
std::vector< size_type > & | cellStartIdsBasisOverlap, | ||
std::vector< size_type > & | dofsInCellVec, | ||
bool | calculateWings = true |
||
) |
void dftefe::basis::OrthoEFEOverlapOperatorContextInternal::computeBasisOverlapMatrix | ( | const FEBasisDataStorage< ValueTypeOperator, memorySpace > & | classicalBlockBasisDataStorage, |
const FEBasisDataStorage< ValueTypeOperator, memorySpace > & | enrichmentBlockEnrichmentBasisDataStorage, | ||
const FEBasisDataStorage< ValueTypeOperator, memorySpace > & | enrichmentBlockClassicalBasisDataStorage, | ||
std::shared_ptr< utils::MemoryStorage< ValueTypeOperator, memorySpace > > & | basisOverlap, | ||
std::vector< size_type > & | cellStartIdsBasisOverlap, | ||
std::vector< size_type > & | dofsInCellVec, | ||
linearAlgebra::LinAlgOpContext< memorySpace > & | linAlgOpContext, | ||
bool | calculateWings = true |
||
) |
Ni_pristine*Ni_pristine at quadpoints for (unsigned int qPoint = 0; qPoint < nQuadPointInCellEnrichmentBlockEnrichment; qPoint++) { basisOverlapTmpIter += (cumulativeEnrichmentBlockEnrichmentDofQuadPoints
ValueTypeOperator NpiNpj = (ValueTypeOperator)0, ciNciNpj = (ValueTypeOperator)0, NpicjNcj = (ValueTypeOperator)0, ciNcicjNcj = (ValueTypeOperator)0;
Ni_pristine*Ni_pristine at quadpoints for (unsigned int qPoint = 0; qPoint < nQuadPointInCellEnrichmentBlockEnrichment; qPoint++) { NpiNpj += (enrichmentValuesVec.data() + (iNode - dofsPerCellCFE) * nQuadPointInCellEnrichmentBlockEnrichment + qPoint) * (enrichmentValuesVec.data() + (jNode - dofsPerCellCFE) * nQuadPointInCellEnrichmentBlockEnrichment + qPoint) * cellJxWValuesEnrichmentBlockEnrichment[qPoint]; } Ni_pristine* interpolated ci's in Ni_classicalQuadratureOfPristine at quadpoints for (unsigned int qPoint = 0; qPoint < nQuadPointInCellEnrichmentBlockEnrichment; qPoint++) { ciNciNpj += classicalComponentInQuadValuesEE [numEnrichmentIdsInCell * qPoint + (iNode - dofsPerCellCFE)] * (enrichmentValuesVec.data() + (jNode - dofsPerCellCFE) * nQuadPointInCellEnrichmentBlockEnrichment + qPoint) * cellJxWValuesEnrichmentBlockEnrichment[qPoint]; } Ni_pristine* interpolated ci's in Ni_classicalQuadratureOfPristine at quadpoints for (unsigned int qPoint = 0; qPoint < nQuadPointInCellEnrichmentBlockEnrichment; qPoint++) { NpicjNcj += (enrichmentValuesVec.data() + (iNode - dofsPerCellCFE) * nQuadPointInCellEnrichmentBlockEnrichment + qPoint) * classicalComponentInQuadValuesEE [numEnrichmentIdsInCell * qPoint + (jNode - dofsPerCellCFE)] * cellJxWValuesEnrichmentBlockEnrichment[qPoint]; } interpolated ci's in Ni_classicalQuadrature of Mc = d interpolated ci's in Ni_classicalQuadrature of Mc = d for (unsigned int qPoint = 0; qPoint < nQuadPointInCellEnrichmentBlockClassical; qPoint++) { ciNcicjNcj += classicalComponentInQuadValuesEC [numEnrichmentIdsInCell * qPoint + (iNode - dofsPerCellCFE)] * classicalComponentInQuadValuesEC [numEnrichmentIdsInCell * qPoint + (jNode - dofsPerCellCFE)] * cellJxWValuesEnrichmentBlockClassical[qPoint]; } *basisOverlapTmpIter += double b = NpiNpj - NpicjNcj - ciNciNpj + ciNcicjNcj;
void dftefe::basis::OrthoEFEOverlapOperatorContextInternal::storeSizes | ( | utils::MemoryStorage< size_type, memorySpace > & | mSizes, |
utils::MemoryStorage< size_type, memorySpace > & | nSizes, | ||
utils::MemoryStorage< size_type, memorySpace > & | kSizes, | ||
utils::MemoryStorage< size_type, memorySpace > & | ldaSizes, | ||
utils::MemoryStorage< size_type, memorySpace > & | ldbSizes, | ||
utils::MemoryStorage< size_type, memorySpace > & | ldcSizes, | ||
utils::MemoryStorage< size_type, memorySpace > & | strideA, | ||
utils::MemoryStorage< size_type, memorySpace > & | strideB, | ||
utils::MemoryStorage< size_type, memorySpace > & | strideC, | ||
const std::vector< size_type > & | cellsInBlockNumDoFs, | ||
const size_type | numVecs | ||
) |