Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge NOAA-GSL gsl/develop into develop, update CCPP SDFs #435

Merged

Conversation

climbfuji
Copy link
Collaborator

@climbfuji climbfuji commented Dec 1, 2021

Description

This PR updates many of the suite definition files using the RAP (previously: GSL) physics and add three additional variables in GFS_typedefs.{F90,meta} that are used with GF convection only. A few additional bug fixes are included in the CCPP metadata (GFS_typedefs.{meta}).

Issue(s) addressed

See ufs-community/ufs-weather-model#952

Testing

See ufs-community/ufs-weather-model#937

Dependencies

climbfuji and others added 30 commits November 25, 2020 13:32
…EMC#60)

Implementation of RUC LSM ice model in CCPP

* Squash-merge climbfuji:rucice_gfsv16dzmin into gsl/develop

* 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 submodule pointer for ccpp-physics

* Revert change to .gitmodules and update submodule pointer for ccpp-physics

Co-authored-by: Dom Heinzeller <[email protected]>
* Fix for updating stochastic physics on separate time-step. (NOAA-EMC#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 (NOAA-EMC#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 <[email protected]>
Co-authored-with: Denise Worthen <[email protected]>

* Revert change to .gitmodules and update submodule pointer for ccpp-physics

Co-authored-by: Phil Pegion <[email protected]>
Co-authored-by: shansun6 <[email protected]>
* 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

Co-authored-by: tanyasmirnova <[email protected]>
…perturbed variables (NOAA-EMC#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

Co-authored-by: Dom Heinzeller <[email protected]>
* Fix for updating stochastic physics on separate time-step. (NOAA-EMC#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 (NOAA-EMC#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 <[email protected]>
Co-authored-with: Denise Worthen <[email protected]>

* jedi-ufs with ccpp-physics submodule update (contains NOAA-EMC#201) (NOAA-EMC#211)

* updated CMakeLists.txt
* Changes for JEDI linking/control
* Update .gitmodules and submodule pointer for ccpp-physics for code review and testing
* Revert change to .gitmodules and update submodule pointer for ccpp-physics

Co-authored-by: Mark Potts <[email protected]>

* Final-final GFS v16 updates / restart reproducibility bugfixes (NOAA-EMC#212)

* updates the submodule pointer for ccpp-physics for the final-final (!) GFS v16 physics updates
* fixes a bug in io/FV3GFS_io.F90 to obtain restart reproducibility for uncoupled and coupled runs - contributed by @SMoorthi-emc

Co-authored-by: Shrinivas.Moorthi <[email protected]>

* RRTMGP coupling to Thompson MP in ccpp-physics (NOAA-EMC#208)

* Updated physics. Added infrastructure to FV3 to handle new GP capabilities. Thompson MP, LW scattering, Use of LW-jacobian to update surface tendencies.
* Some small changes to work with physics improvements to RRTMGP.
* RRTMGP working with Thompson MP.
* Updated .gitmodules.
* Updated physics. New interstitials.
* Synced with NCAR/master
* Updated ccpp-physics
* Updated physics submodule.
* Cleanup
* Update physics
* Updated physics submodule pointer.
* Updated physics submodule hash.

* Minor bug fixes to CCPP UGWP (update submodule pointer for ccpp-physics) (NOAA-EMC#216)

Update the submodule pointer for ccpp-physics for minor bugfixes in CCPP's Unified Gravity Wave Drag parameterization.

* Remove IPD (step 1) (NOAA-EMC#215)

Remove all IPD source files that are not needed to compile with CCPP. Update gfsphysics/CMakeLists.txt and gfsphysics/GFS_layer/GFS_driver.F90 so that the code compiles after removing IPD sources.

Also: update submodule pointer for GFDL_atmos_cubed_sphere to include PR NOAA-EMC/GFDL_atmos_cubed_sphere#48 ("Removed use of mpp_node for use with FMS 2020.04").

* Update submodule pointers for ccpp-framework (ccpp_prebuild bugfix) and ccpp-physics (RRTMGP GFDL-MP bugfix) (NOAA-EMC#218)

Update the submodule pointers for ccpp-framework and ccpp-physics for the changes described in
NCAR/ccpp-framework#343 and NCAR/ccpp-physics#536.

* Remove unnecessary SIMD instruction sets from ccpp/CMakeLists.txt (NOAA-EMC#220)

* Remove additional/unnecessary SIMD instruction sets from ccpp/CMakeLists.txt

* Implementation of CCPP timestep_init and timestep_final phases (NOAA-EMC#217)

- replace calls to CCPP step `time_vary` with `timestep_init` in `atmos_model.F90`, add call to CCPP step `timestep_final` 
- update `ccpp/driver/CCPP_driver.F90` with calls to CCPP `timestep_init` and `timestep_final`
- add `h2o_def.f` and `ozne_def.` to `ccpp_prebuild_config.py`
- update of `gfsphysics/GFS_layer/GFS_typedefs.F90`: cleanup work for o3 and h2o physics (required by the updates to the CCPP time vary physics)
- update metadata in `gfsphysics/GFS_layer/GFS_typedefs.meta` for the above changes, and clean up the index used for the surface wind enhancement due to convection in the `phy_f2d` array (use proper index, not just the last entry in the array)

* add radiation_clouds_thompson_dependency in ccpp physics  (NOAA-EMC#225)

* using radiation_clouds_thompson_dependency ccpp physics branch
* point to ccpp master branch

* Remove IPD steps 3 and 5 (NOAA-EMC#224)

* Implementation of CCPP timestep_init and timestep_final phases in fv3atm; cleanup work in GFS_typedefs for o3 and h2o physics as a result of the changes to the time vary physics in CCPP
* Use proper index variable for surface wind enhancement due to convection in phy_f2d array in GFS_typedefs.{F90,meta}, move code to clear diagnostic buckets using GFS DDT bound procedures from atmos_model.F90 to CCPP_driver.F90
* First step of cleanup process: remove CCPP preprocessor directives, remove parts of unused IPD code, update cmake build system, Delete IPD source code, Replace IPD DDTs with GFS DDTs, Bugfix in atmos_model.F90; add missing call to GFS_externaldiag_populate, Move contents of gfsphysics/{CCPP_layer,GFS_layer} to ccpp/{data,driver}, entirely deleted IPD typedefs, Rename module GFS_driver to GFS_init
* Fix indentation in ccpp/data/CMakeLists.txt and ccpp/driver/CMakeLists.txt
* Add logic to set DYN32 depending on 32BIT setting
* Pass preprocessor directive GFS_TYPES to dycore to enable use of GFS data types
* Compile GFS_diagnostics.F90 without optimization, this leads to out of memory errors on wcoss_dell_p3

* Add CCPP rrtmgp fix (NOAA-EMC#237)

* ccpp physics merged with top of master
* point back to ccpp master branch

* Update develop from NOAA-GSL: RUC ice, MYNN sfclay, stochastic land perturbations (NOAA-EMC#239)

* Update .gitmodules and submodule pointers for ccpp-framework and ccpp-physics for gsl/develop branch
* RUC ice for gsl/develop (replaces NOAA-EMC#54 and NOAA-EMC#56) (NOAA-EMC#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 (NOAA-EMC#61)
* Fix for updating stochastic physics on separate time-step. (NOAA-EMC#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 (NOAA-EMC#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 <[email protected]>
Co-authored-with: Denise Worthen <[email protected]>
* Revert change to .gitmodules and update submodule pointer for ccpp-physics
* Update submodule pointer for ccpp-physics - MYNN surface layer updates and bugfixes (NOAA-EMC#63)
* Land stochastic perturbations (wrapper PR for NOAA-EMC#65) (NOAA-EMC#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 (NOAA-EMC#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 <[email protected]>
Co-authored-by: Phil Pegion <[email protected]>
Co-authored-by: shansun6 <[email protected]>
Co-authored-by: tanyasmirnova <[email protected]>

* Dycore change to add an option to zero-gradient BC for height advection and change dz_min as a namelist input (NOAA-EMC#232)

* Point dycore to a personal branch
* Point to new version of dycore
* Update the dycore version
* Update the dycore version
* Point to NOAA-EMC dev/emc dycore branch

* Remove gnumake build remnants, change v16beta to v16 (NOAA-EMC#234)

* Remove gnumake files
* Replace v16beta with v16 for all CCPP suites
* Remove unused CCPP_INCLUDE_DIRS/CCPP_LIB_DIRS from ccpp/CMakeLists.txt

* Move LSM vegetation lookup tables into CCPP, clean up RUC snow cover on ice initialization  (remove IPD step 2) (NOAA-EMC#244)

* Move LSM vegetation lookup tables into CCPP, clean up RUC snow cover on ice initialization
* Revert change to .gitmodules and update submodule pointer for ccpp-physics

* UGWP v0 v1 combined (NOAA-EMC#241)

* .gitmodules/gsl atmos-cubed cccp-fram cccp/physics
* update fv3atm from NOAA-EMC Jan 9
* new suite_FV3_GFS_v16b_ugwpv1.xml and modifications Jan 11/2021
* Added new logical flag do_ugwp_v0_nst_only which allows non-stationary drag from ugwp_v0 to be run with GSL drag suite
* Fix formatting in ccpp/data/GFS_typedefs.*
* Clean up allocation of arrays in ccpp/data/GFS_typedefs.F90, add active attribute (pass 1) to ccpp/data/GFS_typedefs.meta, strip trailing whitespaces from both
* Update and cleanup of metadata for UGWPv0, UGWPv1, drag suite
* Reorganize UGWP diagnostic variables in data/GFS_typedefs.{F90,meta}
* Bugfix for uninitialized data in ccpp/data/GFS_typedefs.F90
* Update submodule pointer for ccpp-physics
* Allocate 3d diagnostic arrays as dummy arrays if not used

Co-authored-by: valery.yudin <[email protected]>
Co-authored-by: Michael Toy <[email protected]>

* SDF for GFSv16 with Thompson (NOAA-EMC#238)

* SDF for GFSv16 with Thompson
* Delete suite_FV3_GFS_v16beta_thompson.xml
* update to new commit of Thompson MP in ccpp physics

Co-authored-by: Phil Pegion <[email protected]>
Co-authored-by: shansun6 <[email protected]>
Co-authored-by: Mark Potts <[email protected]>
Co-authored-by: Shrinivas.Moorthi <[email protected]>
Co-authored-by: dustinswales <[email protected]>
Co-authored-by: Jun Wang <[email protected]>
Co-authored-by: XiaqiongZhou-NOAA <[email protected]>
Co-authored-by: valery.yudin <[email protected]>
Co-authored-by: Michael Toy <[email protected]>
Co-authored-by: XiaSun-NOAA <[email protected]>
…NOAA-EMC#74)

* Update .gitmodules and submodule pointer for ccpp-physics for code review and testing

* Revert change to .gitmodules and update submodule pointer for ccpp-physics
* Add logical convert_dry_rho for Thompson MP, hardcoded to false
* Initialize all variables to NaN in ccpp-physics in DEBUG mode
* Update submodule pointer for ccpp-physics
…_master_20210316

Update gsl/develop from develop 20210316
…_develop_20210331

Update gsl/develop from develop 2021/03/31
…step-pgr-like-wrf

per-timestep diagnostic output: FV3 version of WRF noise parameter
Add diagnostic tendencies for all tracers. Move all d*3dt variables into a 4D sparse array stored as `dtend(i,k,dtidx(tracer,process))` to reduce memory usage.
* Fix incorrect units in dtend metadata

* Make the tracer tendency units mandatory.
.gitmodules Outdated Show resolved Hide resolved
@@ -5772,6 +5780,14 @@
dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_aerosol_tracers_MG)
type = real
kind = kind_phys
[aod_gf]
standard_name = aod_gf_deep
Copy link
Collaborator

Choose a reason for hiding this comment

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

@climbfuji reminder to change here too

@@ -2787,8 +2791,8 @@ subroutine fv3gfs_diag_output(time, diag, atm_block, nx, ny, levs, ntcw, ntoz, &
!---
!--- skipping other 3D variables with the following else statement
!---
if(mpp_pe()==mpp_root_pe())print *,'in,fv3gfs_io. 3D fields, idx=',idx,'varname=',trim(diag(idx)%name), &
'lcnvfac=',lcnvfac, 'levo=',levo,'nx=',nx,'ny=',ny
! if(mpp_pe()==mpp_root_pe())print *,'in,fv3gfs_io. 3D fields, idx=',idx,'varname=',trim(diag(idx)%name), &
Copy link
Collaborator Author

Choose a reason for hiding this comment

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

I commented this out to remove the clutter from stdout

@climbfuji
Copy link
Collaborator Author

Hash for ccpp-physics is correct (4865cba), ready to merge

@@ -1,84 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
Copy link
Contributor

@JeffBeck-NOAA JeffBeck-NOAA Dec 27, 2021

Choose a reason for hiding this comment

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

While updating the SPP PR to the latest fv3atm code, I noticed this file was deleted (along with a few other suites, some used in the SRW App: FV3_GSD_v0, FV3_GSD_noah, and FV3_GSD_SAR). This particular suite is one of the two main SDFs in the SRW App release v1.0, and we should keep it for now. FYI: @jwolff-ncar, @gsketefian, @mkavulich, @willmayfield, @BenjaminBlake-NOAA, @chan-hoo.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

This was discussed with Curtis and others. The reasoning for removing it is that this suite is not going to be the operational RRFS suite in the future. Since code bases for the SRW App 1.0 and develop have diverged so far, it is not realistic to run the SRW App code with the head of the develop branches. If users have problems with the public release using RRFS v1alpha, you can't just point them to the develop branches and solve their questions there, because the code is vastly different. Therefore there is no harm in cleaning up old suite definition files.

It was decided to retain RRFS v1 beta for now. And many of the GSD_* suites have simply been renamed and rebased on the RAP suite.

Copy link
Contributor

@JeffBeck-NOAA JeffBeck-NOAA Dec 27, 2021

Choose a reason for hiding this comment

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

@climbfuji, thanks for providing some background information. Unfortunately, the DTC team that works on SRW App code management, development, and UFS-R2O RRFS testing wasn't aware of this discussion or decision.

I'm certainly in favor of cleaning up old SDFs, but we just need to be careful. In this case, since the v1beta SDF differs only in its use of MYNN SFC instead of GFS SFC, and since the authoritative code has diverged significantly from the release, the move to v1beta would make sense. However, we've done a lot of RRFS benchmarking UFS-R2O work in the last few months with the v1alpha SDF in the latest SRW App, so it might be good for users to still have this SDF available in the latest authoritative code for testing/comparison to those results. If that's not possible, then OK.

Speaking more generally to the whole UFS community, it would be good to find a way to get all relevant voices included on important SRW App decisions like these in the future.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Are you pointing to the latest develop branches in the app? If not (e.g. if you are using your own forks), then you can simply retain the file for testing/benchmarking. It's a challenge to know for the non-regional people who needs to be consulted for which kind of changes. In this case, Curtis, Christina and several others (that I don't remember) were involved.

@JeffBeck-NOAA
Copy link
Contributor

Thanks, @climbfuji. We are near the HEADs of the authoritative develop branches in the app (set in the Externals.cfg file). We try to get them updated as frequently as possible, but there are times when they will lag behind for a while; just not enough staff/time to keep them up-to-date all the time. And I agree, it's difficult to know who all to contact for changes when it's another App, component, etc. I'll bring this up in our next DTC SRW App meeting to see what we can do. Maybe a huge SRW App mailing list that's used sparingly is an option.

@jwolff-ncar
Copy link

Agree with @JeffBeck-NOAA - Please keep if possible. Our work with this SDF is recent (completed in Oct) and still relevant. The DTC SRW App team (or some representative) should definitely be involved in these conversations in some way. We need to discuss further how to make sure this happens.

@climbfuji
Copy link
Collaborator Author

If the suite is still required, how about @JeffBeck-NOAA adds it back in with the current fv3atm PR for the stochastic perturbations? Just note it in the PR title and description as an unrelated change that does not affect the model/regression testing.

Note that the RRFS v1 alpha suite won't be tested by the ufs-weather-model regression tests. It will be up to the SRW App developers to make sure that the suite continues to function, unfortunately.

@JeffBeck-NOAA
Copy link
Contributor

JeffBeck-NOAA commented Dec 28, 2021

@climbfuji, @jwolff-ncar, I added the FV3_RRFS_v1alpha SDF to the fv3atm PR and modified the title/description accordingly.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

10 participants