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 : #include "InitialConditionBase.h" 11 : #include "SystemBase.h" 12 : #include "MooseVariableFE.h" 13 : #include "UserObject.h" 14 : 15 : InputParameters 16 331308 : InitialConditionBase::validParams() 17 : { 18 331308 : InputParameters params = MooseObject::validParams(); 19 331308 : params += InitialConditionInterface::validParams(); 20 331308 : params += BlockRestrictable::validParams(); 21 331308 : params += BoundaryRestrictable::validParams(); 22 331308 : params += MaterialPropertyInterface::validParams(); 23 : 24 331308 : params.addRequiredParam<VariableName>("variable", 25 : "The variable this initial condition is " 26 : "supposed to provide values for."); 27 993924 : params.addParam<bool>("ignore_uo_dependency", 28 662616 : false, 29 : "When set to true, a UserObject retrieved " 30 : "by this IC will not be executed before the " 31 : "this IC"); 32 : 33 331308 : params.addParamNamesToGroup("ignore_uo_dependency", "Advanced"); 34 : 35 331308 : params.registerBase("InitialCondition"); 36 : 37 331308 : return params; 38 0 : } 39 : 40 31314 : InitialConditionBase::InitialConditionBase(const InputParameters & parameters) 41 : : MooseObject(parameters), 42 : InitialConditionInterface(parameters), 43 : BlockRestrictable(this), 44 : Coupleable(this, 45 62628 : getParam<SystemBase *>("_sys") 46 31314 : ->getVariable(parameters.get<THREAD_ID>("_tid"), 47 62628 : parameters.get<VariableName>("variable")) 48 31314 : .isNodal()), 49 : MaterialPropertyInterface(this, blockIDs(), Moose::EMPTY_BOUNDARY_IDS), 50 : FunctionInterface(this), 51 : UserObjectInterface(this), 52 : PostprocessorInterface(this), 53 31314 : BoundaryRestrictable(this, _c_nodal), 54 : DependencyResolverInterface(), 55 : Restartable(this, "InitialConditionBases"), 56 : ElementIDInterface(this), 57 31314 : _sys(*getCheckedPointerParam<SystemBase *>("_sys")), 58 125256 : _ignore_uo_dependency(getParam<bool>("ignore_uo_dependency")) 59 : { 60 31314 : _supplied_vars.insert(getParam<VariableName>("variable")); 61 : 62 31314 : const auto & coupled_vars = getCoupledVars(); 63 31431 : for (const auto & it : coupled_vars) 64 234 : for (const auto & var : it.second) 65 117 : _depend_vars.insert(var->name()); 66 31314 : } 67 : 68 28040 : InitialConditionBase::~InitialConditionBase() {} 69 : 70 : const std::set<std::string> & 71 241203 : InitialConditionBase::getRequestedItems() 72 : { 73 241203 : return _depend_vars; 74 : } 75 : 76 : const std::set<std::string> & 77 241203 : InitialConditionBase::getSuppliedItems() 78 : { 79 241203 : return _supplied_vars; 80 : } 81 : 82 : void 83 165 : InitialConditionBase::addUserObjectDependencyHelper(const UserObject & uo) const 84 : { 85 165 : if (!_ignore_uo_dependency) 86 165 : _depend_uo.insert(uo.name()); 87 165 : } 88 : 89 : void 90 83 : InitialConditionBase::addPostprocessorDependencyHelper(const PostprocessorName & name) const 91 : { 92 83 : if (!_ignore_uo_dependency) 93 83 : _depend_uo.insert(name); 94 83 : }