Documentation of UrbanFireXDT
Documentation of UrbanFireXDT
Loading...
Searching...
No Matches
output.h
Go to the documentation of this file.
1/*
2 * output.h
3 *
4 * This contains all functions and classes for buffering outputs
5 * and writing them to the disk finally.
6 *
7 */
8
9#ifndef __OUTPUT_H
10#define __OUTPUT_H
11
12#include <filesystem>
13#include <fstream>
14#include <list>
15#include <mutex>
16#include <sstream>
17#include <string>
18#include <vector>
19
20// The following classes are defined in this header file:
21class CUOutput;
25
26#include "vehicles.h"
27
28using namespace std;
29
30namespace output {
31
32 inline std::ofstream* substation_output = NULL;
33 inline std::ofstream* substation_output_details = NULL;
34 inline std::ofstream* cu_details_ccmd_output = NULL;
35 inline std::ofstream* cu_details_ev_output = NULL;
38 inline size_t n_cu_multi_outputs = 0;
39
40 inline std::mutex mtx_cu_details_ccmd;
41 inline std::mutex mtx_cu_details_ev;
42
51 void initializeDirectoriesBase(unsigned long scenario_id);
65 void initializeSubstationOutput(unsigned long scenario_id);
75 void initializeCUOutput(unsigned long scenario_id);
80 void closeOutputs();
84 void flushBuffers();
85
107
109
110 void outputMetrics(bool alt_fname = false, string * fname_postfix = NULL);
111
118 void outputMetricsStrListSACPlanning(list<string*> &output_list);
119
127 void outputWeeklyMetricsStrList(list<string*> *output_list, unsigned long week_number);
128
138 void outputEVMetrics(bool alt_fname = false, string * fname_postfix = NULL);
139
147 void outputRuntimeInformation(long seconds_setup, long seconds_main_run);
148
157 unsigned long ts, unsigned long cuID, bool optimization_state_ok,
158 double inp_max_p_bs_kW,
159 double inp_max_e_bs_kWh,
160 double inp_max_p_cs_kW,
161 double inp_current_bs_charge_kWh,
162 const std::vector<float>& inp_future_resid_demand_kW,
163 const std::vector<double>& inp_future_pv_generation_kW,
164 const std::vector<double>& inp_future_hp_shiftable_maxP,
165 const std::vector<double>& inp_future_hp_shiftable_minP,
166 const std::vector<double>& inp_future_hp_shiftable_maxE,
167 const std::vector<double>& inp_future_hp_shiftable_minE,
168 const std::vector<const std::vector<double>*>* inp_future_ev_shiftable_maxE,
169 const std::vector<const std::vector<double>*>* inp_future_ev_shiftable_minE,
170 const std::vector<const std::vector<double>*>* inp_future_ev_maxP,
171 const std::vector<double>& out_future_bs_power_kW,
172 const std::vector<double>& out_future_hp_power_kW,
173 const std::vector<std::vector<double>>& out_future_ev_power_kW
174 );
175
181 void outputEVStateDetails(unsigned long ts, unsigned long carID, EVState ev_state, float p_charging_kW, float cumsum_E_ch_home, float cumsum_E_min, float cumsum_E_max, float ev_bs_SOE_kWh);
182
183}
184
191class CUOutput {
192 public:
193 virtual ~CUOutput();
194 virtual void output_for_one_cu(
195 size_t cuID, size_t ts,
196 double load_vsm, double load_rsm,
197 double load_selfprod, double load_pv,
198 double bs_SOC, double load_bs,
199 double load_hp, double load_cs,
200 size_t n_cars_pc, size_t n_cars_pnc) = 0;
201 virtual void flush_buffer() = 0;
202 void close_buffer();
203 protected:
205 std::ofstream* output_stream;
206};
207
216 public:
217 CUOutputSingleFile(unsigned long scenario_id);
219 static const size_t bufferSize = 128*1024;
220 //
221 // definition of virtual methods from base class
223 size_t cuID, size_t ts,
224 double load_vsm, double load_rsm,
225 double load_selfprod, double load_pv,
226 double bs_SOC, double load_bs,
227 double load_hp, double load_cs,
228 size_t n_cars_pc, size_t n_cars_pnc);
229 void flush_buffer();
230 private:
231 mutex single_file_mutex;
232 char* buffer; // buffer for speedup
233};
234
240 public:
241 CUOutputOneFilePerCU(int cuID, filesystem::path& dirpath);
242 //
243 // definition of virtual methods from base class
245 size_t cuID, size_t ts,
246 double load_vsm, double load_rsm,
247 double load_selfprod, double load_pv,
248 double bs_SOC, double load_bs,
249 double load_hp, double load_cs,
250 size_t n_cars_pc, size_t n_cars_pnc);
251 void flush_buffer();
252};
253
262 public:
263 CUOutputOneFilePerSubstation(const string* substName, filesystem::path& dirpath);
264 //
265 // definition of virtual methods from base class
267 size_t cuID, size_t ts,
268 double load_vsm, double load_rsm,
269 double load_selfprod, double load_pv,
270 double bs_SOC, double load_bs,
271 double load_hp, double load_cs,
272 size_t n_cars_pc, size_t n_cars_pnc);
273 void flush_buffer();
274 private:
275 std::mutex single_file_mutex;
276};
277
278#endif
279
Definition output.h:239
void flush_buffer()
Definition output.cpp:756
void output_for_one_cu(size_t cuID, size_t ts, double load_vsm, double load_rsm, double load_selfprod, double load_pv, double bs_SOC, double load_bs, double load_hp, double load_cs, size_t n_cars_pc, size_t n_cars_pnc)
Definition output.cpp:716
Definition output.h:261
void output_for_one_cu(size_t cuID, size_t ts, double load_vsm, double load_rsm, double load_selfprod, double load_pv, double bs_SOC, double load_bs, double load_hp, double load_cs, size_t n_cars_pc, size_t n_cars_pnc)
Definition output.cpp:733
void flush_buffer()
Definition output.cpp:760
Definition output.h:215
static const size_t bufferSize
Definition output.h:219
void flush_buffer()
Definition output.cpp:751
~CUOutputSingleFile()
Definition output.cpp:670
void output_for_one_cu(size_t cuID, size_t ts, double load_vsm, double load_rsm, double load_selfprod, double load_pv, double bs_SOC, double load_bs, double load_hp, double load_cs, size_t n_cars_pc, size_t n_cars_pnc)
Definition output.cpp:697
Definition output.h:191
std::ofstream * output_stream
output stream
Definition output.h:205
virtual void flush_buffer()=0
virtual void output_for_one_cu(size_t cuID, size_t ts, double load_vsm, double load_rsm, double load_selfprod, double load_pv, double bs_SOC, double load_bs, double load_hp, double load_cs, size_t n_cars_pc, size_t n_cars_pnc)=0
bool buffer_open
True, if buffer(s) is/are opened.
Definition output.h:204
virtual ~CUOutput()
Definition output.cpp:636
void close_buffer()
Definition output.cpp:646
Definition output.h:30
void initializeDirectoriesPerPVar()
Definition output.cpp:111
std::mutex mtx_cu_details_ccmd
Mutex to ensure proper working in parallel processing for output::cu_details_ccmd_output.
Definition output.h:40
void closeOutputs()
Definition output.cpp:246
std::mutex mtx_cu_details_ev
Mutex to ensure proper working in parallel processing for output::cu_details_ev_output.
Definition output.h:41
std::ofstream * cu_details_ccmd_output
Output file for command details per time step and control unit (if selected by –ccmd-output option)
Definition output.h:34
void initializeDirectoriesBase(unsigned long scenario_id)
Definition output.cpp:40
void outputEVStateDetails(unsigned long ts, unsigned long carID, EVState ev_state, float p_charging_kW, float cumsum_E_ch_home, float cumsum_E_min, float cumsum_E_max, float ev_bs_SOE_kWh)
Definition output.cpp:614
void initializeSubstationOutput(unsigned long scenario_id)
Definition output.cpp:137
std::ofstream * substation_output
The main file for the substation load time series.
Definition output.h:32
std::ofstream * substation_output_details
The secondary file for additional information about the substations.
Definition output.h:33
void outputCurrentParamVariCombi(CurrentParamValues &)
Definition output.cpp:321
CUOutputSingleFile * cu_single_output
Reference to the single_output object, if one output for all CUs is selected.
Definition output.h:36
void outputControlCommandDetails(unsigned long ts, unsigned long cuID, bool optimization_state_ok, double inp_max_p_bs_kW, double inp_max_e_bs_kWh, double inp_max_p_cs_kW, double inp_current_bs_charge_kWh, const std::vector< float > &inp_future_resid_demand_kW, const std::vector< double > &inp_future_pv_generation_kW, const std::vector< double > &inp_future_hp_shiftable_maxP, const std::vector< double > &inp_future_hp_shiftable_minP, const std::vector< double > &inp_future_hp_shiftable_maxE, const std::vector< double > &inp_future_hp_shiftable_minE, const std::vector< const std::vector< double > * > *inp_future_ev_shiftable_maxE, const std::vector< const std::vector< double > * > *inp_future_ev_shiftable_minE, const std::vector< const std::vector< double > * > *inp_future_ev_maxP, const std::vector< double > &out_future_bs_power_kW, const std::vector< double > &out_future_hp_power_kW, const std::vector< std::vector< double > > &out_future_ev_power_kW)
Definition output.cpp:557
void outputCurrentCUSettings()
This function outputs current settings of the control units (like PV kWp, BS capacity and power,...
Definition output.cpp:366
std::ofstream * cu_details_ev_output
Output file for ev details per time step and control unit (if selected by –ev-output option)
Definition output.h:35
void outputWeeklyMetricsStrList(list< string * > *output_list, unsigned long week_number)
Definition output.cpp:451
void outputRuntimeInformation(long seconds_setup, long seconds_main_run)
Definition output.cpp:509
void outputMetrics(bool alt_fname=false, string *fname_postfix=NULL)
This function computed metrics for all control units after the simulation has been finished; if.
Definition output.cpp:407
CUOutputOneFilePerSubstation ** cu_multi_outputs
Reference to the array of CU ouputs, if one output per CU is selected.
Definition output.h:37
size_t n_cu_multi_outputs
Number of elements in cu_multi_ouputs.
Definition output.h:38
void flushBuffers()
Definition output.cpp:295
void initializeCUOutput(unsigned long scenario_id)
Definition output.cpp:180
void outputEVMetrics(bool alt_fname=false, string *fname_postfix=NULL)
Definition output.cpp:478
void outputMetricsStrListSACPlanning(list< string * > &output_list)
Definition output.cpp:435
Definition output.h:93
bool exp_pv_kWp_static_set
Definition output.h:94
float exp_pv_max_kWp_per_unit
Definition output.h:98
bool exp_pv_min_kWp_roof_sec_set
Definition output.h:96
float exp_pv_kWp_static
Definition output.h:94
bool exp_bs_maxE_kWh_set
Definition output.h:100
bool exp_pv_max_kWp_roof_sec_set
Definition output.h:97
float exp_bs_EP_ratio
Definition output.h:102
bool exp_bs_maxP_kW_set
Definition output.h:99
float exp_bs_maxP_kW
Definition output.h:99
float exp_pv_kWp_per_m2
Definition output.h:95
float exp_bs_maxE_kWh
Definition output.h:100
bool exp_pv_max_kWp_per_unit_set
Definition output.h:98
uint control_horizon_in_ts
Definition output.h:103
bool exp_bs_init_SOC_set
Definition output.h:101
bool exp_pv_kWp_per_m2_set
Definition output.h:95
bool control_horizon_in_ts_set
Definition output.h:103
bool exp_bs_EP_ratio_set
Definition output.h:102
float exp_bs_init_SOC
Definition output.h:101
float exp_pv_min_kWp_roof_sec
Definition output.h:96
bool control_update_freq_in_ts_set
Definition output.h:104
float exp_pv_max_kWp_roof_sec
Definition output.h:97
uint control_update_freq_in_ts
Definition output.h:104
EVState
Definition vehicles.h:42