-
Notifications
You must be signed in to change notification settings - Fork 38
Description
Describe the New Use Case
Note that this was originally an issue in MET with the plan of adding support directly to the C++ tools. However, as of 4/6/2022, the plan has changed to leveraging existing python functionality for an initial implementation. Along with that, we'll need a new use case to demonstrate that functionality. In the long run, enhancements could be added directly to MET to support unstructured grids, but those would be described in a different issue.
Here's the original text of this issue for background:
This issue is the result of a meeting with Mark Miesch about JEDI on 1/23/2020.
Consider enhancing MET to leverage the JEDI C++ interface for reading data from LFRic, FV3, MPAS, Neptune, WRF, and SOCA. The geometry object in JEDI can instantiate a grid.
JEDI Source Code (not public): https://github.com/JCSDA/oops
State.h header file defines the State class. Each model instantiates a State in a different way, including grid information and parallel distribution information. The State object will retrieve a model value at a given location by calling getValues(). This returns a GeoVaLs object for the model values at the requested location(s). The "State::read(const eckit::Configuration &)" member function can read data from a model output file and populates the state object. The "State::geometry()" member function contains the grid information.
Dependencies: ecmwf/eckit, oops, FV3 JEDI, oops depends on boost headers (not actually compiled).
JEDI is built using ecbuild.
ecmwf/eckit does all the MPI handling.
Some functional steps...
- Query the model to get values from a specific location.
- Pull observations from an observation database (either ODB2 or NetCDF, dependent on WCOSS).
- Investigate the use of BUMP and/or oops for the handling of unstructured grids.
- Currently cube sphere grids and MPAS variable mesh grids are processed as unstructured grids by BUMP.
Here's a specific idea:
(1) Work on Hera.
(2) Enhance MET to support a new configurable option to interface with JEDI from FV3.
(3) Specifically, enhance Point-Stat to call Shape::getValues() for each observation location and generate matched pairs.
(4) Compute the resulting statistics.
So really "JEDI" is a new input "file type"... from which you extract forecast values.
This is needed by September 30, 2020 (end of Q4).
Use Case Name and Category
Provide use case name, following Contributor's Guide naming template, and list which category the use case will reside in.
If a new category is needed for this use case, provide its name and brief justification
Input Data
List input data types and sources.
Provide a total input file size, keeping necessary data to a minimum.
Acceptance Testing
Describe tests required for new functionality.
As use case develops, provide a run time here
Time Estimate
Estimate the amount of work required here.
Issues should represent approximately 1 to 3 days of work.
Sub-Issues
Consider breaking the new feature down into sub-issues.
- Add a checkbox for each sub-issue here.
Relevant Deadlines
List relevant project deadlines here or state NONE.
Funding Source
Define the source of funding and account keys here or state NONE.
Define the Metadata
Assignee
- Select engineer(s) or no engineer required
- Select scientist(s) or no scientist required
Labels
- Select component(s)
- Select priority
- Select requestor(s)
- Select privacy
Projects and Milestone
- Select Repository and/or Organization level Project(s) or add alert: NEED PROJECT ASSIGNMENT label
- Select Milestone as the next official version or Future Versions
Define Related Issue(s)
Consider the impact to the other METplus components.
New Use Case Checklist
See the METplus Workflow for details.
- Complete the issue definition above, including the Time Estimate and Funding source.
- Fork this repository or create a branch of develop.
Branch name:feature_<Issue Number>_<Description>
- Complete the development and test your changes.
- Add/update log messages for easier debugging.
- Add/update unit tests.
- Add/update documentation.
- Add any new Python packages to the METplus Components Python Requirements table.
- Push local changes to GitHub.
- Submit a pull request to merge into develop.
Pull request:feature <Issue Number> <Description>
- Define the pull request metadata, as permissions allow.
Select: Reviewer(s) and Linked issues
Select: Repository level development cycle Project for the next official release
Select: Milestone as the next official version - Iterate until the reviewer(s) accept your changes. Merge branch into develop.
- Create a second pull request to merge develop into develop-ref, following the same steps for the first pull request.
- Delete your fork or branch.
- Close this issue.