Skip to content
Open
Show file tree
Hide file tree
Changes from 32 commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
214c182
initial connection of tempo version 3
AndersJensen-NOAA Feb 4, 2026
07b895c
Add comments to radiation for tempo MP and to differentiate tempo fro…
AndersJensen-NOAA Feb 4, 2026
13c04f6
Connects TEMPO to GFS PBL generic
AndersJensen-NOAA Feb 4, 2026
fc03db5
fix type and add tempo to aerosol index procedure
AndersJensen-NOAA Feb 6, 2026
e29c7fa
simplify tempo driver and add condensation routine
AndersJensen-NOAA Feb 13, 2026
d8171f0
radiation to use tempo v2 for now
AndersJensen-NOAA Feb 13, 2026
391e7b3
adds diagnostics and optional arguments to tempo
AndersJensen-NOAA Feb 13, 2026
af6f852
add aerosol surface emissions to tempo and aerosol and hail aware flags
AndersJensen-NOAA Feb 13, 2026
d6e6ed6
couple tempo to MYNN in ccpp
AndersJensen-NOAA Feb 13, 2026
425e3f0
update pointer to tempo and fix missing qv variable
AndersJensen-NOAA Feb 16, 2026
25bdd3a
update GFS_rrtmg_pre for tempo v3, clean up condensation
AndersJensen-NOAA Feb 18, 2026
2fe1529
update to authoritative repo
AndersJensen-NOAA Feb 19, 2026
4bc4a12
clean-up code and add checks for tempo
AndersJensen-NOAA Feb 19, 2026
a5b3fab
clean up radiation coupling to tempo v3
AndersJensen-NOAA Feb 19, 2026
ee031b7
update GFS_rad_pre, bugfixes to mp_temp, and update to tempo v3.0.3
AndersJensen-NOAA Feb 19, 2026
0e14599
use thompson functions in interstial 4 for now as tendencies there ap…
AndersJensen-NOAA Feb 20, 2026
8192851
Work to fix interstitial 4
AndersJensen-NOAA Feb 20, 2026
d7f451e
update to tempo version 3.0.4
AndersJensen-NOAA Mar 4, 2026
a75b7b3
modifications from code review
AndersJensen-NOAA Mar 17, 2026
6be5ef2
add loop for dt_inner on ccpp side
AndersJensen-NOAA Mar 20, 2026
49bff41
add back ability of host to control a set of physical constants used …
May 8, 2026
6fbe6ab
Merge branch 'ufs/dev' into tempo_v3_gjf
May 9, 2026
c89a764
fix unit in mp_tempo.meta
May 11, 2026
cf1f8ff
Merge branch 'ufs/dev' into tempo_v3_gjf
May 11, 2026
e7acba4
fix compilation error in mp_tempo_condensation.F90 related to odt
May 11, 2026
a18ccf5
add some more constants to use/only list to compile
May 11, 2026
f474dbd
roll back units change in mp_tempo.meta to fix weird ccpp_prebuild error
AndersJensen-NOAA May 13, 2026
cce5984
fix subroutine arguments in fast physics condensation and update temp…
AndersJensen-NOAA May 13, 2026
d2416f6
Merge branch 'grant_tempo' into tempo_v3
AndersJensen-NOAA May 13, 2026
a19da35
fixes for RTs
AndersJensen-NOAA May 28, 2026
733fff3
update .gitmodules
May 28, 2026
75b1d5f
fix for ufs-mpas
AndersJensen-NOAA Jun 3, 2026
ece309d
revert
AndersJensen-NOAA Jun 3, 2026
97c8dd2
update tempo
AndersJensen-NOAA Jun 3, 2026
08e1bcf
Merge branch 'ufs/dev' into tempo_v3
grantfirl Jun 12, 2026
db5a369
update tempo to v3.1.0
AndersJensen-NOAA Jun 12, 2026
2b5603e
Merge branch 'tempo_v3' of https://github.com/AndersJensen-NOAA/ccpp-…
AndersJensen-NOAA Jun 12, 2026
52d5cdb
remove old version of TEMPO that was added back
AndersJensen-NOAA Jun 13, 2026
fb004f9
point tempo_v3 submodule to latest top-of-main commit
grantfirl Jun 15, 2026
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
6 changes: 3 additions & 3 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@
path = physics/Radiation/RRTMGP/rte-rrtmgp
url = https://github.com/NCAR/rte-rrtmgp
branch = main
[submodule "physics/MP/TEMPO/TEMPO"]
path = physics/MP/TEMPO/TEMPO
[submodule "physics/MP/TEMPO/tempo_v3"]
Comment thread
grantfirl marked this conversation as resolved.
path = physics/MP/TEMPO/tempo_v3
url = https://github.com/NCAR/TEMPO
branch = main
branch = tempo_3.1.0
[submodule "physics/SFC_Layer/MYNN/MYNN"]
path = physics/SFC_Layer/MYNN/MYNN
url = https://github.com/NCAR/MYNN-SFC
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,17 +13,18 @@ module GFS_PBL_generic_common

subroutine set_aerosol_tracer_index(imp_physics, imp_physics_wsm6, &
imp_physics_thompson, ltaerosol,mraerosol, &
imp_physics_tempo, lthailaware, &
imp_physics_mg, ntgl, imp_physics_gfdl, &
imp_physics_nssl, &
nssl_hail_on, nssl_ccn_on, nssl_3moment, kk, &
errmsg, errflg)
implicit none
!
integer, intent(in ) :: imp_physics, imp_physics_wsm6, &
imp_physics_thompson, &
imp_physics_thompson, imp_physics_tempo,&
imp_physics_mg, ntgl, imp_physics_gfdl, &
imp_physics_nssl
logical, intent(in ) :: ltaerosol, mraerosol, nssl_hail_on, nssl_ccn_on, nssl_3moment
logical, intent(in ) :: ltaerosol, mraerosol, nssl_hail_on, nssl_ccn_on, nssl_3moment, lthailaware
integer, intent(out) :: kk
character(len=*), intent(out) :: errmsg
integer, intent(out) :: errflg
Expand All @@ -43,6 +44,18 @@ subroutine set_aerosol_tracer_index(imp_physics, imp_physics_wsm6, &
else
kk = 9
endif
elseif (imp_physics == imp_physics_tempo) then
! Tempo (Note: why are we setting tracer indices manually?)
! I'll assume that kk = 9 includes qv, qc, qr, qi, qs, qg, ni, nr
! when ltaerosol = true: nc, nwfa, and nifa are added (+3)
! when lthail = true: ng and volg are added (+2)
kk = 9
if(ltaerosol) then
kk = kk + 3
endif
if(lthailaware) then

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

mraerosol does not work with TEMPO, is it correct?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Correct @mzhangw , it wasn't hooked up to tempo v2 either. We have plans to add this soon!

kk = kk + 2
endif
! MG
elseif (imp_physics == imp_physics_mg) then
if (ntgl > 0) then
Expand Down
50 changes: 44 additions & 6 deletions physics/Interstitials/UFS_SCM_NEPTUNE/GFS_PBL_generic_post.F90
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,11 @@ module GFS_PBL_generic_post
!!
subroutine GFS_PBL_generic_post_run (im, levs, nvdiff, ntrac, &
ntqv, ntcw, ntiw, ntrw, ntsw, ntlnc, ntinc, ntrnc, ntsnc, ntgnc, ntwa, ntia, ntgl, ntoz, ntke, ntkev,nqrimef, &
tend_opt_pbl, trans_aero, ntchs, ntchm, ntccn, nthl, nthnc, ntgv, nthv, ntrz, ntgz, nthz, &
imp_physics, imp_physics_gfdl, imp_physics_thompson, imp_physics_wsm6, imp_physics_mg, &
tend_opt_pbl, trans_aero, ntchs, ntchm, ntccn, nthl, nthnc, ntgv, nthv, ntrz, ntgz, nthz, imp_physics, &
imp_physics_gfdl, imp_physics_thompson, imp_physics_wsm6, imp_physics_mg, imp_physics_tempo, lthailaware, &
imp_physics_fer_hires, imp_physics_nssl, nssl_ccn_on, ltaerosol, mraerosol, nssl_hail_on, nssl_3moment, &
cplflx, cplaqm, cplchm, lssav, flag_for_pbl_generic_tend, ldiag3d, lsidea, hybedmf, do_shoc, satmedmf, &
shinhong, do_ysu, dvdftra, ten_t, ten_u, ten_v, ten_q, dusfc1, dvsfc1, dtsfc1, dqsfc1, dtf, dtp, dudt, dvdt, dtdt, &
shinhong, do_ysu, dvdftra, ten_t, ten_u, ten_v, ten_q, dusfc1, dvsfc1, dtsfc1, dqsfc1, dtf, dtp, dudt, dvdt, dtdt, &
dqdt, dusfc_cpl, dvsfc_cpl, dtsfc_cpl, dtend, dtidx, index_of_temperature, index_of_x_wind, index_of_y_wind, &
index_of_process_pbl, dqsfc_cpl, dusfci_cpl, dvsfci_cpl, dtsfci_cpl, dqsfci_cpl, dusfc_diag, dvsfc_diag, dtsfc_diag, &
dqsfc_diag, dusfci_diag, dvsfci_diag, dtsfci_diag, dqsfci_diag, &
Expand All @@ -34,11 +34,11 @@ subroutine GFS_PBL_generic_post_run (im, levs, nvdiff, ntrac,
integer, intent(in) :: ntccn, nthl, nthnc, ntgv, nthv, ntrz, ntgz, nthz
integer, intent(in) :: tend_opt_pbl
logical, intent(in) :: trans_aero
integer, intent(in) :: imp_physics, imp_physics_gfdl, imp_physics_thompson, imp_physics_wsm6
integer, intent(in) :: imp_physics, imp_physics_gfdl, imp_physics_thompson, imp_physics_wsm6, imp_physics_tempo
integer, intent(in) :: imp_physics_mg, imp_physics_fer_hires
integer, intent(in) :: imp_physics_nssl
logical, intent(in) :: nssl_ccn_on, nssl_hail_on, nssl_3moment
logical, intent(in) :: ltaerosol, cplflx, cplaqm, cplchm, lssav, ldiag3d, lsidea, use_med_flux, mraerosol
logical, intent(in) :: ltaerosol, cplflx, cplaqm, cplchm, lssav, ldiag3d, lsidea, use_med_flux, mraerosol, lthailaware
logical, intent(in) :: hybedmf, do_shoc, satmedmf, shinhong, do_ysu

logical, intent(in) :: flag_for_pbl_generic_tend
Expand Down Expand Up @@ -111,7 +111,8 @@ subroutine GFS_PBL_generic_post_run (im, levs, nvdiff, ntrac,
if (trans_aero) then
! Set kk if chemistry-aerosol tracers are diffused
call set_aerosol_tracer_index(imp_physics, imp_physics_wsm6, &
imp_physics_thompson, ltaerosol,mraerosol, &
imp_physics_thompson, ltaerosol,mraerosol, &
imp_physics_tempo, lthailaware, &
imp_physics_mg, ntgl, imp_physics_gfdl, &
imp_physics_nssl,&
nssl_hail_on, nssl_ccn_on, nssl_3moment, kk, &
Expand Down Expand Up @@ -202,6 +203,43 @@ subroutine GFS_PBL_generic_post_run (im, levs, nvdiff, ntrac,
enddo
enddo
endif
elseif (imp_physics == imp_physics_tempo) then
! Tempo
do k=1,levs
do i=1,im
dqdt(i,k,ntqv) = dvdftra(i,k,1)
dqdt(i,k,ntcw) = dvdftra(i,k,2)
dqdt(i,k,ntiw) = dvdftra(i,k,3)
dqdt(i,k,ntrw) = dvdftra(i,k,4)
dqdt(i,k,ntsw) = dvdftra(i,k,5)
dqdt(i,k,ntgl) = dvdftra(i,k,6)
dqdt(i,k,ntinc) = dvdftra(i,k,7)
dqdt(i,k,ntrnc) = dvdftra(i,k,8)
dqdt(i,k,ntoz) = dvdftra(i,k,9)
enddo
enddo

n = 10
if (ltaerosol) then
do k=1,levs
do i=1,im
dqdt(i,k,ntlnc) = dvdftra(i,k,n)
dqdt(i,k,ntwa) = dvdftra(i,k,n+1)
dqdt(i,k,ntia) = dvdftra(i,k,n+2)
enddo
enddo
n = 13
endif

if (lthailaware) then
do k=1,levs
do i=1,im
dqdt(i,k,ntgnc) = dvdftra(i,k,n)
dqdt(i,k,ntgv) = dvdftra(i,k,n+1)
enddo
enddo
endif

elseif (imp_physics == imp_physics_mg) then ! MG3/2
if (ntgl > 0) then ! MG
do k=1,levs
Expand Down
14 changes: 14 additions & 0 deletions physics/Interstitials/UFS_SCM_NEPTUNE/GFS_PBL_generic_post.meta
Original file line number Diff line number Diff line change
Expand Up @@ -260,6 +260,13 @@
dimensions = ()
type = integer
intent = in
[imp_physics_tempo]
standard_name = identifier_for_tempo_microphysics_scheme
long_name = choice of Tempo microphysics scheme
units = flag
dimensions = ()
type = integer
intent = in
[imp_physics_wsm6]
standard_name = identifier_for_wsm6_microphysics_scheme
long_name = choice of WSM6 microphysics scheme
Expand Down Expand Up @@ -295,6 +302,13 @@
dimensions = ()
type = logical
intent = in
[lthailaware]
standard_name = flag_for_hail_physics
long_name = flag for hail physics
units = flag
dimensions = ()
type = logical
intent = in
[mraerosol]
standard_name = do_merra2_aerosol_awareness
long_name = flag for merra2 aerosol-aware physics for example the thompson microphysics
Expand Down
46 changes: 42 additions & 4 deletions physics/Interstitials/UFS_SCM_NEPTUNE/GFS_PBL_generic_pre.F90
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ subroutine GFS_PBL_generic_pre_run (im, levs, nvdiff, ntrac, rtg_ozone_index,
ntwa, ntia, ntgl, ntoz, ntke, ntkev, nqrimef, trans_aero, ntchs, ntchm, &
ntccn, nthl, nthnc, ntgv, nthv, ntrz, ntgz, nthz, &
imp_physics, imp_physics_gfdl, imp_physics_thompson, imp_physics_wsm6, &
imp_physics_mg, imp_physics_fer_hires, imp_physics_nssl, &
ltaerosol, mraerosol, nssl_ccn_on, nssl_hail_on, nssl_3moment, &
imp_physics_tempo, lthailaware, imp_physics_mg, imp_physics_fer_hires, &
imp_physics_nssl, ltaerosol, mraerosol, nssl_ccn_on, nssl_hail_on, nssl_3moment, &
hybedmf, do_shoc, satmedmf, qgrs, vdftra, &
ugrs, vgrs, tgrs, errmsg, errflg)

Expand All @@ -31,9 +31,9 @@ subroutine GFS_PBL_generic_pre_run (im, levs, nvdiff, ntrac, rtg_ozone_index,
integer, intent(in) :: ntwa, ntia, ntgl, ntoz, ntke, ntkev, nqrimef,ntchs, ntchm
integer, intent(in) :: ntccn, nthl, nthnc, ntgv, nthv, ntrz, ntgz, nthz
logical, intent(in) :: trans_aero
integer, intent(in) :: imp_physics, imp_physics_gfdl, imp_physics_thompson, imp_physics_wsm6
integer, intent(in) :: imp_physics, imp_physics_gfdl, imp_physics_thompson, imp_physics_wsm6, imp_physics_tempo
integer, intent(in) :: imp_physics_mg, imp_physics_fer_hires
logical, intent(in) :: ltaerosol, hybedmf, do_shoc, satmedmf, mraerosol
logical, intent(in) :: ltaerosol, hybedmf, do_shoc, satmedmf, mraerosol, lthailaware
integer, intent(in) :: imp_physics_nssl
logical, intent(in) :: nssl_hail_on, nssl_ccn_on, nssl_3moment

Expand Down Expand Up @@ -138,6 +138,43 @@ subroutine GFS_PBL_generic_pre_run (im, levs, nvdiff, ntrac, rtg_ozone_index,
enddo
rtg_ozone_index = 9
endif
elseif (imp_physics == imp_physics_tempo) then
! Tempo
do k=1,levs
do i=1,im
vdftra(i,k,1) = qgrs(i,k,ntqv)
vdftra(i,k,2) = qgrs(i,k,ntcw)
vdftra(i,k,3) = qgrs(i,k,ntiw)
vdftra(i,k,4) = qgrs(i,k,ntrw)
vdftra(i,k,5) = qgrs(i,k,ntsw)
vdftra(i,k,6) = qgrs(i,k,ntgl)
vdftra(i,k,7) = qgrs(i,k,ntinc)
vdftra(i,k,8) = qgrs(i,k,ntrnc)
vdftra(i,k,9) = qgrs(i,k,ntoz)
enddo
enddo
rtg_ozone_index = 9
n = 10

if (ltaerosol) then
do k=1,levs
do i=1,im
vdftra(i,k,n) = qgrs(i,k,ntlnc)
vdftra(i,k,n+1) = qgrs(i,k,ntwa)
vdftra(i,k,n+2) = qgrs(i,k,ntia)
enddo
enddo
n = 13
endif

if (lthailaware) then
do k=1,levs
do i=1,im
vdftra(i,k,n) = qgrs(i,k,ntgnc)
vdftra(i,k,n+1) = qgrs(i,k,ntgv)
enddo
enddo
endif
! MG
elseif (imp_physics == imp_physics_mg) then ! MG3/2
if (ntgl > 0) then ! MG3
Expand Down Expand Up @@ -262,6 +299,7 @@ subroutine GFS_PBL_generic_pre_run (im, levs, nvdiff, ntrac, rtg_ozone_index,
if (trans_aero) then
call set_aerosol_tracer_index(imp_physics, imp_physics_wsm6, &
imp_physics_thompson, ltaerosol,mraerosol, &
imp_physics_tempo, lthailaware, &
imp_physics_mg, ntgl, imp_physics_gfdl, &
imp_physics_nssl, &
nssl_hail_on, nssl_ccn_on, nssl_3moment, kk, &
Expand Down
14 changes: 14 additions & 0 deletions physics/Interstitials/UFS_SCM_NEPTUNE/GFS_PBL_generic_pre.meta
Original file line number Diff line number Diff line change
Expand Up @@ -259,6 +259,13 @@
dimensions = ()
type = integer
intent = in
[imp_physics_tempo]
standard_name = identifier_for_tempo_microphysics_scheme
long_name = choice of Tempo microphysics scheme
units = flag
dimensions = ()
type = integer
intent = in
[imp_physics_wsm6]
standard_name = identifier_for_wsm6_microphysics_scheme
long_name = choice of WSM6 microphysics scheme
Expand Down Expand Up @@ -294,6 +301,13 @@
dimensions = ()
type = logical
intent = in
[lthailaware]
standard_name = flag_for_hail_physics
long_name = flag for hail physics
units = flag
dimensions = ()
type = logical
intent = in
[mraerosol]
standard_name = do_merra2_aerosol_awareness
long_name = flag for merra2 aerosol-aware physics for example the thompson microphysics
Expand Down
Loading