https://mooseframework.inl.gov
Loading...
Searching...
No Matches
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
18class THMProblem;
19class Factory;
21class FluidProperties;
22class FlowChannelBase;
23
28{
29public:
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
52protected:
54
57
60
63
65 const UserObjectName _fp_name;
66
68 const std::string _comp_name;
69
71 const RealVectorValue & _gravity_vector;
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
101public:
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
113};
A base class for flow channels.
Provides functions to setup the flow model.
Definition FlowModel.h:28
static const std::string HEAT_FLUX_WALL
Definition FlowModel.h:104
virtual void addInitialConditions()=0
Add initial conditions.
static const std::string SURFACE_TENSION
Definition FlowModel.h:107
static const std::string NUSSELT_NUMBER
Definition FlowModel.h:106
virtual void addMooseObjects()=0
Add MOOSE objects this model uses.
static const std::string DIRECTION
Definition FlowModel.h:110
const Real _gravity_magnitude
Gravitational acceleration magnitude.
Definition FlowModel.h:73
FlowChannelBase & _flow_channel
The flow channel component that built this class.
Definition FlowModel.h:59
static const std::string AREA
Definition FlowModel.h:102
const FunctionName & getVariableFn(const FunctionName &fn_param_name)
Definition FlowModel.C:56
static const std::string TEMPERATURE_WALL
Definition FlowModel.h:108
static const std::string AREA_LINEAR
Definition FlowModel.h:103
virtual void addCommonVariables()
Adds variables common to any flow model (A, P_hf, ...)
Definition FlowModel.C:70
const std::string _comp_name
The component name.
Definition FlowModel.h:68
virtual void init()
Initialize the model.
Definition FlowModel.h:35
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 UNITY
Definition FlowModel.h:109
std::vector< VariableName > _solution_vars
Definition FlowModel.h:76
static InputParameters validParams()
Definition FlowModel.C:19
Factory & _factory
The Factory associated with the MooseApp.
Definition FlowModel.h:56
const libMesh::FEType & _fe_type
The type of FE used for flow.
Definition FlowModel.h:62
const UserObjectName _fp_name
The name of the user object that defines fluid properties.
Definition FlowModel.h:65
virtual void addCommonInitialConditions()
Adds initial conditions common to any flow model.
Definition FlowModel.C:80
virtual void addVariables()=0
Add variables the model uses.
virtual void addCommonMooseObjects()
Adds common MOOSE objects.
Definition FlowModel.C:110
const RealVectorValue & _gravity_vector
Gravitational acceleration vector.
Definition FlowModel.h:71
THMProblem & _sim
Definition FlowModel.h:53
static const std::string HEAT_FLUX_PERIMETER
Definition FlowModel.h:105
std::vector< VariableName > _derivative_vars
Definition FlowModel.h:79
Interface for handling names.
Specialization of FEProblem to run with component subsystem.
Definition THMProblem.h:19