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