https://mooseframework.inl.gov
FlowModelSetup.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 "FlowModelSetup.h"
11 #include "MooseObjectAction.h"
12 #include "AddVariableAction.h"
13 #include "Numerics.h"
14 
17 {
19 
20  params.addParam<bool>("2nd_order_mesh", false, "Use 2nd order elements in the mesh");
21  params.addParam<Real>(
22  "gravity_magnitude", THM::gravity_const, "Gravitational acceleration magnitude");
23 
24  return params;
25 }
26 
28  : _this_params(params),
29  _this_app(*_this_params.getCheckedPointerParam<MooseApp *>("_moose_app")),
30  _this_action_factory(_this_app.getActionFactory()),
31  _this_action_warehouse(*_this_params.getCheckedPointerParam<ActionWarehouse *>("awh")),
32  _fe_family(AddVariableAction::getNonlinearVariableFamilies()),
33  _fe_order(AddVariableAction::getNonlinearVariableOrders()),
34  _gravity_magnitude(getParam<Real>("gravity_magnitude"))
35 {
36  if (getParam<bool>("2nd_order_mesh"))
37  _fe_order = "SECOND";
38 }
39 
40 void
41 FlowModelSetup::addSolutionVariable(const VariableName & var_name, const Real & scaling)
42 {
43  const std::string class_name = "AddVariableAction";
45  params.set<std::vector<Real>>("scaling") = {scaling};
46  params.set<MooseEnum>("family") = _fe_family;
47  params.set<MooseEnum>("order") = _fe_order;
48 
49  std::shared_ptr<Action> action =
50  std::static_pointer_cast<Action>(_this_action_factory.create(class_name, var_name, params));
51 
53 }
54 
55 void
56 FlowModelSetup::addAuxVariable(const VariableName & var_name)
57 {
58  const std::string class_name = "AddAuxVariableAction";
60 
61  std::shared_ptr<Action> action =
62  std::static_pointer_cast<Action>(_this_action_factory.create(class_name, var_name, params));
63 
65 }
66 
67 void
68 FlowModelSetup::addFunctionIC(const VariableName & var_name, const FunctionName & function_name)
69 {
70  const std::string class_name = "AddInitialConditionAction";
72  params.set<std::string>("type") = "FunctionIC";
73 
74  std::shared_ptr<MooseObjectAction> action = std::static_pointer_cast<MooseObjectAction>(
75  _this_action_factory.create(class_name, var_name + "_IC", params));
76 
77  action->getObjectParams().set<VariableName>("variable") = var_name;
78  action->getObjectParams().set<FunctionName>("function") = function_name;
79 
81 }
82 
83 void
85 {
86  {
87  const std::string class_name = "AddMaterialAction";
89  params.set<std::string>("type") = "DirectionMaterial";
90 
91  std::shared_ptr<MooseObjectAction> action = std::static_pointer_cast<MooseObjectAction>(
92  _this_action_factory.create(class_name, "direction_material", params));
94  }
95 }
void addParam(const std::string &name, const std::initializer_list< typename T::value_type > &value, const std::string &doc_string)
InputParameters getValidParams(const std::string &name)
virtual void addMaterials()
T & set(const std::string &name, bool quiet_mode=false)
void addAuxVariable(const VariableName &var_name)
Adds an aux variable.
void addActionBlock(std::shared_ptr< Action > blk)
std::shared_ptr< Action > create(const std::string &action, const std::string &action_name, InputParameters &parameters)
InputParameters emptyInputParameters()
InputParameters & getObjectParams()
void addFunctionIC(const VariableName &var_name, const FunctionName &function_name)
Adds a function initial condition.
ActionWarehouse & _this_action_warehouse
void addSolutionVariable(const VariableName &var_name, const Real &scaling=1.0)
Adds a solution variable.
ActionFactory & _this_action_factory
MooseEnum _fe_order
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
FlowModelSetup(const InputParameters &params)
static const Real gravity_const
Definition: Numerics.h:26
static InputParameters validParams()
MooseEnum _fe_family