libMesh
Loading...
Searching...
No Matches
kelly_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_KELLY_ERROR_ESTIMATOR_H
21#define LIBMESH_KELLY_ERROR_ESTIMATOR_H
22
23// Local Includes
24#include "libmesh/jump_error_estimator.h"
25
26// C++ includes
27#include <cstddef>
28#include <string>
29#include <vector>
30
31namespace libMesh
32{
33
34// Forward Declarations
35class Point;
36
60{
61public:
62
69
76
82 virtual ~KellyErrorEstimator() = default;
83
87 void attach_flux_bc_function (std::pair<bool,Real> fptr(const System & system,
88 const Point & p,
89 const std::string & var_name));
90
91 virtual ErrorEstimatorType type() const override;
92
93protected:
94
99 virtual void init_context(FEMContext & c) override;
100
105 virtual void internal_side_integration() override;
106
114 virtual bool boundary_side_integration() override;
115
119 std::pair<bool,Real> (* _bc_function) (const System & system,
120 const Point & p,
121 const std::string & var_name);
122};
123
124
125} // namespace libMesh
126
127#endif // LIBMESH_KELLY_ERROR_ESTIMATOR_H
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...
This class implements the Kelly error indicator which is based on the flux jumps between elements.
virtual void internal_side_integration() override
The function which calculates a normal derivative jump based error term on an internal 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.
virtual bool boundary_side_integration() override
The function which calculates a normal derivative jump based error term on a boundary side.
virtual ErrorEstimatorType type() const override
void attach_flux_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 flux BCs.
KellyErrorEstimator & operator=(const KellyErrorEstimator &)=delete
virtual ~KellyErrorEstimator()=default
KellyErrorEstimator(KellyErrorEstimator &&)=default
Defaulted move ctor, move assignment operator, and destructor.
virtual void init_context(FEMContext &c) override
An initialization function, for requesting specific data from the FE objects.
KellyErrorEstimator(const KellyErrorEstimator &)=delete
This class cannot be (default) copy constructed/assigned because its base class has unique_ptr member...
A Point defines a location in LIBMESH_DIM dimensional Real space.
Definition point.h:40
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.
ErrorEstimatorType
Defines an enum for the different types of error estimators which are available.
Number fptr(const Point &p, const Parameters &, const std::string &libmesh_dbg_var(sys_name), const std::string &unknown_name)
Definition projection.C:81