From 54f7c31059b3dd2178decce26a24474a208329ea Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Wed, 6 Oct 2021 09:05:34 -0600 Subject: [PATCH 1/4] Update GFS_suite_interstitial to treat GFDL-MP like Thompson and not like Zhao-Carr w.r.t. convective transportable tracers --- physics/GFS_suite_interstitial.F90 | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/physics/GFS_suite_interstitial.F90 b/physics/GFS_suite_interstitial.F90 index fa1840da5..bcb323e55 100644 --- a/physics/GFS_suite_interstitial.F90 +++ b/physics/GFS_suite_interstitial.F90 @@ -648,9 +648,9 @@ subroutine GFS_suite_interstitial_3_run (im, levs, nn, cscnv, & clw(i,k,1) = gq0(i,k,ntcw) enddo enddo - elseif (imp_physics == imp_physics_gfdl) then - clw(1:im,:,1) = gq0(1:im,:,ntcw) - elseif (imp_physics == imp_physics_thompson) then + !elseif (imp_physics == imp_physics_gfdl) then + ! clw(1:im,:,1) = gq0(1:im,:,ntcw) + elseif (imp_physics == imp_physics_thompson .or. imp_physics == imp_physics_gfdl) then do k=1,levs do i=1,im clw(i,k,1) = gq0(i,k,ntiw) ! ice @@ -776,9 +776,8 @@ subroutine GFS_suite_interstitial_4_run (im, levs, ltaerosol, tracers_total, ntr endif endif if(ntcw>0) then - if (imp_physics == imp_physics_zhao_carr .or. & - imp_physics == imp_physics_zhao_carr_pdf .or. & - imp_physics == imp_physics_gfdl) then + if (imp_physics == imp_physics_zhao_carr .or. & + imp_physics == imp_physics_zhao_carr_pdf) then idtend=dtidx(100+ntcw,index_of_process_conv_trans) if(idtend>=1) then dtend(:,:,idtend) = dtend(:,:,idtend) + clw(:,:,1)+clw(:,:,2) - gq0(:,:,ntcw) @@ -830,9 +829,8 @@ subroutine GFS_suite_interstitial_4_run (im, levs, ltaerosol, tracers_total, ntr if (ntcw > 0) then ! for microphysics - if (imp_physics == imp_physics_zhao_carr .or. & - imp_physics == imp_physics_zhao_carr_pdf .or. & - imp_physics == imp_physics_gfdl) then + if (imp_physics == imp_physics_zhao_carr .or. & + imp_physics == imp_physics_zhao_carr_pdf) then gq0(1:im,:,ntcw) = clw(1:im,:,1) + clw(1:im,:,2) elseif (ntiw > 0) then @@ -843,7 +841,7 @@ subroutine GFS_suite_interstitial_4_run (im, levs, ltaerosol, tracers_total, ntr enddo enddo - if (imp_physics == imp_physics_thompson .and. (ntlnc>0 .or. ntinc>0)) then + thompson_only: if (imp_physics == imp_physics_thompson .and. (ntlnc>0 .or. ntinc>0)) then if_convert_dry_rho: if (convert_dry_rho) then do k=1,levs do i=1,im @@ -903,7 +901,7 @@ subroutine GFS_suite_interstitial_4_run (im, levs, ltaerosol, tracers_total, ntr dtend(:,:,idtend) = dtend(:,:,idtend) + gq0(:,:,ntinc) - save_inc endif endif - endif + endif thompson_only else do k=1,levs From bc0677a08ea91cdc3e50724ebf5058d794a8c752 Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Thu, 4 Nov 2021 07:37:12 -0600 Subject: [PATCH 2/4] Remove commented-out code from physics/GFS_suite_interstitial.F90 --- physics/GFS_suite_interstitial.F90 | 2 -- 1 file changed, 2 deletions(-) diff --git a/physics/GFS_suite_interstitial.F90 b/physics/GFS_suite_interstitial.F90 index 3a68048f2..9ce89c1da 100644 --- a/physics/GFS_suite_interstitial.F90 +++ b/physics/GFS_suite_interstitial.F90 @@ -646,8 +646,6 @@ subroutine GFS_suite_interstitial_3_run (im, levs, nn, cscnv, & clw(i,k,1) = gq0(i,k,ntcw) enddo enddo - !elseif (imp_physics == imp_physics_gfdl) then - ! clw(1:im,:,1) = gq0(1:im,:,ntcw) elseif (imp_physics == imp_physics_thompson .or. imp_physics == imp_physics_gfdl) then do k=1,levs do i=1,im From 6a01834ff199b2d55774c91ff2b679dc3d978228 Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Thu, 4 Nov 2021 11:24:17 -0600 Subject: [PATCH 3/4] Update top-level README.md --- README.md | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 9000afccc..b4aaef36f 100644 --- a/README.md +++ b/README.md @@ -5,16 +5,24 @@ The Common Community Physics Package (CCPP) is designed to facilitate the implem Please see more information about the CCPP at the locations below. - [CCPP website hosted by the Developmental Testbed Center (DTC)](https://dtcenter.org/ccpp) -- [CCPP public release information](https://dtcenter.org/community-code/common-community-physics-package-ccpp/ccpp-scm-version-4-0) -- [CCPP Technical Documentation](https://ccpp-techdoc.readthedocs.io/en/latest/) -- [CCPP Scientific Documentation](https://dtcenter.org/GMTB/v4.0/sci_doc/) -- [CCPP Physics GutHub wiki](https://github.com/NCAR/ccpp-physics/wiki) +- [CCPP public release information](https://dtcenter.org/community-code/common-community-physics-package-ccpp/download) +- [CCPP Technical Documentation](https://ccpp-techdoc.readthedocs.io/en/latest) +- [CCPP Scientific Documentation](https://dtcenter.ucar.edu/GMTB/v5.0.0/sci_doc) +- [CCPP Physics GitHub wiki](https://github.com/NCAR/ccpp-physics/wiki) - [CCPP Framework GitHub wiki](https://github.com/NCAR/ccpp-framework/wiki) -For the use of CCPP with its Single Column Model, see the [Single Column Model User's Guide](https://dtcenter.org/GMTB/v4.0/scm-ccpp-guide-v4.0.pdf). +For the use of CCPP with its Single Column Model, see the [Single Column Model User's Guide](http://dtcenter.org/sites/default/files/paragraph/scm-ccpp-guide-v5.0.0.pdf). -For the use of CCPP with NOAA's Unified Forecast System (UFS), see the [UFS Medium-Range Application User's Guide](https://ufs-mrweather-app.readthedocs.io/en/latest/) and the [UFS Weather Model User's Guide](https://ufs-weather-model.readthedocs.io/en/latest/). +For the use of CCPP with NOAA's Unified Forecast System (UFS), see the [UFS Medium-Range Application User's Guide](https://ufs-mrweather-app.readthedocs.io/en/latest), the [UFS Short-Range Application User's Guide](https://ufs-srweather-app.readthedocs.io/en/latest) and the [UFS Weather Model User's Guide](https://ufs-weather-model.readthedocs.io/en/latest). + +Questions can be directed to the [CCPP User Support Forum](https://dtcenter.org/forum/ccpp-user-support) or posted in the [CCPP Physics GitHub discussions](https://github.com/NCAR/ccpp-physics/discussions) or [CCPP Framework GitHub discussions](https://github.com/NCAR/ccpp-framework/discussions). When using the CCPP with NOAA's UFS, questions can be posted in the [UFS Weather Model](https://forums.ufscommunity.org/forum/ufs-weather-model) section of the [UFS Forum](https://forums.ufscommunity.org). + +## Corresponding CCPP Standard Names dictionary + +This revision of the CCPP physics library is compliant with [version 0.1.1 of the CCPP Standard Names dictionary](https://github.com/ESCOMP/CCPPStandardNames/releases/tag/v0.1.1). + +## Licensing The Apache license will be in effect unless superseded by an existing license in specific files. -Questions can be directed to the [CCPP Help Desk](mailto:gmtb-help@ucar.edu). When using the CCPP with NOAA's UFS, questions can be posted in the [UFS Weather Model](https://forums.ufscommunity.org/forum/ufs-weather-model) section of the [UFS Forum](https://forums.ufscommunity.org/) +### Last updated by Dom Heinzeller, 11/04/2021 \ No newline at end of file From fcbc87fc2388050af9ed384c6bb47d38f20269fb Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Wed, 29 Dec 2021 10:22:53 -0700 Subject: [PATCH 4/4] Clarify the meaning of hydrometeor deltas by using better variable names in physics/GFS_suite_interstitial.F90 --- physics/GFS_suite_interstitial.F90 | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/physics/GFS_suite_interstitial.F90 b/physics/GFS_suite_interstitial.F90 index 9ce89c1da..bf14a9a11 100644 --- a/physics/GFS_suite_interstitial.F90 +++ b/physics/GFS_suite_interstitial.F90 @@ -741,8 +741,8 @@ subroutine GFS_suite_interstitial_4_run (im, levs, ltaerosol, tracers_total, ntr real(kind=kind_phys) :: rho, orho real(kind=kind_phys), dimension(im,levs) :: qv_mp !< kg kg-1 (dry mixing ratio) - real(kind=kind_phys), dimension(im,levs) :: qc_mp !< kg kg-1 (dry mixing ratio) - real(kind=kind_phys), dimension(im,levs) :: qi_mp !< kg kg-1 (dry mixing ratio) + real(kind=kind_phys), dimension(im,levs) :: delta_qc_mp !< kg kg-1 (dry mixing ratio) + real(kind=kind_phys), dimension(im,levs) :: delta_qi_mp !< kg kg-1 (dry mixing ratio) real(kind=kind_phys), dimension(im,levs) :: nc_mp !< kg-1 (dry mixing ratio) real(kind=kind_phys), dimension(im,levs) :: ni_mp !< kg-1 (dry mixing ratio) @@ -847,20 +847,20 @@ subroutine GFS_suite_interstitial_4_run (im, levs, ltaerosol, tracers_total, ntr rho = con_eps*prsl(i,k) / (con_rd*save_tcp(i,k)*(qv_mp(i,k)+con_eps)) orho = one/rho if (ntlnc>0) then - !> - Convert moist mixing ratio to dry mixing ratio - qc_mp(i,k) = (clw(i,k,2)-save_qc(i,k)) / (one-spechum(i,k)) + !> - Convert moist mixing ratio delta to dry mixing ratio + delta_qc_mp(i,k) = (clw(i,k,2)-save_qc(i,k)) / (one-spechum(i,k)) !> - Convert number concentration from moist to dry nc_mp(i,k) = gq0(i,k,ntlnc) / (one-spechum(i,k)) - nc_mp(i,k) = max(zero, nc_mp(i,k) + make_DropletNumber(qc_mp(i,k) * rho, nwfa(i,k)*rho) * orho) + nc_mp(i,k) = max(zero, nc_mp(i,k) + make_DropletNumber(delta_qc_mp(i,k) * rho, nwfa(i,k)*rho) * orho) !> - Convert number concentrations from dry to moist gq0(i,k,ntlnc) = nc_mp(i,k) / (one+qv_mp(i,k)) endif if (ntinc>0) then !> - Convert moist mixing ratio to dry mixing ratio - qi_mp(i,k) = (clw(i,k,1)-save_qi(i,k)) / (one-spechum(i,k)) + delta_qi_mp(i,k) = (clw(i,k,1)-save_qi(i,k)) / (one-spechum(i,k)) !> - Convert number concentration from moist to dry ni_mp(i,k) = gq0(i,k,ntinc) / (one-spechum(i,k)) - ni_mp(i,k) = max(zero, ni_mp(i,k) + make_IceNumber(qi_mp(i,k) * rho, save_tcp(i,k)) * orho) + ni_mp(i,k) = max(zero, ni_mp(i,k) + make_IceNumber(delta_qi_mp(i,k) * rho, save_tcp(i,k)) * orho) !> - Convert number concentrations from dry to moist gq0(i,k,ntinc) = ni_mp(i,k) / (one+qv_mp(i,k)) endif @@ -874,15 +874,15 @@ subroutine GFS_suite_interstitial_4_run (im, levs, ltaerosol, tracers_total, ntr orho = one/rho if (ntlnc>0) then !> - Update cloud water mixing ratio - qc_mp(i,k) = (clw(i,k,2)-save_qc(i,k)) + delta_qc_mp(i,k) = (clw(i,k,2)-save_qc(i,k)) !> - Update cloud water number concentration - gq0(i,k,ntlnc) = max(zero, gq0(i,k,ntlnc) + make_DropletNumber(qc_mp(i,k) * rho, nwfa(i,k)*rho) * orho) + gq0(i,k,ntlnc) = max(zero, gq0(i,k,ntlnc) + make_DropletNumber(delta_qc_mp(i,k) * rho, nwfa(i,k)*rho) * orho) endif if (ntinc>0) then !> - Update cloud ice mixing ratio - qi_mp(i,k) = (clw(i,k,1)-save_qi(i,k)) + delta_qi_mp(i,k) = (clw(i,k,1)-save_qi(i,k)) !> - Update cloud ice number concentration - gq0(i,k,ntinc) = max(zero, gq0(i,k,ntinc) + make_IceNumber(qi_mp(i,k) * rho, save_tcp(i,k)) * orho) + gq0(i,k,ntinc) = max(zero, gq0(i,k,ntinc) + make_IceNumber(delta_qi_mp(i,k) * rho, save_tcp(i,k)) * orho) endif enddo enddo