3.6-git
DUNE for Multi-{Phase, Component, Scale, Physics, ...} flow and transport in porous media
freeflow/navierstokes/momentum/pq1bubble/model.hh
Go to the documentation of this file.
1// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
2// vi: set et ts=4 sw=4 sts=4:
3/*****************************************************************************
4 * See the file COPYING for full copying permissions. *
5 * *
6 * This program is free software: you can redistribute it and/or modify *
7 * it under the terms of the GNU General Public License as published by *
8 * the Free Software Foundation, either version 3 of the License, or *
9 * (at your option) any later version. *
10 * *
11 * This program is distributed in the hope that it will be useful, *
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
14 * GNU General Public License for more details. *
15 * *
16 * You should have received a copy of the GNU General Public License *
17 * along with this program. If not, see <http://www.gnu.org/licenses/>. *
18 *****************************************************************************/
45#ifndef DUMUX_NAVIERSTOKES_MOMENTUM_PQ1BUBBLE_MODEL_HH
46#define DUMUX_NAVIERSTOKES_MOMENTUM_PQ1BUBBLE_MODEL_HH
47
53
58
59#include "localresidual.hh"
60#include "volumevariables.hh"
61#include "indices.hh"
62
63namespace Dumux {
64
71template<int dimension>
73{
75 static constexpr int dim() { return dimension; }
76
79 static constexpr int numEq() { return dim(); }
80
82 static constexpr int numFluidPhases() { return 1; }
83
85 static constexpr int numFluidComponents() { return 1; }
86
88 static constexpr bool enableAdvection() { return true; }
89
91 static constexpr bool enableMolecularDiffusion() { return false; }
92
94 static constexpr bool enableEnergyBalance() { return false; }
95
97 static constexpr bool usesTurbulenceModel() { return false; }
98
100 static constexpr auto turbulenceModel()
101 { return TurbulenceModel::none; }
102
105};
106
116template<class PV, class FSY, class FST, class MT>
118{
120 using FluidSystem = FSY;
121 using FluidState = FST;
122 using ModelTraits = MT;
123};
124
125} // end namespace Dumux
126
127// \{
129// properties for the single-phase Navier-Stokes model
131namespace Dumux::Properties {
132
134// Type tags
136
137// Create new type tags
138namespace TTag {
140struct NavierStokesMomentumPQ1Bubble { using InheritsFrom = std::tuple<FreeFlow>; };
141} // end namespace TTag
142
144// default property values for the isothermal single phase model
147template<class TypeTag>
148struct ModelTraits<TypeTag, TTag::NavierStokesMomentumPQ1Bubble>
149{
150private:
152 static constexpr auto dim = GridView::dimension;
153public:
155};
156
163template<class TypeTag>
164struct FluidState<TypeTag, TTag::NavierStokesMomentumPQ1Bubble>{
165private:
168public:
170};
171
173template<class TypeTag>
174struct LocalResidual<TypeTag, TTag::NavierStokesMomentumPQ1Bubble>
176
178template<class TypeTag>
179struct VolumeVariables<TypeTag, TTag::NavierStokesMomentumPQ1Bubble>
180{
181private:
186
187 static_assert(FSY::numPhases == MT::numFluidPhases(), "Number of phases mismatch between model and fluid system");
188 static_assert(FST::numPhases == MT::numFluidPhases(), "Number of phases mismatch between model and fluid state");
189 static_assert(!FSY::isMiscible(), "The Navier-Stokes model only works with immiscible fluid systems.");
190
192public:
194};
195
196// This is the default (model not coupled with a mass (pressure) discretization)
197// i.e. the pressure is supplied via the problem as an analytical solution
198// or from a separate computation
199template<class TypeTag>
200struct CouplingManager<TypeTag, TTag::NavierStokesMomentumPQ1Bubble>
201{
202 struct EmptyCouplingManager {};
203 using type = EmptyCouplingManager;
204};
205
206} // end namespace Dumux::Properties
207
208#endif
The available discretization methods in Dumux.
Classes related to flux variables caching.
Represents all relevant thermodynamic quantities of a multi-phase fluid system assuming immiscibility...
Adaption of the non-isothermal two-phase two-component flow model to problems with CO2.
Definition: adapt.hh:29
typename GetProp< TypeTag, Property >::type GetPropType
get the type alias defined in the property
Definition: propertysystem.hh:180
Definition: common/properties.hh:37
Traits class encapsulating model specifications.
Definition: common/properties.hh:51
Definition: common/properties.hh:72
The secondary variables within a sub-control volume.
Definition: common/properties.hh:105
The type of the fluid state to use.
Definition: common/properties.hh:162
Definition: common/properties.hh:291
The common indices for the isothermal Navier-Stokes model.
Definition: freeflow/navierstokes/momentum/diamond/indices.hh:37
Volume variables for the single-phase Navier-Stokes model.
Definition: freeflow/navierstokes/momentum/diamond/volumevariables.hh:37
Element-wise calculation of the Navier-Stokes residual for models using the pq1bubble discretization.
Definition: freeflow/navierstokes/momentum/pq1bubble/localresidual.hh:47
Traits for the Navier-Stokes model.
Definition: freeflow/navierstokes/momentum/pq1bubble/model.hh:73
static constexpr auto turbulenceModel()
return the type of turbulence model used
Definition: freeflow/navierstokes/momentum/pq1bubble/model.hh:100
static constexpr bool enableMolecularDiffusion()
The one-phase model has no molecular diffusion.
Definition: freeflow/navierstokes/momentum/pq1bubble/model.hh:91
static constexpr bool enableEnergyBalance()
The model is isothermal.
Definition: freeflow/navierstokes/momentum/pq1bubble/model.hh:94
static constexpr int dim()
The dimension of the model.
Definition: freeflow/navierstokes/momentum/pq1bubble/model.hh:75
static constexpr int numEq()
Definition: freeflow/navierstokes/momentum/pq1bubble/model.hh:79
static constexpr int numFluidPhases()
The number of phases is 1.
Definition: freeflow/navierstokes/momentum/pq1bubble/model.hh:82
static constexpr int numFluidComponents()
The number of components is 1.
Definition: freeflow/navierstokes/momentum/pq1bubble/model.hh:85
static constexpr bool usesTurbulenceModel()
The model does not include a turbulence model.
Definition: freeflow/navierstokes/momentum/pq1bubble/model.hh:97
static constexpr bool enableAdvection()
Enable advection.
Definition: freeflow/navierstokes/momentum/pq1bubble/model.hh:88
Traits class for the volume variables of the Navier-Stokes model.
Definition: freeflow/navierstokes/momentum/pq1bubble/model.hh:118
PV PrimaryVariables
Definition: freeflow/navierstokes/momentum/pq1bubble/model.hh:119
FSY FluidSystem
Definition: freeflow/navierstokes/momentum/pq1bubble/model.hh:120
FST FluidState
Definition: freeflow/navierstokes/momentum/pq1bubble/model.hh:121
MT ModelTraits
Definition: freeflow/navierstokes/momentum/pq1bubble/model.hh:122
The type tag for the single-phase, isothermal Navier-Stokes model.
Definition: freeflow/navierstokes/momentum/pq1bubble/model.hh:140
std::tuple< FreeFlow > InheritsFrom
Definition: freeflow/navierstokes/momentum/pq1bubble/model.hh:140
EmptyCouplingManager type
Definition: freeflow/navierstokes/momentum/pq1bubble/model.hh:203
Represents all relevant thermodynamic quantities of a multi-phase fluid system assuming immiscibility...
Definition: immiscible.hh:42
Declares all properties used in Dumux.
Defines a type tag and some properties for free flow models.
A single-phase, non-isothermal free-flow model.
Diffusive heat flux according to Fourier's law.
Element-wise calculation of the local residual for problems using fully implicit tracer model.
Python wrapper for volume variables (finite volume schemes)
Defines the primary variable and equation indices used by the isothermal tracer model.