36#ifndef DUMUX_NAVIERSTOKES_1PNC_MODEL_HH
37#define DUMUX_NAVIERSTOKES_1PNC_MODEL_HH
64template<
int nComp,
bool useM,
int repCompEqIdx = nComp>
69 static constexpr int numEq() {
return nComp; }
78 static constexpr bool useMoles() {
return useM; }
121namespace Properties {
136template<
class TypeTag>
137struct BaseModelTraits<TypeTag, TTag::NavierStokesMassOnePNC>
147template<
class TypeTag>
148struct ModelTraits<TypeTag, TTag::NavierStokesMassOnePNC>
157 template<
class TypeTag>
158 struct FluidState<TypeTag, TTag::NavierStokesMassOnePNC>
169template<
class TypeTag>
170struct LocalResidual<TypeTag, TTag::NavierStokesMassOnePNC>
174template<
class TypeTag>
175struct VolumeVariables<TypeTag, TTag::NavierStokesMassOnePNC>
183 static_assert(FSY::numPhases == MT::numFluidPhases(),
"Number of phases mismatch between model and fluid system");
184 static_assert(FST::numPhases == MT::numFluidPhases(),
"Number of phases mismatch between model and fluid state");
191 template<
class BaseTraits,
class DT,
class EDM>
194 using DiffusionType = DT;
195 using EffectiveDiffusivityModel = EDM;
203template<
class TypeTag>
207template<
class TypeTag>
208struct EffectiveDiffusivityModel<TypeTag, TTag::NavierStokesMassOnePNC>
212 template<
class VolumeVariables>
218 return volVars.diffusionCoefficient(phaseIdx, compIdxI, compIdxJ);
224template<
class TypeTag>
225struct FluxVariables<TypeTag, TTag::NavierStokesMassOnePNC>
241template<
class TypeTag>
242struct SolutionDependentMolecularDiffusion<TypeTag, TTag::NavierStokesMassOnePNC> {
static constexpr bool value =
true; };
245template<
class TypeTag>
246struct FluxVariablesCache<TypeTag, TTag::NavierStokesMassOnePNC>
248 struct type :
public GetPropType<TypeTag, Properties::MolecularDiffusionType>::Cache
252template<
class TypeTag>
253struct FluxVariablesCacheFiller<TypeTag, TTag::NavierStokesMassOnePNC>
257 static constexpr bool diffusionIsSolDependent = getPropValue<TypeTag, Properties::SolutionDependentMolecularDiffusion>();
258 static constexpr bool heatConductionIsSolDependent =
false;
264template<
class TypeTag>
267template<
class TypeTag>
271 struct EmptyCouplingManager {};
273 using type = EmptyCouplingManager;
277template<
class TypeTag>
278struct SpatialParams<TypeTag, TTag::NavierStokesMassOnePNC>
289template<
class TypeTag>
293template<
class TypeTag>
297template<
class TypeTag>
298struct VolumeVariables<TypeTag, TTag::NavierStokesMassOnePNCNI>
306 static_assert(FSY::numPhases == MT::numFluidPhases(),
"Number of phases mismatch between model and fluid system");
307 static_assert(FST::numPhases == MT::numFluidPhases(),
"Number of phases mismatch between model and fluid state");
308 static_assert(!FSY::isMiscible(),
"The Navier-Stokes model only works with immiscible fluid systems.");
319 using DiffusionType = DT;
320 using EffectiveDiffusivityModel = EDM;
321 using EffectiveThermalConductivityModel = ETCM;
322 using HeatConductionType = HCT;
330template<
class TypeTag>
331struct ThermalConductivityModel<TypeTag, TTag::NavierStokesMassOnePNCNI>
335 template<
class VolVars>
338 return volVars.fluidThermalConductivity();
343template<
class TypeTag>
344struct HeatConductionType<TypeTag, TTag::NavierStokesMassOnePNCNI>
348template<
class TypeTag>
349struct FluxVariables<TypeTag, TTag::NavierStokesMassOnePNCNI>
366template<
class TypeTag>
367struct FluxVariablesCache<TypeTag, TTag::NavierStokesMassOnePNCNI>
370 :
public GetPropType<TypeTag, Properties::MolecularDiffusionType>::Cache
371 ,
public GetPropType<TypeTag, Properties::HeatConductionType>::Cache
375template<
class TypeTag>
376struct FluxVariablesCacheFiller<TypeTag, TTag::NavierStokesMassOnePNCNI>
380 static constexpr bool diffusionIsSolDependent = getPropValue<TypeTag, Properties::SolutionDependentMolecularDiffusion>();
381 static constexpr bool heatConductionIsSolDependent = getPropValue<TypeTag, Properties::SolutionDependentHeatConduction>();
386template<
class TypeTag>
387struct SolutionDependentHeatConduction<TypeTag, TTag::NavierStokesMassOnePNCNI> {
static constexpr bool value =
true; };
Represents all relevant thermodynamic quantities of a multi-phase, multi-component fluid system assum...
Definition: compositional.hh:35
The interface of the coupling manager for multi domain problems.
Definition: multidomain/couplingmanager.hh:37
forward declaration of the method-specific implementation
Definition: flux/box/fickslaw.hh:32
forward declaration of the method-specific implementation
Definition: flux/box/fourierslaw.hh:26
Definition of the spatial parameters for the freeflow problems.
Definition: freeflow/spatialparams.hh:117
Definition: scalarfluxvariablescachefiller.hh:27
The flux variables class for the single-phase flow, multi-component Navier-Stokes model.
Definition: freeflow/navierstokes/mass/1pnc/fluxvariables.hh:42
Element-wise calculation of the Navier-Stokes residual for multicomponent single-phase flow.
Definition: freeflow/navierstokes/mass/1pnc/localresidual.hh:29
Volume variables for the single-phase Navier-Stokes model.
Definition: freeflow/navierstokes/mass/1pnc/volumevariables.hh:29
Defines a type tags and some fundamental properties for all models.
Defines all properties used in Dumux.
Represents all relevant thermodynamic quantities of a multi-phase, multi-component fluid system assum...
Diffusive mass flux according to Fick's law.
Diffusive heat flux according to Fourier's law.
A single-phase, non-isothermal free-flow model.
Definition of the spatial parameters for the freeflow problems.
typename GetProp< TypeTag, Property >::type GetPropType
get the type alias defined in the property
Definition: propertysystem.hh:296
Base class for the flux variables in porous medium models.
Adds I/O fields specific to the tracer model.
A helper class to fill the flux variables cache.
Defines the indices for the elastic model.
Local residual for the hyperelastic model.
Volume variables for the hyperelasticity model.
Adds I/O fields specific to non-isothermal free-flow models.
Definition: freeflow/navierstokes/energy/iofields.hh:25
Specifies a number properties of non-isothermal free-flow flow models based on the specifics of a giv...
Definition: freeflow/navierstokes/energy/model.hh:55
Adds I/O fields specific to the FreeflowNC model.
Definition: freeflow/navierstokes/mass/1pnc/iofields.hh:25
The common indices for the isothermal Navier-Stokes mass conservation model.
Definition: freeflow/navierstokes/mass/1pnc/indices.hh:22
Traits for the Navier-Stokes model.
Definition: freeflow/navierstokes/mass/1pnc/model.hh:66
static constexpr bool enableMolecularDiffusion()
The one-phase model has no molecular diffusion.
Definition: freeflow/navierstokes/mass/1pnc/model.hh:87
static constexpr bool enableAdvection()
Definition: freeflow/navierstokes/mass/1pnc/model.hh:81
static constexpr int replaceCompEqIdx()
Index of of a component balance eq. to be replaced by a total mass/mole balance.
Definition: freeflow/navierstokes/mass/1pnc/model.hh:90
static constexpr int numFluidPhases()
The number of phases is 1.
Definition: freeflow/navierstokes/mass/1pnc/model.hh:72
static constexpr bool useMoles()
Use moles or not.
Definition: freeflow/navierstokes/mass/1pnc/model.hh:78
static constexpr int numFluidComponents()
The number of components can be freely chosen.
Definition: freeflow/navierstokes/mass/1pnc/model.hh:75
static constexpr bool enableEnergyBalance()
The model is isothermal.
Definition: freeflow/navierstokes/mass/1pnc/model.hh:84
static constexpr int numEq()
Definition: freeflow/navierstokes/mass/1pnc/model.hh:69
Traits class for the volume variables of the Navier-Stokes model.
Definition: freeflow/navierstokes/mass/1pnc/model.hh:110
MT ModelTraits
Definition: freeflow/navierstokes/mass/1pnc/model.hh:114
FSY FluidSystem
Definition: freeflow/navierstokes/mass/1pnc/model.hh:112
PV PrimaryVariables
Definition: freeflow/navierstokes/mass/1pnc/model.hh:111
FST FluidState
Definition: freeflow/navierstokes/mass/1pnc/model.hh:113
EmptyCouplingManager type
Definition: freeflow/navierstokes/mass/1pnc/model.hh:273
static auto effectiveDiffusionCoefficient(const VolumeVariables &volVars, const int phaseIdx, const int compIdxI, const int compIdxJ)
Definition: freeflow/navierstokes/mass/1pnc/model.hh:213
GetPropType< TypeTag, Properties::MolecularDiffusionType > MolecularDiffusionType
Definition: freeflow/navierstokes/mass/1pnc/model.hh:356
GetPropType< TypeTag, Properties::HeatConductionType > HeatConductionType
Definition: freeflow/navierstokes/mass/1pnc/model.hh:357
GetPropType< TypeTag, Properties::MolecularDiffusionType > MolecularDiffusionType
Definition: freeflow/navierstokes/mass/1pnc/model.hh:232
typename GetPropType< TypeTag, Properties::GridVolumeVariables >::LocalView ElementVolumeVariables
Definition: freeflow/navierstokes/mass/1pnc/model.hh:235
GetPropType< TypeTag, Properties::ModelTraits > ModelTraits
Definition: freeflow/navierstokes/mass/1pnc/model.hh:228
GetPropType< TypeTag, Properties::Problem > Problem
Definition: freeflow/navierstokes/mass/1pnc/model.hh:227
typename GetPropType< TypeTag, Properties::GridFluxVariablesCache >::LocalView ElementFluxVariablesCache
Definition: freeflow/navierstokes/mass/1pnc/model.hh:236
typename GetPropType< TypeTag, Properties::GridVolumeVariables >::LocalView ElementVolumeVariables
Definition: freeflow/navierstokes/mass/1pnc/model.hh:360
GetPropType< TypeTag, Properties::Problem > Problem
Definition: freeflow/navierstokes/mass/1pnc/model.hh:351
GetPropType< TypeTag, Properties::ModelTraits > ModelTraits
Definition: freeflow/navierstokes/mass/1pnc/model.hh:352
typename GetPropType< TypeTag, Properties::GridFluxVariablesCache >::LocalView ElementFluxVariablesCache
Definition: freeflow/navierstokes/mass/1pnc/model.hh:361
GetPropType< TypeTag, Properties::ModelTraits > ModelTraits
Definition: freeflow/navierstokes/mass/1pnc/model.hh:256
GetPropType< TypeTag, Properties::Problem > Problem
Definition: freeflow/navierstokes/mass/1pnc/model.hh:255
GetPropType< TypeTag, Properties::Problem > Problem
Definition: freeflow/navierstokes/mass/1pnc/model.hh:378
GetPropType< TypeTag, Properties::ModelTraits > ModelTraits
Definition: freeflow/navierstokes/mass/1pnc/model.hh:379
GetPropType< TypeTag, Properties::BaseModelTraits > type
Definition: freeflow/navierstokes/mass/1pnc/model.hh:149
GetPropType< TypeTag, Properties::GridGeometry > GridGeometry
Definition: freeflow/navierstokes/mass/1pnc/model.hh:280
GetPropType< TypeTag, Properties::Scalar > Scalar
Definition: freeflow/navierstokes/mass/1pnc/model.hh:281
The type tag for the single-phase, isothermal Navier-Stokes model.
Definition: freeflow/navierstokes/mass/1pnc/model.hh:130
std::tuple< ModelProperties > InheritsFrom
Definition: freeflow/navierstokes/mass/1pnc/model.hh:130
Definition: freeflow/navierstokes/mass/1pnc/model.hh:131
std::tuple< NavierStokesMassOnePNC > InheritsFrom
Definition: freeflow/navierstokes/mass/1pnc/model.hh:131
static auto effectiveThermalConductivity(const VolVars &volVars)
Definition: freeflow/navierstokes/mass/1pnc/model.hh:336