#!/bin/bash
# http://opendata.dwd.de/weather/nwp/icon-d2/grib/00/t/icon-d2_germany_regular-lat-lon_pressure-level_2023080200_000_1000_t.grib2.bz2
# ///icon-d2_regular-lat-lon_pressure-level____
# Detect latest with
# curl https://opendata.dwd.de/weather/nwp/content.log.bz2 | bzip2 -d
NPROC=$(nproc)
#OUTDIR=dwd_icon-d2
OUTDIR=dwd_icon-eu
#MODEL=icon-d2
#MODEL_LONG=icon-d2_germany
MODEL=icon-eu
MODEL_LONG=icon-eu_europe
BASE="https://opendata.dwd.de/weather/nwp"
# In ICON-EU, the parameter name in the filename is in caps.
# This is a stupid fix for a stupid problem.
PARAMETER_FILENAME_CAPS=yes
RUN="00"
PARAMETERS=( "t" "relhum" "u" "v" "fi" )
# tot_prec and cape_ml/cin_ml is in 15min intervals and screws with xygrib
# PARAMETERS_SINGLE_LEVEL=( "w_ctmax" )
PRESSURE_LEVELS=( "1000" "975" "950" "850" "700" "600" "500" "400" "300" "250" "200" )
OFFSETS=( "000" "003" "006" "009" "012" "015" "018" "024" "027" "030" "033" "036" "039" "042" "045" "048" )
DATE=$(date +%Y%m%d)
mkdir -p $OUTDIR
#echo -n > "$OUTDIR/index.txt"
for OFFSET in "${OFFSETS[@]}"; do
for PARAMETER in "${PARAMETERS[@]}"; do
for LEVEL in "${PRESSURE_LEVELS[@]}"; do
while [ $(pgrep -c -P$$) -gt $NPROC ]; do
sleep 1
done
if [ "$PARAMETER_FILENAME_CAPS" = "yes" ]; then
PARAMETER2=${PARAMETER^^}
else
PARAMETER2=${PARAMETER}
fi
URL="$BASE/$MODEL/grib/$RUN/$PARAMETER/${MODEL_LONG}_regular-lat-lon_pressure-level_${DATE}${RUN}_${OFFSET}_${LEVEL}_${PARAMETER2}.grib2.bz2"
BNAME=$(basename "$URL")
echo Getting "$URL"
#echo "${BNAME%.bz2}" >> $OUTDIR/index.txt
( wget -q --directory-prefix=$OUTDIR "$URL" || echo FAILED! ) &
done
done
for PARAMETER in "${PARAMETERS_SINGLE_LEVEL[@]}"; do
while [ $(pgrep -c -P$$) -gt $NPROC ]; do
sleep 1
done
if [ "$PARAMETER_FILENAME_CAPS" = "yes" ]; then
PARAMETER2=${PARAMETER^^}
else
PARAMETER2=${PARAMETER}
fi
URL="$BASE/$MODEL/grib/$RUN/$PARAMETER/${MODEL_LONG}_regular-lat-lon_single-level_${DATE}${RUN}_${OFFSET}_2d_${PARAMETER2}.grib2.bz2"
BNAME=$(basename "$URL")
echo Getting "$URL"
#echo "${BNAME%.bz2}" >> $OUTDIR/index.txt
( wget -q --directory-prefix=$OUTDIR "$URL" || echo FAILED! ) &
done
done
while [ $(pgrep -c -P$$) -gt 0 ]; do
sleep 1
done
echo Done downloading. Decompressing...
for F in $OUTDIR/*.grib2.bz2; do
while [ $(pgrep -c -P$$) -gt $NPROC ]; do
sleep 1
done
bzip2 -df "$F" &
done
rm -f $OUTDIR/combined.grib2
grib_copy $OUTDIR/*.grib2 $OUTDIR/combined.grib2 || exit 1
rm -f $OUTDIR/icon*.grib2
echo Done.