Skip to content

Commit

Permalink
some more adds
Browse files Browse the repository at this point in the history
  • Loading branch information
rrsettgast committed Dec 16, 2023
1 parent e50e46a commit ed8f1fd
Showing 1 changed file with 32 additions and 52 deletions.
84 changes: 32 additions & 52 deletions src/docs/JOSS/paper.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
title: 'GEOS: A portable multi-physics simulation framework'
title: 'GEOS-2023: A portable multi-physics simulation framework'
tags:
- reservoir simulations
- computational mechanics
Expand All @@ -12,6 +12,8 @@ authors:
affiliation: 1
- name: Benjamin C. Corbett
affiliation: 1
- name: James Corbett
affiliation: 1
- name: Francois Hamon
affiliation: 2
- name: Thomas Gazzola
Expand All @@ -24,17 +26,17 @@ authors:
affiliation: 3
- name: Nicola Castelletto
affiliation: 1
- name: Arturo Vargas
affiliation: 1
- name: Joshua White
- 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: Stefan Framba
- name: Stefano Framba
affiliation: 2
- name: Aurilian Citrain
affiliation: 2
Expand Down Expand Up @@ -62,47 +64,48 @@ bibliography: paper.bib
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 generated CO2 in subsurface reservoirs and saline aquifers is one of the most important technologies required to meet global climate goals.
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 risks associated with the injection of liquefied CO2 in the subsurface.
GEOS seeks to provide the 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 may be used to evaluate reservoir integrity through various failure mechanisms such as caprock failure, fault leakage, and wellbore failure.
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.

# Infrastructure Components
# 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 computational core of GEOS is written in c++17, and includes a Python3 interface that allows for the integration of the simulation capabilities into complex python workflows
The c++ infrastructure provides components to isolate the domain science developer from the majority of common computer science tasks.
The components of the infrastructure includes a data hierarchy, a discrete mesh data structure, a physics package interface, MPI communications tools, degree-of-freedom management, IO facilities, etc.
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.

The mesh interface is built on top of the data repository as a collection of managers for each mesh object type. \autoref{fig:meshHierarchy}
A physical body is

![UML diagram of the mesh interface hierarchy.\label{fig:meshHierarchy}](MeshHierarchy.png){ width=20% }


![UML diagram of the mesh interface hierarchy.\label{fig:meshHierarchy2}](MeshHierarchy.svg){ width=20% }

![UML diagram of the mesh interface hierarchy.\label{fig:meshHierarchy}](MeshHierarchy.svg){ width=40% }

assist in the implementation of methods to solve constraint equations on complex unstructured grids.
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.


that incorporate other tools such as machine learning components or geological modeling tools.
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.

such as a discrete mesh data structure, MPI communications tools, degree-of-freedom management, IO facilities, etc.

The performance portability strategy applies LLNL's suite of portability tools RAJA[@Beckingsale:2019], CHAI[@CHAI:2023], and Umpire[@Beckingsale:2020].
Through this strategy GEOS has been successfully run on platforms ranging from GPU-based Exa-scale systems such as ORNL/Frontier down to CPU-based laptops.
Additionally GEOS may be executed on HPC cloud resources.

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}$

Expand All @@ -119,29 +122,6 @@ You can also use plain \LaTeX for equations
\end{equation}
and refer to \autoref{eq:fourier} from text.

# Citations

Citations to entries in paper.bib should be in
[rMarkdown](http://rmarkdown.rstudio.com/authoring_bibliographies_and_citations.html)
format.

If you want to cite a software repository URL (e.g. something on GitHub without a preferred
citation) then you can do it with the example BibTeX entry below for @fidgit.

For a quick reference, the following citation commands can be used:
- `@author:2001` -> "Author et al. (2001)"
- `[@author:2001]` -> "(Author et al., 2001)"
- `[@author1:2001; @author2:2001]` -> "(Author1 et al., 2001; Author2 et al., 2002)"

# Figures

Figures can be included like this:
![Caption for example figure.\label{fig:example}](figure.png)
and referenced from text using \autoref{fig:example}.

Figure sizes can be customized by adding an optional second parameter:
![Caption for example figure.](figure.png){ width=20% }

# Acknowledgements


Expand Down

0 comments on commit ed8f1fd

Please sign in to comment.