https://mooseframework.inl.gov
Loading...
Searching...
No Matches
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
46void
52
53void
58
59void
66
67void
69{
71 if (_has_q_wall)
72 {
73 const std::string class_name = "AddMaterialAction";
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
90void
92{
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
113void
115{
116 for (auto & prop : _output_properties)
117 {
118 addAuxVariable(prop, "MONOMIAL", "CONSTANT");
119
120 {
121 const std::string class_name = "AddKernelAction";
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
151void
153{
154 for (auto & prop : _output_ad_properties)
155 {
156 addAuxVariable(prop, "MONOMIAL", "CONSTANT");
157
158 {
159 const std::string class_name = "AddKernelAction";
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}
const ExecFlagType EXEC_TIMESTEP_END
std::shared_ptr< Action > create(const std::string &action, const std::string &action_name, InputParameters &parameters)
InputParameters getValidParams(const std::string &name)
void addActionBlock(std::shared_ptr< Action > blk)
ActionWarehouse & _awh
virtual void addMaterials() override
Adds materials.
const std::vector< std::string > & _output_properties
List of material properties to output.
virtual void addAuxVariables() override
Adds aux variables.
ClosureTestAction(const InputParameters &params)
bool _has_T_wall
True if T_wall was specified.
virtual void addOutput() override
Add output.
const std::vector< std::string > & _output_ad_properties
List of AD material properties to output.
static InputParameters validParams()
const Real & _q_wall
Convective wall heat flux.
const FunctionName _T_wall_fn
Wall temperature function name.
const VariableName _T_wall_name
Wall temperature.
virtual void addSolutionVariables() override
Adds the solution variables.
virtual void addInitialConditions() override
Adds the initial conditions.
bool _has_q_wall
True if q_wall was specified.
const VariableName _dummy_name
Name of the dummy variable that is solved for.
void addParam(const std::string &name, const std::initializer_list< typename T::value_type > &value, const std::string &doc_string)
T & set(const std::string &name, bool quiet_mode=false)
ActionFactory & _action_factory
Base class for adding common actions for testing.
Definition TestAction.h:18
virtual void addMaterials()
Adds materials.
Definition TestAction.C:216
bool _default_use_transient_executioner
Default for option to use a transient executioner.
Definition TestAction.h:132
void addFunctionIC(const VariableName &var_name, const FunctionName &function_name)
Adds a function initial condition.
Definition TestAction.C:283
const std::string _fe_family
Default FE family.
Definition TestAction.h:150
const bool & _ad
True for setting up testing with AD, false otherwise.
Definition TestAction.h:154
const std::string _fe_order
Default FE order.
Definition TestAction.h:152
void addAuxVariable(const VariableName &var_name, const std::string &fe_family, const std::string &fe_order)
Adds an aux variable.
Definition TestAction.C:250
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:232
static InputParameters validParams()
Definition TestAction.C:17
virtual void addAuxVariables()
Adds aux variables.
Definition TestAction.C:182
ExecFlagEnum getDefaultExecFlagEnum()