Skip to content

Commit

Permalink
Update develop from NOAA-GSL: RUC ice, MYNN sfclay, stochastic land p…
Browse files Browse the repository at this point in the history
…erturbations (ufs-community#239)

* Update .gitmodules and submodule pointers for ccpp-framework and ccpp-physics for gsl/develop branch
* RUC ice for gsl/develop (replaces ufs-community#54 and ufs-community#56) (ufs-community#60) Implementation of RUC LSM ice model in CCPP
* Fix bug in gfsphysics/GFS_layer/GFS_typedefs.F90 from merge
* Remove lsm_ruc_sfc_sice from suite FV3_GSD_v0_unified_ugwp_suite and update submodule pointer for ccpp-physics
* Remove sfc_sice from ccpp/suites/suite_FV3_GSD_v0_unified_ugwp_suite.xml
* Update gsl/develop from develop 2020/12/08 (ufs-community#61)
* Fix for updating stochastic physics on separate time-step. (ufs-community#199)
This bug fix allows the random patterns in the stochastic physics persist the for a period of time (defined as SKEBINT,SPPTINT, etc.) before calculating new patterns.
The fix is to move the allocation of the saved variables into the init section of stochastic_physics_wrapper, and remove the deallocates in the run section.
* Bug fixes in (1) running with frac_grid=T and GFDL MP and (2) restarting with frac_grid=T (ufs-community#204)
* -- Pointing to Moorthi's modifications in ccpp/physics, which fixed the crash when running GFDL MP with frac_grid=T;
-- Not setting fice to zero in order to leave lake ice untouched;
-- Restart in the coupled model with the default physics is reproducible, if bad water temperature is only filtered at initial time;
Co-authored-with: Shrinivas Moorthi <shrinivas.moorthi@noaa.gov>
Co-authored-with: Denise Worthen <Denise.Worthen@noaa.gov>
* Revert change to .gitmodules and update submodule pointer for ccpp-physics
* Update submodule pointer for ccpp-physics - MYNN surface layer updates and bugfixes (ufs-community#63)
* Land stochastic perturbations (wrapper PR for ufs-community#65) (ufs-community#68)
* Move initialization of stochastic physics after the physics
initialization in CCPP.
* Add albedo variables to land perturbations with lndp_type=2 option. Change to accommodate soil perturbations with RUC LSM.
* Max/min soil moisture variables are introduced via GFS_Control_type
variables instead of through the use of namelist_soilveg*. This is a
more flexible way for different LSMs.
* Added pores and resid variables for max/min soil moisture to GFS_typedefs.f90.
* Remove tracer_sanitizer from all suites and from CCPP prebuild config
* Add namelist option to apply land surface perturbations at every time step, clean up stochastic_physics/stochastic_physics_wrapper.F90
* Stochastic land perturbations: add roughness length over land to the perturbed variables (ufs-community#70)
* Added roughness length over land to the perturbed variables.
* Bugfix in gfsphysics/GFS_layer/GFS_typedefs.F90: remove Diag%cldcov, in particular the reset call because the variable is not allocated
* Update .gitmodules and submodule pointer for GFDL_atmos_cubed_sphere for code review and testing
* Revert change to .gitmodules for ccpp-physics, update submodule pointer for ccpp-physics
* Revert change to .gitmodules and update submodule pointer for GFDL_atmos_cubed_sphere
Co-authored-by: DomHeinzeller <58610420+DomHeinzeller@users.noreply.github.com>
Co-authored-by: Phil Pegion <38869668+pjpegion@users.noreply.github.com>
Co-authored-by: shansun6 <48043606+shansun6@users.noreply.github.com>
Co-authored-by: tanyasmirnova <tanya.smirnova@noaa.gov>
  • Loading branch information
climbfuji authored Jan 22, 2021
1 parent a4cf6db commit 34c326c
Show file tree
Hide file tree
Showing 17 changed files with 312 additions and 172 deletions.
9 changes: 4 additions & 5 deletions atmos_model.F90
Original file line number Diff line number Diff line change
Expand Up @@ -553,11 +553,6 @@ subroutine atmos_model_init (Atmos, Time_init, Time, Time_step)
GFS_Data%Tbd, GFS_Data%Cldprop, GFS_Data%Radtend, &
GFS_Data%Intdiag, Init_parm)


!--- Initialize stochastic physics pattern generation / cellular automata for first time step
call stochastic_physics_wrapper(GFS_control, GFS_data, Atm_block, ierr)
if (ierr/=0) call mpp_error(FATAL, 'Call to stochastic_physics_wrapper failed')

Atmos%Diag => GFS_Diag

Atm(mygrid)%flagstruct%do_skeb = GFS_control%do_skeb
Expand Down Expand Up @@ -606,6 +601,10 @@ subroutine atmos_model_init (Atmos, Time_init, Time, Time_step)
call CCPP_step (step="physics_init", nblks=Atm_block%nblks, ierr=ierr)
if (ierr/=0) call mpp_error(FATAL, 'Call to CCPP physics_init step failed')

!--- Initialize stochastic physics pattern generation / cellular automata for first time step
call stochastic_physics_wrapper(GFS_control, GFS_data, Atm_block, ierr)
if (ierr/=0) call mpp_error(FATAL, 'Call to stochastic_physics_wrapper failed')

!--- set the initial diagnostic timestamp
diag_time = Time
if (output_1st_tstep_rst) then
Expand Down
2 changes: 0 additions & 2 deletions ccpp/config/ccpp_prebuild_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,6 @@
'ccpp/physics/physics/ozphys_2015.f',
'ccpp/physics/physics/precpd.f',
'ccpp/physics/physics/phys_tend.F90',
'ccpp/physics/physics/tracer_sanitizer.F90',
'ccpp/physics/physics/radlw_main.F90',
'ccpp/physics/physics/radsw_main.F90',
'ccpp/physics/physics/rascnv.F90',
Expand All @@ -173,7 +172,6 @@
'ccpp/physics/physics/sfc_diag.f',
'ccpp/physics/physics/sfc_diag_post.F90',
'ccpp/physics/physics/sfc_drv_ruc.F90',
'ccpp/physics/physics/lsm_ruc_sfc_sice_interstitial.F90',
'ccpp/physics/physics/sfc_cice.f',
'ccpp/physics/physics/sfc_diff.f',
'ccpp/physics/physics/sfc_drv.f',
Expand Down
147 changes: 85 additions & 62 deletions ccpp/data/GFS_typedefs.F90

Large diffs are not rendered by default.

80 changes: 59 additions & 21 deletions ccpp/data/GFS_typedefs.meta
Original file line number Diff line number Diff line change
Expand Up @@ -613,6 +613,14 @@
dimensions = (horizontal_loop_extent)
type = real
kind = kind_phys
[sncovr_ice]
standard_name = surface_snow_area_fraction_over_ice
long_name = surface snow area fraction over ice
units = frac
dimensions = (horizontal_dimension)
type = real
kind = kind_phys
active = (flag_for_land_surface_scheme == flag_for_ruc_land_surface_scheme)
[snoalb]
standard_name = upper_bound_on_max_albedo_over_deep_snow
long_name = maximum snow albedo
Expand Down Expand Up @@ -1273,27 +1281,35 @@
dimensions = (horizontal_loop_extent,soil_vertical_dimension_for_land_surface_model)
type = real
kind = kind_phys
active = (flag_for_land_surface_scheme == flag_for_ruc_land_surface_scheme)
[clw_surf]
standard_name = cloud_condensed_water_mixing_ratio_at_surface
long_name = moist cloud water mixing ratio at surface
active = (flag_for_land_surface_scheme == flag_for_ruc_land_surface_scheme)
[clw_surf_land]
standard_name = cloud_condensed_water_mixing_ratio_at_surface_over_land
long_name = moist cloud water mixing ratio at surface over land
units = kg kg-1
dimensions = (horizontal_loop_extent)
type = real
kind = kind_phys
active = (flag_for_land_surface_scheme == flag_for_ruc_land_surface_scheme)
[qwv_surf]
standard_name = water_vapor_mixing_ratio_at_surface
long_name = water vapor mixing ratio at surface
active = (flag_for_land_surface_scheme == flag_for_ruc_land_surface_scheme)
[clw_surf_ice]
standard_name = cloud_condensed_water_mixing_ratio_at_surface_over_ice
long_name = moist cloud water mixing ratio at surface over ice
units = kg kg-1
dimensions = (horizontal_loop_extent)
type = real
kind = kind_phys
active = (flag_for_land_surface_scheme == flag_for_ruc_land_surface_scheme)
[cndm_surf]
standard_name = surface_condensation_mass
long_name = surface condensation mass
units = kg m-2
[qwv_surf_land]
standard_name = water_vapor_mixing_ratio_at_surface_over_land
long_name = water vapor mixing ratio at surface over land
units = kg kg-1
dimensions = (horizontal_loop_extent)
type = real
kind = kind_phys
active = (flag_for_land_surface_scheme == flag_for_ruc_land_surface_scheme)
[qwv_surf_ice]
standard_name = water_vapor_mixing_ratio_at_surface_over_ice
long_name = water vapor mixing ratio at surface over ice
units = kg kg-1
dimensions = (horizontal_loop_extent)
type = real
kind = kind_phys
Expand All @@ -1314,25 +1330,33 @@
type = real
kind = kind_phys
active = (flag_for_land_surface_scheme == flag_for_ruc_land_surface_scheme)
[tsnow]
standard_name = snow_temperature_bottom_first_layer
long_name = snow temperature at the bottom of the first snow layer
[tsnow_land]
standard_name = snow_temperature_bottom_first_layer_over_land
long_name = snow temperature at the bottom of the first snow layer over land
units = K
dimensions = (horizontal_dimension)
type = real
kind = kind_phys
active = (flag_for_land_surface_scheme == flag_for_ruc_land_surface_scheme)
[tsnow_ice]
standard_name = snow_temperature_bottom_first_layer_over_ice
long_name = snow temperature at the bottom of the first snow layer over ice
units = K
dimensions = (horizontal_loop_extent)
type = real
kind = kind_phys
active = (flag_for_land_surface_scheme == flag_for_ruc_land_surface_scheme)
[snowfallac]
standard_name = total_accumulated_snowfall
[snowfallac_land]
standard_name = total_accumulated_snowfall_over_land
long_name = run-total snow accumulation on the ground
units = kg m-2
dimensions = (horizontal_loop_extent)
type = real
kind = kind_phys
active = (flag_for_land_surface_scheme == flag_for_ruc_land_surface_scheme)
[acsnow]
standard_name = accumulated_water_equivalent_of_frozen_precip
long_name = snow water equivalent of run-total frozen precip
active = (flag_for_land_surface_scheme == flag_for_ruc_land_surface_scheme)
[snowfallac_ice]
standard_name = total_accumulated_snowfall_over_ice
long_name = run-total snow accumulation on the ice
units = kg m-2
dimensions = (horizontal_loop_extent)
type = real
Expand Down Expand Up @@ -3295,6 +3319,20 @@
type = real
kind = kind_phys
active = (flag_for_land_surface_scheme == flag_for_ruc_land_surface_scheme)
[pores]
standard_name = maximum_soil_moisture_content_for_land_surface_model
long_name = maximum soil moisture for a given soil type for land surface model
units = m
dimensions = (30)
type = real
kind = kind_phys
[resid]
standard_name = minimum_soil_moisture_content_for_land_surface_model
long_name = minimum soil moisture for a given soil type for land surface model
units = m
dimensions = (30)
type = real
kind = kind_phys
[rdlai]
standard_name = flag_for_reading_leaf_area_index_from_input
long_name = flag for reading leaf area index from initial conditions
Expand Down
12 changes: 6 additions & 6 deletions ccpp/driver/GFS_diagnostics.F90
Original file line number Diff line number Diff line change
Expand Up @@ -3023,24 +3023,24 @@ subroutine GFS_externaldiag_populate (ExtDiag, Model, Statein, Stateout, Sfcprop
if (Model%lsm == Model%lsm_ruc) then
idx = idx + 1
ExtDiag(idx)%axes = 2
ExtDiag(idx)%name = 'snowfall_acc'
ExtDiag(idx)%desc = 'total accumulated frozen precipitation'
ExtDiag(idx)%name = 'snowfall_acc_land'
ExtDiag(idx)%desc = 'total accumulated frozen precipitation over land'
ExtDiag(idx)%unit = 'kg m-2'
ExtDiag(idx)%mod_name = 'gfs_sfc'
allocate (ExtDiag(idx)%data(nblks))
do nb = 1,nblks
ExtDiag(idx)%data(nb)%var2 => Sfcprop(nb)%snowfallac(:)
ExtDiag(idx)%data(nb)%var2 => Sfcprop(nb)%snowfallac_land(:)
enddo

idx = idx + 1
ExtDiag(idx)%axes = 2
ExtDiag(idx)%name = 'swe_snowfall_acc'
ExtDiag(idx)%desc = 'accumulated water equivalent of frozen precipitation'
ExtDiag(idx)%name = 'snowfall_acc_ice'
ExtDiag(idx)%desc = 'total accumulated frozen precipitation over ice'
ExtDiag(idx)%unit = 'kg m-2'
ExtDiag(idx)%mod_name = 'gfs_sfc'
allocate (ExtDiag(idx)%data(nblks))
do nb = 1,nblks
ExtDiag(idx)%data(nb)%var2 => Sfcprop(nb)%acsnow(:)
ExtDiag(idx)%data(nb)%var2 => Sfcprop(nb)%snowfallac_ice(:)
enddo
endif

Expand Down
3 changes: 0 additions & 3 deletions ccpp/suites/suite_FV3_GSD_SAR.xml
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,6 @@
<scheme>sfc_nst</scheme>
<scheme>sfc_nst_post</scheme>
<scheme>lsm_ruc</scheme>
<scheme>lsm_ruc_sfc_sice_pre</scheme>
<scheme>sfc_sice</scheme>
<scheme>lsm_ruc_sfc_sice_post</scheme>
<scheme>GFS_surface_loop_control_part2</scheme>
</subcycle>
<!-- End of surface iteration loop -->
Expand Down
1 change: 0 additions & 1 deletion ccpp/suites/suite_FV3_GSD_noah.xml
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,6 @@
<scheme>mp_thompson_post</scheme>
<scheme>GFS_MP_generic_post</scheme>
<scheme>cu_gf_driver_post</scheme>
<!-- <scheme>tracer_sanitizer</scheme> -->
<scheme>maximum_hourly_diagnostics</scheme>
</subcycle>
</group>
Expand Down
4 changes: 0 additions & 4 deletions ccpp/suites/suite_FV3_GSD_v0.xml
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,6 @@
<scheme>sfc_nst</scheme>
<scheme>sfc_nst_post</scheme>
<scheme>lsm_ruc</scheme>
<scheme>lsm_ruc_sfc_sice_pre</scheme>
<scheme>sfc_sice</scheme>
<scheme>lsm_ruc_sfc_sice_post</scheme>
<scheme>GFS_surface_loop_control_part2</scheme>
</subcycle>
<!-- End of surface iteration loop -->
Expand Down Expand Up @@ -81,7 +78,6 @@
<scheme>mp_thompson_post</scheme>
<scheme>GFS_MP_generic_post</scheme>
<scheme>cu_gf_driver_post</scheme>
<!-- <scheme>tracer_sanitizer</scheme> -->
<scheme>maximum_hourly_diagnostics</scheme>
</subcycle>
</group>
Expand Down
3 changes: 0 additions & 3 deletions ccpp/suites/suite_FV3_GSD_v0_RRTMGP.xml
Original file line number Diff line number Diff line change
Expand Up @@ -55,9 +55,6 @@
<scheme>sfc_nst</scheme>
<scheme>sfc_nst_post</scheme>
<scheme>lsm_ruc</scheme>
<scheme>lsm_ruc_sfc_sice_pre</scheme>
<scheme>sfc_sice</scheme>
<scheme>lsm_ruc_sfc_sice_post</scheme>
<scheme>GFS_surface_loop_control_part2</scheme>
</subcycle>
<!-- End of surface iteration loop -->
Expand Down
3 changes: 0 additions & 3 deletions ccpp/suites/suite_FV3_GSD_v0_drag_suite.xml
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,6 @@
<scheme>sfc_nst</scheme>
<scheme>sfc_nst_post</scheme>
<scheme>lsm_ruc</scheme>
<scheme>lsm_ruc_sfc_sice_pre</scheme>
<scheme>sfc_sice</scheme>
<scheme>lsm_ruc_sfc_sice_post</scheme>
<scheme>GFS_surface_loop_control_part2</scheme>
</subcycle>
<!-- End of surface iteration loop -->
Expand Down
3 changes: 0 additions & 3 deletions ccpp/suites/suite_FV3_GSD_v0_mynnsfc.xml
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,6 @@
<scheme>sfc_nst</scheme>
<scheme>sfc_nst_post</scheme>
<scheme>lsm_ruc</scheme>
<scheme>lsm_ruc_sfc_sice_pre</scheme>
<scheme>sfc_sice</scheme>
<scheme>lsm_ruc_sfc_sice_post</scheme>
<scheme>GFS_surface_loop_control_part2</scheme>
</subcycle>
<!-- End of surface iteration loop -->
Expand Down
3 changes: 0 additions & 3 deletions ccpp/suites/suite_FV3_GSD_v0_unified_ugwp_suite.xml
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,6 @@
<scheme>sfc_nst</scheme>
<scheme>sfc_nst_post</scheme>
<scheme>lsm_ruc</scheme>
<scheme>lsm_ruc_sfc_sice_pre</scheme>
<scheme>sfc_sice</scheme>
<scheme>lsm_ruc_sfc_sice_post</scheme>
<scheme>GFS_surface_loop_control_part2</scheme>
</subcycle>
<!-- End of surface iteration loop -->
Expand Down
3 changes: 0 additions & 3 deletions ccpp/suites/suite_FV3_HRRR.xml
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,6 @@
<scheme>sfc_nst</scheme>
<scheme>sfc_nst_post</scheme>
<scheme>lsm_ruc</scheme>
<scheme>lsm_ruc_sfc_sice_pre</scheme>
<scheme>sfc_sice</scheme>
<scheme>lsm_ruc_sfc_sice_post</scheme>
<scheme>GFS_surface_loop_control_part2</scheme>
</subcycle>
<!-- End of surface iteration loop -->
Expand Down
3 changes: 0 additions & 3 deletions ccpp/suites/suite_FV3_RAP.xml
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,6 @@
<scheme>sfc_nst</scheme>
<scheme>sfc_nst_post</scheme>
<scheme>lsm_ruc</scheme>
<scheme>lsm_ruc_sfc_sice_pre</scheme>
<scheme>sfc_sice</scheme>
<scheme>lsm_ruc_sfc_sice_post</scheme>
<scheme>GFS_surface_loop_control_part2</scheme>
</subcycle>
<!-- End of surface iteration loop -->
Expand Down
Loading

0 comments on commit 34c326c

Please sign in to comment.