Difference between revisions of "Fuel moisture model"
(16 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
{{users guide}} | {{users guide}} | ||
+ | [[Category:WRF-Fire merge]] | ||
Fire spread rate depends strongly on the moisture contents of the fuel. In fact, the spread rate drops to zero when the moisture reaches the so-called extinction value [[File:Grass-fmc.png|right|400px|Dependence of fire spread rate (with zero wind and slope) on fuel moisture. The spread rate becomes zero when the fuel moisture equals the extinction moisture, here 0.25.]] For this reason, we have coupled the fire spread model with a simple fuel moisture model integrated with WRF and SFIRE. The model takes atmospheric state from WRF and provides fuel moisture to SFIRE. | Fire spread rate depends strongly on the moisture contents of the fuel. In fact, the spread rate drops to zero when the moisture reaches the so-called extinction value [[File:Grass-fmc.png|right|400px|Dependence of fire spread rate (with zero wind and slope) on fuel moisture. The spread rate becomes zero when the fuel moisture equals the extinction moisture, here 0.25.]] For this reason, we have coupled the fire spread model with a simple fuel moisture model integrated with WRF and SFIRE. The model takes atmospheric state from WRF and provides fuel moisture to SFIRE. | ||
Line 6: | Line 7: | ||
The fuel is considered to consist of components - called ''moisture classes'' here - such as those with standard 1, 10, and 100 hour lag time. Each fuel category is a mixture of the moisture classes with the proportions given per the fuel category. The temperature and the relative humidity of the air (from the WRF atmosphere model) determine the fuel equilibrium moisture contents. In each class, the moisture contents approaches the equilibrium exponentially in time, with 63% of the difference gone within the given time lag if the equilibrium is constant in time. This is modeled by a standard time-lag differential equation and the class moisture contents generally tracks a time-varying equilibrium with a delay. To model hysteresis effects, there is a higher drying equilibrium and a lower wetting equilibrium; when the fuel moisture is between the two, it does not change. The equilibria are computed from the atmospheric state from WRF. During rain, the equilibrium moisture is replaced by the saturation moisture contents, and the time lag depends on rain intensity. If the rain intensity is under the given rain threshold, no rain wetting (soaking) takes place. For more intense rain, the time lag decreases and approaches the given soaking time lag exponentially, with 63% of the asymptotic value achieved at a given saturation rain intensity. | The fuel is considered to consist of components - called ''moisture classes'' here - such as those with standard 1, 10, and 100 hour lag time. Each fuel category is a mixture of the moisture classes with the proportions given per the fuel category. The temperature and the relative humidity of the air (from the WRF atmosphere model) determine the fuel equilibrium moisture contents. In each class, the moisture contents approaches the equilibrium exponentially in time, with 63% of the difference gone within the given time lag if the equilibrium is constant in time. This is modeled by a standard time-lag differential equation and the class moisture contents generally tracks a time-varying equilibrium with a delay. To model hysteresis effects, there is a higher drying equilibrium and a lower wetting equilibrium; when the fuel moisture is between the two, it does not change. The equilibria are computed from the atmospheric state from WRF. During rain, the equilibrium moisture is replaced by the saturation moisture contents, and the time lag depends on rain intensity. If the rain intensity is under the given rain threshold, no rain wetting (soaking) takes place. For more intense rain, the time lag decreases and approaches the given soaking time lag exponentially, with 63% of the asymptotic value achieved at a given saturation rain intensity. | ||
− | The moisture classes are modeled on the atmospheric grid, then interpolated to fire grid points and combined in proportions given the fuel category at the fire grid point. | + | The moisture classes are modeled on the atmospheric grid, then interpolated to fire grid points and combined in proportions given the fuel category at the fire grid point. The moisture model can run with time step larger than the fire model time step. The numerical method used is stable for arbitrarily large time steps and exact if the equilibrium moisture is constant for the duration of the time step. |
==Calibration of rain wetting== | ==Calibration of rain wetting== | ||
Line 13: | Line 14: | ||
[[Image:finefuels.png|400px]] [[Image:timelag.png|400px]] | [[Image:finefuels.png|400px]] [[Image:timelag.png|400px]] | ||
− | The parameters of the moisture model are set in [[namelist.fire] | + | ==Configuration== |
+ | |||
+ | The moisture properties of the fuels are defined in the '''&moisture''' section of the file [[namelist.fire]]. The parameters of the moisture model itself are set in the '''&fire''' section of file '''[[namelist.input]]'''. See an example in [https://github.com/jbeezley/wrf-fire/blob/4c0851085eeb25d9143bd5b07e736fe949700497/wrfv2_fire/test/em_fire/moisture '''test/em_fire/moisture''']. | ||
+ | |||
+ | The treatment of moisture consists of two parts which can be activated independently, and can run also independently of the fire model itself. | ||
+ | |||
+ | # The moisture model, which creates the values in the array '''fmc_gc''', at the atmosphere mesh resolution. '''fmc_gc(i,k,j)''' is the moisture contents in the class '''k''' at the point '''(i,j)'''. The model is turned on by '''fmoist_run=.true.''' in '''namelist.input'''. | ||
+ | # Interpolation to the fire mesh and averaging with weights between the moisture classes to turn the array '''fmc_gc''' into '''fmc_g''' at the fire mesh resolution, which is used in the fire model. This is turned on by '''fmoist_interp=.true.''' in '''namelist.input'''. | ||
+ | # If '''fmoist_only=.true.''' in '''namelist.input''', either or both of the above can run but the fire model itself is turned off. The resulting values of '''fmc_gc''' or '''fmc_g''' are available in '''wrfout''' files. | ||
+ | |||
+ | The fuel moisture in '''fmc_g''' can be also set directly to scalar constant '''fuelmc_g''' from '''namelist.fire''' by specifying '''fire_fmc_read=1''' in '''namelist.input'''. This setting conflicts with using the moisture model. Some valid combinations are: | ||
+ | |||
+ | {| border="1" style="text-align:center" | ||
+ | |- | ||
+ | | '''fmoist_run''' | ||
+ | | '''fmoist_interp''' | ||
+ | | '''fmoist_only''' | ||
+ | | '''fire_fmc_read''' | ||
+ | | Function | ||
+ | |- | ||
+ | | .true. | ||
+ | | .true. | ||
+ | | .false. | ||
+ | | 0 | ||
+ | | Run the fuel moisture model, create the arrays '''fmc_gc''' and '''fmc_g''', and use '''fmc_g''' in the fire model. | ||
+ | |- | ||
+ | | .true. | ||
+ | | .true. | ||
+ | | .true. | ||
+ | | 0 | ||
+ | | Run the fuel moisture model and create the arrays '''fmc_gc''' and '''fmc_g''' in '''wrfout''' only, the fire model does not run. | ||
+ | |- | ||
+ | | .true. | ||
+ | | .false. | ||
+ | | .true. | ||
+ | | 0 | ||
+ | | Run the fuel moisture model and create the array '''fmc_gc''' in '''wrfout''' only, the fire model does not run. | ||
+ | |- | ||
+ | | .false. | ||
+ | | .true. | ||
+ | | .false. | ||
+ | | 0 | ||
+ | | Interpolate the fuel moisture fields '''fmc_gc''' from '''wrfinput''' to '''fmc_g''' and use it in the fire model. | ||
+ | |- | ||
+ | | .false. | ||
+ | | .false. | ||
+ | | .false. | ||
+ | | 0 | ||
+ | | Run the fire model using the fuel moisture map '''fmc_g''' from '''wrfinput'''. | ||
+ | |- | ||
+ | | .false. | ||
+ | | .false. | ||
+ | | .false. | ||
+ | | 1 | ||
+ | | Run the fire model using the same fuel moisture '''fmc_g=fuelmc_g''' everywhere, as given in '''namelist.fire'''. | ||
+ | |} | ||
− | = | + | When the fire model runs ( '''fmoist_run=.true.'''), the initial values of '''fmc_gc''' need to be specified. This is done for each moisture class separately by specifying the values of '''fmc_gc_initialization''' in the '''&moisture''' section of '''namelist.fire''': |
− | + | '''fmc_gc_initialization=0''': from '''wrfinput''', '''=1''':from '''fuelmc_g''', '''=2''': from equilibrium | |
==Standalone moisture model== | ==Standalone moisture model== | ||
Line 27: | Line 83: | ||
where '''Time''' is the time from the start of the run, '''T''' the temperature, '''Q''' the air moisture contents, and '''RAIN''' the rain intensity. | where '''Time''' is the time from the start of the run, '''T''' the temperature, '''Q''' the air moisture contents, and '''RAIN''' the rain intensity. | ||
− | '''make moisture''' will build '''moisture.exe''' | + | '''make moisture''' will build '''moisture.exe''' which will take existing '''wrfout''' files as input, use the atmospheric state to run the moisture model, and write the resulting fuel moisture class fields to file '''moisture.nc'''. The resulting frames of '''fmc_gc''' are meant be copied from '''moisture.nc''' to '''wrfinput''' by user's code (for example, using our ncread and ncreplace utilities in matlab). |
==References== | ==References== | ||
+ | |||
+ | * J. Mandel, S. Amram, J. D. Beezley, G. Kelman, A. K. Kochanski, V. Y. Kondratenko, B. H. Lynn, B. Regev, M. Vejmelka, 2014. '''Recent advances and applications of WRF–SFIRE.''' Natural Hazards and Earth System Science, 14, 2829-2845, 2014, {{doi|10.5194/nhess-14-2829-2014}}. [http://www.nat-hazards-earth-syst-sci.net/special_issue193.html Special Issue ''Numerical wildland combustion, from the flame to the atmosphere''], [http://anridea.univ-corse.fr/cargese2013 Numerical Wildfires, Cargèse, France, May 13–18, 2013]. | ||
* Adam K. Kochanski, Jonathan D. Beezley, Jan Mandel, and Minjeong Kim, '''WRF fire simulation coupled with a fuel moisture model and smoke transport by WRF-Chem''', [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}} | * Adam K. Kochanski, Jonathan D. Beezley, Jan Mandel, and Minjeong Kim, '''WRF fire simulation coupled with a fuel moisture model and smoke transport by WRF-Chem''', [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}} | ||
* Jan Mandel, J.D. Beezley, A. K. Kochanski, V. Y. Kondratenko, and M. Kim, '''Assimilation of Perimeter Data and Coupling with Fuel Moisture in a Wildland Fire - Atmosphere DDDAS''', ICCS 2012, [http://dx.doi.org/10.1016/j.procs.2012.04.119 Procedia Computer Science 9, 2012, 1100-1109] | * Jan Mandel, J.D. Beezley, A. K. Kochanski, V. Y. Kondratenko, and M. Kim, '''Assimilation of Perimeter Data and Coupling with Fuel Moisture in a Wildland Fire - Atmosphere DDDAS''', ICCS 2012, [http://dx.doi.org/10.1016/j.procs.2012.04.119 Procedia Computer Science 9, 2012, 1100-1109] |
Latest revision as of 20:36, 17 February 2019
- Back to the WRF-SFIRE user guide.
Fire spread rate depends strongly on the moisture contents of the fuel. In fact, the spread rate drops to zero when the moisture reaches the so-called extinction value
For this reason, we have coupled the fire spread model with a simple fuel moisture model integrated with WRF and SFIRE. The model takes atmospheric state from WRF and provides fuel moisture to SFIRE.
Fuel moisture model description
The fuel is considered to consist of components - called moisture classes here - such as those with standard 1, 10, and 100 hour lag time. Each fuel category is a mixture of the moisture classes with the proportions given per the fuel category. The temperature and the relative humidity of the air (from the WRF atmosphere model) determine the fuel equilibrium moisture contents. In each class, the moisture contents approaches the equilibrium exponentially in time, with 63% of the difference gone within the given time lag if the equilibrium is constant in time. This is modeled by a standard time-lag differential equation and the class moisture contents generally tracks a time-varying equilibrium with a delay. To model hysteresis effects, there is a higher drying equilibrium and a lower wetting equilibrium; when the fuel moisture is between the two, it does not change. The equilibria are computed from the atmospheric state from WRF. During rain, the equilibrium moisture is replaced by the saturation moisture contents, and the time lag depends on rain intensity. If the rain intensity is under the given rain threshold, no rain wetting (soaking) takes place. For more intense rain, the time lag decreases and approaches the given soaking time lag exponentially, with 63% of the asymptotic value achieved at a given saturation rain intensity.
The moisture classes are modeled on the atmospheric grid, then interpolated to fire grid points and combined in proportions given the fuel category at the fire grid point. The moisture model can run with time step larger than the fire model time step. The numerical method used is stable for arbitrarily large time steps and exact if the equilibrium moisture is constant for the duration of the time step.
Calibration of rain wetting
The default rain wetting coefficients were fitted for fine fuels (10 hour moisture class) for the Canadian fire danger rating system. Both pictures show the increase of fuel moisture over 24 hours for a given rain intensity.
Configuration
The moisture properties of the fuels are defined in the &moisture section of the file namelist.fire. The parameters of the moisture model itself are set in the &fire section of file namelist.input. See an example in test/em_fire/moisture.
The treatment of moisture consists of two parts which can be activated independently, and can run also independently of the fire model itself.
- The moisture model, which creates the values in the array fmc_gc, at the atmosphere mesh resolution. fmc_gc(i,k,j) is the moisture contents in the class k at the point (i,j). The model is turned on by fmoist_run=.true. in namelist.input.
- Interpolation to the fire mesh and averaging with weights between the moisture classes to turn the array fmc_gc into fmc_g at the fire mesh resolution, which is used in the fire model. This is turned on by fmoist_interp=.true. in namelist.input.
- If fmoist_only=.true. in namelist.input, either or both of the above can run but the fire model itself is turned off. The resulting values of fmc_gc or fmc_g are available in wrfout files.
The fuel moisture in fmc_g can be also set directly to scalar constant fuelmc_g from namelist.fire by specifying fire_fmc_read=1 in namelist.input. This setting conflicts with using the moisture model. Some valid combinations are:
fmoist_run | fmoist_interp | fmoist_only | fire_fmc_read | Function |
.true. | .true. | .false. | 0 | Run the fuel moisture model, create the arrays fmc_gc and fmc_g, and use fmc_g in the fire model. |
.true. | .true. | .true. | 0 | Run the fuel moisture model and create the arrays fmc_gc and fmc_g in wrfout only, the fire model does not run. |
.true. | .false. | .true. | 0 | Run the fuel moisture model and create the array fmc_gc in wrfout only, the fire model does not run. |
.false. | .true. | .false. | 0 | Interpolate the fuel moisture fields fmc_gc from wrfinput to fmc_g and use it in the fire model. |
.false. | .false. | .false. | 0 | Run the fire model using the fuel moisture map fmc_g from wrfinput. |
.false. | .false. | .false. | 1 | Run the fire model using the same fuel moisture fmc_g=fuelmc_g everywhere, as given in namelist.fire. |
When the fire model runs ( fmoist_run=.true.), the initial values of fmc_gc need to be specified. This is done for each moisture class separately by specifying the values of fmc_gc_initialization in the &moisture section of namelist.fire:
fmc_gc_initialization=0: from wrfinput, =1:from fuelmc_g, =2: from equilibrium
Standalone moisture model
make moisture_test in the standalone directory will create moisture_test.exe. Like all other standalone codes, the build process pulls the original sources in the WRF source tree. Running moisture_test.exe will exercise the moisture model. The input is from file moisture_input.txt (provided in the directory), which is a flat text file with the format
- Time(h) T(K) P(Pa) Q(kg/kg) RAIN(mm/h)
where Time is the time from the start of the run, T the temperature, Q the air moisture contents, and RAIN the rain intensity.
make moisture will build moisture.exe which will take existing wrfout files as input, use the atmospheric state to run the moisture model, and write the resulting fuel moisture class fields to file moisture.nc. The resulting frames of fmc_gc are meant be copied from moisture.nc to wrfinput by user's code (for example, using our ncread and ncreplace utilities in matlab).
References
- J. Mandel, S. Amram, J. D. Beezley, G. Kelman, A. K. Kochanski, V. Y. Kondratenko, B. H. Lynn, B. Regev, M. Vejmelka, 2014. Recent advances and applications of WRF–SFIRE. Natural Hazards and Earth System Science, 14, 2829-2845, 2014, doi:10.5194/nhess-14-2829-2014. Special Issue Numerical wildland combustion, from the flame to the atmosphere, Numerical Wildfires, Cargèse, France, May 13–18, 2013.
- Adam K. Kochanski, Jonathan D. Beezley, Jan Mandel, and Minjeong Kim, WRF fire simulation coupled with a fuel moisture model and smoke transport by WRF-Chem, 2012 WRF Users Workshop, Poster 51 abstract paper arXiv:1208.1059
- Jan Mandel, J.D. Beezley, A. K. Kochanski, V. Y. Kondratenko, and M. Kim, Assimilation of Perimeter Data and Coupling with Fuel Moisture in a Wildland Fire - Atmosphere DDDAS, ICCS 2012, Procedia Computer Science 9, 2012, 1100-1109