https://mooseframework.inl.gov
FlowModel.h
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 #pragma once
11 
12 #include "MooseObject.h"
13 #include "InputParameters.h"
14 #include "NamingInterface.h"
15 #include "THMEnums.h"
16 #include "libmesh/fe_type.h"
17 
18 class THMProblem;
19 class Factory;
21 class FluidProperties;
22 class FlowChannelBase;
23 
27 class FlowModel : public MooseObject, public NamingInterface
28 {
29 public:
30  FlowModel(const InputParameters & params);
31 
35  virtual void init() {}
36 
40  virtual void addVariables() = 0;
41 
45  virtual void addInitialConditions() = 0;
46 
50  virtual void addMooseObjects() = 0;
51 
52 protected:
54 
57 
60 
63 
65  const UserObjectName _fp_name;
66 
68  const std::string _comp_name;
69 
74 
75  // Solution variable names
76  std::vector<VariableName> _solution_vars;
77 
78  // Names of variables for which derivative material properties need to be created
79  std::vector<VariableName> _derivative_vars;
80 
83 
84  const FunctionName & getVariableFn(const FunctionName & fn_param_name);
85 
89  virtual void addCommonVariables();
90 
94  virtual void addCommonInitialConditions();
95 
99  virtual void addCommonMooseObjects();
100 
101 public:
102  static const std::string AREA;
103  static const std::string AREA_LINEAR;
104  static const std::string HEAT_FLUX_WALL;
105  static const std::string HEAT_FLUX_PERIMETER;
106  static const std::string NUSSELT_NUMBER;
107  static const std::string SURFACE_TENSION;
108  static const std::string TEMPERATURE_WALL;
109  static const std::string UNITY;
110  static const std::string DIRECTION;
111 
112  static InputParameters validParams();
113 };
static const std::string AREA_LINEAR
Definition: FlowModel.h:103
Specialization of FEProblem to run with component subsystem.
Definition: THMProblem.h:18
static const std::string SURFACE_TENSION
Definition: FlowModel.h:107
Interface for handling names.
const bool & _output_vector_velocity
True if we output velocity as a vector-value field, false for outputting velocity as a scalar...
Definition: FlowModel.h:82
static const std::string NUSSELT_NUMBER
Definition: FlowModel.h:106
static const std::string AREA
Definition: FlowModel.h:102
Provides functions to setup the flow model.
Definition: FlowModel.h:27
static const std::string UNITY
Definition: FlowModel.h:109
virtual void addCommonInitialConditions()
Adds initial conditions common to any flow model.
Definition: FlowModel.C:80
static InputParameters validParams()
Definition: FlowModel.C:19
A base class for flow channels.
const FunctionName & getVariableFn(const FunctionName &fn_param_name)
Definition: FlowModel.C:56
FlowChannelBase & _flow_channel
The flow channel component that built this class.
Definition: FlowModel.h:59
const Real _gravity_magnitude
Gravitational acceleration magnitude.
Definition: FlowModel.h:73
static const std::string TEMPERATURE_WALL
Definition: FlowModel.h:108
virtual void addCommonVariables()
Adds variables common to any flow model (A, P_hf, ...)
Definition: FlowModel.C:70
const libMesh::FEType & _fe_type
The type of FE used for flow.
Definition: FlowModel.h:62
Factory & _factory
The Factory associated with the MooseApp.
Definition: FlowModel.h:56
const RealVectorValue & _gravity_vector
Gravitational acceleration vector.
Definition: FlowModel.h:71
virtual void addMooseObjects()=0
Add MOOSE objects this model uses.
static const std::string HEAT_FLUX_PERIMETER
Definition: FlowModel.h:105
virtual void addInitialConditions()=0
Add initial conditions.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
FlowModel(const InputParameters &params)
Definition: FlowModel.C:41
static const std::string HEAT_FLUX_WALL
Definition: FlowModel.h:104
const UserObjectName _fp_name
The name of the user object that defines fluid properties.
Definition: FlowModel.h:65
virtual void init()
Initialize the model.
Definition: FlowModel.h:35
std::vector< VariableName > _solution_vars
Definition: FlowModel.h:76
virtual void addVariables()=0
Add variables the model uses.
virtual void addCommonMooseObjects()
Adds common MOOSE objects.
Definition: FlowModel.C:112
const std::string _comp_name
The component name.
Definition: FlowModel.h:68
THMProblem & _sim
Definition: FlowModel.h:53
static const std::string DIRECTION
Definition: FlowModel.h:110
std::vector< VariableName > _derivative_vars
Definition: FlowModel.h:79