18#ifndef DFTFE_TRANSFERDATABETWEENMESHESINCOMPATIBLEPARTITIONING_H
19#define DFTFE_TRANSFERDATABETWEENMESHESINCOMPATIBLEPARTITIONING_H
36 template <dftfe::utils::MemorySpace memorySpace>
41 const dealii::MatrixFree<3, double> &matrixFreeMesh1,
43 const dftfe::uInt matrixFreeMesh1QuadratureComponent,
44 const dealii::MatrixFree<3, double> &matrixFreeMesh2,
46 const dftfe::uInt matrixFreeMesh2QuadratureComponent,
48 const MPI_Comm &mpiComm,
49 const bool useMemOptForCellWiseInterpolation =
false);
56 memorySpace> &inputVec,
59 &fullFlattenedArrayCellLocalProcIndexIdMapMesh1,
65 bool resizeOutputVec);
72 memorySpace> &inputVec,
75 &fullFlattenedArrayCellLocalProcIndexIdMapMesh1,
81 bool resizeOutputVec);
86 const std::shared_ptr<
93 &fullFlattenedArrayCellLocalProcIndexIdMapParent,
100 bool resizeOutputVec);
104 const std::shared_ptr<
118 bool resizeOutputVec);
This class forms the interface for interpolating data to an arbitrary set of points....
Definition InterpolateCellWiseDataToPoints.h:46
const dealii::MatrixFree< 3, double > * d_matrixFreeMesh1Ptr
Definition TransferBetweenMeshesIncompatiblePartitioning.h:121
TransferDataBetweenMeshesIncompatiblePartitioning(const dealii::MatrixFree< 3, double > &matrixFreeMesh1, const dftfe::uInt matrixFreeMesh1VectorComponent, const dftfe::uInt matrixFreeMesh1QuadratureComponent, const dealii::MatrixFree< 3, double > &matrixFreeMesh2, const dftfe::uInt matrixFreeMesh2VectorComponent, const dftfe::uInt matrixFreeMesh2QuadratureComponent, const dftfe::uInt verbosity, const MPI_Comm &mpiComm, const bool useMemOptForCellWiseInterpolation=false)
const MPI_Comm d_mpiComm
Definition TransferBetweenMeshesIncompatiblePartitioning.h:137
void interpolateMesh1DataToMesh2QuadPoints(const std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST > > &BLASWrapperPtr, const distributedCPUVec< dftfe::dataTypes::number > &inputVec, const dftfe::uInt numberOfVectors, const dftfe::utils::MemoryStorage< dftfe::uInt, dftfe::utils::MemorySpace::HOST > &fullFlattenedArrayCellLocalProcIndexIdMapParent, dftfe::utils::MemoryStorage< dftfe::dataTypes::number, dftfe::utils::MemorySpace::HOST > &outputQuadData, const dftfe::uInt blockSizeOfInputData, const dftfe::uInt blockSizeOfOutputData, const dftfe::uInt startIndexOfInputData, bool resizeOutputVec)
const dealii::MatrixFree< 3, double > * d_matrixFreeMesh2Ptr
Definition TransferBetweenMeshesIncompatiblePartitioning.h:122
void interpolateMesh2DataToMesh1QuadPoints(const std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST > > &BLASWrapperPtr, const distributedCPUVec< dftfe::dataTypes::number > &inputVec, const dftfe::uInt numberOfVectors, const dftfe::utils::MemoryStorage< dftfe::uInt, dftfe::utils::MemorySpace::HOST > &mapVecToCells, dftfe::utils::MemoryStorage< dftfe::dataTypes::number, dftfe::utils::MemorySpace::HOST > &outputQuadData, const dftfe::uInt blockSizeOfInputData, const dftfe::uInt blockSizeOfOutputData, const dftfe::uInt startIndexOfInputData, bool resizeOutputVec)
dftfe::uInt d_matrixFreeMesh1QuadratureComponent
Definition TransferBetweenMeshesIncompatiblePartitioning.h:125
void interpolateMesh1DataToMesh2QuadPoints(const std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< memorySpace > > &BLASWrapperPtr, const dftfe::linearAlgebra::MultiVector< dftfe::dataTypes::number, memorySpace > &inputVec, const dftfe::uInt numberOfVectors, const dftfe::utils::MemoryStorage< dftfe::uInt, memorySpace > &fullFlattenedArrayCellLocalProcIndexIdMapMesh1, dftfe::utils::MemoryStorage< dftfe::dataTypes::number, memorySpace > &outputQuadData, const dftfe::uInt blockSizeOfInputData, const dftfe::uInt blockSizeOfOutputData, const dftfe::uInt startIndexOfInputData, bool resizeOutputVec)
std::shared_ptr< InterpolateCellWiseDataToPoints< dftfe::dataTypes::number, memorySpace > > d_mesh1toMesh2
Definition TransferBetweenMeshesIncompatiblePartitioning.h:132
dftfe::uInt d_matrixFreeMesh1VectorComponent
Definition TransferBetweenMeshesIncompatiblePartitioning.h:124
std::shared_ptr< InterpolateCellWiseDataToPoints< dftfe::dataTypes::number, memorySpace > > d_mesh2toMesh1
Definition TransferBetweenMeshesIncompatiblePartitioning.h:135
dftfe::uInt d_matrixFreeMesh2QuadratureComponent
Definition TransferBetweenMeshesIncompatiblePartitioning.h:128
void interpolateMesh2DataToMesh1QuadPoints(const std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< memorySpace > > &BLASWrapperPtr, const dftfe::linearAlgebra::MultiVector< dftfe::dataTypes::number, memorySpace > &inputVec, const dftfe::uInt numberOfVectors, const dftfe::utils::MemoryStorage< dftfe::uInt, memorySpace > &fullFlattenedArrayCellLocalProcIndexIdMapMesh1, dftfe::utils::MemoryStorage< dftfe::dataTypes::number, memorySpace > &outputQuadData, const dftfe::uInt blockSizeOfInputData, const dftfe::uInt blockSizeOfOutputData, const dftfe::uInt startIndexOfInputData, bool resizeOutputVec)
dftfe::uInt d_matrixFreeMesh2VectorComponent
Definition TransferBetweenMeshesIncompatiblePartitioning.h:127
Definition BLASWrapper.h:35
An class template to encapsulate a MultiVector. A MultiVector is a collection of vectors belonging t...
Definition MultiVector.h:127
Definition MemoryStorage.h:33
double number
Definition dftfeDataTypes.h:42
@ HOST
Definition MemorySpaceType.h:34
Definition pseudoPotentialToDftfeConverter.cc:34
dealii::LinearAlgebra::distributed::Vector< elem_type, dealii::MemorySpace::Host > distributedCPUVec
Definition headers.h:92
std::uint32_t uInt
Definition TypeConfig.h:10