version 3.8.0
Loading...
Searching...
No Matches
porousmediumflow/tracer/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// SPDX-FileCopyrightInfo: Copyright © DuMux Project contributors, see AUTHORS.md in root folder
5// SPDX-License-Identifier: GPL-3.0-or-later
6//
42#ifndef DUMUX_TRACER_MODEL_HH
43#define DUMUX_TRACER_MODEL_HH
44
49
50#include "indices.hh"
51#include "volumevariables.hh"
52#include "iofields.hh"
53#include "localresidual.hh"
54
55namespace Dumux {
56
64template<int nComp, bool useMol, bool enableCompDisp, class CDM = void>
66{
69
70 static constexpr int numEq() { return nComp; }
71 static constexpr int numFluidPhases() { return 1; }
72 static constexpr int numFluidComponents() { return nComp; }
73
74 static constexpr bool enableAdvection() { return true; }
75 static constexpr bool enableMolecularDiffusion() { return true; }
76 static constexpr bool enableEnergyBalance() { return false; }
77 static constexpr bool enableCompositionalDispersion() { return enableCompDisp; }
78
79 static constexpr bool useMoles() { return useMol; }
80};
81
90template<class PV, class FSY, class SSY, class SST, class MT, class DT, class EDM>
92{
93 using PrimaryVariables = PV;
94 using FluidSystem = FSY;
95 using SolidSystem = SSY;
96 using SolidState = SST;
97 using ModelTraits = MT;
98 using DiffusionType = DT;
100};
101
102// \{
103namespace Properties {
104
106// Type tags
108
110// Create new type tags
111namespace TTag {
112struct Tracer { using InheritsFrom = std::tuple<PorousMediumFlow>; };
113} // end namespace TTag
114
116// properties for the tracer model
118
120template<class TypeTag>
121struct UseMoles<TypeTag, TTag::Tracer> { static constexpr bool value = true; };
122
124template<class TypeTag>
125struct ModelTraits<TypeTag, TTag::Tracer>
126{
127private:
130public:
131 using type = TracerModelTraits<FluidSystem::numComponents,
132 getPropValue<TypeTag, Properties::UseMoles>(),
133 getPropValue<TypeTag, Properties::EnableCompositionalDispersion>(),
134 CDM>;
135};
136
138template<class TypeTag>
139struct LocalResidual<TypeTag, TTag::Tracer> { using type = TracerLocalResidual<TypeTag>; };
140
142template<class TypeTag>
143struct IOFields<TypeTag, TTag::Tracer> { using type = TracerIOFields; };
144
146template<class TypeTag>
162
164template<class TypeTag>
165struct AdvectionType<TypeTag, TTag::Tracer> { using type = StationaryVelocityField<GetPropType<TypeTag, Properties::Scalar>>; };
166
168template<class TypeTag>
169struct EffectiveDiffusivityModel<TypeTag, TTag::Tracer> { using type = DiffusivityConstantTortuosity<GetPropType<TypeTag, Properties::Scalar>>; };
170} // end namespace Properties
171// \}
172} // end namespace Dumux
173
174#endif
Relation for the saturation-dependent effective diffusion coefficient.
Definition diffusivityconstanttortuosity.hh:37
Evaluates a user given velocity field.
Definition stationaryvelocityfield.hh:32
Adds I/O fields specific to the tracer model.
Definition porousmediumflow/tracer/iofields.hh:27
Element-wise calculation of the local residual for problems using fully implicit tracer model.
Definition porousmediumflow/tracer/localresidual.hh:35
Contains the quantities which are constant within a finite volume for the tracer model.
Definition porousmediumflow/tracer/volumevariables.hh:46
Defines all properties used in Dumux.
Relation for the saturation-dependent effective diffusion coefficient.
typename GetProp< TypeTag, Property >::type GetPropType
get the type alias defined in the property
Definition propertysystem.hh:296
Definition adapt.hh:17
Defines a type tag and some properties for models using the box scheme.
Defines the primary variable and equation indices used by the isothermal tracer model.
Adds I/O fields specific to the tracer model.
Element-wise calculation of the local residual for problems using fully implicit tracer model.
Quantities required by the tracer model in a control volume.
Constant velocity advective law for transport models. This file contains the data which is required t...
Definition porousmediumflow/tracer/model.hh:112
std::tuple< PorousMediumFlow > InheritsFrom
Definition porousmediumflow/tracer/model.hh:112
Defines the primary variable and equation indices used by the isothermal tracer model.
Definition porousmediumflow/tracer/indices.hh:25
Specifies a number properties of the Richards n-components model.
Definition porousmediumflow/tracer/model.hh:66
static constexpr int numFluidComponents()
Definition porousmediumflow/tracer/model.hh:72
static constexpr int numFluidPhases()
Definition porousmediumflow/tracer/model.hh:71
static constexpr bool enableCompositionalDispersion()
Definition porousmediumflow/tracer/model.hh:77
static constexpr bool useMoles()
Definition porousmediumflow/tracer/model.hh:79
CDM CompositionalDispersionModel
Definition porousmediumflow/tracer/model.hh:68
static constexpr bool enableEnergyBalance()
Definition porousmediumflow/tracer/model.hh:76
static constexpr int numEq()
Definition porousmediumflow/tracer/model.hh:70
static constexpr bool enableAdvection()
Definition porousmediumflow/tracer/model.hh:74
static constexpr bool enableMolecularDiffusion()
Definition porousmediumflow/tracer/model.hh:75
Traits class for the volume variables of the single-phase model.
Definition porousmediumflow/tracer/model.hh:92
FSY FluidSystem
Definition porousmediumflow/tracer/model.hh:94
EDM EffectiveDiffusivityModel
Definition porousmediumflow/tracer/model.hh:99
SSY SolidSystem
Definition porousmediumflow/tracer/model.hh:95
SST SolidState
Definition porousmediumflow/tracer/model.hh:96
PV PrimaryVariables
Definition porousmediumflow/tracer/model.hh:93
MT ModelTraits
Definition porousmediumflow/tracer/model.hh:97
DT DiffusionType
Definition porousmediumflow/tracer/model.hh:98