https://mooseframework.inl.gov
Loading...
Searching...
No Matches
AddFVICAction.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 "AddFVICAction.h"
11#include "FEProblem.h"
12#include "MooseTypes.h"
13#include "MooseUtils.h"
14
15registerMooseAction("MooseApp", AddFVICAction, "add_fv_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
34void
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())
47 "Finite element variables do not support an [FVInitialCondition] subblock, try using a "
48 "separate [InitialConditions] block in your input file.");
49 else
50 _problem->addFVInitialCondition(_type, var_name, _moose_object_pars);
51}
registerMooseAction("MooseApp", AddFVICAction, "add_fv_ic")
std::shared_ptr< FEProblemBase > & _problem
Convenience reference to a problem this action works on.
Definition Action.h:178
static InputParameters validParams()
virtual void act() override
Method to add objects to the simulation or perform other setup tasks.
AddFVICAction(const InputParameters &params)
The main MOOSE class responsible for handling user-defined parameters in almost every MOOSE system.
std::string blockFullpath() const
T & set(const std::string &name, bool quiet_mode=false)
Returns a writable reference to the named parameters.
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type and optionally a file path to the top-level block p...
Definition MooseBase.h:271
const InputParameters & _pars
The object's parameters.
Definition MooseBase.h:384
InputParameters _moose_object_pars
The parameters for the object to be created.
static InputParameters validParams()
std::string _type
The Object type that is being created.