2D hydrogen storage in an aquifer

Use the existing structural-trap aquifer model for hydrogen build-up and five storage cycles. Gravity, capillarity, and tabulated dissolution are active. The bundled deck uses zero added salt; diffusion and PHREEQC are disabled.

[ ]:
startupH2sim
result = exampleBlackOilAquifer2D('numCycles', 5);

% Redraw saved accepted states.
plotBlackOilAquifer2D(result, 'outputDirectory', ...
    fullfile(pwd, 'build', 'aquifer-figures'));
state = result.states{end};
gasSaturation = state.s(:, 2);
solutionRatio = state.rs;

Plume and well response

Hydrogen plume snapshots

Well response

The 50 m × 50 m grid has a 2 m target spacing. The 500-day schedule includes 120 days of build-up, a 30-day shut-in, and five 70-day cycles. Each cycle contains 30 days of injection, 10 days idle, and 30 days withdrawal. Plume panels share a color scale. result.packedProblem identifies the setup and accepted outputs on disk.

Hydrogen loss due to dissolution

The dissolved share is \(100 V_{\mathrm{diss}}/(V_{\mathrm{diss}}+V_{\mathrm{free}})\), with \(V_{\mathrm{diss}}=\sum_c PV_c S_{l,c} b_{l,c}R_{s,c}\) and \(V_{\mathrm{free}}=\sum_c PV_c S_{g,c}b_{g,c}\). All volumes use the same surface conditions. This measures partitioning out of the free-gas inventory, rather than irreversible consumption or cumulative loss of injected hydrogen. Pressure decline can release dissolved hydrogen.

Dissolved hydrogen and dissolved share over five cycles

Inspect the fluid tables

These pressure-dependent properties come from the existing aquifer input tables, over 30–50 bar. They are not newly generated NIST data.

plotAquiferFluidTables(result);

Aquifer black-oil PVT properties