3.5-git
DUNE for Multi-{Phase, Component, Scale, Physics, ...} flow and transport in porous media
Loading...
Searching...
No Matches
freeflow/navierstokes/mass/1p/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
46#ifndef DUMUX_FREEFLOW_NAVIERSTOKES_1P_MODEL_HH
47#define DUMUX_FREEFLOW_NAVIERSTOKES_1P_MODEL_HH
48
51
53
59
61
62#include "localresidual.hh"
63#include "volumevariables.hh"
64#include "fluxvariables.hh"
65#include "indices.hh"
66
67namespace Dumux {
68
74{
77 static constexpr int numEq() { return 1; }
78
80 static constexpr int numFluidPhases() { return 1; }
81
83 static constexpr int numFluidComponents() { return 1; }
84
86 static constexpr bool enableAdvection() { return true; }
87
89 static constexpr bool enableMolecularDiffusion() { return false; }
90
92 static constexpr bool enableEnergyBalance() { return false; }
93
95 static constexpr bool usesTurbulenceModel() { return false; }
96
98 static constexpr auto turbulenceModel()
99 { return TurbulenceModel::none; }
100
103};
104
114template<class PV,
115 class FSY,
116 class FST,
117 class MT>
119{
121 using FluidSystem = FSY;
122 using FluidState = FST;
123 using ModelTraits = MT;
124};
125
126// \{
128// properties for the single-phase Navier-Stokes model
130namespace Properties {
131
133// Type tags
135
136// Create new type tags
137namespace TTag {
139struct NavierStokesMassOneP{ using InheritsFrom = std::tuple<ModelProperties>; };
140struct NavierStokesMassOnePNI{ using InheritsFrom = std::tuple<NavierStokesMassOneP>; };
141} // end namespace TTag
142
143
144template<class TypeTag>
145struct ModelTraits<TypeTag, TTag::NavierStokesMassOneP>
147
154template<class TypeTag>
155struct FluidState<TypeTag, TTag::NavierStokesMassOneP>
156{
157private:
160public:
162};
163
165template<class TypeTag>
166struct LocalResidual<TypeTag, TTag::NavierStokesMassOneP>
168
170template<class TypeTag>
171struct VolumeVariables<TypeTag, TTag::NavierStokesMassOneP>
172{
173private:
178
179 static_assert(FSY::numPhases == MT::numFluidPhases(), "Number of phases mismatch between model and fluid system");
180 static_assert(FST::numPhases == MT::numFluidPhases(), "Number of phases mismatch between model and fluid state");
181 static_assert(!FSY::isMiscible(), "The Navier-Stokes model only works with immiscible fluid systems.");
182
184public:
186};
187
189template<class TypeTag>
190struct FluxVariables<TypeTag, TTag::NavierStokesMassOneP>
191{
192private:
195 struct DiffusiveFluxTypes {}; // no diffusion
196 using ElementVolumeVariables = typename GetPropType<TypeTag, Properties::GridVolumeVariables>::LocalView;
197 using ElementFluxVariablesCache = typename GetPropType<TypeTag, Properties::GridFluxVariablesCache>::LocalView;
198public:
200 Problem, ModelTraits, DiffusiveFluxTypes, ElementVolumeVariables, ElementFluxVariablesCache
201 >;
202};
203
204template<class TypeTag>
207
208template<class TypeTag>
209struct FluxVariablesCacheFiller<TypeTag, TTag::NavierStokesMassOneP>
211
212// ! The specific I/O fields
213template<class TypeTag>
214struct IOFields<TypeTag, TTag::NavierStokesMassOneP> { using type = NavierStokesIOFields; };
215
216template<class TypeTag>
217struct CouplingManager<TypeTag, TTag::NavierStokesMassOneP>
218{
219public:
220 using type = struct EmptyCouplingManager {};
221};
222
223// Set the default spatial parameters
224template<class TypeTag>
231
232// Properties for the non-isothermal single phase model
234
236template<class TypeTag>
237struct IOFields<TypeTag, TTag::NavierStokesMassOnePNI>
239
241template<class TypeTag>
244
246template<class TypeTag>
247struct VolumeVariables<TypeTag, TTag::NavierStokesMassOnePNI>
248{
249private:
254
255 static_assert(FSY::numPhases == MT::numFluidPhases(), "Number of phases mismatch between model and fluid system");
256 static_assert(FST::numPhases == MT::numFluidPhases(), "Number of phases mismatch between model and fluid state");
257 static_assert(!FSY::isMiscible(), "The Navier-Stokes model only works with immiscible fluid systems.");
258
262 struct NITraits : public BaseTraits
263 {
264 using EffectiveThermalConductivityModel = ETCM;
265 using HeatConductionType = HCT;
266 };
267public:
269};
270
272template<class TypeTag>
273struct ThermalConductivityModel<TypeTag, TTag::NavierStokesMassOnePNI>
274{
275 struct type
276 {
277 template<class VolVars>
278 static auto effectiveThermalConductivity(const VolVars& volVars)
279 {
280 return volVars.fluidThermalConductivity();
281 }
282 };
283};
284
285template<class TypeTag>
286struct HeatConductionType<TypeTag, TTag::NavierStokesMassOnePNI>
288
290template<class TypeTag>
291struct FluxVariables<TypeTag, TTag::NavierStokesMassOnePNI>
292{
293private:
296
297 struct DiffusiveFluxTypes
298 {
300 };
301
302 using ElementVolumeVariables = typename GetPropType<TypeTag, Properties::GridVolumeVariables>::LocalView;
303 using ElementFluxVariablesCache = typename GetPropType<TypeTag, Properties::GridFluxVariablesCache>::LocalView;
304
305public:
307 Problem, ModelTraits, DiffusiveFluxTypes, ElementVolumeVariables, ElementFluxVariablesCache
308 >;
309};
310
311template<class TypeTag>
312struct FluxVariablesCache<TypeTag, TTag::NavierStokesMassOnePNI>
313{
314 struct type : public GetPropType<TypeTag, Properties::HeatConductionType>::Cache
315 {};
316};
317
318template<class TypeTag>
331
332template<class TypeTag>
333struct SolutionDependentHeatConduction<TypeTag, TTag::NavierStokesMassOnePNI>
334{ static constexpr bool value = true; };
335
336} // end namespace Properties
337} // end namespace Dumux
338
339#endif
Represents all relevant thermodynamic quantities of a multi-phase fluid system assuming immiscibility...
The available free flow turbulence models in Dumux.
A helper class to fill the flux variables cache.
@ none
Definition turbulencemodel.hh:39
FreeFlowScalarFluxVariablesCacheFillerImplementation< Problem, ModelTraits, diffusionIsSolDependent, heatConductionIsSolDependent, typename ProblemTraits< Problem >::GridGeometry::DiscretizationMethod > FreeFlowScalarFluxVariablesCacheFiller
The flux variables cache filler class for free flow.
Definition scalarfluxvariablescachefiller.hh:48
FouriersLawImplementation< TypeTag, typename GetPropType< TypeTag, Properties::GridGeometry >::DiscretizationMethod > FouriersLaw
Evaluates the heat conduction flux according to Fouriers's law.
Definition fourierslaw_fwd.hh:43
Definition adapt.hh:29
constexpr auto getPropValue()
get the value data member of a property
Definition propertysystem.hh:154
typename Properties::Detail::GetPropImpl< TypeTag, Property >::type::type GetPropType
get the type alias defined in the property
Definition propertysystem.hh:150
Definition common/properties.hh:37
Type tag for numeric models.
Definition grid.hh:36
Traits class encapsulating model specifications.
Definition common/properties.hh:53
A class helping models to define input and output fields.
Definition common/properties.hh:63
Definition common/properties.hh:74
The secondary variables within a sub-control volume.
Definition common/properties.hh:107
Container storing the different types of flux variables.
Definition common/properties.hh:113
Stores data associated with flux vars.
Definition common/properties.hh:115
The engine behind the global flux cache (how to fill caches for the stencil).
Definition common/properties.hh:117
The type for the calculation of the heat conduction fluxes.
Definition common/properties.hh:151
specifies if the parameters for the heat conduction fluxes depend on the solution
Definition common/properties.hh:157
The type of the spatial parameters object.
Definition common/properties.hh:160
The type of the fluid state to use.
Definition common/properties.hh:164
Model to be used for the calculation of the effective conductivity.
Definition common/properties.hh:172
Definition common/properties.hh:293
The empty filler class corresponding to EmptyCache.
Definition fluxvariablescaching.hh:32
An empty flux variables cache.
Definition fluxvariablescaching.hh:47
Adds I/O fields specific to non-isothermal free-flow models.
Definition freeflow/navierstokes/energy/iofields.hh:37
Specifies a number properties of non-isothermal free-flow flow models based on the specifics of a giv...
Definition freeflow/navierstokes/energy/model.hh:59
Adds I/O fields for the Navier-Stokes model.
Definition freeflow/navierstokes/iofields.hh:79
The flux variables class for the single-phase flow Navier-Stokes model.
Definition freeflow/navierstokes/mass/1p/fluxvariables.hh:51
The common indices for the isothermal Navier-Stokes mass conservation model.
Definition freeflow/navierstokes/mass/1p/indices.hh:34
Element-wise calculation of the Navier-Stokes residual for single-phase flow.
Definition freeflow/navierstokes/mass/1p/localresidual.hh:38
Traits for the single-phase flow Navier-Stokes mass model.
Definition freeflow/navierstokes/mass/1p/model.hh:74
static constexpr bool enableMolecularDiffusion()
The one-phase model has no molecular diffusion.
Definition freeflow/navierstokes/mass/1p/model.hh:89
static constexpr auto turbulenceModel()
return the type of turbulence model used
Definition freeflow/navierstokes/mass/1p/model.hh:98
static constexpr bool enableAdvection()
Enable advection.
Definition freeflow/navierstokes/mass/1p/model.hh:86
static constexpr bool usesTurbulenceModel()
The model does not include a turbulence model.
Definition freeflow/navierstokes/mass/1p/model.hh:95
static constexpr int numFluidComponents()
The number of components is 1.
Definition freeflow/navierstokes/mass/1p/model.hh:83
NavierStokesMassOnePIndices Indices
the indices
Definition freeflow/navierstokes/mass/1p/model.hh:102
static constexpr bool enableEnergyBalance()
The model is isothermal.
Definition freeflow/navierstokes/mass/1p/model.hh:92
static constexpr int numEq()
Definition freeflow/navierstokes/mass/1p/model.hh:77
static constexpr int numFluidPhases()
The number of phases is 1.
Definition freeflow/navierstokes/mass/1p/model.hh:80
Traits class for the volume variables of the Navier-Stokes model.
Definition freeflow/navierstokes/mass/1p/model.hh:119
FST FluidState
Definition freeflow/navierstokes/mass/1p/model.hh:122
PV PrimaryVariables
Definition freeflow/navierstokes/mass/1p/model.hh:120
FSY FluidSystem
Definition freeflow/navierstokes/mass/1p/model.hh:121
MT ModelTraits
Definition freeflow/navierstokes/mass/1p/model.hh:123
The type tag for the single-phase, isothermal Navier-Stokes model.
Definition freeflow/navierstokes/mass/1p/model.hh:139
std::tuple< ModelProperties > InheritsFrom
Definition freeflow/navierstokes/mass/1p/model.hh:139
Definition freeflow/navierstokes/mass/1p/model.hh:140
std::tuple< NavierStokesMassOneP > InheritsFrom
Definition freeflow/navierstokes/mass/1p/model.hh:140
NavierStokesMassOnePModelTraits type
Definition freeflow/navierstokes/mass/1p/model.hh:146
Dumux::ImmiscibleFluidState< Scalar, FluidSystem > type
Definition freeflow/navierstokes/mass/1p/model.hh:161
NavierStokesMassOnePLocalResidual< TypeTag > type
Definition freeflow/navierstokes/mass/1p/model.hh:167
NavierStokesMassOnePVolumeVariables< Traits > type
Definition freeflow/navierstokes/mass/1p/model.hh:185
NavierStokesMassOnePFluxVariables< Problem, ModelTraits, DiffusiveFluxTypes, ElementVolumeVariables, ElementFluxVariablesCache > type
Definition freeflow/navierstokes/mass/1p/model.hh:199
FluxVariablesCaching::EmptyCache< GetPropType< TypeTag, Properties::Scalar > > type
Definition freeflow/navierstokes/mass/1p/model.hh:206
FluxVariablesCaching::EmptyCacheFiller type
Definition freeflow/navierstokes/mass/1p/model.hh:210
NavierStokesIOFields type
Definition freeflow/navierstokes/mass/1p/model.hh:214
struct EmptyCouplingManager {} type
Definition freeflow/navierstokes/mass/1p/model.hh:220
FreeFlowDefaultSpatialParams< GridGeometry, Scalar > type
Definition freeflow/navierstokes/mass/1p/model.hh:229
GetPropType< TypeTag, Properties::GridGeometry > GridGeometry
Definition freeflow/navierstokes/mass/1p/model.hh:227
GetPropType< TypeTag, Properties::Scalar > Scalar
Definition freeflow/navierstokes/mass/1p/model.hh:228
NavierStokesEnergyIOFields< NavierStokesIOFields > type
Definition freeflow/navierstokes/mass/1p/model.hh:238
NavierStokesEnergyModelTraits< NavierStokesMassOnePModelTraits > type
Definition freeflow/navierstokes/mass/1p/model.hh:243
NavierStokesMassOnePVolumeVariables< NITraits > type
Definition freeflow/navierstokes/mass/1p/model.hh:268
static auto effectiveThermalConductivity(const VolVars &volVars)
Definition freeflow/navierstokes/mass/1p/model.hh:278
FouriersLaw< TypeTag > type
Definition freeflow/navierstokes/mass/1p/model.hh:287
NavierStokesMassOnePFluxVariables< Problem, ModelTraits, DiffusiveFluxTypes, ElementVolumeVariables, ElementFluxVariablesCache > type
Definition freeflow/navierstokes/mass/1p/model.hh:306
FreeFlowScalarFluxVariablesCacheFiller< Problem, ModelTraits, diffusionIsSolDependent, heatConductionIsSolDependent > type
Definition freeflow/navierstokes/mass/1p/model.hh:327
GetPropType< TypeTag, Properties::Problem > Problem
Definition freeflow/navierstokes/mass/1p/model.hh:321
GetPropType< TypeTag, Properties::ModelTraits > ModelTraits
Definition freeflow/navierstokes/mass/1p/model.hh:322
static constexpr bool diffusionIsSolDependent
Definition freeflow/navierstokes/mass/1p/model.hh:323
static constexpr bool heatConductionIsSolDependent
Definition freeflow/navierstokes/mass/1p/model.hh:325
static constexpr bool value
Definition freeflow/navierstokes/mass/1p/model.hh:334
Volume variables for the single-phase Navier-Stokes model.
Definition freeflow/navierstokes/mass/1p/volumevariables.hh:41
Definition of the spatial parameters for the freeflow problems.
Definition freeflow/spatialparams.hh:54
Represents all relevant thermodynamic quantities of a multi-phase fluid system assuming immiscibility...
Definition immiscible.hh:42
Defines a type tags and some fundamental properties for all models.
A single-phase, non-isothermal free-flow model.
Fourier's law specialized for different discretization schemes This file contains the data which is r...
Element-wise calculation of the Navier-Stokes residual for models using the staggered discretization.
Declares all properties used in Dumux.
The common indices for the isothermal Navier-Stokes model.
Adds I/O fields for the Navier-Stokes model.
The flux variables class for the single-phase flow Navier-Stokes model.
Volume variables for the single-phase Navier-Stokes model.
Definition of the spatial parameters for the freeflow problems.