Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Paper revised version #101

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
140 changes: 140 additions & 0 deletions paper/paper.bib
Original file line number Diff line number Diff line change
Expand Up @@ -56,4 +56,144 @@ @incollection{Sandve:2021
publisher = "SINTEF Academic Press",
year = "2021",
note = "\url{https://hdl.handle.net/11250/2780667}"
}

@article{Virtanen:2020,
author = {Virtanen, Pauli and Gommers, Ralf and Oliphant, Travis E. and
Haberland, Matt and Reddy, Tyler and Cournapeau, David and
Burovski, Evgeni and Peterson, Pearu and Weckesser, Warren and
Bright, Jonathan and {van der Walt}, St{\'e}fan J. and
Brett, Matthew and Wilson, Joshua and Millman, K. Jarrod and
Mayorov, Nikolay and Nelson, Andrew R. J. and Jones, Eric and
Kern, Robert and Larson, Eric and Carey, C J and
Polat, {\.I}lhan and Feng, Yu and Moore, Eric W. and
{VanderPlas}, Jake and Laxalde, Denis and Perktold, Josef and
Cimrman, Robert and Henriksen, Ian and Quintero, E. A. and
Harris, Charles R. and Archibald, Anne M. and
Ribeiro, Ant{\^o}nio H. and Pedregosa, Fabian and
{van Mulbregt}, Paul and {SciPy 1.0 Contributors}},
title = {{{SciPy} 1.0: Fundamental Algorithms for Scientific
Computing in Python}},
journal = {Nature Methods},
year = {2020},
volume = {17},
pages = {261--272},
adsurl = {https://rdcu.be/b08Wh},
doi = {10.1038/s41592-019-0686-2},
}

@software{Gillies:2024,
author = {Gillies, Sean and
van der Wel, Casper and
Van den Bossche, Joris and
Taves, Mike W. and
Arnott, Joshua and
Ward, Brendan C. and
others},
title = {Shapely},
month = aug,
year = 2024,
publisher = {Zenodo},
version = {2.0.6},
doi = {10.5281/zenodo.13345370},
url = {https://doi.org/10.5281/zenodo.13345370}
}

@software{Landa-Marbán:2023,
author = {David Landa-Marbán and
pschultzendorff},
title = {daavid00/pyopmnearwell: v2023.10},
month = dec,
year = 2023,
publisher = {Zenodo},
version = {v2023.10},
doi = {10.5281/zenodo.10266790},
url = {https://doi.org/10.5281/zenodo.10266790}
}

@software{Landa-Marbán:2024,
author = {David Landa-Marbán},
title = {cssr-tools/expreccs: v2024.10},
month = nov,
year = 2024,
publisher = {Zenodo},
version = {v2024.10},
doi = {10.5281/zenodo.14224355},
url = {https://doi.org/10.5281/zenodo.14224355},
swhid = {swh:1:dir:6b25cd770da348dc7698c64290ca734032028fb8
;origin=https://doi.org/10.5281/zenodo.12100600;vi
sit=swh:1:snp:3659276a7b20ad4e45bc4eb21d080474206c
ac65;anchor=swh:1:rel:c6af8235601a770460e4e5b065c7
2667cf6d2207;path=/
},
}

@article{Class:2009,
abstract = {This paper summarises the results of a benchmark study that compares a number of mathematical and numerical models applied to specific problems in the context of carbon dioxide (CO2) storage in geologic formations. The processes modelled comprise advective multi-phase flow, compositional effects due to dissolution of CO2 into the ambient brine and non-isothermal effects due to temperature gradients and the Joule--Thompson effect. The problems deal with leakage through a leaky well, methane recovery enhanced by CO2 injection and a reservoir-scale injection scenario into a heterogeneous formation. We give a description of the benchmark problems then briefly introduce the participating codes and finally present and discuss the results of the benchmark study.},
author = {Class, Holger and Ebigbo, Anozie and Helmig, Rainer and Dahle, Helge K. and Nordbotten, Jan M. and Celia, Michael A. and Audigane, Pascal and Darcis, Melanie and Ennis-King, Jonathan and Fan, Yaqing and Flemisch, Bernd and Gasda, Sarah E. and Jin, Min and Krug, Stefanie and Labregere, Diane and Naderi Beni, Ali and Pawar, Rajesh J. and Sbai, Adil and Thomas, Sunil G. and Trenty, Laurent and Wei, Lingli},
date = {2009/12/01},
date-added = {2024-12-03 12:41:48 +0100},
date-modified = {2024-12-03 12:41:48 +0100},
doi = {10.1007/s10596-009-9146-x},
id = {Class2009},
isbn = {1573-1499},
journal = {Computational Geosciences},
number = {4},
pages = {409--434},
title = {A benchmark study on problems related to CO2 storage in geologic formations},
url = {https://doi.org/10.1007/s10596-009-9146-x},
volume = {13},
year = {2009},
bdsk-url-1 = {https://doi.org/10.1007/s10596-009-9146-x}
}

@article{Fraters:2024,
doi = {10.21105/joss.06671},
url = {https://doi.org/10.21105/joss.06671},
year = {2024},
publisher = {The Open Journal},
volume = {9},
number = {101},
pages = {6671},
author = {Menno R. t. Fraters and Magali I. Billen and Rene Gassmöller and Arushi Saxena and Timo Heister and Haoyuan Li and Daniel Douglas and Juliane Dannberg and Wolfgang Bangerth and Yijun Wang},
title = {The Geodynamic World Builder: A planetary structure creator for the geosciences},
journal = {Journal of Open Source Software}
}

@article{Beucher:2019,
doi = {10.21105/joss.01136}, url = {https://doi.org/10.21105/joss.01136},
year = {2019},
publisher = {The Open Journal},
volume = {4},
number = {36},
pages = {1136},
author = {Romain Beucher and Louis Moresi and Julian Giordani and John Mansour and Dan Sandiford and Rebecca Farrington and Luke Mondy and Claire Mallard and Patrice Rey and Guillaume Duclaux and Owen Kaluza and Arijit Laik and Sara Morón},
title = {UWGeodynamics: A teaching and research tool for numerical geodynamic modelling},
journal = {Journal of Open Source Software}
}

@article{Kaus:2024,
doi = {10.21105/joss.06763},
url = {https://doi.org/10.21105/joss.06763},
year = {2024},
publisher = {The Open Journal},
volume = {9},
number = {103},
pages = {6763},
author = {Boris J.p. Kaus and Marcel Thielmann and Pascal Aellig and Albert de Montserrat and Luca de Siena and Jacob Frasukiewicz and Lukas Fuchs and Andrea Piccolo and Hendrik Ranocha and Nicolas Riel and Christian Schuler and Arne Spang and Tatjana Weiler},
title = {GeophysicalModelGenerator.jl: A Julia package to visualise geoscientific data and create numerical model setups},
journal = {Journal of Open Source Software}
}

@article{Sullivan:2019,
doi = {10.21105/joss.01450},
url = {https://doi.org/10.21105/joss.01450},
year = {2019},
publisher = {The Open Journal},
volume = {4},
number = {37},
pages = {1450},
author = {C. Bane Sullivan and Alexander A. Kaszynski},
title = {PyVista: 3D plotting and mesh analysis through a streamlined interface for the Visualization Toolkit (VTK)},
journal = {Journal of Open Source Software}
}
52 changes: 34 additions & 18 deletions paper/paper.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,47 +25,63 @@ bibliography: paper.bib

The imperative to achieve climate change goals and the increasing worldwide demand for energy
have made carbon capture and storage (CCS) technology more relevant today.
Since utilizing computational models is essential for planning large-scale CCS projects, then it is crucial
to benchmark simulation tools to enhance confidence in the results. Inspired by
Since utilizing computational models is essential for planning large-scale CCS projects, it is crucial
to benchmark simulation tools to enhance confidence in their results. Inspired by
a recent validation study for laboratory-scale CO$_2$ storage [@Flemisch:2024], a new comparative
solution project (CSP) was launched to simulate both lab- and field-scale CO$_2$ storage [@Nordbotten:2024].
As part of the Early Access team, the authors have developed and made open the
`pyopmspe11` tool which facilitates reproducible solutions to the benchmark. This tool serves as a
common starting point for developing and testing new simulation technology. It is expected that its impact
will extend far beyond the initial benchmark study.
`pyopmspe11` tool which facilitates reproducible solutions to the SPE11 benchmark. This tool serves as a
common starting point for developing and testing new simulation technology. Due to its user-friendly functionality
(e.g., generation of different type of grids at different grid resolutions, flexibility to chose different rock and
fluid properties, flexibility to define well/source locations and schedule for operations), then it is expected that
its impact will extend far beyond the initial benchmark study (e.g., studys focusing on grid refinment, upscaling/coarsening
approaches, numerical solvers, optimization/history matching techniques).

![Generated model by the configuration file `spe11c_cp_ca20e6cells.txt` in the examples folder.](paper.png){ width=100% }

# Statement of need

Geological carbon storage (GCS) applications benefit from both commercial and open-source simulators.
However, using open-source simulators often involves data preprocessing and postprocessing, which can be
challenging for those without advanced programming knowledge. Additionally, setting up and running simulations
requires engineering expertise. To bridge this gap, developers can simplify the setup of numerical studies by
using user-friendly approaches, such as configuration files. This not only ensures result reproducibility but
However, using numerical simulators often involves data preprocessing and postprocessing, which can be
challenging for everyone even if you know what you are doing. Additionally, setting up and running simulations
requires computational expertise. To bridge this gap, developers can simplify the setup of numerical studies by
using user-friendly approaches, such as configuration files. This not only ensures reproducibility of results but
also facilitates flexible testing of different simulator parameters and allows for easy extension to further studies.
Notable works are available in JOSS for pre-/postprocessing of simulation data, e.g., @Beucher:2019, @Sullivan:2019, @Fraters:2024, @Kaus:2024.
Examples of tools which application is also in GCS and relies on the OPM Flow simulator
are `pyopmnearwell` [@Landa-Marbán:2023] and `expreccs` [@Landa-Marbán:2024]. The former focuses on near well dynamics, while the
latter on seamless, dynamic, and non-invasive exchange of pressure-related information between local and regional scales.

`pyopmspe11` is a simplified and flexible Python tool for the three cases in the SPE Comparative Solution
Project via configuration files. `pyopmspe11` relies on the OPM Flow numerical simulator [@Rassmussen:2021], where the


Based on the acquired knowledge by developing the aforementioned tools, as well as from using/contributing to other open-source projects, then we have developed and made open the `pyopmspe11` tool which facilitates reproducible solutions to the SPE11 benchmark, which focus on GCS at different scales [@Nordbotten:2024].
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Based on the acquired knowledge by developing the aforementioned tools, as well as from using/contributing to other open-source projects, then we have developed and made open the `pyopmspe11` tool which facilitates reproducible solutions to the SPE11 benchmark, which focus on GCS at different scales [@Nordbotten:2024].
Based on the acquired knowledge by developing the aforementioned tools, as well as from using/contributing to other open-source projects, we have developed and made open the `pyopmspe11` tool. `pyopmspe11` facilitates reproducible solutions to the SPE11 benchmark, which focuses on GCS at different scales [@Nordbotten:2024].

A previous benchmark study for GCS can be found in @Class:2009. One key differece of the SPE11 benchmark from the previous one is that no grids were given in the description, i.e., one of the main task for the participants was to create suitable grids (e.g., structured grids such as Cartesian or unscrtuctured grids such as corner-point grids). The participants were encouraged to share data (e.g., input decks, code, submitted results), with the opportunity to store the data for open access. This is where developing tools that made all steps reprodubible (i.e., preprocessing and postprocessing) become handy, and for this benchmark study, one available tool is `pyopmspe11`.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
A previous benchmark study for GCS can be found in @Class:2009. One key differece of the SPE11 benchmark from the previous one is that no grids were given in the description, i.e., one of the main task for the participants was to create suitable grids (e.g., structured grids such as Cartesian or unscrtuctured grids such as corner-point grids). The participants were encouraged to share data (e.g., input decks, code, submitted results), with the opportunity to store the data for open access. This is where developing tools that made all steps reprodubible (i.e., preprocessing and postprocessing) become handy, and for this benchmark study, one available tool is `pyopmspe11`.
A previous benchmark study for GCS can be found in @Class:2009. One key differece of the SPE11 benchmark from the previous one is that no grids were given in the description, i.e., one of the main task for the participants was to create suitable grids (e.g., structured grids such as Cartesian or unstructured grids such as corner-point grids). The participants were encouraged to share data (e.g., input decks, code, submitted results), with the opportunity to store the data for open access. This is where developing tools that made all steps reproducible (i.e., preprocessing and postprocessing) become handy, and for this benchmark study, one available tool is `pyopmspe11`.




`pyopmspe11` is a simplified and flexible Python tool to execute the three cases in the SPE Comparative Solution
Project using configuration files. `pyopmspe11` relies on the OPM Flow numerical simulator [@Rassmussen:2021], where the
implementation of the CO$_2$ model can be found in @Sandve:2021. The primary contribution of `pyopmspe11` lies in its
data preprocessing and postprocessing capabilities. It offers flexibility in generating various types of grids,
including Cartesian, tensor, and corner-point grids. These grids adhere to standard industry formats, making them
compatible not only with OPM Flow but also with other simulators. Additionally, `pyopmspe11` supports different resolutions,
having been tested to generate approximately 160 million cells. In the context of data postprocessing, `pyopmspe11` not only
including Cartesian, tensor, and corner-point grids. These grids adhere to the standard industry format (i.e., Eclipse grid format), making them
compatible not only with OPM Flow but also with other simulators. Here, we mention two existing widely-use visualization/postrocessing software for OPM Flow: [ParaView](https://www.paraview.org) and [ResInsight](https://resinsight.org). While these tools are very useful, to the authors knolwedge, there is no existing functionality in these tools to handle all the necessary postporcessing to generate all data reporting as required in the SPE11 benchmark study. For example, to write the csv maps of the quantities from a simulation grid to a given reporting grid, where both grids do not overlap, or to compute the convective mixing as defined in Eq. (17) in [@Nordbotten:2024].
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
compatible not only with OPM Flow but also with other simulators. Here, we mention two existing widely-use visualization/postrocessing software for OPM Flow: [ParaView](https://www.paraview.org) and [ResInsight](https://resinsight.org). While these tools are very useful, to the authors knolwedge, there is no existing functionality in these tools to handle all the necessary postporcessing to generate all data reporting as required in the SPE11 benchmark study. For example, to write the csv maps of the quantities from a simulation grid to a given reporting grid, where both grids do not overlap, or to compute the convective mixing as defined in Eq. (17) in [@Nordbotten:2024].
compatible not only with OPM Flow but also with other simulators. Here, we mention two existing widely-use visualization/postprocessing software for OPM Flow: [ParaView](https://www.paraview.org) and [ResInsight](https://resinsight.org). While these tools are very useful, to the authors knowledge, there is no existing functionality in these tools to generate all postprocessed data as required in the SPE11 benchmark study. For example, to write the csv maps of the quantities from a simulation grid to a given reporting grid, where both grids do not overlap, or to compute the convective mixing as defined in Eq. (17) in [@Nordbotten:2024].

Not sure the last sentence is quite correct (you can do a lot of interpolation to other specified grids and/or complex calculations (even embedded python functions) inside Paraview. However, I of course see the benefit of having all that already readily created in a specialized tool, so feel free to keep the sentence.




`pyopmspe11` supports varying resolutions, having been tested to generate up to 160 million cells. In the context of data postprocessing, `pyopmspe11` not only
generates the necessary reporting data as specified by the benchmark, but it also produces .png figures for rapid inspection
of individual simulations and for making comparisons between different runs (e.g., to assess sensitivities). The postprocessing
methods efficiently map non-overlapping cell values (both intensive and extensive quantities) between the simulation grid and
the reporting grid.
methods efficiently interpolates quantities over time and map non-overlapping cell values (both intensive and extensive quantities) between the simulation grid and the reporting grid. The Python package Scipy [@Virtanen:2020], specifically the interp1d Class, is used for the time interpolation. The Python package Shapely [@Gillies:2024], speficically the Polygon Class, is the base for the developed methods in `pyopmspe11` to handle the mapping from the simulation grid to the reporting grid.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
methods efficiently interpolates quantities over time and map non-overlapping cell values (both intensive and extensive quantities) between the simulation grid and the reporting grid. The Python package Scipy [@Virtanen:2020], specifically the interp1d Class, is used for the time interpolation. The Python package Shapely [@Gillies:2024], speficically the Polygon Class, is the base for the developed methods in `pyopmspe11` to handle the mapping from the simulation grid to the reporting grid.
methods efficiently interpolates quantities over time and map non-overlapping cell values (both intensive and extensive quantities) between the simulation grid and the reporting grid. The Python package Scipy [@Virtanen:2020], specifically the interp1d Class, is used for the time interpolation. The Python package Shapely [@Gillies:2024], specifically the Polygon Class, is the base for the developed methods in `pyopmspe11` to handle the mapping from the simulation grid to the reporting grid.


# Outlook
`pyopmspe11` is designed for use by researchers, engineers, and students. During the preliminary intercomparison workshops for
the benchmark study, the authors received positive feedback about the framework. Some participant groups have utilized `pyopmspe11`, particularly
for grid generation. Additionally, the authors have been contacted to provide specific support on how to use the tool for setting up
further studies, such as optimizing injection strategies. Looking ahead, the plan for `pyopmspe11`’s future development includes extending
its functionality to incorporate additional physical models (e.g., hydrogen storage, salt precipitation, biofilm effects).
its functionality to support the generation of input decks to run simulations of physical models available in OPM Flow in addition to CO$_2$ storage (e.g., hydrogen storage, salt precipitation, biofilm effects).

# Acknowledgements

The authors acknowledge funding from the [Center for Sustainable Subsurface Resources (CSSR)](https://cssr.no), grant nr. 331841, supported by the Research Council of Norway, research partners NORCE Norwegian Research Centre and the University of Bergen, and user partners Equinor ASA, Wintershall Dea Norge AS, Sumitomo Corporation, Earth Science Analytics, GCE Ocean Technology, and SLB Scandinavia. The authors also acknowledge funding from the [HPC Simulation Software for the Gigatonne Storage Challenge project](https://www.norceresearch.no/en/projects/hpc-simulation-software-for-the-gigatonne-storage-challenge), grant nr. 622059, supported by Equinor ASA and CLIMIT DEMO/Gassnova.
The authors acknowledge funding from the [Center for Sustainable Subsurface Resources (CSSR)](https://cssr.no), grant nr. 331841, supported by the Research Council of Norway, research partners NORCE Norwegian Research Centre and the University of Bergen, and user partners Equinor ASA, Harbour Energy, Sumitomo Corporation, Earth Science Analytics, GCE Ocean Technology, and SLB Scandinavia. The authors also acknowledge funding from the [HPC Simulation Software for the Gigatonne Storage Challenge project](https://www.norceresearch.no/en/projects/hpc-simulation-software-for-the-gigatonne-storage-challenge), grant nr. 622059, supported by Equinor ASA and CLIMIT DEMO/Gassnova.

# References
Loading