diff --git a/.github/workflows/basic_checks.yml b/.github/workflows/basic_checks.yml
new file mode 100644
index 000000000..4e40790b5
--- /dev/null
+++ b/.github/workflows/basic_checks.yml
@@ -0,0 +1,21 @@
+name: Basic checks for CCPP physics schemes
+
+on: [push, pull_request]
+
+jobs:
+ build:
+
+ runs-on: macos-latest
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v2
+ - name: Init submodules
+ run: git submodule update --init --recursive
+ #- name: Update packages
+ # run: |
+ # /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
+ # #brew install autoconf automake coreutils gcc@9 libtool mpich gnu-sed wget
+ # brew install automake coreutils mpich gnu-sed
+ - name: Check for ASCII encoding
+ run: ./tools/check_encoding.py
diff --git a/CMakeLists.txt b/CMakeLists.txt
index ed44bc1b3..0a6d21826 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -8,7 +8,7 @@ endif (NOT PROJECT)
cmake_minimum_required(VERSION 3.0)
project(ccppphys
- VERSION 3.0.0
+ VERSION 4.0.0
LANGUAGES C CXX Fortran)
# Use rpaths on MacOSX
diff --git a/physics/GFS_DCNV_generic.F90 b/physics/GFS_DCNV_generic.F90
index d7305cbe5..1622f4b52 100644
--- a/physics/GFS_DCNV_generic.F90
+++ b/physics/GFS_DCNV_generic.F90
@@ -17,8 +17,8 @@ end subroutine GFS_DCNV_generic_pre_finalize
!! \htmlinclude GFS_DCNV_generic_pre_run.html
!!
#endif
- subroutine GFS_DCNV_generic_pre_run (im, levs, ldiag3d, do_cnvgwd, do_ca, cplchm,&
- isppt_deep, gu0, gv0, gt0, gq0_water_vapor, &
+ subroutine GFS_DCNV_generic_pre_run (im, levs, ldiag3d, do_cnvgwd, cplchm, &
+ gu0, gv0, gt0, gq0_water_vapor, &
save_u, save_v, save_t, save_qv, ca_deep, &
dqdti, errmsg, errflg)
@@ -27,7 +27,7 @@ subroutine GFS_DCNV_generic_pre_run (im, levs, ldiag3d, do_cnvgwd, do_ca, cplchm
implicit none
integer, intent(in) :: im, levs
- logical, intent(in) :: ldiag3d, do_cnvgwd, do_ca, cplchm, isppt_deep
+ logical, intent(in) :: ldiag3d, do_cnvgwd, cplchm
real(kind=kind_phys), dimension(im,levs), intent(in) :: gu0
real(kind=kind_phys), dimension(im,levs), intent(in) :: gv0
real(kind=kind_phys), dimension(im,levs), intent(in) :: gt0
@@ -49,15 +49,7 @@ subroutine GFS_DCNV_generic_pre_run (im, levs, ldiag3d, do_cnvgwd, do_ca, cplchm
errmsg = ''
errflg = 0
- if (do_ca) then
- do k=1,levs
- do i=1,im
- gq0_water_vapor(i,k) = gq0_water_vapor(i,k)*(1.0 + ca_deep(i)/500.)
- enddo
- enddo
- endif
-
- if (ldiag3d .or. isppt_deep) then
+ if (ldiag3d) then
do k=1,levs
do i=1,im
save_t(i,k) = gt0(i,k)
@@ -73,7 +65,7 @@ subroutine GFS_DCNV_generic_pre_run (im, levs, ldiag3d, do_cnvgwd, do_ca, cplchm
enddo
endif
- if (ldiag3d .or. cplchm .or. isppt_deep) then
+ if (ldiag3d .or. cplchm) then
do k=1,levs
do i=1,im
save_qv(i,k) = gq0_water_vapor(i,k)
@@ -102,19 +94,19 @@ end subroutine GFS_DCNV_generic_post_finalize
!> \section arg_table_GFS_DCNV_generic_post_run Argument Table
!! \htmlinclude GFS_DCNV_generic_post_run.html
!!
- subroutine GFS_DCNV_generic_post_run (im, levs, lssav, ldiag3d, ras, cscnv, do_ca, &
- isppt_deep, frain, rain1, dtf, cld1d, save_u, save_v, save_t, save_qv, gu0, gv0, gt0, &
+ subroutine GFS_DCNV_generic_post_run (im, levs, lssav, ldiag3d, ras, cscnv, &
+ frain, rain1, dtf, cld1d, save_u, save_v, save_t, save_qv, gu0, gv0, gt0, &
gq0_water_vapor, ud_mf, dd_mf, dt_mf, con_g, npdf3d, num_p3d, ncnvcld3d, &
rainc, cldwrk, dt3dt, dq3dt, du3dt, dv3dt, upd_mf, dwn_mf, det_mf, &
cnvw, cnvc, cnvw_phy_f3d, cnvc_phy_f3d, &
- cape, tconvtend, qconvtend, uconvtend, vconvtend, errmsg, errflg)
+ errmsg, errflg)
use machine, only: kind_phys
implicit none
integer, intent(in) :: im, levs
- logical, intent(in) :: lssav, ldiag3d, ras, cscnv, do_ca, isppt_deep
+ logical, intent(in) :: lssav, ldiag3d, ras, cscnv
real(kind=kind_phys), intent(in) :: frain, dtf
real(kind=kind_phys), dimension(im), intent(in) :: rain1, cld1d
@@ -135,9 +127,6 @@ subroutine GFS_DCNV_generic_post_run (im, levs, lssav, ldiag3d, ras, cscnv, do_c
! as long as these do not get used when not allocated (it is still invalid Fortran code, though).
real(kind=kind_phys), dimension(:,:), intent(inout) :: cnvw_phy_f3d, cnvc_phy_f3d
- real(kind=kind_phys), dimension(im), intent(inout) :: cape
- real(kind=kind_phys), dimension(im,levs), intent(inout) :: tconvtend, qconvtend, uconvtend, vconvtend
-
character(len=*), intent(out) :: errmsg
integer, intent(out) :: errflg
@@ -148,11 +137,6 @@ subroutine GFS_DCNV_generic_post_run (im, levs, lssav, ldiag3d, ras, cscnv, do_c
errflg = 0
if (.not. ras .and. .not. cscnv) then
- if(do_ca) then
- do i=1,im
- cape(i) = cld1d(i)
- enddo
- endif
if (npdf3d == 3 .and. num_p3d == 4) then
do k=1,levs
do i=1,im
@@ -198,18 +182,6 @@ subroutine GFS_DCNV_generic_post_run (im, levs, lssav, ldiag3d, ras, cscnv, do_c
endif ! if (lssav)
-
- if (isppt_deep) then
- do k=1,levs
- do i=1,im
- tconvtend(i,k) = gt0(i,k) - save_t(i,k)
- qconvtend(i,k) = gq0_water_vapor(i,k) - save_qv(i,k)
- uconvtend(i,k) = gu0(i,k) - save_u(i,k)
- vconvtend(i,k) = gv0(i,k) - save_v(i,k)
- enddo
- enddo
- endif
-
end subroutine GFS_DCNV_generic_post_run
end module GFS_DCNV_generic_post
diff --git a/physics/GFS_DCNV_generic.meta b/physics/GFS_DCNV_generic.meta
index 07c75eafc..f632833f9 100644
--- a/physics/GFS_DCNV_generic.meta
+++ b/physics/GFS_DCNV_generic.meta
@@ -33,14 +33,6 @@
type = logical
intent = in
optional = F
-[do_ca]
- standard_name = flag_for_cellular_automata
- long_name = cellular automata main switch
- units = flag
- dimensions = ()
- type = logical
- intent = in
- optional = F
[cplchm]
standard_name = flag_for_chemistry_coupling
long_name = flag controlling cplchm collection (default off)
@@ -49,14 +41,6 @@
type = logical
intent = in
optional = F
-[isppt_deep]
- standard_name = flag_for_combination_of_sppt_with_isppt_deep
- long_name = switch for combination with isppt_deep.
- units = flag
- dimensions = ()
- type = logical
- intent = in
- optional = F
[gu0]
standard_name = x_wind_updated_by_physics
long_name = zonal wind updated by physics
@@ -217,22 +201,6 @@
type = logical
intent = in
optional = F
-[do_ca]
- standard_name = flag_for_cellular_automata
- long_name = cellular automata main switch
- units = flag
- dimensions = ()
- type = logical
- intent = in
- optional = F
-[isppt_deep]
- standard_name = flag_for_combination_of_sppt_with_isppt_deep
- long_name = switch for combination with isppt_deep.
- units = flag
- dimensions = ()
- type = logical
- intent = in
- optional = F
[frain]
standard_name = dynamics_to_physics_timestep_ratio
long_name = ratio of dynamics timestep to physics timestep
@@ -518,51 +486,6 @@
kind = kind_phys
intent = inout
optional = F
-[cape]
- standard_name = convective_available_potential_energy_for_coupling
- long_name = convective available potential energy for coupling
- units = m2 s-2
- dimensions = (horizontal_dimension)
- type = real
- kind = kind_phys
- intent = inout
- optional = F
-[tconvtend]
- standard_name = tendency_of_air_temperature_due_to_deep_convection_for_coupling_on_physics_timestep
- long_name = tendency of air temperature due to deep convection
- units = K
- dimensions = (horizontal_dimension,vertical_dimension)
- type = real
- kind = kind_phys
- intent = inout
- optional = F
-[qconvtend]
- standard_name = tendency_of_water_vapor_specific_humidity_due_to_deep_convection_for_coupling_on_physics_timestep
- long_name = tendency of specific humidity due to deep convection
- units = kg kg-1
- dimensions = (horizontal_dimension,vertical_dimension)
- type = real
- kind = kind_phys
- intent = inout
- optional = F
-[uconvtend]
- standard_name = tendency_of_x_wind_due_to_deep_convection_for_coupling_on_physics_timestep
- long_name = tendency_of_x_wind_due_to_deep_convection
- units = m s-1
- dimensions = (horizontal_dimension,vertical_dimension)
- type = real
- kind = kind_phys
- intent = inout
- optional = F
-[vconvtend]
- standard_name = tendency_of_y_wind_due_to_deep_convection_for_coupling_on_physics_timestep
- long_name = tendency_of_y_wind_due_to_deep_convection
- units = m s-1
- dimensions = (horizontal_dimension,vertical_dimension)
- type = real
- kind = kind_phys
- intent = inout
- optional = F
[errmsg]
standard_name = ccpp_error_message
long_name = error message for error handling in CCPP
diff --git a/physics/GFS_MP_generic.F90 b/physics/GFS_MP_generic.F90
index ab68e206a..291808fb8 100644
--- a/physics/GFS_MP_generic.F90
+++ b/physics/GFS_MP_generic.F90
@@ -85,7 +85,7 @@ subroutine GFS_MP_generic_post_run(im, ix, levs, kdt, nrcm, ncld, nncl, ntcw, nt
rann, xlat, xlon, gt0, gq0, prsl, prsi, phii, tsfc, ice, snow, graupel, save_t, save_qv, rain0, ice0, snow0, &
graupel0, del, rain, domr_diag, domzr_diag, domip_diag, doms_diag, tprcp, srflag, sr, cnvprcp, totprcp, totice, &
totsnw, totgrp, cnvprcpb, totprcpb, toticeb, totsnwb, totgrpb, dt3dt, dq3dt, rain_cpl, rainc_cpl, snow_cpl, pwat, &
- do_sppt, dtdtr, dtdtc, drain_cpl, dsnow_cpl, lsm, lsm_ruc, lsm_noahmp, raincprv, rainncprv, iceprv, snowprv, &
+ do_sppt, ca_global, dtdtr, dtdtc, drain_cpl, dsnow_cpl, lsm, lsm_ruc, lsm_noahmp, raincprv, rainncprv, iceprv, snowprv, &
graupelprv, draincprv, drainncprv, diceprv, dsnowprv, dgraupelprv, dtp, errmsg, errflg)
!
use machine, only: kind_phys
@@ -114,7 +114,7 @@ subroutine GFS_MP_generic_post_run(im, ix, levs, kdt, nrcm, ncld, nncl, ntcw, nt
real(kind=kind_phys), dimension(:,:), intent(inout) :: dt3dt, dq3dt
! Stochastic physics / surface perturbations
- logical, intent(in) :: do_sppt
+ logical, intent(in) :: do_sppt, ca_global
real(kind=kind_phys), dimension(im,levs), intent(inout) :: dtdtr
real(kind=kind_phys), dimension(im,levs), intent(in) :: dtdtc
real(kind=kind_phys), dimension(im), intent(inout) :: drain_cpl
@@ -375,7 +375,7 @@ subroutine GFS_MP_generic_post_run(im, ix, levs, kdt, nrcm, ncld, nncl, ntcw, nt
enddo
! Stochastic physics / surface perturbations
- if (do_sppt) then
+ if (do_sppt .or. ca_global) then
!--- radiation heating rate
dtdtr(1:im,:) = dtdtr(1:im,:) + dtdtc(1:im,:)*dtf
endif
diff --git a/physics/GFS_MP_generic.meta b/physics/GFS_MP_generic.meta
index ddf8cb813..c7082da3a 100644
--- a/physics/GFS_MP_generic.meta
+++ b/physics/GFS_MP_generic.meta
@@ -722,6 +722,14 @@
type = logical
intent = in
optional = F
+[ca_global]
+ standard_name = flag_for_global_cellular_automata
+ long_name = switch for global ca
+ units = flag
+ dimensions = ()
+ type = logical
+ intent = in
+ optional = F
[dtdtr]
standard_name = tendency_of_air_temperature_due_to_radiative_heating_on_physics_time_step
long_name = temp. change due to radiative heating per time step
diff --git a/physics/GFS_PBL_generic.F90 b/physics/GFS_PBL_generic.F90
index c99908014..abce53772 100644
--- a/physics/GFS_PBL_generic.F90
+++ b/physics/GFS_PBL_generic.F90
@@ -330,8 +330,8 @@ subroutine GFS_PBL_generic_post_run (im, levs, nvdiff, ntrac,
dqdt, dusfc_cpl, dvsfc_cpl, dtsfc_cpl, &
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, dt3dt, du3dt_PBL, du3dt_OGWD, dv3dt_PBL, dv3dt_OGWD, dq3dt, &
- dq3dt_ozone, rd, cp,fvirt, hvap, t1, q1, prsl, hflx, ushfsfci, oceanfrac, fice, dusfc_cice, dvsfc_cice, dtsfc_cice, &
- dqsfc_cice, wet, dry, icy, wind, stress_ocn, hflx_ocn, evap_ocn, ugrs1, vgrs1, dkt_cpl, dkt, hffac, hefac, &
+ dq3dt_ozone, rd, cp, fvirt, hvap, t1, q1, prsl, hflx, ushfsfci, oceanfrac, flag_cice, dusfc_cice, dvsfc_cice, &
+ dtsfc_cice, dqsfc_cice, wet, dry, icy, wind, stress_wat, hflx_wat, evap_wat, ugrs1, vgrs1, dkt_cpl, dkt, hffac, hefac, &
errmsg, errflg)
use machine, only : kind_phys
@@ -346,13 +346,14 @@ subroutine GFS_PBL_generic_post_run (im, levs, nvdiff, ntrac,
integer, intent(in) :: imp_physics_zhao_carr, imp_physics_mg, imp_physics_fer_hires
logical, intent(in) :: ltaerosol, cplflx, cplchm, lssav, ldiag3d, lsidea
logical, intent(in) :: hybedmf, do_shoc, satmedmf, shinhong, do_ysu
+ logical, dimension(:), intent(in) :: flag_cice
real(kind=kind_phys), intent(in) :: dtf
real(kind=kind_phys), intent(in) :: rd, cp, fvirt, hvap
- real(kind=kind_phys), dimension(:), intent(in) :: t1, q1, hflx, oceanfrac, fice
+ real(kind=kind_phys), dimension(:), intent(in) :: t1, q1, hflx, oceanfrac
real(kind=kind_phys), dimension(:,:), intent(in) :: prsl
real(kind=kind_phys), dimension(:), intent(in) :: dusfc_cice, dvsfc_cice, dtsfc_cice, dqsfc_cice, &
- wind, stress_ocn, hflx_ocn, evap_ocn, ugrs1, vgrs1
+ wind, stress_wat, hflx_wat, evap_wat, ugrs1, vgrs1
real(kind=kind_phys), dimension(im, levs, nvdiff), intent(in) :: dvdftra
real(kind=kind_phys), dimension(im), intent(in) :: dusfc1, dvsfc1, dtsfc1, dqsfc1, xmu
real(kind=kind_phys), dimension(im, levs), intent(in) :: dudt, dvdt, dtdt, htrsw, htrlw
@@ -382,7 +383,6 @@ subroutine GFS_PBL_generic_post_run (im, levs, nvdiff, ntrac,
real(kind=kind_phys), parameter :: zero = 0.0d0
real(kind=kind_phys), parameter :: one = 1.0d0
real(kind=kind_phys), parameter :: huge = 9.9692099683868690E36 ! NetCDF float FillValue, same as in GFS_typedefs.F90
- real(kind=kind_phys), parameter :: epsln = 1.0d-10 ! same as in GFS_physics_driver.F90
integer :: i, k, kk, k1, n
real(kind=kind_phys) :: tem, tem1, rho
@@ -550,24 +550,31 @@ subroutine GFS_PBL_generic_post_run (im, levs, nvdiff, ntrac,
if (cplflx) then
do i=1,im
if (oceanfrac(i) > zero) then ! Ocean only, NO LAKES
- if (fice(i) > one - epsln) then ! no open water, use results from CICE
- dusfci_cpl(i) = dusfc_cice(i)
- dvsfci_cpl(i) = dvsfc_cice(i)
- dtsfci_cpl(i) = dtsfc_cice(i)
- dqsfci_cpl(i) = dqsfc_cice(i)
+ if ( .not. wet(i)) then ! no open water
+ if (flag_cice(i)) then !use results from CICE
+ dusfci_cpl(i) = dusfc_cice(i)
+ dvsfci_cpl(i) = dvsfc_cice(i)
+ dtsfci_cpl(i) = dtsfc_cice(i)
+ dqsfci_cpl(i) = dqsfc_cice(i)
+ else !use PBL fluxes when CICE fluxes is unavailable
+ dusfci_cpl(i) = dusfc1(i)
+ dvsfci_cpl(i) = dvsfc1(i)
+ dtsfci_cpl(i) = dtsfc1(i)
+ dqsfci_cpl(i) = dqsfc1(i)
+ end if
elseif (icy(i) .or. dry(i)) then ! use stress_ocean from sfc_diff for opw component at mixed point
tem1 = max(q1(i), 1.e-8)
rho = prsl(i,1) / (rd*t1(i)*(one+fvirt*tem1))
if (wind(i) > zero) then
- tem = - rho * stress_ocn(i) / wind(i)
+ tem = - rho * stress_wat(i) / wind(i)
dusfci_cpl(i) = tem * ugrs1(i) ! U-momentum flux
dvsfci_cpl(i) = tem * vgrs1(i) ! V-momentum flux
else
dusfci_cpl(i) = zero
dvsfci_cpl(i) = zero
endif
- dtsfci_cpl(i) = cp * rho * hflx_ocn(i) ! sensible heat flux over open ocean
- dqsfci_cpl(i) = hvap * rho * evap_ocn(i) ! latent heat flux over open ocean
+ dtsfci_cpl(i) = cp * rho * hflx_wat(i) ! sensible heat flux over open ocean
+ dqsfci_cpl(i) = hvap * rho * evap_wat(i) ! latent heat flux over open ocean
else ! use results from PBL scheme for 100% open ocean
dusfci_cpl(i) = dusfc1(i)
dvsfci_cpl(i) = dvsfc1(i)
diff --git a/physics/GFS_PBL_generic.meta b/physics/GFS_PBL_generic.meta
index 61429eec9..c94d15916 100644
--- a/physics/GFS_PBL_generic.meta
+++ b/physics/GFS_PBL_generic.meta
@@ -1186,13 +1186,12 @@
kind = kind_phys
intent = in
optional = F
-[fice]
- standard_name = sea_ice_concentration
- long_name = ice fraction over open water
- units = frac
+[flag_cice]
+ standard_name = flag_for_cice
+ long_name = flag for cice
+ units = flag
dimensions = (horizontal_dimension)
- type = real
- kind = kind_phys
+ type = logical
intent = in
optional = F
[dusfc_cice]
@@ -1264,7 +1263,7 @@
kind = kind_phys
intent = in
optional = F
-[stress_ocn]
+[stress_wat]
standard_name = surface_wind_stress_over_ocean
long_name = surface wind stress over ocean
units = m2 s-2
@@ -1273,7 +1272,7 @@
kind = kind_phys
intent = in
optional = F
-[hflx_ocn]
+[hflx_wat]
standard_name = kinematic_surface_upward_sensible_heat_flux_over_ocean
long_name = kinematic surface upward sensible heat flux over ocean
units = K m s-1
@@ -1282,7 +1281,7 @@
kind = kind_phys
intent = in
optional = F
-[evap_ocn]
+[evap_wat]
standard_name = kinematic_surface_upward_latent_heat_flux_over_ocean
long_name = kinematic surface upward latent heat flux over ocean
units = kg kg-1 m s-1
diff --git a/physics/GFS_debug.F90 b/physics/GFS_debug.F90
index 3670f4ddd..4a096449d 100644
--- a/physics/GFS_debug.F90
+++ b/physics/GFS_debug.F90
@@ -480,17 +480,12 @@ subroutine GFS_diagtoscreen_run (Model, Statein, Stateout, Sfcprop, Coupling,
call print_var(mpirank,omprank, blkno, 'Coupling%sfc_wts' , Coupling%sfc_wts )
end if
if (Model%do_ca) then
- call print_var(mpirank,omprank, blkno, 'Coupling%tconvtend', Coupling%tconvtend )
- call print_var(mpirank,omprank, blkno, 'Coupling%qconvtend', Coupling%qconvtend )
- call print_var(mpirank,omprank, blkno, 'Coupling%uconvtend', Coupling%uconvtend )
- call print_var(mpirank,omprank, blkno, 'Coupling%vconvtend', Coupling%vconvtend )
- call print_var(mpirank,omprank, blkno, 'Coupling%ca_out ', Coupling%ca_out )
+ call print_var(mpirank,omprank, blkno, 'Coupling%ca1 ', Coupling%ca1 )
call print_var(mpirank,omprank, blkno, 'Coupling%ca_deep ', Coupling%ca_deep )
call print_var(mpirank,omprank, blkno, 'Coupling%ca_turb ', Coupling%ca_turb )
call print_var(mpirank,omprank, blkno, 'Coupling%ca_shal ', Coupling%ca_shal )
call print_var(mpirank,omprank, blkno, 'Coupling%ca_rad ', Coupling%ca_rad )
call print_var(mpirank,omprank, blkno, 'Coupling%ca_micro ', Coupling%ca_micro )
- call print_var(mpirank,omprank, blkno, 'Coupling%cape ', Coupling%cape )
end if
if(Model%imp_physics == Model%imp_physics_thompson .and. Model%ltaerosol) then
call print_var(mpirank,omprank, blkno, 'Coupling%nwfa2d', Coupling%nwfa2d)
diff --git a/physics/GFS_stochastics.F90 b/physics/GFS_stochastics.F90
index 99f84e3b1..9b4533cf9 100644
--- a/physics/GFS_stochastics.F90
+++ b/physics/GFS_stochastics.F90
@@ -26,7 +26,8 @@ end subroutine GFS_stochastics_finalize
!! -# defines random seed indices for radiation (in a reproducible way)
!! -# interpolates coefficients for prognostic ozone calculation
!! -# performs surface data cycling via the GFS gcycle routine
- subroutine GFS_stochastics_run (im, km, do_sppt, use_zmtnblck, do_shum, do_skeb, &
+ subroutine GFS_stochastics_run (im, km, kdt, do_sppt, use_zmtnblck, do_shum, &
+ do_skeb, do_ca,ca_global,ca1,si,vfact_ca, &
zmtnblck, sppt_wts, skebu_wts, skebv_wts, shum_wts,&
sppt_wts_inv, skebu_wts_inv, skebv_wts_inv, &
shum_wts_inv, diss_est, &
@@ -42,11 +43,13 @@ subroutine GFS_stochastics_run (im, km, do_sppt, use_zmtnblck, do_shum, do_skeb,
integer, intent(in) :: im
integer, intent(in) :: km
+ integer, intent(in) :: kdt
logical, intent(in) :: do_sppt
+ logical, intent(in) :: do_ca
+ logical, intent(in) :: ca_global
logical, intent(in) :: use_zmtnblck
logical, intent(in) :: do_shum
logical, intent(in) :: do_skeb
- !logical, intent(in) :: isppt_deep
real(kind_phys), dimension(1:im), intent(in) :: zmtnblck
! sppt_wts only allocated if do_sppt == .true.
real(kind_phys), dimension(:,:), intent(inout) :: sppt_wts
@@ -85,17 +88,16 @@ subroutine GFS_stochastics_run (im, km, do_sppt, use_zmtnblck, do_shum, do_skeb,
! drain_cpl, dsnow_cpl only allocated if cplflx == .true. or cplchm == .true.
real(kind_phys), dimension(:), intent(in) :: drain_cpl
real(kind_phys), dimension(:), intent(in) :: dsnow_cpl
- ! tconvtend ... vconvtend only allocated if isppt_deep == .true.
- !real(kind_phys), dimension(:,:), intent(in) :: tconvtend
- !real(kind_phys), dimension(:,:), intent(in) :: qconvtend
- !real(kind_phys), dimension(:,:), intent(in) :: uconvtend
- !real(kind_phys), dimension(:,:), intent(in) :: vconvtend
+ real(kind_phys), dimension(1:km), intent(in) :: si
+ real(kind_phys), dimension(1:km), intent(inout) :: vfact_ca
+ real(kind_phys), dimension(1:im), intent(in) :: ca1
character(len=*), intent(out) :: errmsg
integer, intent(out) :: errflg
!--- local variables
integer :: k, i
real(kind=kind_phys) :: upert, vpert, tpert, qpert, qnew, sppt_vwt
+ real(kind=kind_phys), dimension(1:im,1:km) :: ca
! Initialize CCPP error handling variables
errmsg = ''
@@ -126,22 +128,11 @@ subroutine GFS_stochastics_run (im, km, do_sppt, use_zmtnblck, do_shum, do_skeb,
endif
sppt_wts_inv(i,k)=sppt_wts(i,k)
- !if(isppt_deep)then
-
- ! upert = (gu0(i,k) - ugrs(i,k) - uconvtend(i,k)) + uconvtend(i,k) * sppt_wts(i,k)
- ! vpert = (gv0(i,k) - vgrs(i,k) - vconvtend(i,k)) + vconvtend(i,k) * sppt_wts(i,k)
- ! tpert = (gt0(i,k) - tgrs(i,k) - dtdtr(i,k) - tconvtend(i,k)) + tconvtend(i,k) * sppt_wts(i,k)
- ! qpert = (gq0(i,k) - qgrs(i,k) - qconvtend(i,k)) + qconvtend(i,k) * sppt_wts(i,k)
-
- !else
-
upert = (gu0(i,k) - ugrs(i,k)) * sppt_wts(i,k)
vpert = (gv0(i,k) - vgrs(i,k)) * sppt_wts(i,k)
tpert = (gt0(i,k) - tgrs(i,k) - dtdtr(i,k)) * sppt_wts(i,k)
qpert = (gq0(i,k) - qgrs(i,k)) * sppt_wts(i,k)
- !endif
-
gu0(i,k) = ugrs(i,k)+upert
gv0(i,k) = vgrs(i,k)+vpert
@@ -154,21 +145,6 @@ subroutine GFS_stochastics_run (im, km, do_sppt, use_zmtnblck, do_shum, do_skeb,
enddo
enddo
- !if(isppt_deep)then
- ! tprcp(:) = tprcp(:) + (sppt_wts(:,15) - 1 )*rainc(:)
- ! totprcp(:) = totprcp(:) + (sppt_wts(:,15) - 1 )*rainc(:)
- ! cnvprcp(:) = cnvprcp(:) + (sppt_wts(:,15) - 1 )*rainc(:)
- !! ! bucket precipitation adjustment due to sppt
- ! totprcpb(:) = totprcpb(:) + (sppt_wts(:,15) - 1 )*rainc(:)
- ! cnvprcpb(:) = cnvprcpb(:) + (sppt_wts(:,15) - 1 )*rainc(:)
-
- ! if (cplflx) then !Need to make proper adjustments for deep convection only perturbations
- ! rain_cpl(:) = rain_cpl(:) + (sppt_wts(:,15) - 1.0)*drain_cpl(:)
- ! snow_cpl(:) = snow_cpl(:) + (sppt_wts(:,15) - 1.0)*dsnow_cpl(:)
- ! endif
-
- !else
-
! instantaneous precip rate going into land model at the next time step
tprcp(:) = sppt_wts(:,15)*tprcp(:)
totprcp(:) = totprcp(:) + (sppt_wts(:,15) - 1 )*rain(:)
@@ -183,7 +159,75 @@ subroutine GFS_stochastics_run (im, km, do_sppt, use_zmtnblck, do_shum, do_skeb,
snow_cpl(:) = snow_cpl(:) + (sppt_wts(:,15) - 1.0)*dsnow_cpl(:)
endif
- !endif
+ endif
+
+ if (do_ca .and. ca_global) then
+
+ if(kdt == 1)then
+ do k=1,km
+ if (si(k) .lt. 0.1 .and. si(k) .gt. 0.025) then
+ vfact_ca(k) = (si(k)-0.025)/(0.1-0.025)
+ else if (si(k) .lt. 0.025) then
+ vfact_ca(k) = 0.0
+ else
+ vfact_ca(k) = 1.0
+ endif
+ enddo
+ vfact_ca(2)=vfact_ca(3)*0.5
+ vfact_ca(1)=0.0
+ endif
+
+ do k = 1,km
+ do i = 1,im
+ sppt_vwt=1.0
+ if (zmtnblck(i).EQ.0.0) then
+ sppt_vwt=1.0
+ else
+ if (k.GT.zmtnblck(i)+2) then
+ sppt_vwt=1.0
+ endif
+ if (k.LE.zmtnblck(i)) then
+ sppt_vwt=0.0
+ endif
+ if (k.EQ.zmtnblck(i)+1) then
+ sppt_vwt=0.333333
+ endif
+ if (k.EQ.zmtnblck(i)+2) then
+ sppt_vwt=0.666667
+ endif
+ endif
+
+ ca(i,k)=((ca1(i)-1.)*sppt_vwt*vfact_ca(k))+1.0
+
+ upert = (gu0(i,k) - ugrs(i,k)) * ca(i,k)
+ vpert = (gv0(i,k) - vgrs(i,k)) * ca(i,k)
+ tpert = (gt0(i,k) - tgrs(i,k) - dtdtr(i,k)) * ca(i,k)
+ qpert = (gq0(i,k) - qgrs(i,k)) * ca(i,k)
+ gu0(i,k) = ugrs(i,k)+upert
+ gv0(i,k) = vgrs(i,k)+vpert
+ !negative humidity check
+ qnew = qgrs(i,k)+qpert
+ if (qnew >= 1.0e-10) then
+ gq0(i,k) = qnew
+ gt0(i,k) = tgrs(i,k) + tpert + dtdtr(i,k)
+ endif
+ enddo
+ enddo
+
+ ! instantaneous precip rate going into land model at the next time step
+ tprcp(:) = ca(:,15)*tprcp(:)
+ totprcp(:) = totprcp(:) + (ca(:,15) - 1 )*rain(:)
+ ! acccumulated total and convective preciptiation
+ cnvprcp(:) = cnvprcp(:) + (ca(:,15) - 1 )*rainc(:)
+ ! bucket precipitation adjustment due to sppt
+ totprcpb(:) = totprcpb(:) + (ca(:,15) - 1 )*rain(:)
+ cnvprcpb(:) = cnvprcpb(:) + (ca(:,15) - 1 )*rainc(:)
+
+ if (cplflx) then
+ rain_cpl(:) = rain_cpl(:) + (ca(:,15) - 1.0)*drain_cpl(:)
+ snow_cpl(:) = snow_cpl(:) + (ca(:,15) - 1.0)*dsnow_cpl(:)
+ endif
+
endif
diff --git a/physics/GFS_stochastics.meta b/physics/GFS_stochastics.meta
index 9232c8d6a..c4fad912e 100644
--- a/physics/GFS_stochastics.meta
+++ b/physics/GFS_stochastics.meta
@@ -17,6 +17,14 @@
type = integer
intent = in
optional = F
+[kdt]
+ standard_name = index_of_time_step
+ long_name = current forecast iteration
+ units = index
+ dimensions = ()
+ type = integer
+ intent = in
+ optional = F
[do_sppt]
standard_name = flag_for_stochastic_surface_physics_perturbations
long_name = flag for stochastic surface physics perturbations
@@ -67,6 +75,49 @@
kind = kind_phys
intent = inout
optional = F
+[do_ca]
+ standard_name = flag_for_cellular_automata
+ long_name = cellular automata main switch
+ units = flag
+ dimensions = ()
+ type = logical
+ intent = in
+ optional = F
+[ca_global]
+ standard_name = flag_for_global_cellular_automata
+ long_name = switch for global ca
+ units = flag
+ dimensions = ()
+ type = logical
+ intent = in
+ optional = F
+[ca1]
+ standard_name = cellular_automata_global_pattern
+ long_name = cellular automata global pattern
+ units = flag
+ dimensions = (horizontal_dimension)
+ type = real
+ kind = kind_phys
+ intent = in
+ optional = F
+[vfact_ca]
+ standard_name = vertical_weight_for_ca
+ long_name = vertical weight for ca
+ units = frac
+ dimensions = (vertical_dimension)
+ type = real
+ kind = kind_phys
+ intent = inout
+ optional = F
+[si]
+ standard_name = vertical_sigma_coordinate_for_radiation_initialization
+ long_name = vertical sigma coordinate for radiation initialization
+ units = none
+ dimensions = (number_of_vertical_layers_for_radiation_calculations_plus_one)
+ type = real
+ kind = kind_phys
+ intent = in
+ optional = F
[skebu_wts]
standard_name = weights_for_stochastic_skeb_perturbation_of_x_wind
long_name = weights for stochastic skeb perturbation of x wind
diff --git a/physics/GFS_suite_interstitial.F90 b/physics/GFS_suite_interstitial.F90
index 1707c7f7c..09daf83db 100644
--- a/physics/GFS_suite_interstitial.F90
+++ b/physics/GFS_suite_interstitial.F90
@@ -160,7 +160,7 @@ end subroutine GFS_suite_interstitial_2_finalize
subroutine GFS_suite_interstitial_2_run (im, levs, lssav, ldiag3d, lsidea, cplflx, flag_cice, shal_cnv, old_monin, mstrat, &
do_shoc, frac_grid, imfshalcnv, dtf, xcosz, adjsfcdsw, adjsfcdlw, cice, pgr, ulwsfc_cice, lwhd, htrsw, htrlw, xmu, ctei_rm, &
work1, work2, prsi, tgrs, prsl, qgrs_water_vapor, qgrs_cloud_water, cp, hvap, prslk, suntim, adjsfculw, adjsfculw_lnd, &
- adjsfculw_ice, adjsfculw_ocn, dlwsfc, ulwsfc, psmean, dt3dt_lw, dt3dt_sw, dt3dt_pbl, dt3dt_dcnv, dt3dt_scnv, dt3dt_mp, &
+ adjsfculw_ice, adjsfculw_wat, dlwsfc, ulwsfc, psmean, dt3dt_lw, dt3dt_sw, dt3dt_pbl, dt3dt_dcnv, dt3dt_scnv, dt3dt_mp, &
ctei_rml, ctei_r, kinver, dry, icy, wet, frland, huge, errmsg, errflg)
implicit none
@@ -181,7 +181,7 @@ subroutine GFS_suite_interstitial_2_run (im, levs, lssav, ldiag3d, lsidea, cplfl
integer, intent(inout), dimension(im) :: kinver
real(kind=kind_phys), intent(inout), dimension(im) :: suntim, dlwsfc, ulwsfc, psmean, ctei_rml, ctei_r
- real(kind=kind_phys), intent(in ), dimension(im) :: adjsfculw_lnd, adjsfculw_ice, adjsfculw_ocn
+ real(kind=kind_phys), intent(in ), dimension(im) :: adjsfculw_lnd, adjsfculw_ice, adjsfculw_wat
real(kind=kind_phys), intent( out), dimension(im) :: adjsfculw
! These arrays are only allocated if ldiag3d is .true.
@@ -232,11 +232,11 @@ subroutine GFS_suite_interstitial_2_run (im, levs, lssav, ldiag3d, lsidea, cplfl
if (flag_cice(i)) then
adjsfculw(i) = adjsfculw_lnd(i) * frland(i) &
+ ulwsfc_cice(i) * tem &
- + adjsfculw_ocn(i) * (one - frland(i) - tem)
+ + adjsfculw_wat(i) * (one - frland(i) - tem)
else
adjsfculw(i) = adjsfculw_lnd(i) * frland(i) &
+ adjsfculw_ice(i) * tem &
- + adjsfculw_ocn(i) * (one - frland(i) - tem)
+ + adjsfculw_wat(i) * (one - frland(i) - tem)
endif
enddo
else
@@ -246,20 +246,20 @@ subroutine GFS_suite_interstitial_2_run (im, levs, lssav, ldiag3d, lsidea, cplfl
elseif (icy(i)) then ! ice (and water)
tem = one - cice(i)
if (flag_cice(i)) then
- if (wet(i) .and. adjsfculw_ocn(i) /= huge) then
- adjsfculw(i) = ulwsfc_cice(i)*cice(i) + adjsfculw_ocn(i)*tem
+ if (wet(i) .and. adjsfculw_wat(i) /= huge) then
+ adjsfculw(i) = ulwsfc_cice(i)*cice(i) + adjsfculw_wat(i)*tem
else
adjsfculw(i) = ulwsfc_cice(i)
endif
else
- if (wet(i) .and. adjsfculw_ocn(i) /= huge) then
- adjsfculw(i) = adjsfculw_ice(i)*cice(i) + adjsfculw_ocn(i)*tem
+ if (wet(i) .and. adjsfculw_wat(i) /= huge) then
+ adjsfculw(i) = adjsfculw_ice(i)*cice(i) + adjsfculw_wat(i)*tem
else
adjsfculw(i) = adjsfculw_ice(i)
endif
endif
else ! all water
- adjsfculw(i) = adjsfculw_ocn(i)
+ adjsfculw(i) = adjsfculw_wat(i)
endif
enddo
endif
diff --git a/physics/GFS_suite_interstitial.meta b/physics/GFS_suite_interstitial.meta
index 0af5e9db7..7f6d0a9ca 100644
--- a/physics/GFS_suite_interstitial.meta
+++ b/physics/GFS_suite_interstitial.meta
@@ -604,7 +604,7 @@
kind = kind_phys
intent = in
optional = F
-[adjsfculw_ocn]
+[adjsfculw_wat]
standard_name = surface_upwelling_longwave_flux_over_ocean_interstitial
long_name = surface upwelling longwave flux at current time over ocean (temporary use as interstitial)
units = W m-2
diff --git a/physics/GFS_surface_composites.F90 b/physics/GFS_surface_composites.F90
index 30067976e..57158321d 100644
--- a/physics/GFS_surface_composites.F90
+++ b/physics/GFS_surface_composites.F90
@@ -26,12 +26,12 @@ end subroutine GFS_surface_composites_pre_finalize
!!
subroutine GFS_surface_composites_pre_run (im, frac_grid, flag_cice, cplflx, cplwav2atm, &
landfrac, lakefrac, oceanfrac, &
- frland, dry, icy, lake, ocean, wet, cice, cimin, zorl, zorlo, zorll, zorl_ocn, &
- zorl_lnd, zorl_ice, snowd, snowd_ocn, snowd_lnd, snowd_ice, tprcp, tprcp_ocn, &
- tprcp_lnd, tprcp_ice, uustar, uustar_lnd, uustar_ice, weasd, weasd_ocn, &
- weasd_lnd, weasd_ice, ep1d_ice, tsfc, tsfco, tsfcl, tsfc_ocn, tsfc_lnd, &
- tsfc_ice, tisfc, tice, tsurf, tsurf_ocn, tsurf_lnd, tsurf_ice, gflx_ice, &
- tgice, islmsk, semis_rad, semis_ocn, semis_lnd, semis_ice, &
+ frland, dry, icy, lake, ocean, wet, cice, cimin, zorl, zorlo, zorll, zorl_wat, &
+ zorl_lnd, zorl_ice, snowd, snowd_wat, snowd_lnd, snowd_ice, tprcp, tprcp_wat, &
+ tprcp_lnd, tprcp_ice, uustar, uustar_lnd, uustar_ice, weasd, weasd_wat, &
+ weasd_lnd, weasd_ice, ep1d_ice, tsfc, tsfco, tsfcl, tsfc_wat, tsfc_lnd, &
+ tsfc_ice, tisfc, tice, tsurf, tsurf_wat, tsurf_lnd, tsurf_ice, gflx_ice, &
+ tgice, islmsk, semis_rad, semis_wat, semis_lnd, semis_ice, &
min_lakeice, min_seaice, errmsg, errflg)
implicit none
@@ -48,14 +48,14 @@ subroutine GFS_surface_composites_pre_run (im, frac_grid, flag_cice, cplflx, cpl
real(kind=kind_phys), dimension(im), intent(in ) :: zorl, snowd, tprcp, uustar, weasd
real(kind=kind_phys), dimension(im), intent(inout) :: zorlo, zorll, tsfc, tsfco, tsfcl, tisfc, tsurf
- real(kind=kind_phys), dimension(im), intent(inout) :: snowd_ocn, snowd_lnd, snowd_ice, tprcp_ocn, &
- tprcp_lnd, tprcp_ice, zorl_ocn, zorl_lnd, zorl_ice, tsfc_ocn, tsfc_lnd, tsfc_ice, tsurf_ocn, &
- tsurf_lnd, tsurf_ice, uustar_lnd, uustar_ice, weasd_ocn, weasd_lnd, weasd_ice, ep1d_ice, gflx_ice
+ real(kind=kind_phys), dimension(im), intent(inout) :: snowd_wat, snowd_lnd, snowd_ice, tprcp_wat, &
+ tprcp_lnd, tprcp_ice, zorl_wat, zorl_lnd, zorl_ice, tsfc_wat, tsfc_lnd, tsfc_ice, tsurf_wat, &
+ tsurf_lnd, tsurf_ice, uustar_lnd, uustar_ice, weasd_wat, weasd_lnd, weasd_ice, ep1d_ice, gflx_ice
real(kind=kind_phys), dimension(im), intent( out) :: tice
real(kind=kind_phys), intent(in ) :: tgice
integer, dimension(im), intent(in ) :: islmsk
real(kind=kind_phys), dimension(im), intent(in ) :: semis_rad
- real(kind=kind_phys), dimension(im), intent(inout) :: semis_ocn, semis_lnd, semis_ice
+ real(kind=kind_phys), dimension(im), intent(inout) :: semis_wat, semis_lnd, semis_ice
real(kind=kind_phys), intent(in ) :: min_lakeice, min_seaice
! CCPP error handling
@@ -138,18 +138,18 @@ subroutine GFS_surface_composites_pre_run (im, frac_grid, flag_cice, cplflx, cpl
endif
do i=1,im
- tprcp_ocn(i) = tprcp(i)
+ tprcp_wat(i) = tprcp(i)
tprcp_lnd(i) = tprcp(i)
tprcp_ice(i) = tprcp(i)
if (wet(i)) then ! Water
- zorl_ocn(i) = zorlo(i)
- tsfc_ocn(i) = tsfco(i)
- tsurf_ocn(i) = tsfco(i)
-! weasd_ocn(i) = weasd(i)
-! snowd_ocn(i) = snowd(i)
- weasd_ocn(i) = zero
- snowd_ocn(i) = zero
- semis_ocn(i) = 0.984d0
+ zorl_wat(i) = zorlo(i)
+ tsfc_wat(i) = tsfco(i)
+ tsurf_wat(i) = tsfco(i)
+! weasd_wat(i) = weasd(i)
+! snowd_wat(i) = snowd(i)
+ weasd_wat(i) = zero
+ snowd_wat(i) = zero
+ semis_wat(i) = 0.984d0
endif
if (dry(i)) then ! Land
uustar_lnd(i) = uustar(i)
@@ -204,8 +204,8 @@ end subroutine GFS_surface_composites_inter_finalize
!> \section arg_table_GFS_surface_composites_inter_run Argument Table
!! \htmlinclude GFS_surface_composites_inter_run.html
!!
- subroutine GFS_surface_composites_inter_run (im, dry, icy, wet, semis_ocn, semis_lnd, semis_ice, adjsfcdlw, &
- gabsbdlw_lnd, gabsbdlw_ice, gabsbdlw_ocn, &
+ subroutine GFS_surface_composites_inter_run (im, dry, icy, wet, semis_wat, semis_lnd, semis_ice, adjsfcdlw, &
+ gabsbdlw_lnd, gabsbdlw_ice, gabsbdlw_wat, &
adjsfcusw, adjsfcdsw, adjsfcnsw, errmsg, errflg)
implicit none
@@ -213,9 +213,9 @@ subroutine GFS_surface_composites_inter_run (im, dry, icy, wet, semis_ocn, semis
! Interface variables
integer, intent(in ) :: im
logical, dimension(im), intent(in ) :: dry, icy, wet
- real(kind=kind_phys), dimension(im), intent(in ) :: semis_ocn, semis_lnd, semis_ice, adjsfcdlw, &
+ real(kind=kind_phys), dimension(im), intent(in ) :: semis_wat, semis_lnd, semis_ice, adjsfcdlw, &
adjsfcdsw, adjsfcnsw
- real(kind=kind_phys), dimension(im), intent(inout) :: gabsbdlw_lnd, gabsbdlw_ice, gabsbdlw_ocn
+ real(kind=kind_phys), dimension(im), intent(inout) :: gabsbdlw_lnd, gabsbdlw_ice, gabsbdlw_wat
real(kind=kind_phys), dimension(im), intent(out) :: adjsfcusw
! CCPP error handling
@@ -250,7 +250,7 @@ subroutine GFS_surface_composites_inter_run (im, dry, icy, wet, semis_ocn, semis
do i=1,im
if (dry(i)) gabsbdlw_lnd(i) = semis_lnd(i) * adjsfcdlw(i)
if (icy(i)) gabsbdlw_ice(i) = semis_ice(i) * adjsfcdlw(i)
- if (wet(i)) gabsbdlw_ocn(i) = semis_ocn(i) * adjsfcdlw(i)
+ if (wet(i)) gabsbdlw_wat(i) = semis_wat(i) * adjsfcdlw(i)
adjsfcusw(i) = adjsfcdsw(i) - adjsfcnsw(i)
enddo
@@ -285,29 +285,29 @@ end subroutine GFS_surface_composites_post_finalize
!!
#endif
subroutine GFS_surface_composites_post_run ( &
- im, cplflx, cplwav2atm, frac_grid, flag_cice, islmsk, dry, wet, icy, landfrac, lakefrac, oceanfrac, &
- zorl, zorlo, zorll, zorl_ocn, zorl_lnd, zorl_ice, &
- cd, cd_ocn, cd_lnd, cd_ice, cdq, cdq_ocn, cdq_lnd, cdq_ice, rb, rb_ocn, rb_lnd, rb_ice, stress, stress_ocn, stress_lnd, &
- stress_ice, ffmm, ffmm_ocn, ffmm_lnd, ffmm_ice, ffhh, ffhh_ocn, ffhh_lnd, ffhh_ice, uustar, uustar_ocn, uustar_lnd, &
- uustar_ice, fm10, fm10_ocn, fm10_lnd, fm10_ice, fh2, fh2_ocn, fh2_lnd, fh2_ice, tsurf, tsurf_ocn, tsurf_lnd, tsurf_ice, &
- cmm, cmm_ocn, cmm_lnd, cmm_ice, chh, chh_ocn, chh_lnd, chh_ice, gflx, gflx_ocn, gflx_lnd, gflx_ice, ep1d, ep1d_ocn, &
- ep1d_lnd, ep1d_ice, weasd, weasd_ocn, weasd_lnd, weasd_ice, snowd, snowd_ocn, snowd_lnd, snowd_ice, tprcp, tprcp_ocn, &
- tprcp_lnd, tprcp_ice, evap, evap_ocn, evap_lnd, evap_ice, hflx, hflx_ocn, hflx_lnd, hflx_ice, qss, qss_ocn, qss_lnd, &
- qss_ice, tsfc, tsfco, tsfcl, tsfc_ocn, tsfc_lnd, tsfc_ice, tisfc, tice, hice, cice, errmsg, errflg)
+ im, kice, km, cplflx, cplwav2atm, frac_grid, flag_cice, islmsk, dry, wet, icy, landfrac, lakefrac, oceanfrac, &
+ zorl, zorlo, zorll, zorl_wat, zorl_lnd, zorl_ice, &
+ cd, cd_wat, cd_lnd, cd_ice, cdq, cdq_wat, cdq_lnd, cdq_ice, rb, rb_wat, rb_lnd, rb_ice, stress, stress_wat, stress_lnd, &
+ stress_ice, ffmm, ffmm_wat, ffmm_lnd, ffmm_ice, ffhh, ffhh_wat, ffhh_lnd, ffhh_ice, uustar, uustar_wat, uustar_lnd, &
+ uustar_ice, fm10, fm10_wat, fm10_lnd, fm10_ice, fh2, fh2_wat, fh2_lnd, fh2_ice, tsurf, tsurf_wat, tsurf_lnd, tsurf_ice, &
+ cmm, cmm_wat, cmm_lnd, cmm_ice, chh, chh_wat, chh_lnd, chh_ice, gflx, gflx_wat, gflx_lnd, gflx_ice, ep1d, ep1d_wat, &
+ ep1d_lnd, ep1d_ice, weasd, weasd_wat, weasd_lnd, weasd_ice, snowd, snowd_wat, snowd_lnd, snowd_ice, tprcp, tprcp_wat, &
+ tprcp_lnd, tprcp_ice, evap, evap_wat, evap_lnd, evap_ice, hflx, hflx_wat, hflx_lnd, hflx_ice, qss, qss_wat, qss_lnd, &
+ qss_ice, tsfc, tsfco, tsfcl, tsfc_wat, tsfc_lnd, tsfc_ice, tisfc, tice, hice, cice, tiice, stc, errmsg, errflg)
implicit none
- integer, intent(in) :: im
+ integer, intent(in) :: im, kice, km
logical, intent(in) :: cplflx, frac_grid, cplwav2atm
logical, dimension(im), intent(in) :: flag_cice, dry, wet, icy
integer, dimension(im), intent(in) :: islmsk
real(kind=kind_phys), dimension(im), intent(in) :: landfrac, lakefrac, oceanfrac, &
- zorl_ocn, zorl_lnd, zorl_ice, cd_ocn, cd_lnd, cd_ice, cdq_ocn, cdq_lnd, cdq_ice, rb_ocn, rb_lnd, rb_ice, stress_ocn, &
- stress_lnd, stress_ice, ffmm_ocn, ffmm_lnd, ffmm_ice, ffhh_ocn, ffhh_lnd, ffhh_ice, uustar_ocn, uustar_lnd, uustar_ice, &
- fm10_ocn, fm10_lnd, fm10_ice, fh2_ocn, fh2_lnd, fh2_ice, tsurf_ocn, tsurf_lnd, tsurf_ice, cmm_ocn, cmm_lnd, cmm_ice, &
- chh_ocn, chh_lnd, chh_ice, gflx_ocn, gflx_lnd, gflx_ice, ep1d_ocn, ep1d_lnd, ep1d_ice, weasd_ocn, weasd_lnd, weasd_ice, &
- snowd_ocn, snowd_lnd, snowd_ice,tprcp_ocn, tprcp_lnd, tprcp_ice, evap_ocn, evap_lnd, evap_ice, hflx_ocn, hflx_lnd, &
- hflx_ice, qss_ocn, qss_lnd, qss_ice, tsfc_ocn, tsfc_lnd, tsfc_ice
+ zorl_wat, zorl_lnd, zorl_ice, cd_wat, cd_lnd, cd_ice, cdq_wat, cdq_lnd, cdq_ice, rb_wat, rb_lnd, rb_ice, stress_wat, &
+ stress_lnd, stress_ice, ffmm_wat, ffmm_lnd, ffmm_ice, ffhh_wat, ffhh_lnd, ffhh_ice, uustar_wat, uustar_lnd, uustar_ice, &
+ fm10_wat, fm10_lnd, fm10_ice, fh2_wat, fh2_lnd, fh2_ice, tsurf_wat, tsurf_lnd, tsurf_ice, cmm_wat, cmm_lnd, cmm_ice, &
+ chh_wat, chh_lnd, chh_ice, gflx_wat, gflx_lnd, gflx_ice, ep1d_wat, ep1d_lnd, ep1d_ice, weasd_wat, weasd_lnd, weasd_ice, &
+ snowd_wat, snowd_lnd, snowd_ice,tprcp_wat, tprcp_lnd, tprcp_ice, evap_wat, evap_lnd, evap_ice, hflx_wat, hflx_lnd, &
+ hflx_ice, qss_wat, qss_lnd, qss_ice, tsfc_wat, tsfc_lnd, tsfc_ice
real(kind=kind_phys), dimension(im), intent(inout) :: zorl, zorlo, zorll, cd, cdq, rb, stress, ffmm, ffhh, uustar, fm10, &
fh2, tsurf, cmm, chh, gflx, ep1d, weasd, snowd, tprcp, evap, hflx, qss, tsfc, tsfco, tsfcl, tisfc
@@ -315,11 +315,14 @@ subroutine GFS_surface_composites_post_run (
real(kind=kind_phys), dimension(im), intent(in ) :: tice ! interstitial sea ice temperature
real(kind=kind_phys), dimension(im), intent(inout) :: hice, cice
+ real(kind=kind_phys), dimension(im, kice), intent(in ) :: tiice
+ real(kind=kind_phys), dimension(im, km), intent(inout) :: stc
+
character(len=*), intent(out) :: errmsg
integer, intent(out) :: errflg
! Local variables
- integer :: i
+ integer :: i, k
real(kind=kind_phys) :: txl, txi, txo, tem
! Initialize CCPP error handling variables
@@ -337,27 +340,27 @@ subroutine GFS_surface_composites_post_run (
txi = cice(i)*(one - txl) ! txi = ice fraction wrt whole cell
txo = max(zero, one - txl - txi)
- zorl(i) = txl*zorl_lnd(i) + txi*zorl_ice(i) + txo*zorl_ocn(i)
- cd(i) = txl*cd_lnd(i) + txi*cd_ice(i) + txo*cd_ocn(i)
- cdq(i) = txl*cdq_lnd(i) + txi*cdq_ice(i) + txo*cdq_ocn(i)
- rb(i) = txl*rb_lnd(i) + txi*rb_ice(i) + txo*rb_ocn(i)
- stress(i) = txl*stress_lnd(i) + txi*stress_ice(i) + txo*stress_ocn(i)
- ffmm(i) = txl*ffmm_lnd(i) + txi*ffmm_ice(i) + txo*ffmm_ocn(i)
- ffhh(i) = txl*ffhh_lnd(i) + txi*ffhh_ice(i) + txo*ffhh_ocn(i)
- uustar(i) = txl*uustar_lnd(i) + txi*uustar_ice(i) + txo*uustar_ocn(i)
- fm10(i) = txl*fm10_lnd(i) + txi*fm10_ice(i) + txo*fm10_ocn(i)
- fh2(i) = txl*fh2_lnd(i) + txi*fh2_ice(i) + txo*fh2_ocn(i)
- !tsurf(i) = txl*tsurf_lnd(i) + txi*tice(i) + txo*tsurf_ocn(i)
- !tsurf(i) = txl*tsurf_lnd(i) + txi*tsurf_ice(i) + txo*tsurf_ocn(i) ! not used again! Moorthi
- cmm(i) = txl*cmm_lnd(i) + txi*cmm_ice(i) + txo*cmm_ocn(i)
- chh(i) = txl*chh_lnd(i) + txi*chh_ice(i) + txo*chh_ocn(i)
- !gflx(i) = txl*gflx_lnd(i) + txi*gflx_ice(i) + txo*gflx_ocn(i)
- ep1d(i) = txl*ep1d_lnd(i) + txi*ep1d_ice(i) + txo*ep1d_ocn(i)
- !weasd(i) = txl*weasd_lnd(i) + txi*weasd_ice(i) + txo*weasd_ocn(i)
- !snowd(i) = txl*snowd_lnd(i) + txi*snowd_ice(i) + txo*snowd_ocn(i)
+ zorl(i) = txl*zorl_lnd(i) + txi*zorl_ice(i) + txo*zorl_wat(i)
+ cd(i) = txl*cd_lnd(i) + txi*cd_ice(i) + txo*cd_wat(i)
+ cdq(i) = txl*cdq_lnd(i) + txi*cdq_ice(i) + txo*cdq_wat(i)
+ rb(i) = txl*rb_lnd(i) + txi*rb_ice(i) + txo*rb_wat(i)
+ stress(i) = txl*stress_lnd(i) + txi*stress_ice(i) + txo*stress_wat(i)
+ ffmm(i) = txl*ffmm_lnd(i) + txi*ffmm_ice(i) + txo*ffmm_wat(i)
+ ffhh(i) = txl*ffhh_lnd(i) + txi*ffhh_ice(i) + txo*ffhh_wat(i)
+ uustar(i) = txl*uustar_lnd(i) + txi*uustar_ice(i) + txo*uustar_wat(i)
+ fm10(i) = txl*fm10_lnd(i) + txi*fm10_ice(i) + txo*fm10_wat(i)
+ fh2(i) = txl*fh2_lnd(i) + txi*fh2_ice(i) + txo*fh2_wat(i)
+ !tsurf(i) = txl*tsurf_lnd(i) + txi*tice(i) + txo*tsurf_wat(i)
+ !tsurf(i) = txl*tsurf_lnd(i) + txi*tsurf_ice(i) + txo*tsurf_wat(i) ! not used again! Moorthi
+ cmm(i) = txl*cmm_lnd(i) + txi*cmm_ice(i) + txo*cmm_wat(i)
+ chh(i) = txl*chh_lnd(i) + txi*chh_ice(i) + txo*chh_wat(i)
+ !gflx(i) = txl*gflx_lnd(i) + txi*gflx_ice(i) + txo*gflx_wat(i)
+ ep1d(i) = txl*ep1d_lnd(i) + txi*ep1d_ice(i) + txo*ep1d_wat(i)
+ !weasd(i) = txl*weasd_lnd(i) + txi*weasd_ice(i) + txo*weasd_wat(i)
+ !snowd(i) = txl*snowd_lnd(i) + txi*snowd_ice(i) + txo*snowd_wat(i)
weasd(i) = txl*weasd_lnd(i) + txi*weasd_ice(i)
snowd(i) = txl*snowd_lnd(i) + txi*snowd_ice(i)
- !tprcp(i) = txl*tprcp_lnd(i) + txi*tprcp_ice(i) + txo*tprcp_ocn(i)
+ !tprcp(i) = txl*tprcp_lnd(i) + txi*tprcp_ice(i) + txo*tprcp_wat(i)
if (.not. flag_cice(i) .and. islmsk(i) == 2) then
tem = one - txl
@@ -366,24 +369,24 @@ subroutine GFS_surface_composites_post_run (
qss(i) = txl*qss_lnd(i) + tem*qss_ice(i)
gflx(i) = txl*gflx_lnd(i) + tem*gflx_ice(i)
else
- evap(i) = txl*evap_lnd(i) + txi*evap_ice(i) + txo*evap_ocn(i)
- hflx(i) = txl*hflx_lnd(i) + txi*hflx_ice(i) + txo*hflx_ocn(i)
- qss(i) = txl*qss_lnd(i) + txi*qss_ice(i) + txo*qss_ocn(i)
- gflx(i) = txl*gflx_lnd(i) + txi*gflx_ice(i) + txo*gflx_ocn(i)
+ evap(i) = txl*evap_lnd(i) + txi*evap_ice(i) + txo*evap_wat(i)
+ hflx(i) = txl*hflx_lnd(i) + txi*hflx_ice(i) + txo*hflx_wat(i)
+ qss(i) = txl*qss_lnd(i) + txi*qss_ice(i) + txo*qss_wat(i)
+ gflx(i) = txl*gflx_lnd(i) + txi*gflx_ice(i) + txo*gflx_wat(i)
endif
- tsfc(i) = txl*tsfc_lnd(i) + txi*tice(i) + txo*tsfc_ocn(i)
+ tsfc(i) = txl*tsfc_lnd(i) + txi*tice(i) + txo*tsfc_wat(i)
zorll(i) = zorl_lnd(i)
- zorlo(i) = zorl_ocn(i)
+ zorlo(i) = zorl_wat(i)
if (dry(i)) tsfcl(i) = tsfc_lnd(i) ! over land
- if (wet(i)) tsfco(i) = tsfc_ocn(i) ! over lake or ocean when uncoupled
+ if (wet(i)) tsfco(i) = tsfc_wat(i) ! over lake or ocean when uncoupled
! for coupled model ocean will replace this
! if (icy(i)) tisfc(i) = tsfc_ice(i) ! over ice when uncoupled
! if (icy(i)) tisfc(i) = tice(i) ! over ice when uncoupled
! if (wet(i) .and. .not. cplflx) then
-! tsfco(i) = tsfc_ocn(i) ! over lake or ocean when uncoupled
+! tsfco(i) = tsfc_wat(i) ! over lake or ocean when uncoupled
! tisfc(i) = tsfc_ice(i) ! over ice when uncoupled
! endif
@@ -429,30 +432,30 @@ subroutine GFS_surface_composites_post_run (
!cice(i) = zero
!tisfc(i) = tsfc(i)
elseif (islmsk(i) == 0) then
- zorl(i) = zorl_ocn(i)
- cd(i) = cd_ocn(i)
- cdq(i) = cdq_ocn(i)
- rb(i) = rb_ocn(i)
- stress(i) = stress_ocn(i)
- ffmm(i) = ffmm_ocn(i)
- ffhh(i) = ffhh_ocn(i)
- uustar(i) = uustar_ocn(i)
- fm10(i) = fm10_ocn(i)
- fh2(i) = fh2_ocn(i)
- !tsurf(i) = tsurf_ocn(i)
- tsfco(i) = tsfc_ocn(i) ! over lake (and ocean when uncoupled)
- if( cplflx ) tsfcl(i) = tsfc_ocn(i) ! for restart repro comparisons
- cmm(i) = cmm_ocn(i)
- chh(i) = chh_ocn(i)
- gflx(i) = gflx_ocn(i)
- ep1d(i) = ep1d_ocn(i)
- weasd(i) = weasd_ocn(i)
- snowd(i) = snowd_ocn(i)
- !tprcp(i) = tprcp_ocn(i)
- evap(i) = evap_ocn(i)
- hflx(i) = hflx_ocn(i)
- qss(i) = qss_ocn(i)
- tsfc(i) = tsfc_ocn(i)
+ zorl(i) = zorl_wat(i)
+ cd(i) = cd_wat(i)
+ cdq(i) = cdq_wat(i)
+ rb(i) = rb_wat(i)
+ stress(i) = stress_wat(i)
+ ffmm(i) = ffmm_wat(i)
+ ffhh(i) = ffhh_wat(i)
+ uustar(i) = uustar_wat(i)
+ fm10(i) = fm10_wat(i)
+ fh2(i) = fh2_wat(i)
+ !tsurf(i) = tsurf_wat(i)
+ tsfco(i) = tsfc_wat(i) ! over lake (and ocean when uncoupled)
+ if( cplflx ) tsfcl(i) = tsfc_wat(i) ! for restart repro comparisons
+ cmm(i) = cmm_wat(i)
+ chh(i) = chh_wat(i)
+ gflx(i) = gflx_wat(i)
+ ep1d(i) = ep1d_wat(i)
+ weasd(i) = weasd_wat(i)
+ snowd(i) = snowd_wat(i)
+ !tprcp(i) = tprcp_wat(i)
+ evap(i) = evap_wat(i)
+ hflx(i) = hflx_wat(i)
+ qss(i) = qss_wat(i)
+ tsfc(i) = tsfc_wat(i)
!hice(i) = zero
!cice(i) = zero
!tisfc(i) = tsfc(i)
@@ -461,7 +464,7 @@ subroutine GFS_surface_composites_post_run (
cd(i) = cd_ice(i)
cdq(i) = cdq_ice(i)
rb(i) = rb_ice(i)
- stress(i) = cice(i)*stress_ice(i) + (one-cice(i))*stress_ocn(i)
+ stress(i) = cice(i)*stress_ice(i) + (one-cice(i))*stress_wat(i)
ffmm(i) = ffmm_ice(i)
ffhh(i) = ffhh_ice(i)
uustar(i) = uustar_ice(i)
@@ -477,24 +480,27 @@ subroutine GFS_surface_composites_post_run (
ep1d(i) = ep1d_ice(i)
weasd(i) = weasd_ice(i)
snowd(i) = snowd_ice(i)
- !tprcp(i) = cice(i)*tprcp_ice(i) + (one-cice(i))*tprcp_ocn(i)
+ !tprcp(i) = cice(i)*tprcp_ice(i) + (one-cice(i))*tprcp_wat(i)
qss(i) = qss_ice(i)
evap(i) = evap_ice(i)
hflx(i) = hflx_ice(i)
qss(i) = qss_ice(i)
tsfc(i) = tsfc_ice(i)
- if( cplflx ) tsfcl(i) = tsfc_ice(i)
+ do k=1,kice ! store tiice in stc to reduce output in the nonfrac grid case
+ stc(i,k)=tiice(i,k)
+ end do
+ if( cplflx ) tsfcl(i) = tsfc_ice(i)
endif
zorll(i) = zorl_lnd(i)
- zorlo(i) = zorl_ocn(i)
+ zorlo(i) = zorl_wat(i)
if (flag_cice(i) .and. wet(i)) then ! this was already done for lake ice in sfc_sice
txi = cice(i)
txo = one - txi
- evap(i) = txi * evap_ice(i) + txo * evap_ocn(i)
- hflx(i) = txi * hflx_ice(i) + txo * hflx_ocn(i)
- tsfc(i) = txi * tsfc_ice(i) + txo * tsfc_ocn(i)
+ evap(i) = txi * evap_ice(i) + txo * evap_wat(i)
+ hflx(i) = txi * hflx_ice(i) + txo * hflx_wat(i)
+ tsfc(i) = txi * tsfc_ice(i) + txo * tsfc_wat(i)
else
if (islmsk(i) == 2) then
tisfc(i) = tice(i)
diff --git a/physics/GFS_surface_composites.meta b/physics/GFS_surface_composites.meta
index 832d9227e..31ca88d3d 100644
--- a/physics/GFS_surface_composites.meta
+++ b/physics/GFS_surface_composites.meta
@@ -162,7 +162,7 @@
kind = kind_phys
intent = inout
optional = F
-[zorl_ocn]
+[zorl_wat]
standard_name = surface_roughness_length_over_ocean_interstitial
long_name = surface roughness length over ocean (temporary use as interstitial)
units = cm
@@ -198,7 +198,7 @@
kind = kind_phys
intent = in
optional = F
-[snowd_ocn]
+[snowd_wat]
standard_name = surface_snow_thickness_water_equivalent_over_ocean
long_name = water equivalent snow depth over ocean
units = mm
@@ -234,7 +234,7 @@
kind = kind_phys
intent = in
optional = F
-[tprcp_ocn]
+[tprcp_wat]
standard_name = nonnegative_lwe_thickness_of_precipitation_amount_on_dynamics_timestep_over_ocean
long_name = total precipitation amount in each time step over ocean
units = m
@@ -297,7 +297,7 @@
kind = kind_phys
intent = in
optional = F
-[weasd_ocn]
+[weasd_wat]
standard_name = water_equivalent_accumulated_snow_depth_over_ocean
long_name = water equiv of acc snow depth over ocean
units = mm
@@ -360,7 +360,7 @@
kind = kind_phys
intent = inout
optional = F
-[tsfc_ocn]
+[tsfc_wat]
standard_name = surface_skin_temperature_over_ocean_interstitial
long_name = surface skin temperature over ocean (temporary use as interstitial)
units = K
@@ -414,7 +414,7 @@
kind = kind_phys
intent = inout
optional = F
-[tsurf_ocn]
+[tsurf_wat]
standard_name = surface_skin_temperature_after_iteration_over_ocean
long_name = surface skin temperature after iteration over ocean
units = K
@@ -476,7 +476,7 @@
kind = kind_phys
intent = in
optional = F
-[semis_ocn]
+[semis_wat]
standard_name = surface_longwave_emissivity_over_ocean_interstitial
long_name = surface lw emissivity in fraction over ocean (temporary use as interstitial)
units = frac
@@ -575,7 +575,7 @@
type = logical
intent = in
optional = F
-[semis_ocn]
+[semis_wat]
standard_name = surface_longwave_emissivity_over_ocean_interstitial
long_name = surface lw emissivity in fraction over ocean (temporary use as interstitial)
units = frac
@@ -629,7 +629,7 @@
kind = kind_phys
intent = inout
optional = F
-[gabsbdlw_ocn]
+[gabsbdlw_wat]
standard_name = surface_downwelling_longwave_flux_absorbed_by_ground_over_ocean
long_name = total sky surface downward longwave flux absorbed by the ground over ocean
units = W m-2
@@ -695,6 +695,22 @@
type = integer
intent = in
optional = F
+[kice]
+ standard_name = ice_vertical_dimension
+ long_name = vertical loop extent for ice levels, start at 1
+ units = count
+ dimensions = ()
+ type = integer
+ intent = in
+ optional = F
+[km]
+ standard_name = soil_vertical_dimension
+ long_name = soil vertical layer dimension
+ units = count
+ dimensions = ()
+ type = integer
+ intent = in
+ optional = F
[cplflx]
standard_name = flag_for_flux_coupling
long_name = flag controlling cplflx collection (default off)
@@ -813,7 +829,7 @@
kind = kind_phys
intent = inout
optional = F
-[zorl_ocn]
+[zorl_wat]
standard_name = surface_roughness_length_over_ocean_interstitial
long_name = surface roughness length over ocean (temporary use as interstitial)
units = cm
@@ -849,7 +865,7 @@
kind = kind_phys
intent = inout
optional = F
-[cd_ocn]
+[cd_wat]
standard_name = surface_drag_coefficient_for_momentum_in_air_over_ocean
long_name = surface exchange coeff for momentum over ocean
units = none
@@ -885,7 +901,7 @@
kind = kind_phys
intent = inout
optional = F
-[cdq_ocn]
+[cdq_wat]
standard_name = surface_drag_coefficient_for_heat_and_moisture_in_air_over_ocean
long_name = surface exchange coeff heat & moisture over ocean
units = none
@@ -921,7 +937,7 @@
kind = kind_phys
intent = inout
optional = F
-[rb_ocn]
+[rb_wat]
standard_name = bulk_richardson_number_at_lowest_model_level_over_ocean
long_name = bulk Richardson number at the surface over ocean
units = none
@@ -957,7 +973,7 @@
kind = kind_phys
intent = inout
optional = F
-[stress_ocn]
+[stress_wat]
standard_name = surface_wind_stress_over_ocean
long_name = surface wind stress over ocean
units = m2 s-2
@@ -993,7 +1009,7 @@
kind = kind_phys
intent = inout
optional = F
-[ffmm_ocn]
+[ffmm_wat]
standard_name = Monin_Obukhov_similarity_function_for_momentum_over_ocean
long_name = Monin-Obukhov similarity function for momentum over ocean
units = none
@@ -1029,7 +1045,7 @@
kind = kind_phys
intent = inout
optional = F
-[ffhh_ocn]
+[ffhh_wat]
standard_name = Monin_Obukhov_similarity_function_for_heat_over_ocean
long_name = Monin-Obukhov similarity function for heat over ocean
units = none
@@ -1065,7 +1081,7 @@
kind = kind_phys
intent = inout
optional = F
-[uustar_ocn]
+[uustar_wat]
standard_name = surface_friction_velocity_over_ocean
long_name = surface friction velocity over ocean
units = m s-1
@@ -1101,7 +1117,7 @@
kind = kind_phys
intent = inout
optional = F
-[fm10_ocn]
+[fm10_wat]
standard_name = Monin_Obukhov_similarity_function_for_momentum_at_10m_over_ocean
long_name = Monin-Obukhov similarity parameter for momentum at 10m over ocean
units = none
@@ -1137,7 +1153,7 @@
kind = kind_phys
intent = inout
optional = F
-[fh2_ocn]
+[fh2_wat]
standard_name = Monin_Obukhov_similarity_function_for_heat_at_2m_over_ocean
long_name = Monin-Obukhov similarity parameter for heat at 2m over ocean
units = none
@@ -1173,7 +1189,7 @@
kind = kind_phys
intent = inout
optional = F
-[tsurf_ocn]
+[tsurf_wat]
standard_name = surface_skin_temperature_after_iteration_over_ocean
long_name = surface skin temperature after iteration over ocean
units = K
@@ -1209,7 +1225,7 @@
kind = kind_phys
intent = inout
optional = F
-[cmm_ocn]
+[cmm_wat]
standard_name = surface_drag_wind_speed_for_momentum_in_air_over_ocean
long_name = momentum exchange coefficient over ocean
units = m s-1
@@ -1245,7 +1261,7 @@
kind = kind_phys
intent = inout
optional = F
-[chh_ocn]
+[chh_wat]
standard_name = surface_drag_mass_flux_for_heat_and_moisture_in_air_over_ocean
long_name = thermal exchange coefficient over ocean
units = kg m-2 s-1
@@ -1281,7 +1297,7 @@
kind = kind_phys
intent = inout
optional = F
-[gflx_ocn]
+[gflx_wat]
standard_name = upward_heat_flux_in_soil_over_ocean
long_name = soil heat flux over ocean
units = W m-2
@@ -1317,7 +1333,7 @@
kind = kind_phys
intent = inout
optional = F
-[ep1d_ocn]
+[ep1d_wat]
standard_name = surface_upward_potential_latent_heat_flux_over_ocean
long_name = surface upward potential latent heat flux over ocean
units = W m-2
@@ -1353,7 +1369,7 @@
kind = kind_phys
intent = inout
optional = F
-[weasd_ocn]
+[weasd_wat]
standard_name = water_equivalent_accumulated_snow_depth_over_ocean
long_name = water equiv of acc snow depth over ocean
units = mm
@@ -1389,7 +1405,7 @@
kind = kind_phys
intent = inout
optional = F
-[snowd_ocn]
+[snowd_wat]
standard_name = surface_snow_thickness_water_equivalent_over_ocean
long_name = water equivalent snow depth over ocean
units = mm
@@ -1425,7 +1441,7 @@
kind = kind_phys
intent = inout
optional = F
-[tprcp_ocn]
+[tprcp_wat]
standard_name = nonnegative_lwe_thickness_of_precipitation_amount_on_dynamics_timestep_over_ocean
long_name = total precipitation amount in each time step over ocean
units = m
@@ -1461,7 +1477,7 @@
kind = kind_phys
intent = inout
optional = F
-[evap_ocn]
+[evap_wat]
standard_name = kinematic_surface_upward_latent_heat_flux_over_ocean
long_name = kinematic surface upward latent heat flux over ocean
units = kg kg-1 m s-1
@@ -1497,7 +1513,7 @@
kind = kind_phys
intent = inout
optional = F
-[hflx_ocn]
+[hflx_wat]
standard_name = kinematic_surface_upward_sensible_heat_flux_over_ocean
long_name = kinematic surface upward sensible heat flux over ocean
units = K m s-1
@@ -1533,7 +1549,7 @@
kind = kind_phys
intent = inout
optional = F
-[qss_ocn]
+[qss_wat]
standard_name = surface_specific_humidity_over_ocean
long_name = surface air saturation specific humidity over ocean
units = kg kg-1
@@ -1587,7 +1603,7 @@
kind = kind_phys
intent = inout
optional = F
-[tsfc_ocn]
+[tsfc_wat]
standard_name = surface_skin_temperature_over_ocean_interstitial
long_name = surface skin temperature over ocean (temporary use as interstitial)
units = K
@@ -1650,6 +1666,24 @@
kind = kind_phys
intent = inout
optional = F
+[tiice]
+ standard_name = internal_ice_temperature
+ long_name = sea ice internal temperature
+ units = K
+ dimensions = (horizontal_dimension,ice_vertical_dimension)
+ type = real
+ kind = kind_phys
+ intent = inout
+ optional = F
+[stc]
+ standard_name = soil_temperature
+ long_name = soil temperature
+ units = K
+ dimensions = (horizontal_dimension,soil_vertical_dimension)
+ type = real
+ kind = kind_phys
+ intent = inout
+ optional = F
[errmsg]
standard_name = ccpp_error_message
long_name = error message for error handling in CCPP
diff --git a/physics/GFS_surface_generic.F90 b/physics/GFS_surface_generic.F90
index d6f751cc7..4a555f528 100644
--- a/physics/GFS_surface_generic.F90
+++ b/physics/GFS_surface_generic.F90
@@ -27,7 +27,7 @@ end subroutine GFS_surface_generic_pre_finalize
!!
subroutine GFS_surface_generic_pre_run (im, levs, vfrac, islmsk, isot, ivegsrc, stype, vtype, slope, &
prsik_1, prslk_1, tsfc, phil, con_g, &
- sigmaf, soiltyp, vegtype, slopetyp, work3, tsurf, zlvl, do_sppt, dtdtr, &
+ sigmaf, soiltyp, vegtype, slopetyp, work3, tsurf, zlvl, do_sppt, ca_global,dtdtr,&
drain_cpl, dsnow_cpl, rain_cpl, snow_cpl, do_sfcperts, nsfcpert, sfc_wts, &
pertz0, pertzt, pertshc, pertlai, pertvegf, z01d, zt1d, bexp1d, xlai1d, vegf1d, &
cplflx, flag_cice, islmsk_cice, slimskin_cpl, tisfc, tsfco, fice, hice, &
@@ -51,7 +51,7 @@ subroutine GFS_surface_generic_pre_run (im, levs, vfrac, islmsk, isot, ivegsrc,
real(kind=kind_phys), dimension(im), intent(inout) :: sigmaf, work3, tsurf, zlvl
! Stochastic physics / surface perturbations
- logical, intent(in) :: do_sppt
+ logical, intent(in) :: do_sppt, ca_global
real(kind=kind_phys), dimension(im,levs), intent(out) :: dtdtr
real(kind=kind_phys), dimension(im), intent(out) :: drain_cpl
real(kind=kind_phys), dimension(im), intent(out) :: dsnow_cpl
@@ -102,7 +102,7 @@ subroutine GFS_surface_generic_pre_run (im, levs, vfrac, islmsk, isot, ivegsrc,
errflg = 0
! Set initial quantities for stochastic physics deltas
- if (do_sppt) then
+ if (do_sppt .or. ca_global) then
dtdtr = 0.0
endif
@@ -219,8 +219,8 @@ end subroutine GFS_surface_generic_post_finalize
!! \htmlinclude GFS_surface_generic_post_run.html
!!
subroutine GFS_surface_generic_post_run (im, cplflx, cplwav, lssav, icy, wet, dtf, ep1d, gflx, tgrs_1, qgrs_1, ugrs_1, vgrs_1,&
- adjsfcdlw, adjsfcdsw, adjnirbmd, adjnirdfd, adjvisbmd, adjvisdfd, adjsfculw, adjsfculw_ocn, adjnirbmu, adjnirdfu, &
- adjvisbmu, adjvisdfu,t2m, q2m, u10m, v10m, tsfc, tsfc_ocn, pgr, xcosz, evbs, evcw, trans, sbsno, snowc, snohf, &
+ adjsfcdlw, adjsfcdsw, adjnirbmd, adjnirdfd, adjvisbmd, adjvisdfd, adjsfculw, adjsfculw_wat, adjnirbmu, adjnirdfu, &
+ adjvisbmu, adjvisdfu,t2m, q2m, u10m, v10m, tsfc, tsfc_wat, pgr, xcosz, evbs, evcw, trans, sbsno, snowc, snohf, &
epi, gfluxi, t1, q1, u1, v1, dlwsfci_cpl, dswsfci_cpl, dlwsfc_cpl, dswsfc_cpl, dnirbmi_cpl, dnirdfi_cpl, dvisbmi_cpl, &
dvisdfi_cpl, dnirbm_cpl, dnirdf_cpl, dvisbm_cpl, dvisdf_cpl, nlwsfci_cpl, nlwsfc_cpl, t2mi_cpl, q2mi_cpl, u10mi_cpl, &
v10mi_cpl, tsfci_cpl, psurfi_cpl, nnirbmi_cpl, nnirdfi_cpl, nvisbmi_cpl, nvisdfi_cpl, nswsfci_cpl, nswsfc_cpl, nnirbm_cpl, &
@@ -235,8 +235,8 @@ subroutine GFS_surface_generic_post_run (im, cplflx, cplwav, lssav, icy, wet, dt
real(kind=kind_phys), intent(in) :: dtf
real(kind=kind_phys), dimension(im), intent(in) :: ep1d, gflx, tgrs_1, qgrs_1, ugrs_1, vgrs_1, adjsfcdlw, adjsfcdsw, &
- adjnirbmd, adjnirdfd, adjvisbmd, adjvisdfd, adjsfculw, adjsfculw_ocn, adjnirbmu, adjnirdfu, adjvisbmu, adjvisdfu, &
- t2m, q2m, u10m, v10m, tsfc, tsfc_ocn, pgr, xcosz, evbs, evcw, trans, sbsno, snowc, snohf
+ adjnirbmd, adjnirdfd, adjvisbmd, adjvisdfd, adjsfculw, adjsfculw_wat, adjnirbmu, adjnirdfu, adjvisbmu, adjvisdfu, &
+ t2m, q2m, u10m, v10m, tsfc, tsfc_wat, pgr, xcosz, evbs, evcw, trans, sbsno, snowc, snohf
real(kind=kind_phys), dimension(im), intent(inout) :: epi, gfluxi, t1, q1, u1, v1, dlwsfci_cpl, dswsfci_cpl, dlwsfc_cpl, &
dswsfc_cpl, dnirbmi_cpl, dnirdfi_cpl, dvisbmi_cpl, dvisdfi_cpl, dnirbm_cpl, dnirdf_cpl, dvisbm_cpl, dvisdf_cpl, &
@@ -291,13 +291,13 @@ subroutine GFS_surface_generic_post_run (im, cplflx, cplwav, lssav, icy, wet, dt
dvisdf_cpl (i) = dvisdf_cpl(i) + adjvisdfd(i)*dtf
nlwsfci_cpl (i) = adjsfcdlw(i) - adjsfculw(i)
if (wet(i)) then
- nlwsfci_cpl(i) = adjsfcdlw(i) - adjsfculw_ocn(i)
+ nlwsfci_cpl(i) = adjsfcdlw(i) - adjsfculw_wat(i)
endif
nlwsfc_cpl (i) = nlwsfc_cpl(i) + nlwsfci_cpl(i)*dtf
t2mi_cpl (i) = t2m(i)
q2mi_cpl (i) = q2m(i)
tsfci_cpl (i) = tsfc(i)
-! tsfci_cpl (i) = tsfc_ocn(i)
+! tsfci_cpl (i) = tsfc_wat(i)
psurfi_cpl (i) = pgr(i)
enddo
diff --git a/physics/GFS_surface_generic.meta b/physics/GFS_surface_generic.meta
index 250f7a2bd..436e2dc55 100644
--- a/physics/GFS_surface_generic.meta
+++ b/physics/GFS_surface_generic.meta
@@ -190,6 +190,14 @@
type = logical
intent = in
optional = F
+[ca_global]
+ standard_name = flag_for_global_cellular_automata
+ long_name = switch for global ca
+ units = flag
+ dimensions = ()
+ type = logical
+ intent = in
+ optional = F
[dtdtr]
standard_name = tendency_of_air_temperature_due_to_radiative_heating_on_physics_time_step
long_name = temp. change due to radiative heating per time step
@@ -669,7 +677,7 @@
kind = kind_phys
intent = in
optional = F
-[adjsfculw_ocn]
+[adjsfculw_wat]
standard_name = surface_upwelling_longwave_flux_over_ocean_interstitial
long_name = surface upwelling longwave flux at current time over ocean (temporary use as interstitial)
units = W m-2
@@ -759,7 +767,7 @@
kind = kind_phys
intent = in
optional = F
-[tsfc_ocn]
+[tsfc_wat]
standard_name = surface_skin_temperature_over_ocean_interstitial
long_name = surface skin temperature over ocean (temporary use as interstitial)
units = K
diff --git a/physics/cires_ugwp.F90 b/physics/cires_ugwp.F90
index e0abc58ff..07b235c72 100644
--- a/physics/cires_ugwp.F90
+++ b/physics/cires_ugwp.F90
@@ -6,8 +6,8 @@
!! "Unified": a) all GW effects due to both dissipation/breaking; b) identical GW solvers for all GW sources; c) ability to replace solvers.
!! Unified Formalism:
!! 1. GW Sources: Stochastic and physics based mechanisms for GW-excitations in the lower atmosphere, calibrated by the high-res analyses/forecasts, and observations (3 types of GW sources: orography, convection, fronts/jets).
-!! 2. GW Propagation: Unified solver for “propagation, dissipation and breaking” excited from all type of GW sources.
-!! 3. GW Effects: Unified representation of GW impacts on the ‘resolved’ flow for all sources (energy-balanced schemes for momentum, heat and mixing).
+!! 2. GW Propagation: Unified solver for "propagation, dissipation and breaking" excited from all type of GW sources.
+!! 3. GW Effects: Unified representation of GW impacts on the "resolved" flow for all sources (energy-balanced schemes for momentum, heat and mixing).
!! https://www.weather.gov/media/sti/nggps/Presentations%202017/02%20NGGPS_VYUDIN_2017_.pdf
module cires_ugwp
@@ -145,8 +145,8 @@ end subroutine cires_ugwp_finalize
!> \section arg_table_cires_ugwp_run Argument Table
!! \htmlinclude cires_ugwp_run.html
!!
-
-! subroutines original
+!> \section gen_cires_ugwp CIRES UGWP Scheme General Algorithm
+!! @{
subroutine cires_ugwp_run(do_ugwp, me, master, im, levs, ntrac, dtp, kdt, lonr, &
oro, oro_uf, hprime, nmtvr, oc, theta, sigma, gamma, elvmax, clx, oa4, &
do_tofd, ldiag_ugwp, cdmbgwd, xlat, xlat_d, sinlat, coslat, area, &
@@ -366,5 +366,6 @@ subroutine cires_ugwp_run(do_ugwp, me, master, im, levs, ntrac, dtp, kdt, lonr
gw_dudt = gw_dudt*(1.-pked) + ed_dudt*pked
end subroutine cires_ugwp_run
-
+!! @}
+!>@}
end module cires_ugwp
diff --git a/physics/dcyc2.f b/physics/dcyc2.f
index c7a1ddd59..7f052cbf3 100644
--- a/physics/dcyc2.f
+++ b/physics/dcyc2.f
@@ -47,8 +47,8 @@ end subroutine dcyc2t3_finalize
! call dcyc2t3 !
! inputs: !
! ( solhr,slag,sdec,cdec,sinlat,coslat, !
-! xlon,coszen,tsfc_lnd,tsfc_ice,tsfc_ocn, !
-! tf,tsflw,sfcemis_lnd,sfcemis_ice,sfcemis_ocn, !
+! xlon,coszen,tsfc_lnd,tsfc_ice,tsfc_wat, !
+! tf,tsflw,sfcemis_lnd,sfcemis_ice,sfcemis_wat, !
! sfcdsw,sfcnsw,sfcdlw,swh,swhc,hlw,hlwc, !
! sfcnirbmu,sfcnirdfu,sfcvisbmu,sfcvisdfu, !
! sfcnirbmd,sfcnirdfd,sfcvisbmd,sfcvisdfd, !
@@ -58,7 +58,7 @@ end subroutine dcyc2t3_finalize
! dtdt,dtdtc, !
! outputs: !
! adjsfcdsw,adjsfcnsw,adjsfcdlw, !
-! adjsfculw_lnd,adjsfculw_ice,adjsfculw_ocn,xmu,xcosz, !
+! adjsfculw_lnd,adjsfculw_ice,adjsfculw_wat,xmu,xcosz, !
! adjnirbmu,adjnirdfu,adjvisbmu,adjvisdfu, !
! adjdnnbmd,adjdnndfd,adjdnvbmd,adjdnvdfd) !
! !
@@ -74,11 +74,11 @@ end subroutine dcyc2t3_finalize
! coszen (im) - real, avg of cosz over daytime sw call interval !
! tsfc_lnd (im) - real, bottom surface temperature over land (k) !
! tsfc_ice (im) - real, bottom surface temperature over ice (k) !
-! tsfc_ocn (im) - real, bottom surface temperature over ocean (k) !
+! tsfc_wat (im) - real, bottom surface temperature over ocean (k) !
! tf (im) - real, surface air (layer 1) temperature (k) !
! sfcemis_lnd(im) - real, surface emissivity (fraction) o. land (k) !
! sfcemis_ice(im) - real, surface emissivity (fraction) o. ice (k) !
-! sfcemis_ocn(im) - real, surface emissivity (fraction) o. ocean (k)!
+! sfcemis_wat(im) - real, surface emissivity (fraction) o. ocean (k)!
! tsflw (im) - real, sfc air (layer 1) temp in k saved in lw call !
! sfcdsw (im) - real, total sky sfc downward sw flux ( w/m**2 ) !
! sfcnsw (im) - real, total sky sfc net sw into ground (w/m**2) !
@@ -115,7 +115,7 @@ end subroutine dcyc2t3_finalize
! adjsfcdlw(im)- real, time step adjusted sfc dn lw flux (w/m**2) !
! adjsfculw_lnd(im)- real, sfc upw. lw flux at current time (w/m**2)!
! adjsfculw_ice(im)- real, sfc upw. lw flux at current time (w/m**2)!
-! adjsfculw_ocn(im)- real, sfc upw. lw flux at current time (w/m**2)!
+! adjsfculw_wat(im)- real, sfc upw. lw flux at current time (w/m**2)!
! adjnirbmu(im)- real, t adj sfc nir-beam sw upward flux (w/m2) !
! adjnirdfu(im)- real, t adj sfc nir-diff sw upward flux (w/m2) !
! adjvisbmu(im)- real, t adj sfc uv+vis-beam sw upward flux (w/m2) !
@@ -179,8 +179,8 @@ end subroutine dcyc2t3_finalize
subroutine dcyc2t3_run &
! --- inputs:
& ( solhr,slag,sdec,cdec,sinlat,coslat, &
- & xlon,coszen,tsfc_lnd,tsfc_ice,tsfc_ocn,tf,tsflw, &
- & sfcemis_lnd, sfcemis_ice, sfcemis_ocn, &
+ & xlon,coszen,tsfc_lnd,tsfc_ice,tsfc_wat,tf,tsflw, &
+ & sfcemis_lnd, sfcemis_ice, sfcemis_wat, &
& sfcdsw,sfcnsw,sfcdlw,swh,swhc,hlw,hlwc, &
& sfcnirbmu,sfcnirdfu,sfcvisbmu,sfcvisdfu, &
& sfcnirbmd,sfcnirdfd,sfcvisbmd,sfcvisdfd, &
@@ -191,7 +191,7 @@ subroutine dcyc2t3_run &
& dtdt,dtdtc, &
! --- outputs:
& adjsfcdsw,adjsfcnsw,adjsfcdlw, &
- & adjsfculw_lnd,adjsfculw_ice,adjsfculw_ocn,xmu,xcosz, &
+ & adjsfculw_lnd,adjsfculw_ice,adjsfculw_wat,xmu,xcosz, &
& adjnirbmu,adjnirdfu,adjvisbmu,adjvisdfu, &
& adjnirbmd,adjnirdfd,adjvisbmd,adjvisdfd, &
& errmsg,errflg &
@@ -225,8 +225,8 @@ subroutine dcyc2t3_run &
& sfcdsw, sfcnsw
real(kind=kind_phys), dimension(im), intent(in) :: &
- & tsfc_lnd, tsfc_ice, tsfc_ocn, &
- & sfcemis_lnd, sfcemis_ice, sfcemis_ocn
+ & tsfc_lnd, tsfc_ice, tsfc_wat, &
+ & sfcemis_lnd, sfcemis_ice, sfcemis_wat
real(kind=kind_phys), dimension(im), intent(in) :: &
& sfcnirbmu, sfcnirdfu, sfcvisbmu, sfcvisdfu, &
@@ -246,7 +246,7 @@ subroutine dcyc2t3_run &
& adjnirbmd, adjnirdfd, adjvisbmd, adjvisdfd
real(kind=kind_phys), dimension(im), intent(out) :: &
- & adjsfculw_lnd, adjsfculw_ice, adjsfculw_ocn
+ & adjsfculw_lnd, adjsfculw_ice, adjsfculw_wat
character(len=*), intent(out) :: errmsg
integer, intent(out) :: errflg
@@ -321,9 +321,9 @@ subroutine dcyc2t3_run &
& + (one - sfcemis_ice(i)) * adjsfcdlw(i)
endif
if (wet(i)) then
- tem2 = tsfc_ocn(i) * tsfc_ocn(i)
- adjsfculw_ocn(i) = sfcemis_ocn(i) * con_sbc * tem2 * tem2
- & + (one - sfcemis_ocn(i)) * adjsfcdlw(i)
+ tem2 = tsfc_wat(i) * tsfc_wat(i)
+ adjsfculw_wat(i) = sfcemis_wat(i) * con_sbc * tem2 * tem2
+ & + (one - sfcemis_wat(i)) * adjsfcdlw(i)
endif
! if (lprnt .and. i == ipr) write(0,*)' in dcyc3: dry==',dry(i)
! &,' wet=',wet(i),' icy=',icy(i),' tsfc3=',tsfc3(i,:)
diff --git a/physics/dcyc2.meta b/physics/dcyc2.meta
index 244ebc6bd..53b702b64 100644
--- a/physics/dcyc2.meta
+++ b/physics/dcyc2.meta
@@ -92,7 +92,7 @@
kind = kind_phys
intent = in
optional = F
-[tsfc_ocn]
+[tsfc_wat]
standard_name = surface_skin_temperature_over_ocean_interstitial
long_name = surface skin temperature over ocean (temporary use as interstitial)
units = K
@@ -146,7 +146,7 @@
kind = kind_phys
intent = in
optional = F
-[sfcemis_ocn]
+[sfcemis_wat]
standard_name = surface_longwave_emissivity_over_ocean_interstitial
long_name = surface lw emissivity in fraction over ocean (temporary use as interstitial)
units = frac
@@ -419,7 +419,7 @@
kind = kind_phys
intent = out
optional = F
-[adjsfculw_ocn]
+[adjsfculw_wat]
standard_name = surface_upwelling_longwave_flux_over_ocean_interstitial
long_name = surface upwelling longwave flux at current time over ocean (temporary use as interstitial)
units = W m-2
@@ -535,70 +535,3 @@
type = integer
intent = out
optional = F
-
-########################################################################
-[ccpp-arg-table]
- name = dcyc2t3_post_init
- type = scheme
-
-########################################################################
-[ccpp-arg-table]
- name = dcyc2t3_post_finalize
- type = scheme
-
-########################################################################
-[ccpp-arg-table]
- name = dcyc2t3_post_run
- type = scheme
-[im]
- standard_name = horizontal_loop_extent
- long_name = horizontal loop extent
- units = count
- dimensions = ()
- type = integer
- intent = in
- optional = F
-[adjsfcdsw]
- standard_name = surface_downwelling_shortwave_flux
- long_name = surface downwelling shortwave flux at current time
- units = W m-2
- dimensions = (horizontal_dimension)
- type = real
- kind = kind_phys
- intent = in
- optional = F
-[adjsfcnsw]
- standard_name = surface_net_downwelling_shortwave_flux
- long_name = surface net downwelling shortwave flux at current time
- units = W m-2
- dimensions = (horizontal_dimension)
- type = real
- kind = kind_phys
- intent = in
- optional = F
-[adjsfcusw]
- standard_name = surface_upwelling_shortwave_flux
- long_name = surface upwelling shortwave flux at current time
- units = W m-2
- dimensions = (horizontal_dimension)
- type = real
- kind = kind_phys
- intent = out
- optional = F
-[errmsg]
- standard_name = ccpp_error_message
- long_name = error message for error handling in CCPP
- units = none
- dimensions = ()
- type = character
- kind = len=*
- intent = out
- optional = F
-[errflg]
- standard_name = ccpp_error_flag
- long_name = error flag for error handling in CCPP
- units = flag
- dimensions = ()
- type = integer
- intent = out
- optional = F
diff --git a/physics/docs/ccppv4_doxyfile b/physics/docs/ccppv4_doxyfile
new file mode 100644
index 000000000..e80b27eb9
--- /dev/null
+++ b/physics/docs/ccppv4_doxyfile
@@ -0,0 +1,467 @@
+# Doxyfile 1.8.11
+DOXYFILE_ENCODING = UTF-8
+PROJECT_NAME = "CCPP Scientific Documentation"
+PROJECT_NUMBER = ""
+PROJECT_BRIEF = "v4.0"
+PROJECT_LOGO = img/dtc_logo.png
+OUTPUT_DIRECTORY = doc
+CREATE_SUBDIRS = NO
+ALLOW_UNICODE_NAMES = NO
+OUTPUT_LANGUAGE = English
+BRIEF_MEMBER_DESC = YES
+REPEAT_BRIEF = NO
+ABBREVIATE_BRIEF =
+ALWAYS_DETAILED_SEC = NO
+INLINE_INHERITED_MEMB = NO
+FULL_PATH_NAMES = NO
+STRIP_FROM_PATH =
+STRIP_FROM_INC_PATH =
+SHORT_NAMES = NO
+JAVADOC_AUTOBRIEF = NO
+QT_AUTOBRIEF = NO
+MULTILINE_CPP_IS_BRIEF = NO
+INHERIT_DOCS = YES
+SEPARATE_MEMBER_PAGES = YES
+TAB_SIZE = 4
+ALIASES =
+TCL_SUBST =
+OPTIMIZE_OUTPUT_FOR_C = NO
+OPTIMIZE_OUTPUT_JAVA = NO
+OPTIMIZE_FOR_FORTRAN = YES
+OPTIMIZE_OUTPUT_VHDL = NO
+EXTENSION_MAPPING = .f=FortranFree \
+ .F=FortranFree \
+ .F90=FortranFree \
+ .f90=FortranFree
+MARKDOWN_SUPPORT = YES
+AUTOLINK_SUPPORT = YES
+BUILTIN_STL_SUPPORT = NO
+CPP_CLI_SUPPORT = NO
+SIP_SUPPORT = NO
+IDL_PROPERTY_SUPPORT = YES
+DISTRIBUTE_GROUP_DOC = YES
+GROUP_NESTED_COMPOUNDS = NO
+SUBGROUPING = YES
+INLINE_GROUPED_CLASSES = NO
+INLINE_SIMPLE_STRUCTS = NO
+TYPEDEF_HIDES_STRUCT = YES
+LOOKUP_CACHE_SIZE = 0
+EXTRACT_ALL = YES
+EXTRACT_PRIVATE = YES
+EXTRACT_PACKAGE = YES
+EXTRACT_STATIC = YES
+EXTRACT_LOCAL_CLASSES = YES
+EXTRACT_LOCAL_METHODS = YES
+EXTRACT_ANON_NSPACES = YES
+HIDE_UNDOC_MEMBERS = NO
+HIDE_UNDOC_CLASSES = NO
+HIDE_FRIEND_COMPOUNDS = NO
+HIDE_IN_BODY_DOCS = NO
+INTERNAL_DOCS = YES
+
+CASE_SENSE_NAMES = NO
+
+HIDE_SCOPE_NAMES = NO
+
+HIDE_COMPOUND_REFERENCE= NO
+
+SHOW_INCLUDE_FILES = NO
+
+SHOW_GROUPED_MEMB_INC = NO
+
+FORCE_LOCAL_INCLUDES = NO
+
+INLINE_INFO = YES
+
+SORT_MEMBER_DOCS = NO
+
+SORT_BRIEF_DOCS = NO
+SORT_MEMBERS_CTORS_1ST = NO
+SORT_GROUP_NAMES = NO
+SORT_BY_SCOPE_NAME = NO
+STRICT_PROTO_MATCHING = NO
+GENERATE_TODOLIST = YES
+GENERATE_TESTLIST = YES
+GENERATE_BUGLIST = YES
+GENERATE_DEPRECATEDLIST= YES
+ENABLED_SECTIONS = YES
+MAX_INITIALIZER_LINES = 30
+SHOW_USED_FILES = YES
+SHOW_FILES = YES
+SHOW_NAMESPACES = YES
+FILE_VERSION_FILTER =
+LAYOUT_FILE = ccpp_dox_layout.xml
+CITE_BIB_FILES = library.bib
+QUIET = NO
+WARNINGS = YES
+WARN_IF_UNDOCUMENTED = NO
+WARN_IF_DOC_ERROR = YES
+WARN_NO_PARAMDOC = NO
+WARN_AS_ERROR = NO
+WARN_FORMAT =
+WARN_LOGFILE =
+INPUT = pdftxt/mainpage.txt \
+ pdftxt/all_shemes_list.txt \
+ pdftxt/GFSv15p2_suite.txt \
+ pdftxt/GFSv15p2_no_nsst_suite.txt \
+ pdftxt/suite_FV3_GFS_v15p2.xml.txt \
+ pdftxt/suite_FV3_GFS_v15p2_no_nsst.xml.txt \
+ pdftxt/GFSv16beta_suite.txt \
+ pdftxt/GFSv16beta_no_nsst_suite.txt \
+ pdftxt/suite_FV3_GFS_v16beta.xml.txt \
+ pdftxt/suite_FV3_GFS_v16beta_no_nsst.xml.txt \
+ pdftxt/GSD_adv_suite.txt \
+ pdftxt/CPT_adv_suite.txt \
+ pdftxt/GFS_RRTMG.txt \
+ pdftxt/GFS_SFCLYR.txt \
+ pdftxt/GFS_NSST.txt \
+ pdftxt/GFS_OCEAN.txt \
+ pdftxt/GFS_NOAH.txt \
+ pdftxt/GFS_SFCSICE.txt \
+ pdftxt/GFS_HEDMF.txt \
+ pdftxt/GFS_SATMEDMFVDIFQ.txt \
+## pdftxt/GFS_NoahMP.txt \
+ pdftxt/GFS_UGWPv0.txt \
+ pdftxt/GFS_GWDPS.txt \
+ pdftxt/GFS_OZPHYS.txt \
+ pdftxt/GFS_H2OPHYS.txt \
+ pdftxt/GFS_RAYLEIGH.txt \
+ pdftxt/GFS_SAMF.txt \
+ pdftxt/GFS_SAMFdeep.txt \
+ pdftxt/GFS_SAMFshal.txt \
+ pdftxt/GFDL_cloud.txt \
+ pdftxt/GFS_CALPRECIPTYPE.txt \
+### pdftxt/rad_cld.txt \
+ pdftxt/CPT_CSAW.txt \
+ pdftxt/CPT_MG3.txt \
+ pdftxt/GSD_MYNN_EDMF.txt \
+ pdftxt/GSD_CU_GF_deep.txt \
+ pdftxt/GSD_RUCLSM.txt \
+ pdftxt/GSD_THOMPSON.txt \
+### pdftxt/GFSphys_namelist.txt \
+### pdftxt/GFS_STOCHY_PHYS.txt \
+ pdftxt/suite_input.nml.txt \
+### in-core MP
+ ../gfdl_fv_sat_adj.F90 \
+### time_vary
+ ../GFS_time_vary_pre.fv3.F90 \
+ ../GFS_rad_time_vary.fv3.F90 \
+ ../GFS_phys_time_vary.fv3.F90 \
+ ../ozne_def.f \
+ ../ozinterp.f90 \
+ ../h2o_def.f \
+ ../h2ointerp.f90 \
+ ../aerclm_def.F \
+ ../aerinterp.F90 \
+ ../iccn_def.F \
+ ../iccninterp.F90 \
+ ../sfcsub.F \
+ ../gcycle.F90 \
+### Radiation
+### ../GFS_rrtmg_pre.F90 \
+### ../rrtmg_sw_pre.F90 \
+ ../radsw_main.f \
+### ../rrtmg_sw_post.F90 \
+### ../rrtmg_lw_pre.F90 \
+ ../radlw_main.f \
+### ../rrtmg_lw_post.F90 \
+ ../radiation_aerosols.f \
+ ../radiation_astronomy.f \
+ ../radiation_clouds.f \
+ ../radiation_gases.f \
+ ../radiation_surface.f \
+ ../radlw_param.f \
+ ../radlw_datatb.f \
+ ../radsw_param.f \
+ ../radsw_datatb.f \
+ ../dcyc2.f \
+### Land Surface
+ ../sfc_diff.f \
+ ../sfc_nst.f \
+ ../sfc_ocean.F \
+ ../module_nst_model.f90 \
+ ../module_nst_parameters.f90 \
+ ../module_nst_water_prop.f90 \
+ ../sfc_drv.f \
+ ../sflx.f \
+ ../namelist_soilveg.f \
+ ../set_soilveg.f \
+### Sea Ice Surface
+ ../sfc_sice.f \
+### PBL
+ ../moninedmf.f \
+ ../mfpbl.f \
+ ../tridi.f \
+### satmedmf
+## ../satmedmfvdif.F \
+ ../satmedmfvdifq.F \
+ ../mfpbltq.f \
+ ../mfscuq.f \
+ ../tridi.f \
+### Orographic Gravity Wave
+ ../GFS_GWD_generic.F90 \
+ ../cires_ugwp.F90 \
+ ../gwdps.f \
+ ../ugwp_driver_v0.F \
+ ../cires_ugwp_triggers.F90 \
+ ../cires_ugwp_module.F90 \
+ ../cires_ugwp_utils.F90 \
+ ../cires_ugwp_solvers.F90 \
+### ../cires_ugwp_post.F90 \
+### ../cires_ugwp_initialize.F90 \
+ ../cires_vert_wmsdis.F90 \
+ ../cires_vert_orodis.F90 \
+ ../cires_vert_lsatdis.F90 \
+### Rayleigh Dampling
+ ../rayleigh_damp.f \
+### Prognostic Ozone
+ ../ozphys_2015.f \
+### ../ozphys.f \
+### stratospheric h2o
+ ../h2ophys.f \
+### Deep Convection
+ ../samfdeepcnv.f \
+### Convective Gravity Wave
+### ../gwdc.f \
+### Shallow Convection
+ ../samfshalcnv.f \
+ ../cnvc90.f \
+### Microphysics
+### ../gscond.f \
+### ../precpd.f \
+ ../module_bfmicrophysics.f \
+### GFDL cloud MP
+ ../gfdl_cloud_microphys.F90 \
+ ../module_gfdl_cloud_microphys.F90 \
+###
+ ../GFS_MP_generic.F90 \
+ ../calpreciptype.f90 \
+### stochy
+ ../GFS_stochastics.F90 \
+### ../surface_perturbation.F90 \
+### ../../stochastic_physics/stochastic_physics.F90 \
+### CPT
+ ../m_micro.F90 \
+### ../micro_mg2_0.F90 \
+ ../micro_mg3_0.F90 \
+ ../micro_mg_utils.F90 \
+ ../cldmacro.F \
+ ../aer_cloud.F \
+ ../cldwat2m_micro.F \
+ ../wv_saturation.F \
+ ../cs_conv_aw_adj.F90 \
+ ../cs_conv.F90 \
+### GSD
+ ../cu_gf_driver.F90 \
+ ../cu_gf_deep.F90 \
+ ../cu_gf_sh.F90 \
+ ../module_MYNNrad_pre.F90 \
+ ../module_MYNNrad_post.F90 \
+ ../module_MYNNPBL_wrapper.F90 \
+ ../module_bl_mynn.F90 \
+### ../module_MYNNSFC_wrapper.F90 \
+### ../module_sf_mynn.F90 \
+ ../sfc_drv_ruc.F90 \
+ ../module_sf_ruclsm.F90 \
+ ../namelist_soilveg_ruc.F90 \
+ ../set_soilveg_ruc.F90 \
+ ../module_soil_pre.F90 \
+ ../mp_thompson_pre.F90 \
+ ../module_mp_thompson_make_number_concentrations.F90 \
+ ../mp_thompson.F90 \
+ ../module_mp_thompson.F90 \
+ ../module_mp_radar.F90 \
+ ../mp_thompson_post.F90 \
+### utils
+ ../funcphys.f90 \
+ ../physparam.f \
+ ../physcons.F90 \
+ ../radcons.f90 \
+ ../mersenne_twister.f
+INPUT_ENCODING = UTF-8
+FILE_PATTERNS = *.f \
+ *.F \
+ *.F90 \
+ *.f90 \
+ *.nml \
+ *.txt
+RECURSIVE = YES
+EXCLUDE =
+EXCLUDE_SYMLINKS = NO
+EXCLUDE_PATTERNS =
+EXCLUDE_SYMBOLS =
+EXAMPLE_PATH = ./
+EXAMPLE_PATTERNS =
+EXAMPLE_RECURSIVE = NO
+IMAGE_PATH = img
+INPUT_FILTER =
+FILTER_PATTERNS =
+FILTER_SOURCE_FILES = NO
+FILTER_SOURCE_PATTERNS =
+USE_MDFILE_AS_MAINPAGE =
+SOURCE_BROWSER = NO
+INLINE_SOURCES = NO
+STRIP_CODE_COMMENTS = YES
+REFERENCED_BY_RELATION = YES
+REFERENCES_RELATION = YES
+REFERENCES_LINK_SOURCE = YES
+SOURCE_TOOLTIPS = YES
+USE_HTAGS = NO
+VERBATIM_HEADERS = YES
+#CLANG_ASSISTED_PARSING = NO
+#CLANG_OPTIONS =
+ALPHABETICAL_INDEX = NO
+COLS_IN_ALPHA_INDEX = 5
+IGNORE_PREFIX =
+GENERATE_HTML = YES
+HTML_OUTPUT = html
+HTML_FILE_EXTENSION = .html
+HTML_HEADER =
+HTML_FOOTER =
+HTML_STYLESHEET =
+HTML_EXTRA_STYLESHEET = ccpp_dox_extra_style.css
+HTML_EXTRA_FILES =
+HTML_COLORSTYLE_HUE = 220
+HTML_COLORSTYLE_SAT = 100
+HTML_COLORSTYLE_GAMMA = 80
+HTML_TIMESTAMP = NO
+HTML_DYNAMIC_SECTIONS = NO
+HTML_INDEX_NUM_ENTRIES = 100
+GENERATE_DOCSET = NO
+DOCSET_FEEDNAME = "Doxygen generated docs"
+DOCSET_BUNDLE_ID = org.doxygen.Project
+DOCSET_PUBLISHER_ID = org.doxygen.Publisher
+DOCSET_PUBLISHER_NAME = Publisher
+GENERATE_HTMLHELP = NO
+CHM_FILE =
+HHC_LOCATION =
+GENERATE_CHI = NO
+CHM_INDEX_ENCODING =
+BINARY_TOC = NO
+TOC_EXPAND = NO
+GENERATE_QHP = NO
+QCH_FILE =
+QHP_NAMESPACE = org.doxygen.Project
+QHP_VIRTUAL_FOLDER = doc
+QHP_CUST_FILTER_NAME =
+QHP_CUST_FILTER_ATTRS =
+QHP_SECT_FILTER_ATTRS =
+QHG_LOCATION =
+GENERATE_ECLIPSEHELP = NO
+ECLIPSE_DOC_ID = org.doxygen.Project
+DISABLE_INDEX = YES
+GENERATE_TREEVIEW = YES
+ENUM_VALUES_PER_LINE = 4
+TREEVIEW_WIDTH = 250
+EXT_LINKS_IN_WINDOW = NO
+FORMULA_FONTSIZE = 10
+FORMULA_TRANSPARENT = YES
+USE_MATHJAX = YES
+MATHJAX_FORMAT = HTML-CSS
+MATHJAX_RELPATH = https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2
+MATHJAX_EXTENSIONS =
+MATHJAX_CODEFILE =
+SEARCHENGINE = YES
+SERVER_BASED_SEARCH = NO
+EXTERNAL_SEARCH = NO
+SEARCHENGINE_URL =
+SEARCHDATA_FILE = searchdata.xml
+EXTERNAL_SEARCH_ID =
+EXTRA_SEARCH_MAPPINGS =
+GENERATE_LATEX = YES
+LATEX_OUTPUT = latex
+LATEX_CMD_NAME = latex
+MAKEINDEX_CMD_NAME = makeindex
+COMPACT_LATEX = YES
+PAPER_TYPE = a4
+EXTRA_PACKAGES = amsmath
+LATEX_HEADER =
+LATEX_FOOTER =
+LATEX_EXTRA_STYLESHEET =
+LATEX_EXTRA_FILES =
+PDF_HYPERLINKS = YES
+USE_PDFLATEX = YES
+LATEX_BATCHMODE = NO
+LATEX_HIDE_INDICES = YES
+LATEX_SOURCE_CODE = NO
+
+LATEX_BIB_STYLE = plainnat
+
+LATEX_TIMESTAMP = NO
+
+GENERATE_RTF = NO
+
+RTF_OUTPUT = rtf
+COMPACT_RTF = NO
+RTF_HYPERLINKS = NO
+RTF_STYLESHEET_FILE =
+RTF_EXTENSIONS_FILE =
+RTF_SOURCE_CODE = NO
+GENERATE_MAN = NO
+MAN_OUTPUT = man
+MAN_EXTENSION = .3
+MAN_SUBDIR =
+MAN_LINKS = NO
+GENERATE_XML = NO
+XML_OUTPUT = xml
+XML_PROGRAMLISTING = YES
+GENERATE_DOCBOOK = NO
+DOCBOOK_OUTPUT = docbook
+DOCBOOK_PROGRAMLISTING = NO
+GENERATE_AUTOGEN_DEF = NO
+GENERATE_PERLMOD = NO
+PERLMOD_LATEX = NO
+PERLMOD_PRETTY = YES
+PERLMOD_MAKEVAR_PREFIX =
+ENABLE_PREPROCESSING = NO
+MACRO_EXPANSION = NO
+EXPAND_ONLY_PREDEF = NO
+SEARCH_INCLUDES = YES
+INCLUDE_PATH =
+INCLUDE_FILE_PATTERNS =
+PREDEFINED = CCPP \
+ MULTI_GASES \
+ 0
+EXPAND_AS_DEFINED =
+SKIP_FUNCTION_MACROS = YES
+TAGFILES =
+GENERATE_TAGFILE =
+ALLEXTERNALS = NO
+EXTERNAL_GROUPS = YES
+EXTERNAL_PAGES = YES
+PERL_PATH = /usr/bin/perl
+CLASS_DIAGRAMS = YES
+MSCGEN_PATH =
+DIA_PATH =
+HIDE_UNDOC_RELATIONS = NO
+HAVE_DOT = YES
+DOT_NUM_THREADS = 0
+DOT_FONTNAME = Helvetica
+DOT_FONTSIZE = 10
+DOT_FONTPATH =
+CLASS_GRAPH = NO
+COLLABORATION_GRAPH = NO
+GROUP_GRAPHS = YES
+UML_LOOK = YES
+UML_LIMIT_NUM_FIELDS = 10
+TEMPLATE_RELATIONS = NO
+INCLUDE_GRAPH = YES
+INCLUDED_BY_GRAPH = NO
+CALL_GRAPH = YES
+CALLER_GRAPH = NO
+GRAPHICAL_HIERARCHY = YES
+DIRECTORY_GRAPH = YES
+DOT_IMAGE_FORMAT = svg
+INTERACTIVE_SVG = NO
+DOT_PATH =
+DOTFILE_DIRS =
+MSCFILE_DIRS =
+DIAFILE_DIRS =
+PLANTUML_JAR_PATH =
+PLANTUML_INCLUDE_PATH =
+DOT_GRAPH_MAX_NODES = 200
+MAX_DOT_GRAPH_DEPTH = 0
+DOT_TRANSPARENT = NO
+DOT_MULTI_TARGETS = YES
+GENERATE_LEGEND = YES
+DOT_CLEANUP = YES
diff --git a/physics/docs/library.bib b/physics/docs/library.bib
index a11f3abbf..61d07382d 100644
--- a/physics/docs/library.bib
+++ b/physics/docs/library.bib
@@ -1,7 +1,7 @@
%% This BibTeX bibliography file was created using BibDesk.
%% http://bibdesk.sourceforge.net/
-%% Created for Man Zhang at 2020-02-07 15:52:42 -0700
+%% Created for Man Zhang at 2020-03-02 13:10:25 -0700
%% Saved with string encoding Unicode (UTF-8)
@@ -2036,11 +2036,11 @@ @url{Li_2015
Url = {http://cpo.noaa.gov/sites/cpo/MAPP/workshops/rtf_technical_ws/presentations/21_Xu_Li.pdf},
Bdsk-Url-1 = {http://cpo.noaa.gov/sites/cpo/MAPP/workshops/rtf_technical_ws/presentations/21_Xu_Li.pdf}}
-@url{li_and_derber_2009,
+@webpage{li_and_derber_2009,
Author = {Xu Li and John Derber},
- Date-Modified = {2018-07-17 20:46:44 +0000},
+ Date-Modified = {2020-02-24 17:06:35 +0000},
Title = {Near Sea Surface Temperatures (NSST) Analysis in NCEP GFS},
- Url = {https://www.jcsda.noaa.gov/documents/meetings/wkshp2008/4/JCSDA_2008_Li.pdf},
+ Url = {http://data.jcsda.org/Workshops/6th-workshop-onDA/Session-4/JCSDA_2008_Li.pdf},
Bdsk-Url-1 = {https://www.jcsda.noaa.gov/documents/meetings/wkshp2008/4/JCSDA_2008_Li.pdf}}
@article{Fairall_et_al_1996,
@@ -2924,7 +2924,7 @@ @article{alexander_et_al_2010
Volume = {136},
Year = {2010},
Bdsk-Url-1 = {https://rmets.onlinelibrary.wiley.com/doi/abs/10.1002/qj.637},
- Bdsk-Url-2 = {https://doi.org/10.1002/qj.637}}
+ Bdsk-Url-2 = {http://dx.doi.org/10.1002/qj.637}}
@article{plougonven_and_zhang_2014,
Author = {Plougonven, R. and Zhang, F.},
@@ -2939,7 +2939,7 @@ @article{plougonven_and_zhang_2014
Volume = {52},
Year = {2014},
Bdsk-Url-1 = {https://agupubs.onlinelibrary.wiley.com/doi/abs/10.1002/2012RG000419},
- Bdsk-Url-2 = {https://doi.org/10.1002/2012RG000419}}
+ Bdsk-Url-2 = {http://dx.doi.org/10.1002/2012RG000419}}
@article{weinstock_1984,
Author = {Weinstock, J.},
@@ -2953,7 +2953,7 @@ @article{weinstock_1984
Volume = {89},
Year = {1984},
Bdsk-Url-1 = {https://agupubs.onlinelibrary.wiley.com/doi/abs/10.1029/JA089iA01p00345},
- Bdsk-Url-2 = {https://doi.org/10.1029/JA089iA01p00345}}
+ Bdsk-Url-2 = {http://dx.doi.org/10.1029/JA089iA01p00345}}
@article{holton_1983,
Author = {Holton, James R.},
@@ -2966,7 +2966,8 @@ @article{holton_1983
Url = {https://doi.org/10.1175/1520-0469(1983)040<2497:TIOGWB>2.0.CO;2},
Volume = {40},
Year = {1983},
- Bdsk-Url-1 = {https://doi.org/10.1175/1520-0469(1983)040%3C2497:TIOGWB%3E2.0.CO;2}}
+ Bdsk-Url-1 = {https://doi.org/10.1175/1520-0469(1983)040%3C2497:TIOGWB%3E2.0.CO;2},
+ Bdsk-Url-2 = {http://dx.doi.org/10.1175/1520-0469(1983)040%3C2497:TIOGWB%3E2.0.CO;2}}
@article{geller_et_al_2013,
Author = {Geller, M. A. and Alexander, M. Joan and Love, P. T. and Bacmeister, J. and Ern, M. and Hertzog, A. and Manzini, E. and Preusse, P. and Sato, K. and Scaife, A. A. and Zhou, T.},
@@ -2979,7 +2980,8 @@ @article{geller_et_al_2013
Url = {https://doi.org/10.1175/JCLI-D-12-00545.1},
Volume = {26},
Year = {2013},
- Bdsk-Url-1 = {https://doi.org/10.1175/JCLI-D-12-00545.1}}
+ Bdsk-Url-1 = {https://doi.org/10.1175/JCLI-D-12-00545.1},
+ Bdsk-Url-2 = {http://dx.doi.org/10.1175/JCLI-D-12-00545.1}}
@article{garcia_et_al_2017,
Author = {Garcia, R. R. and Smith, A. K. and Kinnison, D. E. and C{\'a}mara, {\'A}. and Murphy, D. J.},
@@ -2992,7 +2994,8 @@ @article{garcia_et_al_2017
Url = {https://doi.org/10.1175/JAS-D-16-0104.1},
Volume = {74},
Year = {2017},
- Bdsk-Url-1 = {https://doi.org/10.1175/JAS-D-16-0104.1}}
+ Bdsk-Url-1 = {https://doi.org/10.1175/JAS-D-16-0104.1},
+ Bdsk-Url-2 = {http://dx.doi.org/10.1175/JAS-D-16-0104.1}}
@inproceedings{yudin_et_al_2016,
Author = {Yudin, V.A. and Akmaev, R.A. and Fuller-Rowell, T.J. and Alpert, J.C.},
@@ -3021,7 +3024,8 @@ @article{eckermann_2011
Url = {https://doi.org/10.1175/2011JAS3684.1},
Volume = {68},
Year = {2011},
- Bdsk-Url-1 = {https://doi.org/10.1175/2011JAS3684.1}}
+ Bdsk-Url-1 = {https://doi.org/10.1175/2011JAS3684.1},
+ Bdsk-Url-2 = {http://dx.doi.org/10.1175/2011JAS3684.1}}
@article{lott_et_al_2012,
Author = {Lott, F. and Guez, L. and Maury, P.},
@@ -3035,7 +3039,7 @@ @article{lott_et_al_2012
Volume = {39},
Year = {2012},
Bdsk-Url-1 = {https://agupubs.onlinelibrary.wiley.com/doi/abs/10.1029/2012GL051001},
- Bdsk-Url-2 = {https://doi.org/10.1029/2012GL051001}}
+ Bdsk-Url-2 = {http://dx.doi.org/10.1029/2012GL051001}}
@conference{yudin_et_al_2018,
Author = {Yudin, V. A and Akmaev, R. A. and Alpert, J. C. and Fuller-Rowell T. J., and Karol S. I.},
@@ -3071,7 +3075,8 @@ @article{alexander_and_dunkerton_1999
Url = {https://doi.org/10.1175/1520-0469(1999)056<4167:ASPOMF>2.0.CO;2},
Volume = {56},
Year = {1999},
- Bdsk-Url-1 = {https://doi.org/10.1175/1520-0469(1999)056%3C4167:ASPOMF%3E2.0.CO;2}}
+ Bdsk-Url-1 = {https://doi.org/10.1175/1520-0469(1999)056%3C4167:ASPOMF%3E2.0.CO;2},
+ Bdsk-Url-2 = {http://dx.doi.org/10.1175/1520-0469(1999)056%3C4167:ASPOMF%3E2.0.CO;2}}
@article{scinocca_2003,
Author = {Scinocca, John F.},
@@ -3084,7 +3089,8 @@ @article{scinocca_2003
Url = {https://doi.org/10.1175/1520-0469(2003)060<0667:AASNGW>2.0.CO;2},
Volume = {60},
Year = {2003},
- Bdsk-Url-1 = {https://doi.org/10.1175/1520-0469(2003)060%3C0667:AASNGW%3E2.0.CO;2}}
+ Bdsk-Url-1 = {https://doi.org/10.1175/1520-0469(2003)060%3C0667:AASNGW%3E2.0.CO;2},
+ Bdsk-Url-2 = {http://dx.doi.org/10.1175/1520-0469(2003)060%3C0667:AASNGW%3E2.0.CO;2}}
@article{shaw_and_shepherd_2009,
Author = {Shaw, Tiffany A. and Shepherd, Theodore G.},
@@ -3097,7 +3103,8 @@ @article{shaw_and_shepherd_2009
Url = {https://doi.org/10.1175/2009JAS3051.1},
Volume = {66},
Year = {2009},
- Bdsk-Url-1 = {https://doi.org/10.1175/2009JAS3051.1}}
+ Bdsk-Url-1 = {https://doi.org/10.1175/2009JAS3051.1},
+ Bdsk-Url-2 = {http://dx.doi.org/10.1175/2009JAS3051.1}}
@article{molod_et_al_2015,
Author = {Molod, A. and Takacs, L. and Suarez, M. and Bacmeister, J.},
@@ -3110,7 +3117,7 @@ @article{molod_et_al_2015
Volume = {8},
Year = {2015},
Bdsk-Url-1 = {https://www.geosci-model-dev.net/8/1339/2015/},
- Bdsk-Url-2 = {https://doi.org/10.5194/gmd-8-1339-2015}}
+ Bdsk-Url-2 = {http://dx.doi.org/10.5194/gmd-8-1339-2015}}
@article{richter_et_al_2010,
Author = {Richter, Jadwiga H. and Sassi, Fabrizio and Garcia, Rolando R.},
@@ -3123,7 +3130,8 @@ @article{richter_et_al_2010
Url = {https://doi.org/10.1175/2009JAS3112.1},
Volume = {67},
Year = {2010},
- Bdsk-Url-1 = {https://doi.org/10.1175/2009JAS3112.1}}
+ Bdsk-Url-1 = {https://doi.org/10.1175/2009JAS3112.1},
+ Bdsk-Url-2 = {http://dx.doi.org/10.1175/2009JAS3112.1}}
@article{richter_et_al_2014,
Author = {Richter, Jadwiga H. and Solomon, Abraham and Bacmeister, Julio T.},
@@ -3138,7 +3146,7 @@ @article{richter_et_al_2014
Volume = {6},
Year = {2014},
Bdsk-Url-1 = {https://agupubs.onlinelibrary.wiley.com/doi/abs/10.1002/2013MS000303},
- Bdsk-Url-2 = {https://doi.org/10.1002/2013MS000303}}
+ Bdsk-Url-2 = {http://dx.doi.org/10.1002/2013MS000303}}
@article{gelaro_et_al_2017,
Author = {Gelaro, et al.},
@@ -3151,7 +3159,8 @@ @article{gelaro_et_al_2017
Url = {https://doi.org/10.1175/JCLI-D-16-0758.1},
Volume = {30},
Year = {2017},
- Bdsk-Url-1 = {https://doi.org/10.1175/JCLI-D-16-0758.1}}
+ Bdsk-Url-1 = {https://doi.org/10.1175/JCLI-D-16-0758.1},
+ Bdsk-Url-2 = {http://dx.doi.org/10.1175/JCLI-D-16-0758.1}}
@article{garcia_et_al_2007,
Author = {Garcia, R. R. and Marsh, D. R. and Kinnison, D. E. and Boville, B. A. and Sassi, F.},
@@ -3165,7 +3174,7 @@ @article{garcia_et_al_2007
Volume = {112},
Year = {2007},
Bdsk-Url-1 = {https://agupubs.onlinelibrary.wiley.com/doi/abs/10.1029/2006JD007485},
- Bdsk-Url-2 = {https://doi.org/10.1029/2006JD007485}}
+ Bdsk-Url-2 = {http://dx.doi.org/10.1029/2006JD007485}}
@article{eckermann_et_al_2009,
Author = {Stephen D. Eckermann and Karl W. Hoppel and Lawrence Coy and John P. McCormack and David E. Siskind and Kim Nielsen and Andrew Kochenash and Michael H. Stevens and Christoph R. Englert and Werner Singer and Mark Hervig},
@@ -3201,7 +3210,7 @@ @article{ern_et_al_2018
Volume = {10},
Year = {2018},
Bdsk-Url-1 = {https://www.earth-syst-sci-data.net/10/857/2018/},
- Bdsk-Url-2 = {https://doi.org/10.5194/essd-10-857-2018}}
+ Bdsk-Url-2 = {http://dx.doi.org/10.5194/essd-10-857-2018}}
@inproceedings{yudin_et_al_2019,
Author = {Yudin V.A. , S. I. Karol, R.A. Akmaev, T. Fuller-Rowell, D. Kleist, A. Kubaryk, and C. Thompson},
diff --git a/physics/docs/pdftxt/CPT_adv_suite.txt b/physics/docs/pdftxt/CPT_adv_suite.txt
index 132d8bd11..26d514d51 100644
--- a/physics/docs/pdftxt/CPT_adv_suite.txt
+++ b/physics/docs/pdftxt/CPT_adv_suite.txt
@@ -3,31 +3,28 @@
\section csawmg_suite_overview Overview
-The advanced csawmg physics suite uses the parameterizations in the following order:
+The csawmg physics suite uses the parameterizations in the following order:
- \ref GFS_RRTMG
- \ref GFS_SFCLYR
- \ref GFS_NSST
- \ref GFS_NOAH
- \ref GFS_SFCSICE
- \ref GFS_HEDMF
- - \ref GFS_GWDPS
+ - \ref GFS_UGWP_v0
- \ref GFS_RAYLEIGH
- \ref GFS_OZPHYS
- \ref GFS_H2OPHYS
- \ref CSAW_scheme
- - \ref GFS_GWDC
- \ref GFS_SAMFshal
- \ref CPT_MG3
- \ref mod_cs_conv_aw_adj
- \ref GFS_CALPRECIPTYPE
\section sdf_cpt_suite Suite Definition File
-
-The advanced csawmg physics suite uses the parameterizations in the following order, as defined in \c SCM_csawmg :
\code
-
option | DDT in Host Model | Description | Default Value
@@ -117,13 +121,19 @@ and how stochastic perturbations are used in the Noah Land Surface Model.
0
- | iaer | gfs_control_type | aerosol flag "abc" (volcanic, LW, SW): \n
+ | iaer | gfs_control_type | 4-digit aerosol flag (dabc for aermdl, volcanic, LW, SW): \n
|
1
| ico2 | gfs_control_type | \f$CO_2\f$ data source control flag:\n
@@ -159,7 +169,7 @@ and how stochastic perturbations are used in the Noah Land Surface Model.
| 0
| lwhtr | gfs_control_type | logical flag for output of longwave heating rate | .true.
| swhtr | gfs_control_type | logical flag for output of shortwave heating rate | .true.
- | cnvgwd | gfs_control_type | logical flag for convective gravity wave drag scheme | .false.
+ | cnvgwd | gfs_control_type | logical flag for convective gravity wave drag scheme dependent on maxval(cdmbgwd(3:4) == 0.0) | .false.
| shal_cnv | gfs_control_type | logical flag for calling shallow convection | .false.
| lmfshal | gfs_control_type | flag for mass-flux shallow convection scheme in the cloud fraction calculation | shal_cnv .and. (imfshalcnv > 0)
| lmfdeep2 | gfs_control_type | flag for mass-flux deep convection scheme in the cloud fraction calculation | imfdeepcnv == 2 .or. 3 .or.4
@@ -168,6 +178,12 @@ and how stochastic perturbations are used in the Noah Land Surface Model.
| dspheat | gfs_control_type | logical flag for using TKE dissipative heating to temperature tendency in hybrid EDMF and TKE-EDMF schemes | .false.
| hybedmf | gfs_control_type | logical flag for calling hybrid EDMF PBL scheme | .false.
| satmedmf | gfs_control_type | logical flag for calling TKE EDMF PBL scheme | .false.
+ | isatmedmf | gfs_control_type | flag for scale-aware TKE-based moist EDMF scheme \n
+ |
0
| do_mynnedmf | gfs_control_type | flag to activate MYNN-EDMF scheme | .false.
| random_clds | gfs_control_type | logical flag for whether clouds are random | .false.
| trans_trac | gfs_control_type | logical flag for convective transport of tracers | .false.
@@ -187,6 +203,7 @@ and how stochastic perturbations are used in the Noah Land Surface Model.
| 1
| imfdeepcnv | gfs_control_type | flag for mass-flux deep convective scheme:\n
|
1
| lgfdlmprad | gfs_control_type | flag for GFDL mp scheme and radiation consistency | .false.
- | cdmbgwd(2) | gfs_control_type | multiplication factors for mountain blocking and orographic gravity wave drag | 2.0,0.25
+ | cdmbgwd(4) | gfs_control_type | multiplication factors for mountain blocking(1), orographic gravity wave drag(2)
+ |
2.0,0.25,1.0,1.0
| prslrd0 | gfs_control_type | pressure level above which to apply Rayleigh damping | 0.0d0
| lsm | gfs_control_type | flag for land surface model to use \n
|
1
@@ -221,14 +244,14 @@ and how stochastic perturbations are used in the Noah Land Surface Model.
| debug | gfs_control_type | flag for debug printout | .false.
| nstf_name(5) | gfs_control_type | NSST related paramters:\n
|
/0,0,1,0,5/
- | nst_anl | gfs_control_type | flag for NSSTM analysis in gcycle/sfcsub | .false.
+ | nst_anl | gfs_control_type | flag for NSST analysis in gcycle/sfcsub | .false.
| effr_in | gfs_control_type | logical flag for using input cloud effective radii calculation | .false.
| aero_in | gfs_control_type | logical flag for using aerosols in Morrison-Gettelman microphysics | .false.
| iau_delthrs | gfs_control_type | incremental analysis update (IAU) time interval in hours | 6
@@ -342,7 +365,14 @@ and how stochastic perturbations are used in the Noah Land Surface Model.
| 1
| lsoil_lsm | gfs_control_type | number of soil layers internal to land surface model | -1
- | \b Stochastic \b Physics \b Specific \b Parameters
+ | ldiag_ugwp | GFS_control_type | flag for CIRES UGWP diagnostics | .false.
+ | do_ugwp | GFS_control_type | flag for CIRES UGWP revised OGW
+ |
.false.
+ | do_tofd | GFS_control_type | flag for turbulent orographic form drag | .false.
| do_sppt | gfs_control_type | flag for stochastic SPPT option | .false.
| do_shum | gfs_control_type | flag for stochastic SHUM option | .false.
| do_skeb | gfs_control_type | flag for stochastic SKEB option | .false.
@@ -389,42 +419,61 @@ and how stochastic perturbations are used in the Noah Land Surface Model.
| skebint | compns_stochy_mod | | 0
| \b &gfdl_cloud_microphysics_nml
| sedi_transport | gfdl_cloud_microphys_mod | logical flag for turning on horizontal momentum transport during sedimentation | .true.
+ | do_sedi_w | gfdl_cloud_microphys_mod | \a .true. to turn on vertical motion transport during sedimentation. (not supported in GFS physics) | .false.
| do_sedi_heat | gfdl_cloud_microphys_mod | logical flag for turning on horizontal heat transport during sedimentation | .true.
| rad_snow | gfdl_cloud_microphys_mod | logical flag for considering snow in cloud fraction calculation | .true.
| rad_graupel | gfdl_cloud_microphys_mod | logical flag for considering graupel in cloud fraction calculation | .true.
| rad_rain | gfdl_cloud_microphys_mod | logical flag for considering rain in cloud fraction calculation | .true.
+ | cld_min | gfdl_cloud_microphys_mod | minimum cloud fraction. If total cloud condensate exceeds 1.0e-6 kg/kg, cloud fraction cannot be less than \p cld_min | 0.05
| const_vi | gfdl_cloud_microphys_mod | logical flag for using constant cloud ice fall speed | .false.
| const_vs | gfdl_cloud_microphys_mod | logical flag for using constant snow fall speed | .false.
| const_vg | gfdl_cloud_microphys_mod | logical flag for using constant graupel fall speed | .false.
| const_vr | gfdl_cloud_microphys_mod | logical flag for using constant rain fall speed | .false.
+ | vi_fac | gfdl_cloud_microphys_mod | tunable factor for cloud ice fall or the constant cloud ice fall speed when \p const_vi is .true. | 1.
+ | vr_fac | gfdl_cloud_microphys_mod | tunable factor for rain fall or the constant rain fall speed when \p const_vr is .true. | 1.
+ | vs_fac | gfdl_cloud_microphys_mod | tunable factor for snow fall or the constant snow fall speed when \p const_vs is .true. | 1.
+ | vg_fac | gfdl_cloud_microphys_mod | tunable factor for graupel fall or the constant graupel fall speed when \p const_vg is .true. | 1.
| vi_max | gfdl_cloud_microphys_mod | maximum fall speed for cloud ice | 0.5
| vs_max | gfdl_cloud_microphys_mod | maximum fall speed for snow | 5.0
| vg_max | gfdl_cloud_microphys_mod | maximum fall speed for graupel | 8.0
| vr_max | gfdl_cloud_microphys_mod | maximum fall speed for rain | 12.0
| qi_lim | gfdl_cloud_microphys_mod | cloud ice limiter to prevent large ice built up in cloud ice freezing and deposition | 1.
| prog_ccn | gfdl_cloud_microphys_mod | logical flag for activating prognostic CCN (not supported in GFS Physics) | .false.
- | do_qa | gfdl_cloud_microphys_mod | logical flag for activating inline cloud fraction diagnosis in fast saturation adjustment | .true.
- | fast_sat_adj | gfdl_cloud_microphys_mod | logical flag for adjusting cloud water evaporation/freezing, cloud ice deposition when fast saturation adjustment is activated | .true.
+ | do_qa | gfdl_cloud_microphys_mod | \a .true. to activate inline cloud fraction diagnosis in fast saturation adjustment. \a .false. to activate inline cloud fraction diagnosis in major cloud microphysics | .true.
+ | fast_sat_adj | gfdl_cloud_microphys_mod | logical flag for adjusting cloud water evaporation (cloud water -> water vapor), cloud water freezing (cloud water -> cloud ice), cloud ice deposition (water vapor -> cloud ice) when fast saturation adjustment is activated (\b do_sat_adj = .true. in \b fv_core_nml block) | .true.
| tau_l2v | gfdl_cloud_microphys_mod | time scale for evaporation of cloud water to water vapor. Increasing(decreasing) \p tau_l2v can decrease(boost) deposition of cloud water to water vapor | 300.
| tau_v2l | gfdl_cloud_microphys_mod | time scale for condensation of water vapor to cloud water. Increasing(decreasing) \p tau_v2l can decrease(boost) condensation of water vapor to cloud water | 150.
| tau_g2v | gfdl_cloud_microphys_mod | time scale for sublimation of graupel to water vapor. Increasing(decreasing) \p tau_g2v can decrease(boost) sublimation of graupel to water vapor | 900.
+ | tau_g2r | gfdl_cloud_microphys_mod | time scale for graupel melting. Increasing(decreasing) \p tau_g2r can decrease(boost) melting of graupel to rain (graupel-> rain) | 600.
+ | tau_v2g | gfdl_cloud_microphys_mod | time scale for deposition of water vapor to graupel. Increasing(decreasing) \p tau_v2g can decrease(boost) deposition of water vapor to graupel (water vapor -> graupel) | 21600.
+ | tau_l2r | gfdl_cloud_microphys_mod | time scale for autoconversion of cloud water to rain. Increasing(decreasing) \p tau_l2r can decrese(boost) autoconversion of cloud water to rain (cloud water -> rain) | 900.
+ | tau_r2g | gfdl_cloud_microphys_mod | time scale for freezing of rain to graupel. Increasing(decreasing) \p tau_r2g can decrease(boost) freezing of rain to graupel (rain->graupel) | 900.
+ | tau_i2s | gfdl_cloud_microphys_mod | time scale for autoconversion of cloud ice to snow. Increasing(decreasing) \p tau_i2s can decrease(boost) autoconversion of cloud ice to snow (cloud ice -> snow) | 1000.
+ | tau_imlt | gfdl_cloud_microphys_mod | time scale for cloud ice melting. Increasing(decreasing) \p tau_imlt can decrease(boost) melting of cloud ice to cloud water or rain (cloud ice -> cloud water or rain) | 600.
+ | tau_smlt | gfdl_cloud_microphys_mod | time scale for snow melting. Increasing(decreasing) \p tau_smlt can decrease(boost) melting of snow to cloud water or rain (snow-> cloud water or rain) | 900.
| rthresh | gfdl_cloud_microphys_mod | critical cloud water radius for autoconversion (cloud water -> rain). Increasing(decreasing) of \p rthresh makes the autoconversion harder(easier) | 10.0e-6
| dw_land | gfdl_cloud_microphys_mod | base value for subgrid deviation/variability over land | 0.20
| dw_ocean | gfdl_cloud_microphys_mod | base value for subgrid deviation/variability over ocean | 0.10
| ql_gen | gfdl_cloud_microphys_mod | maximum value for cloud water generated from condensation of water vapor (water vapor-> cloud water) | 1.0e-3
- | ql_mlt | gfdl_cloud_microphys_mod | maximum value of cloud water allowed from melted cloud ice (cloud ice -> cloud water or rain) | 2.0e-3
- | qi0_crt | gfdl_cloud_microphys_mod | threshold of cloud ice to snow autoconversion (cloud ice -> snow) | 1.0e-4
- | qs0_crt | gfdl_cloud_microphys_mod | threshold of snow to graupel autoconversion (snow -> graupel) | 1.0e-3
- | tau_i2s | gfdl_cloud_microphys_mod | time scale for autoconversion of cloud ice to snow | 1000.
- | c_psaci | gfdl_cloud_microphys_mod | accretion efficiency of cloud ice to snow | 0.02
- | c_pgacs | gfdl_cloud_microphys_mod | accretion efficiency of snow to graupel | 2.0e-3
+ | qi_gen | gfdl_cloud_microphys_mod | maximum value of cloud ice generated from deposition of water vapor (water vapor->cloud ice) or freezing(cloud water -> cloud ice). Increasing(decreasing) \p qi_gen can increas(decrease) cloud ice | 1.82e-6
+ | ql_mlt | gfdl_cloud_microphys_mod | maximum value of cloud water allowed from melted cloud ice (cloud ice -> cloud water or rain). Exceedance of which will become rain. Increasing(decreasing) \p ql_mlt can increase(decrease) cloud water and decrease(increase) rain | 2.0e-3
+ | qs_mlt | gfdl_cloud_microphys_mod | maximum value of cloud water allowed from melted snow (snow -> cloud water or rain). Exceedance of which will become rain. Increasing(decreasing) \p qs_mlt can increas(decrease) cloud water and decrease (increase) rain | 1.0e-6
+ | ql0_max | gfdl_cloud_microphys_mod | threshold of cloud water to rain autoconversion (cloud water -> rain). Increasing(decreasing) \p ql0_max can increase(decrease) rain and decrease(increase) cloud water | 2.0e-3
+ | qi0_max | gfdl_cloud_microphys_mod | maximum value of cloud ice generated from other sources like convection. Exceedance of which will become snow. Increasing(decreasing) \p qi0_max can increase(decrease) cloud ice and decrease(increase) snow | 1.0e-4
+ | qi0_crt | gfdl_cloud_microphys_mod | threshold of cloud ice to snow autoconversion (cloud ice -> snow). Increasing(decreasing) \p qi0_crt can increase(decrease) cloud ice and decrease(increase) snow | 1.0e-4
+ | qs0_crt | gfdl_cloud_microphys_mod | threshold of snow to graupel autoconversion (snow -> graupel). Increasing(decreasing) \p qs0_crt can increase(decrease) snow and decrease(increase) graupel | 1.0e-3
+ | qc_crt | gfdl_cloud_microphys_mod | minimum value of cloud condensate to allow partial cloudiness. Partial cloud can only exist when total cloud condensate exceeds \p qc_crt | 5.0e-8
+ | c_psaci | gfdl_cloud_microphys_mod | accretion efficiency of cloud ice to snow (cloud ice -> snow). Increasing(decreasing) of \p c_psaci can boost(decrease) the accretion of cloud ice to snow | 0.02
+ | c_pgacs | gfdl_cloud_microphys_mod | accretion efficiency of snow to graupel (snow -> graupel). Increasing(decreasing) of \p c_pgacs can boost(decrease) the accretion of snow to graupel | 2.0e-3
| rh_inc | gfdl_cloud_microphys_mod | relative humidity increment for complete evaporation of cloud water and cloud ice | 0.25
| rh_inr | gfdl_cloud_microphys_mod | relative humidity increment for sublimation of snow | 0.25
| rh_ins | gfdl_cloud_microphys_mod | relative humidity increment for minimum evaporation of rain | 0.25
- | ccn_l | gfdl_cloud_microphys_mod | base CCN over land \f$cm^{-3}\f$ | 270.
- | ccn_o | gfdl_cloud_microphys_mod | base CCN over ocean \f$cm^{-3}\f$ | 90.
- | c_paut | gfdl_cloud_microphys_mod | autoconversion efficiency of cloud water to rain | 0.55
- | c_cracw | gfdl_cloud_microphys_mod | accretion efficiency of cloud water to rain | 0.9
+ | rthresh | gfdl_cloud_microphys_mod | critical cloud water radius for autoconversion(cloud water->rain). Increasing(decreasing) of \p rthresh makes the autoconversion harder(easier) | 1.0e-5
+ | ccn_l | gfdl_cloud_microphys_mod | base CCN over land. Increasing(decreasing) \p ccn_l can on the one hand boost(decrease) the autoconversion of cloud water to rain, on the other hand make the autoconversion harder(easier). The unit is \f$cm^{-3}\f$ | 270.
+ | ccn_o | gfdl_cloud_microphys_mod | base CCN over ocean. Increasing(decreasing) \p ccn_o can on the one hand boost(decrease) the autoconversion of cloud water to rain, on the other hand make the autoconversion harder(easier). The unit is \f$cm^{-3}\f$ | 90.
+ | c_paut | gfdl_cloud_microphys_mod | autoconversion efficiency of cloud water to rain (cloud water -> rain). Increasing(decreasing) of \p c_paut can boost(decrease) the autoconversion of cloud water to rain | 0.55
+ | c_cracw | gfdl_cloud_microphys_mod | accretion efficiency of cloud water to rain (cloud water -> rain). Increasing(decreasing) of \p c_cracw can boost(decrease) the accretion of cloud water to rain | 0.9
+ | sat_adj0 | gfdl_cloud_microphys_mod | adjust factor for condensation of water vapor to cloud water (water vapor->cloud water) and deposition of water vapor to cloud ice | 0.9
| use_ppm | gfdl_cloud_microphys_mod | \e true to use PPM fall scheme; \e false to use time-implicit monotonic fall scheme | .false.
| use_ccn | gfdl_cloud_microphys_mod | \e true to compute prescribed CCN. It should be .true. when \p prog_ccn = .false. | .false.
| mono_prof | gfdl_cloud_microphys_mod | \e true to turn on terminal fall with monotonic PPM scheme. This is used together with \p use_ppm=.true. | .true.
@@ -433,6 +482,68 @@ and how stochastic perturbations are used in the Noah Land Surface Model.
| de_ice | gfdl_cloud_microphys_mod | \e true to convert excessive cloud ice to snow to prevent ice over-built from other sources like convection scheme (not supported in GFS physics) | .false.
| fix_negative | gfdl_cloud_microphys_mod | \e true to fix negative water species using nearby points | .false.
| icloud_f | gfdl_cloud_microphys_mod | flag (0,1,or 2) for cloud fraction diagnostic scheme | 0
- | mp_time | gfdl_cloud_microphys_mod | time step of GFDL cloud microphysics | 150.
+ | irain_f | gfdl_cloud_microphys_mod | flag (0 or 1) for cloud water autoconversion to rain scheme. 0: with subgrid variability; 1: no subgrid variability | 0
+ | mp_time | gfdl_cloud_microphys_mod | time step of GFDL cloud microphysics (MP). If \p mp_time isn't divisible by physics time step or is larger than physics time step, the actual MP time step becomes \p dt/NINT[dt/MIN(dt,mp_time)] | 150.
+ | alin | gfdl_cloud_microphys_mod | parameter \a a in Lin et al.(1983). Constant in empirical formula for \f$U_R\f$. Increasing(decreasing) \p alin can boost(decrease) accretion of cloud water by rain and rain evaporation | 842.
+ | clin | gfdl_cloud_microphys_mod | parameter \a c in Lin et al.(1983). Constant in empirical formula for \f$U_S\f$. Increasing(decreasing) \p clin can boost(decrease) accretion of cloud water by snow, accretion of cloud ice by snow, snow sublimation and deposition, and snow melting | 4.8
+ | t_min | gfdl_cloud_microphys_mod | temperature threshold for instant deposition. Deposit all water vapor to cloud ice when temperature is lower than \p t_min | 178.
+ | t_sub | gfdl_cloud_microphys_mod | temperature threshold for sublimation. Cloud ice, snow or graupel stops(starts) sublimation when temperature is lower(higher) then \p t_sub | 184.
+ | mp_print | gfdl_cloud_microphys_mod | \a .true. to turn on GFDL cloud microphysics debugging print out. (not supported in GFS physics) | .false.
+ | \b &cires_ugwp_nml
+ | knob_ugwp_version | cires_ugwp_module | parameter selects a version of the UGWP implementation in FV3GFS-127L \n
+ |
0
+ | knob_ugwp_doaxyz | cires_ugwp_module | parameter controls application of the momentum deposition for NGW-schemes \n
+ |
1
+ | knob_ugwp_doheat | cires_ugwp_module | parameter controls application of the heat deposition for NGW-schemes \n
+ |
1
+ | knob_ugwp_dokdis | cires_ugwp_module | parameter controls application of the eddy diffusion due to instability of NGWs \n
+ |
0
+ | knob_ugwp_solver | cires_ugwp_module | parameter controls the selection of UGWP-solvers(wave propagation, dissipation and wave breaking) for NGWs \n
+ |
1
+ | knob_ugwp_ndx4lh | cires_ugwp_module | parameter controls the selection of the horizontal wavenumber(wavelength) for NGW schemes \n
+ |
2
+ | knob_ugwp_wvspec | cires_ugwp_module | four-dimensional array defines number of waves in each arimuthal propagation (as defined by knob_ugwp_azdir) for GWs excited due to the following four sources: \n
+ (1) sub-grid orography (\b knob_ugwp_wvspec[1]=1), \n
+ (2) convective (\b knob_ugwp_wvspec[2]=25), \n
+ (3) frontal (\b knob_ugwp_wvspec[3]=25) activity, \n
+ (4) \b knob_ugwp_wvspec[4] represents number of wave excited by dynamical imbalances that may mimic both convective and front-jet mechanisms of GW triggering. \n
+ In UGWP v0, first two elements of the array, \b knob_ugwp_wvspec(1:2), control number of waves for stationary (OGW) and nonstationary waves (NGWs).
+ | 1,32,32,32
+ | knob_ugwp_azdir | cires_ugwp_module | four-dimensional array that defines number of azimuths for propagation of GWs triggered by four types of physics-based sources (orography, convection, front-jets, and dynamical imbalance). In UGWP v0, first two elements of the array, \b knob_ugwp_azdir(1:2), control number of azimuths for OGW and NGWs respectively.
+ | 2,4,4,4
+ | knob_ugwp_stoch | cires_ugwp_module | four-dimensional array that control stochastic selection of GWs triggered by four types of physics-based sources. \n
+ Default values:0,0,0,0 - reflect determinstic selection of GW parameters without stochastic selection
+ | 0,0,0,0
+ | knob_ugwp_effac | cires_ugwp_module | four-dimensional array that control efficiency of GWs triggerd by four types of physics-based sources. \n
+ Default values: 1.,1.,1.,1. - reflect that calculated GW-tendencies will be applied for the model state.
+ | 1.,1.,1.,1.
+ | launch_level | cires_ugwp_module | parameter has been introduced by EMC during implementation. It defines the interface model level from the surface at which NGWs are launched. \n
+ Default value for FV3GFS-64L, launch_level=25 and for FV3GFS-128L, launch_level=52.
+ | 55
| |
---|