Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
1757d2a
MP38 Thompson 2-mom graup/hail
mefrediani Jan 31, 2022
6387d35
dummy
mefrediani Feb 8, 2022
92a1ae2
added argument wetscav_on to thompsongh call in module_microphysics_d…
mefrediani Feb 16, 2022
0c99da3
separated CASE and CALL to THOMPSONGH in module_diagnostics_driver
mefrediani Feb 16, 2022
e0408c9
separated CASE and CALL to THOMPSONGH in module_diagnostics_driver
mefrediani Feb 16, 2022
900e169
Add link to CAMtr_volume_mixing_ratio.SSP245 in run directory (#1665)
weiwangncar Feb 3, 2022
2aaf583
Fix a invalid memory reference error identified by gfortran (#1671)
weiwangncar Feb 10, 2022
1c04c73
Update NoahMP to fix an openMP failure (#1670)
weiwangncar Feb 10, 2022
5cb2287
to trigger a reg test
weiwangncar Mar 4, 2022
2a1d419
timestamps from module_timing
mefrediani Mar 10, 2022
febd747
renamed table qr_acr_qgV3 to qr_acr_qgV4.dat
mefrediani Apr 21, 2022
b167c62
Greg's code revisions
mefrediani Apr 21, 2022
5466c48
Greg's code revisions
mefrediani Apr 22, 2022
841aadc
Greg's code revisions
mefrediani Apr 22, 2022
393cd47
separate mp 28 and 38 tables: NRHG, idx_bgmax, table name
mefrediani Apr 25, 2022
8fe2a9c
Merge branch 'develop' into mp_phys38
mefrediani Apr 26, 2022
715831a
MP38 Thompson 2-mom graup/hail - merge with develop 4.4
mefrediani Jan 31, 2022
2e0ca37
timestamps from module_timing
mefrediani Mar 10, 2022
23cc13a
Greg's code revisions
mefrediani Apr 21, 2022
5d69e1f
separate mp 28 and 38 tables: fixes
mefrediani Apr 26, 2022
f8ba29b
separate mp 28 and 38 tables: fixes
mefrediani Apr 26, 2022
83c80d2
mp38 fixes - code lost during v4.4 merge
mefrediani Apr 27, 2022
f7d6ed7
mp38 fixes - code lost during v4.4 merge
mefrediani Apr 27, 2022
7d16144
mp38 fixes - cleaned TJ variables
mefrediani Apr 27, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions Registry/Registry.EM_COMMON
Original file line number Diff line number Diff line change
Expand Up @@ -2989,6 +2989,7 @@ package nssl_2momg mp_physics==22 - moist:qv,qc
package wsm7scheme mp_physics==24 - moist:qv,qc,qr,qi,qs,qg,qh;state:re_cloud,re_ice,re_snow
package wdm7scheme mp_physics==26 - moist:qv,qc,qr,qi,qs,qg,qh;scalar:qnn,qnc,qnr;state:re_cloud,re_ice,re_snow
package thompsonaero mp_physics==28 - moist:qv,qc,qr,qi,qs,qg;scalar:qni,qnr,qnc,qnwfa,qnifa,qnbca;state:re_cloud,re_ice,re_snow,qnwfa2d,qnifa2d,taod5503d,taod5502d
package thompsongh mp_physics==38 - moist:qv,qc,qr,qi,qs,qg;scalar:qni,qnr,qnc,qng,qvolg,qnwfa,qnifa,qnbca;state:re_cloud,re_ice,re_snow,qnwfa2d,qnifa2d,taod5503d,taod5502d
package p3_1category mp_physics==50 - moist:qv,qc,qr,qi;scalar:qni,qnr,qir,qib;state:re_cloud,re_ice,vmi3d,rhopo3d,di3d,refl_10cm,th_old,qv_old
package p3_1category_nc mp_physics==51 - moist:qv,qc,qr,qi;scalar:qnc,qni,qnr,qir,qib;state:re_cloud,re_ice,vmi3d,rhopo3d,di3d,refl_10cm,th_old,qv_old
package p3_2category mp_physics==52 - moist:qv,qc,qr,qi,qi2;scalar:qnc,qni,qnr,qir,qib,qni2,qir2,qib2;state:re_cloud,re_ice,vmi3d,rhopo3d,di3d,vmi3d_2,rhopo3d_2,di3d_2,refl_10cm,th_old,qv_old
Expand Down Expand Up @@ -3030,6 +3031,7 @@ package nssl_1momlfo_dfi mp_physics_dfi==21 - dfi_moist:dfi
package wsm7scheme_dfi mp_physics_dfi==24 - dfi_moist:dfi_qv,dfi_qc,dfi_qr,dfi_qi,dfi_qs,dfi_qg,dfi_qh;state:dfi_re_cloud,dfi_re_ice,dfi_re_snow
package wdm7scheme_dfi mp_physics_dfi==26 - dfi_moist:dfi_qv,dfi_qc,dfi_qr,dfi_qi,dfi_qs,dfi_qg,dfi_qh;dfi_scalar:dfi_qnn,dfi_qnc,dfi_qnr;state:dfi_re_cloud,dfi_re_ice,dfi_re_snow
package thompsonaero_dfi mp_physics_dfi==28 - dfi_moist:dfi_qv,dfi_qc,dfi_qr,dfi_qi,dfi_qs,dfi_qg;dfi_scalar:dfi_qni,dfi_qnr,dfi_qnc,dfi_qnwfa,dfi_qnifa,dfi_qnbca;state:dfi_re_cloud,dfi_re_ice,dfi_re_snow
package thompsongh_dfi mp_physics_dfi==38 - dfi_moist:dfi_qv,dfi_qc,dfi_qr,dfi_qi,dfi_qs,dfi_qg;dfi_scalar:dfi_qni,dfi_qnr,dfi_qng,dfi_qvolg,dfi_qnc,dfi_qnwfa,dfi_qnifa,dfi_qnbca;state:dfi_re_cloud,dfi_re_ice,dfi_re_snow
package p3_1category_dfi mp_physics_dfi==50 - dfi_moist:dfi_qv,dfi_qc,dfi_qr,dfi_qi;dfi_scalar:dfi_qni,dfi_qnr,dfi_qir,dfi_qib;state:dfi_re_cloud,dfi_re_ice
package p3_1category_nc_dfi mp_physics_dfi==51 - dfi_moist:dfi_qv,dfi_qc,dfi_qr,dfi_qi;dfi_scalar:dfi_qnc,dfi_qni,dfi_qnr,dfi_qir,dfi_qib;state:dfi_re_cloud,dfi_re_ice
package p3_2category_dfi mp_physics_dfi==52 - dfi_moist:dfi_qv,dfi_qc,dfi_qr,dfi_qi,dfi_qi2;dfi_scalar:dfi_qnc,dfi_qni,dfi_qnr,dfi_qir,dfi_qib,dfi_qni2,dfi_qir2,dfi_qib2;state:dfi_re_cloud,dfi_re_ice
Expand Down
112 changes: 96 additions & 16 deletions phys/module_diag_nwp.F
Original file line number Diff line number Diff line change
Expand Up @@ -38,19 +38,20 @@ SUBROUTINE diagnostic_output_nwp( &
,grpl_max,grpl_colint,refd_max,refl_10cm &
,hail_maxk1,hail_max2d &
,qg_curr &
,ng_curr,qh_curr,nh_curr,qr_curr,nr_curr & ! Optional (gthompsn)
,ng_curr,qvolg_curr,qh_curr,nh_curr,qr_curr,nr_curr & ! Optional (gthompsn)
,rho,ph,phb,g &
,max_time_step,adaptive_ts &
)
!----------------------------------------------------------------------

USE module_state_description, ONLY : &
KESSLERSCHEME, LINSCHEME, SBU_YLINSCHEME, WSM3SCHEME, WSM5SCHEME, &
WSM6SCHEME, ETAMPNEW, THOMPSON, THOMPSONAERO, &
WSM6SCHEME, ETAMPNEW, THOMPSON, THOMPSONAERO, THOMPSONGH, &
MORR_TWO_MOMENT, GSFCGCESCHEME, WDM5SCHEME, WDM6SCHEME, &
NSSL_2MOM, NSSL_2MOMG, NSSL_2MOMCCN, NSSL_1MOM, NSSL_1MOMLFO, &
MILBRANDT2MOM , CAMMGMPSCHEME, FULL_KHAIN_LYNN, MORR_TM_AERO, &
FAST_KHAIN_LYNN_SHPUND !,MILBRANDT3MOM, NSSL_3MOM
USE MODULE_MP_THOMPSON, ONLY: idx_bg1

IMPLICIT NONE
!======================================================================
Expand Down Expand Up @@ -159,7 +160,7 @@ SUBROUTINE diagnostic_output_nwp( &
,ph,phb

REAL, DIMENSION(ims:ime,kms:kme,jms:jme), OPTIONAL, INTENT(IN) :: &
ng_curr, qh_curr, nh_curr &
ng_curr, qvolg_curr, qh_curr, nh_curr &
,qr_curr, nr_curr

REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN) :: &
Expand All @@ -177,7 +178,10 @@ SUBROUTINE diagnostic_output_nwp( &
,hail_maxk1,hail_max2d &
,refd_max

REAL, DIMENSION(ims:ime,kms:kme,jms:jme):: temp_qg, temp_ng
REAL, DIMENSION(ims:ime,kms:kme,jms:jme):: &
temp_qg, temp_ng, temp_qb &
,temp_qr, temp_nr
INTEGER, DIMENSION(ims:ime,kms:kme,jms:jme):: idx_bg

INTEGER :: idump

Expand All @@ -191,12 +195,13 @@ SUBROUTINE diagnostic_output_nwp( &
INTEGER, PARAMETER:: ngbins=50
DOUBLE PRECISION, DIMENSION(ngbins+1):: xxDx
DOUBLE PRECISION, DIMENSION(ngbins):: xxDg, xdtg
REAL:: xrho_g, xam_g, xbm_g, xmu_g
REAL:: xrho_g, xam_g, xxam_g, xbm_g, xmu_g
REAL, DIMENSION(9), PARAMETER:: xrho_gh = (/ 50,100,200,300,400,500,600,700,800 /)
REAL, DIMENSION(3):: cge, cgg
DOUBLE PRECISION:: f_d, sum_ng, sum_t, lamg, ilamg, N0_g, lam_exp, N0exp
DOUBLE PRECISION:: lamr, N0min
REAL:: xslw1, ygra1, zans1
INTEGER:: ng, n
REAL:: mvd_r, xslw1, ygra1, zans1
INTEGER:: ng, n, k_0

REAL :: time_from_output
INTEGER :: max_time_step
Expand Down Expand Up @@ -455,6 +460,39 @@ SUBROUTINE diagnostic_output_nwp( &
! !$OMP END PARALLEL DO
ENDIF

IF (PRESENT(qvolg_curr)) THEN
WRITE(outstring,*) 'GT-Debug, this mp scheme, ', mphysics_opt, ' has graupel volume mixing ratio'
CALL wrf_debug (150, TRIM(outstring))
! !$OMP PARALLEL DO &
! !$OMP PRIVATE ( ij )
DO ij = 1 , num_tiles
DO j=j_start(ij),j_end(ij)
DO k=kms,kme-1
DO i=i_start(ij),i_end(ij)
temp_qb(i,k,j) = MAX(temp_qg(i,k,j)/rho(i,k,j)/xrho_gh(9), qvolg_curr(i,k,j))
temp_qb(i,k,j) = MIN(temp_qg(i,k,j)/rho(i,k,j)/xrho_gh(1), temp_qb(i,k,j))
ENDDO
ENDDO
ENDDO
ENDDO
! !$OMP END PARALLEL DO
ELSE
! !$OMP PARALLEL DO &
! !$OMP PRIVATE ( ij )
DO ij = 1 , num_tiles
DO j=j_start(ij),j_end(ij)
DO k=kms,kme-1
DO i=i_start(ij),i_end(ij)
idx_bg(i,k,j) = idx_bg1
temp_qb(i,k,j) = temp_qg(i,k,j)/rho(i,k,j)/xrho_gh(idx_bg(i,k,j))
ENDDO
ENDDO
ENDDO
ENDDO
! !$OMP END PARALLEL DO
ENDIF


! Calculate the max hail size from graupel/hail parameters in microphysics scheme (gthompsn 12Mar2015)
! First, we do know multiple schemes have assumed inverse-exponential distribution with constant
! intercept parameter and particle density. Please leave next 4 settings alone for common
Expand Down Expand Up @@ -599,20 +637,56 @@ SUBROUTINE diagnostic_output_nwp( &
cgg(n) = WGAMMA(cge(n))
enddo

if (.not.(PRESENT(ng_curr))) then
! !$OMP PARALLEL DO &
! !$OMP PRIVATE ( ij )
DO ij = 1 , num_tiles
DO j=j_start(ij),j_end(ij)
DO k=kms,kme-1
DO i=i_start(ij),i_end(ij)
temp_qr(i,k,j) = MAX(1.E-10, qr_curr(i,k,j)*rho(i,k,j))
temp_nr(i,k,j) = MAX(1.E-8, nr_curr(i,k,j)*rho(i,k,j))
ENDDO
ENDDO
ENDDO
ENDDO
! !$OMP END PARALLEL DO

! !$OMP PARALLEL DO &
! !$OMP PRIVATE ( ij )
DO ij = 1 , num_tiles
DO j=j_start(ij),j_end(ij)
DO i=i_start(ij),i_end(ij)
DO k=kme-1, kms, -1
if (temp_qg(i,k,j) .LT. 1.E-6) CYCLE
zans1 = (3.0 + 2./7. * (ALOG10(temp_qg(i,k,j))+8.))
ygra1 = alog10(max(1.E-9, temp_qg(i,k,j)))
zans1 = 3.0 + 2./7.*(ygra1+8.)
zans1 = MAX(2., MIN(zans1, 6.))
N0exp = 10.**zans1
N0exp = 10.**(zans1)
lam_exp = (N0exp*xam_g*cgg(1)/temp_qg(i,k,j))**(1./cge(1))
lamg = lam_exp * (cgg(3)/cgg(2)/cgg(1))**(1./xbm_g)
N0_g = N0exp/(cgg(2)*lam_exp) * lamg**cge(2)
temp_ng(i,k,j) = N0_g*cgg(2)*lamg**(-cge(2))
temp_ng(i,k,j) = MAX(1.E-8, N0_g*cgg(2)*lamg**(-cge(2)))
ENDDO
ENDDO
ENDDO
ENDDO
! !$OMP END PARALLEL DO

endif


CASE (THOMPSONGH)

scheme_has_graupel = .true.

! !$OMP PARALLEL DO &
! !$OMP PRIVATE ( ij )
DO ij = 1 , num_tiles
DO j=j_start(ij),j_end(ij)
DO k=kme-1, kms, -1
DO i=i_start(ij),i_end(ij)
idx_bg(i,k,j) = NINT(temp_qg(i,k,j)/temp_qb(i,k,j) *0.01)+1
idx_bg(i,k,j) = MAX(1, MIN(idx_bg(i,k,j), 9))
ENDDO
ENDDO
ENDDO
Expand Down Expand Up @@ -724,7 +798,13 @@ SUBROUTINE diagnostic_output_nwp( &
DO k=kms,kme-1
DO i=i_start(ij),i_end(ij)
if (temp_qg(i,k,j) .LT. 1.E-6) CYCLE
lamg = (xam_g*cgg(3)/cgg(2)*temp_ng(i,k,j)/temp_qg(i,k,j))**(1./xbm_g)
IF (PRESENT(qvolg_curr)) THEN
xxam_g = 3.1415926536/6.0*xrho_gh(idx_bg(i,k,j))
IF (xrho_gh(idx_bg(i,k,j)).lt.350.0) CYCLE
ELSE
xxam_g = xam_g
ENDIF
lamg = (xxam_g*cgg(3)/cgg(2)*temp_ng(i,k,j)/temp_qg(i,k,j))**(1./xbm_g)
N0_g = temp_ng(i,k,j)/cgg(2)*lamg**cge(2)
sum_ng = 0.0d0
sum_t = 0.0d0
Expand All @@ -744,10 +824,10 @@ SUBROUTINE diagnostic_output_nwp( &
else
hail_max = 1.E-4
endif
if (hail_max .gt. 1E-2) then
WRITE(outstring,*) 'GT-Debug-Hail, ', hail_max*1000.
CALL wrf_debug (350, TRIM(outstring))
endif
! if (hail_max .gt. 1E-2) then
! WRITE(outstring,*) 'GT-Debug-Hail, ', hail_max*1000.
! CALL wrf_debug (350, TRIM(outstring))
! endif
hail_max_sp = hail_max
if (k.eq.kms) then
hail_maxk1(i,j) = MAX(hail_maxk1(i,j), hail_max_sp)
Expand Down
55 changes: 53 additions & 2 deletions phys/module_diagnostics_driver.F
Original file line number Diff line number Diff line change
Expand Up @@ -34,10 +34,10 @@ SUBROUTINE diagnostics_driver ( grid, config_flags, &
DO_SOLAR_OUTPUT, &
PARAM_FIRST_SCALAR, &
P_QG, P_QH, P_QV, P_QC, P_QI, P_QS, &
P_QNG, P_QH, P_QNH, P_QR, P_QNR, &
P_QNG, P_QH, P_QNH, P_QR, P_QNR, P_QVOLG, &
F_QV, F_QC, F_QI, F_QS, &
KESSLERSCHEME, LINSCHEME, SBU_YLINSCHEME, WSM3SCHEME, WSM5SCHEME, &
WSM6SCHEME, ETAMPNEW, THOMPSON, THOMPSONAERO, &
WSM6SCHEME, ETAMPNEW, THOMPSON, THOMPSONAERO, THOMPSONGH, &
MORR_TWO_MOMENT, GSFCGCESCHEME, WDM5SCHEME, WDM6SCHEME, &
NSSL_2MOM, NSSL_2MOMCCN, NSSL_1MOM, NSSL_1MOMLFO, &
MILBRANDT2MOM , CAMMGMPSCHEME, FAST_KHAIN_LYNN_SHPUND, FULL_KHAIN_LYNN, &
Expand Down Expand Up @@ -494,6 +494,57 @@ SUBROUTINE diagnostics_driver ( grid, config_flags, &
,QR_CURR=moist(ims,kms,jms,P_QR) & ! gthompsn
,NR_CURR=scalar(ims,kms,jms,P_QNR) & ! gthompsn
,RHO=grid%rho,PH=grid%ph_2,PHB=grid%phb,G=g &
! Dimension arguments
,IDS=ids,IDE=ide, JDS=jds,JDE=jde, KDS=kds,KDE=kde &
,IMS=ims,IME=ime, JMS=jms,JME=jme, KMS=kms,KME=kme &
,IPS=ips,IPE=ipe, JPS=jps,JPE=jpe, KPS=kps,KPE=kpe &
,I_START=grid%i_start,I_END=min(grid%i_end, ide-1) &
,J_START=grid%j_start,J_END=min(grid%j_end, jde-1) &
,KTS=k_start, KTE=min(k_end,kde-1) &
,NUM_TILES=grid%num_tiles &
,MAX_TIME_STEP=grid%max_time_step &
,ADAPTIVE_TS=config_flags%use_adaptive_time_step &
)

CASE (THOMPSONGH)

CALL diagnostic_output_nwp( &
U=grid%u_2 ,V=grid%v_2 &
,TEMP=grid%t_phy ,P8W=p8w &
,DT=grid%dt ,SBW=config_flags%spec_bdy_width &
,XTIME=grid%xtime &
! Selection flag
,MPHYSICS_OPT=config_flags%mp_physics & ! gthompsn
,GSFCGCE_HAIL=config_flags%gsfcgce_hail & ! gthompsn
,GSFCGCE_2ICE=config_flags%gsfcgce_2ice & ! gthompsn
,MPUSE_HAIL=config_flags%hail_opt & ! gthompsn
,NSSL_ALPHAH=config_flags%nssl_alphah & ! gthompsn
,NSSL_ALPHAHL=config_flags%nssl_alphahl & ! gthompsn
,NSSL_CNOH=config_flags%nssl_cnoh & ! gthompsn
,NSSL_CNOHL=config_flags%nssl_cnohl & ! gthompsn
,NSSL_RHO_QH=config_flags%nssl_rho_qh & ! gthompsn
,NSSL_RHO_QHL=config_flags%nssl_rho_qhl & ! gthompsn
,CURR_SECS2=curr_secs2 &
,NWP_DIAGNOSTICS=config_flags%nwp_diagnostics &
,DIAGFLAG=diag_flag &
,HISTORY_INTERVAL=grid%history_interval &
,ITIMESTEP=grid%itimestep &
,U10=grid%u10,V10=grid%v10,W=grid%w_2 &
,WSPD10MAX=grid%wspd10max &
,UP_HELI_MAX=grid%up_heli_max &
,W_UP_MAX=grid%w_up_max,W_DN_MAX=grid%w_dn_max &
,ZNW=grid%znw,W_COLMEAN=grid%w_colmean &
,NUMCOLPTS=grid%numcolpts,W_MEAN=grid%w_mean &
,GRPL_MAX=grid%grpl_max,GRPL_COLINT=grid%grpl_colint &
,REFD_MAX=grid%refd_max &
,refl_10cm=grid%refl_10cm &
,HAIL_MAXK1=grid%hail_maxk1,HAIL_MAX2D=grid%hail_max2d & ! gthompsn
,QG_CURR=moist(ims,kms,jms,P_QG) &
,QR_CURR=moist(ims,kms,jms,P_QR) & ! gthompsn
,NR_CURR=scalar(ims,kms,jms,P_QNR) & ! gthompsn
,NG_CURR=scalar(ims,kms,jms,P_QNG) & ! THOMPSONGH
,QVOLG_CURR=scalar(ims,kms,jms,P_QVOLG) & ! THOMPSONGH
,RHO=grid%rho,PH=grid%ph_2,PHB=grid%phb,G=g &
! Dimension arguments
,IDS=ids,IDE=ide, JDS=jds,JDE=jde, KDS=kds,KDE=kde &
,IMS=ims,IME=ime, JMS=jms,JME=jme, KMS=kms,KME=kme &
Expand Down
Loading