Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fluid interface issue #88

Open
AlPaPet opened this issue Feb 9, 2024 · 2 comments
Open

Fluid interface issue #88

AlPaPet opened this issue Feb 9, 2024 · 2 comments

Comments

@AlPaPet
Copy link

AlPaPet commented Feb 9, 2024

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
Copy link
Collaborator

JamesEMcClure commented Feb 15, 2024

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
Copy link
Author

AlPaPet commented Feb 16, 2024

Thank you very much for your comprehensive answer!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants