78 std::unordered_map<processor_id_type, std::vector<dof_id_type>>
86 std::unordered_map<processor_id_type, std::vector<dof_id_type>>
gatherRequestList();
109 void sync(
const std::vector<dof_id_type> & specific_elems);
131 std::unordered_map<
processor_id_type, std::vector<dof_id_type>> & query_ids)
const;
155 const unsigned int _q;
158 std::map<dof_id_type, RealEigenMatrix>
_Ae;
161 std::map<dof_id_type, RealEigenVector>
_be;
void syncHelper(const std::unordered_map< processor_id_type, std::vector< dof_id_type >> &query_ids)
Helper function to perform the actual communication of _Ae and _be.
const unsigned int _patch_polynomial_order
The polynomial order, default is variable order.
std::vector< int > _proc_ids
The processor IDs vector in the running.
std::map< dof_id_type, RealEigenVector > _be
The element-level b vector.
static InputParameters validParams()
void addToQuery(const libMesh::Elem *elem, std::unordered_map< processor_id_type, std::vector< dof_id_type >> &query_ids) const
Adds an element to the map provided in query_ids if it belongs to a different processor.
void initialize() override
Called before execute() is ever called so that data can be cleared.
const std::vector< std::vector< unsigned int > > & multiIndex() const
Returns the multi-index table.
std::vector< dof_id_type > _cached_elem_ids
Cache for least-squares coefficients used in nodal patch recovery.
void sync()
Synchronizes local matrices and vectors (_Ae, _be) across processors.
std::map< dof_id_type, RealEigenMatrix > _Ae
The element-level A matrix.
const InputParameters & parameters() const
Get the parameters of the object.
RealEigenVector evaluateBasisFunctions(const Point &q_point) const
Compute the P vector at a given point i.e.
virtual Real nodalPatchRecovery(const Point &p, const std::vector< dof_id_type > &elem_ids) const
Solve the least-squares problem.
void execute() override
Execute method.
uint8_t processor_id_type
RealEigenVector _cached_coef
NodalPatchRecoveryBase(const InputParameters ¶meters)
const std::vector< std::vector< unsigned int > > _multi_index
Multi-index table for a polynomial basis.
bool _distributed_mesh
Whether the mesh is distributed.
virtual Real computeValue()=0
Compute the quantity to recover using nodal patch recovery.
void finalize() override
Finalize.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
void threadJoin(const UserObject &) override
Must override.
Base class for mesh modifiers modifying element subdomains.
Eigen::Matrix< Real, Eigen::Dynamic, 1 > RealEigenVector
const RealEigenVector getCoefficients(const std::vector< dof_id_type > &elem_ids) const
Compute coefficients without reading or writing cached values The coefficients returned by this funct...
std::unordered_map< processor_id_type, std::vector< dof_id_type > > gatherRequestList()
Builds a query map of element IDs that require data from other processors.
const RealEigenVector getCachedCoefficients(const std::vector< dof_id_type > &elem_ids)
Compute coefficients, using cached values if available, and store any newly computed coefficients in ...
const unsigned int _q
Number of basis functions.
Base class for user-specific data.