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 insideComponentTransport, or H–M insideHM_PHASE_FIELD) — not for combining two different process types likeTHERMO_HYDRO_MECHANICSandComponentTransportin one project file. ComponentTransporthas<chemically_induced_porosity_change>+ aKozenyCarmanpermeability model, which handles the chemistry→porosity/permeability feedback natively — but this appears to be scoped toComponentTransportonly, with no equivalent hook inHYDRO_MECHANICS/THERMO_HYDRO_MECHANICS.- So my current plan is to run the THM and reactive-transport models as two separate
.prjfiles on the same mesh, staggered externally via a Python driver, exchanging pressure/temperature (THM → C) and porosity/permeability (C → THM) between coupling intervals.
Questions:
- 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?
- 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?
- 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!