34# define omp_get_thread_num() 0
51 std::uint32_t nDofsPerDim,
52 std::uint32_t nQuadPointsPerDim,
53 std::uint32_t batchSize,
54 std::uint32_t subBatchSize>
60 const MPI_Comm &mpi_comm,
61 const dealii::MatrixFree<3, double> *matrixFreeDataPtr,
62 const dealii::AffineConstraints<double> &constraintMatrix,
65 const std::uint32_t dofHandlerID,
66 const std::uint32_t quadratureID,
115 typedef std::conditional_t<isComplex, std::complex<T>, T>
DataType;
128 static constexpr std::uint32_t
d_quadODim = nQuadPointsPerDim / 2;
131 static constexpr std::uint32_t
d_dofODim = nDofsPerDim / 2;
135 std::array<T, d_quadEDim * d_dofEDim + d_quadODim * d_dofODim>
137 std::array<T, 2 * d_quadODim * d_quadEDim>
172 const std::shared_ptr<dftfe::linearAlgebra::BLASWrapper<memorySpace>>
175 std::shared_ptr<const dealii::Utilities::MPI::Partitioner>
static constexpr std::uint32_t d_dofODim
Definition MatrixFree.h:131
dftfe::utils::MemoryStorage< dftfe::uInt, memorySpace > d_map
Definition MatrixFree.h:142
void constraintsDistributeTranspose(T *dst, T *src)
Apply transpose of constraints to src vector and set zero on src.
std::shared_ptr< const dealii::Utilities::MPI::Partitioner > d_singleVectorPartitioner
Definition MatrixFree.h:176
dftfe::uInt d_nGhostDofs
Definition MatrixFree.h:122
dftfe::utils::MemoryStorage< dftfe::uInt, dftfe::utils::MemorySpace::DEVICE > d_constrainedNodeBucketsDevice
Definition MatrixFree.h:155
std::array< T, 2 *d_quadODim *d_quadEDim > quadShapeFunctionGradientsAtQuadPointsEO
Definition MatrixFree.h:138
std::vector< MPI_Request > mpiRequestsGhost
Definition MatrixFree.h:183
dftfe::uInt d_localSize
Definition MatrixFree.h:123
std::vector< std::vector< dftfe::uInt > > d_constrainingNodeBuckets
Definition MatrixFree.h:145
const std::uint32_t d_nQuadsPerCell
Definition MatrixFree.h:118
std::array< T, d_quadEDim *d_dofEDim+d_quadODim *d_dofODim > nodalShapeFunctionValuesAtQuadPointsEO
Definition MatrixFree.h:136
void setupConstraints(const dealii::IndexSet &indexSet)
void init()
Initialize data structures for MatrixFree class.
std::vector< T > tempGhostStorage
Definition MatrixFree.h:182
const std::uint32_t this_mpi_process
Definition MatrixFree.h:181
static constexpr std::uint32_t d_quadEDim
Definition MatrixFree.h:129
dftfe::uInt d_nOMPThreads
Definition MatrixFree.h:124
const dealii::AffineConstraints< double > * d_constraintMatrixPtr
Definition MatrixFree.h:169
static constexpr std::uint32_t d_quadODim
Definition MatrixFree.h:128
const dftfe::uInt d_nBatch
Definition MatrixFree.h:120
const MPI_Comm mpi_communicator
Definition MatrixFree.h:179
const dftfe::uInt d_nVectors
Definition MatrixFree.h:120
std::shared_ptr< const dealii::Utilities::MPI::Partitioner > d_singleBatchPartitioner
Definition MatrixFree.h:176
std::vector< std::vector< T > > d_weightMatrixList
Definition MatrixFree.h:147
dftfe::utils::MemoryStorage< T, dftfe::utils::MemorySpace::DEVICE > d_inhomogenityListDevice
Definition MatrixFree.h:152
T d_coeffHelmholtz
Definition MatrixFree.h:126
dftfe::uInt d_nOwnedDofs
Definition MatrixFree.h:122
void computeAX(T *dst, T *src)
Compute Laplace operator multipled by X.
dftfe::utils::MemoryStorage< T, memorySpace > d_jacobianFactor
Definition MatrixFree.h:141
static constexpr std::uint32_t d_dofEDim
Definition MatrixFree.h:132
std::vector< T > d_inhomogenityList
Definition MatrixFree.h:148
dftfe::uInt d_nCells
Definition MatrixFree.h:122
const std::uint32_t d_nDofsPerCell
Definition MatrixFree.h:117
dealii::ConditionalOStream pcout
Definition MatrixFree.h:178
dftfe::uInt d_ghostSize
Definition MatrixFree.h:123
const std::uint32_t d_quadratureID
Definition MatrixFree.h:117
std::conditional_t< isComplex, std::complex< T >, T > DataType
Definition MatrixFree.h:115
std::array< T, nQuadPointsPerDim > quadratureWeights
Definition MatrixFree.h:139
const std::uint32_t d_dofHandlerID
Definition MatrixFree.h:117
const std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< memorySpace > > d_BLASWrapperPtr
Definition MatrixFree.h:173
std::vector< T > tempCompressStorage
Definition MatrixFree.h:182
dftfe::utils::MemoryStorage< T, dftfe::utils::MemorySpace::DEVICE > shapeBufferDevice
Definition MatrixFree.h:163
std::vector< std::vector< dftfe::uInt > > d_constrainedNodeBuckets
Definition MatrixFree.h:146
dftfe::uInt d_ghostBlockSize
Definition MatrixFree.h:123
dftfe::uInt d_localBlockSize
Definition MatrixFree.h:123
const dealii::MatrixFree< 3, double > * d_matrixFreeDataPtr
Definition MatrixFree.h:166
const std::uint32_t n_mpi_processes
Definition MatrixFree.h:180
dftfe::utils::MemoryStorage< T, dftfe::utils::MemorySpace::DEVICE > d_weightMatrixListDevice
Definition MatrixFree.h:152
dftfe::utils::MemoryStorage< dftfe::uInt, dftfe::utils::MemorySpace::DEVICE > d_constrainingNodeBucketsDevice
Definition MatrixFree.h:155
dftfe::utils::MemoryStorage< dftfe::uInt, dftfe::utils::MemorySpace::DEVICE > d_constrainedNodeOffsetDevice
Definition MatrixFree.h:156
void initOperatorCoeffs(T coeffHelmholtz)
Initialize Helmholtz operator coefficient.
std::vector< MPI_Request > mpiRequestsCompress
Definition MatrixFree.h:184
void initConstraints()
Initialize optimized constraints.
dftfe::uInt d_nRelaventDofs
Definition MatrixFree.h:122
MatrixFree(const MPI_Comm &mpi_comm, const dealii::MatrixFree< 3, double > *matrixFreeDataPtr, const dealii::AffineConstraints< double > &constraintMatrix, const std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< memorySpace > > BLASWrapperPtr, const std::uint32_t dofHandlerID, const std::uint32_t quadratureID, const dftfe::uInt nVectors)
Constructor.
dftfe::utils::MemoryStorage< dftfe::uInt, dftfe::utils::MemorySpace::DEVICE > d_weightMatrixOffsetDevice
Definition MatrixFree.h:157
dftfe::utils::MemoryStorage< dftfe::uInt, dftfe::utils::MemorySpace::DEVICE > d_constrainingNodeOffsetDevice
Definition MatrixFree.h:156
void constraintsDistribute(T *src)
Apply constraints to src vector.
Definition BLASWrapper.h:35
Definition MemoryStorage.h:33
MemorySpace
Definition MemorySpaceType.h:33
Definition pseudoPotentialToDftfeConverter.cc:34
std::uint32_t uInt
Definition TypeConfig.h:10
operatorList
Definition MatrixFreeDevice.h:37