diff --git a/.github/workflows/draft-pdf.yml b/.github/workflows/draft-pdf.yml new file mode 100644 index 000000000..c4ef25c77 --- /dev/null +++ b/.github/workflows/draft-pdf.yml @@ -0,0 +1,29 @@ +on: [push] + +jobs: + paper: + runs-on: ubuntu-latest + name: Paper Draft + steps: + - name: Checkout + uses: actions/checkout@v3 + - 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: 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: docs/joss/paper.pdf + # These lines have been added following + # https://github.com/openjournals/openjournals-draft-action/issues/15 + - name: save pdf to repo + uses: stefanzweifel/git-auto-commit-action@v4 + with: + commit_message: Saved new PDF of paper diff --git a/.gitignore b/.gitignore index f124b6e64..2e62d0e51 100644 --- a/.gitignore +++ b/.gitignore @@ -37,5 +37,9 @@ run_*/ # no video outputs *.mp4 +# JOSS paper +docs/joss/media +docs/joss/paper.jats + # not sure where they are from -default.profraw \ No newline at end of file +default.profraw diff --git a/docs/img/barotropic_vorticity.jpg b/docs/img/barotropic_vorticity.jpg deleted file mode 100644 index 3a269f828..000000000 Binary files a/docs/img/barotropic_vorticity.jpg and /dev/null differ diff --git a/docs/img/frame0240_small.jpg b/docs/img/frame0240_small.jpg deleted file mode 100644 index c4e29f4cc..000000000 Binary files a/docs/img/frame0240_small.jpg and /dev/null differ diff --git a/docs/img/galewsky.jpg b/docs/img/galewsky.jpg deleted file mode 100644 index 138e6c5d5..000000000 Binary files a/docs/img/galewsky.jpg and /dev/null differ diff --git a/docs/img/galewsky_nc_12days.png b/docs/img/galewsky_nc_12days.png deleted file mode 100644 index b99598fa3..000000000 Binary files a/docs/img/galewsky_nc_12days.png and /dev/null differ diff --git a/docs/img/galewsky_nc_12days_mountains.png b/docs/img/galewsky_nc_12days_mountains.png deleted file mode 100644 index 75a50a459..000000000 Binary files a/docs/img/galewsky_nc_12days_mountains.png and /dev/null differ diff --git a/docs/img/galewsky_nc_6days.png b/docs/img/galewsky_nc_6days.png deleted file mode 100644 index 897c874c3..000000000 Binary files a/docs/img/galewsky_nc_6days.png and /dev/null differ diff --git a/docs/joss/paper.bib b/docs/joss/paper.bib new file mode 100644 index 000000000..fab43b2ad --- /dev/null +++ b/docs/joss/paper.bib @@ -0,0 +1,606 @@ +@article{Amezcua2011, + title = {The {{Effects}} of the {{RAW Filter}} on the {{Climatology}} and {{Forecast Skill}} of the {{SPEEDY Model}}}, + author = {Amezcua, J. and Kalnay, E. and Williams, P. D.}, + year = {2011}, + month = feb, + journal = {Monthly Weather Review}, + volume = {139}, + number = {2}, + pages = {608--619}, + publisher = {{American Meteorological Society}}, + issn = {1520-0493, 0027-0644}, + doi = {10.1175/2010MWR3530.1}, + urldate = {2023-06-06}, + abstract = {Abstract In a recent study, Williams introduced a simple modification to the widely used Robert\textendash Asselin (RA) filter for numerical integration. The main purpose of the Robert\textendash Asselin\textendash Williams (RAW) filter is to avoid the undesired numerical damping of the RA filter and to increase the accuracy. In the present paper, the effects of the modification are comprehensively evaluated in the Simplified Parameterizations, Primitive Equation Dynamics (SPEEDY) atmospheric general circulation model. First, the authors search for significant changes in the monthly climatology due to the introduction of the new filter. After testing both at the local level and at the field level, no significant changes are found, which is advantageous in the sense that the new scheme does not require a retuning of the parameterized model physics. Second, the authors examine whether the new filter improves the skill of short- and medium-term forecasts. January 1982 data from the NCEP\textendash NCAR reanalysis are used to evaluate the forecast skill. Improvements are found in all the model variables (except the relative humidity, which is hardly changed). The improvements increase with lead time and are especially evident in medium-range forecasts (96\textendash 144 h). For example, in tropical surface pressure predictions, 5-day forecasts made using the RAW filter have approximately the same skill as 4-day forecasts made using the RA filter. The results of this work are encouraging for the implementation of the RAW filter in other models currently using the RA filter.}, + chapter = {Monthly Weather Review}, + langid = {english}, +} + +@article{Bezanson2017, + title = {Julia: {{A Fresh Approach}} to {{Numerical Computing}}}, + shorttitle = {Julia}, + author = {Bezanson, J. and Edelman, A. and Karpinski, S. and Shah, V. B.}, + year = {2017}, + month = jan, + journal = {SIAM Review}, + volume = {59}, + number = {1}, + pages = {65--98}, + publisher = {{Society for Industrial and Applied Mathematics}}, + issn = {0036-1445}, + doi = {10.1137/141000671}, + urldate = {2020-02-25}, + abstract = {Bridging cultures that have often been distant, Julia combines expertise from the diverse fields of computer science and computational science to create a new approach to numerical computing. Julia is designed to be easy and fast and questions notions generally held to be ``laws of nature" by practitioners of numerical computing: \textbackslash beginlist \textbackslash item High-level dynamic programs have to be slow. \textbackslash item One must prototype in one language and then rewrite in another language for speed or deployment. \textbackslash item There are parts of a system appropriate for the programmer, and other parts that are best left untouched as they have been built by the experts. \textbackslash endlist We introduce the Julia programming language and its design---a dance between specialization and abstraction. Specialization allows for custom treatment. Multiple dispatch, a technique from computer science, picks the right algorithm for the right circumstance. Abstraction, which is what good computation is really about, recognizes what remains the same after differences are stripped away. Abstractions in mathematics are captured as code through another technique from computer science, generic programming. Julia shows that one can achieve machine performance without sacrificing human convenience.}, +} + +@article{Bourke1972, + title = {An {{Efficient}}, {{One-Level}}, {{Primitive-Equation Spectral Model}}}, + author = {Bourke, W.}, + year = {1972}, + month = sep, + journal = {Monthly Weather Review}, + volume = {100}, + number = {9}, + pages = {683--689}, + issn = {0027-0644, 1520-0493}, + doi = {10.1175/1520-0493(1972)100<0683:AEOPSM>2.3.CO;2}, + urldate = {2022-01-07}, + langid = {english}, +} + +@article{Burns2020, + title = {Dedalus: {{A Flexible Framework}} for {{Numerical Simulations}} with {{Spectral Methods}}}, + shorttitle = {Dedalus}, + author = {Burns, K. J. and Vasil, G. M. and Oishi, J. S. and Lecoanet, D. and Brown, B. P.}, + year = {2020}, + month = apr, + journal = {Physical Review Research}, + volume = {2}, + number = {2}, + pages = {023068}, + publisher = {{American Physical Society}}, + doi = {10.1103/PhysRevResearch.2.023068}, + urldate = {2023-09-14}, + abstract = {Numerical solutions of partial differential equations enable a broad range of scientific research. The Dedalus project is a flexible, open-source, parallelized computational framework for solving general partial differential equations using spectral methods. Dedalus translates plain-text strings describing partial differential equations into efficient solvers. This paper details the numerical method that enables this translation, describes the design and implementation of the codebase, and illustrates its capabilities with a variety of example problems. The numerical method is a first-order generalized tau formulation that discretizes equations into banded matrices. This method is implemented with an object-oriented design. Classes for spectral bases and domains manage the discretization and automatic parallel distribution of variables. Discretized fields and mathematical operators are symbolically manipulated with a basic computer algebra system. Initial value, boundary value, and eigenvalue problems are efficiently solved using high-performance linear algebra, transform, and parallel communication libraries. Custom analysis outputs can also be specified in plain text and stored in self-describing portable formats. The performance of the code is evaluated with a parallel scaling benchmark and a comparison to a finite-volume code. The features and flexibility of the codebase are illustrated by solving several examples: the nonlinear Schr\"odinger equation on a graph, a supersonic magnetohydrodynamic vortex, quasigeostrophic flow, Stokes flow in a cylindrical annulus, normal modes of a radiative atmosphere, and diamagnetic levitation.}, +} + +@manual{Cartopy, +author = {{Met Office}}, +title = {Cartopy: a cartographic python library with a {{Matplotlib}} interface}, +year = {2010 - 2015}, +address = {Exeter, Devon }, +url = {https://scitools.org.uk/cartopy} +} + +@article {CESM, + author = {J. W. Hurrell and M. M. Holland and P. R. Gent and S. Ghan and J. E. Kay and P. J. Kushner and J.-F. Lamarque and W. G. Large and D. Lawrence and K. Lindsay and W. H. Lipscomb and M. C. Long and N. Mahowald and D. R. Marsh and R. B. Neale and P. Rasch and S. Vavrus and M. Vertenstein and D. Bader and W. D. Collins and J. J. Hack and J. Kiehl and S. Marshall"}, + title = {The {{Community Earth System Model}}: {{A Framework}} for {{Collaborative Research}}}, + journal = {Bulletin of the American Meteorological Society}, + year = {2013}, + publisher = {American Meteorological Society}, + address = {Boston MA, USA}, + volume = {94}, + number = {9}, + doi = {10.1175/BAMS-D-12-00121.1}, + pages= {1339 - 1360}, + url = {https://journals.ametsoc.org/view/journals/bams/94/9/bams-d-12-00121.1.xml}, +} + +@article{Corby1972, + title = {A {{General Circulation Model}} of the {{Atmosphere Suitable}} for {{Long Period Integrations}}}, + author = {Corby, G. A. and Gilchrist, A. and Newson, R. L.}, + year = {1972}, + journal = {Quarterly Journal of the Royal Meteorological Society}, + volume = {98}, + number = {418}, + pages = {809--832}, + issn = {1477-870X}, + doi = {10.1002/qj.49709841808}, + urldate = {2023-03-07}, + abstract = {The design of a general circulation model using the primitive equations in spherical form is described, including a statement of the finite difference forms used to integrate the system and explanations of the motives for unusual aspects of the finite difference scheme. The model incorporates the hydrological cycle, topography, a simple scheme for the radiative exchanges and arrangements for the simulation of deep free convection (sub grid-scale) and for the representation of exchanges of momentum, sensible and latent heat with the underlying surface. An experiment performed with the model forms the subject of a separate paper.}, + langid = {english}, +} + +@Manual{Dask, + title = {Dask: {{Library}} for dynamic task scheduling}, + author = {{Dask Development Team}}, + year = {2016}, + url = {http://dask.pydata.org}, +} + +@article{Gorski2005, + title = {{{HEALPix}}: {{A Framework}} for {{High-Resolution Discretization}} and {{Fast Analysis}} of {{Data Distributed}} on the {{Sphere}}}, + shorttitle = {{{HEALPix}}}, + author = {G{\'o}rski, K. M. and Hivon, E. and Banday, A. J. and Wandelt, B. D. and Hansen, F. K. and Reinecke, M. and Bartelmann, M.}, + year = {2005}, + month = apr, + journal = {The Astrophysical Journal}, + volume = {622}, + number = {2}, + pages = {759}, + publisher = {{IOP Publishing}}, + issn = {0004-637X}, + doi = {10.1086/427976}, + urldate = {2023-09-14}, + langid = {english}, +} + +@article{Held1994, + title = {A {{Proposal}} for the {{Intercomparison}} of the {{Dynamical Cores}} of {{Atmospheric General Circulation Models}}}, + author = {Held, I. M. and Suarez, M. J.}, + year = {1994}, + month = oct, + journal = {Bulletin of the American Meteorological Society}, + volume = {75}, + number = {10}, + pages = {1825--1830}, + publisher = {{American Meteorological Society}}, + issn = {0003-0007, 1520-0477}, + doi = {10.1175/1520-0477(1994)075<1825:APFTIO>2.0.CO;2}, + urldate = {2022-01-07}, + abstract = {A benchmark calculation is proposed for evaluating the dynamical cores of atmospheric general circulation models independently of the physical parameterizations. The test focuses on the long-term statistical properties of a fully developed general circulation; thus, it is particularly appropriate for intercomparing the dynamics used in climate models. To illustrate the use of this benchmark, two very different atmospheric dynamical cores\textemdash one spectral, one finite difference\textemdash are compared. It is found that the long-term statistics produced by the two models are very similar. Selected results from these calculations are presented to initiate the intercomparison.}, + chapter = {Bulletin of the American Meteorological Society}, + langid = {english}, +} + +@article{Hoskins1975, + title = {A {{Multi-Layer Spectral Model}} and the {{Semi-Implicit Method}}}, + author = {Hoskins, B. J. and Simmons, A. J.}, + year = {1975}, + journal = {Quarterly Journal of the Royal Meteorological Society}, + volume = {101}, + number = {429}, + pages = {637--655}, + issn = {1477-870X}, + doi = {10.1002/qj.49710142918}, + urldate = {2023-03-03}, + abstract = {The formulaton of a multi-layer primitive equation model on the sphere is described. The horizontal representation is by means of spherical harmonics, truncated either in the triangular or rhomboidal manner. The time integration is performed using the semi-implicit method in which the linearized gravity wave terms are time averaged and thus the fast moving waves of this type are slowed. For a 5-layer hemispheric model with triangular truncation at wavenumber 21, storage of 38K words is needed and with the time scheme allowing a time-step of 90 minutes, one day's simulation requires 11 seconds of CDC 7600 time. The growth of a baroclinic wave on a simple basic state of differential solid body rotation is exhibited. The errors involved in this case in utilizing the large time-step allowed by the semi-implicit scheme are thoroughly examined by comparing wave amplitudes and phases, conservation properties and gravity wave treatment for different time-steps. These errors are found to be negligible. The conservation properties of the model are in fact extremely good. The vertical finite differencing scheme of Arakawa is studied in the same baroclinic instability simulation. The growth is similar though the conservation of angular momentum is greatly improved. The transform method used in all these integrations allows some aliasing, but this is shown to be negligible.}, + langid = {english}, +} + +@article{Hotta2018, + title = {A {{Nestable, Multigrid-Friendly Grid}} on a {{Sphere}} for {{Global Spectral Models Based}} on {{Clenshaw}}\textendash{{Curtis}} {{Quadrature}}}, + author = {Hotta, D. and Ujiie, M.}, + year = {2018}, + journal = {Quarterly Journal of the Royal Meteorological Society}, + volume = {144}, + number = {714}, + pages = {1382--1397}, + issn = {1477-870X}, + doi = {10.1002/qj.3282}, + urldate = {2022-12-08}, + abstract = {A new grid system on a sphere is proposed which allows for straightforward implementation of both spherical-harmonics-based spectral methods and gridpoint-based multigrid methods. The latitudinal gridpoints in the new grid are equidistant and spectral transforms in the latitudinal direction are performed using Clenshaw\textendash Curtis quadrature. The spectral transforms with this new grid and quadrature are shown to be exact within machine precision provided that the grid truncation is such that there are at least 2N + 1 latitudinal gridpoints for the total truncation wavenumber of N. The new grid and quadrature is implemented and tested on a shallow-water equations model and the hydrostatic dry dynamical core of the global NWP model JMA-GSM. The integration results obtained with the new quadrature are shown to be almost identical to those obtained with the conventional Gaussian quadrature on a Gaussian grid. Only minor code changes are required to adapt any Gaussian-based spectral models to employ the proposed quadrature.}, + langid = {english}, + keywords = {Clenshaw\textendash Curtis quadrature,Fej\'er quadrature,global spectral model,Legendre transform,multigrid}, +} + +@article{Hunter2007, + title = {Matplotlib: {{A 2D Graphics Environment}}}, + shorttitle = {Matplotlib}, + author = {Hunter, J. D.}, + year = {2007}, + month = may, + journal = {Computing in Science \& Engineering}, + volume = {9}, + number = {3}, + pages = {90--95}, + issn = {1558-366X}, + doi = {10.1109/MCSE.2007.55}, + abstract = {Matplotlib is a 2D graphics package used for Python for application development, interactive scripting,and publication-quality image generation across user interfaces and operating systems}, + keywords = {application development,Computer languages,Equations,Graphical user interfaces,Graphics,Image generation,Interpolation,Operating systems,Packaging,Programming profession,Python,scientific programming,scripting languages,User interfaces}, +} + +@article{ICON, + author = {Giorgetta, M. A. and Brokopf, R. and Crueger, T. and Esch, M. and Fiedler, S. and Helmert, J. and Hohenegger, C. and Kornblueh, L. and Köhler, M. and Manzini, E. and Mauritsen, T. and Nam, C. and Raddatz, T. and Rast, S. and Reinert, D. and Sakradzija, M. and Schmidt, H. and Schneck, R. and Schnur, R. and Silvers, L. and Wan, H. and Zängl, G. and Stevens, B.}, + title = {ICON-{{A}}, the {{Atmosphere Component}} of the {{ICON Earth System Model}}: I. {{Model Description}}}, + journal = {Journal of Advances in Modeling Earth Systems}, + volume = {10}, + number = {7}, + pages = {1613-1637}, + keywords = {ICON-A, atmospheric GCM, model description, model tuning}, + doi = {10.1029/2017MS001242}, + url = {https://agupubs.onlinelibrary.wiley.com/doi/abs/10.1029/2017MS001242}, + eprint = {https://agupubs.onlinelibrary.wiley.com/doi/pdf/10.1029/2017MS001242}, + year = {2018} +} + +@article{Jablonowski2006, + title = {A {{Baroclinic Instability Test Case}} for {{Atmospheric Model Dynamical Cores}}}, + author = {Jablonowski, C. and Williamson, D. L.}, + year = {2006}, + month = oct, + journal = {Quarterly Journal of the Royal Meteorological Society}, + volume = {132}, + number = {621C}, + pages = {2943--2975}, + issn = {00359009, 1477870X}, + doi = {10.1256/qj.06.12}, + urldate = {2023-03-22}, + abstract = {A deterministic initial-value test case for dry dynamical cores of atmospheric general-circulation models is presented that assesses the evolution of an idealized baroclinic wave in the northern hemisphere. The initial zonal state is quasi-realistic and completely defined by analytic expressions which are a steady-state solution of the adiabatic inviscid primitive equations with pressure-based vertical coordinates. A two-component test strategy first evaluates the ability of the discrete approximations to maintain the steady-state solution. Then an overlaid perturbation is introduced which triggers the growth of a baroclinic disturbance over the course of several days.}, + langid = {english}, +} + +@article{Klower2020, +author = {Klöwer, M. and Düben, P. D. and Palmer, T. N.}, +title = {Number {{Formats, Error Mitigation}}, and {{Scope}} for 16-Bit {{Arithmetics}} in {{Weather}} and {{Climate Modeling Analyzed With}} a {{Shallow Water Model}}}, +journal = {Journal of Advances in Modeling Earth Systems}, +volume = {12}, +number = {10}, +pages = {e2020MS002246}, +keywords = {Reduced precision, 16-bit arithmetic, climate models, rounding error, floating-point numbers, posit numbers}, +doi = {10.1029/2020MS002246}, +url = {https://agupubs.onlinelibrary.wiley.com/doi/abs/10.1029/2020MS002246}, +eprint = {https://agupubs.onlinelibrary.wiley.com/doi/pdf/10.1029/2020MS002246}, +note = {e2020MS002246 10.1029/2020MS002246}, +abstract = {Abstract The need for high-precision calculations with 64-bit or 32-bit floating-point arithmetic for weather and climate models is questioned. Lower-precision numbers can accelerate simulations and are increasingly supported by modern computing hardware. This paper investigates the potential of 16-bit arithmetic when applied within a shallow water model that serves as a medium complexity weather or climate application. There are several 16-bit number formats that can potentially be used (IEEE half precision, BFloat16, posits, integer, and fixed-point). It is evident that a simple change to 16-bit arithmetic will not be possible for complex weather and climate applications as it will degrade model results by intolerable rounding errors that cause a stalling of model dynamics or model instabilities. However, if the posit number format is used as an alternative to the standard floating-point numbers, the model degradation can be significantly reduced. Furthermore, mitigation methods, such as rescaling, reordering, and mixed precision, are available to make model simulations resilient against a precision reduction. If mitigation methods are applied, 16-bit floating-point arithmetic can be used successfully within the shallow water model. The results show the potential of 16-bit formats for at least parts of complex weather and climate models where rounding errors would be entirely masked by initial condition, model, or discretization error.}, +year = {2020} +} + +@article{Klower2022, + title = {Fluid {{Simulations Accelerated With}} 16 {{Bits}}: {{Approaching}} 4x {{Speedup}} on {{A64FX}} by {{Squeezing ShallowWaters}}.Jl {{Into Float16}}}, + shorttitle = {Fluid {{Simulations Accelerated With}} 16 {{Bits}}}, + author = {Kl{\"o}wer, M. and Hatfield, S. and Croci, M. and D{\"u}ben, P. D. and Palmer, T. N.}, + year = {2022}, + journal = {Journal of Advances in Modeling Earth Systems}, + volume = {14}, + number = {2}, + pages = {e2021MS002684}, + issn = {1942-2466}, + doi = {10.1029/2021MS002684}, + urldate = {2022-06-30}, + abstract = {Most Earth-system simulations run on conventional central processing units in 64-bit double precision floating-point numbers Float64, although the need for high-precision calculations in the presence of large uncertainties has been questioned. Fugaku, currently the world's fastest supercomputer, is based on A64FX microprocessors, which also support the 16-bit low-precision format Float16. We investigate the Float16 performance on A64FX with ShallowWaters.jl, the first fluid circulation model that runs entirely with 16-bit arithmetic. The model implements techniques that address precision and dynamic range issues in 16 bits. The precision-critical time integration is augmented to include compensated summation to minimize rounding errors. Such a compensated time integration is as precise but faster than mixed precision with 16 and 32-bit floats. As subnormals are inefficiently supported on A64FX the very limited range available in Float16 is 6 \texttimes{} 10-5 to 65,504. We develop the analysis-number format Sherlogs.jl to log the arithmetic results during the simulation. The equations in ShallowWaters.jl are then systematically rescaled to fit into Float16, using 97\% of the available representable numbers. Consequently, we benchmark speedups of up to 3.8x on A64FX with Float16. Adding a compensated time integration, speedups reach up to 3.6x. Although ShallowWaters.jl is simplified compared to large Earth-system models, it shares essential algorithms and therefore shows that 16-bit calculations are indeed a competitive way to accelerate Earth-system simulations on available hardware.}, + langid = {english}, + keywords = {climate models,floating-point numbers,hardware acceleration,low precision,rounding errors}, +} + +@article{Kucharski2013, + title = {On the {{Need}} of {{Intermediate Complexity General Circulation Models}}: {{A}} ``{{SPEEDY}}'' {{Example}}}, + shorttitle = {On the {{Need}} of {{Intermediate Complexity General Circulation Models}}}, + author = {Kucharski, F. and Molteni, F. and King, M. P. and Farneti, R. and Kang, I.-S. and Feudale, L.}, + year = {2013}, + month = jan, + journal = {Bulletin of the American Meteorological Society}, + volume = {94}, + number = {1}, + pages = {25--30}, + publisher = {{American Meteorological Society}}, + doi = {10.1175/BAMS-D-11-00238.1}, + urldate = {2023-09-14}, + abstract = {"On the Need of Intermediate Complexity General Circulation Models: A ``SPEEDY'' Example" published on Jan 2013 by American Meteorological Society.}, + chapter = {Bulletin of the American Meteorological Society}, + langid = {english}, +} + +@misc{Malardel2016, + title = {A {{New Grid}} for the {{IFS}}}, + author = {Malardel, S. and Wedi, N. and Deconinck, N. and Diamantakis, M. and Kuehnlein, C. and Mozdzynski, G. and Hamrud, M. and Smolarkiewicz, P.}, + year = {2016}, + journal = {ECMWF Newsletter}, + abstract = {ECMWF will implement a resolution upgrade for high-resolution forecasts (HRES) and ensemble forecasts (ENS) in spring 2016. HRES will then be run on a grid with a grid-point distance between neighbouring points of approximately 9 km instead of 16 km in the current configuration.}, + howpublished = {https://www.ecmwf.int/node/15041}, + doi = {10.21957/zwdu9u5i}, +} + +@INPROCEEDINGS{Mazlami2017, + author={Mazlami, Genc and Cito, Jürgen and Leitner, Philipp}, + booktitle={2017 IEEE International Conference on Web Services (ICWS)}, + title={Extraction of {{Microservices}} from {{Monolithic Software Architectures}}}, + year={2017}, + volume={}, + number={}, + pages={524-531}, + keywords={Couplings;Clustering algorithms;Computer architecture;Cloud computing;Industries;Tools;microservices;extraction;coupling;graph-based clustering}, + doi={10.1109/ICWS.2017.61}, +} + +@article{MITgcm, +author = {Marshall, John and Adcroft, Alistair and Hill, Chris and Perelman, Lev and Heisey, Curt}, +title = {A finite-volume, incompressible {{Navier Stokes}} model for studies of the ocean on parallel computers}, +journal = {Journal of Geophysical Research: Oceans}, +volume = {102}, +number = {C3}, +pages = {5753-5766}, +doi = {https://doi.org/10.1029/96JC02775}, +url = {https://agupubs.onlinelibrary.wiley.com/doi/abs/10.1029/96JC02775}, +eprint = {https://agupubs.onlinelibrary.wiley.com/doi/pdf/10.1029/96JC02775}, +year = {1997}, +} + +@article{Molteni2003, + title = {Atmospheric {{Simulations Using}} a {{GCM}} with {{Simplified Physical Parametrizations}}. {{I}}: {{Model Climatology}} and {{Variability}} in {{Multi-Decadal Experiments}}}, + shorttitle = {Atmospheric Simulations Using a {{GCM}} with Simplified Physical Parametrizations. {{I}}}, + author = {Molteni, F.}, + year = {2003}, + month = jan, + journal = {Climate Dynamics}, + volume = {20}, + number = {2}, + pages = {175--191}, + issn = {1432-0894}, + doi = {10.1007/s00382-002-0268-2}, + urldate = {2023-09-14}, + abstract = {This work describes the formulation and climatology of an atmospheric general circulation model (GCM) of intermediate complexity, based on a spectral primitive-equation dynamical core and a set of simplified physical parametrization schemes. The parametrization package has been specially designed to work in models with just a few vertical levels, and is based on the same physical principles adopted in the schemes of state-of-the art GCMs. The parametrized processes include large-scale condensation, convection, clouds, short-wave and long-wave radiation, surface fluxes and vertical diffusion. In the current configuration, the model (nicknamed SPEEDY, from Simplified Parametrizations, primitivE-Equation DYnamics") has five vertical levels and a spectral truncation at total wave number 30 (T30L5). The top vertical level (crudely) represents the stratosphere, the bottom one the planetary boundary layer. Computationally, SPEEDY requires (at least) one order of magnitude less CPU time than a state-of-the-art GCM at the same horizontal resolution, and is therefore suitable for studies of inter-decadal or inter-centennial variability. Statistics of the model mean state and variability are computed from an ensemble of 41-year simulations forced by observed sea-surface temperatures in the period 1952\textendash 1992. The model mean state is closer to the observed climatology during the (boreal) winter than during summer. In winter (i.e. December to February, DJF), the model underestimates the amplitude of the Northern Hemisphere stationary wave pattern, particularly in the European-Atlantic sector. Some aspects of the systematic error of SPEEDY are in fact typical of many GCMs, although the error amplitude is stronger than in state-of-the-art models. On the other hand, the global distribution of precipitation in DJF is quite realistic, and compares well with that of more complex GCMs. In summer (June to August), a strong negative bias in the mid-tropospheric temperature generates a Northern Hemisphere circulation with some springtime characteristics. In particular, the position of the Tropical Convergence Zone in the Indian Ocean remains too far south, leading to a deficient simulation of the monsoon circulation over South Asia. The simulated variability during the northern winter is reasonably realistic as far as the spatial distribution is concerned, although some underestimation in the intensity can be found, particularly in the low-frequency range and in the Atlantic sector. The atmospheric response to ENSO events is also weaker than observed, although the spatial patterns of the rainfall and geopotential response in the Pacific sector are in phase with their observed counterparts. In the Atlantic/Eurasian region, the spatial patterns associated with the interdecadal trends in the simulated and observed large-scale circulation show a clear positive correlation, consistent with the hypothesis of a positive ocean\textendash atmosphere feedback on decadal time scales.}, + langid = {english}, + keywords = {Atmospheric General Circulation Model,ENSO Event,General Circulation Model,Planetary Boundary Layer,Vertical Level}, +} + +@article{Nakano2018, + title = {Single {{Precision}} in the {{Dynamical Core}} of a {{Nonhydrostatic Global Atmospheric Model}}: {{Evaluation Using}} a {{Baroclinic Wave Test Case}}}, + shorttitle = {Single {{Precision}} in the {{Dynamical Core}} of a {{Nonhydrostatic Global Atmospheric Model}}}, + author = {Nakano, M. and Yashiro, H. and Kodama, C. and Tomita, H.}, + year = {2018}, + month = feb, + journal = {Monthly Weather Review}, + volume = {146}, + number = {2}, + pages = {409--416}, + publisher = {{American Meteorological Society}}, + issn = {1520-0493, 0027-0644}, + doi = {10.1175/MWR-D-17-0257.1}, + urldate = {2021-06-02}, + chapter = {Monthly Weather Review}, + langid = {english}, +} + +@misc{NCDatasets, + author = {Alexander Barth}, + title = {NCDatasets: A {{Julia}} package for manipulating netCDF data sets}, + year = {2023}, + publisher = {GitHub}, + journal = {GitHub repository}, + howpublished = {\url{https://github.com/Alexander-Barth/NCDatasets.jl}}, + commit = {90ed5641684604096558a77020038583e1f2459f} +} + +@misc{NEMO, + title = {NEMO ocean engine}, + url = {http://hdl.handle.net/2122/13309}, + author = {Gurvan Madec and Romain Bourdallé-Badie and Pierre-Antoine Bouttier and Clement Bricaud and Diego Bruciaferri and Daley Calvert and Jérôme Chanut and Emanuela Clementi and Andrew Coward and Damiano Delrosso and Christian Ethé and Simona Flavoni and Tim Graham and James Harle and Doroteaciro Iovino and Dan Lea and Claire Lévy and Tomas Lovato and Nicolas Martin and Sébastien Masson and Silvia Mocavero and Julien Paul and Clément Rousset and Dave Storkey and Andrea Storto and Martin Vancoppenolle}, + doi = {10.5281/zenodo.3248739}, + year = {2017}, +}, + +@article{Numpy, + title = {Array {{Programming}} with {{NumPy}}}, + author = {Harris, Charles R. and Millman, K. Jarrod and {van der Walt}, St{\'e}fan J. and Gommers, Ralf and Virtanen, Pauli and Cournapeau, David and Wieser, Eric and Taylor, Julian and Berg, Sebastian and Smith, Nathaniel J. and Kern, Robert and Picus, Matti and Hoyer, Stephan and {van Kerkwijk}, Marten H. and Brett, Matthew and Haldane, Allan and {del R{\'i}o}, Jaime Fern{\'a}ndez and Wiebe, Mark and Peterson, Pearu and {G{\'e}rard-Marchant}, Pierre and Sheppard, Kevin and Reddy, Tyler and Weckesser, Warren and Abbasi, Hameer and Gohlke, Christoph and Oliphant, Travis E.}, + year = {2020}, + month = sep, + journal = {Nature}, + volume = {585}, + number = {7825}, + pages = {357--362}, + publisher = {{Nature Publishing Group}}, + issn = {1476-4687}, + doi = {10.1038/s41586-020-2649-2}, + urldate = {2024-03-29}, + copyright = {2020 The Author(s)}, + langid = {english}, + keywords = {Computational neuroscience,Computational science,Computer science,Software,Solar physics}, +} + +@article{Ramadhan2020, + title = {Oceananigans.Jl: {{Fast}} and {{Friendly Geophysical Fluid Dynamics}} on {{GPUs}}}, + shorttitle = {Oceananigans.Jl}, + author = {Ramadhan, A. and Wagner, G. L. and Hill, C. and Campin, J.-M. and Churavy, V. and Besard, T. and Souza, A. and Edelman, A. and Ferrari, R. and Marshall, J.}, + year = {2020}, + month = sep, + journal = {Journal of Open Source Software}, + volume = {5}, + number = {53}, + pages = {2018}, + issn = {2475-9066}, + doi = {10.21105/joss.02018}, + urldate = {2023-09-14}, + langid = {english}, +} + +@article{Rasp2018, + title = {Deep {{Learning}} to {{Represent Subgrid Processes}} in {{Climate Models}}}, + author = {Rasp, S. and Pritchard, M. S. and Gentine, P.}, + year = {2018}, + month = sep, + journal = {Proceedings of the National Academy of Sciences}, + volume = {115}, + number = {39}, + pages = {9684--9689}, + doi = {10.1073/pnas.1810286115}, +} + +@article{Schneider2023, + title = {Harnessing {{AI}} and {{Computing}} to {{Advance Climate Modelling}} and {{Prediction}}}, + author = {Schneider, T. and Behera, S. and Boccaletti, G. and Deser, C. and Emanuel, K. and Ferrari, R. and Leung, L. R. and Lin, N. and M{\"u}ller, T. and Navarra, A. and Ndiaye, O. and Stuart, A. and Tribbia, J. and Yamagata, T.}, + year = {2023}, + month = sep, + journal = {Nature Climate Change}, + volume = {13}, + number = {9}, + pages = {887--889}, + publisher = {{Nature Publishing Group}}, + issn = {1758-6798}, + doi = {10.1038/s41558-023-01769-3}, + urldate = {2023-09-14}, + copyright = {2023 Springer Nature Limited}, + langid = {english}, + keywords = {Climate and Earth system modelling,Projection and prediction}, +} + +@article{Simmons1978, + title = {Stability of the {{Semi-Implicit Method}} of {{Time Integration}}}, + author = {Simmons, A. J. and Hoskins, B. J. and Burridge, D. M.}, + year = {1978}, + month = mar, + journal = {Monthly Weather Review}, + volume = {106}, + number = {3}, + pages = {405--412}, + publisher = {{American Meteorological Society}}, + issn = {1520-0493, 0027-0644}, + doi = {10.1175/1520-0493(1978)106<0405:SOTSIM>2.0.CO;2}, + urldate = {2023-03-07}, + chapter = {Monthly Weather Review}, + langid = {english}, +} + +@article{Simmons1981, + title = {An {{Energy}} and {{Angular-Momentum Conserving Vertical Finite-Difference Scheme}} and {{Hybrid Vertical Coordinates}}}, + author = {Simmons, A. J. and Burridge, D. M.}, + year = {1981}, + month = apr, + journal = {Monthly Weather Review}, + volume = {109}, + number = {4}, + pages = {758--766}, + publisher = {{American Meteorological Society}}, + issn = {1520-0493, 0027-0644}, + doi = {10.1175/1520-0493(1981)109<0758:AEAAMC>2.0.CO;2}, + urldate = {2023-03-07}, + chapter = {Monthly Weather Review}, + langid = {english}, +} + +@article{Vana2017, + title = {Single {{Precision}} in {{Weather Forecasting Models}}: {{An Evaluation}} with the {{IFS}}}, + shorttitle = {Single {{Precision}} in {{Weather Forecasting Models}}}, + author = {V{\'a}{\v n}a, F. and D{\"u}ben, P. and Lang, S. and Palmer, T. and Leutbecher, M. and Salmond, D. and Carver, G.}, + year = {2017}, + month = feb, + journal = {Monthly Weather Review}, + volume = {145}, + number = {2}, + pages = {495--502}, + issn = {0027-0644, 1520-0493}, + doi = {10.1175/MWR-D-16-0228.1}, + urldate = {2020-02-25}, + langid = {english} +} + +@article{Williams2011, + title = {The {{RAW Filter}}: {{An Improvement}} to the {{Robert}}\textendash{{Asselin Filter}} in {{Semi-Implicit Integrations}}}, + shorttitle = {The {{RAW Filter}}}, + author = {Williams, P. D.}, + year = {2011}, + month = jun, + journal = {Monthly Weather Review}, + volume = {139}, + number = {6}, + pages = {1996--2007}, + issn = {0027-0644, 1520-0493}, + doi = {10.1175/2010MWR3601.1}, + urldate = {2021-12-17}, + langid = {english}, +} + +@misc{Innes2019, + title = {A {{Differentiable Programming System}} to {{Bridge Machine Learning}} and {{Scientific Computing}}}, + author = {Innes, M. and Edelman, A. and Fischer, K. and Rackauckas, C. and Saba, E. and Shah, V. B. and Tebbutt, W.}, + year = {2019}, + month = jul, + number = {arXiv:1907.07587}, + eprint = {1907.07587}, + primaryclass = {cs}, + publisher = {{arXiv}}, + doi = {10.48550/arXiv.1907.07587}, + urldate = {2023-09-15}, + archiveprefix = {arxiv}, + keywords = {Computer Science - Machine Learning,Computer Science - Programming Languages}, +} + +@inproceedings{Moses2020, + title = {Instead of {{Rewriting Foreign Code}} for {{Machine Learning}}, {{Automatically Synthesize Fast Gradients}}}, + booktitle = {Advances in {{Neural Information Processing Systems}}}, + author = {Moses, W. and Churavy, V.}, + year = {2020}, + volume = {33}, + pages = {12472--12485}, + publisher = {{Curran Associates, Inc.}}, + urldate = {2023-09-15}, + doi = {10.48550/arXiv.2010.01709}, +} + + +@article{Meyer2022a, + doi = {10.1029/2021ms002744}, + year = {2022}, + volume = {14}, + number = {3}, + author = {Meyer, D. and Grimmond, S. and Dueben, P. and Hogan, R. and van Reeuwijk, M.}, + title = {Machine Learning Emulation of Urban Land Surface Processes}, + journal = {Journal of Advances in Modeling Earth Systems} +} + +@phdthesis{Meyer2022b, + title = {Machine {{Learning Emulators}} for{{ Numerical Weather Prediction}} — {{Applications}} to {{Parametrization Schemes}}}, + author = {David M.}, + year = {2022}, + school = {University of Reading}, + type = {PhD thesis}, + doi = {10.48683/1926.00109229}, +} + +@article{Rose2018, + title = {{{CLIMLAB}}: A {{Python Toolkit}} for {{Interactive, Process-Oriented Climate Modeling}}}, + shorttitle = {{{CLIMLAB}}}, + author = {Rose, B. E. J.}, + year = {2018}, + month = apr, + journal = {Journal of Open Source Software}, + volume = {3}, + number = {24}, + pages = {659}, + issn = {2475-9066}, + doi = {10.21105/joss.00659}, + urldate = {2023-09-29}, + abstract = {Rose, (2018). CLIMLAB: a Python toolkit for interactive, process-oriented climate modeling. Journal of Open Source Software, 3(24), 659, https://doi.org/10.21105/joss.00659}, + langid = {english} +} + +@article{reinecke2013, + author = {Reinecke, M. and Seljebotn, D. S.}, + title = "{Libsharp - spherical harmonic transforms revisited}", + journal = {Astronomy and Astrophysics}, + year = 2013, + month = jun, + volume = {554}, + eid = {A112}, + pages = {A112}, + doi = {10.1051/0004-6361/201321494}, + eprinttype = {arXiv}, + eprint = {1303.4945}, + eprintclass = {physics.comp-ph}, + adsurl = {https://ui.adsabs.harvard.edu/abs/2013A&A...554A.112R}, + adsnote = {Provided by the SAO/NASA Astrophysics Data System} +} + +@misc{stompor2011, + author = {{Stompor}, R.}, + title = "{S2HAT: {{Scalable Spherical Harmonic Transform Library}}}", + keywords = {Software}, +howpublished = {Astrophysics Source Code Library, record ascl:1110.013}, + year = 2011, + month = oct, + eprintclass = {ascl}, + eprint = {1110.013}, + adsurl = {https://ui.adsabs.harvard.edu/abs/2011ascl.soft10013S}, + adsnote = {Provided by the SAO/NASA Astrophysics Data System}, + howpublished = {\url{https://ascl.net/1110.013}}, +} + +@misc{Willmert2020, + author = {Willmert, J.}, + title = {Blog {{Series}}: {{Notes}} on {{Calculating}} the {{Spherical Harmonics}}}, + howpublished = {\url{http://web.archive.org/web/*/https://justinwillmert.com/articles/2020/notes-on-calculating-the-spherical-harmonics/}}, + year = 2020, + note = {Accessed: 2023-10-16} +} + +@article{Xarray, + title = {xarray: {N-D} labeled arrays and datasets in {Python}}, + author = {Hoyer, S. and J. Hamman}, + journal = {Journal of Open Research Software}, + volume = {5}, + number = {1}, + year = {2017}, + publisher = {Ubiquity Press}, + doi = {10.5334/jors.148}, + url = {https://doi.org/10.5334/jors.148} +} diff --git a/docs/joss/paper.md b/docs/joss/paper.md new file mode 100644 index 000000000..7d6c4e5b8 --- /dev/null +++ b/docs/joss/paper.md @@ -0,0 +1,235 @@ +--- +title: 'SpeedyWeather.jl: Reinventing atmospheric general circulation models towards interactivity and extensibility' + +tags: + - Julia + - weather + - climate + - general circulation model + - spectral + - spherical harmonic transform + +authors: + - name: Milan Klöwer + orcid: 0000-0002-3920-4356 + email: milank@mit.edu + corresponding: true # (This is how to denote the corresponding author) + affiliation: "1, 2" # (Multiple affiliations must be quoted) + + - name: Maximilian Gelbrecht + orcid: 0000-0002-0729-6671 + affiliation: "3,4" + + - name: Daisuke Hotta + orcid: 0000-0003-2287-0608 + affiliation: "5,6" + + - name: Justin Willmert + orcid: 0000-0002-6452-4693 + affiliation: 7 + + - name: Simone Silvestri + orcid: 0000-0002-7156-946X + affiliation: 1 + + - name: Gregory L Wagner + orcid: 0000-0001-5317-2445 + affiliation: 1 + + - name: Alistair White + orcid: 0000-0003-3377-6852 + affiliation: "3,4" + + - name: Sam Hatfield + orcid: 0000-0001-7235-6450 + affiliation: 6 + + - name: Tom Kimpson + orcid: 0000-0002-6542-6032 + affiliation: "2,8" + + - name: Navid C Constantinou + orcid: 0000-0002-8149-4094 + affiliation: 8 + + - name: Chris Hill + affiliation: 1 + +affiliations: + - name: Massachusetts Institute of Technology, Cambridge, MA, USA + index: 1 + - name: University of Oxford, UK + index: 2 + - name: Technical University of Munich, Germany + index: 3 + - name: Potsdam Institute for Climate Impact Research, Germany + index: 4 + - name: Japan Meteorological Agency, Tsukuba, Japan + index: 5 + - name: European Centre for Medium-Range Weather Forecasts, Reading, UK + index: 6 + - name: University of Minnesota, Minneapolis, MN, USA + index: 7 + - name: The University of Melbourne, Parkville, VIC, Australia + index: 8 + +date: 27 March 2024 +bibliography: paper.bib + +--- + + +# Summary + +SpeedyWeather.jl is a library to simulate and analyze the global atmospheric +circulation on the sphere. It implements several 2D and 3D +models which solve different sets of equations: + +- the primitive equations with and without humidity (\autoref{fig:primitive}), +- the shallow water equations (\autoref{fig:swm}), and +- the barotropic vorticity equation (\autoref{fig:particles}). + +The primitive equation model in SpeedyWeather.jl is an +atmospheric general circulation model [@Kucharski2013] with simple parameterizations +for unresolved physical processes including precipitation or boundary layer mixing. +It can be thought of as a conceptual reinvention of the Fortran SPEEDY model [@Molteni2003] +in the Julia programming language [@Bezanson2017]. However, all models here are written in a modular +way to make its components easily extensible. For example, a new parameterization can +be externally defined and passed as an argument to the model constructor. +Operators used inside SpeedyWeather.jl are exposed to the user, +facilitating analysis of the simulation data. +SpeedyWeather.jl is therefore, beyond its main purpose of simulating +atmospheric motion, also a library for the analysis of gridded data on the sphere. +Running and analyzing simulations can be interactively combined, enhancing user +experience and productivity. + +The user interface of SpeedyWeather.jl is heavily influenced by +the Julia ocean model Oceananigans.jl [@Ramadhan2020]. +A monolithic interface [@Mazlami2017], controlling most of the model's functionality +through arguments of a single function or through parameter files (often called namelists in Fortran), +is avoided in favor of a library-style interface. +A model is constructed bottom-up by first defining the discretization +and any non-default model components with their respective parameters. +All components are then collected into a single model object which, once +initialized, returns a simulation object. A simulation contains everything, +the model with all parameters as constructed before but also all prognostic and diagnostic variables. +Such a simulation can then be run, but also accessed before and after to analyze or +visualize the current variables, or individual terms of the equations. +One can also adjust some parameters before resuming the simulation. +While these steps can be written into a script for reproducibility, +the same steps can be executed and interacted with one-by-one in +Julia's read-evaluate-print loop (REPL) or in a Jupyter or Pluto notebook. +We thereby achieve an interactivity of a simulation and its various model components +far beyond the options provided in a monolithic interface. +At the same time, defaults, set to well-established test cases, +enable even inexperienced users to run simulations in just a few lines of code. + +![Surface humidity, air temperature, wind speed and precipitation simulated +with the primitive equation model in SpeedyWeather.jl. Spectral resolution is +T340 (about 40km) on an octahedral Gaussian grid [@Malardel2016] with simple +physics to represent unresolved processes such as surface fluxes including +evaporation, and precipitation due to large-scale condensation and convection. +\label{fig:primitive}](primitive.jpg) + +SpeedyWeather.jl relies on Julia's multiple dispatch programming paradigm [@Bezanson2017] +to be extensible with new components including parameterizations, forcing, drag, +or even the grid. +All such supported model components define an abstract type that can be +subtyped to introduce, for example, a new parameterization. +To define a new parameterization for convection in a given vertical column of the atmosphere, +one would define `MyConvection` as a new subtype of `AbstractConvection`. +One then only needs to extend the `initialize!` (executed once during model initialization) +and `convection!` (executed on every time step) +functions for this new type. Passing on `convection = MyConvection()` +to the model constructor then implements this new model component without +the need to branch off or overwrite existing model components. +Conceptually similar scientific modelling paradigms have been very successful +in the Python-based generic partial differential equation solver Dedalus [@Burns2020], +the process-oriented climate model CLIMLAB [@Rose2018], +and the Julia ocean model Oceananigans.jl [@Ramadhan2020]. + +The dynamical core of SpeedyWeather.jl uses established numerics +[@Bourke1972; @Hoskins1975; @Simmons1978; @Simmons1981], +widely adopted in numerical weather prediction. It is based on the spherical +harmonic transform [@reinecke2013; @stompor2011] with a leapfrog-based semi-implicit +time integration [@Hoskins1975] and a Robert-Asselin-Williams filter [@Williams2011; @Amezcua2011]. +The spherical harmonic transform is grid-flexible [@Willmert2020]. Any iso-latitude ring-based +grid can be used and new grids can be externally defined and passed in +as an argument. Many grids are already implemented: the conventional +Gaussian grid, a regular longitude-latitude grid, +the octahedral Gaussian grid [@Malardel2016], the octahedral +Clenshaw-Curtis grid [@Hotta2018], and the HEALPix grid [@Gorski2005]. +Both SpeedyWeather.jl and its spherical harmonic transform are also +number format-flexible. Single-precision floating-point numbers +(Float32) are the default as adopted by other modelling efforts [@Vana2017; @Nakano2018], +but Float64 and other custom number formats can be used with a single +code basis [@Klower2022; @Klower2020]. +Julia will compile to the choice of number format, the grid, +and and other model components just-in-time. A simple parallelization +(across vertical layers for the dynamical core, across horizontal grid points +for the parameterizations) is supported by Julia's multithreading. +No distributed-memory parallelization is currently supported, +GPU support is planned. + +SpeedyWeather.jl internally uses three sub-modules `RingGrids`, +`LowerTriangularMatrices`, and `SpeedyTransforms`. `RingGrids` is a module that discretizes +the sphere on iso-latitude rings and implements interpolations between various such grids. +`LowerTriangularMatrices` facilitates the implementation of the spherical harmonics by organizing +their coefficients in a lower triangular matrix representation. +`SpeedyTransforms` implements the spectral transform between +the grid-point space as defined by `RingGrids` and the spectral space defined in +`LowerTriangularMatrices`. These three modules are independently usable +and therefore support SpeedyWeather's library-like user interface. +Output is stored as NetCDF files using NCDatasets.jl [@NCDatasets]. + +![Relative vorticity simulated with the shallow water model in SpeedyWeather.jl. +The simulation used a spectral resolution of T1023 (about 20 km) and Float32 +arithmetic on an octahedral Clenshaw-Curtis grid [@Hotta2018]. Relative vorticity +is visualized with Matplotlib [@Hunter2007] and Cartopy [@Cartopy] using a +transparent-to-white colormap to mimic the appearance of clouds. Underlaid is +NASA's blue marble from June 2004. \label{fig:swm}](swm.png) + +# Statement of need + +SpeedyWeather.jl is a fresh approach to atmospheric models that have been +very influential in many areas of scientific and high-performance computing +as well as climate change mitigation and adaptation. +Most weather, ocean and climate models are written in Fortran +(e.g. ICON [@ICON], CESM [@CESM], MITgcm [@MITgcm], NEMO [@NEMO]) and have been +developed over decades. From this tradition follows a specific programming +style and associated user interface. +SpeedyWeather.jl aims to overcome the constraints of traditional Fortran-based models. +The modern trend sees simulations in Fortran and data analysis in Python +(e.g. NumPy [@Numpy], Xarray [@Xarray], Dask [@Dask], Matplotlib [@Hunter2007]), +making it virtually impossible to interact with various model components directly. +In SpeedyWeather.jl, interfaces to the model components are exposed to the user. +Furthermore, data-driven climate modelling [@Rasp2018; @Schneider2023], +which replaces existing model components with machine learning, +is more difficult in Fortran due to the lack of established machine learning +frameworks [@Meyer2022a]. +In Julia, Flux.jl [@Innes2019] is available for machine learning as well as automatic +differentiation with Enzyme [@Moses2020] for gradients-based optimization. + +With SpeedyWeather.jl we hope to provide a platform for data-driven +atmospheric modelling and in general an interactive model that makes difficult +problems easy to simulate. Climate models that are user-friendly, trainable, +but also easily extensible will suddenly make many complex +research ideas possible. + +![Particle trajectories advected in the barotropic vorticity model. The barotropic +vorticity equations were stochastically stirred at wave numbers 8 to 40 for homogeneous +turbulence on the sphere. The simulation was computed at T340 (about 40km global resolution). +Visualized are 20,000 particles (white dots) with trajectories (colored randomly) +for the previous 6 hours. \label{fig:particles}](particles.jpg) + +# Acknowledgements + +We acknowledge contributions from David Meyer, Mosè Giordano, Valentin Churavy, and Pietro Monticone +who have also committed to the SpeedyWeather.jl repository, and the wider Julia community +for help and support. +MK acknowledges funding from the National Science Foundation. +MK and TK acknowledge funding from the European Research Council +under the European Union's Horizon 2020 research and innovation programme for the ITHACA grant (no. 741112). +NCC acknowledges support by the Australian Research Council DECRA Fellowship DE210100749. + +# References diff --git a/docs/joss/paper.pdf b/docs/joss/paper.pdf new file mode 100644 index 000000000..c98b88d62 Binary files /dev/null and b/docs/joss/paper.pdf differ diff --git a/docs/joss/particles.jpg b/docs/joss/particles.jpg new file mode 100644 index 000000000..0bb3f9abc Binary files /dev/null and b/docs/joss/particles.jpg differ diff --git a/docs/joss/primitive.jpg b/docs/joss/primitive.jpg new file mode 100644 index 000000000..d548cca11 Binary files /dev/null and b/docs/joss/primitive.jpg differ diff --git a/docs/joss/swm.png b/docs/joss/swm.png new file mode 100644 index 000000000..de93d0cf6 Binary files /dev/null and b/docs/joss/swm.png differ