Skip to content

Commit e868a7b

Browse files
[develop] Updates for fire behavior model: OpenMP parallelization; new wind option (#1367)
This introduces two new options available in the fire: section of config.yaml: * WIND_VINTERP_OPT is a new namelist option for the fire behavior model. The default 0 uses the 3d wind field from the weather model to affect fire spread -- this is identical to the previous behavior. The new option WIND_VINTERP_OPT: 1 instead uses the diagnostic 10m wind speed to affect fire spread. * OMP_NUM_THREADS_FIRE allows for OpenMP parallelism in the fire code. The code is now by default compiled with the OPENMP parallelism option, though the default OMP_NUM_THREADS_FIRE: 1 mirrors previous behavior, using only one tile/thread for the fire behavior model. In testing we found significant (~25%) speedup with OMP_NUM_THREADS_FIRE: 2 for the WE2E test domain, and minimal speedup with larger numbers of parallel processes. However, If users have a larger custom domain, more threads may show further speedup. --------- Co-authored-by: michael.lueken <Michael.Lueken@noaa.gov>
1 parent 1bbf5dd commit e868a7b

17 files changed

Lines changed: 52 additions & 17 deletions

Externals.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ protocol = git
1212
repo_url = https://github.com/ufs-community/ufs-weather-model
1313
# Specify either a branch name or a hash but not both.
1414
#branch = develop
15-
hash = a796a4f
15+
hash = 36d5e2a
1616
local_path = sorc/ufs-weather-model
1717
required = True
1818

doc/UsersGuide/BuildingRunningTesting/FIRE.rst

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,14 @@ The fire module has the ability to print out additional messages to the log file
9898
fire:
9999
FIRE_PRINT_MSG: 1
100100
101+
The fire module now supports OpenMP parallelization. By default, parallelization is off, but it can be enabled by setting ``OMP_NUM_THREADS_FIRE`` to a value greater than 1. In testing with the default case (200x200 domain) we have observed a 10-25% speedup with ``OMP_NUM_THREADS_FIRE: 2`` vs 1, with only marginal additional speedup for ``OMP_NUM_THREADS_FIRE>2``. However, larger domains may benefit from additional parallel threads.
102+
103+
.. code-block:: console
104+
105+
fire:
106+
OMP_NUM_THREADS_FIRE: 2
107+
108+
101109
Additional boundary conditions file
102110
-----------------------------------
103111

@@ -148,6 +156,8 @@ In this case, a single fire (``FIRE_NUM_IGNITIONS: 1``) of radius 250 meters (``
148156

149157
The CFBM creates output files in :term:`netCDF` format, with the naming scheme ``fire_output_YYYY-MM-DD_hh:mm:ss.nc``. In this case the output files are written every 30 minutes (``OUTPUT_DT_FIRE: 1800``).
150158

159+
Users can also modify the wind profile used in the CFBM with the setting ``WIND_VINTERP_OPT``. By default, the full prognostic wind field from the atmospheric model is used to calculate a wind profile for spreading the fire. Setting ``WIND_VINTERP_OPT: 1`` changes this to use only the diagnostic 10m wind, which is less compute-intensive and therefore runs faster.
160+
151161
.. note::
152162

153163
Any of the settings under :fire-ug:`the &fire section of the namelist <Configuration.html#fire>` can be specified in the SRW App ``config.yaml`` file under the ``fire:`` section, not just the settings described above. However, any additional settings from ``namelist.fire`` will need to be added to ``config_defaults.yaml`` first; otherwise the check for valid SRW options will fail.

parm/ufs.configure

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@ AQM_attributes::
3333
{% if ufs_fire %}
3434
# FIRE #
3535
FIRE_model: fire_behavior
36-
FIRE_petlist_bounds: {{ FIRE_pb }}
36+
FIRE_petlist_bounds: {{ FIRE_pb }}{{
37+
FIRE_omp_num_threads_line }}
3738
FIRE_attributes::
3839
Verbosity = high
3940
Diagnostic = 0

scripts/exregional_integration_test.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ def test_output_files_created(self) -> None:
126126

127127
def test_namelist_creation(self) -> None:
128128
base_params = {
129-
"time": {"dt", "interval_output"},
129+
"time": {"dt", "interval_output", "num_tiles"},
130130
"atm": {"interval_atm", "kde"},
131131
"fire": {
132132
"fire_num_ignitions",
@@ -137,6 +137,7 @@ def test_namelist_creation(self) -> None:
137137
"fire_upwinding",
138138
"fire_lsm_zcoupling",
139139
"fire_lsm_zcoupling_ref",
140+
"wind_vinterp_opt",
140141
},
141142
}
142143
multifire_params = (

tests/WE2E/machine_suites/comprehensive.derecho

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ grid_RRFS_CONUS_13km_ics_FV3GFS_lbcs_FV3GFS_suite_HRRR
2525
grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_FV3GFS_suite_GFS_v15p2
2626
grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_FV3GFS_suite_GFS_v16_plot
2727
grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_FV3GFS_suite_GFS_v17_p8_plot
28-
#grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_FV3GFS_suite_HRRR
28+
grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_FV3GFS_suite_HRRR
2929
grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_FV3GFS_suite_RAP
3030
grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_FV3GFS_suite_RRFS_v1beta
3131
grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_RAP_suite_RAP

tests/WE2E/machine_suites/comprehensive.hera.gnu

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ grid_RRFS_CONUS_13km_ics_FV3GFS_lbcs_FV3GFS_suite_HRRR
3333
grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_FV3GFS_suite_GFS_v15p2
3434
grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_FV3GFS_suite_GFS_v16_plot
3535
grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_FV3GFS_suite_GFS_v17_p8_plot
36-
#grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_FV3GFS_suite_HRRR
36+
grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_FV3GFS_suite_HRRR
3737
grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_FV3GFS_suite_RAP
3838
grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_FV3GFS_suite_RRFS_v1beta
3939
grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_RAP_suite_RAP

tests/WE2E/machine_suites/comprehensive.hera.intel

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ grid_RRFS_CONUS_13km_ics_FV3GFS_lbcs_FV3GFS_suite_HRRR
3434
grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_FV3GFS_suite_GFS_v15p2
3535
grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_FV3GFS_suite_GFS_v16_plot
3636
grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_FV3GFS_suite_GFS_v17_p8_plot
37-
#grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_FV3GFS_suite_HRRR
37+
grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_FV3GFS_suite_HRRR
3838
grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_FV3GFS_suite_RAP
3939
grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_FV3GFS_suite_RRFS_v1beta
4040
grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_RAP_suite_RAP

tests/WE2E/machine_suites/comprehensive.noaacloud

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ grid_RRFS_CONUS_13km_ics_FV3GFS_lbcs_FV3GFS_suite_HRRR
1414
grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_FV3GFS_suite_GFS_v15p2
1515
grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_FV3GFS_suite_GFS_v16_plot
1616
grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_FV3GFS_suite_GFS_v17_p8_plot
17-
#grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_FV3GFS_suite_HRRR
17+
grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_FV3GFS_suite_HRRR
1818
grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_FV3GFS_suite_RAP
1919
grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_FV3GFS_suite_RRFS_v1beta
2020
grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_RAP_suite_RAP

tests/WE2E/machine_suites/comprehensive.orion

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ grid_RRFS_CONUS_13km_ics_FV3GFS_lbcs_FV3GFS_suite_HRRR
2525
grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_FV3GFS_suite_GFS_v15p2
2626
grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_FV3GFS_suite_GFS_v16_plot
2727
grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_FV3GFS_suite_GFS_v17_p8_plot
28-
#grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_FV3GFS_suite_HRRR
28+
grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_FV3GFS_suite_HRRR
2929
grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_FV3GFS_suite_RAP
3030
grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_FV3GFS_suite_RRFS_v1beta
3131
grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_RAP_suite_RAP

tests/WE2E/machine_suites/comprehensive.ursa.gnu

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ grid_RRFS_CONUS_13km_ics_FV3GFS_lbcs_FV3GFS_suite_HRRR
3333
grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_FV3GFS_suite_GFS_v15p2
3434
grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_FV3GFS_suite_GFS_v16_plot
3535
grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_FV3GFS_suite_GFS_v17_p8_plot
36-
#grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_FV3GFS_suite_HRRR
36+
grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_FV3GFS_suite_HRRR
3737
grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_FV3GFS_suite_RAP
3838
grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_FV3GFS_suite_RRFS_v1beta
3939
grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_RAP_suite_RAP

0 commit comments

Comments
 (0)