THMC CO2 injection model

Best approach for adding chemistry to an existing THM CO2 injection model (THMC)?

Hi all,

I’m building a CO2 injection / geological storage model for my final year project, using OGS 6.5.7. I have a working THERMO_HYDRO_MECHANICS model (Volve field dataset, tetrahedral mesh, three permeability zones) and now want to extend it to a full THMC model with reactive transport (calcite dissolution driven by injected CO2, tracking C(4)/Ca/H via PHREEQC).

From reading the docs, changelogs, and forum, my understanding so far is:

  • The native <global_process_coupling>/staggered scheme is for staggering sub-equations within one process (e.g. pressure vs. concentration inside ComponentTransport, or H–M inside HM_PHASE_FIELD) — not for combining two different process types like THERMO_HYDRO_MECHANICS and ComponentTransport in one project file.
  • ComponentTransport has <chemically_induced_porosity_change> + a KozenyCarman permeability model, which handles the chemistry→porosity/permeability feedback natively — but this appears to be scoped to ComponentTransport only, with no equivalent hook in HYDRO_MECHANICS/THERMO_HYDRO_MECHANICS.
  • So my current plan is to run the THM and reactive-transport models as two separate .prj files on the same mesh, staggered externally via a Python driver, exchanging pressure/temperature (THM → C) and porosity/permeability (C → THM) between coupling intervals.

Questions:

  1. Is this external two-file staggering actually the recommended approach for THMC with the current OGS version, or is there a more direct mechanism I’m missing?
  2. Is there existing tooling (ogs6py, ogstools, or something in the benchmark suite) built for exactly this kind of two-process external staggering, rather than me hand-rolling the driver?
  3. Has anyone done chemistry↔mechanics feedback in OGS before (porosity/permeability changes from calcite dissolution affecting a mechanical/stress field), and if so, what did that coupling loop look like in practice?

Happy to share my .prj files if useful. Thanks for any pointers!