1 // The libMesh Finite Element Library. 2 // Copyright (C) 2002-2020 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_FOURTH_ERROR_ESTIMATORS_H 21 #define LIBMESH_FOURTH_ERROR_ESTIMATORS_H 22 23 // Local Includes 24 #include "libmesh/jump_error_estimator.h" 25 26 // C++ includes 27 #include <vector> 28 #include <string> 29 30 namespace libMesh 31 { 32 33 /** 34 * This class is an error indicator based on laplacian jumps between 35 * elements. 36 * See the JumpErrorEstimator class for most user APIs 37 * 38 * \author Roy H. Stogner 39 * \date 2005 40 */ 41 class LaplacianErrorEstimator : public JumpErrorEstimator 42 { 43 public: 44 45 /** 46 * Constructor. Defaults to H2 seminorm; changes to error_norm are 47 * ignored. 48 */ 49 LaplacianErrorEstimator(); 50 51 52 /** 53 * This class cannot be (default) copy constructed/assigned because 54 * its base class has unique_ptr members. 55 */ 56 LaplacianErrorEstimator (const LaplacianErrorEstimator &) = delete; 57 LaplacianErrorEstimator & operator= (const LaplacianErrorEstimator &) = delete; 58 59 /** 60 * Defaulted move ctor, move assignment operator, and destructor. 61 */ 62 LaplacianErrorEstimator (LaplacianErrorEstimator &&) = default; 63 LaplacianErrorEstimator & operator= (LaplacianErrorEstimator &&) = default; 64 virtual ~LaplacianErrorEstimator() = default; 65 66 virtual ErrorEstimatorType type() const override; 67 68 protected: 69 70 /** 71 * An initialization function, for requesting specific data from the FE 72 * objects 73 */ 74 virtual void init_context(FEMContext & c) override; 75 76 /** 77 * The function which calculates a laplacian jump based error 78 * term on an internal side 79 */ 80 virtual void internal_side_integration() override; 81 }; 82 83 84 } // namespace libMesh 85 86 #endif // LIBMESH_FOURTH_ERROR_ESTIMATORS_H 87