diff --git a/ccpp/config/ccpp_prebuild_config.py b/ccpp/config/ccpp_prebuild_config.py
index 22e4c9076..d499067b9 100755
--- a/ccpp/config/ccpp_prebuild_config.py
+++ b/ccpp/config/ccpp_prebuild_config.py
@@ -227,7 +227,6 @@
'ccpp/physics/physics/sfc_cice.f' : ['physics'],
'ccpp/physics/physics/sfc_diff.f' : ['physics'],
'ccpp/physics/physics/sfc_drv.f' : ['physics'],
- 'ccpp/physics/physics/sfc_noahmp_pre.F90' : ['physics'],
'ccpp/physics/physics/sfc_noahmp_drv.f' : ['physics'],
'ccpp/physics/physics/sfc_nst.f' : ['physics'],
'ccpp/physics/physics/sfc_ocean.F' : ['physics'],
diff --git a/ccpp/suites/suite_SCM_GFS_v15_noahmp.xml b/ccpp/suites/suite_SCM_GFS_v15_noahmp.xml
index 0ff53a736..40f449f98 100644
--- a/ccpp/suites/suite_SCM_GFS_v15_noahmp.xml
+++ b/ccpp/suites/suite_SCM_GFS_v15_noahmp.xml
@@ -42,7 +42,6 @@
sfc_nst_pre
sfc_nst
sfc_nst_post
- sfc_noahmp_pre
noahmpdrv
sfc_sice
GFS_surface_loop_control_part2
diff --git a/scm/src/GFS_typedefs.F90 b/scm/src/GFS_typedefs.F90
index bb6775df6..2b8187880 100644
--- a/scm/src/GFS_typedefs.F90
+++ b/scm/src/GFS_typedefs.F90
@@ -351,7 +351,21 @@ module GFS_typedefs
real (kind=kind_phys), pointer :: chs2(:) => null() !exch coeff for heat at 2m
real (kind=kind_phys), pointer :: cqs2(:) => null() !exch coeff for moisture at 2m
real (kind=kind_phys), pointer :: lh(:) => null() !latent heating at the surface
+
+ !---- precipitation amounts from previous time step for RUC LSM
+ real (kind=kind_phys), pointer :: raincprv (:) => null() !< explicit rainfall from previous timestep
+ real (kind=kind_phys), pointer :: rainncprv (:) => null() !< convective_precipitation_amount from previous timestep
+ real (kind=kind_phys), pointer :: iceprv (:) => null() !< ice amount from previous timestep
+ real (kind=kind_phys), pointer :: snowprv (:) => null() !< snow amount from previous timestep
+ real (kind=kind_phys), pointer :: graupelprv(:) => null() !< graupel amount from previous timestep
+ !---- precipitation rates from previous time step for NoahMP LSM
+ real (kind=kind_phys), pointer :: draincprv (:) => null() !< convective precipitation rate from previous timestep
+ real (kind=kind_phys), pointer :: drainncprv (:) => null() !< explicit rainfall rate from previous timestep
+ real (kind=kind_phys), pointer :: diceprv (:) => null() !< ice precipitation rate from previous timestep
+ real (kind=kind_phys), pointer :: dsnowprv (:) => null() !< snow precipitation rate from previous timestep
+ real (kind=kind_phys), pointer :: dgraupelprv(:) => null() !< graupel precipitation rate from previous timestep
+
contains
procedure :: create => sfcprop_create !< allocate array data
end type GFS_sfcprop_type
@@ -1121,20 +1135,6 @@ module GFS_typedefs
real (kind=kind_phys), pointer :: prevst (:,:) => null() !<
real (kind=kind_phys), pointer :: prevsq (:,:) => null() !<
integer, pointer :: cactiv (:) => null() !< convective activity memory contour
-
- !---- precipitation amounts from previous time step for RUC LSM
- real (kind=kind_phys), pointer :: raincprv (:) => null() !< explicit rainfall from previous timestep
- real (kind=kind_phys), pointer :: rainncprv (:) => null() !< convective_precipitation_amount from previous timestep
- real (kind=kind_phys), pointer :: iceprv (:) => null() !< ice amount from previous timestep
- real (kind=kind_phys), pointer :: snowprv (:) => null() !< snow amount from previous timestep
- real (kind=kind_phys), pointer :: graupelprv(:) => null() !< graupel amount from previous timestep
-
- !---- precipitation rates from previous time step for NoahMP LSM
- real (kind=kind_phys), pointer :: draincprv (:) => null() !< convective precipitation rate from previous timestep
- real (kind=kind_phys), pointer :: drainncprv (:) => null() !< explicit rainfall rate from previous timestep
- real (kind=kind_phys), pointer :: diceprv (:) => null() !< ice precipitation rate from previous timestep
- real (kind=kind_phys), pointer :: dsnowprv (:) => null() !< snow precipitation rate from previous timestep
- real (kind=kind_phys), pointer :: dgraupelprv(:) => null() !< graupel precipitation rate from previous timestep
!--- MYNN prognostic variables that can't be in the Intdiag or Interstitial DDTs
real (kind=kind_phys), pointer :: CLDFRA_BL (:,:) => null() !
@@ -2108,7 +2108,19 @@ subroutine sfcprop_create (Sfcprop, IM, Model)
Sfcprop%dt_cool = zero
Sfcprop%qrain = zero
endif
-
+
+ if (Model%lsm == Model%lsm_ruc .or. Model%lsm == Model%lsm_noahmp) then
+ allocate(Sfcprop%raincprv (IM))
+ allocate(Sfcprop%rainncprv (IM))
+ allocate(Sfcprop%iceprv (IM))
+ allocate(Sfcprop%snowprv (IM))
+ allocate(Sfcprop%graupelprv(IM))
+ Sfcprop%raincprv = clear_val
+ Sfcprop%rainncprv = clear_val
+ Sfcprop%iceprv = clear_val
+ Sfcprop%snowprv = clear_val
+ Sfcprop%graupelprv = clear_val
+ end if
! Noah MP allocate and init when used
!
if (Model%lsm == Model%lsm_noahmp ) then
@@ -2183,7 +2195,19 @@ subroutine sfcprop_create (Sfcprop, IM, Model)
Sfcprop%tsnoxy = clear_val
Sfcprop%smoiseq = clear_val
Sfcprop%zsnsoxy = clear_val
-
+
+ allocate(Sfcprop%draincprv (IM))
+ allocate(Sfcprop%drainncprv (IM))
+ allocate(Sfcprop%diceprv (IM))
+ allocate(Sfcprop%dsnowprv (IM))
+ allocate(Sfcprop%dgraupelprv(IM))
+
+ Sfcprop%draincprv = clear_val
+ Sfcprop%drainncprv = clear_val
+ Sfcprop%diceprv = clear_val
+ Sfcprop%dsnowprv = clear_val
+ Sfcprop%dgraupelprv = clear_val
+
endif
if (Model%lsm == Model%lsm_ruc) then
@@ -4558,32 +4582,6 @@ subroutine tbd_create (Tbd, IM, Model)
Tbd%cactiv = zero
end if
- if (Model%lsm == Model%lsm_ruc) then
- allocate(Tbd%raincprv (IM))
- allocate(Tbd%rainncprv (IM))
- allocate(Tbd%iceprv (IM))
- allocate(Tbd%snowprv (IM))
- allocate(Tbd%graupelprv(IM))
- Tbd%raincprv = clear_val
- Tbd%rainncprv = clear_val
- Tbd%iceprv = clear_val
- Tbd%snowprv = clear_val
- Tbd%graupelprv = clear_val
- end if
-
- if (Model%lsm == Model%lsm_noahmp) then
- allocate(Tbd%draincprv (IM))
- allocate(Tbd%drainncprv (IM))
- allocate(Tbd%diceprv (IM))
- allocate(Tbd%dsnowprv (IM))
- allocate(Tbd%dgraupelprv(IM))
- Tbd%draincprv = clear_val
- Tbd%drainncprv = clear_val
- Tbd%diceprv = clear_val
- Tbd%dsnowprv = clear_val
- Tbd%dgraupelprv = clear_val
- end if
-
!--- MYNN variables:
if (Model%do_mynnedmf) then
!print*,"Allocating all MYNN-EDMF variables:"
diff --git a/scm/src/GFS_typedefs.meta b/scm/src/GFS_typedefs.meta
index aebc6eac7..b5e0502a8 100644
--- a/scm/src/GFS_typedefs.meta
+++ b/scm/src/GFS_typedefs.meta
@@ -1283,6 +1283,76 @@
dimensions = (horizontal_dimension)
type = real
kind = kind_phys
+[raincprv]
+ standard_name = lwe_thickness_of_convective_precipitation_amount_from_previous_timestep
+ long_name = convective_precipitation_amount from previous timestep
+ units = m
+ dimensions = (horizontal_dimension)
+ type = real
+ kind = kind_phys
+[rainncprv]
+ standard_name = lwe_thickness_of_explicit_rainfall_amount_from_previous_timestep
+ long_name = explicit rainfall from previous timestep
+ units = m
+ dimensions = (horizontal_dimension)
+ type = real
+ kind = kind_phys
+[iceprv]
+ standard_name = lwe_thickness_of_ice_amount_from_previous_timestep
+ long_name = ice amount from previous timestep
+ units = m
+ dimensions = (horizontal_dimension)
+ type = real
+ kind = kind_phys
+[snowprv]
+ standard_name = lwe_thickness_of_snow_amount_from_previous_timestep
+ long_name = snow amount from previous timestep
+ units = m
+ dimensions = (horizontal_dimension)
+ type = real
+ kind = kind_phys
+[graupelprv]
+ standard_name = lwe_thickness_of_graupel_amount_from_previous_timestep
+ long_name = graupel amount from previous timestep
+ units = m
+ dimensions = (horizontal_dimension)
+ type = real
+ kind = kind_phys
+[draincprv]
+ standard_name = convective_precipitation_rate_from_previous_timestep
+ long_name = convective precipitation rate from previous timestep
+ units = mm s-1
+ dimensions = (horizontal_dimension)
+ type = real
+ kind = kind_phys
+[drainncprv]
+ standard_name = explicit_rainfall_rate_from_previous_timestep
+ long_name = explicit rainfall rate previous timestep
+ units = mm s-1
+ dimensions = (horizontal_dimension)
+ type = real
+ kind = kind_phys
+[diceprv]
+ standard_name = ice_precipitation_rate_from_previous_timestep
+ long_name = ice precipitation rate from previous timestep
+ units = mm s-1
+ dimensions = (horizontal_dimension)
+ type = real
+ kind = kind_phys
+[dsnowprv]
+ standard_name = snow_precipitation_rate_from_previous_timestep
+ long_name = snow precipitation rate from previous timestep
+ units = mm s-1
+ dimensions = (horizontal_dimension)
+ type = real
+ kind = kind_phys
+[dgraupelprv]
+ standard_name = graupel_precipitation_rate_from_previous_timestep
+ long_name = graupel precipitation rate from previous timestep
+ units = mm s-1
+ dimensions = (horizontal_dimension)
+ type = real
+ kind = kind_phys
########################################################################
[ccpp-arg-table]
@@ -4300,76 +4370,6 @@
units = none
dimensions = (horizontal_dimension)
type = integer
-[raincprv]
- standard_name = lwe_thickness_of_convective_precipitation_amount_from_previous_timestep
- long_name = convective_precipitation_amount from previous timestep
- units = m
- dimensions = (horizontal_dimension)
- type = real
- kind = kind_phys
-[rainncprv]
- standard_name = lwe_thickness_of_explicit_rainfall_amount_from_previous_timestep
- long_name = explicit rainfall from previous timestep
- units = m
- dimensions = (horizontal_dimension)
- type = real
- kind = kind_phys
-[iceprv]
- standard_name = lwe_thickness_of_ice_amount_from_previous_timestep
- long_name = ice amount from previous timestep
- units = m
- dimensions = (horizontal_dimension)
- type = real
- kind = kind_phys
-[snowprv]
- standard_name = lwe_thickness_of_snow_amount_from_previous_timestep
- long_name = snow amount from previous timestep
- units = m
- dimensions = (horizontal_dimension)
- type = real
- kind = kind_phys
-[graupelprv]
- standard_name = lwe_thickness_of_graupel_amount_from_previous_timestep
- long_name = graupel amount from previous timestep
- units = m
- dimensions = (horizontal_dimension)
- type = real
- kind = kind_phys
-[draincprv]
- standard_name = convective_precipitation_rate_from_previous_timestep
- long_name = convective precipitation rate from previous timestep
- units = mm s-1
- dimensions = (horizontal_dimension)
- type = real
- kind = kind_phys
-[drainncprv]
- standard_name = explicit_rainfall_rate_from_previous_timestep
- long_name = explicit rainfall rate previous timestep
- units = mm s-1
- dimensions = (horizontal_dimension)
- type = real
- kind = kind_phys
-[diceprv]
- standard_name = ice_precipitation_rate_from_previous_timestep
- long_name = ice precipitation rate from previous timestep
- units = mm s-1
- dimensions = (horizontal_dimension)
- type = real
- kind = kind_phys
-[dsnowprv]
- standard_name = snow_precipitation_rate_from_previous_timestep
- long_name = snow precipitation rate from previous timestep
- units = mm s-1
- dimensions = (horizontal_dimension)
- type = real
- kind = kind_phys
-[dgraupelprv]
- standard_name = graupel_precipitation_rate_from_previous_timestep
- long_name = graupel precipitation rate from previous timestep
- units = mm s-1
- dimensions = (horizontal_dimension)
- type = real
- kind = kind_phys
[CLDFRA_BL]
standard_name = subgrid_cloud_fraction_pbl
long_name = subgrid cloud fraction from PBL scheme