From ae5207fe15d3fa1d8b520ef0ffb0cfe119caa83c Mon Sep 17 00:00:00 2001 From: Raffaele Montuoro Date: Mon, 26 Jul 2021 22:25:53 +0000 Subject: [PATCH 1/4] Use 60mb above surface instead of level of free convection (LFC) to compute downdraft contribution to aerosol deep convective transport. Addresses issue #709. Co-authored by Jongil Han (jongil.han@noaa.gov). --- physics/samfdeepcnv.f | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/physics/samfdeepcnv.f b/physics/samfdeepcnv.f index 95e99e7be..a7ea0009b 100644 --- a/physics/samfdeepcnv.f +++ b/physics/samfdeepcnv.f @@ -2683,7 +2683,7 @@ subroutine samfdeepcnv_run (im,km,itc,ntc,cliq,cp,cvap, & if (do_aerosols) & call samfdeepcnv_aerosols(im, im, km, itc, ntc, ntr, delt, - & xlamde, xlamdd, cnvflg, jmin, kb, kmax, kbcon, ktcon, fscav, + & xlamde, xlamdd, cnvflg, jmin, kb, kmax, kd94, ktcon, fscav, & edto, xlamd, xmb, c0t, eta, etad, zi, xlamue, xlamud, delp, & qtr, qaero) From dca87a1c4182d8cac224f578e3b899b1860353df Mon Sep 17 00:00:00 2001 From: Raffaele Montuoro Date: Tue, 27 Jul 2021 20:10:24 +0000 Subject: [PATCH 2/4] Use proper bounds for the aerosol scavenging factor array in the Relaxed Arakawa-Schubert (RAS) scheme. --- physics/rascnv.F90 | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/physics/rascnv.F90 b/physics/rascnv.F90 index 79a5dce40..b23b04e9a 100644 --- a/physics/rascnv.F90 +++ b/physics/rascnv.F90 @@ -402,8 +402,9 @@ subroutine rascnv_run(IM, k, itc, ntc, ntr, dt, dtf & ! fscav_ = -999.0_kp ! By default no scavenging if (itc > 0 .and. ntc > 0) then - if (ntr >= itc + ntc - 3) then - fscav_(itc:ntc) = fscav + n = itc + ntc - 1 + if (n <= ntr + 2) then + fscav_(itc:n) = fscav else errmsg = 'Error in rascnv_run: test ntr >= itc + ntc - 3 FAILED' errflg = 1 From 641a45c06021cbfb0a8d7beef2f0ddfc7b2b4b7b Mon Sep 17 00:00:00 2001 From: Raffaele Montuoro Date: Wed, 28 Jul 2021 15:03:47 +0000 Subject: [PATCH 3/4] Set correct metadata description for input index of first chemistry tracer transported/scavenged by convection. --- physics/rascnv.meta | 6 +++--- physics/samfdeepcnv.meta | 6 +++--- physics/samfshalcnv.meta | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/physics/rascnv.meta b/physics/rascnv.meta index 40ae7d684..0f8a6be8d 100644 --- a/physics/rascnv.meta +++ b/physics/rascnv.meta @@ -211,9 +211,9 @@ intent = in optional = F [itc] - standard_name = number_of_aerosol_tracers_for_convection - long_name = number of aerosol tracers transported/scavenged by convection - units = count + standard_name = index_of_first_chemical_tracer_for_convection + long_name = index of first chemical tracer transported/scavenged by convection + units = index dimensions = () type = integer intent = in diff --git a/physics/samfdeepcnv.meta b/physics/samfdeepcnv.meta index ca7cad4df..a2658ab09 100644 --- a/physics/samfdeepcnv.meta +++ b/physics/samfdeepcnv.meta @@ -62,9 +62,9 @@ intent = in optional = F [itc] - standard_name = number_of_aerosol_tracers_for_convection - long_name = number of aerosol tracers transported/scavenged by convection - units = count + standard_name = index_of_first_chemical_tracer_for_convection + long_name = index of first chemical tracer transported/scavenged by convection + units = index dimensions = () type = integer intent = in diff --git a/physics/samfshalcnv.meta b/physics/samfshalcnv.meta index 8a346e75b..1e5b28537 100644 --- a/physics/samfshalcnv.meta +++ b/physics/samfshalcnv.meta @@ -62,9 +62,9 @@ intent = in optional = F [itc] - standard_name = number_of_aerosol_tracers_for_convection - long_name = number of aerosol tracers transported/scavenged by convection - units = count + standard_name = index_of_first_chemical_tracer_for_convection + long_name = index of first chemical tracer transported/scavenged by convection + units = index dimensions = () type = integer intent = in From 3439abe95f8ca8d3549991a468a139145244e2cf Mon Sep 17 00:00:00 2001 From: Raffaele Montuoro Date: Wed, 28 Jul 2021 16:17:44 +0000 Subject: [PATCH 4/4] Rename input array for consistency with caller subroutine. --- physics/samfaerosols.F | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/physics/samfaerosols.F b/physics/samfaerosols.F index 87a2277dd..66faf1fb9 100644 --- a/physics/samfaerosols.F +++ b/physics/samfaerosols.F @@ -9,7 +9,7 @@ module samfcnv_aerosols contains subroutine samfdeepcnv_aerosols(im, ix, km, itc, ntc, ntr, delt, - & xlamde, xlamdd, cnvflg, jmin, kb, kmax, kbcon, ktcon, fscav, + & xlamde, xlamdd, cnvflg, jmin, kb, kmax, kd94, ktcon, fscav, & edto, xlamd, xmb, c0t, eta, etad, zi, xlamue, xlamud, delp, & qtr, qaero) @@ -25,7 +25,7 @@ subroutine samfdeepcnv_aerosols(im, ix, km, itc, ntc, ntr, delt, & xlamde, xlamdd logical, dimension(im), intent(in) :: cnvflg integer, dimension(im), intent(in) :: jmin, - & kb, kmax, kbcon, ktcon + & kb, kmax, kd94, ktcon real(kind=kind_phys), dimension(im), intent(in) :: edto, & xlamd, xmb real(kind=kind_phys), dimension(ntc), intent(in) :: fscav @@ -195,7 +195,7 @@ subroutine samfdeepcnv_aerosols(im, ix, km, itc, ntc, ntr, delt, do i = 1, im if (cnvflg(i) .and. (k < jmin(i))) then dz = zi(i,kp1) - zi(i,k) - if (k >= kbcon(i)) then + if (k >= kd94(i)) then tem = xlamde * dz tem1 = half * xlamdd * dz else @@ -264,7 +264,7 @@ subroutine samfdeepcnv_aerosols(im, ix, km, itc, ntc, ntr, delt, tem = half * (xlamue(i,k) + xlamue(i,kk)) tem1 = half * (xlamud(i,k) + xlamud(i,kk)) - if (k <= kbcon(i)) then + if (k <= kd94(i)) then ptem = xlamde ptem1 = xlamd(i) + xlamdd else