Line data Source code
1 : //* This file is part of the MOOSE framework 2 : //* https://mooseframework.inl.gov 3 : //* 4 : //* All rights reserved, see COPYRIGHT for full restrictions 5 : //* https://github.com/idaholab/moose/blob/master/COPYRIGHT 6 : //* 7 : //* Licensed under LGPL 2.1, please see LICENSE for details 8 : //* https://www.gnu.org/licenses/lgpl-2.1.html 9 : 10 : #pragma once 11 : 12 : #include "MooseObject.h" 13 : #include "BlockRestrictable.h" 14 : #include "SetupInterface.h" 15 : #include "FunctionInterface.h" 16 : #include "UserObjectInterface.h" 17 : #include "MooseVariableDependencyInterface.h" 18 : #include "Restartable.h" 19 : #include "OutputInterface.h" 20 : #include "MaterialPropertyInterface.h" 21 : 22 : class MooseMesh; 23 : class SubProblem; 24 : class Assembly; 25 : class SystemBase; 26 : 27 : class Indicator : public MooseObject, 28 : public BlockRestrictable, 29 : public SetupInterface, 30 : public FunctionInterface, 31 : public UserObjectInterface, 32 : public MooseVariableDependencyInterface, 33 : public Restartable, 34 : public OutputInterface, 35 : public MaterialPropertyInterface 36 : { 37 : public: 38 : static InputParameters validParams(); 39 : 40 : Indicator(const InputParameters & parameters); 41 : 42 687 : virtual ~Indicator(){}; 43 : 44 : /** 45 : * Pure virtual that must be overridden. 46 : * 47 : * This is generally overridden by an intermediate base class. 48 : * Usually you will want to inherit from InternalSideIndicator or ElementIndicator. 49 : * They contain other virtual functions you will probably want to override instead. 50 : */ 51 : virtual void computeIndicator() = 0; 52 : 53 : /** 54 : * Can be overridden to do a final postprocessing of the indicator field. 55 : * This will allow you to sum up error from multiple places and then do something like take the 56 : * square root of it in this function. 57 : */ 58 36956 : virtual void finalize() {} 59 : 60 : SubProblem & subProblem() { return _subproblem; } 61 : 62 : // TODO: Fixme 63 : bool isActive() const { return true; } 64 : 65 : protected: 66 : /// Whether to use the displaced mesh 67 : const bool _use_displaced_mesh; 68 : SubProblem & _subproblem; 69 : FEProblemBase & _fe_problem; 70 : SystemBase & _sys; 71 : NumericVector<Number> & _solution; 72 : 73 : THREAD_ID _tid; 74 : 75 : Assembly & _assembly; 76 : 77 : MooseMesh & _mesh; 78 : };