20#ifndef LIBMESH_SMOOTHNESS_ESTIMATOR_H
21#define LIBMESH_SMOOTHNESS_ESTIMATOR_H
24#include "libmesh/point.h"
25#include "libmesh/elem_range.h"
94 static std::vector<Real>
legepoly(
const unsigned int dim,
97 const unsigned int matsize);
void ErrorVector unsigned int
The ErrorVector is a specialization of the StatisticsVector for error data computed on a finite eleme...
Provides a uniform interface to vector storage schemes for different linear algebra libraries.
A Point defines a location in LIBMESH_DIM dimensional Real space.
Class to compute the error contribution for a range of elements.
ErrorVector & smoothness_per_cell
const SmoothnessEstimator & smoothness_estimator
void operator()(const ConstElemRange &range) const
EstimateSmoothness(const System &sys, const SmoothnessEstimator &ee, ErrorVector &epc)
This class implements the Smoothness estimate.
static std::vector< Real > legepoly(const unsigned int dim, const Order order, const Point p, const unsigned int matsize)
SmoothnessEstimator()
Constructor.
virtual ~SmoothnessEstimator()=default
virtual void estimate_smoothness(const System &system, ErrorVector &smoothness_per_cell, const NumericVector< Number > *solution_vector=nullptr)
This function uses the Legendre expansion of solution to estimate coefficient decay to quantify the s...
void extra_quadrature_order(const int extraorder)
Increases or decreases the order of the quadrature rule used for numerical integration.
static Real compute_slope(int N, Real Sx, Real Sy, Real Sxx, Real Sxy)
Computes slop in a linear regression.
SmoothnessEstimator(const SmoothnessEstimator &)=default
Copy/move ctor, copy/move assignment operator, and destructor are all explicitly defaulted for this c...
int _extra_order
Extra order to use for quadrature rule.
SmoothnessEstimator(SmoothnessEstimator &&)=default
SmoothnessEstimator & operator=(const SmoothnessEstimator &)=default
void reduce_smoothness(std::vector< ErrorVectorReal > &error_per_cell, const Parallel::Communicator &comm)
The StoredRange class defines a contiguous, divisible set of objects.
Manages consistently variables, degrees of freedom, and coefficient vectors.
The libMesh namespace provides an interface to certain functionality in the library.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real