• Stars
    star
    104
  • Rank 328,565 (Top 7 %)
  • Language
    C++
  • License
    Apache License 2.0
  • Created over 6 years ago
  • Updated about 1 month ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A library for numerical weather prediction and climate modelling

Atlas

atlas release version build codecov

Project home: https://confluence.ecmwf.int/display/ATLAS
Contact: Willem Deconinck ([email protected])
Publication:

Deconinck et al, 2017 --- Atlas: A library for numerical weather prediction and climate modelling

Atlas is a 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.

Requirements

Tested compilers include:

  • GCC 4.9.1, 5.3.0, 6.3.0, 7.2.0
  • Intel 15.0.2, 16.0.3, 17, 18
  • CCE 8.4.5, 8.5.8, 8.6.2
  • PGI-Fortran 17.7 combined with GNU-C/C++ 6.3
  • PGI 17.7

Known compilers to fail include:

  • PGI-Fortran 17.10, 18.1

Required dependencies:

  • CMake --- For use and installation see http://www.cmake.org/
  • ecbuild --- ECMWF library of CMake macros
  • eckit (with MPI support) --- C++ support library

Recommended dependencies:

  • fckit --- For enabling Fortran interfaces
  • python (only when Fortran bindings are required)

Optional dependencies:

  • gridtools-storage --- For GPU interoperability
  • transi --- For enabling IFS spherical harmonics transforms ( not open-source )
  • CGAL --- For enabling Delaunay triangulation of unstructured grids
  • Eigen3 -- For certain linear algebra operations
  • FFTW -- For enabling inverse spherical harmonics transforms (TransLocal)

Installation

Atlas employs an out-of-source build/install based on CMake.

Make sure ecbuild, eckit and fckit are installed and the ecbuild executable script is found ( which ecbuild ). Following environment variables help the build system to detect the right dependencies:

# For finding eckit
ECKIT_PATH               # Path to eckit prefix

# For finding fckit
FCKIT_PATH               # Path to fckit prefix

Other environment variables that could be required for optional features:

# For finding gridtools-storage
GRIDTOOLS_STORAGE_PATH   # Path to gridtools-storage prefix

# For finding transi
TRANSI_PATH              # Path to transi prefix

# For finding CGAL
BOOST_ROOT               # Path to Boost prefix
CGAL_DIR                 # Path to directory containing CGALConfig.cmake
Eigen3_DIR               # Path to directory containing Eigen3Config.cmake
FFTW_PATH                # Path to FFTW prefix

Now proceed with installation as follows

# Environment --- Edit as needed
ATLAS_SRC=$(pwd)
ATLAS_BUILD=build
ATLAS_INSTALL=$HOME/local

# 1. Create the build directory:
mkdir $ATLAS_BUILD
cd $ATLAS_BUILD

# 2. Run CMake
ecbuild --prefix=$ATLAS_INSTALL -- $ATLAS_SRC

# 3. Compile / Install
make -j10
make install

# 4. Check installation
$ATLAS_INSTALL/bin/atlas --info

Extra flags maybe added to step 2 to fine-tune configuration.

  • --build=DEBUG|RELEASE|BIT --- Optimisation level
    • DEBUG: No optimisation (-O0 -g)
    • BIT: Maximum optimisation while remaning bit-reproducible (-O2 -g)
    • RELEASE: Maximum optimisation (-O3)
  • -DENABLE_OMP=OFF --- Disable OpenMP
  • -DENABLE_FORTRAN=OFF --- Disable Compilation of Fortran bindings

Note: By default compilation is done using shared libraries. Some systems have linking problems with static libraries that have not been compiled with -fPIC. In this case, also compile atlas using static linking, by adding to step 2: --static

Runtime Configuration

Atlas behaviour can be configured through some environment variables with defaults marked in square brackets

  • ATLAS_INFO=<0|[1]> --- Control printing of Atlas standard information
  • ATLAS_DEBUG=<[0]|1> --- Control printing of Atlas debug information
  • ATLAS_TRACE=<[0]|1> --- Control printing of Atlas traces (includes timings)

Contributing

Contributions to Atlas are welcome. In order to do so, please open an issue where a feature request or bug can be discussed. Then issue a pull request with your contribution. Pull requests must be issued against the develop branch.

Citing Atlas

If you publish work which mentions Atlas, or Atlas has been useful in your research, please cite the following paper:

@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 Kรผhnlein 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"
}

More Repositories

1

cfgrib

A Python interface to map GRIB files to the NetCDF Common Data Model following the CF Convention using ecCodes
Python
392
star
2

climetlab

Python package for easy access to weather and climate data
Python
368
star
3

cdsapi

Python API to access the Copernicus Climate Data Store (CDS)
Python
223
star
4

notebook-examples

Example notebooks showing how to work with ECMWF services and data
Jupyter Notebook
185
star
5

eccodes

ECMWF's GRIB and BUFR decoding/encoding library
C++
183
star
6

ecmwf-opendata

A package to download ECMWF open data
Python
162
star
7

metview-python

Python interface to Metview meteorological workstation and batch system
Python
125
star
8

eccodes-python

Python interface to the ecCodes GRIB/BUFR decoder/encoder
Python
111
star
9

ecmwf-api-client

Python API to access ECMWF archive
Python
66
star
10

thermofeel

thermofeel is a library to calculate human thermal comfort indexes
Python
65
star
11

magics

Plotting package to visualise meteorological data in GRIB, NetCDF, BUFR and ODB format.
Jupyter Notebook
54
star
12

earthkit-data

A format-agnostic Python interface for geospatial data
Python
53
star
13

magics-python

Python interface to Magics meteorological plotting package
Python
49
star
14

skinnywms

Lightweight WMS server for serving maps of netCDF and GRIB data
Python
46
star
15

earthkit

Python tools to work with weather and climate data
Python
40
star
16

ecflow

ECMWF's workflow manager
C++
40
star
17

infero

A lower-level API for Machine Learning inference in operations
C++
35
star
18

fckit

A Fortran toolkit for interoperating Fortran with C/C++
Python
29
star
19

ecbuild

A CMake-based build system, consisting of a collection of CMake macros and functions that ease the managing of software build systems
CMake
26
star
20

polytope

A library for extracting polytope "features" from datacubes
Python
26
star
21

fdb

Fdb is a domain-specific object store for meteorological objects
C++
23
star
22

eckit

A C++ toolkit that supports development of tools and applications at ECMWF.
C++
22
star
23

pdbufr

High-level BUFR interface for ecCodes
Python
21
star
24

ecpoint-calibrate

Interactive GUI (developed in Python) for calibration and conditional verification of numerical weather prediction model outputs.
JavaScript
21
star
25

caliver

caliver: CALIbration and VERification of gridded fire danger models
R
18
star
26

anemoi-datasets

Python
16
star
27

ecmwflibs

Python
15
star
28

metview-docs

Source for Metview's documentation on readthedocs
10
star
29

magpye

Jupyter Notebook
10
star
30

ecPoint

Post-processing system that provides probabilistic forecasts at point scale.
10
star
31

troika

Python
10
star
32

earthkit-maps

Geospatial visulation tools and templates
Python
9
star
33

aviso

Time-critical notification system designed to trigger users' workflows across HPC and Cloud systems
Python
9
star
34

anemoi-models

Python
9
star
35

cfgrib.jl

Julia
8
star
36

hda

API to harmonised data access for DIAS/WEkEO
Python
8
star
37

odc

Package to read/write ODB data
C++
8
star
38

multio

MultIO is a runtime-configurable multiplexer for Weather Model output of GRIB data
Fortran
7
star
39

pyflow

A high level Python interface to ecFlow allowing the creation of ecFlow suites in a modular and "pythonic" way
Jupyter Notebook
7
star
40

multiurl

A package to download several URL as one, as well as supporting multi-part URLs.
Python
7
star
41

kronos

Kronos provides tools for analysing profiling information, model and generating portable HPC workloads
Python
7
star
42

spartacus-surface

Radiative transfer in forests and cities
Fortran
7
star
43

pyeccodes

EXPERIMENTAL - A pure Python GRIB decoder
Python
6
star
44

mir

C++
6
star
45

metkit

Toolkit for manipulating and describing meteorological objects, implementing the MARS language and associated processing and semantics.
C++
6
star
46

magics-test

Magics regression test suite
GLSL
6
star
47

pyodc

Python interface for ODC
Python
6
star
48

anemoi-inference

Python
5
star
49

ecbundle

Bundle management tool for CMake projects
Python
4
star
50

jupyter-notebook

Jupyter Notebook image with ECMWF software installed
Dockerfile
3
star
51

covjsonkit

A library for encoding and decoding coverageJSON files/objects of meteorlogical features such as vertical profiles and time series.
Python
3
star
52

hat

Python
3
star
53

polytope-server

Python
3
star
54

ecmwf-data

A package to inspect and process ECMWF open data
Jupyter Notebook
3
star
55

earthkit-meteo

Python
2
star
56

ecflow-light

A light ecFlow UDP and HTTP client
C++
2
star
57

findlibs

Python
2
star
58

anemoi-docs

2
star
59

queueos

Python
2
star
60

atlas-orca

atlas-orca plugin for Atlas, providing support for ORCA grids and mesh generation
C++
2
star
61

pyfdb

Python
2
star
62

anemoi-graphs

Python
2
star
63

climetlab-demo-dataset

Python
1
star
64

atlas-docs

Documentation for Atlas package
Python
1
star
65

magics-styles

Style definitions for Magics plot package
1
star
66

earthkit-regrid

Python
1
star
67

ecquote

Python
1
star
68

homebrew-ecmwf

Homebrew packages for ECMWF software
Ruby
1
star
69

servicelib

A services framework for Python (EXPERIMENTAL!!)
Python
1
star
70

earthkit-transforms

Python
1
star
71

earthkit-plots

Visualisation tools and templates designed for earth science data.
Python
1
star
72

ogc-gdc-usecase

A collection of scripts for access to test data for the OGC GeoDataCubes working group
Jupyter Notebook
1
star
73

pyflow-wellies

A set of tools to build consistent pyflow suites.
Python
1
star
74

anemoi-utils

Python
1
star
75

earthkit-time

Date and time manipulation routines for the use of weather data
Python
1
star
76

anemoi-registry

Python
1
star
77

conflator

Python
1
star
78

.github

Default issue and PR templates for ECMWF repos.
1
star