• Stars
    star
    110
  • Rank 316,770 (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
398
star
2

climetlab

Python package for easy access to weather and climate data
Python
373
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
192
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
126
star
8

eccodes-python

Python interface to the ecCodes GRIB/BUFR decoder/encoder
Python
113
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
56
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
47
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

polytope

A library for extracting polytope "features" from datacubes
Python
28
star
20

anemoi-datasets

Python
28
star
21

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
22

fdb

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

pdbufr

High-level BUFR interface for ecCodes
Python
23
star
24

eckit

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

anemoi-models

Python
21
star
26

ecpoint-calibrate

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

caliver

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

ecmwflibs

Python
15
star
29

anemoi-inference

Python
11
star
30

metview-docs

Source for Metview's documentation on readthedocs
10
star
31

magpye

Jupyter Notebook
10
star
32

ecPoint

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

troika

Python
10
star
34

anemoi-graphs

Python
10
star
35

anemoi-training

Python
9
star
36

aviso

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

earthkit-maps

Geospatial visulation tools and templates
Python
9
star
38

cfgrib.jl

Julia
8
star
39

mir

C++
8
star
40

pyflow

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

hda

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

odc

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

anemoi-docs

7
star
44

multio

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

multiurl

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

kronos

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

spartacus-surface

Radiative transfer in forests and cities
Fortran
7
star
48

pyeccodes

EXPERIMENTAL - A pure Python GRIB decoder
Python
6
star
49

metkit

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

magics-test

Magics regression test suite
GLSL
6
star
51

pyodc

Python interface for ODC
Python
6
star
52

earthkit-meteo

Python
4
star
53

ecbundle

Bundle management tool for CMake projects
Python
4
star
54

anemoi-utils

Python
4
star
55

anemoi-registry

Python
4
star
56

jupyter-notebook

Jupyter Notebook image with ECMWF software installed
Dockerfile
3
star
57

covjsonkit

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

hat

Python
3
star
59

polytope-server

Python
3
star
60

ecmwf-data

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

ecflow-light

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

findlibs

Python
2
star
63

queueos

Python
2
star
64

atlas-orca

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

pyfdb

Python
2
star
66

climetlab-demo-dataset

Python
1
star
67

atlas-docs

Documentation for Atlas package
Python
1
star
68

magics-styles

Style definitions for Magics plot package
1
star
69

earthkit-regrid

Python
1
star
70

ecquote

Python
1
star
71

homebrew-ecmwf

Homebrew packages for ECMWF software
Ruby
1
star
72

servicelib

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

earthkit-transforms

Python
1
star
74

earthkit-plots

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

ogc-gdc-usecase

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

pyflow-wellies

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

earthkit-time

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

conflator

Python
1
star
79

.github

Default issue and PR templates for ECMWF repos.
1
star