9#include "LookupTable.h"
10#include "StandardFuel.h"
11#ifdef DEBUG_FUEL_VARIABLE
21[[nodiscard]]
constexpr bool calculate_is_green(
const int nd)
28static constexpr int START_GREENING = -43;
29[[nodiscard]]
constexpr int calculate_grass_curing(
const int nd)
31 const auto curing = (nd < START_GREENING)
40 : static_cast<int>(52.5042 - 1.07324 * nd);
41 return max(0, min(100, curing));
43[[nodiscard]]
static MathSize
44 calculate_surface_fuel_consumption_mixed_or_c2(
const MathSize bui)
noexcept
46 return 5.0 * (1.0 - exp(-0.0115 * bui));
48static const util::LookupTable<&calculate_surface_fuel_consumption_mixed_or_c2>
49 SURFACE_FUEL_CONSUMPTION_MIXED_OR_C2{};
50[[nodiscard]]
static MathSize
51 calculate_surface_fuel_consumption_d1(
const MathSize bui)
noexcept
53 return 1.5 * (1.0 - exp(-0.0183 * bui));
55static util::LookupTable<&calculate_surface_fuel_consumption_d1>
56 SURFACE_FUEL_CONSUMPTION_D1{};
69template <
int A,
int B,
int C,
int Bui0,
int Cbh,
int Cfl,
int BulkDensity,
int InorganicPercent,
int DuffDepth>
71 :
public StandardFuel<A, B, C, Bui0, Cbh, Cfl, BulkDensity, InorganicPercent, DuffDepth>
81 using StandardFuel<A, B, C, Bui0, Cbh, Cfl, BulkDensity, InorganicPercent, DuffDepth>
::
90 const MathSize isi)
const noexcept override
96 * spread.slopeFactor());
106 const MathSize isi)
const noexcept override
123template <
int A,
int B,
int C,
int Bui0,
int Cbh,
int Cfl,
int BulkDensity,
int InorganicPercent,
int DuffDepth>
125 :
public FuelNonMixed<A, B, C, Bui0, Cbh, Cfl, BulkDensity, InorganicPercent, DuffDepth>
146 const Duff* duff_ffmc,
147 const Duff* duff_dmc)
148 :
FuelNonMixed<A, B, C, Bui0, Cbh, Cfl, BulkDensity, InorganicPercent, DuffDepth>(
code,
180[[nodiscard]]
static MathSize
181 calculate_surface_fuel_consumption_jackpine(
182 const MathSize bui)
noexcept
184 return 5.0 * pow(1.0 - exp(-0.0164 * bui), 2.24);
190static util::LookupTable<&calculate_surface_fuel_consumption_jackpine>
191 SURFACE_FUEL_CONSUMPTION_JACKPINE{};
203template <
int A,
int B,
int C,
int Bui0,
int Cbh,
int Cfl,
int BulkDensity,
int DuffDepth>
205 :
public FuelConifer<A, B, C, Bui0, Cbh, Cfl, BulkDensity, 15, DuffDepth>
214 using FuelConifer<A, B, C, Bui0, Cbh, Cfl, BulkDensity, 15, DuffDepth>::FuelConifer;
221 const SpreadInfo& spread)
const noexcept override
223 return SURFACE_FUEL_CONSUMPTION_JACKPINE(spread.bui().asValue());
231[[nodiscard]]
static MathSize
232 calculate_surface_fuel_consumption_pine(
const MathSize bui)
noexcept
234 return 5.0 * pow(1.0 - exp(-0.0149 * bui), 2.48);
241static util::LookupTable<&calculate_surface_fuel_consumption_pine>
242 SURFACE_FUEL_CONSUMPTION_PINE{};
254template <
int A,
int B,
int C,
int Bui0,
int Cbh,
int Cfl,
int BulkDensity,
int DuffDepth>
264 using FuelConifer<A, B, C, Bui0, Cbh, Cfl, BulkDensity, 15, DuffDepth>::FuelConifer;
271 const SpreadInfo& spread)
const noexcept override
273 return SURFACE_FUEL_CONSUMPTION_PINE(spread.bui().asValue());
308 const SpreadInfo& spread)
const noexcept override
310 return SURFACE_FUEL_CONSUMPTION_D1(spread.bui().asValue());
320 MathSize ros_multiplier,
321 MathSize isi)
const noexcept;
336template <
int A,
int B,
int C,
int Bui0,
int RosMultiplier,
int PercentMixed,
int BulkDensity,
int InorganicPercent,
int DuffDepth>
338 :
public StandardFuel<A, B, C, Bui0, 6, 80, BulkDensity, InorganicPercent, DuffDepth>
356 :
StandardFuel<A, B, C, Bui0, 6, 80, BulkDensity, InorganicPercent, DuffDepth>(
code,
370 const SpreadInfo& spread)
const noexcept override
372 return SURFACE_FUEL_CONSUMPTION_MIXED_OR_C2(spread.bui().asValue());
390 const MathSize isi)
const noexcept override
402 const MathSize isi)
const noexcept override
413 return PercentMixed / 100.0;
421 return 1.0 - (PercentMixed / 100.0);
430 return RosMultiplier / 10.0;
438 [[nodiscard]]
static MathSize
440 const MathSize isi)
noexcept
455template <
int A,
int B,
int C,
int Bui0,
int RosMultiplier,
int PercentDeadFir>
457 :
public FuelMixed<A, B, C, Bui0, RosMultiplier, PercentDeadFir, 61, 15, 75>
475 :
FuelMixed<A, B, C, Bui0, RosMultiplier, PercentDeadFir, 61, 15, 75>(
code,
486template <
int RosMultiplier,
int RatioMixed>
488 :
public FuelMixed<110, 282, 150, 50, RosMultiplier, RatioMixed, 108, 25, 50>
504 :
FuelMixed<110, 282, 150, 50, RosMultiplier, RatioMixed, 108, 25, 50>(
code,
515 const SpreadInfo& spread)
const noexcept override
518 + this->
ratioDeciduous() * SURFACE_FUEL_CONSUMPTION_D1(spread.bui().asValue());
524[[nodiscard]]
static constexpr MathSize
525 calculate_length_to_breadth_grass(
const MathSize ws)
noexcept
527 return ws < 1.0 ? 1.0 : (1.1 * pow(ws, 0.464));
532static util::LookupTable<calculate_length_to_breadth_grass> LENGTH_TO_BREADTH_GRASS{};
538[[nodiscard]]
static constexpr MathSize
539 calculate_base_multiplier_curing(
const MathSize curing)
noexcept
541 return (curing >= 58.8)
542 ? (0.176 + 0.02 * (curing - 58.8))
543 : (0.005 * expm1(0.061 * curing));
549static util::LookupTable<&calculate_base_multiplier_curing> BASE_MULTIPLIER_CURING{};
556template <
int A,
int B,
int C>
558 :
public StandardFuel<A, B, C, 1, 0, 0, 0, 0, static_cast<int>(DUFF_FFMC_DEPTH * 10.0)>
577 :
StandardFuel<A, B, C, 1, 0, 0, 0, 0, static_cast<int>(DUFF_FFMC_DEPTH * 10.0)>(
code,
592 return DEFAULT_GRASS_FUEL_LOAD;
603 : calculate_grass_curing(nd);
623 const MathSize isi)
const noexcept override
627 const auto mu_not_zero = max(0.001, mu);
639 const MathSize isi)
const noexcept override
651 return LENGTH_TO_BREADTH_GRASS(ws);
661 const MathSize isi)
const noexcept
663 return multiplier * this->
rosBasic(isi);
698 const SpreadInfo& spread)
const noexcept override;
729 const SpreadInfo& spread)
const noexcept override;
839 MathSize rss)
const noexcept override;
870 const SpreadInfo& spread)
const noexcept override;
903 const SpreadInfo& spread)
const noexcept override;
913 MathSize isi)
const noexcept override;
919template <
int PercentConifer>
943template <
int PercentConifer>
967template <
int PercentDeadFir>
993template <
int PercentDeadFir>
1001 FuelM4& operator=(
const FuelM4& rhs)
noexcept =
delete;
1070template <
int A,
int B,
int C,
int Bui0,
int FfcA,
int FfcB,
int WfcA,
int WfcB,
int BulkDensity>
1091 const Duff* duff_ffmc,
1092 const Duff* duff_dmc)
1106 const SpreadInfo& spread)
const noexcept override
1108 return ffcA() * (1.0 - exp(
ffcB() * spread.bui().asValue()))
1109 +
wfcA() * (1.0 - exp(
wfcB() * spread.bui().asValue()));
1116 [[nodiscard]]
static constexpr MathSize
ffcA()
1124 [[nodiscard]]
static constexpr MathSize
ffcB()
1126 return FfcB / 10000.0;
1132 [[nodiscard]]
static constexpr MathSize
wfcA()
1140 [[nodiscard]]
static constexpr MathSize
wfcB()
1142 return WfcB / 10000.0;
1157 FuelS1& operator=(
const FuelS1& rhs)
noexcept =
delete;
1182 FuelS2& operator=(
const FuelS2& rhs)
noexcept =
delete;
1207 FuelS3& operator=(
const FuelS3& rhs)
noexcept =
delete;
1223template <
class FuelSpring,
class FuelSummer>
1225template <
class FuelSpring,
class FuelSummer>
1226[[nodiscard]]
const FuelType& find_fuel_by_season(
const int nd,
1229 FuelSummer>& fuel)
noexcept
1232 return calculate_is_green(nd)
1236template <
class FuelSpring,
class FuelSummer>
1237[[nodiscard]] MathSize compare_by_season(
const FuelVariable<FuelSpring, FuelSummer>& fuel,
1238 const function<MathSize(
const FuelType&)>& fct)
1242 const auto for_spring = fct(fuel.spring());
1243#ifdef DEBUG_FUEL_VARIABLE
1244 const auto for_summer = fct(fuel.summer());
1245 logging::check_fatal(for_spring != for_summer,
"Expected spring and summer cfb to be identical");
1254template <
class FuelSpring,
class FuelSummer>
1270 const bool can_crown,
1271 const FuelSpring*
const spring,
1272 const FuelSummer*
const summer)
1287 [[nodiscard]] MathSize
buiEffect(MathSize bui)
const override
1289 return compare_by_season(*
this, [bui](
const FuelType& fuel) {
return fuel.
buiEffect(bui); });
1297 return compare_by_season(*
this, [&nd, &wx](
const FuelType& fuel) {
return fuel.
grass_curing(nd, wx); });
1303 [[nodiscard]] MathSize
cbh()
const override
1305 return compare_by_season(*
this, [](
const FuelType& fuel) {
return fuel.
cbh(); });
1311 [[nodiscard]] MathSize
cfl()
const override
1313 return compare_by_season(*
this, [](
const FuelType& fuel) {
return fuel.
cfl(); });
1333 const MathSize isi)
const override
1335 return find_fuel_by_season(nd, *
this).
calculateRos(nd, wx, isi);
1344 const MathSize isi)
const override
1346 return find_fuel_by_season(spread.
nd(), *
this).
calculateIsf(spread, isi);
1378 const MathSize rss)
const override
1380 return find_fuel_by_season(spread.
nd(), *
this).
finalRos(spread, isi, cfb, rss);
1399 const MathSize rso)
const noexcept override
1408 [[nodiscard]] MathSize
probabilityPeat(
const MathSize mc_fraction)
const noexcept override
1470 const FuelD2* d2) noexcept
1479template <
int PercentConifer>
1509template <
int PercentDeadFir>
1544 FuelO1& operator=(
const FuelO1& rhs)
noexcept =
delete;
constexpr MathSize asValue() const noexcept
Returns value as a MathSize.
Definition Index.h:84
A result of calling log(x) for some value of x, pre-calculated at compile time.
Definition Index.h:168
Base class for DuffType.
Definition Duff.h:43
static const DuffType< 94, 2220, -198198, -1169, 10414, 782 > Peat
Peat [Frandsen table 2/3].
Definition Duff.h:114
static const DuffType< 359, 1220, 3325604, -12220, -21024, -12619 > WhiteSpruce
Sedge meadow (upper) [Frandsen table 2/3].
Definition Duff.h:110
static const DuffType< 365, 1900, 451778, -3227, -3644, -362 > PineSeney
Sedge meadow (Seney) [Frandsen table 2/3].
Definition Duff.h:126
static const DuffType< 181, 427, 90970, -1040, 1165, -646 > FeatherMoss
Sphagnum (lower) [Frandsen table 2/3].
Definition Duff.h:94
static const DuffType< 307, 1160, 586921, -2737, -5413, -1246 > SprucePine
Spruce/pine duff [Frandsen table 2/3].
Definition Duff.h:130
static const DuffType< 124, 218, -88306, -608, 8095, 2735 > SphagnumUpper
Feather moss (upper) [Frandsen table 2/3].
Definition Duff.h:86
static const DuffType< 261, 563, 80359, -393, -591, -340 > Reindeer
Reindeer/feather [Frandsen table 2/3].
Definition Duff.h:98
A conifer fuel type.
Definition FBP45.h:126
constexpr FuelConifer(const FuelCodeSize &code, const char *name, const LogValue log_q, const Duff *duff_ffmc, const Duff *duff_dmc)
A conifer FBP fuel type.
Definition FBP45.h:143
constexpr FuelConifer(const FuelCodeSize &code, const char *name, const LogValue log_q, const Duff *duff)
A conifer FBP fuel type.
Definition FBP45.h:163
A grass fuel type.
Definition FBP45.h:559
MathSize lengthToBreadth(const MathSize ws) const noexcept override
Length to Breadth ratio [ST-X-3 eq 80/81].
Definition FBP45.h:649
MathSize calculateIsf(const SpreadInfo &spread, const MathSize isi) const noexcept override
Calculate ISI with slope influence and zero wind (ISF) [ST-X-3 eq 41].
Definition FBP45.h:622
MathSize surfaceFuelConsumption(const SpreadInfo &) const noexcept override
Surface Fuel Consumption (SFC) (kg/m^2) [ST-X-3 pg 21].
Definition FBP45.h:589
MathSize calculateRos(const MathSize multiplier, const MathSize isi) const noexcept
Calculate rate of spread (m/min)
Definition FBP45.h:660
constexpr FuelGrass(const FuelCodeSize &code, const char *name, const LogValue log_q)
A grass fuel type.
Definition FBP45.h:573
MathSize calculateRos(const int nd, const wx::FwiWeather &wx, const MathSize isi) const noexcept override
Calculate rate of spread (m/min)
Definition FBP45.h:637
MathSize grass_curing(const int nd, const wx::FwiWeather &wx) const override
Grass curing.
Definition FBP45.h:598
MathSize baseMultiplier(const int nd, const wx::FwiWeather &wx) const noexcept
Calculate base rate of spread multiplier.
Definition FBP45.h:611
A fuel with jackpine as base fuel type.
Definition FBP45.h:206
MathSize surfaceFuelConsumption(const SpreadInfo &spread) const noexcept override
Surface fuel consumption (SFC) (kg/m^2) [ST-X-3 eq 11].
Definition FBP45.h:220
A fuel made of dead fir and D1.
Definition FBP45.h:458
constexpr FuelMixedDead(const FuelCodeSize &code, const char *name, const LogValue log_q)
A mixed dead FBP fuel type.
Definition FBP45.h:472
A fuel composed of C2 and D1 mixed.
Definition FBP45.h:489
constexpr FuelMixedWood(const FuelCodeSize &code, const char *name)
A mixedwood FBP fuel type.
Definition FBP45.h:502
MathSize surfaceFuelConsumption(const SpreadInfo &spread) const noexcept override
Surface Fuel Consumption (SFC) (kg/m^2) [ST-X-3 eq 17].
Definition FBP45.h:514
A mixedwood fuel type.
Definition FBP45.h:339
MathSize surfaceFuelConsumption(const SpreadInfo &spread) const noexcept override
Surface Fuel Consumption (SFC) (kg/m^2) [ST-X-3 eq 10].
Definition FBP45.h:369
constexpr FuelMixed(const FuelCodeSize &code, const char *name, const LogValue log_q)
A mixed FBP fuel type.
Definition FBP45.h:353
MathSize calculateIsf(const SpreadInfo &spread, const MathSize isi) const noexcept override
Calculate ISI with slope influence and zero wind (ISF) [ST-X-3 eq 42].
Definition FBP45.h:401
static constexpr MathSize ratioDeciduous()
Percent Deciduous (% / 100)
Definition FBP45.h:419
MathSize crownConsumption(const MathSize cfb) const noexcept override
Crown Fuel Consumption (CFC) (kg/m^2) [ST-X-3 eq 66, pg 38].
Definition FBP45.h:379
static MathSize isfD1(const SpreadInfo &spread, const MathSize isi) noexcept
Calculate ISI with slope influence and zero wind (ISF) for D-1 [ST-X-3 eq 41].
Definition FBP45.h:439
static constexpr MathSize ratioConifer()
Percent Conifer (% / 100)
Definition FBP45.h:411
MathSize calculateRos(const int, const wx::FwiWeather &, const MathSize isi) const noexcept override
Calculate rate of spread (m/min) [ST-X-3 27/28, GLC-X-10 29/31].
Definition FBP45.h:388
static constexpr MathSize rosMultiplier()
Rate of spread multiplier [ST-X-3 eq 27/28, GLC-X-10 eq 29/30].
Definition FBP45.h:428
A StandardFuel that is not made of multiple fuels.
Definition FBP45.h:72
virtual MathSize calculateRos(const int, const wx::FwiWeather &, const MathSize isi) const noexcept override
Initial rate of spread (m/min) [ST-X-3 eq 26].
Definition FBP45.h:104
MathSize calculateIsf(const SpreadInfo &spread, const MathSize isi) const noexcept override
ISI with slope influence and zero wind (ISF) [ST-X-3 eq 41].
Definition FBP45.h:89
A fuel with pine as the base fuel type.
Definition FBP45.h:256
MathSize surfaceFuelConsumption(const SpreadInfo &spread) const noexcept override
Surface fuel consumption (SFC) (kg/m^2) [ST-X-3 eq 12].
Definition FBP45.h:270
A slash fuel type.
Definition FBP45.h:1072
constexpr FuelSlash(const FuelCodeSize &code, const char *name, const LogValue log_q, const Duff *duff_ffmc, const Duff *duff_dmc)
A slash fuel type.
Definition FBP45.h:1088
static constexpr MathSize wfcB()
Woody Fuel Consumption parameter b [ST-X-3 eq 20/22/24].
Definition FBP45.h:1140
static constexpr MathSize ffcA()
Forest Floor Consumption parameter a [ST-X-3 eq 19/21/23].
Definition FBP45.h:1116
static constexpr MathSize wfcA()
Woody Fuel Consumption parameter a [ST-X-3 eq 20/22/24].
Definition FBP45.h:1132
MathSize surfaceFuelConsumption(const SpreadInfo &spread) const noexcept override
Surface Fuel Consumption (SFC) (kg/m^2) [ST-X-3 eq 25].
Definition FBP45.h:1105
static constexpr MathSize ffcB()
Forest Floor Consumption parameter b [ST-X-3 eq 19/21/23].
Definition FBP45.h:1124
An FBP fuel type.
Definition FuelType.h:55
virtual MathSize cfl() const =0
Crown fuel load (kg/m^2) [ST-X-3 table 8].
virtual MathSize grass_curing(const int, const wx::FwiWeather &) const
Grass curing.
Definition FuelType.h:129
virtual MathSize calculateIsf(const SpreadInfo &spread, MathSize isi) const =0
Calculate ISI with slope influence and zero wind (ISF) [ST-X-3 eq 41/42].
virtual MathSize crownConsumption(MathSize cfb) const =0
Crown Fuel Consumption (CFC) (kg/m^2) [ST-X-3 eq 66].
virtual MathSize lengthToBreadth(MathSize ws) const =0
Length to Breadth ratio [ST-X-3 eq 79].
constexpr FuelCodeSize code() const
Code for this fuel type.
Definition FuelType.h:234
virtual MathSize buiEffect(MathSize bui) const =0
BUI Effect on surface fire rate of spread [ST-X-3 eq 54].
virtual MathSize cbh() const =0
Crown base height (m) [ST-X-3 table 8].
virtual MathSize crownFractionBurned(MathSize rss, MathSize rso) const noexcept=0
Crown Fraction Burned (CFB) [ST-X-3 eq 58].
virtual MathSize criticalSurfaceIntensity(const SpreadInfo &spread) const =0
Critical Surface Fire Intensity (CSI) [ST-X-3 eq 56].
virtual MathSize probabilityPeat(MathSize mc_fraction) const noexcept=0
Calculate probability of burning [Anderson eq 1].
virtual ThresholdSize survivalProbability(const wx::FwiWeather &wx) const noexcept=0
Survival probability calculated using probability of ony survival based on multiple formulae.
virtual MathSize finalRos(const SpreadInfo &spread, MathSize isi, MathSize cfb, MathSize rss) const =0
Final rate of spread (m/min)
virtual MathSize surfaceFuelConsumption(const SpreadInfo &spread) const =0
Surface fuel consumption (SFC) (kg/m^2) [ST-X-3 eq 9-25].
virtual MathSize calculateRos(int nd, const wx::FwiWeather &wx, MathSize isi) const =0
Calculate rate of spread (m/min)
constexpr const char * name() const
Name of the fuel.
Definition FuelType.h:226
A fuel type that changes based on the season.
Definition FBP45.h:1256
MathSize probabilityPeat(const MathSize mc_fraction) const noexcept override
Calculate probability of burning [Anderson eq 1].
Definition FBP45.h:1408
MathSize grass_curing(const int nd, const wx::FwiWeather &wx) const override
Grass curing.
Definition FBP45.h:1295
constexpr const FuelType & spring() const
Fuel to use before green-up.
Definition FBP45.h:1426
const FuelSummer *const summer_
Fuel to use after green-up.
Definition FBP45.h:1446
MathSize finalRos(const SpreadInfo &spread, const MathSize isi, const MathSize cfb, const MathSize rss) const override
Final rate of spread (m/min)
Definition FBP45.h:1375
MathSize surfaceFuelConsumption(const SpreadInfo &spread) const override
Surface Fuel Consumption (SFC) (kg/m^2) [ST-X-3 eq 9-25].
Definition FBP45.h:1353
MathSize crownFractionBurned(const MathSize rss, const MathSize rso) const noexcept override
Crown Fraction Burned (CFB) [ST-X-3 eq 58].
Definition FBP45.h:1398
MathSize crownConsumption(const MathSize cfb) const override
Crown Fuel Consumption (CFC) (kg/m^2) [ST-X-3 eq 66].
Definition FBP45.h:1320
const FuelSpring *const spring_
Fuel to use before green-up.
Definition FBP45.h:1442
constexpr FuelVariable(const FuelCodeSize &code, const char *name, const bool can_crown, const FuelSpring *const spring, const FuelSummer *const summer)
A slash fuel type.
Definition FBP45.h:1268
constexpr const FuelType & summer() const
Fuel to use after green-up.
Definition FBP45.h:1434
MathSize cfl() const override
Crown fuel load (kg/m^2) [ST-X-3 table 8].
Definition FBP45.h:1311
MathSize lengthToBreadth(const MathSize ws) const override
Length to Breadth ratio [ST-X-3 eq 79].
Definition FBP45.h:1363
MathSize survivalProbability(const wx::FwiWeather &wx) const noexcept override
Survival probability calculated using probability of ony survival based on multiple formulae.
Definition FBP45.h:1417
MathSize calculateRos(const int nd, const wx::FwiWeather &wx, const MathSize isi) const override
Initial rate of spread (m/min) [ST-X-3 eq 26].
Definition FBP45.h:1331
MathSize criticalSurfaceIntensity(const SpreadInfo &spread) const override
Critical Surface Fire Intensity (CSI) [ST-X-3 eq 56].
Definition FBP45.h:1387
MathSize calculateIsf(const SpreadInfo &spread, const MathSize isi) const override
Calculate ISI with slope influence and zero wind (ISF) [ST-X-3 eq 41].
Definition FBP45.h:1343
MathSize buiEffect(MathSize bui) const override
BUI Effect on surface fire rate of spread [ST-X-3 eq 54].
Definition FBP45.h:1287
MathSize cbh() const override
Crown base height (m) [ST-X-3 table 8].
Definition FBP45.h:1303
A FuelBase made of a standard fuel type.
Definition StandardFuel.h:83
constexpr StandardFuel(const FuelCodeSize &code, const char *name, const bool can_crown, const LogValue log_q, const Duff *duff_ffmc, const Duff *duff_dmc) noexcept
Constructor.
Definition StandardFuel.h:94
virtual MathSize crownConsumption(const MathSize cfb) const noexcept override
Crown Fuel Consumption (CFC) (kg/m^2) [ST-X-3 eq 66].
Definition StandardFuel.h:148
MathSize rosBasic(const MathSize isi) const noexcept
Initial rate of spread (m/min) [ST-X-3 eq 26].
Definition StandardFuel.h:138
MathSize limitIsf(const MathSize mu, const MathSize rsf) const noexcept
ISI with slope influence and zero wind (ISF) [ST-X-3 eq 41].
Definition StandardFuel.h:158
FBP fuel type C-1.
Definition FBP45.h:672
constexpr FuelC1(const FuelCodeSize &code) noexcept
FBP fuel type C-1.
Definition FBP45.h:684
MathSize surfaceFuelConsumption(const SpreadInfo &spread) const noexcept override
Surface Fuel Consumption (SFC) (kg/m^2) [GLC-X-10 eq 9a/9b].
Definition FBP45.cpp:35
FBP fuel type C-2.
Definition FBP45.h:704
MathSize surfaceFuelConsumption(const SpreadInfo &spread) const noexcept override
Surface Fuel Consumption (SFC) (kg/m^2) [ST-X-3 eq 10].
Definition FBP45.cpp:39
constexpr FuelC2(const FuelCodeSize &code) noexcept
FBP fuel type C-2.
Definition FBP45.h:716
FBP fuel type C-3.
Definition FBP45.h:735
constexpr FuelC3(const FuelCodeSize &code) noexcept
FBP fuel type C-3.
Definition FBP45.h:747
FBP fuel type C-4.
Definition FBP45.h:760
constexpr FuelC4(const FuelCodeSize &code) noexcept
FBP fuel type C-4.
Definition FBP45.h:772
FBP fuel type C-5.
Definition FBP45.h:784
constexpr FuelC5(const FuelCodeSize &code) noexcept
FBP fuel type C-5.
Definition FBP45.h:796
FBP fuel type C-6.
Definition FBP45.h:808
MathSize finalRos(const SpreadInfo &spread, MathSize isi, MathSize cfb, MathSize rss) const noexcept override
Final rate of spread (m/min)
Definition FBP45.cpp:43
constexpr FuelC6(const FuelCodeSize &code) noexcept
FBP fuel type C-6.
Definition FBP45.h:820
FBP fuel type C-7.
Definition FBP45.h:845
MathSize surfaceFuelConsumption(const SpreadInfo &spread) const noexcept override
Surface Fuel Consumption (SFC) (kg/m^2) [ST-X-3 eq 15].
Definition FBP45.cpp:85
constexpr FuelC7(const FuelCodeSize &code) noexcept
FBP fuel type C-7.
Definition FBP45.h:857
FBP fuel type D-1/D-2.
Definition FBP45.h:1454
constexpr FuelD1D2(const FuelCodeSize &code, const FuelD1 *d1, const FuelD2 *d2) noexcept
A fuel that changes between D-1/D-2 depending on green-up.
Definition FBP45.h:1468
FBP fuel type D-1.
Definition FBP45.h:282
MathSize isfD1(const SpreadInfo &spread, MathSize ros_multiplier, MathSize isi) const noexcept
Calculate ISI with slope influence and zero wind (ISF) for D-1 [ST-X-3 eq 41].
Definition FBP45.cpp:11
constexpr FuelD1(const FuelCodeSize &code) noexcept
FBP fuel type D-1.
Definition FBP45.h:294
MathSize surfaceFuelConsumption(const SpreadInfo &spread) const noexcept override
Surface Fuel Consumption (SFC) (kg/m^2) [ST-X-3 eq 25].
Definition FBP45.h:307
FBP fuel type D-2.
Definition FBP45.h:876
constexpr FuelD2(const FuelCodeSize &code) noexcept
FBP fuel type D-2.
Definition FBP45.h:889
MathSize surfaceFuelConsumption(const SpreadInfo &spread) const noexcept override
Surface Fuel Consumption (SFC) (kg/m^2)
Definition FBP45.cpp:95
MathSize calculateRos(int nd, const wx::FwiWeather &wx, MathSize isi) const noexcept override
Calculate rate of spread (m/min)
Definition FBP45.cpp:99
FBP fuel type M-1/M-2.
Definition FBP45.h:1481
constexpr FuelM1M2(const FuelCodeSize &code, const char *name, const FuelM1< PercentConifer > *m1, const FuelM2< PercentConifer > *m2)
A fuel that changes between M-1/M-2 depending on green-up.
Definition FBP45.h:1497
FBP fuel type M-1.
Definition FBP45.h:921
constexpr FuelM1(const FuelCodeSize &code, const char *name)
FBP fuel type M-1.
Definition FBP45.h:934
FBP fuel type M-2.
Definition FBP45.h:945
constexpr FuelM2(const FuelCodeSize &code, const char *name)
FBP fuel type M-2.
Definition FBP45.h:958
FBP fuel type M-3/M-4.
Definition FBP45.h:1511
constexpr FuelM3M4(const FuelCodeSize &code, const char *name, const FuelM3< PercentDeadFir > *m3, const FuelM4< PercentDeadFir > *m4)
A fuel that changes between M-3/M-4 depending on green-up.
Definition FBP45.h:1526
FBP fuel type M-3.
Definition FBP45.h:969
constexpr FuelM3(const FuelCodeSize &code, const char *name)
FBP fuel type M-3.
Definition FBP45.h:982
FBP fuel type M-4.
Definition FBP45.h:995
constexpr FuelM4(const FuelCodeSize &code, const char *name)
FBP fuel type M-4.
Definition FBP45.h:1008
FBP fuel type O-1a.
Definition FBP45.h:1019
constexpr FuelO1A(const FuelCodeSize &code) noexcept
FBP fuel type O-1a.
Definition FBP45.h:1031
FBP fuel type O-1b.
Definition FBP45.h:1040
constexpr FuelO1B(const FuelCodeSize &code) noexcept
FBP fuel type O-1b.
Definition FBP45.h:1052
FBP fuel type O-1.
Definition FBP45.h:1538
constexpr FuelO1(const FuelCodeSize &code, const char *name, const FuelO1A *o1a, const FuelO1B *o1b)
A fuel that changes between O-1a/O-1b depending on green-up.
Definition FBP45.h:1553
FBP fuel type S-1.
Definition FBP45.h:1151
constexpr FuelS1(const FuelCodeSize &code) noexcept
FBP fuel type S-1.
Definition FBP45.h:1163
FBP fuel type S-2.
Definition FBP45.h:1176
constexpr FuelS2(const FuelCodeSize &code) noexcept
FBP fuel type S-2.
Definition FBP45.h:1188
FBP fuel type S-3.
Definition FBP45.h:1201
constexpr FuelS3(const FuelCodeSize &code) noexcept
FBP fuel type S-3.
Definition FBP45.h:1213
Information regarding spread within a Cell for a specific Scenario and time.
Definition FireSpread.h:30
constexpr int nd() const
Difference between date and the date of minimum foliar moisture content.
Definition FireSpread.h:109
A Weather value with calculated FWI indices.
Definition FWI.h:209
constexpr const Dc & dc() const
Drought Code.
Definition FWI.h:358