From a05814d5a7e91fdb829da7f34fdd47e5516d9c15 Mon Sep 17 00:00:00 2001 From: Kelly Werner Date: Mon, 21 Apr 2025 11:05:28 -0600 Subject: [PATCH 1/7] Remove inaccurate error message regarding ghg_input (#2199) TYPE: bug fix KEYWORDS: ghg_input, idealized, no radiation SOURCE: internal DESCRIPTION OF CHANGES: Problem: Most idealized cases have radiation options turned off, which causes the following error message to inaccurately print to the rsl files when ideal.exe is run: ERROR: ghg_input available only for these radiation schemes: CAM, RRTM, RRTMG, RRTMG_fast And the LW and SW schemes must be reasonably paired together: OK = CAM LW with CAM SW OK = RRTM, RRTMG LW or SW, RRTMG_fast LW or SW may be mixed Solution: In share/module_check_a_mundo.F, add code to ensure that when radiation is turned off, not only does the message not print, but the namelist value for ghg_input is set to 0, as well. LIST OF MODIFIED FILES: M share/module_check_a_mundo.F TESTS CONDUCTED: 1. Code compiles okay and no longer prints the message for idealized cases (tested with em_quarter_ss). 2. The Jenkins tests are all passing. RELEASE NOTE: This PR fixes an erroneous print for using ghg_input when no radiation option is selected, mostly from idealized cases. --- share/module_check_a_mundo.F | 2 ++ 1 file changed, 2 insertions(+) diff --git a/share/module_check_a_mundo.F b/share/module_check_a_mundo.F index 8ad4e88a6d..d43ef6e4c3 100644 --- a/share/module_check_a_mundo.F +++ b/share/module_check_a_mundo.F @@ -971,6 +971,8 @@ END FUNCTION bep_bem_ngr_u ( model_config_rec % ra_sw_physics(i) .EQ. RRTMG_SWSCHEME ) .OR. & ( model_config_rec % ra_sw_physics(i) .EQ. RRTMG_SWSCHEME_FAST ) ) ) ) THEN ! This is OK, no way would a negation have been understandable! + ELSE IF ( model_config_rec % ra_sw_physics(i) == 0 ) THEN + model_config_rec%ghg_input=0 ELSE oops = oops + 1 END IF From 9c1d4b4256b76cbe5830cb769aed49dcb59bae4b Mon Sep 17 00:00:00 2001 From: Tzu-Shun Lin Date: Tue, 22 Apr 2025 13:48:14 -0600 Subject: [PATCH 2/7] bugfix for LCZ index in Noah-MP (#2202) TYPE: bug fix KEYWORDS: Urban, Noah-MP, LCZ SOURCE: Martilli, Alberto (CIEMAT) DESCRIPTION OF CHANGES: Problem: If one uses Noah-MP and LCZ data, all the LCZ_1, LCZ_2, etc. are zero because they are not defined correctly for Noah-MP. Solution: This PR fixes the issue by using LCZ_*_TABLE instead so that LCZ are correctly defined in Noah-MP. LIST OF MODIFIED FILES: M phys/module_surface_driver.F TESTS CONDUCTED: 1. A one-month simulation was conducted for February 2018 over Atlanta to verify the change. 2. The Jenkins tests are all passing. RELEASE NOTE: This PR fixes an error associated with using LCZ categories in NoahMP. Prior to this fix, the LCZs were not correctly referenced, hence ignored in the NoahMP code. --- phys/module_surface_driver.F | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/phys/module_surface_driver.F b/phys/module_surface_driver.F index 650dd4fe87..2f63cfdb55 100644 --- a/phys/module_surface_driver.F +++ b/phys/module_surface_driver.F @@ -363,6 +363,7 @@ SUBROUTINE surface_driver( & USE module_sf_gfs USE module_sf_noahdrv ! danli mosaic, the " ,only : lsm " needs to be deleted USE module_sf_noahlsm, only : LCZ_1,LCZ_2,LCZ_3,LCZ_4,LCZ_5,LCZ_6,LCZ_7,LCZ_8,LCZ_9,LCZ_10,LCZ_11 + USE noahmp_tables, only : LCZ_1_TABLE,LCZ_2_TABLE,LCZ_3_TABLE,LCZ_4_TABLE,LCZ_5_TABLE,LCZ_6_TABLE,LCZ_7_TABLE,LCZ_8_TABLE,LCZ_9_TABLE,LCZ_10_TABLE,LCZ_11_TABLE USE module_sf_noahmpdrv, only : noahmplsm, noahmp_urban USE module_sf_noahmp_groundwater USE module_sf_noah_seaice_drv @@ -3354,10 +3355,10 @@ SUBROUTINE surface_driver( & ENDIF TH2(I,J) = T2(I,J)*(1.E5/PSFC(I,J))**RCP ! ELSEIF (IVGTYP(I,J) == ISURBAN .OR. IVGTYP(I,J) == ISICE .OR. FVEGXY(I,J) == 0.0 ) THEN - ELSEIF( IVGTYP(I,J) == ISURBAN .or. IVGTYP(I,J) == LCZ_1 .or. IVGTYP(I,J) == LCZ_2 .or. & - IVGTYP(I,J) == LCZ_3 .or. IVGTYP(I,J) == LCZ_4 .or. IVGTYP(I,J) == LCZ_5 .or. & - IVGTYP(I,J) == LCZ_6 .or. IVGTYP(I,J) == LCZ_7 .or. IVGTYP(I,J) == LCZ_8 .or. & - IVGTYP(I,J) == LCZ_9 .or. IVGTYP(I,J) == LCZ_10 .or. IVGTYP(I,J) == LCZ_11 .or. & + ELSEIF( IVGTYP(I,J) == ISURBAN .or. IVGTYP(I,J) == LCZ_1_TABLE .or. IVGTYP(I,J) == LCZ_2_TABLE .or. & + IVGTYP(I,J) == LCZ_3_TABLE .or. IVGTYP(I,J) == LCZ_4_TABLE .or. IVGTYP(I,J) == LCZ_5_TABLE .or. & + IVGTYP(I,J) == LCZ_6_TABLE .or. IVGTYP(I,J) == LCZ_7_TABLE .or. IVGTYP(I,J) == LCZ_8_TABLE .or. & + IVGTYP(I,J) == LCZ_9_TABLE .or. IVGTYP(I,J) == LCZ_10_TABLE .or. IVGTYP(I,J) == LCZ_11_TABLE .or. & (IVGTYP(I,J) == ISICE .AND. XICE(I,J) .LT. XICE_THRESHOLD)) THEN Q2(I,J) = Q2MBXY(I,J) @@ -3382,10 +3383,10 @@ SUBROUTINE surface_driver( & IF(SF_URBAN_PHYSICS.eq.1) THEN DO j=j_start(ij),j_end(ij) !urban DO i=i_start(ij),i_end(ij) !urban - IF( IVGTYP(I,J) == ISURBAN .or. IVGTYP(I,J) == LCZ_1 .or. IVGTYP(I,J) == LCZ_2 .or. & - IVGTYP(I,J) == LCZ_3 .or. IVGTYP(I,J) == LCZ_4 .or. IVGTYP(I,J) == LCZ_5 .or. & - IVGTYP(I,J) == LCZ_6 .or. IVGTYP(I,J) == LCZ_7 .or. IVGTYP(I,J) == LCZ_8 .or. & - IVGTYP(I,J) == LCZ_9 .or. IVGTYP(I,J) == LCZ_10 .or. IVGTYP(I,J) == LCZ_11 )THEN + IF( IVGTYP(I,J) == ISURBAN .or. IVGTYP(I,J) == LCZ_1_TABLE .or. IVGTYP(I,J) == LCZ_2_TABLE .or. & + IVGTYP(I,J) == LCZ_3_TABLE .or. IVGTYP(I,J) == LCZ_4_TABLE .or. IVGTYP(I,J) == LCZ_5_TABLE .or. & + IVGTYP(I,J) == LCZ_6_TABLE .or. IVGTYP(I,J) == LCZ_7_TABLE .or. IVGTYP(I,J) == LCZ_8_TABLE .or. & + IVGTYP(I,J) == LCZ_9_TABLE .or. IVGTYP(I,J) == LCZ_10_TABLE .or. IVGTYP(I,J) == LCZ_11_TABLE )THEN Q2(I,J) = (FVEGXY(I,J)*Q2MVXY(I,J) + (1.-FVEGXY(I,J))*Q2MBXY(I,J))*(1.-FRC_URB2D(I,J)) + & Q2_URB2D(I,J)*FRC_URB2D(I,J) T2(I,J) = (FVEGXY(I,J)*T2MVXY(I,J) + (1.-FVEGXY(I,J))*T2MBXY(I,J))*(1.-FRC_URB2D(I,J)) + & @@ -3406,10 +3407,10 @@ SUBROUTINE surface_driver( & IF((SF_URBAN_PHYSICS.eq.2).OR.(SF_URBAN_PHYSICS.eq.3)) THEN DO j=j_start(ij),j_end(ij) !urban DO i=i_start(ij),i_end(ij) !urban - IF( IVGTYP(I,J) == ISURBAN .or. IVGTYP(I,J) == LCZ_1 .or. IVGTYP(I,J) == LCZ_2 .or. & - IVGTYP(I,J) == LCZ_3 .or. IVGTYP(I,J) == LCZ_4 .or. IVGTYP(I,J) == LCZ_5 .or. & - IVGTYP(I,J) == LCZ_6 .or. IVGTYP(I,J) == LCZ_7 .or. IVGTYP(I,J) == LCZ_8 .or. & - IVGTYP(I,J) == LCZ_9 .or. IVGTYP(I,J) == LCZ_10 .or. IVGTYP(I,J) == LCZ_11 )THEN + IF( IVGTYP(I,J) == ISURBAN .or. IVGTYP(I,J) == LCZ_1_TABLE .or. IVGTYP(I,J) == LCZ_2_TABLE .or. & + IVGTYP(I,J) == LCZ_3_TABLE .or. IVGTYP(I,J) == LCZ_4_TABLE .or. IVGTYP(I,J) == LCZ_5_TABLE .or. & + IVGTYP(I,J) == LCZ_6_TABLE .or. IVGTYP(I,J) == LCZ_7_TABLE .or. IVGTYP(I,J) == LCZ_8_TABLE .or. & + IVGTYP(I,J) == LCZ_9_TABLE .or. IVGTYP(I,J) == LCZ_10_TABLE .or. IVGTYP(I,J) == LCZ_11_TABLE )THEN T2(I,J) = TH_PHY(i,1,j)/((1.E5/PSFC(I,J))**RCP) !urban TH2(I,J) = TH_PHY(i,1,j) !urban Q2(I,J) = qv_curr(i,1,j) !urban From 984797e6c95021b54688551c51de5fba857e004e Mon Sep 17 00:00:00 2001 From: Jesus Fernandez Date: Tue, 13 Jan 2026 10:29:00 +0100 Subject: [PATCH 3/7] Point Noah-MP to the WRF v4.7.1 version (commit e5c0859) This has all current bug fixes and no new features (since WRF v4.5.1), so it should work fine. --- phys/noahmp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phys/noahmp b/phys/noahmp index 848f54ad3d..e5c0859874 160000 --- a/phys/noahmp +++ b/phys/noahmp @@ -1 +1 @@ -Subproject commit 848f54ad3d28c4303151fe5ad83724e232694422 +Subproject commit e5c0859874407859936739e8be8741f9aed369ee From 299ddbe8091563cb1451d4cfce85565663afe66c Mon Sep 17 00:00:00 2001 From: Jesus Fernandez Date: Tue, 13 Jan 2026 10:33:10 +0100 Subject: [PATCH 4/7] Update version_decl to v4.6.1.1-devel --- inc/version_decl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inc/version_decl b/inc/version_decl index 20fb319054..8845e6b661 100644 --- a/inc/version_decl +++ b/inc/version_decl @@ -1 +1 @@ - CHARACTER (LEN=*), PARAMETER :: release_version = 'V4.6.1' + CHARACTER (LEN=*), PARAMETER :: release_version = 'V4.6.1.1-devel' From b494034176e1618d42921b7f1a6c05ba4b458826 Mon Sep 17 00:00:00 2001 From: Jesus Fernandez Date: Tue, 13 Jan 2026 12:02:15 +0100 Subject: [PATCH 5/7] Update Noah-MP to point to latest CWC Noah-MP code To include the updated CBIOM values (see https://github.com/CORDEX-WRF-community/noahmp/commit/a10d606f) --- phys/noahmp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phys/noahmp b/phys/noahmp index e5c0859874..a10d606f3e 160000 --- a/phys/noahmp +++ b/phys/noahmp @@ -1 +1 @@ -Subproject commit e5c0859874407859936739e8be8741f9aed369ee +Subproject commit a10d606f3ec8ccf5a38c69e19050a4dd40b56997 From be4a0938df018c0cf43b8ccc687a6b28034b5ccd Mon Sep 17 00:00:00 2001 From: Jesus Fernandez Date: Tue, 13 Jan 2026 12:04:37 +0100 Subject: [PATCH 6/7] Update TS_SCHEME to value 2 The default (1) leads to crashes with SLUCM urban option. See https://github.com/CORDEX-WRF-community/fps-urb-rcc/issues/4 --- run/URBPARM.TBL | 2 +- run/URBPARM_LCZ.TBL | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/run/URBPARM.TBL b/run/URBPARM.TBL index dab006d86c..32fb488dd9 100644 --- a/run/URBPARM.TBL +++ b/run/URBPARM.TBL @@ -124,7 +124,7 @@ CH_SCHEME: 2 # (sf_urban_physics=1) # -TS_SCHEME: 1 +TS_SCHEME: 2 # # AHOPTION [ 0: No anthropogenic heating, 1: Anthropogenic heating will be added to sensible heat flux term ] diff --git a/run/URBPARM_LCZ.TBL b/run/URBPARM_LCZ.TBL index 450d765f9d..5d86cb128c 100644 --- a/run/URBPARM_LCZ.TBL +++ b/run/URBPARM_LCZ.TBL @@ -123,7 +123,7 @@ CH_SCHEME: 2 # (sf_urban_physics=1) # -TS_SCHEME: 1 +TS_SCHEME: 2 # # AHOPTION [ 0: No anthropogenic heating, 1: Anthropogenic heating will be added to sensible heat flux term ] From db9e6342dedeeb2e88146d6828376fc9bc638625 Mon Sep 17 00:00:00 2001 From: Jesus Fernandez Date: Tue, 13 Jan 2026 13:32:35 +0100 Subject: [PATCH 7/7] Fix noahmp submodule url to point to the CWC repo --- .gitmodules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitmodules b/.gitmodules index 5d206bcbf5..647dcb766c 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +1,6 @@ [submodule "phys/noahmp"] path = phys/noahmp - url = https://github.com/NCAR/noahmp + url = https://github.com/CORDEX-WRF-community/noahmp [submodule ".ci/hpc-workflows"] path = .ci/hpc-workflows url = https://github.com/islas/hpc-workflows