From f4ea6ee80b3e9464d2d4d925309d9c91e6f27c3e Mon Sep 17 00:00:00 2001 From: Joachim Meyer Date: Fri, 17 Jan 2025 12:29:35 -0700 Subject: [PATCH] iSnobal - CSU - Add slurm and first model day scripts --- iSnobal/CSU/run_first_day.sh | 14 +++++ iSnobal/CSU/slurm-scripts/iSnobal.slurm | 25 +++++++++ iSnobal/CSU/slurm-scripts/katana.slurm | 72 +++++++++++++++++++++++++ 3 files changed, 111 insertions(+) create mode 100755 iSnobal/CSU/run_first_day.sh create mode 100644 iSnobal/CSU/slurm-scripts/iSnobal.slurm create mode 100644 iSnobal/CSU/slurm-scripts/katana.slurm diff --git a/iSnobal/CSU/run_first_day.sh b/iSnobal/CSU/run_first_day.sh new file mode 100755 index 0000000..f3048c8 --- /dev/null +++ b/iSnobal/CSU/run_first_day.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env bash +# +# Run for given day. Date format: 2017-10-01 +# + +module load mambaforge +mamba activate isnoda + +INI_FILE_PREFIX="/projects/dmcgrath@colostate.edu/iSnobal-configs/CameronPass/CP_awsm" + +# Initial run, no previous days +awsm_daily_airflow -c ${INI_FILE_PREFIX}_$(date -d "${1} + 1 year" +%Y).ini \ + --no_previous \ + --start_date $1 diff --git a/iSnobal/CSU/slurm-scripts/iSnobal.slurm b/iSnobal/CSU/slurm-scripts/iSnobal.slurm new file mode 100644 index 0000000..1289cdb --- /dev/null +++ b/iSnobal/CSU/slurm-scripts/iSnobal.slurm @@ -0,0 +1,25 @@ +#!/bin/bash + +#SBATCH --job-name=iSnobal +#SBATCH --account=csu-general +#SBATCH --partition=csu + +#SBATCH --time=18:00:00 +#SBATCH --ntasks=32 +#SBATCH --mem=32G + +#SBATCH --mail-type=FAIL,END +#SBATCH --mail-user=jmeyer@boisestate.edu + +#SBATCH --chdir=/scratch/alpine/c837508519\@colostate.edu/ +#SBATCH --output=slurm-%j.out-%N +#SBATCH --error=slurm-%j.err-%N + +# Enable CPU Hyper-threading +export OMP_NUM_THREADS=${SLURM_NTASKS} + +module load mambaforge +mamba activate isnoda + +awsm_daily /projects/dmcgrath@colostate.edu/iSnobal-configs/CameronPass/CP_awsm_2021.ini + diff --git a/iSnobal/CSU/slurm-scripts/katana.slurm b/iSnobal/CSU/slurm-scripts/katana.slurm new file mode 100644 index 0000000..b5b4d59 --- /dev/null +++ b/iSnobal/CSU/slurm-scripts/katana.slurm @@ -0,0 +1,72 @@ +#!/bin/bash + +#SBATCH --job-name=katana +#SBATCH --account=csu-general +#SBATCH --partition=csu + +#SBATCH --time=4:00:00 +#SBATCH --ntasks=24 +#SBATCH --mem=16G + +#SBATCH --mail-type=FAIL,END +#SBATCH --mail-user=jmeyer@boisestate.edu + +#SBATCH --chdir=/scratch/alpine/c837508519\@colostate.edu/ +#SBATCH --output=slurm-%j.out-%N +#SBATCH --error=slurm-%j.err-%N + +module load singularity/3.7.4 + +export OMP_NUM_THREADS=${SLURM_NTASKS} + +START_YEAR=2020 +START_MONTH=10 + +## Configuration section ## +# Path to input, output, and config files +BASIN_SETUP=/projects/dmcgrath@colostate.edu/iSnobal-configs/CameronPass +INPUT_DIR=/pl/active/McGrath_Snow/HRRR +KATANA_OUTPUT_DIR=/pl/active/McGrath_Snow/iSnobal/CP_katana + +KATANA_INI=${BASIN_SETUP}/CP_katana.ini +KATANA_IMAGE=/projects/dmcgrath@colostate.edu/iSnobal/katana/katana.sif + +## -------------------------------------------- ## + +for MONTH in {0..11}; do + START=($(date -d "${START_MONTH}/01/${START_YEAR} + ${MONTH} month" "+%m %Y")) + END=($(date -d "${START_MONTH}/01/${START_YEAR} + $((MONTH + 1)) month" "+%m %Y")) + + MONTH=${START[0]} + YEAR=${START[1]} + MONTH_END=${END[0]} + YEAR_END=${END[1]} + + echo "Processing: ${YEAR}-${MONTH}" + + # Make copy of ini to edit and have as backup + MONTH_INI="${KATANA_OUTPUT_DIR}/katana_${YEAR}${MONTH}.ini" + cp ${KATANA_INI} ${MONTH_INI} + + # Update the config to the month processed + sed -i -e "s/^start_date: .* UTC/start_date: ${YEAR}-${MONTH}-01 00:00:00 UTC/g" ${MONTH_INI} + sed -i -e "s/^end_date: .* UTC/end_date: ${YEAR_END}-${MONTH_END}-01 00:00:00 UTC/g" ${MONTH_INI} + + # Map container file path to local + export SINGULARITY_BIND="${BASIN_SETUP}:/data/topo,${INPUT_DIR}:/data/input,${KATANA_OUTPUT_DIR}:/data/output" + # Run + singularity exec ${KATANA_IMAGE} run_katana ${MONTH_INI} 1>&2 + + if [ $? -ne 0 ]; then + >&2 echo "ERROR processing ${YEAR}${MONTH}" + continue + fi +done + +# Unused katana output files by iSnobal +find ${KATANA_OUTPUT_DIR} -name *.prj -type f -delete +find ${KATANA_OUTPUT_DIR} -name *_cld.asc -type f -delete +## Unused temporary grib files created by katana +find ${KATANA_OUTPUT_DIR} -name *.grib2 -type f -delete +find ${KATANA_OUTPUT_DIR} -name hrrr.* -type d -empty -delete +