27#include <deal.II/base/partitioner.h>
28#include <deal.II/lac/affine_constraints.h>
29#include <deal.II/matrix_free/matrix_free.h>
39# define omp_get_thread_num() 0
56 std::uint32_t nDofsPerDim,
57 std::uint32_t nQuadPointsPerDim,
58 std::uint32_t batchSize,
59 std::uint32_t subBatchSize>
65 const dealii::MatrixFree<3, double> * matrixFreeDataPtr,
66 const dealii::AffineConstraints<double> &constraintMatrix,
67 const std::uint32_t dofHandlerID,
68 const std::uint32_t quadratureID,
117 typedef std::conditional_t<isComplex, std::complex<T>, T>
DataType;
130 static constexpr std::uint32_t
d_quadODim = nQuadPointsPerDim / 2;
133 static constexpr std::uint32_t
d_dofODim = nDofsPerDim / 2;
137 std::array<T, d_quadEDim * d_dofEDim + d_quadODim * d_dofODim>
139 std::array<T, 2 * d_quadODim * d_quadEDim>
174 std::shared_ptr<const dealii::Utilities::MPI::Partitioner>
MatrixFree class template. template parameter nDofsPerDim is the finite element polynomial order....
Definition: MatrixFree.h:61
dftefe::uInt d_ghostBlockSize
Definition: MatrixFree.h:125
std::vector< MPI_Request > mpiRequestsGhost
Definition: MatrixFree.h:181
dftefe::uInt d_nRelaventDofs
Definition: MatrixFree.h:124
dftefe::utils::MemoryStorage< T, memorySpace > d_jacobianFactor
Definition: MatrixFree.h:143
void computeAX(T *dst, T *src)
Compute Laplace operator multipled by X.
Definition: MatrixFree.cpp:805
std::shared_ptr< const dealii::Utilities::MPI::Partitioner > d_singleBatchPartitioner
Definition: MatrixFree.h:175
static constexpr std::uint32_t d_dofODim
Definition: MatrixFree.h:133
std::vector< std::vector< T > > d_weightMatrixList
Definition: MatrixFree.h:149
std::array< T, d_quadEDim *d_dofEDim+d_quadODim *d_dofODim > nodalShapeFunctionValuesAtQuadPointsEO
Definition: MatrixFree.h:138
T d_coeffHelmholtz
Definition: MatrixFree.h:128
const std::uint32_t n_mpi_processes
Definition: MatrixFree.h:178
const dealii::MatrixFree< 3, double > * d_matrixFreeDataPtr
Definition: MatrixFree.h:169
void init()
Initialize data structures for MatrixFree class.
Definition: MatrixFree.cpp:97
std::vector< T > tempGhostStorage
Definition: MatrixFree.h:180
static constexpr std::uint32_t d_dofEDim
Definition: MatrixFree.h:134
std::shared_ptr< const dealii::Utilities::MPI::Partitioner > d_singleVectorPartitioner
Definition: MatrixFree.h:175
void constraintsDistributeTranspose(T *dst, T *src)
Apply transpose of constraints to src vector and set zero on src.
Definition: MatrixFree.cpp:760
void initConstraints()
Initialize optimized constraints.
Definition: MatrixFree.cpp:588
const std::uint32_t d_dofHandlerID
Definition: MatrixFree.h:119
std::vector< T > d_inhomogenityList
Definition: MatrixFree.h:150
dftefe::utils::MemoryStorage< dftefe::uInt, dftefe::utils::MemorySpace::DEVICE > d_constrainedNodeBucketsDevice
Definition: MatrixFree.h:158
dftefe::uInt d_localSize
Definition: MatrixFree.h:125
dftefe::uInt d_nCells
Definition: MatrixFree.h:124
const std::uint32_t this_mpi_process
Definition: MatrixFree.h:179
dftefe::utils::MemoryStorage< dftefe::uInt, memorySpace > d_map
Definition: MatrixFree.h:144
dftefe::utils::MemoryStorage< dftefe::uInt, dftefe::utils::MemorySpace::DEVICE > d_constrainingNodeOffsetDevice
Definition: MatrixFree.h:159
const std::uint32_t d_nDofsPerCell
Definition: MatrixFree.h:119
void initOperatorCoeffs(T coeffHelmholtz)
Initialize Helmholtz operator coefficient.
Definition: MatrixFree.cpp:566
dftefe::utils::MemoryStorage< dftefe::uInt, dftefe::utils::MemorySpace::DEVICE > d_constrainingNodeBucketsDevice
Definition: MatrixFree.h:158
dftefe::uInt d_nGhostDofs
Definition: MatrixFree.h:124
std::vector< T > tempCompressStorage
Definition: MatrixFree.h:180
dftefe::utils::MemoryStorage< dftefe::uInt, dftefe::utils::MemorySpace::DEVICE > d_constrainedNodeOffsetDevice
Definition: MatrixFree.h:159
static constexpr std::uint32_t d_quadODim
Definition: MatrixFree.h:130
const dftefe::uInt d_nBatch
Definition: MatrixFree.h:122
dftefe::uInt d_localBlockSize
Definition: MatrixFree.h:125
std::vector< MPI_Request > mpiRequestsCompress
Definition: MatrixFree.h:182
std::conditional_t< isComplex, std::complex< T >, T > DataType
Definition: MatrixFree.h:117
const std::uint32_t d_quadratureID
Definition: MatrixFree.h:119
std::vector< std::vector< dftefe::uInt > > d_constrainingNodeBuckets
Definition: MatrixFree.h:147
void setupConstraints(const dealii::IndexSet &indexSet)
Definition: MatrixFree.cpp:621
static constexpr std::uint32_t d_quadEDim
Definition: MatrixFree.h:131
dftefe::utils::MemoryStorage< T, dftefe::utils::MemorySpace::DEVICE > d_inhomogenityListDevice
Definition: MatrixFree.h:154
const MPI_Comm mpi_communicator
Definition: MatrixFree.h:177
dftefe::uInt d_ghostSize
Definition: MatrixFree.h:125
std::array< T, 2 *d_quadODim *d_quadEDim > quadShapeFunctionGradientsAtQuadPointsEO
Definition: MatrixFree.h:140
dftefe::utils::MemoryStorage< dftefe::uInt, dftefe::utils::MemorySpace::DEVICE > d_weightMatrixOffsetDevice
Definition: MatrixFree.h:160
dftefe::utils::MemoryStorage< T, dftefe::utils::MemorySpace::DEVICE > shapeBufferDevice
Definition: MatrixFree.h:166
const std::uint32_t d_nQuadsPerCell
Definition: MatrixFree.h:120
std::vector< std::vector< dftefe::uInt > > d_constrainedNodeBuckets
Definition: MatrixFree.h:148
dftefe::utils::MemoryStorage< T, dftefe::utils::MemorySpace::DEVICE > d_weightMatrixListDevice
Definition: MatrixFree.h:154
void constraintsDistribute(T *src)
Apply constraints to src vector.
Definition: MatrixFree.cpp:715
const dealii::AffineConstraints< double > * d_constraintMatrixPtr
Definition: MatrixFree.h:172
std::array< T, nQuadPointsPerDim > quadratureWeights
Definition: MatrixFree.h:141
dftefe::uInt d_nOwnedDofs
Definition: MatrixFree.h:124
const dftefe::uInt d_nVectors
Definition: MatrixFree.h:122
dftefe::uInt d_nOMPThreads
Definition: MatrixFree.h:126
Definition: MemoryStorage.h:38
MemorySpace
Definition: MemorySpaceType.h:37
dealii includes
Definition: AtomFieldDataSpherical.cpp:31
std::uint64_t uInt
Definition: TypeConfig.h:11
operatorList
Definition: MatrixFreeDevice.h:33