Loading [MathJax]/extensions/tex2jax.js
https://mooseframework.inl.gov
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends
AddICAction.C
Go to the documentation of this file.
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 "AddICAction.h"
11 #include "FEProblem.h"
12 #include "MooseTypes.h"
13 #include "MooseUtils.h"
14 
15 registerMooseAction("MooseApp", AddICAction, "add_ic");
16 
19 {
21 
22  // This is to help with input file validation. When ICs are created with
23  // this action, they are nested underneath a variable in the input file - so
24  // we implicitly already know the variable name from this nesting and users
25  // don't need to specify it for us with the parameter. So we say here that
26  // the variable param is provided by the action.
27  params.set<std::vector<std::string>>("_object_params_set_by_action") = {"variable"};
28 
29  return params;
30 }
31 
33 
34 void
36 {
37  std::vector<std::string> elements;
38  MooseUtils::tokenize<std::string>(_pars.blockFullpath(), elements);
39 
40  // The variable name will be the second to last element in the path name
41  std::string & var_name = elements[elements.size() - 2];
42  _moose_object_pars.set<VariableName>("variable") = var_name;
43  const auto & var = _problem->getVariable(0, var_name);
44 
45  if (var.isFV())
46  mooseError(
47  "Finite volume variables do not support an [InitialCondition] subblock, please use a "
48  "separate [FVICs] block with all your finite volume initial conditions in your input "
49  "file.");
50  else
51  _problem->addInitialCondition(_type, var_name, _moose_object_pars);
52 }
static InputParameters validParams()
T & set(const std::string &name, bool quiet_mode=false)
Returns a writable reference to the named parameters.
The main MOOSE class responsible for handling user-defined parameters in almost every MOOSE system...
static InputParameters validParams()
Definition: AddICAction.C:18
virtual void act() override
Method to add objects to the simulation or perform other setup tasks.
Definition: AddICAction.C:35
std::string _type
The Object type that is being created.
InputParameters _moose_object_pars
The parameters for the object to be created.
std::string blockFullpath() const
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.
const InputParameters & _pars
Parameters of this object, references the InputParameters stored in the InputParametersWarehouse.
std::shared_ptr< FEProblemBase > & _problem
Convenience reference to a problem this action works on.
Definition: Action.h:168
registerMooseAction("MooseApp", AddICAction, "add_ic")
AddICAction(const InputParameters &params)
Definition: AddICAction.C:32