From 1ffea266b67849a59c5b30e9a7f2fd6722b38437 Mon Sep 17 00:00:00 2001 From: rhaesung Date: Fri, 3 Jan 2025 20:59:16 +0000 Subject: [PATCH 1/5] update cloud/radiation/land --- physics/MP/Thompson/module_mp_thompson.F90 | 2 +- physics/Radiation/radiation_clouds.f | 2 +- .../Land/Noahmp/module_sf_noahmplsm.F90 | 29 +++++++++++++++---- 3 files changed, 26 insertions(+), 7 deletions(-) diff --git a/physics/MP/Thompson/module_mp_thompson.F90 b/physics/MP/Thompson/module_mp_thompson.F90 index 3114859b5..5d4495ae0 100644 --- a/physics/MP/Thompson/module_mp_thompson.F90 +++ b/physics/MP/Thompson/module_mp_thompson.F90 @@ -93,7 +93,7 @@ module module_mp_thompson !.. droplet number concentration. !real(wp), parameter :: Nt_c = 100.e6 real(wp), parameter :: Nt_c_o = 50.e6 - real(wp), parameter :: Nt_c_l = 100.e6 + real(wp), parameter :: Nt_c_l = 150.e6 real(wp), parameter, private :: Nt_c_max = 1999.e6 !..Declaration of constants for assumed CCN/IN aerosols when none in diff --git a/physics/Radiation/radiation_clouds.f b/physics/Radiation/radiation_clouds.f index 979405cdb..d1518bfcb 100644 --- a/physics/Radiation/radiation_clouds.f +++ b/physics/Radiation/radiation_clouds.f @@ -197,7 +197,7 @@ module module_radiation_clouds real (kind=kind_phys), parameter :: ovcst = 1.0 - 1.0e-8 real (kind=kind_phys), parameter :: reliq_def = 10.0 !< default liq radius to 10 micron - real (kind=kind_phys), parameter :: reice_def = 50.0 !< default ice radius to 50 micron + real (kind=kind_phys), parameter :: reice_def = 25.0 !< default ice radius to 50 micron real (kind=kind_phys), parameter :: rrain_def = 1000.0 !< default rain radius to 1000 micron real (kind=kind_phys), parameter :: rsnow_def = 250.0 !< default snow radius to 250 micron diff --git a/physics/SFC_Models/Land/Noahmp/module_sf_noahmplsm.F90 b/physics/SFC_Models/Land/Noahmp/module_sf_noahmplsm.F90 index a76a354e6..7ab496ddc 100644 --- a/physics/SFC_Models/Land/Noahmp/module_sf_noahmplsm.F90 +++ b/physics/SFC_Models/Land/Noahmp/module_sf_noahmplsm.F90 @@ -2511,7 +2511,19 @@ subroutine thermoprop (parameters,nsoil ,nsnow ,isnow ,ist ,dzsnso , real (kind=kind_phys), dimension(-nsnow+1: 0) :: tksno !snow thermal conductivity (j/m3/k) real (kind=kind_phys), dimension( 1:nsoil) :: sice !soil ice content real (kind=kind_phys), parameter :: sbeta = -2.0 + real (kind=kind_phys), dimension(4,20) :: soil_carbon ! soil carbon content [kg/m3] + real (kind=kind_phys), parameter :: soil_carbon_df = 0.25 ! soil carbon therm cond (Lawrence and Slater) + real (kind=kind_phys), parameter :: soil_carbon_hcpct = 2.5e6 ! soil carbon heat capacity (Lawrence and Slater) ! -------------------------------------------------------------------------------------------------- +! soil carbon [kg/m3] by vegetation type estimated from global PNNL soil carbon dataset +! and VIIRS surface type + + soil_carbon(1,:) = (/90,65,90,65,90,40,50,50,40,50,90,60,60,60,0,20,0,90,90,60/) + soil_carbon(2,:) = (/40,30,40,30,40,25,30,30,25,30,40,30,30,30,0,15,0,60,60,40/) + soil_carbon(3,:) = (/20,15,20,15,20,15,20,15,15,15,25,20,20,20,0,10,0,40,40,30/) + soil_carbon(4,:) = (/15,10,15,10,15,10,15,10,10,10,20,10,10,10,0,10,0,40,30,20/) + + soil_carbon = soil_carbon / 130.0 ! convert to soil carbon relative to peat ! compute snow thermal conductivity and heat capacity @@ -2530,6 +2542,11 @@ subroutine thermoprop (parameters,nsoil ,nsnow ,isnow ,ist ,dzsnso , hcpct(iz) = sh2o(iz)*cwat + (1.0-parameters%smcmax(iz))*parameters%csoil & + (parameters%smcmax(iz)-smc(iz))*cpair + sice(iz)*cice call tdfcnd (parameters,iz,df(iz), smc(iz), sh2o(iz)) + +! adjust for soil carbon organic content + +! hcpct(iz) = (1.0 - soil_carbon(iz,vegtyp)) * hcpct(iz) + soil_carbon(iz,vegtyp) * soil_carbon_hcpct + df(iz) = (1.0 - soil_carbon(iz,vegtyp)) * df(iz) + soil_carbon(iz,vegtyp) * soil_carbon_df end do if ( parameters%urban_flag ) then @@ -3003,6 +3020,10 @@ subroutine albedo (parameters,vegtyp ,ist ,ice ,nsoil , & !in if (ib.eq.1) fsun = 0. end do +! snow age + + call snow_age (parameters,dt,tg,sneqvo,sneqv,tauss,fage) + if(cosz <= 0) goto 100 ! weight reflectance/transmittance by lai and sai @@ -3015,10 +3036,6 @@ subroutine albedo (parameters,vegtyp ,ist ,ice ,nsoil , & !in tau(ib) = max(parameters%taul(ib)*wl+parameters%taus(ib)*ws, mpe) end do -! snow age - - call snow_age (parameters,dt,tg,sneqvo,sneqv,tauss,fage) - ! snow albedos: only if cosz > 0 and fsno > 0 if(opt_alb == 1) & @@ -9128,7 +9145,9 @@ subroutine groundwater(parameters,nsnow ,nsoil ,dt ,sice ,zsoil , & !in ! ka = hk(iwt) ! harmonic average, c.he changed based on gy niu's update - ka = 2.0*(hk(iwt)*parameters%dksat(iwt)*1.0e3) / (hk(iwt)+parameters%dksat(iwt)*1.0e3) +! ka = 2.0*(hk(iwt)*parameters%dksat(iwt)*1.0e3) / (hk(iwt)+parameters%dksat(iwt)*1.0e3) +! tried one suggesteed by gy niu + ka = 0.5*(hk(iwt)+parameters%dksat(iwt)*1.0e3) wh_zwt = - zwt * 1.e3 !(mm) wh = smpfz - znode(iwt)*1.e3 !(mm) From 80d5c40141cf0b441487392ca5fec2748cee2fde Mon Sep 17 00:00:00 2001 From: rhaesung Date: Mon, 6 Jan 2025 20:04:39 +0000 Subject: [PATCH 2/5] update radiation_clouds.f according to the review --- physics/Radiation/radiation_clouds.f | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/physics/Radiation/radiation_clouds.f b/physics/Radiation/radiation_clouds.f index d1518bfcb..ccebdf6cf 100644 --- a/physics/Radiation/radiation_clouds.f +++ b/physics/Radiation/radiation_clouds.f @@ -197,9 +197,10 @@ module module_radiation_clouds real (kind=kind_phys), parameter :: ovcst = 1.0 - 1.0e-8 real (kind=kind_phys), parameter :: reliq_def = 10.0 !< default liq radius to 10 micron - real (kind=kind_phys), parameter :: reice_def = 25.0 !< default ice radius to 50 micron + real (kind=kind_phys), parameter :: reice_def = 50.0 !< default ice radius to 50 micron real (kind=kind_phys), parameter :: rrain_def = 1000.0 !< default rain radius to 1000 micron real (kind=kind_phys), parameter :: rsnow_def = 250.0 !< default snow radius to 250 micron + real (kind=kind_phys), parameter :: creice_def = 25.0 !< default convective ice radius to 25 micron overland real (kind=kind_phys), parameter :: cldssa_def = 0.99 !< default cld single scat albedo real (kind=kind_phys), parameter :: cldasy_def = 0.84 !< default cld asymmetry factor @@ -2164,8 +2165,13 @@ subroutine progcld_thompson_wsm6 & cip(i,k) = max(0.0, (clw(i,k,ntiw) + & snow2ice*clw(i,k,ntsw) + tem2) * & gfac * delp(i,k)) - if(tem2 > 1.e-12 .and. clw(i,k,ntiw) < 1.e-12) - & rei(i,k)=reice_def + if(tem2 > 1.e-12 .and. clw(i,k,ntiw) < 1.e-12) then + if(nint(slmsk(i))==1) then + rei(i,k)=creice_def + else + rei(i,k)=reice_def + endif + endif crp(i,k) = max(0.0, clw(i,k,ntrw) * gfac * delp(i,k)) csp(i,k) = max(0.0, (1.-snow2ice)*clw(i,k,ntsw) * & gfac * delp(i,k)) From 7f1a1d85d89f423edcef7c71775df3a8135e9242 Mon Sep 17 00:00:00 2001 From: rhaesung Date: Tue, 21 Jan 2025 22:43:50 +0000 Subject: [PATCH 3/5] update module_sf_noahmp_glacier.F90 and module_sf_noahmplsm.F90 according to review --- .../SFC_Models/Land/Noahmp/module_sf_noahmp_glacier.F90 | 2 ++ physics/SFC_Models/Land/Noahmp/module_sf_noahmplsm.F90 | 8 +++----- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/physics/SFC_Models/Land/Noahmp/module_sf_noahmp_glacier.F90 b/physics/SFC_Models/Land/Noahmp/module_sf_noahmp_glacier.F90 index fcbe40a70..3906a53d6 100644 --- a/physics/SFC_Models/Land/Noahmp/module_sf_noahmp_glacier.F90 +++ b/physics/SFC_Models/Land/Noahmp/module_sf_noahmp_glacier.F90 @@ -842,12 +842,14 @@ subroutine radiation_glacier (dt ,tg ,sneqvo ,sneqv ,cosz , & !in ! snow albedos: age even when sun is not present + if(cosz > 0) then if(opt_alb == 1) & call snowalb_bats_glacier (nband,cosz,fage,albsnd,albsni) if(opt_alb == 2) then call snowalb_class_glacier(nband,qsnow,dt,alb,albold,albsnd,albsni) albold = alb end if + end if ! zero summed solar fluxes diff --git a/physics/SFC_Models/Land/Noahmp/module_sf_noahmplsm.F90 b/physics/SFC_Models/Land/Noahmp/module_sf_noahmplsm.F90 index 7ab496ddc..80ffdf62c 100644 --- a/physics/SFC_Models/Land/Noahmp/module_sf_noahmplsm.F90 +++ b/physics/SFC_Models/Land/Noahmp/module_sf_noahmplsm.F90 @@ -3024,7 +3024,7 @@ subroutine albedo (parameters,vegtyp ,ist ,ice ,nsoil , & !in call snow_age (parameters,dt,tg,sneqvo,sneqv,tauss,fage) - if(cosz <= 0) goto 100 + if(cosz <= 0) ! weight reflectance/transmittance by lai and sai @@ -3045,6 +3045,8 @@ subroutine albedo (parameters,vegtyp ,ist ,ice ,nsoil , & !in albold = alb end if +100 continue + ! ground surface albedo call groundalb (parameters,nsoil ,nband ,ice ,ist , & !in @@ -9143,10 +9145,6 @@ subroutine groundwater(parameters,nsnow ,nsoil ,dt ,sice ,zsoil , & !in ! recharge rate qin to groundwater -! ka = hk(iwt) -! harmonic average, c.he changed based on gy niu's update -! ka = 2.0*(hk(iwt)*parameters%dksat(iwt)*1.0e3) / (hk(iwt)+parameters%dksat(iwt)*1.0e3) -! tried one suggesteed by gy niu ka = 0.5*(hk(iwt)+parameters%dksat(iwt)*1.0e3) wh_zwt = - zwt * 1.e3 !(mm) From 93edbe1158ae57a63c64a2a40f5677fe7318ed81 Mon Sep 17 00:00:00 2001 From: rhaesung Date: Wed, 22 Jan 2025 18:32:13 +0000 Subject: [PATCH 4/5] update module_sf_noahmplsm.F90 --- physics/SFC_Models/Land/Noahmp/module_sf_noahmplsm.F90 | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/physics/SFC_Models/Land/Noahmp/module_sf_noahmplsm.F90 b/physics/SFC_Models/Land/Noahmp/module_sf_noahmplsm.F90 index 80ffdf62c..d02805f09 100644 --- a/physics/SFC_Models/Land/Noahmp/module_sf_noahmplsm.F90 +++ b/physics/SFC_Models/Land/Noahmp/module_sf_noahmplsm.F90 @@ -3024,7 +3024,7 @@ subroutine albedo (parameters,vegtyp ,ist ,ice ,nsoil , & !in call snow_age (parameters,dt,tg,sneqvo,sneqv,tauss,fage) - if(cosz <= 0) + if(cosz > 0) ! weight reflectance/transmittance by lai and sai @@ -3044,8 +3044,7 @@ subroutine albedo (parameters,vegtyp ,ist ,ice ,nsoil , & !in call snowalb_class (parameters,nband,qsnow,dt,alb,albold,albsnd,albsni,iloc,jloc) albold = alb end if - -100 continue + end if ! ground surface albedo From 3d828f59d86e19656046e6cf5423348bb233e3e5 Mon Sep 17 00:00:00 2001 From: rhaesung Date: Wed, 22 Jan 2025 19:02:32 +0000 Subject: [PATCH 5/5] update module_sf_noahmplsm.F90 --- physics/SFC_Models/Land/Noahmp/module_sf_noahmplsm.F90 | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/physics/SFC_Models/Land/Noahmp/module_sf_noahmplsm.F90 b/physics/SFC_Models/Land/Noahmp/module_sf_noahmplsm.F90 index d02805f09..3f27636ff 100644 --- a/physics/SFC_Models/Land/Noahmp/module_sf_noahmplsm.F90 +++ b/physics/SFC_Models/Land/Noahmp/module_sf_noahmplsm.F90 @@ -3024,7 +3024,7 @@ subroutine albedo (parameters,vegtyp ,ist ,ice ,nsoil , & !in call snow_age (parameters,dt,tg,sneqvo,sneqv,tauss,fage) - if(cosz > 0) + if(cosz > 0) then ! weight reflectance/transmittance by lai and sai @@ -3044,7 +3044,6 @@ subroutine albedo (parameters,vegtyp ,ist ,ice ,nsoil , & !in call snowalb_class (parameters,nband,qsnow,dt,alb,albold,albsnd,albsni,iloc,jloc) albold = alb end if - end if ! ground surface albedo @@ -3085,8 +3084,7 @@ subroutine albedo (parameters,vegtyp ,ist ,ice ,nsoil , & !in wl = ext end if fsun = wl - -100 continue + end if end subroutine albedo