version 3.11-dev
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages Concepts
diffusivitymillingtonquirk.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-FileCopyrightText: Copyright © DuMux Project contributors, see AUTHORS.md in root folder
5// SPDX-License-Identifier: GPL-3.0-or-later
6//
13#ifndef DUMUX_MATERIAL_DIFFUSIVITY_MILLINGTON_QUIRK_HH
14#define DUMUX_MATERIAL_DIFFUSIVITY_MILLINGTON_QUIRK_HH
15
16#include <cmath>
17#include <algorithm>
18
19namespace Dumux {
20
41template<class Scalar>
43{
44public:
57 template<class VolumeVariables>
58 static Scalar effectiveDiffusionCoefficient(const VolumeVariables& volVars,
59 const int phaseIdx,
60 const int compIdxI,
61 const int compIdxJ)
62 {
63 // instead of D_eff = phi S tau D = phi S 1/phi^2 (phi S)^(7/3) D
64 // we implement more efficiently D_eff = phi S^3 cubicroot(phi S) D
65 using std::cbrt;
66 using std::max;
67 const Scalar diffCoeff = volVars.diffusionCoefficient(phaseIdx, compIdxI, compIdxJ);
68 const Scalar porosity = volVars.porosity();
69 const Scalar sat = max<Scalar>(volVars.saturation(phaseIdx), 0.0);
70 return porosity * (sat*sat*sat) * cbrt(porosity * sat) * diffCoeff;
71 }
72};
73
74} // end namespace Dumux
75
76#endif
Relation for the effective diffusion coefficient after Millington and Quirk.
Definition: diffusivitymillingtonquirk.hh:43
static Scalar effectiveDiffusionCoefficient(const VolumeVariables &volVars, const int phaseIdx, const int compIdxI, const int compIdxJ)
Returns the effective diffusion coefficient ( )
Definition: diffusivitymillingtonquirk.hh:58
std::string porosity() noexcept
I/O name of porosity.
Definition: name.hh:127
Definition: adapt.hh:17