26#include "libmesh/libmesh_common.h"
27#include "libmesh/discontinuity_measure.h"
28#include "libmesh/error_vector.h"
29#include "libmesh/fe_base.h"
30#include "libmesh/libmesh_logging.h"
31#include "libmesh/elem.h"
32#include "libmesh/system.h"
33#include "libmesh/dense_vector.h"
34#include "libmesh/tensor_tools.h"
35#include "libmesh/enum_error_estimator_type.h"
36#include "libmesh/enum_norm_type.h"
62 for (
unsigned int v=0; v<
n_vars; v++)
68 FEBase * side_fe =
nullptr;
70 const std::set<unsigned char> & elem_dims =
73 for (
const auto &
dim : elem_dims)
96 FEBase * fe_fine =
nullptr;
99 FEBase * fe_coarse =
nullptr;
105 const std::vector<Real> & JxW_face = fe_fine->
get_JxW();
107 for (
unsigned int qp=0; qp != n_qp; ++qp)
117 const Number jump = u_fine - u_coarse;
120 error += JxW_face[qp] * jump2;
136 FEBase * fe_fine =
nullptr;
139 const std::string & var_name =
142 const std::vector<Real> & JxW_face = fe_fine->
get_JxW();
143 const std::vector<Point> & qface_point = fe_fine->
get_xyz();
152 qface_point[0], var_name).first)
163 for (
unsigned int qp=0; qp<n_qp; qp++)
166 const std::pair<bool,Real> essential_bc =
172 libmesh_assert_equal_to (essential_bc.first,
true);
178 const Number jump = essential_bc.second - u_fine;
188 error += JxW_face[qp]*jump2;
204 const std::string & var_name))
unsigned int n_vars() const
Number of variables in solution.
void attach_essential_bc_function(std::pair< bool, Real > fptr(const System &system, const Point &p, const std::string &var_name))
Register a user function to use in computing the essential BCs.
virtual ErrorEstimatorType type() const override
virtual void internal_side_integration() override
The function which calculates a normal derivative jump based error term on an internal side.
virtual void init_context(FEMContext &c) override
An initialization function, for requesting specific data from the FE objects.
virtual bool boundary_side_integration() override
The function which calculates a normal derivative jump based error term on a boundary side.
std::pair< bool, Real >(* _bc_function)(const System &system, const Point &p, const std::string &var_name)
Pointer to function that provides BC information.
DiscontinuityMeasure()
Constructor.
This is the base class from which all geometric element types are derived.
virtual unsigned short dim() const =0
virtual Real hmax() const
SystemNorm error_norm
When estimating the error in a single system, the error_norm is used to control the scaling and norm ...
virtual unsigned int n_quadrature_points() const
virtual_for_inffe const std::vector< Real > & get_JxW() const
virtual_for_inffe const std::vector< Point > & get_xyz() const
This class forms the foundation from which generic finite elements may be derived.
const std::vector< std::vector< OutputShape > > & get_phi() const
This class provides all data required for a physics package (e.g.
void get_side_fe(unsigned int var, FEGenericBase< OutputShape > *&fe) const
Accessor for edge/face (2D/3D) finite element object for variable var for the largest dimension in th...
const std::set< unsigned char > & elem_dimensions() const
This abstract base class implements utility functions for error estimators which are based on integra...
unsigned int var
The variable number currently being evaluated.
Real fine_error
The fine and coarse error values to be set by each side_integration();.
bool integrate_boundary_sides
A boolean flag, by default false, to be set to true if integrations with boundary_side_integration() ...
std::unique_ptr< FEMContext > coarse_context
std::unique_ptr< FEMContext > fine_context
Context objects for integrating on the fine and coarse elements sharing a face.
A Point defines a location in LIBMESH_DIM dimensional Real space.
Real weight(unsigned int var) const
Manages consistently variables, degrees of freedom, and coefficient vectors.
The libMesh namespace provides an interface to certain functionality in the library.
ErrorEstimatorType
Defines an enum for the different types of error estimators which are available.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
Number fptr(const Point &p, const Parameters &, const std::string &libmesh_dbg_var(sys_name), const std::string &unknown_name)