From b79e2c3a01c71db7165aac7c0a96103562ed6e77 Mon Sep 17 00:00:00 2001 From: YaliMao-NOAA <53870326+YaliMao-NOAA@users.noreply.github.com> Date: Thu, 26 May 2022 14:49:56 -0400 Subject: [PATCH] UPP for GFSv16.3 and new ICAO implementation in Nov 2023 (#497) * Add GTG and icing on model pressure levels. * Modified UPP for new ICAO implementation in Nov 2023, including: 1. GTG tag is updated to https://github.com/NCAR/UPP_GTG/tree/ncep_post_gtg.v2.1.0. Function present() doesn't work fine 2. Control files (xml and txt files), one control with two paramsets and GFSSTD will be removed in GFSv17 One paramset is for every 25 mbar levels; the other is for new ICAO pressure levels with the exact numbers 3. parm/post_avblflds.xml is modified 4. sorc/ncep_post.fd/get_postfilename.f has a minor change to take care of two paramsets for WAFS 5. Related source code are modified, MDL2P.f MDLFLD.f MDL2STD_P.f FDLVL.f 6. scripts/exgfs_atmos_nceppost.sh is modified to take care of: - 2 paramsets - different outputs(control files) for different forecast hour - KPO in POSTGPVARS to allow UPP code to take more levels of the new ICAO implementation * Change the order of processing wafs_icao.grb2 and wafs.grb2 products. * 1. Add date, name, and brief update description to code change history 2. Remove 'grib1' output option for WAFS products from MDL2P.f * Add update description to history log * update gtg revision Co-authored-by: Yali Mao Co-authored-by: Yali Mao Co-authored-by: Yali Mao --- parm/post_avblflds.xml | 70 +++++--- parm/postcntrl_gfs_wafs.xml | 78 +++++++-- parm/postcntrl_gfs_wafs_anl.xml | 21 +-- parm/postcntrl_gfs_wafs_ext.xml | 54 ++++++ parm/postxconfig-NT-GFS-WAFS-ANL.txt | 30 ++-- parm/postxconfig-NT-GFS-WAFS-EXT.txt | 203 ++++++++++++++++++++++ parm/postxconfig-NT-GFS-WAFS.txt | 248 ++++++++++++++++++++++++--- scripts/exgfs_atmos_nceppost.sh | 33 +++- sorc/ncep_post.fd/FDLVL.f | 3 +- sorc/ncep_post.fd/MDL2P.f | 182 +++++++++++++++++++- sorc/ncep_post.fd/MDL2STD_P.f | 65 +------ sorc/ncep_post.fd/MDLFLD.f | 15 +- sorc/ncep_post.fd/get_postfilename.f | 4 + sorc/post_gtg.fd | 2 +- 14 files changed, 843 insertions(+), 165 deletions(-) create mode 100755 parm/postcntrl_gfs_wafs_ext.xml create mode 100644 parm/postxconfig-NT-GFS-WAFS-EXT.txt diff --git a/parm/post_avblflds.xml b/parm/post_avblflds.xml index 77c6d9ff6..977541d9b 100755 --- a/parm/post_avblflds.xml +++ b/parm/post_avblflds.xml @@ -4168,7 +4168,7 @@ 3.0 - + 467 EDPARM_GTG_ON_SPEC_ALT_ABOVE_MEAN_SEA_LVL @@ -4243,6 +4243,40 @@ 6.0 + + + 476 + EDPARM_ON_ISOBARIC_SFC + EDPARM + isobaric_sfc + 3.0 + + + + 477 + CAT_ON_ISOBARIC_SFC + CATEDR + isobaric_sfc + 3.0 + + + + 478 + MWTURB_ON_ISOBARIC_SFC + MWTURB + isobaric_sfc + 3.0 + + + + + 479 + ICESEV_ON_ISOBARIC_SFC + ICESEV + isobaric_sfc + 1.0 + + 480 ICESEV_ON_ICAO_STD_SFC @@ -4252,6 +4286,14 @@ 1.0 + + 481 + ICIP_ON_ISOBARIC_SFC + ICIP + isobaric_sfc + 3.0 + + 482 PRES_ON_SPEC_ALT_ABOVE_MEAN_SEA_LVL @@ -4549,7 +4591,7 @@ 6.0 - + 518 HGT_ON_ICAO_STD_SFC @@ -4590,30 +4632,6 @@ 2.0 - - 523 - VVEL_ON_ICAO_STD_SFC - VVEL - isobaric_sfc - 5.0 - - - - 524 - ABSV_ON_ICAO_STD_SFC - ABSV - isobaric_sfc - 4.0 - - - - 525 - CLWMR_ON_ICAO_STD_SFC - CLWMR - isobaric_sfc - 4.0 - - 551 CSNOW_ON_SURFACE diff --git a/parm/postcntrl_gfs_wafs.xml b/parm/postcntrl_gfs_wafs.xml index 8dea081b2..2bcf81c74 100755 --- a/parm/postcntrl_gfs_wafs.xml +++ b/parm/postcntrl_gfs_wafs.xml @@ -1,8 +1,8 @@ - - GFSPRS + + GFSSTD 0 ncep_nco v2003 @@ -82,31 +82,81 @@ 3.0 + + + + + + GFSPRS + 0 + ncep_nco + v2003 + local_tab_yes1 + fcst + oper + fcst + fcst + hour + nws_ncep + gfs_avn + complex_packing_spatial_diff + 2nd_ord_sptdiff + fltng_pnt + lossless + - RH_ON_ICAO_STD_SFC - 7000. 10040. 12770. 14750. 17870. 19680. 22730. 25000. 27450. 30090. 32500. 34430. 37500. 39270. 42500. 44650. 47500. 50600. 52500. 55000. 57500. 59520. 62500. - 65000. 67500. 69680. 72500. 75260. 77500. 81200. 82500. 84310. 87500. 90000. 92500. 95000. 97500. 100000. + EDPARM_ON_ISOBARIC_SFC + 14750. 15470. 16240. 17040. 17870. 18750. 19680. 20650. 21660. 22730. 23840. 25000. 26200. 27450. 28740. 30090. 31490. 32930. 34430. 35990. 37600. 39270. 41000. 42790. 44650. 46560. 48550. 50600. 52720. 54920. 57180. 59520. 61940. 64440. 67020. 69680. + 3.0 - VVEL_ON_ICAO_STD_SFC - 7000. 10040. 12770. 14750. 17870. 19680. 22730. 25000. 27450. 30090. 32500. 34430. 37500. 39270. 42500. 44650. 47500. 50600. 52500. 55000. 57500. 59520. 62500. - 65000. 67500. 69680. 72500. 75260. 77500. 81200. 82500. 84310. 87500. 90000. 92500. 95000. 97500. 100000. + CAT_ON_ISOBARIC_SFC + 14750. 15470. 16240. 17040. 17870. 18750. 19680. 20650. 21660. 22730. 23840. 25000. 26200. 27450. 28740. 30090. 31490. 32930. 34430. 35990. 37600. 39270. 41000. 42790. 44650. 46560. 48550. 50600. 52720. 54920. 57180. 59520. 61940. 64440. 67020. 69680. 3.0 - ABSV_ON_ICAO_STD_SFC - 7000. 10040. 12770. 14750. 17870. 19680. 22730. 25000. 27450. 30090. 32500. 34430. 37500. 39270. 42500. 44650. 47500. 50600. 52500. 55000. 57500. 59520. 62500. - 65000. 67500. 69680. 72500. 75260. 77500. 81200. 82500. 84310. 87500. 90000. 92500. 95000. 97500. 100000. + MWTURB_ON_ISOBARIC_SFC + 14750. 15470. 16240. 17040. 17870. 18750. 19680. 20650. 21660. 22730. 23840. 25000. 26200. 27450. 28740. 30090. 31490. 32930. 34430. 35990. 37600. 39270. 41000. 42790. 44650. 46560. 48550. 50600. 52720. 54920. 57180. 59520. 61940. 64440. 67020. 69680. 3.0 - CLWMR_ON_ICAO_STD_SFC - 7000. 10040. 12770. 14750. 17870. 19680. 22730. 25000. 27450. 30090. 32500. 34430. 37500. 39270. 42500. 44650. 47500. 50600. 52500. 55000. 57500. 59520. 62500. - 65000. 67500. 69680. 72500. 75260. 77500. 81200. 82500. 84310. 87500. 90000. 92500. 95000. 97500. 100000. + ICESEV_ON_ISOBARIC_SFC + 30090. 31490. 32930. 34430. 35990. 37600. 39270. 41000. 42790. 44650. 46560. 48550. 50600. 52720. 54920. 57180. 59520. 61940. 64440. 67020. 69680. 72430. 75260. 78190. 81200. 84310. + + 1.0 + + + + HGT_ON_ISOBARIC_SFC + 7170. 7520. 7900. 8280. 8700. 9120. 9570. 10040. 10530. 11050. 11600. 12170. 12770. 13400. 14060. 14750. 15470. 16240. 17040. 17870. 18750. 19680. 20650. 21660. 22730. 23840. 25000. 26200. 27450. 28740. 30090. 31490. 32930. 34430. 35990. 37600. 39270. 41000. 42790. 44650. 46560. 48550. 50600. 52720. 54920. 57180. 59520. 61940. 64440. 67020. 69680. 72430. 75260. 78190. 81200. 84310. + 6.0 + + + + TMP_ON_ISOBARIC_SFC + 7170. 7520. 7900. 8280. 8700. 9120. 9570. 10040. 10530. 11050. 11600. 12170. 12770. 13400. 14060. 14750. 15470. 16240. 17040. 17870. 18750. 19680. 20650. 21660. 22730. 23840. 25000. 26200. 27450. 28740. 30090. 31490. 32930. 34430. 35990. 37600. 39270. 41000. 42790. 44650. 46560. 48550. 50600. 52720. 54920. 57180. 59520. 61940. 64440. 67020. 69680. 72430. 75260. 78190. 81200. 84310. + 4.0 + + + + UGRD_ON_ISOBARIC_SFC + 7170. 7520. 7900. 8280. 8700. 9120. 9570. 10040. 10530. 11050. 11600. 12170. 12770. 13400. 14060. 14750. 15470. 16240. 17040. 17870. 18750. 19680. 20650. 21660. 22730. 23840. 25000. 26200. 27450. 28740. 30090. 31490. 32930. 34430. 35990. 37600. 39270. 41000. 42790. 44650. 46560. 48550. 50600. 52720. 54920. 57180. 59520. 61940. 64440. 67020. 69680. 72430. 75260. 78190. 81200. 84310. + 4.0 + + + + VGRD_ON_ISOBARIC_SFC + 7170. 7520. 7900. 8280. 8700. 9120. 9570. 10040. 10530. 11050. 11600. 12170. 12770. 13400. 14060. 14750. 15470. 16240. 17040. 17870. 18750. 19680. 20650. 21660. 22730. 23840. 25000. 26200. 27450. 28740. 30090. 31490. 32930. 34430. 35990. 37600. 39270. 41000. 42790. 44650. 46560. 48550. 50600. 52720. 54920. 57180. 59520. 61940. 64440. 67020. 69680. 72430. 75260. 78190. 81200. 84310. + 4.0 + + + + RH_ON_ISOBARIC_SFC + 50600. 52720. 54920. 57180. 59520. 61940. 64440. 67020. 69680. 72430. 75260. 78190. 81200. 84310. 3.0 diff --git a/parm/postcntrl_gfs_wafs_anl.xml b/parm/postcntrl_gfs_wafs_anl.xml index 8d99f54fb..33b0beba4 100755 --- a/parm/postcntrl_gfs_wafs_anl.xml +++ b/parm/postcntrl_gfs_wafs_anl.xml @@ -20,24 +20,21 @@ lossless - TMP_ON_ICAO_STD_SFC - 10040. 14750. 19680. 25000. 30090. 34430. 39270. 44650. 50600. 55000. 59520. - 65000. 69680. 75260. 81200. 84310. 90000. 95000. 100000. - 3.0 + TMP_ON_ISOBARIC_SFC + 7170. 7520. 7900. 8280. 8700. 9120. 9570. 10040. 10530. 11050. 11600. 12170. 12770. 13400. 14060. 14750. 15470. 16240. 17040. 17870. 18750. 19680. 20650. 21660. 22730. 23840. 25000. 26200. 27450. 28740. 30090. 31490. 32930. 34430. 35990. 37600. 39270. 41000. 42790. 44650. 46560. 48550. 50600. 52720. 54920. 57180. 59520. 61940. 64440. 67020. 69680. 72430. 75260. 78190. 81200. 84310. + 4.0 - UGRD_ON_ICAO_STD_SFC - 10040. 14750. 19680. 25000. 30090. 34430. 39270. 44650. 50600. 55000. 59520. - 65000. 69680. 75260. 81200. 84310. 90000. 95000. 100000. - 3.0 + UGRD_ON_ISOBARIC_SFC + 7170. 7520. 7900. 8280. 8700. 9120. 9570. 10040. 10530. 11050. 11600. 12170. 12770. 13400. 14060. 14750. 15470. 16240. 17040. 17870. 18750. 19680. 20650. 21660. 22730. 23840. 25000. 26200. 27450. 28740. 30090. 31490. 32930. 34430. 35990. 37600. 39270. 41000. 42790. 44650. 46560. 48550. 50600. 52720. 54920. 57180. 59520. 61940. 64440. 67020. 69680. 72430. 75260. 78190. 81200. 84310. + 4.0 - VGRD_ON_ICAO_STD_SFC - 10040. 14750. 19680. 25000. 30090. 34430. 39270. 44650. 50600. 55000. 59520. - 65000. 69680. 75260. 81200. 84310. 90000. 95000. 100000. - 3.0 + VGRD_ON_ISOBARIC_SFC + 7170. 7520. 7900. 8280. 8700. 9120. 9570. 10040. 10530. 11050. 11600. 12170. 12770. 13400. 14060. 14750. 15470. 16240. 17040. 17870. 18750. 19680. 20650. 21660. 22730. 23840. 25000. 26200. 27450. 28740. 30090. 31490. 32930. 34430. 35990. 37600. 39270. 41000. 42790. 44650. 46560. 48550. 50600. 52720. 54920. 57180. 59520. 61940. 64440. 67020. 69680. 72430. 75260. 78190. 81200. 84310. + 4.0 diff --git a/parm/postcntrl_gfs_wafs_ext.xml b/parm/postcntrl_gfs_wafs_ext.xml new file mode 100755 index 000000000..ec7efbcac --- /dev/null +++ b/parm/postcntrl_gfs_wafs_ext.xml @@ -0,0 +1,54 @@ + + + + + GFSPRS + 0 + ncep_nco + v2003 + local_tab_yes1 + fcst + oper + fcst + fcst + hour + nws_ncep + gfs_avn + complex_packing_spatial_diff + 2nd_ord_sptdiff + fltng_pnt + lossless + + + HGT_ON_ISOBARIC_SFC + 7170. 7520. 7900. 8280. 8700. 9120. 9570. 10040. 10530. 11050. 11600. 12170. 12770. 13400. 14060. 14750. 15470. 16240. 17040. 17870. 18750. 19680. 20650. 21660. 22730. 23840. 25000. 26200. 27450. 28740. 30090. 31490. 32930. 34430. 35990. 37600. 39270. 41000. 42790. 44650. 46560. 48550. 50600. 52720. 54920. 57180. 59520. 61940. 64440. 67020. 69680. 72430. 75260. 78190. 81200. 84310. + 6.0 + + + + TMP_ON_ISOBARIC_SFC + 7170. 7520. 7900. 8280. 8700. 9120. 9570. 10040. 10530. 11050. 11600. 12170. 12770. 13400. 14060. 14750. 15470. 16240. 17040. 17870. 18750. 19680. 20650. 21660. 22730. 23840. 25000. 26200. 27450. 28740. 30090. 31490. 32930. 34430. 35990. 37600. 39270. 41000. 42790. 44650. 46560. 48550. 50600. 52720. 54920. 57180. 59520. 61940. 64440. 67020. 69680. 72430. 75260. 78190. 81200. 84310. + 4.0 + + + + UGRD_ON_ISOBARIC_SFC + 7170. 7520. 7900. 8280. 8700. 9120. 9570. 10040. 10530. 11050. 11600. 12170. 12770. 13400. 14060. 14750. 15470. 16240. 17040. 17870. 18750. 19680. 20650. 21660. 22730. 23840. 25000. 26200. 27450. 28740. 30090. 31490. 32930. 34430. 35990. 37600. 39270. 41000. 42790. 44650. 46560. 48550. 50600. 52720. 54920. 57180. 59520. 61940. 64440. 67020. 69680. 72430. 75260. 78190. 81200. 84310. + 4.0 + + + + VGRD_ON_ISOBARIC_SFC + 7170. 7520. 7900. 8280. 8700. 9120. 9570. 10040. 10530. 11050. 11600. 12170. 12770. 13400. 14060. 14750. 15470. 16240. 17040. 17870. 18750. 19680. 20650. 21660. 22730. 23840. 25000. 26200. 27450. 28740. 30090. 31490. 32930. 34430. 35990. 37600. 39270. 41000. 42790. 44650. 46560. 48550. 50600. 52720. 54920. 57180. 59520. 61940. 64440. 67020. 69680. 72430. 75260. 78190. 81200. 84310. + 4.0 + + + + RH_ON_ISOBARIC_SFC + 50600. 52720. 54920. 57180. 59520. 61940. 64440. 67020. 69680. 72430. 75260. 78190. 81200. 84310. + 3.0 + + + + + diff --git a/parm/postxconfig-NT-GFS-WAFS-ANL.txt b/parm/postxconfig-NT-GFS-WAFS-ANL.txt index c1dcde1a1..7c79ea42e 100644 --- a/parm/postxconfig-NT-GFS-WAFS-ANL.txt +++ b/parm/postxconfig-NT-GFS-WAFS-ANL.txt @@ -16,8 +16,8 @@ complex_packing_spatial_diff 2nd_ord_sptdiff fltng_pnt lossless -519 -TMP_ON_ICAO_STD_SFC +13 +TMP_ON_ISOBARIC_SFC ? 1 tmpl4_0 @@ -27,8 +27,8 @@ TMP isobaric_sfc 0 ? -19 -10040. 14750. 19680. 25000. 30090. 34430. 39270. 44650. 50600. 55000. 59520. 65000. 69680. 75260. 81200. 84310. 90000. 95000. 100000. +56 +7170. 7520. 7900. 8280. 8700. 9120. 9570. 10040. 10530. 11050. 11600. 12170. 12770. 13400. 14060. 14750. 15470. 16240. 17040. 17870. 18750. 19680. 20650. 21660. 22730. 23840. 25000. 26200. 27450. 28740. 30090. 31490. 32930. 34430. 35990. 37600. 39270. 41000. 42790. 44650. 46560. 48550. 50600. 52720. 54920. 57180. 59520. 61940. 64440. 67020. 69680. 72430. 75260. 78190. 81200. 84310. ? 0 ? @@ -46,15 +46,15 @@ isobaric_sfc 0 0.0 1 -3.0 +4.0 0 0 0 ? ? ? -520 -UGRD_ON_ICAO_STD_SFC +18 +UGRD_ON_ISOBARIC_SFC ? 1 tmpl4_0 @@ -64,8 +64,8 @@ UGRD isobaric_sfc 0 ? -19 -10040. 14750. 19680. 25000. 30090. 34430. 39270. 44650. 50600. 55000. 59520. 65000. 69680. 75260. 81200. 84310. 90000. 95000. 100000. +56 +7170. 7520. 7900. 8280. 8700. 9120. 9570. 10040. 10530. 11050. 11600. 12170. 12770. 13400. 14060. 14750. 15470. 16240. 17040. 17870. 18750. 19680. 20650. 21660. 22730. 23840. 25000. 26200. 27450. 28740. 30090. 31490. 32930. 34430. 35990. 37600. 39270. 41000. 42790. 44650. 46560. 48550. 50600. 52720. 54920. 57180. 59520. 61940. 64440. 67020. 69680. 72430. 75260. 78190. 81200. 84310. ? 0 ? @@ -83,15 +83,15 @@ isobaric_sfc 0 0.0 1 -3.0 +4.0 0 0 0 ? ? ? -521 -VGRD_ON_ICAO_STD_SFC +19 +VGRD_ON_ISOBARIC_SFC ? 1 tmpl4_0 @@ -101,8 +101,8 @@ VGRD isobaric_sfc 0 ? -19 -10040. 14750. 19680. 25000. 30090. 34430. 39270. 44650. 50600. 55000. 59520. 65000. 69680. 75260. 81200. 84310. 90000. 95000. 100000. +56 +7170. 7520. 7900. 8280. 8700. 9120. 9570. 10040. 10530. 11050. 11600. 12170. 12770. 13400. 14060. 14750. 15470. 16240. 17040. 17870. 18750. 19680. 20650. 21660. 22730. 23840. 25000. 26200. 27450. 28740. 30090. 31490. 32930. 34430. 35990. 37600. 39270. 41000. 42790. 44650. 46560. 48550. 50600. 52720. 54920. 57180. 59520. 61940. 64440. 67020. 69680. 72430. 75260. 78190. 81200. 84310. ? 0 ? @@ -120,7 +120,7 @@ isobaric_sfc 0 0.0 1 -3.0 +4.0 0 0 0 diff --git a/parm/postxconfig-NT-GFS-WAFS-EXT.txt b/parm/postxconfig-NT-GFS-WAFS-EXT.txt new file mode 100644 index 000000000..9a0415316 --- /dev/null +++ b/parm/postxconfig-NT-GFS-WAFS-EXT.txt @@ -0,0 +1,203 @@ +1 +5 +GFSPRS +0 +ncep_nco +v2003 +local_tab_yes1 +fcst +oper +fcst +fcst +hour +nws_ncep +gfs_avn +complex_packing_spatial_diff +2nd_ord_sptdiff +fltng_pnt +lossless +12 +HGT_ON_ISOBARIC_SFC +? +1 +tmpl4_0 +HGT +? +? +isobaric_sfc +0 +? +56 +7170. 7520. 7900. 8280. 8700. 9120. 9570. 10040. 10530. 11050. 11600. 12170. 12770. 13400. 14060. 14750. 15470. 16240. 17040. 17870. 18750. 19680. 20650. 21660. 22730. 23840. 25000. 26200. 27450. 28740. 30090. 31490. 32930. 34430. 35990. 37600. 39270. 41000. 42790. 44650. 46560. 48550. 50600. 52720. 54920. 57180. 59520. 61940. 64440. 67020. 69680. 72430. 75260. 78190. 81200. 84310. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +6.0 +0 +0 +0 +? +? +? +13 +TMP_ON_ISOBARIC_SFC +? +1 +tmpl4_0 +TMP +? +? +isobaric_sfc +0 +? +56 +7170. 7520. 7900. 8280. 8700. 9120. 9570. 10040. 10530. 11050. 11600. 12170. 12770. 13400. 14060. 14750. 15470. 16240. 17040. 17870. 18750. 19680. 20650. 21660. 22730. 23840. 25000. 26200. 27450. 28740. 30090. 31490. 32930. 34430. 35990. 37600. 39270. 41000. 42790. 44650. 46560. 48550. 50600. 52720. 54920. 57180. 59520. 61940. 64440. 67020. 69680. 72430. 75260. 78190. 81200. 84310. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +18 +UGRD_ON_ISOBARIC_SFC +? +1 +tmpl4_0 +UGRD +? +? +isobaric_sfc +0 +? +56 +7170. 7520. 7900. 8280. 8700. 9120. 9570. 10040. 10530. 11050. 11600. 12170. 12770. 13400. 14060. 14750. 15470. 16240. 17040. 17870. 18750. 19680. 20650. 21660. 22730. 23840. 25000. 26200. 27450. 28740. 30090. 31490. 32930. 34430. 35990. 37600. 39270. 41000. 42790. 44650. 46560. 48550. 50600. 52720. 54920. 57180. 59520. 61940. 64440. 67020. 69680. 72430. 75260. 78190. 81200. 84310. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +19 +VGRD_ON_ISOBARIC_SFC +? +1 +tmpl4_0 +VGRD +? +? +isobaric_sfc +0 +? +56 +7170. 7520. 7900. 8280. 8700. 9120. 9570. 10040. 10530. 11050. 11600. 12170. 12770. 13400. 14060. 14750. 15470. 16240. 17040. 17870. 18750. 19680. 20650. 21660. 22730. 23840. 25000. 26200. 27450. 28740. 30090. 31490. 32930. 34430. 35990. 37600. 39270. 41000. 42790. 44650. 46560. 48550. 50600. 52720. 54920. 57180. 59520. 61940. 64440. 67020. 69680. 72430. 75260. 78190. 81200. 84310. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +17 +RH_ON_ISOBARIC_SFC +? +1 +tmpl4_0 +RH +? +? +isobaric_sfc +0 +? +14 +50600. 52720. 54920. 57180. 59520. 61940. 64440. 67020. 69680. 72430. 75260. 78190. 81200. 84310. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +3.0 +0 +0 +0 +? +? +? diff --git a/parm/postxconfig-NT-GFS-WAFS.txt b/parm/postxconfig-NT-GFS-WAFS.txt index c14856c7a..250b80756 100644 --- a/parm/postxconfig-NT-GFS-WAFS.txt +++ b/parm/postxconfig-NT-GFS-WAFS.txt @@ -1,6 +1,7 @@ -1 -16 -GFSPRS +2 +12 +9 +GFSSTD 0 ncep_nco v2003 @@ -349,19 +350,35 @@ isobaric_sfc ? ? ? -522 -RH_ON_ICAO_STD_SFC +GFSPRS +0 +ncep_nco +v2003 +local_tab_yes1 +fcst +oper +fcst +fcst +hour +nws_ncep +gfs_avn +complex_packing_spatial_diff +2nd_ord_sptdiff +fltng_pnt +lossless +476 +EDPARM_ON_ISOBARIC_SFC ? 1 tmpl4_0 -RH +EDPARM ? ? isobaric_sfc 0 ? -38 -7000. 10040. 12770. 14750. 17870. 19680. 22730. 25000. 27450. 30090. 32500. 34430. 37500. 39270. 42500. 44650. 47500. 50600. 52500. 55000. 57500. 59520. 62500. 65000. 67500. 69680. 72500. 75260. 77500. 81200. 82500. 84310. 87500. 90000. 92500. 95000. 97500. 100000. +36 +14750. 15470. 16240. 17040. 17870. 18750. 19680. 20650. 21660. 22730. 23840. 25000. 26200. 27450. 28740. 30090. 31490. 32930. 34430. 35990. 37600. 39270. 41000. 42790. 44650. 46560. 48550. 50600. 52720. 54920. 57180. 59520. 61940. 64440. 67020. 69680. ? 0 ? @@ -386,19 +403,19 @@ isobaric_sfc ? ? ? -523 -VVEL_ON_ICAO_STD_SFC +477 +CAT_ON_ISOBARIC_SFC ? 1 tmpl4_0 -VVEL +CATEDR ? ? isobaric_sfc 0 ? -38 -7000. 10040. 12770. 14750. 17870. 19680. 22730. 25000. 27450. 30090. 32500. 34430. 37500. 39270. 42500. 44650. 47500. 50600. 52500. 55000. 57500. 59520. 62500. 65000. 67500. 69680. 72500. 75260. 77500. 81200. 82500. 84310. 87500. 90000. 92500. 95000. 97500. 100000. +36 +14750. 15470. 16240. 17040. 17870. 18750. 19680. 20650. 21660. 22730. 23840. 25000. 26200. 27450. 28740. 30090. 31490. 32930. 34430. 35990. 37600. 39270. 41000. 42790. 44650. 46560. 48550. 50600. 52720. 54920. 57180. 59520. 61940. 64440. 67020. 69680. ? 0 ? @@ -423,19 +440,19 @@ isobaric_sfc ? ? ? -524 -ABSV_ON_ICAO_STD_SFC +478 +MWTURB_ON_ISOBARIC_SFC ? 1 tmpl4_0 -ABSV +MWTURB ? ? isobaric_sfc 0 ? -38 -7000. 10040. 12770. 14750. 17870. 19680. 22730. 25000. 27450. 30090. 32500. 34430. 37500. 39270. 42500. 44650. 47500. 50600. 52500. 55000. 57500. 59520. 62500. 65000. 67500. 69680. 72500. 75260. 77500. 81200. 82500. 84310. 87500. 90000. 92500. 95000. 97500. 100000. +36 +14750. 15470. 16240. 17040. 17870. 18750. 19680. 20650. 21660. 22730. 23840. 25000. 26200. 27450. 28740. 30090. 31490. 32930. 34430. 35990. 37600. 39270. 41000. 42790. 44650. 46560. 48550. 50600. 52720. 54920. 57180. 59520. 61940. 64440. 67020. 69680. ? 0 ? @@ -460,19 +477,204 @@ isobaric_sfc ? ? ? -525 -CLWMR_ON_ICAO_STD_SFC +479 +ICESEV_ON_ISOBARIC_SFC ? 1 tmpl4_0 -CLWMR +ICESEV ? ? isobaric_sfc 0 ? -38 -7000. 10040. 12770. 14750. 17870. 19680. 22730. 25000. 27450. 30090. 32500. 34430. 37500. 39270. 42500. 44650. 47500. 50600. 52500. 55000. 57500. 59520. 62500. 65000. 67500. 69680. 72500. 75260. 77500. 81200. 82500. 84310. 87500. 90000. 92500. 95000. 97500. 100000. +26 +30090. 31490. 32930. 34430. 35990. 37600. 39270. 41000. 42790. 44650. 46560. 48550. 50600. 52720. 54920. 57180. 59520. 61940. 64440. 67020. 69680. 72430. 75260. 78190. 81200. 84310. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +1.0 +0 +0 +0 +? +? +? +12 +HGT_ON_ISOBARIC_SFC +? +1 +tmpl4_0 +HGT +? +? +isobaric_sfc +0 +? +56 +7170. 7520. 7900. 8280. 8700. 9120. 9570. 10040. 10530. 11050. 11600. 12170. 12770. 13400. 14060. 14750. 15470. 16240. 17040. 17870. 18750. 19680. 20650. 21660. 22730. 23840. 25000. 26200. 27450. 28740. 30090. 31490. 32930. 34430. 35990. 37600. 39270. 41000. 42790. 44650. 46560. 48550. 50600. 52720. 54920. 57180. 59520. 61940. 64440. 67020. 69680. 72430. 75260. 78190. 81200. 84310. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +6.0 +0 +0 +0 +? +? +? +13 +TMP_ON_ISOBARIC_SFC +? +1 +tmpl4_0 +TMP +? +? +isobaric_sfc +0 +? +56 +7170. 7520. 7900. 8280. 8700. 9120. 9570. 10040. 10530. 11050. 11600. 12170. 12770. 13400. 14060. 14750. 15470. 16240. 17040. 17870. 18750. 19680. 20650. 21660. 22730. 23840. 25000. 26200. 27450. 28740. 30090. 31490. 32930. 34430. 35990. 37600. 39270. 41000. 42790. 44650. 46560. 48550. 50600. 52720. 54920. 57180. 59520. 61940. 64440. 67020. 69680. 72430. 75260. 78190. 81200. 84310. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +18 +UGRD_ON_ISOBARIC_SFC +? +1 +tmpl4_0 +UGRD +? +? +isobaric_sfc +0 +? +56 +7170. 7520. 7900. 8280. 8700. 9120. 9570. 10040. 10530. 11050. 11600. 12170. 12770. 13400. 14060. 14750. 15470. 16240. 17040. 17870. 18750. 19680. 20650. 21660. 22730. 23840. 25000. 26200. 27450. 28740. 30090. 31490. 32930. 34430. 35990. 37600. 39270. 41000. 42790. 44650. 46560. 48550. 50600. 52720. 54920. 57180. 59520. 61940. 64440. 67020. 69680. 72430. 75260. 78190. 81200. 84310. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +19 +VGRD_ON_ISOBARIC_SFC +? +1 +tmpl4_0 +VGRD +? +? +isobaric_sfc +0 +? +56 +7170. 7520. 7900. 8280. 8700. 9120. 9570. 10040. 10530. 11050. 11600. 12170. 12770. 13400. 14060. 14750. 15470. 16240. 17040. 17870. 18750. 19680. 20650. 21660. 22730. 23840. 25000. 26200. 27450. 28740. 30090. 31490. 32930. 34430. 35990. 37600. 39270. 41000. 42790. 44650. 46560. 48550. 50600. 52720. 54920. 57180. 59520. 61940. 64440. 67020. 69680. 72430. 75260. 78190. 81200. 84310. +? +0 +? +0 +? +? +? +0 +0.0 +0 +0.0 +? +0 +0.0 +0 +0.0 +1 +4.0 +0 +0 +0 +? +? +? +17 +RH_ON_ISOBARIC_SFC +? +1 +tmpl4_0 +RH +? +? +isobaric_sfc +0 +? +14 +50600. 52720. 54920. 57180. 59520. 61940. 64440. 67020. 69680. 72430. 75260. 78190. 81200. 84310. ? 0 ? diff --git a/scripts/exgfs_atmos_nceppost.sh b/scripts/exgfs_atmos_nceppost.sh index 20d591b3a..2aaa0dda4 100755 --- a/scripts/exgfs_atmos_nceppost.sh +++ b/scripts/exgfs_atmos_nceppost.sh @@ -30,6 +30,9 @@ echo " Jun 21 - Mao - Instead of err_chk, catch err and print out" echo " WAFS failure warnings to avoid job crashing" echo " Oct 21 - Meng - Remove jlogfile for wcoss2 transition." echo " Nov 21 - Meng - Update POSTGRB2TBL default setting for wcoss2 transition." +echo " May 22 - Mao - Set KPO for WAFS on different pressure levels" +echo " May 22 - Mao - Three diff WAFS control files for anl, F000-F048, F054-F120" +echo " May 22 - Mao - Add processing two paramsets for WAFS" echo "-----------------------------------------------------" ##################################################################### @@ -199,6 +202,9 @@ then if [[ $RUN = gfs && $GRIBVERSION = 'grib2' ]] ; then export OUTTYP=${OUTTYP:-4} + #For MDL2P.f, WAFS pressure levels are different from master file + export POSTGPVARS="KPO=56,PO=84310.,81200.,78190.,75260.,72430.,69680.,67020.,64440.,61940.,59520.,57180.,54920.,52720.,50600.,48550.,46560.,44650.,42790.,41000.,39270.,37600.,35990.,34430.,32930.,31490.,30090.,28740.,27450.,26200.,25000.,23840.,22730.,21660.,20650.,19680.,18750.,17870.,17040.,16240.,15470.,14750.,14060.,13400.,12770.,12170.,11600.,11050.,10530.,10040.,9570.,9120.,8700.,8280.,7900.,7520.,7170.,popascal=.true.," + export PostFlatFile=$PARMpost/postxconfig-NT-GFS-WAFS-ANL.txt export CTLFILE=$PARMpost/postcntrl_gfs_wafs_anl.xml @@ -512,9 +518,17 @@ do if [[ $RUN = gfs && $GRIBVERSION = 'grib2' ]] ; then export OUTTYP=${OUTTYP:-4} + #For MDL2P.f, WAFS pressure levels are different from master file + export POSTGPVARS="KPO=56,PO=84310.,81200.,78190.,75260.,72430.,69680.,67020.,64440.,61940.,59520.,57180.,54920.,52720.,50600.,48550.,46560.,44650.,42790.,41000.,39270.,37600.,35990.,34430.,32930.,31490.,30090.,28740.,27450.,26200.,25000.,23840.,22730.,21660.,20650.,19680.,18750.,17870.,17040.,16240.,15470.,14750.,14060.,13400.,12770.,12170.,11600.,11050.,10530.,10040.,9570.,9120.,8700.,8280.,7900.,7520.,7170.,popascal=.true.," + # Extend WAFS icing and gtg up to 120 hours - export PostFlatFile=$PARMpost/postxconfig-NT-GFS-WAFS.txt - export CTLFILE=$PARMpost/postcntrl_gfs_wafs.xml + if [ $fhr -le 48 ] ; then + export PostFlatFile=$PARMpost/postxconfig-NT-GFS-WAFS.txt + export CTLFILE=$PARMpost/postcntrl_gfs_wafs.xml + else + export PostFlatFile=$PARMpost/postxconfig-NT-GFS-WAFS-EXT.txt + export CTLFILE=$PARMpost/postcntrl_gfs_wafs_ext.xml + fi # gtg has its own configurations cp $PARMpost/gtg.config.gfs gtg.config @@ -542,17 +556,30 @@ do if [ $err -ne 0 ] ; then echo " *** GFS POST WARNING: WAFS output failed for f${fhr}, err=$err" else + # Will remove when GFSv17 + if [ -e ${PGBOUT}GFSSTD ] + then + if test $SENDCOM = "YES" + then + cp ${PGBOUT}GFSSTD $COMOUT/${PREFIX}wafs_icao.grb2f$fhr + $WGRIB2 -s ${PGBOUT}GFSSTD > $PGIOUT # WAFS products exist from ush/gfs_nceppost.sh before running anything else + cp $PGIOUT $COMOUT/${PREFIX}wafs_icao.grb2f$fhr.idx + fi + fi + if [ -e $PGBOUT ] then if test $SENDCOM = "YES" then cp $PGBOUT $COMOUT/${PREFIX}wafs.grb2f$fhr - cp $PGIOUT $COMOUT/${PREFIX}wafs.grb2if$fhr + $WGRIB2 -s $PGBOUT > $PGIOUT # WAFS products exist from ush/gfs_nceppost.sh before running anything else + cp $PGIOUT $COMOUT/${PREFIX}wafs.grb2f$fhr.idx fi fi fi fi [[ -f wafsfile ]] && rm wafsfile ; [[ -f wafsifile ]] && rm wafsifile + [[ -f wafsfileGFSSTD ]] && rm wafsfileGFSSTD fi ########################### WAFS end ########################### diff --git a/sorc/ncep_post.fd/FDLVL.f b/sorc/ncep_post.fd/FDLVL.f index 817d767f1..07b02e452 100644 --- a/sorc/ncep_post.fd/FDLVL.f +++ b/sorc/ncep_post.fd/FDLVL.f @@ -839,6 +839,7 @@ SUBROUTINE FDLVL_MASS(ITYPE,NFD,PTFD,HTFD,NIN,QIN,QTYPE,QFD) ! ALLOW ARRAY OF MASS INPUT TO INTERPOLATE MULTIPLE FIELDS ! WITH THE SAME LEVELS AT ONE TIME ! DUST=>AERFD CAN BE PROCESSED WHEN NIN=NBIN_DU +! 2022-05-25 | Y Mao | Remove interpolation of w/omega/Hydrometeor fields on FD levels ! ! USAGE: CALL FDLVL_MASS(ITYPE,NFD,PTFD,HTFD,NIN,QIN,QTYPE,QFD) ! INPUT ARGUMENT LIST: @@ -1088,9 +1089,7 @@ SUBROUTINE FDLVL_MASS(ITYPE,NFD,PTFD,HTFD,NIN,QIN,QTYPE,QFD) endif END IF ! endif loop for deducing T and Q differently for GFS - if(QTYPE(N) == "W") QFD(I,J,IFD,N)=QIN(I,J,LM,N) ! W OMGA if(QTYPE(N) == "K") QFD(I,J,IFD,N)= max(0.0,0.5*(QIN(I,J,LM,N)+QIN(I,J,LM-1,N))) ! TKE - if(QTYPE(N) == "C") QFD(I,J,IFD,N)=0.0 ! Hydrometeor fields END DO ENDIF ! Underground diff --git a/sorc/ncep_post.fd/MDL2P.f b/sorc/ncep_post.fd/MDL2P.f index 3f4ce004a..fb8aefd86 100644 --- a/sorc/ncep_post.fd/MDL2P.f +++ b/sorc/ncep_post.fd/MDL2P.f @@ -25,6 +25,7 @@ SUBROUTINE MDL2P(iostatusD3D) ! 12-01-11 S LU - ADD GOCART AEROSOLS ! 13-08-01 S Moorthi - some optimization ! 14-02-26 S Moorthi - threading datapd assignment +! 2022-05-25 | Y Mao | Add WAFS icing/turbulence ! ! USAGE: CALL MDL2P ! INPUT ARGUMENT LIST: @@ -65,7 +66,7 @@ SUBROUTINE MDL2P(iostatusD3D) ZGDRAG, CNVCTVMMIXING, VDIFFMACCE, MGDRAG, & CNVCTUMMIXING, NCNVCTCFRAC, CNVCTUMFLX, CNVCTDETMFLX, & CNVCTZGDRAG, CNVCTMGDRAG, ZMID, ZINT, PMIDV, & - CNVCTDMFLX + CNVCTDMFLX, ICING_GFIP, ICING_GFIS,GTG,CAT=>CATEDR,MWT use vrbls2d, only: T500, W_UP_MAX, W_DN_MAX, W_MEAN, PSLP, FIS, Z1000 use masks, only: LMH, SM use physcons_post,only: CON_FVIRT, CON_ROG, CON_EPS, CON_EPSM1 @@ -99,7 +100,9 @@ SUBROUTINE MDL2P(iostatusD3D) &, Q2SL, WSL, CFRSL, O3SL, TDSL & &, EGRID1, EGRID2 & &, FSL_OLD, USL_OLD, VSL_OLD & - &, OSL_OLD, OSL995 + &, OSL_OLD, OSL995 & + &, ICINGFSL, ICINGVSL & + &, GTGSL,CATSL,MWTSL ! REAL D3DSL(IM,JM,27),DUSTSL(IM,JM,NBIN_DU) REAL, allocatable :: D3DSL(:,:,:), DUSTSL(:,:,:), SMOKESL(:,:,:) ! @@ -219,6 +222,10 @@ SUBROUTINE MDL2P(iostatusD3D) (IGET(442) > 0) .OR. (IGET(455) > 0) .OR. & ! ADD SMOKE FIELDS (IGET(738) > 0) .OR. (MODELNAME == 'RAPR') .OR.& +! Add WAFS hazard fields: Icing and GTG turbulence + (IGET(476) > 0) .OR. (IGET(477) > 0) .OR. & + (IGET(478) > 0) .OR. (IGET(479) > 0) .OR. & + (IGET(481) > 0) .OR. & ! LIFTED INDEX needs 500 mb T (IGET(030)>0) .OR. (IGET(031)>0) .OR. (IGET(075)>0)) THEN ! @@ -264,6 +271,11 @@ SUBROUTINE MDL2P(iostatusD3D) RAD(I,J) = SPVAL O3SL(I,J) = SPVAL CFRSL(I,J) = SPVAL + ICINGFSL(I,J) = SPVAL + ICINGVSL(I,J) = SPVAL + GTGSL(I,J) = SPVAL + CATSL(I,J) = SPVAL + MWTSL(I,J) = SPVAL ! !*** LOCATE VERTICAL INDEX OF MODEL MIDLAYER JUST BELOW !*** THE PRESSURE LEVEL TO WHICH WE ARE INTERPOLATING. @@ -354,6 +366,13 @@ SUBROUTINE MDL2P(iostatusD3D) IF(TTND(I,J,1) < SPVAL) RAD(I,J) = TTND(I,J,1) IF(O3(I,J,1) < SPVAL) O3SL(I,J) = O3(I,J,1) IF(CFR(I,J,1) < SPVAL) CFRSL(I,J) = CFR(I,J,1) +!GFIP + IF(ICING_GFIP(I,J,1) < SPVAL) ICINGFSL(I,J) = ICING_GFIP(I,J,1) + IF(ICING_GFIS(I,J,1) < SPVAL) ICINGVSL(I,J) = ICING_GFIS(I,J,1) +!GTG + IF(GTG(I,J,1) < SPVAL) GTGSL(I,J) = GTG(I,J,1) + IF(CAT(I,J,1) < SPVAL) CATSL(I,J) = CAT(I,J,1) + IF(MWT(I,J,1) < SPVAL) MWTSL(I,J) = MWT(I,J,1) ! DUST if (gocart_on) then DO K = 1, NBIN_DU @@ -516,6 +535,48 @@ SUBROUTINE MDL2P(iostatusD3D) IF(CFR(I,J,LL) < SPVAL .AND. CFR(I,J,LL-1) < SPVAL) & CFRSL(I,J) = CFR(I,J,LL) + (CFR(I,J,LL)-CFR(I,J,LL-1))*FACT +!GFIP + IF(ICING_GFIP(I,J,LL) < SPVAL .AND. ICING_GFIP(I,J,LL-1) < SPVAL) & + ICINGFSL(I,J) = ICING_GFIP(I,J,LL) + (ICING_GFIP(I,J,LL)-ICING_GFIP(I,J,LL-1))*FACT + ICINGFSL(I,J) = max(0.0, ICINGFSL(I,J)) + ICINGFSL(I,J) = min(1.0, ICINGFSL(I,J)) + IF(ICING_GFIS(I,J,LL) < SPVAL .AND. ICING_GFIS(I,J,LL-1) < SPVAL) & + ICINGVSL(I,J) = ICING_GFIS(I,J,LL) + (ICING_GFIS(I,J,LL)-ICING_GFIS(I,J,LL-1))*FACT +! Icing severity categories +! 0 = none (0, 0.08) +! 1 = trace [0.08, 0.21] +! 2 = light (0.21, 0.37] +! 3 = moderate (0.37, 0.67] +! 4 = severe (0.67, 1] +! https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-228.shtml + if (ICINGVSL(I,J) < 0.08) then + ICINGVSL(I,J) = 0.0 + elseif (ICINGVSL(I,J) <= 0.21) then + ICINGVSL(I,J) = 1. + else if(ICINGVSL(I,J) <= 0.37) then + ICINGVSL(I,J) = 2.0 + else if(ICINGVSL(I,J) <= 0.67) then + ICINGVSL(I,J) = 3.0 + else + ICINGVSL(I,J) = 4.0 + endif + if(ICINGFSL(I,J)< 0.001) ICINGVSL(I,J) = 0. +! GTG + IF(GTG(I,J,LL) < SPVAL .AND. GTG(I,J,LL-1) < SPVAL) THEN + GTGSL(I,J) = GTG(I,J,LL) + (GTG(I,J,LL)-GTG(I,J,LL-1))*FACT + GTGSL(I,J) = max(0.0, GTGSL(I,J)) + GTGSL(I,J) = min(1.0, GTGSL(I,J)) + ENDIF + IF(CAT(I,J,LL) < SPVAL .AND. CAT(I,J,LL-1) < SPVAL) THEN + CATSL(I,J) = CAT(I,J,LL) + (CAT(I,J,LL)-CAT(I,J,LL-1))*FACT + CATSL(I,J) = max(0.0, CATSL(I,J)) + CATSL(I,J) = min(1.0, CATSL(I,J)) + ENDIF + IF(MWT(I,J,LL) < SPVAL .AND. MWT(I,J,LL-1) < SPVAL) THEN + MWTSL(I,J) = MWT(I,J,LL) + (MWT(I,J,LL)-MWT(I,J,LL-1))*FACT + MWTSL(I,J) = max(0.0, MWTSL(I,J)) + MWTSL(I,J) = min(1.0, MWTSL(I,J)) + ENDIF ! DUST if (gocart_on) then DO K = 1, NBIN_DU @@ -2042,6 +2103,123 @@ SUBROUTINE MDL2P(iostatusD3D) end if ! +! +!--- GFIP IN-FLIGHT ICING POTENTIAL: ADDED BY H CHUANG + IF(IGET(481) > 0)THEN + IF(LVLS(LP,IGET(481)) > 0)THEN +!$omp parallel do private(i,j) + DO J=JSTA,JEND + DO I=1,IM + GRID1(I,J) = ICINGFSL(I,J) + ENDDO + ENDDO + if(grib == 'grib2') then + cfld = cfld + 1 + fld_info(cfld)%ifld=IAVBLFLD(IGET(481)) + fld_info(cfld)%lvl=LVLSXML(LP,IGET(481)) +!$omp parallel do private(i,j,jj) + do j=1,jend-jsta+1 + jj = jsta+j-1 + do i=1,im + datapd(i,j,cfld) = GRID1(i,jj) + enddo + enddo + endif + ENDIF + ENDIF +!--- GFIP IN-FLIGHT ICING SEVERITY: ADDED BY Y MAO + IF(IGET(479) > 0) THEN + IF(LVLS(LP,IGET(479)) > 0) THEN +!$omp parallel do private(i,j) + DO J=JSTA,JEND + DO I=1,IM + GRID1(I,J) = ICINGVSL(I,J) + ENDDO + ENDDO + if(grib == 'grib2') then + cfld = cfld+1 + fld_info(cfld)%ifld=IAVBLFLD(IGET(479)) + fld_info(cfld)%lvl=LVLSXML(LP,IGET(479)) +!$omp parallel do private(i,j,jj) + do j=1,jend-jsta+1 + jj = jsta+j-1 + do i=1,im + datapd(i,j,cfld) = GRID1(i,jj) + enddo + enddo + endif + ENDIF + ENDIF +!--- GTG EDR turbulence: ADDED BY Y. MAO + IF(IGET(476) > 0) THEN + IF(LVLS(LP,IGET(476)) > 0) THEN +!$omp parallel do private(i,j) + DO J=JSTA,JEND + DO I=1,IM + GRID1(I,J) = GTGSL(I,J) + ENDDO + ENDDO + if(grib == 'grib2') then + cfld = cfld+1 + fld_info(cfld)%ifld=IAVBLFLD(IGET(476)) + fld_info(cfld)%lvl=LVLSXML(LP,IGET(476)) +!$omp parallel do private(i,j,jj) + do j=1,jend-jsta+1 + jj = jsta+j-1 + do i=1,im + datapd(i,j,cfld) = GRID1(i,jj) + enddo + enddo + endif + ENDIF + ENDIF +!--- GTG CAT turbulence: ADDED BY Y. MAO + IF(IGET(477) > 0) THEN + IF(LVLS(LP,IGET(477)) > 0) THEN +!$omp parallel do private(i,j) + DO J=JSTA,JEND + DO I=1,IM + GRID1(I,J) = CATSL(I,J) + ENDDO + ENDDO + if(grib == 'grib2') then + cfld = cfld+1 + fld_info(cfld)%ifld=IAVBLFLD(IGET(477)) + fld_info(cfld)%lvl=LVLSXML(LP,IGET(477)) +!$omp parallel do private(i,j,jj) + do j=1,jend-jsta+1 + jj = jsta+j-1 + do i=1,im + datapd(i,j,cfld) = GRID1(i,jj) + enddo + enddo + endif + ENDIF + ENDIF +!--- GTG MWT turbulence: ADDED BY Y. MAO + IF(IGET(478) > 0) THEN + IF(LVLS(LP,IGET(478)) > 0) THEN +!$omp parallel do private(i,j) + DO J=JSTA,JEND + DO I=1,IM + GRID1(I,J) = MWTSL(I,J) + ENDDO + ENDDO + if(grib == 'grib2') then + cfld = cfld+1 + fld_info(cfld)%ifld=IAVBLFLD(IGET(478)) + fld_info(cfld)%lvl=LVLSXML(LP,IGET(478)) +!$omp parallel do private(i,j,jj) + do j=1,jend-jsta+1 + jj = jsta+j-1 + do i=1,im + datapd(i,j,cfld) = GRID1(i,jj) + enddo + enddo + endif + ENDIF + ENDIF + !$omp parallel do private(i,j) DO J=JSTA_2L,JEND_2U DO I=1,IM diff --git a/sorc/ncep_post.fd/MDL2STD_P.f b/sorc/ncep_post.fd/MDL2STD_P.f index 6b6f73033..50b280576 100644 --- a/sorc/ncep_post.fd/MDL2STD_P.f +++ b/sorc/ncep_post.fd/MDL2STD_P.f @@ -10,6 +10,7 @@ SUBROUTINE MDL2STD_P() ! ! PROGRAM HISTORY LOG: ! 19-09-24 Y Mao - REWRITTEN FROM MISCLN.f +! 2022-05-25 | Y Mao | Remove interpolation of VVEL/ABSV/CLWMR ! ! USAGE: CALL MDL2STD_P ! INPUT ARGUMENT LIST: @@ -86,17 +87,13 @@ SUBROUTINE MDL2STD_P() ! 520 UGRD ! 521 VGRD ! 522 RH -! 523 VVEL -! 524 ABSV -! 525 CLWMR=QQW+QQR+QQS+QQG+QQI IF(IGET(450)>0 .or. IGET(480)>0 .or. & IGET(464)>0 .or. IGET(465)>0 .or. IGET(466)>0 .or. & IGET(518)>0 .or. IGET(519)>0 .or. IGET(520)>0 .or. & - IGET(521)>0 .or. IGET(522)>0 .or. IGET(523)>0 .or. & - IGET(524)>0 .or. IGET(525)>0) then + IGET(521)>0 .or. IGET(522)>0) then ! STEP 1 -- U V (POSSIBLE FOR ABSV) INTERPLOCATION - IF(IGET(520)>0 .or. IGET(521)>0 .or. IGET(524) > 0 ) THEN + IF(IGET(520)>0 .or. IGET(521)>0 ) THEN ! U/V are always paired, use any for HTFDCTL iID=520 N = IAVBLFLD(IGET(iID)) @@ -155,30 +152,6 @@ SUBROUTINE MDL2STD_P() cfld=cfld+1 fld_info(cfld)%ifld=IAVBLFLD(IGET(521)) fld_info(cfld)%lvl=LVLSXML(IFD,IGET(521)) -!$omp parallel do private(i,j,jj) - do j=1,jend-jsta+1 - jj = jsta+j-1 - do i=1,im - datapd(i,j,cfld) = GRID1(i,jj) - enddo - enddo - endif - ENDIF - ! ABSV - IF (LVLS(IFD,IGET(524)) > 0) THEN - EGRID1=VAR3D1(1:IM,JSTA_2L:JEND_2U,IFD) - EGRID2=VAR3D2(1:IM,JSTA_2L:JEND_2U,IFD) - call CALVOR(EGRID1,EGRID2,EGRID3) -!$omp parallel do private(i,j) - DO J=JSTA,JEND - DO I=1,IM - GRID1(I,J)=EGRID3(I,J) - ENDDO - ENDDO - if(grib=='grib2') then - cfld=cfld+1 - fld_info(cfld)%ifld=IAVBLFLD(IGET(524)) - fld_info(cfld)%lvl=LVLSXML(IFD,IGET(524)) !$omp parallel do private(i,j,jj) do j=1,jend-jsta+1 jj = jsta+j-1 @@ -242,22 +215,6 @@ SUBROUTINE MDL2STD_P() QIN(1:IM,JSTA:JEND,1:LM,nFDS)=T(1:IM,JSTA:JEND,1:LM) QTYPE(nFDS)="T" end if - IF(IGET(523) > 0) THEN - nFDS = nFDS + 1 - IDS(nFDS) = 523 - QIN(1:IM,JSTA:JEND,1:LM,nFDS)=OMGA(1:IM,JSTA:JEND,1:LM) - QTYPE(nFDS)="W" - end if - IF(IGET(525) > 0) THEN - nFDS = nFDS + 1 - IDS(nFDS) = 525 - QIN(1:IM,JSTA:JEND,1:LM,nFDS)=QQW(1:IM,JSTA:JEND,1:LM)+ & - QQR(1:IM,JSTA:JEND,1:LM)+ & - QQS(1:IM,JSTA:JEND,1:LM)+ & - QQG(1:IM,JSTA:JEND,1:LM)+ & - QQI(1:IM,JSTA:JEND,1:LM) - QTYPE(nFDS)="C" - end if ! FOR WAFS, ALL LEVLES OF DIFFERENT VARIABLES ARE THE SAME, USE ANY iID=IDS(1) @@ -301,20 +258,6 @@ SUBROUTINE MDL2STD_P() ENDDO endif - - if(iID==525) then - N1=N - DO IFD = 1,NFDCTL - DO J=JSTA,JEND - DO I=1,IM - if(QFD(I,J,IFD,N) < SPVAL) then - QFD(I,J,IFD,N)=max(0.0,QFD(I,J,IFD,N)) - endif - ENDDO - ENDDO - ENDDO - endif - ! Icing severity categories ! 0 = none (0, 0.08) ! 1 = trace [0.08, 0.21] @@ -523,7 +466,7 @@ SUBROUTINE MDL2STD_P() ! Relabel the pressure level to reference levels ! IDS = 0 - IDS = (/ 450,480,464,465,466,518,519,520,521,522,523,524,525,(0,I=14,50) /) + IDS = (/ 450,480,464,465,466,518,519,520,521,522,(0,I=11,50) /) do i = 1, NFDMAX iID=IDS(i) if(iID == 0) exit diff --git a/sorc/ncep_post.fd/MDLFLD.f b/sorc/ncep_post.fd/MDLFLD.f index 869433104..20bc525bc 100644 --- a/sorc/ncep_post.fd/MDLFLD.f +++ b/sorc/ncep_post.fd/MDLFLD.f @@ -40,6 +40,7 @@ SUBROUTINE MDLFLD ! 14-11-17 B ZHOU - Undetected ECHO TOP value is modified from SPVAL to -5000. ! 15-xx-xx S. Moorthi - reduced memory version ! 15-11-03 S Moorthi - fix a bug in "RELATIVE HUMIDITY ON MDLSURFACES" sectio logic +! 2022-05-25 | Y Mao | Add WAFS icing/turbulence on pressure levels ! ! USAGE: CALL MDLFLD ! INPUT ARGUMENT LIST: @@ -870,10 +871,11 @@ SUBROUTINE MDLFLD (IGET(752).GT.0).OR.(IGET(754).GT.0).OR. & (IGET(278).GT.0).OR.(IGET(264).GT.0).OR. & (IGET(450).GT.0).OR.(IGET(480).GT.0).OR. & + (IGET(479).GT.0).OR.(IGET(481).GT.0).OR. & (IGET(774).GT.0).OR.(IGET(747).GT.0).OR. & (IGET(464).GT.0).OR.(IGET(467).GT.0).OR. & + (IGET(470).GT.0).OR.(IGET(476).GT.0).OR. & (IGET(629).GT.0).OR.(IGET(630).GT.0).OR. & - (IGET(470).GT.0).OR. & (IGET(909).GT.0).OR.(IGET(737).GT.0) ) THEN DO 190 L=1,LM @@ -1598,7 +1600,8 @@ SUBROUTINE MDLFLD ! RELATIVE HUMIDITY ON MDL SURFACES. item = -1 IF (IGET(006) > 0) item = LVLS(L,IGET(006)) - IF (item > 0 .OR. IGET(450) > 0 .OR. IGET(480) > 0) THEN + IF (item > 0 .OR. IGET(450) > 0 .OR. IGET(480) > 0 .OR. & + IGET(479) > 0 .OR. IGET(481) > 0 ) THEN LL=LM-L+1 !$omp parallel do private(i,j) DO J=JSTA,JEND @@ -3624,7 +3627,7 @@ SUBROUTINE MDLFLD ! IF ( (IGET(289).GT.0) .OR. (IGET(389).GT.0) .OR. (IGET(454).GT.0) & .OR. (IGET(245).GT.0) .or. IGET(464)>0 .or. IGET(467)>0 & - .or. IGET(470)>0 ) THEN + .or. IGET(470)>0 .or. IGET(476)>0 ) THEN ! should only compute pblri if pblh from model is not computed based on Ri ! post does not yet read pbl scheme used by model. Will do this soon ! For now, compute PBLRI for non GFS models. @@ -3855,7 +3858,7 @@ SUBROUTINE MDLFLD ENDIF ! ! CALCULATE Gust based on Ri PBL - IF (IGET(245).GT.0 .or. IGET(464)>0 .or. IGET(467)>0.or. IGET(470)>0) THEN + IF (IGET(245).GT.0 .or. IGET(464)>0 .or. IGET(467)>0.or. IGET(470)>0 .or. IGET(476)>0) THEN IF(MODELNAME.EQ.'RAPR') THEN !tgs - 24may17 - smooth PBLHGUST if(MAPTYPE == 6) then @@ -4017,7 +4020,7 @@ SUBROUTINE MDLFLD ! ! ! COMPUTE NCAR GTG turbulence - IF(IGET(464)>0 .or. IGET(467)>0 .or. IGET(470)>0)THEN + IF(IGET(464)>0 .or. IGET(467)>0 .or. IGET(470)>0 .or. IGET(476)>0)THEN i=IM/2 j=(jsta+jend)/2 if(me == 0) print*,'sending input to GTG i,j,hgt,gust',i,j,ZINT(i,j,LP1),gust(i,j) @@ -4103,7 +4106,7 @@ SUBROUTINE MDLFLD end IF ! COMPUTE NCAR FIP - IF(IGET(450).GT.0 .or. IGET(480).GT.0)THEN + IF(IGET(450)>0 .or. IGET(480)>0 .or. IGET(479)>0 .or. IGET(481)>0)THEN ! cape and cin ITYPE = 1 diff --git a/sorc/ncep_post.fd/get_postfilename.f b/sorc/ncep_post.fd/get_postfilename.f index bc731e1c4..12879d291 100644 --- a/sorc/ncep_post.fd/get_postfilename.f +++ b/sorc/ncep_post.fd/get_postfilename.f @@ -5,6 +5,7 @@ subroutine get_postfilename(fname) ! ! Program log: ! 11-02 Jun Wang generate code from subroutine gribit +! 2022-05-25 | Y Mao | For WAFS, output multi paramsets to different files ! use ctlblk_mod, only : ifhr, me, modelname, ifmin use rqstfld_mod, only : ritehd, datset, iget @@ -80,6 +81,9 @@ subroutine get_postfilename(fname) if(me==0)PRINT*,' FNAME FROM IPVOUT=',trim(FNAME) ELSE IF(PGBOUT(1:4).NE.BLANK)THEN FNAME = PGBOUT + if (IGET(464) >0 ) then + FNAME=trim(FNAME) // DATSET(1:KDAT) + endif if(me==0)PRINT*,' FNAME FROM PGBOUT=',trim(FNAME) ELSE NDIG=MAX(LOG10(IHR+0.5)+1.,2.) diff --git a/sorc/post_gtg.fd b/sorc/post_gtg.fd index 95959a1c0..6bb7a1242 160000 --- a/sorc/post_gtg.fd +++ b/sorc/post_gtg.fd @@ -1 +1 @@ -Subproject commit 95959a1c04ef49452186e4be9d49b0c1d7aba7d9 +Subproject commit 6bb7a1242ab231f9afc047988483db494df59820