#!/bin/bash # source global variable source 0_export.bash source activate ${PY_ENV_NAME} export GTIFF_SRS_SOURCE='EPSG' YEAR_START=${1:-${MODEL_YEAR_START}} YEAR_STOP=${2:-${MODEL_YEAR_STOP}} [ ! -d ${OUTPUT_DIR} ] && mkdir -p ${OUTPUT_DIR} [ ! -d ${TMP_DIR} ] && mkdir -p ${TMP_DIR} echo " %Status: performing CHELSA downscaling" echo " %Status: -----------------------------" echo " %Status: MODEL_NAME = ${MODEL_NAME}" echo " %Status: MODEL_REALIZATION = ${MODEL_REALIZATION}" echo " %Status: MODEL_EXPERIMENT = ${MODEL_EXPERIMENT}" LOWER_CHELSA_OUTPUT_TYPE=$(echo "${CHELSA_OUTPUT_TYPE}" | tr '[:upper:]' '[:lower:]') for YEAR in $(seq ${YEAR_START} ${YEAR_STOP});do echo " %Status: working on year ${YEAR}" NDAYS=$(get_days_in_year ${YEAR}) ################################################################ for DOY in $(seq 1 ${NDAYS});do MONTH=$(date -d "${YEAR}-01-01 $((DOY-1)) days" +%m) DAY=$(date -d "${YEAR}-01-01 $((DOY-1)) days" +%d) echo " %Status: doy = ${DOY}, DATE = $(printf '%04d-%02d-%02d' ${YEAR} ${MONTH} ${DAY})" python -Bu ${PY_SCRIPT_CHELSA} \ -m ${MODEL_NAME} \ -exp ${MODEL_EXPERIMENT} \ -r ${MODEL_REALIZATION} \ -t1 ${DOY} \ -o ${REGION_OUTPUT_DIR} \ -i ${TIME_INDEPENDENT_REGION_INPUT_DIR} \ -au ${TIME_INDEPENDENT_REGION_INPUT_DIR} \ -w ${MODEL_ISIMIP3B_REGION_DIR} \ -cm ${MODEL_CMIP6_REGION_DIR} \ -t ${REGION_TMP_DIR} \ -b ${YEAR} \ -c ${MONTH} \ -d ${DAY} \ -of ${CHELSA_OUTPUT_TYPE} RETURN_VALUE=$? if [[ ${RETURN_VALUE} -gt 0 ]];then echo " %Error: CHELSA returns with exit code ${RETURN_VALUE}" else if [[ "${LOWER_CHELSA_OUTPUT_TYPE}"=="ncdf" ]] || [[ "${LOWER_CHELSA_OUTPUT_TYPE}"=="netcdf" ]] || \ [[ "${LOWER_CHELSA_OUTPUT_TYPE}"=="ncdf4" ]] || [[ "${LOWER_CHELSA_OUTPUT_TYPE}"=="netcdf4" ]] ;then echo " %Status: cutting out region (only supported for netcdf)" for FILE in $(find ${REGION_OUTPUT_DIR} -name "*${MODEL_NAME}_${MODEL_REALIZATION}_${MODEL_EXPERIMENT}_day_${YEAR}${MONTH}${DAY}.nc");do echo " %Status: cutting ${FILE}" AUX_FILE=${REGION_OUTPUT_DIR}/aux_$(random_number).nc cdo -L -s -f nc4 -k grid -z zip -sellonlatbox,${XMIN},${XMAX},${YMIN},${YMAX} ${FILE} ${AUX_FILE} mv ${AUX_FILE} ${FILE} done fi fi done # loop over DOY for VARIABLE in ${MODEL_ISIMIP3B_VARIABLE_LIST};do echo " %Status: merging ${VARIABLE} files for year ${YEAR}" FILE_LIST=$(find ${REGION_OUTPUT_DIR} -name "${VARIABLE}_*${MODEL_NAME}_${MODEL_REALIZATION}_${MODEL_EXPERIMENT}_day_${YEAR}*.nc" | xargs echo) FILE_OUT=$(awk '{print $1}' <<<${FILE_LIST} | sed "s#_day_${YEAR}[0-9][0-9][0-9][0-9]\.nc#_day_${YEAR}0101-${YEAR}1231\.nc#g") if [ -f ${FILE_OUT} ];then rm -f ${FILE_OUT} fi for i in $(seq 10);do sleep 10 sync if [ ! -f ${FILE_OUT} ];then cdo -s -f nc4 -z zip -k grid mergetime ${FILE_LIST} ${FILE_OUT} fi done rm -f ${FILE_LIST} done done # loop over years