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