%include
export FORCING_ROOT_DIR=%ECF_HOME%/forcings
export FORCING_CONFIG=%NWM_DOMAIN%-%NWM_CYCLE%
export FORCING_CONFIGS_DIR=%FORCING_CONFIGS_DIR%
export FORCING_PARAMS_DIR="%FORCING_PARAMS_DIR%"
export FORCING_INPUT_DIR="%FORCING_INPUT_DIR%"
export GEOGRID_FILE=%DOMAIN_DIR%/%GEOGRID_FILE%
export SPATIAL_METADATA_FILE=%DOMAIN_DIR%/%SPATIAL_METADATA_FILE%
if [[ "%NWM_ENSEMBLE_MEM%" == "" ]]; then
cycle=%NWM_CYCLE%
echo "=== STARTING Forcing Engine %NWM_CYCLE% ==="
else
cycle=%NWM_CYCLE%_mem%NWM_ENSEMBLE_MEM%
echo "=== STARTING Forcing EngineL %NWM_CYCLE%, MEMBER %NWM_ENSEMBLE_MEM% ==="
fi
export FORCING_SCRATCH_DIR=%NWM_JOBDIR%/%NWM_DOMAIN%/$cycle/forcings-scratch
export FORCING_OUTPUT_DIR=%NWM_JOBDIR%/%NWM_DOMAIN%/$cycle/forcings-output
if [[ %LENGTH_HRS% < 0 ]]; then
export FORCING_BEGIN_DATE=$(date -ud "%CYCLE_DATE% %CYCLE_TIME% $((%LENGTH_HRS%+1)) hours" +%%Y%%m%%d%%H%%M)
export FORCING_END_DATE=$(date -ud "%CYCLE_DATE% %CYCLE_TIME%" +%%Y%%m%%d%%H%%M)
daily_forcings_dir=$FORCING_OUTPUT_DIR/${FORCING_END_DATE:0:10}
else
export FORCING_BEGIN_DATE=$(date -ud "%CYCLE_DATE% %CYCLE_TIME% +1 hours" +%%Y%%m%%d%%H%%M)
export FORCING_END_DATE=$(date -ud "%CYCLE_DATE% %CYCLE_TIME% +%LENGTH_HRS% hours" +%%Y%%m%%d%%H%%M)
daily_forcings_dir=$FORCING_OUTPUT_DIR/$(date -ud "%CYCLE_DATE% %CYCLE_TIME%" +%%Y%%m%%d%%H)
fi
mkdir -p $FORCING_SCRATCH_DIR
mkdir -p $FORCING_OUTPUT_DIR
# qsub -V -A %PROJ% -q %QUEUE% -o %ECF_JOBOUT% -W block=true -l select=%NUM_COMPUTE_NODES%:ncpus=%NUM_CPUS% -l walltime=%WALLTIME% $FORCING_ROOT_DIR/forcings_job.sh
# MOCK FE -- SYMLINK LDASIN FILES FROM ARCHIVE
cycle_length=%LENGTH_HRS%
if [[ %LENGTH_HRS% < 0 ]]; then
let cycle_length=$cycle_length*-1
else
let cycle_length=$cycle_length-1
fi
archive_dir=%FORCING_ARCHIVE_DIR%
daily_start_date=$FORCING_BEGIN_DATE
mkdir -p $daily_forcings_dir
touch $daily_forcings_dir/DUMMY_LDASIN
rm -f $daily_forcings_dir/*LDASIN*
missing=""
for i in $(seq 0 $(($cycle_length)))
do
d=$(date -ud "${daily_start_date:0:8} ${daily_start_date:8} +$i hours" +%%Y%%m%%d%%H%%M)
ln -sf $archive_dir/$d.LDASIN_DOMAIN1 $daily_forcings_dir/$d.LDASIN_DOMAIN1
if [[ ! -e $archive_dir/$d.LDASIN_DOMAIN1 ]]; then
missing="$missing$d.LDASIN_DOMAIN1\n"
fi
done
touch $daily_forcings_dir/WrfHydroForcing.COMPLETE
if [[ "$missing" != "" ]]; then
echo "Missing LDASIN files:"
echo $missing
exit 1
fi
echo "=== Forcing Engine COMPLETE ==="
%include
%manual
This task runs the Forcing Engine. Input data is read from:
$FORCING_INPUT_DIR
using FE configurations in:
$FORCING_CONFIGS_DIR
and FE parameters in:
$FORCING_PARAMS_DIR
for the $NWM_DOMAIN domain. LDASIN files are written to:
$NWM_JOBDIR/$NWM_DOMAIN/$NWM_CYCLE/forcings-output/YYYYMMDDHH
for $LENGTH_HRS hours beginning at $CYCLE_DATE $CYCLE_TIME (or ending at this time, if using a negative lookback).
NOTE: Currently, the FE is being bypassed and a "mock FE" is being run instead, which copies pre-generated LDASIN files
from a fixed location, until an FE configuration for this domain and model cycle are created.
%end