DISPLACE  1.0
A spatial model of fisheries to help sustainable fishing and maritime spatial planning
shipsstats.h
Go to the documentation of this file.
1 #ifndef SHIPSSTATS_H
2 #define SHIPSSTATS_H
3 
4 
5 #include <QVector>
6 #include <mutex>
7 
8 class ShipsStats
9 {
10 public:
11  struct StatData {
12  double nb_transported_units = 0.0;
13  double fuel_use_h = 0.0;
14  double NOx_emission_gperkW = 0.0;
16  double GHG_emission_gperkW = 0.0;
17  double PME_emission_gperkW = 0.0;
18  double fuel_use_litre = 0.0;
19  double NOx_emission = 0.0;
20  double SOx_emission = 0.0;
21  double GHG_emission = 0.0;
22  double PME_emission = 0.0;
23 
24  StatData() {}
25  void clear() {
27  fuel_use_h = 0.0;
28  NOx_emission_gperkW = 0.0;
30  GHG_emission_gperkW = 0.0;
31  PME_emission_gperkW = 0.0;
32  fuel_use_litre = 0.0;
33  NOx_emission = 0.0;
34  SOx_emission = 0.0;
35  GHG_emission = 0.0;
36  PME_emission = 0.0;
37  }
38  };
39 
40 private:
41  bool mDirty = false;
42  QVector<QVector<StatData>> mDataPerShipTypeAndShipId;
43  mutable std::mutex mMutex;
44 
45  StatData &get(int shipid, int shiptype);
46  const StatData &get(int shipid, int shiptype) const;
47 
48 public:
49  ShipsStats();
50  ~ShipsStats() noexcept = default;
51 
52  ShipsStats(const ShipsStats& b);
54 
55  ShipsStats &operator = (const ShipsStats &b);
56  ShipsStats &operator = (ShipsStats &&b);
57 
58  bool dirty() const { return mDirty; }
59  void setDirty(bool dirty = true) { mDirty = dirty; }
60  void clear();
61 
62  void collectNbTransportedUnits (int step, int shipid, int shiptypeid, double nb_transported_units);
63  void collectFuelUseHour (int step, int shipid, int shiptypeid, double fuel_use_h);
64  void collectNOxEmissiongPerkW (int step, int shipid, int shiptypeid, double NOx_emission_gperkW);
65  void collectSOxEmissionPercentPerTotalFuelmass (int step, int shipid, int shiptypeid, double SOx_emission_percentpertotalfuelmass);
66  void collectGHGemissiongPerkW (int step, int shipid, int shiptypeid, double GHG_emission_gperkW);
67  void collectPMEemissiongPerkW (int step, int shipid, int shiptypeid, double PME_emission_gperkW);
68  void collectfuelUseLitre (int step, int shipid, int shiptypeid, double fuel_use_litre);
69  void collectNOxEmission (int step, int shipid, int shiptypeid, double NOx_emission);
70  void collectSOxEmission (int step, int shipid, int shiptypeid, double SOx_emission);
71  void collectGHGemission (int step, int shipid, int shiptypeid, double GHG_emission);
72  void collectPMEemission (int step, int shipid, int shiptypeid, double PME_emission);
73 
74 
75  double NbTransportedUnitsForShipAndShipGroup(int shipid, int shiptypeid) const;
76  double FuelPerHourForShipAndShipGroup(int shipid, int shiptypeid) const;
77  double NOxEmissionFactorForShipAndShipGroup(int shipid, int shiptypeid) const;
78  double SOxEmissionFactorForShipAndShipGroup(int shipid, int shiptypeid) const;
79  double GHGEmissionFactorForShipAndShipGroup(int shipid, int shiptypeid) const;
80  double PMEEmissionFactorForShipAndShipGroup(int shipid, int shiptypeid) const;
81  double FuelUseLitreForShipAndShipGroup(int shipid, int shiptypeid) const;
82  double NOxEmissionForShipAndShipGroup(int shipid, int shiptypeid) const;
83  double SOxEmissionForShipAndShipGroup(int shipid, int shiptypeid) const;
84  double GHGEmissionForShipAndShipGroup(int shipid, int shiptypeid) const;
85  double PMEEmissionForShipAndShipGroup(int shipid, int shiptypeid) const;
86 
87 
89 };
90 
91 
92 
93 #endif // SHIPSSTATS_H
94 
95 
96 
void collectGHGemissiongPerkW(int step, int shipid, int shiptypeid, double GHG_emission_gperkW)
Definition: shipsstats.cpp:125
double PMEEmissionForShipAndShipGroup(int shipid, int shiptypeid) const
Definition: shipsstats.cpp:233
void clear()
Definition: shipsstats.cpp:81
double SOx_emission
Definition: shipsstats.h:20
static const ShipsStats::StatData NoData
Definition: shipsstats.h:88
Definition: shipsstats.h:11
StatData()
Definition: shipsstats.h:24
void setDirty(bool dirty=true)
Definition: shipsstats.h:59
void collectFuelUseHour(int step, int shipid, int shiptypeid, double fuel_use_h)
Definition: shipsstats.cpp:101
double GHGEmissionFactorForShipAndShipGroup(int shipid, int shiptypeid) const
Definition: shipsstats.cpp:203
double NOxEmissionFactorForShipAndShipGroup(int shipid, int shiptypeid) const
Definition: shipsstats.cpp:193
void collectGHGemission(int step, int shipid, int shiptypeid, double GHG_emission)
Definition: shipsstats.cpp:165
double FuelPerHourForShipAndShipGroup(int shipid, int shiptypeid) const
Definition: shipsstats.cpp:188
double FuelUseLitreForShipAndShipGroup(int shipid, int shiptypeid) const
Definition: shipsstats.cpp:213
double nb_transported_units
Definition: shipsstats.h:12
void collectSOxEmission(int step, int shipid, int shiptypeid, double SOx_emission)
Definition: shipsstats.cpp:157
void collectfuelUseLitre(int step, int shipid, int shiptypeid, double fuel_use_litre)
Definition: shipsstats.cpp:141
ShipsStats()
Definition: shipsstats.cpp:7
double GHG_emission
Definition: shipsstats.h:21
Definition: shipsstats.h:8
void collectPMEemissiongPerkW(int step, int shipid, int shiptypeid, double PME_emission_gperkW)
Definition: shipsstats.cpp:133
double SOxEmissionForShipAndShipGroup(int shipid, int shiptypeid) const
Definition: shipsstats.cpp:223
double NOxEmissionForShipAndShipGroup(int shipid, int shiptypeid) const
Definition: shipsstats.cpp:218
void collectPMEemission(int step, int shipid, int shiptypeid, double PME_emission)
Definition: shipsstats.cpp:173
double SOx_emission_percentpertotalfuelmass
Definition: shipsstats.h:15
double GHGEmissionForShipAndShipGroup(int shipid, int shiptypeid) const
Definition: shipsstats.cpp:228
void clear()
Definition: shipsstats.h:25
void collectSOxEmissionPercentPerTotalFuelmass(int step, int shipid, int shiptypeid, double SOx_emission_percentpertotalfuelmass)
Definition: shipsstats.cpp:117
void collectNOxEmission(int step, int shipid, int shiptypeid, double NOx_emission)
Definition: shipsstats.cpp:149
double PME_emission_gperkW
Definition: shipsstats.h:17
double fuel_use_litre
Definition: shipsstats.h:18
double PME_emission
Definition: shipsstats.h:22
double GHG_emission_gperkW
Definition: shipsstats.h:16
double fuel_use_h
Definition: shipsstats.h:13
double PMEEmissionFactorForShipAndShipGroup(int shipid, int shiptypeid) const
Definition: shipsstats.cpp:208
double SOxEmissionFactorForShipAndShipGroup(int shipid, int shiptypeid) const
Definition: shipsstats.cpp:198
double NOx_emission
Definition: shipsstats.h:19
~ShipsStats() noexcept=default
double NOx_emission_gperkW
Definition: shipsstats.h:14
void collectNbTransportedUnits(int step, int shipid, int shiptypeid, double nb_transported_units)
Definition: shipsstats.cpp:93
bool dirty() const
Definition: shipsstats.h:58
double NbTransportedUnitsForShipAndShipGroup(int shipid, int shiptypeid) const
Definition: shipsstats.cpp:182
void collectNOxEmissiongPerkW(int step, int shipid, int shiptypeid, double NOx_emission_gperkW)
Definition: shipsstats.cpp:109