1 function ros=fire_ros(fuel,speed,tanphi,fmc_g, adjr0, adjrw, adjrs)
2 % ros=fire_ros(fuel,speed,tanphi)
3 % ros=fire_ros(fuel,speed,tanphi,fmc_g)
5 % fuel fuel description structure
8 % fmc_g optional, if not empty overrides fuelmc_g from the fuel description
9 % adjr0, adjrw, adjrs optional, adjustment factors for r0, slope factor, wind factor
15 windrf=fuel.windrf; % WIND REDUCTION FACTOR
16 fgi=fuel.fgi; % INITIAL TOTAL MASS OF SURFACE FUEL (KG/M**2)
17 fueldepthm=fuel.fueldepthm; % FUEL DEPTH (M)
18 savr=fuel.savr; % FUEL PARTICLE SURFACE-AREA-TO-VOLUME RATIO, 1/FT
19 fuelmce=fuel.fuelmce; % MOISTURE CONTENT OF EXTINCTION
20 fueldens=fuel.fueldens; % OVENDRY PARTICLE DENSITY, LB/FT^3
21 st=fuel.st; % FUEL PARTICLE TOTAL MINERAL CONTENT
22 se=fuel.se; % FUEL PARTICLE EFFECTIVE MINERAL CONTENT
23 weight=fuel.weight; % WEIGHTING PARAMETER THAT DETERMINES THE SLOPE OF THE MASS LOSS CURVE
24 fci_d=fuel.fci_d; % INITIAL DRY MASS OF CANOPY FUEL
25 fct=fuel.fct; % BURN OUT TIME FOR CANOPY FUEL, AFTER DRY (S)
26 ichap=fuel.ichap; % 1 if chaparral, 0 if not
27 fci=fuel.fci; % INITIAL TOTAL MASS OF CANOPY FUEL
28 fcbr=fuel.fcbr; % FUEL CANOPY BURN RATE (KG/M**2/S)
29 hfgl=fuel.hfgl; % SURFACE FIRE HEAT FLUX THRESHOLD TO IGNITE CANOPY (W/m^2)
30 cmbcnst=fuel.cmbcnst; % JOULES PER KG OF DRY FUEL
31 fuelheat=fuel.fuelheat; % FUEL PARTICLE LOW HEAT CONTENT, BTU/LB
32 fuelmc_g=fuel.fuelmc_g; % FUEL PARTICLE (SURFACE) MOISTURE CONTENT, jm: 1 by weight?
33 fuelmc_c=fuel.fuelmc_c; % FUEL PARTICLE (CANOPY) MOISTURE CONTENT, 1
35 % optional arguments defaults
36 if nargin>=4 && ~isempty(fmc_g) % override moisture content by given
45 % computations from CAWFE code: wf2_janice/fire_startup.m4
47 bmst = fuelmc_g/(1+fuelmc_g); % jm: 1
48 fuelheat = cmbcnst * 4.30e-04; % convert J/kg to BTU/lb
49 fci = (1.+fuelmc_c)*fci_d;
50 fuelloadm= (1.-bmst) * fgi; % fuelload without moisture
51 % jm: 1.-bmst = 1/(1+fuelmc_g) so fgi includes moisture?
52 fuelload = fuelloadm * (.3048)^2 * 2.205; % to lb/ft^2
53 fueldepth= fueldepthm/0.3048; % to ft
54 betafl = fuelload/(fueldepth * fueldens);% packing ratio jm: lb/ft^2/(ft * lb*ft^3) = 1
55 betaop = 3.348 * savr^(-0.8189); % optimum packing ratio jm: units??
56 qig = 250. + 1116.*fuelmc_g; % heat of preignition, btu/lb
57 epsilon = exp(-138./savr ); % effective heating number
58 rhob = fuelload/fueldepth; % ovendry bulk density, lb/ft^3
59 c = 7.47 * exp(-0.133 * savr^0.55); % const in wind coef
60 bbb = 0.02526 * savr^0.54; % const in wind coef
61 c = c * windrf^bbb; % jm: wind reduction from 20ft per Baughman&Albini(1980)
62 e = 0.715 * exp( -3.59e-4 * savr); % const in wind coef
63 phiwc = c * (betafl/betaop)^(-e);
65 gammax = rtemp2/(495. + 0.0594*rtemp2); % maximum rxn vel, 1/min
66 a = 1./(4.774 * savr^0.1 - 7.27); % coef for optimum rxn vel
67 ratio = betafl/betaop;
68 gamma = gammax*(ratio^a)*exp(a*(1.-ratio)); % optimum rxn vel, 1/min
69 wn = fuelload/(1 + st); % net fuel loading, lb/ft^2
70 rtemp1 = fuelmc_g/fuelmce;
71 etam = 1.-2.59*rtemp1 +5.11*rtemp1^2 -3.52*rtemp1^3; % moist damp coef
72 etas = 0.174* se^(-0.19); % mineral damping coef
73 ir = gamma * wn * fuelheat * etam * etas; % rxn intensity,btu/ft^2 min
74 irm = ir * 1055./( 0.3048^2 * 60.) * 1.e-6;% for mw/m^2 (set but not used)
75 xifr = exp( (0.792 + 0.681*savr^0.5)...
76 * (betafl+0.1)) /(192. + 0.2595*savr); % propagating flux ratio
77 % ... r_0 is the spread rate for a fire on flat ground with no wind.
78 r_0 = ir*xifr/(rhob * epsilon *qig); % default spread rate in ft/min
80 % computations from CAWFE code: wf2_janice/fire_ros.m4
83 % ... if wind is 0 or into fireline, phiw = 0, &this reduces to backing ros.
84 spdms = max(speed,0.);
85 umidm = min(spdms,30.); % max input wind spd is 30 m/s !param!
86 umid = umidm * 196.850; % m/s to ft/min
87 % eqn.: phiw = c * umid**bbb * (betafl/betaop)**(-e) ! wind coef
88 phiw = umid^bbb * phiwc; % wind coef
89 phis = 5.275 * betafl^(-0.3) *max(0,tanphi)^2; % slope factor
90 %ros = r_0 * (1. + phiw + phis) * .00508; % spread rate, m/s
91 ros = ((r_0 * adjr0) + ((r_0 * phiw * adjrw)) + ((r_0 * phis * adjrs))) * .00508;
92 %ros = r_0 + ((r_0 * phiw * fuel_adjw)) + ((r_0 * phis * fuel_adjs))
94 % Multiply the vars by the adjustment factors before I put in in the
97 % .... spread rate has no dependency on fuel character, only windspeed.
98 spdms = max(speed,0.);
99 ros = max(.03333,1.2974 * spdms^1.41); % spread rate, m/s