From 428d4997f75b2b45cca9b4fdeeeec6945b578c45 Mon Sep 17 00:00:00 2001 From: Maziar Veyskarami <maziar.veyskarami@iws.uni-stuttgart.de> Date: Fri, 19 Aug 2022 13:29:44 +0200 Subject: [PATCH] [examples][porenetwork_upscaling] update the example description and figures, include missed header files, add references, minor changes --- CHANGELOG.md | 1 + examples/porenetwork_upscaling/CMakeLists.txt | 14 +- examples/porenetwork_upscaling/README.md | 41 ++- examples/porenetwork_upscaling/doc/_intro.md | 41 ++- examples/porenetwork_upscaling/doc/main.md | 36 ++- .../porenetwork_upscaling/doc/main_intro.md | 2 +- examples/porenetwork_upscaling/doc/problem.md | 46 ++- .../doc/upscalinghelper.md | 276 +++++++++++++----- .../doc/upscalinghelper_intro.md | 20 +- ...nverse_apppermeability_versus_rhovmu-1.png | Bin 0 -> 34731 bytes ...bility_ratio_versus_forchheimer_number.png | Bin 42823 -> 31909 bytes examples/porenetwork_upscaling/main.cc | 13 +- examples/porenetwork_upscaling/params.input | 9 +- examples/porenetwork_upscaling/problem.hh | 15 +- examples/porenetwork_upscaling/properties.hh | 12 +- .../porenetwork_upscaling/spatialparams.hh | 4 +- .../porenetwork_upscaling/upscalinghelper.hh | 11 +- ...ersePrmeabilityVsInertiaToViscousRatio.dat | 10 + ...r_PermeabilityratioVsForchheimerNumber.dat | 10 + ...noncreeping_flow_X_direction-reference.dat | 15 - ...noncreeping_flow_Y_direction-reference.dat | 15 - ...noncreeping_flow_Z_direction-reference.dat | 15 - 22 files changed, 394 insertions(+), 212 deletions(-) create mode 100644 examples/porenetwork_upscaling/img/inverse_apppermeability_versus_rhovmu-1.png create mode 100644 test/references/example_porenetwork_upscaling_noncreeping_flow_X-dir_InversePrmeabilityVsInertiaToViscousRatio.dat create mode 100644 test/references/example_porenetwork_upscaling_noncreeping_flow_X-dir_PermeabilityratioVsForchheimerNumber.dat delete mode 100644 test/references/example_porenetwork_upscaling_noncreeping_flow_X_direction-reference.dat delete mode 100644 test/references/example_porenetwork_upscaling_noncreeping_flow_Y_direction-reference.dat delete mode 100644 test/references/example_porenetwork_upscaling_noncreeping_flow_Z_direction-reference.dat diff --git a/CHANGELOG.md b/CHANGELOG.md index 6a54811077..cb39e723b1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,7 @@ that implement an empty cache (i.e. nothing is cached for the flux variables). - __Pore-network model__: Pore-network model will no longer prevent non-wetting fluid flowing out by default. Throats blocking non-wetting fluid can be specified by setting runtime parameter `InvasionState.BlockNonwettingPhaseAtThroatLabel`. +- __Examples__: Extend the porenetwork_upscaling example to include non-creeping flow simulation in pore network. The example is able now to provide not only upscaled Darcy permeability but also Forchheimer permeability and coefficient (employed in Forchheimer equation). ### Immediate interface changes not allowing/requiring a deprecation period: diff --git a/examples/porenetwork_upscaling/CMakeLists.txt b/examples/porenetwork_upscaling/CMakeLists.txt index efa1bbe485..da306ea845 100644 --- a/examples/porenetwork_upscaling/CMakeLists.txt +++ b/examples/porenetwork_upscaling/CMakeLists.txt @@ -6,16 +6,14 @@ dumux_add_test(NAME example_pnm1p_upscaling CMAKE_GUARD HAVE_UMFPACK dune-foamgrid_FOUND COMMAND ${CMAKE_SOURCE_DIR}/bin/testing/runtest.py CMD_ARGS --script fuzzyData --delimiter " " - --files ${CMAKE_SOURCE_DIR}/test/references/example_porenetwork_upscaling_noncreeping_flow_X_direction-reference.dat - ${CMAKE_CURRENT_BINARY_DIR}/X-dir.dat - ${CMAKE_SOURCE_DIR}/test/references/example_porenetwork_upscaling_noncreeping_flow_Y_direction-reference.dat - ${CMAKE_CURRENT_BINARY_DIR}/Y-dir.dat - ${CMAKE_SOURCE_DIR}/test/references/example_porenetwork_upscaling_noncreeping_flow_Z_direction-reference.dat - ${CMAKE_CURRENT_BINARY_DIR}/Z-dir.dat - --command "${CMAKE_CURRENT_BINARY_DIR}/example_pnm1p_upscaling params.input -Problem.AssumeCreepingFlow false") + --files ${CMAKE_SOURCE_DIR}/test/references/example_porenetwork_upscaling_noncreeping_flow_X-dir_PermeabilityratioVsForchheimerNumber.dat + ${CMAKE_CURRENT_BINARY_DIR}/X-dir-PermeabilityratioVsForchheimerNumber.dat + ${CMAKE_SOURCE_DIR}/test/references/example_porenetwork_upscaling_noncreeping_flow_X-dir_InversePrmeabilityVsInertiaToViscousRatio.dat + ${CMAKE_CURRENT_BINARY_DIR}/X-dir-InversePrmeabilityVsInertiaToViscousRatio.dat + --command "${CMAKE_CURRENT_BINARY_DIR}/example_pnm1p_upscaling params.input -Problem.AssumeCreepingFlow false -Problem.Directions 0") dumux_add_test(NAME example_pnm1p_creeping_flow_upscaling TARGET example_pnm1p_upscaling CMAKE_GUARD HAVE_UMFPACK dune-foamgrid_FOUND COMMAND ${CMAKE_SOURCE_DIR}/bin/testing/runtest.py - CMD_ARGS --command "${CMAKE_CURRENT_BINARY_DIR}/example_pnm1p_upscaling params.input -Problem.AssumeCreepingFlow true") \ No newline at end of file + CMD_ARGS --command "${CMAKE_CURRENT_BINARY_DIR}/example_pnm1p_upscaling params.input -Problem.AssumeCreepingFlow true") diff --git a/examples/porenetwork_upscaling/README.md b/examples/porenetwork_upscaling/README.md index 117d570f5a..92b1b7c60a 100644 --- a/examples/porenetwork_upscaling/README.md +++ b/examples/porenetwork_upscaling/README.md @@ -6,15 +6,15 @@ __In this example, you will learn how to__ * simulate creeping/non-creeping flow on a pore network by applying a pressure gradient in a given direction * perform an upscaling in order to determine the flow properties of the porous medium such as: -the Darcy (interinsic) single-phase permeability $`\mathbf{K}`$ [m$`^2`$] using the creeping flow simulation, the Forchheimer permeability $`\mathbf{K}`$ [m$`^2`$] and the Forchheimer coefficient $`\mathbf{\beta}`$ [m$`^{-1}`$] using the non-creeping flow simulation. +the Darcy (intrinsic) single-phase permeability $`\mathbf{K}`$ [m$`^2`$] using the creeping flow simulation, the Forchheimer permeability $`\mathbf{K}`$ [m$`^2`$] and the Forchheimer coefficient $`\mathbf{\beta}`$ [m$`^{-1}`$] using the non-creeping flow simulation. __Result__. -As a result of the creeping flow simulation of this example, you will get the Darcy (interinsic) single-phase permeabilities for each spatial direction $`K_{xx}`$, $`K_{yy}`$, $`K_{zz}`$ [m$`^2`$] as direct output on your terminal as following: +As a result of the creeping flow simulation of this example, you will get the Darcy (intrinsic) single-phase permeabilities for each spatial direction requested by the user $`K_{xx}`$, $`K_{yy}`$, $`K_{zz}`$ [m$`^2`$] as a direct output on your terminal as the following example for the x-direction: ``` X-direction: --- Darcy permeability = 3.326e-12 m^2 +-- Darcy (intrinsic) permeability = 3.326e-12 m^2 ``` @@ -28,25 +28,34 @@ Figure 1 shows the pressure distribution within the pore network for the case of </center> </figure> -The non-creeping flow simulation additionally gives you Forchheimer permeability and coefficient for each spatial direction as in the example below for the x-direction: +The non-creeping flow simulation additionally gives you the Forchheimer permeability and coefficient for each spatial direction as in the example below for the x-direction: ``` X-direction: --- Darcy permeability = 3.326e-12 m^2 --- Forchheimer permeability = 3.270e-12 m^2 --- Forchheimer coefficient = 8.666e+04 m^-1 +-- Darcy (intrinsic) permeability = 3.326e-12 m^2 +-- Forchheimer permeability = 3.196e-12 m^2 +-- Forchheimer coefficient = 8.553e+04 m^-1 ``` -Furthermore, the ratio of apparent permeability to Darcy permeability is plotted versus the Forchheimer number for three spatial dimension as figure 2 shows. +Furthermore, the ratio of apparent permeability to Darcy permeability is plotted versus the Forchheimer number for the spatial dimensions specified by the user, see Fig. 2. <figure> <center> <img src="img/permeability_ratio_versus_forchheimer_number.png" alt="Permeability ratio vs. Forchheimer number" width="60%"/> - <figcaption> <b> Fig.2 </b> - Variation of apparent to darcy permeability ratio versus Forchheimer number. </figcaption> + <figcaption> <b> Fig.2 </b> - Variation of apparent to Darcy permeability ratio versus Forchheimer number. </figcaption> </center> </figure> -After building the executable, use the keyword `Problem.AssumeCreepingFlow` in params.input file to select the flow type to be simulated (i.e. set it true for creeping flow and false for non-creeping flow simulations). Then, run the simulation with `./example_pnm1p_upscaling`. +In addition, in Fig. 3, the inverse of the apparent permeability versus $`\varrho v /\mu`$ is plotted to compare the data from the pore-network model simulation and the data obtained by applying the Forchheimer equation using the Forchheimer permeability and coefficient. As evident in the figure, the Forchheimer equation is not able to accurately predict the flow behavior in the low-velocity regime. +<figure> + <center> + <img src="img/inverse_apppermeability_versus_rhovmu-1.png" alt="Inverse of apparent permeability vs. rhovmu-1" width="60%"/> + <figcaption> <b> Fig.3 </b> - Inverse of apparent permeability versus ρv / μ. + </figcaption> + </center> +</figure> + +After building the executable, use the parameter `Problem.AssumeCreepingFlow` in the `params.input` file to select the flow regime to be simulated (i.e. set it to `true` for creeping flow and to `false` for non-creeping flow simulations). Then, run the simulation with `./example_pnm1p_upscaling`. __Table of contents__. This description is structured as follows: @@ -57,17 +66,17 @@ __Table of contents__. This description is structured as follows: We consider a single-phase problem within a randomly generated pore network of 20x20x20 pores cubed from which some of the pore throats were [deleted randomly](https://doi.org/10.1029/2010WR010180). The inscribed pore body radii follow a truncated log-normal distribution. -To calculate the upscaled properties, $`15`$ pressure differences in the range of $`1`$ to $`10^{10}`$ Pa are applied sequentially in every direction, while all lateral sides are closed. -The resulting mass flow rates are then used to determine upscaled properties as described [later](upscalinghelper.md). +To calculate the upscaled properties, $`10`$ pressure differences in the range of $`10`$ to $`10^{10}`$ Pa/m are applied sequentially in directions specified by the user by setting the parameter `Problem.Directions` in the `params.input` file, while all lateral sides are closed. +The resulting mass flow rates are then used to determine upscaled properties as described [later](upscalinghelper.md). ## Mathematical and numerical model -In this example we are using the single-phase pore-network model of DuMu<sup>x</sup>. We require mass conservation at each pore body $`i`$: +In this example, we are using the single-phase pore-network model of DuMu<sup>x</sup>. We require mass conservation at each pore body $`i`$: ```math \sum_j Q_{ij} = 0, ``` -where $`Q_{ij}`$ is the discrete volume flow rate in a throat connecting pore bodies $`i`$ and $`j`$. In case of creeping flow, the pore network model considers a Hagen-Poiseuille-type law to relate the volume flow from on pore body to another to discrete pressure drops $`\Delta p = p_i - p_j`$ between the pore bodies usig throat conductance, $`g_{ij}`$. +where $`Q_{ij}`$ is the discrete volume flow rate in a throat connecting pore bodies $`i`$ and $`j`$. In case of creeping flow, the pore network model considers a Hagen-Poiseuille-type law to relate the volume flow from on pore body to another to discrete pressure drops $`\Delta p = p_i - p_j`$ between the pore bodies using throat conductance, $`g_{ij}`$. ```math Q_{ij} = g_{ij} (p_i - p_j), @@ -78,13 +87,13 @@ or (p_i - p_j) = Q_{ij} / g_{ij} . ``` -In the simulation of non-creeping flow, to capture inertial effects in fluid flow, an extension of the Hagen-Poiseuille-type law which includes expansion and contraction of flow moving from a throat to a pore and vice versa is used. +In the simulation of non-creeping flow, to capture inertial effects in fluid flow, an extension of the Hagen-Poiseuille-type law which includes the expansion and contraction of the pore space when moving from a throat to a pore and vice versa. ```math (p_i - p_j) = Q_{ij} / g_{ij} + (C_{exp} + C_{cont})Q^2, ``` -where $`C_{exp}`$ and $`C_{cont}`$ are expansion and contraction coefficients. +where $`C_{exp}`$ and $`C_{cont}`$ are the expansion and the contraction coefficient, respectively. # Implementation & Post processing diff --git a/examples/porenetwork_upscaling/doc/_intro.md b/examples/porenetwork_upscaling/doc/_intro.md index 6e75ab181a..12706ab582 100644 --- a/examples/porenetwork_upscaling/doc/_intro.md +++ b/examples/porenetwork_upscaling/doc/_intro.md @@ -4,15 +4,15 @@ __In this example, you will learn how to__ * simulate creeping/non-creeping flow on a pore network by applying a pressure gradient in a given direction * perform an upscaling in order to determine the flow properties of the porous medium such as: -the Darcy (interinsic) single-phase permeability $`\mathbf{K}`$ [m$`^2`$] using the creeping flow simulation, the Forchheimer permeability $`\mathbf{K}`$ [m$`^2`$] and the Forchheimer coefficient $`\mathbf{\beta}`$ [m$`^{-1}`$] using the non-creeping flow simulation. +the Darcy (intrinsic) single-phase permeability $`\mathbf{K}`$ [m$`^2`$] using the creeping flow simulation, the Forchheimer permeability $`\mathbf{K}`$ [m$`^2`$] and the Forchheimer coefficient $`\mathbf{\beta}`$ [m$`^{-1}`$] using the non-creeping flow simulation. __Result__. -As a result of the creeping flow simulation of this example, you will get the Darcy (interinsic) single-phase permeabilities for each spatial direction $`K_{xx}`$, $`K_{yy}`$, $`K_{zz}`$ [m$`^2`$] as direct output on your terminal as following: +As a result of the creeping flow simulation of this example, you will get the Darcy (intrinsic) single-phase permeabilities for each spatial direction requested by the user $`K_{xx}`$, $`K_{yy}`$, $`K_{zz}`$ [m$`^2`$] as a direct output on your terminal as the following example for the x-direction: ``` X-direction: --- Darcy permeability = 3.326e-12 m^2 +-- Darcy (intrinsic) permeability = 3.326e-12 m^2 ``` @@ -26,25 +26,34 @@ Figure 1 shows the pressure distribution within the pore network for the case of </center> </figure> -The non-creeping flow simulation additionally gives you Forchheimer permeability and coefficient for each spatial direction as in the example below for the x-direction: +The non-creeping flow simulation additionally gives you the Forchheimer permeability and coefficient for each spatial direction as in the example below for the x-direction: ``` X-direction: --- Darcy permeability = 3.326e-12 m^2 --- Forchheimer permeability = 3.270e-12 m^2 --- Forchheimer coefficient = 8.666e+04 m^-1 +-- Darcy (intrinsic) permeability = 3.326e-12 m^2 +-- Forchheimer permeability = 3.196e-12 m^2 +-- Forchheimer coefficient = 8.553e+04 m^-1 ``` -Furthermore, the ratio of apparent permeability to Darcy permeability is plotted versus the Forchheimer number for three spatial dimension as figure 2 shows. +Furthermore, the ratio of apparent permeability to Darcy permeability is plotted versus the Forchheimer number for the spatial dimensions specified by the user, see Fig. 2. <figure> <center> <img src="img/permeability_ratio_versus_forchheimer_number.png" alt="Permeability ratio vs. Forchheimer number" width="60%"/> - <figcaption> <b> Fig.2 </b> - Variation of apparent to darcy permeability ratio versus Forchheimer number. </figcaption> + <figcaption> <b> Fig.2 </b> - Variation of apparent to Darcy permeability ratio versus Forchheimer number. </figcaption> </center> </figure> -After building the executable, use the keyword `Problem.AssumeCreepingFlow` in params.input file to select the flow type to be simulated (i.e. set it true for creeping flow and false for non-creeping flow simulations). Then, run the simulation with `./example_pnm1p_upscaling`. +In addition, in Fig. 3, the inverse of the apparent permeability versus $`\varrho v /\mu`$ is plotted to compare the data from the pore-network model simulation and the data obtained by applying the Forchheimer equation using the Forchheimer permeability and coefficient. As evident in the figure, the Forchheimer equation is not able to accurately predict the flow behavior in the low-velocity regime. +<figure> + <center> + <img src="img/inverse_apppermeability_versus_rhovmu-1.png" alt="Inverse of apparent permeability vs. rhovmu-1" width="60%"/> + <figcaption> <b> Fig.3 </b> - Inverse of apparent permeability versus ρv / μ. + </figcaption> + </center> +</figure> + +After building the executable, use the parameter `Problem.AssumeCreepingFlow` in the `params.input` file to select the flow regime to be simulated (i.e. set it to `true` for creeping flow and to `false` for non-creeping flow simulations). Then, run the simulation with `./example_pnm1p_upscaling`. __Table of contents__. This description is structured as follows: @@ -55,17 +64,17 @@ __Table of contents__. This description is structured as follows: We consider a single-phase problem within a randomly generated pore network of 20x20x20 pores cubed from which some of the pore throats were [deleted randomly](https://doi.org/10.1029/2010WR010180). The inscribed pore body radii follow a truncated log-normal distribution. -To calculate the upscaled properties, $`15`$ pressure differences in the range of $`1`$ to $`10^{10}`$ Pa are applied sequentially in every direction, while all lateral sides are closed. -The resulting mass flow rates are then used to determine upscaled properties as described [later](upscalinghelper.md). +To calculate the upscaled properties, $`10`$ pressure differences in the range of $`10`$ to $`10^{10}`$ Pa/m are applied sequentially in directions specified by the user by setting the parameter `Problem.Directions` in the `params.input` file, while all lateral sides are closed. +The resulting mass flow rates are then used to determine upscaled properties as described [later](upscalinghelper.md). ## Mathematical and numerical model -In this example we are using the single-phase pore-network model of DuMu<sup>x</sup>. We require mass conservation at each pore body $`i`$: +In this example, we are using the single-phase pore-network model of DuMu<sup>x</sup>. We require mass conservation at each pore body $`i`$: ```math \sum_j Q_{ij} = 0, ``` -where $`Q_{ij}`$ is the discrete volume flow rate in a throat connecting pore bodies $`i`$ and $`j`$. In case of creeping flow, the pore network model considers a Hagen-Poiseuille-type law to relate the volume flow from on pore body to another to discrete pressure drops $`\Delta p = p_i - p_j`$ between the pore bodies usig throat conductance, $`g_{ij}`$. +where $`Q_{ij}`$ is the discrete volume flow rate in a throat connecting pore bodies $`i`$ and $`j`$. In case of creeping flow, the pore network model considers a Hagen-Poiseuille-type law to relate the volume flow from on pore body to another to discrete pressure drops $`\Delta p = p_i - p_j`$ between the pore bodies using throat conductance, $`g_{ij}`$. ```math Q_{ij} = g_{ij} (p_i - p_j), @@ -76,13 +85,13 @@ or (p_i - p_j) = Q_{ij} / g_{ij} . ``` -In the simulation of non-creeping flow, to capture inertial effects in fluid flow, an extension of the Hagen-Poiseuille-type law which includes expansion and contraction of flow moving from a throat to a pore and vice versa is used. +In the simulation of non-creeping flow, to capture inertial effects in fluid flow, an extension of the Hagen-Poiseuille-type law which includes the expansion and contraction of the pore space when moving from a throat to a pore and vice versa. ```math (p_i - p_j) = Q_{ij} / g_{ij} + (C_{exp} + C_{cont})Q^2, ``` -where $`C_{exp}`$ and $`C_{cont}`$ are expansion and contraction coefficients. +where $`C_{exp}`$ and $`C_{cont}`$ are the expansion and the contraction coefficient, respectively. # Implementation & Post processing diff --git a/examples/porenetwork_upscaling/doc/main.md b/examples/porenetwork_upscaling/doc/main.md index af18166c72..d484fe132d 100644 --- a/examples/porenetwork_upscaling/doc/main.md +++ b/examples/porenetwork_upscaling/doc/main.md @@ -7,7 +7,7 @@ # Part 2: Main program flow The main program flow is implemented in file `main.cc` described below. -For each spatial direction x, y and z, flow through the network is simulated using several pressure gradients and the resulting mass flow rate +For each spatial direction x, y and z, flow through the network is simulated using several pressure gradients and the resulting mass flow rates are used to determine the upscaled properties. The code documentation is structured as follows: @@ -30,7 +30,10 @@ Pore-Network-Model to evaluate the upscaled Darcy permeability of a given networ #include <iostream> +#include <algorithm> + #include <dune/common/float_cmp.hh> // for floating point comparison +#include <dune/common/exceptions.hh> #include <dumux/common/properties.hh> // for GetPropType #include <dumux/common/parameters.hh> // for getParam @@ -56,8 +59,8 @@ Pore-Network-Model to evaluate the upscaled Darcy permeability of a given networ ### The driver function -It depends on the template argument `TypeTag` if we run the example assuming -a creeping flow regime or not. This is decided with the parameter +The template argument `TypeTag` determines if we run the example assuming +a creeping flow regime or not. Which regime is selected is set with the parameter `Problem.AssumeCreepingFlow` in the input file. ```cpp @@ -131,9 +134,9 @@ specify the field type explicitly since it may not be possible to deduce this from the vector size in a pore network ```cpp - vtkWriter.addField(gridGeometry->poreVolume(), "poreVolume", VtkWriter::FieldType::vertex); - vtkWriter.addField(gridGeometry->throatShapeFactor(), "throatShapeFactor", VtkWriter::FieldType::element); - vtkWriter.addField(gridGeometry->throatCrossSectionalArea(), "throatCrossSectionalArea", VtkWriter::FieldType::element); + vtkWriter.addField(gridGeometry->poreVolume(), "poreVolume", Vtk::FieldType::vertex); + vtkWriter.addField(gridGeometry->throatShapeFactor(), "throatShapeFactor", Vtk::FieldType::element); + vtkWriter.addField(gridGeometry->throatCrossSectionalArea(), "throatCrossSectionalArea", Vtk::FieldType::element); ``` ### Prepare the upscaling procedure. @@ -170,10 +173,15 @@ determine it automatically based on the network's bounding box. problem->setSideLengths(sideLengths); ``` -Get the maximum pressure gradient and the population of sample points specified in the input file +Get the maximum and minimum pressure gradient and the population of sample points specified in the input file ```cpp - const Scalar maxPressureGradient = getParam<Scalar>("Problem.MaximumPressureGradient"); + const Scalar minPressureGradient = getParam<Scalar>("Problem.MinimumPressureGradient", 1e1); + const Scalar maxPressureGradient = getParam<Scalar>("Problem.MaximumPressureGradient", 1e10); + + if (!(minPressureGradient < maxPressureGradient)) + DUNE_THROW(Dune::InvalidStateException, "Maximum pressure gradient must be greater than minimum pressure gradient"); + const int numberOfSamples = getParam<int>("Problem.NumberOfPressureGradients", 1); ``` @@ -181,7 +189,8 @@ Iterate over all directions specified before, apply several pressure gradient, c and finally determine the the upscaled properties. ```cpp - const auto directions = getParam<std::vector<int>>("Problem.Directions", std::vector<int>{0, 1, 2}); + const auto directions = getParam<std::vector<std::size_t>>("Problem.Directions", std::vector<std::size_t>{0, 1, 2}); + upscalingHelper.setDirections(directions); for (int dimIdx : directions) { // set the direction in which the pressure gradient will be applied @@ -193,7 +202,10 @@ and finally determine the the upscaled properties. x = 0; // set the pressure gradient to be applied - Scalar pressureGradient = maxPressureGradient*std::exp(i+1 - numberOfSamples); + Scalar pressureGradient = maxPressureGradient * std::exp(i + 1 - numberOfSamples); + if (i == 0) + pressureGradient = std::min(minPressureGradient, pressureGradient); + problem->setPressureGradient(pressureGradient); // solve problem @@ -201,7 +213,7 @@ and finally determine the the upscaled properties. // set the sample points const Scalar totalFluidMassFlux = boundaryFlux.getFlux(std::vector<int>{ problem->outletPoreLabel() })[0]; - upscalingHelper.setSamplePoints(*problem, totalFluidMassFlux); + upscalingHelper.setDataPoints(*problem, totalFluidMassFlux); } // write a vtu file for the given direction for the last sample @@ -210,7 +222,7 @@ and finally determine the the upscaled properties. // calculate and report the upscaled properties constexpr bool isCreepingFlow = std::is_same_v<TypeTag, Properties::TTag::PNMUpscalingCreepingFlow>; - upscalingHelper.calculateUpscaledProperties(isCreepingFlow); + upscalingHelper.calculateUpscaledProperties(*problem, isCreepingFlow); upscalingHelper.report(isCreepingFlow); // compare the Darcy permeability with reference data if provided in input file and report in case of inconsistency diff --git a/examples/porenetwork_upscaling/doc/main_intro.md b/examples/porenetwork_upscaling/doc/main_intro.md index 4e105b6d0f..bb5d5dfd27 100644 --- a/examples/porenetwork_upscaling/doc/main_intro.md +++ b/examples/porenetwork_upscaling/doc/main_intro.md @@ -1,7 +1,7 @@ # Part 2: Main program flow The main program flow is implemented in file `main.cc` described below. -For each spatial direction x, y and z, flow through the network is simulated using several pressure gradients and the resulting mass flow rate +For each spatial direction x, y and z, flow through the network is simulated using several pressure gradients and the resulting mass flow rates are used to determine the upscaled properties. The code documentation is structured as follows: diff --git a/examples/porenetwork_upscaling/doc/problem.md b/examples/porenetwork_upscaling/doc/problem.md index 09635e6eeb..778c5e350e 100644 --- a/examples/porenetwork_upscaling/doc/problem.md +++ b/examples/porenetwork_upscaling/doc/problem.md @@ -35,6 +35,19 @@ type tag, which we want to modify or for which no meaningful default can be set. #include <dumux/porenetwork/1p/model.hh>// for `TTag::PNMOneP` ``` +The class that contains a collection of single-phase flow throat transmissibilities +among them the transmisibility model to be used can be specified in AdvectionType class + +```cpp +#include <dumux/material/fluidmatrixinteractions/porenetwork/throat/transmissibility1p.hh> +``` + +The class that provides specializations for both creeping and non-creeping advection types. + +```cpp +#include <dumux/flux/porenetwork/advection.hh> +``` + The local residual for incompressible flow is included. The one-phase flow model (included above) uses a default implementation of the local residual for single-phase flow. However, in this example we are using an @@ -64,7 +77,8 @@ The classes that define the problem and parameters used in this simulation ### `TypeTag` definition Two `TypeTag` for our simulation are defined, one for creeping flow and another for non-creeping flow, -which inherit properties from the single-phase pore network model. +which inherit properties from the single-phase pore network model. The non-creeping flow inherits +all properties from the creeping flow simulation but sets an own property for the `AdvectionType`. ```cpp namespace Dumux::Properties { @@ -110,7 +124,7 @@ public: using type = PoreNetwork::CreepingFlow<Scalar, TransmissibilityLaw>; }; -//! The advection type for non-creeping flow (includes model for intertia effects) +//! The advection type for non-creeping flow (includes model for inertia effects) template<class TypeTag> struct AdvectionType<TypeTag, TTag::PNMUpscalingNonCreepingFlow> { @@ -217,19 +231,18 @@ Fluid properties that depend on temperature will be calculated with this value. ```cpp Scalar temperature() const { return 283.15; } - // [[codeblock]] +``` - // #### Pressure gradient - // Set the pressure gradient to be applied to the network - // [[codeblock]] +Set the pressure gradient to be applied to the network + +```cpp void setPressureGradient(Scalar pressureGradient) { pressureGradient_ = pressureGradient; } ``` #### Boundary conditions This function is used to define the __type of boundary conditions__ used depending on the location. -Here, we use Dirichlet boundary conditions (fixed pressures) at the inlet and outlet and Neumann -boundary conditions at all remaining boundaries. Note that the PNM does not support Neumann boundaries. +Here, we use Dirichlet boundary conditions (fixed pressures) at the inlet and outlet. Note that the PNM does not support Neumann boundaries. To specify a certain mass flux on a boundary, we would have to use a source term on the boundary pores (which is not done in this example). ```cpp @@ -302,16 +315,23 @@ and the length of the domain at the inlet. // Return the applied pressure gradient. Scalar pressureGradient() const { return pressureGradient_; } +``` + +</details> +Return the label of inlet pores assuming a previously set direction. - // Return the label of inlet pores assuming a previously set direction. +```cpp int inletPoreLabel() const { static constexpr std::array<int, 3> label = {1, 3, 5}; return label[direction_]; } +``` + +Return the label of outlet pores assuming a previously set direction. - // Return the label of outlet pores assuming a previously set direction. +```cpp int outletPoreLabel() const { static constexpr std::array<int, 3> label = {2, 4, 6}; @@ -335,8 +355,11 @@ private: else return scv.dofPosition()[direction_] > this->gridGeometry().bBoxMax()[direction_] - eps_; } +``` + +private data members - // private data members +```cpp Scalar eps_; Scalar pressureGradient_; int direction_; @@ -347,7 +370,6 @@ private: } // end namespace Dumux ``` -</details> </details> diff --git a/examples/porenetwork_upscaling/doc/upscalinghelper.md b/examples/porenetwork_upscaling/doc/upscalinghelper.md index b6e3011633..7b671b301a 100644 --- a/examples/porenetwork_upscaling/doc/upscalinghelper.md +++ b/examples/porenetwork_upscaling/doc/upscalinghelper.md @@ -4,7 +4,7 @@ | [:arrow_left: Back to the main documentation](../README.md) | [:arrow_left: Go back to part 2](main.md) | |---|---:| -The upscaling helper evaluates the pore-network simulation results for each direction $`i`$ and calculates the upscaled properties in this direction. Firstly, it evaluates the the Apparent velocity as: +The upscaling helper evaluates the pore-network simulation results for each direction $`i`$ and calculates the upscaled properties in this direction. Firstly, it evaluates the apparent velocity as: ```math v_{\mathrm{Apparent},i} = \frac{q_{\mathrm{mass,tot},i} / \varrho}{A_{\mathrm{tot},i}} @@ -14,18 +14,29 @@ where $`q_{\mathrm{mass,tot},i}`$ is the total mass flow leaving the network ove $`A_{\mathrm{tot},i}`$ in $`i`$-direction. $`\varrho `$ is the fluid mass density. Then, we calculate upscaled permeability as: ```math - K_i = v_{\mathrm{Apparent},i} / \nabla p_i ~ \mu. + K_D = v_{\mathrm{Apparent},i} ~ \mu / \nabla p_i. ``` -$`\nabla p_i`$ is a given pressure gradient in $`i`$-direction and $`\mu`$ the fluid dynamic viscosity. In creeping flow simulation, calculated permeability, $`K_i`$, is Darcy (intrinsic) permeability, $`K_D`$ of the system. +$`\nabla p_i`$ is a given pressure gradient in $`i`$-direction and $`\mu`$ the fluid dynamic viscosity. In the creeping flow simulation, the calculated permeability, $`K_D`$, is the Darcy (intrinsic) permeability of the system. To simulate non-creeping flow, we use Forchheimer's equation to upscale the properties. ```math \nabla p_i = \frac{\mu}{K_f} v_{\mathrm{Apparent},i} + \varrho \beta v_{\mathrm{Apparent},i}^2, ``` -where $`K_f`$ is Forchheimer permeability and $`\beta`$ is Forchheimer coefficient. Although some researchers for the sake of simplicity assumes that $`K_f = K_i`$, they are not exactly the same properties. As the velocity increases, the flow regime in a porous medium shifts from Darcy to Forchheimer regime. This change in the flow regime causes that the pressure drop ,which in Darcy flow just includes the viscous dissipation, becomes a combination of both viscous dissipation (the first term in the Forchheimer equation) and the inertial term (the second term in Forchheimer equation). Considering the shift in flow regime, a porous medium having a Forchheimer flow regime shows a different viscous dissipation than when the same porous medium experiences a Darcy fllow. In other words, moving from Darcy to Forchheimr regime establishes a new velocity field in the porous medium which needs a new viscous dissipation and also an inertial term. Furthermore, the first and second terms in Forchheimer equation have strong influence on each other. For more detail, We refer to the study conducted by [Dukhan and Minjeur (2010)](https://link.springer.com/article/10.1007/s10934-010-9393-1). To calculate upscaled properties, we rearrange Forchehimer's equation and find the linear regression line of $`\nabla p_i v_{\mathrm{Apparent},i}/\mu `$ versus $`\varrho v_{\mathrm{Apparent},i}/\mu `$. Using the intercept and the slope of the regreesion line, we can respectively calculate Forchheimr permeability and coefficient. It should be noted that the calculation of the Forchheimer permeability is highly affected by the pressure range applied to the porous medium as well as the number of sample points that are used in the regression process. We compute Darcy (intrinsic) permeability as the maximum permeability of the sample of data of the system which happens when pressure gradient is small enough such that inertial effects are negligible. To ensure such a small pressure gradient, it is recommended to use more than 10 pressure smaple points which can be set in the input file. As mentioned before, considering a slight difference between Darcy (intrinsic) permeability and Forchheimer permeability, in many applications they can be used interchangeabely. Here, however, we distinguish between them, calculate and report them separately. +where $`K_f`$ is the Forchheimer permeability and $`\beta`$ is the Forchheimer coefficient. + +Although it is sometimes assumed for the sake of simplicity that $`K_f = K_D`$, they are not exactly the same properties. As the velocity increases, the flow regime in a porous medium shifts from the Darcy to the Forchheimer regime. This change in the flow regime means that in addition to viscous dissipation (the first term in the Forchheimer equation), we also need to consider inertia effects (the second term in the Forchheimer equation). Moreover, the shift in the flow regime, means a different viscous dissipation than what the same porous medium experiences a Darcy flow. In other words, moving from the Darcy to the Forchheimer regime establishes a new velocity field in the porous medium which causes the difference in viscous dissipation in addition to inertia effects. The first and second terms in the Forchheimer equation are correlated. For more detail, we refer to the study conducted by [Dukhan and Minjeur (2010)](http://dx.doi.org/10.1007/s10934-010-9393-1). + +In this example the end of the creeping flow (Darcy regime) is defined as the moment when the pressure drop calculated by the Dracy (intrinsic) permeability $`\Delta p_i = v_{\mathrm{Apparent},i} \mu l/ K_D`$ becomes less than 99% of the total pressure drop [Muljadi et al.](https://doi.org/10.1016/j.advwatres.2015.05.019). +To calculate upscaled properties, we rearrange Forchehimer's equation as: + +```math + \frac{\nabla p_i v_{\mathrm{Apparent},i}}{\mu} = \frac{1}{K_f} + \frac{\varrho v_{\mathrm{Apparent},i}}{\mu} \beta . +``` +Finding the linear regression line of $`\nabla p_i v_{\mathrm{Apparent},i}/\mu `$ versus $`\varrho v_{\mathrm{Apparent},i}/\mu `$ and using the intercept and the slope of the regression line, we can respectively calculate the Forchheimer permeability and coefficient. It should be noted that the calculation of the Forchheimer permeability can be affected by the pressure range applied to the porous medium as well as the number of sample points that are used in the regression process. We compute the Darcy (intrinsic) permeability as the maximum permeability of the sample of data of the system which happens when the pressure gradient is small enough such that inertial effects are negligible. To ensure such a small pressure gradient, we set the first pressure gradient to be applied as $'10 Pa/m'$. However, this value can be adapted using the keyword `Problem.MinimumPressureGradient` in params.input. it is recommended to use more than 10 pressure sample points which can be set in the input file. As mentioned before, considering a slight difference between Darcy (intrinsic) permeability and Forchheimer permeability, in many applications they can be used interchangeabely. Here, however, we distinguish between them, calculate and report them separately. The code documentation is structured as follows: + ## Upscaling helper struct (`upscalinghelper.hh`) This file contains the __upscaling helper struct__ which considers the volume flux leaving @@ -52,42 +63,46 @@ class UpscalingHelper public: ``` -### Set sample points to calculate intrinsic permeability and Forchheimer coefficient +### Set data points to calculate intrinsic permeability and Forchheimer coefficient This function first evaluates the mass flux leaving the network in the direction of the applied pressure gradient. -Afterwards, the mass flux is converted into an area specify volume flux which with its corresponding pressure gradient are stored as -sample points to be used in regression operation to find intrinsic permeability and Forchheimer coefficient +Afterwards, the mass flux is converted into an volume flux which is used to calculate the apparent velocity. +Then apparent permeability of the network is computed and stored for furthure calculations. ```cpp - template<class Problem> - void setSamplePoints(const Problem& problem, const Scalar totalMassFlux) + template <class Problem> + void setDataPoints(const Problem &problem, const Scalar totalMassFlux) { // get the domain side lengths from the problem auto sideLengths = problem.sideLengths(); + + // get the applied pressure gradient + const auto pressureGradient = problem.pressureGradient(); + const auto pressureDrop = pressureGradient * sideLengths[problem.direction()]; + + // get the fluid properties + const auto liquidDensity = problem.liquidDensity(); + const auto liquidDynamicViscosity = problem.liquidDynamicViscosity(); + // convert mass to volume flux - const auto volumeFlux = totalMassFlux / problem.liquidDensity();; + const auto volumeFlux = totalMassFlux / liquidDensity; + ; // calculate apparent velocity sideLengths[problem.direction()] = 1.0; const auto outflowArea = std::accumulate(sideLengths.begin(), sideLengths.end(), 1.0, std::multiplies<Scalar>()); - const auto vApparent= volumeFlux / outflowArea; - - // set sample point for permability calculation - const auto samplePointY = problem.pressureGradient() / problem.liquidDynamicViscosity() / vApparent; - const auto samplePointX = problem.liquidDensity() * vApparent / problem.liquidDynamicViscosity(); - - samplePointsX_[problem.direction()].push_back(samplePointX); - samplePointsY_[problem.direction()].push_back(samplePointY); + const auto vApparent = volumeFlux / outflowArea; // compute apparent permeability - const auto K = vApparent / problem.pressureGradient() * problem.liquidDynamicViscosity(); - - // calculate Forchheimer number (Forchheimer coefficient will be included later) - const auto forchheimerNumber = problem.liquidDensity() * vApparent / problem.liquidDynamicViscosity(); - - // store apparent permeability and corresponding Forchheimer number - apparentPermeability_[problem.direction()].push_back(K); - forchheimerNumber_[problem.direction()].push_back(forchheimerNumber); + const auto KApparent = vApparent / pressureGradient * liquidDynamicViscosity; + // calculate rho v / mu, called inertia to viscous ratio in the rest of the code + const auto inertiaToViscousRatio = liquidDensity * vApparent / liquidDynamicViscosity; + + // store the required data for further calculations + totalPressureDrop_[problem.direction()].push_back(pressureDrop); + apparentVelocity_[problem.direction()].push_back(vApparent); + apparentPermeability_[problem.direction()].push_back(KApparent); + inertiaToViscousRatio_[problem.direction()].push_back(inertiaToViscousRatio); } ``` @@ -97,14 +112,34 @@ and reports them. It also plot the apparent permeability of the porous medium ve simulation. ```cpp - void calculateUpscaledProperties(bool isCreepingFlow) + template <class Problem> + void calculateUpscaledProperties(const Problem &problem, bool isCreepingFlow) { - for (int dirIdx = 0; dirIdx < 3; dirIdx++) + const auto sideLengths = problem.sideLengths(); + const auto liquidDynamicViscosity = problem.liquidDynamicViscosity(); + + for (const auto dirIdx : directions_) { // determine Darcy permeability as the maximum permeability of the domain darcyPermeability_[dirIdx] = *max_element(apparentPermeability_[dirIdx].begin(), apparentPermeability_[dirIdx].end()); if (!isCreepingFlow) { + for (int i = 0; i < totalPressureDrop_[dirIdx].size(); i++) + { + // calculate the Darcy pressure drop. + const Scalar darcyPressureDrop = liquidDynamicViscosity * apparentVelocity_[dirIdx][i] * sideLengths[dirIdx] / darcyPermeability_[dirIdx]; + + // calculate the ratio of Dracy to total pressure drop + const Scalar pressureDropRatio = darcyPressureDrop / totalPressureDrop_[dirIdx][i]; + + // set sample points for upscaling of Forchheimer parameters. + // first, check the permability ratio to see if the flow regime is Forchheimer. + if (pressureDropRatio < 0.99) + { + samplePointsX_[dirIdx].push_back(inertiaToViscousRatio_[dirIdx][i]); + samplePointsY_[dirIdx].push_back(1 / apparentPermeability_[dirIdx][i]); + } + } // determine regression line and accordingly the Forchheimer permeability and the Forchheimer coefficient const auto [intercept, slope] = linearRegression(samplePointsX_[dirIdx], samplePointsY_[dirIdx]); forchheimerPermeability_[dirIdx] = 1.0 / intercept; @@ -140,27 +175,11 @@ We determine the domain side length by using the bounding box of the network ```cpp void plot() { - // using gnuplot interface - Dumux::GnuplotInterface<Scalar> gnuplot(true); - gnuplot.setOpenPlotWindow(true); - std::string title{}, option{}; - for (int dirIdx = 0; dirIdx < 3; dirIdx++) - { - // add the data in each direction for plot - gnuplot.addFileToPlot(dirName_[dirIdx] + "-dir.dat"); - // set the properties of lines to be plotted - option += Fmt::format("set linetype {0} linecolor {0} linewidth 7\n", dirIdx+1); - // report the darcy permeability in each direction as the title of the plot - title += Fmt::format("{}-permeability= {:.3e} m^2 ", dirName_[dirIdx], darcyPermeability_[dirIdx]); - } - option +="set title \"" + title + "\"\n"; - option += "set logscale x""\n"; - option += "set format x '10^{%L}'""\n"; - - gnuplot.setXlabel("Forchheimer Number [-]"); - gnuplot.setYlabel("Apparent permeability / Darcy permeability [-]"); - gnuplot.setOption(option); - gnuplot.plot("permeability_ratio_versus_forchheimer_number"); + // plot permeability ratio vs. Forchheimer number + plotPermeabilityratioVsForchheimerNumber_(); + + // plot inverse of apparent permability vs. rho v / mu + plotInversePrmeabilityVsInertiaToViscousRatio_(); } ``` @@ -170,21 +189,11 @@ We determine the domain side length by using the bounding box of the network ```cpp void writePlotDataToFile(std::size_t dirIdx) { - // Open a logfile - std::ofstream logfile(dirName_[dirIdx]+"-dir.dat"); + // write permeability ratio vs. Forchheimer number + writePermeabilityratioVsForchheimerNumber_(dirIdx); - // Save the data needed to be plotted in logfile - for (int i = 0; i < apparentPermeability_[dirIdx].size(); i++) - { - // Include characteristics length, sqrt(permeability) to Reynolds number calculation - const Scalar forchheimerNumber - = darcyPermeability_[dirIdx] * forchheimerCoefficient_[dirIdx] * forchheimerNumber_[dirIdx][i]; - // Ratio between apparrent permeability and darcy permeability - const Scalar permeabilityRatio - = apparentPermeability_[dirIdx][i] / darcyPermeability_[dirIdx]; - - logfile << forchheimerNumber<< " " << permeabilityRatio << std::endl; - } + // write inverse of apparent permability vs. rho v / mu + writeInversePrmeabilityVsInertiaToViscousRatio_(dirIdx); } ``` @@ -195,7 +204,7 @@ We determine the domain side length by using the bounding box of the network void report(bool isCreepingFlow) { // Report the results for each direction - for (int dirIdx = 0; dirIdx < 3; dirIdx++) + for (const auto dirIdx : directions_) { std::cout << Fmt::format("\n{:#>{}}\n\n", "", 40) << Fmt::format("{}-direction:\n", dirName_[dirIdx]) @@ -219,7 +228,7 @@ We determine the domain side length by using the bounding box of the network ```cpp void compareWithReference(std::vector<Scalar> referenceData) { - for (int dirIdx = 0; dirIdx < 3; dirIdx++) + for (const auto dirIdx : directions_) { const auto K = darcyPermeability_[dirIdx]; static const Scalar eps = getParam<Scalar>("Problem.TestEpsilon", 1e-3); @@ -234,16 +243,151 @@ We determine the domain side length by using the bounding box of the network ``` +### Set the directions that need to be considered + + ```cpp + void setDirections(std::vector<std::size_t> directions) + { + directions_ = directions; + } + // [[codeblock]] + private: + // ### Save the relevant data for plot of permeability ratio vs. Forchheimer number + // [[codeblock]] + void writePermeabilityratioVsForchheimerNumber_(std::size_t dirIdx) + { + // open a logfile + std::ofstream logfile(dirName_[dirIdx] + "-dir-PermeabilityratioVsForchheimerNumber.dat"); + + // save the data needed to be plotted in logfile + for (int i = 0; i < apparentPermeability_[dirIdx].size(); i++) + { + // compute the Forchheimer number + const Scalar forchheimerNumber = darcyPermeability_[dirIdx] * forchheimerCoefficient_[dirIdx] * inertiaToViscousRatio_[dirIdx][i]; + // ratio between apparrent permeability and darcy permeability + const Scalar permeabilityRatio = apparentPermeability_[dirIdx][i] / darcyPermeability_[dirIdx]; + + logfile << forchheimerNumber << " " << permeabilityRatio << std::endl; + } + } +``` + +### Save the relevant data for plot of inverse of apparent permability vs. rho v / mu + +```cpp + void writeInversePrmeabilityVsInertiaToViscousRatio_(std::size_t dirIdx) + { + // open a logfile and write inverese of apparent permeability given by the model vs. inertial to viscous ratio (rho v / mu) + std::ofstream logfile(dirName_[dirIdx] + "-dir-InversePrmeabilityVsInertiaToViscousRatio.dat"); + + // save the data needed to be plotted in logfile + for (int i = 0; i < apparentPermeability_[dirIdx].size(); i++) + { + const Scalar inertiaToViscousRatio = inertiaToViscousRatio_[dirIdx][i]; + const Scalar inverseAppPermeability = 1 / apparentPermeability_[dirIdx][i]; + + // compute inverse of apparent permeability using the Forchheimer permeability and coefficient + const Scalar inverseAppPermeabilityForchheimer = 1 / forchheimerPermeability_[dirIdx] + inertiaToViscousRatio * forchheimerCoefficient_[dirIdx]; + + logfile << inertiaToViscousRatio << " " << 1e-12 * inverseAppPermeability << " " << 1e-12 * inverseAppPermeabilityForchheimer << std::endl; + } + } +``` + + +### Plot permeability ratio vs. Forchheimer number using Gnuplot + + +```cpp + void plotPermeabilityratioVsForchheimerNumber_() + { + // using gnuplot interface + Dumux::GnuplotInterface<Scalar> gnuplot(true); + gnuplot.setOpenPlotWindow(true); + + for (const auto dirIdx : directions_) + { + gnuplot.resetAll(); + std::string title{}, option{}; + + // add the data in each direction for plot + gnuplot.addFileToPlot(dirName_[dirIdx] + "-dir-PermeabilityratioVsForchheimerNumber.dat", "notitle with lines"); + // set the properties of lines to be plotted + option += "set linetype 1 linecolor 1 linewidth 7\n"; + // report the darcy permeability in each direction as the title of the plot + title += Fmt::format("{}-direction, Darcy permeability= {:.3e} m^2 ", dirName_[dirIdx], darcyPermeability_[dirIdx]); + + option += "set title \"" + title + "\"\n"; + option += "set logscale x""\n"; + option += "set format x '10^{%L}'""\n"; + + gnuplot.setXlabel("Forchheimer Number [-]"); + gnuplot.setYlabel("Apparent permeability / Darcy permeability [-]"); + gnuplot.setOption(option); + gnuplot.plot("permeability_ratio_versus_forchheimer_number"); + } + } +``` + + +### Plot inverse of apparent permability vs. rho v / mu using Gnuplot + + +```cpp + void plotInversePrmeabilityVsInertiaToViscousRatio_() + { + // using gnuplot interface + Dumux::GnuplotInterface<Scalar> gnuplot(true); + gnuplot.setOpenPlotWindow(true); + + for (const auto dirIdx : directions_) + { + gnuplot.resetAll(); + std::string title{}, option{}; + std::string legend0 = "u 1:2 title \"Network model\" with lines"; + // add the data in each direction for plot, first set of data + gnuplot.addFileToPlot(dirName_[dirIdx] + "-dir-InversePrmeabilityVsInertiaToViscousRatio.dat", legend0); + + // set the properties of lines to be plotted + option += "set linetype 1 linecolor 1 linewidth 5\n"; + + std::string legend1 = "u 1:3 title \"Forchheimer equation\" with lines"; + // add the data in each direction for plot, second set of data + gnuplot.addFileToPlot(dirName_[dirIdx] + "-dir-InversePrmeabilityVsInertiaToViscousRatio.dat", legend1); + + // set the properties of lines to be plotted + option += "set linetype 2 linecolor 2 linewidth 5\n"; + + // report the darcy permeability in each direction as the title of the plot + title += Fmt::format("{}-direction, Darcy permeability= {:.3e} m^2 ", dirName_[dirIdx], darcyPermeability_[dirIdx]); + + option += "set title \"" + title + "\"\n"; + option += "set logscale x""\n"; + option += "set format x '10^{%L}'""\n"; + + gnuplot.setXlabel("{/Symbol r} v / {/Symbol m} [1/m]"); + gnuplot.setYlabel("1/ Apparent permeability [1/m^2] x 1e12"); + gnuplot.setOption(option); + gnuplot.plot("inverse_apppermeability_versus_rhovmu-1"); + } + } +``` + + +```cpp std::array<std::vector<Scalar>, 3> samplePointsX_; std::array<std::vector<Scalar>, 3> samplePointsY_; + std::array<std::vector<Scalar>, 3>totalPressureDrop_; + std::array<std::vector<Scalar>, 3> apparentVelocity_; std::array<std::vector<Scalar>, 3> apparentPermeability_; - std::array<std::vector<Scalar>, 3> forchheimerNumber_; + std::array<std::vector<Scalar>, 3> inertiaToViscousRatio_; std::array<Scalar, 3> darcyPermeability_; std::array<Scalar, 3> forchheimerPermeability_; std::array<Scalar, 3> forchheimerCoefficient_; const std::array<std::string, 3> dirName_ = {"X", "Y", "Z"}; + std::vector<std::size_t> directions_; }; } // end namespace Dumux diff --git a/examples/porenetwork_upscaling/doc/upscalinghelper_intro.md b/examples/porenetwork_upscaling/doc/upscalinghelper_intro.md index 55d485f057..76c143622b 100644 --- a/examples/porenetwork_upscaling/doc/upscalinghelper_intro.md +++ b/examples/porenetwork_upscaling/doc/upscalinghelper_intro.md @@ -1,4 +1,4 @@ -The upscaling helper evaluates the pore-network simulation results for each direction $`i`$ and calculates the upscaled properties in this direction. Firstly, it evaluates the the Apparent velocity as: +The upscaling helper evaluates the pore-network simulation results for each direction $`i`$ and calculates the upscaled properties in this direction. Firstly, it evaluates the apparent velocity as: ```math v_{\mathrm{Apparent},i} = \frac{q_{\mathrm{mass,tot},i} / \varrho}{A_{\mathrm{tot},i}} @@ -8,14 +8,24 @@ where $`q_{\mathrm{mass,tot},i}`$ is the total mass flow leaving the network ove $`A_{\mathrm{tot},i}`$ in $`i`$-direction. $`\varrho `$ is the fluid mass density. Then, we calculate upscaled permeability as: ```math - K_i = v_{\mathrm{Apparent},i} / \nabla p_i ~ \mu. + K_D = v_{\mathrm{Apparent},i} ~ \mu / \nabla p_i. ``` -$`\nabla p_i`$ is a given pressure gradient in $`i`$-direction and $`\mu`$ the fluid dynamic viscosity. In creeping flow simulation, calculated permeability, $`K_i`$, is Darcy (intrinsic) permeability, $`K_D`$ of the system. +$`\nabla p_i`$ is a given pressure gradient in $`i`$-direction and $`\mu`$ the fluid dynamic viscosity. In the creeping flow simulation, the calculated permeability, $`K_D`$, is the Darcy (intrinsic) permeability of the system. To simulate non-creeping flow, we use Forchheimer's equation to upscale the properties. ```math \nabla p_i = \frac{\mu}{K_f} v_{\mathrm{Apparent},i} + \varrho \beta v_{\mathrm{Apparent},i}^2, ``` -where $`K_f`$ is Forchheimer permeability and $`\beta`$ is Forchheimer coefficient. Although some researchers for the sake of simplicity assumes that $`K_f = K_i`$, they are not exactly the same properties. As the velocity increases, the flow regime in a porous medium shifts from Darcy to Forchheimer regime. This change in the flow regime causes that the pressure drop ,which in Darcy flow just includes the viscous dissipation, becomes a combination of both viscous dissipation (the first term in the Forchheimer equation) and the inertial term (the second term in Forchheimer equation). Considering the shift in flow regime, a porous medium having a Forchheimer flow regime shows a different viscous dissipation than when the same porous medium experiences a Darcy fllow. In other words, moving from Darcy to Forchheimr regime establishes a new velocity field in the porous medium which needs a new viscous dissipation and also an inertial term. Furthermore, the first and second terms in Forchheimer equation have strong influence on each other. For more detail, We refer to the study conducted by [Dukhan and Minjeur (2010)](https://link.springer.com/article/10.1007/s10934-010-9393-1). To calculate upscaled properties, we rearrange Forchehimer's equation and find the linear regression line of $`\nabla p_i v_{\mathrm{Apparent},i}/\mu `$ versus $`\varrho v_{\mathrm{Apparent},i}/\mu `$. Using the intercept and the slope of the regreesion line, we can respectively calculate Forchheimr permeability and coefficient. It should be noted that the calculation of the Forchheimer permeability is highly affected by the pressure range applied to the porous medium as well as the number of sample points that are used in the regression process. We compute Darcy (intrinsic) permeability as the maximum permeability of the sample of data of the system which happens when pressure gradient is small enough such that inertial effects are negligible. To ensure such a small pressure gradient, it is recommended to use more than 10 pressure smaple points which can be set in the input file. As mentioned before, considering a slight difference between Darcy (intrinsic) permeability and Forchheimer permeability, in many applications they can be used interchangeabely. Here, however, we distinguish between them, calculate and report them separately. +where $`K_f`$ is the Forchheimer permeability and $`\beta`$ is the Forchheimer coefficient. -The code documentation is structured as follows: \ No newline at end of file +Although it is sometimes assumed for the sake of simplicity that $`K_f = K_D`$, they are not exactly the same properties. As the velocity increases, the flow regime in a porous medium shifts from the Darcy to the Forchheimer regime. This change in the flow regime means that in addition to viscous dissipation (the first term in the Forchheimer equation), we also need to consider inertia effects (the second term in the Forchheimer equation). Moreover, the shift in the flow regime, means a different viscous dissipation than what the same porous medium experiences a Darcy flow. In other words, moving from the Darcy to the Forchheimer regime establishes a new velocity field in the porous medium which causes the difference in viscous dissipation in addition to inertia effects. The first and second terms in the Forchheimer equation are correlated. For more detail, we refer to the study conducted by [Dukhan and Minjeur (2010)](http://dx.doi.org/10.1007/s10934-010-9393-1). + +In this example the end of the creeping flow (Darcy regime) is defined as the moment when the pressure drop calculated by the Dracy (intrinsic) permeability $`\Delta p_i = v_{\mathrm{Apparent},i} \mu l/ K_D`$ becomes less than 99% of the total pressure drop [Muljadi et al.](https://doi.org/10.1016/j.advwatres.2015.05.019). +To calculate upscaled properties, we rearrange Forchehimer's equation as: + +```math + \frac{\nabla p_i v_{\mathrm{Apparent},i}}{\mu} = \frac{1}{K_f} + \frac{\varrho v_{\mathrm{Apparent},i}}{\mu} \beta . +``` +Finding the linear regression line of $`\nabla p_i v_{\mathrm{Apparent},i}/\mu `$ versus $`\varrho v_{\mathrm{Apparent},i}/\mu `$ and using the intercept and the slope of the regression line, we can respectively calculate the Forchheimer permeability and coefficient. It should be noted that the calculation of the Forchheimer permeability can be affected by the pressure range applied to the porous medium as well as the number of sample points that are used in the regression process. We compute the Darcy (intrinsic) permeability as the maximum permeability of the sample of data of the system which happens when the pressure gradient is small enough such that inertial effects are negligible. To ensure such a small pressure gradient, we set the first pressure gradient to be applied as $'10 Pa/m'$. However, this value can be adapted using the keyword `Problem.MinimumPressureGradient` in params.input. it is recommended to use more than 10 pressure sample points which can be set in the input file. As mentioned before, considering a slight difference between Darcy (intrinsic) permeability and Forchheimer permeability, in many applications they can be used interchangeabely. Here, however, we distinguish between them, calculate and report them separately. + +The code documentation is structured as follows: diff --git a/examples/porenetwork_upscaling/img/inverse_apppermeability_versus_rhovmu-1.png b/examples/porenetwork_upscaling/img/inverse_apppermeability_versus_rhovmu-1.png new file mode 100644 index 0000000000000000000000000000000000000000..470e2935de64e0e2b060071ac0457abadbd322e5 GIT binary patch literal 34731 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 literal 0 HcmV?d00001 diff --git a/examples/porenetwork_upscaling/img/permeability_ratio_versus_forchheimer_number.png b/examples/porenetwork_upscaling/img/permeability_ratio_versus_forchheimer_number.png index b02a2ae43446fd7bad0aec1784e31e2810393406..f597a47586dd9eb89ac82dc564975a6840f7d0cf 100644 GIT binary patch literal 31909 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%0Am;q^) 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 NC#@uvB58c<zX5iRb(R1C literal 42823 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 diff --git a/examples/porenetwork_upscaling/main.cc b/examples/porenetwork_upscaling/main.cc index 91e25974e8..540109b475 100644 --- a/examples/porenetwork_upscaling/main.cc +++ b/examples/porenetwork_upscaling/main.cc @@ -30,6 +30,7 @@ #include <algorithm> #include <dune/common/float_cmp.hh> // for floating point comparison +#include <dune/common/exceptions.hh> #include <dumux/common/properties.hh> // for GetPropType #include <dumux/common/parameters.hh> // for getParam @@ -54,8 +55,8 @@ // // ### The driver function // -// It depends on the template argument `TypeTag` if we run the example assuming -// a creeping flow regime or not. This is decided with the parameter +// The template argument `TypeTag` determines if we run the example assuming +// a creeping flow regime or not. Which regime is selected is set with the parameter // `Problem.AssumeCreepingFlow` in the input file. namespace Dumux { @@ -116,9 +117,9 @@ void runExample() VtkOutputFields::initOutputModule(vtkWriter); // specify the field type explicitly since it may not be possible // to deduce this from the vector size in a pore network - vtkWriter.addField(gridGeometry->poreVolume(), "poreVolume", VtkWriter::FieldType::vertex); - vtkWriter.addField(gridGeometry->throatShapeFactor(), "throatShapeFactor", VtkWriter::FieldType::element); - vtkWriter.addField(gridGeometry->throatCrossSectionalArea(), "throatCrossSectionalArea", VtkWriter::FieldType::element); + vtkWriter.addField(gridGeometry->poreVolume(), "poreVolume", Vtk::FieldType::vertex); + vtkWriter.addField(gridGeometry->throatShapeFactor(), "throatShapeFactor", Vtk::FieldType::element); + vtkWriter.addField(gridGeometry->throatCrossSectionalArea(), "throatCrossSectionalArea", Vtk::FieldType::element); // ### Prepare the upscaling procedure. // Set up a helper class to determine the total mass flux leaving the network @@ -155,7 +156,7 @@ void runExample() const Scalar maxPressureGradient = getParam<Scalar>("Problem.MaximumPressureGradient", 1e10); if (!(minPressureGradient < maxPressureGradient)) - throw std::runtime_error("maximum pressure gradient must be greater than minimum pressure gradient"); + DUNE_THROW(Dune::InvalidStateException, "Maximum pressure gradient must be greater than minimum pressure gradient"); const int numberOfSamples = getParam<int>("Problem.NumberOfPressureGradients", 1); // [[/codeblock]] diff --git a/examples/porenetwork_upscaling/params.input b/examples/porenetwork_upscaling/params.input index 19cdb8e5eb..12261739b5 100644 --- a/examples/porenetwork_upscaling/params.input +++ b/examples/porenetwork_upscaling/params.input @@ -1,11 +1,10 @@ [Problem] EnableGravity = 0 # disable gravity Name = upscaling_pnm -MinimumPressureGradient = 1e5 -MaximumPressureGradient = 1e10 -NumberOfPressureGradients = 5 # the number of sample points for regression process -Directions = 0 # the directions to be plotet 0 1 2 -Epsilon = 1e-3 +MaximumPressureGradient = 1e10 #Pa/m +NumberOfPressureGradients = 10 # the number of sample points for regression process +Directions = 0 # the directions to be plotted 0 1 2 +Epsilon = 1e-13 AssumeCreepingFlow = false ReferencePermeability = 3.326e-12 1.394e-12 7.449e-13 diff --git a/examples/porenetwork_upscaling/problem.hh b/examples/porenetwork_upscaling/problem.hh index f1e55f1b01..2b028111c5 100644 --- a/examples/porenetwork_upscaling/problem.hh +++ b/examples/porenetwork_upscaling/problem.hh @@ -78,19 +78,15 @@ public: // [[codeblock]] Scalar temperature() const { return 283.15; } - // [[codeblock]] + // [[/codeblock]] - // #### Pressure gradient // Set the pressure gradient to be applied to the network - // [[codeblock]] void setPressureGradient(Scalar pressureGradient) { pressureGradient_ = pressureGradient; } - // [[codeblock]] // #### Boundary conditions // This function is used to define the __type of boundary conditions__ used depending on the location. - // Here, we use Dirichlet boundary conditions (fixed pressures) at the inlet and outlet and Neumann - // boundary conditions at all remaining boundaries. Note that the PNM does not support Neumann boundaries. + // Here, we use Dirichlet boundary conditions (fixed pressures) at the inlet and outlet. Note that the PNM does not support Neumann boundaries. // To specify a certain mass flux on a boundary, we would have to use a source term on the boundary pores (which is not done in this example). // [[codeblock]] BoundaryTypes boundaryTypes(const Element &element, const SubControlVolume& scv) const @@ -161,8 +157,9 @@ public: // Return the applied pressure gradient. Scalar pressureGradient() const { return pressureGradient_; } - - + // [[/codeblock]] + // [[/details]] + // // Return the label of inlet pores assuming a previously set direction. int inletPoreLabel() const { @@ -204,7 +201,5 @@ private: }; } // end namespace Dumux -// [[/codeblock]] -// [[/details]] // [[/content]] #endif diff --git a/examples/porenetwork_upscaling/properties.hh b/examples/porenetwork_upscaling/properties.hh index d33fdb985b..0aa7ad8fe1 100644 --- a/examples/porenetwork_upscaling/properties.hh +++ b/examples/porenetwork_upscaling/properties.hh @@ -34,6 +34,13 @@ // type tag, which we want to modify or for which no meaningful default can be set. #include <dumux/porenetwork/1p/model.hh>// for `TTag::PNMOneP` +// The class that contains a collection of single-phase flow throat transmissibilities +// among them the transmisibility model to be used can be specified in AdvectionType class +#include <dumux/material/fluidmatrixinteractions/porenetwork/throat/transmissibility1p.hh> + +// The class that provides specializations for both creeping and non-creeping advection types. +#include <dumux/flux/porenetwork/advection.hh> + // The local residual for incompressible flow is included. // The one-phase flow model (included above) uses a default implementation of the // local residual for single-phase flow. However, in this example we are using an @@ -53,7 +60,8 @@ // // ### `TypeTag` definition // Two `TypeTag` for our simulation are defined, one for creeping flow and another for non-creeping flow, -// which inherit properties from the single-phase pore network model. +// which inherit properties from the single-phase pore network model. The non-creeping flow inherits +// all properties from the creeping flow simulation but sets an own property for the `AdvectionType`. namespace Dumux::Properties { namespace TTag { struct PNMUpscalingCreepingFlow { using InheritsFrom = std::tuple<PNMOneP>; }; @@ -95,7 +103,7 @@ public: using type = PoreNetwork::CreepingFlow<Scalar, TransmissibilityLaw>; }; -//! The advection type for non-creeping flow (includes model for intertia effects) +//! The advection type for non-creeping flow (includes model for inertia effects) template<class TypeTag> struct AdvectionType<TypeTag, TTag::PNMUpscalingNonCreepingFlow> { diff --git a/examples/porenetwork_upscaling/spatialparams.hh b/examples/porenetwork_upscaling/spatialparams.hh index d4c6c7c256..4faa56f345 100644 --- a/examples/porenetwork_upscaling/spatialparams.hh +++ b/examples/porenetwork_upscaling/spatialparams.hh @@ -102,14 +102,14 @@ public: return M_PI * r * r; } - // dimensionless kinetic-energy coeffiecient which for non-creeping flow + // dimensionless kinetic-energy coefficient which for non-creeping flow template<class ElementSolutionVector> Scalar kineticEnergyCoefficient(const Element& element, const SubControlVolume& scv, const ElementSolutionVector& elemSol) const { return 1.0; } - // dimensionless momentum coeffiecient which for non-creeping flow + // dimensionless momentum coefficient which for non-creeping flow template<class ElementSolutionVector> Scalar momentumCoefficient(const Element& element, const SubControlVolume& scv, diff --git a/examples/porenetwork_upscaling/upscalinghelper.hh b/examples/porenetwork_upscaling/upscalinghelper.hh index 1e4a1c069e..b5beebae82 100644 --- a/examples/porenetwork_upscaling/upscalinghelper.hh +++ b/examples/porenetwork_upscaling/upscalinghelper.hh @@ -103,12 +103,9 @@ public: // calculate the Darcy pressure drop. const Scalar darcyPressureDrop = liquidDynamicViscosity * apparentVelocity_[dirIdx][i] * sideLengths[dirIdx] / darcyPermeability_[dirIdx]; - // claculate the ratio of Dracy to total pressure drop - + // calculate the ratio of Dracy to total pressure drop const Scalar pressureDropRatio = darcyPressureDrop / totalPressureDrop_[dirIdx][i]; - std::cout<<std::endl<<" the ratio "<<pressureDropRatio<<std::endl; - // set sample points for upscaling of Forchheimer parameters. // first, check the permability ratio to see if the flow regime is Forchheimer. if (pressureDropRatio < 0.99) @@ -285,6 +282,7 @@ private: option += "set title \"" + title + "\"\n"; option += "set logscale x""\n"; + option += "set format x '10^{%L}'""\n"; gnuplot.setXlabel("Forchheimer Number [-]"); gnuplot.setYlabel("Apparent permeability / Darcy permeability [-]"); @@ -326,11 +324,12 @@ private: option += "set title \"" + title + "\"\n"; option += "set logscale x""\n"; + option += "set format x '10^{%L}'""\n"; - gnuplot.setXlabel("{/Symbol r} u / {/Symbol m} [1/m]"); + gnuplot.setXlabel("{/Symbol r} v / {/Symbol m} [1/m]"); gnuplot.setYlabel("1/ Apparent permeability [1/m^2] x 1e12"); gnuplot.setOption(option); - gnuplot.plot("inverse_apppermeability_versus_rhoumu"); + gnuplot.plot("inverse_apppermeability_versus_rhovmu-1"); } } // [[/codeblock]] diff --git a/test/references/example_porenetwork_upscaling_noncreeping_flow_X-dir_InversePrmeabilityVsInertiaToViscousRatio.dat b/test/references/example_porenetwork_upscaling_noncreeping_flow_X-dir_InversePrmeabilityVsInertiaToViscousRatio.dat new file mode 100644 index 0000000000..b4d27680fa --- /dev/null +++ b/test/references/example_porenetwork_upscaling_noncreeping_flow_X-dir_InversePrmeabilityVsInertiaToViscousRatio.dat @@ -0,0 +1,10 @@ +0.0332584 0.300676 0.31292 +11107 0.302029 0.31387 +29965.6 0.30431 0.315483 +79894.3 0.310254 0.319753 +207384 0.324902 0.330657 +512009 0.357721 0.356711 +1.17636e+06 0.423229 0.413531 +2.49648e+06 0.542104 0.526439 +4.93037e+06 0.74615 0.734604 +9.19349e+06 1.08773 1.09922 diff --git a/test/references/example_porenetwork_upscaling_noncreeping_flow_X-dir_PermeabilityratioVsForchheimerNumber.dat b/test/references/example_porenetwork_upscaling_noncreeping_flow_X-dir_PermeabilityratioVsForchheimerNumber.dat new file mode 100644 index 0000000000..e071f632ec --- /dev/null +++ b/test/references/example_porenetwork_upscaling_noncreeping_flow_X-dir_PermeabilityratioVsForchheimerNumber.dat @@ -0,0 +1,10 @@ +9.46045e-09 1 +0.00315941 0.995519 +0.00852378 0.988056 +0.0227261 0.969127 +0.0589909 0.925434 +0.145642 0.84053 +0.334619 0.710432 +0.710131 0.554645 +1.40246 0.402969 +2.61511 0.276426 diff --git a/test/references/example_porenetwork_upscaling_noncreeping_flow_X_direction-reference.dat b/test/references/example_porenetwork_upscaling_noncreeping_flow_X_direction-reference.dat deleted file mode 100644 index 344a5d2d0b..0000000000 --- a/test/references/example_porenetwork_upscaling_noncreeping_flow_X_direction-reference.dat +++ /dev/null @@ -1,15 +0,0 @@ -7.97017e-06 1 -2.16647e-05 0.999981 -5.88878e-05 0.999928 -0.000160051 0.999786 -0.000434895 0.999399 -0.00118093 0.99835 -0.00320102 0.99553 -0.00863605 0.988068 -0.0230255 0.969138 -0.0597679 0.925444 -0.147561 0.84054 -0.339027 0.71044 -0.719485 0.554652 -1.42093 0.402974 -2.64956 0.276429 diff --git a/test/references/example_porenetwork_upscaling_noncreeping_flow_Y_direction-reference.dat b/test/references/example_porenetwork_upscaling_noncreeping_flow_Y_direction-reference.dat deleted file mode 100644 index 82e0d47e0c..0000000000 --- a/test/references/example_porenetwork_upscaling_noncreeping_flow_Y_direction-reference.dat +++ /dev/null @@ -1,15 +0,0 @@ -4.20828e-06 1 -1.14392e-05 0.999989 -3.1094e-05 0.999961 -8.45157e-05 0.999882 -0.000229688 0.999669 -0.000623997 0.999091 -0.00169355 0.99753 -0.00458429 0.993359 -0.0123253 0.982509 -0.0326009 0.956037 -0.0833465 0.899161 -0.201292 0.798881 -0.451368 0.65901 -0.936519 0.503018 -1.81435 0.358504 diff --git a/test/references/example_porenetwork_upscaling_noncreeping_flow_Z_direction-reference.dat b/test/references/example_porenetwork_upscaling_noncreeping_flow_Z_direction-reference.dat deleted file mode 100644 index 6429c3f700..0000000000 --- a/test/references/example_porenetwork_upscaling_noncreeping_flow_Z_direction-reference.dat +++ /dev/null @@ -1,15 +0,0 @@ -2.41283e-06 1 -6.55871e-06 0.999995 -1.78282e-05 0.99998 -4.846e-05 0.99994 -0.000131714 0.999832 -0.00035793 0.999538 -0.00097218 0.998743 -0.00263698 0.996597 -0.00712702 0.990892 -0.0190865 0.976227 -0.0500292 0.941354 -0.12565 0.869755 -0.295092 0.751446 -0.639109 0.598716 -1.28049 0.441295 -- GitLab