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

add backup calculation for orography and mask generation #713

Merged
merged 10 commits into from
May 3, 2023

Conversation

barlage
Copy link
Collaborator

@barlage barlage commented Nov 9, 2022

DESCRIPTION OF CHANGES:

Current orography and mask generation fails to create a value for high resolution grids when no source inputs are contained in an FV3 grid. These changes add a backup calculation based on surrounding source grids.

The current code takes a subset of source points surrounding the fv3 grid to create a mask and orography stats based on the source points that are in the fv3 grid. The current failure happens when there are no source points in the fv3 grid. The proposed solution calculates the stats for all the source points in the subset (there will always be some) and if there are not any in the fv3 grid, it uses the full subset stats as a backup. Also the code will fail if there still is no valid value.

TESTS CONDUCTED:

See below.

DEPENDENCIES:

none

ISSUE:

Fixes issue mentioned in #714

CONTRIBUTORS:

George Gayno

@GeorgeGayno-NOAA
Copy link
Collaborator

I think your idea will work. Be aware that those loops are threaded, so some of your new variables will need to be declared 'private'.

@GeorgeGayno-NOAA
Copy link
Collaborator

@barlage Do we still want to merge this, or work to add the higher-resolution input data? If the latter, I will close this PR.

@barlage
Copy link
Collaborator Author

barlage commented Apr 27, 2023

@GeorgeGayno-NOAA it seems there is no harm in merging this. It solves the short-term issue with high-res fire weather domain until we can get the higher resolution terrain and mask data in.

@GeorgeGayno-NOAA
Copy link
Collaborator

@GeorgeGayno-NOAA it seems there is no harm in merging this. It solves the short-term issue with high-res fire weather domain until we can get the higher resolution terrain and mask data in.

Ok. Be sure to merge the latest updates from 'develop' to your branch. Then I can do the final review.

@GeorgeGayno-NOAA
Copy link
Collaborator

Checked out the branch at 95ad0a0. Tested it on the fire weather nest where the problem was observed:

  export res=-999              # equivalent resolution is computed
  export target_lon=-118.7      # Center longitude of grid
  export target_lat=36.3       # Center latitude of grid
  export idim=350              # Dimension of grid in 'i' direction
  export jdim=350              # Dimension of grid in 'j' direction
  export delx=0.00675           # Grid spacing (in degrees) in the 'i' direction
                               # on the SUPERGRID (which has twice the resolution of
                               # the model grid).  The physical grid spacing in the 'i'
                               # direction is related to delx as follows:
                               #    distance = 2*delx*(circumf_Earth/360 deg)
  export dely=0.00675           # Grid spacing (in degrees) in the 'j' direction.
  export halo=3                # number of row/cols for halo

The problem was fixed. Additionally, I ran the code with 12 and 24 threads and got the same result.

@GeorgeGayno-NOAA
Copy link
Collaborator

@barlage I merged from 'develop' to your branch locally on Hera. May I push these changes to your fork on Github?

@JeffBeck-NOAA
Copy link
Collaborator

JeffBeck-NOAA commented Apr 28, 2023

@DavidWright-NOAA, I'm tagging you on this PR, since @GeorgeGayno-NOAA mentioned an effort is underway at EMC to upgrade the orography climatology files for use in higher resolution simulations. My understanding is that this PR is a temporary fix in the meantime, and I wanted to get your input, as I know you've worked on a fix for these issues as well. Thank you!

@barlage
Copy link
Collaborator Author

barlage commented May 1, 2023

@GeorgeGayno-NOAA sure, update as you wish. I believe you should have access.

@DavidWright-NOAA
Copy link
Contributor

@JeffBeck-NOAA thank you! This fix is more robust than my ad hoc increase of LATO and LONO search distance from +1 to +2. I still have some concerns with using the lower resolution data at a 1km grid spacing for things like warm season convective initiation, but the higher resolution data should be better for that. I don't know if there should be any warning/documentation to users trying to run at these resolutions once this fix goes in?

@barlage
Copy link
Collaborator Author

barlage commented May 1, 2023

Hi @JeffBeck-NOAA and @DavidWright-NOAA, this change in particular is to fix some missing values due to approximately equal input dataset resolution and model grid. Since here we are not increasing the input resolution, there are still issues with the more detailed sub-grid statistics used by the gravity wave drag routine, but GWD will not be used in the current 1.5km fire weather domain so we are hoping for a more permanent solution for that.

I have started on clarifying and making more consistent the input datasets by moving away from the binary read to netcdf described in #786. We have 7.5" terrain and land mask in hand that are more consistent with the land mask used in other routines, but are trying to bring these into orog more transparently, i.e., with netcdf files that have metadata.

@GeorgeGayno-NOAA
Copy link
Collaborator

I will do some final checks before merging.

@GeorgeGayno-NOAA
Copy link
Collaborator

GeorgeGayno-NOAA commented May 1, 2023

Checked out the branch at 7419b13 on Hera. Successfully compiled it with Intel and GNU. All grid_gen consistency tests passed as expected.

Checked out the branch on Jet and Orion. All grid_gen consistency tests passed as expected.

@GeorgeGayno-NOAA
Copy link
Collaborator

GeorgeGayno-NOAA commented May 2, 2023

Checked out branch at 7419b13 on WCOSS2. Successfully built the doxygen. Successfully built the repository in 'Debug' mode. All grid_gen consistency tests passed. All unit test passed.

Ready to merge.

@JeffBeck-NOAA
Copy link
Collaborator

JeffBeck-NOAA commented May 2, 2023

@DavidWright-NOAA, thanks for reviewing! I agree with a warning (until higher resolution data are available) for users running at < 3 km. I think a brief comment would be sufficient in the UFS_UTILS documentation.

@GeorgeGayno-NOAA
Copy link
Collaborator

@DavidWright-NOAA, thanks for reviewing! I agree with a warning (until higher resolution data are available) for users running at < 3 km. I think a brief comment would be sufficient in the UFS_UTILS documentation.

Should the warning be added here? https://noaa-emcufs-utils.readthedocs.io/en/latest/ufs_utils.html#orog

Or somewhere else?

@JeffBeck-NOAA
Copy link
Collaborator

@DavidWright-NOAA, thanks for reviewing! I agree with a warning (until higher resolution data are available) for users running at < 3 km. I think a brief comment would be sufficient in the UFS_UTILS documentation.

Should the warning be added here? https://noaa-emcufs-utils.readthedocs.io/en/latest/ufs_utils.html#orog

Or somewhere else?

@GeorgeGayno-NOAA, I think that's the right location. A warning in the introduction referencing the datasets in 3.6.3 should be fine.

@GeorgeGayno-NOAA
Copy link
Collaborator

@DavidWright-NOAA, thanks for reviewing! I agree with a warning (until higher resolution data are available) for users running at < 3 km. I think a brief comment would be sufficient in the UFS_UTILS documentation.

Should the warning be added here? https://noaa-emcufs-utils.readthedocs.io/en/latest/ufs_utils.html#orog
Or somewhere else?

@GeorgeGayno-NOAA, I think that's the right location. A warning in the introduction referencing the datasets in 3.6.3 should be fine.

Is this ok? 1c3870c

@GeorgeGayno-NOAA
Copy link
Collaborator

@DavidWright-NOAA, thanks for reviewing! I agree with a warning (until higher resolution data are available) for users running at < 3 km. I think a brief comment would be sufficient in the UFS_UTILS documentation.

Should the warning be added here? https://noaa-emcufs-utils.readthedocs.io/en/latest/ufs_utils.html#orog
Or somewhere else?

@GeorgeGayno-NOAA, I think that's the right location. A warning in the introduction referencing the datasets in 3.6.3 should be fine.

Is this ok? 1c3870c

See: https://barlage.readthedocs.io/en/oro_mask_fill/ufs_utils.html#orog

@JeffBeck-NOAA
Copy link
Collaborator

Is this ok? 1c3870c

See: https://barlage.readthedocs.io/en/oro_mask_fill/ufs_utils.html#orog

I think there are concerns even with 30-arc-second data when running at 1-km resolution, as mentioned by @DavidWright-NOAA.

@GeorgeGayno-NOAA
Copy link
Collaborator

Is this ok? 1c3870c

See: https://barlage.readthedocs.io/en/oro_mask_fill/ufs_utils.html#orog

I think there are concerns even with 30-arc-second data when running at 1-km resolution, as mentioned by @DavidWright-NOAA.

Is this better? 7e7b70b

@JeffBeck-NOAA
Copy link
Collaborator

JeffBeck-NOAA commented May 3, 2023

Is this better? 7e7b70b

This looks good! Thanks!

@GeorgeGayno-NOAA GeorgeGayno-NOAA merged commit 7186ea6 into ufs-community:develop May 3, 2023
AnnetteGibbs-NOAA added a commit to AnnetteGibbs-NOAA/UFS_UTILS that referenced this pull request Jul 3, 2023
* origin/develop:
  Update ccpp submodule (ufs-community#827)
  Change length of character variable "mosaic_name" in "make_solo_mosaic.c" (ufs-community#824)
  Update GDAS INIT utility for GFS COM reorganization (ufs-community#820)
  Add backup calculation for orography and mask generation (ufs-community#713)
  Improve repository build script (ufs-community#819)
  Use latest wgrib2 executable on Jet. (ufs-community#816)
  chgres_cube - Minor update for high-resolution grids . (ufs-community#814)
  Update PR template (ufs-community#813)
  global_cycle - Add soil moisture nudging for NoahMP option (ufs-community#809)
  Release v1.10.0 (ufs-community#807)
  Run sfc_climo_gen utility on Hera (ufs-community#791)
  Fix bug in chgres_cube subroutine search_many (ufs-community#808)
  sfc_climo_gen - Output fractions of each vegetation/soil type category (ufs-community#748)
  Replace w3nco library with w3emc (ufs-community#802)
  Fix Debug compilation (ufs-community#800)
  Update WCOSS2 build module to use new ESMF v8.4.1 library. (ufs-community#799)
  Update chgres_cube documentation for duplicate grib2 records (ufs-community#795)
  Use latest Cray modules on WCOSS2 (ufs-community#792)
  Remove checksum attribute from global_cycle restart files (ufs-community#794)
  Remove goto statements from chgres_cube (ufs-community#775)
  FVCOM_TOOLS - Remove dependency on module_nwp_base.f90 (ufs-community#790)
  Remove "gcovr" step from the 'developer' workflow (ufs-community#785)
  Update build module for Cheyenne (ufs-community#783)
  GDAS Init utility - consolidate the copy of coldstart files (ufs-community#773)
  Remove support for ODIN machine (ufs-community#782)
  Update GDAS INIT utility to optionally use fracoro data (ufs-community#741)
  Option to build only application specific utilities (e.g. GFS) (ufs-community#777)
  Use combined IP/IP2 library (ufs-community#695)
  Initial updates to global_cycle for Noah-MP land model (ufs-community#774)
  New resolution options for the cpld_gridgen utility (ufs-community#769)
  Use new EPIC-maintained hpc-stack on Jet  (ufs-community#771)
  Update GDAS initialization scripts for the new ENKF directory (ufs-community#764)
  Reduce memory usage in chgres_cube (ufs-community#766)
  Detect duplicate vertical levels in chgres_cube. (ufs-community#767)
  Point to new input orography directory. (ufs-community#758)
  Release version 1.9 (ufs-community#754)
  HAFSv1 grid nesting updates (ufs-community#752)
  Remove compiler warnings from chgres_cube (ufs-community#747)
  chgres_cube: Split input_data module into to 3 separate modules (ufs-community#744)
  More work on CI, checking with different versions of ESMF (ufs-community#742)
  Add processing of soil color to sfc_climo_gen (ufs-community#721)
  more work on CI - added Linux_versions workflow (ufs-community#739)
  Add TEST_FILE_DIR option to CMake build, where test data files can be found instead of using FTP.  (ufs-community#732)
  adding developer workflow (ufs-community#724)
  Update GDAS INIT utility for v16.3. (ufs-community#723)
  OROG_GSL - Remove negative bias in orographic asymmetery (OA) fields (ufs-community#718)
  Incorporate BNU soil type data (ufs-community#717)
  High-resolution MODIS and STATSGO veg/soil data. (ufs-community#703)
  Run WCOSS2 consistency tests under role account (ufs-community#711)
  Fix macOS CI workflow (ufs-community#715)
  Add utility codes to create BNU soil texture data (ufs-community#707)
  Update chgres_cube to output netcdf4 file. (ufs-community#704)
  Incorporate high-res global VIIRS vegetation data. (ufs-community#699)
  Run grid_gen consistency tests in parallel. (ufs-community#697)
  Fix error handling in "link_fixdirs.sh". Add -L to the copy command. (ufs-community#701)
  Update for new fixed data directory structure (ufs-community#688)
  Add WCOSS2 support for tests (ufs-community#693)
  Increase test data pull timeout (ufs-community#692)
  Option to install binaries to any directory. (ufs-community#685)
  Update global_cycle to use the latest CCPP version of sfcsub.F (ufs-community#671)
  Incorporate weight_gen program. (ufs-community#677)
  Add install of jpeg-turbo to macos workflows (ufs-community#684)
  Improve logic in regression test driver script (ufs-community#681)
  Release v1.8 (ufs-community#679)
  Update link_fixdirs.sh for new data directories (ufs-community#672)
  Update default ice climatology in ./ush/global_cycle.sh. (ufs-community#664)
  Remove all references to WCOSS 1 from UFS_UTILS (ufs-community#667)
  Update workflows to use latest macOS and ubuntu (ufs-community#675)
  Update GDAS Initialization utility for recent HPSS tarball name change (ufs-community#666)
  Port UFS_UTILS to WCOSS2 (ufs-community#642)
  Fix chgres_cube to process GEFS GRIB2 data (ufs-community#658)
  Update global_cycle_driver.sh for GFS OPS directory convention  (ufs-community#655)
  Update documentation for SRW App (ufs-community#656)
  New coupled model utility (ufs-community#647)
  Update support for S4 and enable regression testing (ufs-community#654)
  global_cycle - Link to CCPP version of sfcsub.F (ufs-community#636)
  Add processing of new global AFWA snow data to emcsfc_snow2mdl. (ufs-community#648)
  Update build module on Cheyenne (ufs-community#646)
  Move to Intel 2022 on Jet, Hera and Orion (ufs-community#650)
  Host doxygen documentation for multiple releases (ufs-community#644)
  Download unit test data as part of the CMake build (ufs-community#630)
  chgres_cube - Complete removal of wgrib2 library (ufs-community#641)
  Eliminate circular dependency in chgres_cube
  Update workflow files to pull netcdf-c library from GitHub
  chgres_cube - Remove the wgrib2 library from the GRIB2 data read routines.
  Undefined symbols on macOS with Intel compiler (ufs-community#628)
  Update FVCOM code to handle sub-domain restart files using multiple cores. (ufs-community#624)
  chgres_cube - Run routine 'convert_omega' on all tasks. (ufs-community#627)
  Use ESMF 8.2.0 library
  Automate update of consistency test baseline data. (ufs-community#603)
  Update workflow files to use newer versions of ESMF and NCEPLIBS. (ufs-community#617)
  Update build modules to be lua compliant (ufs-community#614)
  Allow FVCOM tools to Update Ice Surface Roughness Length (ufs-community#604)
  Update the requested memory in the Orion chgres_cube consistency test script (ufs-community#611)
  Use copy of grib_util under Jet role account. (ufs-community#608)
  Run consistency tests on Orion using role account (ufs-community#606)
  Run consistency tests on Hera using role account (ufs-community#605)
  Run consistency tests on Jet using role account. (ufs-community#607)
  Update more documentation after move to ufs-community (ufs-community#597)
  fvcom_tools - Add option to process 'cold' or 'warm' restart files (ufs-community#595)
  Update documentation after move to ufs-community (ufs-community#594)
  chgres_cube - Eliminate segmentation fault in input_data.F90 (ufs-community#585)
  Update to language of unit test README to match that in unit test.
  chgres_cube - Simplify surface processing using field bundles (ufs-community#572)
  Add compiler flags for GNU Fortran v10 or newer compilers. (ufs-community#583)
  Move verbose output from example unit test to be commented to streamline test output.
  Updates to test README to add instructions for use of example unit test.
  Add Findwgrib2.cmake (ufs-community#578)
  Added unit test to be used as an instructional example for new users.
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.

4 participants