PorousFlow may be used to simulate flow through 2D highly-permeable fractures. The fractures may exist as an isolated fracture network, for example, as a number of intersecting discs. Alternately, the fractures may exist as a fracture network that is embedded in a 3D "host" material that has lower permeability.

This page briefly discusses the common scenario of using 2D finite elements to simulate the fractures.

No modifications to Kernels, etc, are necessary, but you need to prescribe appropriate porosity, permeability, etc, to your fractures if they are embedded in a 3D "host" material.

Creating the mesh

This is the difficult part. If you are simulating an isolated fracture network, the mesh needs to consist of quad or tri elements.

If you are simulating an embedded fracture network, the fractures need to be 2D quad or tri elements, that are connected to the host 3D elements. That is, your fracture elements need to share nodes with the 3D elements. Otherwise no fluid or heat will flow between the fractures and the host. The fractures need to be part of a separate subdomain (block). This is actually a requirement of the exodus format, but most importantly it allows you to correctly prescribe permeability, porosity, heat conductivity, etc.

Prescribing correct properties to the embedded fracture elements

When the 2D fractures are embedded in a 3D "host", the blocks containing your 2D elements representing the fractures need to be prescribed the correct permeability, porosity, etc.

Consider the MOOSE residual for a single 3D element corresponding to the time derivative of the fluid mass. It is $$$$R_{3} = \int_{V} \frac{\partial}{\partial t} \phi\rho S \ .$$$$ In this equation $$$R_{3}$$$ is the residual, with the "3" subscript indicating that this is a residual coming from a 3D element, and $$$V$$$ is the volume of the element. The other notation is the same as in in the PorousFlow theory manual, viz, $$$t$$$ is time, $$$\phi$$$ is porosity, $$$\rho$$$ is the fluid density, $$$S$$$ is the fluid saturation.

Similarly, consider the MOOSE residual for a single 2D element corresponding to the time derivative of the fluid mass. It is $$$$R_{2} = \int_{A} \frac{\partial}{\partial t} \tilde{\phi}\rho S \ .$$$$ Here $$$\tilde{\phi}$$$ has been used to emphasise that this "2D" porosity is not necessarily the same as the 3D porosity, $$$\phi$$$.

When constructing the overall nonlinear residual, MOOSE will blindly sum all the residuals from the individual elements (ie, it'll sum a bunch of $$$R_{3}$$$'s and a bunch of $$$R_{2}$$$'s). We must choose $$$\tilde{\phi}$$$ correctly so that the contributions from $$$R_{2}$$$ is weighted appropriately.

To do this, think of the 2D elements as being very thin 3D elements. Assume there is no dependence on the third direction, as is appropriate because the 3D element is very thin. Then in this situation $$$$R_{3} = a \int_{A} \frac{\partial}{\partial t} \phi\rho S \ ,$$$$ where $$$a$$$ is the thickness in the third direction. This immediately implies $$$$\tilde{\phi} = a\phi \ .$$$$

Similar arguments may be made for the fluid flow or heat flow Kernels of PorousFlow (and indeed, the entire PDEs) and these result in equations such as $$$$\tilde{k}_{ij} = a k_{ij} \ ,$$$$ where $$$k$$$ is the permeability tensor.

The tildered parameter values are those that should be used in the MOOSE input file, for the Material properties of the blocks associated to the 2D elements. For instance, suppose that a sample of the fractured material is experimentally measured to have porosity $$$\phi=0.5$$$. Obviously this is a 3D result since it exists in real life. Suppose the fracture is known to have thickness 0.1m. Then when this fracture is represented as a 2D element in MOOSE it should be given porosity $$$\tilde{\phi} = 0.1\times 0.5 = 0.05$$$ (with units of metres).

Relationship to the $$$a^2$$$ fracture formula

It is known that fluid flow between a pair of impermeable parallel plates may be well-approximated by Darcy flow through an effective medium with permeability $$$k = a^2/12$$$, where $$$a$$$ is the separation of the plates. In this setup the fluid flow is unimpeded by obstructions or similar things between the parallel plates. The parallel plates are not included in this effective medium: it is simply a slab of material with permeability $$$a^2/12$$$. This effective medium may be represented by 3D elements in MOOSE and simulated in the usual way, by setting the permeability in the input file to $$$a^2/12$$$.

How is this $$$a^2/12$$$ related to the formulae presented above? Well, the user may set $$$k=a^2/12$$$, which would be appropriate if their fracture was well approximated by parallel plates, and then, assuming they are modelling fractures by 2D elements in a 3D mesh, use the formula $$$\tilde{k}=ak$$$ to prescribe the permeability to the 2D fractures (probably along with $$$\phi=1$$$ which implies $$$\tilde{\phi}=a$$$). But they don't strictly need to do this: they can use any $$$k$$$ they deem appropriate, such as a value derived from experimental data measured in real (3D) experiments performed on the material the fracture is made from. Such a value is unlikely to depend on $$$a$$$, because it will be dictated by the material present within the fracture (eg, sand) which is assumed not to be present when deriving the $$$a^2/12$$$ formula.