FireSTARR
Loading...
Searching...
No Matches
ProbabilityMap.h
1/* Copyright (c) Queen's Printer for Ontario, 2020. */
2/* Copyright (c) His Majesty the King in Right of Canada as represented by the Minister of Natural Resources, 2021-2025. */
3
4/* SPDX-License-Identifier: AGPL-3.0-or-later */
5
6#pragma once
7#include <string>
8#include <vector>
9#include "GridMap.h"
10#include "Statistics.h"
11#include "Perimeter.h"
12namespace fs
13{
14namespace sim
15{
16class Model;
17class IntensityMap;
22{
23public:
24 ProbabilityMap() = delete;
25 ~ProbabilityMap() = default;
26 ProbabilityMap(const ProbabilityMap& rhs) noexcept = delete;
27 ProbabilityMap(ProbabilityMap&& rhs) noexcept = delete;
28 ProbabilityMap& operator=(const ProbabilityMap& rhs) noexcept = delete;
29 ProbabilityMap& operator=(ProbabilityMap&& rhs) noexcept = delete;
41 ProbabilityMap(const string dir_out,
42 DurationSize time,
43 DurationSize start_time,
44 int min_value,
45 int low_max,
46 int med_max,
47 int max_value,
48 const data::GridBase& grid_info);
58 void setPerimeter(const topo::Perimeter* const perimeter);
63 void addProbabilities(const ProbabilityMap& rhs);
68 void addProbability(const IntensityMap& for_time);
73 [[nodiscard]] vector<MathSize> getSizes() const;
78 [[nodiscard]] util::Statistics getStatistics() const;
83 [[nodiscard]] size_t numSizes() const noexcept;
87 void show() const;
92 void saveSizes(const string& base_name) const;
98 void saveAll(const tm& start_time,
99 DurationSize time,
100 const bool is_interim) const;
105 void saveTotal(const string& base_name, const bool is_interim) const;
110 void saveTotalCount(const string& base_name) const;
115 void saveHigh(const string& base_name) const;
120 void saveModerate(const string& base_name) const;
125 void saveLow(const string& base_name) const;
129 void reset();
133 static void deleteInterim();
134private:
138 bool record_if_interim(const char* filename) const;
143 template <class R>
145 const string& dir,
146 const string& base_name,
147 const R divisor) const
148 {
149 const string filename = grid.saveToProbabilityFile(dir, base_name, divisor);
150 record_if_interim(filename.c_str());
151 return filename;
152 };
156 const string dir_out_;
176 vector<MathSize> sizes_{};
180 const DurationSize time_;
184 const DurationSize start_time_;
188 mutable mutex mutex_;
192 IntensitySize min_value_;
196 IntensitySize max_value_;
200 const IntensitySize low_max_;
204 const IntensitySize med_max_;
209};
210}
211}
The base class with information for a grid of data with geographic coordinates.
Definition Grid.h:43
A GridData that uses an unordered_map for storage.
Definition GridMap.h:23
string saveToProbabilityFile(const string &dir, const string &base_name, const R divisor) const
Save GridMap contents to .asc file as probability.
Definition GridMap.h:263
Represents a map of intensities that cells have burned at for a single Scenario.
Definition IntensityMap.h:29
Map of the percentage of simulations in which a Cell burned in each intensity category.
Definition ProbabilityMap.h:22
const string dir_out_
Directory to write outputs to.
Definition ProbabilityMap.h:156
ProbabilityMap * copyEmpty() const
Create a copy of this that is empty.
Definition ProbabilityMap.cpp:46
mutex mutex_
Mutex for parallel access.
Definition ProbabilityMap.h:188
static void deleteInterim()
Definition ProbabilityMap.cpp:202
data::GridMap< size_t > med_
Map representing moderate intensities.
Definition ProbabilityMap.h:168
void setPerimeter(const topo::Perimeter *const perimeter)
Assign perimeter to use for marking cells as initial perimeter.
Definition ProbabilityMap.cpp:57
vector< MathSize > getSizes() const
List of sizes of IntensityMaps that have been added.
Definition ProbabilityMap.cpp:129
data::GridMap< size_t > low_
Map representing low intensities.
Definition ProbabilityMap.h:172
vector< MathSize > sizes_
List of sizes for perimeters that have been added.
Definition ProbabilityMap.h:176
void show() const
Output Statistics to log.
Definition ProbabilityMap.cpp:141
void saveTotalCount(const string &base_name) const
Save map representing all intensities occurrence.
Definition ProbabilityMap.cpp:316
const IntensitySize low_max_
Upper bound of 'low' intensity range.
Definition ProbabilityMap.h:200
void saveHigh(const string &base_name) const
Save map representing high intensities.
Definition ProbabilityMap.cpp:320
bool record_if_interim(const char *filename) const
Make note of any interim files for later deletion.
Definition ProbabilityMap.cpp:155
IntensitySize max_value_
Upper bound of 'high' intensity range.
Definition ProbabilityMap.h:196
void saveSizes(const string &base_name) const
Save list of sizes.
Definition ProbabilityMap.cpp:171
void saveTotal(const string &base_name, const bool is_interim) const
Save map representing all intensities.
Definition ProbabilityMap.cpp:302
string saveToProbabilityFile(const data::GridMap< size_t > &grid, const string &dir, const string &base_name, const R divisor) const
Save probability file and record filename if interim.
Definition ProbabilityMap.h:144
const DurationSize time_
Time in simulation this ProbabilityMap represents.
Definition ProbabilityMap.h:180
data::GridMap< size_t > all_
Map representing all intensities.
Definition ProbabilityMap.h:160
const DurationSize start_time_
Start time of simulation.
Definition ProbabilityMap.h:184
const IntensitySize med_max_
Upper bound of 'moderate' intensity range.
Definition ProbabilityMap.h:204
data::GridMap< size_t > high_
Map representing high intensities.
Definition ProbabilityMap.h:164
void saveLow(const string &base_name) const
Save map representing low intensities.
Definition ProbabilityMap.cpp:328
util::Statistics getStatistics() const
Generate Statistics on sizes of IntensityMaps that have been added.
Definition ProbabilityMap.cpp:133
void reset()
Clear maps and return to initial state.
Definition ProbabilityMap.cpp:332
void saveAll(const tm &start_time, DurationSize time, const bool is_interim) const
Save total, low, moderate, and high maps, and output information to log.
Definition ProbabilityMap.cpp:227
void addProbability(const IntensityMap &for_time)
Add in an IntensityMap to the appropriate probability grid based on each cell burn intensity.
Definition ProbabilityMap.cpp:96
IntensitySize min_value_
Lower bound of 'low' intensity range.
Definition ProbabilityMap.h:192
void addProbabilities(const ProbabilityMap &rhs)
Combine results from another ProbabilityMap into this one.
Definition ProbabilityMap.cpp:61
size_t numSizes() const noexcept
Number of sizes that have been added.
Definition ProbabilityMap.cpp:137
const topo::Perimeter * perimeter_
Initial ignition grid to apply to outputs.
Definition ProbabilityMap.h:208
void saveModerate(const string &base_name) const
Save map representing moderate intensities.
Definition ProbabilityMap.cpp:324
Perimeter for an existing fire to initialize a simulation with.
Definition Perimeter.h:24
Provides statistics calculation for vectors of values.
Definition Statistics.h:125