1 Introduction

In the phenomena of flow-through porous media, the geometrical characterization of the pore space on a representative elementary volume (REV) relevant to determine flow behavior remains a fundamental open question of great practical implications. Transport phenomena in porous media are involved in a wide range of applications, from biophysics (Khaled and Vafai 2003) to petroleum engineering (Parker 1989), and include porous structures of extreme diversity. The search for a set of geometrical parameters that fully characterize a porous structure in order to obtain constitutive relations for the transport properties for a wide range of applications seems to be a formidable task.

Originally porous structure was thought to be sufficiently parameterized by its porosity \(\phi\), pore size d and tortuosity \(\tau\), and most commonly used approximate relations for physical properties such as permeability, formation factor, electric tortuosity or capillary pressure involve these parameters (Bear 1988). However, dependence on \(\phi\), d, and \(\tau\) alone has proved to be insufficient given the diversity of porous structures, and the predictive power of such relations is very limited. During this century, the inclusion of Minkowski functionals (porosity is one of them) in porous geometry characterization has been explored with varying degrees of success (Armstrong et al. 2019; Mecke 2008; Slotte et al. 2020; Vogel et al. 2010).

To determine flow properties on porous media, specially for the permeability dependence on geometrical characteristics of porous structures, researchers have employed computational fluid dynamics simulations for the past decades. For the simplicity involved in including complex geometries and parallelization, the lattice-Boltzmann method is a common choice for flow simulation in porous media (see most of the cited references in the rest of this paragraph). To perform flow simulations, it is necessary to determine the geometries of the flow domain, the pore space, and to this end one can either reconstruct real porous material or artificially create such intricate domains. Information from real media samples is commonly obtained through X-ray tomography, from which a three-dimensional direct measurement of the pores space can be obtained and used to study the flow properties (Vogel et al. 2010; Mahmoodlu et al. 2016; Santos et al. 2022). Artificially created porous geometries for flow studies include the use of networks of tubes (Blunt and King 1990), fractal geometries (Lenormand 1990), and volume tessellation techniques (Xiao and Yin 2016).

In this work, we take advantage of the known feature of the solutions of some reaction–-diffusion equations to mimic patterns observed in nature, to generate geometries that resemble those of porous media (Halatek and Frey 2018). We choose to work with the Gray–Scott system of equations to produce the basis from which families of model porous geometries were generated. Geometrical parameters, including the Minkowski functional and the average pore diameter, were computed for the set of model porous structures. Lattice-Boltzmann simulations were performed to compute the flow through the created geometries and to study the relation of the volumetric flux to the pressure gradient, and determine any possible relation with the geometric parameters.

The manuscript is organized as follows: first in Sect. 2, we do a brief introduction of the porous geometry parameters that are commonly used to characterize it. In Sect. 3, a detailed description of the porous geometry generation is presented. Section 4 presents the flow simulation details. Results for permeability as a function of the Minkowski functionals and the average pore diameter are found in Sect. 5, and similar results for the Forchheimer coefficient can be found in Sect. 6. Finally, in Sect. 7 a summary and conclusion is presented.

2 Porous Geometry Characterization

Let us start with a brief review of Minkowski functionals. A porous geometry can be thought as a d-dimensional compact object X embedded in a d-dimensional Euclidean space \(\Omega\). Hadwiger’s characterization theorem (Klain 1995) demonstrates that any additive, motion invariant, and conditionally continuous functional on a finite union of compact convex sets in Euclidean space can be written as a linear combination of \(d+1\) geometric measures known as intrinsic volumes or Minkowski functionals (MF) (Mecke 2008). In \(d=3\) , the four Minkowski functionals are defined as:

$$\begin{aligned} M_0(X)&= \int _X \textrm{d}v \, , \end{aligned}$$
(1)
$$\begin{aligned} M_1(X)&= \int _{\delta X} \textrm{d}s \,, \end{aligned}$$
(2)
$$\begin{aligned} M_2(X)&= \int _{\delta X} \left[ \frac{1}{r_1}+ \frac{1}{r_2} \right] \textrm{d}s \, , \end{aligned}$$
(3)
$$\begin{aligned} M_3(X)&= \int _{\delta X} \frac{\textrm{d}s}{r_1 r_2} =2 \pi \chi (\delta X) =4 \pi \chi (X) \end{aligned}$$
(4)

with dv the volume element on \(\Omega\), ds the surface element on X with principal radii of curvature given by \(r_1\) and \(r_2\), \(\delta X\) the boundary of X, \(\chi \left( \delta X \right)\) the Euler characteristic of the bounding surface, and \(\chi (X)\) the Euler characteristic of the solid object (Ohser and Mücklich 2000). The MF comprises a set of measurements in various dimensions: \(M_0\) corresponds to the volume, \(M_1\) to the surface area, \(M_2\) to the mean curvature, and \(\chi\) is a topological quantity (dimensionless) related to the number of isolated objects (N), redundant loops (O), and cavities (C) through \(\chi (X) =N-O + C\). Permeabilities are not an additive quantity, and consequently, they are not covered by Hadwiger’s theorem. However, if they happen to be functions of a set of additive measures, then they will also be a function of the MF. Assuming the main dependence of the permeabilities come from their MF dependence, we will make use of them as a way to parametrize any given porous geometry. We expect the functional dependence of the permeability to be independent of the scale of the material sample so we will work with the volume-normalized MF defined as

$$\begin{aligned} m_i = \frac{M_i}{V} , \end{aligned}$$
(5)

with V the volume of \(\Omega\). Note that \(m_0\) coincides with the standard definition of porosity \(\phi\). The computation of the MF densities of the computer-generated geometries to be used will be performed through the algorithm outlined in (Michielsen and Raedt 2001). The MF densities are properties associated with the integral geometry of the sample so the information regarding the detailed pore structure is not contained by them. Additionally, one of the basic elements of pore structure information is the average pore diameter size \({{\bar{d}}}\) defined as:

$$\begin{aligned} {{\bar{d}}}&= \int _0^\infty r f(r) {\rm d}r \end{aligned}$$
(6)

where f(r) is the normalized pore diameter frequency distribution, i.e., \(\int _0^\infty f(r) dr = 1\), such distribution can be discretely estimated through the morphological operations of erosion and dilation as outlined in (Vogel et al. 2010). It will be useful for later convenience to write dimensionless versions of the MF densities and the average pore diameter. To that end, we will use the following topological length H as characteristic length for this purposeFootnote 1

$$\begin{aligned} H= \left( -m_3\right) ^{- \frac{1}{3}} \, . \end{aligned}$$
(7)

Given the topological nature of H, its computation carries no associated numerical error and H itself is insensitive to the roughness of the solid–fluid inter-phase. Using H, we can define the independent dimensionless variables

$$\begin{aligned} \phi _0 = m_0 \, , \qquad \phi _1 = H m_1 \, , \qquad \phi _2 = H^2 m_2 \, , \qquad \phi _d = \frac{{{\bar{d}}}}{H}\, , \end{aligned}$$
(8)

These variables will be relevant when analyzing the dependence of the permeability with the MF densities. Note that despise using H we will still use \({{\bar{d}}}\) as the relevant characteristic length when computing the Reynolds number.

3 Porous Geometry Generation

The systematic generation of porous geometries is based on a special treatment, outlined in the rest of this section, of a class of solutions to the Gray–Scott reaction–diffusion system of equations given by

$$\begin{aligned} \frac{\partial u}{\partial t}&= D_u \nabla ^2 u - u v^2 + f(1-u) \, , \end{aligned}$$
(9)
$$\begin{aligned} \frac{\partial v}{\partial t}&= D_v \nabla ^2 v + u v^2 - (f+k) v \, , \end{aligned}$$
(10)

where \(D_u\) and \(D_v\) are diffusion coefficients associated with the species concentration u and v, respectively, f is known as the feed parameter, k is known as the kill parameter. Periodic boundary conditions were used in all boundaries, and spherical initial distributions were given by:

$$\begin{aligned} u(r,\theta ,\phi )&= H_e(r-r_c) + \frac{1}{2} \left( 1 - H_e(r-r_c) \right) + {\mathcal {U}}_{[0,1]}*0.01 \, , \end{aligned}$$
(11)
$$\begin{aligned} v(r,\theta ,\phi )&= \frac{1}{4} \left( 1 - H_e(r-r_c) \right) + {\mathcal {U}}_{[0,1]}*0.01, \end{aligned}$$
(12)

where \(H_e(x)\) is the Heaviside step function, \({\mathcal {U}}_{[0,1]}\) is a random variable sourced from a uniform distribution defined between [0, 1], and \((r,\theta ,\phi )\) are spherical coordinates centered at the cube center, and \(r_c\) is a constant. Table 1 shows the values of the coefficients used in (9)-(10) that produced a series, or families, of distinct structures that we named from A to H.

Table 1 Diffusion–reaction coefficients used to generate each of the geometry families

The system (9)–(10) is solved numerically via a finite difference scheme on a cube \(\Omega _{L_{\text {\tiny GS}}}\) of size \(L_{\text {\tiny GS}}\) with periodic boundary conditions. As time evolves, the patterns generated by the solutions reveal a class of solutions whose iso-surfaces are reminiscent of the internal boundaries encountered on porous media, see Fig. 1.

Fig. 1
figure 1

Iso-surfaces for solutions to the reaction–diffusion system for two set of parameters \(\{D_u,D_v,f,k\}\), the parameters on the figure on the left(right) correspond to family A/B(C/D) in Table 1. The solutions were obtained on a cube of length \(L_{\text {\tiny {GS}}}=192\)

The initial configuration evolves into complex patterns that extend all over the computational domain, like those shown in figure 1. Once a steady state has been reached the computed distributions u, or v, can be transformed into a porous geometry with porosity \(\phi\) through the following procedure.Footnote 2

  1. 1.

    The support of the numerical solution \(\{u,v\}\) is reduced to a discrete set of points located on a cube (\(\Omega _{L'}\)) of size \(L'<L_{\text {\tiny GS}}\) centered on the original \(L_{\text {\tiny GS}}\) sized cube \(\Omega _{L_{\text {\tiny GS}}}\). Therefore, we will consider only a subset of the found solution to generate the porous geometry. This removes some undesired boundary behavior that causes the geometry to not have the properties of a representative elementary volume (REV).Footnote 3

  2. 2.

    We find an iso-surface \(u_c\), or \(v_c\) equivalently and treat it as a basic fluid–solid boundary of the porous geometry. This means that the domain where \(u_l<u_c\), or \(u_l>u_c\) alternatively, is taken as the pore space, while its complement its taken as the solid space, see Fig.2. The choice \(u_l<u_c\) or \(u_l>u_c\), to decide which domain is the pore space, will produce two distinct families of geometries, that are in a sense complementary and that show very different flow properties. This is the reason why, in Table 1, there are two families per choice of parameters in the Gray–Scott system of equations (9)-(10), and so family A is complementary to family B in the sense stated above. This results in a preliminary porous geometry defined on a cubic lattice of size \(L'\). The information for this preliminary geometry is saved on a function P(x) with \(x \in \Omega _{L'}\) and \(P(x) \in \{0,1\}\) where 0 and 1 denote the belonging to the solid and pore space, respectively.

  3. 3.

    The preliminary porous geometry might have pore diameters as small as a single computational node causing potential problems on those sections when a flow is run through it.Footnote 4 To remove this potential issue, we increase the resolution of the sample by expanding the sample onto a cube \(\Omega _{L_s}\) of length \(L_s= s L'\) with \(s>1\). This is done by turning each point x on the original cube \(\Omega _{L'}\) into a cube of length s. This procedure increases the minimum pore radius to \(s^3\) computational nodes. We found \(\{s=3,L'=96\}\) to be a good compromise between resolution and computational speed.

  4. 4.

    The potential porous geometry is further enhanced by removing any sections of the geometry that are disconnected from the main geometry body. The first step involves choosing one pair of parallel faces of \(\Omega _{L_s}\) and identifying one as the inlet and the other as the outlet. We then take all pore points x belonging to the inlet and check which pore points y are connected to them. Any pore point z not belonging to this group of connected points is converted into a solid point. This procedures ensures that the whole pore space is connected to the inlet.

  5. 5.

    We use the algorithms of (Michielsen and Raedt 2001) to compute the MF densities of the potential porous geometry. To verify that the sample corresponds to a representative elementary volume (REV), we repeat this computation for all possible subsamples of size \(0<l<L_s\). If the variations of the MF densities and the average pore diameter around the size of the sample are small, we can consider our sample to be larger than a single REV, see figure 3.

  6. 6.

    Once we have verified our sample behaves and is larger than a single REV, we can use the algorithm presented in (Vogel et al. 2010) to compute the average pore radius of the geometry, see Fig. 4, to visualize the pore distribution f(x) as well as the cumulative pore size \({{\bar{\textrm{d}}}}(x) = \int _0^x r f(r) \textrm{d}r\). The porous geometry is now ready to be subject to hydraulic flow.

Fig. 2
figure 2

Transverse cut of the two solutions shown in figure 1 was only the \(L=96\) central cube has been considered as support for the solution. On the left part of each image, a particular iso-surface \(u_c\) is shown, and on the right-hand side, we see in black the union of iso-surfaces \(u_l<u_c\) and in gray we have the union of iso-surfaces \(u_l>u_c\). In both cases, if the black section is chosen as the pore space a porosity of \(\phi =0.55\) is found otherwise a porosity of \(\phi =0.45\) is found. Note that the two geometries that can be generated from a single solution have different structure, see figure 6 for more examples. It might seem that if the black section is taken as the pore space it will not be connected; however, we have to remember that the geometry is three dimensional and the connection will occurred through other planes

Fig. 3
figure 3

Porosity as a function of the sample length size for four of the used data sets. The full sample at \(L_{s=3}=288\) is located beyond the point where the sample can be considered a REV. The same fluctuation behavior is observed for the rest of the data sets and for the remaining MF densities and average pore diameter

Fig. 4
figure 4

a Plot of cumulative pore size \(\int _0^x r f(r) dr\). b Plot of pore size distribution f(x). The plots are shown for three of the used data sets

Following the previously outlined procedure, we generated 154 different geometries classified into 8 different geometry families. Each family corresponds to a different solution to the reaction–diffusion system (9)-(10). All solutions were obtained on a cube of side L through a finite difference scheme taking \(\Delta x=0.01\) and \(\Delta t =\frac{0.9 \Delta x^3}{4 D_u}\). In the table below the parameters and initial conditions in lattice units are shown for each of the families,Footnote 5 see Fig. 6 to visualize the structure of some of these families. The range of the dimensionless densities \(\phi _{1-3,d}\) and the number of data sets analyzed for each family set are specified in Table 2.

Table 2 Range of dimensionless MF densities (using the length H) and dimensionless mean pore diameter for all geometry families

In summary, the pore space of each family is generated from level surfaces of a given Gray–Scott solution. The level surfaces are chosen such that the porosity/volume associated with their union gives out a specific porosity \(\phi _0\). Due to this, we expect that, for a given family, the rest of the Minkowski functionals and the pore diameter to be functions of the porosity

$$\begin{aligned} \phi _1=\phi _1(\phi _0) \, , \qquad \phi _2 =\phi _2(\phi _0) \, , \qquad \phi _d = \phi _d (\phi _0)\, , \end{aligned}$$
(13)

This dependence can be seen in Fig. 5. From this figure, we can also see that there is a clear division between geometries in two groups or types. We will group together geometries A, C, E, and G into one group and the remaining B, D, F, and H into another one. Each type of geometries corresponds to one of the two ways of constructing a porous structure from the solution to the Gray–Scott system, as described in step 2 of the outlined procedure at the beginning of this section.

Fig. 5
figure 5

a Dimensionless-specific surface area \(\phi _1\) vs porosity \(\phi _0\) for all geometry families. b Dimensionless mean curvature density \(\phi _2\) vs porosity \(\phi _0\) for all geometry families. c Dimensionless average pore diameter \(\phi _d\) vs porosity \(\phi _0\) for all geometry families. d Dimensionless average pore diameter \(\phi _d\) vs mean curvature density \(\phi _2\) for all geometry families

Some clear differences between the two types of geometries are:

  1. 1.

    The sign of \(d \phi _1/ d \phi _0\) is different for each of the types of geometries, see Fig. 5a.

  2. 2.

    For \(\{A,C,E,G \}\) families \(\phi _2\) takes positive and negative values, while for \(\{B,D,F, H\}\) families it only takes positive values. From figure 5b), we can notice that both types do not overlap on the \((\phi _2,\phi _0)\) space. We should note that they also do not overlap on the \((\phi _2,\phi _d)\) space, see Fig. 5d.

  3. 3.

    For \(\{A,C,E,G \}\) families \(d \phi _d / d \phi _0\) changes sign in the range of porosities that were studied, while for \(\{B,D,F, H\}\) families geometries \(d \phi _d / d \phi _0\) remain positive. See Fig. 5c.

  4. 4.

    From a visual point of view, both geometries are also quite distinct. \(\{A,C,E,G \}\) families geometries resemble those generated from lumping together grains, see Figs. 6a andc. \(\{B,D,F, H\}\) families resemble those of foams, see Figs. 6b and d.

Although properties 1 to 3 are probably exclusive to geometries generated through the method outlined in this section, it is possible to classify other porous geometries into one of the two types by using the visual cues discussed in point 4 of the previous list. For example, a porous geometry made out of packed grains will share similarities with \(\{A,C,E,G \}\) families, while a foam-like porous geometry will share similarities with \(\{B,D,F, H\}\) families. We will then refer to the first group of geometries as granular geometries, and to the second group of geometries as foam-like geometries.

4 Hydrodynamic Setup

The geometries generated using the previously outlined algorithm define a cubic lattice of length \(L=288\) computational nodes, where each node can be part of either the fluid or the solid domain. Note that by construction the solid domain is a connected space. We now want to study the flow through these geometries in the case where one of the faces of the cube acts as an inlet at fixed pressure \(p_i\) , while its opposite face acts as an outlet at fixed pressure \(p_o\), closing off the remaining four faces.Footnote 6 To simulate this setup, we used a D3Q19 lattice-Boltzmann method (LBM) where a distribution function \(f_k\) is defined and computed over the lattice identified as the porous geometry. The distribution function is then used to compute the fluid velocity \({\textbf{u}}\) at the lattice nodes. Lattice spacing as well as time steps can be conveniently set to unity. At every node \({\textbf{r}}\) in the lattice, the distribution functions evolve in time according to

$$\begin{aligned} f_k( {\textbf{r}} + {\textbf{e}}_k, t+1 ) = f_k({\textbf{r}},t) - \frac{1}{\tau } \left[ f_k({\textbf{r}},t)-f_k^{\textrm{eq}}( {\textbf{r}},t)\right] \, . \end{aligned}$$
(14)

The coefficient \(\tau\) represents a relaxation time and is related to the fluid kinematic viscosity \(\nu =\frac{\tau -\frac{1}{2}}{3}\). We choose \(\tau =0.55\), a common value for the method to be stable at moderate Reynolds number (Zhao 2013). The local equilibrium distribution function \(f_k^{eq}\) is given by:

$$\begin{aligned} f^{\textrm{eq}}_k = \rho \omega _k \left[ 1 + 3 {\textbf{e}}_k \cdot u + \frac{9}{2} \left( {\textbf{e}}_k \cdot u \right) ^2 - \frac{3}{2} u^2 \right] \, . \end{aligned}$$
(15)

The equilibrium distributions depend on the macroscopic fields \({\textbf{u}}\), and \(\rho\), the mass density and must be computed every time step through

$$\begin{aligned} \rho ({\textbf{r}},t ) = \sum _{k=0}^{18} f_k({\textbf{r}},t) \, , \end{aligned}$$
(16)
$$\begin{aligned} \rho {\textbf{u}} \left( {\textbf{r}},t \right) = \sum _{k=0}^{18} {\textbf{e}}_k f_k({\textbf{r}},t) \, . \end{aligned}$$
(17)

The constants \(\omega _k\) in the equilibrium function definition (15) take the values \(\omega _0=1/3\), \(\omega _k=1/18\) for k=1,...,6 and \(\omega _k=1/36\) for \(k=7,...,18\). The set of microscopic velocities \(\{{\textbf{e}}_k: k=0,...,18\}\) is given by:

$$\begin{aligned}&{\textbf{e}}_0=(0,0,0), \qquad {\textbf{e}}_1={\textbf{e}}_4=(1,0,0), \qquad {\textbf{e}}_2=-{\textbf{e}}_5=(0,1,0), \nonumber \\ {}&{\textbf{e}}_3=-{\textbf{e}}_6=(0,0,1), \qquad {\textbf{e}}_7={\textbf{e}}_{10}=(1,1,0), \qquad {\textbf{e}}_8=-{\textbf{e}}_{11}=(1,0,1), \nonumber \\ {}&{\textbf{e}}_9=-{\textbf{e}}_{12}=(0,1,1), \qquad {\textbf{e}}_{13}=-{\textbf{e}}_{16}=(-1,0,0), \nonumber \\ {}&{\textbf{e}}_{14}=-{\textbf{e}}_{17}=(-1,0,1), \qquad {\textbf{e}}_{15}=-{\textbf{e}}_{18}=(0,-1,1), \, . \end{aligned}$$
(18)

Equation (14), with the chosen microscopic velocities, provides an algorithm for updating all the distribution functions \(f_k\) at a given node in the lattice, as long as its 18 nearest neighbors in the lattice are inside the fluid domain. For nodes close enough to a solid wall, the distribution functions coming from neighboring nodes outside the fluid domain must be provided as a boundary condition for the method. When the neighboring nodes correspond to the solid domain of the porous geometry, including the four closed off faces of the cubic domain, the half-way bounce-back conditions will be used (Zhang et al. 2012). When the neighboring nodes go outside the computational domainFootnote 7 at the inlet and outlet, we will use the boundary conditions proposed in (Zou and He 1996; Hecht and Harting 2008) that fix the pressure to a constant value at both inlet and outlet. On the aforementioned setup, and for a slow enough flow, Darcy law (Darcy 1856; Bear 1988; Whitaker 1986) is expected to hold,

$$\begin{aligned} -\frac{\Delta p}{L} = \frac{\mu }{K} \frac{Q}{L^2} \end{aligned}$$
(19)
Fig. 6
figure 6

Stream lines at \(\textrm{Re}_\phi <1\) for stationary flow in some of the used data sets. a Family A with \(\phi _0=0.403\). b Family B with \(\phi _0=0.456\). c Family C with \(\phi _0=0.502\). Family D with \(\phi _0=0.454\). Notice that the geometries in a and b belong to complementary families (A and B), in the sense defined in step 2 of Sect. 3, and the same happens to geometries in c and d

where \(\Delta p\) is the pressure gradient between inlet and outlet, L is the length of the sample cube, \(\mu\) is the dynamic viscosity of the fluid, Q is the discharge rate at the outlet, and K is the permeability. As discussed in the introduction, the permeability is assumed to depend exclusively on the geometric properties of the sample. To be more precise regarding the validity of (19), it is useful to define the pore level Reynolds number \({\rm Re}_\phi\) as

$$\begin{aligned} \textrm{Re}_\phi = \frac{Q {{\bar{d}}}}{L^2 \nu \phi } \, , \end{aligned}$$
(20)

where the average pore diameter \({{\bar{d}}}\), see (6), is used as the pore characteristic length, \(\frac{Q}{L^2 \phi }\) corresponds to the seepage velocity and is used as the characteristic speed at the pore level. We then expect Darcy to hold for \(Re_\phi <1\), while for \(Re_\phi>>1\) a quadratic term known as the Forchheimer term is added and (19) is expected to take the quadratic form

$$\begin{aligned} -\frac{\Delta p}{L} = \frac{\mu }{K}\frac{Q}{L^2} + \beta \rho \frac{Q^2}{L^4} \, , \end{aligned}$$
(21)

where we will refer to \(\beta\) as the Forchheimer parameter. It will be convenient to rewrite the general form (21) as a function of the pore level Reynolds number as

$$\begin{aligned} \Delta ^*&= \frac{d^2}{{{\bar{H}}}^2} \frac{1}{k} \textrm{Re}_\phi + \frac{{{\bar{d}}} }{H} b \phi \textrm{Re}_\phi ^2 \end{aligned}$$
(22)

with the dimensionless permeability \(k=\frac{K}{H^2}\), dimensionless Forchheimer coefficient \(b= H \beta\), and \(\Delta ^*\) given by

$$\begin{aligned} \Delta ^* \equiv - \frac{ {{\bar{d}}}^3}{L \phi \nu ^2} \frac{\Delta p}{\rho } \end{aligned}$$
(23)

To compute the permeability k and Forchheimer coefficient b, we just need to analyze the relation between pressure gradient and discharge rate once the flow has reached a steady state. Some examples of steady stream lines, in different geometry families, obtained from the LBM method are shown in Fig. 6. We can notice that the shape of the stream lines differs for granular- and foam-like geometries, see Fig. 6. For granular geometries, the stream lines are what you expect from a fluid avoiding obstacles on its path; however, for foam-like geometries we can see that the stream lines take advantage of the three-dimensional space and become more tortuous than their granular counterparts. We expect tortuosity to be an alternative classifying factor for the two types of observed geometries; however, we did not explore this possibility on this work.

5 Permeability

The permeability associated with any given data set can be obtained by computing the discharge rate at the outlet for multiple stationary numerical solutions on a range of small Reynolds number \(\textrm{Re}_\phi \lesssim 1\). Fitting the data to Darcy law (19) allows for \(k= \frac{K}{H^2}\) to be computed, see Fig. 7 for some examples.

Fig. 7
figure 7

a Data fit to Darcy law for eight data sets representing each of the distinct geometries. b Data fit to Darcy law with the Forchheimer correction for eight data sets representing each of the distinct geometries

We will now assume thatFootnote 8\(k=k\left( \phi _0,\phi _1,\phi _2, \phi _d\right)\) , and our aim will be to find a good enough fit for the functional form of \(k\left( \phi _0,\phi _1,\phi _2, \phi _d\right)\) and try to get a picture of how all Minkowski functionals affect the permeability. As mentioned in Sect. 3, due to the way the geometries were generated the Minkowski functionals are not independent. This implies that for any given family the dimensionless permeability k can be written as a single parameter function,Footnote 9 for example we can choose the porosity as the independent parameter and write \(k = k(\phi _0)\). We exemplify this in Fig. 8, where we show k vs \(\phi _0\) and k vs. \(\phi _2\), together with a fit for both cases for each of the families. In Fig. 8, all the generated structures are included, grouped in geometry families as defined in Sect. 3. In plotting k vs. \(\phi _0\) and k vs \(\phi _2\) in Fig. 8a and b, respectively, no selection of the rest of MF’s was imposed.

Fig. 8
figure 8

a Dimensionless permeability k as a function of porosity \(\phi _0\) together with a fit of the form (24) for granular geometries and (26) for foam-like geometries. b Dimensionless permeability k as a function of dimensionless curvature density \(\phi _2\) together with a fit of the form (25) for granular geometries and (27) for foam-like geometries. All dimensional rescaling was made by using the length \(H=(-m_3)^{-\frac{1}{3}}\)

For granular geometries, the following fits were usedFootnote 10

$$\begin{aligned} k(\phi _0)&= b \frac{\phi _0^a}{c + \phi _0^d} \, , \end{aligned}$$
(24)
$$\begin{aligned} k (\phi _2)&= e^{k_0 - k_1 \phi _2 - k_2 \phi _2 ^2 - k_3 \phi _2 ^3 }\, , \end{aligned}$$
(25)

The fit parameters can be found in Table 3. The fit \(k(\phi _0)\) was inspired by the Kozeny–Carman equation. The fit satisfies the expectedFootnote 11 relation \(k(\phi _0\rightarrow 0)=0\). For the fit \(k(\phi _2)\) we found that, if plotted in semilog scale, a polynomial behavior on \(\phi _2\) is needed to account for the multiple inflection points on the curve \(k(\phi _2)\), while the exponentiation is necessary to guarantee thatFootnote 12\(k(\phi _2\rightarrow \infty )=0\). Note that a power law in \(\phi _2\) might not work in general as \(\phi _2\) can take both positive and negative values.

Table 3 Granular geometries fit parameters for \(k(\phi _0)\) using (24) and \(k(\phi _2)\) using (25) together with the maximum relative error \(\Delta (\phi _i)\equiv 100 \text {max} |\frac{\Delta k(\phi _i)}{k} |= 100 \text {max} |\frac{k-k(\phi _i)}{k} |\) with k the permeability as given by the numerical simulations

For foam-like geometries, we will instead use the following fits:

$$\begin{aligned} k(\phi _0)&= \phi _0^a e^{ \sigma _0 + \sigma _1 \phi _0^2} \, , \end{aligned}$$
(26)
$$\begin{aligned} k(\phi _2)&= e^{k_0 - k_1 \phi _2 - k_2 \phi _2^2} \end{aligned}$$
(27)

The fit parameters can be found in Table 4, note that due to the small number of data points we will use a three-parameter fit in contrast to the four parameter fit used in (24)–(25). Given the rapid increase in k with \(\phi _0\) that occurs on foam-like geometries, we used a power law combined with an exponential term. For \(k(\phi _2)\) , we kept the exponential form but removed the cubic term, the reasoning for this is that there are not enough data points to correctly fit such parameter and there are no inflection points in the range of explored \(\phi _2\).

Table 4 Foam-like geometries fit parameters for \(k(\phi _0)\) using (26) and \(k(\phi _2)\) using (27) together with the maximum relative error \(\Delta (\phi _i)\equiv 100 \text {max} |\frac{\Delta k(\phi _i)}{k} |= 100 \text {max} |\frac{k-k(\phi _i)}{k} |\) with k the permeability as given by the numerical simulations

From the \(\Delta (\phi _i)\) columns of Tables 3 and 4, we can note that for most families \(k(\phi _2)\) is a slightly better fit than \(k(\phi _0)\). This seems to indicate that the curvature \(\phi _2\) is probably a natural parameter to describe the permeability in conjunction with the porosity. We can also notice that the fit parameters for all granular geometries are roughly of the same order. The same holds true for foam-like geometries. We will then assume that we can incorporate all family geometries into a single fit \(k(\phi _0,\phi _1,\phi _2,\phi _d )\). Based on the fits (24)–(27) as well as the fitting proposed by Slotte et al. (2020) for two-dimensional porous geometries, we were able to fit the numerical data for granular geometries into the trend functionFootnote 13

$$\begin{aligned} k= \left( \phi _0\right) ^{a} \left( \phi _1\right) ^{\lambda _1} \left( \phi _d\right) ^{\lambda _d } e^{k_{0} - k_{1} \phi _2 - k_{2} \phi _2^2 - k_{3} \phi _2^3} \end{aligned}$$
(28)

with the best fit values

$$\begin{aligned} a= & {} -2.85, \quad \lambda _1=-3.40, \quad \lambda _d=1.58, \quad k_0=3.52, \quad k_1=5.12, \nonumber \\ k_2= & {} 3.15, \quad \text {and} \quad k_3=0.88. \end{aligned}$$
(29)

And for foam-like geometries into the trend function

$$\begin{aligned} k = \left( \phi _0\right) ^a \left( \phi _1\right) ^{\lambda _1} \left( \phi _d\right) ^{\lambda _d } e^{k_0+\sigma _1 \phi _0^2 -k_1 \phi _2 - k_2 \phi _2^2 } \end{aligned}$$
(30)

with the best-fit values

$$\begin{aligned} a= & {} 6.48, \quad \lambda _1=-0.41, \quad \lambda _d=-1.08, \quad k_0=9.7, \quad \sigma _1=-4.81, \nonumber \\ k_1= & {} 2.34, \quad \text {and} \quad k_2=1.85. \end{aligned}$$
(31)

In Fig. 9, a plot of the relative error for the dimensionless permeability can be found, and from it, we can see that the trend line approximates the expected value for each of the types of geometries with an error of less than 15% for granular geometries and less than 18% for foam-like geometries.

Fig. 9
figure 9

Relative error of the trend functions (28) and (30) for all used geometries

We can finally note that for both fits (28) and (30) the limit \(k(0,\phi _1,\infty ,\phi _d)=0\) is satisfied, and there is an exponential dependence on the dimensionless curvature \(\phi _2\) and a power law on the porosity \(\phi _0\).

6 Forchheimer Parameter

The Forchheimer parameter associated with any given data set can be obtained by computing the discharge rate at the outlet for multiple stationary numerical solutions on a larger range of Reynolds number \(Re_\phi >1\). Fitting the data to the Forchheimer correction to Darcy law (21) allows for \(b= H \beta\) to be computed, see Fig. 7 for some examples. Ideally we would like to find if there is a good enough fit for the functional form of \(b(\phi _0,\phi _1,\phi _2,\phi _d)\) for both types of geometries and identify the main dependence on the different Minkowski functionals. Just as for the permeability, it should be possible to first do single parameter fits; however, we were only able to find simple fits for \(b(\phi _2)\). In Fig. 10b, \(b(\phi _2)\) is shown for all geometries together with its fit. For completeness, we show in Fig. 10a the behavior of \(b(\phi _0)\), from it we can notice that \(b(\phi _0)\) rapidly increases as \(\phi _0\) decreases and, as expected, the behavior of each family seems to resemble the behavior of other families belonging to the same type. For granular and foam-like geometries, we used a fit of the forms

Fig. 10
figure 10

a Dimensionless Forchheimer parameter b as a function of porosity \(\phi _0\). b Dimensionless Forchheimer parameter b as a function of dimensionless curvature density \(\phi _2\) together with a fit of the form (32), setting \(k_3=0\) for foam-like geometries. All dimensional rescaling was made by using the length \(H=(-m_3)^{-\frac{1}{3}}\)

$$\begin{aligned} b(\phi _2) = e^{k_0 + k_1 \phi _2 + k_2 \phi _2^2 + k_3 \phi _2^3} \end{aligned}$$
(32)

with \(k_3\) set to zero for foam-like geometries given the lower quantity of numerical data in comparison with granular geometries. The fit parameters for both types of geometries, together with the maximum relative error \(\Delta (\phi _2)\), are presented in Table 5.

Table 5 Granular and foam-like geometries fit parameters for \(b(\phi _2)\) using (32) together with the maximum relative error \(\Delta (\phi _i)\equiv 100 \text {max} |\frac{\Delta b(\phi _i)}{b} |= 100 \text {max} |\frac{b-b(\phi _i)}{b} |\) with b the Forchheimer parameter as given by the numerical simulations

We can already noticed that the fit is not as good as the one for the permeability for all types of families. However, it is quite notable that the exponential form (32) can capture most of the exhibited behavior of \(b(\phi _2)\). Unlike k, we were unable to find a good fit function for each of the types of geometries solely using the Minkowski functionals and the average pore diameter as in (28) or (30). Given that we expect each family to share geometric features, we are inclined to conclude that additional geometric parameters that specify the more detailed structure of the geometry become relevant.

7 Conclusion

Making use of the reaction–diffusion equation, we were able to successfully implement a procedure that systematically generates porous geometries with distinct features for any given porosity. Such geometries were then characterized by their Minkowski functional densities and their average pore diameter. We generated 154 distinct geometries, arranged in 8 families sharing similar visual structure features and divided into two types of geometries with distinct geometrical features. The first type resembles granular porous geometries, while the second one resembles foam-like geometries. We subjected them numerically to a pressure gradient-driven hydraulic flow. Based on the mean pore diameter, the Reynolds number at pore level explored ranged from 0.2 up to 17.

From the observed relation between the discharge rate and the pressure gradient, we were able to compute the permeability and Forchheimer parameter for all generated geometries. To analyze a possible relation between these coefficients, and the Minkowski functional densities and average pore diameter, we used a dimensionalization involving the length derived from the Euler characteristic density. Under such dimensionalization and for each of the families, we were able to write down single parameter fits for the permeability as function of the porosity \(\phi _0\) and the dimensionless mean curvature \(\phi _2\), and for the Forchheimer parameter in terms of the dimensionless mean curvature \(\phi _2\). Additionally the dimensionless permeability arranged itself with the two types of families allowing us to find a fit as function of the dimensionless Minkowski functionals and the dimensionless average pore diameter for each of both types of geometries with an expected error of less than 15% for the granular geometries and less than 18% for foam-like geometries.

The two types of geometries are (generation and visual wise) complementary to each other and occupy different regions of the \((\phi _2,\phi _0)\) space, as seen in Fig. 5b), and different regions of the \((\phi _d,\phi _2)\) space, as seen in Fig. 5d). It is unclear whether this is the only geometric distinction between them, although looking at the stream lines, see Fig. 6, it seems to be an indication that tortuosity might be a better discriminatory quantity between the two observe types of geometries, and we leave the exploration of this possibility to future work.

The Forchheimer parameter also grouped itself into two types of families; however, we were unable to find a good fit for each type of geometry in terms of the Minkowski functionals and the average pore diameter. This seems to indicate the Minkowski functionals and the average pore density is not enough to determine the Forchheimer parameter, and further geometry descriptors are probably needed. However, for each of the families a single-parameter fit, analogous to the one used for the permeability, in terms of the dimensionless mean curvature \(\phi _2\) was possible. The nature of \(\phi _2\) and its relevance on all found fits seem to indicate that it is a key Minkowski parameter when predicting either the dimensionless permeability k or the dimensionless Forchheimer parameter b, recalling that a dimensionalization using the Euler characteristic was used. It will be of interest to study the relevance of \(\phi _2\) on generic porous geometries.

Our results show that reaction–diffusion systems have the potential to produce model porous structures of arbitrary geometrical characteristics. Such structures are suitable for the study of the flow properties dependence on the geometric characterization of porous media. Numerical simulations suggest that scaling lengths with the Euler characteristic reveal a different behavior of the dimensionless permeability, and Forchheimer parameter, of the two types of porous structures studied. Our work can be extended to include inhomogeneities and anisotropies and can be used to numerically study flow in a wide range of porous structures.