26#ifndef dftefeEFEConstraintsLocalDealii_h
27#define dftefeEFEConstraintsLocalDealii_h
31#include <deal.II/lac/affine_constraints.h>
34#include <unordered_map>
35#include <unordered_set>
42 template <
typename ValueTypeBasisCoeff,
54 const dealii::IndexSet &locally_relevant_dofs);
57 dealii::AffineConstraints<ValueTypeBasisCoeff>
58 &dealiiAffineConstraintMatrix,
59 std::vector<std::pair<global_size_type, global_size_type>>
61 std::vector<global_size_type> &ghostIndices,
62 std::unordered_map<global_size_type, size_type>
63 &globalToLocalMapLocalDofs);
72 &constraintsLocalIn)
override;
89 ValueTypeBasisCoeff constraintValue)
override;
91 const std::vector<std::pair<global_size_type, ValueTypeBasisCoeff>> *
119 memorySpace> &vectorData,
121 ValueTypeBasisCoeff alpha)
const override;
126 const dealii::AffineConstraints<ValueTypeBasisCoeff> &
136 const std::vector<std::pair<global_size_type, ValueTypeBasisCoeff>>
160 dealii::AffineConstraints<ValueTypeBasisCoeff>
177 std::vector<std::pair<global_size_type, global_size_type>>
Definition: ConstraintsLocal.h:43
Definition: EFEConstraintsLocalDealii.h:47
ValueTypeBasisCoeff getInhomogeneity(const global_size_type lineDof) const override
Definition: EFEConstraintsLocalDealii.t.cpp:184
void setInhomogeneity(global_size_type basisId, ValueTypeBasisCoeff constraintValue) override
Definition: EFEConstraintsLocalDealii.t.cpp:114
SizeTypeVector d_rowConstraintsIdsLocal
Definition: EFEConstraintsLocalDealii.h:166
void setConstrainedNodesToZero(linearAlgebra::MultiVector< ValueTypeBasisCoeff, memorySpace > &vectorData, size_type blockSize) const override
Definition: EFEConstraintsLocalDealii.t.cpp:537
void copyFrom(const ConstraintsLocal< ValueTypeBasisCoeff, memorySpace > &constraintsLocalIn) override
Definition: EFEConstraintsLocalDealii.t.cpp:64
bool isInhomogeneouslyConstrained(const global_size_type index) const override
Definition: EFEConstraintsLocalDealii.t.cpp:173
void clear() override
Definition: EFEConstraintsLocalDealii.t.cpp:90
GlobalSizeTypeVector d_columnConstraintsIdsGlobal
Definition: EFEConstraintsLocalDealii.h:169
SizeTypeVector d_rowConstraintsSizes
Definition: EFEConstraintsLocalDealii.h:175
void distributeChildToParent(linearAlgebra::MultiVector< ValueTypeBasisCoeff, memorySpace > &vectorData, size_type blockSize) const override
Definition: EFEConstraintsLocalDealii.t.cpp:516
bool d_isCleared
Definition: EFEConstraintsLocalDealii.h:162
bool d_isClosed
Definition: EFEConstraintsLocalDealii.h:163
std::unordered_map< global_size_type, size_type > d_globalToLocalMap
Definition: EFEConstraintsLocalDealii.h:181
~EFEConstraintsLocalDealii()=default
utils::MemoryStorage< double, memorySpace > d_columnConstraintsValues
Definition: EFEConstraintsLocalDealii.h:171
bool inLocallyOwnedRanges(const global_size_type globalId) const
Definition: EFEConstraintsLocalDealii.t.cpp:580
void distributeParentToChild(linearAlgebra::MultiVector< ValueTypeBasisCoeff, memorySpace > &vectorData, size_type blockSize) const override
Definition: EFEConstraintsLocalDealii.t.cpp:494
void copyConstraintsDataFromDealiiToDftefe()
Definition: EFEConstraintsLocalDealii.t.cpp:293
std::unordered_set< global_size_type > d_ghostIndicesSet
Definition: EFEConstraintsLocalDealii.h:180
void addEntries(const global_size_type constrainedDofIndex, const std::vector< std::pair< global_size_type, ValueTypeBasisCoeff > > &colWeightPairs)
Definition: EFEConstraintsLocalDealii.t.cpp:470
GlobalSizeTypeVector d_rowConstraintsIdsGlobal
Definition: EFEConstraintsLocalDealii.h:165
SizeTypeVector d_constraintRowSizesAccumulated
Definition: EFEConstraintsLocalDealii.h:168
std::vector< global_size_type > d_ghostIndices
Definition: EFEConstraintsLocalDealii.h:179
dealii::AffineConstraints< ValueTypeBasisCoeff > d_dealiiAffineConstraintMatrix
Definition: EFEConstraintsLocalDealii.h:161
bool isClosed() const override
Definition: EFEConstraintsLocalDealii.t.cpp:132
size_type globalToLocal(const global_size_type globalId) const
Definition: EFEConstraintsLocalDealii.t.cpp:595
void setConstrainedNodes(linearAlgebra::MultiVector< ValueTypeBasisCoeff, memorySpace > &vectorData, size_type blockSize, ValueTypeBasisCoeff alpha) const override
Definition: EFEConstraintsLocalDealii.t.cpp:553
utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > d_constraintsInhomogenities
Definition: EFEConstraintsLocalDealii.h:173
const std::vector< std::pair< global_size_type, ValueTypeBasisCoeff > > * getConstraintEntries(const global_size_type lineDof) const override
Definition: EFEConstraintsLocalDealii.t.cpp:163
void copyConstraintsDataFromDealiiToDealii(const EFEConstraintsLocalDealii< ValueTypeBasisCoeff, memorySpace, dim > &constraintsDataIn)
Definition: EFEConstraintsLocalDealii.t.cpp:195
bool isGhostEntry(const global_size_type globalId) const
Definition: EFEConstraintsLocalDealii.t.cpp:570
bool isConstrained(global_size_type basisId) const override
Definition: EFEConstraintsLocalDealii.t.cpp:143
std::vector< std::pair< global_size_type, global_size_type > > d_locallyOwnedRanges
Definition: EFEConstraintsLocalDealii.h:178
void close() override
Definition: EFEConstraintsLocalDealii.t.cpp:101
const dealii::AffineConstraints< ValueTypeBasisCoeff > & getAffineConstraints() const
Definition: EFEConstraintsLocalDealii.t.cpp:153
void addLine(const global_size_type lineDof)
Definition: EFEConstraintsLocalDealii.t.cpp:483
SizeTypeVector d_columnConstraintsIdsLocal
Definition: EFEConstraintsLocalDealii.h:167
An class template to encapsulate a MultiVector. A MultiVector is a collection of vectors belonging t...
Definition: MultiVector.h:134
MemorySpace
Definition: MemorySpaceType.h:37
dealii includes
Definition: AtomFieldDataSpherical.cpp:31
std::uint64_t size_type
Definition: TypeConfig.h:9
std::uint64_t global_size_type
Definition: TypeConfig.h:10