-
Notifications
You must be signed in to change notification settings - Fork 91
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
docs: GEOS paper submittal to JOSS #2886
Changes from 11 commits
54e927f
2b29b95
750862e
d55e5af
285f40c
f290eac
be52de7
cb5f8e1
8c19ccc
e50e46a
ed8f1fd
7b6dc25
ff87cd3
cb95a59
4a75ec7
567c151
e6adf8b
ba0d784
f061207
22bcf82
b98fce1
cc6aa8e
324d9b3
44e587f
ff5b361
1c0894a
1eba4d9
68ad585
f22be36
15e3d78
1cf51ea
affa149
6c78496
98a5fb5
8b7e179
048868c
794b84b
bcbdf03
8672c68
826c203
e28722e
9b82675
8c001e9
609103c
a62482e
0509c81
19a6700
fa9e0e2
a17a223
b72c3a3
653e93a
b2b2707
2abfbc8
0966865
cc3f0be
284f98d
45cddd1
d78492a
99fca7c
6e6431f
bb78dcd
026aa18
fcad4dc
9d27ba0
ab27ff0
3cc8ea7
2b1ca8a
7b8f83a
5a98c81
e108726
316b8b4
65b259b
80d0d13
4b4f155
a7e0518
2d3ef6f
8b3d92e
eb4aa4c
a4faddd
778204b
6a2af5d
c97947a
4a2706b
8aa32c0
a13429d
8bc0a8c
9efe862
6521858
9c400b4
feb93fa
1b40991
cd4bd50
bd4eba5
f0e2131
31d3ca9
80ae94b
a4fcd2a
ef0a13b
04e3f51
e388b70
8ec312e
2d9360e
986c251
9479bca
626f0d4
ff074dc
c761667
774c76f
387e435
20e74ff
446d68a
e20b6ea
d3ce292
007629e
889c8d0
aec27cf
5e5222f
53242fb
d153993
6cd110b
b89d201
4a57749
d3af213
51b79b7
135d913
cb59bbe
2fc7b04
b0e7f06
ce3e177
44efdd9
f19434c
e538311
fec8f63
7652709
4a402f7
fe1086a
d811b45
ba28c76
aafe671
0050783
89cc18f
b5c3d8b
7cd2c27
7902695
b022bd7
d796432
54ebb70
9c2c61d
e958d39
10116be
6a5df34
82c90ce
185a884
72b92a5
5a3cd44
49cd284
8498655
37cdc33
7a6c3b2
ce75916
1dd3456
8e3a0e2
d092921
527ce5b
1531466
475e185
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
on: [push] | ||
|
||
jobs: | ||
paper: | ||
runs-on: ubuntu-latest | ||
name: Paper Draft | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
- name: Build draft PDF | ||
uses: openjournals/openjournals-draft-action@master | ||
with: | ||
journal: joss | ||
# This should be the path to the paper within your repo. | ||
paper-path: src/docs/JOSS/paper.md | ||
- name: Upload | ||
uses: actions/upload-artifact@v1 | ||
with: | ||
name: paper | ||
# This is the output path where Pandoc will write the compiled | ||
# PDF. Note, this should be the same directory as the input | ||
# paper.md | ||
path: src/docs/JOSS/paper.pdf |
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. we should update this figure because some things have changed since when it was made (e.g., the There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think @TotoGaz generated this...but perhaps this figure is not required for the paper...and it can just be updated in the documentation. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It's generated on the fly from |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,95 @@ | ||
@article{Beckingsale:2019, | ||
abstract = {Modern high-performance computing systems are diverse, with hardware designs ranging from homogeneous multi- core CPUs to GPU or FPGA accelerated systems. Achieving desir- able application performance often requires choosing a program- ming model best suited to a particular platform. For large codes used daily in production that are under continual development, architecture-specific ports are untenable. Maintainability re- quires single-source application code that is performance portable across a range of architectures and programming models. In this paper we describe RAJA, a portability layer that enables C++ applications to leverage various programming models, and thus architectures, with a single-source codebase. We describe preliminary results using RAJA in three large production codes at Lawrence Livermore National Laboratory, observing 17×, 13× and 12× speedup on GPU-only over CPU- only nodes with single-source application code in each case.}, | ||
author = {Beckingsale, David A. and Scogland, Thomas R.W. and Burmark, Jason and Hornung, Rich and Jones, Holger and Killian, William and Kunen, Adam J. and Pearce, Olga and Robinson, Peter and Ryujin, Brian S.}, | ||
doi = {10.1109/P3HPC49587.2019.00012}, | ||
file = {:Users/settgast1/Documents/Mendeley Desktop/Beckingsale et al/2019/RAJA Portable Performance for Large-Scale Scientific Applications/Beckingsale et al. - 2019 - RAJA Portable Performance for Large-Scale Scientific Applications.pdf:pdf}, | ||
isbn = {9781728160030}, | ||
journal = {Proceedings of P3HPC 2019: International Workshop on Performance, Portability and Productivity in HPC - Held in conjunction with SC 2019: The International Conference for High Performance Computing, Networking, Storage and Analysis}, | ||
pages = {71--81}, | ||
title = {{RAJA: Portable Performance for Large-Scale Scientific Applications}}, | ||
year = {2019} | ||
} | ||
|
||
@misc{CHAI:2023, | ||
title = {CHAI}, | ||
year = {2023}, | ||
publisher = {GitHub}, | ||
journal = {GitHub repository}, | ||
url = {https://github.com/LLNL/chai} | ||
} | ||
|
||
@article{Beckingsale:2020, | ||
abstract = {Advanced architectures like Sierra provide a wide range of memory resources that must often be carefully controlled by the user. These resources have varying capacities, access timing rules, and visibility to different compute resources. Applications must intelligently allocate data in these spaces, and depending on the total amount of memory required, applications may also be forced to move data between different parts of the memory hierarchy. Finally, applications using multiple packages must coordinate effectively to ensure that each package can use the memory resources it needs. To address these challenges, we present Umpire, an application-oriented library for managing memory resources. Specifically, Umpire provides support for querying memory resources, provisioning and allocating memory, and memory introspection. It allows computer scientists and computational physicists to efficiently program the memory hierarchies of current and future high-performance computing architectures, without tying their application to specific hardware or software. In this article, we describe the design and implementation of Umpire and present case studies from the integration of Umpire into applications that are currently running on Sierra.}, | ||
author = {Beckingsale, D. A. and McFadden, M. J. and Dahm, J. P.S. and Pankajakshan, R. and Hornung, R. D.}, | ||
doi = {10.1147/JRD.2019.2954403}, | ||
file = {:Users/settgast1/Documents/Mendeley Desktop/Beckingsale et al/2020/Umpire Application-focused management and coordination of complex hierarchical memory/Beckingsale et al. - 2020 - Umpire Application-focused management and coordination of complex hierarchical memory.pdf:pdf}, | ||
issn = {21518556}, | ||
journal = {IBM Journal of Research and Development}, | ||
number = {3-4}, | ||
pages = {1--10}, | ||
title = {{Umpire: Application-focused management and coordination of complex hierarchical memory}}, | ||
volume = {64}, | ||
year = {2020} | ||
} | ||
|
||
|
||
|
||
@article{Pearson:2017, | ||
url = {http://adsabs.harvard.edu/abs/2017arXiv170304627P}, | ||
Archiveprefix = {arXiv}, | ||
Author = {{Pearson}, S. and {Price-Whelan}, A.~M. and {Johnston}, K.~V.}, | ||
Eprint = {1703.04627}, | ||
Journal = {ArXiv e-prints}, | ||
Keywords = {Astrophysics - Astrophysics of Galaxies}, | ||
Month = mar, | ||
Title = {{Gaps in Globular Cluster Streams: Pal 5 and the Galactic Bar}}, | ||
Year = 2017 | ||
} | ||
|
||
@book{Binney:2008, | ||
url = {http://adsabs.harvard.edu/abs/2008gady.book.....B}, | ||
Author = {{Binney}, J. and {Tremaine}, S.}, | ||
Booktitle = {Galactic Dynamics: Second Edition, by James Binney and Scott Tremaine.~ISBN 978-0-691-13026-2 (HB).~Published by Princeton University Press, Princeton, NJ USA, 2008.}, | ||
Publisher = {Princeton University Press}, | ||
Title = {{Galactic Dynamics: Second Edition}}, | ||
Year = 2008 | ||
} | ||
|
||
@article{gaia, | ||
author = {{Gaia Collaboration}}, | ||
title = "{The Gaia mission}", | ||
journal = {Astronomy and Astrophysics}, | ||
archivePrefix = "arXiv", | ||
eprint = {1609.04153}, | ||
primaryClass = "astro-ph.IM", | ||
keywords = {space vehicles: instruments, Galaxy: structure, astrometry, parallaxes, proper motions, telescopes}, | ||
year = 2016, | ||
month = nov, | ||
volume = 595, | ||
doi = {10.1051/0004-6361/201629272}, | ||
url = {http://adsabs.harvard.edu/abs/2016A%26A...595A...1G}, | ||
} | ||
|
||
@article{astropy, | ||
author = {{Astropy Collaboration}}, | ||
title = "{Astropy: A community Python package for astronomy}", | ||
journal = {Astronomy and Astrophysics}, | ||
archivePrefix = "arXiv", | ||
eprint = {1307.6212}, | ||
primaryClass = "astro-ph.IM", | ||
keywords = {methods: data analysis, methods: miscellaneous, virtual observatory tools}, | ||
year = 2013, | ||
month = oct, | ||
volume = 558, | ||
doi = {10.1051/0004-6361/201322068}, | ||
url = {http://adsabs.harvard.edu/abs/2013A%26A...558A..33A} | ||
} | ||
|
||
@misc{fidgit, | ||
author = {A. M. Smith and K. Thaney and M. Hahnel}, | ||
title = {Fidgit: An ungodly union of GitHub and Figshare}, | ||
year = {2020}, | ||
publisher = {GitHub}, | ||
journal = {GitHub repository}, | ||
url = {https://github.com/arfon/fidgit} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,134 @@ | ||
--- | ||
title: 'GEOS-2023: A portable multi-physics simulation framework' | ||
tags: | ||
- reservoir simulations | ||
- computational mechanics | ||
- multiphase flow | ||
- c++ | ||
authors: | ||
- name: Randolph R. Settgast | ||
orcid: 0000-0002-2536-7867 | ||
corresponding: true | ||
affiliation: 1 | ||
- name: Benjamin C. Corbett | ||
affiliation: 1 | ||
- name: James Corbett | ||
affiliation: 1 | ||
- name: Francois Hamon | ||
affiliation: 2 | ||
- name: Thomas Gazzola | ||
affiliation: 2 | ||
- name: Matteo Cusini | ||
affiliation: 1 | ||
- name: Chris S. Sherman | ||
affiliation: 1 | ||
- name: Sergey Klevzoff | ||
affiliation: 3 | ||
- name: Nicola Castelletto | ||
affiliation: 1 | ||
- name: Victor Paludetto Magri | ||
affiliation: 1 | ||
- name: William R. Tobin | ||
affiliation: 1 | ||
- name: Joshua White | ||
affiliation: 1 | ||
- name: Brian M. Han | ||
affiliation: 1 | ||
- name: Herve Gross | ||
affiliation: 2 | ||
- name: Stefano Framba | ||
rrsettgast marked this conversation as resolved.
Show resolved
Hide resolved
|
||
affiliation: 2 | ||
- name: Aurilian Citrain | ||
rrsettgast marked this conversation as resolved.
Show resolved
Hide resolved
|
||
affiliation: 2 | ||
- name: Andrea Franceschini | ||
affiliation: 2 | ||
- name: Andrea Borio | ||
affiliation: 4 | ||
- name: Jian Huang | ||
affiliation: 2 | ||
affiliations: | ||
- name: Lawrence Livermore National Laboratory, USA | ||
index: 1 | ||
- name: TotalEnergies E&P Research & Technology, USA | ||
index: 2 | ||
- name: Stanford University, USA | ||
index: 3 | ||
- name: Politecnico di Torino, Italy | ||
date: 15 December 2023 | ||
bibliography: paper.bib | ||
|
||
--- | ||
|
||
# Summary | ||
|
||
GEOS is a simulation framework focused on implementing tightly-coupled multi-physics problems with an initial emphasis subsurface reservoir applications. | ||
Specifically, GEOS provides implementations for studying carbon sequestration, geothermal energy, hydrogen storage, and similar problems, and allows developers to easily extend or add new formulations to the suite of capabilities. | ||
The unique aspect of GEOS that differentiates it from existing reservoir simulators is the ability to provide tightly-coupled compositional flow, poromechanics, faults and fractures, and thermal effects. | ||
Extensive documentation for GEOS is available at https://geosx-geosx.readthedocs-hosted.com/en/latest. | ||
|
||
# Statement of need | ||
|
||
The increasing threat of climate change has resulted in an increased focus on mitigating carbon emissions into the atmosphere. | ||
Carbon Capture and Storage (CCS) of CO2 in subsurface reservoirs and saline aquifers is one of the most important technologies required to meet global climate goals. | ||
Given the 2050 net-zero GHG goals, CO2 storage capacities required to offset emissions is orders of magnitude greater than current levels.(reference needed) | ||
One factor in the evaluation of CO2 storage sites are the containment risks associated with the injection of liquefied CO2 in the subsurface. | ||
The primary goal of GEOS is to provide the global community with an open-source tool that is capable of simulating the complex coupled physics that occurs when liquefied CO2 is injected into a subsurface reservoir. | ||
castelletto1 marked this conversation as resolved.
Show resolved
Hide resolved
|
||
Thus, GEOS is a freely available tool that is focused on the simulation of reservoir integrity through various failure mechanisms such as caprock failure, fault leakage, and wellbore failure. | ||
Additionally GEOS provides the potential to estimate seismic events induced by CO2 injection. | ||
|
||
# C++ Infrastructure Components | ||
|
||
The core c++17 infrastructure provides components to perform common computer science tasks that are required in a simulation code. | ||
The components of the infrastructure include a data hierarchy, a discrete mesh data structure, a physics package interface, MPI communications tools, degree-of-freedom management, IO facilities, and an event manager. | ||
|
||
The data repository defines a `Wrapper` class to hold anything from data arrays to arbitrary objects, and a `Group` class that serves as a container to form a hierarchy. | ||
Drawing an analogy with a standard folder/file hierarchy, the `Group` class can be thought of as a "Folder" as it holds other `Group`'s as well as a collection of `Wrapper` objects. | ||
The `Wrapper` can be thought of as a "File" as it contains the relevant data that is stored in the repository. | ||
The mesh interface is built on top of the data repository as a collection of managers for each mesh object type as shown in Figure \autoref{fig:meshHierarchy}. | ||
On each MPI rank there is a `MeshBody` object that represents a physical body. | ||
Each `MeshBody` contains a collection of `MeshLevel` objects that represent a discretization of the `MeshBody`. | ||
Each `MeshLevel` holds a collection of managers objects that contain data on each type of discrete mesh object (i.e. nodes, edges, faces, elements). | ||
The role of each mesh object manager is to hold maps between the mesh objects, and to hold field/dof data. | ||
|
||
{ width=40% } | ||
|
||
The performance portability strategy utilized by GEOS applies LLNL's suite of portability tools RAJA[@Beckingsale:2019], CHAI[@CHAI:2023], and Umpire[@Beckingsale:2020]. | ||
The RAJA performance portability layer provides portable kernel launching and wrappers for reductions, atomics, and local/shared memory to achieve performance on both CPU and GPU hardware. | ||
The combination of CHAI/Umpire provides memory motion management for platforms with heterogeneous memory spaces (i.e. host memory and device memory). | ||
Through this strategy GEOS has been successfully run on platforms ranging from GPU-based Exa-scale systems to CPU-based laptops. | ||
|
||
|
||
In addition to the c++ core, GEOS maintains a Python3 interface that allows for the integration of the simulation capabilities into complex python workflows involving components unrelated to GEOS. | ||
The Python3 interface provides data exchange between GEOS simulations and the Python driver, as well as allowing the Python layer to call specific GEOS packages outside of standard GEOS event manager workflow. | ||
|
||
# Applications | ||
The development of GEOS specifically targets simulation of subsurfaces reservoirs. | ||
To date GEOS has been used to simulate problems relevant to CO2 storage, enhanced geothermal systems, hydrogen storage, and both conventional and unconventional oil and gas extraction. | ||
|
||
However, GEOS is intended to be a generic multi-physics simulation platform. | ||
|
||
Single dollars ($) are required for inline mathematics e.g. $f(x) = e^{\pi/x}$ | ||
|
||
Double dollars make self-standing equations: | ||
|
||
$$\Theta(x) = \left\{\begin{array}{l} | ||
0\textrm{ if } x < 0\cr | ||
1\textrm{ else} | ||
\end{array}\right.$$ | ||
|
||
You can also use plain \LaTeX for equations | ||
\begin{equation}\label{eq:fourier} | ||
\hat f(\omega) = \int_{-\infty}^{\infty} f(x) e^{i\omega x} dx | ||
\end{equation} | ||
and refer to \autoref{eq:fourier} from text. | ||
|
||
# Acknowledgements | ||
|
||
|
||
This work performed under the auspices of the U.S. Department of Energy by Lawrence Livermore National Laboratory under Contract DE-AC52-07NA27344 | ||
rrsettgast marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
This research was supported by the Exascale Computing Project (ECP), Project Number: 17-SC-20-SC, a collaborative effort of two DOE organizations - the Office of Science and the National Nuclear Security Administration, responsible for the planning and preparation of a capable exascale ecosystem, including software, applications, hardware, advanced system engineering and early testbed platforms, to support the nation's exascale computing imperative. | ||
|
||
FC-MAELSTROM statement... | ||
|
||
# References |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
we should really update this figure before submitting this. Some things are inaccurate.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It won't be included in the manuscript.