How to simulate CO₂ dissolution into pore water with a 2D mesh in OGS?

Hi OGS team,

I would like to simulate the process of CO₂ dissolving into pore water and observe how the dissolved CO₂ front develops over time.

My scenario is as follows:

  • I use a two-dimensional mesh.
  • At the top boundary, I want to set a CO₂-saturated region (CO₂-rich gas phase); the rest of the domain is water-saturated.
  • The top boundary should have a fixed pressure boundary condition, while all other boundaries are closed (no-flow).

Could you please advise:

  • Which process or module in OGS is best suited for this type of simulation, especially for tracking the dissolved CO₂ concentration in the aqueous phase?
  • Are there any example project files or tutorials available for this kind of setup?
  • If the TWOPHASE_FLOW_WITH_COMPONENT_TRANSPORT process is required, do I need to build OGS from source with specific options?

Thank you very much for your help!

Best regards,

Hi,

There is the Elder problem [1]. In that case, salt is the component. You need to change the parameters, especially viscosity and density, because those are for salt. What you need are the viscosity and the density for dissolved CO₂. At the upper boundary, you can calculate the concentration using Henry’s law [2].

Best regards,
Jan

[1] Saturated Varible-Densitty Flow and Mass Transport(Elder)
[2] Henry's law - Wikipedia

Thank you for your response.
I tried to solve my problem by following Elder problem.

I finally decided that the situation I want to examine make simplified.
That is, the saturated carbonated water exists in top layer. The downward flow was set. And I would see the ongoing CO2aq front.

However, I could not see the movement of CO2 aq front. The situation weitten as below.
Environment

  • OGS-6 v6.5.6 (Windows, serial mode, Eigen threads=1)
  • Mesh: 2D rectangle, 1.0 m × 0.30 m, min cell size ≈ 0.01 m (triangle.vtu)
  • Geometry: BC.gml with polylines LEFT, RIGHT, LOWER, UPPER

Goal

  • See an advection-driven CO2aq front entering from the top boundary (UPPER) and sweeping down to the bottom boundary (LOWER), reaching the bottom in ~3 days.

Observed behavior

  • Darcy y-velocity is ≈ −1.16e−6 m/s (matches the target for 0.30 m / 3 days).
  • UPPER nodes correctly hold CO2aq = 80 by Dirichlet.
  • However, the CO2aq front does not advance between daily outputs; it looks stationary.

Current setup (key points)

  • Process: ComponentTransport (concentration=CO2aq, pressure=pressure)
  • specific_body_force: 0 0 (gravity off to avoid hydrostatic cancellation)
  • Pressure BCs: Dirichlet at UPPER (p_top) and LOWER (p_sink)
  • Concentration BCs: Dirichlet at UPPER (C_eq=80); LEFT/RIGHT are Neumann 0
  • Media: permeability = 1e−12 (also tested 1e−10), porosity = 0.30
  • Pore diffusion: tested 1.5e−9 (typical) and 1.5e−7 (smoothing too strong)
  • Dispersivities: longitudinal = 0.02 m, transversal = 0.005 m
  • Time stepping: dt = 600 s, t_end = 259200 s (3 days), output once per day

I share my .gml and .prj files.

input_files.zip (2.4 KB)

Is this .prj structure sufficient for advection to move the CO2aq front?

Thank you for your cooperation.

Just a random guess, the ratio of mesh size and time step size must fit the problem at hand. Try to increase time step size or refine the mesh.