version 3.9
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-FileCopyrightInfo: Copyright © DuMux Project contributors, see AUTHORS.md in root folder
5// SPDX-License-Identifier: GPL-3.0-or-later
6//
7#ifndef DUMUX_MATERIAL_DIFFUSIVITY_MILLINGTON_QUIRK_HH
8#define DUMUX_MATERIAL_DIFFUSIVITY_MILLINGTON_QUIRK_HH
9
10#include <cmath>
11#include <algorithm>
12
13namespace Dumux {
14
35template<class Scalar>
37{
38public:
51 template<class VolumeVariables>
52 static Scalar effectiveDiffusionCoefficient(const VolumeVariables& volVars,
53 const int phaseIdx,
54 const int compIdxI,
55 const int compIdxJ)
56 {
57 // instead of D_eff = phi S tau D = phi S 1/phi^2 (phi S)^(7/3) D
58 // we implement more efficiently D_eff = phi S^3 cubicroot(phi S) D
59 using std::cbrt;
60 using std::max;
61 const Scalar diffCoeff = volVars.diffusionCoefficient(phaseIdx, compIdxI, compIdxJ);
62 const Scalar porosity = volVars.porosity();
63 const Scalar sat = max<Scalar>(volVars.saturation(phaseIdx), 0.0);
64 return porosity * (sat*sat*sat) * cbrt(porosity * sat) * diffCoeff;
65 }
66};
67
68} // end namespace Dumux
69
70#endif
Relation for the effective diffusion coefficient after Millington and Quirk.
Definition: diffusivitymillingtonquirk.hh:37
static Scalar effectiveDiffusionCoefficient(const VolumeVariables &volVars, const int phaseIdx, const int compIdxI, const int compIdxJ)
Returns the effective diffusion coefficient ( )
Definition: diffusivitymillingtonquirk.hh:52
std::string porosity() noexcept
I/O name of porosity.
Definition: name.hh:127
Definition: adapt.hh:17