GCC Code Coverage Report


Directory: ../../../builds/dumux-repositories/
File: /builds/dumux-repositories/dumux/dumux/porenetwork/2p/volumevariables.hh
Date: 2024-05-04 19:09:25
Exec Total Coverage
Lines: 7 11 63.6%
Functions: 2 6 33.3%
Branches: 0 0 -%

Line Branch Exec Source
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 /*!
8 * \file
9 * \ingroup PNMTwoPModel
10 * \copydoc Dumux::PoreNetwork::TwoPVolumeVariables
11 */
12
13 #ifndef DUMUX_PNM_2P_VOLUME_VARIABLES_HH
14 #define DUMUX_PNM_2P_VOLUME_VARIABLES_HH
15
16 #include <dumux/common/parameters.hh>
17 #include <dumux/porousmediumflow/2p/volumevariables.hh>
18
19 namespace Dumux::PoreNetwork {
20
21 /*!
22 * \ingroup PNMTwoPModel
23 * \brief Contains the quantities which are are constant within a
24 * finite volume (the pore body) in the two-phase model.
25 */
26 template <class Traits>
27 888312 class TwoPVolumeVariables
28 : public Dumux::TwoPVolumeVariables<Traits>
29 {
30 using ParentType = Dumux::TwoPVolumeVariables<Traits>;
31 using ModelTraits = typename Traits::ModelTraits;
32 using Scalar = typename Traits::PrimaryVariables::value_type;
33 using FS = typename Traits::FluidSystem;
34 static constexpr int numFluidComps = ParentType::numFluidComponents();
35 static constexpr auto formulation = ModelTraits::priVarFormulation();
36 public:
37
38 //! Export type of fluid system
39 using FluidSystem = typename Traits::FluidSystem;
40 //! Export type of fluid state
41 using FluidState = typename Traits::FluidState;
42 //! Export type of solid state
43 using SolidState = typename Traits::SolidState;
44 //! Export type of solid system
45 using SolidSystem = typename Traits::SolidSystem;
46 //! Export the indices
47 using Indices = typename ModelTraits::Indices;
48
49 /*!
50 * \brief Updates all quantities for a given control volume.
51 *
52 * \param elemSol A vector containing all primary variables connected to the element
53 * \param problem The object specifying the problem which ought to
54 * be simulated
55 * \param element An element which contains part of the control volume
56 * \param scv The sub control volume
57 */
58 template<class ElemSol, class Problem, class Element, class Scv>
59 1489738 void update(const ElemSol& elemSol,
60 const Problem& problem,
61 const Element& element,
62 const Scv& scv)
63 {
64 1489738 ParentType::update(elemSol, problem, element, scv);
65 4469214 poreInscribedRadius_ = problem.spatialParams().poreInscribedRadius(element, scv, elemSol);
66 5958952 poreVolume_ = problem.gridGeometry().poreVolume(scv.dofIndex()) * this->porosity();
67 4469214 surfaceTension_ = problem.spatialParams().surfaceTension(element, scv, elemSol);
68 1489738 }
69
70 /*!
71 * \brief Returns the pore's inscribed radius.
72 */
73 Scalar poreInscribedRadius() const
74 { return poreInscribedRadius_; }
75
76 /*!
77 * \brief Returns the pore volume. // TODO should this be a fraction only?
78 */
79 Scalar poreVolume() const
80 { return poreVolume_; }
81
82 /*!
83 * \brief Returns the surface tension.
84 */
85 Scalar surfaceTension() const
86 { return surfaceTension_; }
87
88 protected:
89 Scalar poreInscribedRadius_;
90 Scalar poreVolume_;
91 Scalar surfaceTension_;
92 };
93
94 } // end namespace Dumux::PoreNetwork
95
96 #endif
97