OPM / opm-simulators

OPM Flow and experimental simulators, including components such as well models etc.
http://www.opm-project.org
GNU General Public License v3.0
123 stars 121 forks source link

Killough hysteresis model #4 with gas / water for hydrogen storage #4336

Open EdmundStephens opened 1 year ago

EdmundStephens commented 1 year ago

[v2022.10] Please can the group consider implementing the full Killough hysteresis model (EHYSTR option 4) representing relperm and capillary hysteresis for both phases. In particular please could the group test the implementation of gas displacement scanning curves that are key for gas (hydrogen) storage models, which are not correctly modelled in commercial simulators (e.g. E100).

I have developed example models designed to assist your efforts... these are my attempt at physically and syntactically correct modelling of the most important displacement processes (please do challenge where this may not be the case!!). These test models each set up a range of initial saturations in 6 cells, which are then displaced by injection. Summary vectors of relperm (BWKR, BOKR, BGKR) and capillary (BWPC, BGPC) are output to test the correctness of the actual scanning curves for the end point and intermediate saturations.

Model files (all runs in E100): RLP_WO_HYST_REF.zip RLP_GO_HYST_REFx.zip RLP_WG_HYST_REF.zip RLP_GW_HYST_REFx.zip

The attached files include the results and plots:

After considerable effort testing alternate inputs and options, it appears (to me) that E100 does not correctly model hysteresis where gas is the displacing phase. (Again: please challenge this if you think this is a mistaken conclusion!!). In the slide set, I have added schematically on the plots of the RLP_GO and RLP_GW cases of what the scanning curves should look like.

Gas hysteresis is not normally a big issue since there is a low interfacial tension with oil so that hysteretic effects are minimal. But for hydrogen storage the displacement is immiscible with high interfacial tension, The process we wish to model is H2 injection into water bearing formation, partially saturating the formation, then cycles of gas withdrawal and reinjection which will have relperm following the scanning curve of the partial saturation. This is also the case for CCS in saline aquifers, although in that case the solubility of CO2 in water should mean a lower effective interfacial tension.

bska commented 1 year ago

@EdmundStephens: I guess you're talking about the case EHYSTR(2) == 4, right? I believe the 2022.10 release added support for EHYSTR(2) == 2 and EHYSTR(2) == 3 (cf. PRs OPM/opm-material#535 and #4148), but value 4 (both wetting and non-wetting phases) does indeed appear to be unsupported.

@totto82: How much work would it be to add support for EHYSTR(2) == 4?

EdmundStephens commented 1 year ago

Yes indeed, I understand this is for your development track. EHYSTR mode 4 is the most physically correct representation of the saturation dependence, with relperm and capillary trapping of both phases, and it is my hope that these attached test models will help your efforts i) by providing a ready test deck, and ii) to bring to your awareness that E100 does not correctly model the scanning curves in 2 out of these 4 cases.

EdmundStephens commented 1 year ago

A further note on saturation data for H2 storage, the attached picture (with X axis = Sw) shows the desired resaturation scanning curve. The process should follow the scanning curve of the secondary drainage process (gas in pink, water in cyan).

SAT_GW

This is controlled by the EHYSTR argument 6 (HYSTSCAN) which is 'RETR' by default but requires the 'NEW' option to be implemented.

EHYSTR argument 6 (HYSTSCAN)

A character string that determines the shape of Killough capillary pressure scanning curves when 
secondary reversal curves, that is for a drainage, imbibition, drainage cycle.
    1) RETR: Secondary drainage curves re-traverses the same scanning curve.
    2) NEW: Secondary drainage curves follows a new scanning curve and further reversals also 
        generate a new scanning curve.

This option is ignored by OPM Flow.