MatrixFree class template. template parameter nDofsPerDim is the finite element polynomial order. nQuadPointsPerDim is the order of the Gauss quadrature rule. batchSize is the size of batch tuned to hardware.
More...
|
| | 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.
|
| void | init () |
| | Initialize data structures for MatrixFree class.
|
| void | initOperatorCoeffs (T coeffHelmholtz) |
| | Initialize Helmholtz operator coefficient.
|
| void | computeAX (T *dst, T *src) |
| | Compute Laplace operator multipled by X.
|
| void | constraintsDistribute (T *src) |
| | Apply constraints to src vector.
|
| void | constraintsDistributeTranspose (T *dst, T *src) |
| | Apply transpose of constraints to src vector and set zero on src.
|
|
| const std::uint32_t | d_dofHandlerID |
| const std::uint32_t | d_quadratureID |
| const std::uint32_t | d_nDofsPerCell |
| const std::uint32_t | d_nQuadsPerCell |
| const dftfe::uInt | d_nVectors |
| const dftfe::uInt | d_nBatch |
| dftfe::uInt | d_nOwnedDofs |
| dftfe::uInt | d_nRelaventDofs |
| dftfe::uInt | d_nGhostDofs |
| dftfe::uInt | d_nCells |
| dftfe::uInt | d_localBlockSize |
| dftfe::uInt | d_localSize |
| dftfe::uInt | d_ghostBlockSize |
| dftfe::uInt | d_ghostSize |
| dftfe::uInt | d_nOMPThreads |
| T | d_coeffHelmholtz |
| std::array< T, d_quadEDim *d_dofEDim+d_quadODim *d_dofODim > | nodalShapeFunctionValuesAtQuadPointsEO |
| std::array< T, 2 *d_quadODim *d_quadEDim > | quadShapeFunctionGradientsAtQuadPointsEO |
| std::array< T, nQuadPointsPerDim > | quadratureWeights |
| dftfe::utils::MemoryStorage< T, memorySpace > | d_jacobianFactor |
| dftfe::utils::MemoryStorage< dftfe::uInt, memorySpace > | d_map |
| std::vector< std::vector< dftfe::uInt > > | d_constrainingNodeBuckets |
| std::vector< std::vector< dftfe::uInt > > | d_constrainedNodeBuckets |
| std::vector< std::vector< T > > | d_weightMatrixList |
| std::vector< T > | d_inhomogenityList |
| dftfe::utils::MemoryStorage< T, dftfe::utils::MemorySpace::DEVICE > | d_weightMatrixListDevice |
| dftfe::utils::MemoryStorage< T, dftfe::utils::MemorySpace::DEVICE > | d_inhomogenityListDevice |
| dftfe::utils::MemoryStorage< dftfe::uInt, dftfe::utils::MemorySpace::DEVICE > | d_constrainingNodeBucketsDevice |
| dftfe::utils::MemoryStorage< dftfe::uInt, dftfe::utils::MemorySpace::DEVICE > | d_constrainedNodeBucketsDevice |
| dftfe::utils::MemoryStorage< dftfe::uInt, dftfe::utils::MemorySpace::DEVICE > | d_constrainingNodeOffsetDevice |
| dftfe::utils::MemoryStorage< dftfe::uInt, dftfe::utils::MemorySpace::DEVICE > | d_constrainedNodeOffsetDevice |
| dftfe::utils::MemoryStorage< dftfe::uInt, dftfe::utils::MemorySpace::DEVICE > | d_weightMatrixOffsetDevice |
| dftfe::utils::MemoryStorage< T, dftfe::utils::MemorySpace::DEVICE > | shapeBufferDevice |
| const dealii::MatrixFree< 3, double > * | d_matrixFreeDataPtr |
| const dealii::AffineConstraints< double > * | d_constraintMatrixPtr |
| const std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< memorySpace > > | d_BLASWrapperPtr |
| std::shared_ptr< const dealii::Utilities::MPI::Partitioner > | d_singleVectorPartitioner |
| std::shared_ptr< const dealii::Utilities::MPI::Partitioner > | d_singleBatchPartitioner |
| dealii::ConditionalOStream | pcout |
| const MPI_Comm | mpi_communicator |
| const std::uint32_t | n_mpi_processes |
| const std::uint32_t | this_mpi_process |
| std::vector< T > | tempGhostStorage |
| std::vector< T > | tempCompressStorage |
| std::vector< MPI_Request > | mpiRequestsGhost |
| std::vector< MPI_Request > | mpiRequestsCompress |
template<typename T,
dftfe::operatorList operatorID,
dftfe::utils::MemorySpace memorySpace, bool isComplex, std::uint32_t nDofsPerDim, std::uint32_t nQuadPointsPerDim, std::uint32_t batchSize, std::uint32_t subBatchSize>
class dftfe::MatrixFree< T, operatorID, memorySpace, isComplex, nDofsPerDim, nQuadPointsPerDim, batchSize, subBatchSize >
MatrixFree class template. template parameter nDofsPerDim is the finite element polynomial order. nQuadPointsPerDim is the order of the Gauss quadrature rule. batchSize is the size of batch tuned to hardware.
- Author
- Gourab Panigrahi