-
Notifications
You must be signed in to change notification settings - Fork 337
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
Add NOAA UFS UGWP suite of physics parameterizations #1276
base: develop
Are you sure you want to change the base?
Conversation
…tmosphere This commit adds three new source files mpas_gsl_oro_data_sm_scale.F mpas_gsl_oro_data_lg_scale.F mpas_init_atm_gwd_gsl.F to the init_atmosphere core, along with modifications to the main core_init_atmosphere Makefile to compile these source files. At present, none of the code in these files is called from the init_atmosphere core.
…re core This commit defines new static fields, a new package, a new namelist option, and a new output stream for the GSL GWDO scheme. Also included in this commit are changes to the init_atm_setup_packages() routine to set the new 'gwd_gsl_stage_out' package if and only if the new namelist option 'config_native_gwd_gsl_static' is true. When 'config_native_gwd_gsl_static' is set in the namelist, the init_atmosphere core will write the twenty new static fields (var2d, con, oa{1,2,3,4}, and ol{1,2,3,4}) for large scale (ls) and small scale (ss) to a new 'ugwp_oro_data' output stream. As of this commit, code to actually compute the twenty new static fields is not being called, and so the fields are expected to be zero everywhere.
When the namelist option config_native_gwd_gsl_static is .true., the init_atm_setup_case() routine now calls thecalc_gsl_oro_data() routine to compute the twenty GSL GWDO static fields.
This commit adds an entry to the Externals.cfg file to obtain the GSL UGWP code from a GitHub repository. Also included in this commit are changes to the main physics Makefile to compile the UGWP code. At present, none of the UGWP code is called.
Also included in this commit is logic for setting up packages related to the GSL UGWP scheme in the atm_setup_packages() routine.
…emes This commit adds a new module, module_bl_ugwp_gwdo, in the core_atmosphere/physics/physics_wrf directory. This module serves as a wrapper for the UGWP physics that is compatible with the MPAS-A physics drivers. Changes to the Makefile in the physics_wrf directory ensure that the module_bl_ugwp_gwdo.F file is compiled, but at present the code in that module is not actually called.
With this commit, the UGWP physics can now be used in MPAS-A simulations * Setting the 'config_gwdo_scheme' namelist option to 'bl_ugwp_gwdo' selects the GSL GWDO scheme. NOTE: If the GSL GWDO scheme is selected, the 'ugwp_oro_data_in' input stream must specify a valid input file with UGWP static fields. * Setting the 'config_ngw_scheme' namelist option to 'true' will activate the non-stationary gravity wave drag scheme. NOTE: If the NGW scheme is activated, the 'ugwp_ngw_in' input stream must specify a valid input file. * Setting the 'config_ugwp_diags' namelist option to 'true' will compute UGWP diagnostic fields, which will be written by the 'diag_ugwp' output stream.
… GSL_UGWP_mdtoy
src/core_atmosphere/physics/Makefile
Outdated
@@ -243,6 +247,7 @@ clean: | |||
( cd physics_noahmp/drivers/mpas; $(MAKE) clean ) | |||
( cd physics_noahmp/src; $(MAKE) clean ) | |||
( cd physics_noahmp/utility; $(MAKE) clean ) | |||
( cd UGWP; $(MAKE) clean ) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If the command
make clean CORE=atmosphere
is run before the UWGP
directory has been created (for example, if we haven't yet compiled the code), it looks like make
will get stuck in a loop. A simple solution might be to change this line to:
( if [ -d UGWP ]; then cd UGWP; $(MAKE) clean; fi )
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done
It looks like we may need to add --- a/src/core_atmosphere/Makefile
+++ b/src/core_atmosphere/Makefile
@@ -81,7 +81,7 @@ clean:
$(RM) $@ $*.mod
ifeq "$(GEN_F90)" "true"
$(CPP) $(CPPFLAGS) $(PHYSICS) $(CPPINCLUDES) -I./inc $< > $*.f90
- $(FC) $(FFLAGS) -c $*.f90 $(FCINCLUDES) -I../framework -I../operators -I./physics -I./dynamics -I./diagnostics -I./physics/physics_wrf -I./physics/physics_mmm -I../external/esmf_time_f90
+ $(FC) $(FFLAGS) -c $*.f90 $(FCINCLUDES) -I../framework -I../operators -I./physics -I./dynamics -I./diagnostics -I./physics/physics_wrf -I./physics/physics_mmm -I./physics/UGWP -I../external/esmf_time_f90
else
- $(FC) $(CPPFLAGS) $(PHYSICS) $(FFLAGS) -c $*.F $(CPPINCLUDES) $(FCINCLUDES) -I./inc -I../framework -I../operators -I./physics -I./dynamics -I./diagnostics -I./physics/physics_wrf -I./physics/physics_mmm -I../external/esmf_time_f90
+ $(FC) $(CPPFLAGS) $(PHYSICS) $(FFLAGS) -c $*.F $(CPPINCLUDES) $(FCINCLUDES) -I./inc -I../framework -I../operators -I./physics -I./dynamics -I./diagnostics -I./physics/physics_wrf -I./physics/physics_mmm -I./physics/UGWP -I../external/esmf_time_f90
endif
|
Modified src/core_atmosphere/Makefile to avoid endless loop if running 'make clean CORE=atmospere' before the UGWP directory has been created. Added '-I./physics/UGWP' to src/core_atmosphere/physics/Makefile to prevent issues with the nvfortran compiler not finding modules. This seems to be a general issue with the nvfortran compiler -- that search paths for all modules that are used directly and indirectly are required.
@mgduda I added -I./physics/UGWP to the physics/Makefile, did a test compile, and pushed new commit. |
This PR incorporates NOAA's Unified Forecast System (UFS) Unified Gravity Wave Physics (UGWP) suite of physics parameterizations into MPAS: https://ufs.epic.noaa.gov/wp-content/uploads/2021/07/UGWP_in_UFS_July_2021-1.pdf.
NOTE: This physics package is the "NOAA/GSL" orographic gravity wave drag (GWD) suite introduced in WRF Version 4.3 (activated by WRF namelist option "gwd_opt=3"), but with the addition of a non-stationary GWD parameterization that represents gravity wave sources such as deep convection and frontal instability.
Thanks to @mgduda for help and advice on how to incorporate the NOAA/GSL code into the MPAS-Dev repository.