From e8a2fe64696dfa0177bc0b0a847d734bb22ea72b Mon Sep 17 00:00:00 2001 From: msgacita Date: Wed, 5 Aug 2026 16:49:53 +0000 Subject: [PATCH 1/2] Adding vertically integrated microphysical variables --- src/core_atmosphere/Registry.xml | 27 ++++++++++++++++++- .../mpas_atmphys_driver_microphysics.F | 16 +++++++++++ 2 files changed, 42 insertions(+), 1 deletion(-) diff --git a/src/core_atmosphere/Registry.xml b/src/core_atmosphere/Registry.xml index cfbf76344..6c50482c6 100644 --- a/src/core_atmosphere/Registry.xml +++ b/src/core_atmosphere/Registry.xml @@ -602,6 +602,10 @@ + + + + @@ -1009,6 +1013,10 @@ + + + + @@ -1078,6 +1086,11 @@ + + + + + @@ -2637,7 +2650,19 @@ - + + + + + + + + diff --git a/src/core_atmosphere/physics/mpas_atmphys_driver_microphysics.F b/src/core_atmosphere/physics/mpas_atmphys_driver_microphysics.F index b2e172dad..e1b2d2b0a 100644 --- a/src/core_atmosphere/physics/mpas_atmphys_driver_microphysics.F +++ b/src/core_atmosphere/physics/mpas_atmphys_driver_microphysics.F @@ -579,6 +579,7 @@ subroutine precip_to_MPAS(configs,diag_physics,its,ite) integer,dimension(:),pointer:: i_rainnc real(kind=RKIND),pointer:: config_bucket_rainnc +! real(kind=RKIND),dimension(:),pointer:: precipw, precipci,precipcloud,precipice,precipgraupel,precipsnow real(kind=RKIND),dimension(:),pointer:: precipw real(kind=RKIND),dimension(:),pointer:: graupelnc,rainnc,snownc real(kind=RKIND),dimension(:),pointer:: graupelncv,rainncv,snowncv,sr @@ -594,6 +595,12 @@ subroutine precip_to_MPAS(configs,diag_physics,its,ite) call mpas_pool_get_array(diag_physics,'i_rainnc' ,i_rainnc ) call mpas_pool_get_array(diag_physics,'precipw' ,precipw ) + call mpas_pool_get_array(diag_physics,'precipci' ,precipci ) + call mpas_pool_get_array(diag_physics,'precipcloud' ,precipcloud ) + call mpas_pool_get_array(diag_physics,'precipice' ,precipice ) + call mpas_pool_get_array(diag_physics,'precipgraupel' ,precipgraupel ) + call mpas_pool_get_array(diag_physics,'precipsnow' ,precipsnow ) + call mpas_pool_get_array(diag_physics,'graupelnc' ,graupelnc ) call mpas_pool_get_array(diag_physics,'graupelncv',graupelncv) call mpas_pool_get_array(diag_physics,'rainnc' ,rainnc ) @@ -649,6 +656,15 @@ subroutine precip_to_MPAS(configs,diag_physics,its,ite) !accumulated precipitation: snownc(i) = snownc(i) + snowncv(i) graupelnc(i) = graupelnc(i) + graupelncv(i) + + ! do k = kts,kte + ! rho_a = rho_p(i,k,j) / (1._RKIND + qv_p(i,k,j)) + ! precipci(i) = precipci(i) + (qc_p(i,k,j) + qi_p(i,k,j)) * rho_a * dz_p(i,k,j) + ! precipcloud(i) = precipcloud(i) + qc_p(i,k,j) * rho_a * dz_p(i,k,j) + ! precipice(i) = precipice(i) + qi_p(i,k,j) * rho_a * dz_p(i,k,j) + ! precipgraupel(i) = precipgraupel(i) + qg_p(i,k,j) * rho_a * dz_p(i,k,j) + ! precipsnow(i) = precipsnow(i) + qs_p(i,k,j) * rho_a * dz_p(i,k,j) + ! enddo enddo enddo From 8f5b6cdafedf721f83f55fcd9ca040be549e451b Mon Sep 17 00:00:00 2001 From: msgacita Date: Tue, 18 Aug 2026 18:54:30 +0000 Subject: [PATCH 2/2] Rename and initialize integrated microphysical variables With updates and corrections from Lianet H. Pardo --- src/core_atmosphere/Registry.xml | 57 ++++++++++--------- .../mpas_atmphys_driver_microphysics.F | 34 ++++++----- 2 files changed, 50 insertions(+), 41 deletions(-) diff --git a/src/core_atmosphere/Registry.xml b/src/core_atmosphere/Registry.xml index 6c50482c6..9953f7cef 100644 --- a/src/core_atmosphere/Registry.xml +++ b/src/core_atmosphere/Registry.xml @@ -601,11 +601,11 @@ - - - - - + + + + + @@ -1012,11 +1012,11 @@ - - - - - + + + + + @@ -1085,11 +1085,11 @@ - - - - - + + + + + @@ -1276,6 +1276,11 @@ + + + + + @@ -2646,21 +2651,21 @@ + + - + - + - + - - - + diff --git a/src/core_atmosphere/physics/mpas_atmphys_driver_microphysics.F b/src/core_atmosphere/physics/mpas_atmphys_driver_microphysics.F index e1b2d2b0a..9f1b9e75c 100644 --- a/src/core_atmosphere/physics/mpas_atmphys_driver_microphysics.F +++ b/src/core_atmosphere/physics/mpas_atmphys_driver_microphysics.F @@ -579,8 +579,7 @@ subroutine precip_to_MPAS(configs,diag_physics,its,ite) integer,dimension(:),pointer:: i_rainnc real(kind=RKIND),pointer:: config_bucket_rainnc -! real(kind=RKIND),dimension(:),pointer:: precipw, precipci,precipcloud,precipice,precipgraupel,precipsnow - real(kind=RKIND),dimension(:),pointer:: precipw + real(kind=RKIND),dimension(:),pointer:: precipw,precipc,precipr,precipi,precipg,precips real(kind=RKIND),dimension(:),pointer:: graupelnc,rainnc,snownc real(kind=RKIND),dimension(:),pointer:: graupelncv,rainncv,snowncv,sr @@ -595,11 +594,11 @@ subroutine precip_to_MPAS(configs,diag_physics,its,ite) call mpas_pool_get_array(diag_physics,'i_rainnc' ,i_rainnc ) call mpas_pool_get_array(diag_physics,'precipw' ,precipw ) - call mpas_pool_get_array(diag_physics,'precipci' ,precipci ) - call mpas_pool_get_array(diag_physics,'precipcloud' ,precipcloud ) - call mpas_pool_get_array(diag_physics,'precipice' ,precipice ) - call mpas_pool_get_array(diag_physics,'precipgraupel' ,precipgraupel ) - call mpas_pool_get_array(diag_physics,'precipsnow' ,precipsnow ) + call mpas_pool_get_array(diag_physics,'precipc' ,precipc ) + call mpas_pool_get_array(diag_physics,'precipr' ,precipr ) + call mpas_pool_get_array(diag_physics,'precipi' ,precipi ) + call mpas_pool_get_array(diag_physics,'precipg' ,precipg ) + call mpas_pool_get_array(diag_physics,'precips' ,precips ) call mpas_pool_get_array(diag_physics,'graupelnc' ,graupelnc ) call mpas_pool_get_array(diag_physics,'graupelncv',graupelncv) @@ -611,6 +610,11 @@ subroutine precip_to_MPAS(configs,diag_physics,its,ite) do i = its,ite precipw(i) = 0._RKIND + precipc(i) = 0._RKIND + precipr(i) = 0._RKIND + precipi(i) = 0._RKIND + precipg(i) = 0._RKIND + precips(i) = 0._RKIND enddo !variables common to all cloud microphysics schemes: @@ -657,14 +661,14 @@ subroutine precip_to_MPAS(configs,diag_physics,its,ite) snownc(i) = snownc(i) + snowncv(i) graupelnc(i) = graupelnc(i) + graupelncv(i) - ! do k = kts,kte - ! rho_a = rho_p(i,k,j) / (1._RKIND + qv_p(i,k,j)) - ! precipci(i) = precipci(i) + (qc_p(i,k,j) + qi_p(i,k,j)) * rho_a * dz_p(i,k,j) - ! precipcloud(i) = precipcloud(i) + qc_p(i,k,j) * rho_a * dz_p(i,k,j) - ! precipice(i) = precipice(i) + qi_p(i,k,j) * rho_a * dz_p(i,k,j) - ! precipgraupel(i) = precipgraupel(i) + qg_p(i,k,j) * rho_a * dz_p(i,k,j) - ! precipsnow(i) = precipsnow(i) + qs_p(i,k,j) * rho_a * dz_p(i,k,j) - ! enddo + do k = kts,kte + rho_a = rho_p(i,k,j) / (1._RKIND + qv_p(i,k,j)) + precipc(i) = precipc(i) + qc_p(i,k,j) * rho_a * dz_p(i,k,j) + precipr(i) = precipr(i) + qr_p(i,k,j) * rho_a * dz_p(i,k,j) + precipi(i) = precipi(i) + qi_p(i,k,j) * rho_a * dz_p(i,k,j) + precipg(i) = precipg(i) + qg_p(i,k,j) * rho_a * dz_p(i,k,j) + precips(i) = precips(i) + qs_p(i,k,j) * rho_a * dz_p(i,k,j) + enddo enddo enddo