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