Skip to content

ERF-Fire (Do Not Merge - Broken with Wind Solver)#3417

Open
hgopalan wants to merge 167 commits into
erf-model:developmentfrom
hgopalan:ERF-Fire
Open

ERF-Fire (Do Not Merge - Broken with Wind Solver)#3417
hgopalan wants to merge 167 commits into
erf-model:developmentfrom
hgopalan:ERF-Fire

Conversation

@hgopalan

@hgopalan hgopalan commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

Here's a concise combined PR summary:


ERF-Fire: Wildfire Spread Module + MRF PBL Enhancements

Branch: hgopalan:ERF-Fireerf-model:development

Overview

This PR delivers two major additions to ERF: a comprehensive 2D wildfire propagation module coupled to the atmospheric solver, and enhancements to the MRF planetary boundary layer scheme — including a novel fire–PBL coupling mechanism.


Part 1: MRF PBL Enhancements

New optional parameters for erf.pbl_type = MRF (all disabled by default):

Parameter Default Description
erf.enable_mrf_countergradient false HGAMT/HGAMQ nonlocal countergradient corrections (Hong & Pan 1996)
erf.enable_mrf_unbounded_vpert false Fixes WRF bug where VPERT cap suppresses latent heating contribution to PBL height
erf.pbl_mrf_highres_bounds false Grid-dependent diffusivity bounds for fine-resolution runs
erf.pbl_mrf_use_zero_ri_extent false Ri=0 K-profile extent; default uses Ri=0.5 for WRF compatibility
erf.pbl_mrf_fire_thermal_excess false Adds fire surface heat flux to MRF thermal excess (fire–PBL coupling)
erf.mrf_fire_q_threshold 50.0 W/m² Minimum fire flux to activate thermal excess correction
erf.mrf_fire_t_excess_cap 50.0 K Maximum thermal excess when fire coupling is active

New test suite: Exec/CanonicalTests/ABL/MRF_Enhancements/ — 17 configurations covering neutral, stable, unstable, cloud-topped, diurnal, marine, high-shear, arctic, and edge cases.


Part 2: Wildfire Spread Module

New CMake option ERF_ENABLE_FIRE (default ON). All fire code is guarded by #ifdef ERF_ENABLE_FIRE. The fire module operates on a refined 2D horizontal grid (erf.fire.grid_ratio) and is fully coupled to ERF's atmospheric solver.

Core physics: Rothermel (1972) rate-of-spread with Wind Adjustment Factor, MEWS wind cap, and FARSITE terrain corrections. Alternative ROS models: MacArthur (1966), Balbi (2009), Cheney-Gould (1998), and BEHAVE multi-class Rothermel.

Fire front propagation: FARSITE elliptical Lagrangian scheme (default) or level-set advection (WENO5-Z + SSP-RK3 + Sussman reinitialization).

Atmospheric coupling: Three modes — passive, lagged (default, WRF-Fire parity), synchronous. Fire heat flux distributed through the atmospheric column via exponential vertical profile; latent heat injection supported. The pbl_mrf_fire_thermal_excess parameter (Part 1) additionally feeds fire heat into the MRF PBL height diagnostic.

Additional capabilities: Dynamic fuel moisture (time-lag ODEs), Albini (1983) stochastic ember spotting, Van Wagner/Cruz crown fire, multi-ignition schedule and polygon ignition, fire startup acceleration (size-based and VanWagner temporal), flame temperature/tilt/intensity diagnostics, spatially varying fuel maps (ESRI ASCII and FARSITE LCP) with firebreak barriers, per-fuel wind height extraction (WRF-SFIRE fcwh convention).

Testing: Canonical test suite in Exec/CanonicalTests/Fire/ organized by feature, plus pure-Python unit tests requiring no compiled binary. Fire statistics CSV and AMReX/ParaView-compatible plotfile output on native fire grid each timestep. Combined ABL+fire test cases in Exec/CanonicalTests/Fire/Atmospheric_Boundary_Layer/ABL_with_MRF/.


References

MRF PBL: Hong & Pan (1996) MWR · Hong et al. (2006) MWR

Fire module: Rothermel (1972) · Finney (2004) · Richards (1990) · Anderson (1983) · Albini (1983) · Van Wagner (1977) · Cruz et al. (2005) · McAlpine & Wakimoto (1991) · Balbi et al. (2009) · Cheney et al. (1998)

@hgopalan hgopalan changed the title ERF-Fire ERF-Fire (Do Not Merge - Broken with Wind Solver) Jul 9, 2026
Copilot AI and others added 28 commits July 9, 2026 14:12
…FireUtils moisture guard; FireLayer time param
Copilot AI and others added 25 commits July 9, 2026 14:13
- Update all 36 Fire input files to use periodic boundary conditions (geometry.is_periodic = 1 1 0)
- Remove explicit xlo/xhi/ylo/yhi boundary type specifications where not needed
- Create 6 new ABL-enhanced fire configurations in Atmospheric_Boundary_Layer/ABL_with_MRF/
- Include physically realistic pre-fire scenarios: neutral, unstable, diurnal, extreme_heating, high_shear, weak_convection_transition
- Copy sounding files and verify wind parameter consistency
- Create comprehensive README with physical justification and usage instructions
…mplicitPre.H

- Source/PBL/Shoc/ERF_ShocDriver.cpp: Replace 'zero' with 'Real(0.)'
- Source/TimeIntegration/ERF_ImplicitPost.H: Move l_use_mrf_cg declaration outside if blocks
- Source/TimeIntegration/ERF_ImplicitPre.H: Move l_use_mrf_cg declaration outside if blocks

These files contain no fire-related references. Step 1 of ERF-Fire sync.
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.

2 participants