19#ifndef constraintMatrixInfo_H_
20#define constraintMatrixInfo_H_
41 template <dftfe::utils::MemorySpace memorySpace>
63 const std::shared_ptr<const dealii::Utilities::MPI::Partitioner>
65 const dealii::AffineConstraints<double> &constraintMatrixData);
85 const unsigned int blockSize)
const;
102 template <
typename T>
105 const unsigned int blockSize)
const;
107 template <
typename T>
132 template <
typename T>
135 const unsigned int blockSize)
const;
136 template <
typename T>
156 std::vector<dealii::types::global_dof_index>
160#if defined(DFTFE_WITH_DEVICE)
191 const std::shared_ptr<const dealii::Utilities::MPI::Partitioner>
193 const dealii::AffineConstraints<double> &constraintMatrixData,
194 const bool useInhomogeneties =
true);
199 template <
typename T>
202 const unsigned int blockSize)
const;
210 template <
typename NumberType>
240 template <
typename NumberType>
243 distributedDeviceVec<NumberType> &fieldVector)
const;
245 template <
typename T>
248 const unsigned int blockSize)
const;
260 template <
typename NumberType>
262 set_zero(distributedDeviceVec<NumberType> &fieldVector)
const;
264 template <
typename T>
267 const unsigned int blockSize)
const;
282 std::vector<unsigned int> d_rowSizesAccumulated;
283 std::vector<dealii::types::global_dof_index>
291 d_columnIdsLocalDevice;
293 d_columnValuesDevice;
295 d_inhomogenitiesDevice;
301 d_rowSizesAccumulatedDevice;
304 d_localIndexMapUnflattenedToFlattenedDevice;
306 std::vector<unsigned int> d_rowIdsLocalBins;
307 std::vector<unsigned int> d_columnIdsLocalBins;
308 std::vector<unsigned int> d_columnIdToRowIdMapBins;
309 std::vector<double> d_columnValuesBins;
310 std::vector<unsigned int> d_binColumnSizes;
311 std::vector<unsigned int> d_binColumnSizesAccumulated;
315 d_rowIdsLocalBinsDevice;
318 d_columnIdsLocalBinsDevice;
321 d_columnIdToRowIdMapBinsDevice;
323 d_columnValuesBinsDevice;
325 unsigned int d_numConstrainedDofs;
Overloads dealii's distribute and distribute_local_to_global functions associated with constraints cl...
Definition constraintMatrixInfo.h:43
std::vector< double > d_inhomogenities
Definition constraintMatrixInfo.h:154
std::vector< dealii::types::global_dof_index > d_rowIdsLocal
Definition constraintMatrixInfo.h:150
void distribute(dftfe::linearAlgebra::MultiVector< T, memorySpace > &fieldVector) const
void set_zero(distributedCPUVec< T > &fieldVector, const unsigned int blockSize) const
sets field values at constrained nodes to be zero
std::vector< double > d_columnValues
Definition constraintMatrixInfo.h:153
std::vector< dealii::types::global_dof_index > d_rowSizes
Definition constraintMatrixInfo.h:155
void distribute(distributedCPUVec< T > &fieldVector, const unsigned int blockSize) const
overloaded dealii internal function distribute for flattened dealii array which sets the slave node f...
std::vector< dealii::types::global_dof_index > d_rowIdsGlobal
Definition constraintMatrixInfo.h:149
void initialize(const std::shared_ptr< const dealii::Utilities::MPI::Partitioner > &partitioner, const dealii::AffineConstraints< double > &constraintMatrixData)
convert a given constraintMatrix to simple arrays (STL) for fast access
void set_zero(dftfe::linearAlgebra::MultiVector< T, memorySpace > &fieldVector) const
void initializeScaledConstraints(const distributedCPUVec< double > &invSqrtMassVec)
Scales the constraints with the inverse diagonal mass matrix so that the scaling of the vector can be...
std::vector< dealii::types::global_dof_index > d_columnIdsGlobal
Definition constraintMatrixInfo.h:152
std::vector< dealii::types::global_dof_index > d_localIndexMapUnflattenedToFlattened
Definition constraintMatrixInfo.h:157
void distribute_slave_to_master(dftfe::linearAlgebra::MultiVector< T, memorySpace > &fieldVector) const
void distribute(distributedCPUVec< double > &fieldVector) const
overloaded dealii internal function "distribute" which sets the slave node field values from master n...
void distribute_slave_to_master(distributedCPUVec< T > &fieldVector, const unsigned int blockSize) const
transfers the contributions of slave nodes to master nodes using the constraint equation slave nodes ...
std::vector< dealii::types::global_dof_index > d_columnIdsLocal
Definition constraintMatrixInfo.h:151
void initializeScaledConstraints(const dftfe::utils::MemoryStorage< double, memorySpace > &invSqrtMassVec)
An class template to encapsulate a MultiVector. A MultiVector is a collection of vectors belonging t...
Definition MultiVector.h:127
Definition MemoryStorage.h:33
Contains repeatedly used functions in the KSDFT calculations.
Definition CompositeData.h:29
@ DEVICE
Definition MemorySpaceType.h:36
Definition pseudoPotentialToDftfeConverter.cc:34
dealii::LinearAlgebra::distributed::Vector< elem_type, dealii::MemorySpace::Host > distributedCPUVec
Definition headers.h:92