libMesh
kelly_error_estimator.h
Go to the documentation of this file.
1 // The libMesh Finite Element Library.
2 // Copyright (C) 2002-2025 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 
31 namespace libMesh
32 {
33 
34 // Forward Declarations
35 class Point;
36 
60 {
61 public:
62 
69 
74  KellyErrorEstimator (const KellyErrorEstimator &) = delete;
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 
93 protected:
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
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.
virtual ~KellyErrorEstimator()=default
ErrorEstimatorType
Defines an enum for the different types of error estimators which are available.
This abstract base class implements utility functions for error estimators which are based on integra...
virtual void init_context(FEMContext &c) override
An initialization function, for requesting specific data from the FE objects.
KellyErrorEstimator & operator=(const KellyErrorEstimator &)=delete
The libMesh namespace provides an interface to certain functionality in the library.
Number fptr(const Point &p, const Parameters &, const std::string &libmesh_dbg_var(sys_name), const std::string &unknown_name)
Definition: projection.C:80
virtual void internal_side_integration() override
The function which calculates a normal derivative jump based error term on an internal side...
Manages consistently variables, degrees of freedom, and coefficient vectors.
Definition: system.h:96
This class provides all data required for a physics package (e.g.
Definition: fem_context.h:62
This class implements the Kelly error indicator which is based on the flux jumps between elements...
virtual bool boundary_side_integration() override
The function which calculates a normal derivative jump based error term on a boundary side...
A Point defines a location in LIBMESH_DIM dimensional Real space.
Definition: point.h:39
virtual ErrorEstimatorType type() const override