Skip to content

Commit eeacb82

Browse files
authored
Release v4.7.0 (#2212)
# WRF Version v4.7.0 The WRF model has been update to Version v4.7.0 on April 25, 2025 __Acknowledgements__: We would like to thank * Adam Dury (WeatherQuest) * Andrea Zonato, Royal Netherlands Meteorological Institute (KNMI) * Benjamin Kirk & Negin Sobhani (NSF NCAR / CISL) * Cenlin He @cenlinhe and Tzu-Shun Lin (NCAR) * Charlie Li, software developer from lakes environmental, Canada * Jakub Lewandowski (University of Leeds) * James Ruppert (University of Oklahoma) * Joseph Olson (NOAA/GSL) * Alexander Ukhov (KAUST) * L. Fita (UBA/CIMA/IFAECI) * Lukas Pilz (Heidelberg University) * Martilli, Alberto (CIEMAT) * Mathieu Landreau (Centrale Nantes) * Robert Conrick (U. of Washington); [email protected] * Robert Gilliam & Jon Pleim, US EPA * Sergey Osipov (KAUST) * Tanya Spero (U.S. EPA) * Ted Mansell (NOAA/NSSL) (@MicroTed ) for their contributions to this release. ## Physics * Fix an error associated with using LCZ categories in NoahMP. Prior to this fix, the LCZs were not correctly referenced, hence ignored in the NoahMP code. (#2202) [Details](a176a5965) * NSSL-mp bug fix for (obsolete) droplet nucleation (#2195) [Details](30c03dc40) * NSSL microphysics scheme updates include 1. An explicit rain breakup for 3-moment rain (addresses issue of cold pools being too warm and drops being too large in rain cores), 2. Improved reflectivity conservation for graupel->hail conversion and drop freezing, 3. More accurate saturation mixing ratio calculation, 4. New default droplet nucleation that controls excess supersaturation much better than previously (and default is to always predict the number of activated CCN). The update has been submitted to CCPP repository as well. (#2170) [Details](9d763af90) * An new microphysics, UFS Double Moment (UDM), 7-class microphysics from Songyou Hong is added (mp_physics=27). UDM mp largely adopts microphysical processes in WDM7, but with bug fixes or revisions based on literature and accumulated realism. UDM mp utilizes the in-cloud microphysics concept (Kim and Hong 2018), with the addition of water-friendly aerosols for CCN initialization. Semi-lagrangian sedimentation of Juang and Hong (2010) is also re-configured for computational efficiency and numerical accuracy. All production terms are optimized by introducing a cloud-top definition for hydrometeors. (#2147) [Details](5fc76c540) * Release of the RCON Microphysics package into WRF, which improves upon the warm rain representation of the Thompson-Eidhammer scheme. RCON is based heavily on the Thompson-Eidhammer scheme with a couple significant changes that improve upon the code in module_mp_rcon.F to generate more realistic rainfall during warm rain events with additional benefits for cold rain, especially warm processes during cold rain events. Among the most significant changes for rain productions are 1) the use of a wider cloud water DSD of lognormal shape instead of the gamma DSD used by the Thompson-Eidhammer parameterization and 2) enhancement of the cloud-to-rain autoconversion parameterization to accommodate the new shape. The changes here also allow for sedimentation of cloud water within the lowest model layer, which effectively creates a drizzle mode in the scheme. Accompanying published reference: Conrick, R., C. F. Mass, and L. McMurdie, 2023: Improving Simulations of Warm Rain in a Bulk Microphysics Scheme. Mon. Wea. Rev., 152, 169-185, https://doi.org/10.1175/MWR-D-23-0035.1. (#2144) [Details](de213c920) * Fix an erroneous print for using ghg_input when no radiation option is selected, mostly from idealized cases. (#2199) [Details](bd4ecbe01) * Fix a loop index error in bep_bem urban code. (#2196) [Details](0171299d3) * Noah-MP bug fixes for (1) allowing BATS snow albedo scheme for nighttime snow aging, (2) the potential leakage caused by calculate_soil variable during parallelized run, (3) the missing of HCPCT output for glacier points. (#2160) [Details](fd079bf48) * The similarity stability functions phim and phieps, necessary for calculating the surface values of tke and dissipation rate in the tke-epsilon-tpe PBL scheme [Zonato et al., 2022](https://doi.org/10.1175/MWR-D-21-0299.1) have been updated considering the correction term accounting for the roughness length z0. No relevant differences are found in temperature, wind speed, and humidity. Regarding turbulence variables, the stable case has just negligible differences, while the unstable case shows higher values of TKE and dissipation rate and lower values of temperature variance. (#2120) [Details](70855a73e) * Pleim-Xiu LSM is now compatible with 61 category MODIS LCZ landuse dataset. A mode of latent heat effects on Tg from vegetated parts and from wet leaves is added to Pleim-Xiu LSM. (#2023) [Details](b7f31dcde) ## Software * Determine MPI Data Types in col_on_comm() & dst_on_comm() to prevent displacements overflow. (#2157) [Details](af8101493) * CMake README documentation on <PackageName>_ROOT variables (#2190) [Details](33036d613) * CMake README documentation typo fixes (#2189) [Details](3fd1aefda) * Fix aarch64 GCC build when DM configuration selected (#2192) [Details](8e1d6742c) * Fixed failed compilation with Intel oneAPI by reworking the dependency linking of hydro CMake compilation (#2178) [Details](2e0694f14) * Fix compilation of grib2 IO in make build (#2191) [Details](2639dcd3f) * Fix uncontrollable building of external/io_netcdfpar folder for all stanzas (#2181) [Details](127a8f40a) * Suppress MYNN-EDMF verify checkout command (#2188) [Details](3f2465b41) * Fix typo in confcheck CMakeLists.txt for FSEEKO (#2179) [Details](2572bc5f5) * Add quotes to optimization flags exceptions in CMake (#2180) [Details](b15e341e4) * CMake Chem and Chem+KPP Build (#2018) [Details](b26e64595) * Consistent double precision definitions (#2099) [Details](704259871) * CMake Fix split command flags to be correctly populated (#2108) [Details](5b09725f5) * CMake WRFPLUS (#2089) [Details](695f455e8) * Override CMake-injected optimization flags in favor of the flags set by the build system and provided stanza information. (#2138) [Details](b6542b0f7) * Fixed CMake dev warning `project() should be called prior to this enable_language() call` appearing when using `configure_new` script with some newer versions of Cmake. (#2125) [Details](0ccba14eb) * Add documentation to custom properties in CMake to fix compatibility with older versions. (#2131) [Details](f204246a0) * Remove leading -D on defines during stanza reading to allow older versions of CMake to configure properly. (#2130) [Details](c2e121f56) * Bug fix in CMake FindnetCDF.cmake for empty --has-* nc-config fields (#2135) [Details](f096921b2) * CMake confcheck switch to try_* functions (#2090) [Details](5dd2c192d) * Bug fix in landread.c to address undefined behavior by adding an explicit return statement in `GET_LANDUSE()` function (#2197) [Details](5ef63ba34) * Fix memory leaks related to arrays being allocated without being deallocated in start_em and time series calculation subroutines. (#2139) [Details](94aa27a7e) * Fix an access violation error when a PGI compiler is used with urban variables in module_bl_ysu.F when urban option is turned off and the memories of those arrays are not available. (#2137) [Details](33ce70c0f) * Updated grav_settling code to better recognize the land use type so it doesn't crash. Also update the error message if it does crash to go into the rsl.error files rather than rsl.out files. (#2110) [Details](b3eebb3fe) * Bug fix for wrfinput where LCZ urban cells in LU_INDEX were overwritten with default USGS urban category. (#2153) [Details](d96478d4f) * Add manage_externals tool to access physics modules in MMM-physics git repository. (#2126) [Details](7195dc250) * Submodule implementation of the MYNN-EDMF (https://github.com/NCAR/MYNN-EDMF). The module names changed from *_mynn_* to *_mynnedmf_* to resolve a version conflict in MPAS. This version was originally developed within FV3/CCPP for RRFSv1, but has been refactored (to a k-only scheme) resulting in a speed-up of about 10-15% and it has since been tuned to better perform in MPAS and WRF compared to previous versions which were primarily developed for use in FV3. (#2148) [Details](383476531) * When the namelist option write_hist_at_0h_rst is set to .true. under &time_control, history write-out will now be conducted for the first time step for both the 0th stream (wrfout* files) and any special user-defined streams being implemented. (#2133) [Details](61d1c84cb) ## Dynamics * Corrected algorithms in the tipping bucket for precipitation and in the nudging routines to adjust for imprecision in single-precision real numbers exceeding the resolvable values in long (>23-year) continuous simulations. (#2063) [Details](a32188308) ## Data Assimilation * This PR adds an incremental analysis update capability. In the DA code, code is added to write out analysis increments for all variables in WRF netCDF format using auxiliary history output stream #5. In the model, analysis increments are divided by the number of time steps in a specified time window and added to the model similar to physics tendencies. The input stream for the model is 15. The capability is turned on by adding iau = 1 and iau_time_window_sec in &time_control. The way the increments are added to the model is similar to what described by the paper by Chen et al. (https://doi-org.cuucar.idm.oclc.org/10.1175/WAF-D-22-0127.1). (#2151) [Details](6741f010e) ## Chemistry * Bug fix in the calculation of optical properties. Mass redistribution between GOCART dust/sea salt and MOZAIC bins was corrected. It slightly increased (by 3-5%) the aerosol optical depth (AOD). (#2112) [Details](bb791e73d) * Fix a bug where TUV and FTUV fail to initialize the distance to the Sun properly if the simulation starts on 1 Jan. (#2171) [Details](9aa3979f0) ## Hydro * In `hydro.namelist` adding lake_opt to namelist, reservoirs to own namelist. Support for lakes (reservoirs) in non-UDMP reach-based routing added and some style guide cleanup completed. (#2146) [Details](6d1db68f6) * Hydro reservoir drainage area (DA) lake option bugfix (#2182) [Details](313834d41) ## Miscellaneous * Update README.namelist file (#2193) [Details](7053a6ae9) * A namelist option, default_soiltype, is added to define filled-in land category along water/land boundaries where soil data may be missing in program real. (#2166) [Details](2f68d7b70) * Add dzstretch_u and dzbot in namelist.input. Users are advised to check UG for other parameters to use. (#2165) [Details](89ba5181b) * Noah-MP code tag is updated to corresponding to WRFV4.7 release. (#2207) [Details](f11e38164) * Fixed defs for adap time step namelist vars in README.namelist (#2158) [Details](30a16a1ce)
2 parents b7e1f57 + 37288aa commit eeacb82

File tree

199 files changed

+20540
-22950
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

199 files changed

+20540
-22950
lines changed

.gitmodules

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,6 @@
44
[submodule ".ci/hpc-workflows"]
55
path = .ci/hpc-workflows
66
url = https://github.com/islas/hpc-workflows
7+
[submodule "phys/MYNN-EDMF"]
8+
path = phys/MYNN-EDMF
9+
url = https://github.com/NCAR/MYNN-EDMF

CMakeLists.txt

Lines changed: 69 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
cmake_minimum_required( VERSION 3.20 )
2-
cmake_policy( SET CMP0118 NEW )
2+
3+
project( WRF )
34

45
enable_language( C )
56
enable_language( CXX )
67
enable_language( Fortran )
78

8-
project( WRF )
99
set( EXPORT_NAME ${PROJECT_NAME} )
1010

1111
if ( DEFINED CMAKE_TOOLCHAIN_FILE )
@@ -14,6 +14,11 @@ if ( DEFINED CMAKE_TOOLCHAIN_FILE )
1414
# include( ${WRF_CONFIG} )
1515
endif()
1616

17+
# Import default flags now, get rid of any imported release flag
18+
# we will handle that ourselves with WRF_FCOPTIM/WRF_FCNOOPT
19+
set( CMAKE_Fortran_FLAGS_RELEASE "" CACHE STRING "" FORCE )
20+
set( CMAKE_C_FLAGS_RELEASE "" CACHE STRING "" FORCE )
21+
1722
# list( APPEND CMAKE_MODULE_PATH )
1823
list( APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake/ ${PROJECT_SOURCE_DIR}/cmake/modules )
1924

@@ -213,6 +218,13 @@ set( DWORDSIZE 8 )
213218
set( LWORDSIZE 4 )
214219

215220

221+
# To limit the KPP generation to not consume copious amounts of RAM
222+
if ( NOT DEFINED MAX_KPP_GEN_THREADS )
223+
# 1 thread takes about 4.75 GB
224+
set( MAX_KPP_GEN_THREADS 2 )
225+
endif()
226+
227+
216228
########################
217229

218230
################################################################################
@@ -254,6 +266,7 @@ endif()
254266

255267
if ( ${ENABLE_KPP} AND NOT ${ENABLE_CHEM} )
256268
message( WARNING "ENABLE_KPP requires ENABLE_CHEM but is not set, ignoring" )
269+
set( ENABLE_KPP OFF CACHE BOOL "Force ignore by configuration" FORCE )
257270
endif()
258271

259272

@@ -315,6 +328,29 @@ if ( ${USE_IPO} )
315328
endif()
316329

317330

331+
332+
################################################################################
333+
##
334+
## Checkout external repositories using manage_externals
335+
##
336+
################################################################################
337+
message( STATUS "Checking out external repos via manage_externals" )
338+
set( LOG_FILE ${CMAKE_CURRENT_BINARY_DIR}/checkout_externals.log )
339+
execute_process(
340+
COMMAND
341+
${PROJECT_SOURCE_DIR}/tools/manage_externals/checkout_externals --externals ${PROJECT_SOURCE_DIR}/arch/Externals.cfg
342+
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
343+
RESULT_VARIABLE MANAGE_EXTERNALS_STATUS
344+
OUTPUT_FILE ${LOG_FILE}
345+
ERROR_FILE ${LOG_FILE}
346+
)
347+
if ( ${MANAGE_EXTERNALS_STATUS} AND NOT ${MANAGE_EXTERNALS_STATUS} EQUAL 0 )
348+
message( FATAL_ERROR "Failed to checkout external repos via manage_externals" )
349+
else()
350+
message( STATUS "Finished checking out external repos via manage_externals" )
351+
endif()
352+
353+
318354
################################################################################
319355
##
320356
## Create our flags / defines properties and variables to carry our information
@@ -377,23 +413,20 @@ if ( ${USE_MPI} )
377413
# Which may or may not get polluted by the environment
378414
# It still technically finds MPI but the output is nonintuitive
379415
# saying things like hdf5 or pthread
380-
find_package( MPI REQUIRED COMPONENTS Fortran C )
381-
list( APPEND PROJECT_COMPILE_DEFINITIONS_OPTIONS
382-
USE_MPI=1
383-
DM_PARALLEL
384-
)
385416

417+
# Supply any language-specific flags for interrogation
386418
if ( DEFINED WRF_MPI_Fortran_FLAGS AND NOT "${WRF_MPI_Fortran_FLAGS}" STREQUAL "" )
387-
list( APPEND PROJECT_COMPILE_OPTIONS_OPTIONS
388-
$<$<COMPILE_LANGUAGE:Fortran>:${WRF_MPI_Fortran_FLAGS}>
389-
)
419+
set( MPI_Fortran_COMPILER_FLAGS ${WRF_MPI_Fortran_FLAGS} )
390420
endif()
391421

392422
if ( DEFINED WRF_MPI_C_FLAGS AND NOT "${WRF_MPI_C_FLAGS}" STREQUAL "" )
393-
list( APPEND PROJECT_COMPILE_OPTIONS_OPTIONS
394-
$<$<COMPILE_LANGUAGE:C>:${WRF_MPI_C_FLAGS}>
395-
)
423+
set( MPI_C_COMPILER_FLAGS ${WRF_MPI_C_FLAGS} )
396424
endif()
425+
find_package( MPI REQUIRED COMPONENTS Fortran C )
426+
list( APPEND PROJECT_COMPILE_DEFINITIONS_OPTIONS
427+
USE_MPI=1
428+
DM_PARALLEL
429+
)
397430

398431
# Check if MPI in all its glory has forced IPO down our throats due to hard-coding the wrapper flags
399432
# https://www.open-mpi.org/faq/?category=mpi-apps#why-no-rpath LOL!
@@ -472,6 +505,19 @@ if ( ${ENABLE_CTSM} )
472505
# find_package( CTSM REQUIRED )
473506
endif()
474507

508+
if ( ${ENABLE_KPP} )
509+
find_package( BISON REQUIRED )
510+
find_package( FLEX REQUIRED )
511+
if ( ${FLEX_FOUND} AND "${FLEX_LIBRARIES}" STREQUAL "FL_LIBRARY-NOTFOUND" )
512+
message( FATAL_ERROR
513+
"Flex executable found, but libraries were not. Please provide a searchable path for both "
514+
"\n"
515+
"Refer to https://cmake.org/cmake/help/latest/command/find_package.html for more info "
516+
"on providing a suitable path"
517+
)
518+
endif()
519+
endif()
520+
475521
# Will need our own finder
476522
# find_package( GPFS REQUIRED )
477523

@@ -678,10 +724,13 @@ list( APPEND PROJECT_COMPILE_DEFINITIONS_OPTIONS
678724
# Only define if set, this is to use #ifdef/#ifndef preprocessors
679725
# in code since cmake cannot handle basically any others :(
680726
# https://gitlab.kitware.com/cmake/cmake/-/issues/17398
727+
if ( ${USE_DOUBLE} )
728+
list( APPEND PROJECT_COMPILE_DEFINITIONS_OPTIONS DOUBLE_PRECISION )
729+
endif()
681730
if ( ${ENABLE_CHEM} )
682-
list( APPEND PROJECT_COMPILE_DEFINITIONS_OPTIONS WRF_CHEM=1 )
731+
list( APPEND PROJECT_COMPILE_DEFINITIONS_OPTIONS WRF_CHEM )
683732
if ( ${ENABLE_KPP} )
684-
list( APPEND PROJECT_COMPILE_DEFINITIONS_OPTIONS WRF_KPP=1 )
733+
list( APPEND PROJECT_COMPILE_DEFINITIONS_OPTIONS WRF_KPP )
685734
endif()
686735
endif()
687736
if ( ${ENABLE_CHEM} )
@@ -914,14 +963,18 @@ add_subdirectory( share )
914963
add_subdirectory( frame )
915964
add_subdirectory( inc )
916965

917-
if ( ${WRF_CHEM} )
966+
if ( ${ENABLE_CHEM} )
918967
add_subdirectory( chem )
919968
endif()
920969

921970
if ( ${ENABLE_HYDRO} )
922971
add_subdirectory( hydro )
923972
endif()
924973

974+
if ( ${WRF_CORE} STREQUAL "PLUS" )
975+
add_subdirectory( wrftladj )
976+
endif()
977+
925978
add_subdirectory( dyn_em )
926979

927980

Makefile

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,20 @@ wrf : framework_only
124124
echo "NoahMP submodule files populating WRF directories" ; \
125125
echo "------------------------------------------------------------------------------" ; \
126126
fi
127+
@if [ \( ! -f phys/module_bl_mynnedmf.F \) -o \
128+
\( ! -f phys/module_bl_mynnedmf_common.F \) -o \
129+
\( ! -f phys/module_bl_mynnedmf_common.F \) ] ; then \
130+
echo " " ; \
131+
echo "------------------------------------------------------------------------------" ; \
132+
echo "Error Error Error MYNN-EDMF submodule files not populating WRF directories" ; \
133+
echo "------------------------------------------------------------------------------" ; \
134+
echo " " ; \
135+
exit 31 ; \
136+
else \
137+
echo "------------------------------------------------------------------------------" ; \
138+
echo "MYNN-EDMF submodule files populating WRF directories" ; \
139+
echo "------------------------------------------------------------------------------" ; \
140+
fi
127141
if [ $(WRF_CHEM) -eq 1 ] ; then $(MAKE) MODULE_DIRS="$(ALL_MODULES)" chemics ; fi
128142
if [ $(WRF_EM_CORE) -eq 1 ] ; then $(MAKE) MODULE_DIRS="$(ALL_MODULES)" em_core ; fi
129143
if [ $(WRF_HYDRO) -eq 1 ] ; then $(MAKE) MODULE_DIRS="$(ALL_MODULES)" wrf_hydro ; fi
@@ -595,7 +609,7 @@ em_real : wrf
595609
ln -sf ../../run/ishmael-qi-qr.bin . ; \
596610
ln -sf ../../run/BROADBAND_CLOUD_GODDARD.bin . ; \
597611
ln -sf ../../run/STOCHPERT.TBL . ; \
598-
if [ $(RWORDSIZE) -eq 8 ] ; then \
612+
if [ -n "$(DOUBLE_PRECISION)" ] ; then \
599613
ln -sf ../../run/ETAMPNEW_DATA_DBL ETAMPNEW_DATA ; \
600614
ln -sf ../../run/ETAMPNEW_DATA.expanded_rain_DBL ETAMPNEW_DATA.expanded_rain ; \
601615
ln -sf ../../run/RRTM_DATA_DBL RRTM_DATA ; \
@@ -677,7 +691,7 @@ em_real : wrf
677691
ln -sf ../../run/ishmael-qi-qr.bin . ; \
678692
ln -sf ../../run/BROADBAND_CLOUD_GODDARD.bin . ; \
679693
ln -sf ../../run/STOCHPERT.TBL . ; \
680-
if [ $(RWORDSIZE) -eq 8 ] ; then \
694+
if [ -n "$(DOUBLE_PRECISION)" ] ; then \
681695
ln -sf ../../run/ETAMPNEW_DATA_DBL ETAMPNEW_DATA ; \
682696
ln -sf ../../run/ETAMPNEW_DATA.expanded_rain_DBL ETAMPNEW_DATA.expanded_rain ; \
683697
ln -sf ../../run/RRTM_DATA_DBL RRTM_DATA ; \

README

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
WRF Model Version 4.6.1
1+
WRF Model Version 4.7.0
22

33
https://www2.mmm.ucar.edu/wrf/users/
44

0 commit comments

Comments
 (0)