version 3.10-dev
porousmediumflow/richardsextended/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//
50#ifndef DUMUX_RICHARDSEXTENDED_MODEL_HH
51#define DUMUX_RICHARDSEXTENDED_MODEL_HH
52
53#include <dune/common/fvector.hh>
54
56
64
72
73#include "indices.hh"
74#include "volumevariables.hh"
75#include "iofields.hh"
76#include "localresidual.hh"
77
78namespace Dumux {
79
85{
87
88 static constexpr bool enableMolecularDiffusion() { return true; }
89};
90
101template<class PV, class FSY, class FST, class SSY, class SST, class PT, class MT, class DT, class EDM>
103{
105 using FluidSystem = FSY;
106 using FluidState = FST;
107 using SolidSystem = SSY;
110 using ModelTraits = MT;
111 using DiffusionType = DT;
113};
114
115// \{
117// properties for the isothermal Richards model.
119namespace Properties {
120
122// Type tags
124
126// Create new type tags
127namespace TTag {
128struct ExtendedRichards { using InheritsFrom = std::tuple<Richards>; };
129struct ExtendedRichardsNI { using InheritsFrom = std::tuple<ExtendedRichards>; };
130} // end namespace TTag
131
133// Properties values
135
137template<class TypeTag>
138struct LocalResidual<TypeTag, TTag::ExtendedRichards> { using type = ExtendedRichardsLocalResidual<TypeTag>; };
139
141template<class TypeTag>
142struct IOFields<TypeTag, TTag::ExtendedRichards>
143{
145};
146
148template<class TypeTag>
149struct ModelTraits<TypeTag, TTag::ExtendedRichards> { using type = ExtendedRichardsModelTraits; };
150
152template<class TypeTag>
153struct VolumeVariables<TypeTag, TTag::ExtendedRichards>
154{
155private:
166public:
168};
169
171template<class TypeTag>
172struct EffectiveDiffusivityModel<TypeTag, TTag::ExtendedRichards>
174
176template<class TypeTag>
177struct PrimaryVariables<TypeTag, TTag::ExtendedRichards>
178{
179private:
180 using PrimaryVariablesVector = Dune::FieldVector<GetPropType<TypeTag, Properties::Scalar>,
182public:
184};
185
187// Property values for non-isothermal Richars model
189
191template<class TypeTag>
192struct ModelTraits<TypeTag, TTag::ExtendedRichardsNI>
193{
194private:
196public:
198};
199
201template<class TypeTag>
202struct IOFields<TypeTag, TTag::ExtendedRichardsNI>
203{
205};
206
208template<class TypeTag>
209struct VolumeVariables<TypeTag, TTag::ExtendedRichardsNI>
210{
211private:
222
224 template<class BaseTraits, class ETCM>
225 struct NITraits : public BaseTraits { using EffectiveThermalConductivityModel = ETCM; };
226
227public:
229};
230
232template<class TypeTag>
233struct ThermalConductivityModel<TypeTag, TTag::ExtendedRichardsNI>
234{
235private:
237public:
239};
240
241// \}
242} // end namespace Properties
243} // end namespace Dumux
244
245#endif
Relation for the effective diffusion coefficient after Millington and Quirk.
Definition: diffusivitymillingtonquirk.hh:37
Adds I/O fields specific to non-isothermal models.
Definition: porousmediumflow/nonisothermal/iofields.hh:27
Adds I/O fields specific to the extended Richards model.
Definition: porousmediumflow/richardsextended/iofields.hh:26
Element-wise calculation of the Jacobian matrix for problems using the extended Richards fully implic...
Definition: porousmediumflow/richardsextended/localresidual.hh:34
Volume averaged quantities required by the extended Richards model.
Definition: porousmediumflow/richardsextended/volumevariables.hh:41
A primary variable vector with a state to allow variable switches.
Definition: switchableprimaryvariables.hh:28
Effective thermal conductivity after Somerton.
Definition: somerton.hh:46
Defines all properties used in Dumux.
typename GetProp< TypeTag, Property >::type GetPropType
get the type alias defined in the property
Definition: propertysystem.hh:296
A compositional two-phase fluid system with water and air as components in both, the liquid and the g...
Represents all relevant thermodynamic quantities of a multi-phase fluid system assuming immiscibility...
Definition: adapt.hh:17
Element-wise calculation of the residual for problems using the n-phase immiscible fully implicit mod...
Defines the indices used by the non-isothermal two-phase two-component model.
Adds I/O fields specific to non-isothermal models.
The implicit non-isothermal model.
Defines a type tag and some properties for models using the box scheme.
Traits class to set options used by the local residual when when evaluating the balance equations.
This model implements a variant of the Richards' equation for quasi-twophase flow.
Velocity output for the Richards model.
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)
A simple implementation of pure water.
Index names for the extended Richards model.
Definition: porousmediumflow/richardsextended/indices.hh:26
Specifies a number properties of the extended Richards model.
Definition: porousmediumflow/richardsextended/model.hh:85
static constexpr bool enableMolecularDiffusion()
Definition: porousmediumflow/richardsextended/model.hh:88
Traits class for the Richards model.
Definition: porousmediumflow/richardsextended/model.hh:103
FSY FluidSystem
Definition: porousmediumflow/richardsextended/model.hh:105
PT PermeabilityType
Definition: porousmediumflow/richardsextended/model.hh:109
SSY SolidSystem
Definition: porousmediumflow/richardsextended/model.hh:107
PV PrimaryVariables
Definition: porousmediumflow/richardsextended/model.hh:104
FST FluidState
Definition: porousmediumflow/richardsextended/model.hh:106
DT DiffusionType
Definition: porousmediumflow/richardsextended/model.hh:111
EDM EffectiveDiffusivityModel
Definition: porousmediumflow/richardsextended/model.hh:112
MT ModelTraits
Definition: porousmediumflow/richardsextended/model.hh:110
SST SolidState
Definition: porousmediumflow/richardsextended/model.hh:108
Specifies a number properties of non-isothermal porous medium flow models based on the specifics of a...
Definition: porousmediumflow/nonisothermal/model.hh:76
Definition: porousmediumflow/richardsextended/model.hh:128
std::tuple< Richards > InheritsFrom
Definition: porousmediumflow/richardsextended/model.hh:128
Definition: porousmediumflow/richardsextended/model.hh:129
std::tuple< ExtendedRichards > InheritsFrom
Definition: porousmediumflow/richardsextended/model.hh:129
Index names for the Richards model.
Definition: porousmediumflow/richards/indices.hh:24
Specifies a number properties of the Richards model.
Definition: porousmediumflow/richards/model.hh:106
A primary variable vector with a state to allow variable switches.