https://mooseframework.inl.gov
FlowModelSetup1Phase.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 "FlowModelSetup1Phase.h"
11 #include "MooseObjectAction.h"
12 
15 {
17 
18  params.addRequiredParam<FunctionName>("p", "Initial pressure function");
19  params.addRequiredParam<FunctionName>("T", "Initial temperature function");
20  params.addRequiredParam<FunctionName>("vel", "Initial velocity function");
21  params.addRequiredParam<FunctionName>("A", "Area function");
22  params.addParam<FunctionName>("D_h", 0, "Hydraulic diameter function");
23 
24  params.addParam<Real>("scaling_rhoA", 1.0, "Scaling factor for rho*A");
25  params.addParam<Real>("scaling_rhouA", 1.0, "Scaling factor for rho*u*A");
26  params.addParam<Real>("scaling_rhoEA", 1.0, "Scaling factor for rho*E*A");
27 
28  params.addRequiredParam<UserObjectName>("fp_1phase", "Single-phase fluid properties object name");
29 
30  return params;
31 }
32 
34  : FlowModelSetup(params),
35 
36  _p_fn(getParam<FunctionName>("p")),
37  _T_fn(getParam<FunctionName>("T")),
38  _vel_fn(getParam<FunctionName>("vel")),
39  _A_fn(getParam<FunctionName>("A")),
40  _D_h_fn(getParam<FunctionName>("D_h")),
41 
42  _fp_1phase_name(getParam<UserObjectName>("fp_1phase")),
43 
44  _unity_name("unity"),
45  _A_name("A"),
46  _D_h_name("D_h"),
47  _rhoA_name("rhoA"),
48  _rhouA_name("rhouA"),
49  _rhoEA_name("rhoEA"),
50  _rho_name("rho"),
51  _vel_name("vel"),
52  _p_name("p"),
53  _T_name("T"),
54  _v_name("v"),
55  _e_name("e"),
56  _H_name("H"),
57  _mu_name("mu"),
58  _ad(getParam<bool>("ad"))
59 {
60 }
61 
62 void
64 {
65  const std::string class_name = "AddInitialConditionAction";
66 
71 
72  // rho
73  {
75  params.set<std::string>("type") = "RhoFromPressureTemperatureIC";
76 
77  std::shared_ptr<MooseObjectAction> action = std::static_pointer_cast<MooseObjectAction>(
78  _this_action_factory.create(class_name, _rho_name + "_ic", params));
79 
80  action->getObjectParams().set<VariableName>("variable") = _rho_name;
81  action->getObjectParams().set<UserObjectName>("fp") = _fp_1phase_name;
82  action->getObjectParams().set<std::vector<VariableName>>("p") = {_p_name};
83  action->getObjectParams().set<std::vector<VariableName>>("T") = {_T_name};
84 
86  }
87 
88  // rho*A
89  {
91  params.set<std::string>("type") = "VariableProductIC";
92 
93  std::shared_ptr<MooseObjectAction> action = std::static_pointer_cast<MooseObjectAction>(
94  _this_action_factory.create(class_name, _rhoA_name + "_ic", params));
95 
96  action->getObjectParams().set<VariableName>("variable") = _rhoA_name;
97  action->getObjectParams().set<std::vector<VariableName>>("values") = {_rho_name, _A_name};
98 
100  }
101  // rho*u*A
102  {
104  params.set<std::string>("type") = "VariableProductIC";
105 
106  std::shared_ptr<MooseObjectAction> action = std::static_pointer_cast<MooseObjectAction>(
107  _this_action_factory.create(class_name, _rhouA_name + "_ic", params));
108 
109  action->getObjectParams().set<VariableName>("variable") = _rhouA_name;
110  action->getObjectParams().set<std::vector<VariableName>>("values") = {
112 
114  }
115  // rho*E*A
116  {
118  params.set<std::string>("type") = "RhoEAFromPressureTemperatureVelocityIC";
119 
120  std::shared_ptr<MooseObjectAction> action = std::static_pointer_cast<MooseObjectAction>(
121  _this_action_factory.create(class_name, _rhoEA_name + "_ic", params));
122 
123  action->getObjectParams().set<VariableName>("variable") = _rhoEA_name;
124  action->getObjectParams().set<UserObjectName>("fp") = _fp_1phase_name;
125  action->getObjectParams().set<std::vector<VariableName>>("p") = {_p_name};
126  action->getObjectParams().set<std::vector<VariableName>>("T") = {_T_name};
127  action->getObjectParams().set<std::vector<VariableName>>("vel") = {_vel_name};
128  action->getObjectParams().set<std::vector<VariableName>>("A") = {_A_name};
129 
131  }
132 
133  // specific volume
134  {
136  params.set<std::string>("type") = "SpecificVolumeIC";
137 
138  std::shared_ptr<MooseObjectAction> action = std::static_pointer_cast<MooseObjectAction>(
139  _this_action_factory.create(class_name, _v_name + "_ic", params));
140 
141  action->getObjectParams().set<VariableName>("variable") = _v_name;
142  action->getObjectParams().set<std::vector<VariableName>>("rhoA") = {_rhoA_name};
143  action->getObjectParams().set<std::vector<VariableName>>("A") = {_A_name};
144 
146  }
147  // specific internal energy
148  {
150  params.set<std::string>("type") = "SpecificInternalEnergyIC";
151 
152  std::shared_ptr<MooseObjectAction> action = std::static_pointer_cast<MooseObjectAction>(
153  _this_action_factory.create(class_name, _e_name + "_ic", params));
154 
155  action->getObjectParams().set<VariableName>("variable") = _e_name;
156  action->getObjectParams().set<std::vector<VariableName>>("rhoA") = {_rhoA_name};
157  action->getObjectParams().set<std::vector<VariableName>>("rhouA") = {_rhouA_name};
158  action->getObjectParams().set<std::vector<VariableName>>("rhoEA") = {_rhoEA_name};
159 
161  }
162  // total specific enthalpy
163  {
165  params.set<std::string>("type") = "SpecificTotalEnthalpyIC";
166 
167  std::shared_ptr<MooseObjectAction> action = std::static_pointer_cast<MooseObjectAction>(
168  _this_action_factory.create(class_name, _H_name + "_ic", params));
169 
170  action->getObjectParams().set<VariableName>("variable") = _H_name;
171  action->getObjectParams().set<std::vector<VariableName>>("p") = {_p_name};
172  action->getObjectParams().set<std::vector<VariableName>>("rhoA") = {_rhoA_name};
173  action->getObjectParams().set<std::vector<VariableName>>("rhoEA") = {_rhoEA_name};
174  action->getObjectParams().set<std::vector<VariableName>>("A") = {_A_name};
175 
177  }
178 }
179 
180 void
182 {
183  std::vector<VariableName> var_names{_rhoA_name, _rhouA_name, _rhoEA_name};
184  for (const VariableName & var_name : var_names)
185  {
186  const Real scaling_factor = getParam<Real>("scaling_" + var_name);
187  addSolutionVariable(var_name, scaling_factor);
188  }
189 }
190 
191 void
193 {
194  // area
196  {
197  const std::string class_name = "AddKernelAction";
199  params.set<std::string>("type") = "FunctionAux";
200  params.set<std::string>("task") = "add_aux_kernel";
201 
202  std::shared_ptr<MooseObjectAction> action = std::static_pointer_cast<MooseObjectAction>(
203  _this_action_factory.create(class_name, _A_name + "_aux", params));
204 
205  action->getObjectParams().set<AuxVariableName>("variable") = _A_name;
206  action->getObjectParams().set<FunctionName>("function") = _A_fn;
207 
209  }
210 
211  // rho
213  {
214  const std::string class_name = "AddKernelAction";
216  params.set<std::string>("type") = "QuotientAux";
217  params.set<std::string>("task") = "add_aux_kernel";
218 
219  std::shared_ptr<MooseObjectAction> action = std::static_pointer_cast<MooseObjectAction>(
220  _this_action_factory.create(class_name, _rho_name + "_aux", params));
221 
222  action->getObjectParams().set<AuxVariableName>("variable") = _rho_name;
223  action->getObjectParams().set<std::vector<VariableName>>("numerator") = {_rhoA_name};
224  action->getObjectParams().set<std::vector<VariableName>>("denominator") = {_A_name};
225 
227  }
228 
229  // velocity
231  {
232  const std::string class_name = "AddKernelAction";
234  params.set<std::string>("type") = "QuotientAux";
235  params.set<std::string>("task") = "add_aux_kernel";
236 
237  std::shared_ptr<MooseObjectAction> action = std::static_pointer_cast<MooseObjectAction>(
238  _this_action_factory.create(class_name, _vel_name + "_aux", params));
239 
240  action->getObjectParams().set<AuxVariableName>("variable") = _vel_name;
241  action->getObjectParams().set<std::vector<VariableName>>("numerator") = {_rhouA_name};
242  action->getObjectParams().set<std::vector<VariableName>>("denominator") = {_rhoA_name};
243 
245  }
246 
247  // pressure
249  {
250  const std::string class_name = "AddKernelAction";
252  params.set<std::string>("type") = "PressureAux";
253  params.set<std::string>("task") = "add_aux_kernel";
254 
255  std::shared_ptr<MooseObjectAction> action = std::static_pointer_cast<MooseObjectAction>(
256  _this_action_factory.create(class_name, _p_name + "_aux", params));
257 
258  action->getObjectParams().set<AuxVariableName>("variable") = _p_name;
259  action->getObjectParams().set<std::vector<VariableName>>("e") = {_e_name};
260  action->getObjectParams().set<std::vector<VariableName>>("v") = {_v_name};
261  action->getObjectParams().set<UserObjectName>("fp") = _fp_1phase_name;
262 
264  }
265 
266  // temperature
268  {
269  const std::string class_name = "AddKernelAction";
271  params.set<std::string>("type") = "TemperatureAux";
272  params.set<std::string>("task") = "add_aux_kernel";
273 
274  std::shared_ptr<MooseObjectAction> action = std::static_pointer_cast<MooseObjectAction>(
275  _this_action_factory.create(class_name, _T_name + "_aux", params));
276 
277  action->getObjectParams().set<AuxVariableName>("variable") = _T_name;
278  action->getObjectParams().set<std::vector<VariableName>>("e") = {_e_name};
279  action->getObjectParams().set<std::vector<VariableName>>("v") = {_v_name};
280  action->getObjectParams().set<UserObjectName>("fp") = _fp_1phase_name;
281 
283  }
284 
285  // specific volume
287  {
288  const std::string class_name = "AddKernelAction";
290  params.set<std::string>("type") = "THMSpecificVolumeAux";
291  params.set<std::string>("task") = "add_aux_kernel";
292 
293  std::shared_ptr<MooseObjectAction> action = std::static_pointer_cast<MooseObjectAction>(
294  _this_action_factory.create(class_name, _v_name + "_aux", params));
295 
296  action->getObjectParams().set<AuxVariableName>("variable") = _v_name;
297  action->getObjectParams().set<std::vector<VariableName>>("rhoA") = {_rhoA_name};
298  action->getObjectParams().set<std::vector<VariableName>>("A") = {_A_name};
299 
301  }
302 
303  // specific internal energy
305  {
306  const std::string class_name = "AddKernelAction";
308  params.set<std::string>("type") = "THMSpecificInternalEnergyAux";
309  params.set<std::string>("task") = "add_aux_kernel";
310 
311  std::shared_ptr<MooseObjectAction> action = std::static_pointer_cast<MooseObjectAction>(
312  _this_action_factory.create(class_name, _e_name + "_aux", params));
313 
314  action->getObjectParams().set<AuxVariableName>("variable") = _e_name;
315  action->getObjectParams().set<std::vector<VariableName>>("rhoA") = {_rhoA_name};
316  action->getObjectParams().set<std::vector<VariableName>>("rhouA") = {_rhouA_name};
317  action->getObjectParams().set<std::vector<VariableName>>("rhoEA") = {_rhoEA_name};
318 
320  }
321 
322  // specific total enthalpy
324  {
325  const std::string class_name = "AddKernelAction";
327  params.set<std::string>("type") = "SpecificTotalEnthalpyAux";
328  params.set<std::string>("task") = "add_aux_kernel";
329 
330  std::shared_ptr<MooseObjectAction> action = std::static_pointer_cast<MooseObjectAction>(
331  _this_action_factory.create(class_name, _H_name + "_aux", params));
332 
333  action->getObjectParams().set<AuxVariableName>("variable") = _H_name;
334  action->getObjectParams().set<std::vector<VariableName>>("rhoA") = {_rhoA_name};
335  action->getObjectParams().set<std::vector<VariableName>>("rhoEA") = {_rhoEA_name};
336  action->getObjectParams().set<std::vector<VariableName>>("p") = {_p_name};
337  action->getObjectParams().set<std::vector<VariableName>>("A") = {_A_name};
338 
340  }
341 }
342 
343 void
345 {
347 
348  const std::string class_name = "AddMaterialAction";
349 
350  // unity
351  {
353  params.set<std::string>("type") = "ConstantMaterial";
354 
355  std::shared_ptr<MooseObjectAction> action = std::static_pointer_cast<MooseObjectAction>(
356  _this_action_factory.create(class_name, "unity_material", params));
357 
358  action->getObjectParams().set<std::string>("property_name") = _unity_name;
359  action->getObjectParams().set<Real>("value") = 1.0;
360  action->getObjectParams().set<std::vector<VariableName>>("derivative_vars") = {
362 
364  }
365 
366  // fluid properties
367  {
369  if (_ad)
370  params.set<std::string>("type") = "ADFluidProperties3EqnMaterial";
371  else
372  params.set<std::string>("type") = "FluidProperties3EqnMaterial";
373 
374  std::shared_ptr<MooseObjectAction> action = std::static_pointer_cast<MooseObjectAction>(
375  _this_action_factory.create(class_name, "fluid_properties_material", params));
376 
377  action->getObjectParams().set<std::vector<VariableName>>("A") = {_A_name};
378  action->getObjectParams().set<std::vector<VariableName>>("rhoA") = {_rhoA_name};
379  action->getObjectParams().set<std::vector<VariableName>>("rhouA") = {_rhouA_name};
380  action->getObjectParams().set<std::vector<VariableName>>("rhoEA") = {_rhoEA_name};
381 
382  action->getObjectParams().set<UserObjectName>("fp") = _fp_1phase_name;
383 
385  }
386 
387  // dynamic viscosity
388  {
389  const std::string class_name = "AddMaterialAction";
390 
392  if (_ad)
393  params.set<std::string>("type") = "ADDynamicViscosityMaterial";
394  else
395  params.set<std::string>("type") = "DynamicViscosityMaterial";
396 
397  std::shared_ptr<MooseObjectAction> action = std::static_pointer_cast<MooseObjectAction>(
398  _this_action_factory.create(class_name, "mu_material", params));
399 
400  if (!_ad)
401  {
402  action->getObjectParams().set<std::vector<VariableName>>("arhoA") = {_rhoA_name};
403  action->getObjectParams().set<std::vector<VariableName>>("arhouA") = {_rhouA_name};
404  action->getObjectParams().set<std::vector<VariableName>>("arhoEA") = {_rhoEA_name};
405  }
406 
407  action->getObjectParams().set<MaterialPropertyName>("mu") = {_mu_name};
408  action->getObjectParams().set<MaterialPropertyName>("v") = {_v_name};
409  action->getObjectParams().set<MaterialPropertyName>("e") = {_e_name};
410  action->getObjectParams().set<UserObjectName>("fp_1phase") = _fp_1phase_name;
411 
413  }
414 
415  // hydraulic diameter
416  {
418  if (_ad)
419  params.set<std::string>("type") = "ADGenericFunctionMaterial";
420  else
421  params.set<std::string>("type") = "GenericFunctionMaterial";
422 
423  std::shared_ptr<MooseObjectAction> action = std::static_pointer_cast<MooseObjectAction>(
424  _this_action_factory.create(class_name, "D_h_material", params));
425 
426  action->getObjectParams().set<std::vector<std::string>>("prop_names") = {_D_h_name};
427  action->getObjectParams().set<std::vector<FunctionName>>("prop_values") = {_D_h_fn};
428 
430  }
431 }
432 
433 void
435 {
436 }
virtual void addMaterials() override
const FunctionName _p_fn
Pressure function name.
virtual void addInitialConditions() override
const VariableName _rhoA_name
Name of rho*A variable.
const VariableName _A_name
Name of area variable.
static InputParameters validParams()
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)
const FunctionName _T_fn
Temperature function name.
const FunctionName _D_h_fn
Hydraulic diameter function name.
virtual void addMaterials()
T & set(const std::string &name, bool quiet_mode=false)
void addAuxVariable(const VariableName &var_name)
Adds an aux variable.
const VariableName _p_name
Name of pressure variable.
void addActionBlock(std::shared_ptr< Action > blk)
void addRequiredParam(const std::string &name, const std::string &doc_string)
std::shared_ptr< Action > create(const std::string &action, const std::string &action_name, InputParameters &parameters)
FlowModelSetup1Phase(const InputParameters &params)
InputParameters & getObjectParams()
const VariableName _v_name
Name of specific volume variable.
void addFunctionIC(const VariableName &var_name, const FunctionName &function_name)
Adds a function initial condition.
const VariableName _rho_name
Name of rho variable.
const VariableName _rhouA_name
Name of rho*u*A variable.
virtual void addUserObjects() override
const UserObjectName _fp_1phase_name
Single-phase fluid properties object name.
const VariableName _e_name
Name of specific internal energy variable.
const FunctionName _A_fn
Area function name.
const FunctionName _vel_fn
Velocity function name.
ActionWarehouse & _this_action_warehouse
void addSolutionVariable(const VariableName &var_name, const Real &scaling=1.0)
Adds a solution variable.
virtual void addNonConstantAuxVariables() override
ActionFactory & _this_action_factory
const bool & _ad
True for setting up testing with AD, false otherwise.
virtual void addSolutionVariables() override
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
const VariableName _rhoEA_name
Name of rho*E*A variable.
Base helper class to provide interfaces to common flow model setup functions.
const VariableName _H_name
Name of specific total enthalpy variable.
const VariableName _vel_name
Name of velocity variable.
const VariableName _D_h_name
Name of the hydraulic diameter.
const VariableName _mu_name
Name of dynamic viscosity variable.
static InputParameters validParams()
const VariableName _T_name
Name of temperature variable.
const VariableName _unity_name
Name of unity.