Quick start¶
After Installation, choose one of the three model families. All examples below use serial execution.
Hydrogen storage in saline aquifers¶
startupH2sim
result = exampleBlackOilAquifer2D;
lastState = result.states{end};
gasSaturation = lastState.s(:, 2);
plotBlackOilAquifer2D(result);
The example uses a 2D structural trap with hydrogen build-up and five storage cycles. Gravity, capillarity, and dissolved hydrogen use the existing aquifer model and input tables. See Hydrogen storage in saline aquifers and Thermodynamics and PVT tabulation.
Hydrogen storage in depleted gas reservoirs¶
results = exampleCompositionalBacterial2DThreeReactions( ...
'numCycles', 5, 'scenarios', {'bacterial', 'abiotic'}, ...
'molecularDiffusion', false, 'molecularDispersion', false);
plotCompositionalBacterial2DThreeReactions(results);
Open the compositional notebook in Selected examples and notebooks to inspect the setup, well controls, microbial populations, and transport plots.
Short PHREEQC mineral comparison¶
With IPhreeqcCOM configured (see Installation):
comparison = exampleCompositionalBacterial1DPhreeqcMinerals( ...
'gridCells', 4, 'maximumFlowSteps', 2);
pH = comparison(2).states{end}.phreeqcPH;
Redraw the completed states without solving again:
plotPhreeqcMineralComparison(comparison, ...
'outputDirectory', fullfile(pwd, 'build', 'my-figures'));
These cases use different kinetic owners. Read PHREEQC coupling before interpreting a backend comparison as a sensitivity to mineral chemistry.