2.7. Porous Media

Porous media calculations can be undertaken when appropriate solid/fluid status information is supplied. A number of standard structures are available via the input file; more generally, a file with solid/fluid status and (optionally) wetting data is required.

2.7.1. Standard porous media structures

Details of various structures follow. Note that uniform wetting parameters can be selected via the relevant free energy parameters (as discussed in the section on Plane walls). If a general wetting pattern is required, a file must be prepared. See below.

2.7.1.1. Cylindrical pipe

porous_media_init      circle_xy

A cylindrical structure allowing flow in the z-direction is generated with diameter \((L_x - 2)/2\). The dimensions \(L_x\) and \(L_y\) must be equal.

2.7.1.2. Rectanular pipe

porous_media_init      square_xy

A rectangular (or square) pipe allowing flow in the z-direction is generated with extent \((L_x-2)\) in the x-direction, and \((L_y - 2)\) in the y-direction.

2.7.1.3. Walls in one coordinate direction

porous_media_init      wall_x
porous_media_init      wall_y
porous_media_init      wall_z

Generates a structure with, e.g., solid plane walls at \(x = 1\) and \(x = L_x\) (channel width \(L_x-2\)), and periodic in the other two dimensions.

2.7.1.4. Simple cubic crystal of spheres

porous_media_init      simple_cubic
porous_media_acell     10

This will initialise an array of sphere in a simple cubic array with lattice constant \(a\). The lattice constant must exactly divide all three coordinate lengths (i.e., there should be an integer number of unit cells).

The sphere radius is \(a/2\), and the solid volume fraction should be close to the theoretical value of \(\pi/6 \approx 0.52\) (with some discretisation error).

2.7.1.5. Body centred cubic crystal of spheres

porous_media_init      body_centred_cubic
porous_media_acell     10

As for the simple cubic case, but here body-centred cubic. The sphere radius is \(a\sqrt{3}/4\) The solid fraction should be close to the theoretical value of \(\pi \sqrt{3}/8 \approx 0.68\).

2.7.1.6. Face centred cubic crystal of spheres

porous_media_init      face_centred_cubic
porous_media_acell     10

Again, as for the simple cubic case, but here face-centred cubic. The sphere radius is approx \(a\sqrt{2}/4\), and the solid fraction should be close to the theoretical figure of \(\pi \sqrt{2}/6 \approx 0.74\).

2.7.2. Porous media structures from file

porous_media_file     yes            # "map-000000000.001-001" is present
porous_media_data     status_with_h  # file contents [status_only]

In this case, the run time will expect to find the file map-000000000.001-001 in the current directory. The porous_media_data key describes the contents of the file, with a number of possible values. These are illustrated below. The solid/fluid status must be present, while additional wetting information is also permitted:

porous_media_data     status_only             # solid/fluid status only
porous_media_data     status_with_h           # Free energy H
porous_media_data     status_with_c_h         # Free energy C and H

Only one porous_media_type can be defined at one time. The default is status_only, i.e., no wetting information.

2.7.2.1. File format

In all cases the status (fluid/solid) information is represented by a single char (or integer), which must be supplied via the porous media file. A single file should contain data matching the current system size, and have the \(z\)-direction running fastest, followed by the \(y\)-direction. Note that in non-periodic directions, the structure must be ‘closed’, i.e., all the points at the edge should be solid.

Fluid sites are designated by 0 and boundary or solid sites by 1. These data should be of type char in binary, and may be integer in ASCII.

Where wetting information is required, the relevant free energy parameters should be provided. These are of data type double. For example, in the symmetric free energy picture, values \(C\) and \(H\) are required at each site. The stoarge order is then \(s_1, c_1, h_1, s_2, c_2, h_2, \ldots\).

An example of how to construct a porous media file is provided in util/capillary.c, which writes an appropriate file for a square or circular capillary tube. Note that as the standard output mechanism is used, it is only necessary to make the relevant assignments to the data structure.

Please see the comments in the file for further details. Note that the allowed solid/fluid status values are defined in src/map.h. A solid boundary is MAP_BOUNDARY, while fluid is MAP_FLUID.