From 4284846e2110f9c6e6781de2c002ae35964f03a1 Mon Sep 17 00:00:00 2001 From: weizhong zheng Date: Fri, 18 Mar 2022 14:45:38 +0000 Subject: [PATCH 1/7] modify the eddy diffusivity for heat at the top of the canopy --- physics/module_sf_noahmplsm.f90 | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/physics/module_sf_noahmplsm.f90 b/physics/module_sf_noahmplsm.f90 index ef022b4ee..6e59407bb 100644 --- a/physics/module_sf_noahmplsm.f90 +++ b/physics/module_sf_noahmplsm.f90 @@ -3828,6 +3828,7 @@ subroutine vege_flux(parameters,nsnow ,nsoil ,isnow ,vegtyp ,veg , & real (kind=kind_phys) :: fm !momentum stability correction, weighted by prior iters real (kind=kind_phys) :: fh !sen heat stability correction, weighted by prior iters real (kind=kind_phys) :: fhg !sen heat stability correction, ground + real (kind=kind_phys) :: fhgh !sen heat stability correction, canopy real (kind=kind_phys) :: hcan !canopy height (m) [note: hcan >= z0mg] real (kind=kind_phys) :: a !temporary calculation @@ -4048,7 +4049,7 @@ subroutine vege_flux(parameters,nsnow ,nsoil ,isnow ,vegtyp ,veg , & call ragrb(parameters,iter ,vaie ,rhoair ,hg ,tah , & !in zpd ,z0mg ,z0hg ,hcan ,uc , & !in z0h ,fv ,cwp ,vegtyp ,mpe , & !in - tv ,mozg ,fhg ,iloc ,jloc , & !inout + tv ,mozg ,fhg ,fhgh ,iloc ,jloc , & !inout ramg ,rahg ,rawg ,rb ) !out ! es and d(es)/dt evaluated at tv @@ -4604,7 +4605,7 @@ end subroutine bare_flux subroutine ragrb(parameters,iter ,vai ,rhoair ,hg ,tah , & !in zpd ,z0mg ,z0hg ,hcan ,uc , & !in z0h ,fv ,cwp ,vegtyp ,mpe , & !in - tv ,mozg ,fhg ,iloc ,jloc , & !inout + tv ,mozg ,fhg ,fhgh ,iloc ,jloc , & !inout ramg ,rahg ,rawg ,rb ) !out ! -------------------------------------------------------------------------------------------------- ! compute under-canopy aerodynamic resistance rag and leaf boundary layer @@ -4638,6 +4639,7 @@ subroutine ragrb(parameters,iter ,vai ,rhoair ,hg ,tah , & !in real (kind=kind_phys), intent(inout) :: mozg !monin-obukhov stability parameter real (kind=kind_phys), intent(inout) :: fhg !stability correction + real (kind=kind_phys), intent(inout) :: fhgh !stability correction, canopy ! outputs real (kind=kind_phys) :: ramg !aerodynamic resistance for momentum (s/m) @@ -4652,29 +4654,36 @@ subroutine ragrb(parameters,iter ,vai ,rhoair ,hg ,tah , & !in real (kind=kind_phys) :: tmprah2 !temporary calculation for aerodynamic resistances real (kind=kind_phys) :: tmprb !temporary calculation for rb real (kind=kind_phys) :: molg,fhgnew,cwpc + real (kind=kind_phys) :: mozgh, fhgnewh ! -------------------------------------------------------------------------------------------------- ! stability correction to below canopy resistance mozg = 0. molg = 0. + mozgh = 0. if(iter > 1) then tmp1 = vkc * (grav/tah) * hg/(rhoair*cpair) if (abs(tmp1) .le. mpe) tmp1 = mpe molg = -1. * fv**3 / tmp1 mozg = min( (zpd-z0mg)/molg, 1.) + mozgh = min( (hcan - zpd)/molg, 1.) end if if (mozg < 0.) then fhgnew = (1. - 15.*mozg)**(-0.25) + fhgnewh = 0.74 * (1. - 9.*mozg)**(-0.5) ! PHIh else fhgnew = 1.+ 4.7*mozg + fhgnewh = 0.74 + 4.7*mozgh ! PHIh endif if (iter == 1) then fhg = fhgnew + fhgh = fhgnewh else fhg = 0.5 * (fhg+fhgnew) + fhgh = 0.5 * (fhgh+fhgnewh) endif cwpc = (cwp * vai * hcan * fhg)**0.5 @@ -4686,7 +4695,7 @@ subroutine ragrb(parameters,iter ,vai ,rhoair ,hg ,tah , & !in ! aerodynamic resistances raw and rah between heights zpd+z0h and z0hg. - kh = max ( vkc*fv*(hcan-zpd), mpe ) + kh = max ( vkc*fv*(hcan-zpd)/fhgh, mpe ) ramg = 0. rahg = tmprah2 / kh rawg = rahg From f3af80f1545f17e34e2499b5d50d04b8adef5304 Mon Sep 17 00:00:00 2001 From: weizhong zheng Date: Sun, 20 Mar 2022 14:05:25 +0000 Subject: [PATCH 2/7] tuning cd/lm parameter --- physics/module_sf_noahmplsm.f90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/physics/module_sf_noahmplsm.f90 b/physics/module_sf_noahmplsm.f90 index 6e59407bb..d2f766b31 100644 --- a/physics/module_sf_noahmplsm.f90 +++ b/physics/module_sf_noahmplsm.f90 @@ -4695,7 +4695,7 @@ subroutine ragrb(parameters,iter ,vai ,rhoair ,hg ,tah , & !in ! aerodynamic resistances raw and rah between heights zpd+z0h and z0hg. - kh = max ( vkc*fv*(hcan-zpd)/fhgh, mpe ) + kh = max ( 0.5*vkc*fv*(hcan-zpd)/fhgh, mpe ) ramg = 0. rahg = tmprah2 / kh rawg = rahg From 96f58e021a1d5607a446dd0826982343929c72d5 Mon Sep 17 00:00:00 2001 From: weizhong zheng Date: Sun, 20 Mar 2022 14:07:49 +0000 Subject: [PATCH 3/7] tuning cd/lm parameter --- physics/module_sf_noahmplsm.f90 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/physics/module_sf_noahmplsm.f90 b/physics/module_sf_noahmplsm.f90 index d2f766b31..2f16dc331 100644 --- a/physics/module_sf_noahmplsm.f90 +++ b/physics/module_sf_noahmplsm.f90 @@ -4686,7 +4686,7 @@ subroutine ragrb(parameters,iter ,vai ,rhoair ,hg ,tah , & !in fhgh = 0.5 * (fhgh+fhgnewh) endif - cwpc = (cwp * vai * hcan * fhg)**0.5 + cwpc = (0.5 * cwp * vai * hcan * fhg)**0.5 ! cwpc = (cwp*fhg)**0.5 tmp1 = exp( -cwpc*z0hg/hcan ) @@ -4695,7 +4695,7 @@ subroutine ragrb(parameters,iter ,vai ,rhoair ,hg ,tah , & !in ! aerodynamic resistances raw and rah between heights zpd+z0h and z0hg. - kh = max ( 0.5*vkc*fv*(hcan-zpd)/fhgh, mpe ) + kh = max ( vkc*fv*(hcan-zpd)/fhgh, mpe ) ramg = 0. rahg = tmprah2 / kh rawg = rahg From 779b323d2f39d74319c9ff24a07aa7b577e018d5 Mon Sep 17 00:00:00 2001 From: weizhong zheng Date: Mon, 21 Mar 2022 15:00:51 +0000 Subject: [PATCH 4/7] modify a table of cwp parameter --- physics/module_sf_noahmplsm.f90 | 4 ++-- physics/noahmp_tables.f90 | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/physics/module_sf_noahmplsm.f90 b/physics/module_sf_noahmplsm.f90 index 2f16dc331..f6ec7b79e 100644 --- a/physics/module_sf_noahmplsm.f90 +++ b/physics/module_sf_noahmplsm.f90 @@ -4686,7 +4686,7 @@ subroutine ragrb(parameters,iter ,vai ,rhoair ,hg ,tah , & !in fhgh = 0.5 * (fhgh+fhgnewh) endif - cwpc = (0.5 * cwp * vai * hcan * fhg)**0.5 + cwpc = (cwp * vai * hcan * fhg)**0.5 ! cwpc = (cwp*fhg)**0.5 tmp1 = exp( -cwpc*z0hg/hcan ) @@ -4695,7 +4695,7 @@ subroutine ragrb(parameters,iter ,vai ,rhoair ,hg ,tah , & !in ! aerodynamic resistances raw and rah between heights zpd+z0h and z0hg. - kh = max ( vkc*fv*(hcan-zpd)/fhgh, mpe ) + kh = max ( vkc*fv*(hcan-zpd)/(max(fhgh,0.1), mpe ) ramg = 0. rahg = tmprah2 / kh rawg = rahg diff --git a/physics/noahmp_tables.f90 b/physics/noahmp_tables.f90 index 9cb25b3f3..6666b2f67 100644 --- a/physics/noahmp_tables.f90 +++ b/physics/noahmp_tables.f90 @@ -510,11 +510,11 @@ module noahmp_tables ! real :: cwpvt_table(mvt) !< empirical canopy wind parameter - data ( cwpvt_table (i),i=1,mvt) / 0.18, 0.67, 0.18, 0.67, 0.29, 1.00, & - & 2.00, 1.30, 1.00, 5.00, 1.17, 1.67, & - & 1.67, 1.67, 0.18, 0.18, 0.18, 0.67, & - & 1.00, 0.18, 0.00, 0.00, 0.00, 0.00, & - & 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 / + data ( cwpvt_table (i),i=1,mvt) / 0.09, 0.335, 0.09, 0.335, 0.145, 0.50, & + & 1.00, 0.65, 0.50, 2.50, 0.585, 0.835, & + & 0.835, 0.835, 0.09, 0.09, 0.09, 0.335, & + & 0.835, 0.835, 0.09, 0.09, 0.09, 0.335, & + & 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 / real :: wrrat_table(mvt) !< wood to non-wood ratio From 09e4f95feb79a9354c9fb3710567a3ec58a2da5d Mon Sep 17 00:00:00 2001 From: weizhong zheng Date: Mon, 21 Mar 2022 15:04:38 +0000 Subject: [PATCH 5/7] modify a table of cwp parameter --- physics/module_sf_noahmplsm.f90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/physics/module_sf_noahmplsm.f90 b/physics/module_sf_noahmplsm.f90 index f6ec7b79e..217f4ce80 100644 --- a/physics/module_sf_noahmplsm.f90 +++ b/physics/module_sf_noahmplsm.f90 @@ -4695,7 +4695,7 @@ subroutine ragrb(parameters,iter ,vai ,rhoair ,hg ,tah , & !in ! aerodynamic resistances raw and rah between heights zpd+z0h and z0hg. - kh = max ( vkc*fv*(hcan-zpd)/(max(fhgh,0.1), mpe ) + kh = max ( vkc*fv*(hcan-zpd)/(max(fhgh,0.1)), mpe ) ramg = 0. rahg = tmprah2 / kh rawg = rahg From 0b7879cffdbbe71fd7bba4d9e62e154b4cd5afb4 Mon Sep 17 00:00:00 2001 From: weizhong zheng Date: Mon, 21 Mar 2022 15:07:58 +0000 Subject: [PATCH 6/7] modify a table of cwp parameter --- physics/module_sf_noahmplsm.f90 | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/physics/module_sf_noahmplsm.f90 b/physics/module_sf_noahmplsm.f90 index 217f4ce80..e610cc214 100644 --- a/physics/module_sf_noahmplsm.f90 +++ b/physics/module_sf_noahmplsm.f90 @@ -4672,18 +4672,18 @@ subroutine ragrb(parameters,iter ,vai ,rhoair ,hg ,tah , & !in if (mozg < 0.) then fhgnew = (1. - 15.*mozg)**(-0.25) - fhgnewh = 0.74 * (1. - 9.*mozg)**(-0.5) ! PHIh + fhgnewh = 0.74 * (1. - 9.*mozg)**(-0.5) ! PHIh else fhgnew = 1.+ 4.7*mozg - fhgnewh = 0.74 + 4.7*mozgh ! PHIh + fhgnewh = 0.74 + 4.7*mozgh ! PHIh endif if (iter == 1) then fhg = fhgnew - fhgh = fhgnewh + fhgh = fhgnewh else fhg = 0.5 * (fhg+fhgnew) - fhgh = 0.5 * (fhgh+fhgnewh) + fhgh = 0.5 * (fhgh+fhgnewh) endif cwpc = (cwp * vai * hcan * fhg)**0.5 From 109dcdfaf05e7b9b48b43d7545a54e895d67bd8a Mon Sep 17 00:00:00 2001 From: weizhong zheng Date: Mon, 21 Mar 2022 16:15:32 +0000 Subject: [PATCH 7/7] modify a table of cwp parameter --- physics/noahmp_tables.f90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/physics/noahmp_tables.f90 b/physics/noahmp_tables.f90 index 6666b2f67..2e3e2920e 100644 --- a/physics/noahmp_tables.f90 +++ b/physics/noahmp_tables.f90 @@ -513,7 +513,7 @@ module noahmp_tables data ( cwpvt_table (i),i=1,mvt) / 0.09, 0.335, 0.09, 0.335, 0.145, 0.50, & & 1.00, 0.65, 0.50, 2.50, 0.585, 0.835, & & 0.835, 0.835, 0.09, 0.09, 0.09, 0.335, & - & 0.835, 0.835, 0.09, 0.09, 0.09, 0.335, & + & 0.50, 0.09, 0.00, 0.00, 0.00, 0.00, & & 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 /