WRF User Support & Contributor Information
Overall support to users for the WRF system is handled by the Mesoscale and Microscale Meteorology (MMM) Laboratory of NCAR, and the main page for information on the WRF Model and user support is currently: WRF Users' Page.
Support for WRF users & code developers
WRF is now supported through a forum-based platform that can be found in the Weather Research and Forecasting (WRF) Model section on the WRF & MPAS-A Support Forum.
As we expressed in the statement for NCAR/MMM Support for WRF and MPAS, we will continue to provide support of the WRF modeling system to the scientific and research community. In order to provide this support effectively and efficiently, we are prioritizing, streamlining, and refocusing the support tasks. The following areas will have high priority in our effort:
- Host workshops and tutorials
- Maintain and continue to release up-to-date and robust software
- Maintain and improve online documentation and online learning materials
- Participate in user forum discussions and answer questions regarding reasonable use of the modeling system:
- Address issues that can be replicated in the current version of the released code.
- Support for standard configurations and usages of the models.
- Limited physics consultation to a subset of physics suites and options.
- Answer forum posts that are more likely to benefit a larger segment of the community.
An important aspect of community support for WRF is to provide up-to-date and robust software to the scientific and research community. We strive to work with code contributors and make new capabilities available to the community. To accomplish this goal, we ask the code contributors to follow these guidelines.
Contributors should follow the workflows (using the latest release branch) and tools (Git and Github) used by MMM to contribute to WRF.
- Any code contributions must meet WRF code standards.
- Any code contributions must be made via pull requests (PR) on Github.
- Each PR should be aimed to address a single issue.
- Moderators from MMM will review the PR and work with contributors to meet the code standards of the models.
- Contributors must agree to actively support their scheme. This support includes documentation and answering technical questions (through a moderator).
The following summarizes background information and provides links to resources for code contributions:
-
Learning to use Git and Github
Git is the version control system employed by WRF, and its use via Github is required of all contributors. Note that prospective contributors must create an account on Github to be able to make and process WRF code contributions.
-
Contributing a new physics scheme to WRF
Contributing new physics options to WRF requires an important preliminary step, which is to obtain approval from the WRF Physics Review Panel (WPRP).
New physics packages submitted for inclusion in WRF are reviewed by the WPRP, and prospective contributors of new schemes must contact the WPRP (wprp@ucar.edu) to notify it of their proposed submission. The panel makes a recommendation on whether a proposed package should be accepted. You can also view the details of the review process.
-
Code Preparation and Testing Requirements
WRF is an open development community model, and code contributions must meet the coding, performance, and testing requirements standards set by the WRF Developers' Committee and WRF community.
View the information for WRF contributors which includes detailed information about code preparation, code testing, and the submission process.
If multiple code modifications are proposed, they must be separated into single-issue pull requests.
-
Required tests
The following tests are required for PRs of new features and physics. The tests can be performed using Docker containers, which provide a controlled environment for running the code. There are instructions available on how to use the Docker container for the testing.
- The contributed code must compile and run for the core WRF system as well as components of it, listed below:
- The contributed code must produce bit-for-bit results when running single vs. multiple processors for both distributed-memory MPI and shared-memory OpenMP operation. View instructions
- The contributed code must be able to produce bit-for-bit results with the restart capability. View instructions
- The contributed code must compile and run for the core WRF system as well as components of it, listed below:
-
-
Proposing Code Additions/Changes Using Git
WRF code contributions are made on Github via a pull request (PR). Creating a good PR helps WRF developers, reviewers, and other community members to understand, review, and accept proposed changes. This section describes the process of producing a PR.
- PRs should be constrained to addressing a single bug fix, update, or new feature.
- A Git PR must be created to describe the bug fix, update, or new feature.
- Workflow for WRF code modification
- Making a PR commit message
- Example of a pull request for a new physics scheme
- Example of pull request for a bug fix
Once a PR is made, it triggers an automated series of regression tests that are carried out via cloud computing, employing the Jenkins continuous integration software. Purposes of this testing are to ensure bit-reproducibility and that the proposed changes do not break the existing code. Additional information on the testing is available.
- Once the code passes the tests, the PR is reviewed by the Developers' Committee, while also being open to review by the community. Contributors should follow the discussion on the submission via comments on Github and should be prepared to respond.
- Contributors will likely need to modify their submitted code to accommodate needs and suggestions. It is very rare that an actual PR is accepted without changes, and this public review is one part of the benefits of Github.
- MMM will conduct a final test before a PR for a new feature or new physics is accepted and merged into the code repository.
WRF repository and release administration
NCAR is responsible for the support of WRF code to the user community and for the administration of the WRF repository. This includes management of the repository and oversight of source code modification and testing. NCAR is also responsible for oversight and leadership of the WRF release process. To guide these activities and to document them for the WRF community, WRF Code Repository and Release Administration describes the policies and procedures.
WRF repository management is handled by the Developers' Committee, and WRF release management is handled by the Release Committee. The Developers' Committee oversees additions to, and maintenance of, the repository, while the Release Committee oversees the release process. For any questions regarding the WRF model or to contact these committees, please post to the WRF & MPAS-A Support Forum.