cffdrs: an R package for the Canadian Forest Fire Danger Rating System
The Canadian Forest Fire Danger Rating System (CFFDRS) is a globally known wildland fire risk assessment system, and two major components, the fire weather index system and the fire behavior prediction system, have been extensively used both nationally and internationally to aid operational wildland fire decision making.
In this paper, we present an overview of an R package cffdrs, which is developed to calculate components of the CFFDRS, and highlight some of its functionality. In particular, we demonstrate how these functions could be used for large data analysis.
Results and Discussion
With this cffdrs package, we provide a portal for not only a collection of R functions dealing with all available components in CFFDRS but also a platform for various additional developments that are useful for the understanding of fire occurrence and behavior. This is the first time that all relevant CFFDRS methods are incorporated into the same platform, which can be accessed by both the management and research communities.
KeywordsFire behavior prediction system Fire weather index system Forest fire Forest fire risk Fuel moisture Landscape ecology
Forest fires are responsible for 14~20% of the annual global burned area (Mouillot and Field 2005; van der Werf et al. 2006), which is between 50~90 Mha (Schultz et al. 2008). In Canada, an average of about 8000 forest fires occurs each year burning 2 Mha of forests, most of which is burned by stand-renewing, high-intensity crown fire. Although wildfire is a natural agent of disturbance over most of the forest landscape of Canada, it is managed when human life, settlements, and infrastructure are at risk. Canadian wildland fire management agencies spend an average of $800 million per year on fire management. These expenditures have been and will continue to rise due to more frequent fire occurrences and extreme fire weather conditions in the recent years (e.g., Beverly et al. 2011; Flannigan et al. 2009) and in the near future (e.g., de Groot et al. 2013; Moritz et al. 2012; Wang et al. 2015).
The FWI system and FBP system have been widely used to inform management actions such as preparedness planning, resource movement, resource needs assessment, alert levels, and active predictions of fire growth and intensity. These two systems have also been used extensively in training fire management personnel and studying the relationship between fire and climate change (e.g., Flannigan et al. 2009) and carbon emissions (Amiro et al. 2001; de Groot et al. 2007). There are numerous reviews and summaries of the components of the CFFDRS (e.g., Stocks et al 1989; Taylor and Alexander 2006; Wotton 2009b); Lawson and Armitage (2008) also provide a detailed description of input and usage considerations for the CFFDRS as a whole, including the requirements for obtaining standardized weather observations.
Moisture content outputs of the FWI system are used as inputs to other models (such as spread rate prediction in the FBP system) and are also used operationally by fire managers as relative indicators of the expected number of fires in their regions. Similarly, the relative fire potential indicators from the FWI system (Fig. 2) are used by fire managers as general indicators of fire growth and fire intensity potential as well as difficulty of suppression for a general region. The final output of the FWI system, also called the fire weather index, is used as the main public indicator of overall fire danger in an area and is used to set roadside fire danger or fire risk signs throughout Canada. The FWI is often used as a scaled indicator of the fire intensity.
Tools used to calculate outputs of the FWI and FBP systems have existed in various platforms. The FWI system is a relatively straightforward set of calculations and has been programmed in multiple programing languages such as Pascal, C/C++, FORTRAN, Python, Visual Basic, and Microsoft Excel by both users of the system and Canadian Forest Service (CFS) researchers. The FORTRAN version of the FWI system was formally documented and published (Van Wagner and Pickett 1985) and presents not only computer code but also, most importantly, an organized and explicit description of the equations and calculation flow used. The FBP system is a more complex set of equations than the FWI system; thus, it has not received the same widespread application in a range of programming platforms. Most operational fire agencies, however, have some software (developed either in-house or commercially) to calculate FBP system components as a supplement to the tables in the “Field Guide to the Canadian Forest Fire Behavior Prediction (FBP) System” (Taylor et al. 1997).
For several decades, the Canadian Forest Service (CFS) has provided their C language program to any developer or researcher interested in developing software for fire behavior applications and also published a formal test dataset that could be used for users to initially test their applications (Wotton et al. 2009). Recently, a software package named RedApp (beta version) (http://redapp.org/) has been developed to provide a freely accessible method of calculating both the FWI and FBP system outputs for single days or weather streams. However, this is not as conducive to more complicated management or research-oriented applications that involve large domains of gridded inputs or multiple weather stations.
With the cffdrs package, we provide a portal not only for a collection of R functions calculating the outputs of the core of the CFFDRS, namely the FWI and FBP systems, but also a platform for inclusion and documentation of various additional calculation methods from the CFFDRS. This package represents the first time that most of the calculation methods used in the CFFDRS are available within a single package that can be widely accessed by both the fire management and research communities. Furthermore, this package provides an updatable location for housing calculation methods for new developments in the CFFDRS, e.g., the first published code for the computation of sheltered duff moisture code (sdmc; Wotton et al. 2005) and the grass fuel moisture code (gfmc; Wotton 2009a). In this paper, we present an overview of cffdrs and highlight some of its functionality; we provide foundational references in the introduction and more extensive descriptions in the package documentation for users who require more details about the background of the system or specific application information.
Overview of cffdrs
cffdrs package functions and their descriptions
Fire behavior prediction function
Rater-based fire behavior prediction function. This function requires rasterized maps (stack) as inputs, which generates raster maps as outputs
Fire season start and end function
Standard FWI System function, which include 7 output variables FFMC, DMC, DC, ISI, BUI, FWI, and DSR.
Raster-based standard FWI System function. This function requires rasterized maps as inputs, which generates raster maps as outputs
Grass fuel moisture content
Hourly FFMC function
Raster-based hourly FFMC function, which takes raster maps as inputs, and generate outputs in raster map formats
Value-added features in cffdrs
Most current algorithms
Due to the CFS’s ongoing research program, both the FWI and FBP systems have been through some minor corrections and modifications (e.g., Wotton et al. 2009) since their formal publication. Additionally, as software and hardware systems changed, different versions of these calculation systems have been developed on various platforms by various individuals or groups; however, operational users of these systems typically want software products that are well validated and up-to-date. Functions in this package have been developed to match the most recent and up-to-date algorithms for calculating all of the CFFDRS sub-systems. These functions have been tested against the official test datasets, which make the package an excellent reference for algorithms used in other systems or being adapted in other countries.
The calculation of FWI system variables is iterative, given that the computation of the current time step depends on previous time step conditions. The fuel moisture models in the system are essentially water “bookkeeping” methods for different fuel layers; each day, the moisture exchange calculation must reference the level it is starting from. In this way, the moisture codes in the FWI system (Fig. 2) can be considered as integrating the weather occurring for a particular fire season up to a specific point in time. Calculating FWI system outputs over a fire season is therefore a common practice, and it is important that uninterrupted weather streams are used for multi-day calculations.
Because the FWI system components are highly interrelated and depend on previous day’s calculations, it is expected that the functions would generate all of the system components at once. This is different from the majority of base functions in R, where a single function generates a single output, leaving greater flexibility for the R users to explore the potential applications of such functions. However, we do provide options in the functions where users could choose to switch to single-step FWI system calculations. For example, the main FWI system function fwi is designed to calculate the outputs of the FWI system for 1 day or one fire season. In that function, a batch option is provided with batch = TRUE as default. The function will calculate daily FWI system outputs for one weather station over a period of time chronologically with the given initial conditions (init) applied only to the first day of calculation. But if batch = FALSE is set, the function calculates only one time step (1 day) base on either the user-specified starting values for the moisture codes or the previous day’s FWI system variables, which should also be assigned to init argument. In addition, with batch = FALSE, the fwi function can continue to process multiple station data at the same time, but on a single time step. This is due to the vector computation feature that was built in the function.
The batch-processing feature in the fbp function was applied somewhat differently. Unlike FWI system variables, FBP system variables do not rely on previous time step values. Like the FWI system, the FBP system contains multiple output variables, 42 in total, 8 of which are considered primary and the rest are considered secondary. Input for fbp is a data.frame containing fuel types, fire weather components, and slope. Each vector of inputs defines a single FBP system prediction for a single fuel type and set of weather conditions. By taking advantage of the vector computation in R, the fbp function was designed to evaluate the FBP system for a single fuel type and instant in time, multiple records for a single point (e.g., one weather station, either hourly or daily weather stream for a period of time), or multiple points (multiple weather stations or a gridded surface) for a single time slice. In order to be more efficient in processing large datasets, the function also provides a parallel processing option, which may speed up the processing time significantly if the input data contains millions of data points.
Matrix-based batch-processing capability
The third significant feature in some of the cffdrs functions is the capability of processing data from multiple weather stations (or spatial points) simultaneously, i.e., fwi, hffmc, sdmc, gfmc, and fbp. This feature is useful when calculating system outputs for a large number of weather stations (or spatial points) (e.g., Field et al. 2015; Wang et al. 2015) and may significantly reduce the processing time. This option might not be as intuitive as the defaults, but the logic behind it is fairly easy to understand: the input data has to line up by time steps and by order of the stations. An additional “id” column in the input to label different stations helps to line up the inputs correctly. In addition, the initial values can either be assigned as a vector, which indicates the same start values, or a data.frame with the same number of records as the number of stations, indicating each weather station has its own unique initial values.
In this package, we also provided three raster-based functions, fwiRaster, hffmcRaster, and fbpRaster to satisfy users who have inputs in raster maps; this saves users from converting raster maps to point data (tabular data format). Data conversions usually consume significant amount of computation time and require extra efforts in data preparation. Using functions provided by the raster package (Hijmans 2014), the three raster-based cffdrs functions are not only easy to use, but outputs are also easy to visualize because of the plot function inherited from the raster package. Although the general calculation method is similar, the design of the two raster-based FWI system functions is indeed different from their data.frame-based counterparts, where the raster-based functions process data for only one single time step.
In this section, we intend to demonstrate the uses of the major cffdrs functions with three example applications: (1) standard FWI system with overwintering DC adjustment, (2) raster-based hourly FFMC, and (3) fire behavior prediction based on the results from the previous example application.
Calculating daily FWI with wintering DC modifications
This example demonstrates how to calculate daily FWI system variables given a chronological dataset that consists of 2 years of daily fire weather observations from one weather station. The computation of the FWI system starts at the beginning of a fire season, which, in Canada, is when the snow is gone and the upper organic soil material has thawed. The drought code (DC), which tracks long-term moisture deficit, can be influenced by the value of the DC at the end of the previous season and the amount of precipitation received overwinter (Lawson and Armitage 2008) when calculations were not being carried out. Thus, the starting DC value in a new season can sometimes be significantly higher (indicating a drier forest floor) than the standard initial value (i.e., DC = 15), which represents soil moisture condition after about 3 days of springtime drying from full saturation. Because of the slowness of drying in this particular fuel layer, this starting difference can potentially bias the outputs of the FWI system over an entire fire season. When there is such a “carry-over” moisture deficit from season to season, the initial DC can be modified by a simple method (Lawson and Armitage 2008).
Three cffdrs example application codes: (a) standard FWI System with wintering DC adjustment, (b) raster-based hourly FFMC, and (c) fire behavior prediction based on results from the previous example application
(a) Standard FWI System with wintering DC adjustment
(b) Raster-based hourly FFMC
(c) Fire behavior prediction based on results from (b)
#Load test data for wDC:
#Keep the first weather station, which
#is from Penticton, BC, Canada. The
#data contains two complete years’
#weather records between 2013 and
dat <- test_wDC[test_wDC$id==1,]
#Calculate the fire season start
#and end dates:
fs <- fireSeason (dat)
#Calculate the FWI System
#variables for the first year with
#standard initial start values.
#First, we need to subset the
#input data by the start and end
#of the fire season in the first year:
dat$date <- as.Date (as.POSIXlt (paste (dat$yr,dat$mon,dat$day,sep="-")))
fs$date<- as.Date (as.POSIXlt (paste (fs$yr,fs$mon,fs$day,sep="-")))
curYr <- subset(dat,date>=fs$date&date<=fs$date)
#Use of the fwi function is very
#Calculate the FWI System
#variables for the second year
#with overwintering modified DC.
#This may take a few steps to
#accomplish. First, we need to
#subset the overwinter period from
#this two year weather #observations:
#Overwintering DC can then be
#calculated easily with wDC function:
init.DC<-wDC (curYr.fwi$DC[nrow (curYr.fwi)],sum (winT$prec))
#Second, extract the second fire
#The second year FWI System could
#be calculated with the overwintering
#DC as the following:
secYr.fwi<-fwi (secYr,c (85,6,init.DC))
#To show the difference, we also
#calculated the FWI System variables
#based on the default initial values:
#We then plotted the 3 outputs that
#are affected by the overwintering DC
#adjustment, i.e. DC, BUI, and FWI, to
#show the difference it makes:
x11 (width=12, height=4)
par (mfrow=c (1,3), mar=c (5,5,2,1))
plot(secYr.fwi.default$DC,secYr.fwi$DC,pch=19,col='grey50',ylim=c (0,850),xlab="",ylab="With wintering DC",cex.lab=2.0,cex.axis=1.5)
plot (secYr.fwi.default$BUI,secYr.fwi$BUI,pch=19,col='grey50',xlab="Without wintering DC",ylab="",cex.lab=2.0,cex.axis=1.5)
#Load the test data for the first
#hour, namely hour01 (See Fig. 4):
hour01src <- system.file("extdata","test_rast_hour01.tif",package="cffdrs")
hour01 <- stack (hour01src)
#Assign names to the layers:
names (hour01)<-c ("temp","rh","ws","prec")
#We calculate the first hour’s
#FFMC with the default initial
#FFMC value of 85:
#The FFMC for the second hour is
#then calculated based on
#the previous hour's FFMC. First,
#we load the test data for the
#second hour, namely hour02, to R:
hour02src <- system.file("extdata","test_rast_hour02.tif",package="cffdrs")
hour02 <- stack (hour02src)
#Assign variable names to the
names (hour02)<-c ("temp","rh","ws","prec")
#The calculation of the second
#hour FFMC is slightly different:
#Map both the inputs and outputs
#with a plot function from the
x11 (width=5, height=6.2)
#First, make a copy of the study area:
#Assign the BUI value:
values (bui) <-50
#Rename the layer:
names(bui) <- "bui"
#Make it into the stack, which can
#be used as input in the #hffmcRaster function.
#Now we can calculate all hourly
#FWI System variables and plot
x11 (width=5, height=6.2)
#First, we calculate the hourly
#FFMC with hffmc function. We
#convert our raster inputs into a
hffmc.hour01<-as.data.frame (rasterToPoints (hour01))
#The fbp function requires the
#coordinates being labeled as
#"long" and "lat":
names (hffmc.hour01) [1:2]<-c ("long","lat")
#Hourly FFMC as inputs for fbp (note
#this is a 'multiple weather stations
#at one time step' situation):
#Alternatively, this could be done
hffmc.hour01$ffmc<-rasterToPoints (r) [,3]
## Add fuel type and unique ID
#The new variable that was added
#to hffmc.hour01 is named as
#'ffmc', which is required by the
#Calculate the FBP System (primary
#outputs) with all other default
#We can then map a few key fire
#behavior measurements from the
#outputs: Head Fire Intensity
#(HFI), Equilibrium Head Fire Rate
#of Spread (ROS), and Total Fuel
HFI<-rasterize (as.matrix(hffmc.hour01[,c ("long","lat")]),r,FBP$HFI)
ROS<-rasterize (as.matrix(hffmc.hour01[,c ("long","lat")]),r,FBP$ROS)
TFC<-rasterize (as.matrix(hffmc.hour01[,c ("long","lat")]),r,FBP$TFC)
#Plot them out:
x11 (width=10, height=5.3)
par (mfrow=c (1,3), mar=c (5,3.5,5,4))
brks <- seq (0, 1, by=0.1)
nb <- length (brks)-1
cols <- rev (heat.colors(nb))
plot (HFI,col=cols,main="Head Fire Intensity (HFI)",cex.main=1.8)
plot (ROS,col=cols,main="Rate of Spread (ROS)",cex.main=1.8)
plot (TFC,col=cols,main="Total Fuel Consumption (TFC)",cex.main=1.8)
# using fpbRaster function, it is
# much simplified:
fuel<-ffmc # create a fuel layer
fuel<-2 # for C-2 fuel type
# Plot them:
x11 (width=10, height=5.3)
par(mfrow=c (1,3), mar=c (5,3.5,5,4))
brks <- seq (0, 1, by=0.1)
nb <- length (brks)-1
cols <- rev (heat.colors(nb))
plot (FBP$HFI,col=cols,main="Head Fire Intensity (HFI)",cex.main=1.8)
plot (FBP$ROS,col=cols,main="Rate of Spread (ROS)",cex.main=1.8)
plot (FBP$TFC,col=cols,main="Total Fuel Consumption (TFC)",cex.main=1.8)
Using the raster-based hourly FFMC (hffmcRaster)
In a standard FWI system calculation, the initial spread index and consequently the fire weather index depend on FFMC (see Fig. 2) and thus, this hourly function also calculates an hourly value for the ISI and FWI (hISI and hFWI). The latter calculation also requires an additional input, the daily buildup index (BUI) value which is derived from the duff moisture code and drought code (Fig. 2) (see Van Wagner 1987). For simplicity in this example, we set BUI = 50 for all the points in the study area; however, this input would more generally be a raster map with calculated BUI values (Table 2b). From the output, it is clear that the isolated rainfall (at the right low corner, Fig. 5 precipitation raster) has the lowest hourly FFMC and consequently low values of hISI and hFWI.
Hourly raster products of hFFMC and hISI are the cornerstone of fire growth modeling products such as the Canadian wildland fire growth model Prometheus (Tymstra et al. 2009) and Burn-P3 (Parisien et al. 2005). Thus, this raster calculation of FWI system outputs has more applications than simply mapping spatial fuel moisture or fire potential outputs.
Assuming a landscape of uniform boreal spruce, the C-2 fuel type in the FBP system (Forestry Canada Fire Danger Group FCFDG 1992), and default values for other inputs, we can use the hFFMC raster generated in the previous example to outputs from the FBP system (such as spread rate and fire intensity) in raster form.
Results and discussion
Wildland fire is one of the major ecological processes that has been widely examined and studied in landscape ecology not only as a threat to public safety, forest communities, and timber values but also an essential process affecting forest health in Canada. Wildland fire is influenced by a number of factors including flammable biomass, weather, topography, and ignition sources. These factors and how they influence different aspects of fire activity have been studied for decades, and much of the current understanding has been developed into wildfire management information systems like the CFFDRS. However, even such long established fire danger rating systems are continuing to evolve and be adapted to conform to the increasing complexity of challenges in wildfire management today. For instance, Taylor et al. (2013) performed a broad review of how the statistical modeling community has provided increased understanding and predictive models of important information needs of the fire management community, which in many cases involved using outputs of the CFFDRS within complex statistical model forms.
Understanding the interaction between fire behavior and fuel characteristics including their types (e.g., coniferous, broad leaf, and grass), moisture conditions, and spatial distribution (pattern) is crucial in fire risk assessment, fuel treatment planning, and fire-suppression operations, especially in areas when community and value are at risk. Because fire spread may escalate within a very short period of time (i.e., hours or days), tracking daily or hourly fire weather and fuel moisture conditions is critical in monitoring and predicting the behavior of an ongoing fire (e.g., Tymstra et al. 2009; Flannigan et al. 2016) or estimating fire risk at a landscape scale (e.g., Wang et al. 2016). The latter has become a pressing subject due to the increasing fire activities and fire damage in recent years, such as the Slave Lake fire in 2012 (Flat Top Complex Wildfire Review Committee 2012) and the Fort McMurray fire in 2016 (e.g., Parisien 2016). Clearly, the Canadian Forest Fire Danger Rating System (CFFDRS) has been a major tool used in such exercises (e.g., Taylor and Alexander 2006; Wotton 2009b; Wang et al. 2016).
The cffdrs package is designed to facilitate wider use of the CFFDRS in fire operations and research. This is done by (i) providing a broad set of R functions for the calculation of the various CFFDRS sub-systems and recently developed additions and revisions, (ii) providing open accessibility to the algorithms used in the calculation of these systems such that users can engage in their update and continued refinement, and (iii) incorporating the most newly updated methods (e.g., Wotton et al. 2005; Wotton et al. 2009) into the cffdrs suite of functions. Functions in the cffdrs package are designed to be able to process spatially and temporally big datasets, a feature that is critical in both operational and academic worlds.
The CFFDRS, despite providing the foundations for describing the fire environment in Canadian wildfire management operations, continues to develop and evolve as data sources and fire management need change (Wotton et al. 2009). This cffdrs package provides an accessible platform for both the current CFFDRS (which continues to gain international use) and the new developments in the CFFDRS in the near future. The new features, especially the ongoing development of a next generation of the CFFDRS, will be documented and added to the online package as well as the Western Partnership for Wildland Fire Science website (http://www.ualberta.ca/~wcwfs/).
We thank Ginny Marshall from the University of Alberta for reading the manuscript and providing some of the weather data.
XW, MW, MP, and MF designed the study. XW, MW, MP, and AC drafted the manuscript. XW, AC, MW, KA, and BM designed the examples and wrote the R codes. All authors read and approved the final manuscript.
The authors declare that they have no competing interests.
- Byram GM (1959) Combustion of forest fuel. In ‘Forest fire: control and use’. (Ed. KP Davis) pp 61-89. McCraw-Hill, New YorkGoogle Scholar
- Field RD, Spessa AC, Aziz NA, Camia A, Cantin A, Carr R, de Groot WJ, Dowdy A, Flannigan MD, Manomaiphiboon K, Pappenberger F, Tanpipat V, Wang X (2015) Development of a global fire weather index database. Nat Hazards Earth Syst Sci 15:1407–1423. doi: 10.5194/nhess-15-1407-2015 CrossRefGoogle Scholar
- Flat Top Complex Wildfire Review Committee (2012) Final report submitted to the minster of Environment and sustainable resource development, may 2012Google Scholar
- Forestry Canada Fire Danger Group (FCFDG) (1992) Development and structure of the Canadian Forest Fire Behavior Prediction System. Forestry Canada, Ottawa, Information Report ST-X-3. 63 pGoogle Scholar
- Hijmans RJ (2014) raster: raster: Geographic data analysis and modeling, R package version 2.3-12. https://cran.r-project.org/web/packages/raster/index.html
- Hirsch KG (1996) Canadian Forest Fire Behavior Prediction (FBP) System: user’s guide. Nat. Resour. Can., Can. For. Serv., Northwest Reg., North. For. Cent., Edmonton, Alberta. Spec. Rep. 7. 122p.Google Scholar
- Lawson BD, Armitage OB (2008) Weather guide for the Canadian Forest Fire Danger Rating System, Nat. Resour. Can., Can. For. Serv., North. For. Cent., Edmonton, ABGoogle Scholar
- Lawson BD, Dalrymple GN, Hawkes BC (1997) Predicting forest floor moisture contents from duff moisture code values, Can. For. Serv., Tech. Transfer Note 6. 6 pGoogle Scholar
- Parisien M-A, Kafka VG, Hirsch KG, Todd JB, Lavoie SG, Maczek PD (2005) Mapping Wildfire Susceptibility with the BURN-P3 Simulation Model, Technical Report NOR-X-405, Natural Resources Canada, Canadian Forest Service, Northern Forestry Centre, Edmonton, AlbertaGoogle Scholar
- Taylor SW, Pike RG, Alexander ME (1997) Field Guide to the Canadian Forest Fire Behavior Prediction (FBP) System, Technical Report 11, Canadian Forest Service, Northern Forestry Centre, Edmonton, AlbertaGoogle Scholar
- Tymstra C, Bryce RW, Wotton BM, Armitage OB (2009) Development and structure of Prometheus: the Canadian wildland fire growth simulation Model. Nat. Resour. Can., Can. For. Serv., North. For. Cent., Edmonton, AB. Inf. Rep. NOR-X-417.Google Scholar
- Van Wagner CE (1977) A method of computing fine fuel moisture content throughout the diurnal cycle, Environment Canada, Canadian Forestry Service, Petawawa Forest Experiment Station, Chalk River, Ontario. Information Report PS-X-69Google Scholar
- Van Wagner CE (1987) Development and structure of the Canadian forest fire weather index system. Forest Technology Report 35. Canadian Forestry Service, OttawaGoogle Scholar
- Van Wagner CE, Pickett TL (1985) Equations and FORTRAN program for the Canadian Forest Fire Weather Index System. Can. For. Serv., Ottawa, Ont. For. Tech Rep 33:18Google Scholar
- Wotton BM (2009a) A grass moisture model for the Canadian Forest Fire Danger Rating System. In: Proceedings 8th Fire and Forest Meteorology Symposium, Kalispell., MT Oct 13-15, 2009. Paper 3-2Google Scholar
- Wotton BM, Alexander ME, Taylor SW (2009) Updates and revisions to the 1992 Canadian forest fire behavior prediction system. Nat. Resour. Can., Can. For. Serv., Great Lakes For. Cent., Sault Ste. Marie, Ontario, Canada. Information Report GLC-X-10, 45p.Google Scholar
Open AccessThis article is distributed under the terms of the Creative Commons Attribution 4.0 International License (http://creativecommons.org/licenses/by/4.0/), which permits unrestricted use, distribution, and reproduction in any medium, provided you give appropriate credit to the original author(s) and the source, provide a link to the Creative Commons license, and indicate if changes were made.