Skip to content

quantumfi/C02Plume

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 

Repository files navigation

CO2 Plume Simulator — Composite Finite-Core / Barenblatt Model

Analytical MATLAB simulator for CO₂ plume evolution in porous media under time-dependent (stair-like) injection schedules. Fernando Alonso-Marroquin and Christian Tantardini

This repository implements a vertically averaged sharp-interface model based on:

  • Nonlinear diffusion (q–Porous Media Equation)
  • Barenblatt compact-support similarity solutions
  • A transient full-thickness core model
  • Piecewise-constant (stair-like) injection schedules

The simulator produces:

  • Time evolution of plume thickness profile b(r,t)
  • Core radius a(t)
  • Plume edge R(t)
  • Injection-rate history
  • Movie of plume evolution

Physical Model

Governing Structure

The plume thickness is modeled as:

b(r,t) =

  • H for 0 ≤ r ≤ a(t)
  • Barenblatt tail for a(t) < r < R(t)
  • 0 for r ≥ R(t)

This represents:

  • A full-thickness CO₂ core near the well
  • A compact-support nonlinear diffusion tail
  • A sharp plume edge

The Barenblatt tail is:

b(r,t) = t^{-α_B} [ C(t) - K_b r² t^{-2β_B} ]_+^{1/(1-q)}

with exponents:

β_B = 1 / [ 2(2 - q) ]
α_B = 1 / (2 - q)


Vertical Segregation Assumption

The model assumes rapid vertical segregation:

  • CO₂ forms a uniform upper layer of thickness b(r,t)
  • Brine occupies the lower region
  • Vertical mixing and capillary transition zones are neglected
  • Phase densities are treated as constant

This reduces the 3D problem to a 1D radial thickness evolution.


Injection Schedule Handling

The simulator supports stair-like injection schedules:

Q(t) = piecewise constant

Examples:

  • Constant injection
  • Shut-in (Q = 0)
  • Variable-rate field operation
  • Alternating injection/shut-in

Each injection stage updates:

  • Total injected volume
  • Core radius a(t)
  • Tail amplitude C(t)

This allows realistic operational histories to be approximated analytically.


Software Structure

The repository contains:

1️⃣ run_plume_simulation.m

Driver script where you define:

  • Aquifer thickness H
  • Porosity φ
  • Residual brine saturation S_br
  • Diffusivity D_b
  • q exponent
  • Injection schedule (time intervals + rates)
  • Simulation time

2️⃣ plume_solver.m

Main function that:

  • Computes b(r,t), a(t), R(t)
  • Evolves plume over time
  • Plots injection rate vs time
  • Generates movie of plume evolution
  • Exports video file

How to Run

  1. Open MATLAB
  2. Edit parameters in:
run_plume_simulation.m

About

Barenblatt model for CO2 Plume dynamics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages