ERF-Hazard: 2D Dust Emission Module, Fire–Dust Coupling, and Health/Regulatory Diagnostics (For information not merging) - #3529
Open
hgopalan wants to merge 461 commits into
Open
ERF-Hazard: 2D Dust Emission Module, Fire–Dust Coupling, and Health/Regulatory Diagnostics (For information not merging)#3529hgopalan wants to merge 461 commits into
hgopalan wants to merge 461 commits into
Conversation
Phase 10: Implement one-way dust aerosol injection into 3D atmosphere
- Updated all Dust input files to use neutral_abl atmospheric configuration - Increased domain height from 1000m to 1024m - Updated grid from 16x16 to 64x64 cells in z-direction - Changed erf.use_gravity from false to true - Updated erf.most.zref from 50.0 to 24.0 - Updated erf.fixed_dt from 1.0 to 0.5 - Added sounding_dust_abl files with appropriate height profile - Added Phase 1 debug statement to track prerequisite verification - Added unconditional Phase 4 debug statement for PHREEQC reader
…ebug-statements Standardize Dust test configurations to realistic neutral ABL with complete debug instrumentation
- Add m_dust_flux_atm member variable to ERF.H - Allocate m_dust_flux_atm[0] during DustLayer initialization in ERF.cpp - Add coarsen_dust_flux_to_atm call in ERF.cpp after DustLayer::advance - Replace apply_to_cc_source call with direct apply_dust_tendency_to_cc_source call in ERF_Advance.cpp - This implements one-step explicit lag: flux from step n is coarsened at end of step n, injected at beginning of step n+1
- ERF.H: Add m_dust_flux_atm member variable (Vector of unique_ptr MultiFab) - ERF.cpp: Allocate m_dust_flux_atm[0] during DustLayer initialization - ERF.cpp: After DustLayer::advance, sum emission flux bins and coarsen to atm grid - ERF_Advance.cpp: Replace apply_to_cc_source with direct apply_dust_tendency_to_cc_source call - Implements one-step explicit lag: flux from step n coarsened at end of step n, injected at beginning of step n+1 - Follows exact Fire module pattern as specified in task
Wire dust emission flux coupling into ERF_Advance.cpp with one-step explicit lag
Implement Phase 11: Stokes settling and per-bin scalar transport for dust module
Fix dust scalar transport in dycore — enable Phase 11 settling accumulation
- Change 1: Update NSCALARS definition in ERF_IndexDefines.H to increase from 1 to 2 when ERF_USE_DUST is defined - Change 2: Update m_dust_scalar_comp in ERF_DustLayer.cpp to use RhoScalar_comp + 1 instead of RhoAdv_comp - Change 3: Add dust zeroing code in ERF.cpp InitData_post() method to zero dust scalars after initialization"
…component Give Dust its own dedicated conserved scalar component
…rivativeDzInv refactor
…ction Merge PBL terrain correction (PBLDerivativeDzInv) from development into ERF-Hazard
…zard # Conflicts: # Source/DataStructs/ERF_TurbStruct.H # Source/Diffusion/ERF_ComputeTurbulentViscosity.cpp # Source/PBL/ERF_ComputeDiffusivityMRF.cpp # Source/PBL/ERF_ComputeDiffusivityMYNN25.cpp # Source/PBL/ERF_ComputeDiffusivityMYNNEDMF.cpp # Source/PBL/ERF_ComputeDiffusivityYSUNew.cpp # Source/PBL/ERF_PBLModels.H
Merge `development` into `ERF-Hazard` and preserve Fire/Dust + new PBL/IO integrations
…, Dust, and Hazard canonical tests - Added standardized header comment blocks to all canonical test input files (42 Fire, 23 Dust, 24 Hazard) explaining test purpose, physics features, and expected outcomes - Created 78 README.md files for all sub-folders and leaf test cases under Fire, Dust, and Hazard with Purpose, Physics/Model Features, Expected Results, Key Parameters, and References sections - Created Exec/CanonicalTests/Dust/inputs_dust_master_reference documenting all dust module parameters, defaults, and configuration options - Created Exec/CanonicalTests/Hazard/inputs_hazard_master_reference documenting fire-dust interaction and combined hazard scenario parameters - Created top-level README files for Fire/, Dust/, and Hazard/ directories listing test cases and scientific scope Total changes: 90 input files updated, 78 new README files, 2 new master reference files Co-authored-by: hgopalan <1108371+hgopalan@users.noreply.github.com>
Document canonical test cases for Fire, Dust, and Hazard modules
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Overview
This PR adds a two-way-coupled 2D dust emission, transport, and deposition module to ERF, along with fire–dust interaction pathways and occupational/regulatory health-exposure diagnostics. It builds on the ERF-Fire branch, reusing its coupling patterns. The module targets fugitive dust from critical-mineral extraction sites (open pits, tailings, haul roads, evaporation ponds).
New CMake option
ERF_ENABLE_DUST(defaultOFF); all dust code is guarded by#ifdef ERF_USE_DUST.ERF_ENABLE_FIREis also enabled (defaultON) so the fire–dust tests build.Part 1: ERF-Dust Module
The dust layer runs on a refined 2D horizontal grid (
erf.dust.grid_ratio) sharing the atmospheric distribution mapping. Capabilities:ERF_USE_PARTICLES).Parameters use the
erf.dust.*prefix (enabledefaultsfalse). Full list and defaults inDocs/sphinx_doc/theory/DustModule.rst.Part 2: Fire–Dust Coupling
Three composable pathways (require
fire_dust_coupling = true,dust.grid_ratio == fire.grid_ratio): crust reduction in burned cells, fire-wind contribution to dust u*, and heat-flux emission lofting. Fire smoke injection is also supported.Part 3: Health & Regulatory Diagnostics
EPA NAAQS PM2.5/PM10, MSHA 8-hour TWA, DOE critical-material flux, plus visibility (Koschmieder), respirable silica (OSHA), and 15-min STEL diagnostics.
Testing & Docs
New canonical suites in
Exec/CanonicalTests/Dust/andExec/CanonicalTests/Hazard/(per-phase regression cases with documented expected results, including Gaussian hill/pit terrain and smoke transport). Theory docs added for the dust and fire modules.References
Bagnold (1941) · Marticorena & Bergametti (1995) · Owen (1964) · Shao & Lu (2000) · Shao (2001) · Fecan et al. (1999) · Zhang et al. (2001) · Parkhurst & Appelo (2013) · Hong & Pan (1996). Regulatory: EPA NAAQS (40 CFR 50), MSHA (30 CFR 56/57), OSHA silica (29 CFR 1910.1053), EPA AP-42, DOE Critical Materials Assessment.