Skip to content

Commit 762dde5

Browse files
committed
* Sync NCO SPA's ecf definition file updates to launch the HAFS workflow
at T+3:05 so that the HAFS track products can be delivered on time (before T+6:05). * Update the ecf definition file to trigger the jhafs_obs_prep job properly. * Update ecf/scripts/prep/jhafs_atm_prep.ecf to use 1 node (instead of 2 nodes, same as jhafs_atm_prep_mvnest.ecf) * Update exhafs_atm_lbc.sh to check and wait for the GFS pgrb2b files as well. * Update JHAFS_LAUNCH so that it will check and ensure HFSB will only run NHC storms (but not run JTWC storms). * Update storminfo.py to deal with storms at extremely high latitudes. * HAFS datool related bug fixes related to the atm_vi job failures for storms at extremely high latitudes. (From @YonghuiWeng-NOAA) * Update submodules hafs_forecast.fd/FV3/upp to add DPT at six pressure levels to match HWRF grib2 products. (From @LinZhu-NOAA)
1 parent 7e18e56 commit 762dde5

File tree

8 files changed

+479
-311
lines changed

8 files changed

+479
-311
lines changed

ecf/defs/hafs.def

Lines changed: 445 additions & 300 deletions
Large diffs are not rendered by default.

ecf/scripts/prep/jhafs_atm_prep.ecf

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
#PBS -q %QUEUE%
55
#PBS -A %PROJ%-%PROJENVIR%
66
#PBS -l walltime=00:30:00
7-
#PBS -l place=vscatter:excl,select=2:ncpus=60:mpiprocs=6:ompthreads=10
7+
#PBS -l place=vscatter:excl,select=1:ncpus=108:mpiprocs=18:ompthreads=6
88
#PBS -l debug=true
99

1010
model=hafs
@@ -14,9 +14,9 @@ export cyc="%CYC%"
1414
%include <head.h>
1515
%include <envir-p1.h>
1616

17-
export TOTAL_TASKS='12'
18-
export NCTSK='6'
19-
export OMP_THREADS='10'
17+
export TOTAL_TASKS='18'
18+
export NCTSK='18'
19+
export OMP_THREADS='6'
2020

2121
export storm_num="%STORMNUM%"
2222

jobs/JHAFS_LAUNCH

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,10 @@ else
103103
if [[ "$mYMDH" != "$PDY$cyc" ]]; then
104104
abort_reason="Message file cycle $mYMDH is not current cycle $PDY$cyc."
105105
fi
106+
# Under NCO environment, HFSB only runs NHC/CPHC storms
107+
if [[ "${RUN_ENVIR^^}" = "NCO" ]] && [[ "${RUN^^}" = "HFSB" ]] && [[ "$center" != "NHC" ]]; then
108+
abort_reason="The storm in $message file is not a NHC storm for ${RUN^^} to run."
109+
fi
106110
fi
107111

108112
if [[ -n "$abort_reason" ]]; then

scripts/exhafs_atm_lbc.sh

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,28 @@ while [ $n -le 360 ]; do
188188
n=$(( n+1 ))
189189
done
190190

191+
# Check and wait for the pgrb2b input data if needed.
192+
if [ $input_type = "grib2" ] && [ $bctype = gfsgrib2ab_0p25 ]; then
193+
194+
n=1
195+
while [ $n -le 360 ]; do
196+
if [ -s ${INIDIR}/${CDUMP}.t${cyc}z.pgrb2b.0p25.f${FHR3} ]; then
197+
while [ $(( $(date +%s) - $(stat -c %Y ${INIDIR}/${CDUMP}.t${cyc}z.pgrb2b.0p25.f${FHR3}) )) -lt 10 ]; do sleep 10; done
198+
echo "${INIDIR}/${CDUMP}.t${cyc}z.pgrb2b.0p25.f${FHR3} ready, do chgres_bc"
199+
break
200+
else
201+
echo "Either ${INIDIR}/${CDUMP}.t${cyc}z.pgrb2b.0p25.f${FHR3} not ready, sleep 10"
202+
sleep 10s
203+
fi
204+
if [ $n -ge 360 ]; then
205+
echo "FATAL ERROR: Waited too many times: $n. Exiting"
206+
exit 1
207+
fi
208+
n=$(( n+1 ))
209+
done
210+
211+
fi
212+
191213
if [ $input_type = "grib2" ]; then
192214
if [ $bctype = gfsgrib2ab_0p25 ]; then
193215
# Use both ${CDUMP}.t${cyc}z.pgrb2.0p25.f${FHR3} and ${CDUMP}.t${cyc}z.pgrb2b.0p25.f${FHR3} files

sorc/hafs_forecast.fd

sorc/hafs_tools.fd/sorc/hafs_datool/sub_hafsvi_proc.f90

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2232,7 +2232,7 @@ subroutine hafsvi_postproc(in_file, in_date, out_dir, nestdoms)
22322232
ke=min(iz,my_proc_id*nm+nm)
22332233
if ( ks >= 1 .and. ks <= iz .and. ke >= 1 .and. ke <= iz ) then
22342234
allocate(dat44(ix+nv-1, iy+2-nv, ke-ks+1, 1))
2235-
call mpi_recv(dat44, size(dat43), mpi_real, io_proc, 200*nv+ks, comm, status, ierr)
2235+
call mpi_recv(dat44, size(dat44), mpi_real, io_proc, 200*nv+ks, comm, status, ierr)
22362236
endif
22372237
endif !if ( my_proc_id == io_proc ) then
22382238

sorc/hafs_tools.fd/sorc/hafs_datool/sub_tools.f90

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -387,8 +387,7 @@ subroutine cal_src_dst_grid_weight(grid_src, grid_dst)
387387
call search_nearst_grid(grid_src%grid_xt, grid_src%grid_y, lat_src, lon_src, &
388388
grid_dst%grid_xt, grid_dst%grid_y, lat_dst, lon_dst, x_oini, y_oini)
389389

390-
write(*,'(a3, 2i6, 2f11.2,2i11, 2f11.2)')' u:', i, j, lon_dst(i,j), lat_dst(i,j), x_oini(i,j), y_oini(i,j), &
391-
lon_src(x_oini(i,j),y_oini(i,j)), lat_src(x_oini(i,j),y_oini(i,j))
390+
write(*,'(a3, 2i6, 2f11.2,2i11)')' u:', i, j, lon_dst(i,j), lat_dst(i,j), x_oini(i,j), y_oini(i,j)
392391

393392
allocate(gwt%gwt_u(grid_dst%grid_xt, grid_dst%grid_y)) !grid_weight_info
394393
call cal_grid_weight(grid_src%grid_xt, grid_src%grid_y, lat_src, lon_src, &
@@ -422,8 +421,7 @@ subroutine cal_src_dst_grid_weight(grid_src, grid_dst)
422421
call search_nearst_grid(grid_src%grid_x, grid_src%grid_yt, lat_src, lon_src, &
423422
grid_dst%grid_x, grid_dst%grid_yt, lat_dst, lon_dst, x_oini, y_oini)
424423

425-
write(*,'(a3,2i6, 2f11.2,2i11, 2f11.2)')' v:', i, j, lon_dst(i,j), lat_dst(i,j), x_oini(i,j), y_oini(i,j), &
426-
lon_src(x_oini(i,j),y_oini(i,j)), lat_src(x_oini(i,j),y_oini(i,j))
424+
write(*,'(a3,2i6, 2f11.2,2i11)')' v:', i, j, lon_dst(i,j), lat_dst(i,j), x_oini(i,j), y_oini(i,j)
427425

428426
allocate(gwt%gwt_v(grid_dst%grid_x, grid_dst%grid_yt)) !grid_weight_info
429427
call cal_grid_weight(grid_src%grid_x, grid_src%grid_yt, lat_src, lon_src, &

ush/tcutil/storminfo.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -606,7 +606,6 @@ def tcutil_domain_center(self,logger=None):
606606
if ilat >= 40: cenla=35.0
607607
if ilat >= 44: cenla=40.0
608608
if ilat >= 50: cenla=45.0
609-
if ilat >= 55: cenla=50.0
610609
if storm_lat<0: cenla=-cenla
611610

612611
# Decide the center longitude.

0 commit comments

Comments
 (0)