<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.openwfm.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jmandel</id>
	<title>openwfm - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.openwfm.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jmandel"/>
	<link rel="alternate" type="text/html" href="https://wiki.openwfm.org/wiki/Special:Contributions/Jmandel"/>
	<updated>2026-04-06T11:07:44Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.5</generator>
	<entry>
		<id>https://wiki.openwfm.org/index.php?title=SFIRE_variables&amp;diff=8414</id>
		<title>SFIRE variables</title>
		<link rel="alternate" type="text/html" href="https://wiki.openwfm.org/index.php?title=SFIRE_variables&amp;diff=8414"/>
		<updated>2026-02-11T02:43:26Z</updated>

		<summary type="html">&lt;p&gt;Jmandel: /* List of variables */ fix static data link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{users guide}}&lt;br /&gt;
{{Hangon}}&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
[[File:firemesh.png|400px]]&lt;br /&gt;
&lt;br /&gt;
The fire mesh is 2D. Every atmosphere cell is divided into &#039;&#039;&#039;sr_x&#039;&#039;&#039; by &#039;&#039;&#039;sr_y&#039;&#039;&#039; fire cells. The submesh ratios &#039;&#039;&#039;sr_x&#039;&#039;&#039; and &#039;&#039;&#039;sr_y&#039;&#039;&#039; are specified in the file &#039;&#039;&#039;namelist.input&#039;&#039;&#039;. These values are not stored in the NetCDF files, but can be computed from the dimension sizes.  &lt;br /&gt;
&lt;br /&gt;
 sr_x=west_east_subgrid/west_east_stag = west_east_subgrid/(west_east + 1)&lt;br /&gt;
 sr_y=south_north_subgrid/south_north_stag = south_north_subgrid/(south_north + 1)&lt;br /&gt;
&lt;br /&gt;
For historical reasons, the fire grid dimensions in the output files are larger than what is actually used by the code internally.  The extra space is at the end of the variables of size &amp;lt;code&amp;gt;sr_x&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;sr_y&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt;.  The following is an example of python code for correctly reading &amp;lt;code&amp;gt;FGRNHFX&amp;lt;/code&amp;gt; from the file &amp;lt;code&amp;gt;wrfout&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 from netCDF4 import Dataset&lt;br /&gt;
 f=Dataset(&#039;wrfout&#039;,&#039;r&#039;)&lt;br /&gt;
 sr_x=len(f.dimensions[&#039;west_east_subgrid&#039;])//(len(f.dimensions[&#039;west_east&#039;])+1)&lt;br /&gt;
 sr_y=len(f.dimensions[&#039;south_north_subgrid&#039;])//(len(f.dimensions[&#039;south_north&#039;])+1)&lt;br /&gt;
 fgrnhfx=f.variables[&#039;FGRNHFX&#039;][:,:-sr_y,:-sr_x]&lt;br /&gt;
&lt;br /&gt;
Variables on the fire mesh are located at the centers of the fire mesh cells of a 2D fire mesh.&lt;br /&gt;
&lt;br /&gt;
==List of variables==&lt;br /&gt;
The authoritative information can be always found in {{WRF-Fire-file|wrfv2_fire/Registry/registry.fire|the Registry}}.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ Fire variables on fire grid&lt;br /&gt;
| scope=&amp;quot;col&amp;quot; | Variable name&lt;br /&gt;
| scope=&amp;quot;col&amp;quot; | Description&lt;br /&gt;
| scope=&amp;quot;col&amp;quot; | Unit&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | NFUEL_CAT&lt;br /&gt;
|fuel data&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | ZSF&lt;br /&gt;
|height of surface above sea level&lt;br /&gt;
|m&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | DZDXF&lt;br /&gt;
|surface gradient x&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | DZDYF&lt;br /&gt;
|surface gradient y&lt;br /&gt;
|1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+Fire variables on atm grid&lt;br /&gt;
| scope=&amp;quot;col&amp;quot; | Variable name&lt;br /&gt;
| scope=&amp;quot;col&amp;quot; | Description&lt;br /&gt;
| scope=&amp;quot;col&amp;quot; | Unit&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | RTHFRTEN&lt;br /&gt;
|temperature tendency&lt;br /&gt;
|K/s&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | RQVFRTEN&lt;br /&gt;
|humidity tendency&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+Diagnostics&lt;br /&gt;
| scope=&amp;quot;col&amp;quot; | Variable name&lt;br /&gt;
| scope=&amp;quot;col&amp;quot; | Description&lt;br /&gt;
| scope=&amp;quot;col&amp;quot; | Unit&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | AVG_FUEL_FRAC&lt;br /&gt;
|fuel remaining averaged to atmospheric grid&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | GRNHFX&lt;br /&gt;
|heat flux from ground fire&lt;br /&gt;
|W/m&amp;lt;sup&amp;gt;2&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | GRNQFX&lt;br /&gt;
|moisture flux from ground fire&lt;br /&gt;
|W/m&amp;lt;sup&amp;gt;2&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | CANHFX&lt;br /&gt;
|heat flux from crown fire&lt;br /&gt;
|W/m&amp;lt;sup&amp;gt;2&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | CANQFX&lt;br /&gt;
|moisture flux from crown fire&lt;br /&gt;
|W/m&amp;lt;sup&amp;gt;2&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | UAH&lt;br /&gt;
|wind at fire_wind_heigh&lt;br /&gt;
|m/s&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | VAH&lt;br /&gt;
|wind at fire_wind_heigh&lt;br /&gt;
|m/s&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+Sfire variables on fire grid&lt;br /&gt;
| scope=&amp;quot;col&amp;quot; | Variable name&lt;br /&gt;
| scope=&amp;quot;col&amp;quot; | Description&lt;br /&gt;
| scope=&amp;quot;col&amp;quot; | Unit&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | TIGN_G&lt;br /&gt;
|ignition time on ground&lt;br /&gt;
|s&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | LFN&lt;br /&gt;
|level function&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | FUEL_FRAC&lt;br /&gt;
|fuel remaining&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | FMC_G&lt;br /&gt;
|fuel moisture contents&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | FIRE_AREA&lt;br /&gt;
|fraction of cell area on fire&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | UF&lt;br /&gt;
|fire wind&lt;br /&gt;
|m/s&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | VF&lt;br /&gt;
|fire wind&lt;br /&gt;
|m/s&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | FGRNHFX&lt;br /&gt;
|heat flux from ground fire&lt;br /&gt;
|W/m&amp;lt;sup&amp;gt;2&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | FGRNQFX&lt;br /&gt;
|moisture flux from ground fire&lt;br /&gt;
|W/m&amp;lt;sup&amp;gt;2&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | FCANHFX&lt;br /&gt;
|heat flux from crown fire&lt;br /&gt;
|W/m&amp;lt;sup&amp;gt;2&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | FCANQFX&lt;br /&gt;
|moisture flux from crown fire&lt;br /&gt;
|W/m&amp;lt;sup&amp;gt;2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+Diagnostics for the actual modeled fire&lt;br /&gt;
| scope=&amp;quot;col&amp;quot; | Variable name&lt;br /&gt;
| scope=&amp;quot;col&amp;quot; | Description&lt;br /&gt;
| scope=&amp;quot;col&amp;quot; | Unit&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | ROS&lt;br /&gt;
|rate of spread in the normal direction to the fireline&lt;br /&gt;
|m/s&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | FLINEINT&lt;br /&gt;
|fireline intensity&lt;br /&gt;
|W/m&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | FLINEINT2&lt;br /&gt;
|alternative fireline intensity&lt;br /&gt;
|J/m/s&amp;lt;sup&amp;gt;2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+Diagnostics for fire risk rating - independent on any actual fire going on&lt;br /&gt;
| scope=&amp;quot;col&amp;quot; | Variable name&lt;br /&gt;
| scope=&amp;quot;col&amp;quot; | Description&lt;br /&gt;
| scope=&amp;quot;col&amp;quot; | Unit&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | F_ROS0&lt;br /&gt;
|base rate of spread in all directions&lt;br /&gt;
|m/s&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | F_ROSX&lt;br /&gt;
|X component of the spread vector driven by wind and slope&lt;br /&gt;
|m/s&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | F_ROSY&lt;br /&gt;
|Y component of the spread vector driven by wind and slope&lt;br /&gt;
|m/s&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | F_ROS&lt;br /&gt;
|max spread rate in any direction&lt;br /&gt;
|m/s&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | F_INT&lt;br /&gt;
|fire reaction intensity for risk rating, without fire&lt;br /&gt;
|J/m&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;/s&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | F_LINEINT&lt;br /&gt;
|Byram fireline intensity for risk rating, without fire&lt;br /&gt;
|J/m/s&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | F_LINEINT2&lt;br /&gt;
|alternative fireline intensity for risk rating, without fire&amp;quot; &lt;br /&gt;
|J/m/s&amp;lt;sup&amp;gt;2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+Constant data arrays&lt;br /&gt;
| scope=&amp;quot;col&amp;quot; | Variable name&lt;br /&gt;
| scope=&amp;quot;col&amp;quot; | Description&lt;br /&gt;
| scope=&amp;quot;col&amp;quot; | Unit&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | FXLONG&lt;br /&gt;
|longitude of midpoints of fire cells &lt;br /&gt;
|degrees&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; |FXLAT&lt;br /&gt;
|latitude of midpoints of fire cells&lt;br /&gt;
|degrees&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; |FUEL_TIME&lt;br /&gt;
|fuel&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; |BBB&lt;br /&gt;
|fuel&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; |PHISC&lt;br /&gt;
|fuel&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; |PHIWC&lt;br /&gt;
|fuel&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; |R_0&lt;br /&gt;
|fuel&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; |FGIP&lt;br /&gt;
|fuel&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; |FZ0&lt;br /&gt;
|fuel roughness height&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; |FWH&lt;br /&gt;
|fuel fire wind height&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; |ISCHAP&lt;br /&gt;
|fuel &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note: The fuel variables are automatically filled from the fuel category (NFUEL_CAT) at initialization, which is contained in [[Running WRF-SFIRE with real data in the WRFx system#Get fire static data|static data]]; they are normally not set by the user directly.&lt;br /&gt;
&lt;br /&gt;
== Fire intensities ==&lt;br /&gt;
We introduce three fire intensities:&lt;br /&gt;
&lt;br /&gt;
1. Reaction : The heat release rate per unit area of the front.&lt;br /&gt;
&lt;br /&gt;
2. Byram :  The heat produced per unit length of the fireline in unit time (J/m/s) in the so-called flaming zone behind the fireline.&lt;br /&gt;
&lt;br /&gt;
3. Fireline, new : The amount of heat generated by the advancing fireline from the newly burning fuel only, in the unit of time.&lt;br /&gt;
&lt;br /&gt;
Definitions and implementations of fire intensities include variables :&lt;br /&gt;
&lt;br /&gt;
* H&amp;lt;sub&amp;gt;F&amp;lt;/sub&amp;gt; : Heat contents of the fuel (J/kg)&lt;br /&gt;
&lt;br /&gt;
* R&amp;lt;sub&amp;gt;S&amp;lt;/sub&amp;gt; : Fire spread rate (m/s)&lt;br /&gt;
&lt;br /&gt;
* F : Fuel remaining at time t (kg/m&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
* F&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt; : Initial fuel load (kg/m&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
* F&amp;lt;sub&amp;gt;n&amp;lt;/sub&amp;gt; : Fuel load when reaction ends (kg/m&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
* F&amp;lt;sub&amp;gt;r&amp;lt;/sub&amp;gt; : Fuel fraction burnt in the flaming (or reaction) zone (1)&lt;br /&gt;
&lt;br /&gt;
* T&amp;lt;sub&amp;gt;f&amp;lt;/sub&amp;gt; : fuel burn time (1-1/e  63% of the fuel burned) (s)&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;var&amp;gt;&amp;amp;tau;&amp;lt;/var&amp;gt;&amp;lt;sub&amp;gt;R&amp;lt;/sub&amp;gt; : Reaction time (s) &lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
| scope=&amp;quot;col&amp;quot; | Intensity &lt;br /&gt;
| scope=&amp;quot;col&amp;quot; | Definition&lt;br /&gt;
| scope=&amp;quot;col&amp;quot; | Implementation&lt;br /&gt;
| scope=&amp;quot;col&amp;quot; | Unit&lt;br /&gt;
| scope=&amp;quot;col&amp;quot; | Depends on rates spread R&amp;lt;sub&amp;gt;S&amp;lt;/sub&amp;gt;&lt;br /&gt;
| scope=&amp;quot;col&amp;quot; | Depends on rates burn 1/T&amp;lt;sub&amp;gt;f&amp;lt;/sub&amp;gt; &lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | Reaction&lt;br /&gt;
|I&amp;lt;sub&amp;gt;R&amp;lt;/sub&amp;gt; = H&amp;lt;sub&amp;gt;F&amp;lt;/sub&amp;gt;(F&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt;-F&amp;lt;sub&amp;gt;n&amp;lt;/sub&amp;gt;)/&amp;lt;var&amp;gt;&amp;amp;tau;&amp;lt;/var&amp;gt;&amp;lt;sub&amp;gt;R&amp;lt;/sub&amp;gt; &lt;br /&gt;
|I&amp;lt;sub&amp;gt;R&amp;lt;/sub&amp;gt; = H&amp;lt;sub&amp;gt;F&amp;lt;/sub&amp;gt;F&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt;F&amp;lt;sub&amp;gt;r&amp;lt;/sub&amp;gt;/(-T&amp;lt;sub&amp;gt;f&amp;lt;/sub&amp;gt;ln(1-F&amp;lt;sub&amp;gt;r&amp;lt;/sub&amp;gt;)&lt;br /&gt;
| J/m&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;/s&lt;br /&gt;
| no&lt;br /&gt;
| yes&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | Byram&lt;br /&gt;
| I = H&amp;lt;sub&amp;gt;F&amp;lt;/sub&amp;gt;R&amp;lt;sub&amp;gt;S&amp;lt;/sub&amp;gt;F&lt;br /&gt;
| I = H&amp;lt;sub&amp;gt;F&amp;lt;/sub&amp;gt;R&amp;lt;sub&amp;gt;S&amp;lt;/sub&amp;gt;F&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt;F&amp;lt;sub&amp;gt;r&amp;lt;/sub&amp;gt;&lt;br /&gt;
| J/m/s&lt;br /&gt;
| yes&lt;br /&gt;
| no&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | Fireline, new&lt;br /&gt;
| J(&amp;lt;var&amp;gt;&amp;amp;Delta;&amp;lt;/var&amp;gt;t&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;) &amp;amp;asymp; H&amp;lt;sub&amp;gt;F&amp;lt;/sub&amp;gt;R&amp;lt;sub&amp;gt;S&amp;lt;/sub&amp;gt;F&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt; &amp;amp;int;&amp;lt;sub&amp;gt;a&amp;lt;/sub&amp;gt;&amp;lt;sup&amp;gt;&amp;lt;var&amp;gt;&amp;amp;Delta;&amp;lt;/var&amp;gt;t&amp;lt;/sup&amp;gt;&amp;lt;var&amp;gt;&amp;amp;tau;&amp;lt;/var&amp;gt;&amp;lt;sub&amp;gt;R&amp;lt;/sub&amp;gt;/T&amp;lt;sub&amp;gt;f&amp;lt;/sub&amp;gt; d&amp;lt;var&amp;gt;&amp;amp;tau;&amp;lt;/var&amp;gt;&lt;br /&gt;
| J = H&amp;lt;sub&amp;gt;F&amp;lt;/sub&amp;gt;R&amp;lt;sub&amp;gt;S&amp;lt;/sub&amp;gt;F&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt;/2T&amp;lt;sub&amp;gt;f&amp;lt;/sub&amp;gt;&lt;br /&gt;
| J/m/s&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
| yes&lt;br /&gt;
| yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
* [[How to interpret WRF variables]]&lt;/div&gt;</summary>
		<author><name>Jmandel</name></author>
	</entry>
	<entry>
		<id>https://wiki.openwfm.org/index.php?title=SFIRE_variables&amp;diff=8413</id>
		<title>SFIRE variables</title>
		<link rel="alternate" type="text/html" href="https://wiki.openwfm.org/index.php?title=SFIRE_variables&amp;diff=8413"/>
		<updated>2026-02-11T02:40:04Z</updated>

		<summary type="html">&lt;p&gt;Jmandel: /* List of variables */ link fuel variables&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{users guide}}&lt;br /&gt;
{{Hangon}}&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
[[File:firemesh.png|400px]]&lt;br /&gt;
&lt;br /&gt;
The fire mesh is 2D. Every atmosphere cell is divided into &#039;&#039;&#039;sr_x&#039;&#039;&#039; by &#039;&#039;&#039;sr_y&#039;&#039;&#039; fire cells. The submesh ratios &#039;&#039;&#039;sr_x&#039;&#039;&#039; and &#039;&#039;&#039;sr_y&#039;&#039;&#039; are specified in the file &#039;&#039;&#039;namelist.input&#039;&#039;&#039;. These values are not stored in the NetCDF files, but can be computed from the dimension sizes.  &lt;br /&gt;
&lt;br /&gt;
 sr_x=west_east_subgrid/west_east_stag = west_east_subgrid/(west_east + 1)&lt;br /&gt;
 sr_y=south_north_subgrid/south_north_stag = south_north_subgrid/(south_north + 1)&lt;br /&gt;
&lt;br /&gt;
For historical reasons, the fire grid dimensions in the output files are larger than what is actually used by the code internally.  The extra space is at the end of the variables of size &amp;lt;code&amp;gt;sr_x&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;sr_y&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt;.  The following is an example of python code for correctly reading &amp;lt;code&amp;gt;FGRNHFX&amp;lt;/code&amp;gt; from the file &amp;lt;code&amp;gt;wrfout&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 from netCDF4 import Dataset&lt;br /&gt;
 f=Dataset(&#039;wrfout&#039;,&#039;r&#039;)&lt;br /&gt;
 sr_x=len(f.dimensions[&#039;west_east_subgrid&#039;])//(len(f.dimensions[&#039;west_east&#039;])+1)&lt;br /&gt;
 sr_y=len(f.dimensions[&#039;south_north_subgrid&#039;])//(len(f.dimensions[&#039;south_north&#039;])+1)&lt;br /&gt;
 fgrnhfx=f.variables[&#039;FGRNHFX&#039;][:,:-sr_y,:-sr_x]&lt;br /&gt;
&lt;br /&gt;
Variables on the fire mesh are located at the centers of the fire mesh cells of a 2D fire mesh.&lt;br /&gt;
&lt;br /&gt;
==List of variables==&lt;br /&gt;
The authoritative information can be always found in {{WRF-Fire-file|wrfv2_fire/Registry/registry.fire|the Registry}}.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ Fire variables on fire grid&lt;br /&gt;
| scope=&amp;quot;col&amp;quot; | Variable name&lt;br /&gt;
| scope=&amp;quot;col&amp;quot; | Description&lt;br /&gt;
| scope=&amp;quot;col&amp;quot; | Unit&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | NFUEL_CAT&lt;br /&gt;
|fuel data&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | ZSF&lt;br /&gt;
|height of surface above sea level&lt;br /&gt;
|m&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | DZDXF&lt;br /&gt;
|surface gradient x&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | DZDYF&lt;br /&gt;
|surface gradient y&lt;br /&gt;
|1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+Fire variables on atm grid&lt;br /&gt;
| scope=&amp;quot;col&amp;quot; | Variable name&lt;br /&gt;
| scope=&amp;quot;col&amp;quot; | Description&lt;br /&gt;
| scope=&amp;quot;col&amp;quot; | Unit&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | RTHFRTEN&lt;br /&gt;
|temperature tendency&lt;br /&gt;
|K/s&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | RQVFRTEN&lt;br /&gt;
|humidity tendency&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+Diagnostics&lt;br /&gt;
| scope=&amp;quot;col&amp;quot; | Variable name&lt;br /&gt;
| scope=&amp;quot;col&amp;quot; | Description&lt;br /&gt;
| scope=&amp;quot;col&amp;quot; | Unit&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | AVG_FUEL_FRAC&lt;br /&gt;
|fuel remaining averaged to atmospheric grid&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | GRNHFX&lt;br /&gt;
|heat flux from ground fire&lt;br /&gt;
|W/m&amp;lt;sup&amp;gt;2&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | GRNQFX&lt;br /&gt;
|moisture flux from ground fire&lt;br /&gt;
|W/m&amp;lt;sup&amp;gt;2&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | CANHFX&lt;br /&gt;
|heat flux from crown fire&lt;br /&gt;
|W/m&amp;lt;sup&amp;gt;2&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | CANQFX&lt;br /&gt;
|moisture flux from crown fire&lt;br /&gt;
|W/m&amp;lt;sup&amp;gt;2&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | UAH&lt;br /&gt;
|wind at fire_wind_heigh&lt;br /&gt;
|m/s&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | VAH&lt;br /&gt;
|wind at fire_wind_heigh&lt;br /&gt;
|m/s&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+Sfire variables on fire grid&lt;br /&gt;
| scope=&amp;quot;col&amp;quot; | Variable name&lt;br /&gt;
| scope=&amp;quot;col&amp;quot; | Description&lt;br /&gt;
| scope=&amp;quot;col&amp;quot; | Unit&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | TIGN_G&lt;br /&gt;
|ignition time on ground&lt;br /&gt;
|s&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | LFN&lt;br /&gt;
|level function&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | FUEL_FRAC&lt;br /&gt;
|fuel remaining&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | FMC_G&lt;br /&gt;
|fuel moisture contents&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | FIRE_AREA&lt;br /&gt;
|fraction of cell area on fire&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | UF&lt;br /&gt;
|fire wind&lt;br /&gt;
|m/s&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | VF&lt;br /&gt;
|fire wind&lt;br /&gt;
|m/s&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | FGRNHFX&lt;br /&gt;
|heat flux from ground fire&lt;br /&gt;
|W/m&amp;lt;sup&amp;gt;2&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | FGRNQFX&lt;br /&gt;
|moisture flux from ground fire&lt;br /&gt;
|W/m&amp;lt;sup&amp;gt;2&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | FCANHFX&lt;br /&gt;
|heat flux from crown fire&lt;br /&gt;
|W/m&amp;lt;sup&amp;gt;2&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | FCANQFX&lt;br /&gt;
|moisture flux from crown fire&lt;br /&gt;
|W/m&amp;lt;sup&amp;gt;2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+Diagnostics for the actual modeled fire&lt;br /&gt;
| scope=&amp;quot;col&amp;quot; | Variable name&lt;br /&gt;
| scope=&amp;quot;col&amp;quot; | Description&lt;br /&gt;
| scope=&amp;quot;col&amp;quot; | Unit&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | ROS&lt;br /&gt;
|rate of spread in the normal direction to the fireline&lt;br /&gt;
|m/s&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | FLINEINT&lt;br /&gt;
|fireline intensity&lt;br /&gt;
|W/m&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | FLINEINT2&lt;br /&gt;
|alternative fireline intensity&lt;br /&gt;
|J/m/s&amp;lt;sup&amp;gt;2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+Diagnostics for fire risk rating - independent on any actual fire going on&lt;br /&gt;
| scope=&amp;quot;col&amp;quot; | Variable name&lt;br /&gt;
| scope=&amp;quot;col&amp;quot; | Description&lt;br /&gt;
| scope=&amp;quot;col&amp;quot; | Unit&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | F_ROS0&lt;br /&gt;
|base rate of spread in all directions&lt;br /&gt;
|m/s&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | F_ROSX&lt;br /&gt;
|X component of the spread vector driven by wind and slope&lt;br /&gt;
|m/s&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | F_ROSY&lt;br /&gt;
|Y component of the spread vector driven by wind and slope&lt;br /&gt;
|m/s&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | F_ROS&lt;br /&gt;
|max spread rate in any direction&lt;br /&gt;
|m/s&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | F_INT&lt;br /&gt;
|fire reaction intensity for risk rating, without fire&lt;br /&gt;
|J/m&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;/s&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | F_LINEINT&lt;br /&gt;
|Byram fireline intensity for risk rating, without fire&lt;br /&gt;
|J/m/s&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | F_LINEINT2&lt;br /&gt;
|alternative fireline intensity for risk rating, without fire&amp;quot; &lt;br /&gt;
|J/m/s&amp;lt;sup&amp;gt;2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+Constant data arrays&lt;br /&gt;
| scope=&amp;quot;col&amp;quot; | Variable name&lt;br /&gt;
| scope=&amp;quot;col&amp;quot; | Description&lt;br /&gt;
| scope=&amp;quot;col&amp;quot; | Unit&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | FXLONG&lt;br /&gt;
|longitude of midpoints of fire cells &lt;br /&gt;
|degrees&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; |FXLAT&lt;br /&gt;
|latitude of midpoints of fire cells&lt;br /&gt;
|degrees&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; |FUEL_TIME&lt;br /&gt;
|fuel&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; |BBB&lt;br /&gt;
|fuel&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; |PHISC&lt;br /&gt;
|fuel&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; |PHIWC&lt;br /&gt;
|fuel&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; |R_0&lt;br /&gt;
|fuel&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; |FGIP&lt;br /&gt;
|fuel&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; |FZ0&lt;br /&gt;
|fuel roughness height&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; |FWH&lt;br /&gt;
|fuel fire wind height&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; |ISCHAP&lt;br /&gt;
|fuel &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note: The fuel variables are automatically filled from the fuel category (NFUEL_CAT) at initialization, which is contained in [Running WRF-SFIRE with real data in the WRFx system#Get fire static data|static data]; they are normally not set by the user directly.&lt;br /&gt;
&lt;br /&gt;
== Fire intensities ==&lt;br /&gt;
We introduce three fire intensities:&lt;br /&gt;
&lt;br /&gt;
1. Reaction : The heat release rate per unit area of the front.&lt;br /&gt;
&lt;br /&gt;
2. Byram :  The heat produced per unit length of the fireline in unit time (J/m/s) in the so-called flaming zone behind the fireline.&lt;br /&gt;
&lt;br /&gt;
3. Fireline, new : The amount of heat generated by the advancing fireline from the newly burning fuel only, in the unit of time.&lt;br /&gt;
&lt;br /&gt;
Definitions and implementations of fire intensities include variables :&lt;br /&gt;
&lt;br /&gt;
* H&amp;lt;sub&amp;gt;F&amp;lt;/sub&amp;gt; : Heat contents of the fuel (J/kg)&lt;br /&gt;
&lt;br /&gt;
* R&amp;lt;sub&amp;gt;S&amp;lt;/sub&amp;gt; : Fire spread rate (m/s)&lt;br /&gt;
&lt;br /&gt;
* F : Fuel remaining at time t (kg/m&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
* F&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt; : Initial fuel load (kg/m&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
* F&amp;lt;sub&amp;gt;n&amp;lt;/sub&amp;gt; : Fuel load when reaction ends (kg/m&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
* F&amp;lt;sub&amp;gt;r&amp;lt;/sub&amp;gt; : Fuel fraction burnt in the flaming (or reaction) zone (1)&lt;br /&gt;
&lt;br /&gt;
* T&amp;lt;sub&amp;gt;f&amp;lt;/sub&amp;gt; : fuel burn time (1-1/e  63% of the fuel burned) (s)&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;var&amp;gt;&amp;amp;tau;&amp;lt;/var&amp;gt;&amp;lt;sub&amp;gt;R&amp;lt;/sub&amp;gt; : Reaction time (s) &lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
| scope=&amp;quot;col&amp;quot; | Intensity &lt;br /&gt;
| scope=&amp;quot;col&amp;quot; | Definition&lt;br /&gt;
| scope=&amp;quot;col&amp;quot; | Implementation&lt;br /&gt;
| scope=&amp;quot;col&amp;quot; | Unit&lt;br /&gt;
| scope=&amp;quot;col&amp;quot; | Depends on rates spread R&amp;lt;sub&amp;gt;S&amp;lt;/sub&amp;gt;&lt;br /&gt;
| scope=&amp;quot;col&amp;quot; | Depends on rates burn 1/T&amp;lt;sub&amp;gt;f&amp;lt;/sub&amp;gt; &lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | Reaction&lt;br /&gt;
|I&amp;lt;sub&amp;gt;R&amp;lt;/sub&amp;gt; = H&amp;lt;sub&amp;gt;F&amp;lt;/sub&amp;gt;(F&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt;-F&amp;lt;sub&amp;gt;n&amp;lt;/sub&amp;gt;)/&amp;lt;var&amp;gt;&amp;amp;tau;&amp;lt;/var&amp;gt;&amp;lt;sub&amp;gt;R&amp;lt;/sub&amp;gt; &lt;br /&gt;
|I&amp;lt;sub&amp;gt;R&amp;lt;/sub&amp;gt; = H&amp;lt;sub&amp;gt;F&amp;lt;/sub&amp;gt;F&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt;F&amp;lt;sub&amp;gt;r&amp;lt;/sub&amp;gt;/(-T&amp;lt;sub&amp;gt;f&amp;lt;/sub&amp;gt;ln(1-F&amp;lt;sub&amp;gt;r&amp;lt;/sub&amp;gt;)&lt;br /&gt;
| J/m&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;/s&lt;br /&gt;
| no&lt;br /&gt;
| yes&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | Byram&lt;br /&gt;
| I = H&amp;lt;sub&amp;gt;F&amp;lt;/sub&amp;gt;R&amp;lt;sub&amp;gt;S&amp;lt;/sub&amp;gt;F&lt;br /&gt;
| I = H&amp;lt;sub&amp;gt;F&amp;lt;/sub&amp;gt;R&amp;lt;sub&amp;gt;S&amp;lt;/sub&amp;gt;F&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt;F&amp;lt;sub&amp;gt;r&amp;lt;/sub&amp;gt;&lt;br /&gt;
| J/m/s&lt;br /&gt;
| yes&lt;br /&gt;
| no&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; | Fireline, new&lt;br /&gt;
| J(&amp;lt;var&amp;gt;&amp;amp;Delta;&amp;lt;/var&amp;gt;t&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;) &amp;amp;asymp; H&amp;lt;sub&amp;gt;F&amp;lt;/sub&amp;gt;R&amp;lt;sub&amp;gt;S&amp;lt;/sub&amp;gt;F&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt; &amp;amp;int;&amp;lt;sub&amp;gt;a&amp;lt;/sub&amp;gt;&amp;lt;sup&amp;gt;&amp;lt;var&amp;gt;&amp;amp;Delta;&amp;lt;/var&amp;gt;t&amp;lt;/sup&amp;gt;&amp;lt;var&amp;gt;&amp;amp;tau;&amp;lt;/var&amp;gt;&amp;lt;sub&amp;gt;R&amp;lt;/sub&amp;gt;/T&amp;lt;sub&amp;gt;f&amp;lt;/sub&amp;gt; d&amp;lt;var&amp;gt;&amp;amp;tau;&amp;lt;/var&amp;gt;&lt;br /&gt;
| J = H&amp;lt;sub&amp;gt;F&amp;lt;/sub&amp;gt;R&amp;lt;sub&amp;gt;S&amp;lt;/sub&amp;gt;F&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt;/2T&amp;lt;sub&amp;gt;f&amp;lt;/sub&amp;gt;&lt;br /&gt;
| J/m/s&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
| yes&lt;br /&gt;
| yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
* [[How to interpret WRF variables]]&lt;/div&gt;</summary>
		<author><name>Jmandel</name></author>
	</entry>
	<entry>
		<id>https://wiki.openwfm.org/index.php?title=How_to_run_the_standalone_fire_model_in_WRF-SFIRE&amp;diff=8412</id>
		<title>How to run the standalone fire model in WRF-SFIRE</title>
		<link rel="alternate" type="text/html" href="https://wiki.openwfm.org/index.php?title=How_to_run_the_standalone_fire_model_in_WRF-SFIRE&amp;diff=8412"/>
		<updated>2026-01-27T07:29:08Z</updated>

		<summary type="html">&lt;p&gt;Jmandel: For building the current version, please follow https://github.com/openwfm/WRF-SFIRE/issues/3&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{users guide}}&lt;br /&gt;
 &lt;br /&gt;
===Important note===&lt;br /&gt;
The standalone is being updated for current WRF-SFIRE.&lt;br /&gt;
For building the current version, please follow https://github.com/openwfm/WRF-SFIRE/issues/3&lt;br /&gt;
&lt;br /&gt;
The fire code in WRF-SFIRE, called SFIRE (for Spread FIRE model), can be used independently without WRF, using only one-way atmosphere-fire coupling. WRF needs to run to create the atmospheric forcing first.  &lt;br /&gt;
&lt;br /&gt;
==Step by step instructions==&lt;br /&gt;
&lt;br /&gt;
===Building the software===&lt;br /&gt;
* [[How to get WRF-Fire|Download and build WRF-SFIRE software]] to create &#039;&#039;&#039;wrf.exe&#039;&#039;&#039; and leave the &#039;&#039;&#039;NETCDF&#039;&#039;&#039; environment variable set.&lt;br /&gt;
&lt;br /&gt;
* Change to the &#039;&#039;&#039;standalone&#039;&#039;&#039; directory.&lt;br /&gt;
&lt;br /&gt;
* Find a suitable &#039;&#039;&#039;make.inc.*&#039;&#039;&#039; file and soft-link it to &#039;&#039;&#039;make.inc&#039;&#039;&#039;, for example &#039;&#039;&#039;ln  -s make.inc.gfortran make.inc&#039;&#039;&#039; and type &#039;&#039;&#039;make&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Running the software===&lt;br /&gt;
&lt;br /&gt;
* Navigate to a directory with your example (such as &#039;&#039;&#039;test/em_sfire/hill&#039;&#039;&#039;). Make sure &#039;&#039;&#039;namelist.input&#039;&#039;&#039; specifies a short  &#039;&#039;&#039;history_interval_s&#039;&#039;&#039; (these will be the atmosphere states used by the fire model) and set large &#039;&#039;&#039;frames_per_outfile&#039;&#039;&#039; so that only one &#039;&#039;&#039;wrfout&#039;&#039;&#039; file is created.&lt;br /&gt;
&lt;br /&gt;
* Set up the problem by either &#039;&#039;&#039;ideal.exe&#039;&#039;&#039; or &#039;&#039;&#039;real.exe&#039;&#039;&#039; and run &#039;&#039;&#039;wrf.exe&#039;&#039;&#039; as usual. &lt;br /&gt;
&lt;br /&gt;
* Link the created &#039;&#039;&#039;wrfout&#039;&#039;&#039; file to &#039;&#039;&#039;fire_input.nc&#039;&#039;&#039;: &#039;&#039;&#039;ln -s wrfout... fire_iput.nc&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Wait for wrf.exe to finish.&lt;br /&gt;
&lt;br /&gt;
* Run &#039;&#039;&#039;fire.exe&#039;&#039;&#039; in the same directory. This will create the file &#039;&#039;&#039;fire_output.nc&#039;&#039;&#039; with the results.&lt;br /&gt;
&lt;br /&gt;
==How it works==&lt;br /&gt;
&lt;br /&gt;
* The standalone model &#039;&#039;&#039;fire.exe&#039;&#039;&#039; reads the fire model inputs from the &#039;&#039;&#039;wrfout&#039;&#039;&#039;, including interpolated wind fields &#039;&#039;&#039;UF&#039;&#039;&#039; and &#039;&#039;&#039;VF&#039;&#039;&#039;. Because the first frame in &#039;&#039;&#039;wrfout&#039;&#039;&#039; is created before the fire model is called and so those fields are not set yet, the fire model starts from the second frame. The atmosphere fields are interpolated linearly in time between the frames before they are passed to the fire model.&lt;br /&gt;
&lt;br /&gt;
* The file &#039;&#039;&#039;fire_output.nc&#039;&#039;&#039; has the same format as &#039;&#039;&#039;wrfout&#039;&#039;&#039; but it contains only the variables that are the fire model outputs and some other fields copied from &#039;&#039;&#039;wrfout&#039;&#039;&#039;, which are needed for visualization and interpreting the results. These include coordinates of the fire nodes in &#039;&#039;&#039;FXLONG&#039;&#039;&#039; and &#039;&#039;&#039;FXLAT&#039;&#039;&#039;, the time string &#039;&#039;&#039;Times&#039;&#039;&#039;, and the terrain height &#039;&#039;&#039;ZSF&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* The standalone model build compiles the fire model files from the &#039;&#039;&#039;WRFV3/phys&#039;&#039;&#039; directory, so if the fire model changes, the standalone model may have to be updated. However, the standalone model does not depend on  WRF directly. The code consists of 3 files:&lt;br /&gt;
** &#039;&#039;&#039;fire.F&#039;&#039;&#039; is the standalone model driver&lt;br /&gt;
** &#039;&#039;&#039;wrf_netcdf.F&#039;&#039;&#039; reads and writes {{wp|NetCDF|NetCDF}} files compatible with WRF&lt;br /&gt;
** &#039;&#039;&#039;wrf_fakes.F&#039;&#039;&#039; implements a very limited subset of WRF routines to avoid dependency&lt;br /&gt;
&lt;br /&gt;
*The files &#039;&#039;&#039;config_assigns.inc&#039;&#039;&#039; &#039;&#039;&#039;namelist_defaults.inc&#039;&#039;&#039; &#039;&#039;&#039;namelist_defines2.inc&#039;&#039;&#039; &#039;&#039;&#039;namelist_defines.inc&#039;&#039;&#039; &#039;&#039;&#039;namelist_statements.inc&#039;&#039;&#039; files are copied from WRF build to maintain compatibility with &#039;&#039;&#039;namelist.input&#039;&#039;&#039; in WRF. When the WRF registry changes, these files will need to be updated manually from the directory &#039;&#039;&#039;WRFV3/inc&#039;&#039;&#039; after WRF is built and committed again.&lt;br /&gt;
&lt;br /&gt;
==Remarks==&lt;br /&gt;
&lt;br /&gt;
* The results of the coupled model and the standalone model will not be identical, even if the coupled model runs the same fire, because the wind fields are interpolated between the frames for the standalone model. But the results should be close.&lt;br /&gt;
&lt;br /&gt;
* To simulate different fires in the standalone model, the coupled model should run without ignition.  Then the coupled model will create the fire model inputs, but the atmosphere state will not be disturbed by the fire in the coupled model.&lt;br /&gt;
&lt;br /&gt;
* The &#039;&#039;&#039;&amp;amp;fire&#039;&#039;&#039; section in &#039;&#039;&#039;namelist.input&#039;&#039;&#039; can change, and the fuel data including &#039;&#039;&#039;namelist.fire&#039;&#039;&#039; may also change.&lt;br /&gt;
&lt;br /&gt;
* At the moment, &#039;&#039;&#039;fire.exe&#039;&#039;&#039; is serial only.&lt;br /&gt;
&lt;br /&gt;
==Works with==&lt;br /&gt;
&lt;br /&gt;
* {{WRF-SFIRE-branch|develop-3}} {{WRF-SFIRE-commit|e944a4bf430a0ca8f28dce5c08ff2de11dc94d5|Oct 22 2025}}&lt;br /&gt;
* Tested with GNU Fortran (GCC) 9.2.1 on Centos 8.3, libnetcdf 15.0.1, libnetcdff 7.0.0&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
* [[SFIRE|Fire model interface and standalone code description]]&lt;br /&gt;
* [[SFIRE variables]]&lt;br /&gt;
&lt;br /&gt;
[[Category:WRF-Fire]]&lt;br /&gt;
[[Category:Howtos|Run the standalone fire model in WRF-Fire]]&lt;/div&gt;</summary>
		<author><name>Jmandel</name></author>
	</entry>
	<entry>
		<id>https://wiki.openwfm.org/index.php?title=WRF-SFIRE&amp;diff=8411</id>
		<title>WRF-SFIRE</title>
		<link rel="alternate" type="text/html" href="https://wiki.openwfm.org/index.php?title=WRF-SFIRE&amp;diff=8411"/>
		<updated>2026-01-03T10:44:03Z</updated>

		<summary type="html">&lt;p&gt;Jmandel: /* Web-based run system WRFX */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{users guide}}&lt;br /&gt;
[[Category:WRF-SFIRE]]&lt;br /&gt;
The fire code in WRF-SFIRE is called SFIRE (for Spread FIRE model). It is based on the [[wikipedia:Level set method|level set method]]. Since June 2011, we call the fire code SFIRE because of [[changes in WRF-Fire 3.3 release]]. The coupled code is called [[WRF]]-[[SFIRE]], and we reserve the designation [[WRF-Fire]] for the code in the WRF release.&lt;br /&gt;
&lt;br /&gt;
==Standalone code==&lt;br /&gt;
&lt;br /&gt;
SFIRE can be used independently without WRF for testing. To make comparison easier, it can run from the same inputs as WRF-Fire. &lt;br /&gt;
&lt;br /&gt;
* See [[How to run the standalone fire model in WRF-Fire]].&lt;br /&gt;
* The build process in &#039;&#039;&#039;standalone&#039;&#039;&#039; uses the generated source code from the WRF file tree, namely the files &#039;&#039;&#039;phys/module_fr_sfire_*.f90&#039;&#039;&#039; except &#039;&#039;&#039;phys/module_fr_sfire_driver_wrf.f90&#039;&#039;&#039;. There is no code duplication. Instead of WRF, the fire code is linked with the  &#039;&#039;&#039;*.F&#039;&#039;&#039; files in the &#039;&#039;&#039;standalone&#039;&#039;&#039; directory, which provide I/O and substitute the required subset of WRF functionality.&lt;br /&gt;
&lt;br /&gt;
==Interface between WRF and SFIRE==&lt;br /&gt;
&lt;br /&gt;
* The defined interface to SFIRE is between &#039;&#039;&#039;WRFV3/phys/module_fr_sfire_driver_wrf.F&#039;&#039;&#039; and subroutine &#039;&#039;&#039;sfire_driver_em&#039;&#039;&#039; in &#039;&#039;&#039;WRFV3/phys/module_fr_sfire_driver.F&#039;&#039;&#039;&lt;br /&gt;
* WRF calls &#039;&#039;&#039;sfire_driver_em&#039;&#039;&#039; once at initialization, and then (with slightly different arguments) in every time step.&lt;br /&gt;
* The arguments of &#039;&#039;&#039;sfire_driver_em&#039;&#039;&#039; consist of two structures (called derived types in Fortran), &#039;&#039;&#039;grid&#039;&#039;&#039;, which contains all state, input, and output variables, and &#039;&#039;&#039;config_flags&#039;&#039;&#039;, with all variables read from from file &#039;&#039;&#039;namelist.input&#039;&#039;&#039;, and some array dimensions.&lt;br /&gt;
** The standalone code defines its own &#039;&#039;&#039;grid&#039;&#039;&#039; derived type with only the subset of the fields needed. All fields in &#039;&#039;&#039;grid&#039;&#039;&#039; are set in the standalone driver main file, &#039;&#039;&#039;standalone/model_test_main.F&#039;&#039;&#039;, and nothing is hidden elsewhere.&lt;br /&gt;
** The standalone code replicates &#039;&#039;&#039;config_flags&#039;&#039;&#039; from WRF using include files named &#039;&#039;&#039;*.inc&#039;&#039;&#039; in the &#039;&#039;&#039;standalone&#039;&#039;&#039; directory. These include files are copies of the files generated by the WRF build process in &#039;&#039;&#039;WRFV3/inc&#039;&#039;&#039;. They are not soft links so that one can build the standalone code without building WRF. The &#039;&#039;&#039;inc&#039;&#039;&#039; files may need to be updated when the description of the configuration flags in the WRF registry changes.&lt;br /&gt;
&lt;br /&gt;
==SFIRE architecture==&lt;br /&gt;
&lt;br /&gt;
* SFIRE is compliant with [http://www.mmm.ucar.edu/wrf/WG2/WRF_conventions.html WRF coding conventions]. &lt;br /&gt;
* WRF divides the horizontal domain into &#039;&#039;patches&#039;&#039; and divides the patches into &#039;&#039;tiles&#039;&#039;. Each patch executes in one MPI process. Each tile is updated by one OpenMP thread. &lt;br /&gt;
* The SFIRE code is capable of parallel execution in shared memory. Division into tiles is controlled by fields in &#039;&#039;&#039;grid&#039;&#039;&#039;. There is only one OpenMP parallel loop over the tiles, in &#039;&#039;&#039;WRFV3/phys/module_fr_sfire_driver.F&#039;&#039;&#039;. The rest of the SFIRE code executes on a single tile, starting from &#039;&#039;&#039;WRFV3/phys/module_fr_sfire_model.F&#039;&#039;&#039; Because the tiles need to access values from neighboring tiles at several points in the computation, within a single invocation of SFIRE, the parallel loop is executed several times to synchronize the data in memory at the exit from the loop. Each execution of the parallel loop performs a different stage of the computation.&lt;br /&gt;
* When SFIRE runs in distributed memory, the communication between the patches is done in includes in &#039;&#039;&#039;WRFV3/phys/module_fr_sfire_driver.F&#039;&#039;&#039; (search for HALO). This has no effect in the standalone code; in WRF, the includes are provided by the WRF parallel infrastructure, RSL-Lite. If you want to run SFIRE in MPI, you need to provide equivalent HALO includes yourself.&lt;br /&gt;
* SFIRE does not keep any state except scalar flags and fixed-size tables, set at initialization. All adjustable-sized arrays preserved beween calls are in &#039;&#039;&#039;grid&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Required testing==&lt;br /&gt;
&lt;br /&gt;
If you change anything in the files &#039;&#039;&#039;phys/module_fr_sfire_*.F&#039;&#039;&#039;, you must test that the changes do not break WRF-Fire, otherwise your changes will not be maintainable.&lt;br /&gt;
&lt;br /&gt;
* Build WRF-SFIRE with SM+DM parallelism with debugging, and test all 4 versions (serial, SM, DM, SM+DM) with the examples provided in &#039;&#039;&#039;test/em_fire&#039;&#039;&#039; and various numbers of processors. The results (the numerical values in the arrays the &#039;&#039;&#039;wrfrst&#039;&#039;&#039; files, not the files themselves) should be bit-identical to each other and identical to what they were before your changes. You can compare the files using the &#039;&#039;&#039;diffwrf&#039;&#039;&#039; utility, which is built as a part of the WRF compilation process, or start Matlab in &#039;&#039;&#039;test/em_fire&#039;&#039;&#039; (to set the path) and use the command &#039;&#039;&#039;ncdiff&#039;&#039;&#039; in Matlab.&lt;br /&gt;
* Build WRF-Fire with optimization and test on several platforms (at least gfortran).&lt;br /&gt;
&lt;br /&gt;
==Web-based run system WRFx==&lt;br /&gt;
This system is available at http://github.com/openwfm. It consists of the following parts:&lt;br /&gt;
* [http://github.com/openwfm/wrfxpy wrfxpy] - Initiate and manage WRF-SFIRE simulations on a cluster. Automates data download, queuing and monitoring jobs, and postprocessing outputs into geolocated images. (Python). Intended to run on a head node of the cluster.&lt;br /&gt;
* [http://github.com/openwfm/wrfxctrl wrfxctrl] - Map-based web interface to wrfxpy (Python and Javascript). Intended to run on a head node of the cluster. Runs its own web server.  &lt;br /&gt;
* [http://github.com/openwfm/wrfxweb wrfxweb] - Map-based visualization server running on a remote server. The visualizations are also available as Google Earth KML files. (Browser-based Javascript, Python utilities) Designed to run on a small cloud machine.&lt;br /&gt;
See [[Running WRF-SFIRE with real data in the WRFx system]].&lt;br /&gt;
&lt;br /&gt;
==Works with==&lt;br /&gt;
&lt;br /&gt;
* WRF-SFIRE master branch&lt;br /&gt;
&lt;br /&gt;
[[Category:WRF-Fire]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Jmandel</name></author>
	</entry>
	<entry>
		<id>https://wiki.openwfm.org/index.php?title=Widlund_prize&amp;diff=8410</id>
		<title>Widlund prize</title>
		<link rel="alternate" type="text/html" href="https://wiki.openwfm.org/index.php?title=Widlund_prize&amp;diff=8410"/>
		<updated>2025-12-10T06:07:35Z</updated>

		<summary type="html">&lt;p&gt;Jmandel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Short description|Award in numerical analysis}}&lt;br /&gt;
{{Use dmy dates|date=December 2025}}&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;Olof B. Widlund Prize&#039;&#039;&#039; (formally, the &#039;&#039;&#039;Olof B. Widlund Prize for Excellence in Domain Decomposition Methods&#039;&#039;&#039;) is an award in numerical analysis given in the &#039;&#039;Domain Decomposition Methods&#039;&#039; (DDM) community. According to ddm.org, it is a prize for an established scientist recognizing contributions to domain decomposition methods (including theory, algorithms, scalable implementation, applications, and community service). The awardee gives a plenary lecture at the next ddm.org conference and receives a certificate and a cash award of €2500.&amp;lt;ref name=&amp;quot;ddmPrize&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The prize is named in honor of mathematician [[Olof B. Widlund]].&amp;lt;ref name=&amp;quot;ddmPrize&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
According to ddm.org, the prize was established by the Scientific Committee of ddm.org at DD26 (2020) and awarded for the first time at DD27 (Prague, 2022).&amp;lt;ref name=&amp;quot;ddmPrize&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Recipients ==&lt;br /&gt;
* &#039;&#039;&#039;2022&#039;&#039;&#039;: Maksymilian Dryja (University of Warsaw).&amp;lt;ref name=&amp;quot;dd27GanderNataf&amp;quot;&amp;gt;{{cite book&lt;br /&gt;
 |last1=Gander |first1=Martin J.&lt;br /&gt;
 |last2=Nataf |first2=Frédéric&lt;br /&gt;
 |chapter=Substructuring of Arbitrary Domain Decomposition Methods&lt;br /&gt;
 |editor-last1=Dostál |editor-first1=Zdeněk&lt;br /&gt;
 |editor-last2=Kozubek |editor-first2=Tomáš&lt;br /&gt;
 |editor-last3=Klawonn |editor-first3=Axel&lt;br /&gt;
 |editor-last4=Langer |editor-first4=Ulrich&lt;br /&gt;
 |editor-last5=Pavarino |editor-first5=Luca F.&lt;br /&gt;
 |editor-last6=Šístek |editor-first6=Jakub&lt;br /&gt;
 |editor-last7=Widlund |editor-first7=Olof B.&lt;br /&gt;
 |title=Domain Decomposition Methods in Science and Engineering XXVII&lt;br /&gt;
 |publisher=Springer Nature Switzerland&lt;br /&gt;
 |location=Cham&lt;br /&gt;
 |year=2024&lt;br /&gt;
 |isbn=978-3-031-50769-4&lt;br /&gt;
 |pages=223–230&lt;br /&gt;
 |at=p. 225&lt;br /&gt;
}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;2024&#039;&#039;&#039;: Charbel Farhat (Stanford University).&amp;lt;ref name=&amp;quot;ddmPrize&amp;quot; /&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;2025&#039;&#039;&#039;: Jan Mandel (University of Colorado).&amp;lt;ref name=&amp;quot;ddmPrize&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
{{reflist}}&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* [https://ddm.org/widlund_prize.php The Olof B. Widlund Prize] (ddm.org)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Define named references --&amp;gt;&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;ddmPrize&amp;quot;&amp;gt;{{cite web&lt;br /&gt;
 |title=The Olof B. Widlund Prize&lt;br /&gt;
 |url=https://ddm.org/widlund_prize.php&lt;br /&gt;
 |website=ddm.org&lt;br /&gt;
 |access-date=9 December 2025&lt;br /&gt;
}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jmandel</name></author>
	</entry>
	<entry>
		<id>https://wiki.openwfm.org/index.php?title=Widlund_prize&amp;diff=8409</id>
		<title>Widlund prize</title>
		<link rel="alternate" type="text/html" href="https://wiki.openwfm.org/index.php?title=Widlund_prize&amp;diff=8409"/>
		<updated>2025-12-10T06:06:09Z</updated>

		<summary type="html">&lt;p&gt;Jmandel: v2&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Short description|Award in numerical analysis}}&lt;br /&gt;
{{Use dmy dates|date=December 2025}}&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;Olof B. Widlund Prize&#039;&#039;&#039; (formally, the &#039;&#039;&#039;Olof B. Widlund Prize for Excellence in Domain Decomposition Methods&#039;&#039;&#039;) is an award in numerical analysis given in the &#039;&#039;Domain Decomposition Methods&#039;&#039; (DDM) community. According to ddm.org, it is a prize for an established scientist recognizing contributions to the theory, algorithms, implementation, applications, and community service related to domain decomposition methods. The awardee gives a plenary lecture at the next ddm.org conference and receives a certificate and a cash award of €2500.{{refn|name=ddmPrize}}&lt;br /&gt;
&lt;br /&gt;
The prize is named in honor of mathematician [[Olof B. Widlund]].{{refn|name=ddmPrize}}&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
According to ddm.org, the prize was established by the Scientific Committee of ddm.org at DD26 (2020) and awarded for the first time at DD27 (Prague, 2022).{{refn|name=ddmPrize}}&lt;br /&gt;
&lt;br /&gt;
== Recipients ==&lt;br /&gt;
* &#039;&#039;&#039;2022&#039;&#039;&#039;: Maksymilian Dryja (University of Warsaw).&amp;lt;ref name=&amp;quot;dd27Chapter225&amp;quot;&amp;gt;{{cite book&lt;br /&gt;
 |last1=Gander |first1=Martin J.&lt;br /&gt;
 |last2=Nataf |first2=Frédéric&lt;br /&gt;
 |title=Substructuring of Arbitrary Domain Decomposition Methods&lt;br /&gt;
 |editor-last1=Dostál |editor-first1=Zdeněk&lt;br /&gt;
 |editor-last2=Kozubek |editor-first2=Tomáš&lt;br /&gt;
 |editor-last3=Klawonn |editor-first3=Axel&lt;br /&gt;
 |editor-last4=Langer |editor-first4=Ulrich&lt;br /&gt;
 |editor-last5=Pavarino |editor-first5=Luca F.&lt;br /&gt;
 |editor-last6=Šístek |editor-first6=Jakub&lt;br /&gt;
 |editor-last7=Widlund |editor-first7=Olof B.&lt;br /&gt;
 |book-title=Domain Decomposition Methods in Science and Engineering XXVII&lt;br /&gt;
 |publisher=Springer Nature Switzerland&lt;br /&gt;
 |location=Cham&lt;br /&gt;
 |year=2024&lt;br /&gt;
 |isbn=978-3-031-50769-4&lt;br /&gt;
 |pages=225&lt;br /&gt;
}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;2024&#039;&#039;&#039;: Charbel Farhat (Stanford University).{{refn|name=ddmPrize}}&lt;br /&gt;
* &#039;&#039;&#039;2025&#039;&#039;&#039;: Jan Mandel (University of Colorado).{{refn|name=ddmPrize}}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
{{reflist}}&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* [https://ddm.org/widlund_prize.php The Olof B. Widlund Prize] (ddm.org)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Reference definitions --&amp;gt;&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;ddmPrize&amp;quot;&amp;gt;{{cite web&lt;br /&gt;
 |title=The Olof B. Widlund Prize&lt;br /&gt;
 |url=https://ddm.org/widlund_prize.php&lt;br /&gt;
 |website=ddm.org&lt;br /&gt;
 |access-date=9 December 2025&lt;br /&gt;
}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jmandel</name></author>
	</entry>
	<entry>
		<id>https://wiki.openwfm.org/index.php?title=Widlund_prize&amp;diff=8408</id>
		<title>Widlund prize</title>
		<link rel="alternate" type="text/html" href="https://wiki.openwfm.org/index.php?title=Widlund_prize&amp;diff=8408"/>
		<updated>2025-12-10T05:37:30Z</updated>

		<summary type="html">&lt;p&gt;Jmandel: Created page with &amp;quot;The Olof B. Widlund Prize for Excellence in Domain Decomposition Methods was established by the Scientific Committee of [ddm.org|https://ddm.org] at DD26 in 2020, and was awarded for the first time at DD27 in Prague in 2022. The naming of the prize honors a great pioneer of the theory, algorithms, and applications of domain decomposition, a mentor of numerous productive contributors to the field -- both at his own institution and internationally, and a builder of...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [[Olof B. Widlund Prize]] for Excellence in [[Domain Decomposition Methods]] was established by the Scientific Committee of [ddm.org|https://ddm.org] at DD26 in 2020, and was awarded for the first time at DD27 in Prague in 2022. The naming of the prize honors a great pioneer of the theory, algorithms, and applications of domain decomposition, a mentor of numerous productive contributors to the field -- both at his own institution and internationally, and a builder of bridges between theorists and practitioners in academic, industry, and government labs on multiple continents.&lt;/div&gt;</summary>
		<author><name>Jmandel</name></author>
	</entry>
	<entry>
		<id>https://wiki.openwfm.org/index.php?title=Category:WRF-SFIRE_users_guide&amp;diff=8407</id>
		<title>Category:WRF-SFIRE users guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.openwfm.org/index.php?title=Category:WRF-SFIRE_users_guide&amp;diff=8407"/>
		<updated>2025-11-22T19:06:24Z</updated>

		<summary type="html">&lt;p&gt;Jmandel: Category:Software&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an automated index of all pages in the [[WRF-SFIRE users guide]].&lt;br /&gt;
[[Category:WRF-Fire]]&lt;br /&gt;
[[Category:WRF-SFIRE]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Jmandel</name></author>
	</entry>
	<entry>
		<id>https://wiki.openwfm.org/index.php?title=Category:WRF-SFIRE&amp;diff=8406</id>
		<title>Category:WRF-SFIRE</title>
		<link rel="alternate" type="text/html" href="https://wiki.openwfm.org/index.php?title=Category:WRF-SFIRE&amp;diff=8406"/>
		<updated>2025-11-22T19:05:14Z</updated>

		<summary type="html">&lt;p&gt;Jmandel: Category:Software&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;List of pages on [[WRF-SFIRE]].&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Jmandel</name></author>
	</entry>
	<entry>
		<id>https://wiki.openwfm.org/index.php?title=How_to_interpret_WRF_variables&amp;diff=8405</id>
		<title>How to interpret WRF variables</title>
		<link rel="alternate" type="text/html" href="https://wiki.openwfm.org/index.php?title=How_to_interpret_WRF_variables&amp;diff=8405"/>
		<updated>2025-11-22T18:07:03Z</updated>

		<summary type="html">&lt;p&gt;Jmandel: /* Storage order */  rm one more ref to fortran&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{users guide}}&lt;br /&gt;
&lt;br /&gt;
This page describes the interpretation of selected atmospheric variables, which are important for fire visualization. See [http://www.mmm.ucar.edu/wrf/users/pub-doc.html WRF documentation] for further details.&lt;br /&gt;
&lt;br /&gt;
==Grid==&lt;br /&gt;
&lt;br /&gt;
[[File:Wrfgrid.png|250px]][[File:WRF_staggered_grid.gif|500px]]&lt;br /&gt;
&lt;br /&gt;
Grids in WRF are logically rectilinear. Variables for WRF cell indexed &#039;&#039;&#039;(i,j,k)&#039;&#039;&#039; can be located at one of 4 possible points. You can tell where by looking at the WRF registry or the attributes of [[NetCDF]] files, which WRF uses as I/O format. You can also tell by the fact that staggered variables have the staggered dimension larger by one, since there needs to be variable at the last boundary face.&lt;br /&gt;
* at the center of the cell - theta points, not staggered&lt;br /&gt;
* at the center of the left face - U point, staggered in X&lt;br /&gt;
* at the center of the front face - V point, staggered in Y&lt;br /&gt;
* at the center of the bottom face - W point, staggered in Z&lt;br /&gt;
Scalar variables (such as thermodynamical variables, hence the theta: temperature, pressure,...) generally live at theta-points. One exception is the geopotential, which lives at W-points. &lt;br /&gt;
The documentation, some variable names, and comments in the WRF code also associate theta with the vertical position of the mid-plane of the cell and at W with the vertical position of the bottom of the cell.&lt;br /&gt;
&lt;br /&gt;
The orientation of the axes in the real world, such as &amp;quot;east-west&amp;quot;,  in the order of increasing index, such as &#039;&#039;&#039;i&#039;&#039;&#039;, are defined in the registry. For postprocessing, they can be found at runtime as attributes in the NetCDF files.&lt;br /&gt;
&lt;br /&gt;
==Storage order==&lt;br /&gt;
&lt;br /&gt;
Arrays are stored in files and in memory. All arrays are described in the Registry, which is a collection of text files in &#039;&#039;&#039;WRFV3/Registry&#039;&#039;&#039;. The variable names in memory and in files are sometimes different.&lt;br /&gt;
&lt;br /&gt;
The value of the time at the step &#039;&#039;&#039;t&#039;&#039;&#039; is stored in character array &#039;&#039;&#039;Times(:,t)&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Arrays in WRF NETCDF files, like the WRFOUT files, are written with the indexing as &#039;&#039;&#039;(t, z, y, x)&#039;&#039;&#039;, where &#039;&#039;&#039;t&#039;&#039;&#039; is the time index, which varies the slowest. This is how the variables appear when read e.g. in Python or C/C++.  To read the surface values of such 3D arrays at time step &#039;&#039;&#039;t&#039;&#039;&#039; and indices &#039;&#039;&#039;(x,y)&#039;&#039;&#039;, use in Python or C/C++ the indexing &#039;&#039;&#039;(t, 0, y, x)&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
WRF 3D arrays in memory are indexed as &#039;&#039;&#039;(i,k,j)&#039;&#039;&#039; (in FORTRAN) following [http://www.mmm.ucar.edu/wrf/WG2/WRF_conventions.html WRF coding conventions]. There is no time index for the time step in arrays in memory, because WRF works with only one time step at a time. In 2D arrays, there is no vertical &#039;&#039;&#039;k&#039;&#039;&#039; dimension.&lt;br /&gt;
&lt;br /&gt;
==Wind==&lt;br /&gt;
&lt;br /&gt;
Components of the wind velocity vector &#039;&#039;&#039;U&#039;&#039;&#039;, &#039;&#039;&#039;V&#039;&#039;&#039;, &#039;&#039;&#039;W&#039;&#039;&#039; live at the corresponding points, hence the point names. These are in the geometrically horizontal and vertical directions. On flat ground, &#039;&#039;&#039;W&#039;&#039;&#039; on the first level &#039;&#039;k=1&#039;&#039; is zero. However, when the ground has nonzero slope, the vertical velocity components &#039;&#039;&#039;W&#039;&#039;&#039; is generally not zero, because the normal vector to the ground is not vertical.&lt;br /&gt;
&lt;br /&gt;
Note that the picture above center and right (from [http://www.mmm.ucar.edu/wrf/users/docs/arw_v3.pdf WRF documentation]) use half integer indexing. &lt;br /&gt;
* The horizontal wind component &#039;&#039;&#039;U&amp;lt;sub&amp;gt;i-1/2,j,k&amp;lt;/sub&amp;gt;&#039;&#039;&#039; in the X direction is stored in the array entry &#039;&#039;&#039;u(i,j,k)&#039;&#039;&#039;&lt;br /&gt;
* The horizontal wind component &#039;&#039;&#039;V&amp;lt;sub&amp;gt;i,j-1/2,k&amp;lt;/sub&amp;gt;&#039;&#039;&#039; in the Y is stored in the array entry &#039;&#039;&#039;v(i,j,k)&#039;&#039;&#039;&lt;br /&gt;
* The vertical wind component &#039;&#039;&#039;W&amp;lt;sub&amp;gt;i,j,k-1/2&amp;lt;/sub&amp;gt;&#039;&#039;&#039; is stored in the array entry &#039;&#039;&#039;w(i,j,k)&#039;&#039;&#039;&lt;br /&gt;
In particular, the lowest layer  in WRF is &#039;&#039;&#039;k=1&#039;&#039;&#039;, and, on flat ground, &#039;&#039;&#039;w(:,:,1)=0&#039;&#039;&#039;, since the ground is impermeable in the normal direction. On a ground with nonzero slope, &#039;&#039;&#039;w(:,:,1)=0&#039;&#039;&#039; is generally nonzero. The winds at the middle of the first layer, at the height &#039;&#039;&#039;eta&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&#039;&#039;&#039;, are &#039;&#039;&#039;u(:,:,1)&#039;&#039;&#039;, &#039;&#039;&#039;v(:,:,1)&#039;&#039;&#039;, and they are generally nonzero. &lt;br /&gt;
&lt;br /&gt;
Because the components of the wind velocity vector are on different staggered grids, and visualization software usually expects all three components of the velocity vector based at the same point, they need to be interpolated to theta-points (cell centers) for display:&lt;br /&gt;
: &#039;&#039;&#039;U_THETA(i,j,k) = 0.5*(U(i,j,k) + U(i+1,j,k))&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;V_THETA(i,j,k) = 0.5*(V(i,j,k) + V(i,j+1,k))&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;W_THETA(i,j,k) = 0.5*(W(i,j,k) + W(i,j,k+1))&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Location==&lt;br /&gt;
&lt;br /&gt;
The longitude and latitude of the theta and U nodes are given by arrays &#039;&#039;&#039;XLONG&#039;&#039;&#039; and &#039;&#039;&#039;XLAT&#039;&#039;&#039;, which are set at initialization and then do not change. However the elevation has to be computed from the flow solution as [[wikipedia:Geopotential height|geopotential height]] by &lt;br /&gt;
: &#039;&#039;&#039;ELEVATION_W(i,j,k) = (PHB(i,j,k) + PH(i,j,k))/9.81&lt;br /&gt;
where &#039;&#039;&#039;PHB + PH&#039;&#039;&#039; is the [[wikipedia:geopotential|geopotential]]. &#039;&#039;&#039;PHB&#039;&#039;&#039; is constant, set at initialization, and &#039;&#039;&#039;PH&#039;&#039;&#039;, called perturbation geopotential, starts as zero and varies with time.&lt;br /&gt;
&lt;br /&gt;
PH and PHB live at the W-points, thus the geopotential height at the lowest level is the same as terrain height&lt;br /&gt;
: &#039;&#039;&#039;ELEVATION_W(i,j) = PHB(i,j,1)/9.81&lt;br /&gt;
up to rounding error. This variable is also part of WRF state as &#039;&#039;&#039;z_at_w&#039;&#039;&#039; and its output to wrfout or wrfrst files can be enabled in the registry.&lt;br /&gt;
&lt;br /&gt;
To find the elevation of the cell theta-points (the cell midplane, where the pressure and other variables than wind live), you need to interpolate between the elevation of the top and the bottom:&lt;br /&gt;
:&#039;&#039;&#039;ELEVATION_THETA(i,j,k) =0.5*(PHB(i,j,k) + PH(i,j,k) + PHB(i,j,k+1) + PH(i,j,k+1))/9.81&lt;br /&gt;
&lt;br /&gt;
This variable is also part of  WRF state as &#039;&#039;&#039;Z&#039;&#039;&#039;  and its output to wrfout or wrfrst files can be enabled in the [https://github.com/jbeezley/wrf-fire/blob/master/wrfv2_fire/Registry/Registry.EM_COMMON#L306 registry].&lt;br /&gt;
&lt;br /&gt;
==Temperature==&lt;br /&gt;
&lt;br /&gt;
[[wikipedia:Potential temperature|Potential temperature]] in K is 300+&#039;&#039;&#039;T&#039;&#039;&#039;. The potential temperature is most suitable for visualization. However, the temperature as measured by instruments is sometimes needed for comparison. The potential temperature is converted by...  &#039;&#039;coming soon&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Pressure==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;coming soon&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[SFIRE variables]]&lt;br /&gt;
* [[WRF-Fire documentation]]&lt;br /&gt;
* [http://www.mmm.ucar.edu/wrf/users/docs/user_guide_V3/users_guide_chap5.htm#fields WRF output fields from the WRF-ARW user&#039;s guide]&lt;br /&gt;
* Grid: [http://www.mmm.ucar.edu/wrf/users/docs/arw_v3.pdf A Description of the Advanced Research WRF Version 3 (June 2008)] Fig 7.3 page 59&lt;br /&gt;
* [http://www.mmm.ucar.edu/wrf/WG2/WRF_conventions.html WRF Coding Conventions]&lt;br /&gt;
* [http://www.mmm.ucar.edu/wrf/users/tutorial/200807/WRF%20Registry%20and%20Examples.pdf WRF Registry and Examples]&lt;br /&gt;
* [http://www.mmm.ucar.edu/wrf/WG2/software_v2/ WRF v2 Software Tools and Documentation] (there does not seem to be a document for V3?)&lt;br /&gt;
* [http://www.mmm.ucar.edu/wrf/WG2/software_2.0/registry_schaffer.pdf Description of WRF Registry]&lt;br /&gt;
* [http://www.google.com/url?sa=t&amp;amp;source=web&amp;amp;cd=2&amp;amp;ved=0CBsQFjAB&amp;amp;url=http%3A%2F%2Fyosemite.epa.gov%2FR10%2Fairpage.nsf%2Fc36cf12146018ddc882569e5005f1951%2F75f93e40b30302fc88257408008069e9%2F%24FILE%2FBowman.pdf&amp;amp;ei=Xt5hTJH6MseNnQf9rd3NAQ&amp;amp;usg=AFQjCNHsnOPC4nuQjHikOMx4sm40IJMquw&amp;amp;sig2=_4BrV5z1fh0ahYC5s9_t0Q Moving from MM5 to WRF]&lt;br /&gt;
 &lt;br /&gt;
[[Category:WRF-Fire]]&lt;br /&gt;
[[Category:Howtos|Interpret WRF variables]]&lt;/div&gt;</summary>
		<author><name>Jmandel</name></author>
	</entry>
	<entry>
		<id>https://wiki.openwfm.org/index.php?title=How_to_interpret_WRF_variables&amp;diff=8404</id>
		<title>How to interpret WRF variables</title>
		<link rel="alternate" type="text/html" href="https://wiki.openwfm.org/index.php?title=How_to_interpret_WRF_variables&amp;diff=8404"/>
		<updated>2025-11-22T18:05:46Z</updated>

		<summary type="html">&lt;p&gt;Jmandel: /* Storage order */ rm fortran ordering in files&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{users guide}}&lt;br /&gt;
&lt;br /&gt;
This page describes the interpretation of selected atmospheric variables, which are important for fire visualization. See [http://www.mmm.ucar.edu/wrf/users/pub-doc.html WRF documentation] for further details.&lt;br /&gt;
&lt;br /&gt;
==Grid==&lt;br /&gt;
&lt;br /&gt;
[[File:Wrfgrid.png|250px]][[File:WRF_staggered_grid.gif|500px]]&lt;br /&gt;
&lt;br /&gt;
Grids in WRF are logically rectilinear. Variables for WRF cell indexed &#039;&#039;&#039;(i,j,k)&#039;&#039;&#039; can be located at one of 4 possible points. You can tell where by looking at the WRF registry or the attributes of [[NetCDF]] files, which WRF uses as I/O format. You can also tell by the fact that staggered variables have the staggered dimension larger by one, since there needs to be variable at the last boundary face.&lt;br /&gt;
* at the center of the cell - theta points, not staggered&lt;br /&gt;
* at the center of the left face - U point, staggered in X&lt;br /&gt;
* at the center of the front face - V point, staggered in Y&lt;br /&gt;
* at the center of the bottom face - W point, staggered in Z&lt;br /&gt;
Scalar variables (such as thermodynamical variables, hence the theta: temperature, pressure,...) generally live at theta-points. One exception is the geopotential, which lives at W-points. &lt;br /&gt;
The documentation, some variable names, and comments in the WRF code also associate theta with the vertical position of the mid-plane of the cell and at W with the vertical position of the bottom of the cell.&lt;br /&gt;
&lt;br /&gt;
The orientation of the axes in the real world, such as &amp;quot;east-west&amp;quot;,  in the order of increasing index, such as &#039;&#039;&#039;i&#039;&#039;&#039;, are defined in the registry. For postprocessing, they can be found at runtime as attributes in the NetCDF files.&lt;br /&gt;
&lt;br /&gt;
==Storage order==&lt;br /&gt;
&lt;br /&gt;
Arrays are stored in files and in memory. All arrays are described in the Registry, which is a collection of text files in &#039;&#039;&#039;WRFV3/Registry&#039;&#039;&#039;. The variable names in memory and in files are sometimes different.&lt;br /&gt;
&lt;br /&gt;
The value of the time at the step &#039;&#039;&#039;t&#039;&#039;&#039; is stored in character array &#039;&#039;&#039;Times(:,t)&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Arrays in WRF NETCDF files, like the WRFOUT files, are written with the indexing as &#039;&#039;&#039;(t, z, y, x)&#039;&#039;&#039;, where &#039;&#039;&#039;t&#039;&#039;&#039; is the time index, which varies the slowest. This is how the variables appear when read e.g. in Python.  However, when read in FORTRAN, the same arrays appear in the FORTRAN column major odering &#039;&#039;&#039;(x, y, z, t)&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
To read the surface values of such 3D arrays at time step &#039;&#039;&#039;t&#039;&#039;&#039; and indices &#039;&#039;&#039;(x,y)&#039;&#039;&#039;, use in Python or C/C++ the indexing &#039;&#039;&#039;(t, 0, y, x)&#039;&#039;&#039; .&lt;br /&gt;
&lt;br /&gt;
WRF 3D arrays in memory are indexed as &#039;&#039;&#039;(i,k,j)&#039;&#039;&#039; (in FORTRAN) following [http://www.mmm.ucar.edu/wrf/WG2/WRF_conventions.html WRF coding conventions]. There is no time index for the time step in arrays in memory, because WRF works with only one time step at a time. In 2D arrays, there is no vertical &#039;&#039;&#039;k&#039;&#039;&#039; dimension.&lt;br /&gt;
&lt;br /&gt;
==Wind==&lt;br /&gt;
&lt;br /&gt;
Components of the wind velocity vector &#039;&#039;&#039;U&#039;&#039;&#039;, &#039;&#039;&#039;V&#039;&#039;&#039;, &#039;&#039;&#039;W&#039;&#039;&#039; live at the corresponding points, hence the point names. These are in the geometrically horizontal and vertical directions. On flat ground, &#039;&#039;&#039;W&#039;&#039;&#039; on the first level &#039;&#039;k=1&#039;&#039; is zero. However, when the ground has nonzero slope, the vertical velocity components &#039;&#039;&#039;W&#039;&#039;&#039; is generally not zero, because the normal vector to the ground is not vertical.&lt;br /&gt;
&lt;br /&gt;
Note that the picture above center and right (from [http://www.mmm.ucar.edu/wrf/users/docs/arw_v3.pdf WRF documentation]) use half integer indexing. &lt;br /&gt;
* The horizontal wind component &#039;&#039;&#039;U&amp;lt;sub&amp;gt;i-1/2,j,k&amp;lt;/sub&amp;gt;&#039;&#039;&#039; in the X direction is stored in the array entry &#039;&#039;&#039;u(i,j,k)&#039;&#039;&#039;&lt;br /&gt;
* The horizontal wind component &#039;&#039;&#039;V&amp;lt;sub&amp;gt;i,j-1/2,k&amp;lt;/sub&amp;gt;&#039;&#039;&#039; in the Y is stored in the array entry &#039;&#039;&#039;v(i,j,k)&#039;&#039;&#039;&lt;br /&gt;
* The vertical wind component &#039;&#039;&#039;W&amp;lt;sub&amp;gt;i,j,k-1/2&amp;lt;/sub&amp;gt;&#039;&#039;&#039; is stored in the array entry &#039;&#039;&#039;w(i,j,k)&#039;&#039;&#039;&lt;br /&gt;
In particular, the lowest layer  in WRF is &#039;&#039;&#039;k=1&#039;&#039;&#039;, and, on flat ground, &#039;&#039;&#039;w(:,:,1)=0&#039;&#039;&#039;, since the ground is impermeable in the normal direction. On a ground with nonzero slope, &#039;&#039;&#039;w(:,:,1)=0&#039;&#039;&#039; is generally nonzero. The winds at the middle of the first layer, at the height &#039;&#039;&#039;eta&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&#039;&#039;&#039;, are &#039;&#039;&#039;u(:,:,1)&#039;&#039;&#039;, &#039;&#039;&#039;v(:,:,1)&#039;&#039;&#039;, and they are generally nonzero. &lt;br /&gt;
&lt;br /&gt;
Because the components of the wind velocity vector are on different staggered grids, and visualization software usually expects all three components of the velocity vector based at the same point, they need to be interpolated to theta-points (cell centers) for display:&lt;br /&gt;
: &#039;&#039;&#039;U_THETA(i,j,k) = 0.5*(U(i,j,k) + U(i+1,j,k))&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;V_THETA(i,j,k) = 0.5*(V(i,j,k) + V(i,j+1,k))&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;W_THETA(i,j,k) = 0.5*(W(i,j,k) + W(i,j,k+1))&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Location==&lt;br /&gt;
&lt;br /&gt;
The longitude and latitude of the theta and U nodes are given by arrays &#039;&#039;&#039;XLONG&#039;&#039;&#039; and &#039;&#039;&#039;XLAT&#039;&#039;&#039;, which are set at initialization and then do not change. However the elevation has to be computed from the flow solution as [[wikipedia:Geopotential height|geopotential height]] by &lt;br /&gt;
: &#039;&#039;&#039;ELEVATION_W(i,j,k) = (PHB(i,j,k) + PH(i,j,k))/9.81&lt;br /&gt;
where &#039;&#039;&#039;PHB + PH&#039;&#039;&#039; is the [[wikipedia:geopotential|geopotential]]. &#039;&#039;&#039;PHB&#039;&#039;&#039; is constant, set at initialization, and &#039;&#039;&#039;PH&#039;&#039;&#039;, called perturbation geopotential, starts as zero and varies with time.&lt;br /&gt;
&lt;br /&gt;
PH and PHB live at the W-points, thus the geopotential height at the lowest level is the same as terrain height&lt;br /&gt;
: &#039;&#039;&#039;ELEVATION_W(i,j) = PHB(i,j,1)/9.81&lt;br /&gt;
up to rounding error. This variable is also part of WRF state as &#039;&#039;&#039;z_at_w&#039;&#039;&#039; and its output to wrfout or wrfrst files can be enabled in the registry.&lt;br /&gt;
&lt;br /&gt;
To find the elevation of the cell theta-points (the cell midplane, where the pressure and other variables than wind live), you need to interpolate between the elevation of the top and the bottom:&lt;br /&gt;
:&#039;&#039;&#039;ELEVATION_THETA(i,j,k) =0.5*(PHB(i,j,k) + PH(i,j,k) + PHB(i,j,k+1) + PH(i,j,k+1))/9.81&lt;br /&gt;
&lt;br /&gt;
This variable is also part of  WRF state as &#039;&#039;&#039;Z&#039;&#039;&#039;  and its output to wrfout or wrfrst files can be enabled in the [https://github.com/jbeezley/wrf-fire/blob/master/wrfv2_fire/Registry/Registry.EM_COMMON#L306 registry].&lt;br /&gt;
&lt;br /&gt;
==Temperature==&lt;br /&gt;
&lt;br /&gt;
[[wikipedia:Potential temperature|Potential temperature]] in K is 300+&#039;&#039;&#039;T&#039;&#039;&#039;. The potential temperature is most suitable for visualization. However, the temperature as measured by instruments is sometimes needed for comparison. The potential temperature is converted by...  &#039;&#039;coming soon&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Pressure==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;coming soon&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[SFIRE variables]]&lt;br /&gt;
* [[WRF-Fire documentation]]&lt;br /&gt;
* [http://www.mmm.ucar.edu/wrf/users/docs/user_guide_V3/users_guide_chap5.htm#fields WRF output fields from the WRF-ARW user&#039;s guide]&lt;br /&gt;
* Grid: [http://www.mmm.ucar.edu/wrf/users/docs/arw_v3.pdf A Description of the Advanced Research WRF Version 3 (June 2008)] Fig 7.3 page 59&lt;br /&gt;
* [http://www.mmm.ucar.edu/wrf/WG2/WRF_conventions.html WRF Coding Conventions]&lt;br /&gt;
* [http://www.mmm.ucar.edu/wrf/users/tutorial/200807/WRF%20Registry%20and%20Examples.pdf WRF Registry and Examples]&lt;br /&gt;
* [http://www.mmm.ucar.edu/wrf/WG2/software_v2/ WRF v2 Software Tools and Documentation] (there does not seem to be a document for V3?)&lt;br /&gt;
* [http://www.mmm.ucar.edu/wrf/WG2/software_2.0/registry_schaffer.pdf Description of WRF Registry]&lt;br /&gt;
* [http://www.google.com/url?sa=t&amp;amp;source=web&amp;amp;cd=2&amp;amp;ved=0CBsQFjAB&amp;amp;url=http%3A%2F%2Fyosemite.epa.gov%2FR10%2Fairpage.nsf%2Fc36cf12146018ddc882569e5005f1951%2F75f93e40b30302fc88257408008069e9%2F%24FILE%2FBowman.pdf&amp;amp;ei=Xt5hTJH6MseNnQf9rd3NAQ&amp;amp;usg=AFQjCNHsnOPC4nuQjHikOMx4sm40IJMquw&amp;amp;sig2=_4BrV5z1fh0ahYC5s9_t0Q Moving from MM5 to WRF]&lt;br /&gt;
 &lt;br /&gt;
[[Category:WRF-Fire]]&lt;br /&gt;
[[Category:Howtos|Interpret WRF variables]]&lt;/div&gt;</summary>
		<author><name>Jmandel</name></author>
	</entry>
	<entry>
		<id>https://wiki.openwfm.org/index.php?title=How_to_interpret_WRF_variables&amp;diff=8403</id>
		<title>How to interpret WRF variables</title>
		<link rel="alternate" type="text/html" href="https://wiki.openwfm.org/index.php?title=How_to_interpret_WRF_variables&amp;diff=8403"/>
		<updated>2025-11-22T06:01:39Z</updated>

		<summary type="html">&lt;p&gt;Jmandel: /* Storage order */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{users guide}}&lt;br /&gt;
&lt;br /&gt;
This page describes the interpretation of selected atmospheric variables, which are important for fire visualization. See [http://www.mmm.ucar.edu/wrf/users/pub-doc.html WRF documentation] for further details.&lt;br /&gt;
&lt;br /&gt;
==Grid==&lt;br /&gt;
&lt;br /&gt;
[[File:Wrfgrid.png|250px]][[File:WRF_staggered_grid.gif|500px]]&lt;br /&gt;
&lt;br /&gt;
Grids in WRF are logically rectilinear. Variables for WRF cell indexed &#039;&#039;&#039;(i,j,k)&#039;&#039;&#039; can be located at one of 4 possible points. You can tell where by looking at the WRF registry or the attributes of [[NetCDF]] files, which WRF uses as I/O format. You can also tell by the fact that staggered variables have the staggered dimension larger by one, since there needs to be variable at the last boundary face.&lt;br /&gt;
* at the center of the cell - theta points, not staggered&lt;br /&gt;
* at the center of the left face - U point, staggered in X&lt;br /&gt;
* at the center of the front face - V point, staggered in Y&lt;br /&gt;
* at the center of the bottom face - W point, staggered in Z&lt;br /&gt;
Scalar variables (such as thermodynamical variables, hence the theta: temperature, pressure,...) generally live at theta-points. One exception is the geopotential, which lives at W-points. &lt;br /&gt;
The documentation, some variable names, and comments in the WRF code also associate theta with the vertical position of the mid-plane of the cell and at W with the vertical position of the bottom of the cell.&lt;br /&gt;
&lt;br /&gt;
The orientation of the axes in the real world, such as &amp;quot;east-west&amp;quot;,  in the order of increasing index, such as &#039;&#039;&#039;i&#039;&#039;&#039;, are defined in the registry. For postprocessing, they can be found at runtime as attributes in the NetCDF files.&lt;br /&gt;
&lt;br /&gt;
==Storage order==&lt;br /&gt;
&lt;br /&gt;
Arrays are stored in files and in memory. All arrays are described in the Registry, which is a collection of text files in &#039;&#039;&#039;WRFV3/Registry&#039;&#039;&#039;. The variable names in memory and in files are sometimes different.&lt;br /&gt;
&lt;br /&gt;
The value of the time at the step &#039;&#039;&#039;t&#039;&#039;&#039; is stored in character array &#039;&#039;&#039;Times(:,t)&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Arrays in WRF NETCDF files, like the WRFOUT files, are written with the indexing as &#039;&#039;&#039;(t, z, y, x)&#039;&#039;&#039;, where &#039;&#039;&#039;t&#039;&#039;&#039; is the time index, which varies the slowest. The is how the variables appear when read e.g. in Python.  However, when read in FORTRAN, the same arrays appear in the FORTRAN column major odering &#039;&#039;&#039;(x, y, z, t)&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
To read the surface values of such 3D arrays at the indices &#039;&#039;&#039;(x,y)&#039;&#039;&#039;, use the indexing &#039;&#039;&#039;(t, 0, y, x)&#039;&#039;&#039; in Python, and &#039;&#039;&#039;(x, y, 1, t)&#039;&#039;&#039; in FORTRAN.&lt;br /&gt;
&lt;br /&gt;
Arrays in memory are indexed as &#039;&#039;&#039;(i,k,j)&#039;&#039;&#039; (in FORTRAN) following [http://www.mmm.ucar.edu/wrf/WG2/WRF_conventions.html WRF coding conventions]. There is no time index for the time step in arrays in memory, because WRF works with only one time step at a time. In 2D arrays, there is no vertical &#039;&#039;&#039;k&#039;&#039;&#039; dimension.&lt;br /&gt;
&lt;br /&gt;
==Wind==&lt;br /&gt;
&lt;br /&gt;
Components of the wind velocity vector &#039;&#039;&#039;U&#039;&#039;&#039;, &#039;&#039;&#039;V&#039;&#039;&#039;, &#039;&#039;&#039;W&#039;&#039;&#039; live at the corresponding points, hence the point names. These are in the geometrically horizontal and vertical directions. On flat ground, &#039;&#039;&#039;W&#039;&#039;&#039; on the first level &#039;&#039;k=1&#039;&#039; is zero. However, when the ground has nonzero slope, the vertical velocity components &#039;&#039;&#039;W&#039;&#039;&#039; is generally not zero, because the normal vector to the ground is not vertical.&lt;br /&gt;
&lt;br /&gt;
Note that the picture above center and right (from [http://www.mmm.ucar.edu/wrf/users/docs/arw_v3.pdf WRF documentation]) use half integer indexing. &lt;br /&gt;
* The horizontal wind component &#039;&#039;&#039;U&amp;lt;sub&amp;gt;i-1/2,j,k&amp;lt;/sub&amp;gt;&#039;&#039;&#039; in the X direction is stored in the array entry &#039;&#039;&#039;u(i,j,k)&#039;&#039;&#039;&lt;br /&gt;
* The horizontal wind component &#039;&#039;&#039;V&amp;lt;sub&amp;gt;i,j-1/2,k&amp;lt;/sub&amp;gt;&#039;&#039;&#039; in the Y is stored in the array entry &#039;&#039;&#039;v(i,j,k)&#039;&#039;&#039;&lt;br /&gt;
* The vertical wind component &#039;&#039;&#039;W&amp;lt;sub&amp;gt;i,j,k-1/2&amp;lt;/sub&amp;gt;&#039;&#039;&#039; is stored in the array entry &#039;&#039;&#039;w(i,j,k)&#039;&#039;&#039;&lt;br /&gt;
In particular, the lowest layer  in WRF is &#039;&#039;&#039;k=1&#039;&#039;&#039;, and, on flat ground, &#039;&#039;&#039;w(:,:,1)=0&#039;&#039;&#039;, since the ground is impermeable in the normal direction. On a ground with nonzero slope, &#039;&#039;&#039;w(:,:,1)=0&#039;&#039;&#039; is generally nonzero. The winds at the middle of the first layer, at the height &#039;&#039;&#039;eta&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&#039;&#039;&#039;, are &#039;&#039;&#039;u(:,:,1)&#039;&#039;&#039;, &#039;&#039;&#039;v(:,:,1)&#039;&#039;&#039;, and they are generally nonzero. &lt;br /&gt;
&lt;br /&gt;
Because the components of the wind velocity vector are on different staggered grids, and visualization software usually expects all three components of the velocity vector based at the same point, they need to be interpolated to theta-points (cell centers) for display:&lt;br /&gt;
: &#039;&#039;&#039;U_THETA(i,j,k) = 0.5*(U(i,j,k) + U(i+1,j,k))&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;V_THETA(i,j,k) = 0.5*(V(i,j,k) + V(i,j+1,k))&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;W_THETA(i,j,k) = 0.5*(W(i,j,k) + W(i,j,k+1))&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Location==&lt;br /&gt;
&lt;br /&gt;
The longitude and latitude of the theta and U nodes are given by arrays &#039;&#039;&#039;XLONG&#039;&#039;&#039; and &#039;&#039;&#039;XLAT&#039;&#039;&#039;, which are set at initialization and then do not change. However the elevation has to be computed from the flow solution as [[wikipedia:Geopotential height|geopotential height]] by &lt;br /&gt;
: &#039;&#039;&#039;ELEVATION_W(i,j,k) = (PHB(i,j,k) + PH(i,j,k))/9.81&lt;br /&gt;
where &#039;&#039;&#039;PHB + PH&#039;&#039;&#039; is the [[wikipedia:geopotential|geopotential]]. &#039;&#039;&#039;PHB&#039;&#039;&#039; is constant, set at initialization, and &#039;&#039;&#039;PH&#039;&#039;&#039;, called perturbation geopotential, starts as zero and varies with time.&lt;br /&gt;
&lt;br /&gt;
PH and PHB live at the W-points, thus the geopotential height at the lowest level is the same as terrain height&lt;br /&gt;
: &#039;&#039;&#039;ELEVATION_W(i,j) = PHB(i,j,1)/9.81&lt;br /&gt;
up to rounding error. This variable is also part of WRF state as &#039;&#039;&#039;z_at_w&#039;&#039;&#039; and its output to wrfout or wrfrst files can be enabled in the registry.&lt;br /&gt;
&lt;br /&gt;
To find the elevation of the cell theta-points (the cell midplane, where the pressure and other variables than wind live), you need to interpolate between the elevation of the top and the bottom:&lt;br /&gt;
:&#039;&#039;&#039;ELEVATION_THETA(i,j,k) =0.5*(PHB(i,j,k) + PH(i,j,k) + PHB(i,j,k+1) + PH(i,j,k+1))/9.81&lt;br /&gt;
&lt;br /&gt;
This variable is also part of  WRF state as &#039;&#039;&#039;Z&#039;&#039;&#039;  and its output to wrfout or wrfrst files can be enabled in the [https://github.com/jbeezley/wrf-fire/blob/master/wrfv2_fire/Registry/Registry.EM_COMMON#L306 registry].&lt;br /&gt;
&lt;br /&gt;
==Temperature==&lt;br /&gt;
&lt;br /&gt;
[[wikipedia:Potential temperature|Potential temperature]] in K is 300+&#039;&#039;&#039;T&#039;&#039;&#039;. The potential temperature is most suitable for visualization. However, the temperature as measured by instruments is sometimes needed for comparison. The potential temperature is converted by...  &#039;&#039;coming soon&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Pressure==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;coming soon&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[SFIRE variables]]&lt;br /&gt;
* [[WRF-Fire documentation]]&lt;br /&gt;
* [http://www.mmm.ucar.edu/wrf/users/docs/user_guide_V3/users_guide_chap5.htm#fields WRF output fields from the WRF-ARW user&#039;s guide]&lt;br /&gt;
* Grid: [http://www.mmm.ucar.edu/wrf/users/docs/arw_v3.pdf A Description of the Advanced Research WRF Version 3 (June 2008)] Fig 7.3 page 59&lt;br /&gt;
* [http://www.mmm.ucar.edu/wrf/WG2/WRF_conventions.html WRF Coding Conventions]&lt;br /&gt;
* [http://www.mmm.ucar.edu/wrf/users/tutorial/200807/WRF%20Registry%20and%20Examples.pdf WRF Registry and Examples]&lt;br /&gt;
* [http://www.mmm.ucar.edu/wrf/WG2/software_v2/ WRF v2 Software Tools and Documentation] (there does not seem to be a document for V3?)&lt;br /&gt;
* [http://www.mmm.ucar.edu/wrf/WG2/software_2.0/registry_schaffer.pdf Description of WRF Registry]&lt;br /&gt;
* [http://www.google.com/url?sa=t&amp;amp;source=web&amp;amp;cd=2&amp;amp;ved=0CBsQFjAB&amp;amp;url=http%3A%2F%2Fyosemite.epa.gov%2FR10%2Fairpage.nsf%2Fc36cf12146018ddc882569e5005f1951%2F75f93e40b30302fc88257408008069e9%2F%24FILE%2FBowman.pdf&amp;amp;ei=Xt5hTJH6MseNnQf9rd3NAQ&amp;amp;usg=AFQjCNHsnOPC4nuQjHikOMx4sm40IJMquw&amp;amp;sig2=_4BrV5z1fh0ahYC5s9_t0Q Moving from MM5 to WRF]&lt;br /&gt;
 &lt;br /&gt;
[[Category:WRF-Fire]]&lt;br /&gt;
[[Category:Howtos|Interpret WRF variables]]&lt;/div&gt;</summary>
		<author><name>Jmandel</name></author>
	</entry>
	<entry>
		<id>https://wiki.openwfm.org/index.php?title=Visualizations_links&amp;diff=8402</id>
		<title>Visualizations links</title>
		<link rel="alternate" type="text/html" href="https://wiki.openwfm.org/index.php?title=Visualizations_links&amp;diff=8402"/>
		<updated>2025-11-22T05:59:18Z</updated>

		<summary type="html">&lt;p&gt;Jmandel: rm dead NCAR links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==YouTube==&lt;br /&gt;
*[http://www.youtube.com/user/Wildfireproject Jan&#039;s YouTube channel]&lt;br /&gt;
*[http://www.youtube.com/user/openwfm OpenWFM YouTube channel]&lt;br /&gt;
* [http://www.youtube.com/user/adamk00 Adam&#039;s  YouTube channel]&lt;br /&gt;
&lt;br /&gt;
[[Category:Visualization]]&lt;/div&gt;</summary>
		<author><name>Jmandel</name></author>
	</entry>
	<entry>
		<id>https://wiki.openwfm.org/index.php?title=Smoke_and_coupling_with_WRF-Chem&amp;diff=8401</id>
		<title>Smoke and coupling with WRF-Chem</title>
		<link rel="alternate" type="text/html" href="https://wiki.openwfm.org/index.php?title=Smoke_and_coupling_with_WRF-Chem&amp;diff=8401"/>
		<updated>2025-11-22T05:56:37Z</updated>

		<summary type="html">&lt;p&gt;Jmandel: spelling&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{users guide}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Sfire smoke.png|thumb|WRF-SFIRE smoke tracer in action.  See [[File:Smoke small.avi|animation]].]]&lt;br /&gt;
&lt;br /&gt;
Fire emissions can be modeled a passive smoke tracer advected by the wind field,&lt;br /&gt;
or as chemical species tracers, which also undergo chemical reactions by WRF-Chem. WRF-Chem is included in the WRF repository. Tracer variables are 3d fields of concentrations on the atmospheric grid. The variables are present in the wrfout files when activated. &lt;br /&gt;
&lt;br /&gt;
==Passive smoke tracers==&lt;br /&gt;
&lt;br /&gt;
The selection of the tracers in WRF is controlled by namelist variable &#039;&#039;&#039;tracer_opt&#039;&#039;&#039; in the &#039;&#039;&#039;&amp;amp;dynamics&#039;&#039;&#039;] section .  The coupling supports the option &#039;&#039;&#039;tracer_opt = 1&#039;&#039;&#039;, which creates a single tracer called &#039;&#039;&#039;smoke&#039;&#039;&#039;,&lt;br /&gt;
and the option &#039;&#039;&#039;tracer_opt = 2&#039;&#039;&#039;, which creates passive tracers called &#039;&#039;&#039;tr17_1&#039;&#039;&#039; to &#039;&#039;&#039;tr17_8&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
Emissions are computer proportionally to the fuel burned according to the emission factors in file  &#039;&#039;&#039;namelist.fire_emissions&#039;&#039;&#039; and added to the lowest layer of the active tracer variables. &lt;br /&gt;
&lt;br /&gt;
There are small differences between the propagation of the different tracers, and also between the propagation when the code is build with or without WRF-Chem.&lt;br /&gt;
&lt;br /&gt;
==Coupling with WRF-Chem==&lt;br /&gt;
Compiling the code with support for WRF-Chem is similar to the [[How to compile WRF-Fire|standard procedure]].&lt;br /&gt;
You must set an environment variable &#039;&#039;&#039;WRF_CHEM&#039;&#039;&#039; and configure with the argument &#039;&#039;&#039;chem&#039;&#039;&#039; as follows.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export WRF_CHEM=1&lt;br /&gt;
./configure chem&lt;br /&gt;
./compile em_fire&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The selection of the tracers in WRF-Chem is controlled by namelist variable &#039;&#039;&#039;chem_opt&#039;&#039;&#039; in &#039;&#039;&#039;&amp;amp;chem&#039;&#039;&#039; section of &#039;&#039;&#039;namelist.input&#039;&#039;&#039;. If &#039;&#039;&#039;chem_opt=0&#039;&#039;&#039;, no chemical tracers are created.  The coupling supports subsets of RADM2 (&#039;&#039;&#039;chem_opt=2&#039;&#039;&#039;), MOZART (&#039;&#039;&#039;chem_opt=112&#039;&#039;&#039; or &#039;&#039;&#039;119&#039;&#039;&#039;), and GOCART (&#039;&#039;&#039;chem_opt=300&#039;&#039;&#039;) variables. &lt;br /&gt;
&lt;br /&gt;
It is also possible to use &#039;&#039;&#039;tracer_opt = 1&#039;&#039;&#039; or &#039;&#039;&#039;tracer_opt = 2&#039;&#039;&#039; with a code compiled with WRF-Chem. The resulting passive tracers may then be advected by code in WRF-Chem instead of WRF itself.&lt;br /&gt;
&lt;br /&gt;
==Running an idealized example==&lt;br /&gt;
An idealized example based on the hill case has been created in [https://github.com/jbeezley/wrf-fire/tree/master/wrfv2_fire/test/em_fire/chem &#039;&#039;&#039;test/em_fire/chem&#039;&#039;&#039;]&lt;br /&gt;
Note that &#039;&#039;&#039;sfc_full_init =.true.&#039;&#039;&#039; is required in the &#039;&#039;&#039;&amp;amp;fire&#039;&#039;&#039; section of &#039;&#039;&#039;namelist.input&#039;&#039;&#039; to initialize USGS landuse, which is required by  WRF-Chem.&lt;br /&gt;
The tracer selected by &#039;&#039;&#039;tracer_opt=1&#039;&#039;&#039; will appear as an atmospheric variable in the output file with the name &#039;&#039;&#039;smoke&#039;&#039;&#039;. The chemical species in the atmosphere, selected by &#039;&#039;&#039;chem_opt&#039;&#039;&#039;, will appear under their respective names, such as &#039;&#039;&#039;n2o5&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
&lt;br /&gt;
To use the passive tracers in the code built with WRF-Chem, specify &#039;&#039;&#039;tracer_opt=2&#039;&#039;&#039; and &#039;&#039;&#039;chem_opt=0&#039;&#039;&#039; in &#039;&#039;&#039;namelist.input&#039;&#039;&#039;. The tracers work slightly differently in code built with and without WRF-Chem, as described in file &#039;&#039;&#039;chem/module_input_tracer.F&#039;&#039;&#039;. A sample emission factors table for this usage is available as &#039;&#039;&#039;test/em_fire/chem/namelist.fire_emissions.tracers&#039;&#039;&#039;. It can be used in ideal as well as real runs. Different rows in the table can be used to track separate species, e.g., pm10 and pm25, with different emission factors. &lt;br /&gt;
&lt;br /&gt;
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 (&#039;&#039;&#039;ppmv&#039;&#039;&#039;), so the amounts of the inserted species are scaled 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 &#039;&#039;&#039;GRNHFX&#039;&#039;&#039; as a proxy. The emissions table contains the amounts of emissions fuel burned in &#039;&#039;&#039;g/kg&#039;&#039;&#039; or &#039;&#039;&#039;mol/kg&#039;&#039;&#039;.  The emissions tables are specified in file &#039;&#039;&#039;namelist.fire_emissions&#039;&#039;&#039;. This file contains a line for each species like&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 no2=3.2,3.2,3.2,1.4,1.4,1.4,1.4,2.7,2.7,2.7,3,3,3,&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
with emissions (g/kg fuel or mol/kg fuel) for each of the fuel categories used (by default, the 13 Anderson&#039;s categories).&lt;br /&gt;
&lt;br /&gt;
There are two additional variables in &#039;&#039;&#039;namelist.fire_emissions&#039;&#039;&#039;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
compatible_chem_opt=112,119&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
is a list of &#039;&#039;&#039;chem_opt&#039;&#039;&#039; 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  &#039;&#039;&#039;chem_opt&#039;&#039;&#039;.  If it does, the results can be upredictable.&lt;br /&gt;
The variable&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
printsums=1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
will enable printing of the totals of each emissions species at the end of every time step.&lt;br /&gt;
&lt;br /&gt;
Several prototype emissions tables are provided in &#039;&#039;&#039;test/em_fire/chem&#039;&#039;&#039;. You need to copy or link one of the emissions tables to &#039;&#039;&#039;namelist.fire_emissions&#039;&#039;&#039; in your run directory, such as&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -s namelist.fire_emissions.RADM2 namelist.fire_emissions&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
and set matching &#039;&#039;&#039;chem_opt&#039;&#039;&#039; in &#039;&#039;&#039;namelist.input&#039;&#039;&#039;, here &#039;&#039;&#039;chem_opt=2&#039;&#039;&#039;. See the next section for the available emissions tables. Users can also add their own.&lt;br /&gt;
&lt;br /&gt;
==Chemical species==&lt;br /&gt;
&lt;br /&gt;
The chemical model selected by the &#039;&#039;&#039;chem_opt&#039;&#039;&#039; flag produces concentrations on 3D grids in every &#039;&#039;&#039;wrfout&#039;&#039;&#039; file produced, for a set of variables defined in the &#039;&#039;&#039;Chem scalars&#039;&#039;&#039; part of the file  [https://github.com/openwfm/WRF-SFIRE/blob/262829290d98e419b6839893ecb1a5d36ed4b969/Registry/registry.chem#L1567 &#039;&#039;&#039;Registry/registry.chem&#039;&#039;&#039;]. The first section of the list contains the chemical species common to all models, later sections list species added for specific models. For more detailed information about the species including dusts and aerosols in specific WRF-Chem models, see the [https://ruc.noaa.gov/wrf/wrf-chem/model_info.htm WRF-Chem model documention] and the links to the individual models at the emissions tables below.&lt;br /&gt;
&lt;br /&gt;
The quantities of the chemical species are in &#039;&#039;&#039;ppmv&#039;&#039;&#039;, i.e., 1e6*mol/mol of dry air.&lt;br /&gt;
&lt;br /&gt;
The frequency of writing the outputs into the wrfout files is specified by the user in the &#039;&#039;&#039;history_interval&#039;&#039;&#039; flags in the WRF &#039;&#039;&#039;namelist.input&#039;&#039;&#039; file. It can be as often as once every minute, but usually much less. &lt;br /&gt;
&lt;br /&gt;
SFIRE adds the fire emissions to a subset of the chemical species as specified in the emissions table. It is up to the chemical model to produce other species from them. Note that the parts of the registry.chem file using the word &amp;quot;emissions&amp;quot; are for other emission schemes and not relevant here. SFIRE adds fire emissions directly to the lowest layer of the 3D Chem fiels during the fire simulation.&lt;br /&gt;
&lt;br /&gt;
There are currently three emissions tables available:&lt;br /&gt;
* [https://github.com/openwfm/WRF-SFIRE/blob/master/test/em_fire/chem/namelist.fire_emissions.RADM2 namelist.fire_emissions.RADM2] for the [http://ruc.noaa.gov/wrf/WG11/radm2.htm RADM2] model&lt;br /&gt;
* [https://github.com/openwfm/WRF-SFIRE/blob/master/test/em_fire/chem/namelist.fire_emissions.MOZART namelist.fire_emissions.MOZART] for the [http://www.acd.ucar.edu/wrf-chem/mozart.shtml MOZART] model&lt;br /&gt;
* [https://github.com/openwfm/WRF-SFIRE/blob/master/test/em_fire/chem/namelist.fire_emissions.GOCART namelist.fire_emissions.GOCART] for the [https://tropo.gsfc.nasa.gov/gocart GOCART] model&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
WRF-Chem contains a multitude of arrays representing concentrations of chemical species. The typical&lt;br /&gt;
method of injecting data into the simulation involves generating emission input data files from standard&lt;br /&gt;
sources.  These sources are read into the code using auxiliary input streams and interpolated into&lt;br /&gt;
the species arrays in the [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/chem/module_emissions_anthropogenics.F emissions] module.  For the coupling with SFIRE, turning off file&lt;br /&gt;
input in the namelist seems to initialize the emission arrays to zero.  This eliminates the need to generate&lt;br /&gt;
useless emission files. &lt;br /&gt;
&lt;br /&gt;
WRF-Chem stores its state in arrays &#039;&#039;&#039;chem&#039;&#039;&#039; and   &#039;&#039;&#039;tracer&#039;&#039;&#039;.  These arrays are four dimensional indexed like &#039;&#039;&#039;(x,z,y,s)&#039;&#039;&#039;, where s is the chemical&lt;br /&gt;
species. The domain structure contains scalars such as &#039;&#039;&#039;p_smoke&#039;&#039;&#039; (into the &#039;&#039;&#039;tracer&#039;&#039;&#039; array) and &#039;&#039;&#039;p_nh4&#039;&#039;&#039; (into the &#039;&#039;&#039;chem&#039;&#039;&#039; array) that give the species index for&lt;br /&gt;
each type.  The species selections are specific to different chemistry options (&#039;&#039;&#039;chem_opt&#039;&#039;&#039;) &lt;br /&gt;
from the registry; however, even unused species have their index set to 1. The dynamics section of the namelist has an option for &#039;&#039;&#039;tracer_opt&#039;&#039;&#039;.  This&lt;br /&gt;
controls what tracers are generated for Chem.  &lt;br /&gt;
&lt;br /&gt;
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 [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_atm.F#L276 &#039;&#039;&#039;add_fire_emissions_to_chem&#039;&#039;&#039;], which  adds chemical species to the &#039;&#039;&#039;chem&#039;&#039;&#039; array, was derived from the utility [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_util.F#L471 &#039;&#039;&#039;sum_2d_cells&#039;&#039;&#039;] by adding chemistry-specific code.&lt;br /&gt;
&lt;br /&gt;
The chemistry coupling code is compiled only when WRF-Chem is being compiled. It resides in [https://github.com/jbeezley/wrf-fire/blob4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_atm.F module_fr_sfire_atm.F], which is allowed by the SFIRE architecture to contain code both at atmosphere and fire resolution. Besides subroutine &#039;&#039;&#039;add_fire_emissions_to_chem&#039;&#039;&#039;, the code consists of subroutine [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_atm.F#L151 &#039;&#039;&#039;read_emissions_table&#039;&#039;&#039;], which reads file &#039;&#039;&#039;namelist.fire_emissions&#039;&#039;&#039;, subroutine [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_atm.F#L276 &#039;&#039;&#039;add_fire_emissions_to_chem&#039;&#039;&#039;], which  adds chemical species to the &#039;&#039;&#039;chem&#039;&#039;&#039; array, the [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_atm.F#L78 emissions tables] as module variables, subroutine [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_atm.F#L1914 &#039;&#039;&#039;fire_emission&#039;&#039;&#039;], which adds the smoke tracer, and the corresponding call statements in [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_driver.F  &#039;&#039;&#039;module_fr_sfire_driver&#039;&#039;&#039;].&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
* Kochanski A. K., Jenkins M.A., Yedinak K., Mandel J., Beezley J, and Lamb B. (2015) &#039;&#039;&#039;Toward an integrated system for fire, smoke and air quality simulations&#039;&#039;&#039;, International Journal of Wildland Fire - http://dx.doi.org/10.1071/WF14074&lt;br /&gt;
* Adam K. Kochanski, Jonathan D. Beezley, Jan Mandel, Craig B. Clements, &#039;&#039;&#039;Air pollution forecasting by coupled atmosphere-fire model WRF and SFIRE with WRF-Chem&#039;&#039;&#039;, 4th Fire Behavior and Fuels Conference, February 18-22, 2013, Raleigh, NC, 	{{arXiv|1304.7703}}, 2013&lt;br /&gt;
* Adam K. Kochanski, Jonathan D. Beezley, Jan Mandel, and Minjeong Kim, &#039;&#039;&#039;WRF fire simulation coupled with a fuel moisture model and smoke transport by WRF-Chem&#039;&#039;&#039;, [http://www.mmm.ucar.edu/events/2012_wrfusers/ 2012 WRF Users Workshop], [http://www.openwfm.org/wiki/File:WRF_workshop_2012_poster.pdf Poster 51] [http://www.mmm.ucar.edu/events/2012_wrfusers/abstracts/p51.htm abstract] [https://www.regonline.com/AttendeeDocuments/1077122/43365086/wrf2012.pdf paper] {{arXiv|1208.1059}}&lt;br /&gt;
* [http://ruc.noaa.gov/wrf/WG11/Users_guide.pdf WRF-Chem Users&#039; Guide]&lt;br /&gt;
* Georg A. Grell, Steven E. Peckham, Rainer Schmitz, Stuart A. McKeen, Gregory Frost, William C. Skamarock, Brian Eder, [http://dx.doi.org/10.1016/j.atmosenv.2005.04.027 Fully coupled “online” chemistry within the WRF model], Atmospheric Environment, Volume 39, Issue 37, December 2005, Pages 6957–6975&lt;br /&gt;
* C. Wiedinmyer, S. K. Akagi, R. J. Yokelson, L. K. Emmons, J. A. Al-Saadi, J. J. Orlando, and A. J. Soja. [http://dx.doi.org/10.5194/gmd-4-625-2011 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&lt;br /&gt;
* 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, [http://dx.doi.org/10.5194/gmd-3-43-2010 Description and evaluation of the Model for Ozone and Related chemical Tracers, version 4 (MOZART-4)], Geosci. Model Dev., 3, 43-67, 2010&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* [http://ruc.noaa.gov/wrf/WG11/ WRF-Chem] home page&lt;br /&gt;
* [https://www2.acom.ucar.edu/modeling/finn-fire-inventory-ncar Finn]  emissions model&lt;br /&gt;
* [http://www.acd.ucar.edu/wrf-chem/mozart.shtml MOZART] chemistry model&lt;/div&gt;</summary>
		<author><name>Jmandel</name></author>
	</entry>
	<entry>
		<id>https://wiki.openwfm.org/index.php?title=Smoke_and_coupling_with_WRF-Chem&amp;diff=8400</id>
		<title>Smoke and coupling with WRF-Chem</title>
		<link rel="alternate" type="text/html" href="https://wiki.openwfm.org/index.php?title=Smoke_and_coupling_with_WRF-Chem&amp;diff=8400"/>
		<updated>2025-11-22T05:55:45Z</updated>

		<summary type="html">&lt;p&gt;Jmandel: /* Coupling with WRF-Chem */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{users guide}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Sfire smoke.png|thumb|SFire smoke tracer in action.  See [[File:Smoke small.avi|animation]].]]&lt;br /&gt;
&lt;br /&gt;
Fire emissions can be modeled a passive smoke tracer advected by the wind field,&lt;br /&gt;
or as chemical species tracers, which also undergo chemical reactions by WRF-Chem. WRF-Chem is included in the WRF repository. Tracer variables are 3d fields of concentrations on the atmospheric grid. The variables are present in the wrfout files when activated. &lt;br /&gt;
&lt;br /&gt;
==Passive smoke tracers==&lt;br /&gt;
&lt;br /&gt;
The selection of the tracers in WRF is controlled by namelist variable &#039;&#039;&#039;tracer_opt&#039;&#039;&#039; in the &#039;&#039;&#039;&amp;amp;dynamics&#039;&#039;&#039;] section .  The coupling supports the option &#039;&#039;&#039;tracer_opt = 1&#039;&#039;&#039;, which creates a single tracer called &#039;&#039;&#039;smoke&#039;&#039;&#039;,&lt;br /&gt;
and the option &#039;&#039;&#039;tracer_opt = 2&#039;&#039;&#039;, which creates passive tracers called &#039;&#039;&#039;tr17_1&#039;&#039;&#039; to &#039;&#039;&#039;tr17_8&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
Emissions are computer proportionally to the fuel burned according to the emission factors in file  &#039;&#039;&#039;namelist.fire_emissions&#039;&#039;&#039; and added to the lowest layer of the active tracer variables. &lt;br /&gt;
&lt;br /&gt;
There are small differences between the propagation of the different tracers, and also between the propagation when the code is build with or without WRF-Chem.&lt;br /&gt;
&lt;br /&gt;
==Coupling with WRF-Chem==&lt;br /&gt;
Compiling the code with support for WRF-Chem is similar to the [[How to compile WRF-Fire|standard procedure]].&lt;br /&gt;
You must set an environment variable &#039;&#039;&#039;WRF_CHEM&#039;&#039;&#039; and configure with the argument &#039;&#039;&#039;chem&#039;&#039;&#039; as follows.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export WRF_CHEM=1&lt;br /&gt;
./configure chem&lt;br /&gt;
./compile em_fire&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The selection of the tracers in WRF-Chem is controlled by namelist variable &#039;&#039;&#039;chem_opt&#039;&#039;&#039; in &#039;&#039;&#039;&amp;amp;chem&#039;&#039;&#039; section of &#039;&#039;&#039;namelist.input&#039;&#039;&#039;. If &#039;&#039;&#039;chem_opt=0&#039;&#039;&#039;, no chemical tracers are created.  The coupling supports subsets of RADM2 (&#039;&#039;&#039;chem_opt=2&#039;&#039;&#039;), MOZART (&#039;&#039;&#039;chem_opt=112&#039;&#039;&#039; or &#039;&#039;&#039;119&#039;&#039;&#039;), and GOCART (&#039;&#039;&#039;chem_opt=300&#039;&#039;&#039;) variables. &lt;br /&gt;
&lt;br /&gt;
It is also possible to use &#039;&#039;&#039;tracer_opt = 1&#039;&#039;&#039; or &#039;&#039;&#039;tracer_opt = 2&#039;&#039;&#039; with a code compiled with WRF-Chem. The resulting passive tracers may then be advected by code in WRF-Chem instead of WRF itself.&lt;br /&gt;
&lt;br /&gt;
==Running an idealized example==&lt;br /&gt;
An idealized example based on the hill case has been created in [https://github.com/jbeezley/wrf-fire/tree/master/wrfv2_fire/test/em_fire/chem &#039;&#039;&#039;test/em_fire/chem&#039;&#039;&#039;]&lt;br /&gt;
Note that &#039;&#039;&#039;sfc_full_init =.true.&#039;&#039;&#039; is required in the &#039;&#039;&#039;&amp;amp;fire&#039;&#039;&#039; section of &#039;&#039;&#039;namelist.input&#039;&#039;&#039; to initialize USGS landuse, which is required by  WRF-Chem.&lt;br /&gt;
The tracer selected by &#039;&#039;&#039;tracer_opt=1&#039;&#039;&#039; will appear as an atmospheric variable in the output file with the name &#039;&#039;&#039;smoke&#039;&#039;&#039;. The chemical species in the atmosphere, selected by &#039;&#039;&#039;chem_opt&#039;&#039;&#039;, will appear under their respective names, such as &#039;&#039;&#039;n2o5&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
&lt;br /&gt;
To use the passive tracers in the code built with WRF-Chem, specify &#039;&#039;&#039;tracer_opt=2&#039;&#039;&#039; and &#039;&#039;&#039;chem_opt=0&#039;&#039;&#039; in &#039;&#039;&#039;namelist.input&#039;&#039;&#039;. The tracers work slightly differently in code built with and without WRF-Chem, as described in file &#039;&#039;&#039;chem/module_input_tracer.F&#039;&#039;&#039;. A sample emission factors table for this usage is available as &#039;&#039;&#039;test/em_fire/chem/namelist.fire_emissions.tracers&#039;&#039;&#039;. It can be used in ideal as well as real runs. Different rows in the table can be used to track separate species, e.g., pm10 and pm25, with different emission factors. &lt;br /&gt;
&lt;br /&gt;
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 (&#039;&#039;&#039;ppmv&#039;&#039;&#039;), so the amounts of the inserted species are scaled 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 &#039;&#039;&#039;GRNHFX&#039;&#039;&#039; as a proxy. The emissions table contains the amounts of emissions fuel burned in &#039;&#039;&#039;g/kg&#039;&#039;&#039; or &#039;&#039;&#039;mol/kg&#039;&#039;&#039;.  The emissions tables are specified in file &#039;&#039;&#039;namelist.fire_emissions&#039;&#039;&#039;. This file contains a line for each species like&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 no2=3.2,3.2,3.2,1.4,1.4,1.4,1.4,2.7,2.7,2.7,3,3,3,&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
with emissions (g/kg fuel or mol/kg fuel) for each of the fuel categories used (by default, the 13 Anderson&#039;s categories).&lt;br /&gt;
&lt;br /&gt;
There are two additional variables in &#039;&#039;&#039;namelist.fire_emissions&#039;&#039;&#039;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
compatible_chem_opt=112,119&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
is a list of &#039;&#039;&#039;chem_opt&#039;&#039;&#039; 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  &#039;&#039;&#039;chem_opt&#039;&#039;&#039;.  If it does, the results can be upredictable.&lt;br /&gt;
The variable&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
printsums=1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
will enable printing of the totals of each emissions species at the end of every time step.&lt;br /&gt;
&lt;br /&gt;
Several prototype emissions tables are provided in &#039;&#039;&#039;test/em_fire/chem&#039;&#039;&#039;. You need to copy or link one of the emissions tables to &#039;&#039;&#039;namelist.fire_emissions&#039;&#039;&#039; in your run directory, such as&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -s namelist.fire_emissions.RADM2 namelist.fire_emissions&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
and set matching &#039;&#039;&#039;chem_opt&#039;&#039;&#039; in &#039;&#039;&#039;namelist.input&#039;&#039;&#039;, here &#039;&#039;&#039;chem_opt=2&#039;&#039;&#039;. See the next section for the available emissions tables. Users can also add their own.&lt;br /&gt;
&lt;br /&gt;
==Chemical species==&lt;br /&gt;
&lt;br /&gt;
The chemical model selected by the &#039;&#039;&#039;chem_opt&#039;&#039;&#039; flag produces concentrations on 3D grids in every &#039;&#039;&#039;wrfout&#039;&#039;&#039; file produced, for a set of variables defined in the &#039;&#039;&#039;Chem scalars&#039;&#039;&#039; part of the file  [https://github.com/openwfm/WRF-SFIRE/blob/262829290d98e419b6839893ecb1a5d36ed4b969/Registry/registry.chem#L1567 &#039;&#039;&#039;Registry/registry.chem&#039;&#039;&#039;]. The first section of the list contains the chemical species common to all models, later sections list species added for specific models. For more detailed information about the species including dusts and aerosols in specific WRF-Chem models, see the [https://ruc.noaa.gov/wrf/wrf-chem/model_info.htm WRF-Chem model documention] and the links to the individual models at the emissions tables below.&lt;br /&gt;
&lt;br /&gt;
The quantities of the chemical species are in &#039;&#039;&#039;ppmv&#039;&#039;&#039;, i.e., 1e6*mol/mol of dry air.&lt;br /&gt;
&lt;br /&gt;
The frequency of writing the outputs into the wrfout files is specified by the user in the &#039;&#039;&#039;history_interval&#039;&#039;&#039; flags in the WRF &#039;&#039;&#039;namelist.input&#039;&#039;&#039; file. It can be as often as once every minute, but usually much less. &lt;br /&gt;
&lt;br /&gt;
SFIRE adds the fire emissions to a subset of the chemical species as specified in the emissions table. It is up to the chemical model to produce other species from them. Note that the parts of the registry.chem file using the word &amp;quot;emissions&amp;quot; are for other emission schemes and not relevant here. SFIRE adds fire emissions directly to the lowest layer of the 3D Chem fiels during the fire simulation.&lt;br /&gt;
&lt;br /&gt;
There are currently three emissions tables available:&lt;br /&gt;
* [https://github.com/openwfm/WRF-SFIRE/blob/master/test/em_fire/chem/namelist.fire_emissions.RADM2 namelist.fire_emissions.RADM2] for the [http://ruc.noaa.gov/wrf/WG11/radm2.htm RADM2] model&lt;br /&gt;
* [https://github.com/openwfm/WRF-SFIRE/blob/master/test/em_fire/chem/namelist.fire_emissions.MOZART namelist.fire_emissions.MOZART] for the [http://www.acd.ucar.edu/wrf-chem/mozart.shtml MOZART] model&lt;br /&gt;
* [https://github.com/openwfm/WRF-SFIRE/blob/master/test/em_fire/chem/namelist.fire_emissions.GOCART namelist.fire_emissions.GOCART] for the [https://tropo.gsfc.nasa.gov/gocart GOCART] model&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
WRF-Chem contains a multitude of arrays representing concentrations of chemical species. The typical&lt;br /&gt;
method of injecting data into the simulation involves generating emission input data files from standard&lt;br /&gt;
sources.  These sources are read into the code using auxiliary input streams and interpolated into&lt;br /&gt;
the species arrays in the [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/chem/module_emissions_anthropogenics.F emissions] module.  For the coupling with SFIRE, turning off file&lt;br /&gt;
input in the namelist seems to initialize the emission arrays to zero.  This eliminates the need to generate&lt;br /&gt;
useless emission files. &lt;br /&gt;
&lt;br /&gt;
WRF-Chem stores its state in arrays &#039;&#039;&#039;chem&#039;&#039;&#039; and   &#039;&#039;&#039;tracer&#039;&#039;&#039;.  These arrays are four dimensional indexed like &#039;&#039;&#039;(x,z,y,s)&#039;&#039;&#039;, where s is the chemical&lt;br /&gt;
species. The domain structure contains scalars such as &#039;&#039;&#039;p_smoke&#039;&#039;&#039; (into the &#039;&#039;&#039;tracer&#039;&#039;&#039; array) and &#039;&#039;&#039;p_nh4&#039;&#039;&#039; (into the &#039;&#039;&#039;chem&#039;&#039;&#039; array) that give the species index for&lt;br /&gt;
each type.  The species selections are specific to different chemistry options (&#039;&#039;&#039;chem_opt&#039;&#039;&#039;) &lt;br /&gt;
from the registry; however, even unused species have their index set to 1. The dynamics section of the namelist has an option for &#039;&#039;&#039;tracer_opt&#039;&#039;&#039;.  This&lt;br /&gt;
controls what tracers are generated for Chem.  &lt;br /&gt;
&lt;br /&gt;
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 [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_atm.F#L276 &#039;&#039;&#039;add_fire_emissions_to_chem&#039;&#039;&#039;], which  adds chemical species to the &#039;&#039;&#039;chem&#039;&#039;&#039; array, was derived from the utility [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_util.F#L471 &#039;&#039;&#039;sum_2d_cells&#039;&#039;&#039;] by adding chemistry-specific code.&lt;br /&gt;
&lt;br /&gt;
The chemistry coupling code is compiled only when WRF-Chem is being compiled. It resides in [https://github.com/jbeezley/wrf-fire/blob4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_atm.F module_fr_sfire_atm.F], which is allowed by the SFIRE architecture to contain code both at atmosphere and fire resolution. Besides subroutine &#039;&#039;&#039;add_fire_emissions_to_chem&#039;&#039;&#039;, the code consists of subroutine [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_atm.F#L151 &#039;&#039;&#039;read_emissions_table&#039;&#039;&#039;], which reads file &#039;&#039;&#039;namelist.fire_emissions&#039;&#039;&#039;, subroutine [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_atm.F#L276 &#039;&#039;&#039;add_fire_emissions_to_chem&#039;&#039;&#039;], which  adds chemical species to the &#039;&#039;&#039;chem&#039;&#039;&#039; array, the [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_atm.F#L78 emissions tables] as module variables, subroutine [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_atm.F#L1914 &#039;&#039;&#039;fire_emission&#039;&#039;&#039;], which adds the smoke tracer, and the corresponding call statements in [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_driver.F  &#039;&#039;&#039;module_fr_sfire_driver&#039;&#039;&#039;].&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
* Kochanski A. K., Jenkins M.A., Yedinak K., Mandel J., Beezley J, and Lamb B. (2015) &#039;&#039;&#039;Toward an integrated system for fire, smoke and air quality simulations&#039;&#039;&#039;, International Journal of Wildland Fire - http://dx.doi.org/10.1071/WF14074&lt;br /&gt;
* Adam K. Kochanski, Jonathan D. Beezley, Jan Mandel, Craig B. Clements, &#039;&#039;&#039;Air pollution forecasting by coupled atmosphere-fire model WRF and SFIRE with WRF-Chem&#039;&#039;&#039;, 4th Fire Behavior and Fuels Conference, February 18-22, 2013, Raleigh, NC, 	{{arXiv|1304.7703}}, 2013&lt;br /&gt;
* Adam K. Kochanski, Jonathan D. Beezley, Jan Mandel, and Minjeong Kim, &#039;&#039;&#039;WRF fire simulation coupled with a fuel moisture model and smoke transport by WRF-Chem&#039;&#039;&#039;, [http://www.mmm.ucar.edu/events/2012_wrfusers/ 2012 WRF Users Workshop], [http://www.openwfm.org/wiki/File:WRF_workshop_2012_poster.pdf Poster 51] [http://www.mmm.ucar.edu/events/2012_wrfusers/abstracts/p51.htm abstract] [https://www.regonline.com/AttendeeDocuments/1077122/43365086/wrf2012.pdf paper] {{arXiv|1208.1059}}&lt;br /&gt;
* [http://ruc.noaa.gov/wrf/WG11/Users_guide.pdf WRF-Chem Users&#039; Guide]&lt;br /&gt;
* Georg A. Grell, Steven E. Peckham, Rainer Schmitz, Stuart A. McKeen, Gregory Frost, William C. Skamarock, Brian Eder, [http://dx.doi.org/10.1016/j.atmosenv.2005.04.027 Fully coupled “online” chemistry within the WRF model], Atmospheric Environment, Volume 39, Issue 37, December 2005, Pages 6957–6975&lt;br /&gt;
* C. Wiedinmyer, S. K. Akagi, R. J. Yokelson, L. K. Emmons, J. A. Al-Saadi, J. J. Orlando, and A. J. Soja. [http://dx.doi.org/10.5194/gmd-4-625-2011 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&lt;br /&gt;
* 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, [http://dx.doi.org/10.5194/gmd-3-43-2010 Description and evaluation of the Model for Ozone and Related chemical Tracers, version 4 (MOZART-4)], Geosci. Model Dev., 3, 43-67, 2010&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* [http://ruc.noaa.gov/wrf/WG11/ WRF-Chem] home page&lt;br /&gt;
* [https://www2.acom.ucar.edu/modeling/finn-fire-inventory-ncar Finn]  emissions model&lt;br /&gt;
* [http://www.acd.ucar.edu/wrf-chem/mozart.shtml MOZART] chemistry model&lt;/div&gt;</summary>
		<author><name>Jmandel</name></author>
	</entry>
	<entry>
		<id>https://wiki.openwfm.org/index.php?title=Smoke_and_coupling_with_WRF-Chem&amp;diff=8399</id>
		<title>Smoke and coupling with WRF-Chem</title>
		<link rel="alternate" type="text/html" href="https://wiki.openwfm.org/index.php?title=Smoke_and_coupling_with_WRF-Chem&amp;diff=8399"/>
		<updated>2025-11-22T05:53:19Z</updated>

		<summary type="html">&lt;p&gt;Jmandel: /* Passive smoke tracers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{users guide}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Sfire smoke.png|thumb|SFire smoke tracer in action.  See [[File:Smoke small.avi|animation]].]]&lt;br /&gt;
&lt;br /&gt;
Fire emissions can be modeled a passive smoke tracer advected by the wind field,&lt;br /&gt;
or as chemical species tracers, which also undergo chemical reactions by WRF-Chem. WRF-Chem is included in the WRF repository. Tracer variables are 3d fields of concentrations on the atmospheric grid. The variables are present in the wrfout files when activated. &lt;br /&gt;
&lt;br /&gt;
==Passive smoke tracers==&lt;br /&gt;
&lt;br /&gt;
The selection of the tracers in WRF is controlled by namelist variable &#039;&#039;&#039;tracer_opt&#039;&#039;&#039; in the &#039;&#039;&#039;&amp;amp;dynamics&#039;&#039;&#039;] section .  The coupling supports the option &#039;&#039;&#039;tracer_opt = 1&#039;&#039;&#039;, which creates a single tracer called &#039;&#039;&#039;smoke&#039;&#039;&#039;,&lt;br /&gt;
and the option &#039;&#039;&#039;tracer_opt = 2&#039;&#039;&#039;, which creates passive tracers called &#039;&#039;&#039;tr17_1&#039;&#039;&#039; to &#039;&#039;&#039;tr17_8&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
Emissions are computer proportionally to the fuel burned according to the emission factors in file  &#039;&#039;&#039;namelist.fire_emissions&#039;&#039;&#039; and added to the lowest layer of the active tracer variables. &lt;br /&gt;
&lt;br /&gt;
There are small differences between the propagation of the different tracers, and also between the propagation when the code is build with or without WRF-Chem.&lt;br /&gt;
&lt;br /&gt;
==Coupling with WRF-Chem==&lt;br /&gt;
Compiling the code with support for WRF-Chem is similar to the [[How to compile WRF-Fire|standard procedure]].&lt;br /&gt;
You must set an environment variable &#039;&#039;&#039;WRF_CHEM&#039;&#039;&#039; and configure with the argument &#039;&#039;&#039;chem&#039;&#039;&#039; as follows.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export WRF_CHEM=1&lt;br /&gt;
./configure chem&lt;br /&gt;
./compile em_fire&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The selection of the tracers in WRF-Chem is controlled by namelist variable &#039;&#039;&#039;chem_opt&#039;&#039;&#039; in &#039;&#039;&#039;&amp;amp;chem&#039;&#039;&#039; section of &#039;&#039;&#039;namelist.input&#039;&#039;&#039;. If &#039;&#039;&#039;chem_opt=0&#039;&#039;&#039;, no chemical tracers are created.  The coupling supports subsets of RADM2 (&#039;&#039;&#039;chem_opt=2&#039;&#039;&#039;), MOZART (&#039;&#039;&#039;chem_opt=112&#039;&#039;&#039; or &#039;&#039;&#039;119&#039;&#039;&#039;), and GOCART (&#039;&#039;&#039;chem_opt=300&#039;&#039;&#039;) variables. &lt;br /&gt;
&lt;br /&gt;
It is also possible to use &#039;&#039;&#039;tracer_opt = 1&#039;&#039;&#039; and &#039;&#039;&#039;tracer_opt = 2&#039;&#039;&#039; in a code compiled with WRF-Chem, but the resulting passive tracers are advected by WRF-Chem and behave slightly differently.&lt;br /&gt;
&lt;br /&gt;
==Running an idealized example==&lt;br /&gt;
An idealized example based on the hill case has been created in [https://github.com/jbeezley/wrf-fire/tree/master/wrfv2_fire/test/em_fire/chem &#039;&#039;&#039;test/em_fire/chem&#039;&#039;&#039;]&lt;br /&gt;
Note that &#039;&#039;&#039;sfc_full_init =.true.&#039;&#039;&#039; is required in the &#039;&#039;&#039;&amp;amp;fire&#039;&#039;&#039; section of &#039;&#039;&#039;namelist.input&#039;&#039;&#039; to initialize USGS landuse, which is required by  WRF-Chem.&lt;br /&gt;
The tracer selected by &#039;&#039;&#039;tracer_opt=1&#039;&#039;&#039; will appear as an atmospheric variable in the output file with the name &#039;&#039;&#039;smoke&#039;&#039;&#039;. The chemical species in the atmosphere, selected by &#039;&#039;&#039;chem_opt&#039;&#039;&#039;, will appear under their respective names, such as &#039;&#039;&#039;n2o5&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
&lt;br /&gt;
To use the passive tracers in the code built with WRF-Chem, specify &#039;&#039;&#039;tracer_opt=2&#039;&#039;&#039; and &#039;&#039;&#039;chem_opt=0&#039;&#039;&#039; in &#039;&#039;&#039;namelist.input&#039;&#039;&#039;. The tracers work slightly differently in code built with and without WRF-Chem, as described in file &#039;&#039;&#039;chem/module_input_tracer.F&#039;&#039;&#039;. A sample emission factors table for this usage is available as &#039;&#039;&#039;test/em_fire/chem/namelist.fire_emissions.tracers&#039;&#039;&#039;. It can be used in ideal as well as real runs. Different rows in the table can be used to track separate species, e.g., pm10 and pm25, with different emission factors. &lt;br /&gt;
&lt;br /&gt;
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 (&#039;&#039;&#039;ppmv&#039;&#039;&#039;), so the amounts of the inserted species are scaled 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 &#039;&#039;&#039;GRNHFX&#039;&#039;&#039; as a proxy. The emissions table contains the amounts of emissions fuel burned in &#039;&#039;&#039;g/kg&#039;&#039;&#039; or &#039;&#039;&#039;mol/kg&#039;&#039;&#039;.  The emissions tables are specified in file &#039;&#039;&#039;namelist.fire_emissions&#039;&#039;&#039;. This file contains a line for each species like&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 no2=3.2,3.2,3.2,1.4,1.4,1.4,1.4,2.7,2.7,2.7,3,3,3,&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
with emissions (g/kg fuel or mol/kg fuel) for each of the fuel categories used (by default, the 13 Anderson&#039;s categories).&lt;br /&gt;
&lt;br /&gt;
There are two additional variables in &#039;&#039;&#039;namelist.fire_emissions&#039;&#039;&#039;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
compatible_chem_opt=112,119&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
is a list of &#039;&#039;&#039;chem_opt&#039;&#039;&#039; 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  &#039;&#039;&#039;chem_opt&#039;&#039;&#039;.  If it does, the results can be upredictable.&lt;br /&gt;
The variable&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
printsums=1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
will enable printing of the totals of each emissions species at the end of every time step.&lt;br /&gt;
&lt;br /&gt;
Several prototype emissions tables are provided in &#039;&#039;&#039;test/em_fire/chem&#039;&#039;&#039;. You need to copy or link one of the emissions tables to &#039;&#039;&#039;namelist.fire_emissions&#039;&#039;&#039; in your run directory, such as&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -s namelist.fire_emissions.RADM2 namelist.fire_emissions&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
and set matching &#039;&#039;&#039;chem_opt&#039;&#039;&#039; in &#039;&#039;&#039;namelist.input&#039;&#039;&#039;, here &#039;&#039;&#039;chem_opt=2&#039;&#039;&#039;. See the next section for the available emissions tables. Users can also add their own.&lt;br /&gt;
&lt;br /&gt;
==Chemical species==&lt;br /&gt;
&lt;br /&gt;
The chemical model selected by the &#039;&#039;&#039;chem_opt&#039;&#039;&#039; flag produces concentrations on 3D grids in every &#039;&#039;&#039;wrfout&#039;&#039;&#039; file produced, for a set of variables defined in the &#039;&#039;&#039;Chem scalars&#039;&#039;&#039; part of the file  [https://github.com/openwfm/WRF-SFIRE/blob/262829290d98e419b6839893ecb1a5d36ed4b969/Registry/registry.chem#L1567 &#039;&#039;&#039;Registry/registry.chem&#039;&#039;&#039;]. The first section of the list contains the chemical species common to all models, later sections list species added for specific models. For more detailed information about the species including dusts and aerosols in specific WRF-Chem models, see the [https://ruc.noaa.gov/wrf/wrf-chem/model_info.htm WRF-Chem model documention] and the links to the individual models at the emissions tables below.&lt;br /&gt;
&lt;br /&gt;
The quantities of the chemical species are in &#039;&#039;&#039;ppmv&#039;&#039;&#039;, i.e., 1e6*mol/mol of dry air.&lt;br /&gt;
&lt;br /&gt;
The frequency of writing the outputs into the wrfout files is specified by the user in the &#039;&#039;&#039;history_interval&#039;&#039;&#039; flags in the WRF &#039;&#039;&#039;namelist.input&#039;&#039;&#039; file. It can be as often as once every minute, but usually much less. &lt;br /&gt;
&lt;br /&gt;
SFIRE adds the fire emissions to a subset of the chemical species as specified in the emissions table. It is up to the chemical model to produce other species from them. Note that the parts of the registry.chem file using the word &amp;quot;emissions&amp;quot; are for other emission schemes and not relevant here. SFIRE adds fire emissions directly to the lowest layer of the 3D Chem fiels during the fire simulation.&lt;br /&gt;
&lt;br /&gt;
There are currently three emissions tables available:&lt;br /&gt;
* [https://github.com/openwfm/WRF-SFIRE/blob/master/test/em_fire/chem/namelist.fire_emissions.RADM2 namelist.fire_emissions.RADM2] for the [http://ruc.noaa.gov/wrf/WG11/radm2.htm RADM2] model&lt;br /&gt;
* [https://github.com/openwfm/WRF-SFIRE/blob/master/test/em_fire/chem/namelist.fire_emissions.MOZART namelist.fire_emissions.MOZART] for the [http://www.acd.ucar.edu/wrf-chem/mozart.shtml MOZART] model&lt;br /&gt;
* [https://github.com/openwfm/WRF-SFIRE/blob/master/test/em_fire/chem/namelist.fire_emissions.GOCART namelist.fire_emissions.GOCART] for the [https://tropo.gsfc.nasa.gov/gocart GOCART] model&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
WRF-Chem contains a multitude of arrays representing concentrations of chemical species. The typical&lt;br /&gt;
method of injecting data into the simulation involves generating emission input data files from standard&lt;br /&gt;
sources.  These sources are read into the code using auxiliary input streams and interpolated into&lt;br /&gt;
the species arrays in the [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/chem/module_emissions_anthropogenics.F emissions] module.  For the coupling with SFIRE, turning off file&lt;br /&gt;
input in the namelist seems to initialize the emission arrays to zero.  This eliminates the need to generate&lt;br /&gt;
useless emission files. &lt;br /&gt;
&lt;br /&gt;
WRF-Chem stores its state in arrays &#039;&#039;&#039;chem&#039;&#039;&#039; and   &#039;&#039;&#039;tracer&#039;&#039;&#039;.  These arrays are four dimensional indexed like &#039;&#039;&#039;(x,z,y,s)&#039;&#039;&#039;, where s is the chemical&lt;br /&gt;
species. The domain structure contains scalars such as &#039;&#039;&#039;p_smoke&#039;&#039;&#039; (into the &#039;&#039;&#039;tracer&#039;&#039;&#039; array) and &#039;&#039;&#039;p_nh4&#039;&#039;&#039; (into the &#039;&#039;&#039;chem&#039;&#039;&#039; array) that give the species index for&lt;br /&gt;
each type.  The species selections are specific to different chemistry options (&#039;&#039;&#039;chem_opt&#039;&#039;&#039;) &lt;br /&gt;
from the registry; however, even unused species have their index set to 1. The dynamics section of the namelist has an option for &#039;&#039;&#039;tracer_opt&#039;&#039;&#039;.  This&lt;br /&gt;
controls what tracers are generated for Chem.  &lt;br /&gt;
&lt;br /&gt;
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 [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_atm.F#L276 &#039;&#039;&#039;add_fire_emissions_to_chem&#039;&#039;&#039;], which  adds chemical species to the &#039;&#039;&#039;chem&#039;&#039;&#039; array, was derived from the utility [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_util.F#L471 &#039;&#039;&#039;sum_2d_cells&#039;&#039;&#039;] by adding chemistry-specific code.&lt;br /&gt;
&lt;br /&gt;
The chemistry coupling code is compiled only when WRF-Chem is being compiled. It resides in [https://github.com/jbeezley/wrf-fire/blob4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_atm.F module_fr_sfire_atm.F], which is allowed by the SFIRE architecture to contain code both at atmosphere and fire resolution. Besides subroutine &#039;&#039;&#039;add_fire_emissions_to_chem&#039;&#039;&#039;, the code consists of subroutine [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_atm.F#L151 &#039;&#039;&#039;read_emissions_table&#039;&#039;&#039;], which reads file &#039;&#039;&#039;namelist.fire_emissions&#039;&#039;&#039;, subroutine [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_atm.F#L276 &#039;&#039;&#039;add_fire_emissions_to_chem&#039;&#039;&#039;], which  adds chemical species to the &#039;&#039;&#039;chem&#039;&#039;&#039; array, the [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_atm.F#L78 emissions tables] as module variables, subroutine [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_atm.F#L1914 &#039;&#039;&#039;fire_emission&#039;&#039;&#039;], which adds the smoke tracer, and the corresponding call statements in [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_driver.F  &#039;&#039;&#039;module_fr_sfire_driver&#039;&#039;&#039;].&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
* Kochanski A. K., Jenkins M.A., Yedinak K., Mandel J., Beezley J, and Lamb B. (2015) &#039;&#039;&#039;Toward an integrated system for fire, smoke and air quality simulations&#039;&#039;&#039;, International Journal of Wildland Fire - http://dx.doi.org/10.1071/WF14074&lt;br /&gt;
* Adam K. Kochanski, Jonathan D. Beezley, Jan Mandel, Craig B. Clements, &#039;&#039;&#039;Air pollution forecasting by coupled atmosphere-fire model WRF and SFIRE with WRF-Chem&#039;&#039;&#039;, 4th Fire Behavior and Fuels Conference, February 18-22, 2013, Raleigh, NC, 	{{arXiv|1304.7703}}, 2013&lt;br /&gt;
* Adam K. Kochanski, Jonathan D. Beezley, Jan Mandel, and Minjeong Kim, &#039;&#039;&#039;WRF fire simulation coupled with a fuel moisture model and smoke transport by WRF-Chem&#039;&#039;&#039;, [http://www.mmm.ucar.edu/events/2012_wrfusers/ 2012 WRF Users Workshop], [http://www.openwfm.org/wiki/File:WRF_workshop_2012_poster.pdf Poster 51] [http://www.mmm.ucar.edu/events/2012_wrfusers/abstracts/p51.htm abstract] [https://www.regonline.com/AttendeeDocuments/1077122/43365086/wrf2012.pdf paper] {{arXiv|1208.1059}}&lt;br /&gt;
* [http://ruc.noaa.gov/wrf/WG11/Users_guide.pdf WRF-Chem Users&#039; Guide]&lt;br /&gt;
* Georg A. Grell, Steven E. Peckham, Rainer Schmitz, Stuart A. McKeen, Gregory Frost, William C. Skamarock, Brian Eder, [http://dx.doi.org/10.1016/j.atmosenv.2005.04.027 Fully coupled “online” chemistry within the WRF model], Atmospheric Environment, Volume 39, Issue 37, December 2005, Pages 6957–6975&lt;br /&gt;
* C. Wiedinmyer, S. K. Akagi, R. J. Yokelson, L. K. Emmons, J. A. Al-Saadi, J. J. Orlando, and A. J. Soja. [http://dx.doi.org/10.5194/gmd-4-625-2011 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&lt;br /&gt;
* 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, [http://dx.doi.org/10.5194/gmd-3-43-2010 Description and evaluation of the Model for Ozone and Related chemical Tracers, version 4 (MOZART-4)], Geosci. Model Dev., 3, 43-67, 2010&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* [http://ruc.noaa.gov/wrf/WG11/ WRF-Chem] home page&lt;br /&gt;
* [https://www2.acom.ucar.edu/modeling/finn-fire-inventory-ncar Finn]  emissions model&lt;br /&gt;
* [http://www.acd.ucar.edu/wrf-chem/mozart.shtml MOZART] chemistry model&lt;/div&gt;</summary>
		<author><name>Jmandel</name></author>
	</entry>
	<entry>
		<id>https://wiki.openwfm.org/index.php?title=Smoke_and_coupling_with_WRF-Chem&amp;diff=8398</id>
		<title>Smoke and coupling with WRF-Chem</title>
		<link rel="alternate" type="text/html" href="https://wiki.openwfm.org/index.php?title=Smoke_and_coupling_with_WRF-Chem&amp;diff=8398"/>
		<updated>2025-11-22T05:52:44Z</updated>

		<summary type="html">&lt;p&gt;Jmandel: /* Passive smoke tracers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{users guide}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Sfire smoke.png|thumb|SFire smoke tracer in action.  See [[File:Smoke small.avi|animation]].]]&lt;br /&gt;
&lt;br /&gt;
Fire emissions can be modeled a passive smoke tracer advected by the wind field,&lt;br /&gt;
or as chemical species tracers, which also undergo chemical reactions by WRF-Chem. WRF-Chem is included in the WRF repository. Tracer variables are 3d fields of concentrations on the atmospheric grid. The variables are present in the wrfout files when activated. &lt;br /&gt;
&lt;br /&gt;
==Passive smoke tracers==&lt;br /&gt;
&lt;br /&gt;
The selection of the tracers in WRF is controlled by namelist variable &#039;&#039;&#039;tracer_opt&#039;&#039;&#039; in the &#039;&#039;&#039;&amp;amp;dynamics&#039;&#039;&#039;] section .  The coupling supports the option &#039;&#039;&#039;tracer_opt = 1&#039;&#039;&#039;, which creates a single tracer called &#039;&#039;&#039;smoke&#039;&#039;&#039;,&lt;br /&gt;
and the option &#039;&#039;&#039;tracer_opt = 2&#039;&#039;&#039;, which creates passive tracers called &#039;&#039;&#039;tr17_1&#039;&#039;&#039; to &#039;&#039;&#039;tr17_8&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
Emissions are computer proportionally to the fuel burned according to the emission factors in file  &#039;&#039;&#039;namelist.fire_emissions&#039;&#039;&#039; and added to the lowest layer of the active tracer variables. &lt;br /&gt;
&lt;br /&gt;
There are small differences between the propagation of the different tracers, and also between the propagation when the code is build with or without WRF-CHEM.&lt;br /&gt;
&lt;br /&gt;
==Coupling with WRF-Chem==&lt;br /&gt;
Compiling the code with support for WRF-Chem is similar to the [[How to compile WRF-Fire|standard procedure]].&lt;br /&gt;
You must set an environment variable &#039;&#039;&#039;WRF_CHEM&#039;&#039;&#039; and configure with the argument &#039;&#039;&#039;chem&#039;&#039;&#039; as follows.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export WRF_CHEM=1&lt;br /&gt;
./configure chem&lt;br /&gt;
./compile em_fire&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The selection of the tracers in WRF-Chem is controlled by namelist variable &#039;&#039;&#039;chem_opt&#039;&#039;&#039; in &#039;&#039;&#039;&amp;amp;chem&#039;&#039;&#039; section of &#039;&#039;&#039;namelist.input&#039;&#039;&#039;. If &#039;&#039;&#039;chem_opt=0&#039;&#039;&#039;, no chemical tracers are created.  The coupling supports subsets of RADM2 (&#039;&#039;&#039;chem_opt=2&#039;&#039;&#039;), MOZART (&#039;&#039;&#039;chem_opt=112&#039;&#039;&#039; or &#039;&#039;&#039;119&#039;&#039;&#039;), and GOCART (&#039;&#039;&#039;chem_opt=300&#039;&#039;&#039;) variables. &lt;br /&gt;
&lt;br /&gt;
It is also possible to use &#039;&#039;&#039;tracer_opt = 1&#039;&#039;&#039; and &#039;&#039;&#039;tracer_opt = 2&#039;&#039;&#039; in a code compiled with WRF-Chem, but the resulting passive tracers are advected by WRF-Chem and behave slightly differently.&lt;br /&gt;
&lt;br /&gt;
==Running an idealized example==&lt;br /&gt;
An idealized example based on the hill case has been created in [https://github.com/jbeezley/wrf-fire/tree/master/wrfv2_fire/test/em_fire/chem &#039;&#039;&#039;test/em_fire/chem&#039;&#039;&#039;]&lt;br /&gt;
Note that &#039;&#039;&#039;sfc_full_init =.true.&#039;&#039;&#039; is required in the &#039;&#039;&#039;&amp;amp;fire&#039;&#039;&#039; section of &#039;&#039;&#039;namelist.input&#039;&#039;&#039; to initialize USGS landuse, which is required by  WRF-Chem.&lt;br /&gt;
The tracer selected by &#039;&#039;&#039;tracer_opt=1&#039;&#039;&#039; will appear as an atmospheric variable in the output file with the name &#039;&#039;&#039;smoke&#039;&#039;&#039;. The chemical species in the atmosphere, selected by &#039;&#039;&#039;chem_opt&#039;&#039;&#039;, will appear under their respective names, such as &#039;&#039;&#039;n2o5&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
&lt;br /&gt;
To use the passive tracers in the code built with WRF-Chem, specify &#039;&#039;&#039;tracer_opt=2&#039;&#039;&#039; and &#039;&#039;&#039;chem_opt=0&#039;&#039;&#039; in &#039;&#039;&#039;namelist.input&#039;&#039;&#039;. The tracers work slightly differently in code built with and without WRF-Chem, as described in file &#039;&#039;&#039;chem/module_input_tracer.F&#039;&#039;&#039;. A sample emission factors table for this usage is available as &#039;&#039;&#039;test/em_fire/chem/namelist.fire_emissions.tracers&#039;&#039;&#039;. It can be used in ideal as well as real runs. Different rows in the table can be used to track separate species, e.g., pm10 and pm25, with different emission factors. &lt;br /&gt;
&lt;br /&gt;
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 (&#039;&#039;&#039;ppmv&#039;&#039;&#039;), so the amounts of the inserted species are scaled 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 &#039;&#039;&#039;GRNHFX&#039;&#039;&#039; as a proxy. The emissions table contains the amounts of emissions fuel burned in &#039;&#039;&#039;g/kg&#039;&#039;&#039; or &#039;&#039;&#039;mol/kg&#039;&#039;&#039;.  The emissions tables are specified in file &#039;&#039;&#039;namelist.fire_emissions&#039;&#039;&#039;. This file contains a line for each species like&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 no2=3.2,3.2,3.2,1.4,1.4,1.4,1.4,2.7,2.7,2.7,3,3,3,&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
with emissions (g/kg fuel or mol/kg fuel) for each of the fuel categories used (by default, the 13 Anderson&#039;s categories).&lt;br /&gt;
&lt;br /&gt;
There are two additional variables in &#039;&#039;&#039;namelist.fire_emissions&#039;&#039;&#039;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
compatible_chem_opt=112,119&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
is a list of &#039;&#039;&#039;chem_opt&#039;&#039;&#039; 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  &#039;&#039;&#039;chem_opt&#039;&#039;&#039;.  If it does, the results can be upredictable.&lt;br /&gt;
The variable&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
printsums=1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
will enable printing of the totals of each emissions species at the end of every time step.&lt;br /&gt;
&lt;br /&gt;
Several prototype emissions tables are provided in &#039;&#039;&#039;test/em_fire/chem&#039;&#039;&#039;. You need to copy or link one of the emissions tables to &#039;&#039;&#039;namelist.fire_emissions&#039;&#039;&#039; in your run directory, such as&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -s namelist.fire_emissions.RADM2 namelist.fire_emissions&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
and set matching &#039;&#039;&#039;chem_opt&#039;&#039;&#039; in &#039;&#039;&#039;namelist.input&#039;&#039;&#039;, here &#039;&#039;&#039;chem_opt=2&#039;&#039;&#039;. See the next section for the available emissions tables. Users can also add their own.&lt;br /&gt;
&lt;br /&gt;
==Chemical species==&lt;br /&gt;
&lt;br /&gt;
The chemical model selected by the &#039;&#039;&#039;chem_opt&#039;&#039;&#039; flag produces concentrations on 3D grids in every &#039;&#039;&#039;wrfout&#039;&#039;&#039; file produced, for a set of variables defined in the &#039;&#039;&#039;Chem scalars&#039;&#039;&#039; part of the file  [https://github.com/openwfm/WRF-SFIRE/blob/262829290d98e419b6839893ecb1a5d36ed4b969/Registry/registry.chem#L1567 &#039;&#039;&#039;Registry/registry.chem&#039;&#039;&#039;]. The first section of the list contains the chemical species common to all models, later sections list species added for specific models. For more detailed information about the species including dusts and aerosols in specific WRF-Chem models, see the [https://ruc.noaa.gov/wrf/wrf-chem/model_info.htm WRF-Chem model documention] and the links to the individual models at the emissions tables below.&lt;br /&gt;
&lt;br /&gt;
The quantities of the chemical species are in &#039;&#039;&#039;ppmv&#039;&#039;&#039;, i.e., 1e6*mol/mol of dry air.&lt;br /&gt;
&lt;br /&gt;
The frequency of writing the outputs into the wrfout files is specified by the user in the &#039;&#039;&#039;history_interval&#039;&#039;&#039; flags in the WRF &#039;&#039;&#039;namelist.input&#039;&#039;&#039; file. It can be as often as once every minute, but usually much less. &lt;br /&gt;
&lt;br /&gt;
SFIRE adds the fire emissions to a subset of the chemical species as specified in the emissions table. It is up to the chemical model to produce other species from them. Note that the parts of the registry.chem file using the word &amp;quot;emissions&amp;quot; are for other emission schemes and not relevant here. SFIRE adds fire emissions directly to the lowest layer of the 3D Chem fiels during the fire simulation.&lt;br /&gt;
&lt;br /&gt;
There are currently three emissions tables available:&lt;br /&gt;
* [https://github.com/openwfm/WRF-SFIRE/blob/master/test/em_fire/chem/namelist.fire_emissions.RADM2 namelist.fire_emissions.RADM2] for the [http://ruc.noaa.gov/wrf/WG11/radm2.htm RADM2] model&lt;br /&gt;
* [https://github.com/openwfm/WRF-SFIRE/blob/master/test/em_fire/chem/namelist.fire_emissions.MOZART namelist.fire_emissions.MOZART] for the [http://www.acd.ucar.edu/wrf-chem/mozart.shtml MOZART] model&lt;br /&gt;
* [https://github.com/openwfm/WRF-SFIRE/blob/master/test/em_fire/chem/namelist.fire_emissions.GOCART namelist.fire_emissions.GOCART] for the [https://tropo.gsfc.nasa.gov/gocart GOCART] model&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
WRF-Chem contains a multitude of arrays representing concentrations of chemical species. The typical&lt;br /&gt;
method of injecting data into the simulation involves generating emission input data files from standard&lt;br /&gt;
sources.  These sources are read into the code using auxiliary input streams and interpolated into&lt;br /&gt;
the species arrays in the [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/chem/module_emissions_anthropogenics.F emissions] module.  For the coupling with SFIRE, turning off file&lt;br /&gt;
input in the namelist seems to initialize the emission arrays to zero.  This eliminates the need to generate&lt;br /&gt;
useless emission files. &lt;br /&gt;
&lt;br /&gt;
WRF-Chem stores its state in arrays &#039;&#039;&#039;chem&#039;&#039;&#039; and   &#039;&#039;&#039;tracer&#039;&#039;&#039;.  These arrays are four dimensional indexed like &#039;&#039;&#039;(x,z,y,s)&#039;&#039;&#039;, where s is the chemical&lt;br /&gt;
species. The domain structure contains scalars such as &#039;&#039;&#039;p_smoke&#039;&#039;&#039; (into the &#039;&#039;&#039;tracer&#039;&#039;&#039; array) and &#039;&#039;&#039;p_nh4&#039;&#039;&#039; (into the &#039;&#039;&#039;chem&#039;&#039;&#039; array) that give the species index for&lt;br /&gt;
each type.  The species selections are specific to different chemistry options (&#039;&#039;&#039;chem_opt&#039;&#039;&#039;) &lt;br /&gt;
from the registry; however, even unused species have their index set to 1. The dynamics section of the namelist has an option for &#039;&#039;&#039;tracer_opt&#039;&#039;&#039;.  This&lt;br /&gt;
controls what tracers are generated for Chem.  &lt;br /&gt;
&lt;br /&gt;
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 [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_atm.F#L276 &#039;&#039;&#039;add_fire_emissions_to_chem&#039;&#039;&#039;], which  adds chemical species to the &#039;&#039;&#039;chem&#039;&#039;&#039; array, was derived from the utility [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_util.F#L471 &#039;&#039;&#039;sum_2d_cells&#039;&#039;&#039;] by adding chemistry-specific code.&lt;br /&gt;
&lt;br /&gt;
The chemistry coupling code is compiled only when WRF-Chem is being compiled. It resides in [https://github.com/jbeezley/wrf-fire/blob4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_atm.F module_fr_sfire_atm.F], which is allowed by the SFIRE architecture to contain code both at atmosphere and fire resolution. Besides subroutine &#039;&#039;&#039;add_fire_emissions_to_chem&#039;&#039;&#039;, the code consists of subroutine [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_atm.F#L151 &#039;&#039;&#039;read_emissions_table&#039;&#039;&#039;], which reads file &#039;&#039;&#039;namelist.fire_emissions&#039;&#039;&#039;, subroutine [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_atm.F#L276 &#039;&#039;&#039;add_fire_emissions_to_chem&#039;&#039;&#039;], which  adds chemical species to the &#039;&#039;&#039;chem&#039;&#039;&#039; array, the [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_atm.F#L78 emissions tables] as module variables, subroutine [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_atm.F#L1914 &#039;&#039;&#039;fire_emission&#039;&#039;&#039;], which adds the smoke tracer, and the corresponding call statements in [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_driver.F  &#039;&#039;&#039;module_fr_sfire_driver&#039;&#039;&#039;].&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
* Kochanski A. K., Jenkins M.A., Yedinak K., Mandel J., Beezley J, and Lamb B. (2015) &#039;&#039;&#039;Toward an integrated system for fire, smoke and air quality simulations&#039;&#039;&#039;, International Journal of Wildland Fire - http://dx.doi.org/10.1071/WF14074&lt;br /&gt;
* Adam K. Kochanski, Jonathan D. Beezley, Jan Mandel, Craig B. Clements, &#039;&#039;&#039;Air pollution forecasting by coupled atmosphere-fire model WRF and SFIRE with WRF-Chem&#039;&#039;&#039;, 4th Fire Behavior and Fuels Conference, February 18-22, 2013, Raleigh, NC, 	{{arXiv|1304.7703}}, 2013&lt;br /&gt;
* Adam K. Kochanski, Jonathan D. Beezley, Jan Mandel, and Minjeong Kim, &#039;&#039;&#039;WRF fire simulation coupled with a fuel moisture model and smoke transport by WRF-Chem&#039;&#039;&#039;, [http://www.mmm.ucar.edu/events/2012_wrfusers/ 2012 WRF Users Workshop], [http://www.openwfm.org/wiki/File:WRF_workshop_2012_poster.pdf Poster 51] [http://www.mmm.ucar.edu/events/2012_wrfusers/abstracts/p51.htm abstract] [https://www.regonline.com/AttendeeDocuments/1077122/43365086/wrf2012.pdf paper] {{arXiv|1208.1059}}&lt;br /&gt;
* [http://ruc.noaa.gov/wrf/WG11/Users_guide.pdf WRF-Chem Users&#039; Guide]&lt;br /&gt;
* Georg A. Grell, Steven E. Peckham, Rainer Schmitz, Stuart A. McKeen, Gregory Frost, William C. Skamarock, Brian Eder, [http://dx.doi.org/10.1016/j.atmosenv.2005.04.027 Fully coupled “online” chemistry within the WRF model], Atmospheric Environment, Volume 39, Issue 37, December 2005, Pages 6957–6975&lt;br /&gt;
* C. Wiedinmyer, S. K. Akagi, R. J. Yokelson, L. K. Emmons, J. A. Al-Saadi, J. J. Orlando, and A. J. Soja. [http://dx.doi.org/10.5194/gmd-4-625-2011 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&lt;br /&gt;
* 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, [http://dx.doi.org/10.5194/gmd-3-43-2010 Description and evaluation of the Model for Ozone and Related chemical Tracers, version 4 (MOZART-4)], Geosci. Model Dev., 3, 43-67, 2010&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* [http://ruc.noaa.gov/wrf/WG11/ WRF-Chem] home page&lt;br /&gt;
* [https://www2.acom.ucar.edu/modeling/finn-fire-inventory-ncar Finn]  emissions model&lt;br /&gt;
* [http://www.acd.ucar.edu/wrf-chem/mozart.shtml MOZART] chemistry model&lt;/div&gt;</summary>
		<author><name>Jmandel</name></author>
	</entry>
	<entry>
		<id>https://wiki.openwfm.org/index.php?title=How_to_interpret_WRF_variables&amp;diff=8397</id>
		<title>How to interpret WRF variables</title>
		<link rel="alternate" type="text/html" href="https://wiki.openwfm.org/index.php?title=How_to_interpret_WRF_variables&amp;diff=8397"/>
		<updated>2025-11-22T03:43:55Z</updated>

		<summary type="html">&lt;p&gt;Jmandel: /* Arrays and Storage Order */  -&amp;gt; Storage order&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{users guide}}&lt;br /&gt;
&lt;br /&gt;
This page describes the interpretation of selected atmospheric variables, which are important for fire visualization. See [http://www.mmm.ucar.edu/wrf/users/pub-doc.html WRF documentation] for further details.&lt;br /&gt;
&lt;br /&gt;
==Grid==&lt;br /&gt;
&lt;br /&gt;
[[File:Wrfgrid.png|250px]][[File:WRF_staggered_grid.gif|500px]]&lt;br /&gt;
&lt;br /&gt;
Grids in WRF are logically rectilinear. Variables for WRF cell indexed &#039;&#039;&#039;(i,j,k)&#039;&#039;&#039; can be located at one of 4 possible points. You can tell where by looking at the WRF registry or the attributes of [[NetCDF]] files, which WRF uses as I/O format. You can also tell by the fact that staggered variables have the staggered dimension larger by one, since there needs to be variable at the last boundary face.&lt;br /&gt;
* at the center of the cell - theta points, not staggered&lt;br /&gt;
* at the center of the left face - U point, staggered in X&lt;br /&gt;
* at the center of the front face - V point, staggered in Y&lt;br /&gt;
* at the center of the bottom face - W point, staggered in Z&lt;br /&gt;
Scalar variables (such as thermodynamical variables, hence the theta: temperature, pressure,...) generally live at theta-points. One exception is the geopotential, which lives at W-points. &lt;br /&gt;
The documentation, some variable names, and comments in the WRF code also associate theta with the vertical position of the mid-plane of the cell and at W with the vertical position of the bottom of the cell.&lt;br /&gt;
&lt;br /&gt;
The orientation of the axes in the real world, such as &amp;quot;east-west&amp;quot;,  in the order of increasing index, such as &#039;&#039;&#039;i&#039;&#039;&#039;, are defined in the registry. For postprocessing, they can be found at runtime as attributes in the NetCDF files.&lt;br /&gt;
&lt;br /&gt;
==Storage order==&lt;br /&gt;
&lt;br /&gt;
Arrays are stored in files and in memory. All arrays are described in the Registry, which is a collection of text files in &#039;&#039;&#039;WRFV3/Registry&#039;&#039;&#039;. The variable names in memory and in files are sometimes different.&lt;br /&gt;
&lt;br /&gt;
The value of the time at the step &#039;&#039;&#039;t&#039;&#039;&#039; is stored in character array &#039;&#039;&#039;Times(:,t)&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Arrays in WRF NETCDF files, like the WRFOUT files, are written with the indexing as &#039;&#039;&#039;(t, z, y, x)&#039;&#039;&#039;, where &#039;&#039;&#039;t&#039;&#039;&#039; is the time index, which varies the slowest. The is how the variables appear when read e.g. in Python.  However, when read in FORTRAN, the same arrays appear in the FORTRAN column major odering &#039;&#039;&#039;(x, y, z, t)&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
To read the surface values of a 3D array, use the indexing &#039;&#039;&#039;(t, z, 0, x)&#039;&#039;&#039; in Python, and &#039;&#039;&#039;(x, y, 1, t)&#039;&#039;&#039; in FORTRAN.&lt;br /&gt;
&lt;br /&gt;
Arrays in memory are indexed as &#039;&#039;&#039;(i,k,j)&#039;&#039;&#039; (in FORTRAN) following [http://www.mmm.ucar.edu/wrf/WG2/WRF_conventions.html WRF coding conventions]. There is no time index for the time step in arrays in memory, because WRF works with only one time step at a time. In 2D arrays, there is no vertical &#039;&#039;&#039;k&#039;&#039;&#039; dimension.&lt;br /&gt;
&lt;br /&gt;
==Wind==&lt;br /&gt;
&lt;br /&gt;
Components of the wind velocity vector &#039;&#039;&#039;U&#039;&#039;&#039;, &#039;&#039;&#039;V&#039;&#039;&#039;, &#039;&#039;&#039;W&#039;&#039;&#039; live at the corresponding points, hence the point names. These are in the geometrically horizontal and vertical directions. On flat ground, &#039;&#039;&#039;W&#039;&#039;&#039; on the first level &#039;&#039;k=1&#039;&#039; is zero. However, when the ground has nonzero slope, the vertical velocity components &#039;&#039;&#039;W&#039;&#039;&#039; is generally not zero, because the normal vector to the ground is not vertical.&lt;br /&gt;
&lt;br /&gt;
Note that the picture above center and right (from [http://www.mmm.ucar.edu/wrf/users/docs/arw_v3.pdf WRF documentation]) use half integer indexing. &lt;br /&gt;
* The horizontal wind component &#039;&#039;&#039;U&amp;lt;sub&amp;gt;i-1/2,j,k&amp;lt;/sub&amp;gt;&#039;&#039;&#039; in the X direction is stored in the array entry &#039;&#039;&#039;u(i,j,k)&#039;&#039;&#039;&lt;br /&gt;
* The horizontal wind component &#039;&#039;&#039;V&amp;lt;sub&amp;gt;i,j-1/2,k&amp;lt;/sub&amp;gt;&#039;&#039;&#039; in the Y is stored in the array entry &#039;&#039;&#039;v(i,j,k)&#039;&#039;&#039;&lt;br /&gt;
* The vertical wind component &#039;&#039;&#039;W&amp;lt;sub&amp;gt;i,j,k-1/2&amp;lt;/sub&amp;gt;&#039;&#039;&#039; is stored in the array entry &#039;&#039;&#039;w(i,j,k)&#039;&#039;&#039;&lt;br /&gt;
In particular, the lowest layer  in WRF is &#039;&#039;&#039;k=1&#039;&#039;&#039;, and, on flat ground, &#039;&#039;&#039;w(:,:,1)=0&#039;&#039;&#039;, since the ground is impermeable in the normal direction. On a ground with nonzero slope, &#039;&#039;&#039;w(:,:,1)=0&#039;&#039;&#039; is generally nonzero. The winds at the middle of the first layer, at the height &#039;&#039;&#039;eta&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&#039;&#039;&#039;, are &#039;&#039;&#039;u(:,:,1)&#039;&#039;&#039;, &#039;&#039;&#039;v(:,:,1)&#039;&#039;&#039;, and they are generally nonzero. &lt;br /&gt;
&lt;br /&gt;
Because the components of the wind velocity vector are on different staggered grids, and visualization software usually expects all three components of the velocity vector based at the same point, they need to be interpolated to theta-points (cell centers) for display:&lt;br /&gt;
: &#039;&#039;&#039;U_THETA(i,j,k) = 0.5*(U(i,j,k) + U(i+1,j,k))&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;V_THETA(i,j,k) = 0.5*(V(i,j,k) + V(i,j+1,k))&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;W_THETA(i,j,k) = 0.5*(W(i,j,k) + W(i,j,k+1))&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Location==&lt;br /&gt;
&lt;br /&gt;
The longitude and latitude of the theta and U nodes are given by arrays &#039;&#039;&#039;XLONG&#039;&#039;&#039; and &#039;&#039;&#039;XLAT&#039;&#039;&#039;, which are set at initialization and then do not change. However the elevation has to be computed from the flow solution as [[wikipedia:Geopotential height|geopotential height]] by &lt;br /&gt;
: &#039;&#039;&#039;ELEVATION_W(i,j,k) = (PHB(i,j,k) + PH(i,j,k))/9.81&lt;br /&gt;
where &#039;&#039;&#039;PHB + PH&#039;&#039;&#039; is the [[wikipedia:geopotential|geopotential]]. &#039;&#039;&#039;PHB&#039;&#039;&#039; is constant, set at initialization, and &#039;&#039;&#039;PH&#039;&#039;&#039;, called perturbation geopotential, starts as zero and varies with time.&lt;br /&gt;
&lt;br /&gt;
PH and PHB live at the W-points, thus the geopotential height at the lowest level is the same as terrain height&lt;br /&gt;
: &#039;&#039;&#039;ELEVATION_W(i,j) = PHB(i,j,1)/9.81&lt;br /&gt;
up to rounding error. This variable is also part of WRF state as &#039;&#039;&#039;z_at_w&#039;&#039;&#039; and its output to wrfout or wrfrst files can be enabled in the registry.&lt;br /&gt;
&lt;br /&gt;
To find the elevation of the cell theta-points (the cell midplane, where the pressure and other variables than wind live), you need to interpolate between the elevation of the top and the bottom:&lt;br /&gt;
:&#039;&#039;&#039;ELEVATION_THETA(i,j,k) =0.5*(PHB(i,j,k) + PH(i,j,k) + PHB(i,j,k+1) + PH(i,j,k+1))/9.81&lt;br /&gt;
&lt;br /&gt;
This variable is also part of  WRF state as &#039;&#039;&#039;Z&#039;&#039;&#039;  and its output to wrfout or wrfrst files can be enabled in the [https://github.com/jbeezley/wrf-fire/blob/master/wrfv2_fire/Registry/Registry.EM_COMMON#L306 registry].&lt;br /&gt;
&lt;br /&gt;
==Temperature==&lt;br /&gt;
&lt;br /&gt;
[[wikipedia:Potential temperature|Potential temperature]] in K is 300+&#039;&#039;&#039;T&#039;&#039;&#039;. The potential temperature is most suitable for visualization. However, the temperature as measured by instruments is sometimes needed for comparison. The potential temperature is converted by...  &#039;&#039;coming soon&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Pressure==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;coming soon&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[SFIRE variables]]&lt;br /&gt;
* [[WRF-Fire documentation]]&lt;br /&gt;
* [http://www.mmm.ucar.edu/wrf/users/docs/user_guide_V3/users_guide_chap5.htm#fields WRF output fields from the WRF-ARW user&#039;s guide]&lt;br /&gt;
* Grid: [http://www.mmm.ucar.edu/wrf/users/docs/arw_v3.pdf A Description of the Advanced Research WRF Version 3 (June 2008)] Fig 7.3 page 59&lt;br /&gt;
* [http://www.mmm.ucar.edu/wrf/WG2/WRF_conventions.html WRF Coding Conventions]&lt;br /&gt;
* [http://www.mmm.ucar.edu/wrf/users/tutorial/200807/WRF%20Registry%20and%20Examples.pdf WRF Registry and Examples]&lt;br /&gt;
* [http://www.mmm.ucar.edu/wrf/WG2/software_v2/ WRF v2 Software Tools and Documentation] (there does not seem to be a document for V3?)&lt;br /&gt;
* [http://www.mmm.ucar.edu/wrf/WG2/software_2.0/registry_schaffer.pdf Description of WRF Registry]&lt;br /&gt;
* [http://www.google.com/url?sa=t&amp;amp;source=web&amp;amp;cd=2&amp;amp;ved=0CBsQFjAB&amp;amp;url=http%3A%2F%2Fyosemite.epa.gov%2FR10%2Fairpage.nsf%2Fc36cf12146018ddc882569e5005f1951%2F75f93e40b30302fc88257408008069e9%2F%24FILE%2FBowman.pdf&amp;amp;ei=Xt5hTJH6MseNnQf9rd3NAQ&amp;amp;usg=AFQjCNHsnOPC4nuQjHikOMx4sm40IJMquw&amp;amp;sig2=_4BrV5z1fh0ahYC5s9_t0Q Moving from MM5 to WRF]&lt;br /&gt;
 &lt;br /&gt;
[[Category:WRF-Fire]]&lt;br /&gt;
[[Category:Howtos|Interpret WRF variables]]&lt;/div&gt;</summary>
		<author><name>Jmandel</name></author>
	</entry>
	<entry>
		<id>https://wiki.openwfm.org/index.php?title=How_to_interpret_WRF_variables&amp;diff=8396</id>
		<title>How to interpret WRF variables</title>
		<link rel="alternate" type="text/html" href="https://wiki.openwfm.org/index.php?title=How_to_interpret_WRF_variables&amp;diff=8396"/>
		<updated>2025-11-22T03:42:12Z</updated>

		<summary type="html">&lt;p&gt;Jmandel: indexing&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{users guide}}&lt;br /&gt;
&lt;br /&gt;
This page describes the interpretation of selected atmospheric variables, which are important for fire visualization. See [http://www.mmm.ucar.edu/wrf/users/pub-doc.html WRF documentation] for further details.&lt;br /&gt;
&lt;br /&gt;
==Grid==&lt;br /&gt;
&lt;br /&gt;
[[File:Wrfgrid.png|250px]][[File:WRF_staggered_grid.gif|500px]]&lt;br /&gt;
&lt;br /&gt;
Grids in WRF are logically rectilinear. Variables for WRF cell indexed &#039;&#039;&#039;(i,j,k)&#039;&#039;&#039; can be located at one of 4 possible points. You can tell where by looking at the WRF registry or the attributes of [[NetCDF]] files, which WRF uses as I/O format. You can also tell by the fact that staggered variables have the staggered dimension larger by one, since there needs to be variable at the last boundary face.&lt;br /&gt;
* at the center of the cell - theta points, not staggered&lt;br /&gt;
* at the center of the left face - U point, staggered in X&lt;br /&gt;
* at the center of the front face - V point, staggered in Y&lt;br /&gt;
* at the center of the bottom face - W point, staggered in Z&lt;br /&gt;
Scalar variables (such as thermodynamical variables, hence the theta: temperature, pressure,...) generally live at theta-points. One exception is the geopotential, which lives at W-points. &lt;br /&gt;
The documentation, some variable names, and comments in the WRF code also associate theta with the vertical position of the mid-plane of the cell and at W with the vertical position of the bottom of the cell.&lt;br /&gt;
&lt;br /&gt;
The orientation of the axes in the real world, such as &amp;quot;east-west&amp;quot;,  in the order of increasing index, such as &#039;&#039;&#039;i&#039;&#039;&#039;, are defined in the registry. For postprocessing, they can be found at runtime as attributes in the NetCDF files.&lt;br /&gt;
&lt;br /&gt;
==Arrays and Storage Order==&lt;br /&gt;
&lt;br /&gt;
Arrays are stored in files and in memory. All arrays are described in the Registry, which is a collection of text files in &#039;&#039;&#039;WRFV3/Registry&#039;&#039;&#039;. The variable names in memory and in files are sometimes different.&lt;br /&gt;
&lt;br /&gt;
The value of the time at the step &#039;&#039;&#039;t&#039;&#039;&#039; is stored in character array &#039;&#039;&#039;Times(:,t)&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Arrays in WRF NETCDF files, like the WRFOUT files, are written with the indexing as &#039;&#039;&#039;(t, z, y, x)&#039;&#039;&#039;, where &#039;&#039;&#039;t&#039;&#039;&#039; is the time index, which varies the slowest. The is how the variables appear when read e.g. in Python.  However, when read in FORTRAN, the same arrays appear in the FORTRAN column major odering &#039;&#039;&#039;(x, y, z, t)&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
To read the surface values of a 3D array, use the indexing &#039;&#039;&#039;(t, z, 0, x)&#039;&#039;&#039; in Python, and &#039;&#039;&#039;(x, y, 1, t)&#039;&#039;&#039; in FORTRAN.&lt;br /&gt;
&lt;br /&gt;
Arrays in memory are indexed as &#039;&#039;&#039;(i,k,j)&#039;&#039;&#039; (in FORTRAN) following [http://www.mmm.ucar.edu/wrf/WG2/WRF_conventions.html WRF coding conventions]. There is no time index for the time step in arrays in memory, because WRF works with only one time step at a time. In 2D arrays, there is no vertical &#039;&#039;&#039;k&#039;&#039;&#039; dimension.&lt;br /&gt;
&lt;br /&gt;
==Wind==&lt;br /&gt;
&lt;br /&gt;
Components of the wind velocity vector &#039;&#039;&#039;U&#039;&#039;&#039;, &#039;&#039;&#039;V&#039;&#039;&#039;, &#039;&#039;&#039;W&#039;&#039;&#039; live at the corresponding points, hence the point names. These are in the geometrically horizontal and vertical directions. On flat ground, &#039;&#039;&#039;W&#039;&#039;&#039; on the first level &#039;&#039;k=1&#039;&#039; is zero. However, when the ground has nonzero slope, the vertical velocity components &#039;&#039;&#039;W&#039;&#039;&#039; is generally not zero, because the normal vector to the ground is not vertical.&lt;br /&gt;
&lt;br /&gt;
Note that the picture above center and right (from [http://www.mmm.ucar.edu/wrf/users/docs/arw_v3.pdf WRF documentation]) use half integer indexing. &lt;br /&gt;
* The horizontal wind component &#039;&#039;&#039;U&amp;lt;sub&amp;gt;i-1/2,j,k&amp;lt;/sub&amp;gt;&#039;&#039;&#039; in the X direction is stored in the array entry &#039;&#039;&#039;u(i,j,k)&#039;&#039;&#039;&lt;br /&gt;
* The horizontal wind component &#039;&#039;&#039;V&amp;lt;sub&amp;gt;i,j-1/2,k&amp;lt;/sub&amp;gt;&#039;&#039;&#039; in the Y is stored in the array entry &#039;&#039;&#039;v(i,j,k)&#039;&#039;&#039;&lt;br /&gt;
* The vertical wind component &#039;&#039;&#039;W&amp;lt;sub&amp;gt;i,j,k-1/2&amp;lt;/sub&amp;gt;&#039;&#039;&#039; is stored in the array entry &#039;&#039;&#039;w(i,j,k)&#039;&#039;&#039;&lt;br /&gt;
In particular, the lowest layer  in WRF is &#039;&#039;&#039;k=1&#039;&#039;&#039;, and, on flat ground, &#039;&#039;&#039;w(:,:,1)=0&#039;&#039;&#039;, since the ground is impermeable in the normal direction. On a ground with nonzero slope, &#039;&#039;&#039;w(:,:,1)=0&#039;&#039;&#039; is generally nonzero. The winds at the middle of the first layer, at the height &#039;&#039;&#039;eta&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&#039;&#039;&#039;, are &#039;&#039;&#039;u(:,:,1)&#039;&#039;&#039;, &#039;&#039;&#039;v(:,:,1)&#039;&#039;&#039;, and they are generally nonzero. &lt;br /&gt;
&lt;br /&gt;
Because the components of the wind velocity vector are on different staggered grids, and visualization software usually expects all three components of the velocity vector based at the same point, they need to be interpolated to theta-points (cell centers) for display:&lt;br /&gt;
: &#039;&#039;&#039;U_THETA(i,j,k) = 0.5*(U(i,j,k) + U(i+1,j,k))&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;V_THETA(i,j,k) = 0.5*(V(i,j,k) + V(i,j+1,k))&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;W_THETA(i,j,k) = 0.5*(W(i,j,k) + W(i,j,k+1))&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Location==&lt;br /&gt;
&lt;br /&gt;
The longitude and latitude of the theta and U nodes are given by arrays &#039;&#039;&#039;XLONG&#039;&#039;&#039; and &#039;&#039;&#039;XLAT&#039;&#039;&#039;, which are set at initialization and then do not change. However the elevation has to be computed from the flow solution as [[wikipedia:Geopotential height|geopotential height]] by &lt;br /&gt;
: &#039;&#039;&#039;ELEVATION_W(i,j,k) = (PHB(i,j,k) + PH(i,j,k))/9.81&lt;br /&gt;
where &#039;&#039;&#039;PHB + PH&#039;&#039;&#039; is the [[wikipedia:geopotential|geopotential]]. &#039;&#039;&#039;PHB&#039;&#039;&#039; is constant, set at initialization, and &#039;&#039;&#039;PH&#039;&#039;&#039;, called perturbation geopotential, starts as zero and varies with time.&lt;br /&gt;
&lt;br /&gt;
PH and PHB live at the W-points, thus the geopotential height at the lowest level is the same as terrain height&lt;br /&gt;
: &#039;&#039;&#039;ELEVATION_W(i,j) = PHB(i,j,1)/9.81&lt;br /&gt;
up to rounding error. This variable is also part of WRF state as &#039;&#039;&#039;z_at_w&#039;&#039;&#039; and its output to wrfout or wrfrst files can be enabled in the registry.&lt;br /&gt;
&lt;br /&gt;
To find the elevation of the cell theta-points (the cell midplane, where the pressure and other variables than wind live), you need to interpolate between the elevation of the top and the bottom:&lt;br /&gt;
:&#039;&#039;&#039;ELEVATION_THETA(i,j,k) =0.5*(PHB(i,j,k) + PH(i,j,k) + PHB(i,j,k+1) + PH(i,j,k+1))/9.81&lt;br /&gt;
&lt;br /&gt;
This variable is also part of  WRF state as &#039;&#039;&#039;Z&#039;&#039;&#039;  and its output to wrfout or wrfrst files can be enabled in the [https://github.com/jbeezley/wrf-fire/blob/master/wrfv2_fire/Registry/Registry.EM_COMMON#L306 registry].&lt;br /&gt;
&lt;br /&gt;
==Temperature==&lt;br /&gt;
&lt;br /&gt;
[[wikipedia:Potential temperature|Potential temperature]] in K is 300+&#039;&#039;&#039;T&#039;&#039;&#039;. The potential temperature is most suitable for visualization. However, the temperature as measured by instruments is sometimes needed for comparison. The potential temperature is converted by...  &#039;&#039;coming soon&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Pressure==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;coming soon&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[SFIRE variables]]&lt;br /&gt;
* [[WRF-Fire documentation]]&lt;br /&gt;
* [http://www.mmm.ucar.edu/wrf/users/docs/user_guide_V3/users_guide_chap5.htm#fields WRF output fields from the WRF-ARW user&#039;s guide]&lt;br /&gt;
* Grid: [http://www.mmm.ucar.edu/wrf/users/docs/arw_v3.pdf A Description of the Advanced Research WRF Version 3 (June 2008)] Fig 7.3 page 59&lt;br /&gt;
* [http://www.mmm.ucar.edu/wrf/WG2/WRF_conventions.html WRF Coding Conventions]&lt;br /&gt;
* [http://www.mmm.ucar.edu/wrf/users/tutorial/200807/WRF%20Registry%20and%20Examples.pdf WRF Registry and Examples]&lt;br /&gt;
* [http://www.mmm.ucar.edu/wrf/WG2/software_v2/ WRF v2 Software Tools and Documentation] (there does not seem to be a document for V3?)&lt;br /&gt;
* [http://www.mmm.ucar.edu/wrf/WG2/software_2.0/registry_schaffer.pdf Description of WRF Registry]&lt;br /&gt;
* [http://www.google.com/url?sa=t&amp;amp;source=web&amp;amp;cd=2&amp;amp;ved=0CBsQFjAB&amp;amp;url=http%3A%2F%2Fyosemite.epa.gov%2FR10%2Fairpage.nsf%2Fc36cf12146018ddc882569e5005f1951%2F75f93e40b30302fc88257408008069e9%2F%24FILE%2FBowman.pdf&amp;amp;ei=Xt5hTJH6MseNnQf9rd3NAQ&amp;amp;usg=AFQjCNHsnOPC4nuQjHikOMx4sm40IJMquw&amp;amp;sig2=_4BrV5z1fh0ahYC5s9_t0Q Moving from MM5 to WRF]&lt;br /&gt;
 &lt;br /&gt;
[[Category:WRF-Fire]]&lt;br /&gt;
[[Category:Howtos|Interpret WRF variables]]&lt;/div&gt;</summary>
		<author><name>Jmandel</name></author>
	</entry>
	<entry>
		<id>https://wiki.openwfm.org/index.php?title=How_to_interpret_WRF_variables&amp;diff=8395</id>
		<title>How to interpret WRF variables</title>
		<link rel="alternate" type="text/html" href="https://wiki.openwfm.org/index.php?title=How_to_interpret_WRF_variables&amp;diff=8395"/>
		<updated>2025-11-22T03:27:36Z</updated>

		<summary type="html">&lt;p&gt;Jmandel: /* Arrays */  storage order&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{users guide}}&lt;br /&gt;
&lt;br /&gt;
This page describes the interpretation of selected atmospheric variables, which are important for fire visualization. See [http://www.mmm.ucar.edu/wrf/users/pub-doc.html WRF documentation] for further details.&lt;br /&gt;
&lt;br /&gt;
==Grid==&lt;br /&gt;
&lt;br /&gt;
[[File:Wrfgrid.png|250px]][[File:WRF_staggered_grid.gif|500px]]&lt;br /&gt;
&lt;br /&gt;
Grids in WRF are logically rectilinear. Variables for WRF cell indexed &#039;&#039;&#039;(i,j,k)&#039;&#039;&#039; can be located at one of 4 possible points. You can tell where by looking at the WRF registry or the attributes of [[NetCDF]] files, which WRF uses as I/O format. You can also tell by the fact that staggered variables have the staggered dimension larger by one, since there needs to be variable at the last boundary face.&lt;br /&gt;
* at the center of the cell - theta points, not staggered&lt;br /&gt;
* at the center of the left face - U point, staggered in X&lt;br /&gt;
* at the center of the front face - V point, staggered in Y&lt;br /&gt;
* at the center of the bottom face - W point, staggered in Z&lt;br /&gt;
Scalar variables (such as thermodynamical variables, hence the theta: temperature, pressure,...) generally live at theta-points. One exception is the geopotential, which lives at W-points. &lt;br /&gt;
The documentation, some variable names, and comments in the WRF code also associate theta with the vertical position of the mid-plane of the cell and at W with the vertical position of the bottom of the cell.&lt;br /&gt;
&lt;br /&gt;
The orientation of the axes in the real world, such as &amp;quot;east-west&amp;quot;,  in the order of increasing index, such as &#039;&#039;&#039;i&#039;&#039;&#039;, are defined in the registry. For postprocessing, they can be found at runtime as attributes in the NetCDF files.&lt;br /&gt;
&lt;br /&gt;
==Arrays and Storage Order==&lt;br /&gt;
&lt;br /&gt;
Arrays are stored in files and in memory. All arrays are described in the Registry, which is a collection of text files in &#039;&#039;&#039;WRFV3/Registry&#039;&#039;&#039;. The variable names in memory and in files are sometimes different.&lt;br /&gt;
&lt;br /&gt;
Files are (by default) in [[NetCDF]] format. The values associated with the cell &#039;&#039;&#039;(i,j,k)&#039;&#039;&#039; at time step &#039;&#039;&#039;n&#039;&#039;&#039; are stored in the files as the array entry &#039;&#039;&#039;u(i,j,k,n)&#039;&#039;&#039;, e.t.c. The value of the time at the step &#039;&#039;&#039;n&#039;&#039;&#039; is stored in character array &#039;&#039;&#039;Times(:,n)&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Arrays in WRF NETCDF files, like the WRFOUT files, are stored with the indexing as &#039;&#039;&#039;(t, z, y, x)&#039;&#039;&#039;, arrays in memory are indexed as &#039;&#039;&#039;(i,k,j)&#039;&#039;&#039; by [http://www.mmm.ucar.edu/wrf/WG2/WRF_conventions.html WRF coding conventions]. Of course, there is no 4th index for the time step in arrays in memory, and in some arrays there is no vertical &#039;&#039;&#039;k&#039;&#039;&#039; dimension.&lt;br /&gt;
&lt;br /&gt;
==Wind==&lt;br /&gt;
&lt;br /&gt;
Components of the wind velocity vector &#039;&#039;&#039;U&#039;&#039;&#039;, &#039;&#039;&#039;V&#039;&#039;&#039;, &#039;&#039;&#039;W&#039;&#039;&#039; live at the corresponding points, hence the point names. These are in the geometrically horizontal and vertical directions. On flat ground, &#039;&#039;&#039;W&#039;&#039;&#039; on the first level &#039;&#039;k=1&#039;&#039; is zero. However, when the ground has nonzero slope, the vertical velocity components &#039;&#039;&#039;W&#039;&#039;&#039; is generally not zero, because the normal vector to the ground is not vertical.&lt;br /&gt;
&lt;br /&gt;
Note that the picture above center and right (from [http://www.mmm.ucar.edu/wrf/users/docs/arw_v3.pdf WRF documentation]) use half integer indexing. &lt;br /&gt;
* The horizontal wind component &#039;&#039;&#039;U&amp;lt;sub&amp;gt;i-1/2,j,k&amp;lt;/sub&amp;gt;&#039;&#039;&#039; in the X direction is stored in the array entry &#039;&#039;&#039;u(i,j,k)&#039;&#039;&#039;&lt;br /&gt;
* The horizontal wind component &#039;&#039;&#039;V&amp;lt;sub&amp;gt;i,j-1/2,k&amp;lt;/sub&amp;gt;&#039;&#039;&#039; in the Y is stored in the array entry &#039;&#039;&#039;v(i,j,k)&#039;&#039;&#039;&lt;br /&gt;
* The vertical wind component &#039;&#039;&#039;W&amp;lt;sub&amp;gt;i,j,k-1/2&amp;lt;/sub&amp;gt;&#039;&#039;&#039; is stored in the array entry &#039;&#039;&#039;w(i,j,k)&#039;&#039;&#039;&lt;br /&gt;
In particular, the lowest layer  in WRF is &#039;&#039;&#039;k=1&#039;&#039;&#039;, and, on flat ground, &#039;&#039;&#039;w(:,:,1)=0&#039;&#039;&#039;, since the ground is impermeable in the normal direction. On a ground with nonzero slope, &#039;&#039;&#039;w(:,:,1)=0&#039;&#039;&#039; is generally nonzero. The winds at the middle of the first layer, at the height &#039;&#039;&#039;eta&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&#039;&#039;&#039;, are &#039;&#039;&#039;u(:,:,1)&#039;&#039;&#039;, &#039;&#039;&#039;v(:,:,1)&#039;&#039;&#039;, and they are generally nonzero. &lt;br /&gt;
&lt;br /&gt;
Because the components of the wind velocity vector are on different staggered grids, and visualization software usually expects all three components of the velocity vector based at the same point, they need to be interpolated to theta-points (cell centers) for display:&lt;br /&gt;
: &#039;&#039;&#039;U_THETA(i,j,k) = 0.5*(U(i,j,k) + U(i+1,j,k))&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;V_THETA(i,j,k) = 0.5*(V(i,j,k) + V(i,j+1,k))&#039;&#039;&#039;&lt;br /&gt;
: &#039;&#039;&#039;W_THETA(i,j,k) = 0.5*(W(i,j,k) + W(i,j,k+1))&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Location==&lt;br /&gt;
&lt;br /&gt;
The longitude and latitude of the theta and U nodes are given by arrays &#039;&#039;&#039;XLONG&#039;&#039;&#039; and &#039;&#039;&#039;XLAT&#039;&#039;&#039;, which are set at initialization and then do not change. However the elevation has to be computed from the flow solution as [[wikipedia:Geopotential height|geopotential height]] by &lt;br /&gt;
: &#039;&#039;&#039;ELEVATION_W(i,j,k) = (PHB(i,j,k) + PH(i,j,k))/9.81&lt;br /&gt;
where &#039;&#039;&#039;PHB + PH&#039;&#039;&#039; is the [[wikipedia:geopotential|geopotential]]. &#039;&#039;&#039;PHB&#039;&#039;&#039; is constant, set at initialization, and &#039;&#039;&#039;PH&#039;&#039;&#039;, called perturbation geopotential, starts as zero and varies with time.&lt;br /&gt;
&lt;br /&gt;
PH and PHB live at the W-points, thus the geopotential height at the lowest level is the same as terrain height&lt;br /&gt;
: &#039;&#039;&#039;ELEVATION_W(i,j) = PHB(i,j,1)/9.81&lt;br /&gt;
up to rounding error. This variable is also part of WRF state as &#039;&#039;&#039;z_at_w&#039;&#039;&#039; and its output to wrfout or wrfrst files can be enabled in the registry.&lt;br /&gt;
&lt;br /&gt;
To find the elevation of the cell theta-points (the cell midplane, where the pressure and other variables than wind live), you need to interpolate between the elevation of the top and the bottom:&lt;br /&gt;
:&#039;&#039;&#039;ELEVATION_THETA(i,j,k) =0.5*(PHB(i,j,k) + PH(i,j,k) + PHB(i,j,k+1) + PH(i,j,k+1))/9.81&lt;br /&gt;
&lt;br /&gt;
This variable is also part of  WRF state as &#039;&#039;&#039;Z&#039;&#039;&#039;  and its output to wrfout or wrfrst files can be enabled in the [https://github.com/jbeezley/wrf-fire/blob/master/wrfv2_fire/Registry/Registry.EM_COMMON#L306 registry].&lt;br /&gt;
&lt;br /&gt;
==Temperature==&lt;br /&gt;
&lt;br /&gt;
[[wikipedia:Potential temperature|Potential temperature]] in K is 300+&#039;&#039;&#039;T&#039;&#039;&#039;. The potential temperature is most suitable for visualization. However, the temperature as measured by instruments is sometimes needed for comparison. The potential temperature is converted by...  &#039;&#039;coming soon&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Pressure==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;coming soon&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[SFIRE variables]]&lt;br /&gt;
* [[WRF-Fire documentation]]&lt;br /&gt;
* [http://www.mmm.ucar.edu/wrf/users/docs/user_guide_V3/users_guide_chap5.htm#fields WRF output fields from the WRF-ARW user&#039;s guide]&lt;br /&gt;
* Grid: [http://www.mmm.ucar.edu/wrf/users/docs/arw_v3.pdf A Description of the Advanced Research WRF Version 3 (June 2008)] Fig 7.3 page 59&lt;br /&gt;
* [http://www.mmm.ucar.edu/wrf/WG2/WRF_conventions.html WRF Coding Conventions]&lt;br /&gt;
* [http://www.mmm.ucar.edu/wrf/users/tutorial/200807/WRF%20Registry%20and%20Examples.pdf WRF Registry and Examples]&lt;br /&gt;
* [http://www.mmm.ucar.edu/wrf/WG2/software_v2/ WRF v2 Software Tools and Documentation] (there does not seem to be a document for V3?)&lt;br /&gt;
* [http://www.mmm.ucar.edu/wrf/WG2/software_2.0/registry_schaffer.pdf Description of WRF Registry]&lt;br /&gt;
* [http://www.google.com/url?sa=t&amp;amp;source=web&amp;amp;cd=2&amp;amp;ved=0CBsQFjAB&amp;amp;url=http%3A%2F%2Fyosemite.epa.gov%2FR10%2Fairpage.nsf%2Fc36cf12146018ddc882569e5005f1951%2F75f93e40b30302fc88257408008069e9%2F%24FILE%2FBowman.pdf&amp;amp;ei=Xt5hTJH6MseNnQf9rd3NAQ&amp;amp;usg=AFQjCNHsnOPC4nuQjHikOMx4sm40IJMquw&amp;amp;sig2=_4BrV5z1fh0ahYC5s9_t0Q Moving from MM5 to WRF]&lt;br /&gt;
 &lt;br /&gt;
[[Category:WRF-Fire]]&lt;br /&gt;
[[Category:Howtos|Interpret WRF variables]]&lt;/div&gt;</summary>
		<author><name>Jmandel</name></author>
	</entry>
	<entry>
		<id>https://wiki.openwfm.org/index.php?title=Smoke_and_coupling_with_WRF-Chem&amp;diff=8394</id>
		<title>Smoke and coupling with WRF-Chem</title>
		<link rel="alternate" type="text/html" href="https://wiki.openwfm.org/index.php?title=Smoke_and_coupling_with_WRF-Chem&amp;diff=8394"/>
		<updated>2025-11-22T03:20:54Z</updated>

		<summary type="html">&lt;p&gt;Jmandel: /* Passive smoke tracers */  typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{users guide}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Sfire smoke.png|thumb|SFire smoke tracer in action.  See [[File:Smoke small.avi|animation]].]]&lt;br /&gt;
&lt;br /&gt;
Fire emissions can be modeled a passive smoke tracer advected by the wind field,&lt;br /&gt;
or as chemical species tracers, which also undergo chemical reactions by WRF-Chem. WRF-Chem is included in the WRF repository. Tracer variables are 3d fields of concentrations on the atmospheric grid. The variables are present in the wrfout files when activated. &lt;br /&gt;
&lt;br /&gt;
==Passive smoke tracers==&lt;br /&gt;
&lt;br /&gt;
The selection of the tracers in WRF is controlled by namelist variable &#039;&#039;&#039;tracer_opt&#039;&#039;&#039; in the &#039;&#039;&#039;&amp;amp;dynamics&#039;&#039;&#039;] section .  The coupling supports the option &#039;&#039;&#039;tracer_opt = 1&#039;&#039;&#039;, which creates a single tracer called &#039;&#039;&#039;smoke&#039;&#039;&#039;,&lt;br /&gt;
and the option &#039;&#039;&#039;tracer_opt = 2&#039;&#039;&#039;, which creates passive tracers called &#039;&#039;&#039;tr17_1&#039;&#039;&#039; to &#039;&#039;&#039;tr17_8&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
Emissions are inserted proportionally to the fuel burned according to the emission factors in file  &#039;&#039;&#039;namelist.fire_emissions&#039;&#039;&#039;. The fire smoke emissions added to the tracers are the same. Propagation of tracers  &#039;&#039;&#039;tr17_1&#039;&#039;&#039; to &#039;&#039;&#039;tr17_4&#039;&#039;&#039; is identical, but the others  slightly differ.&lt;br /&gt;
&lt;br /&gt;
==Coupling with WRF-Chem==&lt;br /&gt;
Compiling the code with support for WRF-Chem is similar to the [[How to compile WRF-Fire|standard procedure]].&lt;br /&gt;
You must set an environment variable &#039;&#039;&#039;WRF_CHEM&#039;&#039;&#039; and configure with the argument &#039;&#039;&#039;chem&#039;&#039;&#039; as follows.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export WRF_CHEM=1&lt;br /&gt;
./configure chem&lt;br /&gt;
./compile em_fire&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The selection of the tracers in WRF-Chem is controlled by namelist variable &#039;&#039;&#039;chem_opt&#039;&#039;&#039; in &#039;&#039;&#039;&amp;amp;chem&#039;&#039;&#039; section of &#039;&#039;&#039;namelist.input&#039;&#039;&#039;. If &#039;&#039;&#039;chem_opt=0&#039;&#039;&#039;, no chemical tracers are created.  The coupling supports subsets of RADM2 (&#039;&#039;&#039;chem_opt=2&#039;&#039;&#039;), MOZART (&#039;&#039;&#039;chem_opt=112&#039;&#039;&#039; or &#039;&#039;&#039;119&#039;&#039;&#039;), and GOCART (&#039;&#039;&#039;chem_opt=300&#039;&#039;&#039;) variables. &lt;br /&gt;
&lt;br /&gt;
It is also possible to use &#039;&#039;&#039;tracer_opt = 1&#039;&#039;&#039; and &#039;&#039;&#039;tracer_opt = 2&#039;&#039;&#039; in a code compiled with WRF-Chem, but the resulting passive tracers are advected by WRF-Chem and behave slightly differently.&lt;br /&gt;
&lt;br /&gt;
==Running an idealized example==&lt;br /&gt;
An idealized example based on the hill case has been created in [https://github.com/jbeezley/wrf-fire/tree/master/wrfv2_fire/test/em_fire/chem &#039;&#039;&#039;test/em_fire/chem&#039;&#039;&#039;]&lt;br /&gt;
Note that &#039;&#039;&#039;sfc_full_init =.true.&#039;&#039;&#039; is required in the &#039;&#039;&#039;&amp;amp;fire&#039;&#039;&#039; section of &#039;&#039;&#039;namelist.input&#039;&#039;&#039; to initialize USGS landuse, which is required by  WRF-Chem.&lt;br /&gt;
The tracer selected by &#039;&#039;&#039;tracer_opt=1&#039;&#039;&#039; will appear as an atmospheric variable in the output file with the name &#039;&#039;&#039;smoke&#039;&#039;&#039;. The chemical species in the atmosphere, selected by &#039;&#039;&#039;chem_opt&#039;&#039;&#039;, will appear under their respective names, such as &#039;&#039;&#039;n2o5&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
&lt;br /&gt;
To use the passive tracers in the code built with WRF-Chem, specify &#039;&#039;&#039;tracer_opt=2&#039;&#039;&#039; and &#039;&#039;&#039;chem_opt=0&#039;&#039;&#039; in &#039;&#039;&#039;namelist.input&#039;&#039;&#039;. The tracers work slightly differently in code built with and without WRF-Chem, as described in file &#039;&#039;&#039;chem/module_input_tracer.F&#039;&#039;&#039;. A sample emission factors table for this usage is available as &#039;&#039;&#039;test/em_fire/chem/namelist.fire_emissions.tracers&#039;&#039;&#039;. It can be used in ideal as well as real runs. Different rows in the table can be used to track separate species, e.g., pm10 and pm25, with different emission factors. &lt;br /&gt;
&lt;br /&gt;
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 (&#039;&#039;&#039;ppmv&#039;&#039;&#039;), so the amounts of the inserted species are scaled 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 &#039;&#039;&#039;GRNHFX&#039;&#039;&#039; as a proxy. The emissions table contains the amounts of emissions fuel burned in &#039;&#039;&#039;g/kg&#039;&#039;&#039; or &#039;&#039;&#039;mol/kg&#039;&#039;&#039;.  The emissions tables are specified in file &#039;&#039;&#039;namelist.fire_emissions&#039;&#039;&#039;. This file contains a line for each species like&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 no2=3.2,3.2,3.2,1.4,1.4,1.4,1.4,2.7,2.7,2.7,3,3,3,&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
with emissions (g/kg fuel or mol/kg fuel) for each of the fuel categories used (by default, the 13 Anderson&#039;s categories).&lt;br /&gt;
&lt;br /&gt;
There are two additional variables in &#039;&#039;&#039;namelist.fire_emissions&#039;&#039;&#039;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
compatible_chem_opt=112,119&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
is a list of &#039;&#039;&#039;chem_opt&#039;&#039;&#039; 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  &#039;&#039;&#039;chem_opt&#039;&#039;&#039;.  If it does, the results can be upredictable.&lt;br /&gt;
The variable&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
printsums=1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
will enable printing of the totals of each emissions species at the end of every time step.&lt;br /&gt;
&lt;br /&gt;
Several prototype emissions tables are provided in &#039;&#039;&#039;test/em_fire/chem&#039;&#039;&#039;. You need to copy or link one of the emissions tables to &#039;&#039;&#039;namelist.fire_emissions&#039;&#039;&#039; in your run directory, such as&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -s namelist.fire_emissions.RADM2 namelist.fire_emissions&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
and set matching &#039;&#039;&#039;chem_opt&#039;&#039;&#039; in &#039;&#039;&#039;namelist.input&#039;&#039;&#039;, here &#039;&#039;&#039;chem_opt=2&#039;&#039;&#039;. See the next section for the available emissions tables. Users can also add their own.&lt;br /&gt;
&lt;br /&gt;
==Chemical species==&lt;br /&gt;
&lt;br /&gt;
The chemical model selected by the &#039;&#039;&#039;chem_opt&#039;&#039;&#039; flag produces concentrations on 3D grids in every &#039;&#039;&#039;wrfout&#039;&#039;&#039; file produced, for a set of variables defined in the &#039;&#039;&#039;Chem scalars&#039;&#039;&#039; part of the file  [https://github.com/openwfm/WRF-SFIRE/blob/262829290d98e419b6839893ecb1a5d36ed4b969/Registry/registry.chem#L1567 &#039;&#039;&#039;Registry/registry.chem&#039;&#039;&#039;]. The first section of the list contains the chemical species common to all models, later sections list species added for specific models. For more detailed information about the species including dusts and aerosols in specific WRF-Chem models, see the [https://ruc.noaa.gov/wrf/wrf-chem/model_info.htm WRF-Chem model documention] and the links to the individual models at the emissions tables below.&lt;br /&gt;
&lt;br /&gt;
The quantities of the chemical species are in &#039;&#039;&#039;ppmv&#039;&#039;&#039;, i.e., 1e6*mol/mol of dry air.&lt;br /&gt;
&lt;br /&gt;
The frequency of writing the outputs into the wrfout files is specified by the user in the &#039;&#039;&#039;history_interval&#039;&#039;&#039; flags in the WRF &#039;&#039;&#039;namelist.input&#039;&#039;&#039; file. It can be as often as once every minute, but usually much less. &lt;br /&gt;
&lt;br /&gt;
SFIRE adds the fire emissions to a subset of the chemical species as specified in the emissions table. It is up to the chemical model to produce other species from them. Note that the parts of the registry.chem file using the word &amp;quot;emissions&amp;quot; are for other emission schemes and not relevant here. SFIRE adds fire emissions directly to the lowest layer of the 3D Chem fiels during the fire simulation.&lt;br /&gt;
&lt;br /&gt;
There are currently three emissions tables available:&lt;br /&gt;
* [https://github.com/openwfm/WRF-SFIRE/blob/master/test/em_fire/chem/namelist.fire_emissions.RADM2 namelist.fire_emissions.RADM2] for the [http://ruc.noaa.gov/wrf/WG11/radm2.htm RADM2] model&lt;br /&gt;
* [https://github.com/openwfm/WRF-SFIRE/blob/master/test/em_fire/chem/namelist.fire_emissions.MOZART namelist.fire_emissions.MOZART] for the [http://www.acd.ucar.edu/wrf-chem/mozart.shtml MOZART] model&lt;br /&gt;
* [https://github.com/openwfm/WRF-SFIRE/blob/master/test/em_fire/chem/namelist.fire_emissions.GOCART namelist.fire_emissions.GOCART] for the [https://tropo.gsfc.nasa.gov/gocart GOCART] model&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
WRF-Chem contains a multitude of arrays representing concentrations of chemical species. The typical&lt;br /&gt;
method of injecting data into the simulation involves generating emission input data files from standard&lt;br /&gt;
sources.  These sources are read into the code using auxiliary input streams and interpolated into&lt;br /&gt;
the species arrays in the [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/chem/module_emissions_anthropogenics.F emissions] module.  For the coupling with SFIRE, turning off file&lt;br /&gt;
input in the namelist seems to initialize the emission arrays to zero.  This eliminates the need to generate&lt;br /&gt;
useless emission files. &lt;br /&gt;
&lt;br /&gt;
WRF-Chem stores its state in arrays &#039;&#039;&#039;chem&#039;&#039;&#039; and   &#039;&#039;&#039;tracer&#039;&#039;&#039;.  These arrays are four dimensional indexed like &#039;&#039;&#039;(x,z,y,s)&#039;&#039;&#039;, where s is the chemical&lt;br /&gt;
species. The domain structure contains scalars such as &#039;&#039;&#039;p_smoke&#039;&#039;&#039; (into the &#039;&#039;&#039;tracer&#039;&#039;&#039; array) and &#039;&#039;&#039;p_nh4&#039;&#039;&#039; (into the &#039;&#039;&#039;chem&#039;&#039;&#039; array) that give the species index for&lt;br /&gt;
each type.  The species selections are specific to different chemistry options (&#039;&#039;&#039;chem_opt&#039;&#039;&#039;) &lt;br /&gt;
from the registry; however, even unused species have their index set to 1. The dynamics section of the namelist has an option for &#039;&#039;&#039;tracer_opt&#039;&#039;&#039;.  This&lt;br /&gt;
controls what tracers are generated for Chem.  &lt;br /&gt;
&lt;br /&gt;
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 [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_atm.F#L276 &#039;&#039;&#039;add_fire_emissions_to_chem&#039;&#039;&#039;], which  adds chemical species to the &#039;&#039;&#039;chem&#039;&#039;&#039; array, was derived from the utility [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_util.F#L471 &#039;&#039;&#039;sum_2d_cells&#039;&#039;&#039;] by adding chemistry-specific code.&lt;br /&gt;
&lt;br /&gt;
The chemistry coupling code is compiled only when WRF-Chem is being compiled. It resides in [https://github.com/jbeezley/wrf-fire/blob4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_atm.F module_fr_sfire_atm.F], which is allowed by the SFIRE architecture to contain code both at atmosphere and fire resolution. Besides subroutine &#039;&#039;&#039;add_fire_emissions_to_chem&#039;&#039;&#039;, the code consists of subroutine [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_atm.F#L151 &#039;&#039;&#039;read_emissions_table&#039;&#039;&#039;], which reads file &#039;&#039;&#039;namelist.fire_emissions&#039;&#039;&#039;, subroutine [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_atm.F#L276 &#039;&#039;&#039;add_fire_emissions_to_chem&#039;&#039;&#039;], which  adds chemical species to the &#039;&#039;&#039;chem&#039;&#039;&#039; array, the [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_atm.F#L78 emissions tables] as module variables, subroutine [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_atm.F#L1914 &#039;&#039;&#039;fire_emission&#039;&#039;&#039;], which adds the smoke tracer, and the corresponding call statements in [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_driver.F  &#039;&#039;&#039;module_fr_sfire_driver&#039;&#039;&#039;].&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
* Kochanski A. K., Jenkins M.A., Yedinak K., Mandel J., Beezley J, and Lamb B. (2015) &#039;&#039;&#039;Toward an integrated system for fire, smoke and air quality simulations&#039;&#039;&#039;, International Journal of Wildland Fire - http://dx.doi.org/10.1071/WF14074&lt;br /&gt;
* Adam K. Kochanski, Jonathan D. Beezley, Jan Mandel, Craig B. Clements, &#039;&#039;&#039;Air pollution forecasting by coupled atmosphere-fire model WRF and SFIRE with WRF-Chem&#039;&#039;&#039;, 4th Fire Behavior and Fuels Conference, February 18-22, 2013, Raleigh, NC, 	{{arXiv|1304.7703}}, 2013&lt;br /&gt;
* Adam K. Kochanski, Jonathan D. Beezley, Jan Mandel, and Minjeong Kim, &#039;&#039;&#039;WRF fire simulation coupled with a fuel moisture model and smoke transport by WRF-Chem&#039;&#039;&#039;, [http://www.mmm.ucar.edu/events/2012_wrfusers/ 2012 WRF Users Workshop], [http://www.openwfm.org/wiki/File:WRF_workshop_2012_poster.pdf Poster 51] [http://www.mmm.ucar.edu/events/2012_wrfusers/abstracts/p51.htm abstract] [https://www.regonline.com/AttendeeDocuments/1077122/43365086/wrf2012.pdf paper] {{arXiv|1208.1059}}&lt;br /&gt;
* [http://ruc.noaa.gov/wrf/WG11/Users_guide.pdf WRF-Chem Users&#039; Guide]&lt;br /&gt;
* Georg A. Grell, Steven E. Peckham, Rainer Schmitz, Stuart A. McKeen, Gregory Frost, William C. Skamarock, Brian Eder, [http://dx.doi.org/10.1016/j.atmosenv.2005.04.027 Fully coupled “online” chemistry within the WRF model], Atmospheric Environment, Volume 39, Issue 37, December 2005, Pages 6957–6975&lt;br /&gt;
* C. Wiedinmyer, S. K. Akagi, R. J. Yokelson, L. K. Emmons, J. A. Al-Saadi, J. J. Orlando, and A. J. Soja. [http://dx.doi.org/10.5194/gmd-4-625-2011 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&lt;br /&gt;
* 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, [http://dx.doi.org/10.5194/gmd-3-43-2010 Description and evaluation of the Model for Ozone and Related chemical Tracers, version 4 (MOZART-4)], Geosci. Model Dev., 3, 43-67, 2010&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* [http://ruc.noaa.gov/wrf/WG11/ WRF-Chem] home page&lt;br /&gt;
* [https://www2.acom.ucar.edu/modeling/finn-fire-inventory-ncar Finn]  emissions model&lt;br /&gt;
* [http://www.acd.ucar.edu/wrf-chem/mozart.shtml MOZART] chemistry model&lt;/div&gt;</summary>
		<author><name>Jmandel</name></author>
	</entry>
	<entry>
		<id>https://wiki.openwfm.org/index.php?title=Smoke_and_coupling_with_WRF-Chem&amp;diff=8393</id>
		<title>Smoke and coupling with WRF-Chem</title>
		<link rel="alternate" type="text/html" href="https://wiki.openwfm.org/index.php?title=Smoke_and_coupling_with_WRF-Chem&amp;diff=8393"/>
		<updated>2025-11-22T03:20:27Z</updated>

		<summary type="html">&lt;p&gt;Jmandel: /* Passive smoke tracers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{users guide}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Sfire smoke.png|thumb|SFire smoke tracer in action.  See [[File:Smoke small.avi|animation]].]]&lt;br /&gt;
&lt;br /&gt;
Fire emissions can be modeled a passive smoke tracer advected by the wind field,&lt;br /&gt;
or as chemical species tracers, which also undergo chemical reactions by WRF-Chem. WRF-Chem is included in the WRF repository. Tracer variables are 3d fields of concentrations on the atmospheric grid. The variables are present in the wrfout files when activated. &lt;br /&gt;
&lt;br /&gt;
==Passive smoke tracers==&lt;br /&gt;
&lt;br /&gt;
The selection of the tracers in WRF is controlled by namelist variable &#039;&#039;&#039;tracer_opt&#039;&#039;&#039; in the &#039;&#039;&#039;&amp;amp;dynamics&#039;&#039;&#039;] section .  Yhe coupling supports the option &#039;&#039;&#039;tracer_opt = 1&#039;&#039;&#039;, which creates a single tracer called &#039;&#039;&#039;smoke&#039;&#039;&#039;,&lt;br /&gt;
and the option &#039;&#039;&#039;tracer_opt = 2&#039;&#039;&#039;, which creates passive tracers called &#039;&#039;&#039;tr17_1&#039;&#039;&#039; to &#039;&#039;&#039;tr17_8&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
Emissions are inserted proportionally to the fuel burned according to the emission factors in file  &#039;&#039;&#039;namelist.fire_emissions&#039;&#039;&#039;. The fire smoke emissions added to the tracers are the same. Propagation of tracers  &#039;&#039;&#039;tr17_1&#039;&#039;&#039; to &#039;&#039;&#039;tr17_4&#039;&#039;&#039; is identical, but the others  slightly differ.&lt;br /&gt;
&lt;br /&gt;
==Coupling with WRF-Chem==&lt;br /&gt;
Compiling the code with support for WRF-Chem is similar to the [[How to compile WRF-Fire|standard procedure]].&lt;br /&gt;
You must set an environment variable &#039;&#039;&#039;WRF_CHEM&#039;&#039;&#039; and configure with the argument &#039;&#039;&#039;chem&#039;&#039;&#039; as follows.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export WRF_CHEM=1&lt;br /&gt;
./configure chem&lt;br /&gt;
./compile em_fire&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The selection of the tracers in WRF-Chem is controlled by namelist variable &#039;&#039;&#039;chem_opt&#039;&#039;&#039; in &#039;&#039;&#039;&amp;amp;chem&#039;&#039;&#039; section of &#039;&#039;&#039;namelist.input&#039;&#039;&#039;. If &#039;&#039;&#039;chem_opt=0&#039;&#039;&#039;, no chemical tracers are created.  The coupling supports subsets of RADM2 (&#039;&#039;&#039;chem_opt=2&#039;&#039;&#039;), MOZART (&#039;&#039;&#039;chem_opt=112&#039;&#039;&#039; or &#039;&#039;&#039;119&#039;&#039;&#039;), and GOCART (&#039;&#039;&#039;chem_opt=300&#039;&#039;&#039;) variables. &lt;br /&gt;
&lt;br /&gt;
It is also possible to use &#039;&#039;&#039;tracer_opt = 1&#039;&#039;&#039; and &#039;&#039;&#039;tracer_opt = 2&#039;&#039;&#039; in a code compiled with WRF-Chem, but the resulting passive tracers are advected by WRF-Chem and behave slightly differently.&lt;br /&gt;
&lt;br /&gt;
==Running an idealized example==&lt;br /&gt;
An idealized example based on the hill case has been created in [https://github.com/jbeezley/wrf-fire/tree/master/wrfv2_fire/test/em_fire/chem &#039;&#039;&#039;test/em_fire/chem&#039;&#039;&#039;]&lt;br /&gt;
Note that &#039;&#039;&#039;sfc_full_init =.true.&#039;&#039;&#039; is required in the &#039;&#039;&#039;&amp;amp;fire&#039;&#039;&#039; section of &#039;&#039;&#039;namelist.input&#039;&#039;&#039; to initialize USGS landuse, which is required by  WRF-Chem.&lt;br /&gt;
The tracer selected by &#039;&#039;&#039;tracer_opt=1&#039;&#039;&#039; will appear as an atmospheric variable in the output file with the name &#039;&#039;&#039;smoke&#039;&#039;&#039;. The chemical species in the atmosphere, selected by &#039;&#039;&#039;chem_opt&#039;&#039;&#039;, will appear under their respective names, such as &#039;&#039;&#039;n2o5&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
&lt;br /&gt;
To use the passive tracers in the code built with WRF-Chem, specify &#039;&#039;&#039;tracer_opt=2&#039;&#039;&#039; and &#039;&#039;&#039;chem_opt=0&#039;&#039;&#039; in &#039;&#039;&#039;namelist.input&#039;&#039;&#039;. The tracers work slightly differently in code built with and without WRF-Chem, as described in file &#039;&#039;&#039;chem/module_input_tracer.F&#039;&#039;&#039;. A sample emission factors table for this usage is available as &#039;&#039;&#039;test/em_fire/chem/namelist.fire_emissions.tracers&#039;&#039;&#039;. It can be used in ideal as well as real runs. Different rows in the table can be used to track separate species, e.g., pm10 and pm25, with different emission factors. &lt;br /&gt;
&lt;br /&gt;
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 (&#039;&#039;&#039;ppmv&#039;&#039;&#039;), so the amounts of the inserted species are scaled 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 &#039;&#039;&#039;GRNHFX&#039;&#039;&#039; as a proxy. The emissions table contains the amounts of emissions fuel burned in &#039;&#039;&#039;g/kg&#039;&#039;&#039; or &#039;&#039;&#039;mol/kg&#039;&#039;&#039;.  The emissions tables are specified in file &#039;&#039;&#039;namelist.fire_emissions&#039;&#039;&#039;. This file contains a line for each species like&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 no2=3.2,3.2,3.2,1.4,1.4,1.4,1.4,2.7,2.7,2.7,3,3,3,&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
with emissions (g/kg fuel or mol/kg fuel) for each of the fuel categories used (by default, the 13 Anderson&#039;s categories).&lt;br /&gt;
&lt;br /&gt;
There are two additional variables in &#039;&#039;&#039;namelist.fire_emissions&#039;&#039;&#039;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
compatible_chem_opt=112,119&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
is a list of &#039;&#039;&#039;chem_opt&#039;&#039;&#039; 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  &#039;&#039;&#039;chem_opt&#039;&#039;&#039;.  If it does, the results can be upredictable.&lt;br /&gt;
The variable&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
printsums=1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
will enable printing of the totals of each emissions species at the end of every time step.&lt;br /&gt;
&lt;br /&gt;
Several prototype emissions tables are provided in &#039;&#039;&#039;test/em_fire/chem&#039;&#039;&#039;. You need to copy or link one of the emissions tables to &#039;&#039;&#039;namelist.fire_emissions&#039;&#039;&#039; in your run directory, such as&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -s namelist.fire_emissions.RADM2 namelist.fire_emissions&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
and set matching &#039;&#039;&#039;chem_opt&#039;&#039;&#039; in &#039;&#039;&#039;namelist.input&#039;&#039;&#039;, here &#039;&#039;&#039;chem_opt=2&#039;&#039;&#039;. See the next section for the available emissions tables. Users can also add their own.&lt;br /&gt;
&lt;br /&gt;
==Chemical species==&lt;br /&gt;
&lt;br /&gt;
The chemical model selected by the &#039;&#039;&#039;chem_opt&#039;&#039;&#039; flag produces concentrations on 3D grids in every &#039;&#039;&#039;wrfout&#039;&#039;&#039; file produced, for a set of variables defined in the &#039;&#039;&#039;Chem scalars&#039;&#039;&#039; part of the file  [https://github.com/openwfm/WRF-SFIRE/blob/262829290d98e419b6839893ecb1a5d36ed4b969/Registry/registry.chem#L1567 &#039;&#039;&#039;Registry/registry.chem&#039;&#039;&#039;]. The first section of the list contains the chemical species common to all models, later sections list species added for specific models. For more detailed information about the species including dusts and aerosols in specific WRF-Chem models, see the [https://ruc.noaa.gov/wrf/wrf-chem/model_info.htm WRF-Chem model documention] and the links to the individual models at the emissions tables below.&lt;br /&gt;
&lt;br /&gt;
The quantities of the chemical species are in &#039;&#039;&#039;ppmv&#039;&#039;&#039;, i.e., 1e6*mol/mol of dry air.&lt;br /&gt;
&lt;br /&gt;
The frequency of writing the outputs into the wrfout files is specified by the user in the &#039;&#039;&#039;history_interval&#039;&#039;&#039; flags in the WRF &#039;&#039;&#039;namelist.input&#039;&#039;&#039; file. It can be as often as once every minute, but usually much less. &lt;br /&gt;
&lt;br /&gt;
SFIRE adds the fire emissions to a subset of the chemical species as specified in the emissions table. It is up to the chemical model to produce other species from them. Note that the parts of the registry.chem file using the word &amp;quot;emissions&amp;quot; are for other emission schemes and not relevant here. SFIRE adds fire emissions directly to the lowest layer of the 3D Chem fiels during the fire simulation.&lt;br /&gt;
&lt;br /&gt;
There are currently three emissions tables available:&lt;br /&gt;
* [https://github.com/openwfm/WRF-SFIRE/blob/master/test/em_fire/chem/namelist.fire_emissions.RADM2 namelist.fire_emissions.RADM2] for the [http://ruc.noaa.gov/wrf/WG11/radm2.htm RADM2] model&lt;br /&gt;
* [https://github.com/openwfm/WRF-SFIRE/blob/master/test/em_fire/chem/namelist.fire_emissions.MOZART namelist.fire_emissions.MOZART] for the [http://www.acd.ucar.edu/wrf-chem/mozart.shtml MOZART] model&lt;br /&gt;
* [https://github.com/openwfm/WRF-SFIRE/blob/master/test/em_fire/chem/namelist.fire_emissions.GOCART namelist.fire_emissions.GOCART] for the [https://tropo.gsfc.nasa.gov/gocart GOCART] model&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
WRF-Chem contains a multitude of arrays representing concentrations of chemical species. The typical&lt;br /&gt;
method of injecting data into the simulation involves generating emission input data files from standard&lt;br /&gt;
sources.  These sources are read into the code using auxiliary input streams and interpolated into&lt;br /&gt;
the species arrays in the [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/chem/module_emissions_anthropogenics.F emissions] module.  For the coupling with SFIRE, turning off file&lt;br /&gt;
input in the namelist seems to initialize the emission arrays to zero.  This eliminates the need to generate&lt;br /&gt;
useless emission files. &lt;br /&gt;
&lt;br /&gt;
WRF-Chem stores its state in arrays &#039;&#039;&#039;chem&#039;&#039;&#039; and   &#039;&#039;&#039;tracer&#039;&#039;&#039;.  These arrays are four dimensional indexed like &#039;&#039;&#039;(x,z,y,s)&#039;&#039;&#039;, where s is the chemical&lt;br /&gt;
species. The domain structure contains scalars such as &#039;&#039;&#039;p_smoke&#039;&#039;&#039; (into the &#039;&#039;&#039;tracer&#039;&#039;&#039; array) and &#039;&#039;&#039;p_nh4&#039;&#039;&#039; (into the &#039;&#039;&#039;chem&#039;&#039;&#039; array) that give the species index for&lt;br /&gt;
each type.  The species selections are specific to different chemistry options (&#039;&#039;&#039;chem_opt&#039;&#039;&#039;) &lt;br /&gt;
from the registry; however, even unused species have their index set to 1. The dynamics section of the namelist has an option for &#039;&#039;&#039;tracer_opt&#039;&#039;&#039;.  This&lt;br /&gt;
controls what tracers are generated for Chem.  &lt;br /&gt;
&lt;br /&gt;
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 [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_atm.F#L276 &#039;&#039;&#039;add_fire_emissions_to_chem&#039;&#039;&#039;], which  adds chemical species to the &#039;&#039;&#039;chem&#039;&#039;&#039; array, was derived from the utility [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_util.F#L471 &#039;&#039;&#039;sum_2d_cells&#039;&#039;&#039;] by adding chemistry-specific code.&lt;br /&gt;
&lt;br /&gt;
The chemistry coupling code is compiled only when WRF-Chem is being compiled. It resides in [https://github.com/jbeezley/wrf-fire/blob4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_atm.F module_fr_sfire_atm.F], which is allowed by the SFIRE architecture to contain code both at atmosphere and fire resolution. Besides subroutine &#039;&#039;&#039;add_fire_emissions_to_chem&#039;&#039;&#039;, the code consists of subroutine [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_atm.F#L151 &#039;&#039;&#039;read_emissions_table&#039;&#039;&#039;], which reads file &#039;&#039;&#039;namelist.fire_emissions&#039;&#039;&#039;, subroutine [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_atm.F#L276 &#039;&#039;&#039;add_fire_emissions_to_chem&#039;&#039;&#039;], which  adds chemical species to the &#039;&#039;&#039;chem&#039;&#039;&#039; array, the [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_atm.F#L78 emissions tables] as module variables, subroutine [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_atm.F#L1914 &#039;&#039;&#039;fire_emission&#039;&#039;&#039;], which adds the smoke tracer, and the corresponding call statements in [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_driver.F  &#039;&#039;&#039;module_fr_sfire_driver&#039;&#039;&#039;].&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
* Kochanski A. K., Jenkins M.A., Yedinak K., Mandel J., Beezley J, and Lamb B. (2015) &#039;&#039;&#039;Toward an integrated system for fire, smoke and air quality simulations&#039;&#039;&#039;, International Journal of Wildland Fire - http://dx.doi.org/10.1071/WF14074&lt;br /&gt;
* Adam K. Kochanski, Jonathan D. Beezley, Jan Mandel, Craig B. Clements, &#039;&#039;&#039;Air pollution forecasting by coupled atmosphere-fire model WRF and SFIRE with WRF-Chem&#039;&#039;&#039;, 4th Fire Behavior and Fuels Conference, February 18-22, 2013, Raleigh, NC, 	{{arXiv|1304.7703}}, 2013&lt;br /&gt;
* Adam K. Kochanski, Jonathan D. Beezley, Jan Mandel, and Minjeong Kim, &#039;&#039;&#039;WRF fire simulation coupled with a fuel moisture model and smoke transport by WRF-Chem&#039;&#039;&#039;, [http://www.mmm.ucar.edu/events/2012_wrfusers/ 2012 WRF Users Workshop], [http://www.openwfm.org/wiki/File:WRF_workshop_2012_poster.pdf Poster 51] [http://www.mmm.ucar.edu/events/2012_wrfusers/abstracts/p51.htm abstract] [https://www.regonline.com/AttendeeDocuments/1077122/43365086/wrf2012.pdf paper] {{arXiv|1208.1059}}&lt;br /&gt;
* [http://ruc.noaa.gov/wrf/WG11/Users_guide.pdf WRF-Chem Users&#039; Guide]&lt;br /&gt;
* Georg A. Grell, Steven E. Peckham, Rainer Schmitz, Stuart A. McKeen, Gregory Frost, William C. Skamarock, Brian Eder, [http://dx.doi.org/10.1016/j.atmosenv.2005.04.027 Fully coupled “online” chemistry within the WRF model], Atmospheric Environment, Volume 39, Issue 37, December 2005, Pages 6957–6975&lt;br /&gt;
* C. Wiedinmyer, S. K. Akagi, R. J. Yokelson, L. K. Emmons, J. A. Al-Saadi, J. J. Orlando, and A. J. Soja. [http://dx.doi.org/10.5194/gmd-4-625-2011 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&lt;br /&gt;
* 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, [http://dx.doi.org/10.5194/gmd-3-43-2010 Description and evaluation of the Model for Ozone and Related chemical Tracers, version 4 (MOZART-4)], Geosci. Model Dev., 3, 43-67, 2010&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* [http://ruc.noaa.gov/wrf/WG11/ WRF-Chem] home page&lt;br /&gt;
* [https://www2.acom.ucar.edu/modeling/finn-fire-inventory-ncar Finn]  emissions model&lt;br /&gt;
* [http://www.acd.ucar.edu/wrf-chem/mozart.shtml MOZART] chemistry model&lt;/div&gt;</summary>
		<author><name>Jmandel</name></author>
	</entry>
	<entry>
		<id>https://wiki.openwfm.org/index.php?title=Smoke_and_coupling_with_WRF-Chem&amp;diff=8392</id>
		<title>Smoke and coupling with WRF-Chem</title>
		<link rel="alternate" type="text/html" href="https://wiki.openwfm.org/index.php?title=Smoke_and_coupling_with_WRF-Chem&amp;diff=8392"/>
		<updated>2025-11-22T03:16:37Z</updated>

		<summary type="html">&lt;p&gt;Jmandel: /* Passive smoke tracers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{users guide}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Sfire smoke.png|thumb|SFire smoke tracer in action.  See [[File:Smoke small.avi|animation]].]]&lt;br /&gt;
&lt;br /&gt;
Fire emissions can be modeled a passive smoke tracer advected by the wind field,&lt;br /&gt;
or as chemical species tracers, which also undergo chemical reactions by WRF-Chem. WRF-Chem is included in the WRF repository. Tracer variables are 3d fields of concentrations on the atmospheric grid. The variables are present in the wrfout files when activated. &lt;br /&gt;
&lt;br /&gt;
==Passive smoke tracers==&lt;br /&gt;
&lt;br /&gt;
The selection of the tracers in WRF is controlled by namelist variable &#039;&#039;&#039;tracer_opt&#039;&#039;&#039; in the &#039;&#039;&#039;&amp;amp;dynamics&#039;&#039;&#039;] section .  At the moment, the coupling supports &#039;&#039;&#039;tracer_opt = 1&#039;&#039;&#039;, which creates a single tracer called &#039;&#039;&#039;smoke&#039;&#039;&#039;. &lt;br /&gt;
The option &#039;&#039;&#039;tracer_opt = 2&#039;&#039;&#039; creates passive tracers called &#039;&#039;&#039;tr17_1&#039;&#039;&#039; to &#039;&#039;&#039;tr17_8&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
Emissions are inserted proportionally to the fuel burned according to the emission factors in file  &#039;&#039;&#039;namelist.fire_emissions&#039;&#039;&#039;. Properties of the tracers  &#039;&#039;&#039;tr17_1&#039;&#039;&#039; to &#039;&#039;&#039;tr17_4&#039;&#039;&#039; are identical, but the others  slightly differ.&lt;br /&gt;
&lt;br /&gt;
==Coupling with WRF-Chem==&lt;br /&gt;
Compiling the code with support for WRF-Chem is similar to the [[How to compile WRF-Fire|standard procedure]].&lt;br /&gt;
You must set an environment variable &#039;&#039;&#039;WRF_CHEM&#039;&#039;&#039; and configure with the argument &#039;&#039;&#039;chem&#039;&#039;&#039; as follows.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export WRF_CHEM=1&lt;br /&gt;
./configure chem&lt;br /&gt;
./compile em_fire&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The selection of the tracers in WRF-Chem is controlled by namelist variable &#039;&#039;&#039;chem_opt&#039;&#039;&#039; in &#039;&#039;&#039;&amp;amp;chem&#039;&#039;&#039; section of &#039;&#039;&#039;namelist.input&#039;&#039;&#039;. If &#039;&#039;&#039;chem_opt=0&#039;&#039;&#039;, no chemical tracers are created.  The coupling supports subsets of RADM2 (&#039;&#039;&#039;chem_opt=2&#039;&#039;&#039;), MOZART (&#039;&#039;&#039;chem_opt=112&#039;&#039;&#039; or &#039;&#039;&#039;119&#039;&#039;&#039;), and GOCART (&#039;&#039;&#039;chem_opt=300&#039;&#039;&#039;) variables. &lt;br /&gt;
&lt;br /&gt;
It is also possible to use &#039;&#039;&#039;tracer_opt = 1&#039;&#039;&#039; and &#039;&#039;&#039;tracer_opt = 2&#039;&#039;&#039; in a code compiled with WRF-Chem, but the resulting passive tracers are advected by WRF-Chem and behave slightly differently.&lt;br /&gt;
&lt;br /&gt;
==Running an idealized example==&lt;br /&gt;
An idealized example based on the hill case has been created in [https://github.com/jbeezley/wrf-fire/tree/master/wrfv2_fire/test/em_fire/chem &#039;&#039;&#039;test/em_fire/chem&#039;&#039;&#039;]&lt;br /&gt;
Note that &#039;&#039;&#039;sfc_full_init =.true.&#039;&#039;&#039; is required in the &#039;&#039;&#039;&amp;amp;fire&#039;&#039;&#039; section of &#039;&#039;&#039;namelist.input&#039;&#039;&#039; to initialize USGS landuse, which is required by  WRF-Chem.&lt;br /&gt;
The tracer selected by &#039;&#039;&#039;tracer_opt=1&#039;&#039;&#039; will appear as an atmospheric variable in the output file with the name &#039;&#039;&#039;smoke&#039;&#039;&#039;. The chemical species in the atmosphere, selected by &#039;&#039;&#039;chem_opt&#039;&#039;&#039;, will appear under their respective names, such as &#039;&#039;&#039;n2o5&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
&lt;br /&gt;
To use the passive tracers in the code built with WRF-Chem, specify &#039;&#039;&#039;tracer_opt=2&#039;&#039;&#039; and &#039;&#039;&#039;chem_opt=0&#039;&#039;&#039; in &#039;&#039;&#039;namelist.input&#039;&#039;&#039;. The tracers work slightly differently in code built with and without WRF-Chem, as described in file &#039;&#039;&#039;chem/module_input_tracer.F&#039;&#039;&#039;. A sample emission factors table for this usage is available as &#039;&#039;&#039;test/em_fire/chem/namelist.fire_emissions.tracers&#039;&#039;&#039;. It can be used in ideal as well as real runs. Different rows in the table can be used to track separate species, e.g., pm10 and pm25, with different emission factors. &lt;br /&gt;
&lt;br /&gt;
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 (&#039;&#039;&#039;ppmv&#039;&#039;&#039;), so the amounts of the inserted species are scaled 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 &#039;&#039;&#039;GRNHFX&#039;&#039;&#039; as a proxy. The emissions table contains the amounts of emissions fuel burned in &#039;&#039;&#039;g/kg&#039;&#039;&#039; or &#039;&#039;&#039;mol/kg&#039;&#039;&#039;.  The emissions tables are specified in file &#039;&#039;&#039;namelist.fire_emissions&#039;&#039;&#039;. This file contains a line for each species like&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 no2=3.2,3.2,3.2,1.4,1.4,1.4,1.4,2.7,2.7,2.7,3,3,3,&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
with emissions (g/kg fuel or mol/kg fuel) for each of the fuel categories used (by default, the 13 Anderson&#039;s categories).&lt;br /&gt;
&lt;br /&gt;
There are two additional variables in &#039;&#039;&#039;namelist.fire_emissions&#039;&#039;&#039;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
compatible_chem_opt=112,119&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
is a list of &#039;&#039;&#039;chem_opt&#039;&#039;&#039; 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  &#039;&#039;&#039;chem_opt&#039;&#039;&#039;.  If it does, the results can be upredictable.&lt;br /&gt;
The variable&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
printsums=1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
will enable printing of the totals of each emissions species at the end of every time step.&lt;br /&gt;
&lt;br /&gt;
Several prototype emissions tables are provided in &#039;&#039;&#039;test/em_fire/chem&#039;&#039;&#039;. You need to copy or link one of the emissions tables to &#039;&#039;&#039;namelist.fire_emissions&#039;&#039;&#039; in your run directory, such as&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -s namelist.fire_emissions.RADM2 namelist.fire_emissions&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
and set matching &#039;&#039;&#039;chem_opt&#039;&#039;&#039; in &#039;&#039;&#039;namelist.input&#039;&#039;&#039;, here &#039;&#039;&#039;chem_opt=2&#039;&#039;&#039;. See the next section for the available emissions tables. Users can also add their own.&lt;br /&gt;
&lt;br /&gt;
==Chemical species==&lt;br /&gt;
&lt;br /&gt;
The chemical model selected by the &#039;&#039;&#039;chem_opt&#039;&#039;&#039; flag produces concentrations on 3D grids in every &#039;&#039;&#039;wrfout&#039;&#039;&#039; file produced, for a set of variables defined in the &#039;&#039;&#039;Chem scalars&#039;&#039;&#039; part of the file  [https://github.com/openwfm/WRF-SFIRE/blob/262829290d98e419b6839893ecb1a5d36ed4b969/Registry/registry.chem#L1567 &#039;&#039;&#039;Registry/registry.chem&#039;&#039;&#039;]. The first section of the list contains the chemical species common to all models, later sections list species added for specific models. For more detailed information about the species including dusts and aerosols in specific WRF-Chem models, see the [https://ruc.noaa.gov/wrf/wrf-chem/model_info.htm WRF-Chem model documention] and the links to the individual models at the emissions tables below.&lt;br /&gt;
&lt;br /&gt;
The quantities of the chemical species are in &#039;&#039;&#039;ppmv&#039;&#039;&#039;, i.e., 1e6*mol/mol of dry air.&lt;br /&gt;
&lt;br /&gt;
The frequency of writing the outputs into the wrfout files is specified by the user in the &#039;&#039;&#039;history_interval&#039;&#039;&#039; flags in the WRF &#039;&#039;&#039;namelist.input&#039;&#039;&#039; file. It can be as often as once every minute, but usually much less. &lt;br /&gt;
&lt;br /&gt;
SFIRE adds the fire emissions to a subset of the chemical species as specified in the emissions table. It is up to the chemical model to produce other species from them. Note that the parts of the registry.chem file using the word &amp;quot;emissions&amp;quot; are for other emission schemes and not relevant here. SFIRE adds fire emissions directly to the lowest layer of the 3D Chem fiels during the fire simulation.&lt;br /&gt;
&lt;br /&gt;
There are currently three emissions tables available:&lt;br /&gt;
* [https://github.com/openwfm/WRF-SFIRE/blob/master/test/em_fire/chem/namelist.fire_emissions.RADM2 namelist.fire_emissions.RADM2] for the [http://ruc.noaa.gov/wrf/WG11/radm2.htm RADM2] model&lt;br /&gt;
* [https://github.com/openwfm/WRF-SFIRE/blob/master/test/em_fire/chem/namelist.fire_emissions.MOZART namelist.fire_emissions.MOZART] for the [http://www.acd.ucar.edu/wrf-chem/mozart.shtml MOZART] model&lt;br /&gt;
* [https://github.com/openwfm/WRF-SFIRE/blob/master/test/em_fire/chem/namelist.fire_emissions.GOCART namelist.fire_emissions.GOCART] for the [https://tropo.gsfc.nasa.gov/gocart GOCART] model&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
WRF-Chem contains a multitude of arrays representing concentrations of chemical species. The typical&lt;br /&gt;
method of injecting data into the simulation involves generating emission input data files from standard&lt;br /&gt;
sources.  These sources are read into the code using auxiliary input streams and interpolated into&lt;br /&gt;
the species arrays in the [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/chem/module_emissions_anthropogenics.F emissions] module.  For the coupling with SFIRE, turning off file&lt;br /&gt;
input in the namelist seems to initialize the emission arrays to zero.  This eliminates the need to generate&lt;br /&gt;
useless emission files. &lt;br /&gt;
&lt;br /&gt;
WRF-Chem stores its state in arrays &#039;&#039;&#039;chem&#039;&#039;&#039; and   &#039;&#039;&#039;tracer&#039;&#039;&#039;.  These arrays are four dimensional indexed like &#039;&#039;&#039;(x,z,y,s)&#039;&#039;&#039;, where s is the chemical&lt;br /&gt;
species. The domain structure contains scalars such as &#039;&#039;&#039;p_smoke&#039;&#039;&#039; (into the &#039;&#039;&#039;tracer&#039;&#039;&#039; array) and &#039;&#039;&#039;p_nh4&#039;&#039;&#039; (into the &#039;&#039;&#039;chem&#039;&#039;&#039; array) that give the species index for&lt;br /&gt;
each type.  The species selections are specific to different chemistry options (&#039;&#039;&#039;chem_opt&#039;&#039;&#039;) &lt;br /&gt;
from the registry; however, even unused species have their index set to 1. The dynamics section of the namelist has an option for &#039;&#039;&#039;tracer_opt&#039;&#039;&#039;.  This&lt;br /&gt;
controls what tracers are generated for Chem.  &lt;br /&gt;
&lt;br /&gt;
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 [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_atm.F#L276 &#039;&#039;&#039;add_fire_emissions_to_chem&#039;&#039;&#039;], which  adds chemical species to the &#039;&#039;&#039;chem&#039;&#039;&#039; array, was derived from the utility [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_util.F#L471 &#039;&#039;&#039;sum_2d_cells&#039;&#039;&#039;] by adding chemistry-specific code.&lt;br /&gt;
&lt;br /&gt;
The chemistry coupling code is compiled only when WRF-Chem is being compiled. It resides in [https://github.com/jbeezley/wrf-fire/blob4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_atm.F module_fr_sfire_atm.F], which is allowed by the SFIRE architecture to contain code both at atmosphere and fire resolution. Besides subroutine &#039;&#039;&#039;add_fire_emissions_to_chem&#039;&#039;&#039;, the code consists of subroutine [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_atm.F#L151 &#039;&#039;&#039;read_emissions_table&#039;&#039;&#039;], which reads file &#039;&#039;&#039;namelist.fire_emissions&#039;&#039;&#039;, subroutine [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_atm.F#L276 &#039;&#039;&#039;add_fire_emissions_to_chem&#039;&#039;&#039;], which  adds chemical species to the &#039;&#039;&#039;chem&#039;&#039;&#039; array, the [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_atm.F#L78 emissions tables] as module variables, subroutine [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_atm.F#L1914 &#039;&#039;&#039;fire_emission&#039;&#039;&#039;], which adds the smoke tracer, and the corresponding call statements in [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_driver.F  &#039;&#039;&#039;module_fr_sfire_driver&#039;&#039;&#039;].&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
* Kochanski A. K., Jenkins M.A., Yedinak K., Mandel J., Beezley J, and Lamb B. (2015) &#039;&#039;&#039;Toward an integrated system for fire, smoke and air quality simulations&#039;&#039;&#039;, International Journal of Wildland Fire - http://dx.doi.org/10.1071/WF14074&lt;br /&gt;
* Adam K. Kochanski, Jonathan D. Beezley, Jan Mandel, Craig B. Clements, &#039;&#039;&#039;Air pollution forecasting by coupled atmosphere-fire model WRF and SFIRE with WRF-Chem&#039;&#039;&#039;, 4th Fire Behavior and Fuels Conference, February 18-22, 2013, Raleigh, NC, 	{{arXiv|1304.7703}}, 2013&lt;br /&gt;
* Adam K. Kochanski, Jonathan D. Beezley, Jan Mandel, and Minjeong Kim, &#039;&#039;&#039;WRF fire simulation coupled with a fuel moisture model and smoke transport by WRF-Chem&#039;&#039;&#039;, [http://www.mmm.ucar.edu/events/2012_wrfusers/ 2012 WRF Users Workshop], [http://www.openwfm.org/wiki/File:WRF_workshop_2012_poster.pdf Poster 51] [http://www.mmm.ucar.edu/events/2012_wrfusers/abstracts/p51.htm abstract] [https://www.regonline.com/AttendeeDocuments/1077122/43365086/wrf2012.pdf paper] {{arXiv|1208.1059}}&lt;br /&gt;
* [http://ruc.noaa.gov/wrf/WG11/Users_guide.pdf WRF-Chem Users&#039; Guide]&lt;br /&gt;
* Georg A. Grell, Steven E. Peckham, Rainer Schmitz, Stuart A. McKeen, Gregory Frost, William C. Skamarock, Brian Eder, [http://dx.doi.org/10.1016/j.atmosenv.2005.04.027 Fully coupled “online” chemistry within the WRF model], Atmospheric Environment, Volume 39, Issue 37, December 2005, Pages 6957–6975&lt;br /&gt;
* C. Wiedinmyer, S. K. Akagi, R. J. Yokelson, L. K. Emmons, J. A. Al-Saadi, J. J. Orlando, and A. J. Soja. [http://dx.doi.org/10.5194/gmd-4-625-2011 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&lt;br /&gt;
* 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, [http://dx.doi.org/10.5194/gmd-3-43-2010 Description and evaluation of the Model for Ozone and Related chemical Tracers, version 4 (MOZART-4)], Geosci. Model Dev., 3, 43-67, 2010&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* [http://ruc.noaa.gov/wrf/WG11/ WRF-Chem] home page&lt;br /&gt;
* [https://www2.acom.ucar.edu/modeling/finn-fire-inventory-ncar Finn]  emissions model&lt;br /&gt;
* [http://www.acd.ucar.edu/wrf-chem/mozart.shtml MOZART] chemistry model&lt;/div&gt;</summary>
		<author><name>Jmandel</name></author>
	</entry>
	<entry>
		<id>https://wiki.openwfm.org/index.php?title=Smoke_and_coupling_with_WRF-Chem&amp;diff=8391</id>
		<title>Smoke and coupling with WRF-Chem</title>
		<link rel="alternate" type="text/html" href="https://wiki.openwfm.org/index.php?title=Smoke_and_coupling_with_WRF-Chem&amp;diff=8391"/>
		<updated>2025-11-22T00:23:56Z</updated>

		<summary type="html">&lt;p&gt;Jmandel: /* Coupling with WRF-Chem */  typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{users guide}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Sfire smoke.png|thumb|SFire smoke tracer in action.  See [[File:Smoke small.avi|animation]].]]&lt;br /&gt;
&lt;br /&gt;
Fire emissions can be modeled a passive smoke tracer advected by the wind field,&lt;br /&gt;
or as chemical species tracers, which also undergo chemical reactions by WRF-Chem. WRF-Chem is included in the WRF repository. Tracer variables are 3d fields of concentrations on the atmospheric grid. The variables are present in the wrfout files when activated. &lt;br /&gt;
&lt;br /&gt;
==Passive smoke tracers==&lt;br /&gt;
&lt;br /&gt;
The selection of the tracers in WRF is controlled by namelist variable &#039;&#039;&#039;tracer_opt&#039;&#039;&#039; in the &#039;&#039;&#039;&amp;amp;dynamics&#039;&#039;&#039;] section .  At the moment, the coupling supports &#039;&#039;&#039;tracer_opt = 1&#039;&#039;&#039;, which creates a single tracer called &#039;&#039;&#039;smoke&#039;&#039;&#039;. &lt;br /&gt;
The option &#039;&#039;&#039;tracer_opt = 2&#039;&#039;&#039; creates passive tracers called &#039;&#039;&#039;tr17_1&#039;&#039;&#039; to &#039;&#039;&#039;tr17_8&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
Emissions \are inserted proportionally to the fuel burned according to the emission factors in file  &#039;&#039;&#039;namelist.fire_emissions&#039;&#039;&#039;. Properties of the tracers  &#039;&#039;&#039;tr17_1&#039;&#039;&#039; to &#039;&#039;&#039;tr17_4&#039;&#039;&#039; are identical, but the others  slightly differ. &lt;br /&gt;
&lt;br /&gt;
==Coupling with WRF-Chem==&lt;br /&gt;
Compiling the code with support for WRF-Chem is similar to the [[How to compile WRF-Fire|standard procedure]].&lt;br /&gt;
You must set an environment variable &#039;&#039;&#039;WRF_CHEM&#039;&#039;&#039; and configure with the argument &#039;&#039;&#039;chem&#039;&#039;&#039; as follows.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export WRF_CHEM=1&lt;br /&gt;
./configure chem&lt;br /&gt;
./compile em_fire&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The selection of the tracers in WRF-Chem is controlled by namelist variable &#039;&#039;&#039;chem_opt&#039;&#039;&#039; in &#039;&#039;&#039;&amp;amp;chem&#039;&#039;&#039; section of &#039;&#039;&#039;namelist.input&#039;&#039;&#039;. If &#039;&#039;&#039;chem_opt=0&#039;&#039;&#039;, no chemical tracers are created.  The coupling supports subsets of RADM2 (&#039;&#039;&#039;chem_opt=2&#039;&#039;&#039;), MOZART (&#039;&#039;&#039;chem_opt=112&#039;&#039;&#039; or &#039;&#039;&#039;119&#039;&#039;&#039;), and GOCART (&#039;&#039;&#039;chem_opt=300&#039;&#039;&#039;) variables. &lt;br /&gt;
&lt;br /&gt;
It is also possible to use &#039;&#039;&#039;tracer_opt = 1&#039;&#039;&#039; and &#039;&#039;&#039;tracer_opt = 2&#039;&#039;&#039; in a code compiled with WRF-Chem, but the resulting passive tracers are advected by WRF-Chem and behave slightly differently.&lt;br /&gt;
&lt;br /&gt;
==Running an idealized example==&lt;br /&gt;
An idealized example based on the hill case has been created in [https://github.com/jbeezley/wrf-fire/tree/master/wrfv2_fire/test/em_fire/chem &#039;&#039;&#039;test/em_fire/chem&#039;&#039;&#039;]&lt;br /&gt;
Note that &#039;&#039;&#039;sfc_full_init =.true.&#039;&#039;&#039; is required in the &#039;&#039;&#039;&amp;amp;fire&#039;&#039;&#039; section of &#039;&#039;&#039;namelist.input&#039;&#039;&#039; to initialize USGS landuse, which is required by  WRF-Chem.&lt;br /&gt;
The tracer selected by &#039;&#039;&#039;tracer_opt=1&#039;&#039;&#039; will appear as an atmospheric variable in the output file with the name &#039;&#039;&#039;smoke&#039;&#039;&#039;. The chemical species in the atmosphere, selected by &#039;&#039;&#039;chem_opt&#039;&#039;&#039;, will appear under their respective names, such as &#039;&#039;&#039;n2o5&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
&lt;br /&gt;
To use the passive tracers in the code built with WRF-Chem, specify &#039;&#039;&#039;tracer_opt=2&#039;&#039;&#039; and &#039;&#039;&#039;chem_opt=0&#039;&#039;&#039; in &#039;&#039;&#039;namelist.input&#039;&#039;&#039;. The tracers work slightly differently in code built with and without WRF-Chem, as described in file &#039;&#039;&#039;chem/module_input_tracer.F&#039;&#039;&#039;. A sample emission factors table for this usage is available as &#039;&#039;&#039;test/em_fire/chem/namelist.fire_emissions.tracers&#039;&#039;&#039;. It can be used in ideal as well as real runs. Different rows in the table can be used to track separate species, e.g., pm10 and pm25, with different emission factors. &lt;br /&gt;
&lt;br /&gt;
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 (&#039;&#039;&#039;ppmv&#039;&#039;&#039;), so the amounts of the inserted species are scaled 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 &#039;&#039;&#039;GRNHFX&#039;&#039;&#039; as a proxy. The emissions table contains the amounts of emissions fuel burned in &#039;&#039;&#039;g/kg&#039;&#039;&#039; or &#039;&#039;&#039;mol/kg&#039;&#039;&#039;.  The emissions tables are specified in file &#039;&#039;&#039;namelist.fire_emissions&#039;&#039;&#039;. This file contains a line for each species like&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 no2=3.2,3.2,3.2,1.4,1.4,1.4,1.4,2.7,2.7,2.7,3,3,3,&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
with emissions (g/kg fuel or mol/kg fuel) for each of the fuel categories used (by default, the 13 Anderson&#039;s categories).&lt;br /&gt;
&lt;br /&gt;
There are two additional variables in &#039;&#039;&#039;namelist.fire_emissions&#039;&#039;&#039;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
compatible_chem_opt=112,119&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
is a list of &#039;&#039;&#039;chem_opt&#039;&#039;&#039; 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  &#039;&#039;&#039;chem_opt&#039;&#039;&#039;.  If it does, the results can be upredictable.&lt;br /&gt;
The variable&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
printsums=1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
will enable printing of the totals of each emissions species at the end of every time step.&lt;br /&gt;
&lt;br /&gt;
Several prototype emissions tables are provided in &#039;&#039;&#039;test/em_fire/chem&#039;&#039;&#039;. You need to copy or link one of the emissions tables to &#039;&#039;&#039;namelist.fire_emissions&#039;&#039;&#039; in your run directory, such as&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -s namelist.fire_emissions.RADM2 namelist.fire_emissions&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
and set matching &#039;&#039;&#039;chem_opt&#039;&#039;&#039; in &#039;&#039;&#039;namelist.input&#039;&#039;&#039;, here &#039;&#039;&#039;chem_opt=2&#039;&#039;&#039;. See the next section for the available emissions tables. Users can also add their own.&lt;br /&gt;
&lt;br /&gt;
==Chemical species==&lt;br /&gt;
&lt;br /&gt;
The chemical model selected by the &#039;&#039;&#039;chem_opt&#039;&#039;&#039; flag produces concentrations on 3D grids in every &#039;&#039;&#039;wrfout&#039;&#039;&#039; file produced, for a set of variables defined in the &#039;&#039;&#039;Chem scalars&#039;&#039;&#039; part of the file  [https://github.com/openwfm/WRF-SFIRE/blob/262829290d98e419b6839893ecb1a5d36ed4b969/Registry/registry.chem#L1567 &#039;&#039;&#039;Registry/registry.chem&#039;&#039;&#039;]. The first section of the list contains the chemical species common to all models, later sections list species added for specific models. For more detailed information about the species including dusts and aerosols in specific WRF-Chem models, see the [https://ruc.noaa.gov/wrf/wrf-chem/model_info.htm WRF-Chem model documention] and the links to the individual models at the emissions tables below.&lt;br /&gt;
&lt;br /&gt;
The quantities of the chemical species are in &#039;&#039;&#039;ppmv&#039;&#039;&#039;, i.e., 1e6*mol/mol of dry air.&lt;br /&gt;
&lt;br /&gt;
The frequency of writing the outputs into the wrfout files is specified by the user in the &#039;&#039;&#039;history_interval&#039;&#039;&#039; flags in the WRF &#039;&#039;&#039;namelist.input&#039;&#039;&#039; file. It can be as often as once every minute, but usually much less. &lt;br /&gt;
&lt;br /&gt;
SFIRE adds the fire emissions to a subset of the chemical species as specified in the emissions table. It is up to the chemical model to produce other species from them. Note that the parts of the registry.chem file using the word &amp;quot;emissions&amp;quot; are for other emission schemes and not relevant here. SFIRE adds fire emissions directly to the lowest layer of the 3D Chem fiels during the fire simulation.&lt;br /&gt;
&lt;br /&gt;
There are currently three emissions tables available:&lt;br /&gt;
* [https://github.com/openwfm/WRF-SFIRE/blob/master/test/em_fire/chem/namelist.fire_emissions.RADM2 namelist.fire_emissions.RADM2] for the [http://ruc.noaa.gov/wrf/WG11/radm2.htm RADM2] model&lt;br /&gt;
* [https://github.com/openwfm/WRF-SFIRE/blob/master/test/em_fire/chem/namelist.fire_emissions.MOZART namelist.fire_emissions.MOZART] for the [http://www.acd.ucar.edu/wrf-chem/mozart.shtml MOZART] model&lt;br /&gt;
* [https://github.com/openwfm/WRF-SFIRE/blob/master/test/em_fire/chem/namelist.fire_emissions.GOCART namelist.fire_emissions.GOCART] for the [https://tropo.gsfc.nasa.gov/gocart GOCART] model&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
WRF-Chem contains a multitude of arrays representing concentrations of chemical species. The typical&lt;br /&gt;
method of injecting data into the simulation involves generating emission input data files from standard&lt;br /&gt;
sources.  These sources are read into the code using auxiliary input streams and interpolated into&lt;br /&gt;
the species arrays in the [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/chem/module_emissions_anthropogenics.F emissions] module.  For the coupling with SFIRE, turning off file&lt;br /&gt;
input in the namelist seems to initialize the emission arrays to zero.  This eliminates the need to generate&lt;br /&gt;
useless emission files. &lt;br /&gt;
&lt;br /&gt;
WRF-Chem stores its state in arrays &#039;&#039;&#039;chem&#039;&#039;&#039; and   &#039;&#039;&#039;tracer&#039;&#039;&#039;.  These arrays are four dimensional indexed like &#039;&#039;&#039;(x,z,y,s)&#039;&#039;&#039;, where s is the chemical&lt;br /&gt;
species. The domain structure contains scalars such as &#039;&#039;&#039;p_smoke&#039;&#039;&#039; (into the &#039;&#039;&#039;tracer&#039;&#039;&#039; array) and &#039;&#039;&#039;p_nh4&#039;&#039;&#039; (into the &#039;&#039;&#039;chem&#039;&#039;&#039; array) that give the species index for&lt;br /&gt;
each type.  The species selections are specific to different chemistry options (&#039;&#039;&#039;chem_opt&#039;&#039;&#039;) &lt;br /&gt;
from the registry; however, even unused species have their index set to 1. The dynamics section of the namelist has an option for &#039;&#039;&#039;tracer_opt&#039;&#039;&#039;.  This&lt;br /&gt;
controls what tracers are generated for Chem.  &lt;br /&gt;
&lt;br /&gt;
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 [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_atm.F#L276 &#039;&#039;&#039;add_fire_emissions_to_chem&#039;&#039;&#039;], which  adds chemical species to the &#039;&#039;&#039;chem&#039;&#039;&#039; array, was derived from the utility [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_util.F#L471 &#039;&#039;&#039;sum_2d_cells&#039;&#039;&#039;] by adding chemistry-specific code.&lt;br /&gt;
&lt;br /&gt;
The chemistry coupling code is compiled only when WRF-Chem is being compiled. It resides in [https://github.com/jbeezley/wrf-fire/blob4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_atm.F module_fr_sfire_atm.F], which is allowed by the SFIRE architecture to contain code both at atmosphere and fire resolution. Besides subroutine &#039;&#039;&#039;add_fire_emissions_to_chem&#039;&#039;&#039;, the code consists of subroutine [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_atm.F#L151 &#039;&#039;&#039;read_emissions_table&#039;&#039;&#039;], which reads file &#039;&#039;&#039;namelist.fire_emissions&#039;&#039;&#039;, subroutine [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_atm.F#L276 &#039;&#039;&#039;add_fire_emissions_to_chem&#039;&#039;&#039;], which  adds chemical species to the &#039;&#039;&#039;chem&#039;&#039;&#039; array, the [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_atm.F#L78 emissions tables] as module variables, subroutine [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_atm.F#L1914 &#039;&#039;&#039;fire_emission&#039;&#039;&#039;], which adds the smoke tracer, and the corresponding call statements in [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_driver.F  &#039;&#039;&#039;module_fr_sfire_driver&#039;&#039;&#039;].&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
* Kochanski A. K., Jenkins M.A., Yedinak K., Mandel J., Beezley J, and Lamb B. (2015) &#039;&#039;&#039;Toward an integrated system for fire, smoke and air quality simulations&#039;&#039;&#039;, International Journal of Wildland Fire - http://dx.doi.org/10.1071/WF14074&lt;br /&gt;
* Adam K. Kochanski, Jonathan D. Beezley, Jan Mandel, Craig B. Clements, &#039;&#039;&#039;Air pollution forecasting by coupled atmosphere-fire model WRF and SFIRE with WRF-Chem&#039;&#039;&#039;, 4th Fire Behavior and Fuels Conference, February 18-22, 2013, Raleigh, NC, 	{{arXiv|1304.7703}}, 2013&lt;br /&gt;
* Adam K. Kochanski, Jonathan D. Beezley, Jan Mandel, and Minjeong Kim, &#039;&#039;&#039;WRF fire simulation coupled with a fuel moisture model and smoke transport by WRF-Chem&#039;&#039;&#039;, [http://www.mmm.ucar.edu/events/2012_wrfusers/ 2012 WRF Users Workshop], [http://www.openwfm.org/wiki/File:WRF_workshop_2012_poster.pdf Poster 51] [http://www.mmm.ucar.edu/events/2012_wrfusers/abstracts/p51.htm abstract] [https://www.regonline.com/AttendeeDocuments/1077122/43365086/wrf2012.pdf paper] {{arXiv|1208.1059}}&lt;br /&gt;
* [http://ruc.noaa.gov/wrf/WG11/Users_guide.pdf WRF-Chem Users&#039; Guide]&lt;br /&gt;
* Georg A. Grell, Steven E. Peckham, Rainer Schmitz, Stuart A. McKeen, Gregory Frost, William C. Skamarock, Brian Eder, [http://dx.doi.org/10.1016/j.atmosenv.2005.04.027 Fully coupled “online” chemistry within the WRF model], Atmospheric Environment, Volume 39, Issue 37, December 2005, Pages 6957–6975&lt;br /&gt;
* C. Wiedinmyer, S. K. Akagi, R. J. Yokelson, L. K. Emmons, J. A. Al-Saadi, J. J. Orlando, and A. J. Soja. [http://dx.doi.org/10.5194/gmd-4-625-2011 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&lt;br /&gt;
* 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, [http://dx.doi.org/10.5194/gmd-3-43-2010 Description and evaluation of the Model for Ozone and Related chemical Tracers, version 4 (MOZART-4)], Geosci. Model Dev., 3, 43-67, 2010&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* [http://ruc.noaa.gov/wrf/WG11/ WRF-Chem] home page&lt;br /&gt;
* [https://www2.acom.ucar.edu/modeling/finn-fire-inventory-ncar Finn]  emissions model&lt;br /&gt;
* [http://www.acd.ucar.edu/wrf-chem/mozart.shtml MOZART] chemistry model&lt;/div&gt;</summary>
		<author><name>Jmandel</name></author>
	</entry>
	<entry>
		<id>https://wiki.openwfm.org/index.php?title=Smoke_and_coupling_with_WRF-Chem&amp;diff=8390</id>
		<title>Smoke and coupling with WRF-Chem</title>
		<link rel="alternate" type="text/html" href="https://wiki.openwfm.org/index.php?title=Smoke_and_coupling_with_WRF-Chem&amp;diff=8390"/>
		<updated>2025-11-22T00:23:34Z</updated>

		<summary type="html">&lt;p&gt;Jmandel: separated passive tracers and chem&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{users guide}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Sfire smoke.png|thumb|SFire smoke tracer in action.  See [[File:Smoke small.avi|animation]].]]&lt;br /&gt;
&lt;br /&gt;
Fire emissions can be modeled a passive smoke tracer advected by the wind field,&lt;br /&gt;
or as chemical species tracers, which also undergo chemical reactions by WRF-Chem. WRF-Chem is included in the WRF repository. Tracer variables are 3d fields of concentrations on the atmospheric grid. The variables are present in the wrfout files when activated. &lt;br /&gt;
&lt;br /&gt;
==Passive smoke tracers==&lt;br /&gt;
&lt;br /&gt;
The selection of the tracers in WRF is controlled by namelist variable &#039;&#039;&#039;tracer_opt&#039;&#039;&#039; in the &#039;&#039;&#039;&amp;amp;dynamics&#039;&#039;&#039;] section .  At the moment, the coupling supports &#039;&#039;&#039;tracer_opt = 1&#039;&#039;&#039;, which creates a single tracer called &#039;&#039;&#039;smoke&#039;&#039;&#039;. &lt;br /&gt;
The option &#039;&#039;&#039;tracer_opt = 2&#039;&#039;&#039; creates passive tracers called &#039;&#039;&#039;tr17_1&#039;&#039;&#039; to &#039;&#039;&#039;tr17_8&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
Emissions \are inserted proportionally to the fuel burned according to the emission factors in file  &#039;&#039;&#039;namelist.fire_emissions&#039;&#039;&#039;. Properties of the tracers  &#039;&#039;&#039;tr17_1&#039;&#039;&#039; to &#039;&#039;&#039;tr17_4&#039;&#039;&#039; are identical, but the others  slightly differ. &lt;br /&gt;
&lt;br /&gt;
==Coupling with WRF-Chem==&lt;br /&gt;
Compiling the code with support for WRF-Chem is similar to the [[How to compile WRF-Fire|standard procedure]].&lt;br /&gt;
You must set an environment variable &#039;&#039;&#039;WRF_CHEM&#039;&#039;&#039; and configure with the argument &#039;&#039;&#039;chem&#039;&#039;&#039; as follows.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export WRF_CHEM=1&lt;br /&gt;
./configure chem&lt;br /&gt;
./compile em_fire&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The selection of the tracers in WRF-Chem is controlled by namelist variable &#039;&#039;&#039;chem_opt&#039;&#039;&#039;in &#039;&#039;&#039;&amp;amp;chem&#039;&#039;&#039; section of &#039;&#039;&#039;namelist.input&#039;&#039;&#039;. If &#039;&#039;&#039;chem_opt=0&#039;&#039;&#039;, no chemical tracers are created.  The coupling supports subsets of RADM2 (&#039;&#039;&#039;chem_opt=2&#039;&#039;&#039;), MOZART (&#039;&#039;&#039;chem_opt=112&#039;&#039;&#039; or &#039;&#039;&#039;119&#039;&#039;&#039;), and GOCART (&#039;&#039;&#039;chem_opt=300&#039;&#039;&#039;) variables. &lt;br /&gt;
&lt;br /&gt;
It is also possible to use &#039;&#039;&#039;tracer_opt = 1&#039;&#039;&#039; and &#039;&#039;&#039;tracer_opt = 2&#039;&#039;&#039; in a code compiled with WRF-Chem, but the resulting passive tracers are advected by WRF-Chem and behave slightly differently. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Running an idealized example==&lt;br /&gt;
An idealized example based on the hill case has been created in [https://github.com/jbeezley/wrf-fire/tree/master/wrfv2_fire/test/em_fire/chem &#039;&#039;&#039;test/em_fire/chem&#039;&#039;&#039;]&lt;br /&gt;
Note that &#039;&#039;&#039;sfc_full_init =.true.&#039;&#039;&#039; is required in the &#039;&#039;&#039;&amp;amp;fire&#039;&#039;&#039; section of &#039;&#039;&#039;namelist.input&#039;&#039;&#039; to initialize USGS landuse, which is required by  WRF-Chem.&lt;br /&gt;
The tracer selected by &#039;&#039;&#039;tracer_opt=1&#039;&#039;&#039; will appear as an atmospheric variable in the output file with the name &#039;&#039;&#039;smoke&#039;&#039;&#039;. The chemical species in the atmosphere, selected by &#039;&#039;&#039;chem_opt&#039;&#039;&#039;, will appear under their respective names, such as &#039;&#039;&#039;n2o5&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
&lt;br /&gt;
To use the passive tracers in the code built with WRF-Chem, specify &#039;&#039;&#039;tracer_opt=2&#039;&#039;&#039; and &#039;&#039;&#039;chem_opt=0&#039;&#039;&#039; in &#039;&#039;&#039;namelist.input&#039;&#039;&#039;. The tracers work slightly differently in code built with and without WRF-Chem, as described in file &#039;&#039;&#039;chem/module_input_tracer.F&#039;&#039;&#039;. A sample emission factors table for this usage is available as &#039;&#039;&#039;test/em_fire/chem/namelist.fire_emissions.tracers&#039;&#039;&#039;. It can be used in ideal as well as real runs. Different rows in the table can be used to track separate species, e.g., pm10 and pm25, with different emission factors. &lt;br /&gt;
&lt;br /&gt;
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 (&#039;&#039;&#039;ppmv&#039;&#039;&#039;), so the amounts of the inserted species are scaled 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 &#039;&#039;&#039;GRNHFX&#039;&#039;&#039; as a proxy. The emissions table contains the amounts of emissions fuel burned in &#039;&#039;&#039;g/kg&#039;&#039;&#039; or &#039;&#039;&#039;mol/kg&#039;&#039;&#039;.  The emissions tables are specified in file &#039;&#039;&#039;namelist.fire_emissions&#039;&#039;&#039;. This file contains a line for each species like&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 no2=3.2,3.2,3.2,1.4,1.4,1.4,1.4,2.7,2.7,2.7,3,3,3,&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
with emissions (g/kg fuel or mol/kg fuel) for each of the fuel categories used (by default, the 13 Anderson&#039;s categories).&lt;br /&gt;
&lt;br /&gt;
There are two additional variables in &#039;&#039;&#039;namelist.fire_emissions&#039;&#039;&#039;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
compatible_chem_opt=112,119&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
is a list of &#039;&#039;&#039;chem_opt&#039;&#039;&#039; 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  &#039;&#039;&#039;chem_opt&#039;&#039;&#039;.  If it does, the results can be upredictable.&lt;br /&gt;
The variable&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
printsums=1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
will enable printing of the totals of each emissions species at the end of every time step.&lt;br /&gt;
&lt;br /&gt;
Several prototype emissions tables are provided in &#039;&#039;&#039;test/em_fire/chem&#039;&#039;&#039;. You need to copy or link one of the emissions tables to &#039;&#039;&#039;namelist.fire_emissions&#039;&#039;&#039; in your run directory, such as&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -s namelist.fire_emissions.RADM2 namelist.fire_emissions&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
and set matching &#039;&#039;&#039;chem_opt&#039;&#039;&#039; in &#039;&#039;&#039;namelist.input&#039;&#039;&#039;, here &#039;&#039;&#039;chem_opt=2&#039;&#039;&#039;. See the next section for the available emissions tables. Users can also add their own.&lt;br /&gt;
&lt;br /&gt;
==Chemical species==&lt;br /&gt;
&lt;br /&gt;
The chemical model selected by the &#039;&#039;&#039;chem_opt&#039;&#039;&#039; flag produces concentrations on 3D grids in every &#039;&#039;&#039;wrfout&#039;&#039;&#039; file produced, for a set of variables defined in the &#039;&#039;&#039;Chem scalars&#039;&#039;&#039; part of the file  [https://github.com/openwfm/WRF-SFIRE/blob/262829290d98e419b6839893ecb1a5d36ed4b969/Registry/registry.chem#L1567 &#039;&#039;&#039;Registry/registry.chem&#039;&#039;&#039;]. The first section of the list contains the chemical species common to all models, later sections list species added for specific models. For more detailed information about the species including dusts and aerosols in specific WRF-Chem models, see the [https://ruc.noaa.gov/wrf/wrf-chem/model_info.htm WRF-Chem model documention] and the links to the individual models at the emissions tables below.&lt;br /&gt;
&lt;br /&gt;
The quantities of the chemical species are in &#039;&#039;&#039;ppmv&#039;&#039;&#039;, i.e., 1e6*mol/mol of dry air.&lt;br /&gt;
&lt;br /&gt;
The frequency of writing the outputs into the wrfout files is specified by the user in the &#039;&#039;&#039;history_interval&#039;&#039;&#039; flags in the WRF &#039;&#039;&#039;namelist.input&#039;&#039;&#039; file. It can be as often as once every minute, but usually much less. &lt;br /&gt;
&lt;br /&gt;
SFIRE adds the fire emissions to a subset of the chemical species as specified in the emissions table. It is up to the chemical model to produce other species from them. Note that the parts of the registry.chem file using the word &amp;quot;emissions&amp;quot; are for other emission schemes and not relevant here. SFIRE adds fire emissions directly to the lowest layer of the 3D Chem fiels during the fire simulation.&lt;br /&gt;
&lt;br /&gt;
There are currently three emissions tables available:&lt;br /&gt;
* [https://github.com/openwfm/WRF-SFIRE/blob/master/test/em_fire/chem/namelist.fire_emissions.RADM2 namelist.fire_emissions.RADM2] for the [http://ruc.noaa.gov/wrf/WG11/radm2.htm RADM2] model&lt;br /&gt;
* [https://github.com/openwfm/WRF-SFIRE/blob/master/test/em_fire/chem/namelist.fire_emissions.MOZART namelist.fire_emissions.MOZART] for the [http://www.acd.ucar.edu/wrf-chem/mozart.shtml MOZART] model&lt;br /&gt;
* [https://github.com/openwfm/WRF-SFIRE/blob/master/test/em_fire/chem/namelist.fire_emissions.GOCART namelist.fire_emissions.GOCART] for the [https://tropo.gsfc.nasa.gov/gocart GOCART] model&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
WRF-Chem contains a multitude of arrays representing concentrations of chemical species. The typical&lt;br /&gt;
method of injecting data into the simulation involves generating emission input data files from standard&lt;br /&gt;
sources.  These sources are read into the code using auxiliary input streams and interpolated into&lt;br /&gt;
the species arrays in the [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/chem/module_emissions_anthropogenics.F emissions] module.  For the coupling with SFIRE, turning off file&lt;br /&gt;
input in the namelist seems to initialize the emission arrays to zero.  This eliminates the need to generate&lt;br /&gt;
useless emission files. &lt;br /&gt;
&lt;br /&gt;
WRF-Chem stores its state in arrays &#039;&#039;&#039;chem&#039;&#039;&#039; and   &#039;&#039;&#039;tracer&#039;&#039;&#039;.  These arrays are four dimensional indexed like &#039;&#039;&#039;(x,z,y,s)&#039;&#039;&#039;, where s is the chemical&lt;br /&gt;
species. The domain structure contains scalars such as &#039;&#039;&#039;p_smoke&#039;&#039;&#039; (into the &#039;&#039;&#039;tracer&#039;&#039;&#039; array) and &#039;&#039;&#039;p_nh4&#039;&#039;&#039; (into the &#039;&#039;&#039;chem&#039;&#039;&#039; array) that give the species index for&lt;br /&gt;
each type.  The species selections are specific to different chemistry options (&#039;&#039;&#039;chem_opt&#039;&#039;&#039;) &lt;br /&gt;
from the registry; however, even unused species have their index set to 1. The dynamics section of the namelist has an option for &#039;&#039;&#039;tracer_opt&#039;&#039;&#039;.  This&lt;br /&gt;
controls what tracers are generated for Chem.  &lt;br /&gt;
&lt;br /&gt;
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 [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_atm.F#L276 &#039;&#039;&#039;add_fire_emissions_to_chem&#039;&#039;&#039;], which  adds chemical species to the &#039;&#039;&#039;chem&#039;&#039;&#039; array, was derived from the utility [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_util.F#L471 &#039;&#039;&#039;sum_2d_cells&#039;&#039;&#039;] by adding chemistry-specific code.&lt;br /&gt;
&lt;br /&gt;
The chemistry coupling code is compiled only when WRF-Chem is being compiled. It resides in [https://github.com/jbeezley/wrf-fire/blob4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_atm.F module_fr_sfire_atm.F], which is allowed by the SFIRE architecture to contain code both at atmosphere and fire resolution. Besides subroutine &#039;&#039;&#039;add_fire_emissions_to_chem&#039;&#039;&#039;, the code consists of subroutine [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_atm.F#L151 &#039;&#039;&#039;read_emissions_table&#039;&#039;&#039;], which reads file &#039;&#039;&#039;namelist.fire_emissions&#039;&#039;&#039;, subroutine [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_atm.F#L276 &#039;&#039;&#039;add_fire_emissions_to_chem&#039;&#039;&#039;], which  adds chemical species to the &#039;&#039;&#039;chem&#039;&#039;&#039; array, the [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_atm.F#L78 emissions tables] as module variables, subroutine [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_atm.F#L1914 &#039;&#039;&#039;fire_emission&#039;&#039;&#039;], which adds the smoke tracer, and the corresponding call statements in [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_driver.F  &#039;&#039;&#039;module_fr_sfire_driver&#039;&#039;&#039;].&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
* Kochanski A. K., Jenkins M.A., Yedinak K., Mandel J., Beezley J, and Lamb B. (2015) &#039;&#039;&#039;Toward an integrated system for fire, smoke and air quality simulations&#039;&#039;&#039;, International Journal of Wildland Fire - http://dx.doi.org/10.1071/WF14074&lt;br /&gt;
* Adam K. Kochanski, Jonathan D. Beezley, Jan Mandel, Craig B. Clements, &#039;&#039;&#039;Air pollution forecasting by coupled atmosphere-fire model WRF and SFIRE with WRF-Chem&#039;&#039;&#039;, 4th Fire Behavior and Fuels Conference, February 18-22, 2013, Raleigh, NC, 	{{arXiv|1304.7703}}, 2013&lt;br /&gt;
* Adam K. Kochanski, Jonathan D. Beezley, Jan Mandel, and Minjeong Kim, &#039;&#039;&#039;WRF fire simulation coupled with a fuel moisture model and smoke transport by WRF-Chem&#039;&#039;&#039;, [http://www.mmm.ucar.edu/events/2012_wrfusers/ 2012 WRF Users Workshop], [http://www.openwfm.org/wiki/File:WRF_workshop_2012_poster.pdf Poster 51] [http://www.mmm.ucar.edu/events/2012_wrfusers/abstracts/p51.htm abstract] [https://www.regonline.com/AttendeeDocuments/1077122/43365086/wrf2012.pdf paper] {{arXiv|1208.1059}}&lt;br /&gt;
* [http://ruc.noaa.gov/wrf/WG11/Users_guide.pdf WRF-Chem Users&#039; Guide]&lt;br /&gt;
* Georg A. Grell, Steven E. Peckham, Rainer Schmitz, Stuart A. McKeen, Gregory Frost, William C. Skamarock, Brian Eder, [http://dx.doi.org/10.1016/j.atmosenv.2005.04.027 Fully coupled “online” chemistry within the WRF model], Atmospheric Environment, Volume 39, Issue 37, December 2005, Pages 6957–6975&lt;br /&gt;
* C. Wiedinmyer, S. K. Akagi, R. J. Yokelson, L. K. Emmons, J. A. Al-Saadi, J. J. Orlando, and A. J. Soja. [http://dx.doi.org/10.5194/gmd-4-625-2011 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&lt;br /&gt;
* 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, [http://dx.doi.org/10.5194/gmd-3-43-2010 Description and evaluation of the Model for Ozone and Related chemical Tracers, version 4 (MOZART-4)], Geosci. Model Dev., 3, 43-67, 2010&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* [http://ruc.noaa.gov/wrf/WG11/ WRF-Chem] home page&lt;br /&gt;
* [https://www2.acom.ucar.edu/modeling/finn-fire-inventory-ncar Finn]  emissions model&lt;br /&gt;
* [http://www.acd.ucar.edu/wrf-chem/mozart.shtml MOZART] chemistry model&lt;/div&gt;</summary>
		<author><name>Jmandel</name></author>
	</entry>
	<entry>
		<id>https://wiki.openwfm.org/index.php?title=Smoke_and_coupling_with_WRF-Chem&amp;diff=8389</id>
		<title>Smoke and coupling with WRF-Chem</title>
		<link rel="alternate" type="text/html" href="https://wiki.openwfm.org/index.php?title=Smoke_and_coupling_with_WRF-Chem&amp;diff=8389"/>
		<updated>2025-11-22T00:09:36Z</updated>

		<summary type="html">&lt;p&gt;Jmandel: redo lead&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{users guide}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Sfire smoke.png|thumb|SFire smoke tracer in action.  See [[File:Smoke small.avi|animation]].]]&lt;br /&gt;
&lt;br /&gt;
Fire emissions can be modeled a passive smoke tracer advected by the wind field,&lt;br /&gt;
or as chemical species tracers, which also undergo chemical reactions by WRF-Chem. WRF-Chem is included in the WRF repository. Tracer variables are 3d fields of concentrations on the atmospheric grid. The variables are present in the wrfout files when activated. &lt;br /&gt;
&lt;br /&gt;
==Passive smoke tracers==&lt;br /&gt;
&lt;br /&gt;
==Compiling with chem support==&lt;br /&gt;
Compiling the code with support for WRF-Chem is similar to the [[How to compile WRF-Fire|standard procedure]].&lt;br /&gt;
You must set an environment variable &#039;&#039;&#039;WRF_CHEM&#039;&#039;&#039; and configure with the argument &#039;&#039;&#039;chem&#039;&#039;&#039; as follows.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export WRF_CHEM=1&lt;br /&gt;
./configure chem&lt;br /&gt;
./compile em_fire&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Running an idealized example==&lt;br /&gt;
An idealized example based on the hill case has been created in [https://github.com/jbeezley/wrf-fire/tree/master/wrfv2_fire/test/em_fire/chem &#039;&#039;&#039;test/em_fire/chem&#039;&#039;&#039;]&lt;br /&gt;
Note that &#039;&#039;&#039;sfc_full_init =.true.&#039;&#039;&#039; is required in the &#039;&#039;&#039;&amp;amp;fire&#039;&#039;&#039; section of &#039;&#039;&#039;namelist.input&#039;&#039;&#039; to initialize USGS landuse, which is required by  WRF-Chem.&lt;br /&gt;
The tracer selected by &#039;&#039;&#039;tracer_opt=1&#039;&#039;&#039; will appear as an atmospheric variable in the output file with the name &#039;&#039;&#039;smoke&#039;&#039;&#039;. The chemical species in the atmosphere, selected by &#039;&#039;&#039;chem_opt&#039;&#039;&#039;, will appear under their respective names, such as &#039;&#039;&#039;n2o5&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
The selection of the model in WRF-Chem is controlled by namelist variables &#039;&#039;&#039;tracer_opt&#039;&#039;&#039; in the [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/test/em_fire/chem/namelist.input#L78 &#039;&#039;&#039;&amp;amp;dynamics&#039;&#039;&#039;] section and &#039;&#039;&#039;chem_opt&#039;&#039;&#039; in the [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/test/em_fire/chem/namelist.input#L203 &#039;&#039;&#039;&amp;amp;chemistry&#039;&#039;&#039;] section of &#039;&#039;&#039;namelist.input&#039;&#039;&#039;. At the moment, the coupling supports &#039;&#039;&#039;tracer_opt = 1&#039;&#039;&#039;, which creates a single tracer called &#039;&#039;&#039;smoke&#039;&#039;&#039;, and a subset of RADM2 (&#039;&#039;&#039;chem_opt=2&#039;&#039;&#039;), MOZART (&#039;&#039;&#039;chem_opt=112&#039;&#039;&#039; or &#039;&#039;&#039;119&#039;&#039;&#039;), and GOCART (&#039;&#039;&#039;chem_opt=300&#039;&#039;&#039;) variables. &lt;br /&gt;
&lt;br /&gt;
The option &#039;&#039;&#039;tracer_opt = 2&#039;&#039;&#039; does not require WRF-Chem, and it creates passive tracers called &#039;&#039;&#039;tr17_1&#039;&#039;&#039; to &#039;&#039;&#039;tr17_8&#039;&#039;&#039;. Emissions \are inserted proportionally to the fuel burned according to the emission factors in file  &#039;&#039;&#039;namelist.fire_emissions&#039;&#039;&#039;. Properties of the tracers  &#039;&#039;&#039;tr17_1&#039;&#039;&#039; to &#039;&#039;&#039;tr17_4&#039;&#039;&#039; are identical, but the others  slightly differ. &lt;br /&gt;
&lt;br /&gt;
To use the passive tracers in the code built with WRF-Chem, specify &#039;&#039;&#039;tracer_opt=2&#039;&#039;&#039; and &#039;&#039;&#039;chem_opt=0&#039;&#039;&#039; in &#039;&#039;&#039;namelist.input&#039;&#039;&#039;. The tracers work slightly differently in code built with and without WRF-Chem, as described in file &#039;&#039;&#039;chem/module_input_tracer.F&#039;&#039;&#039;. A sample emission factors table for this usage is available as &#039;&#039;&#039;test/em_fire/chem/namelist.fire_emissions.tracers&#039;&#039;&#039;. It can be used in ideal as well as real runs. Different rows in the table can be used to track separate species, e.g., pm10 and pm25, with different emission factors. &lt;br /&gt;
&lt;br /&gt;
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 (&#039;&#039;&#039;ppmv&#039;&#039;&#039;), so the amounts of the inserted species are scaled 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 &#039;&#039;&#039;GRNHFX&#039;&#039;&#039; as a proxy. The emissions table contains the amounts of emissions fuel burned in &#039;&#039;&#039;g/kg&#039;&#039;&#039; or &#039;&#039;&#039;mol/kg&#039;&#039;&#039;.  The emissions tables are specified in file &#039;&#039;&#039;namelist.fire_emissions&#039;&#039;&#039;. This file contains a line for each species like&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 no2=3.2,3.2,3.2,1.4,1.4,1.4,1.4,2.7,2.7,2.7,3,3,3,&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
with emissions (g/kg fuel or mol/kg fuel) for each of the fuel categories used (by default, the 13 Anderson&#039;s categories).&lt;br /&gt;
&lt;br /&gt;
There are two additional variables in &#039;&#039;&#039;namelist.fire_emissions&#039;&#039;&#039;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
compatible_chem_opt=112,119&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
is a list of &#039;&#039;&#039;chem_opt&#039;&#039;&#039; 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  &#039;&#039;&#039;chem_opt&#039;&#039;&#039;.  If it does, the results can be upredictable.&lt;br /&gt;
The variable&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
printsums=1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
will enable printing of the totals of each emissions species at the end of every time step.&lt;br /&gt;
&lt;br /&gt;
Several prototype emissions tables are provided in &#039;&#039;&#039;test/em_fire/chem&#039;&#039;&#039;. You need to copy or link one of the emissions tables to &#039;&#039;&#039;namelist.fire_emissions&#039;&#039;&#039; in your run directory, such as&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -s namelist.fire_emissions.RADM2 namelist.fire_emissions&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
and set matching &#039;&#039;&#039;chem_opt&#039;&#039;&#039; in &#039;&#039;&#039;namelist.input&#039;&#039;&#039;, here &#039;&#039;&#039;chem_opt=2&#039;&#039;&#039;. See the next section for the available emissions tables. Users can also add their own.&lt;br /&gt;
&lt;br /&gt;
==Chemical species==&lt;br /&gt;
&lt;br /&gt;
The chemical model selected by the &#039;&#039;&#039;chem_opt&#039;&#039;&#039; flag produces concentrations on 3D grids in every &#039;&#039;&#039;wrfout&#039;&#039;&#039; file produced, for a set of variables defined in the &#039;&#039;&#039;Chem scalars&#039;&#039;&#039; part of the file  [https://github.com/openwfm/WRF-SFIRE/blob/262829290d98e419b6839893ecb1a5d36ed4b969/Registry/registry.chem#L1567 &#039;&#039;&#039;Registry/registry.chem&#039;&#039;&#039;]. The first section of the list contains the chemical species common to all models, later sections list species added for specific models. For more detailed information about the species including dusts and aerosols in specific WRF-Chem models, see the [https://ruc.noaa.gov/wrf/wrf-chem/model_info.htm WRF-Chem model documention] and the links to the individual models at the emissions tables below.&lt;br /&gt;
&lt;br /&gt;
The quantities of the chemical species are in &#039;&#039;&#039;ppmv&#039;&#039;&#039;, i.e., 1e6*mol/mol of dry air.&lt;br /&gt;
&lt;br /&gt;
The frequency of writing the outputs into the wrfout files is specified by the user in the &#039;&#039;&#039;history_interval&#039;&#039;&#039; flags in the WRF &#039;&#039;&#039;namelist.input&#039;&#039;&#039; file. It can be as often as once every minute, but usually much less. &lt;br /&gt;
&lt;br /&gt;
SFIRE adds the fire emissions to a subset of the chemical species as specified in the emissions table. It is up to the chemical model to produce other species from them. Note that the parts of the registry.chem file using the word &amp;quot;emissions&amp;quot; are for other emission schemes and not relevant here. SFIRE adds fire emissions directly to the lowest layer of the 3D Chem fiels during the fire simulation.&lt;br /&gt;
&lt;br /&gt;
There are currently three emissions tables available:&lt;br /&gt;
* [https://github.com/openwfm/WRF-SFIRE/blob/master/test/em_fire/chem/namelist.fire_emissions.RADM2 namelist.fire_emissions.RADM2] for the [http://ruc.noaa.gov/wrf/WG11/radm2.htm RADM2] model&lt;br /&gt;
* [https://github.com/openwfm/WRF-SFIRE/blob/master/test/em_fire/chem/namelist.fire_emissions.MOZART namelist.fire_emissions.MOZART] for the [http://www.acd.ucar.edu/wrf-chem/mozart.shtml MOZART] model&lt;br /&gt;
* [https://github.com/openwfm/WRF-SFIRE/blob/master/test/em_fire/chem/namelist.fire_emissions.GOCART namelist.fire_emissions.GOCART] for the [https://tropo.gsfc.nasa.gov/gocart GOCART] model&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
WRF-Chem contains a multitude of arrays representing concentrations of chemical species. The typical&lt;br /&gt;
method of injecting data into the simulation involves generating emission input data files from standard&lt;br /&gt;
sources.  These sources are read into the code using auxiliary input streams and interpolated into&lt;br /&gt;
the species arrays in the [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/chem/module_emissions_anthropogenics.F emissions] module.  For the coupling with SFIRE, turning off file&lt;br /&gt;
input in the namelist seems to initialize the emission arrays to zero.  This eliminates the need to generate&lt;br /&gt;
useless emission files. &lt;br /&gt;
&lt;br /&gt;
WRF-Chem stores its state in arrays &#039;&#039;&#039;chem&#039;&#039;&#039; and   &#039;&#039;&#039;tracer&#039;&#039;&#039;.  These arrays are four dimensional indexed like &#039;&#039;&#039;(x,z,y,s)&#039;&#039;&#039;, where s is the chemical&lt;br /&gt;
species. The domain structure contains scalars such as &#039;&#039;&#039;p_smoke&#039;&#039;&#039; (into the &#039;&#039;&#039;tracer&#039;&#039;&#039; array) and &#039;&#039;&#039;p_nh4&#039;&#039;&#039; (into the &#039;&#039;&#039;chem&#039;&#039;&#039; array) that give the species index for&lt;br /&gt;
each type.  The species selections are specific to different chemistry options (&#039;&#039;&#039;chem_opt&#039;&#039;&#039;) &lt;br /&gt;
from the registry; however, even unused species have their index set to 1. The dynamics section of the namelist has an option for &#039;&#039;&#039;tracer_opt&#039;&#039;&#039;.  This&lt;br /&gt;
controls what tracers are generated for Chem.  &lt;br /&gt;
&lt;br /&gt;
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 [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_atm.F#L276 &#039;&#039;&#039;add_fire_emissions_to_chem&#039;&#039;&#039;], which  adds chemical species to the &#039;&#039;&#039;chem&#039;&#039;&#039; array, was derived from the utility [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_util.F#L471 &#039;&#039;&#039;sum_2d_cells&#039;&#039;&#039;] by adding chemistry-specific code.&lt;br /&gt;
&lt;br /&gt;
The chemistry coupling code is compiled only when WRF-Chem is being compiled. It resides in [https://github.com/jbeezley/wrf-fire/blob4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_atm.F module_fr_sfire_atm.F], which is allowed by the SFIRE architecture to contain code both at atmosphere and fire resolution. Besides subroutine &#039;&#039;&#039;add_fire_emissions_to_chem&#039;&#039;&#039;, the code consists of subroutine [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_atm.F#L151 &#039;&#039;&#039;read_emissions_table&#039;&#039;&#039;], which reads file &#039;&#039;&#039;namelist.fire_emissions&#039;&#039;&#039;, subroutine [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_atm.F#L276 &#039;&#039;&#039;add_fire_emissions_to_chem&#039;&#039;&#039;], which  adds chemical species to the &#039;&#039;&#039;chem&#039;&#039;&#039; array, the [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_atm.F#L78 emissions tables] as module variables, subroutine [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_atm.F#L1914 &#039;&#039;&#039;fire_emission&#039;&#039;&#039;], which adds the smoke tracer, and the corresponding call statements in [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_driver.F  &#039;&#039;&#039;module_fr_sfire_driver&#039;&#039;&#039;].&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
* Kochanski A. K., Jenkins M.A., Yedinak K., Mandel J., Beezley J, and Lamb B. (2015) &#039;&#039;&#039;Toward an integrated system for fire, smoke and air quality simulations&#039;&#039;&#039;, International Journal of Wildland Fire - http://dx.doi.org/10.1071/WF14074&lt;br /&gt;
* Adam K. Kochanski, Jonathan D. Beezley, Jan Mandel, Craig B. Clements, &#039;&#039;&#039;Air pollution forecasting by coupled atmosphere-fire model WRF and SFIRE with WRF-Chem&#039;&#039;&#039;, 4th Fire Behavior and Fuels Conference, February 18-22, 2013, Raleigh, NC, 	{{arXiv|1304.7703}}, 2013&lt;br /&gt;
* Adam K. Kochanski, Jonathan D. Beezley, Jan Mandel, and Minjeong Kim, &#039;&#039;&#039;WRF fire simulation coupled with a fuel moisture model and smoke transport by WRF-Chem&#039;&#039;&#039;, [http://www.mmm.ucar.edu/events/2012_wrfusers/ 2012 WRF Users Workshop], [http://www.openwfm.org/wiki/File:WRF_workshop_2012_poster.pdf Poster 51] [http://www.mmm.ucar.edu/events/2012_wrfusers/abstracts/p51.htm abstract] [https://www.regonline.com/AttendeeDocuments/1077122/43365086/wrf2012.pdf paper] {{arXiv|1208.1059}}&lt;br /&gt;
* [http://ruc.noaa.gov/wrf/WG11/Users_guide.pdf WRF-Chem Users&#039; Guide]&lt;br /&gt;
* Georg A. Grell, Steven E. Peckham, Rainer Schmitz, Stuart A. McKeen, Gregory Frost, William C. Skamarock, Brian Eder, [http://dx.doi.org/10.1016/j.atmosenv.2005.04.027 Fully coupled “online” chemistry within the WRF model], Atmospheric Environment, Volume 39, Issue 37, December 2005, Pages 6957–6975&lt;br /&gt;
* C. Wiedinmyer, S. K. Akagi, R. J. Yokelson, L. K. Emmons, J. A. Al-Saadi, J. J. Orlando, and A. J. Soja. [http://dx.doi.org/10.5194/gmd-4-625-2011 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&lt;br /&gt;
* 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, [http://dx.doi.org/10.5194/gmd-3-43-2010 Description and evaluation of the Model for Ozone and Related chemical Tracers, version 4 (MOZART-4)], Geosci. Model Dev., 3, 43-67, 2010&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* [http://ruc.noaa.gov/wrf/WG11/ WRF-Chem] home page&lt;br /&gt;
* [https://www2.acom.ucar.edu/modeling/finn-fire-inventory-ncar Finn]  emissions model&lt;br /&gt;
* [http://www.acd.ucar.edu/wrf-chem/mozart.shtml MOZART] chemistry model&lt;/div&gt;</summary>
		<author><name>Jmandel</name></author>
	</entry>
	<entry>
		<id>https://wiki.openwfm.org/index.php?title=WRF-SFIRE_user_guide&amp;diff=8388</id>
		<title>WRF-SFIRE user guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.openwfm.org/index.php?title=WRF-SFIRE_user_guide&amp;diff=8388"/>
		<updated>2025-11-21T23:53:27Z</updated>

		<summary type="html">&lt;p&gt;Jmandel: /* Coupling with fuel moisture and smoke */ Smoke and coupling with WRF-Chem&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:WRF-Fire|User&#039;s guide]]&lt;br /&gt;
[[Category:WRF-SFIRE users guide]]&lt;br /&gt;
:&#039;&#039;This guide applies to WRF-SFIRE, available at https://github.com/openwfm/WRF-SFIRE. [[Fire_code_in_WRF_release|WRF-Fire]] from the WRF repository https://github.com/wrf-model/WRF is based on a limited version of this software from 2010, and it has evolved separately since then. This guide changes with the software and it complements the technical description in J. Mandel, J. D. Beezley, and A. K. Kochanski, &#039;&#039;&#039;Coupled atmosphere-wildland fire modeling with WRF 3.3 and SFIRE 2011&#039;&#039;&#039;, Geoscientific Model Development (GMD) 4, 591-610, 2011, {{doi|10.5194/gmd-4-591-2011}} and J. Mandel, S. Amram, J. D. Beezley, G. Kelman, A. K. Kochanski, V. Y. Kondratenko, B. H. Lynn, B. Regev, M. Vejmelka, 2014, &#039;&#039;&#039;Recent advances and applications of WRF–SFIRE&#039;&#039;&#039;, Natural Hazards and Earth System Science, 14, 2829-2845, 2014, {{doi|10.5194/nhess-14-2829-2014}}.&#039;&#039;&lt;br /&gt;
==Overview==&lt;br /&gt;
# [[WRF-SFIRE]]&lt;br /&gt;
&lt;br /&gt;
==Getting started==&lt;br /&gt;
# [[How to get WRF-Fire|Downloading the software]]&lt;br /&gt;
# [[How to run WRF-Fire|Building the software and running an ideal case]]&lt;br /&gt;
# [[How to set up the WRFx system|Setting up the automated simulation system WRFx]]&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
# [[namelist.input]]&lt;br /&gt;
# [[namelist.fire]]&lt;br /&gt;
# [[Vertical wind interpolation]]&lt;br /&gt;
# [[WRF-Fire ignition|Ignition]]&lt;br /&gt;
&lt;br /&gt;
==Running a real case==&lt;br /&gt;
#[[Running WRF-SFIRE with real data in the WRFx system]]&lt;br /&gt;
#[[How to convert data for Geogrid|Converting fuel data]]&lt;br /&gt;
#[[WPS with GeoTIFF support|Using GeoTIFF files]]&lt;br /&gt;
&lt;br /&gt;
==Coupling with fuel moisture and smoke==&lt;br /&gt;
# [[Fuel moisture model]]&lt;br /&gt;
# [[Assimilation of RAWS fuel moisture data]]&lt;br /&gt;
# [[Smoke and coupling with WRF-Chem]]&lt;br /&gt;
&lt;br /&gt;
==Data assimilation and ignition from a perimeter==&lt;br /&gt;
# [[Fire replay and cycling]]&lt;br /&gt;
&lt;br /&gt;
==Standalone fire model==&lt;br /&gt;
#[[How_to_run_the_standalone_fire_model_in_WRF-Fire|Running the standalone fire model]]&lt;br /&gt;
&lt;br /&gt;
==Visualisation==&lt;br /&gt;
#[[How to visualize WRF-Fire output in VAPOR|VAPOR]]&lt;br /&gt;
#[[Visualization in Google Earth|Google Earth]]&lt;br /&gt;
#[[How to visualize WRF-Fire output in Mayavi2|Mayavi2]]&lt;br /&gt;
#[[How to visualize WRF-Fire output in VisTrails|VisTrails]]&lt;br /&gt;
#[[How to visualize WRF-Fire output in Matlab|Matlab]]&lt;br /&gt;
#[[Visualizations links|Examples and case studies]]&lt;br /&gt;
&lt;br /&gt;
==Diagnostics==&lt;br /&gt;
#[[How to visualize vertical profiles from WRF in Matlab|Wind profiles]]&lt;br /&gt;
#[[How to diagnose fuel properties in WRF-SFIRE|Fuel properties]]&lt;br /&gt;
#[[How to load WRF files in Matlab|Loading WRF files into Matlab]]&lt;br /&gt;
#[[How to interpret WRF variables|WRF variables]]&lt;br /&gt;
#[[SFIRE variables]]&lt;br /&gt;
&lt;br /&gt;
==Publications==&lt;br /&gt;
# [[Publications#WRF-Fire description|Model description]]&lt;br /&gt;
# [[Publications#Other WRF-Fire publications|Other publications]]&lt;br /&gt;
&lt;br /&gt;
==Acknowledgements==&lt;br /&gt;
This work was partially supported by NSF grants including ATM-0835579, DMS-1216481, and ICER-1664175.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[WRF-Fire development notes]]&lt;br /&gt;
* [[Fire code in WRF release]]s&lt;br /&gt;
* [[Publications]]&lt;/div&gt;</summary>
		<author><name>Jmandel</name></author>
	</entry>
	<entry>
		<id>https://wiki.openwfm.org/index.php?title=Talk:Coupling_with_WRF-Chem&amp;diff=8387</id>
		<title>Talk:Coupling with WRF-Chem</title>
		<link rel="alternate" type="text/html" href="https://wiki.openwfm.org/index.php?title=Talk:Coupling_with_WRF-Chem&amp;diff=8387"/>
		<updated>2025-11-21T23:51:48Z</updated>

		<summary type="html">&lt;p&gt;Jmandel: Jmandel moved page Talk:Coupling with WRF-Chem to Talk:Smoke and coupling with WRF-Chem: Reflect better content of the page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Talk:Smoke and coupling with WRF-Chem]]&lt;/div&gt;</summary>
		<author><name>Jmandel</name></author>
	</entry>
	<entry>
		<id>https://wiki.openwfm.org/index.php?title=Talk:Smoke_and_coupling_with_WRF-Chem&amp;diff=8386</id>
		<title>Talk:Smoke and coupling with WRF-Chem</title>
		<link rel="alternate" type="text/html" href="https://wiki.openwfm.org/index.php?title=Talk:Smoke_and_coupling_with_WRF-Chem&amp;diff=8386"/>
		<updated>2025-11-21T23:51:48Z</updated>

		<summary type="html">&lt;p&gt;Jmandel: Jmandel moved page Talk:Coupling with WRF-Chem to Talk:Smoke and coupling with WRF-Chem: Reflect better content of the page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Initial development notes==&lt;br /&gt;
As of {{WRF-Fire-commit|e7b52ab1baef2565ae1743a25bc1ed7f7f2fc109|April 21, 2012}},&lt;br /&gt;
the tracer is simply copied from the heat flux at the surface on the atmospheric mesh (&amp;lt;tt&amp;gt;GRNHFX&amp;lt;/tt&amp;gt;).&lt;br /&gt;
A call to &amp;lt;tt&amp;gt;fire_emission&amp;lt;/tt&amp;gt; has been added to &amp;lt;tt&amp;gt;module_fr_sfire_driver_wrf.F&amp;lt;/tt&amp;gt; just after&lt;br /&gt;
calculation of heat flux tendencies.  This subroutine has been added to the fire atmospheric module&lt;br /&gt;
and is preprocessed out of the source when WRF-Chem is not being compiled.&lt;br /&gt;
&lt;br /&gt;
WRF-Chem contains a multitude of arrays representing concentrations of chemical species. The typical&lt;br /&gt;
method of injecting data into the simulation involves generating emission input data files from standard&lt;br /&gt;
sources.  These sources are read into the code using auxiliary input streams and interpolated into&lt;br /&gt;
the species arrays in the &amp;lt;tt&amp;gt;emissions&amp;lt;/tt&amp;gt; module.  For the coupling with SFire, turning off file&lt;br /&gt;
input in the namelist seems to initialize the emission arrays to zero.  This eliminates the need to generate&lt;br /&gt;
useless emission files.&lt;br /&gt;
&lt;br /&gt;
WRF-Chem stores its state in several large arrays called &amp;lt;tt&amp;gt;*_emis&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;chem&amp;lt;/tt&amp;gt;, and &amp;lt;tt&amp;gt;tracer&amp;lt;/tt&amp;gt;.  These arrays are four dimensional indexed like (x,z,y,s), where s is the chemical&lt;br /&gt;
species. The &amp;lt;tt&amp;gt;chem&amp;lt;/tt&amp;gt;&lt;br /&gt;
and &amp;lt;tt&amp;gt;tracer&amp;lt;/tt&amp;gt; arrays are located on the standard atmospheric grid, while the &amp;lt;tt&amp;gt;*_emis&amp;lt;/tt&amp;gt; arrays&lt;br /&gt;
have an alternate vertical grid indexed to &amp;lt;tt&amp;gt;config%kemit&amp;lt;/tt&amp;gt;.  &lt;br /&gt;
An internal table keeps track of where each species is stored in these arrays.  The domain structure&lt;br /&gt;
contains scalars such as &amp;lt;tt&amp;gt;p_smoke&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;p_e_so4&amp;lt;/tt&amp;gt; that give the species index for&lt;br /&gt;
each type.  The species quantities are specific to different chemistry options (&amp;lt;tt&amp;gt;chem_opt&amp;lt;/tt&amp;gt;) &lt;br /&gt;
from the registry.  We should eventually test that a compatible namelist option has been chosen to &lt;br /&gt;
avoid errors.  The dynamics section of the namelist has an option for &amp;lt;tt&amp;gt;tracer_opt&amp;lt;/tt&amp;gt;.  This&lt;br /&gt;
controls what tracers are generated for Chem.  For example, &amp;lt;tt&amp;gt;trace_opt = 1&amp;lt;/tt&amp;gt; creates a single&lt;br /&gt;
tracer called &amp;lt;tt&amp;gt;smoke&amp;lt;/tt&amp;gt;, see the registry for package definitions.  &lt;br /&gt;
&lt;br /&gt;
For the passive tracer scheme (&amp;lt;tt&amp;gt;chem_opt = 14&amp;lt;/tt&amp;gt;), it appears to be sufficient just to add&lt;br /&gt;
the fire emission directly into the tracer array.  If we want to fully utilize WRF-Chem in the future,&lt;br /&gt;
we may need to do something more complicated.  The [http://ruc.noaa.gov/wrf/WG11/Users_guide.pdf User&#039;s guide] mentions that there is code to handle wildfire emissions data from MODIS satellites. This may be&lt;br /&gt;
helpful either directly or as a guide in how to inject the chemical species from the SFire model.&lt;br /&gt;
&lt;br /&gt;
According to some comments in Registry.EM, basic tracer support exists in WRF without Chem.  It is possible&lt;br /&gt;
we may be able to add smoke the WRF even without compile for Chem.  I have not explored this yet, though.&lt;br /&gt;
&lt;br /&gt;
From Jon&#039;s text April 21 2012. [[User:Jmandel|Jmandel]] 16:34, 23 December 2012 (UTC)&lt;br /&gt;
&lt;br /&gt;
==ch4 and h2 nuked==&lt;br /&gt;
Even if we set ch4 and h2 in  they get nuked in WRF-Chem in subroutine [https://github.com/jbeezley/wrf-fire/blob/e9051dc5ba0c59e1d7e4d59b47965d891c090142/wrfv2_fire/chem/module_input_chem_data.F#L3540 mozcart_lbc_set] called from [https://github.com/jbeezley/wrf-fire/blob/e9051dc5ba0c59e1d7e4d59b47965d891c090142/wrfv2_fire/chem/chem_driver.F#L885 chem_driver] because [https://github.com/jbeezley/wrf-fire/blob/e9051dc5ba0c59e1d7e4d59b47965d891c090142/wrfv2_fire/chem/chem_driver.F#L799 emiss_inpt_opt&amp;gt;0]. But the [https://github.com/jbeezley/wrf-fire/blob/e9051dc5ba0c59e1d7e4d59b47965d891c090142/wrfv2_fire/Registry/registry.chem#L2393 default] is emiss_inpt_opt=1. This selection also calls emissions_driver, which seems unnecessary because we provide our own emissions. Specify emiss_inp_opt=0 in namelist.input. Not sure about call to [https://github.com/jbeezley/wrf-fire/blob/e9051dc5ba0c59e1d7e4d59b47965d891c090142/wrfv2_fire/chem/module_ltng_cpm.F#L211 adjust_ktop] which no longer gets called. &lt;br /&gt;
[[User:Jmandel|Jmandel]] ([[User talk:Jmandel|talk]]) 00:02, 27 April 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
Call mozcart_lbc_set is in few other places in [https://github.com/jbeezley/wrf-fire/blob/e9051dc5ba0c59e1d7e4d59b47965d891c090142/wrfv2_fire/chem/chem_driver.F  chem/chem_driver.F], added mozcart_lbc_set_onoff to the namelist.&lt;br /&gt;
[[User:Jmandel|Jmandel]] ([[User talk:Jmandel|talk]]) 03:08, 27 April 2014 (UTC)&lt;/div&gt;</summary>
		<author><name>Jmandel</name></author>
	</entry>
	<entry>
		<id>https://wiki.openwfm.org/index.php?title=Coupling_with_WRF-Chem&amp;diff=8385</id>
		<title>Coupling with WRF-Chem</title>
		<link rel="alternate" type="text/html" href="https://wiki.openwfm.org/index.php?title=Coupling_with_WRF-Chem&amp;diff=8385"/>
		<updated>2025-11-21T23:51:48Z</updated>

		<summary type="html">&lt;p&gt;Jmandel: Jmandel moved page Coupling with WRF-Chem to Smoke and coupling with WRF-Chem: Reflect better content of the page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Smoke and coupling with WRF-Chem]]&lt;/div&gt;</summary>
		<author><name>Jmandel</name></author>
	</entry>
	<entry>
		<id>https://wiki.openwfm.org/index.php?title=Smoke_and_coupling_with_WRF-Chem&amp;diff=8384</id>
		<title>Smoke and coupling with WRF-Chem</title>
		<link rel="alternate" type="text/html" href="https://wiki.openwfm.org/index.php?title=Smoke_and_coupling_with_WRF-Chem&amp;diff=8384"/>
		<updated>2025-11-21T23:51:47Z</updated>

		<summary type="html">&lt;p&gt;Jmandel: Jmandel moved page Coupling with WRF-Chem to Smoke and coupling with WRF-Chem: Reflect better content of the page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{users guide}}&lt;br /&gt;
&lt;br /&gt;
As of WRF 4, WRF-Chem is now included in the WRF repository. Fire emissions can now input into WRF-Chem as chemical species or a simple smoke tracer. [[File:Sfire smoke.png|thumb|SFire smoke tracer in action.  See [[File:Smoke small.avi|animation]].]]&lt;br /&gt;
&lt;br /&gt;
==Compiling with chem support==&lt;br /&gt;
Compiling the code with support for WRF-Chem is similar to the [[How to compile WRF-Fire|standard procedure]].&lt;br /&gt;
You must set an environment variable &#039;&#039;&#039;WRF_CHEM&#039;&#039;&#039; and configure with the argument &#039;&#039;&#039;chem&#039;&#039;&#039; as follows.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export WRF_CHEM=1&lt;br /&gt;
./configure chem&lt;br /&gt;
./compile em_fire&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Running an idealized example==&lt;br /&gt;
An idealized example based on the hill case has been created in [https://github.com/jbeezley/wrf-fire/tree/master/wrfv2_fire/test/em_fire/chem &#039;&#039;&#039;test/em_fire/chem&#039;&#039;&#039;]&lt;br /&gt;
Note that &#039;&#039;&#039;sfc_full_init =.true.&#039;&#039;&#039; is required in the &#039;&#039;&#039;&amp;amp;fire&#039;&#039;&#039; section of &#039;&#039;&#039;namelist.input&#039;&#039;&#039; to initialize USGS landuse, which is required by  WRF-Chem.&lt;br /&gt;
The tracer selected by &#039;&#039;&#039;tracer_opt=1&#039;&#039;&#039; will appear as an atmospheric variable in the output file with the name &#039;&#039;&#039;smoke&#039;&#039;&#039;. The chemical species in the atmosphere, selected by &#039;&#039;&#039;chem_opt&#039;&#039;&#039;, will appear under their respective names, such as &#039;&#039;&#039;n2o5&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
The selection of the model in WRF-Chem is controlled by namelist variables &#039;&#039;&#039;tracer_opt&#039;&#039;&#039; in the [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/test/em_fire/chem/namelist.input#L78 &#039;&#039;&#039;&amp;amp;dynamics&#039;&#039;&#039;] section and &#039;&#039;&#039;chem_opt&#039;&#039;&#039; in the [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/test/em_fire/chem/namelist.input#L203 &#039;&#039;&#039;&amp;amp;chemistry&#039;&#039;&#039;] section of &#039;&#039;&#039;namelist.input&#039;&#039;&#039;. At the moment, the coupling supports &#039;&#039;&#039;tracer_opt = 1&#039;&#039;&#039;, which creates a single tracer called &#039;&#039;&#039;smoke&#039;&#039;&#039;, and a subset of RADM2 (&#039;&#039;&#039;chem_opt=2&#039;&#039;&#039;), MOZART (&#039;&#039;&#039;chem_opt=112&#039;&#039;&#039; or &#039;&#039;&#039;119&#039;&#039;&#039;), and GOCART (&#039;&#039;&#039;chem_opt=300&#039;&#039;&#039;) variables. &lt;br /&gt;
&lt;br /&gt;
The option &#039;&#039;&#039;tracer_opt = 2&#039;&#039;&#039; does not require WRF-Chem, and it creates passive tracers called &#039;&#039;&#039;tr17_1&#039;&#039;&#039; to &#039;&#039;&#039;tr17_8&#039;&#039;&#039;. Emissions \are inserted proportionally to the fuel burned according to the emission factors in file  &#039;&#039;&#039;namelist.fire_emissions&#039;&#039;&#039;. Properties of the tracers  &#039;&#039;&#039;tr17_1&#039;&#039;&#039; to &#039;&#039;&#039;tr17_4&#039;&#039;&#039; are identical, but the others  slightly differ. &lt;br /&gt;
&lt;br /&gt;
To use the passive tracers in the code built with WRF-Chem, specify &#039;&#039;&#039;tracer_opt=2&#039;&#039;&#039; and &#039;&#039;&#039;chem_opt=0&#039;&#039;&#039; in &#039;&#039;&#039;namelist.input&#039;&#039;&#039;. The tracers work slightly differently in code built with and without WRF-Chem, as described in file &#039;&#039;&#039;chem/module_input_tracer.F&#039;&#039;&#039;. A sample emission factors table for this usage is available as &#039;&#039;&#039;test/em_fire/chem/namelist.fire_emissions.tracers&#039;&#039;&#039;. It can be used in ideal as well as real runs. Different rows in the table can be used to track separate species, e.g., pm10 and pm25, with different emission factors. &lt;br /&gt;
&lt;br /&gt;
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 (&#039;&#039;&#039;ppmv&#039;&#039;&#039;), so the amounts of the inserted species are scaled 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 &#039;&#039;&#039;GRNHFX&#039;&#039;&#039; as a proxy. The emissions table contains the amounts of emissions fuel burned in &#039;&#039;&#039;g/kg&#039;&#039;&#039; or &#039;&#039;&#039;mol/kg&#039;&#039;&#039;.  The emissions tables are specified in file &#039;&#039;&#039;namelist.fire_emissions&#039;&#039;&#039;. This file contains a line for each species like&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 no2=3.2,3.2,3.2,1.4,1.4,1.4,1.4,2.7,2.7,2.7,3,3,3,&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
with emissions (g/kg fuel or mol/kg fuel) for each of the fuel categories used (by default, the 13 Anderson&#039;s categories).&lt;br /&gt;
&lt;br /&gt;
There are two additional variables in &#039;&#039;&#039;namelist.fire_emissions&#039;&#039;&#039;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
compatible_chem_opt=112,119&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
is a list of &#039;&#039;&#039;chem_opt&#039;&#039;&#039; 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  &#039;&#039;&#039;chem_opt&#039;&#039;&#039;.  If it does, the results can be upredictable.&lt;br /&gt;
The variable&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
printsums=1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
will enable printing of the totals of each emissions species at the end of every time step.&lt;br /&gt;
&lt;br /&gt;
Several prototype emissions tables are provided in &#039;&#039;&#039;test/em_fire/chem&#039;&#039;&#039;. You need to copy or link one of the emissions tables to &#039;&#039;&#039;namelist.fire_emissions&#039;&#039;&#039; in your run directory, such as&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ln -s namelist.fire_emissions.RADM2 namelist.fire_emissions&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
and set matching &#039;&#039;&#039;chem_opt&#039;&#039;&#039; in &#039;&#039;&#039;namelist.input&#039;&#039;&#039;, here &#039;&#039;&#039;chem_opt=2&#039;&#039;&#039;. See the next section for the available emissions tables. Users can also add their own.&lt;br /&gt;
&lt;br /&gt;
==Chemical species==&lt;br /&gt;
&lt;br /&gt;
The chemical model selected by the &#039;&#039;&#039;chem_opt&#039;&#039;&#039; flag produces concentrations on 3D grids in every &#039;&#039;&#039;wrfout&#039;&#039;&#039; file produced, for a set of variables defined in the &#039;&#039;&#039;Chem scalars&#039;&#039;&#039; part of the file  [https://github.com/openwfm/WRF-SFIRE/blob/262829290d98e419b6839893ecb1a5d36ed4b969/Registry/registry.chem#L1567 &#039;&#039;&#039;Registry/registry.chem&#039;&#039;&#039;]. The first section of the list contains the chemical species common to all models, later sections list species added for specific models. For more detailed information about the species including dusts and aerosols in specific WRF-Chem models, see the [https://ruc.noaa.gov/wrf/wrf-chem/model_info.htm WRF-Chem model documention] and the links to the individual models at the emissions tables below.&lt;br /&gt;
&lt;br /&gt;
The quantities of the chemical species are in &#039;&#039;&#039;ppmv&#039;&#039;&#039;, i.e., 1e6*mol/mol of dry air.&lt;br /&gt;
&lt;br /&gt;
The frequency of writing the outputs into the wrfout files is specified by the user in the &#039;&#039;&#039;history_interval&#039;&#039;&#039; flags in the WRF &#039;&#039;&#039;namelist.input&#039;&#039;&#039; file. It can be as often as once every minute, but usually much less. &lt;br /&gt;
&lt;br /&gt;
SFIRE adds the fire emissions to a subset of the chemical species as specified in the emissions table. It is up to the chemical model to produce other species from them. Note that the parts of the registry.chem file using the word &amp;quot;emissions&amp;quot; are for other emission schemes and not relevant here. SFIRE adds fire emissions directly to the lowest layer of the 3D Chem fiels during the fire simulation.&lt;br /&gt;
&lt;br /&gt;
There are currently three emissions tables available:&lt;br /&gt;
* [https://github.com/openwfm/WRF-SFIRE/blob/master/test/em_fire/chem/namelist.fire_emissions.RADM2 namelist.fire_emissions.RADM2] for the [http://ruc.noaa.gov/wrf/WG11/radm2.htm RADM2] model&lt;br /&gt;
* [https://github.com/openwfm/WRF-SFIRE/blob/master/test/em_fire/chem/namelist.fire_emissions.MOZART namelist.fire_emissions.MOZART] for the [http://www.acd.ucar.edu/wrf-chem/mozart.shtml MOZART] model&lt;br /&gt;
* [https://github.com/openwfm/WRF-SFIRE/blob/master/test/em_fire/chem/namelist.fire_emissions.GOCART namelist.fire_emissions.GOCART] for the [https://tropo.gsfc.nasa.gov/gocart GOCART] model&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
WRF-Chem contains a multitude of arrays representing concentrations of chemical species. The typical&lt;br /&gt;
method of injecting data into the simulation involves generating emission input data files from standard&lt;br /&gt;
sources.  These sources are read into the code using auxiliary input streams and interpolated into&lt;br /&gt;
the species arrays in the [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/chem/module_emissions_anthropogenics.F emissions] module.  For the coupling with SFIRE, turning off file&lt;br /&gt;
input in the namelist seems to initialize the emission arrays to zero.  This eliminates the need to generate&lt;br /&gt;
useless emission files. &lt;br /&gt;
&lt;br /&gt;
WRF-Chem stores its state in arrays &#039;&#039;&#039;chem&#039;&#039;&#039; and   &#039;&#039;&#039;tracer&#039;&#039;&#039;.  These arrays are four dimensional indexed like &#039;&#039;&#039;(x,z,y,s)&#039;&#039;&#039;, where s is the chemical&lt;br /&gt;
species. The domain structure contains scalars such as &#039;&#039;&#039;p_smoke&#039;&#039;&#039; (into the &#039;&#039;&#039;tracer&#039;&#039;&#039; array) and &#039;&#039;&#039;p_nh4&#039;&#039;&#039; (into the &#039;&#039;&#039;chem&#039;&#039;&#039; array) that give the species index for&lt;br /&gt;
each type.  The species selections are specific to different chemistry options (&#039;&#039;&#039;chem_opt&#039;&#039;&#039;) &lt;br /&gt;
from the registry; however, even unused species have their index set to 1. The dynamics section of the namelist has an option for &#039;&#039;&#039;tracer_opt&#039;&#039;&#039;.  This&lt;br /&gt;
controls what tracers are generated for Chem.  &lt;br /&gt;
&lt;br /&gt;
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 [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_atm.F#L276 &#039;&#039;&#039;add_fire_emissions_to_chem&#039;&#039;&#039;], which  adds chemical species to the &#039;&#039;&#039;chem&#039;&#039;&#039; array, was derived from the utility [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_util.F#L471 &#039;&#039;&#039;sum_2d_cells&#039;&#039;&#039;] by adding chemistry-specific code.&lt;br /&gt;
&lt;br /&gt;
The chemistry coupling code is compiled only when WRF-Chem is being compiled. It resides in [https://github.com/jbeezley/wrf-fire/blob4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_atm.F module_fr_sfire_atm.F], which is allowed by the SFIRE architecture to contain code both at atmosphere and fire resolution. Besides subroutine &#039;&#039;&#039;add_fire_emissions_to_chem&#039;&#039;&#039;, the code consists of subroutine [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_atm.F#L151 &#039;&#039;&#039;read_emissions_table&#039;&#039;&#039;], which reads file &#039;&#039;&#039;namelist.fire_emissions&#039;&#039;&#039;, subroutine [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_atm.F#L276 &#039;&#039;&#039;add_fire_emissions_to_chem&#039;&#039;&#039;], which  adds chemical species to the &#039;&#039;&#039;chem&#039;&#039;&#039; array, the [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_atm.F#L78 emissions tables] as module variables, subroutine [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_atm.F#L1914 &#039;&#039;&#039;fire_emission&#039;&#039;&#039;], which adds the smoke tracer, and the corresponding call statements in [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/phys/module_fr_sfire_driver.F  &#039;&#039;&#039;module_fr_sfire_driver&#039;&#039;&#039;].&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
* Kochanski A. K., Jenkins M.A., Yedinak K., Mandel J., Beezley J, and Lamb B. (2015) &#039;&#039;&#039;Toward an integrated system for fire, smoke and air quality simulations&#039;&#039;&#039;, International Journal of Wildland Fire - http://dx.doi.org/10.1071/WF14074&lt;br /&gt;
* Adam K. Kochanski, Jonathan D. Beezley, Jan Mandel, Craig B. Clements, &#039;&#039;&#039;Air pollution forecasting by coupled atmosphere-fire model WRF and SFIRE with WRF-Chem&#039;&#039;&#039;, 4th Fire Behavior and Fuels Conference, February 18-22, 2013, Raleigh, NC, 	{{arXiv|1304.7703}}, 2013&lt;br /&gt;
* Adam K. Kochanski, Jonathan D. Beezley, Jan Mandel, and Minjeong Kim, &#039;&#039;&#039;WRF fire simulation coupled with a fuel moisture model and smoke transport by WRF-Chem&#039;&#039;&#039;, [http://www.mmm.ucar.edu/events/2012_wrfusers/ 2012 WRF Users Workshop], [http://www.openwfm.org/wiki/File:WRF_workshop_2012_poster.pdf Poster 51] [http://www.mmm.ucar.edu/events/2012_wrfusers/abstracts/p51.htm abstract] [https://www.regonline.com/AttendeeDocuments/1077122/43365086/wrf2012.pdf paper] {{arXiv|1208.1059}}&lt;br /&gt;
* [http://ruc.noaa.gov/wrf/WG11/Users_guide.pdf WRF-Chem Users&#039; Guide]&lt;br /&gt;
* Georg A. Grell, Steven E. Peckham, Rainer Schmitz, Stuart A. McKeen, Gregory Frost, William C. Skamarock, Brian Eder, [http://dx.doi.org/10.1016/j.atmosenv.2005.04.027 Fully coupled “online” chemistry within the WRF model], Atmospheric Environment, Volume 39, Issue 37, December 2005, Pages 6957–6975&lt;br /&gt;
* C. Wiedinmyer, S. K. Akagi, R. J. Yokelson, L. K. Emmons, J. A. Al-Saadi, J. J. Orlando, and A. J. Soja. [http://dx.doi.org/10.5194/gmd-4-625-2011 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&lt;br /&gt;
* 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, [http://dx.doi.org/10.5194/gmd-3-43-2010 Description and evaluation of the Model for Ozone and Related chemical Tracers, version 4 (MOZART-4)], Geosci. Model Dev., 3, 43-67, 2010&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* [http://ruc.noaa.gov/wrf/WG11/ WRF-Chem] home page&lt;br /&gt;
* [https://www2.acom.ucar.edu/modeling/finn-fire-inventory-ncar Finn]  emissions model&lt;br /&gt;
* [http://www.acd.ucar.edu/wrf-chem/mozart.shtml MOZART] chemistry model&lt;/div&gt;</summary>
		<author><name>Jmandel</name></author>
	</entry>
	<entry>
		<id>https://wiki.openwfm.org/index.php?title=How_to_run_the_standalone_fire_model_in_WRF-SFIRE&amp;diff=8379</id>
		<title>How to run the standalone fire model in WRF-SFIRE</title>
		<link rel="alternate" type="text/html" href="https://wiki.openwfm.org/index.php?title=How_to_run_the_standalone_fire_model_in_WRF-SFIRE&amp;diff=8379"/>
		<updated>2025-10-22T15:12:41Z</updated>

		<summary type="html">&lt;p&gt;Jmandel: /* Works with */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{users guide}}&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;UNDER CONSTRUCTION&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The fire code in WRF-SFIRE, called SFIRE (for Spread FIRE model), can be used independently without WRF, using only one-way atmosphere-fire coupling. WRF needs to run to create the atmospheric forcing first.  &lt;br /&gt;
&lt;br /&gt;
==Step by step instructions==&lt;br /&gt;
&lt;br /&gt;
===Building the software===&lt;br /&gt;
* [[How to get WRF-Fire|Download and build WRF-SFIRE software]] to create &#039;&#039;&#039;wrf.exe&#039;&#039;&#039; and leave the &#039;&#039;&#039;NETCDF&#039;&#039;&#039; environment variable set.&lt;br /&gt;
&lt;br /&gt;
* Change to the &#039;&#039;&#039;standalone&#039;&#039;&#039; directory.&lt;br /&gt;
&lt;br /&gt;
* Find a suitable &#039;&#039;&#039;make.inc.*&#039;&#039;&#039; file and soft-link it to &#039;&#039;&#039;make.inc&#039;&#039;&#039;, for example &#039;&#039;&#039;ln  -s make.inc.gfortran make.inc&#039;&#039;&#039; and type &#039;&#039;&#039;make&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Running the software===&lt;br /&gt;
&lt;br /&gt;
* Navigate to a directory with your example (such as &#039;&#039;&#039;test/em_sfire/hill&#039;&#039;&#039;). Make sure &#039;&#039;&#039;namelist.input&#039;&#039;&#039; specifies a short  &#039;&#039;&#039;history_interval_s&#039;&#039;&#039; (these will be the atmosphere states used by the fire model) and set large &#039;&#039;&#039;frames_per_outfile&#039;&#039;&#039; so that only one &#039;&#039;&#039;wrfout&#039;&#039;&#039; file is created.&lt;br /&gt;
&lt;br /&gt;
* Set up the problem by either &#039;&#039;&#039;ideal.exe&#039;&#039;&#039; or &#039;&#039;&#039;real.exe&#039;&#039;&#039; and run &#039;&#039;&#039;wrf.exe&#039;&#039;&#039; as usual. &lt;br /&gt;
&lt;br /&gt;
* Link the created &#039;&#039;&#039;wrfout&#039;&#039;&#039; file to &#039;&#039;&#039;fire_input.nc&#039;&#039;&#039;: &#039;&#039;&#039;ln -s wrfout... fire_iput.nc&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Wait for wrf.exe to finish.&lt;br /&gt;
&lt;br /&gt;
* Run &#039;&#039;&#039;fire.exe&#039;&#039;&#039; in the same directory. This will create the file &#039;&#039;&#039;fire_output.nc&#039;&#039;&#039; with the results.&lt;br /&gt;
&lt;br /&gt;
==How it works==&lt;br /&gt;
&lt;br /&gt;
* The standalone model &#039;&#039;&#039;fire.exe&#039;&#039;&#039; reads the fire model inputs from the &#039;&#039;&#039;wrfout&#039;&#039;&#039;, including interpolated wind fields &#039;&#039;&#039;UF&#039;&#039;&#039; and &#039;&#039;&#039;VF&#039;&#039;&#039;. Because the first frame in &#039;&#039;&#039;wrfout&#039;&#039;&#039; is created before the fire model is called and so those fields are not set yet, the fire model starts from the second frame. The atmosphere fields are interpolated linearly in time between the frames before they are passed to the fire model.&lt;br /&gt;
&lt;br /&gt;
* The file &#039;&#039;&#039;fire_output.nc&#039;&#039;&#039; has the same format as &#039;&#039;&#039;wrfout&#039;&#039;&#039; but it contains only the variables that are the fire model outputs and some other fields copied from &#039;&#039;&#039;wrfout&#039;&#039;&#039;, which are needed for visualization and interpreting the results. These include coordinates of the fire nodes in &#039;&#039;&#039;FXLONG&#039;&#039;&#039; and &#039;&#039;&#039;FXLAT&#039;&#039;&#039;, the time string &#039;&#039;&#039;Times&#039;&#039;&#039;, and the terrain height &#039;&#039;&#039;ZSF&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* The standalone model build compiles the fire model files from the &#039;&#039;&#039;WRFV3/phys&#039;&#039;&#039; directory, so if the fire model changes, the standalone model may have to be updated. However, the standalone model does not depend on  WRF directly. The code consists of 3 files:&lt;br /&gt;
** &#039;&#039;&#039;fire.F&#039;&#039;&#039; is the standalone model driver&lt;br /&gt;
** &#039;&#039;&#039;wrf_netcdf.F&#039;&#039;&#039; reads and writes {{wp|NetCDF|NetCDF}} files compatible with WRF&lt;br /&gt;
** &#039;&#039;&#039;wrf_fakes.F&#039;&#039;&#039; implements a very limited subset of WRF routines to avoid dependency&lt;br /&gt;
&lt;br /&gt;
*The files &#039;&#039;&#039;config_assigns.inc&#039;&#039;&#039; &#039;&#039;&#039;namelist_defaults.inc&#039;&#039;&#039; &#039;&#039;&#039;namelist_defines2.inc&#039;&#039;&#039; &#039;&#039;&#039;namelist_defines.inc&#039;&#039;&#039; &#039;&#039;&#039;namelist_statements.inc&#039;&#039;&#039; files are copied from WRF build to maintain compatibility with &#039;&#039;&#039;namelist.input&#039;&#039;&#039; in WRF. When the WRF registry changes, these files will need to be updated manually from the directory &#039;&#039;&#039;WRFV3/inc&#039;&#039;&#039; after WRF is built and committed again.&lt;br /&gt;
&lt;br /&gt;
==Remarks==&lt;br /&gt;
&lt;br /&gt;
* The results of the coupled model and the standalone model will not be identical, even if the coupled model runs the same fire, because the wind fields are interpolated between the frames for the standalone model. But the results should be close.&lt;br /&gt;
&lt;br /&gt;
* To simulate different fires in the standalone model, the coupled model should run without ignition.  Then the coupled model will create the fire model inputs, but the atmosphere state will not be disturbed by the fire in the coupled model.&lt;br /&gt;
&lt;br /&gt;
* The &#039;&#039;&#039;&amp;amp;fire&#039;&#039;&#039; section in &#039;&#039;&#039;namelist.input&#039;&#039;&#039; can change, and the fuel data including &#039;&#039;&#039;namelist.fire&#039;&#039;&#039; may also change.&lt;br /&gt;
&lt;br /&gt;
* At the moment, &#039;&#039;&#039;fire.exe&#039;&#039;&#039; is serial only.&lt;br /&gt;
&lt;br /&gt;
==Works with==&lt;br /&gt;
&lt;br /&gt;
* {{WRF-SFIRE-branch|develop-3}} {{WRF-SFIRE-commit|e944a4bf430a0ca8f28dce5c08ff2de11dc94d5|Oct 22 2025}}&lt;br /&gt;
* Tested with GNU Fortran (GCC) 9.2.1 on Centos 8.3, libnetcdf 15.0.1, libnetcdff 7.0.0&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
* [[SFIRE|Fire model interface and standalone code description]]&lt;br /&gt;
* [[SFIRE variables]]&lt;br /&gt;
&lt;br /&gt;
[[Category:WRF-Fire]]&lt;br /&gt;
[[Category:Howtos|Run the standalone fire model in WRF-Fire]]&lt;/div&gt;</summary>
		<author><name>Jmandel</name></author>
	</entry>
	<entry>
		<id>https://wiki.openwfm.org/index.php?title=WRF-SFIRE&amp;diff=8378</id>
		<title>WRF-SFIRE</title>
		<link rel="alternate" type="text/html" href="https://wiki.openwfm.org/index.php?title=WRF-SFIRE&amp;diff=8378"/>
		<updated>2025-10-22T15:06:01Z</updated>

		<summary type="html">&lt;p&gt;Jmandel: /* Required testing */ update&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{users guide}}&lt;br /&gt;
[[Category:WRF-SFIRE]]&lt;br /&gt;
The fire code in WRF-SFIRE is called SFIRE (for Spread FIRE model). It is based on the [[wikipedia:Level set method|level set method]]. Since June 2011, we call the fire code SFIRE because of [[changes in WRF-Fire 3.3 release]]. The coupled code is called [[WRF]]-[[SFIRE]], and we reserve the designation [[WRF-Fire]] for the code in the WRF release.&lt;br /&gt;
&lt;br /&gt;
==Standalone code==&lt;br /&gt;
&lt;br /&gt;
SFIRE can be used independently without WRF for testing. To make comparison easier, it can run from the same inputs as WRF-Fire. &lt;br /&gt;
&lt;br /&gt;
* See [[How to run the standalone fire model in WRF-Fire]].&lt;br /&gt;
* The build process in &#039;&#039;&#039;standalone&#039;&#039;&#039; uses the generated source code from the WRF file tree, namely the files &#039;&#039;&#039;phys/module_fr_sfire_*.f90&#039;&#039;&#039; except &#039;&#039;&#039;phys/module_fr_sfire_driver_wrf.f90&#039;&#039;&#039;. There is no code duplication. Instead of WRF, the fire code is linked with the  &#039;&#039;&#039;*.F&#039;&#039;&#039; files in the &#039;&#039;&#039;standalone&#039;&#039;&#039; directory, which provide I/O and substitute the required subset of WRF functionality.&lt;br /&gt;
&lt;br /&gt;
==Interface between WRF and SFIRE==&lt;br /&gt;
&lt;br /&gt;
* The defined interface to SFIRE is between &#039;&#039;&#039;WRFV3/phys/module_fr_sfire_driver_wrf.F&#039;&#039;&#039; and subroutine &#039;&#039;&#039;sfire_driver_em&#039;&#039;&#039; in &#039;&#039;&#039;WRFV3/phys/module_fr_sfire_driver.F&#039;&#039;&#039;&lt;br /&gt;
* WRF calls &#039;&#039;&#039;sfire_driver_em&#039;&#039;&#039; once at initialization, and then (with slightly different arguments) in every time step.&lt;br /&gt;
* The arguments of &#039;&#039;&#039;sfire_driver_em&#039;&#039;&#039; consist of two structures (called derived types in Fortran), &#039;&#039;&#039;grid&#039;&#039;&#039;, which contains all state, input, and output variables, and &#039;&#039;&#039;config_flags&#039;&#039;&#039;, with all variables read from from file &#039;&#039;&#039;namelist.input&#039;&#039;&#039;, and some array dimensions.&lt;br /&gt;
** The standalone code defines its own &#039;&#039;&#039;grid&#039;&#039;&#039; derived type with only the subset of the fields needed. All fields in &#039;&#039;&#039;grid&#039;&#039;&#039; are set in the standalone driver main file, &#039;&#039;&#039;standalone/model_test_main.F&#039;&#039;&#039;, and nothing is hidden elsewhere.&lt;br /&gt;
** The standalone code replicates &#039;&#039;&#039;config_flags&#039;&#039;&#039; from WRF using include files named &#039;&#039;&#039;*.inc&#039;&#039;&#039; in the &#039;&#039;&#039;standalone&#039;&#039;&#039; directory. These include files are copies of the files generated by the WRF build process in &#039;&#039;&#039;WRFV3/inc&#039;&#039;&#039;. They are not soft links so that one can build the standalone code without building WRF. The &#039;&#039;&#039;inc&#039;&#039;&#039; files may need to be updated when the description of the configuration flags in the WRF registry changes.&lt;br /&gt;
&lt;br /&gt;
==SFIRE architecture==&lt;br /&gt;
&lt;br /&gt;
* SFIRE is compliant with [http://www.mmm.ucar.edu/wrf/WG2/WRF_conventions.html WRF coding conventions]. &lt;br /&gt;
* WRF divides the horizontal domain into &#039;&#039;patches&#039;&#039; and divides the patches into &#039;&#039;tiles&#039;&#039;. Each patch executes in one MPI process. Each tile is updated by one OpenMP thread. &lt;br /&gt;
* The SFIRE code is capable of parallel execution in shared memory. Division into tiles is controlled by fields in &#039;&#039;&#039;grid&#039;&#039;&#039;. There is only one OpenMP parallel loop over the tiles, in &#039;&#039;&#039;WRFV3/phys/module_fr_sfire_driver.F&#039;&#039;&#039;. The rest of the SFIRE code executes on a single tile, starting from &#039;&#039;&#039;WRFV3/phys/module_fr_sfire_model.F&#039;&#039;&#039; Because the tiles need to access values from neighboring tiles at several points in the computation, within a single invocation of SFIRE, the parallel loop is executed several times to synchronize the data in memory at the exit from the loop. Each execution of the parallel loop performs a different stage of the computation.&lt;br /&gt;
* When SFIRE runs in distributed memory, the communication between the patches is done in includes in &#039;&#039;&#039;WRFV3/phys/module_fr_sfire_driver.F&#039;&#039;&#039; (search for HALO). This has no effect in the standalone code; in WRF, the includes are provided by the WRF parallel infrastructure, RSL-Lite. If you want to run SFIRE in MPI, you need to provide equivalent HALO includes yourself.&lt;br /&gt;
* SFIRE does not keep any state except scalar flags and fixed-size tables, set at initialization. All adjustable-sized arrays preserved beween calls are in &#039;&#039;&#039;grid&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Required testing==&lt;br /&gt;
&lt;br /&gt;
If you change anything in the files &#039;&#039;&#039;phys/module_fr_sfire_*.F&#039;&#039;&#039;, you must test that the changes do not break WRF-Fire, otherwise your changes will not be maintainable.&lt;br /&gt;
&lt;br /&gt;
* Build WRF-SFIRE with SM+DM parallelism with debugging, and test all 4 versions (serial, SM, DM, SM+DM) with the examples provided in &#039;&#039;&#039;test/em_fire&#039;&#039;&#039; and various numbers of processors. The results (the numerical values in the arrays the &#039;&#039;&#039;wrfrst&#039;&#039;&#039; files, not the files themselves) should be bit-identical to each other and identical to what they were before your changes. You can compare the files using the &#039;&#039;&#039;diffwrf&#039;&#039;&#039; utility, which is built as a part of the WRF compilation process, or start Matlab in &#039;&#039;&#039;test/em_fire&#039;&#039;&#039; (to set the path) and use the command &#039;&#039;&#039;ncdiff&#039;&#039;&#039; in Matlab.&lt;br /&gt;
* Build WRF-Fire with optimization and test on several platforms (at least gfortran).&lt;br /&gt;
&lt;br /&gt;
==Web-based run system WRFX==&lt;br /&gt;
This system is available at http://github.com/openwfm. It consists of the following parts:&lt;br /&gt;
* [http://github.com/openwfm/wrfxpy wrfxpy] - Initiate and manage WRF-SFIRE simulations on a cluster. Automates data download, queuing and monitoring jobs, and postprocessing outputs into geolocated images. (Python). Intended to run on a head node of the cluster. Documentation is available at http://wrfxpy.readthedocs.io&lt;br /&gt;
* [http://github.com/openwfm/wrfxctrl wrfxctrl] - Map-based web interface to wrfxpy (Python and Javascript). Intended to run on a head node of the cluster. Runs its own web server.  &lt;br /&gt;
* [http://github.com/openwfm/wrfxweb wrfxweb] - Map-based visualization server running on a remote server. The visualizations are also available as Google Earth KML files. (Browser-based Javascript, Python utilities) Designed to run on a small cloud machine.&lt;br /&gt;
&lt;br /&gt;
==Works with==&lt;br /&gt;
&lt;br /&gt;
* WRF-SFIRE master branch&lt;br /&gt;
&lt;br /&gt;
[[Category:WRF-Fire]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Jmandel</name></author>
	</entry>
	<entry>
		<id>https://wiki.openwfm.org/index.php?title=WRF-SFIRE&amp;diff=8377</id>
		<title>WRF-SFIRE</title>
		<link rel="alternate" type="text/html" href="https://wiki.openwfm.org/index.php?title=WRF-SFIRE&amp;diff=8377"/>
		<updated>2025-10-22T15:03:17Z</updated>

		<summary type="html">&lt;p&gt;Jmandel: /* Standalone code */ updated&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{users guide}}&lt;br /&gt;
[[Category:WRF-SFIRE]]&lt;br /&gt;
The fire code in WRF-SFIRE is called SFIRE (for Spread FIRE model). It is based on the [[wikipedia:Level set method|level set method]]. Since June 2011, we call the fire code SFIRE because of [[changes in WRF-Fire 3.3 release]]. The coupled code is called [[WRF]]-[[SFIRE]], and we reserve the designation [[WRF-Fire]] for the code in the WRF release.&lt;br /&gt;
&lt;br /&gt;
==Standalone code==&lt;br /&gt;
&lt;br /&gt;
SFIRE can be used independently without WRF for testing. To make comparison easier, it can run from the same inputs as WRF-Fire. &lt;br /&gt;
&lt;br /&gt;
* See [[How to run the standalone fire model in WRF-Fire]].&lt;br /&gt;
* The build process in &#039;&#039;&#039;standalone&#039;&#039;&#039; uses the generated source code from the WRF file tree, namely the files &#039;&#039;&#039;phys/module_fr_sfire_*.f90&#039;&#039;&#039; except &#039;&#039;&#039;phys/module_fr_sfire_driver_wrf.f90&#039;&#039;&#039;. There is no code duplication. Instead of WRF, the fire code is linked with the  &#039;&#039;&#039;*.F&#039;&#039;&#039; files in the &#039;&#039;&#039;standalone&#039;&#039;&#039; directory, which provide I/O and substitute the required subset of WRF functionality.&lt;br /&gt;
&lt;br /&gt;
==Interface between WRF and SFIRE==&lt;br /&gt;
&lt;br /&gt;
* The defined interface to SFIRE is between &#039;&#039;&#039;WRFV3/phys/module_fr_sfire_driver_wrf.F&#039;&#039;&#039; and subroutine &#039;&#039;&#039;sfire_driver_em&#039;&#039;&#039; in &#039;&#039;&#039;WRFV3/phys/module_fr_sfire_driver.F&#039;&#039;&#039;&lt;br /&gt;
* WRF calls &#039;&#039;&#039;sfire_driver_em&#039;&#039;&#039; once at initialization, and then (with slightly different arguments) in every time step.&lt;br /&gt;
* The arguments of &#039;&#039;&#039;sfire_driver_em&#039;&#039;&#039; consist of two structures (called derived types in Fortran), &#039;&#039;&#039;grid&#039;&#039;&#039;, which contains all state, input, and output variables, and &#039;&#039;&#039;config_flags&#039;&#039;&#039;, with all variables read from from file &#039;&#039;&#039;namelist.input&#039;&#039;&#039;, and some array dimensions.&lt;br /&gt;
** The standalone code defines its own &#039;&#039;&#039;grid&#039;&#039;&#039; derived type with only the subset of the fields needed. All fields in &#039;&#039;&#039;grid&#039;&#039;&#039; are set in the standalone driver main file, &#039;&#039;&#039;standalone/model_test_main.F&#039;&#039;&#039;, and nothing is hidden elsewhere.&lt;br /&gt;
** The standalone code replicates &#039;&#039;&#039;config_flags&#039;&#039;&#039; from WRF using include files named &#039;&#039;&#039;*.inc&#039;&#039;&#039; in the &#039;&#039;&#039;standalone&#039;&#039;&#039; directory. These include files are copies of the files generated by the WRF build process in &#039;&#039;&#039;WRFV3/inc&#039;&#039;&#039;. They are not soft links so that one can build the standalone code without building WRF. The &#039;&#039;&#039;inc&#039;&#039;&#039; files may need to be updated when the description of the configuration flags in the WRF registry changes.&lt;br /&gt;
&lt;br /&gt;
==SFIRE architecture==&lt;br /&gt;
&lt;br /&gt;
* SFIRE is compliant with [http://www.mmm.ucar.edu/wrf/WG2/WRF_conventions.html WRF coding conventions]. &lt;br /&gt;
* WRF divides the horizontal domain into &#039;&#039;patches&#039;&#039; and divides the patches into &#039;&#039;tiles&#039;&#039;. Each patch executes in one MPI process. Each tile is updated by one OpenMP thread. &lt;br /&gt;
* The SFIRE code is capable of parallel execution in shared memory. Division into tiles is controlled by fields in &#039;&#039;&#039;grid&#039;&#039;&#039;. There is only one OpenMP parallel loop over the tiles, in &#039;&#039;&#039;WRFV3/phys/module_fr_sfire_driver.F&#039;&#039;&#039;. The rest of the SFIRE code executes on a single tile, starting from &#039;&#039;&#039;WRFV3/phys/module_fr_sfire_model.F&#039;&#039;&#039; Because the tiles need to access values from neighboring tiles at several points in the computation, within a single invocation of SFIRE, the parallel loop is executed several times to synchronize the data in memory at the exit from the loop. Each execution of the parallel loop performs a different stage of the computation.&lt;br /&gt;
* When SFIRE runs in distributed memory, the communication between the patches is done in includes in &#039;&#039;&#039;WRFV3/phys/module_fr_sfire_driver.F&#039;&#039;&#039; (search for HALO). This has no effect in the standalone code; in WRF, the includes are provided by the WRF parallel infrastructure, RSL-Lite. If you want to run SFIRE in MPI, you need to provide equivalent HALO includes yourself.&lt;br /&gt;
* SFIRE does not keep any state except scalar flags and fixed-size tables, set at initialization. All adjustable-sized arrays preserved beween calls are in &#039;&#039;&#039;grid&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Required testing==&lt;br /&gt;
&lt;br /&gt;
If you change anything in the files &#039;&#039;&#039;WRFV3/phys/module_fr_sfire_*.F&#039;&#039;&#039;, you must test that the changes do not break WRF-Fire, otherwise your changes will not be maintainable.&lt;br /&gt;
&lt;br /&gt;
* Build WRF-Fire with SM+DM parallelism with debugging, and test all 4 versions (serial, SM, DM, SM+DM) with the examples provided in &#039;&#039;&#039;WRFV3/test/em_fire&#039;&#039;&#039; and various numbers of processors. The results (the numerical values in the arrays the &#039;&#039;&#039;wrfrst&#039;&#039;&#039; files, not the files themselves) must be bit-identical to each other and identical to what they were before your changes. You can compare the files using the &#039;&#039;&#039;diffwrf&#039;&#039;&#039; utility, which is built as a part of the WRF compilation process, or start Matlab in &#039;&#039;&#039;WRFV3/test/em_fire&#039;&#039;&#039; (to set the path) and use the command &#039;&#039;&#039;ncdiff&#039;&#039;&#039; in Matlab.&lt;br /&gt;
* Build WRF-Fire with optimization and test on several platforms (at least gfortran and PGI).&lt;br /&gt;
&lt;br /&gt;
==Web-based run system WRFX==&lt;br /&gt;
This system is available at http://github.com/openwfm. It consists of the following parts:&lt;br /&gt;
* [http://github.com/openwfm/wrfxpy wrfxpy] - Initiate and manage WRF-SFIRE simulations on a cluster. Automates data download, queuing and monitoring jobs, and postprocessing outputs into geolocated images. (Python). Intended to run on a head node of the cluster. Documentation is available at http://wrfxpy.readthedocs.io&lt;br /&gt;
* [http://github.com/openwfm/wrfxctrl wrfxctrl] - Map-based web interface to wrfxpy (Python and Javascript). Intended to run on a head node of the cluster. Runs its own web server.  &lt;br /&gt;
* [http://github.com/openwfm/wrfxweb wrfxweb] - Map-based visualization server running on a remote server. The visualizations are also available as Google Earth KML files. (Browser-based Javascript, Python utilities) Designed to run on a small cloud machine.&lt;br /&gt;
&lt;br /&gt;
==Works with==&lt;br /&gt;
&lt;br /&gt;
* WRF-SFIRE master branch&lt;br /&gt;
&lt;br /&gt;
[[Category:WRF-Fire]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Jmandel</name></author>
	</entry>
	<entry>
		<id>https://wiki.openwfm.org/index.php?title=Template:WRF-SFIRE-commit&amp;diff=8376</id>
		<title>Template:WRF-SFIRE-commit</title>
		<link rel="alternate" type="text/html" href="https://wiki.openwfm.org/index.php?title=Template:WRF-SFIRE-commit&amp;diff=8376"/>
		<updated>2025-10-22T14:56:58Z</updated>

		<summary type="html">&lt;p&gt;Jmandel: Created page with &amp;quot;[http://github.com/openwfm/WRF-SFIRE/commit/{{{1}}} commit {{{1}}}]&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://github.com/openwfm/WRF-SFIRE/commit/{{{1}}} commit {{{1}}}]&lt;/div&gt;</summary>
		<author><name>Jmandel</name></author>
	</entry>
	<entry>
		<id>https://wiki.openwfm.org/index.php?title=Template:WRF-SFIRE-branch&amp;diff=8375</id>
		<title>Template:WRF-SFIRE-branch</title>
		<link rel="alternate" type="text/html" href="https://wiki.openwfm.org/index.php?title=Template:WRF-SFIRE-branch&amp;diff=8375"/>
		<updated>2025-10-22T14:49:40Z</updated>

		<summary type="html">&lt;p&gt;Jmandel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://github.com/openwfm/WRF-SFIRE/commits/{{{1}}} WRF-SFIRE branch {{{1}}}]&lt;/div&gt;</summary>
		<author><name>Jmandel</name></author>
	</entry>
	<entry>
		<id>https://wiki.openwfm.org/index.php?title=How_to_run_the_standalone_fire_model_in_WRF-SFIRE&amp;diff=8374</id>
		<title>How to run the standalone fire model in WRF-SFIRE</title>
		<link rel="alternate" type="text/html" href="https://wiki.openwfm.org/index.php?title=How_to_run_the_standalone_fire_model_in_WRF-SFIRE&amp;diff=8374"/>
		<updated>2025-10-22T14:48:17Z</updated>

		<summary type="html">&lt;p&gt;Jmandel: /* Works with */ update to Centos 8&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{users guide}}&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;UNDER CONSTRUCTION&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The fire code in WRF-SFIRE, called SFIRE (for Spread FIRE model), can be used independently without WRF, using only one-way atmosphere-fire coupling. WRF needs to run to create the atmospheric forcing first.  &lt;br /&gt;
&lt;br /&gt;
==Step by step instructions==&lt;br /&gt;
&lt;br /&gt;
===Building the software===&lt;br /&gt;
* [[How to get WRF-Fire|Download and build WRF-SFIRE software]] to create &#039;&#039;&#039;wrf.exe&#039;&#039;&#039; and leave the &#039;&#039;&#039;NETCDF&#039;&#039;&#039; environment variable set.&lt;br /&gt;
&lt;br /&gt;
* Change to the &#039;&#039;&#039;standalone&#039;&#039;&#039; directory.&lt;br /&gt;
&lt;br /&gt;
* Find a suitable &#039;&#039;&#039;make.inc.*&#039;&#039;&#039; file and soft-link it to &#039;&#039;&#039;make.inc&#039;&#039;&#039;, for example &#039;&#039;&#039;ln  -s make.inc.gfortran make.inc&#039;&#039;&#039; and type &#039;&#039;&#039;make&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Running the software===&lt;br /&gt;
&lt;br /&gt;
* Navigate to a directory with your example (such as &#039;&#039;&#039;test/em_sfire/hill&#039;&#039;&#039;). Make sure &#039;&#039;&#039;namelist.input&#039;&#039;&#039; specifies a short  &#039;&#039;&#039;history_interval_s&#039;&#039;&#039; (these will be the atmosphere states used by the fire model) and set large &#039;&#039;&#039;frames_per_outfile&#039;&#039;&#039; so that only one &#039;&#039;&#039;wrfout&#039;&#039;&#039; file is created.&lt;br /&gt;
&lt;br /&gt;
* Set up the problem by either &#039;&#039;&#039;ideal.exe&#039;&#039;&#039; or &#039;&#039;&#039;real.exe&#039;&#039;&#039; and run &#039;&#039;&#039;wrf.exe&#039;&#039;&#039; as usual. &lt;br /&gt;
&lt;br /&gt;
* Link the created &#039;&#039;&#039;wrfout&#039;&#039;&#039; file to &#039;&#039;&#039;fire_input.nc&#039;&#039;&#039;: &#039;&#039;&#039;ln -s wrfout... fire_iput.nc&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Wait for wrf.exe to finish.&lt;br /&gt;
&lt;br /&gt;
* Run &#039;&#039;&#039;fire.exe&#039;&#039;&#039; in the same directory. This will create the file &#039;&#039;&#039;fire_output.nc&#039;&#039;&#039; with the results.&lt;br /&gt;
&lt;br /&gt;
==How it works==&lt;br /&gt;
&lt;br /&gt;
* The standalone model &#039;&#039;&#039;fire.exe&#039;&#039;&#039; reads the fire model inputs from the &#039;&#039;&#039;wrfout&#039;&#039;&#039;, including interpolated wind fields &#039;&#039;&#039;UF&#039;&#039;&#039; and &#039;&#039;&#039;VF&#039;&#039;&#039;. Because the first frame in &#039;&#039;&#039;wrfout&#039;&#039;&#039; is created before the fire model is called and so those fields are not set yet, the fire model starts from the second frame. The atmosphere fields are interpolated linearly in time between the frames before they are passed to the fire model.&lt;br /&gt;
&lt;br /&gt;
* The file &#039;&#039;&#039;fire_output.nc&#039;&#039;&#039; has the same format as &#039;&#039;&#039;wrfout&#039;&#039;&#039; but it contains only the variables that are the fire model outputs and some other fields copied from &#039;&#039;&#039;wrfout&#039;&#039;&#039;, which are needed for visualization and interpreting the results. These include coordinates of the fire nodes in &#039;&#039;&#039;FXLONG&#039;&#039;&#039; and &#039;&#039;&#039;FXLAT&#039;&#039;&#039;, the time string &#039;&#039;&#039;Times&#039;&#039;&#039;, and the terrain height &#039;&#039;&#039;ZSF&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* The standalone model build compiles the fire model files from the &#039;&#039;&#039;WRFV3/phys&#039;&#039;&#039; directory, so if the fire model changes, the standalone model may have to be updated. However, the standalone model does not depend on  WRF directly. The code consists of 3 files:&lt;br /&gt;
** &#039;&#039;&#039;fire.F&#039;&#039;&#039; is the standalone model driver&lt;br /&gt;
** &#039;&#039;&#039;wrf_netcdf.F&#039;&#039;&#039; reads and writes {{wp|NetCDF|NetCDF}} files compatible with WRF&lt;br /&gt;
** &#039;&#039;&#039;wrf_fakes.F&#039;&#039;&#039; implements a very limited subset of WRF routines to avoid dependency&lt;br /&gt;
&lt;br /&gt;
*The files &#039;&#039;&#039;config_assigns.inc&#039;&#039;&#039; &#039;&#039;&#039;namelist_defaults.inc&#039;&#039;&#039; &#039;&#039;&#039;namelist_defines2.inc&#039;&#039;&#039; &#039;&#039;&#039;namelist_defines.inc&#039;&#039;&#039; &#039;&#039;&#039;namelist_statements.inc&#039;&#039;&#039; files are copied from WRF build to maintain compatibility with &#039;&#039;&#039;namelist.input&#039;&#039;&#039; in WRF. When the WRF registry changes, these files will need to be updated manually from the directory &#039;&#039;&#039;WRFV3/inc&#039;&#039;&#039; after WRF is built and committed again.&lt;br /&gt;
&lt;br /&gt;
==Remarks==&lt;br /&gt;
&lt;br /&gt;
* The results of the coupled model and the standalone model will not be identical, even if the coupled model runs the same fire, because the wind fields are interpolated between the frames for the standalone model. But the results should be close.&lt;br /&gt;
&lt;br /&gt;
* To simulate different fires in the standalone model, the coupled model should run without ignition.  Then the coupled model will create the fire model inputs, but the atmosphere state will not be disturbed by the fire in the coupled model.&lt;br /&gt;
&lt;br /&gt;
* The &#039;&#039;&#039;&amp;amp;fire&#039;&#039;&#039; section in &#039;&#039;&#039;namelist.input&#039;&#039;&#039; can change, and the fuel data including &#039;&#039;&#039;namelist.fire&#039;&#039;&#039; may also change.&lt;br /&gt;
&lt;br /&gt;
* At the moment, &#039;&#039;&#039;fire.exe&#039;&#039;&#039; is serial only.&lt;br /&gt;
&lt;br /&gt;
==Works with==&lt;br /&gt;
&lt;br /&gt;
* {{WRF-SFIRE-branch|develop-3}} {{WRF-SFIRE-commit|f66267250bdedbf2d866dbd132d7cae8897f9e7c|Oct 22 2025}}&lt;br /&gt;
* Tested with GNU Fortran (GCC) 9.2.1 on Centos 8.3, libnetcdf 15.0.1, libnetcdff 7.0.0&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
* [[SFIRE|Fire model interface and standalone code description]]&lt;br /&gt;
* [[SFIRE variables]]&lt;br /&gt;
&lt;br /&gt;
[[Category:WRF-Fire]]&lt;br /&gt;
[[Category:Howtos|Run the standalone fire model in WRF-Fire]]&lt;/div&gt;</summary>
		<author><name>Jmandel</name></author>
	</entry>
	<entry>
		<id>https://wiki.openwfm.org/index.php?title=Template:WRF-SFIRE-branch&amp;diff=8373</id>
		<title>Template:WRF-SFIRE-branch</title>
		<link rel="alternate" type="text/html" href="https://wiki.openwfm.org/index.php?title=Template:WRF-SFIRE-branch&amp;diff=8373"/>
		<updated>2025-10-22T14:40:37Z</updated>

		<summary type="html">&lt;p&gt;Jmandel: Created page with &amp;quot;[http://github.com/openwfm/WRF-SFIRE/commits/{{{1}}} branch {{{1}}}]&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://github.com/openwfm/WRF-SFIRE/commits/{{{1}}} branch {{{1}}}]&lt;/div&gt;</summary>
		<author><name>Jmandel</name></author>
	</entry>
	<entry>
		<id>https://wiki.openwfm.org/index.php?title=How_to_run_the_standalone_fire_model_in_WRF-SFIRE&amp;diff=8372</id>
		<title>How to run the standalone fire model in WRF-SFIRE</title>
		<link rel="alternate" type="text/html" href="https://wiki.openwfm.org/index.php?title=How_to_run_the_standalone_fire_model_in_WRF-SFIRE&amp;diff=8372"/>
		<updated>2025-10-22T09:02:19Z</updated>

		<summary type="html">&lt;p&gt;Jmandel: /* Running the software */  adding wait  for wrf.exe to finish&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{users guide}}&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;UNDER CONSTRUCTION&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The fire code in WRF-SFIRE, called SFIRE (for Spread FIRE model), can be used independently without WRF, using only one-way atmosphere-fire coupling. WRF needs to run to create the atmospheric forcing first.  &lt;br /&gt;
&lt;br /&gt;
==Step by step instructions==&lt;br /&gt;
&lt;br /&gt;
===Building the software===&lt;br /&gt;
* [[How to get WRF-Fire|Download and build WRF-SFIRE software]] to create &#039;&#039;&#039;wrf.exe&#039;&#039;&#039; and leave the &#039;&#039;&#039;NETCDF&#039;&#039;&#039; environment variable set.&lt;br /&gt;
&lt;br /&gt;
* Change to the &#039;&#039;&#039;standalone&#039;&#039;&#039; directory.&lt;br /&gt;
&lt;br /&gt;
* Find a suitable &#039;&#039;&#039;make.inc.*&#039;&#039;&#039; file and soft-link it to &#039;&#039;&#039;make.inc&#039;&#039;&#039;, for example &#039;&#039;&#039;ln  -s make.inc.gfortran make.inc&#039;&#039;&#039; and type &#039;&#039;&#039;make&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Running the software===&lt;br /&gt;
&lt;br /&gt;
* Navigate to a directory with your example (such as &#039;&#039;&#039;test/em_sfire/hill&#039;&#039;&#039;). Make sure &#039;&#039;&#039;namelist.input&#039;&#039;&#039; specifies a short  &#039;&#039;&#039;history_interval_s&#039;&#039;&#039; (these will be the atmosphere states used by the fire model) and set large &#039;&#039;&#039;frames_per_outfile&#039;&#039;&#039; so that only one &#039;&#039;&#039;wrfout&#039;&#039;&#039; file is created.&lt;br /&gt;
&lt;br /&gt;
* Set up the problem by either &#039;&#039;&#039;ideal.exe&#039;&#039;&#039; or &#039;&#039;&#039;real.exe&#039;&#039;&#039; and run &#039;&#039;&#039;wrf.exe&#039;&#039;&#039; as usual. &lt;br /&gt;
&lt;br /&gt;
* Link the created &#039;&#039;&#039;wrfout&#039;&#039;&#039; file to &#039;&#039;&#039;fire_input.nc&#039;&#039;&#039;: &#039;&#039;&#039;ln -s wrfout... fire_iput.nc&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Wait for wrf.exe to finish.&lt;br /&gt;
&lt;br /&gt;
* Run &#039;&#039;&#039;fire.exe&#039;&#039;&#039; in the same directory. This will create the file &#039;&#039;&#039;fire_output.nc&#039;&#039;&#039; with the results.&lt;br /&gt;
&lt;br /&gt;
==How it works==&lt;br /&gt;
&lt;br /&gt;
* The standalone model &#039;&#039;&#039;fire.exe&#039;&#039;&#039; reads the fire model inputs from the &#039;&#039;&#039;wrfout&#039;&#039;&#039;, including interpolated wind fields &#039;&#039;&#039;UF&#039;&#039;&#039; and &#039;&#039;&#039;VF&#039;&#039;&#039;. Because the first frame in &#039;&#039;&#039;wrfout&#039;&#039;&#039; is created before the fire model is called and so those fields are not set yet, the fire model starts from the second frame. The atmosphere fields are interpolated linearly in time between the frames before they are passed to the fire model.&lt;br /&gt;
&lt;br /&gt;
* The file &#039;&#039;&#039;fire_output.nc&#039;&#039;&#039; has the same format as &#039;&#039;&#039;wrfout&#039;&#039;&#039; but it contains only the variables that are the fire model outputs and some other fields copied from &#039;&#039;&#039;wrfout&#039;&#039;&#039;, which are needed for visualization and interpreting the results. These include coordinates of the fire nodes in &#039;&#039;&#039;FXLONG&#039;&#039;&#039; and &#039;&#039;&#039;FXLAT&#039;&#039;&#039;, the time string &#039;&#039;&#039;Times&#039;&#039;&#039;, and the terrain height &#039;&#039;&#039;ZSF&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* The standalone model build compiles the fire model files from the &#039;&#039;&#039;WRFV3/phys&#039;&#039;&#039; directory, so if the fire model changes, the standalone model may have to be updated. However, the standalone model does not depend on  WRF directly. The code consists of 3 files:&lt;br /&gt;
** &#039;&#039;&#039;fire.F&#039;&#039;&#039; is the standalone model driver&lt;br /&gt;
** &#039;&#039;&#039;wrf_netcdf.F&#039;&#039;&#039; reads and writes {{wp|NetCDF|NetCDF}} files compatible with WRF&lt;br /&gt;
** &#039;&#039;&#039;wrf_fakes.F&#039;&#039;&#039; implements a very limited subset of WRF routines to avoid dependency&lt;br /&gt;
&lt;br /&gt;
*The files &#039;&#039;&#039;config_assigns.inc&#039;&#039;&#039; &#039;&#039;&#039;namelist_defaults.inc&#039;&#039;&#039; &#039;&#039;&#039;namelist_defines2.inc&#039;&#039;&#039; &#039;&#039;&#039;namelist_defines.inc&#039;&#039;&#039; &#039;&#039;&#039;namelist_statements.inc&#039;&#039;&#039; files are copied from WRF build to maintain compatibility with &#039;&#039;&#039;namelist.input&#039;&#039;&#039; in WRF. When the WRF registry changes, these files will need to be updated manually from the directory &#039;&#039;&#039;WRFV3/inc&#039;&#039;&#039; after WRF is built and committed again.&lt;br /&gt;
&lt;br /&gt;
==Remarks==&lt;br /&gt;
&lt;br /&gt;
* The results of the coupled model and the standalone model will not be identical, even if the coupled model runs the same fire, because the wind fields are interpolated between the frames for the standalone model. But the results should be close.&lt;br /&gt;
&lt;br /&gt;
* To simulate different fires in the standalone model, the coupled model should run without ignition.  Then the coupled model will create the fire model inputs, but the atmosphere state will not be disturbed by the fire in the coupled model.&lt;br /&gt;
&lt;br /&gt;
* The &#039;&#039;&#039;&amp;amp;fire&#039;&#039;&#039; section in &#039;&#039;&#039;namelist.input&#039;&#039;&#039; can change, and the fuel data including &#039;&#039;&#039;namelist.fire&#039;&#039;&#039; may also change.&lt;br /&gt;
&lt;br /&gt;
* At the moment, &#039;&#039;&#039;fire.exe&#039;&#039;&#039; is serial only.&lt;br /&gt;
&lt;br /&gt;
==Works with==&lt;br /&gt;
&lt;br /&gt;
* {{WRF-Fire-branch|jm2/devel}} {{WRF-Fire-commit|168fbfaa8a62061b51999001dc55162e2ac3a798|Oct 28 2011}}&lt;br /&gt;
* Tested with gfortran 4.4.4 and pgf90 11.9 on Linux, and gfortran 4.3.3 on OSX (from   [http://www.macports.org/ MacPorts]).&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
* [[SFIRE|Fire model interface and standalone code description]]&lt;br /&gt;
* [[SFIRE variables]]&lt;br /&gt;
&lt;br /&gt;
[[Category:WRF-Fire]]&lt;br /&gt;
[[Category:Howtos|Run the standalone fire model in WRF-Fire]]&lt;/div&gt;</summary>
		<author><name>Jmandel</name></author>
	</entry>
	<entry>
		<id>https://wiki.openwfm.org/index.php?title=How_to_run_the_standalone_fire_model_in_WRF-SFIRE&amp;diff=8371</id>
		<title>How to run the standalone fire model in WRF-SFIRE</title>
		<link rel="alternate" type="text/html" href="https://wiki.openwfm.org/index.php?title=How_to_run_the_standalone_fire_model_in_WRF-SFIRE&amp;diff=8371"/>
		<updated>2025-10-22T00:22:14Z</updated>

		<summary type="html">&lt;p&gt;Jmandel: /* Building the software */ WRF-SFIRE&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{users guide}}&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;UNDER CONSTRUCTION&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The fire code in WRF-SFIRE, called SFIRE (for Spread FIRE model), can be used independently without WRF, using only one-way atmosphere-fire coupling. WRF needs to run to create the atmospheric forcing first.  &lt;br /&gt;
&lt;br /&gt;
==Step by step instructions==&lt;br /&gt;
&lt;br /&gt;
===Building the software===&lt;br /&gt;
* [[How to get WRF-Fire|Download and build WRF-SFIRE software]] to create &#039;&#039;&#039;wrf.exe&#039;&#039;&#039; and leave the &#039;&#039;&#039;NETCDF&#039;&#039;&#039; environment variable set.&lt;br /&gt;
&lt;br /&gt;
* Change to the &#039;&#039;&#039;standalone&#039;&#039;&#039; directory.&lt;br /&gt;
&lt;br /&gt;
* Find a suitable &#039;&#039;&#039;make.inc.*&#039;&#039;&#039; file and soft-link it to &#039;&#039;&#039;make.inc&#039;&#039;&#039;, for example &#039;&#039;&#039;ln  -s make.inc.gfortran make.inc&#039;&#039;&#039; and type &#039;&#039;&#039;make&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Running the software===&lt;br /&gt;
&lt;br /&gt;
* Navigate to a directory with your example (such as &#039;&#039;&#039;test/em_sfire/hill&#039;&#039;&#039;). Make sure &#039;&#039;&#039;namelist.input&#039;&#039;&#039; specifies a short  &#039;&#039;&#039;history_interval_s&#039;&#039;&#039; (these will be the atmosphere states used by the fire model) and set large &#039;&#039;&#039;frames_per_outfile&#039;&#039;&#039; so that only one &#039;&#039;&#039;wrfout&#039;&#039;&#039; file is created.&lt;br /&gt;
&lt;br /&gt;
* Set up the problem by either &#039;&#039;&#039;ideal.exe&#039;&#039;&#039; or &#039;&#039;&#039;real.exe&#039;&#039;&#039; and run &#039;&#039;&#039;wrf.exe&#039;&#039;&#039; as usual. &lt;br /&gt;
&lt;br /&gt;
* Link or rename the created &#039;&#039;&#039;wrfout&#039;&#039;&#039; file to &#039;&#039;&#039;fire_input.nc&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Run &#039;&#039;&#039;fire.exe&#039;&#039;&#039; in the same directory. This will create the file &#039;&#039;&#039;fire_output.nc&#039;&#039;&#039; with the results.&lt;br /&gt;
&lt;br /&gt;
==How it works==&lt;br /&gt;
&lt;br /&gt;
* The standalone model &#039;&#039;&#039;fire.exe&#039;&#039;&#039; reads the fire model inputs from the &#039;&#039;&#039;wrfout&#039;&#039;&#039;, including interpolated wind fields &#039;&#039;&#039;UF&#039;&#039;&#039; and &#039;&#039;&#039;VF&#039;&#039;&#039;. Because the first frame in &#039;&#039;&#039;wrfout&#039;&#039;&#039; is created before the fire model is called and so those fields are not set yet, the fire model starts from the second frame. The atmosphere fields are interpolated linearly in time between the frames before they are passed to the fire model.&lt;br /&gt;
&lt;br /&gt;
* The file &#039;&#039;&#039;fire_output.nc&#039;&#039;&#039; has the same format as &#039;&#039;&#039;wrfout&#039;&#039;&#039; but it contains only the variables that are the fire model outputs and some other fields copied from &#039;&#039;&#039;wrfout&#039;&#039;&#039;, which are needed for visualization and interpreting the results. These include coordinates of the fire nodes in &#039;&#039;&#039;FXLONG&#039;&#039;&#039; and &#039;&#039;&#039;FXLAT&#039;&#039;&#039;, the time string &#039;&#039;&#039;Times&#039;&#039;&#039;, and the terrain height &#039;&#039;&#039;ZSF&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* The standalone model build compiles the fire model files from the &#039;&#039;&#039;WRFV3/phys&#039;&#039;&#039; directory, so if the fire model changes, the standalone model may have to be updated. However, the standalone model does not depend on  WRF directly. The code consists of 3 files:&lt;br /&gt;
** &#039;&#039;&#039;fire.F&#039;&#039;&#039; is the standalone model driver&lt;br /&gt;
** &#039;&#039;&#039;wrf_netcdf.F&#039;&#039;&#039; reads and writes {{wp|NetCDF|NetCDF}} files compatible with WRF&lt;br /&gt;
** &#039;&#039;&#039;wrf_fakes.F&#039;&#039;&#039; implements a very limited subset of WRF routines to avoid dependency&lt;br /&gt;
&lt;br /&gt;
*The files &#039;&#039;&#039;config_assigns.inc&#039;&#039;&#039; &#039;&#039;&#039;namelist_defaults.inc&#039;&#039;&#039; &#039;&#039;&#039;namelist_defines2.inc&#039;&#039;&#039; &#039;&#039;&#039;namelist_defines.inc&#039;&#039;&#039; &#039;&#039;&#039;namelist_statements.inc&#039;&#039;&#039; files are copied from WRF build to maintain compatibility with &#039;&#039;&#039;namelist.input&#039;&#039;&#039; in WRF. When the WRF registry changes, these files will need to be updated manually from the directory &#039;&#039;&#039;WRFV3/inc&#039;&#039;&#039; after WRF is built and committed again.&lt;br /&gt;
&lt;br /&gt;
==Remarks==&lt;br /&gt;
&lt;br /&gt;
* The results of the coupled model and the standalone model will not be identical, even if the coupled model runs the same fire, because the wind fields are interpolated between the frames for the standalone model. But the results should be close.&lt;br /&gt;
&lt;br /&gt;
* To simulate different fires in the standalone model, the coupled model should run without ignition.  Then the coupled model will create the fire model inputs, but the atmosphere state will not be disturbed by the fire in the coupled model.&lt;br /&gt;
&lt;br /&gt;
* The &#039;&#039;&#039;&amp;amp;fire&#039;&#039;&#039; section in &#039;&#039;&#039;namelist.input&#039;&#039;&#039; can change, and the fuel data including &#039;&#039;&#039;namelist.fire&#039;&#039;&#039; may also change.&lt;br /&gt;
&lt;br /&gt;
* At the moment, &#039;&#039;&#039;fire.exe&#039;&#039;&#039; is serial only.&lt;br /&gt;
&lt;br /&gt;
==Works with==&lt;br /&gt;
&lt;br /&gt;
* {{WRF-Fire-branch|jm2/devel}} {{WRF-Fire-commit|168fbfaa8a62061b51999001dc55162e2ac3a798|Oct 28 2011}}&lt;br /&gt;
* Tested with gfortran 4.4.4 and pgf90 11.9 on Linux, and gfortran 4.3.3 on OSX (from   [http://www.macports.org/ MacPorts]).&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
* [[SFIRE|Fire model interface and standalone code description]]&lt;br /&gt;
* [[SFIRE variables]]&lt;br /&gt;
&lt;br /&gt;
[[Category:WRF-Fire]]&lt;br /&gt;
[[Category:Howtos|Run the standalone fire model in WRF-Fire]]&lt;/div&gt;</summary>
		<author><name>Jmandel</name></author>
	</entry>
	<entry>
		<id>https://wiki.openwfm.org/index.php?title=How_to_run_the_standalone_fire_model_in_WRF-SFIRE&amp;diff=8370</id>
		<title>How to run the standalone fire model in WRF-SFIRE</title>
		<link rel="alternate" type="text/html" href="https://wiki.openwfm.org/index.php?title=How_to_run_the_standalone_fire_model_in_WRF-SFIRE&amp;diff=8370"/>
		<updated>2025-10-21T23:24:58Z</updated>

		<summary type="html">&lt;p&gt;Jmandel: /* Running the software */ update to SFIRE&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{users guide}}&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;UNDER CONSTRUCTION&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The fire code in WRF-SFIRE, called SFIRE (for Spread FIRE model), can be used independently without WRF, using only one-way atmosphere-fire coupling. WRF needs to run to create the atmospheric forcing first.  &lt;br /&gt;
&lt;br /&gt;
==Step by step instructions==&lt;br /&gt;
&lt;br /&gt;
===Building the software===&lt;br /&gt;
* [[How to get WRF-Fire|Download and build the coupled WRF fire software]] to create &#039;&#039;&#039;wrf.exe&#039;&#039;&#039; and leave the &#039;&#039;&#039;NETCDF&#039;&#039;&#039; environment variable set.&lt;br /&gt;
&lt;br /&gt;
* Change to the &#039;&#039;&#039;standalone&#039;&#039;&#039; directory.&lt;br /&gt;
&lt;br /&gt;
* Find a suitable &#039;&#039;&#039;make.inc.*&#039;&#039;&#039; file and soft-link it to &#039;&#039;&#039;make.inc&#039;&#039;&#039;, for example &#039;&#039;&#039;ln  -s make.inc.gfortran make.inc&#039;&#039;&#039; and type &#039;&#039;&#039;make&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Running the software===&lt;br /&gt;
&lt;br /&gt;
* Navigate to a directory with your example (such as &#039;&#039;&#039;test/em_sfire/hill&#039;&#039;&#039;). Make sure &#039;&#039;&#039;namelist.input&#039;&#039;&#039; specifies a short  &#039;&#039;&#039;history_interval_s&#039;&#039;&#039; (these will be the atmosphere states used by the fire model) and set large &#039;&#039;&#039;frames_per_outfile&#039;&#039;&#039; so that only one &#039;&#039;&#039;wrfout&#039;&#039;&#039; file is created.&lt;br /&gt;
&lt;br /&gt;
* Set up the problem by either &#039;&#039;&#039;ideal.exe&#039;&#039;&#039; or &#039;&#039;&#039;real.exe&#039;&#039;&#039; and run &#039;&#039;&#039;wrf.exe&#039;&#039;&#039; as usual. &lt;br /&gt;
&lt;br /&gt;
* Link or rename the created &#039;&#039;&#039;wrfout&#039;&#039;&#039; file to &#039;&#039;&#039;fire_input.nc&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Run &#039;&#039;&#039;fire.exe&#039;&#039;&#039; in the same directory. This will create the file &#039;&#039;&#039;fire_output.nc&#039;&#039;&#039; with the results.&lt;br /&gt;
&lt;br /&gt;
==How it works==&lt;br /&gt;
&lt;br /&gt;
* The standalone model &#039;&#039;&#039;fire.exe&#039;&#039;&#039; reads the fire model inputs from the &#039;&#039;&#039;wrfout&#039;&#039;&#039;, including interpolated wind fields &#039;&#039;&#039;UF&#039;&#039;&#039; and &#039;&#039;&#039;VF&#039;&#039;&#039;. Because the first frame in &#039;&#039;&#039;wrfout&#039;&#039;&#039; is created before the fire model is called and so those fields are not set yet, the fire model starts from the second frame. The atmosphere fields are interpolated linearly in time between the frames before they are passed to the fire model.&lt;br /&gt;
&lt;br /&gt;
* The file &#039;&#039;&#039;fire_output.nc&#039;&#039;&#039; has the same format as &#039;&#039;&#039;wrfout&#039;&#039;&#039; but it contains only the variables that are the fire model outputs and some other fields copied from &#039;&#039;&#039;wrfout&#039;&#039;&#039;, which are needed for visualization and interpreting the results. These include coordinates of the fire nodes in &#039;&#039;&#039;FXLONG&#039;&#039;&#039; and &#039;&#039;&#039;FXLAT&#039;&#039;&#039;, the time string &#039;&#039;&#039;Times&#039;&#039;&#039;, and the terrain height &#039;&#039;&#039;ZSF&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* The standalone model build compiles the fire model files from the &#039;&#039;&#039;WRFV3/phys&#039;&#039;&#039; directory, so if the fire model changes, the standalone model may have to be updated. However, the standalone model does not depend on  WRF directly. The code consists of 3 files:&lt;br /&gt;
** &#039;&#039;&#039;fire.F&#039;&#039;&#039; is the standalone model driver&lt;br /&gt;
** &#039;&#039;&#039;wrf_netcdf.F&#039;&#039;&#039; reads and writes {{wp|NetCDF|NetCDF}} files compatible with WRF&lt;br /&gt;
** &#039;&#039;&#039;wrf_fakes.F&#039;&#039;&#039; implements a very limited subset of WRF routines to avoid dependency&lt;br /&gt;
&lt;br /&gt;
*The files &#039;&#039;&#039;config_assigns.inc&#039;&#039;&#039; &#039;&#039;&#039;namelist_defaults.inc&#039;&#039;&#039; &#039;&#039;&#039;namelist_defines2.inc&#039;&#039;&#039; &#039;&#039;&#039;namelist_defines.inc&#039;&#039;&#039; &#039;&#039;&#039;namelist_statements.inc&#039;&#039;&#039; files are copied from WRF build to maintain compatibility with &#039;&#039;&#039;namelist.input&#039;&#039;&#039; in WRF. When the WRF registry changes, these files will need to be updated manually from the directory &#039;&#039;&#039;WRFV3/inc&#039;&#039;&#039; after WRF is built and committed again.&lt;br /&gt;
&lt;br /&gt;
==Remarks==&lt;br /&gt;
&lt;br /&gt;
* The results of the coupled model and the standalone model will not be identical, even if the coupled model runs the same fire, because the wind fields are interpolated between the frames for the standalone model. But the results should be close.&lt;br /&gt;
&lt;br /&gt;
* To simulate different fires in the standalone model, the coupled model should run without ignition.  Then the coupled model will create the fire model inputs, but the atmosphere state will not be disturbed by the fire in the coupled model.&lt;br /&gt;
&lt;br /&gt;
* The &#039;&#039;&#039;&amp;amp;fire&#039;&#039;&#039; section in &#039;&#039;&#039;namelist.input&#039;&#039;&#039; can change, and the fuel data including &#039;&#039;&#039;namelist.fire&#039;&#039;&#039; may also change.&lt;br /&gt;
&lt;br /&gt;
* At the moment, &#039;&#039;&#039;fire.exe&#039;&#039;&#039; is serial only.&lt;br /&gt;
&lt;br /&gt;
==Works with==&lt;br /&gt;
&lt;br /&gt;
* {{WRF-Fire-branch|jm2/devel}} {{WRF-Fire-commit|168fbfaa8a62061b51999001dc55162e2ac3a798|Oct 28 2011}}&lt;br /&gt;
* Tested with gfortran 4.4.4 and pgf90 11.9 on Linux, and gfortran 4.3.3 on OSX (from   [http://www.macports.org/ MacPorts]).&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
* [[SFIRE|Fire model interface and standalone code description]]&lt;br /&gt;
* [[SFIRE variables]]&lt;br /&gt;
&lt;br /&gt;
[[Category:WRF-Fire]]&lt;br /&gt;
[[Category:Howtos|Run the standalone fire model in WRF-Fire]]&lt;/div&gt;</summary>
		<author><name>Jmandel</name></author>
	</entry>
	<entry>
		<id>https://wiki.openwfm.org/index.php?title=How_to_run_the_standalone_fire_model_in_WRF-SFIRE&amp;diff=8369</id>
		<title>How to run the standalone fire model in WRF-SFIRE</title>
		<link rel="alternate" type="text/html" href="https://wiki.openwfm.org/index.php?title=How_to_run_the_standalone_fire_model_in_WRF-SFIRE&amp;diff=8369"/>
		<updated>2025-10-21T04:56:14Z</updated>

		<summary type="html">&lt;p&gt;Jmandel: UNDER CONSTRUCTION&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{users guide}}&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;UNDER CONSTRUCTION&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The fire code in WRF-SFIRE, called SFIRE (for Spread FIRE model), can be used independently without WRF, using only one-way atmosphere-fire coupling. WRF needs to run to create the atmospheric forcing first.  &lt;br /&gt;
&lt;br /&gt;
==Step by step instructions==&lt;br /&gt;
&lt;br /&gt;
===Building the software===&lt;br /&gt;
* [[How to get WRF-Fire|Download and build the coupled WRF fire software]] to create &#039;&#039;&#039;wrf.exe&#039;&#039;&#039; and leave the &#039;&#039;&#039;NETCDF&#039;&#039;&#039; environment variable set.&lt;br /&gt;
&lt;br /&gt;
* Change to the &#039;&#039;&#039;standalone&#039;&#039;&#039; directory.&lt;br /&gt;
&lt;br /&gt;
* Find a suitable &#039;&#039;&#039;make.inc.*&#039;&#039;&#039; file and soft-link it to &#039;&#039;&#039;make.inc&#039;&#039;&#039;, for example &#039;&#039;&#039;ln  -s make.inc.gfortran make.inc&#039;&#039;&#039; and type &#039;&#039;&#039;make&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Running the software===&lt;br /&gt;
&lt;br /&gt;
* Navigate to a directory with your example (such as &#039;&#039;&#039;WRFV3/test/em_fire/hill&#039;&#039;&#039;). Make sure &#039;&#039;&#039;namelist.input&#039;&#039;&#039; specifies a short  &#039;&#039;&#039;history_interval_s&#039;&#039;&#039; (these will be the atmosphere states used by the fire model) and set large &#039;&#039;&#039;frames_per_outfile&#039;&#039;&#039; so that only one &#039;&#039;&#039;wrfout&#039;&#039;&#039; file is created.&lt;br /&gt;
&lt;br /&gt;
* Set up the problem by either &#039;&#039;&#039;ideal.exe&#039;&#039;&#039; or &#039;&#039;&#039;real.exe&#039;&#039;&#039; and run &#039;&#039;&#039;wrf.exe&#039;&#039;&#039; as usual. &lt;br /&gt;
&lt;br /&gt;
* Link or rename the created &#039;&#039;&#039;wrfout&#039;&#039;&#039; file to &#039;&#039;&#039;fire_input.nc&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Run &#039;&#039;&#039;fire.exe&#039;&#039;&#039; in the same directory. This will create the file &#039;&#039;&#039;fire_output.nc&#039;&#039;&#039; with the results.&lt;br /&gt;
&lt;br /&gt;
==How it works==&lt;br /&gt;
&lt;br /&gt;
* The standalone model &#039;&#039;&#039;fire.exe&#039;&#039;&#039; reads the fire model inputs from the &#039;&#039;&#039;wrfout&#039;&#039;&#039;, including interpolated wind fields &#039;&#039;&#039;UF&#039;&#039;&#039; and &#039;&#039;&#039;VF&#039;&#039;&#039;. Because the first frame in &#039;&#039;&#039;wrfout&#039;&#039;&#039; is created before the fire model is called and so those fields are not set yet, the fire model starts from the second frame. The atmosphere fields are interpolated linearly in time between the frames before they are passed to the fire model.&lt;br /&gt;
&lt;br /&gt;
* The file &#039;&#039;&#039;fire_output.nc&#039;&#039;&#039; has the same format as &#039;&#039;&#039;wrfout&#039;&#039;&#039; but it contains only the variables that are the fire model outputs and some other fields copied from &#039;&#039;&#039;wrfout&#039;&#039;&#039;, which are needed for visualization and interpreting the results. These include coordinates of the fire nodes in &#039;&#039;&#039;FXLONG&#039;&#039;&#039; and &#039;&#039;&#039;FXLAT&#039;&#039;&#039;, the time string &#039;&#039;&#039;Times&#039;&#039;&#039;, and the terrain height &#039;&#039;&#039;ZSF&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* The standalone model build compiles the fire model files from the &#039;&#039;&#039;WRFV3/phys&#039;&#039;&#039; directory, so if the fire model changes, the standalone model may have to be updated. However, the standalone model does not depend on  WRF directly. The code consists of 3 files:&lt;br /&gt;
** &#039;&#039;&#039;fire.F&#039;&#039;&#039; is the standalone model driver&lt;br /&gt;
** &#039;&#039;&#039;wrf_netcdf.F&#039;&#039;&#039; reads and writes {{wp|NetCDF|NetCDF}} files compatible with WRF&lt;br /&gt;
** &#039;&#039;&#039;wrf_fakes.F&#039;&#039;&#039; implements a very limited subset of WRF routines to avoid dependency&lt;br /&gt;
&lt;br /&gt;
*The files &#039;&#039;&#039;config_assigns.inc&#039;&#039;&#039; &#039;&#039;&#039;namelist_defaults.inc&#039;&#039;&#039; &#039;&#039;&#039;namelist_defines2.inc&#039;&#039;&#039; &#039;&#039;&#039;namelist_defines.inc&#039;&#039;&#039; &#039;&#039;&#039;namelist_statements.inc&#039;&#039;&#039; files are copied from WRF build to maintain compatibility with &#039;&#039;&#039;namelist.input&#039;&#039;&#039; in WRF. When the WRF registry changes, these files will need to be updated manually from the directory &#039;&#039;&#039;WRFV3/inc&#039;&#039;&#039; after WRF is built and committed again.&lt;br /&gt;
&lt;br /&gt;
==Remarks==&lt;br /&gt;
&lt;br /&gt;
* The results of the coupled model and the standalone model will not be identical, even if the coupled model runs the same fire, because the wind fields are interpolated between the frames for the standalone model. But the results should be close.&lt;br /&gt;
&lt;br /&gt;
* To simulate different fires in the standalone model, the coupled model should run without ignition.  Then the coupled model will create the fire model inputs, but the atmosphere state will not be disturbed by the fire in the coupled model.&lt;br /&gt;
&lt;br /&gt;
* The &#039;&#039;&#039;&amp;amp;fire&#039;&#039;&#039; section in &#039;&#039;&#039;namelist.input&#039;&#039;&#039; can change, and the fuel data including &#039;&#039;&#039;namelist.fire&#039;&#039;&#039; may also change.&lt;br /&gt;
&lt;br /&gt;
* At the moment, &#039;&#039;&#039;fire.exe&#039;&#039;&#039; is serial only.&lt;br /&gt;
&lt;br /&gt;
==Works with==&lt;br /&gt;
&lt;br /&gt;
* {{WRF-Fire-branch|jm2/devel}} {{WRF-Fire-commit|168fbfaa8a62061b51999001dc55162e2ac3a798|Oct 28 2011}}&lt;br /&gt;
* Tested with gfortran 4.4.4 and pgf90 11.9 on Linux, and gfortran 4.3.3 on OSX (from   [http://www.macports.org/ MacPorts]).&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
* [[SFIRE|Fire model interface and standalone code description]]&lt;br /&gt;
* [[SFIRE variables]]&lt;br /&gt;
&lt;br /&gt;
[[Category:WRF-Fire]]&lt;br /&gt;
[[Category:Howtos|Run the standalone fire model in WRF-Fire]]&lt;/div&gt;</summary>
		<author><name>Jmandel</name></author>
	</entry>
	<entry>
		<id>https://wiki.openwfm.org/index.php?title=Satellite_Fire_Data_Products&amp;diff=8367</id>
		<title>Satellite Fire Data Products</title>
		<link rel="alternate" type="text/html" href="https://wiki.openwfm.org/index.php?title=Satellite_Fire_Data_Products&amp;diff=8367"/>
		<updated>2025-08-27T13:10:01Z</updated>

		<summary type="html">&lt;p&gt;Jmandel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Data]]&lt;br /&gt;
&lt;br /&gt;
== Satellite Fire Data Products ==&lt;br /&gt;
&lt;br /&gt;
This page summarizes the main satellite fire data products from MODIS, VIIRS, and GOES, with focus on Level 2 Active Fires. The goal is practical: to understand what the data contain, how they are structured, and how to use them.&lt;br /&gt;
&lt;br /&gt;
=== Processing Levels ===&lt;br /&gt;
&lt;br /&gt;
* Level 1 (L1B): Calibrated, geolocated radiances at native resolution.&lt;br /&gt;
* Level 2 (L2): Derived geophysical variables at the same resolution as L1 (e.g., fire masks, Fire Radiative Power).&lt;br /&gt;
* Level 3 (L3): Gridded or time-composited variables on standard grids (e.g., daily fire counts per 0.25° cell).&lt;br /&gt;
&lt;br /&gt;
=== Key Geometry Terms ===&lt;br /&gt;
&lt;br /&gt;
* Swath: The cross-track stripe observed as the sensor scans.&lt;br /&gt;
* Granule: The basic time chunk of data (e.g., 5–6 minutes for polar orbiters; 1–10 minutes for GOES sectors).&lt;br /&gt;
* Pixel: One sample from the sensor. Pixel size depends on instrument and grows off-nadir. VIIRS mitigates this with aggregation and &amp;quot;bow-tie deletion.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== MODIS Active Fires (Terra and Aqua) ===&lt;br /&gt;
&lt;br /&gt;
* Satellites: Terra (morning ~10:30, drifting earlier), Aqua (afternoon \~13:30).&lt;br /&gt;
* Orbit: Sun-synchronous near-polar, ~705 km altitude.&lt;br /&gt;
* Swath and granules: 2330 km wide swath, ~5 min granules.&lt;br /&gt;
* Resolution: 1 km at nadir, coarser off-nadir.&lt;br /&gt;
* Products: MOD14 (Terra), MYD14 (Aqua).&lt;br /&gt;
* Fields: Fire mask (low/nominal/high confidence), confidence 0–100%, FRP (MW), brightness temperatures, view geometry.&lt;br /&gt;
* Revisit: Two daily looks at mid-latitudes from both satellites combined.&lt;br /&gt;
&lt;br /&gt;
=== VIIRS Active Fires (S-NPP, NOAA-20, NOAA-21) ===&lt;br /&gt;
&lt;br /&gt;
* Satellites: Three polar orbiters in the JPSS constellation.&lt;br /&gt;
* Orbit: ~824 km altitude, ~13:30 LT ascending node.&lt;br /&gt;
* Swath and granules: 3060 km swath, 6 min granules.&lt;br /&gt;
* Resolution: 375 m (I-band), 750 m (M-band).&lt;br /&gt;
* Products: VNP14IMG (S-NPP), VJ114IMG (NOAA-20), VJ214IMG (NOAA-21).&lt;br /&gt;
* Fields: Fire mask, confidence %, FRP (MW), brightness temps, geometry.&lt;br /&gt;
* Revisit: Multiple looks/day, with ~25–50 min spacing between satellites. Both day (~13:30) and night (~01:30) coverage.&lt;br /&gt;
&lt;br /&gt;
=== GOES ABI Fire/Hot Spot Products ===&lt;br /&gt;
&lt;br /&gt;
* Satellites: GOES-East (GOES-19), GOES-West (GOES-18).&lt;br /&gt;
* Orbit: Geostationary at ~35,786 km.&lt;br /&gt;
* Resolution: 2 km at nadir for IR band 7 (3.9 µm).&lt;br /&gt;
* Cadence: 10 min full disk, 5 min CONUS, 1 min mesoscale.&lt;br /&gt;
* Product: Fire/Hot Spot Characterization (FHS/FDC).&lt;br /&gt;
* Fields: Fire mask codes (10/30 high confidence, 11/31 saturated, 12/32 cloud-contaminated, 13–15/33–35 lower probabilities), FRP (MW).&lt;br /&gt;
* Notes: Use mask codes 10,11,30,31 for conservative detection. Pixel locations not terrain-corrected, so offsets over mountains occur.&lt;br /&gt;
&lt;br /&gt;
=== Complementarity ===&lt;br /&gt;
&lt;br /&gt;
* MODIS: Coarser (1 km) but long record since 2000; provides morning and afternoon views.&lt;br /&gt;
* VIIRS: Finer (375 m), more frequent coverage with three satellites.&lt;br /&gt;
* GOES: Coarser (2 km) but provides rapid updates (1–10 min), enabling near-real-time fire behavior monitoring.&lt;br /&gt;
&lt;br /&gt;
=== Practical Usage Tips ===&lt;br /&gt;
&lt;br /&gt;
* Filter by confidence: MODIS/VIIRS high-confidence or ≥80%; GOES codes 10,11,30,31.&lt;br /&gt;
* Account for off-nadir pixel growth and location errors.&lt;br /&gt;
* Match granule timing to incident timelines (5 min MODIS, 6 min VIIRS, 1–10 min GOES).&lt;br /&gt;
* FRP is in MW per pixel, but uncertainty varies (higher for GOES lower-confidence classes).&lt;br /&gt;
&lt;br /&gt;
=== References ===&lt;br /&gt;
&lt;br /&gt;
* MODIS Active Fire Product (Collection 6.1): [https://lpdaac.usgs.gov/products/mod14v061/](https://lpdaac.usgs.gov/products/mod14v061/)&lt;br /&gt;
* VIIRS 375 m Active Fire Product: [https://lpdaac.usgs.gov/products/vnp14imgv001/](https://lpdaac.usgs.gov/products/vnp14imgv001/)&lt;br /&gt;
* VIIRS Algorithm Theoretical Basis Document: [https://lpdaac.usgs.gov/documents/197/VNP14\_User\_Guide\_V1.pdf](https://lpdaac.usgs.gov/documents/197/VNP14_User_Guide_V1.pdf)&lt;br /&gt;
* GOES ABI Fire/Hot Spot Characterization: [https://www.ospo.noaa.gov/Products/atmosphere/fire/](https://www.ospo.noaa.gov/Products/atmosphere/fire/)&lt;br /&gt;
* NASA EOSDIS Data Processing Levels: [https://earthdata.nasa.gov/faq/data-processing-levels](https://earthdata.nasa.gov/faq/data-processing-levels)&lt;/div&gt;</summary>
		<author><name>Jmandel</name></author>
	</entry>
	<entry>
		<id>https://wiki.openwfm.org/index.php?title=Satellite_Fire_Data_Products&amp;diff=8366</id>
		<title>Satellite Fire Data Products</title>
		<link rel="alternate" type="text/html" href="https://wiki.openwfm.org/index.php?title=Satellite_Fire_Data_Products&amp;diff=8366"/>
		<updated>2025-08-27T05:53:13Z</updated>

		<summary type="html">&lt;p&gt;Jmandel: markup&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Satellite Fire Data Products ==&lt;br /&gt;
&lt;br /&gt;
This page summarizes the main satellite fire data products from MODIS, VIIRS, and GOES, with focus on Level 2 Active Fires. The goal is practical: to understand what the data contain, how they are structured, and how to use them.&lt;br /&gt;
&lt;br /&gt;
=== Processing Levels ===&lt;br /&gt;
&lt;br /&gt;
* Level 1 (L1B): Calibrated, geolocated radiances at native resolution.&lt;br /&gt;
* Level 2 (L2): Derived geophysical variables at the same resolution as L1 (e.g., fire masks, Fire Radiative Power).&lt;br /&gt;
* Level 3 (L3): Gridded or time-composited variables on standard grids (e.g., daily fire counts per 0.25° cell).&lt;br /&gt;
&lt;br /&gt;
=== Key Geometry Terms ===&lt;br /&gt;
&lt;br /&gt;
* Swath: The cross-track stripe observed as the sensor scans.&lt;br /&gt;
* Granule: The basic time chunk of data (e.g., 5–6 minutes for polar orbiters; 1–10 minutes for GOES sectors).&lt;br /&gt;
* Pixel: One sample from the sensor. Pixel size depends on instrument and grows off-nadir. VIIRS mitigates this with aggregation and &amp;quot;bow-tie deletion.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== MODIS Active Fires (Terra and Aqua) ===&lt;br /&gt;
&lt;br /&gt;
* Satellites: Terra (morning ~10:30, drifting earlier), Aqua (afternoon \~13:30).&lt;br /&gt;
* Orbit: Sun-synchronous near-polar, ~705 km altitude.&lt;br /&gt;
* Swath and granules: 2330 km wide swath, ~5 min granules.&lt;br /&gt;
* Resolution: 1 km at nadir, coarser off-nadir.&lt;br /&gt;
* Products: MOD14 (Terra), MYD14 (Aqua).&lt;br /&gt;
* Fields: Fire mask (low/nominal/high confidence), confidence 0–100%, FRP (MW), brightness temperatures, view geometry.&lt;br /&gt;
* Revisit: Two daily looks at mid-latitudes from both satellites combined.&lt;br /&gt;
&lt;br /&gt;
=== VIIRS Active Fires (S-NPP, NOAA-20, NOAA-21) ===&lt;br /&gt;
&lt;br /&gt;
* Satellites: Three polar orbiters in the JPSS constellation.&lt;br /&gt;
* Orbit: ~824 km altitude, ~13:30 LT ascending node.&lt;br /&gt;
* Swath and granules: 3060 km swath, 6 min granules.&lt;br /&gt;
* Resolution: 375 m (I-band), 750 m (M-band).&lt;br /&gt;
* Products: VNP14IMG (S-NPP), VJ114IMG (NOAA-20), VJ214IMG (NOAA-21).&lt;br /&gt;
* Fields: Fire mask, confidence %, FRP (MW), brightness temps, geometry.&lt;br /&gt;
* Revisit: Multiple looks/day, with ~25–50 min spacing between satellites. Both day (~13:30) and night (~01:30) coverage.&lt;br /&gt;
&lt;br /&gt;
=== GOES ABI Fire/Hot Spot Products ===&lt;br /&gt;
&lt;br /&gt;
* Satellites: GOES-East (GOES-19), GOES-West (GOES-18).&lt;br /&gt;
* Orbit: Geostationary at ~35,786 km.&lt;br /&gt;
* Resolution: 2 km at nadir for IR band 7 (3.9 µm).&lt;br /&gt;
* Cadence: 10 min full disk, 5 min CONUS, 1 min mesoscale.&lt;br /&gt;
* Product: Fire/Hot Spot Characterization (FHS/FDC).&lt;br /&gt;
* Fields: Fire mask codes (10/30 high confidence, 11/31 saturated, 12/32 cloud-contaminated, 13–15/33–35 lower probabilities), FRP (MW).&lt;br /&gt;
* Notes: Use mask codes 10,11,30,31 for conservative detection. Pixel locations not terrain-corrected, so offsets over mountains occur.&lt;br /&gt;
&lt;br /&gt;
=== Complementarity ===&lt;br /&gt;
&lt;br /&gt;
* MODIS: Coarser (1 km) but long record since 2000; provides morning and afternoon views.&lt;br /&gt;
* VIIRS: Finer (375 m), more frequent coverage with three satellites.&lt;br /&gt;
* GOES: Coarser (2 km) but provides rapid updates (1–10 min), enabling near-real-time fire behavior monitoring.&lt;br /&gt;
&lt;br /&gt;
=== Practical Usage Tips ===&lt;br /&gt;
&lt;br /&gt;
* Filter by confidence: MODIS/VIIRS high-confidence or ≥80%; GOES codes 10,11,30,31.&lt;br /&gt;
* Account for off-nadir pixel growth and location errors.&lt;br /&gt;
* Match granule timing to incident timelines (5 min MODIS, 6 min VIIRS, 1–10 min GOES).&lt;br /&gt;
* FRP is in MW per pixel, but uncertainty varies (higher for GOES lower-confidence classes).&lt;br /&gt;
&lt;br /&gt;
=== References ===&lt;br /&gt;
&lt;br /&gt;
* MODIS Active Fire Product (Collection 6.1): [https://lpdaac.usgs.gov/products/mod14v061/](https://lpdaac.usgs.gov/products/mod14v061/)&lt;br /&gt;
* VIIRS 375 m Active Fire Product: [https://lpdaac.usgs.gov/products/vnp14imgv001/](https://lpdaac.usgs.gov/products/vnp14imgv001/)&lt;br /&gt;
* VIIRS Algorithm Theoretical Basis Document: [https://lpdaac.usgs.gov/documents/197/VNP14\_User\_Guide\_V1.pdf](https://lpdaac.usgs.gov/documents/197/VNP14_User_Guide_V1.pdf)&lt;br /&gt;
* GOES ABI Fire/Hot Spot Characterization: [https://www.ospo.noaa.gov/Products/atmosphere/fire/](https://www.ospo.noaa.gov/Products/atmosphere/fire/)&lt;br /&gt;
* NASA EOSDIS Data Processing Levels: [https://earthdata.nasa.gov/faq/data-processing-levels](https://earthdata.nasa.gov/faq/data-processing-levels)&lt;/div&gt;</summary>
		<author><name>Jmandel</name></author>
	</entry>
	<entry>
		<id>https://wiki.openwfm.org/index.php?title=Satellite_Fire_Data_Products&amp;diff=8365</id>
		<title>Satellite Fire Data Products</title>
		<link rel="alternate" type="text/html" href="https://wiki.openwfm.org/index.php?title=Satellite_Fire_Data_Products&amp;diff=8365"/>
		<updated>2025-08-27T05:51:20Z</updated>

		<summary type="html">&lt;p&gt;Jmandel: rm md **&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Satellite Fire Data Products ==&lt;br /&gt;
&lt;br /&gt;
This page summarizes the main satellite fire data products from MODIS, VIIRS, and GOES, with focus on Level 2 Active Fires. The goal is practical: to understand what the data contain, how they are structured, and how to use them.&lt;br /&gt;
&lt;br /&gt;
=== Processing Levels ===&lt;br /&gt;
&lt;br /&gt;
* Level 1 (L1B): Calibrated, geolocated radiances at native resolution.&lt;br /&gt;
* Level 2 (L2): Derived geophysical variables at the same resolution as L1 (e.g., fire masks, Fire Radiative Power).&lt;br /&gt;
* Level 3 (L3): Gridded or time-composited variables on standard grids (e.g., daily fire counts per 0.25° cell).&lt;br /&gt;
&lt;br /&gt;
=== Key Geometry Terms ===&lt;br /&gt;
&lt;br /&gt;
* Swath: The cross-track stripe observed as the sensor scans.&lt;br /&gt;
* Granule: The basic time chunk of data (e.g., 5–6 minutes for polar orbiters; 1–10 minutes for GOES sectors).&lt;br /&gt;
* Pixel: One sample from the sensor. Pixel size depends on instrument and grows off-nadir. VIIRS mitigates this with aggregation and &amp;quot;bow-tie deletion.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== MODIS Active Fires (Terra and Aqua) ===&lt;br /&gt;
&lt;br /&gt;
* Satellites: Terra (morning \~10:30, drifting earlier), Aqua (afternoon \~13:30).&lt;br /&gt;
* Orbit: Sun-synchronous near-polar, \~705 km altitude.&lt;br /&gt;
* Swath and granules: 2330 km wide swath, \~5 min granules.&lt;br /&gt;
* Resolution: 1 km at nadir, coarser off-nadir.&lt;br /&gt;
* Products: MOD14 (Terra), MYD14 (Aqua).&lt;br /&gt;
* Fields: Fire mask (low/nominal/high confidence), confidence 0–100%, FRP (MW), brightness temperatures, view geometry.&lt;br /&gt;
* Revisit: Two daily looks at mid-latitudes from both satellites combined.&lt;br /&gt;
&lt;br /&gt;
=== VIIRS Active Fires (S-NPP, NOAA-20, NOAA-21) ===&lt;br /&gt;
&lt;br /&gt;
* Satellites: Three polar orbiters in the JPSS constellation.&lt;br /&gt;
* Orbit: \~824 km altitude, \~13:30 LT ascending node.&lt;br /&gt;
* Swath and granules: 3060 km swath, 6 min granules.&lt;br /&gt;
* Resolution: 375 m (I-band), 750 m (M-band).&lt;br /&gt;
* Products: VNP14IMG (S-NPP), VJ114IMG (NOAA-20), VJ214IMG (NOAA-21).&lt;br /&gt;
* Fields: Fire mask, confidence %, FRP (MW), brightness temps, geometry.&lt;br /&gt;
* Revisit: Multiple looks/day, with \~25–50 min spacing between satellites. Both day (\~13:30) and night (\~01:30) coverage.&lt;br /&gt;
&lt;br /&gt;
=== GOES ABI Fire/Hot Spot Products ===&lt;br /&gt;
&lt;br /&gt;
* Satellites: GOES-East (GOES-19), GOES-West (GOES-18).&lt;br /&gt;
* Orbit: Geostationary at \~35,786 km.&lt;br /&gt;
* Resolution: 2 km at nadir for IR band 7 (3.9 µm).&lt;br /&gt;
* Cadence: 10 min full disk, 5 min CONUS, 1 min mesoscale.&lt;br /&gt;
* Product: Fire/Hot Spot Characterization (FHS/FDC).&lt;br /&gt;
* Fields: Fire mask codes (10/30 high confidence, 11/31 saturated, 12/32 cloud-contaminated, 13–15/33–35 lower probabilities), FRP (MW).&lt;br /&gt;
* Notes: Use mask codes 10,11,30,31 for conservative detection. Pixel locations not terrain-corrected, so offsets over mountains occur.&lt;br /&gt;
&lt;br /&gt;
=== Complementarity ===&lt;br /&gt;
&lt;br /&gt;
* MODIS: Coarser (1 km) but long record since 2000; provides morning and afternoon views.&lt;br /&gt;
* VIIRS: Finer (375 m), more frequent coverage with three satellites.&lt;br /&gt;
* GOES: Coarser (2 km) but provides rapid updates (1–10 min), enabling near-real-time fire behavior monitoring.&lt;br /&gt;
&lt;br /&gt;
=== Practical Usage Tips ===&lt;br /&gt;
&lt;br /&gt;
* Filter by confidence: MODIS/VIIRS high-confidence or ≥80%; GOES codes 10,11,30,31.&lt;br /&gt;
* Account for off-nadir pixel growth and location errors.&lt;br /&gt;
* Match granule timing to incident timelines (5 min MODIS, 6 min VIIRS, 1–10 min GOES).&lt;br /&gt;
* FRP is in MW per pixel, but uncertainty varies (higher for GOES lower-confidence classes).&lt;br /&gt;
&lt;br /&gt;
=== References ===&lt;br /&gt;
&lt;br /&gt;
* MODIS Active Fire Product (Collection 6.1): [https://lpdaac.usgs.gov/products/mod14v061/](https://lpdaac.usgs.gov/products/mod14v061/)&lt;br /&gt;
* VIIRS 375 m Active Fire Product: [https://lpdaac.usgs.gov/products/vnp14imgv001/](https://lpdaac.usgs.gov/products/vnp14imgv001/)&lt;br /&gt;
* VIIRS Algorithm Theoretical Basis Document: [https://lpdaac.usgs.gov/documents/197/VNP14\_User\_Guide\_V1.pdf](https://lpdaac.usgs.gov/documents/197/VNP14_User_Guide_V1.pdf)&lt;br /&gt;
* GOES ABI Fire/Hot Spot Characterization: [https://www.ospo.noaa.gov/Products/atmosphere/fire/](https://www.ospo.noaa.gov/Products/atmosphere/fire/)&lt;br /&gt;
* NASA EOSDIS Data Processing Levels: [https://earthdata.nasa.gov/faq/data-processing-levels](https://earthdata.nasa.gov/faq/data-processing-levels)&lt;/div&gt;</summary>
		<author><name>Jmandel</name></author>
	</entry>
	<entry>
		<id>https://wiki.openwfm.org/index.php?title=Satellite_Fire_Data_Products&amp;diff=8364</id>
		<title>Satellite Fire Data Products</title>
		<link rel="alternate" type="text/html" href="https://wiki.openwfm.org/index.php?title=Satellite_Fire_Data_Products&amp;diff=8364"/>
		<updated>2025-08-27T01:42:28Z</updated>

		<summary type="html">&lt;p&gt;Jmandel: from ChatGPT 5. Prompt: Provide a technical explanation of fire data products from satellites, particularly MODIS, VIIRS, GOES, with focus on Level 2 Active Fires data, concept of swath, granules, pixels, their numerical values, revisits, orbit design. Summarize differences between Level 1, 2 and 3 data. Approach: practical, for someone who needs to use and understand the data. Provide original references with links. Provide as a file for a simple wikimedia instal.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Satellite Fire Data Products ==&lt;br /&gt;
&lt;br /&gt;
This page summarizes the main satellite fire data products from MODIS, VIIRS, and GOES, with focus on Level 2 Active Fires. The goal is practical: to understand what the data contain, how they are structured, and how to use them.&lt;br /&gt;
&lt;br /&gt;
=== Processing Levels ===&lt;br /&gt;
&lt;br /&gt;
* **Level 1 (L1B)**: Calibrated, geolocated radiances at native resolution.&lt;br /&gt;
* **Level 2 (L2)**: Derived geophysical variables at the same resolution as L1 (e.g., fire masks, Fire Radiative Power).&lt;br /&gt;
* **Level 3 (L3)**: Gridded or time-composited variables on standard grids (e.g., daily fire counts per 0.25° cell).&lt;br /&gt;
&lt;br /&gt;
=== Key Geometry Terms ===&lt;br /&gt;
&lt;br /&gt;
* **Swath**: The cross-track stripe observed as the sensor scans.&lt;br /&gt;
* **Granule**: The basic time chunk of data (e.g., 5–6 minutes for polar orbiters; 1–10 minutes for GOES sectors).&lt;br /&gt;
* **Pixel**: One sample from the sensor. Pixel size depends on instrument and grows off-nadir. VIIRS mitigates this with aggregation and &amp;quot;bow-tie deletion.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== MODIS Active Fires (Terra and Aqua) ===&lt;br /&gt;
&lt;br /&gt;
* **Satellites**: Terra (morning \~10:30, drifting earlier), Aqua (afternoon \~13:30).&lt;br /&gt;
* **Orbit**: Sun-synchronous near-polar, \~705 km altitude.&lt;br /&gt;
* **Swath and granules**: 2330 km wide swath, \~5 min granules.&lt;br /&gt;
* **Resolution**: 1 km at nadir, coarser off-nadir.&lt;br /&gt;
* **Products**: MOD14 (Terra), MYD14 (Aqua).&lt;br /&gt;
* **Fields**: Fire mask (low/nominal/high confidence), confidence 0–100%, FRP (MW), brightness temperatures, view geometry.&lt;br /&gt;
* **Revisit**: Two daily looks at mid-latitudes from both satellites combined.&lt;br /&gt;
&lt;br /&gt;
=== VIIRS Active Fires (S-NPP, NOAA-20, NOAA-21) ===&lt;br /&gt;
&lt;br /&gt;
* **Satellites**: Three polar orbiters in the JPSS constellation.&lt;br /&gt;
* **Orbit**: \~824 km altitude, \~13:30 LT ascending node.&lt;br /&gt;
* **Swath and granules**: 3060 km swath, 6 min granules.&lt;br /&gt;
* **Resolution**: 375 m (I-band), 750 m (M-band).&lt;br /&gt;
* **Products**: VNP14IMG (S-NPP), VJ114IMG (NOAA-20), VJ214IMG (NOAA-21).&lt;br /&gt;
* **Fields**: Fire mask, confidence %, FRP (MW), brightness temps, geometry.&lt;br /&gt;
* **Revisit**: Multiple looks/day, with \~25–50 min spacing between satellites. Both day (\~13:30) and night (\~01:30) coverage.&lt;br /&gt;
&lt;br /&gt;
=== GOES ABI Fire/Hot Spot Products ===&lt;br /&gt;
&lt;br /&gt;
* **Satellites**: GOES-East (GOES-19), GOES-West (GOES-18).&lt;br /&gt;
* **Orbit**: Geostationary at \~35,786 km.&lt;br /&gt;
* **Resolution**: 2 km at nadir for IR band 7 (3.9 µm).&lt;br /&gt;
* **Cadence**: 10 min full disk, 5 min CONUS, 1 min mesoscale.&lt;br /&gt;
* **Product**: Fire/Hot Spot Characterization (FHS/FDC).&lt;br /&gt;
* **Fields**: Fire mask codes (10/30 high confidence, 11/31 saturated, 12/32 cloud-contaminated, 13–15/33–35 lower probabilities), FRP (MW).&lt;br /&gt;
* **Notes**: Use mask codes 10,11,30,31 for conservative detection. Pixel locations not terrain-corrected, so offsets over mountains occur.&lt;br /&gt;
&lt;br /&gt;
=== Complementarity ===&lt;br /&gt;
&lt;br /&gt;
* **MODIS**: Coarser (1 km) but long record since 2000; provides morning and afternoon views.&lt;br /&gt;
* **VIIRS**: Finer (375 m), more frequent coverage with three satellites.&lt;br /&gt;
* **GOES**: Coarser (2 km) but provides rapid updates (1–10 min), enabling near-real-time fire behavior monitoring.&lt;br /&gt;
&lt;br /&gt;
=== Practical Usage Tips ===&lt;br /&gt;
&lt;br /&gt;
* Filter by confidence: MODIS/VIIRS high-confidence or ≥80%; GOES codes 10,11,30,31.&lt;br /&gt;
* Account for off-nadir pixel growth and location errors.&lt;br /&gt;
* Match granule timing to incident timelines (5 min MODIS, 6 min VIIRS, 1–10 min GOES).&lt;br /&gt;
* FRP is in MW per pixel, but uncertainty varies (higher for GOES lower-confidence classes).&lt;br /&gt;
&lt;br /&gt;
=== References ===&lt;br /&gt;
&lt;br /&gt;
* MODIS Active Fire Product (Collection 6.1): [https://lpdaac.usgs.gov/products/mod14v061/](https://lpdaac.usgs.gov/products/mod14v061/)&lt;br /&gt;
* VIIRS 375 m Active Fire Product: [https://lpdaac.usgs.gov/products/vnp14imgv001/](https://lpdaac.usgs.gov/products/vnp14imgv001/)&lt;br /&gt;
* VIIRS Algorithm Theoretical Basis Document: [https://lpdaac.usgs.gov/documents/197/VNP14\_User\_Guide\_V1.pdf](https://lpdaac.usgs.gov/documents/197/VNP14_User_Guide_V1.pdf)&lt;br /&gt;
* GOES ABI Fire/Hot Spot Characterization: [https://www.ospo.noaa.gov/Products/atmosphere/fire/](https://www.ospo.noaa.gov/Products/atmosphere/fire/)&lt;br /&gt;
* NASA EOSDIS Data Processing Levels: [https://earthdata.nasa.gov/faq/data-processing-levels](https://earthdata.nasa.gov/faq/data-processing-levels)&lt;/div&gt;</summary>
		<author><name>Jmandel</name></author>
	</entry>
	<entry>
		<id>https://wiki.openwfm.org/index.php?title=Contact&amp;diff=8363</id>
		<title>Contact</title>
		<link rel="alternate" type="text/html" href="https://wiki.openwfm.org/index.php?title=Contact&amp;diff=8363"/>
		<updated>2025-08-09T22:34:17Z</updated>

		<summary type="html">&lt;p&gt;Jmandel: updated&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Jan_th.jpg|left|caption]]&lt;br /&gt;
&#039;&#039;&#039;Jan Mandel&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Professor Emeritus | Research Professor | HPC System Administrator /&amp;gt;&lt;br /&gt;
Department of Mathematical Sciences&amp;lt;br /&amp;gt;&lt;br /&gt;
University of Colorado Denver&lt;br /&gt;
&lt;br /&gt;
[mailto:Jan.Mandel@gmail.com Jan.Mandel@gmail.com]&lt;br /&gt;
[mailto:Jan.Mandel@ucdenver.edu Jan.Mandel@ucdenver.edu]&lt;br /&gt;
&lt;br /&gt;
[[Category:Contents]]&lt;/div&gt;</summary>
		<author><name>Jmandel</name></author>
	</entry>
	<entry>
		<id>https://wiki.openwfm.org/index.php?title=MediaWiki:Vector-2022.css&amp;diff=8362</id>
		<title>MediaWiki:Vector-2022.css</title>
		<link rel="alternate" type="text/html" href="https://wiki.openwfm.org/index.php?title=MediaWiki:Vector-2022.css&amp;diff=8362"/>
		<updated>2025-08-07T17:59:01Z</updated>

		<summary type="html">&lt;p&gt;Jmandel: 97.5&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Static contained banner above content */&lt;br /&gt;
body.skin-vector-2022 .mw-page-container::before {&lt;br /&gt;
  content: &amp;quot;&amp;quot;;&lt;br /&gt;
  display: block;&lt;br /&gt;
  width: 100%;&lt;br /&gt;
  height: 97.5px; /* or adjust as needed */&lt;br /&gt;
  background: url(&amp;quot;/images/c/cb/Openwfm.png&amp;quot;) no-repeat center center;&lt;br /&gt;
  background-size: contain;&lt;br /&gt;
  background-color: #fff; /* optional, ensures clean base */&lt;br /&gt;
  margin-bottom: -2em;&lt;br /&gt;
  margin-top: -1em;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Jmandel</name></author>
	</entry>
	<entry>
		<id>https://wiki.openwfm.org/index.php?title=MediaWiki:Vector-2022.css&amp;diff=8361</id>
		<title>MediaWiki:Vector-2022.css</title>
		<link rel="alternate" type="text/html" href="https://wiki.openwfm.org/index.php?title=MediaWiki:Vector-2022.css&amp;diff=8361"/>
		<updated>2025-08-07T17:58:27Z</updated>

		<summary type="html">&lt;p&gt;Jmandel: 98&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Static contained banner above content */&lt;br /&gt;
body.skin-vector-2022 .mw-page-container::before {&lt;br /&gt;
  content: &amp;quot;&amp;quot;;&lt;br /&gt;
  display: block;&lt;br /&gt;
  width: 100%;&lt;br /&gt;
  height: 98px; /* or adjust as needed */&lt;br /&gt;
  background: url(&amp;quot;/images/c/cb/Openwfm.png&amp;quot;) no-repeat center center;&lt;br /&gt;
  background-size: contain;&lt;br /&gt;
  background-color: #fff; /* optional, ensures clean base */&lt;br /&gt;
  margin-bottom: -2em;&lt;br /&gt;
  margin-top: -1em;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Jmandel</name></author>
	</entry>
	<entry>
		<id>https://wiki.openwfm.org/index.php?title=MediaWiki:Vector-2022.css&amp;diff=8360</id>
		<title>MediaWiki:Vector-2022.css</title>
		<link rel="alternate" type="text/html" href="https://wiki.openwfm.org/index.php?title=MediaWiki:Vector-2022.css&amp;diff=8360"/>
		<updated>2025-08-07T17:57:20Z</updated>

		<summary type="html">&lt;p&gt;Jmandel: Now too small, changing to height: 97pt, To flush page cache on Firefox: shift-command-R, on Safari shift-reload in url window.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Static contained banner above content */&lt;br /&gt;
body.skin-vector-2022 .mw-page-container::before {&lt;br /&gt;
  content: &amp;quot;&amp;quot;;&lt;br /&gt;
  display: block;&lt;br /&gt;
  width: 100%;&lt;br /&gt;
  height: 97px; /* or adjust as needed */&lt;br /&gt;
  background: url(&amp;quot;/images/c/cb/Openwfm.png&amp;quot;) no-repeat center center;&lt;br /&gt;
  background-size: contain;&lt;br /&gt;
  background-color: #fff; /* optional, ensures clean base */&lt;br /&gt;
  margin-bottom: -2em;&lt;br /&gt;
  margin-top: -1em;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Jmandel</name></author>
	</entry>
</feed>