Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
670cbfb
a fix to empty or missing atlas-tag causing crash in -make serve-
sbrdar May 8, 2026
af6a17c
fix version check for doxygen
sbrdar May 8, 2026
432ee65
improve make help and notify of a missing Ghostscript
sbrdar May 8, 2026
6d412cf
issue a warning rather than throwing an error
sbrdar May 8, 2026
93c31c5
make loading of libgs automatic
sbrdar May 11, 2026
d88315f
libgs is now linked automatically if present. Otherwise a warning is …
sbrdar May 11, 2026
24e6194
automatically pick up the latest release version from Github
sbrdar May 11, 2026
8b24ad2
fix the break of the Pelican metadata block
sbrdar May 12, 2026
5e7accf
create a better dependency for rebuilding the pages
sbrdar May 12, 2026
8f4ef9e
add Tool >> atlas-interpolation, and Design >> Output and Visualisation
sbrdar May 12, 2026
ce84505
Merge remote-tracking branch 'origin/main' into fix/atlas_tag_my
sbrdar May 12, 2026
ad21bf3
rearrange tabs - Getting started should be first
sbrdar May 12, 2026
53f43d6
display atlas/doc/pages/mainpage.md not under Doc but on the first pa…
sbrdar May 12, 2026
cdb2b9b
addressing the GitHub PR comments by @wdeconinck
sbrdar May 18, 2026
82bfae0
improve the page Tool >> atlas-interpolation to show comparison of ti…
sbrdar May 18, 2026
d1afd3d
two fixes: in EOC for atlas-interpolation; and in gmsh output
sbrdar May 19, 2026
eb6c51f
use C++, Fortran, Python for code snippets (Python code missing)
sbrdar May 21, 2026
bc7daeb
generate Python code for the two code snippets
sbrdar May 21, 2026
316f03a
shorted the Python code snippet
sbrdar May 26, 2026
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
7 changes: 5 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,9 @@ OUTPUTDIR=$(CURDIR)/build/html
CONFFILE=$(CURDIR)/scripts/pelican/pelicanconf.py
PORT ?= 8000

CONTENT_FILES := $(shell find $(INPUTDIR) -type f)
PELICAN_CONFIG_FILES := $(shell find $(CURDIR)/scripts/pelican -type f)

PELICANOPTS=
GENERATEDOXYOPTS=
SETUPOPTS=
Expand All @@ -75,7 +78,7 @@ html: build/html/index.html
@echo "[atlas-docs] Generated html at $(CURDIR)/build/html"
@echo "[atlas-docs] To visualise, execute \"make serve\" and open browser at \"http://localhost:8000\""

build/html/index.html: content/generated/atlas_release_version.rst build/html/$(DOXYGEN_API)/index.html
build/html/index.html: content/generated/atlas_release_version.rst build/html/$(DOXYGEN_API)/index.html $(CONTENT_FILES) $(PELICAN_CONFIG_FILES)
@echo "[atlas-docs] Building Pelican documentation"
@$(PELICAN) $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS)

Expand All @@ -95,7 +98,7 @@ else
@touch build/doxygen/atlas.tag
endif

build/doxygen/Doxyfile: venv/bin/activate
build/doxygen/Doxyfile: venv/bin/activate scripts/generate_doxyfile.py scripts/doxygen/Doxyfile-default scripts/doxygen/Doxyfile-custom scripts/doxygen/Doxyfile-mcss
@echo "[atlas-docs] Generating Doxyfile \"build/doxygen/Doxyfile\""
@$(GENERATE_DOXYFILE) $(GENERATEDOXYOPTS)

Expand Down
3 changes: 3 additions & 0 deletions content/design.rst
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@ are aided by diagrams formulated in the `Unified Modelling Language (UML) <http:
`Interpolation » <{filename}/design/interpolation.rst>`_
========================================================

`Output and visualisation » <{filename}/design/output_and_visualisation.rst>`_
===============================================================================

`Parallelisation » <{filename}/design/parallelisation.rst>`_
============================================================

Expand Down
45 changes: 39 additions & 6 deletions content/design/grid.rst
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,6 @@ Grid
.. role:: cpp(code)
:language: cpp

.. note-danger:: Under construction!!!

.. contents::
:class: m-block m-default

Expand Down Expand Up @@ -169,20 +167,34 @@ Following code snippets shows how to construct any grid from either a configurat

.. block-warning:: Example on construction of grids

C++ example:
.. raw:: html

<div class="atlas-tabs">
<input type="radio" id="grid-code-tab-cpp" name="grid-code-tabs" checked>
<input type="radio" id="grid-code-tab-fortran" name="grid-code-tabs">
<input type="radio" id="grid-code-tab-python" name="grid-code-tabs">
<div class="atlas-tabs__labels">
<label for="grid-code-tab-cpp">C++</label>
<label for="grid-code-tab-fortran">Fortran</label>
<label for="grid-code-tab-python">Python</label>
</div>
<div class="atlas-tabs__panel atlas-tabs__panel--cpp">

.. code:: cpp


Config F16_config;
F16_config.set( "type", "regular_gaussian" );
F16_config.set( "N", 16 );

Grid F16( F16_config ); // regular Gaussian grid (F16)
Grid N16( "N16" ); // classic reduced Gaussian (N16)

Fortran example:

.. raw:: html

</div>
<div class="atlas-tabs__panel atlas-tabs__panel--fortran">

.. code:: fortran

type(atlas_Grid) :: F16, N16
Expand All @@ -195,6 +207,27 @@ Following code snippets shows how to construct any grid from either a configurat
F16 = atlas_Grid( F16_config ) ! regular Gaussian grid (F16)
N16 = atlas_Grid( "N16" ) ! classic reduced Gaussian grid (N16)

.. raw:: html

</div>
<div class="atlas-tabs__panel atlas-tabs__panel--python">

.. code:: python

import atlas

f16_config = atlas.Config()
f16_config.set("type", "regular_gaussian")
f16_config.set("N", 16)

F16 = atlas.Grid(f16_config) # regular Gaussian grid (F16)
N16 = atlas.Grid("N16") # classic reduced Gaussian grid (N16)

.. raw:: html

</div>
</div>

.. note-success::

Even though the configuration object (``F16_config``) is here constructed programatically,
Expand Down
50 changes: 50 additions & 0 deletions content/design/output_and_visualisation.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
Output and visualisation
########################

:breadcrumb: {filename}/design.rst Design

.. role:: cpp(code)
:language: cpp

.. role:: verbatim(code)
:language: verbatim

.. contents::
:class: m-block m-default

Atlas provides a way to visualise parallel meshes and fields from its output. The Atlas output is supported in ``Gmsh`` and ``SCRIP/netcdf`` format.

Gmsh visualisation
==================

Installing Gmsh
---------------

Please `download and install the 4.6 version of Gmsh <https://gmsh.info/bin/>`_ to visualize Atlas output.

.. note-warning::

Atlas is tested with Gmsh **4.6**. Please make sure to install this version of Gmsh to visualize Atlas output.


Example of visualising meshes and fields with Gmsh
--------------------------------------------------

Atlas can output meshes and fields in the `Gmsh <https://gmsh.info>`_ `format <https://gmsh.info/doc/texinfo/gmsh.html#MSH-file-format-version-2-_0028Legacy_0029>`_.
This is a great format to visualise low resolution meshes and fields with the interactive Gmsh viewer.
However, it becomes sluggish to unresponsive for high resolution meshes and fields.

Using ``atlas-meshgen`` and ``atlas-interpolation`` tools, one can generate meshes and variable field values in Gmsh format, and visualise them with the interactive Gmsh viewer.
Here is an example of visualising a mesh with the Gmsh viewer:

.. code-block:: bash

./bin/atlas-meshgen --3d --include-pole O4
gmsh mesh.msh

It is also possible to visualise fields with the Gmsh viewer. Here is an example of outputting and visualising an interpolated field with the Gmsh viewer:

.. code-block:: bash

./bin/atlas-interpolation --s.grid O4 --t.grid O4 --interpolation nearest --output-gmsh
gmsh tgt_mesh.msh tgt_field.msh
34 changes: 31 additions & 3 deletions content/getting_started/linking.rst
Original file line number Diff line number Diff line change
Expand Up @@ -165,16 +165,44 @@ a ``BUNDLE`` option to toggle the behaviour of either bundling the dependencies
To enable the bundling, the argument ``-DBUNDLE=ON`` needs to be passed
on the cmake configuration command line.

- The content of ``hello_atlas.cc`` is:
.. raw:: html

<div class="atlas-tabs">
<input type="radio" id="grid-code-tab-cpp" name="grid-code-tabs" checked>
<input type="radio" id="grid-code-tab-fortran" name="grid-code-tabs">
<input type="radio" id="grid-code-tab-python" name="grid-code-tabs">
<div class="atlas-tabs__labels">
<label for="grid-code-tab-cpp">C++</label>
<label for="grid-code-tab-fortran">Fortran</label>
<label for="grid-code-tab-python">Python</label>
</div>
<div class="atlas-tabs__panel atlas-tabs__panel--cpp">

.. include:: project_bundle_atlas/src/hello-atlas.cc
:code: c++

- The content of ``hello_atlas_f.cc`` is:
.. raw:: html

</div>
<div class="atlas-tabs__panel atlas-tabs__panel--fortran">

.. include:: project_bundle_atlas/src/hello-atlas_f.F90
:code: fortran


.. raw:: html

</div>
<div class="atlas-tabs__panel atlas-tabs__panel--python">

.. include:: project_bundle_atlas/src/hello-atlas.py
:code: python

.. raw:: html

</div>
</div>


Creating a new project with ecbuild
-----------------------------------

Expand Down

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I am sure this is not correct :)
Perhaps for now you can remove this.

Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#!/usr/bin/env python3
import atlas

def main() -> None:
_ = atlas
print("Hello from atlas")

if __name__ == "__main__":
main()
50 changes: 47 additions & 3 deletions content/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,6 @@ Atlas
:description: Data structure library for NWP and Climate Modelling
:summary: Data structure library for NWP and Climate Modelling
:hide_navbar_brand: True

.. include:: generated/atlas_release_version.rst

:landing:
.. container:: m-row

Expand Down Expand Up @@ -43,3 +40,50 @@ Atlas

| Version |atlas-release-version| released

Overview
========

Atlas is an ECMWF library for parallel data structures supporting unstructured
grids and function spaces, with the aim to investigate alternative, more scalable
dynamical core options for Earth system models, and to support modern interpolation
and product generation software.

Atlas is predominantly C++ code, with main features available to Fortran codes
through a F2003 interface. It requires some flavour of Unix (such as Linux).
It is known to run on a number of systems, some of which are directly supported
by ECMWF.

What's New?
===========

Curious about what was added or improved recently?
Check out the `Changelog <https://github.com/ecmwf/atlas/blob/master/CHANGELOG.md>`_.

Contributing
============

Contributions to Atlas are welcome. Open an issue to discuss a feature request
or bug, then submit a pull request against the ``develop`` branch.

Citing Atlas
============

If Atlas was useful in your research, please cite:

.. code-block:: bibtex

@article{DECONINCK2017188,
title = "Atlas : A library for numerical weather prediction and climate modelling",
journal = "Computer Physics Communications",
volume = "220",
pages = "188 - 204",
year = "2017",
issn = "0010-4655",
doi = "https://doi.org/10.1016/j.cpc.2017.07.006",
url = "http://www.sciencedirect.com/science/article/pii/S0010465517302138",
author = "Willem Deconinck and Peter Bauer and Michail Diamantakis and Mats Hamrud and Christian Kuhnlein and Pedro Maciel and Gianmarco Mengaldo and Tiago Quintino and Baudouin Raoult and Piotr K. Smolarkiewicz and Nils P. Wedi",
keywords = "Numerical weather prediction, Climate, Earth system, High performance computing, Meteorology, Flexible mesh data structure"
}

.. include:: generated/atlas_release_version.rst

5 changes: 5 additions & 0 deletions content/tools.rst
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,8 @@ This page discusses some of the tools thar are provided by the atlas installatio
`atlas-meshgen » <{filename}/tools/atlas-meshgen.rst>`_
=======================================================

`atlas-interpolation » <{filename}/tools/atlas-interpolation.rst>`_
===================================================================

`atlas-gaussian-latitudes » <{filename}/tools/atlas-gaussian-latitudes.rst>`_
=============================================================================
27 changes: 25 additions & 2 deletions content/tools/atlas-grids.rst
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,36 @@ The command-line tool ``atlas-grids`` provides information on grids supported by
Usage
-----

.. code :: shell
.. code-block:: shell

$ atlas-grids <grid> [OPTION]... [--help]

For a list of supported grids, use

.. code :: shell
.. code-block:: shell

$ atlas-grids --list

Special grids FESOM and ORCA
============================

Different FESOM and ORCA meshes are available as Atlas plugins after adding them in ``atlas-bundle/bundle.yml``:

.. code-block:: yaml

- atlas-orca :
git : ${GITHUB}/ecmwf/atlas-orca
version : develop
require : atlas

- atlas-fesom :
git : ${GITHUB}/ecmwf/atlas-fesom
version : develop
require : atlas

Before using FESOM and ORCA grids, we need to set environment variables:

.. code-block:: bash

export ATLAS_ORCA_CACHING=1
export ATLAS_FESOM_CACHING=1
Loading