Difference between revisions of "Vertical wind interpolation"
(options) |
({{users guide}}) |
||
(15 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
+ | {{users guide}} | ||
==Vertical log interpolation and wind reduction factors== | ==Vertical log interpolation and wind reduction factors== | ||
− | The wind speed that enters the spread rate formula is found by vertical interpolation to a specified height '''fwh''', sometimes called ''midflame height'', using the ideal logarithmic wind profile: the wind speed at height '''z''' is assumed to be proportional to log '''z/z<sub>0</sub>''', where '''z<sub>0</sub>''' is the ''roughness height'' (clearly, this is the height where the wind speed is zero). The special logarithmic interpolation we use preserves such functions just like linear interpolation preserves linear functions. The numbers '''fwh''' and ''' | + | The wind speed that enters the spread rate formula is found by vertical interpolation to a specified height '''fwh''', sometimes called ''midflame height'', using the ideal logarithmic wind profile: the wind speed at height '''z''' is assumed to be proportional to log '''z/z<sub>0</sub>''', where '''z<sub>0</sub>''' is the ''roughness height'' (clearly, this is the height where the wind speed is zero). The special logarithmic interpolation we use preserves such functions just like linear interpolation preserves linear functions. The numbers '''fwh''' and '''z<sub>0</sub>''' need to be known at every point of the fire mesh. |
− | In [[BEHAVE]], the wind is measured at | + | In [[BEHAVE]], the wind is measured at 20ft (6.096m) and log interpolated to the midflame height. The interpolation is the same as multiplying the wind speed by a given ''wind reduction factor'' ([http://www.firemodels.org/downloads/behaveplus/publications/Baughman_and_Albini_1980_6thConFireForMet_EstMidflamWind.pdf Baughman and Albini, 1980]), which we denote by '''windrf'''. |
− | See [http://www.geosci-model-dev.net/4/591/2011/gmd-4-591-2011.html Mandel et al. 2011] Sec. 5.2 for more details. | + | See [http://www.geosci-model-dev.net/4/591/2011/gmd-4-591-2011.html Mandel et al. 2011] Sec. 5.2 for more details. |
==Implementation== | ==Implementation== | ||
Line 16: | Line 17: | ||
==Data input== | ==Data input== | ||
− | In WRF, the roughness height '''z0''' is specified by the surface model in land use. This is typically taken from file [https://github.com/jbeezley/wrf-fire/blob/e062dbf62b7591e71a486a7c512efd75e48ed9a1/wrfv2_fire/run/LANDUSE.TBL LANDUSE.TBL]. The values of the midflame height '''fwh''', the fuel roughness height '''fz0''', | + | In WRF, the roughness height '''z0''' is specified by the surface model in land use. This is typically taken from file [https://github.com/jbeezley/wrf-fire/blob/e062dbf62b7591e71a486a7c512efd75e48ed9a1/wrfv2_fire/run/LANDUSE.TBL LANDUSE.TBL]. The values of the midflame height '''fwh''', the fuel roughness height '''fz0''', the wind reduction factors '''windrf''' for each fuel category, and the BEHAVE height '''fire_wind_height''', are specified in the file [https://github.com/jbeezley/wrf-fire/blob/e062dbf62b7591e71a486a7c512efd75e48ed9a1/wrfv2_fire/test/em_fire/small/namelist.fire '''namelist.fire'''] as a part of the fuel properties. If these values are not given in the file, the [https://github.com/jbeezley/wrf-fire/blob/e062dbf62b7591e71a486a7c512efd75e48ed9a1/wrfv2_fire/phys/module_fr_sfire_phys.F#L93 defaults] in the code apply. |
Note that the roughness height '''z0''' from land use and '''fz0''' will be generally different, and besides they are given on different meshes. | Note that the roughness height '''z0''' from land use and '''fz0''' will be generally different, and besides they are given on different meshes. | ||
Line 29: | Line 30: | ||
</pre> | </pre> | ||
− | + | Supported combinations of the options are listed below. In particular, do not use '''fire_use_windrf'''=1, which is for experiments only. | |
− | |||
− | |||
===Interpolation to common height and wind reduction factors=== | ===Interpolation to common height and wind reduction factors=== | ||
Line 39: | Line 38: | ||
===Interpolation to different heights on the fire mesh=== | ===Interpolation to different heights on the fire mesh=== | ||
− | The following group of combinations of options controls the interpolation by the wind reduction factor '''windrf'''; '''fwh''' is not used | + | The following group of combinations of options controls the interpolation by the wind reduction factor '''windrf'''; '''fwh''' is not used. |
− | * '''fire_wind_log_interp'''=1, '''fire_use_windrf'''=2: use the roughness height '''fz0''' from fuel categories, ignore '''fwh''' and [https://github.com/jbeezley/wrf-fire/blob/e062dbf62b7591e71a486a7c512efd75e48ed9a1/wrfv2_fire/phys/module_fr_sfire_atm.F#L786 set it automatically] to the height that corresponds to the given '''windrf'''. | + | * '''fire_wind_log_interp'''=1, '''fire_use_windrf'''=2: use the roughness height '''fz0''' from fuel categories, ignore '''fwh''' and [https://github.com/jbeezley/wrf-fire/blob/e062dbf62b7591e71a486a7c512efd75e48ed9a1/wrfv2_fire/phys/module_fr_sfire_atm.F#L786 set it automatically] to the height that corresponds to the given '''windrf'''. |
* '''fire_wind_log_interp'''=2, '''fire_use_windrf'''=2: the same, but using roughness height '''z0''' interpolated from land use as piecewise constant, ignore '''fz0'''. | * '''fire_wind_log_interp'''=2, '''fire_use_windrf'''=2: the same, but using roughness height '''z0''' interpolated from land use as piecewise constant, ignore '''fz0'''. | ||
* '''fire_wind_log_interp'''=3, '''fire_use_windrf'''=2: the same, but using roughness height '''z0''' interpolated from land use as piecewise bilinear, ignore '''fz0'''. | * '''fire_wind_log_interp'''=3, '''fire_use_windrf'''=2: the same, but using roughness height '''z0''' interpolated from land use as piecewise bilinear, ignore '''fz0'''. | ||
− | The combinations of options below control the interpolation by the midflame height '''fwh''', and all three will produce similar results; '''windrf''' is not used. | + | The above options will produce similar results as the interpolation to common height and using wind reduction factors; the only difference is from the wind not obeying the log profile exactly. In particular, if the first WRF level is above the '''fire_wind_height''' (of 6.096m, which is usually the case), these three option will give ''the same result as the interpolation on the atmospheric mesh and multiplication by the wind reduction factors'', except for slight differences caused by a different technique used for the interpolation of the atmospheric variables, and by rounding errors. |
+ | |||
+ | The combinations of options below control the interpolation by the midflame height '''fwh''', and all three will again produce similar results; '''windrf''' is not used. | ||
* '''fire_wind_log_interp'''=1, '''fire_use_windrf'''=0: Use the values of '''fwh''' and '''fz0''' as given. | * '''fire_wind_log_interp'''=1, '''fire_use_windrf'''=0: Use the values of '''fwh''' and '''fz0''' as given. | ||
Line 51: | Line 52: | ||
* '''fire_wind_log_interp'''=3, '''fire_use_windrf'''=3: Interpolate '''z0''' as piecewise bilinear and adjust '''fwh''' for a similar result as with '''fz0'''. | * '''fire_wind_log_interp'''=3, '''fire_use_windrf'''=3: Interpolate '''z0''' as piecewise bilinear and adjust '''fwh''' for a similar result as with '''fz0'''. | ||
− | The adjustment of '''fwh''' is done by first [https://github.com/jbeezley/wrf-fire/blob/e062dbf62b7591e71a486a7c512efd75e48ed9a1/wrfv2_fire/phys/module_fr_sfire_atm.F#L809 computing] the wind reduction factor when going from '''fire_wind_height''' to the given height '''fwh''' with the given roughness '''fz0''', then [https://github.com/jbeezley/wrf-fire/blob/e062dbf62b7591e71a486a7c512efd75e48ed9a1/wrfv2_fire/phys/module_fr_sfire_atm.F#L809 | + | The adjustment of '''fwh''' is done by first [https://github.com/jbeezley/wrf-fire/blob/e062dbf62b7591e71a486a7c512efd75e48ed9a1/wrfv2_fire/phys/module_fr_sfire_atm.F#L809 computing] the wind reduction factor when going from '''fire_wind_height''' to the given height '''fwh''' with the given roughness '''fz0''', then [https://github.com/jbeezley/wrf-fire/blob/e062dbf62b7591e71a486a7c512efd75e48ed9a1/wrfv2_fire/phys/module_fr_sfire_atm.F#L809 changing] '''fwh''' to the value that corresponds to the same wind reduction factor but with the interpolated '''z0'''. |
+ | |||
+ | ==Diagnostics== | ||
+ | |||
+ | You can use function [https://github.com/jbeezley/wrf-fire/blob/e062dbf62b7591e71a486a7c512efd75e48ed9a1/other/Matlab/vis3d/vprofile.m '''vprofile'''] in [[Matlab]] ('''cd em_fire''', '''matlab''', help '''vprofile''') to view the resulting wind profiles and the computed value of '''fwh'''. See [[How to visualize vertical profiles from WRF in Matlab]] for details. | ||
==References== | ==References== | ||
Line 57: | Line 62: | ||
#Jan Mandel, Jonathan D. Beezley, and Adam K. Kochanski, [http://www.geosci-model-dev.net/4/591/2011/gmd-4-591-2011.html '''Coupled atmosphere-wildland fire modeling with WRF 3.3 and SFIRE 2011'''], [http://www.geoscientific-model-development.net Geoscientific Model Development (GMD)] 4, 591-610, 2011. {{doi|10.5194/gmd-4-591-2011}} | #Jan Mandel, Jonathan D. Beezley, and Adam K. Kochanski, [http://www.geosci-model-dev.net/4/591/2011/gmd-4-591-2011.html '''Coupled atmosphere-wildland fire modeling with WRF 3.3 and SFIRE 2011'''], [http://www.geoscientific-model-development.net Geoscientific Model Development (GMD)] 4, 591-610, 2011. {{doi|10.5194/gmd-4-591-2011}} | ||
− | == | + | ==Works with== |
− | * {{WRF-Fire-commit|e062dbf62b7591e71a48|SFIRE July 31, 2011}} | + | * {{WRF-Fire-commit|e062dbf62b7591e71a48|SFIRE July 31, 2011}}. In particular, note that these options are not present in WRF-Fire in WRF 3.3 release; the interpolation to different heights on the fire mesh was not implemented yet, and the wind factors were [[Changes in WRF-Fire 3.3 release|removed from the release]]. |
* Matlab 2011a | * Matlab 2011a | ||
[[Category:WRF-Fire]] | [[Category:WRF-Fire]] |
Latest revision as of 05:15, 2 August 2011
- Back to the WRF-SFIRE user guide.
Vertical log interpolation and wind reduction factors
The wind speed that enters the spread rate formula is found by vertical interpolation to a specified height fwh, sometimes called midflame height, using the ideal logarithmic wind profile: the wind speed at height z is assumed to be proportional to log z/z0, where z0 is the roughness height (clearly, this is the height where the wind speed is zero). The special logarithmic interpolation we use preserves such functions just like linear interpolation preserves linear functions. The numbers fwh and z0 need to be known at every point of the fire mesh.
In BEHAVE, the wind is measured at 20ft (6.096m) and log interpolated to the midflame height. The interpolation is the same as multiplying the wind speed by a given wind reduction factor (Baughman and Albini, 1980), which we denote by windrf.
See Mandel et al. 2011 Sec. 5.2 for more details.
Implementation
In the code, we thus have two choices:
- Interpolate to 6.096m and apply the wind reduction factors. This is much simpler and faster.
- Interpolate the wind at each point of the fire mesh to the midflame height at that point separately. This is more complicated.
The vertical interpolation is somewhat complicated because of the way how WRF represents the wind speed and the vertical coordinate. In particular, because the altitude of nodes in WRF changes during the run, the number of vertical levels needed for the interpolation is not known in advance.
Data input
In WRF, the roughness height z0 is specified by the surface model in land use. This is typically taken from file LANDUSE.TBL. The values of the midflame height fwh, the fuel roughness height fz0, the wind reduction factors windrf for each fuel category, and the BEHAVE height fire_wind_height, are specified in the file namelist.fire as a part of the fuel properties. If these values are not given in the file, the defaults in the code apply.
Note that the roughness height z0 from land use and fz0 will be generally different, and besides they are given on different meshes.
Options
The interpolation mode is controlled by the values of the variables fire_wind_log_interp and fire_use_windrf in the file namelist.input:
fire_wind_log_interp = 1, ! 1 = from fuel categores, 2= roughness piecewise constant from atm, 3=bilinear from atm, 4=on atmosphere mesh fire_use_windrf=2, ! if fire_wind_log_interp.ne.4: 0=ignore wind reduction factors, 1=multiply, 2=use to set fwh, 3=adjust fwh for z0
Supported combinations of the options are listed below. In particular, do not use fire_use_windrf=1, which is for experiments only.
Interpolation to common height and wind reduction factors
- fire_wind_log_interp=4, fire_use_windrf is not used: vertical log interpolation on the atmospheric mesh to fire_wind_height with z0 from land use, the interpolated wind speed is then multiplied by windrf at every fire mesh node. The values of fwh and fz0 are ignored.
Interpolation to different heights on the fire mesh
The following group of combinations of options controls the interpolation by the wind reduction factor windrf; fwh is not used.
- fire_wind_log_interp=1, fire_use_windrf=2: use the roughness height fz0 from fuel categories, ignore fwh and set it automatically to the height that corresponds to the given windrf.
- fire_wind_log_interp=2, fire_use_windrf=2: the same, but using roughness height z0 interpolated from land use as piecewise constant, ignore fz0.
- fire_wind_log_interp=3, fire_use_windrf=2: the same, but using roughness height z0 interpolated from land use as piecewise bilinear, ignore fz0.
The above options will produce similar results as the interpolation to common height and using wind reduction factors; the only difference is from the wind not obeying the log profile exactly. In particular, if the first WRF level is above the fire_wind_height (of 6.096m, which is usually the case), these three option will give the same result as the interpolation on the atmospheric mesh and multiplication by the wind reduction factors, except for slight differences caused by a different technique used for the interpolation of the atmospheric variables, and by rounding errors.
The combinations of options below control the interpolation by the midflame height fwh, and all three will again produce similar results; windrf is not used.
- fire_wind_log_interp=1, fire_use_windrf=0: Use the values of fwh and fz0 as given.
- fire_wind_log_interp=2, fire_use_windrf=3: Interpolate z0 as piecewise constant and adjust fwh for a similar result as with fz0.
- fire_wind_log_interp=3, fire_use_windrf=3: Interpolate z0 as piecewise bilinear and adjust fwh for a similar result as with fz0.
The adjustment of fwh is done by first computing the wind reduction factor when going from fire_wind_height to the given height fwh with the given roughness fz0, then changing fwh to the value that corresponds to the same wind reduction factor but with the interpolated z0.
Diagnostics
You can use function vprofile in Matlab (cd em_fire, matlab, help vprofile) to view the resulting wind profiles and the computed value of fwh. See How to visualize vertical profiles from WRF in Matlab for details.
References
- Robert G. Baughman and Frank A. Albini, Estimating Midflame Windspeeds, Sixth Conference on Fire and Forest Meteorology, Seattle, WA April 22-24, 1980, pp. 88-92 pdf
- Jan Mandel, Jonathan D. Beezley, and Adam K. Kochanski, Coupled atmosphere-wildland fire modeling with WRF 3.3 and SFIRE 2011, Geoscientific Model Development (GMD) 4, 591-610, 2011. doi:10.5194/gmd-4-591-2011
Works with
- SFIRE July 31, 2011. In particular, note that these options are not present in WRF-Fire in WRF 3.3 release; the interpolation to different heights on the fire mesh was not implemented yet, and the wind factors were removed from the release.
- Matlab 2011a