version 3.8
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>
147struct VolumeVariables<TypeTag, TTag::Tracer>
148{
149private:
157
159public:
161};
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.
Python wrapper for volume variables (finite volume schemes)
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