|
8 | 8 | - staggered finite differences
|
9 | 9 | - matrix-free
|
10 | 10 | authors:
|
11 |
| - - name: Foo |
| 11 | + - name: Simon Byrne |
12 | 12 | orcid: XXXX
|
13 | 13 | affiliation: 1
|
14 |
| - - name: Bar |
15 |
| - orcid: YYYY |
| 14 | + - name: Charles Kawczynski |
| 15 | + orcid: XXXX |
| 16 | + affiliation: 1 |
| 17 | + - name: Valeria Barra |
| 18 | + orcid: 0000-0003-1129-2056 |
| 19 | + affiliation: 1 |
| 20 | + - name: Jake Bolewski |
| 21 | + orcid: XXXX |
| 22 | + affiliation: 1 |
| 23 | + - name: Sriharsha Kandala |
| 24 | + orcid: XXXX |
| 25 | + affiliation: 1 |
| 26 | + - name: Zhaoyi Shen |
| 27 | + orcid: XXXX |
| 28 | + affiliation: 1 |
| 29 | + - name: Jia He |
| 30 | + orcid: XXXX |
| 31 | + affiliation: 1 |
| 32 | + - name: Dennis Yatunin |
| 33 | + orcid: XXXX |
| 34 | + affiliation: 1 |
| 35 | + - name: Ben Mackay |
| 36 | + orcid: XXXX |
| 37 | + affiliation: 1 |
| 38 | + - name: Akshay Sridhar |
| 39 | + orcid: XXXX |
| 40 | + affiliation: 1 |
| 41 | + - name: Simon Danish ? |
| 42 | + orcid: XXXX |
16 | 43 | affiliation: 2
|
| 44 | + - name: Kiran Pamnany |
| 45 | + orcid: XXXX |
| 46 | + affiliation: 3 |
| 47 | + - name: Toby Bischoff |
| 48 | + orcid: XXXX |
| 49 | + affiliation: 1 |
| 50 | + - name: LenkaNovak |
| 51 | + orcid: XXXX |
| 52 | + affiliation: 1 |
| 53 | + - name: Julia Sloan |
| 54 | + orcid: XXXX |
| 55 | + affiliation: 1 |
| 56 | + - name: Daniel (Zhengyu) Huang |
| 57 | + orcid: XXXX |
| 58 | + affiliation: 1 |
| 59 | + - name: Oswald Knoth |
| 60 | + orcid: XXXX |
| 61 | + affiliation: 4 |
| 62 | + - name: Paul Ullrich |
| 63 | + orcid: XXXX |
| 64 | + affiliation: 5 |
| 65 | + -name: Tapio Schneider |
| 66 | + orcid: XXXX |
| 67 | + affiliation: 1 |
| 68 | + |
17 | 69 | affiliations:
|
18 | 70 | - name: California Institute of Technology
|
19 | 71 | index: 1
|
20 |
| - - name: Other Institution |
| 72 | + - name: ? |
21 | 73 | index: 2
|
| 74 | + - name: Relational AI |
| 75 | + index: 3 |
| 76 | + - name: TROPOS |
| 77 | + index: 4 |
| 78 | + - name: University of California Davis |
| 79 | + index: 5 |
22 | 80 | date: 10 January 2023
|
23 | 81 | bibliography: paper.bib
|
24 | 82 | ---
|
25 | 83 |
|
26 |
| -# Motivation and Benefits |
27 |
| -A "white paper" that briefly mentions all the nice properties of the library: extensibility, composability, ease-of-use, library-reuse, (performance-portability?), (scalability?). This will give ClimaCore its proper DOI and citability tool. |
| 84 | +<!-- The list of authors of the software and their affiliations, using the correct format was generated from https://github.com/CliMA/ClimaCore.jl/graphs/contributors + Paul, Oswald and Tapio. The order of co-authors reflects the order of GitHub contributions by commits. Contributors with only one commit are not included at the moment. We can revise this policy if anyone does not agree with it. Also, anyone included who does not wish to be included can be removed, of course. --> |
| 85 | + |
| 86 | +# Summary |
| 87 | + |
| 88 | +<!-- A summary describing the high-level functionality and purpose of the software for a diverse, non-specialist audience. --> |
| 89 | + |
| 90 | +The Climate Modelling Alliance ([CliMA](https://clima.caltech.edu/)) is developing a new Earth System Model (ESM), entirely written in the [Julia](https://julialang.org/) programming language [@julia-paper]. The main goal of the project is to build an ESM that automatically learns from diverse data sources to produce accurate climate predictions with quantified uncertainties. |
| 91 | + |
| 92 | +`ClimaCore.jl` is a new open-source software library that provides a suite of tools for constructing spatial discretizations, underlying many of the CliMA model components and providing the dynamical core (_dycore_) for the atmosphere and land components of the ESM. It is designed with a high-level application programming interface (API), which facilitates modularity, composition of differential operators, definition of flexible discretizations, and library reuse. |
| 93 | + |
| 94 | +# Statement of need |
| 95 | + |
| 96 | +<!-- A Statement of need section that clearly illustrates the research purpose of the software and places it in the context of related work. --> |
| 97 | + |
| 98 | +Earth system model dynamical cores are traditionally hard-coded to specific equation sets, with fixed spatial and temporal discretizations, and specific geometries, such as spherical geometries for general circulation models (GCM) or Cartesian ones for large-eddy simulations (LES) (see, for instance, the High Order Method Modeling Environment (HOMME) used by the Energy Exascale Earth System Model (E3SM) [@E3SM]). |
| 99 | + |
| 100 | +`ClimaCore.jl` aims to be a more flexible approach, inspired by other mathematical software libraries for constructing spatial discretizations of partial differential equations (PDEs), such as PETSc [@petsc-web-page; @petsc-user-ref; @petsc-efficient], libCEED [@libceed-joss-paper; @libceed-user-manual], MFEM [@MFEMlibrary; @mfem-paper], deal.II [@dealII92], Firedrake [@firedrake], and FeniCS [@FeniCS]. |
| 101 | + |
| 102 | +However, ESMs tend to have some specific properties, some of which can leverage modern heterogenous architectures (including CPUs and GPUs) or modern ML/AI tools, that there are advantages to developing a new library |
| 103 | + |
| 104 | + - very skewed aspect ratio for the atmosphere component: O(100km) in the horizontal vs O(10m) in the vertical; |
| 105 | + - implicit-explicit (IMEX) timestepping, with only the vertical parts handled implicitly: horizontally-explicit, vertically-implicit (HEVI) schemes; |
| 106 | + - use of different discertizations in each dimension, for example our current atmosphere model uses a specral element discretization in the horizontal, with a staggered finite difference discretization in the verfical; |
| 107 | + - don't need a fully unstructured mesh: 3D meshes are constucted by extruding a 2D mesh; |
| 108 | + - distributed parallely only in the horizontal direction; |
| 109 | + - support both Cartesian and spherical geometries and vector bases: on a sphere, vector components are typical specified in spherical basis (zonal, meridonal, radial); |
| 110 | + - capability to run embedded regional high-resolution and global simulations. |
| 111 | + |
| 112 | + |
| 113 | + |
| 114 | +<!-- A list of key references, including to other software addressing related needs. Note that the references should include full names of venues, e.g., journals and conferences, not abbreviations only understood in the context of a specific discipline. --> |
| 115 | + |
| 116 | +<!-- Mention (if applicable) a representative set of past or ongoing research projects using the software and recent scholarly publications enabled by it. --> |
| 117 | + |
| 118 | +`ClimaCore.jl` is currently being used as the basis for the atmosphere and land model components of the CliMA earth system model. |
| 119 | + |
| 120 | + |
| 121 | + |
| 122 | +# Introduction |
| 123 | + |
| 124 | + |
| 125 | + |
| 126 | +<!-- from README --> |
| 127 | +`ClimaCore.jl` is a the dynamical core (_dycore_) of the atmosphere and land models, providing discretization tools to solve the governing equations of the ESM component models. |
| 128 | + |
| 129 | +`ClimaCore.jl`'s high-level API facilitates modularity and composition of differential operators and the definition of flexible discretizations. This, in turn, is coupled with low-level APIs that support different data layouts, specialized implementations, and flexible models for threading, to better face high-performance optimization, data storage, and scalability challenges on modern HPC architectures. `ClimaCore.jl` is designed to be performance portable and can be used in a distributed setting with CPU and GPU clusters. |
| 130 | + |
| 131 | +## Technical aims and current support |
| 132 | +* Support both large-eddy simulation (LES) and general circulation model (GCM) configurations for the atmosphere. |
| 133 | +* A suite of tools for constructing space discretizations. |
| 134 | +* Horizontal spectral elements: |
| 135 | + - Supports both continuous Galerkin (CG) and discontinuous Galerkin (DG) spectral element discretizations. |
| 136 | +* Flexible choice of vertical discretization (currently staggered finite differences) |
| 137 | +* Support for different geometries (Cartesian, spherical), with governing equations discretized in terms of covariant vectors for curvilinear, non-orthogonal systems and Cartesian vectors for Euclidean spaces. |
| 138 | +* `Field` abstraction: |
| 139 | + - Scalar, vector or struct-valued |
| 140 | + - Stores values, geometry, and mesh information |
| 141 | + - Flexible memory layouts: Array-of-Structs (AoS), Struct-of-Arrays (SoA),Array-of-Struct-of-Arrays (AoSoA) |
| 142 | + - Useful overloads: `sum` (integral), `norm`, etc. |
| 143 | + - Compatible with [`DifferentialEquations.jl`](https://diffeq.sciml.ai/stable/) time steppers. |
| 144 | +* Composable operators via broadcasting: apply a function element-wise to an array; scalar values are broadcast over arrays |
| 145 | +* Fusion of multiple operations; can be specialized for custom functions or argument types (e.g. `CuArray` compiles and applies a custom CUDA kernel). |
| 146 | +* Operators (`grad`, `div`, `interpolate`) are “pseudo-functions”: Act like functions when broadcasted over a `Field`; fuse operators and function calls. |
| 147 | +* Add element node size dimensions to type domain |
| 148 | + - i.e., specialize on polynomial degree |
| 149 | + - important for GPU kernel performance. |
| 150 | +* Flexible memory layouts allow for flexible threading models (upcoming): |
| 151 | + - CPU thread over elements |
| 152 | + - GPU thread over nodes. |
| 153 | + |
| 154 | + |
28 | 155 |
|
29 |
| -# Costs |
30 |
| -From JOSS' [website](https://joss.readthedocs.io/en/latest/submitting.html#submitting-a-paper-to-joss): "If you’ve already developed a fully featured research code, released it under an OSI-approved license, and written good documentation and tests, then we expect that it should take perhaps an hour or two to prepare and submit your paper to JOSS. But please read these instructions carefully for a streamlined submission." |
31 | 156 |
|
32 | 157 | # Tentative TODOs
|
| 158 | +Draft of a "white paper" that briefly mentions all the nice properties of the library: extensibility, composability, ease-of-use, library-reuse, (performance-portability?), (scalability?). This will give ClimaCore its proper DOI and citability tool. |
| 159 | + |
33 | 160 | Improve Docs:
|
34 | 161 | - [x] Getting started/How to guide
|
35 |
| -- [x] Contributing guide + Authorship policy + Code of Conduct (?) |
| 162 | +- [x] Contributing guide + Code of Conduct (?) |
36 | 163 | - [ ] Examples documentation (equations set, what to expect from each example, artifacts, if included)
|
37 | 164 |
|
38 | 165 |
|
39 | 166 | Improve Unit Tests:
|
40 | 167 | - [ ] Unit tests: strive for best code coverage: e.g., double check that all operators are tested
|
41 | 168 |
|
| 169 | +Examples: |
| 170 | +- [ ] Address memory usage and OoM issues when examples are run locally |
42 | 171 |
|
43 |
| -Performance: |
44 |
| -- [ ] Distributed computing capability (probably no need for scaling studies) |
45 |
| -- [ ] Multi-threading capability (might include initial GPU support?) |
46 | 172 |
|
47 |
| -# Summary and statement of need |
48 |
| - |
49 |
| -Lorem Ipsum |
| 173 | +Performance: |
| 174 | +- [ ] Distributed computing capability (re-run latest scaling studies) |
| 175 | +- [ ] Multi-threading capability? |
| 176 | +- [ ] Might include initial GPU support? |
50 | 177 |
|
51 | 178 |
|
| 179 | +<!-- Acknowledgement of any financial support. --> |
52 | 180 | # Acknowledgements
|
53 |
| - |
| 181 | +We acknowledge contributions from several others who played a role in the evolution of this library, especially contributors and users of an eralier iteration of this effort, [ClimateMachine.jl](https://github.com/CliMA/ClimateMachine.jl) [@climate_machine_zenodo]. The development of this package was supported by the generosity of Eric and Wendy Schmidt by recommendation of the Schmidt Futures program, and by the Defense Advanced Research Projects Agency (Agreement No. HR00112290030). |
54 | 182 |
|
55 | 183 | # References
|
0 commit comments