1 Introduction

Sustainable low-carbon energy production is one of the major challenges society faces today. The intergovernmental Panel on Climate Change (IPCC) has stated that negative emissions via carbon capture and storage (CCS) are vital to mitigate the effects of global climate (Metz et al. 2005; Committee on Climate Change 2019). Improving engineering of the subsurface for oil and gas production, low-carbon energy storage, and CO2 trapping is a crucial aspect of lowering carbon emissions.

An in-depth understanding of flow in porous media is critical for control and optimisation of these processes. However, the various mechanisms controlling the movement of fluids in the pore space (e.g. viscous displacement, capillary driven flow, and spontaneous imbibition) occur at the pore-scale and are poorly characterised (Blunt 2017). Multiphase fluid displacement is an important process during enhanced oil recovery (Szulczewski et al. 2012) and CO2 sequestration (Blunt et al. 2013; Orr Fm Jr 1984). Fluids can be displaced in different ways depending on the physical and chemical properties of the two fluids as well as structural and surface properties of the medium itself (Zhang et al. 2011). Yet there is still little understanding on how those structural and surface properties impact the dynamic multiphase fluid arrangements, which makes the optimization and upscaling of these processes for continuum-scale prediction challenging.

X-Ray Computed Micro- and Nano-Tomography (X-Ray CT) has made it possible to image, observe, and quantify the 3D physio-chemical interactions between fluids and rocks at the scale of pores and grains. X-Ray CT imaging, in combination with state-of-the-art numerical simulations (Raeini et al. 2019; Faris et al. 2020), has considerably improved our understanding of the fundamental physics that governs the fluid–fluid-rock interactions, and yet there are still several major challenges; First, the repeatability of experiments and second, the validation of numerical models. Even in relatively homogeneous reservoirs, each rock sample is unique and its properties are unknown a priori (e.g. wettability, surface roughness). Furthermore, flow experiments can irreparably alter rock properties such as roughness and wettability. It is therefore extremely challenging to conduct fully controlled and repeatable experiments in a real rock sample. Additionally, X-Ray CT has low image acquisition speeds that are orders of magnitude higher than the timescale of pore filling events such as Haines jumps and thus the dynamics can be missed. Reproducibility of the experiments and time acquisition constraints render the validation of the numerical simulations difficult, and validation is essential since different numerical methods may produce extensively different results (Zhao et al. 2019).

Micromodels are simplified, two-dimensional porous media that have standardised, repeatable geometries (Buchgraber et al. 2012) and have contributed significantly to our understanding of pore-scale physics and transport (Sun et al. 2016). Micromodel experiments can be conducted in the same geometry with multiple experimental protocols. Furthermore, they allow for geometry control and precise interrogation of the impact of structure on flow and transport. Micromodels have been widely used to investigate phenomena present in geosciences and engineering such as the flow dynamics of oil and fracking fluid in nanopores, shales (Hasham et al. 2018), and the wetting behaviour of saline aquifers for geological CO2 sequestration (Jafari and Jung 2019). Furthermore, recent engineering advances allow micromodels with real rock geochemistry to be created for observation and study of fluid solid/ chemical reactions (Song et al. 2014) including etching on cement micromodels (Porter et al. 2015), manufacture of micromodels with controlled wettability (Lee et al. 2015) and coating of glass and quartz micromodels with silicon dioxide (SiO2), montmorillonite and bentonite (Zhang et al. 2019). Researches are already focused on methods to upscale pore-scale features to the core-scale for obtaining more accurate core-scale data to feed into large-scale simulators (Menke et al. 2021). Therefore, quantifying the interplay between structure and pore-scale flow phenomena will in the future allow for upscaling, optimising and predicting flow behaviour at the reservoir scale. 3D printing has the potential to play a major role in this quantification, either with micromodels where direct observation of the impact of small and comprehensive geometrical changes can bring new insight into the physics of the processes, or by enabling repeatable experiments in real 3D microfluidic devices with full geometry control. In addition, due to their transparent nature, micromodels permit direct fluid flow visualisation with a high-resolution camera. The output data can be therefore augmented using techniques like particle image velocimetry (PIV), which is a non-intrusive analysis technique where the particle distribution inside the domain is recorded at two instances of time. Using this change in particle distribution over time, we are able to map the velocity field (Roman et al. 2016; Lindken et al. 2009). However, conventional micromodel fabrication techniques like micromodel etching, and moulding are expensive, slow and so far limited to 2D and have only been extended to simple 3D geometries (Xu et al. 2017).

The emergence of additive manufacturing, also called 3D printing, offers a compelling alternative to conventional micromodels. 3D printing converts computer assisted design (CAD) into a physical object in a single process. Commercial 3D printers, which are capable of producing structures ranging from few microns to several centimetres, are beginning to challenge soft lithography as the research prototyping approach to micro-fabrication (Waheed et al. 2016). 3D printing has been applied to a wide range of industries including medicine (Vukicevic et al. 2017), biomedical engineering (Beg et al. 2020) and aerospace engineering (Joshi and Sheikh 2015). In comparison with standard micromodel fabrication techniques, the attraction of 3D printing is twofold. First, 3D printing has an unprecedented potential to fabricate in three dimensions in a way that has not been previously possible, Yet it is a technology that is just starting to emerge, and printing 3D pore geometries accurately is out of the scope of this paper and is the subject of future research (Ishutov 2019; Gomez et al. 2019). Second, the inexpensive nature of the 3D printed micromodels combined with the fast fabrication (~ 3 h) allows experimental investigations on multiple geometries as well as to generating and quick testing to identify the optimal geometry that will produce the experimental data required. (Waheed et al. 2016). Small alterations of 3D printed models also enable geometrical sensitivity analysis, something that is not commercially possible with the existing fabrication techniques like micromodel etching and moulding.

Two-dimensional single-layer 3D printed micromodels have already attracted attention and have been used to investigate pore-scale phenomena relevant to flow during subsurface processes (Li and Zhang 2019; Osei-Bonsu et al. 2018; Li et al. 2018; Zheng et al. 2021). However, there are concerns regarding dimensional fidelity, shape conformity, surface quality (Waheed et al. 2016). Ahkami et al. (2019) observed irregular square pillar print an non-homogeneous dimensions of the pillars when they attempted to generate 3D printed micromodels. Watson et al. (2019) observed irregular channel width and Anderson (2016) observed impermeable 3D printed samples when generating 3D printed micromodels from a micro-CT image. Furthermore, Suzuki et al. (2016) observed blocked fractures when generating a 3-dimensional fracture network, which could compromise the integrity of experimental results. Therefore, the printing quality and printers’ limitations must be investigated to verify their suitability for studying pore-scale phenomena and that is the aim of this study.

In this paper we have three objectives: (1) to investigate whether the single-phase flow PIV technique can be applied with our experimental setup; (2) to confirm the ability of our 3D printer to generate repeatable and accurate homogeneous 2D micromodels at realistic pore sizes; And finally (3) to test the limitations of our 3D printer in generating heterogeneous 2D micromodels with realistic pore size distributions. Validation of the geometry of the 3D printed products will include comparison between the PIV results and direct numerical simulation using the OpenFOAM, the opensource Computational Fluid Dynamics (CFD) platform (OPENCFD 2016).

2 Methods

2.1 Micromodel Geometries

The micromodel bead spacing was designed using Python using the matplotlib (Hunter 2007) and numpy libraries (Harris et al. 2020). A program was written to draw filled circles (grains) on an evenly spaced diagonal grid with a random deviation. In this way we were able to stochastically create infinite micromodel designs, all with the same overall statistical pore-space heterogeneity. The maximum allowable deviation can then be controlled. HM0 has no deviation, while HM8 has random deviation between zero and the whole average distance between each grain, which allows grains to touch but not to overlap (Fig. 1). The Python code for generating the micromodel geometries can be found in https://github.com/hannahmenke/DrawMicromodels (Fig. 2).

Fig. 1
figure 1

Generated micromodel geometries. Homogeneous micromodel HM0 (left) and Heterogeneous micromodel HM8 (right)

Fig. 2
figure 2

Pore-size distributions of generated micromodels HM0 and HM8

2.2 Micromodel Fabrication

The micromodel designs were then transformed to 3D geometries using FreeCad software (Fig. 3b) https://www.freecadweb.org/. The pattern was printed on a 25 × 25 mm disc size in order to fit inside the visualization cell and the pattern depth was set to 200 μm. After the micromodel geometry was rendered as stereolithography file (STL) it was uploaded to the 3D printer (Fig. 3c). In order to quantify the ability of the printer to generate repeatable micromodels, three micromodels of each geometry were printed for each pattern.

Fig. 3
figure 3

Micromodel fabrication process. After the binary image is constructed (a) it is transformed to a 3D object (b). Then the 3D object is printed with the Formlabs Form 2 printer (c). After the 3D printed process is printed the micromodels are washed in IPA with the Formlabs Form Wash to clean from unsolidified resin (d)

The printer used for the creation of the micromodel in this project is Formlabs Form 2 stereo lithography apparatus (SLA) printer (Fig. 3c) (https://formlabs.com). Form 2 works by successively printing layers of material one on the top of the other. Printing is controlled by photo-polymerisation of a liquid resin. The resin is hardened in the desired shape by a scanning laser. The movable substrate is suspended above the resin reservoir. This configuration is called constrained surface approach or ‘bat’ configuration. The laser is below the tank, which has a transparent bottom. The resolution of the printer as presented in the manual is shown in Table 1. After the micromodels are printed, they are inserted in the Formlabs Form Wash machine for 10 min, which is an Isopropyl Alcohol (IPA) washer that removes the uncross linked resin that covers the micromodel during the printing process to reveal the intended printed geometry (Fig. 3d).

Table 1 Printer resolution for different axis

During the printing process, the printer offers the option of printing with z axis resolution of 25 to 100 micron (Table 1). These numbers refer to the thickness of the layer that will be solidified at every successive step. The minimum feature that the printer will solidify is 140 μm, equal to the laser beam diameter meaning the beads that can be solidified can represent realistic grains categorised as fine sand (Udden 1914). In order to test how thickness affects the final print product we printed the micromodels with both resolutions 25 and 100 micron, respectively. For printing a 200 μm depth pore-throat, when the resolution is 25 μm, 8 layers are required, while for printing a 200 μm depth pore-throat with a 100 μm resolution only 2 layers are required. We found that in the case that 25 μm resolution was selected, the 200 μm pore-throat was blocked, while when 100 μm resolution was selected the very same pore-throat was printed successfully (Fig. 4). The extra layers required when selecting the 25 μm resolution setting increased the probability of error. Decreasing the z resolution to 100 μm allowed us to print the same geometry but with fewer print layers, therefore reducing the probability of error.

Fig. 4
figure 4

Effect of Z resolution settings on printing quality

To investigate whether the print geometry was correct after the micromodel was printed, its image was superimposed with the Free Cad design. We found that when printing at such small sizes there was a systematic error at the size of the pillar’s diameter printed on the order of 80 microns (Fig. 5). By taking into account the error during the design process (i.e. by designing the pillars with a diameter of 80 microns smaller and by keeping their centre in the same position) we observed that the pillars were then printed at the intended diameter.

Fig. 5
figure 5

Printing error on the bead radius is potentially caused by solidification of excess resin due to laser beam inaccuracy which leads to resin entrapment. (Left) An example of a print without taking thus error into account during design process. (Right) An example of a print with the print error during acccounted for during the designing process. The intended radius is shown in green with the printed radius with an error of 80 μm shown in red

The 3D printer by following the process described above can successfully generate the homogeneous HM0 micromodels without blockage down to pore-throat radius of 200 μm. The micromodel HM0_100 which has pore-throat radiuses of 100 μm cannot be generated repeatably without blockage (Fig. 6).

Fig. 6
figure 6

Homogeneous micromodel final product image with high resolution camera

When 3D printing with an SLA printer there are three concerns: (1) lack of accuracy of the laser beam that solidifies the liquid resin leading to blockage, (2) roughness of the beads and (3) lack of vertical resolution leading to corners and crevices. As seen in Fig. 7, blockage and artificial roughness are more of a concern than corners and crevices. In addition, the lack of vertical accuracy can be handled by choosing carefully the number of layers to minimise the vertical error. Blockage and artificial roughness may lead to inaccuracy in the flow field. To validate the 3D printed micromodels as devices for performing accurate flow experiments, PIV experiments must be conducted and compared with DNS (Fig. 7).

Fig. 7
figure 7

A high resolution image of the 3D printed micromodels. A high resolution image with camera Baumer VCXU 51. a A high resolution image showing blockage with camera Baumer VCXU 51 b A high resolution image with microscope where roughness is of the beads is visible (B3 Olympus inverted scope) (c)

2.3 Experimental Setup

Once the micromodel was successfully printed; it was inserted in the perspex transparent visualisation cell face-down and sealed using an o-ring. 1/16-inch peek tubing was used to connect the syringe pump (Chemyx Fusion 4000) to the visualisation cell and then to the outlet. A Baumer VCXU 51 high-resolution camera which allowed for a 3.45 μm/pixel resolution was mounted beneath the flow cell and recorded images at 10 frame per second using the Stream Pix 11 software (https://www.norpix.com/products/streampix/streampix.php). Above the visualisation cell, an LED light source (SCHOTT ColdVision Light Source) was installed to reduce shadows and enable clear visualisation of the movement of the particles (Fig. 8). For each experiment, deionised (DI) water was seeded with Carboxylate Modified Latex (CML) microparticles (Polybead® Microspheres 18,328–5) with a diameter of 15 μm at a concentration of 0.06% w/v. The density of the particles was 1.05 g.cm−3, which was close to the water density and therefore minimizing sedimentation. The polybead solution was then pumped through the visualisation cell at constant flow rate and the images recorded (Fig. 9).

Fig. 8
figure 8

Experimental setup including syringe pump (Chemyx Fusion 400) for PIV solution injection, visualisation perspex cell for sealing micromodel, high resolution camera (Baumer VCXU 51) and light source (SCHOTT ColdVision Light Source)

Fig. 9
figure 9

Image processing for PIV analysis. Raw recorded Image (a). Image after background subtraction (b). Segmentation of the geometry to solid and flow- path (c). Final image where only the moving particles are visible (d)

The Reynolds number is the ratio of inertial forces to viscous forces and it is defined as:

$${\text{Re}} = \frac{\rho \upsilon d}{\mu }$$
(1)

where ρ is the density, u is the fluid velocity, d is the diameter of the flow pattern and μ is the fluid viscosity. The flowrate was set to 0.05 ml.min−1 in order to achieve Re = 0.0047 and a creeping flow regime. The temperature of the experiment was ambient temperature, and the outlet pressure was atmospheric.

2.4 Image Processing

Fluid velocity was calculated by dividing the average length of particle displacements by the time between subsequent images. To enable accurate measurement of the particle displacement, the time interval between two images must be adequately long to have particle move several pixels but at the same time short enough to avoid excessive deformation of the pattern formed by particles from one image to the next one (Roman et al. 2016). The timespan between images was chosen so that the maximum displacement of particles from one frame to the other was about 3 particle diameters (45 μm). An acquisition speed of 10 frames.s−1 was adequate to achieve this particle displacement between subsequent images. Since the lens used in the camera assembly have a focal depth such that the movement of the particles was captured at many planes within the thickness (200 μm) of the micromodel, the micromodel was thus treated as 3-dimensional and the velocity map calculated using PIV corresponds to the average velocity of the different planes.

Images were pre-processed in MatLab (MATLAB 2018) to improve the measurement quality. The micro-PIV measurements were done with PIVlab a MATLAB® tool (Thielicke and Stamhuis 2019). This tool allowed image pre-processing before the images were correlated (Thielicke and Stamhuis 2014). First the images were denoised using the contrast limited adaptive histogram equalization (Karel 1994) and the adaptive wiener denoise filter (Lim 1990). Uneven background illumination and noise was corrected by differential subtraction of a reference image from the PIV sequence. The pore-space was then segmented using intensity thresholding and used as a mask for PIV calculations. This pre-treatment allowed us to obtain sequences of images that contained only information regarding particle displacement (Roman et al. 2016). In order to cross-correlate the image data, PIV laboratory performed a direct Fourier transform correlation with multiple passes using the deforming windows algorithm (Roman et al. 2016) and velocity map with a resolution of 152 × 127 points grid was generated as output. Post-processing was performed by filtering outlier data and applying a physical local median filter.

2.5 Direct Numerical Simulation

To validate the velocity measurements from micro-PIV, we compared the experimental data with direct numerical simulation performed on the same geometries.

Flow in our system can be described by the Navier–Stokes equation which assuming steady-state and neglecting the effect of gravity is:

$$\mu \nabla^{2} u = \rho \left( {u \cdot \nabla } \right)u + \nabla P$$
(2)

where ρ (kg/m−3) is fluid density, u(m/sec−1) is velocity, t(s) is time, μ(Pa/s) is dynamic viscosity, P (Pa) is pressure. And for incompressible flow we have the continuity equation:

$$\nabla { }\cdot{\text{ u }} = { }0$$
(3)

Numerical simulations were carried out using GeochemFoam (www.julienmaes.com/geochemfoam), which was based on OpenFOAM, an opensource C++ library designed to perform computational fluid dynamic calculations (OpenFoam 2016). A constant flow rate Q (m3.sec−1) with uniform pressure boundary conditions was applied at the inlet, with a non-slip boundary condition at the solid walls and free flow condition with constant pressure at the outlet. The flowrate selected was Q = 0.05 ml.min−1, which was equal to that imposed during the experiments. To mesh the computational domain, a 3D uniform cartesian grid was first generated, and then cells containing solid were removed and replaced by cartesian cells to match the solid boundaries using the OpenFoam snappyHexMesh utility. The Grid selection was such that it matched the point resolution achieved with the PIV measurements and therefore a grid-block size of 55 × 55 μm was selected (Fig. 10).

Fig. 10
figure 10

Computational domain generated with OpenFoam. Blue circles represent solid bead. Grey boxes represent the mesh/computational domain

3 Results and Discussion

3.1 Homogeneous Micromodels

The error between the velocity map created by the PIV analysis and the DNS was calculated by:

$$L1\, Error = \frac{{\frac{{\mathop \sum \nolimits_{i = 1}^{Nu.Blocks} \left( {U_{DNS\left( i \right)} - U_{PIV\left( i \right)} } \right)}}{Nu.Blocks}}}{Average\, Velocity }$$
(4)

\(U_{DNS}\) and \(U_{PIV}\) refer to the velocity magnitude (m.sec−1) calculated with DNS and PIV analysis, respectively, and subscript refers to the block inside the velocity map. The resulting L1 error is a dimensionless error showing the difference between experimental and numerical modelling results.

HM0 homogeneous micromodel was printed at 3 different pore-throat sizes (Table 1) to investigate the minimum pore-throat that can accurately be printed using our 3D printer. The micromodels were printed with pore throat sizes 500 μm (HM0_500), 300 μm (HM0_300) and 200 μm (HM0_200). In addition, every micromodel size was printed five times and the experiment was repeated in every geometry in order to investigate the repeatability of each generated geometry.

With the use of MATLAB software the experimental velocity maps were then subtracted from the OpenFOAM generated velocity maps in order to obtain error maps for each experiment (Fig. 11). From the resulting error maps Eq. 4 was used to calculate the L1 error, the results of which can be found in Table 2.

Fig. 11
figure 11

PIV generated velocity map subtracted from OpenFOAM generated velocity map to calculate the error map which is used to quantify the experimental printing error

Table 2 L1 error when comparing PIV generated velocity maps and direct numerical simulation velocity maps for Homogeneous micromodels HM0 at different pore-throat sizes

There was good agreement between the numerical simulation generated velocity maps and the velocity maps derived from PIV experiments conducted on the homogeneous micromodel HM0 at pore- throat sizes 500 and 300 μm (HM0_500 & HM0_300). The L1 error calculated in all 5 experiments at each pore-throat size is less than 0.0131. The possible error sources include numerical error while performing the numerical simulation, 3D printing error, or PIV acquisition error. Full convergence of the direct numerical simulations indicates that the error is unlikely to be numerical error. As for the printing error, we expect it to increase as the size of the channel becomes smaller and that it will also vary with each print as the error will not be repeatable. Finally, PIV acquisition error should depend on the size and density of the beads, on the resolution of the camera, and on the PIV code analysing parameters. However, we do not expect it to change with the size of the channel. The fact that the L1 error does not increase when the pore-throat radius of the micromodels is reduced from 500 μm to 300 μm but stays constant approximately to 0.01 suggests that the error present is not printing error, but an error related to the PIV acquisition. Additionally, when the pore-throat sizes of the HM0 micromodel are reduced to 200 μm (HM0_200), only three of the five geometries HM0_200(II), HM0_200(IV), HM_200(V) have such a low error while the rest HM0_200(I) and HM0_200(III) show an increased error with an L1 of approximately 0.04. This suggests 200 μm is the pore-throat size close to the limit which our 3D printer can successfully generate pore-throat geometries. When printing pore-throats of 200 μm printing error becomes a significant source of error. Finally, when the micromodel is designed to have 100 μm pore throat sizes blockage is always observed, and no PIV experiments could be attempted. This shows 3D printed micromodels can be successfully printed with negligible printing error down to a pore-throat size of 300 μm, while small error manifests when attempting to print 200 μm pore-throats. 100 μm pore-throats cannot be printed, while between 200 and 100 μm pore-throats is the limit of the printer to generate successfully and repeatably the required geometry.

3.2 Heterogeneous Micromodels

In order to fully capture a representative elementary volume (REV) of a heterogenous structure inside a micromodel it is necessary to have a large number of pores and throats. This is challenging in small model domains such as ours where we are limited by the printer resolution and the total maximum domain size (25 × 25 mm).

These design limitations result in some of the throats being very close or below the printer’s resolution limit and can result in throats below a threshold value being non-repeatably blocked in supposedly identical micromodel prints. Through trial and error that threshold pore throat diameter was identified to be 140 μm. A MATLAB code was then written to close all the pore throats below 140 μm such that they are intentionally blocked (Fig. 12), and thus ensuring micromodel print repeatability. The effect of the intentional blockage of the throats on the throat size distribution of the pattern can be seen in Fig. 12, where we can see that this truncation has very little effect on the overall distribution and closes less than 10% of the pore throats.

Fig. 12
figure 12

HM8 micromodel after intentionally blocking all pore throats below 140 μm size. Pore size distribution of HM8 micromodel after intentional blockage

In Table 3, the L1 error of the repeatably intentionally blocked micromodel is presented. Comparing the numerical simulation velocity maps generated with the 5 generated PIV velocity maps for the intentionally blocked HM8 micromodel (Fig. 13) we get L1 error which is less than 0.0198. Therefore, the smallest size that the printer is capable of generating is 140 μm. It can also be seen that the printing error that manifests below 200 μm is not visible in the heterogeneous micromodel case since the flow occurring through the smallest pore-throats is less than in the larger pore-throats.

Table 3 L1 for Heterogeneous micromodel experiments HM8
Fig. 13
figure 13

Velocity maps for intentionally blocked Heterogeneous micromodel HM8. Solid beads are represented with white colour. Jet colourmap representing the velocity in the flow-path domain

4 Conclusions

In this paper, we have investigated and showed that single-phase flow PIV works with our experimental setup. We show the ability of our 3D printer to generate repeatable homogeneous and heterogeneous micromodels at realistic pore-throat sizes by comparing single-phase flow PIV with direct numerical simulation results. The result obtained when comparing the numerical simulation generated velocity maps with the velocity maps produced from PIV experiments conducted on the homogeneous micromodel HM0 at pore throat sizes 500 and 300 μm shows good agreement. The persistent small amount of error and any differences between experimental and numerical generated velocity maps do not vary with the size of the channels and is therefore not 3D printing error, but rather error due to PIV analysis. This means that our 3D printer can successfully generate the required geometry every time. We have also shown that when the pore-throat sizes of the HM0 micromodel are reduced to 200 μm that only three of the five geometries have such a low error, while the rest show an increased error with an L1 of approximately 0.04. Furthermore, when the micromodel is designed to have 100 μm pore throat sizes blockage is always observed. This suggests that our printer starts to have difficulty to produce the required size pore-throat sizes between 100 μm and 200 μm.

In the heterogeneous micromodel with some pore-throat sizes below 100 μm, we identified that non-repeatable blockage manifests for pore-throats with sizes < 140 μm. Therefore, we can conclude that the limit of our 3D printer to print unblocked pore-throats is 140 μm. In order to generate repeatable heterogeneous micromodels pore-throats with sizes < 140 microns have to be intentionally blocked. Comparing the numerical simulation velocity maps generated with the five PIV velocity maps for the intentionally blocked HM8 micromodel, a very good agreement is observed. This indicates that the 3D printed micromodels with minimum pore-throat size of 140 μm can be generated repeatably for one phase-flow experiments. This work proves that 3D printed micromodels with a specified geometry and a realistic pore size distribution can be repeatably and accurately generated and therefore there is potential to be used in the future for two-phase flow pore-scale investigations that manifest during applications like CCS, improved oil recovery and geothermal energy. Further investigations need to be conducted in the future to understand how errors observed when generating 2D micromodel structures translate when generating 3D complex pore structures.