Skip to content

An updated revised MM5 surface layer scheme with multiple options for similarity functions#2340

Open
prabhakar1508 wants to merge 47 commits into
wrf-model:masterfrom
prabhakar1508:wrf_sfc_iitd_scheme
Open

An updated revised MM5 surface layer scheme with multiple options for similarity functions#2340
prabhakar1508 wants to merge 47 commits into
wrf-model:masterfrom
prabhakar1508:wrf_sfc_iitd_scheme

Conversation

@prabhakar1508
Copy link
Copy Markdown

Purpose: Inclusion of an updated revised MM5 surface layer scheme with multiple options for similarity functions in stable and convective conditions

TYPE: new feature

KEYWORDS: Updated revised MM5 surface layer scheme, various similarity functions, stable and convective conditions, new namelist flags, new surface layer option

SOURCE: Prabhakar Namdev (Indian Institute of Technology Delhi, India; Karlsruhe Institute of Technology, Germany; Prabhakarnmdv587@gmail.com), Maithili Sharan (Indian Institute of Technology Delhi, India), Piyush Srivastava (Indian Institute of Technology Roorkee, India ), Saroj Kanta Mishra (Indian Institute of Technology Delhi)

DESCRIPTION OF CHANGES:
Problem:
This proposal outlines the scientific advancements, novelty, and community benefits of the updated code. Currently, the following functional forms of similarity or stability correction functions are used in the revised MM5 surface layer scheme for computing the surface fluxes in the WRF model:

  1. In stable conditions, the functional forms from Cheng and Brutsaert (2005)
  2. In unstable conditions, the functional forms proposed by Fairall et al. (1996)
    We have updated this by incorporating the following functional forms:
    (i) Stable conditions
    In addition to the default one (Cheng and Brutsaert, 2005), the following functions are incorporated:
  3. Similarity functions based on Grachev et al. (2007)
  4. Similarity functions based on Srivastava et al. (2020)
  5. Similarity functions based on Gryanik et al. (2020)
  6. Similarity functions based on Holtslag et al. (1990)
  7. Similarity functions based on Beljaars and Holtslag (1991)
  8. Similarity functions based on Dyunkerke et al. (1991)
    (ii) Unstable conditions
    In addition to the default functions by Fairall et al. (1996), the following functional forms are also incorporated:
  9. Similarity functions based on Businger et al. (1971)
  10. Similarity functions based on Carl et al. (1973)
  11. Similarity functions described by Zeng et al. (1998) based on the three sublayer
    model proposed by Kader and Yaglom (1990)

A separate surface layer module from the current schemes available in the WRF model is designed. It is based on the revised MM5 surface layer scheme (Jimenez et al., 2012) and named as the IITD surface layer scheme (sfclayrev_IITD). It includes a variety of expressions for similarity functions stated above in both stable and unstable conditions, taking into account the fact that their performance is spatially and temporally dependent. Therefore, the surface layer scheme should have a provision for the choice of similarity functions for both stable and unstable conditions. This module has two flags corresponding to stable (psimh_stab_opt) and unstable (psimh_unstab_opt) conditions. The flag "psimh_stab_opt" can take values from 0, 1, 2, 3, 4, 5, and 6, corresponding to the different similarity functions: 0 is default (Cheng and Brutsaert 2005), 1 (Grachev et al., 2007), 2 (Srivastava et al., 2020), 3 (Gryanik et al., 2020), 4 (Holtslag et al., 1990), 5 (Beljaars and Holtslag, 1991), 6 (Dyulkerke et al., 1991). The flag "psimh_unstab_opt" can take values from 0, 1, 2, and 3, corresponding to the different similarity functions in unstable conditions: 0 is default (Fairall et al., 1996), 1 (Businger et al., 1971), 2 (Carl et al., 1973), and 3 (Zeng et al., 1998, based on the three sublayer model by Kader and Yaglom, 1990). In this way, the user will have the flexibility to choose any choice of similarity functions for computing surface fluxes.

The updated module (sfclayrev_IITD) can be used by choosing sf_sfclay_physics=8 in the namelist.input file. The updated module is already evaluated with turbulence measurements over Indian land as well as the CASES99 and ERA5-land reanalysis datasets.
Two of the research articles related to the updated scheme are already published in the Geoscientific Model Development and Atmospheric Research journals. References for the same are provided below:

  1. Namdev, P., Sharan, M., Srivastava, P., and Mishra, S. K. (2024): An Updated Parameterization of the Unstable Atmospheric Surface Layer in the Weather Research and Forecasting (WRF) Modeling System, Geosci. Model Dev., 17, 8093-8114, https://doi.org/10.5194/gmd-17-8093-2024
  2. Namdev, P., Sharan, M., and Mishra, S. K. (2024): Implementation of various non-linear similarity functions for stable atmospheric surface layer in the WRF modeling system: An evaluation for three contrasting nights in CASES-99 dataset, Atmos. Res., 107825, https://doi.org/10.1016/j.atmosres.2024.107825

Solution:
We wish to point out that some of these functions are capable of dealing with the situation in low wind strong stable/unstable conditions. The incorporated functional forms based on the three sublayer model proposed by Kader and Yaglom (1990) are able to predict the observed non-monotonic behaviour of the drag coefficient (C D ) in unstable conditions reported in various studies (Srivastava and Sharan, 2015; 2021; Maurya et al., 2023; Mosso et al., 2024). Some of these functional forms are recently developed and applicable for a wide range of atmospheric stability conditions.

LIST OF MODIFIED FILES:
M Registry/Registry.EM_COMMON
M dyn_em/module_first_rk_step_part1.F
M dyn_em/start_em.F
M main/depend.common
M phys/Makefile
M phys/module_fddagd_driver.F
M phys/module_fddaobs_driver.F
M phys/module_physics_init.F
A phys/module_sf_sfclayrev_IITD.F
M phys/module_surface_driver.F
M share/module_check_a_mundo.F

TESTS CONDUCTED:

  1. The proposed scheme is evaluated against baseline revised MM5 surface layer scheme. The proposed scheme produced physically consistent estimates of surface turbulent fluxes in both stable and convective conditions. Evaluation was performed with case studies using CASES-99 and other benchmark datasets and already published (Namdev et al., 2024; 2025).
  2. Jenkins-based tests are not currently configured for this development branch. Code validation was performed through manual compilation with WRF version 4.7.1.

RELEASE NOTE:
This introduces an updated version of the revised MM5 surface layer scheme, providing multiple options for similarity functions under both stable and convective conditions that can be chosen using namelist flags. The implementation is based on the following studies:

  1. Namdev, P., Sharan, M., Srivastava, P., and Mishra, S. K. (2024): An Updated Parameterization of the Unstable Atmospheric Surface Layer in the Weather Research and Forecasting (WRF) Modeling System, Geosci. Model Dev., 17, 8093-8114, https://doi.org/10.5194/gmd-17-8093-2024
  2. Namdev, P., Sharan, M., and Mishra, S. K. (2025): Implementation of various non-linear similarity functions for stable atmospheric surface layer in the WRF modeling system: An evaluation for three contrasting nights in CASES-99 dataset, Atmos. Res., 107825, https://doi.org/10.1016/j.atmosres.2024.107825

saneku and others added 30 commits April 1, 2025 15:17
wrf-model#2185)

TYPE: bug fix

KEYWORDS: WRF-Chem, dry air density

SOURCE: NOAA GSL, Alexander Ukhov (KAUST)

DESCRIPTION OF CHANGES:
Problem:
It was found that dry air density was miscalculated.

Solution:
Removed unnecessary factor. Simulations before and after did not show any significant difference, as expected.

LIST OF MODIFIED FILES:
M chem/module_chem_utilities.F

TESTS CONDUCTED: 
The Jenkins tests are all passing.

RELEASE NOTE: Fixed calculation of dry air density in module_chem_utilities.F. The bug had a very minor effect.
…-model#2143)

TYPE: enhancement

KEYWORDS: testing, devops, github, workflow

SOURCE: internal

DESCRIPTION OF CHANGES:
Problem:
The CI/CD testing framework using github actions is set to trigger on PR
label events. However, labels are not just used for testing and will
trigger the workflow. While the workflow does have checks in place to
skip any labels that aren't meant to trigger testing, this skipped
workflow status will override any previous actual test status. This can
be confusing if two labels are applied at the same time, one being a
test label, and only one status appears showing a skipped workflow.
Unique naming of workflow runs does not mitigate this problem as the
posted status is tied to the workflow internal id and not the run name.

Solution:
Convert the main workflow that hosts the test sets into a dispatch
workflow, meaning it must manually be triggered. This has the intended
effect of decoupling the workflow id from any PR and will not normally
show up as a status at the bottom of PRs solving the issue of
independent labels overriding each other. To solve the workflow no
longer appearing within PR statuses, the github REST API is used to
create a commit status pointing to its respective workflow run via
`target_url` along with the current state of the job.

As the main workflow must manually be triggered, a new entry point proxy
workflow is used to filter test labels and request a test run if needed.
This paradigm allows events to be triggered within a PR context,
simplifying gathering the data necessary to run the correct PR branch.
Furthermore, the entry point will still suffer the initial problem of
status override on multiple labels, but this should be acceptable as
actual test labels will create their own commit statuses once queued.

The dispatch workflow is unable to be run within the context of PR merge
refs, nor the head of the branch from a fork (as that would run the
workflow in _that_ fork). Thus, the dispatch workflow is run using the
base ref of the PR if from a fork, or the head ref *ONLY IF* originating
from the parent repo of the workflow. This means testing of the
immediate changes to the workflow can only be observed within the PR of
an internal repo branch, limiting development slightly. The benefits,
however, are a cleaned up status reporting AND increased security as no
runner code that isn't already within a branch of the repository will be
executed. One should still ensure the underlying tests are okay to run

TESTS CONDUCTED: 
1. Testing was done in independent fork to demonstrate initial issue and
feasibility of this solution.
… generation (wrf-model#2136)

TYPE: bug fix

KEYWORDS: registry, path

SOURCE: internal

DESCRIPTION OF CHANGES:
Problem:
PR wrf-model#1975 added the ability for registry code to be generated
out-of-source. To do this, a provided path is used and prepended to
include statements within registry files. The max path length checks to
create the search path string in a `char*` does not take into account
the combined prepend path + relative file path length. When this
happens, no obvious errors occur, but a buffer overflow causes malformed
registry code to be used, eventually leading to failed compilation.

Solution:
Use a max path length that checks both the relative file path length and
combined length when using the prepended path. As failure to pass this
will result in erroneous code, the error messages have been updated to
convey that as well.

TESTS CONDUCTED: 
1. Tested with CMake build using an absolute path greater than ~128.
Without these changes the registry code will pass but compilation will
fail. With these changes, that path length works and paths > 256 will
fail at the registry code generation step.

RELEASE NOTE: Bug fix for registry path length checks when doing
out-of-source code generation
TYPE:  Bug Fix

KEYWORDS: CCE, compilation errors, Cray

SOURCE: Miroslaw Andrejczuk (HPE)

DESCRIPTION OF CHANGES:
Problem:
There were few errors reported by Cray compiler when building WRF-CHEM
code. In chem/module_optical_averaging.F comma after write statements
triggered error when building, and for chem/module_mosaic_addemiss.F
compiler complained that because subroutine mosaic_dust_gocartemis has
an optional argument an interface to this routine is needed in module
itself.

Solution:
Remove commas after write statements in module_optical_averaging.F. Move
_END MODULE module_mosaic_addemiss_ statement in the file to include
subroutine mosaic_dust_gocartemis in the module definition.

ISSUE: For use when this PR closes an issue.
Fixes wrf-model#2252

LIST OF MODIFIED FILES: 
chem/module_mosaic_addemiss.F
chem/module_optical_averaging.F

TESTS CONDUCTED: 
1. With those changes I can build wrf/em_real with CCE 
2. The Jenkins tests are all passing.
…emory deallocation (wrf-model#2240)

TYPE: Bug fix

KEYWORDS: seg fault, diag_nwp2

SOURCE: Menda Chasteen

DESCRIPTION OF CHANGES:
Running with `diag_nwp2 = 1` leads to a segmentation fault related to
prematurely deallocating `dz8w` in
[start_em.F](https://github.com/wrf-model/WRF/blob/f52c197ed39d12e087d02c50f412d90d418f6186/dyn_em/start_em.F#L2004).
This PR fixes the error by moving the deallocate statement to after the
`trad_fields` call.

LIST OF MODIFIED FILES:
dyn_em/start_em.F

TESTS CONDUCTED:
The regression tests are all passing.

RELEASE NOTE: This PR fixes a seg fault error due to early deallocation
of array dz8w for diag_nwp2=2 option in start_em.F.
)

TYPE: bug fix

KEYWORDS: chem, make

SOURCE: internal

DESCRIPTION OF CHANGES:
Problem:
PR wrf-model#2018 Changed how KPP helper programs generate code by now accepting
relative paths. The relative path passed into `tuv_kpp` for the first
part of generation is wrong and should match the relative paths used in
the other calls. Using the wrong path causes KPP compilation with the
make build to fail with incorrect Fortran syntax in the kpp mechanism
case selection.

Solution:
Change the `tuv_kpp` relative path to match all other calls, thus
operating on the same set of files generated in that directory.

TESTS CONDUCTED: 
1. With these edits, make compilation now passes
… with -D (wrf-model#2249)

Prevent floating point exception in phys/module_mp_radar.F when
debugging with -D related to new variables in UDM scheme.

TYPE: bug fix

KEYWORDS: debug, radar, microphysics, UDM, -D

SOURCE: Jack Bartlett (Imperial College London)

DESCRIPTION OF CHANGES:
Problem:
Lines 225 and 226 in phys/module_mp_radar.F trigger a floating point
exception when debugging with option -D and using any microphysics
scheme which calls `radar_init` except the UDM scheme because `xam_h`
and `xbm_h` are not initialised in any other microphysics scheme.

Solution:
Initialise `xam_h` and `xbm_h` at 0 and check if they have been given a
value greater than 0 before finding their reciprocals.

ISSUE: For use when this PR closes an issue.
Fixes wrf-model#2248

LIST OF MODIFIED FILES: list of changed files (use `git diff
--name-status master` to get formatted list)
phys/module_mp_radar.F

TESTS CONDUCTED: 
Only tested by trying `mp_physics=8` with debugging option -D and the
new fixes (which previously triggered a fpe).

Co-authored-by: Jack Bartlett <jack.bartlett20@imperial.ac.uk>
…rf-model#2091)

TYPE: enhancement

KEYWORDS: cmake, configuration

SOURCE: internal

DESCRIPTION OF CHANGES:
Problem:
The current solution for implicitly matching symbols between C and
Fortran relies on user-modification of a stanza for their system. While
stanzas can be configured to a specific architecture and options
selection, this approach is limited and overly specific to user
configuration when it could be programmatically determined. Likewise, if
a new stanza is introduced it will likely only be tested by one user on
their particular system. Thus, if this stanza could be used elsewhere
but needs underscores on C symbols for Fortran usage it will not be
evident why the stanza does not work for this new user.

Solution:
Programmatically determine if underscores are needed in C compilation in
the CMake build. Sanitize out any definition of underscore in the stanza
so that CMake configuration checks take precedence.
…lls (via .gitattributes) (wrf-model#2155)

PURPOSE: instruct GitHub to create empty, instead of incomplete, release
tarballs (via .gitattributes)

TYPE: enhancement

KEYWORDS: release, gitmodules

SOURCE: @slayoo

DESCRIPTION OF CHANGES:
Problem:

![image](https://github.com/user-attachments/assets/ff0c5d5a-80b1-405a-831c-df55fde3044b)

Solution:
Make the auto-generated files empty (seems that disabling
auto-generation entirely is not supported)

ISSUE: none ?

LIST OF MODIFIED FILES: `.gitattributes` added

TESTS CONDUCTED: 
Tested to work in another project:
https://github.com/gnudatalanguage/gdl/blob/master/.gitattributes
TYPE: text only

KEYWORDS: em_les, e_vert, namelist.input, default

SOURCE: internal

DESCRIPTION OF CHANGES:
Problem:
The default namelist.input file in the em_les case directory had e_vert
set to 40, 100, 41, which may confuse beginner users. If they leave
as-is when running a nested simulation, they will get an ideal.exe error

Solution:
Changed the setting to "e_vert = 40, 40, 40."

LIST OF MODIFIED FILES: 
M    test/em_les/namelist.input

TESTS CONDUCTED: 
No test needed - text only
…d, etc. (wrf-model#2261)

This PR corrects the units designations of the gravity wave drag
diagnostics variables dusfcg, dvsfcg, dtaux3d and dtauy3d as follows:

The units for the “dusfcg” and “dvsfcg” variables are currently “Pa m
s^{-1}” when they actually should simply be “Pa”. These variables
represent the vertical integral of “d(tau)/dz”, which turns out to be
the GWD at the surface, whose units are “Pa”.

The units for the “dtaux” and “dtauy” variables are currently “m s^{-1}”
when they actually should be “m s^{-2}”. These variables represent the
vertical divergence of the horizontal GWD momentum flux ( (-1/rho) *
d(tau)/dz ), where tau is the GWD momentum flux or “wave stress” (units
are Pascal).

This code change is text only, and does not change the model results.
TYPE:  no impact, text only

KEYWORDS: surface layer option, tropical suite

SOURCE: internal

DESCRIPTION OF CHANGES:
This PR switches the surface layer option in tropical suite from 91 (MM5
option) to 1, the revised MM5 option. The change is consistent with the
'mesoscale-reference' suite physics in MPAS starting from v8.2.0.

LIST OF MODIFIED FILES: 
M       share/module_check_a_mundo.F

TESTS CONDUCTED: 
Yes

RELEASE NOTE: This PR changes the surface layer option in tropical suite
from old MM5 option (sf_sfclay_physics = 91) to revised MM5 option
(sf_sfclay_physics = 1).
TYPE: Bug fix and new feature

KEYWORDS: volcanic eruption, emiss_opt_vol, ash, so2, water vapor, sulfate

SOURCE: Alexander Ukhov (KAUST)

DESCRIPTION OF CHANGES:
Problem:
There is a bug in the gravitational settling of the ash. Large ash particles have a very high falling speed.

Solution:
Fix the bug and introduce the correction factor for large ash particles.

New additions:
- Added calculation of optical properties of ash and sulfate aerosol
- Added diagnostics for ash, SO2, and sulfate. This can be used fora mass balance check
- Added emissions of water vapor and sulfate aerosols
- Added new emiss_opt_vol=3, which implies the new emission preprocessing method (avoiding prep_chem_source.exe)
- Many other small corrections and improvements.

More details in the following GMD paper:
A. Ukhov, G. Stenchikov, J. Schnell, R. Ahmadov, U. Rizza, G. Grell, and I. Hoteit. Enhancing volcanic eruption simulations with the wrf-chem v4.8. Geoscientific Model Development, 18(23):9805–9825, 2025. doi: 10.5194/gmd-18-9805-2025. URL https://gmd.copernicus.org/articles/18/9805/2025/. It will also be in upcoming Ukhov et al., 'In the Wake of the Hayli Gubbi Eruption', 2026.

LIST OF MODIFIED FILES: 
M	Registry/registry.chem
M	chem/CMakeLists.txt
M	chem/Makefile
M	chem/aerosol_driver.F
M	chem/chem_driver.F
M	chem/chemics_init.F
M	chem/depend.chem
M	chem/dry_dep_driver.F
M	chem/emissions_driver.F
M	chem/mechanism_driver.F
M	chem/module_chem_utilities.F
M	chem/module_ctrans_grell.F
M	chem/module_optical_averaging.F
M	chem/module_vash_settling.F
A	chem/module_volc_chem.F
M	chem/module_wetdep_ls.F
M	chem/optical_driver.F
M	share/mediation_integrate.F

TESTS CONDUCTED: 
1. See publications.
2. The Jenkins tests are all passing.

RELEASE NOTE: This PR fixes a bug for gravitational settling of the ash, and adds new capabilities to simulate volcanic eruptions.
---------

Co-authored-by: weiwangncar <weiwang@ucar.edu>
TYPE: enhancement/new features

KEYWORDS: MYNN-EDMF, turbulence, clouds, downdrafts, closure levels

SOURCE: Joseph Olson (NOAA-GSL)

DESCRIPTION OF CHANGES:
Problem(s): 
1. Excessive low-level clouds, especially over water
2. prototype version of downdrafts was not well tested, 
3. excessive near-surface mixing in very stable conditions.
4. Checks in module_check_a_mundo.F needed updates associated with the incoming changes. Also there was a redundant check that needed to be removed.

Solution(s):
1. revised subgrid clouds option (bl_mynn_cloudpdf = 2) improved upon the excessive low-level clouds previously noted.
2. More testing of the downdrafts has been performed and several changes were made to improve the scale-awareness as well as the underlying physical representation of downdrafts. Still requires more testing with
significantly different vertical resolution. Not active by default but considered more reliable.
3. A handful of related revisions/tunings was made to improve low level jet structures in stable conditions. This touched the LBC for TKE, Prandtl number regulation, and a mixing length revision. All have been
documented in the updated tech note ([doi:10.25923/rahr-sj70](https://doi.org/10.25923/rahr-sj70)).
4. module_check_a_mundo.F has been modified to work with the updated MYNN-EDMF options.

LIST OF MODIFIED FILES: 
M       Registry/Registry.EM_COMMON
M       dyn_em/module_first_rk_step_part1.F
M       phys/MYNN-EDMF
M       phys/module_pbl_driver.F
M       share/module_check_a_mundo.F

TESTS CONDUCTED: 
1. WFIP3 case studies (using WRF) show robust improvement in stable LLJ conditions. Realtime testing (mostly in MPAS) show improvements relative to HRRR. Some of this was previewed in the last WRF/MPAS workshop but more modifications have been made since.
2. The Jenkins tests are all passing.

RELEASE NOTE: The MYNN-EDMF submodule has been updated to be consistent with the updated [NOAA Tech Note](https://doi.org/10.25923/rahr-sj70). This same version of the MYNN-EDMF submodule will be implemented into MPAS (next), then CCPP. Some recent updates include (1) revised subgrid clouds option (bl_mynn_cloudpdf = 2) improves the low-level clouds. (2) more testing of the downdrafts has been performed and several changes were made to improve the scale-awareness as well as the underlying physical representation of downdrafts. (3) a handful of related revisions/tunings was made to improve low level jet structures in stable conditions for several WFIP3 cases. All have been documented in the
updated tech note ([doi:10.25923/rahr-sj70](https://doi.org/10.25923/rahr-sj70)). Beware of the new MYNN-EDMF-specific options (bl_mynn_mixaerosols, bl_mynn_mixnumcon, and bl_mynn_mixscalars). Their defaults may not be suitable for your research/applications, but in general, we suggest to use this options and set scalar_pblmix=0 and tracer_pblmix=0, since the MYNN can perform the associated nonlocal mixing.
TYPE: bug fix, enhancement, new submodule version

KEYWORDS: MYNN-SFC, submodule

SOURCE: Joseph Olson (NOAA-GSL) and Xia Sun (NOAA-GSL)

DESCRIPTION OF CHANGES:
Problem:
- Different versions of this scheme exist in different models, making updates more tedious.
- Some minor bugs were found, such as SPP implementation to the thermal/moisture roughness lengths over water and reports of lacking restart reproducibility
- The use of shared namelist variables (iz0tlnd and isftcflx) carried different meaning for different surface layer schemes. Need MYNN-specific variables.

Solution:
- Centralize development in submodule repository and hook up to all models (WRF, MPAS, CCPP)
- implement bug fixes
- added new MYNN-specific options (sf_mynnsfc_sfcflux_land and sf_mynnsfc_sfcflux_water), which will be carried to all other model frameworks, and removed the use the shared options that carry different meaning in different surface layer schemes.

LIST OF MODIFIED FILES: 
M       .gitmodules
M       Makefile
M       Registry/Registry.EM_COMMON
M       dyn_em/module_first_rk_step_part1.F
M       main/depend.common
M       phys/CMakeLists.txt
A       phys/MYNN-SFC
M       phys/Makefile
M       phys/module_physics_init.F
D       phys/module_sf_mynn.F
M       phys/module_surface_driver.F

TESTS CONDUCTED: 
1. Do mods fix problem? Yes.
2. All tests have been performed on the JET system with a recent version of the intel compiler. Tests were performed with a comprehensive set of debug flags. Additional testing is still in progress. Some minor updates are anticipated over the next couple weeks.
3. The Jenkins tests are all passing.

RELEASE NOTE: 
The MYNN surface layer scheme has been updated to the [new modularized submodule version](https://github.com/NCAR/MYNN-SFC). The original form of this version was taken from the CCPP but it has been decomposed into 3 different modules for land, water, and ice. This helps to centralize all future development in submodule repository that will soon hook up to all models (WRF, MPAS, CCPP). Some minor bug fixes have been implemented, including a fix for using SPP in the water submodule. New MYNN-specific options (sf_mynnsfc_sfcflux_land and sf_mynnsfc_sfcflux_water) have been added to replace the shared options (iz0tlnd and isftcflx) that carried different meaning for different surface layer schemes.
TYPE: no impact

KEYWORDS: git, submodule, manage_externals

SOURCE: internal

DESCRIPTION OF CHANGES:
Problem:
MMM-physics (under `phys/physics_mmm`) is currently the only external
repository tracked with only manage_externals. This makes
manage_externals and git two failure points for a proper clone of WRF to
succeed.

Solution:
Add MMM-physics as a git submodule using the original path of
`phys/physics_mmm`). To avoid confusion in managing two locations of the
submodule (one in `.gitmodules` and the other in `arch/Externals.cfg`)
the MMM-physics repo is removed from manage_externals. From a user
perspective, no change to the build process is evident.

TESTS CONDUCTED: 
1. Build proceeds as normal from a fresh clone.
TYPE: new feature

KEYWORDS: Microphysics, Operational models

SOURCE: Anders Jensen NOAA/GSL

DESCRIPTION OF CHANGES:
Problem:
Microphysics development of a Thompson-Eidhammer based scheme for operational applications has advanced to a submodule, TEMPO. This new development should be made available to WRF users.

Solution:
Connect TEMPO to WRF. A cleaned and refactored version of TEMPO is being tested in the UFS community's MPAS. Additionally, a PR, MPAS-Dev/MPAS-Model#1393, to add TEMPO to NCAR's MPAS is in progress. This current PR will allow the community to use this same microphysics across the UFS, MPAS, and WRF.

LIST OF MODIFIED FILES: 
M   .gitmodules
M   main/depends.common
M   Makefile
M   clean
M   phys/Makefile
M   phys/module_physics_init.F
M   phys/module_microphysics_driver.F
M   Registry.EM_COMMON
M   dyn_em/module_initialize_real.F

TESTS CONDUCTED: 
1. compiled and ran em_quarter_ss
2. restart test with em_quarter_ss
3. bit-for-bit with different number of processes using em_quarter_ss.
4. Passed regression tests.

RELEASE NOTE:
TEMPO is the Thompson-Eidhammer Microphysics Parameterization for Operations. TEMPO lives here: https://github.com/NCAR/TEMPO and technical documentation lives here: https://ncar.github.io/TEMPO/.

TEMPO specific release notes are here:
https://github.com/NCAR/TEMPO/releases/tag/tempo_v3.0.0
TEMPO version 3.0.0 is the current release version. 

TEMPO is being tested in the ufs-community fork of MPAS for next-generation convection-allowing forecast systems (https://github.com/ufs-community/MPAS-Model). Thus, TEMPO is being
continually evaluated for improvement.

Additionally, there is a PR in progress to connect TEMPO (v3.0.0) to NCAR's MPAS (MPAS-Dev/MPAS-Model#1393). The version of TEMPO currently in the CCPP
(https://github.com/ufs-community/ccpp-physics) will be updated to
v3.0.0 soonish. TEMPO is connected to WRF, MPAS, and CCPP as a submodule, and the same v3.0.0 code will be connected to WRF (this PR), MPAS, and CCPP.

In WRF, supported namelist options include `tempo_aerosolaware==1` to use the aerosol-aware version, and `tempo_hailaware==1` to use the hail-aware version. Both options are on by default.

Key improvements include:
- TEMPO is in a submodule that allows for flexibility when connecting TEMPO to dynamical cores
- Code modularity was been improved and technical documentation has been added
- Bux fix for cloud droplet number concentration during evaporation
- Surface emissions of water-friendly aerosols have been reduced based on a sensitivity simulation that aimed to better constrain water-friendly aerosol concentrations over 24-36 hour forecast periods and reduce the accumulation of aerosols in the atmosphere
- A few modifications were made to graupel number concentration tendencies (when using the hail-aware option) for processes that cause rain to freeze to increase reflectivity in deep convective storms
- Added simple sedimentation tests
- Added unit tests
- Added a program to build lookup tables with MPI capability 
- Lookup tables have been unified
TYPE: enhancement

KEYWORDS: cmake, netcdf, netcdf-fortran, nf-config

SOURCE: internal

DESCRIPTION OF CHANGES:
Problem:
As nf-config does not provide an equivalent --libdir output we must
derive the info ourselves. --flibs provided the info previously, but it
may be more practical to use the --prefix output and search suspected
suffixes instead as --flibs contains other libraries' link info.

Solution:
Use output of --prefix from nf-config as the primary source of library
dir. To handle the cases where --prefix is empty, we still fall back to
--flibs and if that proves insufficient then the as a last resort one
directory above the include directory can be used as a substitute for
the prefix.

TESTS CONDUCTED: 
1. Tested with netCDF-Fortran v4.6.2, modifying nf-config to emulate
fallback if clauses

RELEASE NOTE: Better nf-config libdir detection in CMake build
TYPE: enhancement

KEYWORDS: cmake, da

SOURCE: internal

DESCRIPTION OF CHANGES:
Problem:
The current CMake build does not support building the DA core

Solution:
Allow the selection and building of the DA core. Some minor changes to
source code were made to facilitate the compilation without resorting to
in situ file rewrites with `sed`. These changes fix compilation errors
with `iargc` intrinsic function in gfortran but still allow the original
make / cpp preprocessing to work as originally done.

A notable difference to the original DA build is that no source code is
copied or duplicated into the folders. Instead in the respective folders
used for shared source code between cores if a DA build is requested
only select files are compiled. Otherwise the full set of files in those
directories is used.

Additionally, WAVELET, CRTM, and BUFR can be selected as CMake options
(not environment variables). All are defaulted to on in this iteration.
TYPE: bugfix, enhancement

KEYWORDS: syncing WRF-Hydro/hydro, gage-assisted diversion, bugfixes

SOURCE: internal hydro team + contributor 
 - Soren Rasmussen, NSF NCAR
 - Ryan Cabell, NSF NCAR
- Andrew Song, Inner Mongolia Meteorological Service / China
Meteorological Administration (Wrote PR#829)

DESCRIPTION OF CHANGES: This PR updates the hydro directory to the
[NCAR/wrf_hydro_nwm_public](https://github.com/NCAR/wrf_hydro_nwm_public)
repository. It includes the following PRs
- NCAR/wrf_hydro_nwm_public#756
- NCAR/wrf_hydro_nwm_public#811
- NCAR/wrf_hydro_nwm_public#816
- NCAR/wrf_hydro_nwm_public#823
- NCAR/wrf_hydro_nwm_public#829
- NCAR/wrf_hydro_nwm_public#827
- NCAR/wrf_hydro_nwm_public#855
- NCAR/wrf_hydro_nwm_public#856
- NCAR/wrf_hydro_nwm_public#861
- NCAR/wrf_hydro_nwm_public#862

LIST OF MODIFIED FILES:
```
$ git diff --name-status develop
M       hydro/CMakeLists.txt
M       hydro/CPL/WRF_cpl/CMakeLists.txt
M       hydro/Data_Rec/module_namelist.F90
M       hydro/Data_Rec/module_namelist_inc.F90
M       hydro/HYDRO_drv/module_HYDRO_drv.F90
M       hydro/Makefile
M       hydro/OrchestratorLayer/config.F90
M       hydro/Routing/CMakeLists.txt
A       hydro/Routing/Diversions/CMakeLists.txt
A       hydro/Routing/Diversions/Makefile
A       hydro/Routing/Diversions/module_diversions.F90
A       hydro/Routing/Diversions/module_diversions_timeslice.F90
M       hydro/Routing/Makefile
M       hydro/Routing/module_channel_routing.F90
M       hydro/arc/Makefile.mpp
D       hydro/arc/Makefile.seq
M       hydro/arc/macros.mpp.cray_fortran
M       hydro/arc/macros.mpp.gfort
M       hydro/arc/macros.mpp.ifort
D       hydro/arc/macros.mpp.ifort.luna
D       hydro/arc/macros.mpp.ifort.summit_has
D       hydro/arc/macros.mpp.ifort.theia
M       hydro/arc/macros.mpp.linux
D       hydro/arc/macros.seq.IBM.xlf90_r
D       hydro/arc/macros.seq.gfort
D       hydro/arc/macros.seq.ifort
D       hydro/arc/macros.seq.linux
D       hydro/arc/macros.theia.debug
D       hydro/arc/macros.yellowstone
D       hydro/arc/macros.yellowstone.debug
M       hydro/configure
M       hydro/nudging/CMakeLists.txt
A       hydro/nudging/io/CMakeLists.txt
R098    hydro/nudging/module_nudging_io.F90     hydro/nudging/io/module_nudging_io.F90
M       hydro/utils/CMakeLists.txt
A       hydro/utils/fortglob/CMakeLists.txt
A       hydro/utils/fortglob/Makefile
A       hydro/utils/fortglob/fortglob.F90
A       hydro/utils/fortglob/libfortglob.c
A       hydro/utils/fortglob/libfortglob.h
```

TESTS CONDUCTED: **NOTE THAT THE PR IS IN DRAFT UNTIL TESTING IS
COMPLETE**. Current building and running
1. [WRF-Hydro Front Range, CO
testcase](https://wrf-hydro.readthedocs.io/en/latest/appendices.html#a2-coupled-wrf-wrf-hydro-test-case-user-guide)
2. Testing multiple configurations of Make and CMake build systems 

RELEASE NOTE: Hydro bug fixes plus modifications to add initial support
for gage-assisted diversions in channel routing, which requires a new
optional Diversion netCDF parameter file. This adds a C compiler
dependency

---------

Co-authored-by: Ryan Cabell <rcabell@users.noreply.github.com>
Co-authored-by: Andrew Song <andrewsoong@users.noreply.github.com>
…#2242)

TYPE: bug fix 

KEYWORDS: fitch, wind farm parameterization, turbine, wind farm, wind energy

SOURCE: Balthazar Sengers, Fraunhofer IWES, Germany

DESCRIPTION OF CHANGES:
Problem:
1. In the standard Fitch wind farm parameterization, the local (grid cell) wind speed is used to calculate power and thrust. This wind speed is however reduced because of induction. Power and thrust curves (look-up tables) are determined using free inflow wind speed.
2. The turbine thrust is a relevant metric that is not outputted. 

Solution:
1. The axial induction factor is calculated and used to correct the local (grid cell) wind speed back to the free inflow wind speed. This is done in 2 iterations. Code becomes an additional option for 'windfarm_opt=1' called windfarm_induction = 1 (default on) where 0 is old version.
2. The turbine thrust is calculated and passed through so it can be outputted now.

LIST OF MODIFIED FILES: 
M   Registry/Registry.EM_COMMON
M   dyn_em/module_first_rk_step_part1.F
M   phys/module_pbl_driver.F
M   phys/module_wind_fitch.F
A    doc/licenses/fraunhofer_license.txt

TESTS CONDUCTED: 
1. Yes, demonstrated in paper: https://doi.org/10.5194/wes-9-1689-2024
2. The regression tests have passed.

RELEASE NOTE: 
This PR corrects local (grid cell) wind speed to free wind speed using axial induction correction proposed by Vollmer et al. (2024) https://doi.org/10.5194/wes-9-1689-2024 in Fitch wind farm parameterization. The fix can be turned off by using windfarm_induction = 0.

---------

Co-authored-by: sengers <sengers@ID7065.iwes.fraunhofer.de>
Co-authored-by: Balthazar Arnoldus Maria Sengers <lueb4688@hpcl002.cm.cluster>
… Canopy Model (wrf-model#2272)

**TYPE:** new feature

**KEYWORDS:** urban canopy models, urban trees, nature-based solutions, urban grass, urban hydrology, radiative view factors

**SOURCE:** Yuqi Huang (University of Oklahoma), Chenghao Wang (University of Oklahoma), Cenlin He (NCAR)

**DESCRIPTION OF CHANGES:**
_Problem:_ The current WRF-urban modeling system employs a single-layer urban canopy model (SLUCM) that assumes a dry street canyon. While a green roof module exists, ground vegetation and street trees are not represented. As a result, key nature-based solution (NbS) processes such as evapotranspiration, radiative shading, and soil–vegetation–atmosphere interactions are not captured. In addition, radiative exchanges involving trees are not explicitly resolved. A version of the urban tree module within SLUCM was developed and tested for the contiguous U.S. but only accounted for shading in a simplified way:
- Wang, C., Wang, Z. H., & Yang, J. (2018). Cooling effect of urban
trees on the built environment of contiguous United States. Earth's
Future, 6(8), 1066–1081. https://doi.org/10.1029/2018EF000891

_Solution:_
This PR introduces urban ground vegetation and street trees into the single-layer urban canopy model. Round-shaped urban trees are explicitly represented, resolving evapotranspiration, shading, and root water uptake. Radiative exchanges between trees and surrounding urban elements are solved using newly implemented analytical view factors. The development is largely based on the Arizona State University Single-Layer Urban Canopy Model (ASLUM v3.1) and its hydrologically enhanced version, ASLUM-Hydro, and extends their capabilities within the WRF-Urban framework. See the following two papers for ASLUM v3.1 and ASLUM-Hydro:
- Wang, C., Wang, Z. H., & Ryu, Y. H. (2021). A single-layer urban canopy model with transmissive radiation exchange between trees and street canyons. Building and Environment, 191, 107593. https://doi.org/10.1016/j.buildenv.2021.107593
- Huang, Y., Wang, C., & Wang, Z. H. (2025). Multi-parameterization of hydrological processes in an urban canopy model. Building and Environment, 113567. https://doi.org/10.1016/j.buildenv.2025.113567

This PR also includes the following fixes: 
1. Shadow option: The default of `SHADOW` was changed to `.true.`. In the previous default setting, street-canyon shadowing was not considered. We can switch this back if you think the default should remain unchanged.
2. Impervious water retention: Minor bug fixes related to water retention depth over impervious surfaces. These only apply when `IMP_SCHEME == 2` (the default in the table is 1).
3. Radiative (green) roof term (`GROPTION = 1`): Changed `RGR = EPSV*(RX-SIG*(TA**4.)/60.)` to `RGR = EPSV*(RX-SIG*(TGRP**4.)/60.)`. This is a bug fix. Note that the default table value for `GROPTION` is 0.

**LIST OF MODIFIED FILES:** 

M     Registry/Registry.EM_COMMON
M     dyn_em/module_first_rk_step_part1.F
M     dyn_em/start_em.F
M     phys/module_physics_init.F
M     phys/module_sf_clm.F
M     phys/module_sf_noahdrv.F
M     phys/module_sf_urban.F
M     phys/module_surface_driver.F
M     run/URBPARM.TBL
M     run/URBPARM_LCZ.TBL
M     run/URBPARM_UZE.TBL
M     wrftladj/module_physics_init_ad.F
M     wrftladj/module_physics_init_tl.F
M     wrftladj/start_em_ad.F
M     wrftladj/start_em_tl.F

**TESTS CONDUCTED:** 
- Successfully tested in offline mode coupled with the HRLDAS system
- Demonstrated systematic performance improvements across 20 global urban sites when evaluated against flux-tower observations from the Urban-PLUMBER project
- Successfully compiled on the NCAR Derecho system
- Short-term online WRF simulations are currently ongoing
- Have passed the regression tests.

**Note:**
Successful compilation requires Noah-MP-related source files that arenot included in WRF v3.7.1, including a modified version of`module_sf_noahmpdrv.F`. These changes will be addressed in a separatePR dedicated to Noah-MP.

**RELEASE NOTE:** 
This PR introduces urban ground vegetation and street trees into the single-layer urban canopy model and it is based on  the following two manuscripts in development:
- Huang, Y., Wang, C., & He, C. Integrating nature-based solutions intothe WRF-urban modeling system. Manuscript in prepration.
- Wang, C., Huang, Y., Miller, D. L., Katz, D., & Ghosh, A. K. Analytical view factors for urban canopy models with trees: model development and case study in New York City. Manuscript in preparation.
TYPE: enhancement

KEYWORDS: Noah-MP, refactored code

SOURCE: Cenlin He (NCAR), Tzu-Shun Lin (NCAR)

DESCRIPTION OF CHANGES:
This PR includes necessary code changes to couple WRF with the latest refactored Noah-MP v5.1.2 via git submodule mechanisms. Compared to Noah-MP v4.7 in WRF v4.7.1, the Noah-MP v5.1.2 has several added new model physics:
1. add new snow compaction scheme (with namelist option control) developed by Abolafia-Rosenzweig et al 2024 (JAMES; https://doi.org/10.1029/2023MS003869) (NCAR/noahmp#174)
2. improved spring wheat parameters developed by Zhang et al 2023 (GMD; https://doi.org/10.5194/gmd-16-3809-2023) (NCAR/noahmp#175)
3. add new wetland scheme (with namelist option control) developed by Zhang et al 2022 (WRR; https://doi.org/10.1029/2021WR030573) (NCAR/noahmp#186)
4. couple SNICAR v3 snow albedo scheme into Noah-MP (with namelist option control) developed by Lin et al 2024 (JHM; https://doi.org/10.1175/JHM-D-24-0082.1) (NCAR/noahmp#187)
5. add new snow cover scheme (with namelist option control) developed by Abolafia-Rosenzweig et al 2025 (JAMES; doi:10.1029/2024MS004704) (NCAR/noahmp#191)

LIST OF MODIFIED FILES: 
M       CMakeLists.txt
M       Makefile
M       Registry/Registry.EM_COMMON
M       Registry/registry.dimspec
M       Registry/registry.noahmp
M       arch/Config.pl
M       chem/depend.chem
M       chem/module_uoc_dust.F
M       clean
M       dyn_em/module_first_rk_step_part1.F
M       dyn_em/start_em.F
M       main/CMakeLists.txt
M       main/depend.common
M       phys/CMakeLists.txt
M       phys/Makefile
M       phys/module_diag_misc.F
M       phys/module_diagnostics_driver.F
M       phys/module_physics_init.F
M       phys/module_sf_clm.F
M       phys/module_surface_driver.F
M       phys/noahmp
M       run/README.namelist
M       run/README.physics_files
M       share/mediation_wrfmain.F
M       share/output_wrf.F
M       test/em_real/CMakeLists.txt
M       test/em_real/examples.namelist

TESTS CONDUCTED: 
- The code compiles successfully on NCAR's HPC (Derecho) using both intel and gfortran/gcc compilers. The test runs are also successful including that with activated MMF groundwater scheme, urban scheme, and different combinations of PBL, microphysics, and surface layer schemes. (tested by Cenlin He and Tzu-Shun Lin from NCAR), and has passed the regression tests.
- Regression tests have passed.

RELEASE NOTE: Coupling with refactored Noah-MP v5.1.2. This new version of NoahMP has a few new options and improvements compared to the previous Noah-MP v4.7 in WRF v4.7.1. See PR for details.

---------

Co-authored-by: Massimo D'isidoro <49653612+massimodisidoro@users.noreply.github.com>
Co-authored-by: dudhia <dudhia@ucar.edu>
Co-authored-by: Yuxuan Xie <77427610+cug-xyx@users.noreply.github.com>
This PR introduces a set of tests that allows replication of the [WRF
Coop
Tests](https://github.com/kkeene44/wrf-coop/blob/update-v16/build.csh)
which are normally run as regression tests for PRs.

TYPE: enhancement

KEYWORDS: testing, cicd, continuous integration

SOURCE: internal

DESCRIPTION OF CHANGES:
Problem:
The current regression tests found in the WRF Coop repository suffer
from a few key design points:
1. located in a separate repository allowing code divergence and extra
maintenance burden
2. confusing layout due to multiple repositories and data file locations
3. test logic obfuscation due to actual code to be executed
auto-generated
4. limited execution tightly coupled to a containerized environment

PR wrf-model#2095 tried to remedy this using `hpc-workflows`, however the
framework likewise suffered from issues:
1. manual unconventional environment management
2. duplication of effort between tests and lack of support for
dependencies between common actions (e.g. re-using builds across
multiple tests)
3. limited support for extensibility outside of argument manipulation

Solution:
This PR does not aim to entirely replace PR wrf-model#2095 (notably the CI/CD
GitHub worklow) and instead leverages this point in PR wrf-model#2095:
> 3. Write CI/CD tests in a simple and generally CI/CD
framework-agnostic method where definitions of these also reside _within
the WRF repo_

These tests follow this same mantra of _"CI/CD framework-agnostic"_ such
that they can more or less be a drop in replacement only for the
`hpc-workflows`-based tests.

The tests will cover the WRF Coop Test Cases (provided is a default
configuration for Derecho):
| Tests  |  |
| ------------- | ------------- |
| em_real  | em_realG  |
| em_realA  | em_realH  |
| em_realB  | em_realI  |
| em_realC  | em_realJ  |
| em_realD  | em_realK  |
| em_realE  | em_realL  |
| em_realF  | various build tests  |


The tests are now written in the [SANE
Workflows](https://github.com/islas/sane_workflows) framework, which
solves most of the issues faced by the other two setups. Data is still
spread across multiple locations, but that is separate from the testing
code.

The structure of the tests is as follows:
```
.sane/                          #< The root directory in WRF where the testing code is kept
└── wrf                         #< A subfolder to make all python-imports look like `import wrf`
    ├── custom_actions
    │   └── run_wrf.py          #< A module that has our custom reusable classes to setup initial conditions and model runs
    ├── hosts
    │   ├── derecho_envs.jsonc  #< The environments that derecho.jsonc has
    │   └── derecho.jsonc       #< Definition of derecho HPC system for this framework
    ├── scripts                 #< A subfolder to house all our shell helper scripts that do the bulk of the work
    │   ├── buildCMake.sh
    │   ├── buildMake.sh
    │   ├── compare_wrf.sh      #< Use diffwrf to compare two runs
    │   ├── run_init.sh         #< Configurable to run initial conditions (em_real.exe or ideal.exe)
    │   ├── run_wrf_restart.sh  #< Runs wrf.exe again in previous run folder and compares history
    │   └── run_wrf.sh          #< Runs wrf.exe
    └── tests                   #< Where our tests live
        ├── builds
        │   └── builds.py       #< Python module that sets up ALL our compilation tests (make + cmake)
        └── regtests
            └── wrf_coop.py     #< Python module that sets up the WRF Coop em_real* tests
```
Documentation for this new framework can be found at:
https://sane-workflows.readthedocs.io/en/latest/

One could run these tests on Derecho using the following commands
(inside a WRF repo clone):
```bash
python3 -m venv .venv/wrf_testing
source .venv/wrf_testing/bin/activate
python3 -m pip install --pre sane-workflows
# Runs the em_real test case
sane_runner --path .sane/ --actions em_real --run
```
TYPE: enhancement

KEYWORDS: cmake, pnetcdf

SOURCE: internal

DESCRIPTION OF CHANGES:
Problem:
The CMake build does not support PnetCDF detection and thus the
`external/io_pnetcdf/` code cannot be built.

Solution:
Write a FindPnetCDF.cmake package that provides the appropriate imported
target to link against and does precursory library matching if there is
a dependency on netCDF C. Update the cmake code in
`external/io_pnetcdf/` to build, with minor adjustments that make the
CMake and Make builds compatible.

The package uses the same rules of the netCDF packages, utilizing
`pnetcdf-config` in the `PATH` as the source of information, or
otherwise found via standard `find_package()` mechanics, e.g.
`PnetCDF_ROOT`.

TESTS CONDUCTED: 
1. Tested CMake and Make builds with PnetCDF in environment on local
machine and Derecho.

RELEASE NOTE: CMake PnetCDF Find Package
TYPE: new feature

KEYWORDS: submodule, cumulus, parameterization, scale-aware, aerosol-aware

SOURCE: Haiqin Li (Haiqin.Li@noaa.gov, CIRES/CU Boulder at NOAA/GSL)

DESCRIPTION OF CHANGES: The Grell-Freitas (GF) cumulus convection is replaced with the Grell-Freitas-Li (GFL) submodule, which is consistent in WRF, MPAS and CCPP. It will be easy to access the GFL updates via the hash pointer of submodule.

LIST OF MODIFIED FILES: 
M     .gitmodules
M     Registry/Registry.EM_COMMON
M     dyn_em/module_big_step_utilities_em.F
M     dyn_em/module_convtrans_prep.F
M     dyn_em/module_em.F
M     phys/Makefile
M     phys/module_cumulus_driver.F
M     phys/module_lightning_driver.F
M     phys/module_physics_addtendc.F
M     phys/module_physics_init.F
M     share/module_check_a_mundo.F
M     wrftladj/module_cumulus_driver_ad.F
M     wrftladj/module_cumulus_driver_tl.F
D      module_cu_gf_ctrans.F
D      module_cu_gf_deep.F
D      module_cu_gf_sh.F
D      module_cu_gf_wrfdrv.F
M   chem/chem_driver.F
M    chem/KPP/compile_wkc

TESTS CONDUCTED: 
1. It was tested with a NWP case and a WRF_Chem case.
2. It passed regression tests.

RELEASE NOTE: The Grell–Freitas (GF) cumulus convection scheme has been further developed as the Grell–Freitas–Li (GFL) submodule, which is implemented consistently across WRF, MPAS, and CCPP. Major updates
include improved aerosol–convection interactions, several simplified approaches for cold-pool parameterization, and a new scale-awareness feature with subsidence spreading.

References:
Li, H., G. Grell, and Freitas, S. (2026): Aerosol-dependence of cumulus convection in the United Forecast System (UFS) Weather Model, to be submitted.

Grell, G., S., Freitas, and Li, H. (2026): A New Scale Aware Technique for Convective Parameterizations, to be submitted.

---------

Co-authored-by: weiwangncar <weiwang@ucar.edu>
Enhance model output to include CORDEX output demands and new potential
useful diagnostics

TYPE: new feature

KEYWORDS: CORDEX, diagnostics, post-process, impact studies, scheme free
diagnostics

SOURCE: Lluís Fita Centro de Investigaciones del Mar y la Atmósfera
(CIMA), IRL IFAECI UBA-CONICET-CNRS-IRD, Argentina

DESCRIPTION OF CHANGES:
Problem:
The CORDEX-WRF module was initially dedicated to provide the outputs
[requested](https://github.com/WCRP-CORDEX/data-request-table) in any
[CORDEX](https://cordex.org/) exercise. This tends to be a tedious
post-processing work, in sometimes is as long as the simulation by it
self. the goal is to provide the diagnostics whilst the integration of
the simulation. Enormously reducing the need for post-processing by
increasing a little the integration time of the model.

Solution:
A new module has been created which adds about 150 new diagnostics to
the model output.
Aside to provide an answer to an specific climate related demand from
the CORDEX WRF community, it grew fast to provide:
- Additional non-specific CORDEX diagnostics
- Generic definitions of certain diagnostics that might be scheme
dependent
- Introduction of additional variables in the integration-time p-level
vertical interpolation

ISSUE: For use when this PR closes an issue.
Fixes wrf-model#2243 

LIST OF MODIFIED FILES: list of changed files (use `git diff
--name-status master` to get formatted list)
```
A       README.cordex
M       README.md
M       Registry/Registry.EM_COMMON
M       Registry/Registry.EM_COMMON.var
A       Registry/registry.cordex
M       Registry/registry.diags
M       Registry/registry.em_shared_collection
M       dyn_em/solve_em.F
M       dyn_em/start_em.F
M       frame/module_driver_constants.F
M       main/depend.common
M       phys/Makefile
A       phys/module_diag_cordex.F
M       phys/module_diag_pld.F
M       phys/module_diagnostics_driver.F
A       phys/module_diagvar_cordex.F
M       phys/module_physics_init.F
```

TESTS CONDUCTED: 
1. Do mods fix problem? How can that be demonstrated, and was that test
conducted?
2. Are the Jenkins tests all passing?
Independent tests have been performed aimed to show the correct
performance of the module

RELEASE NOTE: 
First version (v1.3) of the module was accompanied by an article in GMD:
Lluís Fita, Jan Polcher, Theodore M. Giannaros, Torge Lorenz, Josipa
Milovac, Giannis Sofiadis, Eleni Katragkou and Sophie Bastin, 2019:
CORDEX-WRF v1.3: development of a module for the Weather Research and
Forecasting (WRF) model to support the CORDEX community, Geosci. Model
Dev., 12, 1029-1066, 2019, doi
[10.5194/gmd-12-1029-2019](https://www.geosci-model-dev.net/12/1029/2019/gmd-12-1029-2019.html)

Current version of the module is v.3 and it provides about 150 new
diagnostics a new section in the `namelist.input` labelled `&cdxwrf`
with new parameters. Outputs are grouped in 3 files:
- `wrfcdx_d<domain>_<date>`: main output file at `auxhist19` with most
of the variables
- `wrfhfcdx_d<domain>_<date>`: high-frequency (e,g, 10 minutes) output
file at `auxhist18` only for `RAIN` and `COLMAX` implemented to assist
the tracking convective systems
- `wrfpress_d<domain>_<date>`: p-level interpolated variables at
`auxhist23` with the additional variables

You can find more details in the [CDXWRF
WIKI](https://wiki.cima.fcen.uba.ar/mediawiki/index.php/CDXWRF)

This work was made possible by the participation of the co-authors of
the article, talks with a lot of different researchers from a lot of
different countries and even other sciences. Thanks to all of them
TYPE: new feature

KEYWORDS: dynamic lightning, cloud-to-ground-Lightning, Intracloud
Lightning

SOURCE: [Barry.H.Lynn@gmail.com](mailto:Barry.H.Lynn@gmail.com);
[Barry.Lynn@Weather-It-Is.com](mailto:Barry.Lynn@Weather-It-Is.com)
(Weather It Is, LTD and Hebrew University of Jerusalem), internal

DESCRIPTION OF THE SCHEME:
A new dynamic lightning scheme is added. The scheme of *Lynn et al.
(2012)* is a *prognostic lightning parameterization*, though it is *not*
an explicit microphysical charging–discharge scheme. Rather than
predicting electric charge or electric fields directly, the scheme
predicts the temporal evolution of a bulk *potential electric energy*
associated with deep convection.

The prognostic variable evolves from time step to time step and is
driven by measures of convective intensity, primarily the vertical
velocity and the mass content of key hydrometeors. Lightning discharges
are triggered diagnostically when the accumulated potential electric
energy exceeds prescribed threshold values, representing the onset of
electrical breakdown. Following discharge, the potential energy is
reduced, allowing subsequent recharge as convection continues.

The DLS includes a simple scale-aware formulation that adjusts charging
intensity relative to the original 4 km configuration.

To run the Dynamic Lightning Scheme add these parameters to the physics
section of namelist.input

```
dyn_lightning_option = 1, 1, 1,
coul_pos = 0.000035, 0.000035,0.000035,
coul_neg = 0.000035, 0.000035,0.000035,
coul_neu = 0.000035, 0.000035,0.000035,
```

These are charging coefficients are set for
`mp_physics = 28, 28, 28,`
and can be modified for other microphysical schemes, if needed. For
instance, if a scheme does not produce very much cloud water, these
values might need to be raised.

One could also modify, j_pos, j_neg, and j_neu, which are threshold
values for the breakdown field that control what magnitude of "electric
potential energy" must build up to produce an event for each (see
Registry/registry.dyn_light). But, this is not recommended as a first
step.

References

Lynn, B. H., Yair, Y., Price, C., Kelman, G., & Clark, A. J. (2012).
Predicting cloud-to-ground and intracloud lightning in weather forecast
models. Weather and Forecasting, 27, 1470–1488.
https://doi.org/10.1175/WAF-D-11-00144.1

Lynn, B. H., Kelman, G., & Ellrod, G. (2015). An evaluation of the
efficacy of using observed lightning to improve convective lightning
forecasts. Weather and Forecasting, 30, 405–423.
https://doi.org/10.1175/WAF-D-13-00028.1

Lynn, B. H., Yair, Y., Shpund, J., Levi, Y., Qie, X., & Khain, A.
(2020). Using factor separation to elucidate the respective
contributions of desert dust and urban pollution to the 4 January 2020
Tel Aviv lightning and flash flood disaster. Journal of Geophysical
Research: Atmospheres, 125, e2020JD033520.
https://doi.org/10.1029/2020JD033520

Federico, S., Torcasio, R. C., Lagasio, M., Lynn, B. H., Puca, S., &
Dietrich, S. (2022). A Year-Long Total Lightning Forecast over Italy
with a Dynamic Lightning Scheme and WRF. Remote Sensing, 14, 3244.
https://doi.org/10.3390/rs14143244

Federico, S., Torcasio, R. C., Popova, J., Sokol, Z., Pop, L., Lagasio,
M., Lynn, B. H., Puca, S., & Dietrich, S. (2024). Improving the
lightning forecast with the WRF model and lightning data assimilation:
Results of a two-seasons numerical experiment over Italy. Atmospheric
Research, 304, 107382. https://doi.org/10.1016/j.atmosres.2024.107382

LIST OF MODIFIED FILES: list of changed files (use `git diff
--name-status master` to get formatted list)

A       Registry/registry.dyn_light
M       Registry/registry.em_shared_collection
M       dyn_em/solve_em.F
M       phys/Makefile
M       phys/module_microphysics_driver.F
A       phys/module_calc_lpi_new.F
A       phys/module_ltng_pe.F
A       phys/module_ltng_strokes.F
M      run/README.namelist

TESTS CONDUCTED: 
The Jenkins tests are all passing.

RELEASE NOTE: A new dynamic lightning scheme is added. The scheme of
Lynn et al. (2012) is a prognostic lightning parameterization and it
predicts the temporal evolution of a bulk potential electric energy
associated with deep convection. Activated by dyn_lightning_option = 1.
The DLS includes a simple scale-aware formulation that adjusts charging
intensity relative to the original 4 km configuration.
islas and others added 17 commits February 24, 2026 14:05
TYPE: new feature

KEYWORDS: Community Fire Behavior Model, CFBM, fire behavior, fire
atmosphere coupling

SOURCE: Pedro A. Jimenez and Masih Eghdami

DESCRIPTION OF CHANGES:
A new fire behavior model, the Community Fire Behavior Model (CFBM,
https://gmd.copernicus.org/preprints/gmd-2024-124/gmd-2024-124.pdf) is
added.

The model runs with MPI compilation, just one mpi task for the moment,
and also in hybrid compilation MPI+OpenMP (only one MPI task for the
moment).

To compile the model with the CFBM enabled compile with CMake
(`./configure_new`) and use `-DENABLE_CFBM=ON` as part of the cmake
forwarded options or go through the prompts of `./configure_new` and
select `ENABLE_CFBM`.

TESTS CONDUCTED:
1. CFBM was compared with the existing fire behavior modeling producing
similar results when models are configured in a similar manner. Bit for
bit results when changing the number of OpenMP threads.

RELEASE NOTE: Coupling the Community Fire Behavior model (Jimenez y
Munot et al., 2024):
https://gmd.copernicus.org/preprints/gmd-2024-124/gmd-2024-124.pdf
)

TYPE: bugfix

KEYWORDS: uninitialized

SOURCE: internal

DESCRIPTION OF CHANGES:
Problem:
The domain type `fieldlist` is a derived type used to store state vars
within the `grid`. Thus, this type facilitates many of the read, write,
and general control of state variables defined within the registry.

Throughout the code, character fields such as `MemoryOrder` are accessed
and read to determine branching logic for how a particular state var
should be handled. Not all fields are required to be defined within the
registry, and this leads to uninitialized values within a newly created
instance of `fieldlist`.

Solution:
Rather than correcting the registry generated code that assigns state
vars, a better solution is to fix the upstream type definition to always
start with initialized default vales.

This fixes sporadic undefined behavior arising from accessing these
fields, sometimes resulting in total model crash or indefinite hangs as
MPI synchronization calls take different branching logic.
TYPE: bugfix

KEYWORDS: build, make, cmake

SOURCE: internal

DESCRIPTION OF CHANGES:
Problem:
PR wrf-model#2269 introduced the GFL submodule replacing the older GF
implementation. In doing so, the related files' dependencies and
additions to both builds was not done completely.

Solution:
Add object dependencies for make build. Remove old file reference and
update with new files in cmake build.
TYPE: bugfix

KEYWORDS: cmake

SOURCE: internal

DESCRIPTION OF CHANGES:
Problem:
PR wrf-model#2277 added a new submodule and referenced new files, but the files
were not properly added to the CMake build.

Solution:
Fix the CMake build issue caused by missing files introduced in PR wrf-model#2277
Bug fixes for PR wrf-model#2242

TYPE: bug fix

KEYWORDS: wind, fitch

SOURCE: Balthazar Sengers, Fraunhofer IWES, Germany

DESCRIPTION OF CHANGES:
Changes made:
- removed 3 lines of code in the original Fitch WFP that actually were
part of the new correction
- added better first estimate for the axial induction factor; one that
corrects for the grid size
- added some comments for clarifications
Certain parts of the code were not properly clearing data handles stored
in `grid` variable, and this change makes any call to `close_dataset`
always clear the value.

TYPE: bug fix

KEYWORDS: io, data_handle

DESCRIPTION OF CHANGES:
Problem:
As the code is written right now, responsibility of tracking of data
handles is spread across the code base:
* module_io.F handles the global list and what is available
* autogenerated code clears grid % *_oid values
* written code must also manage clearing old oid values
* and so on...

For example, this issue is made evident when using the subroutine
`med_read_qna_emissions()` which does not appropriately clear the grid %
auxinput17_oid. While this may be seen as an issue with this specific
code segment, the design of IO data handle management has lead to easily
mismanaged data handles being kept around after freeing.

Solution:
While a full code refactor of all occurrences of clearing data handles
would be ideal, the simplest and most concise fix is to have the
`free_handle` subroutine clear the data handle each time it is called.
This resolves the bug and DOES NOT (or rather should not) affect the
code in any negative way. As any call to `free_handle` effectively
relinquishes ownership of that data handle it should ALWAYS be assumed
that the data handle passed in *can* and *should* be cleared, even if
subsequently reacquired as that would potentially acquire a different
data handle.

TESTS CONDUCTED: 
1. Verified reproducible error that revealed this issue to be resolved
when implementing these changes
Updating the pointer to MYNN-EDMF submodule

TYPE: bug fix

KEYWORDS: MYNN-EDMF downdraft

SOURCE: Joseph Olson

DESCRIPTION OF CHANGES:
Problem:
Two bugs were found by the new automated CI testing
One update to the mixing of anthropogenic aerosols was made recently.

Solution:
Update the pointer to the top of the MYNN-EDMF repository to bring in
the fixes/modifications

LIST OF MODIFIED FILES: list of changed files (use `git diff
--name-status develop` to get formatted list)
M       phys/MYNN-EDMF

TESTS CONDUCTED: 
1. Do mods fix problem? Yes
2. Are the Jenkins tests all passing?
TYPE: new feature

KEYWORDS: surface layer, turbulent form drag

SOURCE: Songyou Hong

DESCRIPTION OF CHANGES:
Turbulent form drag (TOFD) was added in computing surface drag
(kim_tofd=.true., default). A factor for TOFD was added
(tofd_factor=.003, default).

LIST OF MODIFIED FILES:
 	M   arch/Externals.cfg
 	M   dyn_em/module_first_rk_step_part1.F
 	M   phys/module_sf_sfclayrev.F
 	M   phys/module_surface_driver.F

TESTS CONDUCTED: 
The Jenkins tests are all passing.

RELEASE NOTE: This PR adds a scale-aware turbulent orographic form drag
option (kim_tofd) in revised MM5 surface layer scheme. The default value
for the option is on and it would increase surface drag. Use this new
option with care.
The purpose for this PR is to update the refactored MYNN surface layer
scheme, which has now been more fully debugged and has been tested in
both WRF and MPAS.

TYPE: enhancement

KEYWORDS: MYNN-SFC version 6.0.0 refactored HRRR

SOURCE: Joseph B. Olson

DESCRIPTION OF CHANGES:
The Main Problem:
This scheme was refactored starting from the CCPP version, which has a
few distinctions from WRF/MPAS that required further work to fully
integrate into both WRF and MPAS.

Solutions:

1. Corrected the conversions of mixing ratio/specific humidity.
2. added output of variables qgh and cqs, which are needed in some mode
frameworks for some configurations
3. Some tuning was done for sf_mynn_sfcflux_land = 1 to work better when
initializing off of RAP/HRRR/RRFS and using RUC LSM. If using Noah LSM,
it will default to the Chen et al. (variable Czil) approach.
4. Added the infrastructure for bathymetry-dependent z0, which is
expected to be compared with other approaches (possibly from WFIP3 data)
and possibly tweaked in the near future.
5. Added automated CI testing in "MYNN-SFC/tests", which further help
check for code errors for every PR to the MYNN-SFC repository. This
helped find a few bugs in relatively unused configurations.


LIST OF MODIFIED FILES: list of changed files (use `git diff
--name-status master` to get formatted list)
M       phys/MYNN-SFC
M       phys/module_surface_driver.F

TESTS CONDUCTED: 
1. Do mods fix problem? Yes, case study testing with debug flags active.
2. Are the Jenkins tests all passing?
TYPE: bugfix

KEYWORDS: syntax

SOURCE: internal

DESCRIPTION OF CHANGES:
Problem:
PR wrf-model#2272 adds invalid Fortran syntax

Solution:
Resolve syntax issue
TYPE: bugfix

KEYWORDS: cmake

SOURCE: internal

DESCRIPTION OF CHANGES:
Problem:
New files were added with PR wrf-model#2270, but were not added to the CMake
build

Solution:
Fix the CMake build issue caused by PR wrf-model#2270
TYPE: enhancement

KEYWORDS: orographic drag

SOURCE: Songyou Hong (NCAR)

DESCRIPTION OF CHANGES:
YSU GWDO was revised following the study of Hong et al. (2025, WAF), now
is called as Korean Integrated Model (KIM) GWDO. KIM GWDO requires
additional maximum orography file, "ELVMAX" in WPS. Non-hydrostatic
effect of Xu et al. (2024, JAS) was also added (gwd_if_nonhyd=.true.,
default). Factor for the effective grid spacing was added
(gwd_dx_factor=2.0, default).

LIST OF MODIFIED FILES: 
 	m   Registry/Registry.EM_COMMON
 	m   arch/Externals.cfg
 	m   dyn_em/module_first_rk_step_part1.F
 	m   phys/module_bl_gwdo.F
 	m   phys/module_pbl_driver.F

TESTS CONDUCTED: 
1. Tested in MPAS.
2. The Jenkins tests are all passing.

RELEASE NOTE: Orographic gravity drag option gwd_opt = 1 is updated in
this PR. Other added options are gwd_dx_factor = 2 (effective grid size)
and gwd_if_nonhyd = .true. (nonhydrostatic effect option). Requires the
use of updated WPS.
Modification from tempo v3.0.0 to v3.0.4 (that pertain to WRF)

TYPE: enhancement

KEYWORDS: tempo

SOURCE: Anders Jensen NOAA/GSL

DESCRIPTION OF CHANGES:
Bugfixes:
- Bug fix for initialization of precipitation diagnostic

Modifications (mostly for speedup and better memory useage)
- global dt variable was removed and replaced with local variables to
prevent parallel compute issues
- 3D diagnostics data type was changed to `intent(inout)` from
`intent(out)` to reduce the number of calls to `allocate`
- microphysical process tendencies data type was changed from
allocatable to a pointer contiguous in memory for better memory handling
and efficiency

ISSUE:
Related to PR wrf-model#2270
TYPE: bug fix

KEYWORDS: em_tropical_cyclone, halo depth

SOURCE: Wen-Pu Ho (National Central University, Taiwan)

DESCRIPTION OF CHANGES:
Problem:
Some loops were hardcoded to start from index 1. This fails to properly
account for the ghost cells required in decomposed sub-domains, leading
to segmentation fault when running ideal.exe for the em_tropical_cyclone
case in MPI (parallel) environment.

Solution:
Fix hardcoded loop indices for proper handling in MPI-decomposed
domains, and broadcast base state variables with MPI function.

ISSUE:
Fixes wrf-model#2294 

LIST OF MODIFIED FILES:
dyn_em/module_initialize_tropical_cyclone.F

TESTS CONDUCTED: 
Tested with idealized TC initialization using MPI processes.

RELEASE NOTE: This PR fixed an issue with not being able to execute
idealized initialization program of tropical cyclone case with MPI.
…nanjiang) (wrf-model#2289)

TYPE: text only

KEYWORDS: WRF, NOAH-MP, Xinanjiang scheme

SOURCE: Haiqing SONG (宋海清) Ecological and Agricultural Meteorology
Center of Inner Mongolia &
Inner Mongolia Meteorological Satellite Remote Sensing Center, China

DESCRIPTION OF CHANGES:
Update the typo in Registry.EM_COMMON and README.namelist (Xiananjiang
to Xinanjiang)

LIST OF MODIFIED FILES: list of changed files (use git diff
--name-status master to get formatted list)
M run/README.namelist
M Registry/Registry.EM_COMMON
This PR fixes a crash when TEMPO is run in combination with aer_opt=3

TYPE: bug fix

KEYWORDS: TEMPO, aer_opt=3

SOURCE: Joseph Olson (NOAA-GSL)

DESCRIPTION OF CHANGES:
Problem:
Model crashes because two arrays are left unallocated

Solution:

1. Include taod5503d and taod5502d in the tempo_aerosolaware package
2. Add a safety check in module_check_a_mundo.F to guard against
misconfigurations

LIST OF MODIFIED FILES: list of changed files (use `git diff
--name-status develop` to get formatted list)
M       Registry/Registry.EM_COMMON
M       share/module_check_a_mundo.F

TESTS CONDUCTED: 
1. Do mods fix problem? Yes. Testing in single case study.
2. Are the Jenkins tests all passing?
TYPE: enhancement

KEYWORDS: Shin-Hong, YSU, top-down mixing, shared MMM-physics

SOURCE: Songyou Hong

DESCRIPTION OF CHANGES:
SHINHONG PBL occasionally would fail in global models. This PR includes
the following changes:
1. Entrainment ratio and depth at the PBL top were reformulated. 
2. Topdown mixing and building canopy moduels in the YSU PBL were
revised and incorporated into revised the SHINHONG scheme.
3. In the revised scheme, one can select nonlocal mixing flux term:
either counter-gradient (YSU type) or eddy-mass flux (SHINHONG type). In
the namelist,
- shinhong_nonlocal_flux=.true., default for YSU nonlocal flux, .true.
for SHINHONG nonlocal flux
- shinhong_scu_mixng = .false., default, for stratocumulus downward
mixing (revised TOPDOWN mixing in the YSU scheme
- shinhong_ke_dissipation=.false., defalult, for additional heating due
to kinetic turbulent mixing

The new Shin-Hong PBL is now merged with YSU PBL via a namelist switch
and moved to shared MMM-physics repository.

LIST OF MODIFIED FILES: 
 	m   Registry/Registry.EM_COMMON
 	m   arch/Externals.cfg
        m   .gitmodules
 	m   dyn_em/module_first_rk_step_part1.F
 	m   main/depend.common
 	m   phys/Makefile
 	m   phys/module_bl_shinhong.F
 	m   phys/module_pbl_driver.F
 	m   phys/module_physics_init.F

TESTS CONDUCTED: 
Regression tests have passed.

RELEASE NOTE: New version of Shin-Hong PBL that combines YSU scheme
replaces bl_pbl_physics =11. Other new options are: shinhong_scu_mixing
(top-down mixing, default off), shinhong_nonlocal_flux (gamma (f) or
mass flux (t), default on), shinhong_ke_dissipation (tke dissipation
heating, default off). The code is moved to shared MMM-physics
repository, and available in phys/physics_mmm after compilation.
@prabhakar1508 prabhakar1508 requested review from a team as code owners May 27, 2026 08:23
@dudhia
Copy link
Copy Markdown
Collaborator

dudhia commented May 27, 2026

This should be routed to the develop branch, but also the number of files changed may indicate you did not start with a clean version of our repository. The files changed should be only the few you changed. We can't review it until this is fixed.

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.