%include
if [[ "%NWM_ENSEMBLE_MEM%" == "" ]]; then
echo "=== STARTING NWM MODEL %NWM_CYCLE% ==="
export WRF_HYDRO_ROOT=%NWM_JOBDIR%/%NWM_DOMAIN%/%NWM_CYCLE%/nwm
else
echo "=== STARTING NWM MODEL %NWM_CYCLE%, MEMBER %NWM_ENSEMBLE_MEM% ==="
export WRF_HYDRO_ROOT=%NWM_JOBDIR%/%NWM_DOMAIN%/%NWM_CYCLE%_mem%NWM_ENSEMBLE_MEM%/nwm
fi
mkdir -p $WRF_HYDRO_ROOT
length_hrs=%LENGTH_HRS%
if [[ %LENGTH_HRS% < 0 ]]; then
cycle_date=$(date -ud "%CYCLE_DATE% %CYCLE_TIME% +%LENGTH_HRS% hours" +%%Y%%m%%d)
cycle_time=$(date -ud "%CYCLE_DATE% %CYCLE_TIME% +%LENGTH_HRS% hours" +%%H%%M)
length_hrs=$(($length_hrs*-1))
ana_flag=1
else
cycle_date=$(date -ud "%CYCLE_DATE% %CYCLE_TIME%" +%%Y%%m%%d)
cycle_time=$(date -ud "%CYCLE_DATE% %CYCLE_TIME%" +%%H%%M)
ana_flag=''
fi
# cp %ECF_HOME%/nwm/%NWM_DOMAIN%/params/* $WRF_HYDRO_ROOT
cp --no-preserve=mode %MODEL_TABLES_DIR%/*.TBL $WRF_HYDRO_ROOT # get the latest TBL files
cp --no-preserve=mode %ECF_HOME%/nwm/%NWM_DOMAIN%/namelists/%NWM_CYCLE%/* $WRF_HYDRO_ROOT
rm -rf $WRF_HYDRO_ROOT/DOMAIN
ln -sf %DOMAIN_DIR% $WRF_HYDRO_ROOT/DOMAIN
ln -sfn ../../%NWM_BASE_CYCLE%/forcings-output/$(date -ud "%CYCLE_DATE% %CYCLE_TIME%" +%%Y%%m%%d%%H) $WRF_HYDRO_ROOT/forcing
ln -sf %MODEL_EXECUTABLE% $WRF_HYDRO_ROOT/wrf_hydro.exe
# TODO link realtime timeslice directories for operational mode
mkdir -p $WRF_HYDRO_ROOT/nudgingTimeSliceObs
# clean out old nudging symlinks if there are any
if [[ `ls -1 $WRF_HYDRO_ROOT/nudgingTimeSliceObs 2>/dev/null` ]]; then
rm -f $WRF_HYDRO_ROOT/nudgingTimeSliceObs/*
fi
rm -f $WRF_HYDRO_ROOT/rfc_timeseries
rm -f $WRF_HYDRO_ROOT/usgs_timeslices
rm -f $WRF_HYDRO_ROOT/usace_timeslices
if [[ "%USE_DA%" == "true" && "%TIMESLICE_ARCHIVE_DIR%" != "" ]]; then
# temporary for gauge ingest
archive_dir=%TIMESLICE_ARCHIVE_DIR%
if [[ -d $archive_dir/merged_usgs_and_ca_timeslices ]]; then
ln -sf $archive_dir/merged_usgs_and_ca_timeslices $WRF_HYDRO_ROOT/usgs_timeslices
ln -sf $WRF_HYDRO_ROOT/usgs_timeslices/* $WRF_HYDRO_ROOT/nudgingTimeSliceObs/.
elif [[ -d $archive_dir/usgs_timeslices ]]; then
ln -sf $archive_dir/usgs_timeslices $WRF_HYDRO_ROOT/.
ln -sf $WRF_HYDRO_ROOT/usgs_timeslices/* $WRF_HYDRO_ROOT/nudgingTimeSliceObs/.
fi
if [[ -d $archive_dir/usace_timeslices ]]; then
ln -sf $archive_dir/usace_timeslices $WRF_HYDRO_ROOT/.
ln -sf $WRF_HYDRO_ROOT/usace_timeslices/* $WRF_HYDRO_ROOT/nudgingTimeSliceObs/.
fi
fi
hydro_namelist=$WRF_HYDRO_ROOT/hydro.namelist
hrldas_namelist=$WRF_HYDRO_ROOT/namelist.hrldas
start_date=$cycle_date
start_year=${start_date:0:4}
start_month=${start_date:4:2}
start_day=${start_date:6:2}
start_time=$cycle_time
start_hour=${start_time:0:2}
start_minute=${start_time:2:2}
sed -i "s|^START_YEAR .*|START_YEAR = ${start_year}|;" ${hrldas_namelist}
sed -i "s|^START_MONTH .*|START_MONTH = ${start_month}|;" ${hrldas_namelist}
sed -i "s|^START_DAY .*|START_DAY = ${start_day}|;" ${hrldas_namelist}
sed -i "s|^START_HOUR .*|START_HOUR = ${start_hour}|;" ${hrldas_namelist}
sed -i "s|^START_MIN .*|START_MIN = ${start_minute}|;" ${hrldas_namelist}
sed -i "s|^KHOUR .*|KHOUR = ${length_hrs}|;" ${hrldas_namelist}
hrldas_restart=RESTART.${start_year}${start_month}${start_day}${start_hour}_DOMAIN1
hydro_restart=HYDRO_RST.${start_year}-${start_month}-${start_day}_${start_hour}\:00_DOMAIN1
if [[ "%HRLDAS_RESTART%" != "" && "%HYDRO_RESTART%" != "" ]]; then
if [[ "$WRF_HYDRO_ROOT/$hrldas_restart" != "%HRLDAS_RESTART%" ]]; then
cp --no-preserve=mode %HRLDAS_RESTART% $WRF_HYDRO_ROOT/$hrldas_restart
fi
if [[ "$WRF_HYDRO_ROOT/$hydro_restart" != "%HYDRO_RESTART%" ]]; then
cp --no-preserve=mode %HYDRO_RESTART% $WRF_HYDRO_ROOT/$hydro_restart
fi
sed -i "s|^RESTART_FILE .*|RESTART_FILE = '${hydro_restart}'|;" ${hydro_namelist}
sed -i "s|^RESTART_FILENAME_REQUESTED .*|RESTART_FILENAME_REQUESTED = '${hrldas_restart}'|;" ${hrldas_namelist}
echo sed -i "s|^RESTART_FILENAME_REQUESTED .*|RESTART_FILENAME_REQUESTED = '${hrldas_restart}'|;" ${hrldas_namelist}
elif [[ "%NWM_RESTART_CYCLE%" != "" ]]; then
cp --no-preserve=mode %ECF_HOME%/jobdir/%NWM_DOMAIN%/%NWM_RESTART_CYCLE%/nwm/$hrldas_restart $WRF_HYDRO_ROOT
cp --no-preserve=mode %ECF_HOME%/jobdir/%NWM_DOMAIN%/%NWM_RESTART_CYCLE%/nwm/$hydro_restart $WRF_HYDRO_ROOT
sed -i "s|^RESTART_FILE .*|RESTART_FILE = '${hydro_restart}'|;" ${hydro_namelist}
sed -i "s|^RESTART_FILENAME_REQUESTED .*|RESTART_FILENAME_REQUESTED = '${hrldas_restart}'|;" ${hrldas_namelist}
else
sed -i "s|^RESTART_FILE .*|!RESTART_FILE = '${hydro_restart}'|;" ${hydro_namelist}
sed -i "s|^RESTART_FILENAME_REQUESTED .*|!RESTART_FILENAME_REQUESTED = '${hrldas_restart}'|;" ${hrldas_namelist}
fi
#sed -i "s|^RESTART_FILE .*|\!RESTART_FILE = ${hydro_restart}|;" ${hydro_namelist}
#sed -i "s|^RESTART_FILENAME_REQUESTED .*|\!RESTART_FILENAME_REQUESTED = ${hrldas_restart}|;" ${hrldas_namelist}
## change output type to 6 until short-range is updated to include q_lateral
sed -i "s|^io_config_outputs = .*|io_config_outputs = 5|;" ${hydro_namelist}
## if we're running as AnA, don't output at t=0
if [[ -n $ana_flag ]]; then
echo "Suppressing t0 output for AnA"
sed -i "s|^t0OutputFlag = .*|t0OutputFlag = 0|;" ${hydro_namelist}
fi
# call the model!
cd $WRF_HYDRO_ROOT
qsub -V -A %PROJ% -q %QUEUE% -o %ECF_JOBOUT% -W block=true -l select=%NUM_COMPUTE_NODES%:ncpus=%NUM_CPUS%:mem=%MEMORY_GB%g:mpiprocs=%NUM_CPUS% -l walltime=%WALLTIME% %ECF_HOME%/nwm/run_wrf_hydro.sh &
%include
%include
%manual
This task sets up the 'Run' directory for the WRF-Hydro model run, and submits the model job to PBS
Forcings
--------
Forcings are linked from NWM_BASE_CYCLE/forcings-output/YYYYMMDDHH
Restarts
--------
If $HRLDAS_RESTART and $HYDRO_RESTART are populated, they are used as restart files.
If $NWM_RESTART_CYCLE is populated, restarts for the current cycle time are copied from the
restart cycle's run directory.
Otherwise, the model is run in 'cold start' mode.
Data Assimilation
-----------------
If $USE_DA is true and $TIMESLICE_ARCHIVE_DIR is populated, gage observations are copied from:
$TIMESLICE_ARCHIVE_DIR/rfc_timeseries
$TIMESLICE_ARCHIVE_DIR/usgs_timeslices
$TIMESLICE_ARCHIVE_DIR/usace_timeslices
Namelists and .TBL files
------------------------
Namelists are copied from:
$ECF_HOME/nwm/$NWM_DOMAIN/namelists/$NWM_CYCLE
.TBL files are copied from:
$MODEL_TABLES_DIR
%end