Documentation of UrbanFireXDT
Documentation of UrbanFireXDT
Loading...
Searching...
No Matches
global.h
Go to the documentation of this file.
1/*
2 *
3 * global.h
4 *
5 * Contains a namespace where all global variables are stored
6 *
7 * */
8
9#ifndef GLOBAL_H
10#define GLOBAL_H
11
12#include <ctime>
13#include <filesystem>
14#include <list>
15#include <map>
16#include <set>
17#include <string>
18#include <utility>
19#include <vector>
20
21#include "sac_planning.h"
22#include "units.h"
23
35namespace global {
36
37 // inline float current_energy_feedin_price = 0.0;
38 // inline float current_energy_supply_price = 0.0;
39 // Time info (read from time_indices table in central values database)
40 inline unsigned long* time_timestep_id = NULL;
41 inline std::vector<struct tm*>* time_localtime_r = NULL;
42 inline std::vector<struct tm*>* time_localtime_l = NULL;
43 inline std::vector<std::string>* time_localtimezone_str = NULL;
44 inline std::map<std::string, size_t> pv_profiles_information;
45 inline std::map<std::string, std::vector<const float*>> pv_profiles_per_ori;
46 inline const float* const* pv_profiles_data = NULL;
47 inline const float* const* hp_profiles = NULL;
48 inline const double* const* hp_profiles_cumsum = NULL;
49 inline const float* residual_gridload_kW = NULL;
50 inline const float* wind_profile = NULL;
53 inline unsigned long n_ts_between_flushs = 1000;
54 inline std::map<unsigned long, float> annual_heat_demand_kWh;
55 inline std::map<unsigned long, float> building_volumes_m3;
56 inline std::map<unsigned long, std::vector<std::pair<float, std::string>>> roof_section_orientations;
57 inline std::set<unsigned long> locations_with_geodata;
58 inline unsigned int current_repetition_counter = 0;
59 inline const float* emission_ts = NULL;
60 inline const float* eprices_local_ts = NULL;
61 inline const float* eprices_spotm_ts = NULL;
62 inline std::vector<unsigned long> unitIDs_selected_for_output;
63
64 inline std::list<std::list<std::pair<std::string,float>>>* parameter_var_list = NULL;
65
66 inline unsigned int curr_param_vari_combi_index = 0;
67 inline std::filesystem::path* current_output_dir = NULL;
68 inline std::filesystem::path* current_output_dir_prefix = NULL;
69 inline std::filesystem::path* current_global_output_dir = NULL;
70
71 inline bool time_info_init = false;
72
73 inline std::chrono::time_point<std::chrono::system_clock> time_of_simulation_start;
74
75 inline std::string structure_db_column_name_energy_prices = "local_price";
76
77
79 void vacuum();
81
82
87 enum struct OutputModePerCU : short {
91 };
92
96 enum struct ExpansionProfileAllocationMode : short {
99 Random
100 };
101
107 enum struct CUSModeFCA {
111 BestSSR,
112 BestNPV,
113 UseList
114 };
115
127
144
152 enum struct PVSizingMode : short {
155 Optimized,
156 };
157
166
175
185
189 const char* const output_section_delimiter = "*********************************************************************************";
190
191}
192
193
194/*
195 * class Global
196 *
197 * This class contains all global variables that cannot change
198 * after they have been set once.
199 *
200 * Attention: Not to be confused with namespace global (mind the lower case "g").
201 */
202class Global {
203 public:
204 static void InitializeStaticVariables();
205 static void DeleteStaticVariables();
206 //
207 static bool AllVariablesInitialized();
208 static void PrintUninitializedVariables();
210 //
211 static void LockAllVariables();
212 static void UnlockAllVariables();
213 //
214 // getter methods
215 static unsigned long get_n_timesteps() { return n_timesteps; }
216 static unsigned long get_first_timestep() { return first_timestep;}
217 static unsigned long get_last_timestep() { return last_timestep; }
218 static unsigned long get_n_substations() { return n_substations; }
219 static unsigned long get_n_CUs() { return n_CUs; }
220 static unsigned long get_n_MUs() { return n_MUs; }
221 static unsigned long get_n_pv_profiles() { return n_pv_ts; }
222 static unsigned long get_n_heatpump_profiles() { return n_hp_ts; }
223 static unsigned int get_seed() { return seed; }
224 static bool is_seed_set() { return seed_set; }
225 static bool get_compute_weekly_metrics() { return compute_weekly_metrics; }
226 static bool is_parameter_variation() { return pvar_selected; }
227 static int get_parameter_varID() { return pvar_id; }
228 static bool get_repetitions_selected() { return repetitions_selected; }
229 static uint get_n_repetitions() { return n_repetitions; }
230 static uint get_n_threads() { return n_threads; }
231 static bool get_work_stealing() { return work_stealing; }
232 static bool get_stop_on_cc_err() { return stop_on_cc_err; }
233 static struct tm* get_ts_start_tm() { return ts_start_tm; }
234 static struct tm* get_ts_end_tm() { return ts_end_tm; }
235 static unsigned int get_tsteps_per_hour() { return tsteps_per_hour; }
236 static float get_time_step_size_in_h() { return time_step_size_in_h; }
237 static unsigned long get_expansion_scenario_id() { return expansion_scenario_id; }
238 static bool get_break_sac_loop_if_limit_reached() { return break_sac_loop_if_limit_reached; }
239 static float get_exp_pv_kWp_static() { return exp_pv_kWp_static; }
240 static float get_exp_pv_kWp_per_m2() { return exp_pv_kWp_per_m2; }
241 static float get_exp_pv_min_kWp_roof_sec() { return exp_pv_min_kWp_roof_sec; }
242 static float get_exp_pv_max_kWp_roof_sec() { return exp_pv_max_kWp_per_sec; }
243 static float get_exp_pv_max_kWp_per_unit() { return exp_pv_max_kWp_per_unit; }
244 static float get_exp_pv_max_kWp_total() { return exp_pv_max_kWp_total; }
245 static float get_exp_bess_kW() { return exp_bess_kW; }
246 static float get_exp_bess_kWh() { return exp_bess_kWh; }
247 static float get_exp_bess_E_P_ratio() { return exp_bess_E_P_ratio; }
248 static float get_exp_bess_max_capacity(){return exp_bess_max_capacity; }
249 static float get_exp_bess_sizingE_boPV(){return exp_bess_sizingE_PV_ratio; }
250 static float get_exp_bess_start_soc() { return exp_bess_start_soc; }
251 static float get_exp_bess_effi_in() { return exp_bess_effi_in; }
252 static float get_exp_bess_effi_out() { return exp_bess_effi_out; }
253 static float get_exp_bess_self_ds_ts() { return exp_bess_self_ds_ts; }
254 static float get_exp_bess_P_for_SOC_0(){ return exp_bess_P_for_SOC_0;}
255 static float get_exp_bess_P_for_SOC_1(){ return exp_bess_P_for_SOC_1;}
256 static float get_exp_bess_max_E_total(){ return exp_bess_max_E_total;}
257 static float get_exp_bess_max_P_total(){ return exp_bess_max_P_total;}
258 static bool is_exp_hp_max_n_addition_set() { return exp_hp_max_n_addition_set; }
259 static unsigned long get_exp_hp_max_n_addition() { return exp_hp_max_n_addition; }
260 static bool is_exp_ev_max_n_addition_set() { return exp_ev_max_n_addition_set; }
261 static unsigned long get_exp_ev_max_n_addition() { return exp_ev_max_n_addition; }
262 static unsigned long get_exp_cs_max_ev_per_cs() { return exp_cs_max_ev_per_cs; }
263 static float get_open_space_pv_kWp() { return open_space_pv_kWp; }
264 static float get_wind_kWp() { return wind_kWp; }
265 static float get_feed_in_tariff() { return feed_in_tariff; }
266 static float get_demand_tariff() { return demand_tariff; }
267 static float get_emissions_g_CO2eq_per_kWh() { return emissions_per_kWh; }
268 static float get_inst_cost_PV_per_kWp(){ return inst_cost_PV_per_kWp; }
269 static float get_inst_cost_BS_per_kWh(){ return inst_cost_BS_per_kWh; }
270 static float get_inst_cost_HP_per_kW() { return inst_cost_HP_per_kW; }
271 static float get_inst_cost_CS_per_unit(){return inst_cost_CS_per_unit;}
272 static float get_npv_discount_rate() { return npv_discount_rate; }
273 static unsigned int get_npv_time_horizon() { return npv_time_horizon; }
274 static double get_npv_factor_if_const() { return npv_factor_if_const; }
275 static double get_annuity_factor() { return 1.0 / npv_factor_if_const; }
276 static unsigned int get_hp_flexibility_in_ts() { return hp_flexibility_in_ts; }
277 static float get_heat_demand_thermalE_to_hpE_conv_f() { return heat_demand_thermalE_to_hpE_conv_f; }
278 static float get_heat_cons_bobv_slope() { return heat_cons_bobv_slope; }
279 static float get_heat_cons_bobv_intercept() { return heat_cons_bobv_intercept; }
280 static float get_ev_plugin_probability() { return ev_plugin_probability; }
281 static float get_ev_battery_size_kWh() { return ev_battery_size_kWh; }
282 static float get_ev_consumption_kWh_km() { return ev_consumption_kWh_km; }
283 static float get_ev_max_charging_power_kW() { return ev_max_charging_power_kW; }
284 static float get_cs_max_charging_power_kW() { return cs_max_charging_power_kW; }
285 static bool get_use_emission_time_series_ia() { return use_emission_time_series_ia; }
286 static bool get_use_prices_time_series_ia() { return use_prices_time_series_ia; }
287 static bool get_select_only_residential_buildings() { return select_only_residential_buildings; }
288 static uint get_control_horizon_in_ts() { return control_horizon_in_ts; }
289 static uint get_control_update_freq_in_ts() { return control_update_freq_in_ts; }
290 static unsigned long get_max_parallel_opti_vars() { return max_parallel_opti_vars; }
291 static const std::string& get_input_path() { return input_path; }
292 static const std::string& get_output_path() { return output_path; }
293 static const std::string& get_structure_database_name() { return system_db_name; }
294 static const std::string& get_ev_data_path() { return ev_data_path; }
295 static const std::string& get_cache_dir_path() { return cache_dir_path_init ? cache_dir_path : input_path ; }
296 static global::OutputModePerCU get_output_mode_per_cu() { return output_mode_per_cu; }
298 static global::CUSModeFCA get_cu_selection_mode_fca() { return cu_selection_mode_fca; }
301 static global::PVSizingMode get_exp_pv_sizing_mode() { return exp_pv_sizing_mode; }
302 static global::ControllerMode get_controller_mode() { return controller_mode; }
303 static global::ControllerBSGridChargingMode get_controller_bs_grid_charging_mode() { return controller_bs_grid_charging_mode; }
304 static global::ControllerOptimizationTarget get_controller_optimization_target() { return controller_optimization_target; }
305 static const std::set<unsigned long>* get_cu_list_for_sac_planning() { return cu_list_for_sac_planning; }
306 static float get_annual_heat_demand_limit_fsac() { return annual_heat_demand_limit_fsac; }
307 static bool get_select_buildings_wg_heatd_only() { return select_buildings_wg_heatd_only; }
308 static bool get_create_substation_output() { return create_substation_output; }
309 static bool get_create_control_cmd_output() { return create_control_cmd_output; }
310 static bool get_create_ev_detailed_output() { return create_ev_detailed_output; }
311 static const std::string& get_exp_pv_static_profile_orientation() { return exp_pv_static_profile_orientation; }
312 static int get_exp_pv_static_profile_idx() { return exp_pv_static_profile_idx; }
313 // special setter methods
314 static void increment_seed();
315 // setter methods
316 static void set_n_timesteps(unsigned long n_timesteps);
317 static void set_first_timestep(unsigned long ts);
318 static void set_last_timestep(unsigned long ts);
319 static void set_n_substations(unsigned long n_substations);
320 static void set_n_CUs(unsigned long n_CUs);
321 static void set_n_MUs(unsigned long n_MUs);
322 static void set_n_pv_profiles(unsigned long n_pv_ts);
323 static void set_n_heatpump_profiles(unsigned long n_hp_ts);
324 static void set_seed(unsigned int value);
325 static void set_compute_weekly_metrics(bool mode);
326 static void set_pvar_vals(bool pvar_set, int pvarID);
327 static void set_repetitions_selected(bool value);
328 static void set_n_repetitions(unsigned int value);
329 static void set_n_threads(unsigned int value);
330 static void set_work_stealing(bool value);
331 static void set_stop_on_cc_err(bool value);
332 static void set_ts_start_tm(struct tm* ts_start_tm);
333 static void set_ts_end_tm(struct tm* ts_end_tm);
334 static void set_tsteps_per_hour(int tsteps_per_hour);
335 static void set_expansion_scenario_id(unsigned long expansion_scenario_id);
336 static void set_break_sac_loop_if_limit_reached(bool value);
338 static void set_exp_pv_kWp_static(float value);
339 static void set_exp_pv_kWp_per_m2(float value);
340 static void set_exp_pv_min_kWp_roof_sec(float value);
341 static void set_exp_pv_max_kWp_roof_sec(float value);
342 static void set_exp_pv_max_kWp_per_unit(float value);
343 static void set_exp_pv_max_kWp_total(float value);
344 static void set_exp_bess_kW(float exp_bess_kW);
345 static void set_exp_bess_kWh(float exp_bess_kWh);
346 static void set_exp_bess_E_P_ratio(float value);
347 static void set_exp_bess_max_capacity(float value);
348 static void set_exp_bess_sizingE_boPV(float value);
349 static void set_exp_bess_start_soc(float exp_bess_start_soc);
350 static void set_exp_bess_effi_in(float value);
351 static void set_exp_bess_effi_out(float value);
352 static void set_exp_bess_self_ds_ts(float value);
353 static void set_exp_bess_P_for_SOC_0(float value);
354 static void set_exp_bess_P_for_SOC_1(float value);
355 static void set_exp_bess_max_E_total(float value);
356 static void set_exp_bess_max_P_total(float value);
357 static void set_exp_hp_max_n_addition(unsigned long value);
358 static void set_exp_ev_max_n_addition(unsigned long value);
359 static void set_exp_cs_max_ev_per_cs(unsigned long value);
360 static void set_open_space_pv_kWp(float open_space_kWp);
361 static void set_wind_kWp(float wind_kWp);
362 static void set_feed_in_tariff(float value);
363 static void set_demand_tariff(float value);
364 static void set_emissions_g_CO2eq_per_kWh(float value);
365 static void set_inst_cost_PV_per_kWp(float value);
366 static void set_inst_cost_BS_per_kWh(float value);
367 static void set_inst_cost_HP_per_kW(float value);
368 static void set_inst_cost_CS_per_unit(float value);
369 static void set_npv_discount_rate(float value);
370 static void set_npv_time_horizon(unsigned int value);
371 static void set_hp_flexibility_in_ts(unsigned int value);
372 static void set_heat_demand_thermalE_to_hpE_conv_f(float value);
373 static void set_heat_cons_bobv_slope(float value);
374 static void set_heat_cons_bobv_intercept(float value);
375 static void set_ev_plugin_probability(float value);
376 static void set_ev_battery_size_kWh(float value);
377 static void set_ev_consumption_kWh_km(float value);
378 static void set_ev_max_charging_power_kW(float value);
379 static void set_cs_max_charging_power_kW(float value);
380 static void set_use_emission_time_series_ia(bool use);
381 static void set_use_prices_time_series_ia(bool use);
382 static void set_select_only_residential_buildings(bool value);
383 static void set_control_horizon_in_ts(unsigned int value);
384 static void set_control_update_freq_in_ts(unsigned int value);
385 static void set_max_parallel_opti_vars(unsigned long value);
386 static void set_input_path(std::string* path);
387 static void set_output_path(std::string* path);
388 static void set_structure_database_name(std::string* fname);
389 static void set_ev_data_path(std::string* path);
390 static void set_cache_dir_path(const std::string* path);
399 static void set_cu_list_for_sac_planning(const std::set<unsigned long>* selected_cuIDs);
400 static void set_annual_heat_demand_limit_fsac(float value);
401 static void set_select_buildings_wg_heatd_only(bool value);
402 static void set_create_substation_output(bool value);
403 static void set_create_control_cmd_output(bool value);
404 static void set_create_ev_detailed_output(bool value);
405 static void set_exp_pv_static_profile_orientation(std::string* value);
406 static void set_exp_pv_static_profile_idx(int value);
407 private:
408 Global();
409 static bool is_locked;
410 // variables
411 static unsigned long n_timesteps;
412 static unsigned long first_timestep;
413 static unsigned long last_timestep;
414 static unsigned long n_substations;
415 static unsigned long n_CUs;
416 static unsigned long n_MUs;
417 static unsigned long n_pv_ts;
418 static unsigned long n_hp_ts;
419 static unsigned int seed;
420 static bool compute_weekly_metrics;
421 static bool pvar_selected;
422 static int pvar_id;
423 static bool repetitions_selected;
424 static unsigned int n_repetitions;
425 static unsigned int n_threads;
426 static bool work_stealing;
427 static bool stop_on_cc_err;
428 static struct tm* ts_start_tm;
429 static struct tm* ts_end_tm;
430 static unsigned int tsteps_per_hour;
431 static unsigned long expansion_scenario_id;
432 static float time_step_size_in_h;
433 static bool break_sac_loop_if_limit_reached;
434 static global::PVSizingMode exp_pv_sizing_mode;
435 static float exp_pv_kWp_static;
436 static float exp_pv_kWp_per_m2;
437 static float exp_pv_min_kWp_roof_sec;
438 static float exp_pv_max_kWp_per_sec;
439 static float exp_pv_max_kWp_per_unit;
440 static float exp_pv_max_kWp_total;
441 static float exp_bess_kW;
442 static float exp_bess_kWh;
443 static float exp_bess_E_P_ratio;
444 static float exp_bess_max_capacity;
445 static float exp_bess_sizingE_PV_ratio;
446 static float exp_bess_start_soc;
447 static float exp_bess_effi_in;
448 static float exp_bess_effi_out;
449 static float exp_bess_self_ds_ts;
450 static float exp_bess_P_for_SOC_0;
451 static float exp_bess_P_for_SOC_1;
452 static float exp_bess_max_E_total;
453 static float exp_bess_max_P_total;
454 static unsigned long exp_hp_max_n_addition;
455 static unsigned long exp_ev_max_n_addition;
456 static unsigned long exp_cs_max_ev_per_cs;
457 static float open_space_pv_kWp;
458 static float wind_kWp;
459 static float feed_in_tariff;
460 static float demand_tariff;
461 static float emissions_per_kWh;
462 static float inst_cost_PV_per_kWp;
463 static float inst_cost_BS_per_kWh;
464 static float inst_cost_HP_per_kW;
465 static float inst_cost_CS_per_unit;
466 static float npv_discount_rate;
467 static unsigned int npv_time_horizon;
468 static double npv_factor_if_const;
469 static unsigned int hp_flexibility_in_ts;
470 static float heat_demand_thermalE_to_hpE_conv_f;
471 static float heat_cons_bobv_slope;
472 static float heat_cons_bobv_intercept;
473 static float ev_plugin_probability;
474 static float ev_battery_size_kWh;
475 static float ev_consumption_kWh_km;
476 static float ev_max_charging_power_kW;
477 static float cs_max_charging_power_kW;
478 static bool use_emission_time_series_ia;
479 static bool use_prices_time_series_ia;
480 static bool select_only_residential_buildings;
481 static uint control_horizon_in_ts;
482 static uint control_update_freq_in_ts;
483 static unsigned long max_parallel_opti_vars;
484 static std::string input_path;
485 static std::string output_path;
486 static std::string system_db_name;
487 static std::string ev_data_path;
488 static std::string cache_dir_path;
489 static global::OutputModePerCU output_mode_per_cu;
490 static global::ExpansionProfileAllocationMode exp_profile_mode;
491 static global::CUSModeFCA cu_selection_mode_fca;
492 static global::BatteryPowerComputationMode bat_power_comp_mode;
493 static global::BatteryCapacityComputationMode bat_capacity_comp_mode;
494 static global::ControllerMode controller_mode;
495 static global::ControllerBSGridChargingMode controller_bs_grid_charging_mode;
496 static global::ControllerOptimizationTarget controller_optimization_target;
497 static const std::set<unsigned long>* cu_list_for_sac_planning;
498 static float annual_heat_demand_limit_fsac;
499 static bool select_buildings_wg_heatd_only;
500 static bool create_substation_output;
501 static bool create_control_cmd_output;
502 static bool create_ev_detailed_output;
503 static std::string exp_pv_static_profile_orientation;
504 static int exp_pv_static_profile_idx;
505 // boolean values holding information if the correspoding
506 // variable has been set or not
507 static bool n_timesteps_init;
508 static bool first_timestep_init;
509 static bool last_timestep_init;
510 static bool n_substations_init;
511 static bool n_CUs_init;
512 static bool n_MUs_init;
513 static bool n_pv_ts_init;
514 static bool n_hp_ts_init;
515 static bool seed_set;
516 static bool pvar_set;
517 static bool repetitions_selected_set;
518 static bool n_repetitions_set;
519 static bool n_threads_set;
520 static bool ts_start_str_init;
521 static bool ts_end_str_init;
522 static bool tsteps_per_hour_init;
523 static bool expansion_scenario_id_init;
524 static bool exp_pv_kWp_static_init;
525 static bool exp_pv_kWp_per_m2_init;
526 static bool exp_pv_min_kWp_roof_sec_init;
527 static bool exp_pv_max_kWp_per_sec_init;
528 static bool exp_pv_max_kWp_per_unit_init;
529 static bool exp_pv_max_kWp_total_init;
530 static bool exp_bess_kW_init;
531 static bool exp_bess_kWh_init;
532 static bool exp_bess_E_P_ratio_init;
533 static bool exp_bess_start_soc_init;
534 static bool exp_hp_max_n_addition_set;
535 static bool exp_ev_max_n_addition_set;
536 static bool open_space_pv_kWp_init;
537 static bool wind_kWp_init;
538 static bool feed_in_tariff_set;
539 static bool demand_tariff_set;
540 static bool inst_cost_PV_per_kWp_set;
541 static bool inst_cost_BS_per_kWh_set;
542 static bool npv_discount_rate_set;
543 static bool npv_time_horizon_set;
544 static bool heat_demand_thermalE_to_hpE_conv_f_set;
545 static bool input_path_init;
546 static bool output_path_init;
547 static bool cache_dir_path_init;
548 static bool output_mode_per_cu_init;
549 static bool exp_profile_mode_init;
550 static bool cu_selection_mode_fca_init;
551 static bool bat_power_comp_mode_init;
552};
553
554#endif
555
Definition global.h:202
static float get_inst_cost_HP_per_kW()
Definition global.h:270
static void set_compute_weekly_metrics(bool mode)
Definition global.cpp:560
static bool is_exp_ev_max_n_addition_set()
Returns true iif a upper limit for the number of added EVs is set. The concrete value would be given ...
Definition global.h:260
static float get_heat_cons_bobv_slope()
Parameter of linear regression (slope) for estimating annual heat consumption based on the building v...
Definition global.h:278
static bool get_use_prices_time_series_ia()
Return weather the electricity prices time series (if it is available in the data) should be used or ...
Definition global.h:286
static unsigned int get_hp_flexibility_in_ts()
Returns the flexibility of the heat pump profiles in time steps.
Definition global.h:276
static float get_exp_pv_kWp_static()
Definition global.h:239
static void set_exp_pv_kWp_per_m2(float value)
Definition global.cpp:678
static void set_select_buildings_wg_heatd_only(bool value)
Definition global.cpp:1237
static void set_expansion_scenario_id(unsigned long expansion_scenario_id)
Definition global.cpp:648
static float get_exp_pv_max_kWp_total()
Returns the max. kWp for all expanded units, or -1.0 if it is not set.
Definition global.h:244
static void set_repetitions_selected(bool value)
Definition global.cpp:576
static float get_annual_heat_demand_limit_fsac()
Returns the upper limit for selection of a control unit for simulative addition based on the annual h...
Definition global.h:306
static bool CheckTimeRelatedVariablesInitState()
Returns true if all time-related variables have been initialized. If not, it will return false and pr...
Definition global.cpp:460
static void set_hp_flexibility_in_ts(unsigned int value)
Definition global.cpp:975
static global::OutputModePerCU get_output_mode_per_cu()
Definition global.h:296
static void set_control_update_freq_in_ts(unsigned int value)
Definition global.cpp:1091
static void set_exp_cs_max_ev_per_cs(unsigned long value)
Definition global.cpp:871
static void set_n_heatpump_profiles(unsigned long n_hp_ts)
Definition global.cpp:536
static float get_cs_max_charging_power_kW()
Returns the maximum charging power per simulated ComponentCS or -1, if not set.
Definition global.h:284
static float get_exp_bess_start_soc()
!< Returns the factor multiplied with PV nominal power if the battery sizing mode is set to use the P...
Definition global.h:250
static float get_time_step_size_in_h()
Definition global.h:236
static void set_exp_bess_effi_in(float value)
Definition global.cpp:778
static void set_cs_max_charging_power_kW(float value)
Definition global.cpp:1048
static const std::set< unsigned long > * get_cu_list_for_sac_planning()
Returns the std::set of control unit IDs (if existing, otherwise NULL) that contains the IDs of the u...
Definition global.h:305
static void set_battery_power_computation_mode(global::BatteryPowerComputationMode mode)
Definition global.cpp:1180
static unsigned long get_n_MUs()
Definition global.h:220
static bool AllVariablesInitialized()
Definition global.cpp:260
static void set_last_timestep(unsigned long ts)
Definition global.cpp:504
static void set_input_path(std::string *path)
Definition global.cpp:1102
static void set_wind_kWp(float wind_kWp)
Definition global.cpp:886
static unsigned long get_n_pv_profiles()
Definition global.h:221
static float get_exp_bess_max_E_total()
Returns the upper limit of (resid.) battery capacity for installation, or -1.0 if it is not set.
Definition global.h:256
static float get_emissions_g_CO2eq_per_kWh()
Definition global.h:267
static unsigned long get_first_timestep()
Returns the first timestep (starting at 1) in the simulation range.
Definition global.h:216
static void set_npv_discount_rate(float value)
Definition global.cpp:917
static void set_structure_database_name(std::string *fname)
Definition global.cpp:1126
static float get_exp_bess_P_for_SOC_0()
Definition global.h:254
static float get_heat_demand_thermalE_to_hpE_conv_f()
Definition global.h:277
static void set_feed_in_tariff(float value)
Definition global.cpp:894
static unsigned long get_n_CUs()
Definition global.h:219
static float get_inst_cost_CS_per_unit()
Definition global.h:271
static void set_open_space_pv_kWp(float open_space_kWp)
Definition global.cpp:878
static void set_heat_demand_thermalE_to_hpE_conv_f(float value)
Definition global.cpp:982
static void set_inst_cost_CS_per_unit(float value)
Definition global.cpp:968
static void set_use_prices_time_series_ia(bool use)
Definition global.cpp:1066
static void set_exp_pv_kWp_static(float value)
Definition global.cpp:670
static void set_stop_on_cc_err(bool value)
Definition global.cpp:607
static bool get_select_buildings_wg_heatd_only()
True, if only buildings are to be selected for the simulated addition for which an exact specified he...
Definition global.h:307
static void set_exp_bess_effi_out(float value)
Definition global.cpp:789
static float get_open_space_pv_kWp()
Definition global.h:263
static int get_parameter_varID()
Definition global.h:227
static struct tm * get_ts_end_tm()
Definition global.h:234
static void set_break_sac_loop_if_limit_reached(bool value)
Definition global.cpp:656
static void set_exp_bess_start_soc(float exp_bess_start_soc)
Definition global.cpp:766
static global::BatteryCapacityComputationMode get_battery_capacity_computation_mode()
Definition global.h:300
static void set_ev_plugin_probability(float value)
Definition global.cpp:1004
static unsigned int get_tsteps_per_hour()
Definition global.h:235
static bool get_select_only_residential_buildings()
Should only be residential buildings be considered for simulated component addition (SAC planning)?
Definition global.h:287
static void set_controller_optimization_target(global::ControllerOptimizationTarget mode)
Definition global.cpp:1202
static float get_wind_kWp()
Definition global.h:264
static void set_controller_mode(global::ControllerMode mode)
Definition global.cpp:1195
static bool get_break_sac_loop_if_limit_reached()
Returns true if the SAC loop should be stopped for an individual combination (like PV + HP) if one of...
Definition global.h:238
static bool get_create_substation_output()
Returns whether a output for the substation time series should be created or not.
Definition global.h:308
static bool get_repetitions_selected()
Definition global.h:228
static const std::string & get_structure_database_name()
Definition global.h:293
static void set_ev_consumption_kWh_km(float value)
Definition global.cpp:1026
static void set_n_timesteps(unsigned long n_timesteps)
Definition global.cpp:488
static void set_ev_max_charging_power_kW(float value)
Definition global.cpp:1037
static float get_ev_plugin_probability()
Definition global.h:280
static void set_max_parallel_opti_vars(unsigned long value)
Definition global.cpp:1219
static double get_npv_factor_if_const()
Returns the factor for multiplication in the NPV formula for the discounted revenues if the cashflow ...
Definition global.h:274
static void set_n_substations(unsigned long n_substations)
Definition global.cpp:512
static float get_exp_pv_max_kWp_per_unit()
Returns the max. kWp per unit, or -1.0 if it is not set.
Definition global.h:243
static bool get_compute_weekly_metrics()
Definition global.h:225
static global::CUSModeFCA get_cu_selection_mode_fca()
Definition global.h:298
static void set_cu_list_for_sac_planning(const std::set< unsigned long > *selected_cuIDs)
Definition global.cpp:1209
static void set_annual_heat_demand_limit_fsac(float value)
Definition global.cpp:1226
static void set_exp_bess_E_P_ratio(float value)
Definition global.cpp:734
static void set_exp_bess_max_capacity(float value)
Definition global.cpp:742
static global::ControllerMode get_controller_mode()
Definition global.h:302
static const std::string & get_ev_data_path()
Definition global.h:294
static void set_exp_bess_kW(float exp_bess_kW)
Definition global.cpp:718
static uint get_n_repetitions()
Definition global.h:229
static void set_output_mode_per_cu(global::OutputModePerCU mode)
Definition global.cpp:1156
static const std::string & get_exp_pv_static_profile_orientation()
Definition global.h:311
static void set_exp_pv_max_kWp_per_unit(float value)
Definition global.cpp:702
static void set_exp_pv_max_kWp_total(float value)
Definition global.cpp:710
static void set_ts_start_tm(struct tm *ts_start_tm)
Definition global.cpp:614
static float get_exp_bess_max_capacity()
Returns the maxium capacity of a battery storage (important for sizing with other modes than constant...
Definition global.h:248
static unsigned long get_expansion_scenario_id()
Definition global.h:237
static float get_feed_in_tariff()
Definition global.h:265
static void set_exp_bess_self_ds_ts(float value)
Definition global.cpp:800
static float get_exp_pv_min_kWp_roof_sec()
Returns the min. kWp per roof section - smaller sections will be ignored, defaults to 0....
Definition global.h:241
static uint get_control_horizon_in_ts()
The control horizon in time steps (only if controller_mode is set to a value including optimization)
Definition global.h:288
static void set_exp_ev_max_n_addition(unsigned long value)
Definition global.cpp:863
static void set_output_path(std::string *path)
Definition global.cpp:1114
static void InitializeStaticVariables()
Definition global.cpp:247
static float get_exp_pv_max_kWp_roof_sec()
Returns the max. kWp per roof section, or -1.0 if it is not set.
Definition global.h:242
static unsigned long get_exp_hp_max_n_addition()
Upper limit for the number of added simulated heat pumps.
Definition global.h:259
static float get_exp_bess_max_P_total()
Returns the upper limit of (resid.) battery power for installation, or -1.0 if it is not set.
Definition global.h:257
static void set_n_pv_profiles(unsigned long n_pv_ts)
Definition global.cpp:528
static global::PVSizingMode get_exp_pv_sizing_mode()
Definition global.h:301
static float get_inst_cost_BS_per_kWh()
Definition global.h:269
static float get_ev_max_charging_power_kW()
The maximum charging power of a simulated EV.
Definition global.h:283
static unsigned int get_npv_time_horizon()
Definition global.h:273
static void set_control_horizon_in_ts(unsigned int value)
Definition global.cpp:1080
static global::ControllerOptimizationTarget get_controller_optimization_target()
Returns the selected optimization target (only valid if a controller mode with optimization is select...
Definition global.h:304
static float get_demand_tariff()
Definition global.h:266
static void set_controller_bs_grid_charging_mode(global::ControllerBSGridChargingMode mode)
Definition global.cpp:1212
static float get_exp_bess_P_for_SOC_1()
Definition global.h:255
static void set_exp_pv_max_kWp_roof_sec(float value)
Definition global.cpp:694
static bool get_stop_on_cc_err()
Stores the value of command line option 'stop_on_cc_err'. True, if the simulation execution should be...
Definition global.h:232
static unsigned long get_exp_ev_max_n_addition()
Upper limit for the (total) number of added EVs (summed over all control units)
Definition global.h:261
static void set_n_MUs(unsigned long n_MUs)
Definition global.cpp:544
static float get_exp_bess_effi_out()
Definition global.h:252
static void set_inst_cost_BS_per_kWh(float value)
Definition global.cpp:953
static float get_exp_bess_E_P_ratio()
Definition global.h:247
static void set_select_only_residential_buildings(bool value)
Definition global.cpp:1073
static float get_inst_cost_PV_per_kWp()
!< Returns the mean emissions in g CO2eq for one kWh of grid demanded energy. If a time series is ava...
Definition global.h:268
static float get_heat_cons_bobv_intercept()
Parameter of linear regression (intercept) for estimating annual heat consumption based on the buildi...
Definition global.h:279
static void set_heat_cons_bobv_intercept(float value)
Definition global.cpp:997
static void set_exp_bess_P_for_SOC_1(float value)
Definition global.cpp:822
static void set_exp_hp_max_n_addition(unsigned long value)
Definition global.cpp:855
static float get_exp_bess_effi_in()
Definition global.h:251
static void set_exp_pv_static_profile_idx(int value)
Definition global.cpp:1272
static void set_pvar_vals(bool pvar_set, int pvarID)
Definition global.cpp:567
static float get_exp_bess_kW()
Definition global.h:245
static unsigned long get_n_substations()
Definition global.h:218
static void set_n_threads(unsigned int value)
Definition global.cpp:592
static unsigned long get_n_timesteps()
Definition global.h:215
static void DeleteStaticVariables()
Definition global.cpp:251
static void set_create_substation_output(bool value)
Definition global.cpp:1244
static float get_exp_pv_kWp_per_m2()
Definition global.h:240
static void set_exp_bess_max_E_total(float value)
Definition global.cpp:833
static unsigned long get_n_heatpump_profiles()
Definition global.h:222
static const std::string & get_input_path()
Definition global.h:291
static void set_cache_dir_path(const std::string *path)
Definition global.cpp:1144
static void set_cu_selection_mode_fca(global::CUSModeFCA mode)
Definition global.cpp:1172
static void set_exp_profile_mode(global::ExpansionProfileAllocationMode mode)
Definition global.cpp:1164
static unsigned long get_exp_cs_max_ev_per_cs()
0 if not selected. Returns the upper limit for the number of added EVs per control unit / EV charging...
Definition global.h:262
static bool is_seed_set()
Definition global.h:224
static void set_heat_cons_bobv_slope(float value)
Definition global.cpp:990
static float get_ev_battery_size_kWh()
The battery capacity in kWh for simulated EVs.
Definition global.h:281
static void set_exp_bess_kWh(float exp_bess_kWh)
Definition global.cpp:726
static void set_n_CUs(unsigned long n_CUs)
Definition global.cpp:520
static global::BatteryPowerComputationMode get_battery_power_computation_mode()
Definition global.h:299
static void set_inst_cost_HP_per_kW(float value)
Definition global.cpp:961
static float get_npv_discount_rate()
Definition global.h:272
static bool get_work_stealing()
True, if work stealing is selected between the running worker threads.
Definition global.h:231
static int get_exp_pv_static_profile_idx()
Definition global.h:312
static void set_demand_tariff(float value)
Definition global.cpp:902
static unsigned long get_last_timestep()
Returns the last (inclusive) timestep (starting at 1) in the simulation range.
Definition global.h:217
static bool get_create_ev_detailed_output()
Returns wheather a output for detailed EV states per time step and EV should be created.
Definition global.h:310
static void set_ev_battery_size_kWh(float value)
Definition global.cpp:1015
static const std::string & get_cache_dir_path()
Returns the path for the cache directory - it this was NOT set, it will return the default value whic...
Definition global.h:295
static void set_emissions_g_CO2eq_per_kWh(float value)
Definition global.cpp:910
static bool get_create_control_cmd_output()
Returns wheather a output for detailed control commands per time step and CU should be created.
Definition global.h:309
static float get_ev_consumption_kWh_km()
The electricity consumption of an EV for driving 1 km.
Definition global.h:282
static void set_exp_pv_min_kWp_roof_sec(float value)
Definition global.cpp:686
static unsigned long get_max_parallel_opti_vars()
Returns the number of maximum parallel optimization variables, or 0, if not set.
Definition global.h:290
static uint get_n_threads()
Definition global.h:230
static void set_exp_pv_static_profile_orientation(std::string *value)
Definition global.cpp:1265
static void set_n_repetitions(unsigned int value)
Definition global.cpp:584
static void set_use_emission_time_series_ia(bool use)
Definition global.cpp:1059
static unsigned int get_seed()
Definition global.h:223
static global::ControllerBSGridChargingMode get_controller_bs_grid_charging_mode()
Return whether the battery can be charged from the grid / discharged into the grid - only effective i...
Definition global.h:303
static void set_create_control_cmd_output(bool value)
Definition global.cpp:1251
static void set_ts_end_tm(struct tm *ts_end_tm)
Definition global.cpp:622
static float get_exp_bess_self_ds_ts()
Definition global.h:253
static void set_work_stealing(bool value)
Definition global.cpp:600
static bool is_parameter_variation()
Definition global.h:226
static void set_npv_time_horizon(unsigned int value)
Definition global.cpp:931
static global::ExpansionProfileAllocationMode get_exp_profile_mode()
Definition global.h:297
static void increment_seed()
Thus class method increments the current seed at anytime during the simulation, no lock is applied to...
Definition global.cpp:484
static struct tm * get_ts_start_tm()
Definition global.h:233
static void set_tsteps_per_hour(int tsteps_per_hour)
Definition global.cpp:630
static const std::string & get_output_path()
Definition global.h:292
static void set_create_ev_detailed_output(bool value)
Definition global.cpp:1258
static double get_annuity_factor()
Returns the annuity factor for economic assesment.
Definition global.h:275
static void set_exp_bess_sizingE_boPV(float value)
Definition global.cpp:754
static void set_exp_bess_max_P_total(float value)
Definition global.cpp:844
static void UnlockAllVariables()
All variables can now be overwritten.
Definition global.cpp:480
static void set_seed(unsigned int value)
Definition global.cpp:552
static void set_inst_cost_PV_per_kWp(float value)
Definition global.cpp:945
static bool get_use_emission_time_series_ia()
Return weather the emission time series (if it is available in the data) should be used or not.
Definition global.h:285
static float get_exp_bess_kWh()
Definition global.h:246
static void set_exp_bess_P_for_SOC_0(float value)
Definition global.cpp:811
static void LockAllVariables()
No (set) variable can be overwritten after this call, unset variables can still be set / overwritten ...
Definition global.cpp:476
static bool is_exp_hp_max_n_addition_set()
Returns true iif a upper limit for the number of added heat pumps is set. The concrete value would be...
Definition global.h:258
static void PrintUninitializedVariables()
Prints all variable names to stdout, that are not initialized.
Definition global.cpp:355
static void set_exp_pv_sizing_mode(global::PVSizingMode mode)
Definition global.cpp:663
static float get_exp_bess_sizingE_boPV()
Definition global.h:249
static uint get_control_update_freq_in_ts()
The update frequency of the optimization inside the control units (only if controller_mode is set to ...
Definition global.h:289
static void set_ev_data_path(std::string *path)
Definition global.cpp:1133
static void set_battery_capacity_computation_mode(global::BatteryCapacityComputationMode mode)
Definition global.cpp:1188
static void set_first_timestep(unsigned long ts)
Definition global.cpp:496
Definition units.h:503
Definition global.h:35
std::vector< std::string > * time_localtimezone_str
Reference to the list of the time zone as string - alignment fits to time_timestep_id.
Definition global.h:43
std::map< std::string, size_t > pv_profiles_information
Map (orientation, number of time series) where the number of pv-profiles per orientation are given.
Definition global.h:44
unsigned long n_ts_between_flushs
Number of timesteps between the flush of the output buffers.
Definition global.h:53
bool time_info_init
Definition global.h:71
const float *const * pv_profiles_data
Reference to the list of global PV profiles (Two dimensional array with [n_pv_profiles,...
Definition global.h:46
PVSizingMode
Definition global.h:152
BatteryCapacityComputationMode
Definition global.h:137
OpenSpacePVOrWind * unit_open_space_wind
Reference to the global open space wind unit.
Definition global.h:52
std::filesystem::path * current_global_output_dir
Reference to the object holding the current output dir for global information (i.e....
Definition global.h:69
std::map< unsigned long, float > annual_heat_demand_kWh
Map storing the annaul heat demand for the buildings in kWh (thermal) [per location id].
Definition global.h:54
unsigned long * time_timestep_id
Reference to the list of time steps.
Definition global.h:40
const float * eprices_spotm_ts
Reference to the time series of the energy prices at the spot market (for non-residential customers,...
Definition global.h:61
const float * residual_gridload_kW
Residual netload, i.e. amount of load that has to be added to the final netload, this is a load that ...
Definition global.h:49
CUSModeFCA
Definition global.h:107
OutputModePerCU
Definition global.h:87
std::filesystem::path * current_output_dir_prefix
Reference to the path of the output path where all parameter variations can be found (i....
Definition global.h:68
std::string structure_db_column_name_energy_prices
The name of the column containing the local energy prices in EUR/kWh.
Definition global.h:75
ExpansionProfileAllocationMode
Definition global.h:96
std::map< unsigned long, float > building_volumes_m3
Map storing the volume of the biggest building at a given location in cubic-meters (m^3)
Definition global.h:55
const float * wind_profile
Reference to the list of the global wind profile values.
Definition global.h:50
unsigned int current_repetition_counter
Repetition counter, if repetitions is set as a command line argument.
Definition global.h:58
std::map< std::string, std::vector< const float * > > pv_profiles_per_ori
Map (orientation, vector of references to the time series) where the available time series per orient...
Definition global.h:45
const char *const output_section_delimiter
Definition global.h:189
void print_uninitialized_variables()
Prints all variable names to stdout, that are not initialized.
Definition global.cpp:69
std::filesystem::path * current_output_dir
Reference to the object holding the current output path (maybe changed due to different parameter var...
Definition global.h:67
ControllerMode
Definition global.h:162
@ RuleBased
Rule-based control with the focus on maximizing PV self-consumption.
@ OptimizedWithPerfectForecast
Controller using a linear optimization (gurobi) with perfect forecast.
std::list< std::list< std::pair< std::string, float > > > * parameter_var_list
List of parameters variation settings (i.e. the list contains a list of lists, where the inner lists ...
Definition global.h:64
const float *const * hp_profiles
Reference to the list of global heat pump profiles (Two dimensional array with [n_heatpump_profiles,...
Definition global.h:47
std::vector< struct tm * > * time_localtime_r
Reference to the list of right-aligned time stamps as struct tm. Right-aligned means the time at time...
Definition global.h:41
bool all_variables_initialized()
Checks if all variables are initialized.
Definition global.cpp:14
std::set< unsigned long > locations_with_geodata
List / Set storing all locations for which geodata is available.
Definition global.h:57
void vacuum()
Deletes all global variables in the end.
Definition global.cpp:30
BatteryPowerComputationMode
Definition global.h:123
std::map< unsigned long, std::vector< std::pair< float, std::string > > > roof_section_orientations
Map storing a complet list of roof sections per location ID. Roof sections are tuples/pairs with the ...
Definition global.h:56
const float * emission_ts
Reference to the emission time series for grid demanded energy (if present) in g CO2eq per kWh.
Definition global.h:59
const double *const * hp_profiles_cumsum
Reference to the list of cumulated global heat pump profiles (Two dimensional array with [n_heatpump_...
Definition global.h:48
const float * eprices_local_ts
Reference to the time series of the energy prices (for residential customers) for grid demanded energ...
Definition global.h:60
std::chrono::time_point< std::chrono::system_clock > time_of_simulation_start
The time of the simulation start.
Definition global.h:73
std::vector< struct tm * > * time_localtime_l
Reference to the list of left-aligned time stamps as struct tm. Left-aligned means the time at time s...
Definition global.h:42
ControllerBSGridChargingMode
Definition global.h:170
@ OnlyGridCharging
Only allow charging from the grid, but no discharging into the grid.
@ NoGridCharging
Do not allow charging from the grid and discharging into the grid.
@ GridChargingAndDischarging
Allow both, charging from and discharging into the grid.
std::vector< unsigned long > unitIDs_selected_for_output
A vector containing a list of all unitIDs selected for output. If this vector is empty (as it is by d...
Definition global.h:62
OpenSpacePVOrWind * unit_open_space_pv
Reference to the global open space pv unit.
Definition global.h:51
unsigned int curr_param_vari_combi_index
The index of the current parameter variation combination, that is simulated (0, if no parameter varia...
Definition global.h:66
ControllerOptimizationTarget
Definition global.h:180
@ PeakLoad
minimize the peak load per control unit
@ Emissions
minimize the CO2 emissions caused by grid demand
@ ElectricityCosts
minimize the costs for electricity consumption (minus revenue for feedin) per control unit