version 3.7
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//
35#ifndef DUMUX_TRACER_MODEL_HH
36#define DUMUX_TRACER_MODEL_HH
37
42
43#include "indices.hh"
44#include "volumevariables.hh"
45#include "iofields.hh"
46#include "localresidual.hh"
47
48namespace Dumux {
49
57template<int nComp, bool useMol, bool enableCompDisp, class CDM = void>
59{
62
63 static constexpr int numEq() { return nComp; }
64 static constexpr int numFluidPhases() { return 1; }
65 static constexpr int numFluidComponents() { return nComp; }
66
67 static constexpr bool enableAdvection() { return true; }
68 static constexpr bool enableMolecularDiffusion() { return true; }
69 static constexpr bool enableEnergyBalance() { return false; }
70 static constexpr bool enableCompositionalDispersion() { return enableCompDisp; }
71
72 static constexpr bool useMoles() { return useMol; }
73};
74
83template<class PV, class FSY, class SSY, class SST, class MT, class DT, class EDM>
85{
86 using PrimaryVariables = PV;
87 using FluidSystem = FSY;
88 using SolidSystem = SSY;
89 using SolidState = SST;
90 using ModelTraits = MT;
91 using DiffusionType = DT;
93};
94
95// \{
96namespace Properties {
97
99// Type tags
101
103// Create new type tags
104namespace TTag {
105struct Tracer { using InheritsFrom = std::tuple<PorousMediumFlow>; };
106} // end namespace TTag
107
109// properties for the tracer model
111
113template<class TypeTag>
114struct UseMoles<TypeTag, TTag::Tracer> { static constexpr bool value = true; };
115
117template<class TypeTag>
118struct ModelTraits<TypeTag, TTag::Tracer>
119{
120private:
123public:
124 using type = TracerModelTraits<FluidSystem::numComponents,
125 getPropValue<TypeTag, Properties::UseMoles>(),
126 getPropValue<TypeTag, Properties::EnableCompositionalDispersion>(),
127 CDM>;
128};
129
131template<class TypeTag>
132struct LocalResidual<TypeTag, TTag::Tracer> { using type = TracerLocalResidual<TypeTag>; };
133
135template<class TypeTag>
136struct IOFields<TypeTag, TTag::Tracer> { using type = TracerIOFields; };
137
139template<class TypeTag>
140struct VolumeVariables<TypeTag, TTag::Tracer>
141{
142private:
150
152public:
154};
155
157template<class TypeTag>
158struct AdvectionType<TypeTag, TTag::Tracer> { using type = StationaryVelocityField<GetPropType<TypeTag, Properties::Scalar>>; };
159
161template<class TypeTag>
162struct EffectiveDiffusivityModel<TypeTag, TTag::Tracer> { using type = DiffusivityConstantTortuosity<GetPropType<TypeTag, Properties::Scalar>>; };
163} // end namespace Properties
164// \}
165} // end namespace Dumux
166
167#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:267
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:105
std::tuple< PorousMediumFlow > InheritsFrom
Definition: porousmediumflow/tracer/model.hh:105
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:59
static constexpr int numFluidComponents()
Definition: porousmediumflow/tracer/model.hh:65
static constexpr int numFluidPhases()
Definition: porousmediumflow/tracer/model.hh:64
static constexpr bool enableCompositionalDispersion()
Definition: porousmediumflow/tracer/model.hh:70
static constexpr bool useMoles()
Definition: porousmediumflow/tracer/model.hh:72
CDM CompositionalDispersionModel
Definition: porousmediumflow/tracer/model.hh:61
static constexpr bool enableEnergyBalance()
Definition: porousmediumflow/tracer/model.hh:69
static constexpr int numEq()
Definition: porousmediumflow/tracer/model.hh:63
static constexpr bool enableAdvection()
Definition: porousmediumflow/tracer/model.hh:67
static constexpr bool enableMolecularDiffusion()
Definition: porousmediumflow/tracer/model.hh:68
Traits class for the volume variables of the single-phase model.
Definition: porousmediumflow/tracer/model.hh:85
FSY FluidSystem
Definition: porousmediumflow/tracer/model.hh:87
EDM EffectiveDiffusivityModel
Definition: porousmediumflow/tracer/model.hh:92
SSY SolidSystem
Definition: porousmediumflow/tracer/model.hh:88
SST SolidState
Definition: porousmediumflow/tracer/model.hh:89
PV PrimaryVariables
Definition: porousmediumflow/tracer/model.hh:86
MT ModelTraits
Definition: porousmediumflow/tracer/model.hh:90
DT DiffusionType
Definition: porousmediumflow/tracer/model.hh:91