diff --git a/src/core_atmosphere/Registry.xml b/src/core_atmosphere/Registry.xml
index cfbf76344..9953f7cef 100644
--- a/src/core_atmosphere/Registry.xml
+++ b/src/core_atmosphere/Registry.xml
@@ -601,7 +601,11 @@
-
+
+
+
+
+
@@ -1008,7 +1012,11 @@
-
+
+
+
+
+
@@ -1077,7 +1085,12 @@
-
+
+
+
+
+
+
@@ -1263,6 +1276,11 @@
+
+
+
+
+
@@ -2633,11 +2651,23 @@
+
+
+
+
+
+
+
+
-
+
-
diff --git a/src/core_atmosphere/physics/mpas_atmphys_driver_microphysics.F b/src/core_atmosphere/physics/mpas_atmphys_driver_microphysics.F
index b2e172dad..9f1b9e75c 100644
--- a/src/core_atmosphere/physics/mpas_atmphys_driver_microphysics.F
+++ b/src/core_atmosphere/physics/mpas_atmphys_driver_microphysics.F
@@ -579,7 +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
+ 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
@@ -594,6 +594,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,'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)
call mpas_pool_get_array(diag_physics,'rainnc' ,rainnc )
@@ -604,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:
@@ -649,6 +660,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))
+ 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