%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