diff --git a/ICON.md b/ICON.md
new file mode 100644
index 0000000000000000000000000000000000000000..6f1edf21e03a4fc1576bcec29e81c687f0f72725
--- /dev/null
+++ b/ICON.md
@@ -0,0 +1,133 @@
+(mypy36) [serafin@jet01 icon-2.6.6]$ module list
+Currently Loaded Modulefiles:
+ 1) intel-parallel-studio/composer.2020.2-intel-20.0.2-zuot22y
+ 2) zlib/1.2.11-intel-20.0.2-3h374ov
+ 3) openmpi/4.0.5-intel-20.0.2-4wfaaz4
+ 4) hdf5/1.12.0-intel-20.0.2-ezeotzr
+ 5) parallel-netcdf/1.12.1-intel-20.0.2-sgz3yqs
+ 6) netcdf-c/4.7.4-intel-20.0.2-337uqtc
+ 7) netcdf-fortran/4.5.3-intel-20.0.2-irdm5gq
+ 8) netlib-lapack/3.9.1-gcc-8.5.0-ipqdnxj
+ 9) openblas/0.3.18-gcc-8.5.0-zv6qss4
+
+
+
+ICON can be downloaded and used under a personal non-commercial research license (https://code.mpimet.mpg.de/projects/iconpublic/wiki/Instructions_to_obtain_the_ICON_model_code_with_a_personal_non-commercial_research_license). An account at <code.mpimet.mpg.de> is required. Instructions are available on the [public ICON page](https://code.mpimet.mpg.de/projects/iconpublic).
+
+ICON [Tutorial](https://www.dwd.de/EN/ourservices/nwv_icon_tutorial/pdf_volume/icon_tutorial2023_en.pdf?__blob=publicationFile&v=3)
+
+
+1. Unpack the tarball of the source code.
+```sh
+tar xvf icon-2.6.6.tar.xz
+```
+The unpacked source code should look like this:
+```sh
+(mypy36) [serafin@jet01 test]$ ls icon-2.6.6
+total 684K
+drwxr-xr-x  5 serafin users 4,0K 20 mar 17.05 adify
+drwxr-xr-x 14 serafin users 4,0K 20 mar 17.05 config
+drwxr-xr-x  5 serafin users 4,0K 20 mar 17.05 data
+drwxr-xr-x 10 serafin users 4,0K 20 mar 17.05 doc
+drwxr-xr-x  3 serafin users 4,0K 20 mar 17.05 etc
+drwxr-xr-x 18 serafin users 4,0K 20 mar 17.05 externals
+drwxr-xr-x  2 serafin users 4,0K 20 mar 17.05 grids
+drwxr-xr-x  3 serafin users 4,0K 20 mar 17.05 license
+drwxr-xr-x  2 serafin users 4,0K 20 mar 17.05 m4
+drwxr-xr-x 18 serafin users  16K 20 mar 17.05 run
+drwxr-xr-x  2 serafin users 4,0K 20 mar 17.05 run_art
+drwxr-xr-x  3 serafin users 4,0K 20 mar 17.05 schedulers
+drwxr-xr-x 20 serafin users 4,0K 20 mar 17.05 scripts
+drwxr-xr-x 38 serafin users 4,0K 20 mar 17.05 src
+drwxr-xr-x  2 serafin users 4,0K 20 mar 17.05 support
+drwxr-xr-x  8 serafin users 4,0K 20 mar 17.05 utils
+drwxr-xr-x  2 serafin users 4,0K 20 mar 17.05 vertical_coord_tables
+-rw-r--r--  1 serafin users  13K  9 feb 14.48 claw.mk.in
+-rw-r--r--  1 serafin users 2,6K  7 feb 11.50 config.h.in
+-rwxr-xr-x  1 serafin users 371K  9 feb 14.48 configure
+-rw-r--r--  1 serafin users 113K  9 feb 14.48 configure.ac
+-rw-r--r--  1 serafin users  641  7 feb 11.50 COPYING
+-rw-r--r--  1 serafin users   47  7 feb 11.50 depgen.c.config.in
+-rw-r--r--  1 serafin users 1,7K  9 feb 14.48 depgen.f90.config.in
+-rw-r--r--  1 serafin users  389  9 feb 14.48 deplist.config.in
+-rw-r--r--  1 serafin users  27K  9 feb 14.48 icon.mk.in
+-rw-r--r--  1 serafin users 2,9K  9 feb 14.48 inlib.mk.in
+-rw-r--r--  1 serafin users 3,8K  9 feb 14.48 Makefile.in
+-rwxr-xr-x  1 serafin users 8,8K  9 feb 14.48 make_runscripts
+-rw-r--r--  1 serafin users 2,4K  9 feb 14.48 README.art
+-rw-r--r--  1 serafin users  73K  9 feb 14.48 README.md
+-rw-r--r--  1 serafin users  11K  9 feb 14.48 RELEASE_NOTES.md
+```
+
+1. Generate a configuration script for the machine where the code has to run. In practice, go to `config` and create a directory `univie` in there. In the `univie` directory, place this file:
+```jet.ifort.sh
+#!/bin/bash
+set -eu
+
+module purge
+module load intel-parallel-studio/composer.2020.2-intel-20.0.2-zuot22y \
+zlib/1.2.11-intel-20.0.2-3h374ov \
+openmpi/4.0.5-intel-20.0.2-4wfaaz4 \
+hdf5/1.12.0-intel-20.0.2-ezeotzr \
+parallel-netcdf/1.12.1-intel-20.0.2-sgz3yqs \
+netcdf-c/4.7.4-intel-20.0.2-337uqtc \
+netcdf-fortran/4.5.3-intel-20.0.2-irdm5gq \
+netlib-lapack/3.9.1-gcc-8.5.0-ipqdnxj \
+openblas/0.3.18-gcc-8.5.0-zv6qss4 \
+libxml2/2.9.12-intel-20.0.2-anavgpx 
+
+./configure \
+CC='/jetfs/spack/opt/spack/linux-rhel8-skylake_avx512/intel-20.0.2/intel-parallel-studio-composer.2020.2-zuot22yfoe7jl67ttimvkzghwluvyaas/compilers_and_libraries_2020.2.254/linux/bin/intel64/icc' \
+FC='/jetfs/spack/opt/spack/linux-rhel8-skylake_avx512/intel-20.0.2/openmpi-4.0.5-4wfaaz4grfqvlblibkdrpjlwd4xnq3ud/bin/mpif90' \
+FCFLAGS="-I/jetfs/spack/opt/spack/linux-rhel8-skylake_avx512/intel-20.0.2/openmpi-4.0.5-4wfaaz4grfqvlblibkdrpjlwd4xnq3ud/include \
+         -I/jetfs/spack/opt/spack/linux-rhel8-skylake_avx512/intel-20.0.2/netcdf-fortran-4.5.3-irdm5gqccsig2om7jqu376h6tlebh4bc/include \
+         -O3 -g" \
+CFLAGS="-I/jetfs/spack/opt/spack/linux-rhel8-skylake_avx512/intel-20.0.2/netcdf-c-4.7.4-337uqtcryw6nabweovh6kgsxozdwvylb/include" \
+CPPFLAGS="-I/jetfs/spack/opt/spack/linux-rhel8-skylake_avx512/intel-2021.4.0/eccodes-2.21.0-xnc5g2flgzmvm72lbnp4mrxior4txqlo/include \
+          -I/jetfs/spack/opt/spack/linux-rhel8-skylake_avx512/intel-20.0.2/libxml2-2.9.12-anavgpxavrdktex4xecu6646yxhvqcul/include/libxml2" \
+LDFLAGS="-L/jetfs/spack/opt/spack/linux-rhel8-skylake_avx512/intel-20.0.2/openmpi-4.0.5-4wfaaz4grfqvlblibkdrpjlwd4xnq3ud/lib \
+         -L/jetfs/spack/opt/spack/linux-rhel8-skylake_avx512/intel-20.0.2/netcdf-c-4.7.4-337uqtcryw6nabweovh6kgsxozdwvylb/lib \
+         -L/jetfs/spack/opt/spack/linux-rhel8-skylake_avx512/intel-20.0.2/netcdf-fortran-4.5.3-irdm5gqccsig2om7jqu376h6tlebh4bc/lib \
+         -L/jetfs/spack/opt/spack/linux-rhel8-skylake_avx512/gcc-8.5.0/openblas-0.3.18-zv6qss4vqhaqt4a3x4zeh7sbi6buuai3/lib \
+         -L/jetfs/spack/opt/spack/linux-rhel8-skylake_avx512/gcc-8.5.0/netlib-lapack-3.9.1-ipqdnxjet2tlzossnlxlz33v7f5x6ckf/lib64 \
+         -L/jetfs/spack/opt/spack/linux-rhel8-skylake_avx512/intel-20.0.2/libxml2-2.9.12-anavgpxavrdktex4xecu6646yxhvqcul/lib \
+         -L/jetfs/spack/opt/spack/linux-rhel8-skylake_avx512/intel-2021.4.0/eccodes-2.21.0-xnc5g2flgzmvm72lbnp4mrxior4txqlo/lib64" \
+LIBS='-leccodes -lxml2 -llapack -lblas -lnetcdff -lnetcdf -lmpi' \
+--enable-mpi --enable-grib2 --without-external-cdi
+```
+This configure script does two things: i) loads a selection of environment modules; ii) runs the ICON configure scripts passing all the required compiler flags.
+
+1. Prepare for an out-of-source build. Create a build directory wherever you want and move into it. From the build directory, execute `jet.ifort.sh` (the configuration script above):
+
+
+1. Set the `LD_LIBRARY_PATH` environmental variable so that the Intel Math Library is accessible during compilation:
+```sh
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/jetfs/spack/opt/spack/linux-rhel8-skylake_avx512/intel-20.0.2/intel-parallel-studio-composer.2020.2-zuot22yfoe7jl67ttimvkzghwluvyaas/lib/intel64_lin
+```
+The code will not build otherwise. Setting this variable may have to be necessary even at runtime (not tested yet!).
+
+1. Compile the code by running in the build directory:
+```sh
+make -j8
+```
+
+1. Copy in the build directory all the files needed to generate the ICON run scripts. The easiest way to do so is to use the following script (after editing the paths `ICON_SRC_DIR` and `ICON_BUILD_DIR`):
+
+```sh
+#!/bin/bash
+set -eu
+
+ICON_SRC_DIR=/jetfs/home/serafin/ICON/icon-2.6.6
+ICON_BUILD_DIR=/jetfs/home/serafin/ICON/icon-2.6.6/jet
+
+cd $ICON_BUILD_DIR
+rsync -uavz $ICON_SRC_DIR/run . --exclude='*in' --exclude='.*'
+rsync -uavz $ICON_SRC_DIR/run . --exclude='*in' --exclude='.*'
+rsync -uavz $ICON_SRC_DIR/externals . --exclude='.git' \
+  --exclude='*.f90' --exclude='*.F90' --exclude='*.c' --exclude='*.h' \
+  --exclude='*.Po' --exclude='tests' --exclude='rrtmgp*.nc' --exclude='*.mod' \
+  --exclude='*.o'
+rsync -uavz $ICON_SRC_DIR/make_runscripts .
+ln -sf $ICON_SRC_DIR/data
+ln -sf $ICON_SRC_DIR/vertical_coord_tables
+```