Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
SFCLAY=1, add shallow water roughness calculation (#1543)
TYPE: new feature KEYWORDS: shallow water, roughness, bathymetry SOURCE: Patrick Hawbecker, Pedro A. Jiménez, and Jimy Dudhia (NCAR) DESCRIPTION OF CHANGES: This incorporates the shallow water drag module into the revised M-O surface layer scheme for over-water roughness calculation. The new scheme is meant to incorporate the effects of roughness increasing over shallower waters (between 10 and 100 m deep), mostly near coastlines. In order to include the shallow water roughness parameterization from Jiménez and Dudhia (2018) into the revised M-O surface layer scheme, a bathymetry dataset was downloaded and converted to the WPS tiled format, new variables and flags for the bathymetry data and which scheme is to be used over the ocean are added, and the source code is included into a module with module_sf_sfclayrev.F. The bathymetry data is open source from GEBCO Compilation Group (2021) GEBCO 2021 Grid ([doi:10.5285/c6612cbe-50b3-0cff-e053-6c86abc09f8f](https://www.gebco.net/data_and_products/gridded_bathymetry_data/)). Several checks are included to ensure users without the bathymetry data can still run with this new scheme using a namelist-defined variable (shalwater_depth) to designate the bathymetry over all water cells. If users have bathymetry data, they can run with this scheme (shalwater_z0 = 1; shalwater_depth <=0) or overwrite the bathymetry data with a user-defined value (shalwater_depth > 0). LIST OF MODIFIED FILES: M Registry/Registry.EM_COMMON M dyn_em/module_first_rk_step_part1.F M dyn_em/module_initialize_real.F M dyn_em/nest_init_utils.F M dyn_em/start_em.F M phys/module_physics_init.F M phys/module_sf_sfclayrev.F M phys/module_surface_driver.F M run/README.namelist M share/module_check_a_mundo.F M share/module_optional_input.F M test/em_real/namelist.examples TESTS CONDUCTED: Tests were conducted in 2 phases: within (1) real.exe and (2) wrf.exe. 1. Real.exe tests conducted: ![image](https://user-images.githubusercontent.com/39134281/129966384-83301f5d-49b4-470b-82f8-e44ee1538a9c.png) For the case producing a warning (no bathymetry, shalwater_z0 = 1.0, shalwater_depth <= 0.0), the following warning is presented in rsl.error.* files: ``` Warning: No bathymetry data found for shallow water roughness model. Warning: shalwater_depth must be greater than 0.0 for WRF to run. ``` The tests all performed as expected producing the following results for the WATER_DEPTH variable: ![image](https://user-images.githubusercontent.com/39134281/129966726-d81f993a-5485-423d-a490-00709526a289.png) With incorrect namelist settings (use shallow water roughness drag, sfclay scheme other than revised MO): ``` --- ERROR: The shallow water roughness drag only works with sfclay_physics = 1 Turn off the shallow water option, or change the surface layer scheme -------------- FATAL CALLED --------------- FATAL CALLED FROM FILE: <stdin> LINE: 2513 NOTE: 1 namelist settings are wrong. Please check and reset these options ``` 2. The tests performed for wrf.exe are as follows: ![image](https://user-images.githubusercontent.com/39134281/129966669-ac2450a7-e5c1-4d2b-a21f-e9608340f9ae.png) The depth = 0.0 case produces the following error message: ``` No bathymetry data detected and shalwater_depth not greater than 0.0. Re-run WPS to get bathymetry data or set shalwater_depth > 0.0 ``` The remaining cases produce WATER_DEPTH fields as follows: ![image](https://user-images.githubusercontent.com/39134281/129966955-0e94e669-c1dc-4a37-b5ee-47e822dbbdf5.png) After running these cases for 36 hours and discarding the first 12 hours as model-spinup. The averaged field (output every 2 hours) for ZNT and wind speed can be seen to show the expected impacts from the new scheme. When the true bathymetry is used, ZNT is higher for depths between 10 and 100 m (green lines). However, when a constant shalwater_depth is used, the value is set over the whole domain and ZNT is increased (in this case) over all water cells. Additionally, when shalwater_depth is set to a valid number, it will overwrite the bathymetry data within wrf.exe and produce the same result as if you did not have bathymetry data. ![image](https://user-images.githubusercontent.com/39134281/129967047-69d08ca6-75f0-44bd-a0ff-cf32f5f0bbeb.png) ![image](https://user-images.githubusercontent.com/39134281/129967070-67a8a058-a797-4f9d-b281-b12e3d4b6b1d.png) Additionally, in order to remain consistent with the lake model (sf_lake_physics > 0) we allow water_depth to be overwritten by lake_depth if sf_lake_physics > 0: ![image](https://user-images.githubusercontent.com/39134281/129967310-e847078f-51f2-4047-944d-bdcabca92e00.png) 3. The code passed bit-for-bit check and restart test. RELEASE NOTE: The shallow-water roughness scheme from Jiménez and Dudhia (2018) is included for offshore roughness adjustment in water depths between 10 and 100 m. The bathymetry data is open source from GEBCO Compilation Group. Please acknowledge the following in presentations and publications: GEBCO Compilation Group (2021) GEBCO 2021 Grid (doi:10.5285/c6612cbe-50b3-0cff-e053-6c86abc09f8f). Jiménez, P. A., & Dudhia, J. (2018). On the need to modify the sea surface roughness formulation over shallow waters. Journal of Applied Meteorology and Climatology, 57(5), 1101-1110, DOI: [10.1175/JAMC-D-17-0137.1 ](https://doi.org/10.1175/JAMC-D-17-0137.1)
- Loading branch information