Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
c40c033
* Adds flag to control freezing rain output from TEMPO, config_tempo…
AndersJensen-NOAA Nov 12, 2024
5ce6652
Adds freezing rain pointer, frainnc_p to variable list
AndersJensen-NOAA Nov 12, 2024
9ff0465
Bugfix for freezing rain pointer: removed trailing comma and ampersan…
AndersJensen-NOAA Nov 12, 2024
5eec311
* Adds allocation/deallocation controls for freezing rain pointer (f…
AndersJensen-NOAA Nov 12, 2024
f5b6f00
Separate case options for TEMPO and NSSL microphysics for precip_to_M…
AndersJensen-NOAA Nov 12, 2024
3042ae7
Initialization and calculation of freezing rain (frainnc) for diag_ph…
AndersJensen-NOAA Nov 12, 2024
6c89faa
Update pointer to TEMPO for freezing rain feature
AndersJensen-NOAA Nov 12, 2024
c8bc8bb
Merge branch 'gsl/develop' into feature/freezing_rain
AndersJensen-NOAA Jan 27, 2025
6c7a6bf
Update TEMPO pointer
AndersJensen-NOAA Jan 27, 2025
3bb9edb
turn on TEMPO freezing rain flag by default
AndersJensen-NOAA Jan 28, 2025
f6b150e
Merge branch 'gsl/develop' into feature/freezing_rain
AndersJensen-NOAA Jan 28, 2025
da7c54e
Update TEMPO pointer
AndersJensen-NOAA Jan 28, 2025
075213d
clean up freezing rain code and remove registry flag
AndersJensen-NOAA Feb 7, 2025
40ef3f3
Merge branch 'gsl/develop' into feature/freezing_rain
AndersJensen-NOAA Feb 7, 2025
3474f5f
Update TEMPO pointer
AndersJensen-NOAA Feb 21, 2025
7c209c7
Merge branch 'gsl/develop' into feature/freezing_rain
AndersJensen-NOAA Feb 21, 2025
7e96b79
update pointer to TEMPO
AndersJensen-NOAA Feb 21, 2025
17bf1d0
Update version and add TEMPO table build executable to gitignore
AndersJensen-NOAA Feb 21, 2025
925a290
Initial 1-moment hail commit
AndersJensen-NOAA Feb 21, 2025
b2692be
Merge branch 'feature/freezing_rain' into feature/hail
AndersJensen-NOAA Feb 21, 2025
7ef8a2e
Pointing to initial working version of 1-moment hail
AndersJensen-NOAA Mar 14, 2025
6010acc
Add control flag for TEMPO with true hail
AndersJensen-NOAA Mar 15, 2025
1719934
Connect hail size to MPAS output
AndersJensen-NOAA Mar 15, 2025
9ee2893
Merge branch 'feature/hail_size_diag' into feature/hail
AndersJensen-NOAA Mar 15, 2025
a55683c
update TEMPO pointer
AndersJensen-NOAA Mar 15, 2025
4cdca69
Add maximum hail size diagnostics for TEMPO
AndersJensen-NOAA Mar 18, 2025
b2f1265
Add binned method to calculate maximum hail size
AndersJensen-NOAA Mar 26, 2025
200cb5a
Add hail option to interface
AndersJensen-NOAA Apr 5, 2025
0039a9c
Merge branch 'feature/hail_size_diagnostics' into feature/hail
AndersJensen-NOAA Apr 5, 2025
e1884af
Merge in hail diagnostics
AndersJensen-NOAA Apr 5, 2025
90b0294
Update point for TEMPO
AndersJensen-NOAA May 9, 2025
b15a208
Merge branch 'main' into feature/hail
AndersJensen-NOAA May 9, 2025
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
12 changes: 9 additions & 3 deletions src/core_atmosphere/Registry.xml
Original file line number Diff line number Diff line change
Expand Up @@ -410,6 +410,7 @@
<package name="mp_tempo_in" description="parameterization of TEMPO cloud microphysics."/>
<package name="tempo_aerosolaware_in" description="variables for TEMPO with aerosol-aware microphysics."/>
<package name="tempo_hailaware_in" description="variables for TEMPO hail-aware microphysics."/>
<package name="tempo_qh_in" description="variables for TEMPO microphysics with hail category."/>
<package name="mp_wsm6_in" description="parameterization of WSM6 cloud microphysics."/>
<package name="mp_nssl2m_in" description="parameterization of NSSL 2-moment microphysics."/>
<package name="nssl3m_in" description="variables for NSSL 3-moment microphysics."/>
Expand Down Expand Up @@ -1755,7 +1756,7 @@

<var name="qh" array_group="moist" units="kg kg^{-1}"
description="Hail mixing ratio"
packages="mp_nssl2m_in"/>
packages="mp_nssl2m_in;tempo_qh_in"/>

<var name="ni" array_group="number" units="nb kg^{-1}"
description="Cloud ice number concentration"
Expand Down Expand Up @@ -2146,7 +2147,7 @@

<var name="tend_qh" name_in_code="qh" array_group="moist" units="kg m^{-3} s^{-1}"
description="Tendency of hail mass per unit volume divided by d(zeta)/dz"
packages="mp_nssl2m_in"/>
packages="mp_nssl2m_in;tempo_qh_in"/>

<var name="tend_ni" name_in_code="ni" array_group="number" units="nb m^{-3} s^{-1}"
description="Tendency of cloud ice number concentration multiplied by dry air density divided by d(zeta)/dz"
Expand Down Expand Up @@ -2262,7 +2263,7 @@
units="kg kg^{-1} s^{-1}"
description="Lateral boundary tendency of graupel mixing ratio"/>

<var name="lbc_qh" name_in_code="qh" array_group="moist" packages="mp_nssl2m_in" units="kg kg^{-1} s^{-1}"
<var name="lbc_qh" name_in_code="qh" array_group="moist" packages="mp_nssl2m_in;tempo_qh_in" units="kg kg^{-1} s^{-1}"
description="Lateral boundary tendency of hail mixing ratio"/>

<var name="lbc_nr" name_in_code="nr" array_group="number" packages="mp_thompson_in;mp_nssl2m_in;mp_thompson_aers_in;mp_tempo_in"
Expand Down Expand Up @@ -2470,6 +2471,11 @@
description="Logical flag to turn on/off prognostic graupel number concentration and rime density"
possible_values=".true. or .false."/>

<nml_option name="config_tempo_qh" type="logical" default_value="false" in_defaults="false"
units="-"
description="Logical flag to turn on/off hail category"
possible_values=".true. or .false."/>

<nml_option name="config_tempo_ml_nc_pbl" type="logical" default_value="false" in_defaults="false"
units="-"
description="Logical flag to turn on/off ML prediction of boundary layer cloud number concentrations"
Expand Down
14 changes: 11 additions & 3 deletions src/core_atmosphere/physics/mpas_atmphys_driver_microphysics.F
Original file line number Diff line number Diff line change
Expand Up @@ -109,13 +109,14 @@ subroutine allocate_microphysics(configs)
!local pointers:
character(len=StrKIND),pointer:: microp_scheme
character(len=StrKIND),pointer:: nssl_moments
logical,pointer:: config_tempo_hailaware, config_tempo_aerosolaware
logical,pointer:: config_tempo_hailaware, config_tempo_aerosolaware, config_tempo_qh
logical,pointer:: config_tempo_ml_nc_pbl
!-----------------------------------------------------------------------------------------------------------------

call mpas_pool_get_config(configs,'config_microp_scheme',microp_scheme)
call mpas_pool_get_config(configs,'config_nssl_moments',nssl_moments)
call mpas_pool_get_config(configs,'config_tempo_hailaware',config_tempo_hailaware)
call mpas_pool_get_config(configs,'config_tempo_qh',config_tempo_qh)
call mpas_pool_get_config(configs,'config_tempo_aerosolaware',config_tempo_aerosolaware)
call mpas_pool_get_config(configs,'config_tempo_ml_nc_pbl',config_tempo_ml_nc_pbl)

Expand Down Expand Up @@ -202,6 +203,9 @@ subroutine allocate_microphysics(configs)

! Allocate TEMPO options based on config flags insead of adding more nested select cases
! These flags are associated with appropriate packages in mpas_atmphys_packages.F
if (config_tempo_qh) then
if(.not.allocated(qh_p) ) allocate(qh_p(ims:ime,kms:kme,jms:jme))
endif
if (config_tempo_hailaware) then
if(.not.allocated(ng_p) ) allocate(ng_p(ims:ime,kms:kme,jms:jme))
if(.not.allocated(volg_p)) allocate(volg_p(ims:ime,kms:kme,jms:jme))
Expand Down Expand Up @@ -268,14 +272,15 @@ subroutine deallocate_microphysics(configs)
!local pointers:
character(len=StrKIND),pointer:: microp_scheme
character(len=StrKIND),pointer:: nssl_moments
logical,pointer:: config_tempo_hailaware, config_tempo_aerosolaware
logical,pointer:: config_tempo_hailaware, config_tempo_aerosolaware, config_tempo_qh
logical,pointer:: config_tempo_ml_nc_pbl

!-----------------------------------------------------------------------------------------------------------------

call mpas_pool_get_config(configs,'config_microp_scheme',microp_scheme)
call mpas_pool_get_config(configs,'config_nssl_moments',nssl_moments)
call mpas_pool_get_config(configs,'config_tempo_hailaware',config_tempo_hailaware)
call mpas_pool_get_config(configs,'config_tempo_qh',config_tempo_qh)
call mpas_pool_get_config(configs,'config_tempo_aerosolaware',config_tempo_aerosolaware)
call mpas_pool_get_config(configs,'config_tempo_ml_nc_pbl',config_tempo_ml_nc_pbl)

Expand Down Expand Up @@ -360,6 +365,9 @@ subroutine deallocate_microphysics(configs)
if(allocated(max_hail_diameter_sfc_p) ) deallocate(max_hail_diameter_sfc_p)
if(allocated(max_hail_diameter_column_p) ) deallocate(max_hail_diameter_column_p)

if (config_tempo_qh) then
if(allocated(qh_p) ) deallocate(qh_p )
endif
if (config_tempo_hailaware) then
if(allocated(ng_p) ) deallocate(ng_p )
if(allocated(volg_p) ) deallocate(volg_p )
Expand Down Expand Up @@ -667,7 +675,7 @@ subroutine driver_microphysics(configs,mesh,state,time_lev,diag,diag_physics,ten
th = th_p , qv = qv_p , qc = qc_p , &
qr = qr_p , qi = qi_p , qs = qs_p , &
qg = qg_p , ni = ni_p , nr = nr_p , &
ng = ng_p , qb = volg_p , &
ng = ng_p , qb = volg_p , qh = qh_p , &
nc = nc_p , nwfa = nwfa_p , nifa = nifa_p , &
nwfa2d = nwfa2d_p , nifa2d = nifa2d_p , &
pii = pi_p , p = pres_p , dz = dz_p , &
Expand Down
34 changes: 32 additions & 2 deletions src/core_atmosphere/physics/mpas_atmphys_interface.F
Original file line number Diff line number Diff line change
Expand Up @@ -663,7 +663,7 @@ subroutine microphysics_from_MPAS(configs,mesh,state,time_lev,diag,diag_physics,
real(kind=RKIND),dimension(:),pointer :: nifa2d,nwfa2d,nt_c,mu_c
!TEMPO/NSSL
character(len=StrKIND),pointer:: nssl_moments
logical,pointer:: config_tempo_hailaware, config_tempo_aerosolaware
logical,pointer:: config_tempo_hailaware, config_tempo_aerosolaware, config_tempo_qh
logical,pointer:: config_tempo_ml_nc_pbl
integer,pointer:: index_qh
integer,pointer:: index_zrw,index_zgw,index_zhw
Expand Down Expand Up @@ -692,6 +692,7 @@ subroutine microphysics_from_MPAS(configs,mesh,state,time_lev,diag,diag_physics,
call mpas_pool_get_config(configs,'config_microp_scheme',mp_scheme)
call mpas_pool_get_config(configs,'config_nssl_moments',nssl_moments)
call mpas_pool_get_config(configs,'config_tempo_hailaware',config_tempo_hailaware)
call mpas_pool_get_config(configs,'config_tempo_qh',config_tempo_qh)
call mpas_pool_get_config(configs,'config_tempo_aerosolaware',config_tempo_aerosolaware)
call mpas_pool_get_config(configs,'config_tempo_ml_nc_pbl',config_tempo_ml_nc_pbl)

Expand Down Expand Up @@ -907,6 +908,20 @@ subroutine microphysics_from_MPAS(configs,mesh,state,time_lev,diag,diag_physics,
enddo
endif

if (config_tempo_qh) then
call mpas_pool_get_dimension(state,'index_qh' ,index_qh )

qh => scalars(index_qh,:,:)

do j = jts, jte
do k = kts, kte
do i = its, ite
qh_p(i,k,j) = qh(k,i)
enddo
enddo
enddo
endif

case("mp_nssl2m")
call mpas_pool_get_dimension(state,'index_ni',index_ni)
call mpas_pool_get_dimension(state,'index_nr',index_nr)
Expand Down Expand Up @@ -1139,7 +1154,7 @@ subroutine microphysics_to_MPAS(configs,mesh,state,time_lev,diag,diag_physics,te
!local pointers:
character(len=StrKIND),pointer:: mp_scheme
character(len=StrKIND),pointer:: nssl_moments
logical,pointer:: config_tempo_hailaware, config_tempo_aerosolaware
logical,pointer:: config_tempo_hailaware, config_tempo_aerosolaware, config_tempo_qh
integer,pointer:: index_qv,index_qc,index_qr,index_qi,index_qs,index_qg
integer,pointer:: index_nc,index_ni,index_nr,index_nifa,index_nwfa
!TEMPO/NSSL
Expand Down Expand Up @@ -1175,6 +1190,7 @@ subroutine microphysics_to_MPAS(configs,mesh,state,time_lev,diag,diag_physics,te
call mpas_pool_get_config(configs,'config_microp_scheme',mp_scheme)
call mpas_pool_get_config(configs,'config_nssl_moments',nssl_moments)
call mpas_pool_get_config(configs,'config_tempo_hailaware',config_tempo_hailaware)
call mpas_pool_get_config(configs,'config_tempo_qh',config_tempo_qh)
call mpas_pool_get_config(configs,'config_tempo_aerosolaware',config_tempo_aerosolaware)

call mpas_pool_get_array(mesh,'zz' ,zz )
Expand Down Expand Up @@ -1403,6 +1419,20 @@ subroutine microphysics_to_MPAS(configs,mesh,state,time_lev,diag,diag_physics,te
enddo
endif

if (config_tempo_qh) then
call mpas_pool_get_dimension(state,'index_qh' ,index_qh )

qh => scalars(index_qh,:,:)

do j = jts, jte
do k = kts, kte
do i = its, ite
qh(k,i) = qh_p(i,k,j)
enddo
enddo
enddo
endif

case("mp_nssl2m")
call mpas_pool_get_dimension(state,'index_ni' ,index_ni )
call mpas_pool_get_dimension(state,'index_nc' ,index_nc )
Expand Down
13 changes: 11 additions & 2 deletions src/core_atmosphere/physics/mpas_atmphys_packages.F
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,9 @@ function atmphys_setup_packages(configs,streamInfo,packages,iocontext) result(ie
character(len=StrKIND),pointer:: config_convection_scheme
character(len=StrKIND),pointer:: config_pbl_scheme
character(len=StrKIND),pointer:: config_lsm_scheme
logical,pointer:: config_tempo_hailaware, config_tempo_aerosolaware
logical,pointer:: config_tempo_hailaware, config_tempo_aerosolaware, config_tempo_qh
logical,pointer:: mp_kessler_in,mp_thompson_in,mp_thompson_aers_in,mp_wsm6_in,mp_nssl2m_in,nssl3m_in
logical,pointer:: mp_tempo_in, tempo_hailaware_in, tempo_aerosolaware_in
logical,pointer:: mp_tempo_in, tempo_hailaware_in, tempo_aerosolaware_in, tempo_qh_in
logical,pointer:: cu_grell_freitas_in,cu_kain_fritsch_in,cu_ntiedtke_in
logical,pointer:: bl_mynn_in,bl_mynnedmf_in,bl_ysu_in,bl_myj_in
logical,pointer:: lsm_noah_in,lsm_ruc_in
Expand All @@ -64,6 +64,7 @@ function atmphys_setup_packages(configs,streamInfo,packages,iocontext) result(ie

call mpas_pool_get_config(configs,'config_nssl_moments',config_nssl_moments)
call mpas_pool_get_config(configs,'config_tempo_hailaware',config_tempo_hailaware)
call mpas_pool_get_config(configs,'config_tempo_qh',config_tempo_qh)
call mpas_pool_get_config(configs,'config_tempo_aerosolaware',config_tempo_aerosolaware)

nullify(mp_kessler_in)
Expand All @@ -83,6 +84,9 @@ function atmphys_setup_packages(configs,streamInfo,packages,iocontext) result(ie

nullify(tempo_hailaware_in)
call mpas_pool_get_package(packages,'tempo_hailaware_inActive',tempo_hailaware_in)

nullify(tempo_qh_in)
call mpas_pool_get_package(packages,'tempo_qh_inActive',tempo_qh_in)

nullify(mp_wsm6_in)
call mpas_pool_get_package(packages,'mp_wsm6_inActive',mp_wsm6_in)
Expand Down Expand Up @@ -112,6 +116,7 @@ function atmphys_setup_packages(configs,streamInfo,packages,iocontext) result(ie
mp_tempo_in = .false.
tempo_aerosolaware_in = .false.
tempo_hailaware_in = .false.
tempo_qh_in = .false.
mp_wsm6_in = .false.
mp_nssl2m_in = .false.
nssl3m_in = .false.
Expand All @@ -132,6 +137,9 @@ function atmphys_setup_packages(configs,streamInfo,packages,iocontext) result(ie
if (config_tempo_hailaware) then
tempo_hailaware_in = .true.
endif
if (config_tempo_qh) then
tempo_qh_in = .true.
endif
elseif(config_microp_scheme == 'mp_nssl2m') then
mp_nssl2m_in = .true.
IF ( config_nssl_moments == 'nssl3m' ) THEN
Expand All @@ -145,6 +153,7 @@ function atmphys_setup_packages(configs,streamInfo,packages,iocontext) result(ie
call mpas_log_write(' mp_tempo_in = $l', logicArgs=(/mp_tempo_in/))
call mpas_log_write(' tempo_aerosolaware_in = $l', logicArgs=(/tempo_aerosolaware_in/))
call mpas_log_write(' tempo_hailaware_in = $l', logicArgs=(/tempo_hailaware_in/))
call mpas_log_write(' tempo_qh_in = $l', logicArgs=(/tempo_qh_in/))
call mpas_log_write(' mp_wsm6_in = $l', logicArgs=(/mp_wsm6_in/))
call mpas_log_write(' mp_nssl2m_in = $l', logicArgs=(/mp_nssl2m_in/))
call mpas_log_write(' nssl3m_in = $l', logicArgs=(/nssl3m_in/))
Expand Down
1 change: 1 addition & 0 deletions src/core_init_atmosphere/Registry.xml
Original file line number Diff line number Diff line change
Expand Up @@ -406,6 +406,7 @@
<package name="mp_tempo_in" description="parameterization of TEMPO cloud microphysics."/>
<package name="tempo_aerosolaware_in" description="variables for TEMPO aerosol-aware microphysics."/>
<package name="tempo_hailaware_in" description="variables for TEMPO hail-aware microphysics."/>
<package name="tempo_qh_in" description="variables for TEMPO microphysics with hail category."/>
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

just out of curiosity, is this added here for future use? there are no init_atmosphere variables associated with this package, right?

</packages>


Expand Down