@@ -20,14 +20,15 @@ module GFS_MP_generic_post
20
20
! > @{
21
21
subroutine GFS_MP_generic_post_run ( &
22
22
im , levs , kdt , nrcm , nncl , ntcw , ntrac , imp_physics , imp_physics_gfdl , imp_physics_thompson , imp_physics_nssl , &
23
- imp_physics_mg , imp_physics_fer_hires , cal_pre , cplflx , cplchm , con_g , rainmin , dtf , frain , rainc , &
23
+ imp_physics_mg , imp_physics_fer_hires , cal_pre , cplflx , cplchm , progsigma , con_g , rainmin , dtf , frain , rainc , &
24
24
rain1 , rann , xlat , xlon , gt0 , gq0 , prsl , prsi , phii , tsfc , ice , snow , graupel , save_t , save_q , rain0 , ice0 , snow0 ,&
25
25
graupel0 , del , rain , domr_diag , domzr_diag , domip_diag , doms_diag , tprcp , srflag , sr , cnvprcp , totprcp , totice , &
26
26
totsnw , totgrp , cnvprcpb , totprcpb , toticeb , totsnwb , totgrpb , rain_cpl , rainc_cpl , snow_cpl , pwat , &
27
27
drain_cpl , dsnow_cpl , lsm , lsm_ruc , lsm_noahmp , raincprv , rainncprv , iceprv , snowprv , &
28
28
graupelprv , draincprv , drainncprv , diceprv , dsnowprv , dgraupelprv , dtp , dfi_radar_max_intervals , &
29
- dtend , dtidx , index_of_temperature , index_of_process_mp ,ldiag3d , qdiag3d , lssav , num_dfi_radar , fh_dfi_radar , &
30
- index_of_process_dfi_radar , ix_dfi_radar , dfi_radar_tten , radar_tten_limits , fhour , errmsg , errflg )
29
+ dtend , dtidx , index_of_temperature , index_of_process_mp ,ldiag3d , qdiag3d ,dqdt_qmicro , lssav , num_dfi_radar , &
30
+ fh_dfi_radar ,index_of_process_dfi_radar , ix_dfi_radar , dfi_radar_tten , radar_tten_limits , fhour , prevsq , &
31
+ errmsg , errflg )
31
32
!
32
33
use machine, only: kind_phys
33
34
use calpreciptype_mod, only: calpreciptype
@@ -36,7 +37,7 @@ subroutine GFS_MP_generic_post_run(
36
37
integer , intent (in ) :: im, levs, kdt, nrcm, nncl, ntcw, ntrac, num_dfi_radar, index_of_process_dfi_radar
37
38
integer , intent (in ) :: imp_physics, imp_physics_gfdl, imp_physics_thompson, imp_physics_mg, imp_physics_fer_hires
38
39
integer , intent (in ) :: imp_physics_nssl
39
- logical , intent (in ) :: cal_pre, lssav, ldiag3d, qdiag3d, cplflx, cplchm
40
+ logical , intent (in ) :: cal_pre, lssav, ldiag3d, qdiag3d, cplflx, cplchm, progsigma
40
41
integer , intent (in ) :: index_of_temperature,index_of_process_mp
41
42
42
43
integer :: dfi_radar_max_intervals
@@ -80,7 +81,8 @@ subroutine GFS_MP_generic_post_run(
80
81
real (kind= kind_phys), dimension (:), intent (inout ) :: diceprv
81
82
real (kind= kind_phys), dimension (:), intent (inout ) :: dsnowprv
82
83
real (kind= kind_phys), dimension (:), intent (inout ) :: dgraupelprv
83
-
84
+ real (kind= kind_phys), dimension (:,:), intent (inout ) :: dqdt_qmicro
85
+ real (kind= kind_phys), dimension (:,:), intent (inout ) :: prevsq
84
86
real (kind= kind_phys), intent (in ) :: dtp
85
87
86
88
! CCPP error handling
@@ -352,6 +354,15 @@ subroutine GFS_MP_generic_post_run(
352
354
endif if_tendency_diagnostics
353
355
endif if_save_fields
354
356
357
+ ! If prognostic updraft area fraction is used in saSAS
358
+ if (progsigma)then
359
+ do k= 1 ,levs
360
+ do i= 1 ,im
361
+ dqdt_qmicro(i,k)= (gq0(i,k,1 )- save_q(i,k,1 ))/ dtp
362
+ enddo
363
+ enddo
364
+ endif
365
+
355
366
if (cplflx .or. cplchm) then
356
367
do i = 1 , im
357
368
dsnow_cpl(i)= max (zero, rain(i) * srflag(i))
@@ -387,6 +398,13 @@ subroutine GFS_MP_generic_post_run(
387
398
pwat(i) = pwat(i) * onebg
388
399
enddo
389
400
401
+ if (progsigma)then
402
+ do k = 1 , levs
403
+ do i= 1 , im
404
+ prevsq(i,k) = gq0(i,k,1 )
405
+ enddo
406
+ enddo
407
+ endif
390
408
391
409
end subroutine GFS_MP_generic_post_run
392
410
! > @}
0 commit comments