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{
19enum ProcessingStatus : size_t
20{
21 unprocessed = 2,
22 processing = 3,
23 processed = 4,
24};
25class Model;
26class IntensityMap;
31{
32public:
33 ProbabilityMap() = delete;
35 ProbabilityMap(const ProbabilityMap& rhs) noexcept = delete;
36 ProbabilityMap(ProbabilityMap&& rhs) noexcept = delete;
37 ProbabilityMap& operator=(const ProbabilityMap& rhs) noexcept = delete;
38 ProbabilityMap& operator=(ProbabilityMap&& rhs) noexcept = delete;
50 ProbabilityMap(const string dir_out,
51 DurationSize time,
52 DurationSize start_time,
53 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);
72 void show() const;
79 void saveAll(const tm& start_time,
80 DurationSize time,
81 const ProcessingStatus processing_status) const;
85 void reset();
89 static void deleteInterim();
90private:
100 [[nodiscard]] vector<MathSize> getSizes() const;
105 [[nodiscard]] util::Statistics getStatistics() const;
110 [[nodiscard]] size_t numSizes() const noexcept;
115 void saveSizes(const string& base_name) const;
121 void saveTotal(const string& base_name, const ProcessingStatus processing_status) const;
126 void saveTotalCount(const string& base_name) const;
130 bool record_if_interim(const char* filename) const;
135 template <class R>
137 const string& dir,
138 const string& base_name,
139 const R divisor) const
140 {
141 const string filename = grid.saveToProbabilityFile(dir, base_name, divisor);
142 record_if_interim(filename.c_str());
143 return filename;
144 };
148 const string dir_out_;
156 vector<MathSize> sizes_{};
160 const DurationSize time_;
164 const DurationSize start_time_;
168 mutable mutex mutex_;
173};
174}
175}
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:31
const string dir_out_
Directory to write outputs to.
Definition ProbabilityMap.h:148
ProbabilityMap * copyEmpty() const
Create a copy of this that is empty.
Definition ProbabilityMap.cpp:37
void saveTotal(const string &base_name, const ProcessingStatus processing_status) const
Save map representing all intensities.
Definition ProbabilityMap.cpp:212
mutex mutex_
Mutex for parallel access.
Definition ProbabilityMap.h:168
static void deleteInterim()
Definition ProbabilityMap.cpp:154
void setPerimeter(const topo::Perimeter *const perimeter)
Assign perimeter to use for marking cells as initial perimeter.
Definition ProbabilityMap.cpp:44
vector< MathSize > getSizes() const
List of sizes of IntensityMaps that have been added.
Definition ProbabilityMap.cpp:80
vector< MathSize > sizes_
List of sizes for perimeters that have been added.
Definition ProbabilityMap.h:156
void show() const
Output Statistics to log.
Definition ProbabilityMap.cpp:92
void saveTotalCount(const string &base_name) const
Save map representing all intensities occurrence.
Definition ProbabilityMap.cpp:233
void saveAll(const tm &start_time, DurationSize time, const ProcessingStatus processing_status) const
Save total, low, moderate, and high maps, and output information to log.
Definition ProbabilityMap.cpp:179
bool record_if_interim(const char *filename) const
Make note of any interim files for later deletion.
Definition ProbabilityMap.cpp:107
void saveSizes(const string &base_name) const
Save list of sizes.
Definition ProbabilityMap.cpp:123
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:136
const DurationSize time_
Time in simulation this ProbabilityMap represents.
Definition ProbabilityMap.h:160
data::GridMap< size_t > all_
Map representing all intensities.
Definition ProbabilityMap.h:152
const DurationSize start_time_
Start time of simulation.
Definition ProbabilityMap.h:164
util::Statistics getStatistics() const
Generate Statistics on sizes of IntensityMaps that have been added.
Definition ProbabilityMap.cpp:84
void reset()
Clear maps and return to initial state.
Definition ProbabilityMap.cpp:237
void addProbability(const IntensityMap &for_time)
Add in an IntensityMap to the appropriate probability grid based on each cell burn intensity.
Definition ProbabilityMap.cpp:67
void addProbabilities(const ProbabilityMap &rhs)
Combine results from another ProbabilityMap into this one.
Definition ProbabilityMap.cpp:49
size_t numSizes() const noexcept
Number of sizes that have been added.
Definition ProbabilityMap.cpp:88
const topo::Perimeter * perimeter_
Initial ignition grid to apply to outputs.
Definition ProbabilityMap.h:172
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