OPM / LBPM

Pore scale modelling
https://lbpm-sim.org/
GNU General Public License v3.0
70 stars 31 forks source link

Fluid interface issue #88

Open AlPaPet opened 9 months ago

AlPaPet commented 9 months ago

Dear Professor McClure, I'am trying to test your code for imbitition simulation on a simple artificial porous medium sample (basically just a regular array of vertical solid columns), and noticed a strange thing considering the fluid/fluid interface. When the surface of the columns sides is smooth, the fluid/fluid interface looks normal. If the surface of the columns sides is rugous, multiple small droplets of the invading fluid are observed at quite a significant distance from the main advancing fluid/fluid interface. The issue is present for different contact angles. Do you know what could be causing this behavior of the code? The input parameters for lbpm_color_simulator look like: Domain {    Filename = "VoxelFile_LBPM_566_600_610_s0p1_SWAP.dat"    ReadType = "8bit"  // data type    nproc = 1, 3, 2     // process grid    n = 566, 200, 305   // sub-domain size

   N = 566, 600, 610  // size of original image    voxel_length = 1.0  // voxel length (in microns)    ReadValues =  0, 1, 2  // labels within the original image    WriteValues = 0, 1, 2 // associated labels to be used by LBPM    BC = 4                // boundary condition type (4 for flux) } Color {     tauA = 1.0;             // relaxation time for fluid A (labeled as "1")     tauB = 1.0;             // relaxation time for fluid B (labeled as "2")     rhoA   = 1.0;           // density for fluid A (in lattice units)     rhoB   = 1.0;           // density for fluid B (in lattice units)     alpha = 2.0e-4;         // controls the surface tension     beta  = 0.9;            // controls the interface width     F = 0, 0, 0             // controls the external force     Restart = false         // initialize simulation from restart file?     timestepMax = 2100000   // maximum number of timesteps to perform before exit     ComponentLabels = 0      // number of immobile component labels in the input image     ComponentAffinity = -0.5 // wetting condition for each immobile component     flux = -60.0             // volumetric flux at the z-inlet in voxels per timestep } Analysis {     analysis_interval = 10000        // Frequency to perform analysis     visualization_interval = 100000  // Frequency to write visualization data     restart_interval = 100000        // Frequency to write restart data     restart_file = "Restart"         // Filename to use for restart file (will append rank)     N_threads    = 1                 // Number of threads to use for analysis     load_balance = "independent"     // Load balance method to use: "none", "default", "independent" } Visualization {    format = "hdf5"    write_silo = true         // write SILO databases with assigned variables    save_8bit_raw = true      // write labeled 8-bit binary files with phase assignments    save_phase_field = true   // save phase field within SILO database    save_pressure = true      // save pressure field within SILO database    save_velocity = true      // save velocity field within SILO database } FlowAdaptor { } Thank you for your answer.

TEST_ARTIFICIAL_PM_OPT_FLOW_XX_Water_Solid_100000 TEST_ARTIFICIAL_PM_OPT_FLOW_XX_Water_100000 TEST_ARTIFICIAL_PM_OPT_FLOW_XX_RANDOM_Water_Solid_100000 TEST_ARTIFICIAL_PM_OPT_FLOW_XX_RANDOM_Water_100000

JamesEMcClure commented 9 months ago

I can provide an answer, but it may or may not be satisfactory.

In a physical system, small droplets will dissolve relatively quickly due to Ostwald ripening. SInce a small droplet has a high capillary pressure, Henry's law will cause these droplets to dissolve more quickly than larger droplets. The equilibrium condition is that all droplets should have an equal curvature (and therefore equal capillary pressure). This situation will be most evident in a liquid-gas system where water vapor exchanges mass between droplets.

In an oil-water system where the miscibility is very low (i.e. only a very small amount of oil dissolves in water), the Ostwald ripening process will happen extremely slowly. From the standpoint of a numerical model, it is in this situation useful to minimize the flux of mass across the oil-water interface. This is effectively what the interface rule for the color model accomplishes.

Minimizing the mass flux across the interface has a consequence, which is that small droplets may form and they will not dissolve, since the Ostwald ripening process will be effectively killed by the numerical rule at the interface. These little droplets form within films along the solid grain, driven by heterogeneities of the surface. If the surface is flat, they won't form. If there is curvature then the film thickness will vary accordingly and cause droplets to form within small cavities, which may break off from the surface.

Many people working with the color model have been troubled by these small droplets. In a practical simulation case (e.g. as you perform above), what you should care about is how much much these droplets impact the overall rate of mass transport. In a well-resolved system this should be small (our studies have shown this, including comparison with experiments). The subphase analysis module (see https://lbpm-sim.org/userGuide/models/color/analysis/subphase.html) provides a way to estimate this, since transport due to the largerst blob (by volume) is separated from the "disconnected blobs" (which will include all of the small droplets). An advantage of the color model is that, since trapped fluids will not dissolve, representation of the residual oil endpoint will be persistent. Having some film dynamics represented is an advantage, although there are always going to be some questions about whether these physics are represented accurately. Since LBMs are a mesoscopic method, they can represent films better than you might first expect. In any case, the contribution of these effects should be relatively small in a well-resolved image.

In LBMs more generally, small droplets can be eliminated by other methods. The key factor is how the Ostwald ripening mechanism is represented. Shan-Chen methods will reproduce the Ostwald ripening mechanism, but it can be difficult to control the timescale for dissollution (since this is controlled by the same parameter that controls interfacial tension in a "basic" Shan-Chen model). Free energy methods can also capture this effect, but one has to be very careful that the particular scheme conserves mass (many formulations do not). Some of these models are also implemented in LBPM, but they are less mature compared to the color model. For most digital rock applications, the color model is probably the most pragmatic choice. Thousands of alternative schemes have been published, and some of these are certainly worth exploring if addressing this issue is something that you would like to explore.

AlPaPet commented 9 months ago

Thank you very much for your comprehensive answer!