Coupling with WRF-Chem
- Back to the WRF-SFIRE user guide.
As of WRF 3.4, WRF-Chem is now included in the SFire repository. Fire emissions can be now input into WRF-Chem as chemical species or a simple smoke tracer.
Compiling with chem support
Compiling the code with support for WRF-Chem is similar to the standard procedure. You must set an environment variable WRF_CHEM and configure with the argument chem as follows.
export WRF_CHEM=1 ./configure chem ./compile em_fire
Running an idealized example
An idealized example based on the hill case has been created in test/em_fire/chem This example doesn't quite work out of the box because WRF-Chem requires USGS landuse data that the ideal case doesn't initialize. To get this example working, you have to trick WRF into thinking that the input file contains USGS landuse data. (I'm not sure if this data is even used when just using passive tracers anyway.) To do this, you can just change the global attribute MMINLU in wrfinput_d01 to the string USGS. A python script (make_usgs.py) that does this is included in the test/em_fire/chem directory, but it requires netcdf4-python to run. Assuming you have this module, the following will execute the example.
./ideal.exe ./make_usgs.py ./wrf.exe
Alternatively, instead of ./make_usgs.py, you can execute in Matlab the script make_usgs.m
matlab -nodesktop -noflash < make_usgs.m
The tracer selected by tracer_opt=1 will appear as an atmospheric variable in the output file with the name smoke. The chemical species in the atmosphere, selected by chem_opt, will appear under their respective names, such as n2o5.
Configuration
The selection of the model in WRF-Chem is controlled by namelist variables tracer_opt in the &dynamics section and chem_opt in the &chemistry section of namelist.input. At the moment, the coupling supports trace_opt = 1, which creates a single tracer called smoke, and a subset of RADM2 (chem_opt=2) and MOZART (chem_opt=112 or 119) variables.
In each time step, the coupling code adds the fire emissions created in the time step to the first layer of atmosphere cells. The chemistry state arrays are have unit of concentrations (ppmv), so the amounts of the inserted species are appropriately by the dry air mass in the first layer. The amount of the chemical species created is determined from the amount of fuel burned directly by an emissions table, while the smoke tracer uses the fire ground heat flux GRNHFX as a proxy. The emissions table contains the amounts of emissions fuel burned in g/kg or mol/kg. The emissions tables are specified in file namelist.fire_emissions. This file contains a line for each species like
no2=3.2,3.2,3.2,1.4,1.4,1.4,1.4,2.7,2.7,2.7,3,3,3,
with emissions (g/kg fuel or mol/kg fuel) for each of the fuel categories used (by default, the 13 Anderson's categories).
There are two additional variables in namelist.fire_emissions:
compatible_chem_opt=112,119
is a list of chem_opt values intended to be used with the table. However, presently, the code does not check if the file lists other chemistry species supported by the coupling code, not just those for the given chem_opt. If it does, the results can be upredictable. The variable
printsums=1
will enable printing of the totals of each emissions species at the end of every time step.
There are currently two emissions tables available:
Implementation
WRF-Chem contains a multitude of arrays representing concentrations of chemical species. The typical method of injecting data into the simulation involves generating emission input data files from standard sources. These sources are read into the code using auxiliary input streams and interpolated into the species arrays in the emissions module. For the coupling with SFIRE, turning off file input in the namelist seems to initialize the emission arrays to zero. This eliminates the need to generate useless emission files.
WRF-Chem stores its state in arrays chem and tracer. These arrays are four dimensional indexed like (x,z,y,s), where s is the chemical species. The domain structure contains scalars such as p_smoke (into the tracer array) and p_nh4 (into the chem array) that give the species index for each type. The species selections are specific to different chemistry options (chem_opt) from the registry; however, even unused species have their index set to 1. The dynamics section of the namelist has an option for tracer_opt. This controls what tracers are generated for Chem.
Since fuel is given at the fire grid resolution, the emissions are computed at the fire resolution and then averaged to the atmospheric resolution, where the chemistry operates. However, since the memory demands of a 3D array at fire resolution (two surface dimensions and chemical species) would be excessive, the contributions of the emissions are computed on the fly and added to the respective atmospheric cell immediately. This results in code that straddles the otherwise strict division in SFIRE between fire computations on the fire grid, which are independent of WRF, and the atmospheric computations related to WRF, which otherwise consist of interpolation only and should not contain any other code. So, subroutine add_fire_emissions_to_chem, which adds chemical species to the chem array, was derived from the utility sum_2d_cells by adding chemistry-specific code.
The chemistry coupling code is compiled only when WRF-Chem is being compiled. It resides in module_fr_sfire_atm.F, which is allowed by the SFIRE architecture to contain code both at atmosphere and fire resolution. Besides subroutine add_fire_emissions_to_chem, the code consists of subroutine read_emissions_table, which reads file namelist.fire_emissions, subroutine add_fire_emissions_to_chem, which adds chemical species to the chem array, the emissions tables as module variables, subroutine fire_emission, which adds the smoke tracer, and the corresponding call statements in module_fr_sfire_driver.
References
- Adam K. Kochanski, Jonathan D. Beezley, Jan Mandel, and Minjeong Kim, WRF fire simulation coupled with a fuel moisture model and smoke transport by WRF-Chem, 2012 WRF Users Workshop, Poster 51 abstract paper arXiv:1208.1059
- WRF-Chem Users' Guide
- Georg A. Grell, Steven E. Peckham, Rainer Schmitz, Stuart A. McKeen, Gregory Frost, William C. Skamarock, Brian Eder, Fully coupled “online” chemistry within the WRF model, Atmospheric Environment, Volume 39, Issue 37, December 2005, Pages 6957–6975
- C. Wiedinmyer, S. K. Akagi, R. J. Yokelson, L. K. Emmons, J. A. Al-Saadi, J. J. Orlando, and A. J. Soja. The Fire INventory from NCAR (FINN): a high resolution global model to estimate the emissions from open burning, Geosci. Model Dev., 4, 625-641, 2011
- L. K. Emmons, S. Walters, P. G. Hess, J.-F. Lamarque, G. G. Pfister, D. Fillmore, C. Granier, A. Guenther, D. Kinnison, T. Laepple, J. Orlando, X. Tie, G. Tyndall, C. Wiedinmyer, S. L. Baughcum, and S. Kloster, Description and evaluation of the Model for Ozone and Related chemical Tracers, version 4 (MOZART-4), Geosci. Model Dev., 3, 43-67, 2010