libMesh
Loading...
Searching...
No Matches
jump_error_estimator.h
Go to the documentation of this file.
1// The libMesh Finite Element Library.
2// Copyright (C) 2002-2026 Benjamin S. Kirk, John W. Peterson, Roy H. Stogner
3
4// This library is free software; you can redistribute it and/or
5// modify it under the terms of the GNU Lesser General Public
6// License as published by the Free Software Foundation; either
7// version 2.1 of the License, or (at your option) any later version.
8
9// This library is distributed in the hope that it will be useful,
10// but WITHOUT ANY WARRANTY; without even the implied warranty of
11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12// Lesser General Public License for more details.
13
14// You should have received a copy of the GNU Lesser General Public
15// License along with this library; if not, write to the Free Software
16// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17
18
19
20#ifndef LIBMESH_JUMP_ERROR_ESTIMATOR_H
21#define LIBMESH_JUMP_ERROR_ESTIMATOR_H
22
23// Local Includes
24#include "libmesh/dense_vector.h"
25#include "libmesh/error_estimator.h"
26#include "libmesh/fem_context.h"
27
28// C++ includes
29#include <cstddef>
30#include <string>
31#include <vector>
32#include <memory>
33
34namespace libMesh
35{
36
37// Forward Declarations
38class Point;
39class Elem;
40
49{
50public:
51
65
73
79 virtual ~JumpErrorEstimator() = default;
80
87 virtual void estimate_error (const System & system,
88 ErrorVector & error_per_cell,
89 const NumericVector<Number> * solution_vector = nullptr,
90 bool estimate_parent_error = false) override;
91
101
115
131
132protected:
137 void reinit_sides();
138
143
148 virtual void init_context(FEMContext & c);
149
154 virtual void internal_side_integration() = 0;
155
163 virtual bool boundary_side_integration() { return false; }
164
170
175 std::unique_ptr<FEMContext> fine_context, coarse_context;
176
181
185 unsigned int var;
186};
187
188
189} // namespace libMesh
190
191#endif // LIBMESH_JUMP_ERROR_ESTIMATOR_H
This class holds functions that will estimate the error in a finite element solution on a given mesh.
The ErrorVector is a specialization of the StatisticsVector for error data computed on a finite eleme...
This class provides all data required for a physics package (e.g.
Definition fem_context.h:63
This abstract base class implements utility functions for error estimators which are based on integra...
float coarse_n_flux_faces_increment()
A utility function to correctly increase n_flux_faces for the coarse element.
unsigned int var
The variable number currently being evaluated.
bool integrate_slits
A boolean flag, by default false, to be set to true if integrations should be performed on "slits" wh...
bool use_unweighted_quadrature_rules
This boolean flag allows you to use "unweighted" quadrature rules (sized to exactly integrate unweigh...
Real fine_error
The fine and coarse error values to be set by each side_integration();.
virtual bool boundary_side_integration()
The function, to be implemented by derived classes, which calculates an error term on a boundary side...
virtual void internal_side_integration()=0
The function, to be implemented by derived classes, which calculates an error term on an internal sid...
JumpErrorEstimator(const JumpErrorEstimator &)=delete
This class cannot be (default) copy constructed/assigned because it has unique_ptr members.
bool scale_by_n_flux_faces
This boolean flag allows you to scale the error indicator result for each element by the number of "f...
bool integrate_boundary_sides
A boolean flag, by default false, to be set to true if integrations with boundary_side_integration() ...
void reinit_sides()
A utility function to reinit the finite element data on elements sharing a side.
virtual ~JumpErrorEstimator()=default
virtual void init_context(FEMContext &c)
An initialization function, to give derived classes a chance to request specific data from the FE obj...
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.
virtual void estimate_error(const System &system, ErrorVector &error_per_cell, const NumericVector< Number > *solution_vector=nullptr, bool estimate_parent_error=false) override
This function uses the derived class's jump error estimate formula to estimate the error on each cell...
JumpErrorEstimator(JumpErrorEstimator &&)=default
Defaulted move ctor, move assignment operator, and destructor.
JumpErrorEstimator & operator=(const JumpErrorEstimator &)=delete
Provides a uniform interface to vector storage schemes for different linear algebra libraries.
Manages consistently variables, degrees of freedom, and coefficient vectors.
Definition system.h:100
The libMesh namespace provides an interface to certain functionality in the library.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real