Go to the documentation of this file.
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)
91 FEBase * fe_fine =
nullptr;
94 FEBase * fe_coarse =
nullptr;
100 std::vector<std::vector<Real>> phi_coarse = fe_coarse->
get_phi();
101 std::vector<std::vector<Real>> phi_fine = fe_fine->
get_phi();
102 std::vector<Real> JxW_face = fe_fine->
get_JxW();
104 for (
unsigned int qp=0; qp != n_qp; ++qp)
114 const Number jump = u_fine - u_coarse;
117 error += JxW_face[qp] * jump2;
133 FEBase * fe_fine =
nullptr;
136 const std::string & var_name =
139 std::vector<std::vector<Real>> phi_fine = fe_fine->
get_phi();
140 std::vector<Real> JxW_face = fe_fine->
get_JxW();
141 std::vector<Point> qface_point = fe_fine->
get_xyz();
150 qface_point[0], var_name).first)
161 for (
unsigned int qp=0; qp<n_qp; qp++)
164 const std::pair<bool,Real> essential_bc =
170 libmesh_assert_equal_to (essential_bc.first,
true);
176 const Number jump = essential_bc.second - u_fine;
186 error += JxW_face[qp]*jump2;
202 const std::string & var_name))
Manages consistently variables, degrees of freedom, and coefficient vectors.
std::unique_ptr< FEMContext > coarse_context
bool integrate_boundary_sides
A boolean flag, by default false, to be set to true if integrations with boundary_side_integration() ...
const std::vector< Point > & get_xyz() const
SystemNorm error_norm
When estimating the error in a single system, the error_norm is used to control the scaling and norm ...
ErrorEstimatorType
Defines an enum for the different types of error estimators which are available.
virtual void init_context(FEMContext &c) override
An initialization function, for requesting specific data from the FE objects.
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.
The libMesh namespace provides an interface to certain functionality in the library.
virtual unsigned short dim() const =0
unsigned int n_vars() const
Number of variables in solution.
unsigned int var
The variable number currently being evaluated.
This class forms the foundation from which generic finite elements may be derived.
Real fine_error
The fine and coarse error values to be set by each side_integration();.
const std::vector< Real > & get_JxW() const
DiscontinuityMeasure()
Constructor.
Real weight(unsigned int var) const
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.
virtual void internal_side_integration() override
The function which calculates a normal derivative jump based error term on an internal side.
virtual unsigned int n_quadrature_points() const =0
This abstract base class implements utility functions for error estimators which are based on integra...
virtual ErrorEstimatorType type() const override
std::pair< bool, Real >(* _bc_function)(const System &system, const Point &p, const std::string &var_name)
Pointer to function that provides BC information.
virtual Real hmax() const
This is the base class from which all geometric element types are derived.
virtual bool boundary_side_integration() override
The function which calculates a normal derivative jump based error term on a boundary side.
const std::set< unsigned char > & elem_dimensions() const
const std::vector< std::vector< OutputShape > > & get_phi() const
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)
This class provides all data required for a physics package (e.g.