Difference between revisions of "Vertical wind interpolation"

From openwfm
Jump to navigation Jump to search
({{users guide}})
 
(6 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 '''z<sub>0</sub>''' need to be known at every point of the fire mesh.
 
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 the 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'' '''windrf''' ([http://www.firemodels.org/downloads/behaveplus/publications/Baughman_and_Albini_1980_6thConFireForMet_EstMidflamWind.pdf Baughman and Albini, 1980]).
+
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.
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''', and 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.
+
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>
  
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.
+
Supported combinations of the options are listed below. In particular, do not use '''fire_use_windrf'''=1, which is for experiments only.
 
 
Supported options and their combinations 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.  variables, and by rounding errors.
+
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'''.
Line 45: Line 44:
 
*  '''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 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 atmospheric
+
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.
 
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.
  
Line 53: Line 53:
  
 
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'''.
 
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==

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:

  1. Interpolate to 6.096m and apply the wind reduction factors. This is much simpler and faster.
  2. 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

  1. 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
  2. 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