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

docs: GEOS paper submittal to JOSS #2886

Closed
wants to merge 166 commits into from
Closed
Show file tree
Hide file tree
Changes from 11 commits
Commits
Show all changes
166 commits
Select commit Hold shift + click to select a range
54e927f
add sample markdown example from JOSS to test compilation of paper
rrsettgast Dec 11, 2023
2b29b95
try the github workflow for JOSS
rrsettgast Dec 11, 2023
750862e
add author list, and start summary
rrsettgast Dec 11, 2023
d55e5af
add author list, and start summary
rrsettgast Dec 11, 2023
285f40c
first draft of summary
rrsettgast Dec 11, 2023
f290eac
some work on the infrastructure section
rrsettgast Dec 13, 2023
be52de7
test svg figure insertion
rrsettgast Dec 13, 2023
cb5f8e1
test svg figure insertion again
rrsettgast Dec 13, 2023
8c19ccc
test png figure insertion
rrsettgast Dec 13, 2023
e50e46a
maybe add the files for the figures this time
rrsettgast Dec 13, 2023
ed8f1fd
some more adds
rrsettgast Dec 16, 2023
7b6dc25
Merge branch 'develop' into docs/JOSS
rrsettgast Jan 23, 2024
ff87cd3
Merge branch 'develop' into docs/JOSS
rrsettgast Jan 25, 2024
cb95a59
fix typos in names
rrsettgast Jan 25, 2024
4a75ec7
Merge branch 'develop' into docs/JOSS
rrsettgast Mar 21, 2024
567c151
some revisions
rrsettgast May 8, 2024
e6adf8b
Merge branch 'develop' into docs/JOSS
rrsettgast May 8, 2024
ba0d784
discussion on coupling physics
rrsettgast May 8, 2024
f061207
attempt to put in latex matrix
rrsettgast May 8, 2024
22bcf82
attempt add label to matrix
rrsettgast May 8, 2024
b98fce1
some trimming
rrsettgast May 9, 2024
cc6aa8e
some more mods
rrsettgast May 9, 2024
324d9b3
some more mods
rrsettgast May 9, 2024
44e587f
added some authors
rrsettgast May 13, 2024
ff5b361
added some authors...added Frontier figure
rrsettgast May 13, 2024
1c0894a
added figure file
rrsettgast May 13, 2024
1eba4d9
removed unknown affiliations
rrsettgast May 13, 2024
68ad585
removed blank author
rrsettgast May 13, 2024
f22be36
Adding figure
castelletto1 May 13, 2024
15e3d78
NL strong scaling table
castelletto1 May 13, 2024
1cf51ea
merging
castelletto1 May 13, 2024
affa149
Formatting table WIP
castelletto1 May 13, 2024
6c78496
Preliminary NL strong scaling table
castelletto1 May 13, 2024
98a5fb5
Trying again
castelletto1 May 13, 2024
8b7e179
Trying again
castelletto1 May 13, 2024
048868c
Trying again
castelletto1 May 13, 2024
794b84b
Trying again
castelletto1 May 13, 2024
bcbdf03
Decent formatting
castelletto1 May 13, 2024
8672c68
Formatting
castelletto1 May 14, 2024
826c203
table formatting attempt #125
rrsettgast May 14, 2024
e28722e
table formatting attempt #126
rrsettgast May 14, 2024
9b82675
table formatting attempt #127
rrsettgast May 14, 2024
8c001e9
table formatting attempt #128
rrsettgast May 14, 2024
609103c
table formatting attempt #129
rrsettgast May 14, 2024
a62482e
table formatting attempt #130
rrsettgast May 14, 2024
0509c81
table formatting attempt #131
rrsettgast May 14, 2024
19a6700
table formatting attempt #132
rrsettgast May 14, 2024
fa9e0e2
table formatting attempt #133
rrsettgast May 14, 2024
a17a223
table formatting attempt #134
rrsettgast May 14, 2024
b72c3a3
table formatting attempt #135
rrsettgast May 14, 2024
653e93a
table formatting attempt #136
rrsettgast May 14, 2024
b2b2707
Testing formatting
castelletto1 May 14, 2024
2abfbc8
table formatting attempt #136
rrsettgast May 14, 2024
0966865
Merge branch 'docs/JOSS' of github.com:GEOS-DEV/GEOS into docs/JOSS
rrsettgast May 14, 2024
cc3f0be
Reverting
castelletto1 May 14, 2024
284f98d
Reverting
castelletto1 May 14, 2024
45cddd1
table formatting attempt #137
rrsettgast May 14, 2024
d78492a
table formatting attempt #138
rrsettgast May 14, 2024
99fca7c
table formatting attempt #139
rrsettgast May 14, 2024
6e6431f
apperently HUGE doesn't work
rrsettgast May 14, 2024
bb78dcd
try scalebox
rrsettgast May 14, 2024
026aa18
scalebox doesn't work..duh
rrsettgast May 14, 2024
fcad4dc
try without latex
rrsettgast May 14, 2024
9d27ba0
some cleanup of text
rrsettgast May 15, 2024
ab27ff0
Acknowledgements
castelletto1 May 15, 2024
3cc8ea7
adding orcid
May 15, 2024
2b1ca8a
added figures and some discussion
rrsettgast May 15, 2024
7b8f83a
fixed typo
rrsettgast May 15, 2024
5a98c81
file name change
rrsettgast May 15, 2024
e108726
reduce figure sizes
rrsettgast May 15, 2024
316b8b4
change figure sizes
rrsettgast May 15, 2024
65b259b
try putting figures in table
rrsettgast May 15, 2024
80d0d13
revert figures arrangement out of tables
rrsettgast May 15, 2024
4b4f155
revert figures arrangement to be independent
rrsettgast May 15, 2024
a7e0518
Updating figure
castelletto1 May 15, 2024
2d3ef6f
change some file names, and add more discussion. still around 1070 wo…
rrsettgast May 16, 2024
8b3d92e
Polishing figure
castelletto1 May 16, 2024
eb4aa4c
Merge branch 'docs/JOSS' of github.com:GEOS-DEV/GEOS into docs/JOSS
castelletto1 May 16, 2024
a4faddd
actually include the discussion
rrsettgast May 16, 2024
778204b
Merge branch 'docs/JOSS' of github.com:GEOS-DEV/GEOS into docs/JOSS
rrsettgast May 16, 2024
6a2af5d
Updating hypre reference
castelletto1 May 16, 2024
c97947a
Merge branch 'docs/JOSS' of github.com:GEOS-DEV/GEOS into docs/JOSS
castelletto1 May 16, 2024
4a2706b
Polishing image
castelletto1 May 16, 2024
8aa32c0
Reference
castelletto1 May 16, 2024
a13429d
Caption
castelletto1 May 16, 2024
8bc0a8c
Cleaning
castelletto1 May 16, 2024
9efe862
Cleaning
castelletto1 May 16, 2024
6521858
Finalizing figures
castelletto1 May 16, 2024
9c400b4
Fixing reference
castelletto1 May 16, 2024
feb93fa
Consistent referece formatting
castelletto1 May 16, 2024
1b40991
Fixing refs
castelletto1 May 16, 2024
cd4bd50
Fixing refs
castelletto1 May 16, 2024
bd4eba5
Fixing refs
castelletto1 May 16, 2024
f0e2131
Fixing refs
castelletto1 May 16, 2024
31d3ca9
Cleaning
castelletto1 May 16, 2024
80ae94b
Cleaning
castelletto1 May 16, 2024
a4fcd2a
added reference to IPCC_2023
rrsettgast May 16, 2024
ef0a13b
Co-authors
castelletto1 May 16, 2024
04e3f51
Merge branch 'docs/JOSS' of github.com:GEOS-DEV/GEOS into docs/JOSS
castelletto1 May 16, 2024
e388b70
Too many curly brackets in bib entry
herve-gross May 16, 2024
8ec312e
Refs
castelletto1 May 16, 2024
2d9360e
Authors
castelletto1 May 16, 2024
986c251
Conflict
castelletto1 May 16, 2024
9479bca
some cutting
rrsettgast May 17, 2024
626f0d4
Updating figure
castelletto1 May 17, 2024
ff074dc
Refs
castelletto1 May 17, 2024
c761667
Merge branch 'docs/JOSS' of github.com:GEOS-DEV/GEOS into docs/JOSS
castelletto1 May 17, 2024
774c76f
Image
castelletto1 May 17, 2024
387e435
Acknowledgment update
castelletto1 May 20, 2024
20e74ff
References
castelletto1 May 20, 2024
446d68a
fix compilation error in paper.md
rrsettgast May 20, 2024
e20b6ea
add to author list
rrsettgast May 20, 2024
d3ce292
some edits
rrsettgast May 20, 2024
007629e
Trying RTD ref
castelletto1 May 20, 2024
889c8d0
Trying RTD ref
castelletto1 May 20, 2024
aec27cf
Fixing figure ref
castelletto1 May 20, 2024
5e5222f
Removing reference to github
castelletto1 May 20, 2024
53242fb
CO2 with subscript
castelletto1 May 20, 2024
d153993
Update src/docs/JOSS/paper.md
castelletto1 May 20, 2024
6cd110b
C++
castelletto1 May 20, 2024
b89d201
replace html subscript with markdown subscript
rrsettgast May 20, 2024
4a57749
Trilinos ref
castelletto1 May 20, 2024
d3af213
Merge branch 'docs/JOSS' of github.com:GEOS-DEV/GEOS into docs/JOSS
castelletto1 May 20, 2024
51b79b7
Trilinos ref
castelletto1 May 20, 2024
135d913
Refs
castelletto1 May 20, 2024
cb59bbe
GEOS-2024
castelletto1 May 21, 2024
2fc7b04
some edits
rrsettgast May 21, 2024
b0e7f06
Update paper.md
karimifard May 21, 2024
ce3e177
Rephrasing
castelletto1 May 24, 2024
44efdd9
some author list changes
rrsettgast May 26, 2024
f19434c
cleanup author list. add LLNL release number
rrsettgast May 28, 2024
e538311
multi-affiliation with quotes
rrsettgast Jun 4, 2024
fec8f63
Update scaling figure
victorapm Jun 4, 2024
7652709
Grammar + increase font sizes in the new figure
victorapm Jun 4, 2024
4a402f7
Tweak font size again
victorapm Jun 4, 2024
fe1086a
Change to solid lines
victorapm Jun 5, 2024
d811b45
Update text and figure with GPU-aware results
victorapm Jun 6, 2024
ba28c76
Fix LaTeX syntax
victorapm Jun 6, 2024
aafe671
Fix LaTeX syntax
victorapm Jun 6, 2024
0050783
typos
rrsettgast Jun 7, 2024
89cc18f
add author
rrsettgast Jun 12, 2024
b5c3d8b
update statetment of need to include more context and similar projects
rrsettgast Aug 20, 2024
7cd2c27
changes based on reviews
rrsettgast Aug 23, 2024
7902695
update my affiliations
ryar9534 Aug 30, 2024
b022bd7
add statement referring to the frontier benchmarks on the GEOS docume…
rrsettgast Aug 30, 2024
d796432
Merge branch 'docs/JOSS' of github.com:GEOS-DEV/GEOS into docs/JOSS
rrsettgast Aug 30, 2024
54ebb70
use permanant link for perforamanceBenchmarks
rrsettgast Aug 30, 2024
9c2c61d
add live links in text
rrsettgast Sep 1, 2024
e958d39
changed title and added reference to performance portable
rrsettgast Sep 5, 2024
10116be
fix a typo
rrsettgast Sep 5, 2024
6a5df34
Bib formatting
castelletto1 Sep 6, 2024
82c90ce
address first round of editor comments
rrsettgast Sep 9, 2024
185a884
Merge branch 'docs/JOSS' of github.com:GEOS-DEV/GEOS into docs/JOSS
rrsettgast Sep 9, 2024
72b92a5
minor change
castelletto1 Sep 9, 2024
5a3cd44
modify formatting of dumu bibtex entry
rrsettgast Sep 16, 2024
49cd284
Merge branch 'docs/JOSS' of github.com:GEOS-DEV/GEOS into docs/JOSS
rrsettgast Sep 16, 2024
8498655
modify formatting of dumu bibtex entry
rrsettgast Sep 16, 2024
37cdc33
fix doi for OPM reference
rrsettgast Sep 16, 2024
7a6c3b2
Merge branch 'develop' into docs/JOSS
rrsettgast Sep 16, 2024
ce75916
update author list with quite a few orcid-ids
rrsettgast Sep 16, 2024
1dd3456
fix typo in orcid id
rrsettgast Sep 16, 2024
8e3a0e2
add some more orcid ids
rrsettgast Sep 17, 2024
d092921
add some more orcid ids
rrsettgast Sep 17, 2024
527ce5b
add lionels orcid
rrsettgast Sep 18, 2024
1531466
Make scaling figure consistent with documentation + Add python script…
victorapm Sep 20, 2024
475e185
Remove old scaling plots
victorapm Sep 20, 2024
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
23 changes: 23 additions & 0 deletions .github/workflows/draft-pdf.yml
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
Binary file added src/docs/JOSS/MeshHierarchy.png
Copy link
Collaborator

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.

Copy link
Contributor

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.

Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
72 changes: 72 additions & 0 deletions src/docs/JOSS/MeshHierarchy.svg
Copy link
Collaborator

Choose a reason for hiding this comment

The 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 FaceElementRegion, FaceElementSubRegion,...). How was it generated in the first place? I am happy to generate an updated one.

Copy link
Member Author

@rrsettgast rrsettgast Jan 25, 2024

Choose a reason for hiding this comment

The 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.

Copy link
Contributor

Choose a reason for hiding this comment

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

It's generated on the fly from src/coreComponents/mesh/docs/MeshObjectInstantiationHierarchy.plantuml

Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
95 changes: 95 additions & 0 deletions src/docs/JOSS/paper.bib
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}
}
134 changes: 134 additions & 0 deletions src/docs/JOSS/paper.md
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
affiliation: 2
- name: Aurilian Citrain
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.
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.

![UML diagram of the mesh interface hierarchy.\label{fig:meshHierarchy}](MeshHierarchy.svg){ 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

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