diff --git a/paper/paper.bib b/paper/paper.bib index f85bb7e..789feb1 100644 --- a/paper/paper.bib +++ b/paper/paper.bib @@ -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} } \ No newline at end of file diff --git a/paper/paper.md b/paper/paper.md index 6042363..cacca5a 100644 --- a/paper/paper.md +++ b/paper/paper.md @@ -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]. +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`. + + + +`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]. + + + +`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. # 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 \ No newline at end of file