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 "InitialConditionInterface.h" 13 : #include "MooseObject.h" 14 : #include "FunctionInterface.h" 15 : #include "UserObjectInterface.h" 16 : #include "PostprocessorInterface.h" 17 : #include "Restartable.h" 18 : #include "BlockRestrictable.h" 19 : #include "DependencyResolverInterface.h" 20 : #include "MooseTypes.h" 21 : #include "NonADFunctorInterface.h" 22 : 23 : class SystemBase; 24 : class MooseVariableFieldBase; 25 : namespace libMesh 26 : { 27 : class Point; 28 : } 29 : 30 : /** 31 : * description 32 : */ 33 : class FVInitialConditionBase : public MooseObject, 34 : public InitialConditionInterface, 35 : public BlockRestrictable, 36 : public FunctionInterface, 37 : public Restartable, 38 : public DependencyResolverInterface, 39 : public NonADFunctorInterface 40 : { 41 : public: 42 : /** 43 : * Constructor 44 : * 45 : * @param parameters The parameters object holding data for the class to use. 46 : */ 47 : FVInitialConditionBase(const InputParameters & parameters); 48 : 49 : virtual ~FVInitialConditionBase(); 50 : 51 : static InputParameters validParams(); 52 : 53 : /** 54 : * retrieves the MOOSE variable that this initial condition acts upon 55 : */ 56 : virtual MooseVariableFieldBase & variable() = 0; 57 : 58 : /** 59 : * Workhorse method for computing the initial conditions for block-restricted initial 60 : * conditions 61 : */ 62 : virtual void computeElement(const ElemInfo & elem_info) = 0; 63 : 64 : /** 65 : * Gets called at the beginning of the simulation before this object is asked to do its job. 66 : * Note: This method is normally inherited from SetupInterface. However in this case it makes 67 : * no sense to inherit the other virtuals available in that class so we are adding this virtual 68 : * directly to this class without the extra inheritance. 69 : */ 70 0 : virtual void initialSetup() {} 71 : 72 0 : virtual const std::set<std::string> & getRequestedItems() override { return _depend_vars; } 73 : 74 0 : virtual const std::set<std::string> & getSuppliedItems() override { return _supplied_vars; } 75 : 76 : protected: 77 : /// The system object 78 : SystemBase & _sys; 79 : 80 : private: 81 : /// Dependent variables 82 : std::set<std::string> _depend_vars; 83 : /// Supplied variables 84 : std::set<std::string> _supplied_vars; 85 : };