https://mooseframework.inl.gov
ClosureTestAction.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 "ClosureTestAction.h"
11 #include "ActionFactory.h"
12 #include "ActionWarehouse.h"
13 #include "MooseObjectAction.h"
14 
17 {
19 
20  params.addParam<FunctionName>("T_wall", "Wall temperature function");
21  params.addParam<Real>("q_wall", 0., "Convective wall heat flux");
22  params.addParam<std::vector<std::string>>("output", {}, "List of material properties to output");
23  params.addParam<std::vector<std::string>>(
24  "ad_output", {}, "List of AD material properties to output");
25 
26  params.set<std::string>("fe_family") = "LAGRANGE";
27  params.set<std::string>("fe_order") = "FIRST";
28 
29  return params;
30 }
31 
33  : TestAction(params),
34  _dummy_name("dummy"),
35  _T_wall_name("T_wall"),
36  _has_T_wall(isParamValid("T_wall")),
37  _T_wall_fn(_has_T_wall ? getParam<FunctionName>("T_wall") : ""),
38  _has_q_wall(isParamValid("q_wall")),
39  _q_wall(getParam<Real>("q_wall")),
40  _output_properties(getParam<std::vector<std::string>>("output")),
41  _output_ad_properties(getParam<std::vector<std::string>>("ad_output"))
42 {
44 }
45 
46 void
48 {
49  if (_has_T_wall)
51 }
52 
53 void
55 {
57 }
58 
59 void
61 {
63  if (_has_T_wall)
65 }
66 
67 void
69 {
71  if (_has_q_wall)
72  {
73  const std::string class_name = "AddMaterialAction";
74  InputParameters params = _action_factory.getValidParams(class_name);
75  if (_ad)
76  params.set<std::string>("type") = "ADGenericConstantMaterial";
77  else
78  params.set<std::string>("type") = "GenericConstantMaterial";
79 
80  std::shared_ptr<MooseObjectAction> action = std::static_pointer_cast<MooseObjectAction>(
81  _action_factory.create(class_name, "q_wall_mat", params));
82 
83  action->getObjectParams().set<std::vector<std::string>>("prop_names") = {"q_wall"};
84  action->getObjectParams().set<std::vector<Real>>("prop_values") = {_q_wall};
85 
86  _awh.addActionBlock(action);
87  }
88 }
89 
90 void
92 {
93  setupOutput();
94  setupADOutput();
95 
96  if ((_output_properties.size() > 0) || (_output_ad_properties.size() > 0))
97  {
98  const std::string class_name = "AddOutputAction";
99  InputParameters action_params = _action_factory.getValidParams(class_name);
100  action_params.set<std::string>("type") = "CSV";
101 
102  auto action = std::static_pointer_cast<MooseObjectAction>(
103  _action_factory.create(class_name, "csv", action_params));
104 
106  execute_options = EXEC_TIMESTEP_END;
107  action->getObjectParams().set<ExecFlagEnum>("execute_on") = execute_options;
108 
109  _awh.addActionBlock(action);
110  }
111 }
112 
113 void
115 {
116  for (auto & prop : _output_properties)
117  {
118  addAuxVariable(prop, "MONOMIAL", "CONSTANT");
119 
120  {
121  const std::string class_name = "AddKernelAction";
122  InputParameters params = _action_factory.getValidParams(class_name);
123  params.set<std::string>("type") = "MaterialRealAux";
124  params.set<std::string>("task") = "add_aux_kernel";
125 
126  std::shared_ptr<MooseObjectAction> action = std::static_pointer_cast<MooseObjectAction>(
127  _action_factory.create(class_name, prop + "_aux", params));
128 
129  action->getObjectParams().set<AuxVariableName>("variable") = prop;
130  action->getObjectParams().set<MaterialPropertyName>("property") = prop;
131 
132  _awh.addActionBlock(action);
133  }
134 
135  {
136  const std::string class_name = "AddPostprocessorAction";
137  InputParameters action_params = _action_factory.getValidParams(class_name);
138  action_params.set<std::string>("type") = "ElementalVariableValue";
139 
140  auto action = std::static_pointer_cast<MooseObjectAction>(
141  _action_factory.create(class_name, prop, action_params));
142 
143  action->getObjectParams().set<VariableName>("variable") = prop;
144  action->getObjectParams().set<unsigned int>("elementid") = 0;
145 
146  _awh.addActionBlock(action);
147  }
148  }
149 }
150 
151 void
153 {
154  for (auto & prop : _output_ad_properties)
155  {
156  addAuxVariable(prop, "MONOMIAL", "CONSTANT");
157 
158  {
159  const std::string class_name = "AddKernelAction";
160  InputParameters params = _action_factory.getValidParams(class_name);
161  params.set<std::string>("type") = "ADMaterialRealAux";
162  params.set<std::string>("task") = "add_aux_kernel";
163 
164  std::shared_ptr<MooseObjectAction> action = std::static_pointer_cast<MooseObjectAction>(
165  _action_factory.create(class_name, prop + "_aux", params));
166 
167  action->getObjectParams().set<AuxVariableName>("variable") = prop;
168  action->getObjectParams().set<MaterialPropertyName>("property") = prop;
169 
170  _awh.addActionBlock(action);
171  }
172 
173  {
174  const std::string class_name = "AddPostprocessorAction";
175  InputParameters action_params = _action_factory.getValidParams(class_name);
176  action_params.set<std::string>("type") = "ElementalVariableValue";
177 
178  auto action = std::static_pointer_cast<MooseObjectAction>(
179  _action_factory.create(class_name, prop, action_params));
180 
181  action->getObjectParams().set<VariableName>("variable") = prop;
182  action->getObjectParams().set<unsigned int>("elementid") = 0;
183 
184  _awh.addActionBlock(action);
185  }
186  }
187 }
ClosureTestAction(const InputParameters &params)
static InputParameters validParams()
virtual void addAuxVariables() override
Adds aux variables.
ActionWarehouse & _awh
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)
bool _has_T_wall
True if T_wall was specified.
virtual void addAuxVariables()
Adds aux variables.
Definition: TestAction.C:180
const FunctionName _T_wall_fn
Wall temperature function name.
void addAuxVariable(const VariableName &var_name, const std::string &fe_family, const std::string &fe_order)
Adds an aux variable.
Definition: TestAction.C:248
T & set(const std::string &name, bool quiet_mode=false)
const std::string _fe_order
Default FE order.
Definition: TestAction.h:152
void addActionBlock(std::shared_ptr< Action > blk)
const ExecFlagType EXEC_TIMESTEP_END
std::shared_ptr< Action > create(const std::string &action, const std::string &action_name, InputParameters &parameters)
ExecFlagEnum getDefaultExecFlagEnum()
const std::vector< std::string > & _output_ad_properties
List of AD material properties to output.
InputParameters & getObjectParams()
void addSolutionVariable(const VariableName &var_name, const std::string &family="LAGRANGE", const std::string &order="FIRST", const Real &scaling=1.0)
Adds a solution variable.
Definition: TestAction.C:230
virtual void addMaterials()
Adds materials.
Definition: TestAction.C:214
const bool & _ad
True for setting up testing with AD, false otherwise.
Definition: TestAction.h:154
const VariableName _T_wall_name
Wall temperature.
ActionFactory & _action_factory
virtual void addMaterials() override
Adds materials.
bool _has_q_wall
True if q_wall was specified.
const VariableName _dummy_name
Name of the dummy variable that is solved for.
static InputParameters validParams()
Definition: TestAction.C:17
const Real & _q_wall
Convective wall heat flux.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
virtual void addInitialConditions() override
Adds the initial conditions.
virtual void addOutput() override
Add output.
const std::string _fe_family
Default FE family.
Definition: TestAction.h:150
void addFunctionIC(const VariableName &var_name, const FunctionName &function_name)
Adds a function initial condition.
Definition: TestAction.C:281
const std::vector< std::string > & _output_properties
List of material properties to output.
Base class for adding common actions for testing.
Definition: TestAction.h:17
bool _default_use_transient_executioner
Default for option to use a transient executioner.
Definition: TestAction.h:132
virtual void addSolutionVariables() override
Adds the solution variables.