From 05ecfeaeda3580f8ff8a9e3ffa8e6b1792e93641 Mon Sep 17 00:00:00 2001 From: Manoj Kumar Cebol Sundarrajan Date: Sun, 23 Apr 2023 02:32:46 -0600 Subject: [PATCH 01/52] EV EVSE charging models input files --- inputs/EVSE_inputs.csv | 9 +++++++++ inputs/EV_inputs.csv | 15 +++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 inputs/EVSE_inputs.csv create mode 100644 inputs/EV_inputs.csv diff --git a/inputs/EVSE_inputs.csv b/inputs/EVSE_inputs.csv new file mode 100644 index 0000000..eedfafe --- /dev/null +++ b/inputs/EVSE_inputs.csv @@ -0,0 +1,9 @@ +EVSE_type,EVSE_level,EVSE_phase_connection,AC/DC_power_limit_kW,AC/DC_voltage_limits_V,AC/DC_current_limit_A,standby_real_power_kW,standby_reactive_power_kVAR +L1_1440,L1,1,1.44,120,12,0,0 +L2_3600,L2,1,3.6,240,15,0,0 +L2_7200,L2,1,7.2,240,30,0,0 +L2_9600,L2,1,9.6,240,40,0,0 +L2_11520,L2,1,11.52,240,48,0,0 +dcfc_50,DCFC,3,50,500,100,0.17,-0.445 +xfc_150,DCFC,3,150,920,163.0434783,0.17,-0.445 +xfc_350,DCFC,3,350,920,380.4347826,0.17,-0.445 diff --git a/inputs/EV_inputs.csv b/inputs/EV_inputs.csv new file mode 100644 index 0000000..bbf2a6f --- /dev/null +++ b/inputs/EV_inputs.csv @@ -0,0 +1,15 @@ +EV_type,battery_chemistry,max_c_rate,battery_size_kWh,range_miles,efficiency_Wh/Mile,AC_charge_rate_kW +XFC250_400kW,LTO,3.85,87.5,250,350,11.5 +XFC300_575kW,LTO,3.41,142.5,300,475,11.5 +XFC300_400kW,LTO,3.46,97.5,300,325,11.5 +XFC250_350kW,NMC,2.29,118.75,250,475,11.5 +XFC300_300kW,NMC,2.38,97.5,300,325,11.5 +XFC150_150kW,NMC,2.56,45,150,300,9.6 +XFC250_300kW,NMC,2.64,87.5,250,350,11.5 +XFC200_150kW,NMC,1.22,95,200,475,9.6 +XFC275_150kW,NMC,1.41,82.5,275,300,9.6 +BEV250_75kW,NMC,0.76,75,250,300,6.6 +BEV150_50kW,NMC,0.85,45,150,300,6.6 +PHEV50_SUV,NMC,,23.75,50,475,9.6 +PHEV50,NMC,,15.5,50,310,3.3 +PHEV20,NMC,,5,20,250,3.3 From 3bb135c7bc40391a86b0c9a87572b5289910061b Mon Sep 17 00:00:00 2001 From: Manoj Kumar Cebol Sundarrajan Date: Sun, 23 Apr 2023 02:40:59 -0600 Subject: [PATCH 02/52] new EV EVSE data structures to relflect input files --- .../charging_models/EVSE_characteristics.cpp | 48 +++++++++++++++ source/charging_models/EVSE_characteristics.h | 58 +++++++++++++++++++ source/charging_models/EV_EVSE_inventory.cpp | 25 ++++++++ source/charging_models/EV_EVSE_inventory.h | 23 ++++++++ source/charging_models/EV_characteristics.cpp | 31 ++++++++++ source/charging_models/EV_characteristics.h | 48 +++++++++++++++ 6 files changed, 233 insertions(+) create mode 100644 source/charging_models/EVSE_characteristics.cpp create mode 100644 source/charging_models/EVSE_characteristics.h create mode 100644 source/charging_models/EV_EVSE_inventory.cpp create mode 100644 source/charging_models/EV_EVSE_inventory.h create mode 100644 source/charging_models/EV_characteristics.cpp create mode 100644 source/charging_models/EV_characteristics.h diff --git a/source/charging_models/EVSE_characteristics.cpp b/source/charging_models/EVSE_characteristics.cpp new file mode 100644 index 0000000..5fb97e5 --- /dev/null +++ b/source/charging_models/EVSE_characteristics.cpp @@ -0,0 +1,48 @@ +#include "EVSE_characteristics.h" + +std::ostream& operator<<(std::ostream& os, const EVSE_level& level) { + switch(level) { + case L1: + os << "L1"; + break; + case L2: + os << "L2"; + break; + case DCFC: + os << "DCFC"; + break; + default: + os << "Invalid EVSE_level"; + break; + } + return os; +} + +std::ostream& operator<<(std::ostream& os, const EVSE_phase& phase) { + switch (phase) { + case singlephase: + os << "singlephase"; + break; + case threephase: + os << "threephase"; + break; + default: + os << "Invalid EVSE_phase"; + break; + } + return os; +} + +std::ostream& operator<<(std::ostream& os, const EVSE_characteristics& evse) +{ + os << "Type: " << evse.get_type() << std::endl; + os << "Level: " << evse.get_level() << std::endl; + os << "Phase: " << evse.get_phase() << std::endl; + os << "Power Limit (kW): " << evse.get_power_limit_kW() << std::endl; + os << "Voltage Limit (V): " << evse.get_volatge_limit_V() << std::endl; + os << "Current Limit (A): " << evse.get_current_limit_A() << std::endl; + os << "Standby Real Power (kW): " << evse.get_standby_real_power_kW() << std::endl; + os << "Standby Reactive Power (kW): " << evse.get_standby_reactive_power_kW() << std::endl; + + return os; +} diff --git a/source/charging_models/EVSE_characteristics.h b/source/charging_models/EVSE_characteristics.h new file mode 100644 index 0000000..0d14685 --- /dev/null +++ b/source/charging_models/EVSE_characteristics.h @@ -0,0 +1,58 @@ +#ifndef EVSE_CHARACTERISTICS_H +#define EVSE_CHARACTERISTICS_H + +#include +#include + +typedef std::string EVSE_type; + +enum EVSE_level +{ + L1 = 0, + L2 = 1, + DCFC = 2 +}; + +std::ostream& operator<<(std::ostream& os, const EVSE_level& level); + +enum EVSE_phase +{ + singlephase = 0, + threephase = 1 +}; + +std::ostream& operator<<(std::ostream& os, const EVSE_phase& phase); + +struct EVSE_characteristics +{ +private: + const EVSE_type type; + const EVSE_level level; + const EVSE_phase phase; + const double power_limit_kW; + const double volatge_limit_V; + const double current_limit_A; + const double standby_real_power_kW; + const double standby_reactive_power_kW; + +public: + EVSE_characteristics(const EVSE_type& type, const EVSE_level& level, const EVSE_phase& phase, + const double& power_limit_kW, const double& volatge_limit_V, const double& current_limit_A, + const double& standby_real_power_kW, const double& standby_reactive_power_kW) + : type(type), level(level), phase(phase), power_limit_kW(power_limit_kW), volatge_limit_V(volatge_limit_V), + current_limit_A(current_limit_A), standby_real_power_kW(standby_real_power_kW), + standby_reactive_power_kW(standby_reactive_power_kW) {} + + EVSE_type get_type() const { return this->type; } + EVSE_level get_level() const { return this->level; } + EVSE_phase get_phase() const { return this->phase; } + double get_power_limit_kW() const { return this->power_limit_kW; } + double get_volatge_limit_V() const { return this->volatge_limit_V; } + double get_current_limit_A() const { return this->current_limit_A; } + double get_standby_real_power_kW() const { return this->standby_real_power_kW; } + double get_standby_reactive_power_kW() const { return this->standby_reactive_power_kW; } +}; + +std::ostream& operator<<(std::ostream& os, const EVSE_characteristics& evse); + +#endif // EVSE_CHARACTERISTICS_H diff --git a/source/charging_models/EV_EVSE_inventory.cpp b/source/charging_models/EV_EVSE_inventory.cpp new file mode 100644 index 0000000..d44ee91 --- /dev/null +++ b/source/charging_models/EV_EVSE_inventory.cpp @@ -0,0 +1,25 @@ +#include "EV_EVSE_inventory.h" + +EV_EVSE_inventory::EV_EVSE_inventory(const std::unordered_map& EV_inv, + const std::unordered_map& EVSE_inv) + : EV_inventory(EV_inv), EVSE_inventory(EVSE_inv) {} + +const std::unordered_map& EV_EVSE_inventory::get_EV_inventory() const { + return EV_inventory; +} + +const std::unordered_map& EV_EVSE_inventory::get_EVSE_inventory() const { + return EVSE_inventory; +} + +std::ostream& operator<<(std::ostream& os, const EV_EVSE_inventory& inventory) { + os << "Electric Vehicles Inventory: " << std::endl; + for (const auto& ev : inventory.get_EV_inventory()) { + os << ev.second << std::endl; + } + os << "Electric Vehicle Supply Equipment Inventory: " << std::endl; + for (const auto& evse : inventory.get_EVSE_inventory()) { + os << evse.second << std::endl; + } + return os; +} diff --git a/source/charging_models/EV_EVSE_inventory.h b/source/charging_models/EV_EVSE_inventory.h new file mode 100644 index 0000000..9259486 --- /dev/null +++ b/source/charging_models/EV_EVSE_inventory.h @@ -0,0 +1,23 @@ +#ifndef EV_EVSE_INVENTORY_H +#define EV_EVSE_INVENTORY_H + +#include +#include "EV_characteristics.h" +#include "SE_characteristics.h" + +class EV_EVSE_inventory { +private: + const std::unordered_map EV_inventory; + const std::unordered_map EVSE_inventory; + +public: + EV_EVSE_inventory(const std::unordered_map& EV_inv, + const std::unordered_map& EVSE_inv); + + const std::unordered_map& get_EV_inventory() const; + const std::unordered_map& get_EVSE_inventory() const; +}; + +std::ostream& operator<<(std::ostream& os, const EV_EVSE_inventory& inventory); + +#endif //EV_EVSE_INVENTORY_H diff --git a/source/charging_models/EV_characteristics.cpp b/source/charging_models/EV_characteristics.cpp new file mode 100644 index 0000000..0fd216a --- /dev/null +++ b/source/charging_models/EV_characteristics.cpp @@ -0,0 +1,31 @@ +#include "EV_characteristics.h" + +std::ostream& operator<<(std::ostream& os, const battery_chemistry& chemistry) { + switch (level) { + case LTO: + os << "LTO"; + break; + case LMO: + os << "LMO"; + break; + case NMC: + os << "NMC"; + break; + default: + os << "Invalid battery chemistry"; + break; + } + return os; +} + +std::ostream& operator<<(std::ostream& os, const EV_characteristics& ev) +{ + os << "Type: " << ev.get_type() << std::endl; + os << "Battery Chemistry: " << ev.get_chemistry() << std::endl; + os << "Max C Rate: " << ev.get_max_c_rate() << std::endl; + os << "Battery Size (kWh): " << ev.get_battery_size_kWh() << std::endl; + os << "Range (miles): " << ev.get_range_miles() << std::endl; + os << "Efficiency (Wh/mile): " << ev.get_efficiency_Wh_per_mile() << std::endl; + os << "AC Charge Rate (kW): " << ev.get_AC_charge_rate_kW() << std::endl; + return os; +} diff --git a/source/charging_models/EV_characteristics.h b/source/charging_models/EV_characteristics.h new file mode 100644 index 0000000..23ef9c5 --- /dev/null +++ b/source/charging_models/EV_characteristics.h @@ -0,0 +1,48 @@ +#ifndef EV_CHARACTERISTICS_H +#define EV_CHARACTERISTICS_H + +#include +#include + +typedef std::string EV_type; + +enum battery_chemistry +{ + LTO = 0, + LMO = 1, + NMC = 2 +}; + +std::ostream& operator<<(std::ostream& os, const battery_chemistry& chemistry); + +struct EV_characteristics +{ +private: + const EV_type type; + const battery_chemistry chemistry; + const double max_c_rate; + const double battery_size_kWh; + const double range_miles; + const double efficiency_Wh_per_mile; + const double AC_charge_rate_kW; + +public: + EV_characteristics(const EV_type& type, const battery_chemistry& chemistry, const double& max_c_rate, + const double& battery_size_kWh, const double& range_miles, const double& efficiency_Wh_per_mile, + const double& AC_charge_rate_kW) + : type(type), chemistry(chemistry), max_c_rate(max_c_rate), battery_size_kWh(battery_size_kWh), + range_miles(range_miles), efficiency_Wh_per_mile(efficiency_Wh_per_mile), + AC_charge_rate_kW(AC_charge_rate_kW) {} + + EV_type get_type() const { return this->type; } + battery_chemistry get_chemistry() const { return this->chemistry; } + double get_max_c_rate() const { return this->max_c_rate; } + double get_battery_size_kWh() const { return this->battery_size_kWh; } + double get_range_miles() const { return this->range_miles; } + double get_efficiency_Wh_per_mile() const { return this->efficiency_Wh_per_mile; } + double get_AC_charge_rate_kW() const { return this->AC_charge_rate_kW; } +}; + +std::ostream& operator<<(std::ostream& os, const EV_characteristics& ev); + +#endif // EV_CHARACTERISTICS_H From c54c95632b712c9d9aae0a3bca31a8fd0735ba35 Mon Sep 17 00:00:00 2001 From: Manoj Kumar Cebol Sundarrajan Date: Mon, 24 Apr 2023 17:13:29 -0600 Subject: [PATCH 03/52] load EV model inpputs --- inputs/EV_inputs.csv | 30 +-- source/charging_models/EV_EVSE_inventory.cpp | 35 ++- source/charging_models/EV_EVSE_inventory.h | 19 +- source/charging_models/EV_characteristics.cpp | 3 +- source/charging_models/EV_characteristics.h | 12 +- source/load_inputs/CMakeLists.txt | 21 ++ source/load_inputs/load_EV_models.cpp | 238 ++++++++++++++++++ source/load_inputs/load_EV_models.h | 27 ++ source/load_inputs/load_helper.cpp | 28 +++ source/load_inputs/load_helper.h | 22 ++ 10 files changed, 397 insertions(+), 38 deletions(-) create mode 100644 source/load_inputs/CMakeLists.txt create mode 100644 source/load_inputs/load_EV_models.cpp create mode 100644 source/load_inputs/load_EV_models.h create mode 100644 source/load_inputs/load_helper.cpp create mode 100644 source/load_inputs/load_helper.h diff --git a/inputs/EV_inputs.csv b/inputs/EV_inputs.csv index bbf2a6f..1de28d2 100644 --- a/inputs/EV_inputs.csv +++ b/inputs/EV_inputs.csv @@ -1,15 +1,15 @@ -EV_type,battery_chemistry,max_c_rate,battery_size_kWh,range_miles,efficiency_Wh/Mile,AC_charge_rate_kW -XFC250_400kW,LTO,3.85,87.5,250,350,11.5 -XFC300_575kW,LTO,3.41,142.5,300,475,11.5 -XFC300_400kW,LTO,3.46,97.5,300,325,11.5 -XFC250_350kW,NMC,2.29,118.75,250,475,11.5 -XFC300_300kW,NMC,2.38,97.5,300,325,11.5 -XFC150_150kW,NMC,2.56,45,150,300,9.6 -XFC250_300kW,NMC,2.64,87.5,250,350,11.5 -XFC200_150kW,NMC,1.22,95,200,475,9.6 -XFC275_150kW,NMC,1.41,82.5,275,300,9.6 -BEV250_75kW,NMC,0.76,75,250,300,6.6 -BEV150_50kW,NMC,0.85,45,150,300,6.6 -PHEV50_SUV,NMC,,23.75,50,475,9.6 -PHEV50,NMC,,15.5,50,310,3.3 -PHEV20,NMC,,5,20,250,3.3 +EV_type,battery_chemistry,DCFC_capable,max_c_rate,battery_size_kWh,range_miles,efficiency_Wh/Mile,AC_charge_rate_kW +XFC250_400kW,LTO,TRUE,3.85,87.5,250,350,11.5 +XFC300_575kW,LTO,TRUE,3.41,142.5,300,475,11.5 +XFC300_400kW,LTO,TRUE,3.46,97.5,300,325,11.5 +XFC250_350kW,NMC,TRUE,2.29,118.75,250,475,11.5 +XFC300_300kW,NMC,TRUE,2.38,97.5,300,325,11.5 +XFC150_150kW,NMC,TRUE,2.56,45,150,300,9.6 +XFC250_300kW,NMC,TRUE,2.64,87.5,250,350,11.5 +XFC200_150kW,NMC,TRUE,1.22,95,200,475,9.6 +XFC275_150kW,NMC,TRUE,1.41,82.5,275,300,9.6 +BEV250_75kW,NMC,TRUE,0.76,75,250,300,6.6 +BEV150_50kW,NMC,TRUE,0.85,45,150,300,6.6 +PHEV50_SUV,NMC,FALSE,-1,23.75,50,475,9.6 +PHEV50,NMC,FALSE,-1,15.5,50,310,3.3 +PHEV20,NMC,FALSE,-1,5,20,250,3.3 diff --git a/source/charging_models/EV_EVSE_inventory.cpp b/source/charging_models/EV_EVSE_inventory.cpp index d44ee91..128cd74 100644 --- a/source/charging_models/EV_EVSE_inventory.cpp +++ b/source/charging_models/EV_EVSE_inventory.cpp @@ -1,24 +1,39 @@ #include "EV_EVSE_inventory.h" -EV_EVSE_inventory::EV_EVSE_inventory(const std::unordered_map& EV_inv, - const std::unordered_map& EVSE_inv) - : EV_inventory(EV_inv), EVSE_inventory(EVSE_inv) {} +EV_EVSE_inventory::EV_EVSE_inventory(const EV_inventory& EV_inv, + const EVSE_inventory& EVSE_inv) + : EV_inv(EV_inv), EVSE_inv(EVSE_inv) {} -const std::unordered_map& EV_EVSE_inventory::get_EV_inventory() const { - return EV_inventory; +const EV_inventory& EV_EVSE_inventory::get_EV_inventory() const +{ + return this->EV_inv; } -const std::unordered_map& EV_EVSE_inventory::get_EVSE_inventory() const { - return EVSE_inventory; +const EVSE_inventory& EV_EVSE_inventory::get_EVSE_inventory() const +{ + return this->EVSE_inv; } -std::ostream& operator<<(std::ostream& os, const EV_EVSE_inventory& inventory) { +std::ostream& operator<<(std::ostream& os, const EV_EVSE_inventory& inventory) +{ + os << inventory.get_EV_inventory(); + os << inventory.get_EVSE_inventory(); + return os; +} + +std::ostream& operator<<(std::ostream& os, const EV_inventory& inventory) +{ os << "Electric Vehicles Inventory: " << std::endl; - for (const auto& ev : inventory.get_EV_inventory()) { + for (const auto& ev : inventory) { os << ev.second << std::endl; } + return os; +} + +std::ostream& operator<<(std::ostream& os, const EVSE_inventory& inventory) +{ os << "Electric Vehicle Supply Equipment Inventory: " << std::endl; - for (const auto& evse : inventory.get_EVSE_inventory()) { + for (const auto& evse : inventory) { os << evse.second << std::endl; } return os; diff --git a/source/charging_models/EV_EVSE_inventory.h b/source/charging_models/EV_EVSE_inventory.h index 9259486..91ac29b 100644 --- a/source/charging_models/EV_EVSE_inventory.h +++ b/source/charging_models/EV_EVSE_inventory.h @@ -3,21 +3,26 @@ #include #include "EV_characteristics.h" -#include "SE_characteristics.h" +#include "EVSE_characteristics.h" + +typedef std::unordered_map EV_inventory; +typedef std::unordered_map EVSE_inventory; class EV_EVSE_inventory { private: - const std::unordered_map EV_inventory; - const std::unordered_map EVSE_inventory; + const EV_inventory EV_inv; + const EVSE_inventory EVSE_inv; public: - EV_EVSE_inventory(const std::unordered_map& EV_inv, - const std::unordered_map& EVSE_inv); + EV_EVSE_inventory(const EV_inventory& EV_inv, + const EVSE_inventory& EVSE_inv); - const std::unordered_map& get_EV_inventory() const; - const std::unordered_map& get_EVSE_inventory() const; + const EV_inventory& get_EV_inventory() const; + const EVSE_inventory& get_EVSE_inventory() const; }; std::ostream& operator<<(std::ostream& os, const EV_EVSE_inventory& inventory); +std::ostream& operator<<(std::ostream& os, const EV_inventory& inventory); +std::ostream& operator<<(std::ostream& os, const EVSE_inventory& inventory); #endif //EV_EVSE_INVENTORY_H diff --git a/source/charging_models/EV_characteristics.cpp b/source/charging_models/EV_characteristics.cpp index 0fd216a..791484b 100644 --- a/source/charging_models/EV_characteristics.cpp +++ b/source/charging_models/EV_characteristics.cpp @@ -1,7 +1,7 @@ #include "EV_characteristics.h" std::ostream& operator<<(std::ostream& os, const battery_chemistry& chemistry) { - switch (level) { + switch (chemistry) { case LTO: os << "LTO"; break; @@ -22,6 +22,7 @@ std::ostream& operator<<(std::ostream& os, const EV_characteristics& ev) { os << "Type: " << ev.get_type() << std::endl; os << "Battery Chemistry: " << ev.get_chemistry() << std::endl; + os << "DCFC capable: " << ev.get_DCFC_capable() << std::endl; os << "Max C Rate: " << ev.get_max_c_rate() << std::endl; os << "Battery Size (kWh): " << ev.get_battery_size_kWh() << std::endl; os << "Range (miles): " << ev.get_range_miles() << std::endl; diff --git a/source/charging_models/EV_characteristics.h b/source/charging_models/EV_characteristics.h index 23ef9c5..ae990a9 100644 --- a/source/charging_models/EV_characteristics.h +++ b/source/charging_models/EV_characteristics.h @@ -25,17 +25,19 @@ struct EV_characteristics const double range_miles; const double efficiency_Wh_per_mile; const double AC_charge_rate_kW; + const bool DCFC_capable; public: - EV_characteristics(const EV_type& type, const battery_chemistry& chemistry, const double& max_c_rate, - const double& battery_size_kWh, const double& range_miles, const double& efficiency_Wh_per_mile, - const double& AC_charge_rate_kW) - : type(type), chemistry(chemistry), max_c_rate(max_c_rate), battery_size_kWh(battery_size_kWh), - range_miles(range_miles), efficiency_Wh_per_mile(efficiency_Wh_per_mile), + EV_characteristics(const EV_type& type, const battery_chemistry& chemistry, const bool& DCFC_capable, + const double& max_c_rate, const double& battery_size_kWh, const double& range_miles, + const double& efficiency_Wh_per_mile, const double& AC_charge_rate_kW) + : type(type), chemistry(chemistry), DCFC_capable(DCFC_capable), max_c_rate(max_c_rate), + battery_size_kWh(battery_size_kWh), range_miles(range_miles), efficiency_Wh_per_mile(efficiency_Wh_per_mile), AC_charge_rate_kW(AC_charge_rate_kW) {} EV_type get_type() const { return this->type; } battery_chemistry get_chemistry() const { return this->chemistry; } + bool get_DCFC_capable() const { return this->DCFC_capable; } double get_max_c_rate() const { return this->max_c_rate; } double get_battery_size_kWh() const { return this->battery_size_kWh; } double get_range_miles() const { return this->range_miles; } diff --git a/source/load_inputs/CMakeLists.txt b/source/load_inputs/CMakeLists.txt new file mode 100644 index 0000000..2005320 --- /dev/null +++ b/source/load_inputs/CMakeLists.txt @@ -0,0 +1,21 @@ +cmake_minimum_required(VERSION 3.5) + +project(test) + +set(CMAKE_POSITION_INDEPENDENT_CODE ON) + +if (NOT DEFINED INSTALL_DIR) + message(STATUS "setting local install dir") + set(INSTALL_DIR ${PROJECT_SOURCE_DIR}) +endif() + +message(STATUS "Install dir is ${INSTALL_DIR}") + +add_executable(loader "main.cpp" "load_EV_models.cpp" "load_helper.cpp" "../charging_models/EV_characteristics.cpp" +"../charging_models/EVSE_characteristics.cpp" "../charging_models/EV_EVSE_inventory.cpp") + +target_compile_features(loader PUBLIC cxx_std_17) +target_include_directories(loader PUBLIC ${PROJECT_SOURCE_DIR}/../charging_models) + +install(TARGETS loader + DESTINATION ${INSTALL_DIR}) diff --git a/source/load_inputs/load_EV_models.cpp b/source/load_inputs/load_EV_models.cpp new file mode 100644 index 0000000..220a4ab --- /dev/null +++ b/source/load_inputs/load_EV_models.cpp @@ -0,0 +1,238 @@ +#include "load_EV_models.h" +#include "load_helper.h" + +#include +#include + + +battery_chemistry load_EV_models::string_to_battery_chemistry(const std::string& str) +{ + const std::unordered_map map = { + {"LTO", LTO}, + {"LMO", LMO}, + {"NMC", NMC} + }; + + auto it = map.find(str); + if (it != map.end()) { + return it->second; + } + else { + throw std::invalid_argument("Invalid battery chemistry string"); + } +} + +bool load_EV_models::string_to_DCFC_capable(const std::string& str) { + if (str == "true" || str == "t") { + return true; + } + else if (str == "false" || str == "f") { + return false; + } + else { + throw std::invalid_argument("Invalid DCFC capable string"); + } +} + +EV_inventory load_EV_models::load(std::string inputs_dir) +{ + EV_inventory EV_inv; + + std::string EV_inputs_file = inputs_dir + "/EV_inputs.csv"; + ASSERT(std::filesystem::exists(EV_inputs_file), EV_inputs_file << " file does not exist"); + std::ifstream EV_inputs_file_handle(EV_inputs_file); + + //------------------------------ + + std::string line; + std::vector elements_in_line; + int line_number = 1; + + //------------------------------- + + // column names + std::getline(EV_inputs_file_handle, line); + elements_in_line = tokenize(line); + + // check number of columns + ASSERT(elements_in_line.size() == 8, EV_inputs_file << " invalid number of columns. Need 8 \ + columns but " << elements_in_line.size() << " provided in line number " << line_number); + + // check if columns equal to { EV_type, battery_chemistry, "DCFC_capable", max_c_rate, + // battery_size_kWh, range_miles, efficiency_Wh/Mile, AC_charge_rate_kW } + std::vector column_names = { "EV_type", "battery_chemistry", "DCFC_capable", + "max_c_rate", "battery_size_kWh", "range_miles", "efficiency_Wh/Mile", "AC_charge_rate_kW" }; + + ASSERT(elements_in_line == column_names, EV_inputs_file << " column names doesn\'t match. " << + "Expected column names are {EV_type, battery_chemistry, DCFC_capable, max_c_rate, " << + "battery_size_kWh, range_miles, efficiency_Wh/Mile, AC_charge_rate_kW }"); + + while (std::getline(EV_inputs_file_handle, line)) + { + line_number += 1; + elements_in_line = tokenize(line); + ASSERT(elements_in_line.size() == 8, EV_inputs_file << " invalid number of columns. Need 8 \ + columns but " << elements_in_line.size() << " provided in line number " << line_number); + + + const EV_type type = [&]() { + + // check if EV_type is unique + std::string str = elements_in_line[0]; + ASSERT(EV_inv.find(str) == EV_inv.end(), EV_inputs_file << " " << column_names[0] << " " << + str << " is not unique in line number " << line_number); + return str; + + }(); + + const battery_chemistry chemistry = [&]() { + + // check if battery_chemistry is equal to LTO, LMO or NMC + std::vector options = { "LTO", "LMO", "NMC" }; + std::string str = elements_in_line[1]; + bool is_valid = std::any_of(options.begin(), options.end(), + [&str](const std::string& s) { return str == s; }); + ASSERT(is_valid, EV_inputs_file << " " << column_names[1] << " " << str << " is not \ + one of {LMO, LTO, NMC} in line number " << line_number); + + return this->string_to_battery_chemistry(str); + + }(); + + const bool DCFC_capable = [&]() { + + // check if DCFC_capable is yes or no + std::vector options = { "true", "false", "t", "f"}; + std::string str = elements_in_line[2]; + std::transform(str.begin(), str.end(), str.begin(), ::tolower); + + bool is_valid = std::any_of(options.begin(), options.end(), + [&str](const std::string& s) { return str == s; }); + ASSERT(is_valid, EV_inputs_file << " " << column_names[2] << " " << str << + " is not one of {TRUE, FALSE, T, F} case insensitive in line number " << line_number); + + return this->string_to_DCFC_capable(str); + + }(); + + + const double max_c_rate = [&]() { + + // check if max_c_rate can be converted to double + std::string str = elements_in_line[3]; + double val; + bool is_conversion_successful; + try { + val = std::stod(str); + is_conversion_successful = true; + } + catch (...) { + is_conversion_successful = false; + } + ASSERT(is_conversion_successful, EV_inputs_file << " " << column_names[3] << " " << + str << " is not a double in line number " << line_number); + + return val; + + }(); + + const double battery_size_kWh = [&]() { + + // check if battery_size_kWh is double and also non negative + std::string str = elements_in_line[4]; + double val; + bool is_conversion_successful; + try { + val = std::stod(str); + is_conversion_successful = true; + } + catch (...) { + is_conversion_successful = false; + } + ASSERT(is_conversion_successful, EV_inputs_file << " " << column_names[4] << " " << + str << " is not a double in line number " << line_number); + + ASSERT(val > 0, EV_inputs_file << " " << column_names[4] << " " << str << + " is less than or equal to 0 in line number " << line_number); + + return val; + + }(); + + const double range_miles = [&]() { + + // check if range_miles is int and also non negative + std::string str = elements_in_line[5]; + double val; + bool is_conversion_successful; + try { + val = std::stod(str); + is_conversion_successful = true; + } + catch (...) { + is_conversion_successful = false; + } + ASSERT(is_conversion_successful, EV_inputs_file << " " << column_names[5] << " " << + str << " is not a int in line number " << line_number); + + ASSERT(val > 0, EV_inputs_file << " " << column_names[5] << " " << str << + " is less than or equal to 0 in line number " << line_number); + + return val; + + }(); + + const double efficiency_Wh_per_mile = [&]() { + + // check efficiency_Wh_per_mile is double and non negative + std::string str = elements_in_line[6]; + double val; + bool is_conversion_successful; + try { + val = std::stoi(str); + is_conversion_successful = true; + } + catch (...) { + is_conversion_successful = false; + } + ASSERT(is_conversion_successful, EV_inputs_file << " " << column_names[6] << " " << str << + " is not a int in line number " << line_number); + + ASSERT(val > 0, EV_inputs_file << " " << column_names[6] << " " << str << + " is less than or equal to 0 in line number " << line_number); + + return val; + + }(); + + const double AC_charge_rate_kW = [&](){ + + // check AC_charge_rate_kW is double and non negative + std::string str = elements_in_line[7]; + double val; + bool is_conversion_successful; + try { + val = std::stod(str); + is_conversion_successful = true; + } + catch (...) { + is_conversion_successful = false; + } + ASSERT(is_conversion_successful, EV_inputs_file << " " << column_names[7] << " " << + str << " is not a int in line number " << line_number); + + ASSERT(val > 0, EV_inputs_file << " " << column_names[7] << " " << str + << " is less than or equal to 0 in line number " << line_number); + + return val; + }(); + + // other checks + + EV_inv.emplace(type, EV_characteristics(type, chemistry, DCFC_capable, max_c_rate, battery_size_kWh, + range_miles, efficiency_Wh_per_mile, AC_charge_rate_kW)); + + } + + return std::move(EV_inv); +} \ No newline at end of file diff --git a/source/load_inputs/load_EV_models.h b/source/load_inputs/load_EV_models.h new file mode 100644 index 0000000..c07d87f --- /dev/null +++ b/source/load_inputs/load_EV_models.h @@ -0,0 +1,27 @@ +#ifndef LOAD_EV_MODELS_H +#define LOAD_EV_MODELS_H + +#include "EV_EVSE_inventory.h" +#include "EV_characteristics.h" + +#include + +class load_EV_models +{ +private: + const EV_inventory EV_inv; + + battery_chemistry string_to_battery_chemistry(const std::string& str); + bool string_to_DCFC_capable(const std::string& str); + + EV_inventory load(std::string inputs_dir); + +public: + + load_EV_models(std::string inputs_dir) : + EV_inv(this->load(inputs_dir)) {} + + const EV_inventory& get_EV_inventory() const { return this->EV_inv; } +}; + +#endif // LOAD_EV_MODELS_H \ No newline at end of file diff --git a/source/load_inputs/load_helper.cpp b/source/load_inputs/load_helper.cpp new file mode 100644 index 0000000..1e5b49a --- /dev/null +++ b/source/load_inputs/load_helper.cpp @@ -0,0 +1,28 @@ +#include "load_helper.h" + +#include +#include + +std::string trim(const std::string& s) +{ + size_t first = s.find_first_not_of(" \t\n\r\f\v"); + if (first == std::string::npos) { + return ""; + } + size_t last = s.find_last_not_of(" \t\n\r\f\v"); + return s.substr(first, last - first + 1); +} + +std::vector tokenize(std::string s, std::string delim) +{ + std::vector tokenized_vec; + + size_t start, end = -1 * delim.size(); + do { + start = end + delim.size(); + end = s.find(delim, start); + tokenized_vec.push_back(trim(s.substr(start, end - start))); + } while (end != -1); + + return tokenized_vec; +} \ No newline at end of file diff --git a/source/load_inputs/load_helper.h b/source/load_inputs/load_helper.h new file mode 100644 index 0000000..64a65d7 --- /dev/null +++ b/source/load_inputs/load_helper.h @@ -0,0 +1,22 @@ +#ifndef load_helper_H +#define load_helper_H + +#include +#include + +#ifndef NDEBUG +# define ASSERT(condition, message) \ + do { \ + if (! (condition)) { \ + std::cerr << "Assertion `" #condition "` failed in " << __FILE__ \ + << " line " << __LINE__ << ": " << message << std::endl; \ + std::terminate(); \ + } \ + } while (false) +#else +# define ASSERT(condition, message) do { } while (false) +#endif + +std::vector tokenize(std::string s, std::string delim = ","); + +#endif \ No newline at end of file From 477d2930c35b181868e66c0c15eb9ee1db95f379 Mon Sep 17 00:00:00 2001 From: Manoj Kumar Cebol Sundarrajan Date: Mon, 24 Apr 2023 23:12:07 -0600 Subject: [PATCH 04/52] EVSE model inputs loader --- source/load_inputs/CMakeLists.txt | 5 +- source/load_inputs/load_EVSE_models.cpp | 242 ++++++++++++++++++++++++ source/load_inputs/load_EVSE_models.h | 24 +++ source/load_inputs/load_EV_models.cpp | 10 +- source/load_inputs/main.cpp | 12 ++ 5 files changed, 286 insertions(+), 7 deletions(-) create mode 100644 source/load_inputs/load_EVSE_models.cpp create mode 100644 source/load_inputs/load_EVSE_models.h create mode 100644 source/load_inputs/main.cpp diff --git a/source/load_inputs/CMakeLists.txt b/source/load_inputs/CMakeLists.txt index 2005320..59390d9 100644 --- a/source/load_inputs/CMakeLists.txt +++ b/source/load_inputs/CMakeLists.txt @@ -11,8 +11,9 @@ endif() message(STATUS "Install dir is ${INSTALL_DIR}") -add_executable(loader "main.cpp" "load_EV_models.cpp" "load_helper.cpp" "../charging_models/EV_characteristics.cpp" -"../charging_models/EVSE_characteristics.cpp" "../charging_models/EV_EVSE_inventory.cpp") +add_executable(loader "main.cpp" "load_EV_models.cpp" "load_EVSE_models.cpp" "load_helper.cpp" +"../charging_models/EV_characteristics.cpp" "../charging_models/EVSE_characteristics.cpp" +"../charging_models/EV_EVSE_inventory.cpp") target_compile_features(loader PUBLIC cxx_std_17) target_include_directories(loader PUBLIC ${PROJECT_SOURCE_DIR}/../charging_models) diff --git a/source/load_inputs/load_EVSE_models.cpp b/source/load_inputs/load_EVSE_models.cpp new file mode 100644 index 0000000..32fe7f4 --- /dev/null +++ b/source/load_inputs/load_EVSE_models.cpp @@ -0,0 +1,242 @@ +#include "load_EVSE_models.h" +#include "load_helper.h" + +#include +#include + +EVSE_level load_EVSE_models::string_to_EVSE_level(const std::string& str) +{ + const std::unordered_map map = { + {"L1", L1}, + {"L2", L2}, + {"DCFC", DCFC} + }; + + auto it = map.find(str); + if (it != map.end()) { + return it->second; + } + else { + throw std::invalid_argument("Invalid EVSE level string"); + } +} + +EVSE_phase load_EVSE_models::string_to_EVSE_phase(const std::string& str) +{ + const std::unordered_map map = { + {"1", singlephase}, + {"one", singlephase}, + {"3", threephase}, + {"three", threephase} + }; + + auto it = map.find(str); + if (it != map.end()) { + return it->second; + } + else { + throw std::invalid_argument("Invalid EVSE level string"); + } +} + +EVSE_inventory load_EVSE_models::load(std::string inputs_dir) +{ + EVSE_inventory EVSE_inv; + + std::string EVSE_inputs_file = inputs_dir + "/EVSE_inputs.csv"; + ASSERT(std::filesystem::exists(EVSE_inputs_file), EVSE_inputs_file << " file does not exist"); + std::ifstream EVSE_inputs_file_handle(EVSE_inputs_file); + + //------------------------------ + + std::string line; + std::vector elements_in_line; + int line_number = 1; + + //------------------------------- + + // column names + std::getline(EVSE_inputs_file_handle, line); + elements_in_line = tokenize(line); + + // check number of columns + ASSERT(elements_in_line.size() == 8, EVSE_inputs_file << " invalid number of columns. Need 8 \ + columns but " << elements_in_line.size() << " provided in line number " << line_number); + + // check if columns equal to { EVSE_type, EVSE_level, EVSE_phase_connection, AC/DC_power_limit_kW, + // AC/DC_voltage_limits_V, AC/DC_current_limit_A, standby_real_power_kW, standby_reactive_power_kVAR } + std::vector column_names = { "EVSE_type", "EVSE_level", "EVSE_phase_connection", + "AC/DC_power_limit_kW", "AC/DC_voltage_limits_V", "AC/DC_current_limit_A", "standby_real_power_kW", + "standby_reactive_power_kVAR" }; + + ASSERT(elements_in_line == column_names, EVSE_inputs_file << " column names doesn\'t match. " << + "Expected column names are { EVSE_type, EVSE_level, EVSE_phase_connection, AC/DC_power_limit_kW, " << + "AC/DC_voltage_limits_V, AC/DC_current_limit_A, standby_real_power_kW, standby_reactive_power_kVAR }"); + + while (std::getline(EVSE_inputs_file_handle, line)) + { + line_number += 1; + elements_in_line = tokenize(line); + ASSERT(elements_in_line.size() == 8, EVSE_inputs_file << " invalid number of columns. Need 8 \ + columns but " << elements_in_line.size() << " provided in line number " << line_number); + + + const EVSE_type type = [&]() { + + // check if EVSE_type is unique + std::string str = elements_in_line[0]; + ASSERT(EVSE_inv.find(str) == EVSE_inv.end(), EVSE_inputs_file << " " << column_names[0] << " " << + str << " is not unique in line number " << line_number); + return str; + + }(); + + const EVSE_level level = [&]() { + + // check if battery_chemistry is equal to LTO, LMO or NMC + std::vector options = { "L1", "L2", "DCFC" }; + std::string str = elements_in_line[1]; + bool is_valid = std::any_of(options.begin(), options.end(), + [&str](const std::string& s) { return str == s; }); + ASSERT(is_valid, EVSE_inputs_file << " " << column_names[1] << " " << str << + " is not one of {L1, L2, DCFC} in line number " << line_number); + + return this->string_to_EVSE_level(str); + + }(); + + const EVSE_phase phase = [&]() { + + // check if battery_chemistry is equal to LTO, LMO or NMC + std::vector options = { "1", "3", "one", "three"}; + std::string str = elements_in_line[2]; + std::transform(str.begin(), str.end(), str.begin(), ::tolower); + + bool is_valid = std::any_of(options.begin(), options.end(), + [&str](const std::string& s) { return str == s; }); + ASSERT(is_valid, EVSE_inputs_file << " " << column_names[2] << " " << str << + " is not one of {1, 3, one, three} in line number " << line_number); + + return this->string_to_EVSE_phase(str); + + }(); + + const double power_limit_kW = [&]() { + + // check if power_limit_kW can be converted to double and also non negative + std::string str = elements_in_line[3]; + double val; + bool is_conversion_successful; + try { + val = std::stod(str); + is_conversion_successful = true; + } + catch (...) { + is_conversion_successful = false; + } + ASSERT(is_conversion_successful, EVSE_inputs_file << " " << column_names[3] << " " << + str << " is not a double in line number " << line_number); + + ASSERT(val > 0, EVSE_inputs_file << " " << column_names[3] << " " << str << + " is less than or equal to 0 in line number " << line_number); + return val; + + }(); + + const double volatge_limit_V = [&]() { + + // check if volatge_limit_V is double and also non negative + std::string str = elements_in_line[4]; + double val; + bool is_conversion_successful; + try { + val = std::stod(str); + is_conversion_successful = true; + } + catch (...) { + is_conversion_successful = false; + } + ASSERT(is_conversion_successful, EVSE_inputs_file << " " << column_names[4] << " " << + str << " is not a double in line number " << line_number); + + ASSERT(val > 0, EVSE_inputs_file << " " << column_names[4] << " " << str << + " is less than or equal to 0 in line number " << line_number); + + return val; + + }(); + + const double current_limit_A = [&]() { + + // check if current_limit_A is double and also non negative + std::string str = elements_in_line[5]; + double val; + bool is_conversion_successful; + try { + val = std::stod(str); + is_conversion_successful = true; + } + catch (...) { + is_conversion_successful = false; + } + ASSERT(is_conversion_successful, EVSE_inputs_file << " " << column_names[5] << " " << + str << " is not a double in line number " << line_number); + + ASSERT(val > 0, EVSE_inputs_file << " " << column_names[5] << " " << str << + " is less than or equal to 0 in line number " << line_number); + + return val; + + }(); + + const double standby_real_power_kW = [&]() { + + // check standby_real_power_kW is double and non negative + std::string str = elements_in_line[6]; + double val; + bool is_conversion_successful; + try { + val = std::stod(str); + is_conversion_successful = true; + } + catch (...) { + is_conversion_successful = false; + } + ASSERT(is_conversion_successful, EVSE_inputs_file << " " << column_names[6] << " " << str << + " is not a int in line number " << line_number); + + ASSERT(val >= 0, EVSE_inputs_file << " " << column_names[6] << " " << str << + " is less than or equal to 0 in line number " << line_number); + + return val; + + }(); + + const double standby_reactive_power_kW = [&]() { + + // check AC_charge_rate_kW is double + std::string str = elements_in_line[7]; + double val; + bool is_conversion_successful; + try { + val = std::stod(str); + is_conversion_successful = true; + } + catch (...) { + is_conversion_successful = false; + } + ASSERT(is_conversion_successful, EVSE_inputs_file << " " << column_names[7] << " " << + str << " is not a double in line number " << line_number); + + return val; + }(); + + // other checks + + EVSE_inv.emplace(type, EVSE_characteristics(type, level, phase, power_limit_kW, volatge_limit_V, + current_limit_A, standby_real_power_kW, standby_reactive_power_kW)); + + } + + return std::move(EVSE_inv); +} \ No newline at end of file diff --git a/source/load_inputs/load_EVSE_models.h b/source/load_inputs/load_EVSE_models.h new file mode 100644 index 0000000..28ed861 --- /dev/null +++ b/source/load_inputs/load_EVSE_models.h @@ -0,0 +1,24 @@ +#ifndef LOAD_EVSE_MODELS_H +#define LOAD_EVSE_MODELS_H + +#include "EV_EVSE_inventory.h" + +class load_EVSE_models +{ +private: + const EVSE_inventory EVSE_inv; + + EVSE_level string_to_EVSE_level(const std::string& str); + EVSE_phase string_to_EVSE_phase(const std::string& str); + + EVSE_inventory load(std::string inputs_dir); + +public: + + load_EVSE_models(std::string inputs_dir) : + EVSE_inv(this->load(inputs_dir)) {} + + const EVSE_inventory& get_EVSE_inventory() const { return this->EVSE_inv; } +}; + +#endif // LOAD_EV_MODELS_H \ No newline at end of file diff --git a/source/load_inputs/load_EV_models.cpp b/source/load_inputs/load_EV_models.cpp index 220a4ab..4c1b0d9 100644 --- a/source/load_inputs/load_EV_models.cpp +++ b/source/load_inputs/load_EV_models.cpp @@ -161,7 +161,7 @@ EV_inventory load_EV_models::load(std::string inputs_dir) const double range_miles = [&]() { - // check if range_miles is int and also non negative + // check if range_miles is double and also non negative std::string str = elements_in_line[5]; double val; bool is_conversion_successful; @@ -173,7 +173,7 @@ EV_inventory load_EV_models::load(std::string inputs_dir) is_conversion_successful = false; } ASSERT(is_conversion_successful, EV_inputs_file << " " << column_names[5] << " " << - str << " is not a int in line number " << line_number); + str << " is not a double in line number " << line_number); ASSERT(val > 0, EV_inputs_file << " " << column_names[5] << " " << str << " is less than or equal to 0 in line number " << line_number); @@ -189,14 +189,14 @@ EV_inventory load_EV_models::load(std::string inputs_dir) double val; bool is_conversion_successful; try { - val = std::stoi(str); + val = std::stod(str); is_conversion_successful = true; } catch (...) { is_conversion_successful = false; } ASSERT(is_conversion_successful, EV_inputs_file << " " << column_names[6] << " " << str << - " is not a int in line number " << line_number); + " is not a double in line number " << line_number); ASSERT(val > 0, EV_inputs_file << " " << column_names[6] << " " << str << " is less than or equal to 0 in line number " << line_number); @@ -219,7 +219,7 @@ EV_inventory load_EV_models::load(std::string inputs_dir) is_conversion_successful = false; } ASSERT(is_conversion_successful, EV_inputs_file << " " << column_names[7] << " " << - str << " is not a int in line number " << line_number); + str << " is not a double in line number " << line_number); ASSERT(val > 0, EV_inputs_file << " " << column_names[7] << " " << str << " is less than or equal to 0 in line number " << line_number); diff --git a/source/load_inputs/main.cpp b/source/load_inputs/main.cpp new file mode 100644 index 0000000..2c88a83 --- /dev/null +++ b/source/load_inputs/main.cpp @@ -0,0 +1,12 @@ +#include "load_EV_models.h" +#include "load_EVSE_models.h" + + +int main() +{ + load_EVSE_models loader("C:\\Users\\CEBOM\\Documents\\repos\\Caldera_ICM\\inputs"); + EVSE_inventory inv = loader.get_EVSE_inventory(); + std::cout << inv << std::endl; + + return 0; +} \ No newline at end of file From eb75f7e8d13d12b76457c619f47f6c892285e81b Mon Sep 17 00:00:00 2001 From: Manoj Kumar Cebol Sundarrajan Date: Mon, 24 Apr 2023 23:54:24 -0600 Subject: [PATCH 05/52] EV_EVSE_inventory loader, some renaming and cleanup --- source/load_inputs/CMakeLists.txt | 6 ++--- ...VSE_models.cpp => load_EVSE_inventory.cpp} | 17 +++++++++---- source/load_inputs/load_EVSE_inventory.h | 21 ++++++++++++++++ source/load_inputs/load_EVSE_models.h | 24 ------------------- source/load_inputs/load_EV_EVSE_inventory.cpp | 10 ++++++++ source/load_inputs/load_EV_EVSE_inventory.h | 19 +++++++++++++++ ...ad_EV_models.cpp => load_EV_inventory.cpp} | 16 +++++++++---- .../{load_EV_models.h => load_EV_inventory.h} | 16 +++++-------- source/load_inputs/main.cpp | 9 +++---- 9 files changed, 89 insertions(+), 49 deletions(-) rename source/load_inputs/{load_EVSE_models.cpp => load_EVSE_inventory.cpp} (94%) create mode 100644 source/load_inputs/load_EVSE_inventory.h delete mode 100644 source/load_inputs/load_EVSE_models.h create mode 100644 source/load_inputs/load_EV_EVSE_inventory.cpp create mode 100644 source/load_inputs/load_EV_EVSE_inventory.h rename source/load_inputs/{load_EV_models.cpp => load_EV_inventory.cpp} (93%) rename source/load_inputs/{load_EV_models.h => load_EV_inventory.h} (55%) diff --git a/source/load_inputs/CMakeLists.txt b/source/load_inputs/CMakeLists.txt index 59390d9..344102f 100644 --- a/source/load_inputs/CMakeLists.txt +++ b/source/load_inputs/CMakeLists.txt @@ -11,9 +11,9 @@ endif() message(STATUS "Install dir is ${INSTALL_DIR}") -add_executable(loader "main.cpp" "load_EV_models.cpp" "load_EVSE_models.cpp" "load_helper.cpp" -"../charging_models/EV_characteristics.cpp" "../charging_models/EVSE_characteristics.cpp" -"../charging_models/EV_EVSE_inventory.cpp") +add_executable(loader "main.cpp" "load_EV_EVSE_inventory.cpp" "load_EV_inventory.cpp" "load_EVSE_inventory.cpp" +"load_helper.cpp" "../charging_models/EV_characteristics.cpp" "../charging_models/EVSE_characteristics.cpp" +"../charging_models/EV_EVSE_inventory.cpp" "load_EV_EVSE_inventory.h" "load_EV_EVSE_inventory.cpp") target_compile_features(loader PUBLIC cxx_std_17) target_include_directories(loader PUBLIC ${PROJECT_SOURCE_DIR}/../charging_models) diff --git a/source/load_inputs/load_EVSE_models.cpp b/source/load_inputs/load_EVSE_inventory.cpp similarity index 94% rename from source/load_inputs/load_EVSE_models.cpp rename to source/load_inputs/load_EVSE_inventory.cpp index 32fe7f4..d962730 100644 --- a/source/load_inputs/load_EVSE_models.cpp +++ b/source/load_inputs/load_EVSE_inventory.cpp @@ -1,10 +1,19 @@ -#include "load_EVSE_models.h" +#include "load_EVSE_inventory.h" #include "load_helper.h" #include #include -EVSE_level load_EVSE_models::string_to_EVSE_level(const std::string& str) +load_EVSE_inventory::load_EVSE_inventory(std::string inputs_dir) : + EVSE_inv(this->load(inputs_dir)) +{} + +const EVSE_inventory& load_EVSE_inventory::get_EVSE_inventory() const +{ + return this->EVSE_inv; +} + +EVSE_level load_EVSE_inventory::string_to_EVSE_level(const std::string& str) { const std::unordered_map map = { {"L1", L1}, @@ -21,7 +30,7 @@ EVSE_level load_EVSE_models::string_to_EVSE_level(const std::string& str) } } -EVSE_phase load_EVSE_models::string_to_EVSE_phase(const std::string& str) +EVSE_phase load_EVSE_inventory::string_to_EVSE_phase(const std::string& str) { const std::unordered_map map = { {"1", singlephase}, @@ -39,7 +48,7 @@ EVSE_phase load_EVSE_models::string_to_EVSE_phase(const std::string& str) } } -EVSE_inventory load_EVSE_models::load(std::string inputs_dir) +EVSE_inventory load_EVSE_inventory::load(std::string inputs_dir) { EVSE_inventory EVSE_inv; diff --git a/source/load_inputs/load_EVSE_inventory.h b/source/load_inputs/load_EVSE_inventory.h new file mode 100644 index 0000000..02b5d56 --- /dev/null +++ b/source/load_inputs/load_EVSE_inventory.h @@ -0,0 +1,21 @@ +#ifndef LOAD_EVSE_INVENTORY_H +#define LOAD_EVSE_INVENTORY_H + +#include "EV_EVSE_inventory.h" + +class load_EVSE_inventory +{ +private: + const EVSE_inventory EVSE_inv; + + EVSE_level string_to_EVSE_level(const std::string& str); + EVSE_phase string_to_EVSE_phase(const std::string& str); + + EVSE_inventory load(std::string inputs_dir); + +public: + load_EVSE_inventory(std::string inputs_dir); + const EVSE_inventory& get_EVSE_inventory() const; +}; + +#endif // LOAD_EVSE_INVENTORY_H \ No newline at end of file diff --git a/source/load_inputs/load_EVSE_models.h b/source/load_inputs/load_EVSE_models.h deleted file mode 100644 index 28ed861..0000000 --- a/source/load_inputs/load_EVSE_models.h +++ /dev/null @@ -1,24 +0,0 @@ -#ifndef LOAD_EVSE_MODELS_H -#define LOAD_EVSE_MODELS_H - -#include "EV_EVSE_inventory.h" - -class load_EVSE_models -{ -private: - const EVSE_inventory EVSE_inv; - - EVSE_level string_to_EVSE_level(const std::string& str); - EVSE_phase string_to_EVSE_phase(const std::string& str); - - EVSE_inventory load(std::string inputs_dir); - -public: - - load_EVSE_models(std::string inputs_dir) : - EVSE_inv(this->load(inputs_dir)) {} - - const EVSE_inventory& get_EVSE_inventory() const { return this->EVSE_inv; } -}; - -#endif // LOAD_EV_MODELS_H \ No newline at end of file diff --git a/source/load_inputs/load_EV_EVSE_inventory.cpp b/source/load_inputs/load_EV_EVSE_inventory.cpp new file mode 100644 index 0000000..28a35e2 --- /dev/null +++ b/source/load_inputs/load_EV_EVSE_inventory.cpp @@ -0,0 +1,10 @@ +#include "load_EV_EVSE_inventory.h" + +load_EV_EVSE_inventory::load_EV_EVSE_inventory(std::string inputs_dir) : + inventory(EV_EVSE_inventory(load_EV_inventory(inputs_dir).get_EV_inventory(), + load_EVSE_inventory(inputs_dir).get_EVSE_inventory())) {} + +const EV_EVSE_inventory& load_EV_EVSE_inventory::get_EV_EVSE_inventory() const +{ + return this->inventory; +} \ No newline at end of file diff --git a/source/load_inputs/load_EV_EVSE_inventory.h b/source/load_inputs/load_EV_EVSE_inventory.h new file mode 100644 index 0000000..6902581 --- /dev/null +++ b/source/load_inputs/load_EV_EVSE_inventory.h @@ -0,0 +1,19 @@ +#ifndef LOAD_EV_EVSE_INVENTORY_H +#define LOAD_EV_EVSE_INVENTORY_H + +#include "EV_EVSE_inventory.h" +#include "load_EV_inventory.h" +#include "load_EVSE_inventory.h" + +class load_EV_EVSE_inventory +{ +private: + const EV_EVSE_inventory inventory; + +public: + load_EV_EVSE_inventory(std::string inputs_dir); + + const EV_EVSE_inventory& get_EV_EVSE_inventory() const; +}; + +#endif //LOAD_EV_EVSE_INVENTORY_H \ No newline at end of file diff --git a/source/load_inputs/load_EV_models.cpp b/source/load_inputs/load_EV_inventory.cpp similarity index 93% rename from source/load_inputs/load_EV_models.cpp rename to source/load_inputs/load_EV_inventory.cpp index 4c1b0d9..81cd4b3 100644 --- a/source/load_inputs/load_EV_models.cpp +++ b/source/load_inputs/load_EV_inventory.cpp @@ -1,11 +1,19 @@ -#include "load_EV_models.h" +#include "load_EV_inventory.h" #include "load_helper.h" #include #include +load_EV_inventory::load_EV_inventory(std::string inputs_dir) : + EV_inv(this->load(inputs_dir)) +{} -battery_chemistry load_EV_models::string_to_battery_chemistry(const std::string& str) +const EV_inventory& load_EV_inventory::get_EV_inventory() const +{ + return this->EV_inv; +} + +battery_chemistry load_EV_inventory::string_to_battery_chemistry(const std::string& str) { const std::unordered_map map = { {"LTO", LTO}, @@ -22,7 +30,7 @@ battery_chemistry load_EV_models::string_to_battery_chemistry(const std::string& } } -bool load_EV_models::string_to_DCFC_capable(const std::string& str) { +bool load_EV_inventory::string_to_DCFC_capable(const std::string& str) { if (str == "true" || str == "t") { return true; } @@ -34,7 +42,7 @@ bool load_EV_models::string_to_DCFC_capable(const std::string& str) { } } -EV_inventory load_EV_models::load(std::string inputs_dir) +EV_inventory load_EV_inventory::load(std::string inputs_dir) { EV_inventory EV_inv; diff --git a/source/load_inputs/load_EV_models.h b/source/load_inputs/load_EV_inventory.h similarity index 55% rename from source/load_inputs/load_EV_models.h rename to source/load_inputs/load_EV_inventory.h index c07d87f..711e238 100644 --- a/source/load_inputs/load_EV_models.h +++ b/source/load_inputs/load_EV_inventory.h @@ -1,12 +1,11 @@ -#ifndef LOAD_EV_MODELS_H -#define LOAD_EV_MODELS_H +#ifndef LOAD_EV_INVENTORY_H +#define LOAD_EV_INVENTORY_H #include "EV_EVSE_inventory.h" #include "EV_characteristics.h" - #include -class load_EV_models +class load_EV_inventory { private: const EV_inventory EV_inv; @@ -17,11 +16,8 @@ class load_EV_models EV_inventory load(std::string inputs_dir); public: - - load_EV_models(std::string inputs_dir) : - EV_inv(this->load(inputs_dir)) {} - - const EV_inventory& get_EV_inventory() const { return this->EV_inv; } + load_EV_inventory(std::string inputs_dir); + const EV_inventory& get_EV_inventory() const; }; -#endif // LOAD_EV_MODELS_H \ No newline at end of file +#endif // LOAD_EV_INVENTORY_H \ No newline at end of file diff --git a/source/load_inputs/main.cpp b/source/load_inputs/main.cpp index 2c88a83..884def1 100644 --- a/source/load_inputs/main.cpp +++ b/source/load_inputs/main.cpp @@ -1,11 +1,12 @@ -#include "load_EV_models.h" -#include "load_EVSE_models.h" +#include "load_EV_inventory.h" +#include "load_EVSE_inventory.h" +#include "load_EV_EVSE_inventory.h" int main() { - load_EVSE_models loader("C:\\Users\\CEBOM\\Documents\\repos\\Caldera_ICM\\inputs"); - EVSE_inventory inv = loader.get_EVSE_inventory(); + load_EV_EVSE_inventory loader("C:\\Users\\CEBOM\\Documents\\repos\\Caldera_ICM\\inputs"); + EV_EVSE_inventory inv = loader.get_EV_EVSE_inventory(); std::cout << inv << std::endl; return 0; From c5648a8ff36210041fae03a1f39f259c40962671 Mon Sep 17 00:00:00 2001 From: Manoj Kumar Cebol Sundarrajan Date: Tue, 9 May 2023 13:43:06 -0600 Subject: [PATCH 06/52] All unorganized chanes clumped together --- docs/model assumptions.xlsx | Bin 0 -> 28485 bytes docs/new_interface.pptx | Bin 0 -> 33030 bytes docs/~$model assumptions.xlsx | Bin 0 -> 165 bytes docs/~$new_interface.pptx | Bin 0 -> 165 bytes inputs/Archives/EVSE_inputs.csv | 9 + inputs/Archives/EV_inputs.csv | 15 + inputs/EVSE_inputs.csv | 9 +- inputs/EV_inputs.csv | 17 +- source/CMakeLists.txt | 46 + source/base/ICM_interface.h | 5 +- source/base/battery.cpp | 30 +- source/base/battery.h | 32 +- source/base/battery_calculate_limits.cpp | 284 ++-- source/base/battery_calculate_limits.h | 125 +- source/base/battery_integrate_X_in_time.cpp | 2 +- source/base/helper.cpp | 143 +- source/base/helper.h | 73 +- source/base/vehicle_charge_model.cpp | 78 +- source/base/vehicle_charge_model.h | 6 +- source/charging_models/EV_characteristics.cpp | 150 +- source/charging_models/EV_characteristics.h | 58 +- source/charging_models/datatypes_global.cpp | 8 +- source/charging_models/datatypes_global.h | 21 +- source/dcfc_charge_profile.csv | 103 ++ source/factory/EV_charge_model_factory.cpp | 93 ++ source/factory/EV_charge_model_factory.h | 41 + .../P2_vs_battery_efficiency_factory.cpp | 92 ++ .../P2_vs_battery_efficiency_factory.h | 36 + source/factory/SOC_vs_P2_factory.cpp | 1264 +++++++++++++++++ source/factory/SOC_vs_P2_factory.h | 98 ++ .../factory/charging_transitions_factory.cpp | 369 +++++ source/factory/charging_transitions_factory.h | 53 + source/factory/puVrms_vs_P2_factory.cpp | 107 ++ source/factory/puVrms_vs_P2_factory.h | 32 + source/load_inputs/CMakeLists.txt | 22 - source/load_inputs/load_EVSE_inventory.cpp | 2 +- source/load_inputs/load_EV_inventory.cpp | 173 ++- source/load_inputs/load_helper.cpp | 28 - source/load_inputs/load_helper.h | 16 - source/main.cpp | 19 + .../create_library/CMakeLists.txt | 18 + .../create_library/main.cpp | 9 + .../pev_charge_profile_factory.cpp | 18 +- .../archives/L1_L2_inputs.csv | 9 + .../archives/dcfc_inputs.csv | 57 + .../archives/output/L1_L2_charge_profiles.csv | 103 ++ .../archives/output/L1_L2_code.txt | 50 + .../archives/output/L1_L2_data.csv | 42 + .../archives/output/dcfc_charge_profiles.csv | 103 ++ .../archives/output/dcfc_code.txt | 551 +++++++ .../archives/output/dcfc_constraints.csv | 392 +++++ .../archives/output/dcfc_data.csv | 551 +++++++ .../charge_profile_factory.exe | Bin 0 -> 227328 bytes .../generate_charge_profiles/dcfc_inputs.csv | 57 +- .../output/L1_L2_charge_profiles.csv | 103 ++ .../output/L1_L2_code.txt | 50 + .../output/L1_L2_data.csv | 42 + .../output/dcfc_charge_profiles.csv | 103 ++ .../output/dcfc_code.txt | 9 + .../output/dcfc_constraints.csv | 7 + .../output/dcfc_data.csv | 9 + 61 files changed, 5328 insertions(+), 614 deletions(-) create mode 100644 docs/model assumptions.xlsx create mode 100644 docs/new_interface.pptx create mode 100644 docs/~$model assumptions.xlsx create mode 100644 docs/~$new_interface.pptx create mode 100644 inputs/Archives/EVSE_inputs.csv create mode 100644 inputs/Archives/EV_inputs.csv create mode 100644 source/CMakeLists.txt create mode 100644 source/dcfc_charge_profile.csv create mode 100644 source/factory/EV_charge_model_factory.cpp create mode 100644 source/factory/EV_charge_model_factory.h create mode 100644 source/factory/P2_vs_battery_efficiency_factory.cpp create mode 100644 source/factory/P2_vs_battery_efficiency_factory.h create mode 100644 source/factory/SOC_vs_P2_factory.cpp create mode 100644 source/factory/SOC_vs_P2_factory.h create mode 100644 source/factory/charging_transitions_factory.cpp create mode 100644 source/factory/charging_transitions_factory.h create mode 100644 source/factory/puVrms_vs_P2_factory.cpp create mode 100644 source/factory/puVrms_vs_P2_factory.h delete mode 100644 source/load_inputs/CMakeLists.txt create mode 100644 source/main.cpp create mode 100644 source/pev_charge_profile_factory/create_library/CMakeLists.txt create mode 100644 source/pev_charge_profile_factory/create_library/main.cpp create mode 100644 source/pev_charge_profile_factory/generate_charge_profiles/archives/L1_L2_inputs.csv create mode 100644 source/pev_charge_profile_factory/generate_charge_profiles/archives/dcfc_inputs.csv create mode 100644 source/pev_charge_profile_factory/generate_charge_profiles/archives/output/L1_L2_charge_profiles.csv create mode 100644 source/pev_charge_profile_factory/generate_charge_profiles/archives/output/L1_L2_code.txt create mode 100644 source/pev_charge_profile_factory/generate_charge_profiles/archives/output/L1_L2_data.csv create mode 100644 source/pev_charge_profile_factory/generate_charge_profiles/archives/output/dcfc_charge_profiles.csv create mode 100644 source/pev_charge_profile_factory/generate_charge_profiles/archives/output/dcfc_code.txt create mode 100644 source/pev_charge_profile_factory/generate_charge_profiles/archives/output/dcfc_constraints.csv create mode 100644 source/pev_charge_profile_factory/generate_charge_profiles/archives/output/dcfc_data.csv create mode 100644 source/pev_charge_profile_factory/generate_charge_profiles/charge_profile_factory.exe create mode 100644 source/pev_charge_profile_factory/generate_charge_profiles/output/L1_L2_charge_profiles.csv create mode 100644 source/pev_charge_profile_factory/generate_charge_profiles/output/L1_L2_code.txt create mode 100644 source/pev_charge_profile_factory/generate_charge_profiles/output/L1_L2_data.csv create mode 100644 source/pev_charge_profile_factory/generate_charge_profiles/output/dcfc_charge_profiles.csv create mode 100644 source/pev_charge_profile_factory/generate_charge_profiles/output/dcfc_code.txt create mode 100644 source/pev_charge_profile_factory/generate_charge_profiles/output/dcfc_constraints.csv create mode 100644 source/pev_charge_profile_factory/generate_charge_profiles/output/dcfc_data.csv diff --git a/docs/model assumptions.xlsx b/docs/model assumptions.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..a7fa0bd1877d506f844bb91b99a3a3a947874019 GIT binary patch literal 28485 zcmeFZRd6Ihwj^3&W~s%@%*@Qp%*@Qp%#5v8i<#A8W|msa%*^yOGk34;+dE(H@7Yd% zM3z~kRaQoZ`#J6>q7Nrx7>O_aajUOSz|Vdt<&cfe|PS3bcO9+l(~dOaLs@wCpwr1Zp_1( z6wmrsmTnZVq~|Z4YlTSMf>tfRkNVav(Vn0RUbRB9DE=Z5UEyD~ut+>xnxP96yZM&1 zzvi%;z&-i$^(An50!uKPu#DPT!&1GRRMu@?t~!&&&qQyWzjUI@L!xFit0H2@%pKy3B1 z-XR`gmlK=`zeIb4iC3T~7lg<4T(dD=rvmga&f~FK-fr9e0uP_8Ed6iLIbHG5Ce(ui zt2ar?iwhH(KYaZ*gB#vE;W>D_{EQy&5}XZvYk~u)@KK)|5pLq%%YNi~>_!Amcx}lc zM-U^`@YNUNFyVO_XPg1-cw+kT8Y)ruU&7uS!Y&$ z|F=i4Op=xFXMhd6l6Vgvd0N~^KopX87nEoxRPhUtTt{e%{Y8Sk(M^tnsDc#?BJSVm z_dd3^!4rErLio7LQW=em%1zwtUKN)9>gWnVMdp+y=2*EifaJFLu=toMF6Bw#))`M# z(OUXbdUT6eZ2m^14sn`J9SaKOH%{0O-poL)Az95$qvvX%MIq&js<7G?_JY&o>1_X{ zwBi#u{s>N)^SMm45oaUwm1>_68^VVdELCL-PRm-OJSQ$9Pkj@co;#83Zj=unTDhDN zB_bB&XQpZKVbX#Jf2~HAoAF%F0d}bVijnKlplJNk&F_HtKS6@b3%?!#0syRhM^1$A zk@2vhcei)4HnO+3{zsUsR9&;%V?*?%pYcb$uZ~z)MBb&T#Kt1n1dn641Ofpfo=rrQ zRFR}|Lp<+xr_h$Gr-NqK)|W`c!OhF$6wdQsVQYGnX)D#>UcAAaV_iM0EL|Ng`?Sr( zMA1b_Y6L6OlrDLNL3>S)*7xV!V)(r8SxyEARArq0PSLf6@afT6Y?!X`2t z!IzzNl!8`NqRL)vM7*5{Q>p3_hJ2yKu<5LJ%Bt$oVS*?5n7ji!qz^j@lY_ zUDCzu^w$M&qp+CjgDK!zHQGNuoaT6|5WJ>+Zlw*+kMM~hXdKJkJ2$H)o9axqtd$4U z*hcKT&o4$cgfCRf8`oHID_Bhka+7>^9fV!F zn?qlnwR1yKomlrNm4!;Vsd`alq_LEQw)hW%aPv=mGLJ1$U)BEd124$4!$HBRB^~PH ztotUNpagM`QrKx28g~ObQ+CneNvpWeS=Z^k-<= zQQ=#H>PVWVyd`B`c=avN*6yhJu)(;z1&f6Qrhu<^muT!T?Z*LR4~ zB%Q(D5P|cN%RGNrXotfcigD{vR*x>3Y64dFeN1F9CxDhPuD%dit?$+$&%jen9DWgs z&9Io+aNN$arOCuQDt1|_Y{#;=E9G9;!TV!#_kQ!K?JE^+O^V{Nf>61CG;%OtVtvA92IeP4SvIF0ymOR+|p$aLvB`|=Kww8vaT z!26BPkk4J@*lo#>D+05l4rUx20%EA1aXVz07q1+V%Ix0673=!`w%Fy)!f0XmVk|gJa9D(AVinKSd58OVpbg|pNx%CB>!0t)h6R8G`UdU4 zg4_QN-TxKnfWFh*Z|MKueN-yRN)Ip~cEWsyGq`8Fp&_lf&=Z}jo*_VvHd3yU5iz z4{$1^@yc0weZpJ_!bimM{V9{24+=BeRj+njgxox4z%>|K$1m zv{g5ZZ#hIp3jknzU-4f&?`&ae>f%iQ&lBT62tOxTJ3gBMF?5UifnUQ9!dS?T!emjF z?NrLQ^iL-bw;80Gjg0M4arsv#h-E$X0jU<$j6v8{PH*^1|Extl#8Ij(^w?eqvPBWC zY6InQ{8fd8P$WVjWoR=T>OE*4-vqy325#lrD;5DF2}@UjE2QmIMmj6Tj`5mMusqdS z45Y^y+e8bz$V#^fi*&NdK#T$$FN%{pLcdySQf;G?c>$Dp1PCqg>r<1}N2u98F9-3u z+mhH^)(<4>->MuB3Q{o>`RuW-MpcfN#M2=p;^E>^N83d6HCq&zq`42x(2PkdD|Z*q z%50`WdXg=7TcJCc&b8_r;9Z4tPnx^^)YQJAaGOxrx`rD^PA_t)U?0plJiIrieZ*ZE zm4!B`w1vZ#NuqlvdqlEiD;7Do-7b98XqOJ`XpRbK_sVJhqhcwO=Dq=bR2L*qy2I{db52E&q=C2jR zq$)-w{p{Y)uvW?ts8hSJ<`;cQ=_RBdk(8o0t;13kiGk`yDo-tjBLg?*YN?zk4^HyPNyd z;^WJ~F#gv=jXix0{}#S`D3!ZB0zJyZQ{-D~g}Zz2=Z{K!`N95= z;rafLadP8shD&}p2&?0=Ud7;&ut2P#0SEjvq$MR=jq!oOrW6xe7~<;Cb`6)4vgkcJ zv_BrFOb+Q-xk6#wX8?vpH`~O|SpjG%-zdvPjomX){d^;_Mb`~de_AtV#E_vi3=z5<+^tO?6!*v+ z)gMO630bQpCRI^UD*ZqM61>G3ilL;dbc2!A@^wm>($_$F6$B7F8HLo~NM~#!HoJ64 z^IEgNpbdUkFv+@zkNp@i;eMdB=qqn$;oOgK*e@GFctNF0rKR2}3k&VYX*M2;HZi%X&Z5l(X|kCGq1hN zo|yj3+C)VVN|Qy&Ez&?35)97yL%?OpgrD=C4DASLG3xIt;ti|F_!SsT7)1wqw{ONt zB#w159;kPKwb!!c6Sgnrh}VZ2FZtO^m6x!K#$KyPz|gD>X^MGI>mY8WH2& zkHptWY*Z~Q&s4se-CHWY8m4_!F-0(AO*;;U36an88xaN9KY^D~cq2(_2nNTzqkc|F z4G=S>#lJp^_j&z*jAoj3bSHhxbJ|^BH-Q=MGtzj@fFO%rPJxOp+V)S7RJ817ZYVW} zp{~(sOIDnOyONgBv3aA9w2yIS5F6soSN);cjdwO?G}o zV}BqoR@2MOabh>q)F3TUGj77kD2=&6M+qj3ylThCyTyLfoN$YkrUUR!_ujfhq304y@Rd{9h|r7-Dl=VD{=KGN!jAfCs>HhEnnTy z6D?mI^Onk3?;t~+^FVdVGc~$2C{k9w#>Z$L6Z0cO37Dg4#)v-Ng$W9b;r^DjOE>X? zgc893gIe3Ml14HXkXBy3T_%Cxno=YOSY@D}?`yoFk<{%15Kgk;+M3M!n9^6VP>%Bk zgj#8XSdx)?B{X^gnyd!PekK?31Q|XhqId&RDalaKW$DGx zW9-*YGNxQgljY61N-LMyXHaQX)c4l2+3MAh&wv)ot&4z~P?~rO#9VDDVcQ`Ttw9&U zrkNDlOk%|q&q6F(!KHs)I-AgM43ah(sLdm(@>QG=v=lP~!x-zSqPmCyLb7b4@Mf+l z%WaC@s!I=mXjADV!kHs3i3`*+gHp*rgV=<&^~&mlpipMH#2>S&YKjNhaDxsSSmk@q zADC9^v1Dc~3x&G^b^Wb56Uy8XEHLCEu8_&CJO%pQ2cYFZxKL4=!~|?HToT;-kv3M! zvf$yVRg;v5{*} zQiedV$RwM7@U0<~ib5O(XsPayqz!yRo?lnA>dOO`%1!cPrxNSP?4huw^|-($$nEj& zRqqzUDxK_=Rj75N^79g9)mK1tC~7ZzN;5YJ&SC-RQr2mMq*&6( zaO_CD_TMY=83hY(ZY`%p3a7D->fsf*aEH| z+bE8+*t)mvwC;^JsK;i8U@WtWN;c;{^xz+<&6i+h?IC+@-tT_lr`1P0nPF@Cp631pI^5(=WXOPUN`CD^P zu=vPJq{JYZLfO5*(7a2p<@-4y*^WXEFN3^@*!)bxm*iZd`Y{L@me|^3#u2zh7Bei- zN1Xp-7za0aGvf#KZ>1^>;-qK2AR`5DUnWB0bGTF~fA6vm`5neYA-EWdE%ov`(w}vE z{q;f-p~p&>xP+^>hIx$Kc)Q+nPZY?=eikpJA4ljd^gm|R$V3jnHHGa8zL?r%416?Z zoo`Qit>y?IgSEVW>w}c)3_qNGXmvNwl>k|=1f>=?FLRxx+9epmDZDQJY*)Wh9sjX8 zqp#c0hFcyVx>TUzUmJ!G`)6AerbdvGPp3aT*Q~_+Y^eZMU%P)v`a(~k<=$FBMAE4> zj4rgv%DrtB&7|)*4rLQISg{fa?J_4+#O>o-hT6@vAhNCeA*1^+lz48bDri~;nvqr2AY~47<4a1#l zyF6?B`r08+W+VBoEwVjwCeiwmPO1{{bi`bszN@qnTWfj<7lj;I%+Wii++8OegIm!q z9C5J3%d{&~8+m_;SQ8vEPb%zWK&nL7C~Ool-e*b>vU)qYXe+>8P{8&n)^P? zh+4t+t+GrEmzyRdnYp>{%2HR`F_c|mhA_Na_?$In z44KD|+Gf>>3{r8=r7EdMrc@tt41i3N%B}xWI;BHWn?Bv7*w&icI|h0Dpom1;Dtf^Z z*^tuZILJ})%8i4U-DU+oz~7Iar(6O%W=Lx9mOP7v)HF}``f=%_>p<;i-!N>TzsY;i z1&Zlog-P((@;Hg8XdT337zPOqi@p&Qf%d5*l3Sr=bD5I8oXv&+f-0ugiITh@J2)L# zPyX&chUX6C3=S5ree;&Wl}%xKBof#F^@LAj?PZa--s6x|>HODI)md-x`RlFRY+jGA z#&pU$^G<8%;qgJxDzn2UaE$Eg_Bc^9VM^xNJ-ZvG zVWQWEi==SrB+HF~GbUzurwq{Q)B2~vvCQHW+ES|rAo6MLWeHH@XFDRgaF2K}^%7f# zZD1(o$>9g?C|5gtmJe>>R+6mX^mXFL#&?2n9kC-7X=u<>L&QY}LwXE5E?@Z0jne=VmSEKMLUHvcIYOj7Hvo? zQd7TQnxzn_Qrx92*dGNS1k}a`2b8`hU4SR6_U5mDYg+dPt7|ELtJ`X50N~po`-hp~ z?BZ!->iiD}V?a&Yex3oq1jU@IT^6 zXPbw1!A9}4xJcf+@;Sm9PLJI_&O6Pb%ry9#=#LoFL6fOQd4HjEF2-048wqkCwG47^ z97;b~V|TQ5%h|M}V1*w{v+-vx1+|Hnq!rs^ za{w(wa-DEO)DJp>;PtH8$%&N8XgSK!%#HSk7*T$=zVz?WD3HY=1j#ro|3Z+3<6a4B zUlZ|KoeHhgLs$o0)ij!t_>-yiOzB$?WCDJK(Rdwtk8ST?`H`r9vNoBs`ErJSCl!me ztx6?tBSx$uPIOB>$eKN(nY1oR?Y(mUA;%%%bDQT-*ReDqa7AoWBZ@4@9YWi&`JJgs z9ckdR6bV9Y(Xep_1zy)8v~+vCjMMUKsRGpe+T(f|P(cg*9V{`Zo*)sPK!%crHaO zCoPy;P&3h>Ay5xrDt0u8tx@8d#HLLH zr86}7UYm|KHF+WMw&$7TW2$Yh>p@Pa+-dBk%JovZEk66Awphf8n#pi8IG91nmLFDH zLaF=QXu;Oze8>X#5%O_Yv$mA-=~)oMr^N!M2p^$a7^Y{1(}cX zBNz-R*J&_>Zf%XZNw{$k|7ryQUv<%Hyw&hl0s>$*i{n-PA%^j$Y2R*Z4+g9~lVsD@ zw$?3kZTJ!R!-kqbr1LMiTa64%;&%V*P#mkj(J-Rzge;shwP2dwU$Wxe zxP=1V6TUxWI@}YlI9J+^xOYNia!>Yooa#pq(vlqiX=naV z5PlcdzEodPMNA$!$g#m~-J+8&Eq5e_BlqvJfmLwrmzo|QF_pc@? z=4$tMQcu|E*Wa;BS+6BrW;cmrAx7`kQ&^b)KFXItg%5emP2(SU#bG=mgC{ifMm>t zQcYAd7yD14WGd#h{Xlv2t5WDwXcrE1(#KHqcD8jlF;R^{rFug%9k{>267IqP-2<^b3W z%kZWQPvbEEDamEa!3`G}xkEVx!^X&Y@|)5a!=ZG?ll=_FW)0->iYIIcTsEx@R4)+J z_%(}5sPUL%WwP&c)v6Xb_9f~5QdZ~ zEj}2&0i`j*VQr7hu&FM7@fjCLHmGR-ayu)cQgT{5Qr+H>6^_CUtMU8L3G2{SSr#V{wrR4aMNh6-{qy z^g@~=R(;9E3MbMEz1{j8Fy(e`L2@hzTA#_gl@PAu**VG>#nH8ug3AHLrIi+|hE>oF zGphqO;^J^+_YsG^^w_^f10XDtPawYejptTpxL(C5S55l@isW+a4dUyv3~ zh~a=fBSv}oBKMb4OV{$Iq*A~S%~UI~4a#b*DO}TbfFg2Hum$j<4W$~_8bKILe;T`k zVIgt$oGq2Sjx6~8ZQ~QOA9qK`KlDZ{a1`la+v+UwA-_twV$38ViD1lm)`Nx;#Tbef z1#~X-Qoxlmmqh=1>FO6_W|}7bnvJ0?5#Re9c*lV6_MGfC;o$gk;V^i*)_%!Euji)W z|HP_w?)GrHBdGr5NltzC|G*N+j|02PjRULK`4$(Ggb%m~$TCMWPbm0gdQ#++x%4Rc zJ~5#i)K6bd<_=p{G#NV^AI_N{p#M&+S7Rj?c7B()Em{7XuZ+L>>bvam&(ptfpsnw` z#)j;FHQ@_^M{bX+_)aaAC4rk=KbP%nC7*M@vq^xQq>&5?BGjBJ*Zp<@TtG9XL^AA_ z%yJtn6V!vOasKI6*Y5K%uA7I+o}x}k4PI=#QY;vqL2Ai}oq@j@udO>@3QCEbR2Kw4 zL0UDTANKWn;<_Gx6cSyLG_U|55?zdkIMj)#-?CG`$vG^l*N}wqU^C?*2ex~u%yn>r z8Mv#wSamC*jm*dbyZ{4pN=AF}@SE^t%gtxRX>^QO5-!kiOhy3URqh%qt*q+icP>Gq zJh7bB>dI=3(pu2!yc7i{pjInX;Q}S0z9+*v&l4sBEj z8PXn@&9K%N&t<+z&@HfpXeARELEKS@KKk)FljLnrwtOthZ)W zcjadv&N!{3usEcHkn|!{OjPuj*XboUKF?YAYJD8}Kq&rUWpQ5+KbW=onunSS>jzAPujr1UXsYltvcdaZq|&BEXlpI>aaD zsjYp#$Fq^O$E4%Fkhy#z8p`+t)wjZ4WcDkSUfMA-z)G>oaph|S51`#hYh?DYLI7a_ zyCb9{mncfJG@^@*hWwJV&L;UbiQT4=R%f7W3Cef6`{?s! zR*$ELYzdWRJwvt~fW=~lf%+olp1{BtXT3(IpCgL(Hvz~G1l4SK1F5J{S&X-=S*l6; zI2oZ_Ani(LFelMFFKaM42?-yn;yU+c_QtuQPCtz-3VJ30;V~Y)_7+Wo;Xk0F!0hIR zymx$SlP|RDw}m7GjR{CGHQ5$A=Bz0&F2ju+1DSPL0ZlT^GvD^&ZU=HHP64PB$($On zGpfGG^p%1S0wPJ%FoguGOJbvX-Y)O~^D!Edfar=m7dw*l z@iiRSye!koMHiYyDiQD*9m_7&XL=uijCxtDYvt*j`ryZ3T*QXDVEe!-jjucRSceD5 z;kpi8U!IL&=c-&6pAGVJ4LAD_`=f{gzlP2_ob7eq`GwehW}Uy4`hI3Ga*i-^`aUp~ zb~S4Tb?Z)~^K0y2Jck7h?)Wt1*I2OYE!1%bTo!@q{?=oQITD@X3`Fbgw7IfKPE%Ug z((e;ui`Xg$F_E4ic*nR{^eM`%Oh0gRGWm(8&sG)pTY?miDi78=OI^JV+o~F7aN9a( zU^*yXttVIf8Y?bpJTr4Y3nlpJj{RA*J~f@I(cEln4)R^Zsx~uu?OuL4oachML9CZ{ z7p)N<(HK_ffoU1UVq;rS>`+|R{QPO>84zY|!@W}qlFr*yA*Oz6z!iC$l zC9I2JS=1QJhugaYbtX2U{a5;7wQ=aDo`o~*+LpDE&iI2j1d!^aYc0DRhzUXfTS<#` z$*J%2O~Rz7o=Nh|oB-R#EnwxZPSlYwn|wY1dw8iEb7e~5X{w8>{=%Ic$GU{Ca{bTD zs-$_S9k=dOx=;(FlgIlUj$4&nNyDX`>r>lbyn&J zmv=(B16kk;CutB0EyV=W5U!u>09Shjq^*vmsGEC~s%F%9zFDqmAE|dV^@p=1y~Q2! zt*aY>172D5jvp6n|B65b>6k)qXXf=xe9m@K}^qkyBUFa;8 zlHY@G*m-0b@Jii;!pl@Ms?l2mclb3Bg;JLfl8SGnd+`9Pw%Jb2M)Zl zr-M;m4g~TAqAdPNNIU++z;$YVHw)P6bh{v==*iM2_9fj68Tgut7Gvu{p@*P0gBp>Z zK;$Kll4L7OZ$M^zT(GsBR}+ViJj8z5tC@>y@ni{ zJTJ$-hEu1yEbXNo?>_LCx4J}42)IgYBRd9r44T8Ui3{&!t{J}(Of8?eQ=5&(?5#+yo>URH`I;sTafGc_3H8TVI_X`~9M% z=o!_Qa(F4;O)gYaM71S~q@WpQ&@FL{>EUwE2u*g7`HG}>trvdvOukH8+WU9%kRtXy z%y1v90xNA-olk=$NP(o1(AGlWs9STUX8sb;Q@3G-8u7MD6uME^ih!T@ok>V$)FBr9 zewjw0#X$LVBVW&nAwC6Rd%5O99WZ63*=V#LD}^e9jo9=MiEUp(7SI0Q;_H8|^vLUQ z{hj-r2(6O+pXts&J(7Q=J6g8(yBvt0)M@?#ATB4(s>)?cR=<;vZJS!=eAyyFx?In5 zY}4lS{f&=8JDMFpp}jxC$a`;inElLn_Ob=^A)E^*^34V*z2e#cfsZ%q8T+euE(|4% zv*wI2DGN+Y=7BN1n4&ZVdZi;tk(umRu;QCuKXPP+u^L7~pr1uZRAplLlC9FFk(@J3 z9d-sopkg$R_hw6gx;g_763vUdnfuGI9dBaAuKOC|A(ovBBOEso=O_vTExV`(wJ?|o z(R@O5xLHql)sM+{_}Hd}$q%ES6~oHTjd(Cx>65Gx{bLJNeDb0@=V)5k@o0FYx)1(h z%pI>K3%w2w3v(m93Z@2Z6*MmPb?GfK6NF6_X>9~PmQ=RN<)w&bz%<_9EPAjEQ4mDN z6U)KA$Dq_U{a}uP%m*S09Hk-Rgy{}2WoMZ#-QdaRo&Xu5@)sBlg{;Co7gBaEf`MpH zk#S$NYYVGd*K1WyDbNV3&4m13N)q09>hmF)YD5U;nrqVsI%!(gjX%-P+)dqXX;%f! z(KN}J3zs|omtegmF#H0%>wK|C*Smqi;!kEIAqvy)?d)y*t09R{dv(mRWhiWBrEu+V zG}h?Z&WH6-&Ya7g_^uTX6!xRy{z+WI&OSNY@r}^j<|7h^u`*b7MEevLHaVhPQ2mTK zGoeOLB50yJL}CLX<1%t!BH-NvnqCXKMQL5LtzZRsc?K=2@r~DfFhx}2&vt+tcQ=NA zSI$+nD;2cFYt$+p4^H3Qr>?r@vUcBh6pxD=xkP!@2JNFf3C26D;! z(H>YW{j|9|4ljY-s18&Qstq>=r77qlP@jCZig+vK_E(|_e!ESzfW~iY^uBT0gcAiaJp*L(jsG_eNu)1nuJ#&Diu4V( zC1IX#UfI`P@>eHqZk3>t0aiZ1GePDUcY>8hL$A*eFlso9VxP{_q(o#a@e83Iy zZ;%rmVPv_ANS{QV1#v35HLfzPEaXd)wLZ!8>zY*fIs7>);zgC>YFBeAjOFs3)K6~m z6~*RU?*)y16jfoxFR6dl@@?W>PXECF#%s9{;8;nquwp){^tE?i*7E%ouzE4yb^5bY zW$)ZJfL*z76M7V?(Go8ruVe}4UW#8L87-%x$`V2stQNS7*h22nO}CI(r1|)dgxv3f z#TD)KE8Iw4yxXPaey}XCkJhI8mEVO=9ZgEC3&?+7#hu4C>*~Sa-05_db78&cXIwGpA{tw+VwFYiq;^%034ACs)+iE&!WJ{F=TCw zMjr{*emi*QC|C#+BKLB?oprzXlhDtqOJuE+;WSCWi>*CxTmKEKt>AcCh6dqdg~s(v zA{1rHDN>>E*xS}#p{1|y*j^5T;SK#T*v1ca>l;E!$_d<7c3Ok!Kb9DkvJ=ou!$4Zi z+CgeEh_tdwGq-69DVHbaYm|O0um+Fl3(L6)*J3Q36l;8mXvUZwlZ&R_2v$Z!UCFja zSMkr3x0-?*qsg1<|H=xB(4Kx9od5M#DNoVScV1CGrdtdzE?*v_J7e3kear6=`ZV%! zX{7%#KFei)>#B+C-@0?H;)|H^-)i@q`TwNWd?G5K$4rKrC@;7{+YTtII zXAt88@a7;Cvl=>PNjT;=2m8Js+tD_jCY*sQt6v{l_~6+BVKPaXqqLq1Hj;LdRhRi% z8XeLjjMT_kaIz()+2B(|SmY~47JjcBbza4a4k?2XGq4DgtaKCl;{IQ2*%pYj zNPF`*qRRjxO~#0@!=yW(89Ve@Np8Kl~v-r=_PNJB{HMd45z&)i!HU$ zVqrkWUJH8#7ErR$K;3)`_Yf_S@I2dEVN!w3Pbvp9->h;ev2mIqM+r^vHN~@hv0&yt z#_<3Z31;|)zwc7#Vp}@HbC`ck<{p=SM04p0{IrZKf&Iiqd0%M3!|U_ z*Czz9M0jljo9fH##r^cL_>nI?P-|I06J)iGVZJCmva^9?Edru+U8eEJXH-=-T^|xs5hU35xydstyzslS6}RrvX``zMW5>O&hkHSB-B*3j@%%S zO{1_~Q#Uvc1{R;plQey3oH1@#3`%f{b@Pa5N)%K>BZe#$B;6Pc(#NppQ48q5x-2+d z`Mkd9SVB-~06H~P4QU+RxsO-JtjC(fi9YiEpxs?{wmh6=z10(4Y%H$DBSipl3EWd_K&GAE} zKguwOYkE8ZAtX=9XN+0csV)AEh?$T9=?M5#z-er9hoX|A2tDiu@fnuEC2EPN5|*;q z0{{tOun=I8+>{fJrwnQc2j@j3y{#!)FmTwyjyr_xZ%VzW+NQoIPXJOveoaC!M1fM( z(|l3^|D*`oliuB-+zl}0-ASPrS%*a{$xOvgi)X(bMb?@uJCyW3xUb7-pNXS^xG)n5XLFu65bV zhjw(4wsm!X=HI*2+-JA4VU`c^ShyNY^gD$fdo@;l_Z&$HTwZLnr{kIUz9SDe40oLW zN>2l~9ban?X1a+E_-XwDBJV16C!ZDMdG^r0#O%ct!Zgi??xve%`9tv{>A>X`rD89h zx5AwfzA}1LwC3#1+?f0Pi&7Sd(>#)Ek!k>_e9;eLf+R~M7%Sr>%iG|v3p9h0+I5)j zb;{s}lx^@WMDU7W1}EM`kltB^)WgTlxegP?Sh{KLJTyFAS6@vQB71MwZrz#_mmRJn ze4#FwiCx8>OZ@9DsP#4)2f%vjt}kmK6}ZjO zYdvk(eQykCj5MK7p&!?4LAyr~QV6xu8$ZE=5Ja2sq^ci$2;;R72=C zh$)ne5_rIZ%sh#AxSG`fs%1Xraa1)>{1aOi@#SxAr8<{O*1yqeODf^cW@w{dN{?xz zb=R9^xifO62P$W8)iu6W&JMNx##zINt|LDXzx_8zpooC}7LK>vkEzd1$EnY~N`3>0 zC^z)y(>^95id$O4%x)tNF>!-pbwlD^r>JrkVqfw^;7Em^(_SH0*@cwbS$Re43Xx!a z()=t<*?2_18bg$im`3dw3W^`Wq$FN5MA(V6=3p@adZd`9;aHqLpyY?(1I*VFenrru zPv9V;I{OC%>l+9=z0N|&>5u4U5` z0o?ItSdOOa$1-;JYiJ8wA_seFG&t~?MmE3WSaL=R7@4NxGEK7yjv-PWL5Y@_dHLu}6__AH9`y zOhvp)9(4KSqI_T}JJ<&^yRvB%sw>}oIpzJ_*SjHeoyX5!67Ke0ywtYb$kb-IuU49| zK?N~PbUvGVPJ;gQ*h3en8@M$@PK5+2=Y7~E`}_<~5kujb#&IQPl@ zQLWSz&lU?H(M-CbJWN3EPU!j|6-zMX4!q}?Fj2FQ`$1%mj=TtSVi;E1Xc>VY-UvJ& zppP)}wd)RDFX&6R$%FE)8x-ZWG85E0rt`b&5*D7Q;UjVC`2UlB{Z|6>AN~3t{rVsM z`XBxJ|9}1ZPd@vPe*N$N?r6h%pI`glsFuS2Z}ltlzx1o7^BM=T-&Xktf{xl|v&aqE z?Js^Yf@=&t>+A5R+<8un->;tIszUy2zA4iMWGNQvMMVNVeIfaPXOr+w^vx zc{_%(`Ff0#G{aLYx?Lv8=og8vYri=d*Q(-D2?ezu9z|PwT3-jpTVGz72z%5b$EKl1 zl|YGwctgY=QFB(yS4%f&Q;N1JXmr~vl_Z>n4$_AoAqCn5dFH-rEFXO2h0?&sFp&Ec zvs=UJprc+Iu>y`UO@RUq&G?Ci%!r|f-@h^KWY1%9dn zW(f9MZuzYjs5y@N_nxmmh;Y0Sv*qK!{RNSXV!W85%dFngMbAx_*POl@Cb)BOGD3GI z#VkXAy-q)ANL`$M)NsMx%;7(F6jLzC+c*bAP&p|S(_gk!wt zhf*#0Uw9>oQF7gO(o(FGhhZ=xjU@#nVP=UKWLFf$))tI-i;Ttlq`E14s=rFQh>!HW z4ektCuP83AvKZ4T@l*%h(TREi6^t#!C#J~1h&=;(p_jQBvbc0LPPGY^GJ z#Lcg!S``XOw~un1AeF>}Vm> zQe;Mi?7)&A>VZm4JHV#RIEu|#P4fZchxSaXebDf1qXakHjib1*lE)dCNqxkP1qa@4 z%tM&P8eaK1h~)Aq-+c9CmfX!MW$(gnCH023=uoTw)nA1 z8(9JY$Y6+pewH@t6(>n#nxBI3BFi6>ibY5nwvBmajN_dL zr4msl)WAPE!cL<1_PA26U*tLV%s0Yi&4Y4Z`SQ~cI~kaF6DZ$p7I!WYKp8L)qD4R9 zrSwYZzokDE2ngsst(vktSAD zUG;H>n!w_CKxhz1R}&FqgfKu=e{vm^rI=wELN++; z)$EYl?ohC14fQ;MPj(kbTT9g-#%AxZEee%P?NA*EyNOh+fa>`i;=;o`vKE@P~ zg3R+>RAt_o(+F60O^qk%H90_S)oCWbKxqp|FxU zV=WtdBXZ=Si2Ab%J&8kH+7X*Qghvy7wD#1H%6yeQpSRI5oaD)LY#Jbnb?(*qJK4mM z5AV&qM?*0BOyJO?q1&9M2Q-2A<3Q{gf`pllgJ9T2xcW2D?4C76T;hlAM7(+2_dPs< z^!KWV?8rg-g2LLn&+`VKXHXlwuS3_y^tihVp@-I`A+6GCY(m$iF+wiao4zc)gb8V^ zG2|9-mRC7gW2f0(41@#guhrW6m$0KEfBCdpU7)LT);2k)HuLnT9&z?*i&vXzOW*io zsLQu$=i@o3imVux7}NLX^X{F7P#fHS-wJNa_NO%YuW>MlkoH`pUr}nd#)w?;K}y55 z6TQs_i;OlkXrS(KYClViIru86)%z?|)uJ<-F^4aRC+&1v%gj8_c>7Ub~dEHK6@2~674zOF+qQA9g=NW?> z&eCG7Gi>X%(_gC%vvW-rZ+lsD1kEKX0Q0Oo6-_i(jfB6s=W8pQU2HRzbU9rwbVKG7`)zk80E4f+Yk9LwIE z@7p-XA{zTU5`>4;_(Kv*9uLus})Cbmc7M<1(6wphK)v=KugtUKe#%f-K z1RkB`3f|IvMYVzTReW8T&R`>D{!KUiOU-P7@U1L2(Vc;^7BaDLd1BzLu##NjD`Q^; z1*(T8+pK8Z1#85B2A$z7=l38h_(BT#7EaP;$qnncl~u_jK<~Gx%x>ueF^i$-e_7tHX42E_&4D7|#;~3|=*wH=kZVw+RA~?Wx z;%Kek?cdu�Xwn*9J;NZ9DH9i?f?R4dz`hD_^7;E7jy{UtvAH%EdIN-z`879fkL@ko`co_wD{}) zPkUz>7UlM}aT*B~L_l%`NkKZKLnH)bXzA`4RANX8=@=TM8w3QDl13Wok`f1`q$PwA zM);5DIdJCab>6Sutf5)h7LAnE-(8aFWSV0#ohPP88*Pho|AGn z<74sq{!L1%{km(!56g2f0Xk|~Qg$2jhFnF)huKZPEN1*iE&In}@Q)VoM+^9)1^m$h z{{L$Mr_ZxLTEO30fBvnp4B0;;24rgrl4H zmS3aaP=oVu>$U9r>?VV2QzG6LEWui|6!JRb)#)xwthr@9_JW&a2^Hb2tvQ-S=Grxq+{SrWr@I-PB1%H+{6BK!$AGNB=SP0o}zHUZHz8tVo`GYW(F_ zqffhj!&^j7coAJ5KXdbUhsTf1obU5E%}ssO0B#Ehe&Ckx7VuH^3`0=R3>z(&*wcH^ z?1_Voyy{)(2j2_0S^P>gIA6U0rh0mv61q$dTg3so=GVK(H4m!B9E5ExY}4D)q6;y*s2Apydo?*i+H^&DvcgLD8fP9~#oKHFBl*IvSN^!A z_)O45V@;b2b#9kFI_xrk<)7wN1X<4ay3$dINimHW1>po`<`zi2?R*L_V~b%e7@%%H z5e@-Se?1Z2$q#gMcXmbe-2Z#Wn>WRKpJ7BQAc#Z(eoT{}TSR^&;`HKlpU96X68YvH z!V4+@kp_Y#`;m1CDZUxM>+9;{*cVnRE+(6{C=eX&=aIe)m4R@#o_LBq7WT|75RIY- zRvFe(Uo}@U=_>b!^sKcKF+FF4u&GGnvEZfz9M#QJNNeiI#sj5z?~&lizgX0=*~VjF zq$2L!;38zyobD=T>o=GQI~+WKBt79aoZuXDt!Q4}Mp=CoZ{BE>Kl|)y-jwUTq&#L= zxOHz@;kS>k8-a9Qr8aHSkA+PtXRA{aONcSPRZqhMkEB_2LIFh|8Xm&1ew7Zww{A2e z|CNqY+3{yOURt*yJP;2gp>HffDW*)hDUa`DI@q{-qRcS`3rusx3$TF05>VHp%YG82dIu;S%2&7%`5^0? z9;gY+U4Q)}AKQ+2`ku-poyvE{D>9h0sdZC$JanPX0~tAqx33LE@vzc4tO5WLq&s<| zk-coeg|STJODe;7SrgBEqXLN9-N*#6RaX-k6*|03tJKoqlZuQKM zt89l5^MlrZy{NAAkAC$Op|I8qqM$JT_;+zYH10W?JyJDubUbYlL%QZ};?k%|0Kh@ODDWqAN!PABm?z@?z&7+NvTDMgn~9YCu`%HNR1lH-^${^Mg9TuX z`I;to(M^Hnv?ERz=TtTAEd01nXt|cpNLF06WoBrJpG%hx7BSuOOKXABV$yXn;x(Z* zhCpcdbMhWuX}KngF#LLhcy>dr75$bRjdImQInmP zwnQHvoraGFb7*pn>fS9&Rv~?{UY$!1$nPpXSF;>>=|Sl5{9~1Z4sd8?LSv9u{KDPo zK}qhbs8*REfz%Ac13w^)`6f$JrnU5Q6^-zF4OJRy??PNSa_Lps44|XoPGd}?W119; zl};jxYu1yK${seFu){`1@1c+pzHj?wX@z+s{C2rplg1zvS;9IEc{PRn5q=@xQAvOO zZYek5b>cY8ac9r2tO=s~vb^I)-{kDHp}V?bId0D}LW~0#p4txK-Ws>kU>W_gFQk#Y zR+Q)BRccY*AX1KgLOhM-I=vdajybv{JW!?0fVbK>IfaUyY5zdFE^F)s2!u_WFwTxm!|a66){*K-(YN@VY`WWO}und(C z3XoKyD}YJE(0wfN38s^5$TA^YgSN?Tt z4IK<+lnqa^N~SJ*ok-TPBbryZa|cgLwMy{{uR1kMWYn)!`-4KSM@|)J;QDh1-ZM*Ny^0qpjZsKtSEk9 ziXAturCqu3HFBrS(rBUP7!MCNv-4BQ&J}cG*DL_HVM>v|{w<`ntDXhmY>XF^t zgEE2TXu2O&hDMPc-NsE*=JG3>coYMtFDI@&Zlta1Yox-$QAtrt#GguG&X_zgyO{`5vlvOWJf|h~c zn1V%k%g}>ob|tc@q)97d*~2wc3i%m(pOsl{zUWF9KAQ+767*Z1k>W4&T{j|T1xTZ+ z+=Q?Wu1dR^)zri)wy%8grnZZ%gl7uhw6%6?xS5aBzk|(#z5;N5EHY<8RrtkSr$s40 zq`#z0ued01FjSm49wHm1B7l2WPASwq%b(u%0LVsr<1KIQ1P^XafU%T`c7QDoQUBX} zJaako>YqLch?cNV>xKt@i26hk)^uZt_d&XV2sIEIu=4DF=Gs0x<=yd1m1YqN)3uYF zF05l0TS%(n0$1Ldeo%k;N1%ofeNEx*3`m?)j zrK{dw_HsV5If3=Nl(KJT9vgH9Q=@Na)AF$nI9=~Kyq1pH7$MYQApZ3Tr#J&HjaIFE zOk>X@0i_=NpfCu^g7d_-A0Fd+kX&DSg0*NtbQ`jxMD)7Hk@8C0j+mhv+6g%f%b|E{ zs~N=jnJiZ9vav!F2Aog4xU|m^gSG>NDt4K2_k;wdi*`Z;OU2N~n6H6^FF4J*T!G0n zH(^A4nUS6|M@#oE=?y0IB!(@alq=UMoWO#-{I=(__q_(-I3DD+Ak@wcUT>)4>=vql zm$6h+`yT4jzNq10cThi=uuAv1t)PJ=Y1P0yN_35#r+i^VXtNnvij$0VQo2I%%sp=jpEHm}pAY!SCLfVeG&ta%CM zyvrQZb-3_A)JC*JtoZ?HcxbcTYN ztG^|o!htW?$+FteiIn7h5i!;F&ZUYxe0Jg0J4)2#RF*xhek2?3Tg$axM|<_Ph;5GX z1V<^kJf7Jg9G7CO<3m`09Jf%cKRr&0<6fC8=9)*es9P`0nf7<vs*>>kB53SpIZLu5>ndcSq%%DQ*C(9D~4D>noa0`6X1PU%Xu+EC}P z2Je$Ct1a?h=&zle7fbGy*iKhGoP{YRq*I>AagEH2$rOxrWWE{YB2 zx}Utb>P(PuuPWua|H7hf(R_uMj=9b4s#U7@!;Vz*Y1GAc6Nmt1SS*M+%&tW zZM$u~VDY_2G$GsdfR1?%z-35B{hm=D9^@T(aDhx5Z*9K{zE!Y4p}!aPU_sPaTG)E6 z#e?#*2M+*y_oXPLSr`rAg%NLv)>Lx*4^@O;mWRqzqx$yo zUE!=}3dZ3khg!S)%uTV`J^Z}2!I#LL_{qe5;M=A^b+`q#GB`a$vBcE3MZ#M+Qej)y z{>om;EjaT|SZ?%)q@3&^A%0TsxF#nHjw*Rt#Z8H6%CKeGVFC>XOB*{m4nA8v-y|PZ zSxsG*TLn%s4R7ep0FLOlaeXORn^o@LYUdqf7oruU5m<{{)F-{@&5e(FA@bd<1Hnho z3(Q-+r56=*^AWYic(##l`}967o%K=d7?+m9Laec}mvitynA6wS)>(%&#V+kAxttbH ztui!L9OZJSTrayzRPqP9sDq0dbPC=%%9w?@zjZ6ZY>*J8Bq0vdV)$j#(@S&9445gsKUgS_aFnBTR zDkcVn4e5Rycw$D+ix@K+r*fN9oIb+)qqKpCN-`yp=_7AU8H{2n`B)8=EW1qZ*Mqyf$?uz{MBYRItwvT@>(($EsuN z%L8EXhxz3K#;=l+cisDno-;+1YGyDb?0C;eou^YaL(=dMMT^b#GZk_(QVF zRjV<-+(bObCty3xESMbuR?59S1|g!Lmsr!IVUJCIScjHV1dv zWzb2NJ7^5ijOHjGE_b0HTk|oD2(|SHYN-@iTW0}_1P&#(VX>5$Q#s?M|}%3t+M ztG|VZY#rF9(}J&<_t!)(j*5V|j%ZA0lF9-P$99`IgpcRM~aWfozO^?P%8WDc@N_!)@^;j;BR$8cl{vNz@# z#fapTg6x#}F94Fe*BM}z>J)J1^@ThX*_!BVs6Ne)p~yx>$OL5LoHGI%LS;qd;BS%j zyu6A`LAD$@qg+CC?ec>*+-%AUDpP5qc4=Vdw7Qtc?yC zf!s@WhJYiyRL&v3+o_x?ipYfDhtVK%o^Tq*FA2X7BTVu-L5MIHdq_x%5R{15&Elc}0={R}80J2LNZQo69zc|=%X@H#o2abfs*HsGZ$ z)(dDswl`~_0YRBSb@Wox(=T5$HI^+dRnsJ>eHc+klA=XusuBP{R3TFX!#W@FsAQ0S zju`a^B_PC8{+u_@&1v*df@S4zYDC23{AEkg^cz9ZM5tK6prl5694EwtpCyuS4Zy5R z!+Q3o1o*s)*0I2P71wD)yj|Z1h%Gt^J{A~BD=k!m4&t7z5T3P^Mr#rt9yB~cS=1j~It{n>KUoY@~E1+Hd|ptrdglbJ{MRz>5?+eOVi zqh7|MTM(l-yl{i{Y&xTR_qbq&oWCSSt(#qpZh&;QlzaQcy7amh&OMEkSR9V9XaWu@ z2m9Y@q@Cf@r+JLpZ{yD9g-Sv~rPc6$uzZi7;>uJX5zl+N4=H9`b-16g{_qT3#$}XI zV@3C}cf0dtx(Z)(fy1u7u=yK_*k*izHuik`^4AwIfc*dF40wXXiw3=V0vky*TPSncLd@wKQI) zZrNlqp!nU8U*X2tl1onNilZp9T%?gXD=s#|?*=U7VPUVyW;m^P++axOm61IHw)Q{0 zd|9O*3_aEvO#4f!K;;m5u?WB&wNXfZW)+NtPRhg;GVg)v2P~jumkO>-)aar;cBUvR zREL8pfp6NekW;RkYtQh=9dT(OI+I$A3pAtF6JeFytx=P>gFd6)zmJhTQ7JkYT^*TT z4!LL^Kd2tQLG`!Dk{HY2S*R_S->do#Z`4LSQ&KwQWqu?Ua3X6_=LM$7HyaGu7BDCG zL~s?;t7g@U$Hxwsr-9f*Tpn&#`hgJJw%vXje)?>3hVT0~?P$U~v)Rh}1Pyv|2M+4r z+$lxulSobuGD&Kgl~-zzn>CuS!^~)aZYA(6z(16-y$+r_2u!Yf&|aPT(Bg_trsr*X zZ!)jJsI2<$VL4F|-6(<(LU@MU55@s=!XKL7FN*{fFk329v>i~t7_@SlJhx^Cn1Sc- zhE+auuh2d_qCs)*4gPV@pT|+B=!~cC8z-X1v?MbbICCY-2KG05UES}QwJ6|xRTg^T zz`3?Xbxmi@Fp?b$_DfKWtAG}$_P}`t3w1r#pZmj;!H|&=B*qJiGC_X&;)Ec|3l?#N z{N!cFF!URuw9o)h1eiZOmw7GL4+a&Q;u`S92Z_zsA2BZ908j?puSB0=d(M;!O@1Eu zhtsgstMm|11}wnPoKt7fjB>{GqhX}_jJ}npItGWQddcZb>?N7zi@>hzK7pfv^CBU?|a(c(AOHTRob&I#XtG~RA~=Lr;G0Dwy{007i~8?U34xskCW{ofbHzpS@W zdCX>m0ig^1ln;Ts30$OtbfOeVxLF0|)PR}N!-Rwri6|aKf{Qic(=!wWl}$#zC{%}e z(JtlLWUnJ~V78Dax%{BAcTe39(U`@S(?xUFb|sl@MBKa|Yu-^5+N%gkH>=0zQIH$Q~{&}YEa#FEI~GK!)v*1l=8lYqJ^y0mrewAUHsGQ zy$`X%3V#=afstRm-i|gq)7!+;)9%-v4;Sv(er3zPhw{ev=5 zeJ_UHaQkk!!Q0$gp*jfF4z^8_)bvvgPp%A=QA1+7R}#K;>U5I{G8X=$VlYz z!<8XNE;Q*pfAs-j6GVar?&iqYz>e!Z)_CDb~c+tzxJ z)IBqlqxI0|Log$_GxR?o83*27tpj5%>CI7Ejp9PSy|>|irO>krBVp6-%CA3&Hav%7 z^C2*kn_Lh~f4+h$EJ=K29)5lIlw!7ES20^da+k`d@!EJKpllNg*ij1K_Ij4ttgE08 zk1kEBZZnMWb#%3{o#TfLq$1c-becKJwxC=>j}5@={;CQ}V!>|xcx5Xh2KZt|b&=0X z(`hhAy&R);Qa?6t%u3b4Buh@MyqoN(oKIJq+9y#@xt}oZWQC^fKRgo*yfcQj=Av*j z#lK~+!rY00H>d8t^ae^nb1d|Bsde{En2qU-+MWR3-|@4lp2yJd1Dk zW$@T5<_VU{vO$zVlYs02kfoEL#aO#b6Sj<4#Sc zCZJ$s%&U$w18ql)RB-8`6qOYl4kDZ;+_uDww zzHNly`}&tb{hQ1GvaA1(&VO4})J&Jf_n!p6<(YLwXi=-@3PPYUrUVuG70264m~E|~ ziNx79Xp0}s=rro4+rzh_eLX?*Nzo81AViIgfMVsu8-?X#qkBV+pvAzRWk>*v&8RiG zk>4>NRgCxh5IM3OWSJp3VOp{-+e{#ZQK2-E@EBBz_P!KpT^C2fn|Vs%$P{>T8l`I? z&T}Q8)jC|K?tsBfDtE3LI`~d5Xn&3Cb(prgxIRsc3aiNL`X)s~otQse_G+8upTC~j z=A<3rJMX~6`d8}VzkI!nzN3?|!@t+2e+~X#p)NJ{Yz|rxKXvnN2uk^&t3)D_C=9a$ zjWu1N51#_0t^tk0o0motsOGwj;Gr)Y9%$D`*2vG|3amK7yQZC$*!}f;3ql6=?7GwU z;-22{uT#?Nj#aYJUV4RZtQL0NwMfi)@zZ*?g3y?vHH6)fj76rwk9lgQ@aaBZQ=g4{ zrW0}tHEzcNFx|Ie!HxyP>US=deh1JOzG^Gn;k=rNG(~}Qs^04;iu43t8ZQqtUp=KL zWMq1HIZysEV3jiDrQ2UhI4M9>{7r+D=i4Pd(Vnb|M_g6u25Yc*iknQQ=l$C`W%R^p z+v{uGR5WALKiLW!P;5~x;f10i$~g&k@(d@vEAp9Vs#4RzPJ3H9YeKdAvyQ4}qC#@& z*4|siUmC$2%e@igO%kwNsG)4ds|u?NeBi{I>3nCZyx1$i9cC6mzB6@)N8-S>KMdQT zvv@dCH)l5*J(0ZC^9rPEy2wE#+95VIaN}sRi0EKg1#QSn!3gq?q#?)bSv^{nO9d5f znr{#x+$jl(Dg2At?kA1!;(_0S?`-a}p>uk>LR1$3t0 zbaW}}jvC+~m56iKR308z z>kzaQ&hF}iElu(002za=eRczL0Mxlh{Rq#bt5V{g=G`SqEX`=XNH)g|cG|&(2Z}*w zbho1=VeJV5L=iaBWfzybSdSCsXnc1D=A*;Cm2NaB@^e_KtF_HElD|X~>*=oph}u%K zl-z*c}ju=s+YCL=|!sf^Jx;wqE41=SEAJihbW{DG=)&Wk$StNNW!r@MA~efaCgLaBDtEoj+T#s3hX$Ln<0lCRmgc?jKM` zkqA5p&QTGksZ}YaxG}a2Q-11JYhm54n;j9 z$UKEd0XDLuWD(h%4l6>;x}%DmZE|WuRkkKuf~AQ_rlT+~Vpu)pbln;U>GpV5(1^V; zZ;WPVXwu<>v0ms0iJLTUW|bU2M7Yz~fKzw*ANmTgh)@BmMJdK{wtQaAIXBk<$e(L2H1q_-6d7W0gPx-_ z8;-!SZ8~9}_>TiHS?cbmd}<1yB@2u@C>=B5?gm`a$xv?rIRwJ1nsBepr@URYU)_Dj z&3!Jg?REzT798FP4iCaYaGuo{Yl|(jZu{!f7_ybb`vaH6xzXu2F?G0|UZYFuK&+lr z=gQF!o!QGGPkp7H_nKE_!v@k3R`fh7CKX79r~)+{VB z6*=5S>bNdf=)XQUzE3Z3ZxtSmsWw$B6)7=W1b#^RgFw{$B#oo1&z1V8iqu7LgoS>v zV$;IIHsPZOtDyV#b(&~B_vJK-&MM(nxZO}hp`0klmrQCS63B&`*2cSM)T8VbJ~5Jp zoMQ6PkRVT8fvOJBRcAO-SSidj=Ccv|X(vGJPKCw0DfN5y8W9VM;!=dP!ObY^ikm4w zV~+8~FSHm!ywZlMMtm$m%}ZKlf+?+0*OAG8;><`mla9v`5MvoeNO=ckbrs9u!zKCO z+{>aGQq)kNz}*x=)lfme-RwivitB(oWkc1B3xPX}1}gOUdZoBJx7pmb;A-0E*?TXX z-9Bt@>*>&_B;gru09I^pWBt)xshSqcX>T^4ayVf|W!dH)UK6KlWmHutlf_cq<+sWs z9o=7YFVs#o_yhc|?kti=1fQtKUYs%6u(iBUFL2H_HgMLAAr6;5=q|{TZ9INe#ENWd zwL8^27ar2q9NJQjnAp&^PZXyVC7i;X$N9fJAMsU6pLQ{L%=Qs`yXx|thFQ|SjnVX2 zekfjf#^(JLT_WX=$~0h~BFqj{s7kTp6c2CL7s>Xn0apFlJKfqeT`NgE+a7gS5Tb@n zMM}X9!My=5Y>^(}hA2A0oHzuAurH##q-FI~ab^L6B7&Eu+w)$L@3IM4f!r_ED%3rL zd*^)}hwlQuG^jbMEt-5+1K{8x8P@X?=ub?TR2s|vG@3p8Ea&{O>1Zxw+mH2dAv*iz zxJ0-^fErHOY(ihO!&8<+=kSJ*ESF}7Ob@7GrbAnJhwt&`6~8Q^JMGa1=AEhFU+;M0 zj(XS3eZstK1ZwS95}Im`;szAY&BXPHjFL`cIrIQ?7+$w|c^1Y=Wo7!t+1wb9`w*ga zu5ZrwhE)tRKAhv}#@MR6)Hvx3O6X)p=XSr!^X+C`H9QyOvGlL;dde=vki##V0$*_j z5{0DCe_G}7kh3;L=fXCAc`bax?|zSe0m?sT6~Qk}(>+d0c(lx4qNSeWqh7%`P2IFk z^$gH|LjO~S1`ol=;sXQ#Kp5%&kQ37S?zYZO|CST~8vHFMCVy($Y_Owz;OjjRn02d1 z5{W1XWDCMOGVo`B9k>8S2#*LpVuiaTqJg$or5`zwI!Z{?-J6lsz}*?nEgtQ4J>%fc z`FtFAQdL!5z7~|7u=*UWrc^eN(VsW8ee8AdZ#H`*FS~27Hf3#~*SGB8e7;UxJmt~f z7d{lMQ9v`Ce-dPGSQf7bu2s$~*Gs;s$xvIiwpg@NsoXYkWgcn2Le^F|9CN~Ds+cQm z9K2rhUSuwnj~dMzWlAnv0Gt`6Q;qiMqFeLjH$4kja;*VJse7}KI?o9jQ0s%DXqyI9A9~r@7S-R~oAy&TpP?JZC3)DBJqptQ&jIr=yN+Bu-N~L^D)3njS z=tQpxEK3ND;lGg3PTI_>qpGhwOi6Z)XILx_kws_55rh4BY|@T(7*{r3 zXAXgTp3+-6)l?tOk-|0Ig*Qak5UKuwr^g9mMwVa5>u7V!q1OU_&TVlA-Svu6-D{{} zdI6Txy#Uy7xumF_G#}MMYU3>KuA2D{+ta4?0h#!5(l+%_Js@g$$*?_O_83}L9w=g5 zo-ML`I^eJ>i#u!_@7<_uIMyk@ywRvu-!NGSz6?x&WtV3JU@OC+gjrJGAtFf@PsjEP zxcW`dc|409s#BbR%pjsa7@sh%B-DQ^OCr21tM&R0C`q>xGu$lQCLd7{Z=U(_w-bcS@ z-H4gj1mL^e7?_XWX0dF8O1R9Vy(+VJ`&PN$FaX7@Y~eFIw0_+(Tfwp$G~hO0I2h8% z4J`W+H}`~IDcxaE)fiazB4*yyvfLK7b_P@die2i#XSxqB<%U!N=8omRjY;Q@6rCB( zOOzKmE0&~du^Gc*$D>;;%LZu+ctvp2lTaXRh6;)FA`U=4bJr8>5&d~F$)?`8?UbEZ zGFk=R<8!idTokAy$M8$EIX<|o2S*JuO(GSxbRp`|!WfiX_HWS|h(UDP7?9Hd5 zqKs&eA>Xl1%D-)Iuk2Q|r(AfwQ!a-)g8`p4PrU>IrNmgjcqh41th%s7@{Zc-U7>jv{H$(wx@5e36J!lY1j)<0Ie{uqC1L|Uk^1MQJmFJvz`gxFc zi!jGSzjS%`=a+AZ`bg&a1J>R)G%5EXp&K-5n3CjNK;TMHei-7t&`vles!iNG{7B!A z(44LD7dtagox{0kp^WNgSB+`gi*VB0a$MH; z5-!$CX}&_WOyj1RDFj~VF)20(v+>0OL>)#fH&WWXS`*jS>)jhz(aOi5_?cy@7Y-0x z!Kd@Te0|}*K>vxIGi~Yjvfu2K|BlrDw@~aK*!knHWZ|URmdyq$N;iJ3D?+2CXo2tt zrZZGHQYfG~^5hvX0}`%fvT$^Pwx@_+_wp0FcS3w4N{hsDdm!+k==9>>YsG~vtn zW3zQ7EV9s4M;q*n)`o%hSVenB_Qp*$WSF&OTw{gV02gbEt5vOT?$`T5g%2z966n_N zrpBZgo3y#Mu7vtrj%oSopHiVr+YPcGnhtY{Wg+{^Wgs7UPA$;~Z8oQkjn|jv?_o3F9gmnr+X1UZo z6Cz6LxYkR9&a~JjWv4&WTouiK015fhVk~so+*h2Uevd!N2s#OIjC?GUP)uK>spm} ztz$p0;@Ucx;=|#R8jcJRkVh^TfIwIR9-TrMg-Qb0f3e>a0rB*4`=vHu zrwV1F_fnN{3OXPb*X&IBr#JPk^6+XjI@|zCCQOvMDH(qN=Lj-J2|$PqP-j=)j|e@G zBsKtIm{J1RjSY-{jk{?W+VsKI$qUHfl-}*dr3hwQS-!DFi?g!+b_>W~3A*tqlnPS#E9SYb8cG^1{ zdw~>DkURj?ywL)bL31!@3{dyI_8E!5_H{gA*f$oSNCMZo&Q)!Rnahu$bAO^ga2vBX>|T?#W7H-I7#a z#mmd=kb3@v;`eEOK}H}bHv9eodRe=Zdfb<$@r1W=49jYn0r5!^XXztUKtUl) z8^)1w0D>3;5{Y1mP;}BW2Zl5%E#qqH^7_8MrOxDjatJsxPCcBa7ua|ZyVgq|QN=LD z2^7(3yCeB01pyNH$0AJcqr3$l%finYUYCv?v@YDkOFwk7!V8_oJgmukkKG#32jRg? zDqLf1lsx4SLtph+VE+zzO2rmRSk_9YO+RO0d@cY-yn1^;;{8JZCm4~@^_g&dV~YQ~ zRPmo+#Pm0ee*RY&sTPRGE6V?x#cu&L$DX_bE=9tHUfQ8pmr+GIwX}|1Ajg!DXihB2 z?qKz|rHSASeVu;c#lw9)Yq%(BZq|ZPS)sG~GuTACji#;Mqz3)=NDT(Gfn~Iv;=a}7 zrN49A=i~BuFDLibkWWW{muW*x+a$`Bbp-86YwUZ>E>w3c!^?fwY3;?(mrT@SKdVKYaiv?qM-sR*I}@5s~Qstp>v|Rhrg`CH(BvGQn?JxTWTEj zY%P9QqBaND`6v3M*cwx)PDN>!SFH|xqP=mwQvq2@$IMj<+d)4E?t{9o4XuglyW-)_zKt_oA-TLcPx*tL4vd3%JICknbF-EqKKh zibBRpd`tF_cuDuug@lsgiCH~1enubf#Iqs}0mdI<*SK~$XVW{*>v8O>Pf=~uaCgm0uBNZ;sL16&t?|r^%-_u+$VCY?pYp>4y3m?k<|*UT z{IT#jo*#zqK@R1P+VXDDI`kv1qxVJC5iKc~G&-vD9y#y{&=W>tDmYDHI(8)bTAgf+ zldCf9x~Zh=V~VC{_0!PZ*A`6@v^T=2=Yq#%aYh8rLJ)dLMgS&+puDmN1dx!T`cJn| zO9iujjg{SErK|9Q(z7c;P~I!SeRF~z37l1A=;$S3D%NFC?RZ!B7=5Ri5I0PZ|jDr#`? zaAO&Tq+dID?CkXdkcF=SeX+Dz7e(}9FkvA3Q}>E`GJ0-Q68BEJk-_+9aUx(CF>2{J z14K9{ZyZA~-2mc~;=4XCb4rAeI!l&{8g`$qO;P@Bbz^0Iyu{SK%P)TS7+j2UX-_kH z3edjU?UdBE(MP=Y!kI5(Hs2KN3r^Z2p}sw2RIQ{UpWPS2Fd-;`(g*OcP+$bapdTyI zh@=mDpe+do%A2{FTBVCq1#hvuFPg&7hGk?-OHwK%ZI1>Eoozy`z6C*slR(b%j{;yz zE``hz{&EPw61#ni1Li6DVx`~ZTX6a;BAGB8gX#j8B_E*nr= z(cqqWOVuolANJZpW?Hh;jw$g(#(jOCIeF>%&bI&e76&XjXk%;1Jw}b1}u<~=9NQzLPFA^gw+V% zFPFX8_b?P^clR5f6Zs^au5K#}%Yh+z=PQ5MXRVEW>$zkVPanM=E@Oh)DuH9`^cC$1 z_)BWu)f#x;&oh-CzQrR2pQWneVz0&lA0NG%qRVGoQwr72vCyvSlPZtqOW{N*XX@!} z#Y6OQS0%1d=dy)E6-&AMA-emHqk1a0b<~TH76&IHw`?iYuiElg{io%d{VH@Xd7H`0 z8leQWu5nczrx8=%)s#A9Y!;v^p=6J`QmKk5Y!*9@IdzE@$)jOztXHMJw(F+MZ}6VV z1*QLXaU`lNU&Jd(Z)W02o1C=nV8lHcez;4y+!$eB zyBdR5almC2sp1ma#6-XARaZJ~0dwubX(oHpn84EF5qaMG*^3d;6@}QV z43EG@MldZ7fzdAz;*~-m&3C>Qca0u^E$u^XY9rtQJySv@%;qH3rsgyy9F?vMB`Hou z;hcm|@#vM-2jXUq29yAXc>6vHuCP18JiR~qYkQ;&faI0#TAgGH7bbvulBauMiBZ~#&TlVMPqimpU z6U#Rc+I5tt*MGe@Dn{RrJEF5D`KAv*(K-)RrWTwL&gR_1sf%gCL#9^7yUU(C$C;B| zsC^G^c}r_(@$gdxt@Ct!zWgO*h09GC-jiEf#lSW6kA7&SCUo2S8u416VN>VG-a(_( z^#Yww{yM4p`H06s2%a!MZLk185{O;|_ln#?THS;1VzvHKVWU)jtWVf;sM}YeTbFvL zIo*reI4Qky+bC=uc02?K;BP-{exL$oBLKwI5avjQjQJBjujKje$4}guPB{k*&2l-Q zL|SP~g(D+?1PY*XY`?eyfZ1=(5hDsvzOei1Cqezqxf9F2*p*k}eb&f-aqdZDde0+Bth0p_?S@SyAqdWs{Na$F z2WAYyFy-UG3HhdCM7+IkwPU^{TjI69(vG3{bEEtl(_&;hRokP>R@N3kR=0dF_=ch%Mwu;uM_CW6 zdeA+4R?&=Rd-v&P$UdLOq-YT0F*PygWLcn;>zj!CKMe)mPl?_L-{{QpckmcL1- zzG1T=ir`H@>r1eB65aY-jL5ZX9SJ0Br92HjOJZENS4Bel4Z6dY^_j6$CszrLdRne} zTy(H=bbFEMoa{A66BpqwZ&!uGWh(3SN~&k_+i0G;`5)B@mE0S-Ufl8g(v{7T<0Ru1 zKelqUO0EvK`eyjLs-D-mIilz)j7=${>bD}F$Rn#Oo=X;3b&5n5yUWfSm1mAsl!UWi z*Ry02$vD+kMR-M;r%FVUk`wiP8YbQ?cxU#ROZScAQ?%jdi`*9}zcxfvTZlEfpf$FN zssb1rYC0CRm#NmTJ2~6fIcj2LztVmVx2l(I*g53w$C|nuBrD|G{83R5lUY_RcAsA+ zm&rI+XnSocGkvr-B=h=-%ch!Q=BK}J#L0~@Il1Cs47Py1Ff***=*nmd<*m}8uYD

YgCRHA5l7+=Y=) zrr`LczepHjG0e_keQ5P_J9LdC-Q$CjGmA##(_M3>bE>;V_u}h7>l{VIy*PScBM83f zNBNe2uIX>`ii%3+G0qF`MHh3!^iky|c?yp$A7E!MFuQi0)jtkBMYqXCPGKYND8C}9 zA*_ZPiRj@JX9M8`%K~-=xqf$^ME2p~12mI+HFBY4gTy(#a ztpAo;&LLd!;RJIJWegx}$uGz;-^`W2-lD*==ohh43P&;=s4bu08eN_brd%%?oFP4o$<&eKo=rOeM|Nqw-J?0D=3FgW2os-sB1OjvY;MS6bI-U zNo`bJ^P;SFAH9HhcUA;R@Bj+Nn5`g4PnBZb$6km>_xU8xM|bh0mzVRF_mX}{VjEs&w|@&J43pvwqG)uunxwvuG``BD`M8+i`x zcQp7&VlfX#v&>zeRe^-E&uY4sENvgxH9vYhs9khzMRd)=;p}(yP6-hpDE!HR@WqF{ z5LR(QVos3h-JZ73J=9r$ofl5r;eITMs{35k=)6@_y-bX}!xqqWrF32vcURr<^b`K} z6S9V6C;);W#2|qCRZX0xr^xH;o9yK6+VmS4@~I~8M%v&$#A`%4^F#ul7KTJ&gA$OW z8hTM4Ae0a=4VhmPDK*c}3sd)%JYs;3S}{GFHuJ%34HL??eAFUxdS;=tbNt}iPddNQ z1#7PU zXo^%paU|ZJ-DB;Bs@%{WcePi9xsRXa+41MOYH4$FZ&~FQbF7cvx#$h?RLm%j>7IG;A!ry0d~@O)eJVHkM*rn=)L^&N-~k$?3ih`8=bhsAo9<$j*3-F(W0_E2Hb0GVjtOHP!C- zyydZ~q9noQ30{sB%l(%!D`cEcziTc6eF6VTF(=z}F|2(zgFSy2r2bQ;g7xoAh3bt> z5i7!%PT7s$sVO*2Nbu5C&YzQV#cL#INBCV}TQpofi%!qA9HK4DrdUV0`8t2Aj3Py4 zQpIjPrX0+f$(xh9ovt2p?2Fzb`A8e%1E!T`H?@fJ>uR;9U(^vq8(1h8RNuL;noDB* z%jb(+Uyl{~&=O8lu{t%hKc^w2nrmFeuf+#2M=>o{?8rPfde+oN6DaTFmcJ4%ssGqu zk2r44nyYWEC3bnmbgkN4eD|wtwsa~LB9CF05Pa&ZJr7(~`Np*9+yQQ4T=<3-#qbza zSS;N}R&%VUC?ta;7wZ=V|a0ENmf)h z29C|Tlmtsmy}N)j*?-qMXOx;d*Tz+2<)JT3jDd~BKAan)b|@-vf{!FLuIX}SX)_hC$ztvWrVy`;yXt!s&Wi;EAPX3T24x^6p^=EsUljIe z&5mF8s+x!Q>XSC}?lf5%phII3tS=NJ1gw_SDc8fXm<9l(rO6nalXemYA03fiC?MW3 z;`<{Nt`87I6mo*>6^s;AH)TQn(oW`#_M~5A!)N$mKH4aHU{uKgD55XIHnN8yO7Pyc zyhUX^4hqt<%DL0pfle? zH;R7%C?JVZObVg53CPok?~kZwb@PH#f$}`cjRvu3;$qd4xhsHy>ml-qDr)jTKYUMBnB5;j%ltEdmCyRHZ?X0Wq| zNP2#T%OiXX%nG`6qaMEFldpX2^fS@mS>JgU?ka$l^>1wvBFpGaa;Zy%3LuMbsAF>x~(B0CHQDTcW(2RD-Cy zO(_JrFnCiqx@-!qS#~WFeWZ~Zcy{ioJQF#C>n_1U$aj(Y(RmmV-bci-I|x#H+5El| zzAC6LL zz`l!~z#9_t)qd{liO*+T@GuqVAUi7al$~y#fWN(d3&?+nqz}Rr90R_&@Cf;zxxn@} z7g9F9BkAw$7SIp4AdeX-!V14cmi=XEpjzwVW$^q`T6G9HllN_0urWrzxsXUc7Ke1T z=mMy_%5NiV!7MaA`4v8&*)mey1g9lEHCtnSGx?psR1?~IV6%KX0FN-($RN3}T!!P( z-5}>(vz_t%IGSqBSbq)34(V#ti}ul|YwAjL(Bha@zH%EWY0y99;og8NFhsH$idKSt z!d$-A0PnClb*enOBGut0_gS^cj6fG^x^bgF5dpDH4|@Nl%_M8m^qZq1IzX;AD(2Hx z@{U=sX@&NJZ!N_I8JxlGi9=b(dVT#|9Xv$Zlj4Bc2O+CM-S>}nROW9r=!wi@S0W9~J@OF^c|{-!X@vVG zAjYH;2tz(v`(ekc@U|+A=+#txO?1ACA@uZKMdmBY25BKx+!Y}<{sRnP4jxAFN~G__ zP7BOqc420x$S6g;qLj4Whh&hC-dQ9fIGc1`epyqc6?Q4}sdyMNCBF?yd1X}j{7fYG z)%&?()zw&HI)ckI`mrC`l>67KBw?IxO+cd>ayFrB0f=JPb@fh+~hH-{J-jI+F71q6ld$7A5oDnKLSOLKV#aZl@bm4-+VW{ z0J?Jyqw;Z)-hv8cUaKKp@=_aDr4J!S%${!5P`*N&0c+4cVm|BCq1tmi+nwIyW1lY@G^M(QFY&FWns_VhW2qdHTE4J+Qh#8;FGDzEN=8GypEke z7!w?SGUL2z2rixfR9T3?^2ub=PL}+$t}Sy<_W`k~!a>@6C0o&0N`CO?I_~$BmyQvU zO}#Ox1xK7yfi&si4t+#3o7EMel{L9X-dy2L2}zCSPix1Qks%KQ^PepN*lrF$)HBl) zo8=2oHo`Kr{(Y}MM}tv|s|@DTy1Pz;$d%#XjnIobv>VFg$+MN@kQPStO0_O_QudDb=i~I zAS~bcu1l(`e!_@wNHB+0I)P)_^e6gCiiVQ+X*tQ}WN0$!1Hy;F z8jCL0Xd%s!+%X&u#N@);Fp9O5undKO;m9W(v>JyOnxlKyP7J@?8h_33h-P&>In{|J znKtrZK9_P4z}20&x+#Vp@}}I%R08sgyXvixEdvl3an(Nkb#;2uhXoLH#s9v2`1`gS z-Vy-e^{p0IZ-r^6e8gL2yD@EK1;7|f8|W36Mb8uMYAMu|16^I|M3qvtfZH$r(zNp@ z%GO?x6QBM(4Hvr*&iE*t9?da40&jIfedbej(Hc$RLvYGm+^~=Mk`oga(YSViR+M4T zm0yT{P}xo5$<0H#kIchBgZM<7q&3g_MOjtuY7Et9E z=y91KkHrg|4(LN^^m-l~&Q4_)@sgVbN7Rk%)K>Wnac*q7Anvg1FE*>C+jw{-Ir;;J z{!pkc!o#2n-g}V#DjNnQq<(EsPoO>335FoN1?_vtAWd&$5@oB<$UFIa#-Qp09)+Z@ zDj}ZgX3mo4;W89g3u@0kTLngVWcKW7j0lF<_$v>Twn^Zs{xIR{kM|~))MqMcyu~jQ z^QD_*cr^YG5laZmC_f>ycI2pS|LfyqP^P4zu!T$>I?e z#^l@d#VK|h8mhWur6}g!2mJ2+C99#?WDm>oaRDh^(=+pQDr7r%CrX#cSRJG?g_WJ= z>?grk(=uL2p@U#GB8)_k@bSQBc?58~Q(H3ob}8IFd&l+IIL|9TuJkUV&Yn7Hc!r($ zR4r!2y>-yqYPV@CCTRP%(5cve6CJbP7TJ$OW~~v01dzb-d+aY@J}9$6=IY*dPwLOO zSahGjJQoQb$kX2zFa(H@qtsCxQ`{bakkUB)`~l4!+r}1LqL#26x0U~Rbdl=o^YVJM zgDr6wrr&5rY-G~WF7dsDUKAIB!2)|9P{M(>_^vN9*n*oP`rOh>s0n+2Vj7AnpY=>Qj&^`G&%|4Omy!*3fNP{p6_t*B0OF!w7)lBo`%+2%Ub{G zud6B;Tko{0mb-FQgWPRq32Pi%D7TJKdMm-WR5R`QysPKJEPv~`yw0*l!-~NS9>Y_arcTlUIof2(5{2Ur(dvgDSx`0)4 zS%g?LuDeu`@E#w{m`&Pji_lD47Y0c*c3Vzj)2V*Fda`=Cxp?3;`O@zxy^_15(xF1a za?M`B#9$45c|?(>lHm#^AqKO(qMJgwLj7agHFZm*CbU~!`$09GngUpVW)h!FdWV&I zD{TwQhlgb$@v*aJNoD$*^i8DpZ0D{euMthP^>s`ePbQHq&x0nBe{xRO9{kp(g;Z1w z9b6{_lsMFiOQED>lBN&55R^nGy1AS9NFkxjvJm1%(FkPu`4N!eNg(bq+9bjl-YP|f zToN9GkB?)$<}r+1-Kr)kZ9`q?bd0R6L4KS`D?)|mD;vL1l5IMBUk4I|dH34!3!K(s z$Ri<-YK4Xnepr$5A9HIvqcSPgP_x8hZa4!N?CnU0pJbYh-p|u zEmZ@2idhvAeefeEuJD|uhfUFmI07iUB13>{dkCeg_H>I#IJtuC#6y8(gTb6?n-_vd z3DS@R!m#}z;N=L!ZkR!@K@Px-DWKH;YOML62c+cXUw7)Zh4AQ9!8k&N%CQ|FbKb>2 zPKikItCZUa7_o`r6wZb28qXW~R`66=+a8>j77J5s4~L7zyv4fO!<*$zqH%*l|IpUU2O9vK!4ZgQE&Yc0>wXOlfpA)Rl^6gu z0?^47K)WE_6C_WN(a#IIbQX@>7+yXfgWncBPT@Jeh$88Yr_t;#vQciSR+H`(Ly06a zTcc`3TWoM<5s|V#=cE;d9Wn;Mo)DZniL2#e92J!3nDCUliR^zF$3FCn6Dv{ zIJDg)pRYFB5RNc;?yG{sLXD$o07*BzQ6g|G zAzT`|068JA0OAXG_NU`mKE(wQWzEsr-j$*ml&#bRmIb1!$hs8@#q=nQheHYCHk4$E z-FsD*jDys=s)W0m-9tK5%pZN2KmdQgdI;gcJ_r1hpLk9{SR9bh1qALMeN!TQRM$1e z>l0;}!q3?Q)3IUKt;!w9OQ|a9=*yYLAD?J@mu;L;V)+M-K!S%3yN>2`aEUs|deiR& zB>5M0zsS8x9XL#%9X_*NTg5P8hpKNv1R&UD83^=AsGkc!NJ#QX!o6S4$5}<0C?v7d zxAH&l9w+#Eyg%-45I041OX!mqDlbyzWD&#zVcY?L#F6-kWVUU?qSzS}cARk$+jj{%Q4eiZB7=|LR+ zVk!GJMEKV6*iPlPjJok%t_DHuG(mdDXZ>yyGW#Gj>)HkGJ>6o{PDteuh7OOf=rT9s zstZK5%Hcm9s;7%iVX3VxH=2SKkNb^|p$1wJjk+Uc&HC`&ER@mIvGd(5G!wl2;o(Xb zRjzD?9APd4PsZfEas4pZ-t=LRQ$OTGi^U?S8ud{Jd8l1pQM}v>S%`rid9h^R=n`vP zH+ECkd<Tax5m9Jvc!rfMOE13Mn8VOC*fT zHks{L5_93J*iqL*0kZP`t}x9x@QG{luTG&Og*lc)ag!>*sx;|FDtf+>)$oJWdj*77 z$oj%f(KcJI(J{M>jr{DyEUyeC0N$CxnEs6YY@pn5jMs%~H#Q7waA8UvvG3ZA=#QmU zTQX~jE<2rc;L+IeID=U`R_jWHFGiWVfOd4_qz7JX3yTgwHEn-q^kBi;i-l! z{LvKB1qJOPt?Av>lu0ZBkxr$RZM<6bkcCgLO7jC9{l20>)ILtl2<^Vf-Tq?;Alw;( zjBO!UjbTJhmc{8?Q}HkA(-PCX+Dp6Q& z9R<&U6HUGy5z6qihRVhGU{eCq+nOB$VNB;a&`)n>9}Q0f~S zXn=>b2a9+p@IuJ@LtGi?tOfh0qLv>P@^4CgGg?^cv`u}SNz^dxMb)ijEs5pIS#yCc zqe$$l`!$INQyAo*5IuucJ@PG4+uDp?tof|g5JrLh<%Uu08N0|qh0+PjUkezA~OK6LHRx7s>b7N|!WLx@Go)_Hknw{qY(tE0hZM6L^B^Ob@( z(RR4i=;Z)Wu4(jcPAdbNR>?QFrDD;zbR4pGJl+r4E9mb$e#eno?ZCjg)w|2WHLNOR$I|#^2RFy$S)W6$ zr(;Ldu+j&rdS;YI{N9^Y%;x=e!Ld=nd|k_}pRJ-hn2jXk3e1KAJ|Y|8;y$l`68V_l zc`fAIkj;=c@q?3l)J1FL8WKSjcSV~UGAbrkV~dxGo%B~S!@S(&aW#a^2o7N%cDz-I zEgmM$q@qSi%(p~FHNp&;Qd788|M%4;~flA^>hZM^Z3+Ncr+$0%?H(n(&7k5MI} z!LVW1c-`Z`S2cO!gAeCm6BwAc@6LJ@!7^IkeVfu$qyTEw4fqTqrv`ptRt##qUqQ+O zjLB3H)eZ6tC5$0hsV-r=7%-DT4U+Uigt5Adpkg?lCsu^~hU&4IGjhbuQuZ#Qhsw)r zM+eNCu58GkJr%!lMXgWZdajSvxiGfdyLD_A)ysaHsfv4HF@VR-c|uhxkSD@AOcmyL`lx+a=aIGx|Z zC*w%rc|1R%{lbl{=ENXy~WW(qtnuZ=&2qtTo85C}-{NA{4Ua8U4$TYYNgT6LdBDZS&IRCl8w1!s5b zHfmJ4^=&2d#&=XaW1+4!T9Kzt{)aaH>eWkn_NC&sKCQM#&l@u%+24HPPWGD2Ha(Tf z83V(ZV`nYWvC0@!-x7-nLo?LIn;k)(pbmUe_YO5{?wm2eN2Mb>!QcDLA3kq`&a&g23wL@m3h%X2Lj{kCdn+V0@Ky&+<< z@RUhPLXWB+jTsd2K{#Y{W&mB`4)VFbz5)GV5=5^3T6pzVFRyJNkEmU@^m}gk+N@7r zCY!^1t-KBKs!~o*oAVQ!2vMv9!{gy7P#UNOIo`*&VcsD2-{`o3k?0jx;>xMoI>KVb zim@-m7^1f@k4A+<%ZK6(SEh`^Ni8khO|{V})-NqZEa3R{9I^{KUGH{s+|Ba!-n%z^ zXBoLUQ(5sy8_o`2#p#M?l*o~lOk*lBKHcQFr8mRal0ERqC|r2`!;B4NCe|I~XpvnP z%>aJg?bm?3QQd@o6I|g!Z=eYA>+=mF9Sf{aojekgOjA)!Q$x2`i1J>^dlBSz>^igi z>(Ce`DNiVHA>XfC5dna^*Jolsefh7&Gq~o_e;L)FX;9{SR0H@K_hiTWC80FjFJ8TF z8}$)N%84KqP@5++l@?Qwaz6=-5<=58rbr6@5V5y3Z&AwchT*>LIb<(}+NOYky!r_e zR03wItNSGbb(eIWffXxCOwY$;H@A^`Jx2G6g)vJzNr~P^0&8c7O)(Hxfi&sP0Is(K zEf{_Nvg3vFDx1ZEQDE)+uJORdyDXga!2Ps_(;e2iC&e<49dSuz>5mksh9xr{6bZV8&x=_O=+ZdaCl;9AB~QB(i99N7Lh%ixh*s5#MSc zX8j&0;xFd?Inljl-fJF?KZ8b~G<**l@py}*Vf|K~cL1wB_Q#K+yTFizF@$mIg_JMj zaS(T=dH1t(t&(RlsZI)d_%(hSD&%c(I`NwiCh}Vc@!*Vh@mgmj8{-J}*KK>XjGMGV zoUFq|<$25qY(u!yN6=U)Ih@5^{n)mWG#YKU*Z&~WZ4(50nE3t92L?h}ATuiXtrrY>C} z>!l4|CmfAkGP?oum~kXx=^(+wWpiaEZ>b^OmB~JY3Ezi?q}(Ncj*Ek^h)J>`#C6SD z&9pKkjE<1%6V8MUzFI}}J&*HIcsp$|juwnI+Bu%pityJZJB!5xAMfKVkD$?RnKw8E zQQJAIk%H}DT=X^am2U^z21(3uAqNVs2e_NHEoz_bcJlMPt(=~XhZc}NGi!axbH2#%7&uLhb8prUr7vNXTg#sOLhXM8RO}ai3+9`29Ff7mc_>*u-0ujYetSGm$xC3z~zI7U$Jh3}Vo8L}L0{B`)?BnJv7F zWNsI$D0U(2CSmVugTb=Z*LRZ*7+#z_t6(l)<1^X=zfdPh=Jvnuiybu8e#SL!52!laIJ`J^vah69aJag zL?Uzv>YT5rKj{|)(EHHY?!PIG&{@Keci)1QLYZ`r(`lS6m>w@DM<0b1;e7)hkNWU= zA{3QNa3rIqL!YYIfwKtWNlHqTT>Fwql-4+?2)q`E-u=|Clci6Us_i!S$kVu-wjkv} z*}~@}6@J+qp=-T{eppBx!8S{vb} zmSdFn8{%z9cLwqIogP~^KC>!r6>`m_2_e zVnNHmR{lxmvrJrNa*h0M6ScDie5w4&Az9}Bk&bfr$}qPmyJI`{>1NV2-dBG~(ZwFb(@)Fvm2;8wtt2TNy<{GLKk&|}??$J%* zRvls&9<&M*43IFC)|tkN_Gmpanh^@I8=rmXA!uNSl}z|hagfDFFPjV06@*NexLc@P zey@J%8!2&S>fq|C!wtBw&n?NP8o|OvxB7do|NY!(T$cVX?pD?Rh&lq3kUuYE-e}dpy#SYKe8UYW5>HCCEhPZ!8CN9m&A?ZO17a zeqh43wdiD;t(@t~tq9ML((H9wi?EOvF~ZhJpgS^1Xs~ycp)JSgv;!+YeO4KhD#y7} zD?2%iYC+xU1uGICyMOv^7USq<&fQJo+`fU@H)~@#TB>$ZH5Z;?sZladv!+R5}@bj6N#Yld+Yp_D~6iHN#M}e{_ zVz74hG*axDF8`M1`Yh})=a5c;CT2}blCr6ichbUx+kqZAk4;_PYYdw?Xu=kp=$M$P z9j!VVYIm;9)k9`DKetFxAisY1f2ake?h=7EK zf`*2Qf{KccfrEvPfsKKRiiL-TeFKDxi;ISdPk;v^zyaZczC(bpkTP)a$nfyUAaqo8 z(7%0Ld;nl00m6U)SRf?;1{(;A4ZLWAgy01L;UTsCUg19uAPl6A2#83?D5#J(yvG8- z0AXQa;9$Sk8uD&;$o~Ow*zhJUL)X3Px6l`bj;OOM+;_c(> z=O6GQFyhtg$f)R;H?b+HY3Ui6S=sN3OG@9Dl~+_&H8eIgx3spkf9mTW7#tcN86BIQ zn_pO5TK=-K`fYn>cW?jT@aXt^yS}&c=kcRqQ0>Bov@L|wJ#b#HaIW^$%q7OjcaZ9TDz%1CZKM!l~LIMIVg&h{mJvkO)_q4c~ z${C{mKy4o9-p!=3>Md~5BiZcD=94qmR)^!r)2KRPzwHJ(Z_V-2UQy~?1*-DTI}#Iw z8F0ArJ_Pzt_PV2_TiX${}q!*JdvNyg{vd6YXLNBF9NPbQs< zvN(=B^!!v?Wh2FGTdmT11xTIk=gCMn2F{yjL@FdKGrW2;2IhUV#B!AlITwK~Hr^k* zb%>f118S`7O~4GBzInU8NK)ptn%Uw^m=&pTv+3qAwsIIp`5S?N?UQF%ZgLTQHtha( zBUXA%MU)jx6Suck5?R;vYo!)K_pB09@=dr7nrQIq$EHY2Fsb`3HP!uK@~T-)J)Vx& zJwzX!hr@0w5P?{2+X~lB#BXj9|3g_cwn(#n1g{>`GWseIkTr&~Y3Y0u!*ylcEP*M4 zmvCvTvqskD)}#=HTi(9X4$?&4snJtnfFor!3LUIhul*)jT{ap~wBKEo_Qe26XOivA zXu{9~AMzH&{3>V?WTUVB>BRTJrYF;hxCPXGo zJ?4_!kC-bTJNI`ogY$A}p zfcK5iZ!o;cAbr15IhKlr>d=Ka8>QNX4E_})4tyJ14eIl(+-G@D`4!fyLLJjA%oX^2 z3;48D+S{{l=VDYt*!Yh9xR17YNuJAWpzrp_=mQrlMfCduNI>LAIbw`nzJ5gU=RvOLdy316&gvPcmk)9IG*&a<1!CX23no zl`$D_7ARq1DmYHHp6z;Z?)o-Ple4U$V-`L30+qGaFT!kr^WJob2ieZLEab}koKsz8 zNh_0R4fBOuJBDl5&cVdc@y}})q`)l;+0mQ|Kg5i3jD=GMreq-b=;#WV>Xv^sGkrZ0 z)y-h?j2EBQUC`fh-#zqX<7>PA_<%V&>H7yX-D31cI*{;=N;DU5>!&8beu4xvre;YC z!~*9WwRN!-dU>6|ay9?@VoOWt8%vBOR&)Kqtg;%|J&9_Hr_i7vDwqMh>4piEQAKmZTL88e# zpf%iYk$5Zyj|aN0;H&c%PEHNr0e3_MV-aq-g}e;m>xn(}8s_vB|yg zRjGg9QJTr;N@BxJ64lcJdr{4|oD?gH%#w4}Z?!{NDo06Nqt7#Cf9FSvqD%v@l8-l-&IJD1_7+&`Y1ZHbrI2xb3GYHF5gBr;1IIaS3zou9b zFiypppENw$j$rKMmr99N`)a@ndocsVsd_M(hKLaA>a8y@WHV`FQmRvkg6dp0oz7z; z>kQ5Tsjl^87{^&7q=Lah0T$xP6}&O(U)J}Y%0p6~prvUZy7os>doGi_n0tjV@FL+O z`#Uf4l+q8G9g6`b60lk>tSvT5LxYvsXSeTq2o&@GvP0(RCz6689kL&ipa>h1nBvb# zzP^>M;rFIN(t7*B`vMH%22u4iEGRG{9@_JT920PM+jpU+>OOaz z*}7j{D=FIUQ*{4*2HYAA2k7A#lRU=Or;`Zmxh52lW4yo@IW2;m3QX~8Y8w0}ZphTh zy9sn#Jj)5MGzcQ|u*qIm8b>a+;02T8!=cC})l%8e-l84yR^BibR^+6L+^xpRPifVY ze#SlOrL1iK&eGfONPnBp`OO2_;I#Y_oaZI1_@AYp2(UfC9mx(KOU;JIzqQ2Y6CV+k zrLODgs$YUU{4_X$Jy4U?OI9&y^p=km!;>BN?(kf8IqPLwU3FCCqxp@3rD^o{jSVV8 zwVGnLR@o4-C`NH}C-#UXDPZ-f4y%Znfae;Ncr|Mc;|F@$;dgvcV znv%TL*nKRI#L^3$qguEzbeXoacUf4NhN6_E-Ii_?DkS5@yej)^jy4iV@XD(#sMC|~ zM{Y-M_zov3^u@5t>Ai|vL}>KDcw&k@2PyW^(^W(oK5K>wW}*x`%!H|oC-sGqEO=UB zGssfL{ON{B4iVIRjLCBz&kchk8!7@3(I(lLL@B@(>_-JCb`tsijW#e=z*2yXA-CWd z-6MzDC!)UXYv-qmW#w7X#h>Bwnbifkh#q6A+Xju6*feCOGD#CPZR9F5F9S&=qnRCB z;wZyfozT?ZOwXu@t$v8$!#)FqF1H$!j!P$|0}{Cboe`*pWpg1`B;_=up+WjhL+?CF zyGXH4OkmD+m(g`l>EXTzNRE?Nh5W-qv)!me$? zw;f|!=jOL<%&DW82>gxYeOoEV3CVm|3u76qqGG-ZJ4?GQgL%QiG-61wSQ1uXs}?2D>;9p40NI*X;C(Un?n5b)3V7+>^cW zwVt3mM{^6}54Oq64J+C>9v;5=NW#^{w-UPZMsc0H-nHXR_T6FEyLMj$S5@na-c&9F z$0~VbitXD;kR~=QEvw-)lY}1)o~pO+;fZu`G7gxX4Y(~^k0J`6HltgD_X5kvl6Dy( zec{Il0>UsrlFt1)N$bxZ^Yir=DO=^F{|fkP{>PsMzrQX)W;8#fM3gr%ZW$t=`@7m*DrBH>(2-uQaEvT}kGqtbK;xhTL|oy-+5aAQso8+WLA$G8;gBHy z?SI$UOYs9V4%#L13b!Nh_qag+zr0^U3l^`)G4j{QKZnRQ^0i_7Z;}%feusP|jD)tvzpitd z;_r~J#D>35ey8+1-WhGYQICi z5=8wzxlR3d$X6nxzaxK_>RcUN8oxvSai{nnhss~kgPOmE{@0)P(2|m?T2E;GKtl^m zezf~vZ_iy3`t<+hW*xNgpw|+wAf{$Ns_}g;^ylgnbaCkAtgGU;EPfRK%inzZKzph?f6$b#yt*+VN=UN7I@xOkhyk1<__FC~jzF^8p!$UMc000f- OAp;59mTLd~um1<98{8`Z literal 0 HcmV?d00001 diff --git a/docs/~$model assumptions.xlsx b/docs/~$model assumptions.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..123cb6d907540518b05918a12a183087a7c55b4f GIT binary patch literal 165 zcmb75NeTcV49iD^{>7tsnio{`QnW(B|4;Bfhe;r0A*rfwlX8}Z7tsnio{`QnW(B|4;Bfhe;r0A*rfwlX8}Zbattery_size_kWh = battery_size_kWh_; - this->soc_to_energy = battery_size_kWh/100; - this->soc = init_soc; - this->will_never_discharge = will_never_discharge_; - this->zero_slope_threashold_bat_eff_vs_P2 = zero_slope_threashold_bat_eff_vs_P2_; - - this->bat_eff_vs_P2_charging = bat_eff_vs_P2_charging_; - this->bat_eff_vs_P2_discharging = bat_eff_vs_P2_discharging_; - this->get_E1_limits_charging = get_E1_limits_charging_; - this->get_E1_limits_discharging = get_E1_limits_discharging_; - this->get_next_P2 = get_next_P2_; - - this->target_P2_kW = 0; - - this->print_debug_info = false; -} +battery::battery(const battery_inputs& inputs) + : get_E1_limits_charging(calculate_E1_energy_limit(inputs.E1_limits_charging_inputs)), + get_E1_limits_discharging(calculate_E1_energy_limit(inputs.E1_limits_discharging_inputs)), + get_next_P2(inputs.get_next_P2), battery_size_kWh(inputs.battery_size_kWh), + soc(inputs.soc), soc_to_energy(this->battery_size_kWh / 100.0), target_P2_kW(0.0), + zero_slope_threashold_bat_eff_vs_P2(inputs.zero_slope_threashold_bat_eff_vs_P2), + will_never_discharge(inputs.will_never_discharge), soc_of_full_battery(100), + soc_of_empty_battery(0.0), bat_eff_vs_P2_charging(inputs.bat_eff_vs_P2_charging), + bat_eff_vs_P2_discharging(inputs.bat_eff_vs_P2_discharging) , max_E1_limit(0.0), min_E1_limit(0.0), + print_debug_info(false) {} void battery::set_soc_of_full_and_empty_battery(double soc_of_full_battery_, double soc_of_empty_battery_) { diff --git a/source/base/battery.h b/source/base/battery.h index f07493a..b9d0f31 100644 --- a/source/base/battery.h +++ b/source/base/battery.h @@ -25,6 +25,30 @@ struct battery_state std::ostream& operator<<(std::ostream& out, battery_state& x); +struct battery_inputs +{ + const calculate_E1_energy_limit_inputs E1_limits_charging_inputs; + const calculate_E1_energy_limit_inputs E1_limits_discharging_inputs; + const integrate_X_through_time get_next_P2; + const double battery_size_kWh; + const double soc; + const double zero_slope_threashold_bat_eff_vs_P2; + const bool will_never_discharge; + const line_segment bat_eff_vs_P2_charging; + const line_segment bat_eff_vs_P2_discharging; + + battery_inputs(const calculate_E1_energy_limit_inputs& E1_limits_charging_inputs, + const calculate_E1_energy_limit_inputs& E1_limits_discharging_inputs, + const integrate_X_through_time& get_next_P2, const double& battery_size_kWh, const double& soc, + const double& zero_slope_threashold_bat_eff_vs_P2, const bool& will_never_discharge, + const line_segment& bat_eff_vs_P2_charging, const line_segment& bat_eff_vs_P2_discharging) + : E1_limits_charging_inputs(E1_limits_charging_inputs), E1_limits_discharging_inputs(E1_limits_discharging_inputs), + get_next_P2(get_next_P2), battery_size_kWh(battery_size_kWh), soc(soc), + zero_slope_threashold_bat_eff_vs_P2(zero_slope_threashold_bat_eff_vs_P2), + will_never_discharge(will_never_discharge), bat_eff_vs_P2_charging(bat_eff_vs_P2_charging), + bat_eff_vs_P2_discharging(bat_eff_vs_P2_discharging) {} +}; + class battery { private: @@ -45,11 +69,9 @@ class battery double max_E1_limit, min_E1_limit; bool print_debug_info; - battery() {}; - battery(double battery_size_kWh_, double init_soc, bool will_never_discharge_, double zero_slope_threashold_bat_eff_vs_P2_, - line_segment& bat_eff_vs_P2_charging_, line_segment& bat_eff_vs_P2_discharging_, calculate_E1_energy_limit& get_E1_limits_charging_, - calculate_E1_energy_limit& get_E1_limits_discharging_, integrate_X_through_time& get_next_P2_); - void set_soc_of_full_and_empty_battery(double soc_of_full_battery_, double soc_of_empty_battery_); + battery(const battery_inputs& inputs); + + void set_soc_of_full_and_empty_battery(double soc_of_full_battery_, double soc_of_empty_battery_); // This should only be used for debugging purposes or maybe by battery_factory void set_P2_kW(double P2_kW); diff --git a/source/base/battery_calculate_limits.cpp b/source/base/battery_calculate_limits.cpp index 79da762..4f02c59 100644 --- a/source/base/battery_calculate_limits.cpp +++ b/source/base/battery_calculate_limits.cpp @@ -38,29 +38,21 @@ std::ostream& operator<<(std::ostream& out, energy_target_reached_status& x) // Parent Class //############################## - double algorithm_P2_vs_soc::get_soc_to_energy() const {return this->soc_to_energy;} double algorithm_P2_vs_soc::get_soc_UB() const {return this->P2_vs_soc->at(seg_index).x_UB;} double algorithm_P2_vs_soc::get_soc_LB() const {return this->P2_vs_soc->at(seg_index).x_LB;} - -algorithm_P2_vs_soc::algorithm_P2_vs_soc(double battery_size_kWh, double recalc_exponent_threashold_, double zero_slope_threashold_P2_vs_soc_) -{ - this->soc_to_energy = battery_size_kWh/100; - - this->recalc_exponent_threashold = recalc_exponent_threashold_; - this->zero_slope_threashold_P2_vs_soc = zero_slope_threashold_P2_vs_soc_; - this->ref_seg_index = -1; - this->seg_index = 0; - this->prev_exp_val = -1; - this->exp_term = std::exp(this->prev_exp_val); -} +algorithm_P2_vs_soc::algorithm_P2_vs_soc(const algorithm_P2_vs_soc_inputs& inputs) + : P2_vs_soc(std::make_shared >()), seg_index(0), ref_seg_index(-1), soc_to_energy(inputs.battery_size_kWh / 100.0), + prev_exp_val(-1), exp_term(std::exp(this->prev_exp_val)), recalc_exponent_threashold(inputs.recalc_exponent_threashold), + zero_slope_threashold_P2_vs_soc(inputs.zero_slope_threashold_SOC_vs_P2), + segment_is_flat_P2_vs_soc(false), P2_vs_soc_segments_changed(false) {} -void algorithm_P2_vs_soc::set_P2_vs_soc(std::vector *P2_vs_soc_) +void algorithm_P2_vs_soc::set_P2_vs_soc(std::shared_ptr > P2_vs_soc) { this->P2_vs_soc_segments_changed = true; - this->P2_vs_soc = P2_vs_soc_; + this->P2_vs_soc = P2_vs_soc; } @@ -100,24 +92,8 @@ void algorithm_P2_vs_soc::get_next_line_segment(bool is_charging_not_discharging //############################## -algorithm_P2_vs_soc_no_losses::algorithm_P2_vs_soc_no_losses(double battery_size_kWh, double recalc_exponent_threashold_, double zero_slope_threashold_P2_vs_soc_) - :algorithm_P2_vs_soc(battery_size_kWh, recalc_exponent_threashold_, zero_slope_threashold_P2_vs_soc_) -{} - - -algorithm_P2_vs_soc_no_losses::algorithm_P2_vs_soc_no_losses(const algorithm_P2_vs_soc_no_losses& obj) : algorithm_P2_vs_soc(obj) -{ - this->a = obj.a; - this->b = obj.b; - this->A = obj.A; -} - - -algorithm_P2_vs_soc_no_losses* algorithm_P2_vs_soc_no_losses::clone() const -{ - return new algorithm_P2_vs_soc_no_losses(*this); -} - +algorithm_P2_vs_soc_no_losses::algorithm_P2_vs_soc_no_losses(const algorithm_P2_vs_soc_inputs& inputs) + :algorithm_P2_vs_soc(inputs), a(0.0), b(0.0), A(0.0) {} double algorithm_P2_vs_soc_no_losses::get_soc_t1(double t1_minus_t0_hrs, double soc_t0) { @@ -164,7 +140,6 @@ double algorithm_P2_vs_soc_no_losses::get_soc_t1(double t1_minus_t0_hrs, double return soc_t1; } - double algorithm_P2_vs_soc_no_losses::get_time_to_soc_t1_hrs(double soc_t0, double soc_t1) { bool update_vals = (this->ref_seg_index != this->seg_index) || (this->P2_vs_soc_segments_changed); @@ -199,34 +174,9 @@ double algorithm_P2_vs_soc_no_losses::get_time_to_soc_t1_hrs(double soc_t0, doub // Child Class (Losses) //############################## -algorithm_P2_vs_soc_losses::algorithm_P2_vs_soc_losses(double battery_size_kWh, double recalc_exponent_threashold_, double zero_slope_threashold_P2_vs_soc_, const line_segment& bat_eff_vs_P2_) - :algorithm_P2_vs_soc(battery_size_kWh, recalc_exponent_threashold_, zero_slope_threashold_P2_vs_soc_) -{ - this->bat_eff_vs_P2 = bat_eff_vs_P2_; -} - - -algorithm_P2_vs_soc_losses::algorithm_P2_vs_soc_losses(const algorithm_P2_vs_soc_losses& obj) : algorithm_P2_vs_soc(obj) -{ - this->bat_eff_vs_P2 = obj.bat_eff_vs_P2; - - this->a = obj.a; - this->b = obj.b; - this->c = obj.c; - this->d = obj.d; - this->A = obj.A; - this->B = obj.B; - this->C = obj.C; - this->D = obj.D; - this->z = obj.z; -} - - -algorithm_P2_vs_soc_losses* algorithm_P2_vs_soc_losses::clone() const -{ - return new algorithm_P2_vs_soc_losses(*this); -} - +algorithm_P2_vs_soc_losses::algorithm_P2_vs_soc_losses(const algorithm_P2_vs_soc_inputs& inputs) + :algorithm_P2_vs_soc(inputs), bat_eff_vs_P2(inputs.P2_vs_battery_eff), a(0.0), b(0.0), c(0.0), + d(0.0), A(0.0), B(0.0), C(0.0), D(0.0), z(0.0) {} double algorithm_P2_vs_soc_losses::get_soc_t1(double t1_minus_t0_hrs, double soc_t0) { @@ -334,7 +284,6 @@ double algorithm_P2_vs_soc_losses::get_time_to_soc_t1_hrs(double soc_t0, double tmp_hrs = std::log((eff_e_t1*P2_e_t0)/(eff_e_t0*P2_e_t1))/this->z; } - return tmp_hrs; } @@ -343,44 +292,30 @@ double algorithm_P2_vs_soc_losses::get_time_to_soc_t1_hrs(double soc_t0, double // Calculate Energy Limits //############################################################################# -calc_E1_energy_limit::calc_E1_energy_limit(algorithm_P2_vs_soc *P2_vs_soc_algorithm_) +calc_E1_energy_limit::calc_E1_energy_limit(const bool& are_battery_losses, const algorithm_P2_vs_soc_inputs& inputs) { - this->P2_vs_soc_algorithm = P2_vs_soc_algorithm_; -} - -calc_E1_energy_limit::~calc_E1_energy_limit() -{ - if(this->P2_vs_soc_algorithm != NULL) - { - delete this->P2_vs_soc_algorithm; - this->P2_vs_soc_algorithm = NULL; - } + if (are_battery_losses) + { + this->P2_vs_soc_algorithm = std::make_shared(inputs); + } + else + { + this->P2_vs_soc_algorithm = std::make_shared(inputs); + } } - //############################## // Charging //############################## -calc_E1_energy_limit_charging::calc_E1_energy_limit_charging(algorithm_P2_vs_soc *P2_vs_soc_algorithm_) - :calc_E1_energy_limit(P2_vs_soc_algorithm_){} - -calc_E1_energy_limit_charging::~calc_E1_energy_limit_charging() {} - - -calc_E1_energy_limit_charging::calc_E1_energy_limit_charging(const calc_E1_energy_limit_charging& obj) : calc_E1_energy_limit(obj.P2_vs_soc_algorithm->clone()) {} - +calc_E1_energy_limit_charging::calc_E1_energy_limit_charging(const bool& are_battery_losses, const algorithm_P2_vs_soc_inputs& inputs) + : calc_E1_energy_limit(are_battery_losses, inputs){} -calc_E1_energy_limit_charging* calc_E1_energy_limit_charging::clone() const -{ - return new calc_E1_energy_limit_charging(*this); -} - - -void calc_E1_energy_limit_charging::get_E1_limit(double time_step_sec, double init_soc, double target_soc, bool P2_vs_soc_segments_changed, std::vector *P2_vs_soc_segments, E1_energy_limit& E1_limit) +void calc_E1_energy_limit_charging::get_E1_limit(double time_step_sec, double init_soc, double target_soc, bool P2_vs_soc_segments_changed, + std::shared_ptr > P2_vs_soc, E1_energy_limit& E1_limit) { if(P2_vs_soc_segments_changed) - this->P2_vs_soc_algorithm->set_P2_vs_soc(P2_vs_soc_segments); + this->P2_vs_soc_algorithm->set_P2_vs_soc(P2_vs_soc); bool line_segment_not_found; this->P2_vs_soc_algorithm->find_line_segment_index(init_soc, line_segment_not_found); @@ -475,25 +410,14 @@ void calc_E1_energy_limit_charging::get_E1_limit(double time_step_sec, double in // Discharging //############################## -calc_E1_energy_limit_discharging::calc_E1_energy_limit_discharging(algorithm_P2_vs_soc *P2_vs_soc_algorithm_) - :calc_E1_energy_limit(P2_vs_soc_algorithm_) {} - -calc_E1_energy_limit_discharging::~calc_E1_energy_limit_discharging() {} - +calc_E1_energy_limit_discharging::calc_E1_energy_limit_discharging(const bool& are_battery_losses, const algorithm_P2_vs_soc_inputs& inputs) + :calc_E1_energy_limit(are_battery_losses, inputs) {} -calc_E1_energy_limit_discharging::calc_E1_energy_limit_discharging(const calc_E1_energy_limit_discharging& obj) : calc_E1_energy_limit(obj.P2_vs_soc_algorithm->clone()) {} - - -calc_E1_energy_limit_discharging* calc_E1_energy_limit_discharging::clone() const -{ - return new calc_E1_energy_limit_discharging(*this); -} - - -void calc_E1_energy_limit_discharging::get_E1_limit(double time_step_sec, double init_soc, double target_soc, bool P2_vs_soc_segments_changed, std::vector *P2_vs_soc_segments, E1_energy_limit& E1_limit) +void calc_E1_energy_limit_discharging::get_E1_limit(double time_step_sec, double init_soc, double target_soc, bool P2_vs_soc_segments_changed, + std::shared_ptr > P2_vs_soc, E1_energy_limit& E1_limit) { if(P2_vs_soc_segments_changed) - this->P2_vs_soc_algorithm->set_P2_vs_soc(P2_vs_soc_segments); + this->P2_vs_soc_algorithm->set_P2_vs_soc(P2_vs_soc); bool line_segment_not_found; this->P2_vs_soc_algorithm->find_line_segment_index(init_soc, line_segment_not_found); @@ -588,49 +512,33 @@ void calc_E1_energy_limit_discharging::get_E1_limit(double time_step_sec, double // Calculate Energy Limit Upper and Lower Bound //############################################################################# - -calculate_E1_energy_limit::~calculate_E1_energy_limit() +calculate_E1_energy_limit::calculate_E1_energy_limit(const calculate_E1_energy_limit_inputs& inputs) + : mode(inputs.mode), P2_vs_puVrms(inputs.P2_vs_puVrms), + max_P2kW_error_before_reappling_P2kW_limit_to_P2_vs_soc_segments(inputs.max_P2kW_error_before_reappling_P2kW_limit_to_P2_vs_soc_segments), + orig_P2_vs_soc_segments(inputs.P2_vs_soc_segments) { -//std::cout << "calculate_E1_energy_limit::~calculate_E1_energy_limit()" << std::endl; - - if(this->calc_E1_limit != NULL) - { - delete this->calc_E1_limit; - this->calc_E1_limit = NULL; - } -} - + if (this->mode == charging) + { + this->calc_E1_limit = std::make_shared(inputs.are_battery_losses, inputs.inputs); + } + else + { + this->calc_E1_limit = std::make_shared(inputs.are_battery_losses, inputs.inputs); + } -calculate_E1_energy_limit::calculate_E1_energy_limit(bool is_charging_not_discharging_, double max_P2kW_error_before_reappling_P2kW_limit_to_P2_vs_soc_segments_, - calc_E1_energy_limit *calc_E1_limit_, poly_function_of_x& P2_vs_puVrms_, std::vector& P2_vs_soc_segments_) -{ -//std::cout << "calculate_E1_energy_limit::calculate_E1_energy_limit(...)" << std::endl; - double min_soc = 1000; double max_soc = -1000; - for(line_segment x : P2_vs_soc_segments_) + for(line_segment& x : this->orig_P2_vs_soc_segments) { if(x.x_LB < min_soc) min_soc = x.x_LB; if(x.x_UB > max_soc) max_soc = x.x_UB; } - if(0 <= min_soc || max_soc <= 100) - { - std::string error_msg = "PROBLEM: The following rule (for the P2_vs_soc_segments datatype) has been broken: min_soc < 0 and 100 < max_soc. Thrown from calculate_E1_energy_limit."; - std::cout << error_msg << std::endl; - throw(std::invalid_argument(error_msg)); - } + ASSERT(min_soc < 0 || max_soc > 100, "PROBLEM: The following rule (for the P2_vs_soc_segments datatype) has been broken: min_soc < 0 and 100 < max_soc."); //--------------------------------------------- - this->max_P2kW_error_before_reappling_P2kW_limit_to_P2_vs_soc_segments = max_P2kW_error_before_reappling_P2kW_limit_to_P2_vs_soc_segments_; - - this->calc_E1_limit = calc_E1_limit_; - this->P2_vs_puVrms = P2_vs_puVrms_; - this->is_charging_not_discharging = is_charging_not_discharging_; - - this->orig_P2_vs_soc_segments = P2_vs_soc_segments_; std::sort(this->orig_P2_vs_soc_segments.begin(), this->orig_P2_vs_soc_segments.end()); this->cur_P2_vs_soc_segments = this->orig_P2_vs_soc_segments; @@ -639,7 +547,7 @@ calculate_E1_energy_limit::calculate_E1_energy_limit(bool is_charging_not_discha this->prev_P2_limit_binding = true; - if(this->is_charging_not_discharging) + if(this->mode == charging) this->prev_P2_limit = -1000000000; else this->prev_P2_limit = 1000000000; @@ -650,12 +558,12 @@ calculate_E1_energy_limit::calculate_E1_energy_limit(bool is_charging_not_discha double val_0, val_1, val_tmp; - for(line_segment seg: this->cur_P2_vs_soc_segments) + for(line_segment& seg: this->cur_P2_vs_soc_segments) { val_0 = seg.a*seg.x_LB + seg.b; val_1 = seg.a*seg.x_UB + seg.b; - if(this->is_charging_not_discharging) + if(this->mode == charging) { // max(val_0, val_1, this->max_abs_P2_in_P2_vs_soc_segments) val_tmp = val_0 < val_1 ? val_1 : val_0; this->max_abs_P2_in_P2_vs_soc_segments = val_tmp < this->max_abs_P2_in_P2_vs_soc_segments ? this->max_abs_P2_in_P2_vs_soc_segments : val_tmp; @@ -668,91 +576,76 @@ calculate_E1_energy_limit::calculate_E1_energy_limit(bool is_charging_not_discha } } - -calculate_E1_energy_limit& calculate_E1_energy_limit::operator=(const calculate_E1_energy_limit& obj) -{ -//std::cout << "calculate_E1_energy_limit::operator=" << std::endl; - - this->calc_E1_limit = obj.calc_E1_limit->clone(); // Calling 'obj.calc_E1_limit->clone()' is why overloading the assignment operator is necessary. - this->P2_vs_puVrms = obj.P2_vs_puVrms; - this->orig_P2_vs_soc_segments = obj.orig_P2_vs_soc_segments; - this->cur_P2_vs_soc_segments = obj.cur_P2_vs_soc_segments; - this->prev_P2_limit = obj.prev_P2_limit; - this->max_abs_P2_in_P2_vs_soc_segments = obj.max_abs_P2_in_P2_vs_soc_segments; - this->max_P2kW_error_before_reappling_P2kW_limit_to_P2_vs_soc_segments = obj.max_P2kW_error_before_reappling_P2kW_limit_to_P2_vs_soc_segments; - this->is_charging_not_discharging = obj.is_charging_not_discharging; - this->prev_P2_limit_binding = obj.prev_P2_limit_binding; - - return *this; -} - - void calculate_E1_energy_limit::apply_P2_limit_to_P2_vs_soc_segments(double P2_limit) { - double soc_0, soc_1, soc_tmp, P_0, P_1; - double m, b; - + double soc_0, soc_1, soc_tmp, P_0, P_1, a, b; + double x_LB, x_UB, m, c; + + std::vector new_P2_vs_soc_segments; for(int i=0; icur_P2_vs_soc_segments.size(); i++) { - soc_0 = this->cur_P2_vs_soc_segments[i].x_LB; - soc_1 = this->cur_P2_vs_soc_segments[i].x_UB; - m = this->cur_P2_vs_soc_segments[i].a; - b = this->cur_P2_vs_soc_segments[i].b; - - P_0 = m*soc_0 + b; - P_1 = m*soc_1 + b; + x_LB = this->cur_P2_vs_soc_segments.at(i).x_LB; // SOC 0 + x_UB = this->cur_P2_vs_soc_segments.at(i).x_UB; // SOC 1 + a = this->cur_P2_vs_soc_segments.at(i).a; + b = this->cur_P2_vs_soc_segments.at(i).b; + + soc_0 = x_LB; + soc_1 = x_UB; + m = a; + c = b; + + P_0 = m * soc_0 + c; // y = mx + c; + P_1 = m * soc_1 + c; - if(this->is_charging_not_discharging) + if(this->mode == charging) { if(P2_limit <= P_0 && P2_limit <= P_1) { - this->cur_P2_vs_soc_segments[i].a = 0; - this->cur_P2_vs_soc_segments[i].b = P2_limit; + a = 0; + b = P2_limit; } else if(P_0 < P2_limit && P2_limit < P_1) { - soc_tmp = (P2_limit - b)/m; - this->cur_P2_vs_soc_segments[i].x_UB = soc_tmp; + soc_tmp = (P2_limit - c)/m; + x_UB = soc_tmp; - line_segment tmp_seg = {soc_tmp, soc_1, 0, P2_limit}; - this->cur_P2_vs_soc_segments.push_back(tmp_seg); + new_P2_vs_soc_segments.emplace_back(soc_tmp, soc_1, 0, P2_limit); } else if(P2_limit < P_0 && P_1 < P2_limit) { - soc_tmp = (P2_limit - b)/m; - this->cur_P2_vs_soc_segments[i].x_LB = soc_tmp; + soc_tmp = (P2_limit - c)/m; + x_LB = soc_tmp; - line_segment tmp_seg = {soc_0, soc_tmp, 0, P2_limit}; - this->cur_P2_vs_soc_segments.push_back(tmp_seg); + new_P2_vs_soc_segments.emplace_back(soc_0, soc_tmp, 0, P2_limit); } } else { if(P_0 <= P2_limit && P_1 <= P2_limit) { - this->cur_P2_vs_soc_segments[i].a = 0; - this->cur_P2_vs_soc_segments[i].b = P2_limit; + a = 0; + b = P2_limit; } else if(P2_limit < P_0 && P_1 < P2_limit) { - soc_tmp = (P2_limit - b)/m; - this->cur_P2_vs_soc_segments[i].x_UB = soc_tmp; + soc_tmp = (P2_limit - c)/m; + x_UB = soc_tmp; - line_segment tmp_seg = {soc_tmp, soc_1, 0, P2_limit}; - this->cur_P2_vs_soc_segments.push_back(tmp_seg); + new_P2_vs_soc_segments.emplace_back(soc_tmp, soc_1, 0, P2_limit); } else if(P_0 < P2_limit && P2_limit < P_1) { - soc_tmp = (P2_limit - b)/m; - this->cur_P2_vs_soc_segments[i].x_LB = soc_tmp; - - line_segment tmp_seg = {soc_0, soc_tmp, 0, P2_limit}; - this->cur_P2_vs_soc_segments.push_back(tmp_seg); + soc_tmp = (P2_limit - c)/m; + x_LB = soc_tmp; + + new_P2_vs_soc_segments.emplace_back(soc_0, soc_tmp, 0, P2_limit); } - } + } + new_P2_vs_soc_segments.emplace_back(x_LB, x_UB, a, b); } - std::sort(this->cur_P2_vs_soc_segments.begin(), this->cur_P2_vs_soc_segments.end()); + std::sort(new_P2_vs_soc_segments.begin(), new_P2_vs_soc_segments.end()); + this->cur_P2_vs_soc_segments = new_P2_vs_soc_segments; } @@ -763,7 +656,7 @@ void calculate_E1_energy_limit::get_E1_limit(double time_step_sec, double init_s P2_limit = this->P2_vs_puVrms.get_val(pu_Vrms); - if(this->is_charging_not_discharging) + if(this->mode == charging) { P2_limit_binding = (P2_limit < this->max_abs_P2_in_P2_vs_soc_segments); } @@ -798,7 +691,8 @@ void calculate_E1_energy_limit::get_E1_limit(double time_step_sec, double init_s this->prev_P2_limit_binding = P2_limit_binding; } - this->calc_E1_limit->get_E1_limit(time_step_sec, init_soc, target_soc, P2_vs_soc_segments_changed, &this->cur_P2_vs_soc_segments, E1_limit); + std::shared_ptr> P2_vs_soc_ptr = std::make_shared >(this->cur_P2_vs_soc_segments); + this->calc_E1_limit->get_E1_limit(time_step_sec, init_soc, target_soc, P2_vs_soc_segments_changed, P2_vs_soc_ptr, E1_limit); } diff --git a/source/base/battery_calculate_limits.h b/source/base/battery_calculate_limits.h index 30ec3e0..b1d8b51 100644 --- a/source/base/battery_calculate_limits.h +++ b/source/base/battery_calculate_limits.h @@ -7,6 +7,7 @@ #include // Stream to consol (may be needed for files too???) #include "helper.h" // line_segment +#include "SOC_vs_P2_factory.h" //----------------------------------------------- @@ -38,32 +39,42 @@ std::ostream& operator<<(std::ostream& out, E1_energy_limit& x); // Algroithm soc_t1 from (t1-t0) and soc_t0 //############################################################################# +struct algorithm_P2_vs_soc_inputs +{ + const double battery_size_kWh; + const double recalc_exponent_threashold; + const double zero_slope_threashold_SOC_vs_P2; + const line_segment& P2_vs_battery_eff; + + algorithm_P2_vs_soc_inputs(const double& battery_size_kWh, const double& recalc_exponent_threashold, + const double& zero_slope_threashold_SOC_vs_P2, const line_segment& P2_vs_battery_eff) + : battery_size_kWh(battery_size_kWh), recalc_exponent_threashold(recalc_exponent_threashold), + zero_slope_threashold_SOC_vs_P2(zero_slope_threashold_SOC_vs_P2), P2_vs_battery_eff(P2_vs_battery_eff) {} +}; class algorithm_P2_vs_soc { private: - algorithm_P2_vs_soc& operator=(const algorithm_P2_vs_soc& obj) = default; protected: - algorithm_P2_vs_soc(const algorithm_P2_vs_soc& obj) = default; - - std::vector *P2_vs_soc; + + std::shared_ptr > P2_vs_soc; + int seg_index, ref_seg_index; - double soc_to_energy, exp_term, prev_exp_val; + double soc_to_energy, prev_exp_val, exp_term; double recalc_exponent_threashold, zero_slope_threashold_P2_vs_soc; bool segment_is_flat_P2_vs_soc, P2_vs_soc_segments_changed; public: - algorithm_P2_vs_soc(){}; - algorithm_P2_vs_soc(double battery_size_kWh, double recalc_exponent_threashold_, double zero_slope_threashold_P2_vs_soc_); - virtual algorithm_P2_vs_soc* clone() const = 0; + + algorithm_P2_vs_soc(const algorithm_P2_vs_soc_inputs& inputs); void find_line_segment_index(double init_soc, bool &line_segment_not_found); double get_soc_UB() const; double get_soc_LB() const; double get_soc_to_energy() const; void get_next_line_segment(bool is_charging_not_discharging, bool &next_line_segment_exists); - void set_P2_vs_soc(std::vector *P2_vs_soc_); + void set_P2_vs_soc(std::shared_ptr > P2_vs_soc); virtual double get_soc_t1(double t1_minus_t0_hrs, double soc_t0) = 0; virtual double get_time_to_soc_t1_hrs(double soc_t0, double soc_t1) = 0; }; @@ -72,15 +83,12 @@ class algorithm_P2_vs_soc class algorithm_P2_vs_soc_no_losses:public algorithm_P2_vs_soc { private: - algorithm_P2_vs_soc_no_losses& operator=(const algorithm_P2_vs_soc_no_losses& obj) = default; - algorithm_P2_vs_soc_no_losses(const algorithm_P2_vs_soc_no_losses& obj); double a, b, A; public: - algorithm_P2_vs_soc_no_losses(){}; - algorithm_P2_vs_soc_no_losses(double battery_size_kWh, double recalc_exponent_threashold_, double zero_slope_threashold_P2_vs_soc_); - virtual algorithm_P2_vs_soc_no_losses* clone() const override final; + + algorithm_P2_vs_soc_no_losses(const algorithm_P2_vs_soc_inputs& inputs); virtual double get_soc_t1(double t1_minus_t0_hrs, double soc_t0) override final; virtual double get_time_to_soc_t1_hrs(double soc_t0, double soc_t1) override final; @@ -90,18 +98,14 @@ class algorithm_P2_vs_soc_no_losses:public algorithm_P2_vs_soc class algorithm_P2_vs_soc_losses:public algorithm_P2_vs_soc { private: - algorithm_P2_vs_soc_losses& operator=(const algorithm_P2_vs_soc_losses& obj) = default; - algorithm_P2_vs_soc_losses(const algorithm_P2_vs_soc_losses& obj); double a, b, c, d, A, B, C, D, z; - line_segment bat_eff_vs_P2; + const line_segment& bat_eff_vs_P2; public: - algorithm_P2_vs_soc_losses(){}; - algorithm_P2_vs_soc_losses(double battery_size_kWh, double recalc_exponent_threashold_, double zero_slope_threashold_P2_vs_soc_, - const line_segment& bat_eff_vs_P2_); - virtual algorithm_P2_vs_soc_losses* clone() const override final; + algorithm_P2_vs_soc_losses(const algorithm_P2_vs_soc_inputs& inputs); + virtual double get_soc_t1(double t1_minus_t0_hrs, double soc_t0) override final; virtual double get_time_to_soc_t1_hrs(double soc_t0, double soc_t1) override final; }; @@ -114,51 +118,37 @@ class algorithm_P2_vs_soc_losses:public algorithm_P2_vs_soc class calc_E1_energy_limit { private: - calc_E1_energy_limit& operator=(const calc_E1_energy_limit& obj) = default; - calc_E1_energy_limit(const calc_E1_energy_limit& obj) = default; protected: - algorithm_P2_vs_soc *P2_vs_soc_algorithm; + std::shared_ptr P2_vs_soc_algorithm; public: - calc_E1_energy_limit(){}; - calc_E1_energy_limit(algorithm_P2_vs_soc *P2_vs_soc_algorithm_); - virtual calc_E1_energy_limit* clone() const = 0; - virtual ~calc_E1_energy_limit(); + + calc_E1_energy_limit(const bool& are_battery_losses, const algorithm_P2_vs_soc_inputs& inputs); - virtual void get_E1_limit(double time_step_sec, double init_soc, double target_soc, bool P2_vs_soc_segments_changed, std::vector *P2_vs_soc_segments, E1_energy_limit& E1_limit) = 0; + virtual void get_E1_limit(double time_step_sec, double init_soc, double target_soc, bool P2_vs_soc_segments_changed, std::shared_ptr > P2_vs_soc, E1_energy_limit& E1_limit) = 0; }; class calc_E1_energy_limit_charging:public calc_E1_energy_limit { private: - calc_E1_energy_limit_charging& operator=(const calc_E1_energy_limit_charging& obj) = default; - calc_E1_energy_limit_charging(const calc_E1_energy_limit_charging& obj); public: - calc_E1_energy_limit_charging(){}; - calc_E1_energy_limit_charging(algorithm_P2_vs_soc *P2_vs_soc_algorithm_); - virtual calc_E1_energy_limit_charging* clone() const override final; - virtual ~calc_E1_energy_limit_charging() override final; + calc_E1_energy_limit_charging(const bool& are_battery_losses, const algorithm_P2_vs_soc_inputs& inputs); - virtual void get_E1_limit(double time_step_sec, double init_soc, double target_soc, bool P2_vs_soc_segments_changed, std::vector *P2_vs_soc_segments, E1_energy_limit& E1_limit) override final; + virtual void get_E1_limit(double time_step_sec, double init_soc, double target_soc, bool P2_vs_soc_segments_changed, std::shared_ptr > P2_vs_soc, E1_energy_limit& E1_limit) override final; }; class calc_E1_energy_limit_discharging:public calc_E1_energy_limit { private: - calc_E1_energy_limit_discharging& operator=(const calc_E1_energy_limit_discharging& obj) = default; - calc_E1_energy_limit_discharging(const calc_E1_energy_limit_discharging& obj); public: - calc_E1_energy_limit_discharging(){}; - calc_E1_energy_limit_discharging(algorithm_P2_vs_soc *P2_vs_soc_algorithm_); - virtual calc_E1_energy_limit_discharging* clone() const override final; - virtual ~calc_E1_energy_limit_discharging() override final; - - virtual void get_E1_limit(double time_step_sec, double init_soc, double target_soc, bool P2_vs_soc_segments_changed, std::vector *P2_vs_soc_segments, E1_energy_limit& E1_limit) override final; + calc_E1_energy_limit_discharging(const bool& are_battery_losses, const algorithm_P2_vs_soc_inputs& inputs); + + virtual void get_E1_limit(double time_step_sec, double init_soc, double target_soc, bool P2_vs_soc_segments_changed, std::shared_ptr > P2_vs_soc, E1_energy_limit& E1_limit) override final; }; @@ -167,27 +157,44 @@ class calc_E1_energy_limit_discharging:public calc_E1_energy_limit //############################################################################# +struct calculate_E1_energy_limit_inputs +{ + const battery_charge_mode mode; + const bool are_battery_losses; + const algorithm_P2_vs_soc_inputs inputs; + const poly_function_of_x P2_vs_puVrms; + const double max_P2kW_error_before_reappling_P2kW_limit_to_P2_vs_soc_segments; + const std::vector P2_vs_soc_segments; + + calculate_E1_energy_limit_inputs(const battery_charge_mode& mode, const bool& are_battery_losses, const algorithm_P2_vs_soc_inputs& inputs, + const poly_function_of_x& P2_vs_puVrms, const double& max_P2kW_error_before_reappling_P2kW_limit_to_P2_vs_soc_segments, + const std::vector P2_vs_soc_segments) + : mode(mode), are_battery_losses(are_battery_losses), inputs(inputs), P2_vs_puVrms(P2_vs_puVrms), + max_P2kW_error_before_reappling_P2kW_limit_to_P2_vs_soc_segments(max_P2kW_error_before_reappling_P2kW_limit_to_P2_vs_soc_segments), + P2_vs_soc_segments(P2_vs_soc_segments) {} +}; + class calculate_E1_energy_limit { private: - calc_E1_energy_limit *calc_E1_limit; - poly_function_of_x P2_vs_puVrms; - std::vector orig_P2_vs_soc_segments; - std::vector cur_P2_vs_soc_segments; - - double prev_P2_limit, max_abs_P2_in_P2_vs_soc_segments; - double max_P2kW_error_before_reappling_P2kW_limit_to_P2_vs_soc_segments; - bool is_charging_not_discharging, prev_P2_limit_binding; - + battery_charge_mode mode; + + poly_function_of_x P2_vs_puVrms; + double max_P2kW_error_before_reappling_P2kW_limit_to_P2_vs_soc_segments; + + std::vector orig_P2_vs_soc_segments; + std::shared_ptr calc_E1_limit; + std::vector cur_P2_vs_soc_segments; + + double prev_P2_limit, max_abs_P2_in_P2_vs_soc_segments; + bool prev_P2_limit_binding; + void apply_P2_limit_to_P2_vs_soc_segments(double P2_limit); - calculate_E1_energy_limit(const calculate_E1_energy_limit& obj) = default; + public: - calculate_E1_energy_limit() {}; - calculate_E1_energy_limit(bool is_charging_not_discharging_, double max_P2kW_error_before_reappling_P2kW_limit_to_P2_vs_soc_segments_, - calc_E1_energy_limit *calc_E1_limit_, poly_function_of_x& P2_vs_puVrms_, std::vector& P2_vs_soc_segments_); - calculate_E1_energy_limit& operator=(const calculate_E1_energy_limit& obj); - ~calculate_E1_energy_limit(); + + calculate_E1_energy_limit::calculate_E1_energy_limit(const calculate_E1_energy_limit_inputs& inputs); void get_E1_limit(double time_step_sec, double init_soc, double target_soc, double pu_Vrms, E1_energy_limit& E1_limit); diff --git a/source/base/battery_integrate_X_in_time.cpp b/source/base/battery_integrate_X_in_time.cpp index cd0b81c..f25c7fb 100644 --- a/source/base/battery_integrate_X_in_time.cpp +++ b/source/base/battery_integrate_X_in_time.cpp @@ -99,7 +99,7 @@ void transition_of_X_through_time::init_transition(double start_of_transition_un this->target_ref_X = target_ref_X_; if(transition_just_crossed_zero) - this->segment_index = this->goto_next_segment_criteria.size() - 1; + this->segment_index = (int)this->goto_next_segment_criteria.size() - 1; else if(trans_interruption_state == new_transition_in_opposite_direction) this->segment_index = 1; else if(trans_interruption_state == new_transition_in_same_direction) diff --git a/source/base/helper.cpp b/source/base/helper.cpp index c98cf4d..2070d2c 100644 --- a/source/base/helper.cpp +++ b/source/base/helper.cpp @@ -6,6 +6,145 @@ #include // sort() #include // used to parse lines #include // time +#include +#include + +std::string trim(const std::string& s) +{ + size_t first = s.find_first_not_of(" \t\n\r\f\v"); + if (first == std::string::npos) { + return ""; + } + size_t last = s.find_last_not_of(" \t\n\r\f\v"); + return s.substr(first, last - first + 1); +} + +std::vector tokenize(std::string s, std::string delim) +{ + std::vector tokenized_vec; + + size_t start, end = -1 * delim.size(); + do { + start = end + delim.size(); + end = s.find(delim, start); + tokenized_vec.push_back(trim(s.substr(start, end - start))); + } while (end != -1); + + return tokenized_vec; +} + +//############################################################################# +// linear_regression +//############################################################################# + + +lin_reg_slope_yinter linear_regression::non_weighted(const std::vector& points) +{ + double sum_x, sum_xx, sum_y, sum_xy, x, y; + + sum_x = 0; + sum_xx = 0; + sum_y = 0; + sum_xy = 0; + + for (int i = 0; i < points.size(); i++) + { + x = points[i].x; + y = points[i].y; + + sum_x += x; + sum_xx += x * x; + sum_y += y; + sum_xy += x * y; + } + + //------------------------------------------------------------------------------------------------- + // \ n sum_x \ \ sum_xx -sum_x \ \ sum_y \ + // K = AtA = \ \ inv(K) = (1/det(K)) * \ \ Atb = \ \ + // \sum_x sum_xx \ \ -sum_x n \ \ sum_xy \ + //------------------------------------------------------------------------------------------------- + // u = inv(AtA)Atb = inv(K)Atb + // K = AtA + // t -> Transpose + + double det, invK_11, invK_12, invK_21, invK_22, n; + + n = points.size(); + det = n * sum_xx - sum_x * sum_x; + + invK_11 = sum_xx / det; + invK_12 = -sum_x / det; + invK_21 = invK_12; + invK_22 = n / det; + + //------------------------------ + + double m, y_intercept; + + y_intercept = invK_11 * sum_y + invK_12 * sum_xy; + m = invK_21 * sum_y + invK_22 * sum_xy; + + //------------------------------ + + lin_reg_slope_yinter return_val = { m, y_intercept }; + return return_val; +} + + +lin_reg_slope_yinter linear_regression::weighted(const std::vector& points) +{ + double sum_w, sum_wx, sum_wxx, sum_wy, sum_wxy, x, y, w; + + sum_w = 0; + sum_wx = 0; + sum_wxx = 0; + sum_wy = 0; + sum_wxy = 0; + + for (int i = 0; i < points.size(); i++) + { + x = points[i].x; + y = points[i].y; + w = points[i].w; + + sum_w += w; + sum_wx += w * x; + sum_wxx += w * x * x; + sum_wy += w * y; + sum_wxy += w * x * y; + } + + //-------------------------------------------------------------------------------------------------------- + // \ sum_w sum_wx \ \ sum_wxx -sum_wx \ \ sum_wy \ + // K = AtCA = \ \ inv(K) = (1/det(K)) * \ \ AtCb = \ \ + // \sum_wx sum_wxx \ \ -sum_wx sum_w \ \ sum_wxy \ + //-------------------------------------------------------------------------------------------------------- + // u = inv(AtCA)AtCb + // K = AtCA + // t -> Transpose + + double det, invK_11, invK_12, invK_21, invK_22; + + det = sum_w * sum_wxx - sum_wx * sum_wx; + + invK_11 = sum_wxx / det; + invK_12 = -sum_wx / det; + invK_21 = invK_12; + invK_22 = sum_w / det; + + //------------------------------ + + double m, y_intercept; + + y_intercept = invK_11 * sum_wy + invK_12 * sum_wxy; + m = invK_21 * sum_wy + invK_22 * sum_wxy; + + //------------------------------ + + lin_reg_slope_yinter return_val = { m, y_intercept }; + return return_val; +} + std::ostream& operator<<(std::ostream& out, line_segment& z) @@ -84,7 +223,7 @@ double poly_function_of_x::get_val(double x) } else { - index = segments.size() - 1; + index = (int)segments.size() - 1; x = segments[index].x_UB; } } @@ -196,7 +335,7 @@ LPF_kernel::LPF_kernel(int max_window_size, double initial_raw_data_value) for(int i=0; iraw_data.push_back(initial_raw_data_value); - LPF_parameters LPF_params; + LPF_parameters LPF_params{}; LPF_params.window_size = 1; LPF_params.window_type = Rectangular; update_LPF(LPF_params); diff --git a/source/base/helper.h b/source/base/helper.h index 356352a..c02b695 100644 --- a/source/base/helper.h +++ b/source/base/helper.h @@ -1,4 +1,3 @@ - #ifndef inl_helper_H #define inl_helper_H @@ -10,16 +9,71 @@ #include // floor, abs #include +#include +#include + +struct pair_hash +{ + template + std::size_t operator() (const std::pair& pair) const { + return std::hash()(pair.first) ^ std::hash()(pair.second); + } +}; + +#ifndef NDEBUG +# define ASSERT(condition, message) \ + do { \ + if (! (condition)) { \ + std::cerr << "Assertion `" #condition "` failed in " << __FILE__ \ + << " line " << __LINE__ << ": " << message << std::endl; \ + std::terminate(); \ + } \ + } while (false) +#else +# define ASSERT(condition, message) do { } while (false) +#endif + +std::vector tokenize(std::string s, std::string delim = ","); + + +//############################################################################# +// linear_regression +//############################################################################# + +struct xy_point +{ + const double x; + const double y; + const double w; + + xy_point(const double& x, const double& y, const double& w) : x(x), y(y), w(w) {} +}; + +struct lin_reg_slope_yinter +{ + const double m; + const double b; + + lin_reg_slope_yinter(const double& m, const double& b) : m(m), b(b) {} +}; + +class linear_regression +{ +public: + static lin_reg_slope_yinter non_weighted(const std::vector& points); + static lin_reg_slope_yinter weighted(const std::vector& points); +}; + struct line_segment { // y = a*x + b double x_LB; double x_UB; - double a; - double b; + double a; + double b; - double y_UB() const {return this->a*this->x_UB + this->b;} - double y_LB() const {return this->a*this->x_LB + this->b;} - double y(double x) const {return this->a*x + this->b;} + const double y_UB() const {return this->a*this->x_UB + this->b;} + const double y_LB() const {return this->a*this->x_LB + this->b;} + const double y(const double& x) const {return this->a*x + this->b;} bool operator<(const line_segment& rhs) const { @@ -30,6 +84,9 @@ struct line_segment { return this->x_LB < rhs.x_LB; } + + line_segment(const double& x_LB, const double& x_UB, const double& a, const double& b) + : x_LB(x_LB), x_UB(x_UB), a(a), b(b) {} }; std::ostream& operator<<(std::ostream& out, line_segment& x); @@ -57,6 +114,10 @@ struct poly_segment double c; double d; double e; + + poly_segment::poly_segment(const double& x_LB, const double& x_UB, const poly_degree& degree, const double& a, + const double& b, const double& c, const double& d, const double& e) + : x_LB(x_LB), x_UB(x_UB), degree(degree), a(a), b(b), c(c), d(d), e(e) {} bool operator<(const poly_segment &rhs) const { diff --git a/source/base/vehicle_charge_model.cpp b/source/base/vehicle_charge_model.cpp index b88f09a..d13de31 100644 --- a/source/base/vehicle_charge_model.cpp +++ b/source/base/vehicle_charge_model.cpp @@ -4,48 +4,20 @@ #include -vehicle_charge_model::vehicle_charge_model(const charge_event_data& event, const battery& bat_, double soc_of_full_battery_) +vehicle_charge_model::vehicle_charge_model(const charge_event_data& event, const battery_inputs& bat_inputs, double soc_of_full_battery) + : charge_event(event), charge_event_id(event.charge_event_id), EV(event.EV), arrival_unix_time(event.arrival_unix_time), + depart_unix_time(event.departure_unix_time), arrival_soc(event.arrival_SOC), requested_depart_soc(event.departure_SOC), + decision_metric(event.stop_charge.decision_metric), soc_mode(event.stop_charge.soc_mode), + depart_time_mode(event.stop_charge.depart_time_mode), + soc_block_charging_max_undershoot_percent(event.stop_charge.soc_block_charging_max_undershoot_percent), + depart_time_block_charging_max_undershoot_percent(event.stop_charge.depart_time_block_charging_max_undershoot_percent), + bat(battery {bat_inputs}), soc_of_full_battery(soc_of_full_battery), charge_has_completed_(false), charge_needs_met_(false), + prev_soc_t1(this->arrival_soc), target_P2_kW(0.0) { - this->charge_event = event; - this->charge_event_id = event.charge_event_id; - this->vehicle_type = event.vehicle_type; - this->arrival_unix_time = event.arrival_unix_time; - this->depart_unix_time = event.departure_unix_time; - this->arrival_soc = event.arrival_SOC; - this->requested_depart_soc = event.departure_SOC; - - this->decision_metric = event.stop_charge.decision_metric; - this->soc_mode = event.stop_charge.soc_mode; - this->depart_time_mode = event.stop_charge.depart_time_mode; - this->soc_block_charging_max_undershoot_percent = event.stop_charge.soc_block_charging_max_undershoot_percent; - this->depart_time_block_charging_max_undershoot_percent = event.stop_charge.depart_time_block_charging_max_undershoot_percent; - -/* -if(this->charge_event_id < 1000) -{ -std::cout << std::endl; -std::cout << "this->decision_metric: " << this->decision_metric << std::endl; -std::cout << "this->soc_mode: " << this->soc_mode << std::endl; -std::cout << "this->depart_time_mode: " << this->depart_time_mode << std::endl; -std::cout << "this->soc_block_charging_max_undershoot_percent: " << this->soc_block_charging_max_undershoot_percent << std::endl; -std::cout << "this->depart_time_block_charging_max_undershoot_percent: " << this->depart_time_block_charging_max_undershoot_percent << std::endl; -std::cout << std::endl; -} -//*/ - //------------------------- - - this->bat = bat_; - this->soc_of_full_battery = soc_of_full_battery_; + double soc_of_empty_battery = 100 - this->soc_of_full_battery; this->bat.set_soc_of_full_and_empty_battery(this->soc_of_full_battery, soc_of_empty_battery); - - this->charge_has_completed_ = false; - this->charge_needs_met_ = false; - - this->prev_soc_t1 = this->arrival_soc; - - this->target_P2_kW = 0; - this->bat.set_target_P2_kW(this->target_P2_kW); + this->bat.set_target_P2_kW(this->target_P2_kW); //------------------------- @@ -53,34 +25,6 @@ std::cout << std::endl; this->depart_soc = (this->requested_depart_soc < this->soc_of_full_battery) ? this->requested_depart_soc : this->soc_of_full_battery; } -/* -vehicle_charge_model::vehicle_charge_model(const vehicle_charge_model& obj) -{ - this->charge_event = obj.charge_event; - this->vehicle_type = obj.vehicle_type; - this->arrival_unix_time = obj.arrival_unix_time; - this->depart_unix_time = obj.depart_unix_time; - this->arrival_soc = obj.arrival_soc; - this->requested_depart_soc = obj.requested_depart_soc; - this->charge_event_id = obj.charge_event_id; - this->decision_metric = obj.decision_metric; - this->soc_mode = obj.soc_mode; - this->depart_time_mode = obj.depart_time_mode; - this->soc_block_charging_max_undershoot_percent = obj.soc_block_charging_max_undershoot_percent; - this->depart_time_block_charging_max_undershoot_percent = obj.depart_time_block_charging_max_undershoot_percent; - - this->stop_charging_at_target_soc = obj.stop_charging_at_target_soc; - this->depart_soc = obj.depart_soc; - - this->bat = obj.bat; - - this->target_P2_kW = obj.target_P2_kW; - this->soc_of_full_battery = obj.soc_of_full_battery; - this->prev_soc_t1 = obj.prev_soc_t1; - this->charge_has_completed_ = obj.charge_has_completed_; - this->charge_needs_met_ = obj.charge_needs_met_; -} -*/ void vehicle_charge_model::set_target_P2_kW(double target_P2_kW_) {this->target_P2_kW = target_P2_kW_;} diff --git a/source/base/vehicle_charge_model.h b/source/base/vehicle_charge_model.h index 3ca9839..b019c23 100644 --- a/source/base/vehicle_charge_model.h +++ b/source/base/vehicle_charge_model.h @@ -6,7 +6,7 @@ #include "battery.h" // battery #include "datatypes_global.h" // charge_event_data, stop_charging_mode, stop_charging_decision_metric -#include "datatypes_global_SE_EV_definitions.h" // vehicle_enum +#include "EVSE_characteristics.h" // EV_type //--------------------------------- @@ -14,7 +14,7 @@ class vehicle_charge_model { private: charge_event_data charge_event; - vehicle_enum vehicle_type; + EV_type EV; double arrival_unix_time, depart_unix_time, arrival_soc, requested_depart_soc; int charge_event_id; @@ -36,7 +36,7 @@ class vehicle_charge_model vehicle_charge_model(const vehicle_charge_model& obj) = default; public: - vehicle_charge_model(const charge_event_data& event, const battery& bat_, double soc_of_full_battery_); + vehicle_charge_model(const charge_event_data& event, const battery_inputs& inputs, double soc_of_full_battery); void set_target_P2_kW(double target_P2_kW_); double get_target_P2_kW(); diff --git a/source/charging_models/EV_characteristics.cpp b/source/charging_models/EV_characteristics.cpp index 791484b..9d89690 100644 --- a/source/charging_models/EV_characteristics.cpp +++ b/source/charging_models/EV_characteristics.cpp @@ -1,4 +1,5 @@ #include "EV_characteristics.h" +#include "helper.h" std::ostream& operator<<(std::ostream& os, const battery_chemistry& chemistry) { switch (chemistry) { @@ -18,15 +19,158 @@ std::ostream& operator<<(std::ostream& os, const battery_chemistry& chemistry) { return os; } +EV_characteristics::EV_characteristics(const EV_type& type, const battery_chemistry& chemistry, + const double& usable_battery_size_kWh, const double& range_miles, const double& efficiency_Wh_per_mile, + const double& AC_charge_rate_kW, const bool& DCFC_capable, const double& max_c_rate, + const double& pack_voltage_at_peak_power_V) : + charge_profile_peak_power_W_per_Wh(this->compute_charge_profile_peak_power_W_per_Wh()), + type(type), chemistry(chemistry), usable_battery_size_kWh(usable_battery_size_kWh), + range_miles(range_miles), efficiency_Wh_per_mile(efficiency_Wh_per_mile), + AC_charge_rate_kW(AC_charge_rate_kW), DCFC_capable(DCFC_capable), max_c_rate(max_c_rate), + pack_voltage_at_peak_power_V(pack_voltage_at_peak_power_V), battery_size_kWh(this->compute_battery_size_kWh()), + battery_size_Ah_1C(this->compute_battery_size_Ah_1C()), + battery_size_with_stochastic_degradation_kWh(compute_battery_size_with_stochastic_degradation_kWh()) {} + +const peak_power_per_crate& EV_characteristics::get_charge_profile_peak_power_W_per_Wh() const { return this->charge_profile_peak_power_W_per_Wh; } + +const EV_type& EV_characteristics::get_type() const { return this->type; } +const battery_chemistry& EV_characteristics::get_chemistry() const { return this->chemistry; } +const bool& EV_characteristics::get_DCFC_capable() const { return this->DCFC_capable; } +const double& EV_characteristics::get_max_c_rate() const { return this->max_c_rate; } +const double& EV_characteristics::get_usable_battery_size_kWh() const { return this->usable_battery_size_kWh; } +const double& EV_characteristics::get_range_miles() const { return this->range_miles; } +const double& EV_characteristics::get_efficiency_Wh_per_mile() const { return this->efficiency_Wh_per_mile; } +const double& EV_characteristics::get_AC_charge_rate_kW() const { return this->AC_charge_rate_kW; } +const double& EV_characteristics::get_pack_voltage_at_peak_power_V() const { return this->pack_voltage_at_peak_power_V; } + +const double& EV_characteristics::get_battery_size_kWh() const { return this->battery_size_kWh; } +const double& EV_characteristics::get_battery_size_Ah_1C() const { return this->battery_size_Ah_1C; } +const double& EV_characteristics::get_battery_size_with_stochastic_degradation_kWh() const { return this->battery_size_with_stochastic_degradation_kWh; } + +//Charge Profile Peak Power(W / Wh) +// c - rate LMO NMC LTO +// 0 0 0 0 +// 1 1.27 1.25 1.13 +// 2 2.42 2.42 2.23 +// 3 3.63 3.75 3.36 +// 4 3.63 3.75 4.52 +// 5 3.63 3.75 5.63 +// 6 3.63 3.75 5.63 + +peak_power_per_crate EV_characteristics::compute_charge_profile_peak_power_W_per_Wh() +{ + peak_power_per_crate data; + + std::vector crate_vec = { 0, 1, 2, 3, 4, 5, 6 }; + std::vector LMO_power_vec = { 0, 1.27, 2.42, 3.63, 3.63, 3.63, 3.63 }; + std::vector NMC_power_vec = { 0, 1.25, 2.42, 3.75, 3.75, 3.75, 3.75 }; + std::vector LTO_power_vec = { 0, 1.13, 2.23, 3.36, 4.52, 5.63, 5.63 }; + + data[LMO] = [&]() { + std::map m; + for (int i = 0; i < crate_vec.size(); i++) + { + m.emplace(crate_vec[i], LMO_power_vec[i]); + } + return m; + }(); + + data[NMC] = [&]() { + std::map m; + for (int i = 0; i < crate_vec.size(); i++) + { + m.emplace(crate_vec[i], NMC_power_vec[i]); + } + return m; + }(); + + data[LTO] = [&]() { + std::map m; + for (int i = 0; i < crate_vec.size(); i++) + { + m.emplace(crate_vec[i], LTO_power_vec[i]); + } + return m; + }(); + + return std::move(data); +} + +double EV_characteristics::compute_battery_size_kWh() +{ + return this->usable_battery_size_kWh / 0.95; +} + +double EV_characteristics::compute_battery_size_Ah_1C() +{ + const std::map& profile_peak_power_W_per_Wh = this->charge_profile_peak_power_W_per_Wh.at(this->chemistry); + + crate smallest_crate = profile_peak_power_W_per_Wh.begin()->first; + crate largest_crate = (--profile_peak_power_W_per_Wh.end())->first; + + if (this->max_c_rate < smallest_crate || this->max_c_rate > largest_crate) + { + ASSERT(false, "invalid crate for model " << this->type << " crate needs to be between " << smallest_crate << " and " << largest_crate); + } + + auto it_UB = profile_peak_power_W_per_Wh.upper_bound(this->max_c_rate); + auto it_LB = std::prev(it_UB); + if (it_UB == profile_peak_power_W_per_Wh.end()) + { + --it_UB; + } + + crate crate_LB = it_LB->first; + crate crate_UB = it_UB->first; + double weight = (this->max_c_rate - crate_LB) / (crate_UB - crate_LB); + + power peak_power_LB = it_LB->second; + power peak_power_UB = it_UB->second; + + power weighted_peak_power_W_per_Wh = peak_power_LB + weight * (peak_power_UB - peak_power_LB); + + power peak_power_kW = this->battery_size_kWh * weighted_peak_power_W_per_Wh; + + double battery_size_Ah_1C = 1000 * peak_power_kW / (this->max_c_rate * this->pack_voltage_at_peak_power_V); + + double average_pack_voltage_V = 1000 * this->battery_size_kWh * battery_size_Ah_1C; + + return battery_size_Ah_1C; +} + +double EV_characteristics::compute_battery_size_with_stochastic_degradation_kWh() +{ + if (this->chemistry == LTO) + { + return rand_val::rand_range(0.95, 1.0) * this->battery_size_kWh; + } + else if (this->chemistry == LMO) + { + return rand_val::rand_range(0.85, 1.0) * this->battery_size_kWh; + } + else if (this->chemistry == NMC) + { + return rand_val::rand_range(0.90, 1.0) * this->battery_size_kWh; + } + else + { + ASSERT(false, "invalid battery chemistry"); + } +} + std::ostream& operator<<(std::ostream& os, const EV_characteristics& ev) { os << "Type: " << ev.get_type() << std::endl; os << "Battery Chemistry: " << ev.get_chemistry() << std::endl; - os << "DCFC capable: " << ev.get_DCFC_capable() << std::endl; - os << "Max C Rate: " << ev.get_max_c_rate() << std::endl; - os << "Battery Size (kWh): " << ev.get_battery_size_kWh() << std::endl; + os << "Usable Battery Size (kWh): " << ev.get_usable_battery_size_kWh() << std::endl; os << "Range (miles): " << ev.get_range_miles() << std::endl; os << "Efficiency (Wh/mile): " << ev.get_efficiency_Wh_per_mile() << std::endl; os << "AC Charge Rate (kW): " << ev.get_AC_charge_rate_kW() << std::endl; + os << "DCFC capable: " << ev.get_DCFC_capable() << std::endl; + os << "Max C Rate: " << ev.get_max_c_rate() << std::endl; + os << "Pack Valtage at Peak Power (V): " << ev.get_pack_voltage_at_peak_power_V() << std::endl; + os << "Battery Size (kWh): " << ev.get_battery_size_kWh() << std::endl; + os << "Battery Size (Ah): " << ev.get_battery_size_Ah_1C() << std::endl; + return os; } diff --git a/source/charging_models/EV_characteristics.h b/source/charging_models/EV_characteristics.h index ae990a9..9f75aa9 100644 --- a/source/charging_models/EV_characteristics.h +++ b/source/charging_models/EV_characteristics.h @@ -3,6 +3,8 @@ #include #include +#include +#include typedef std::string EV_type; @@ -15,34 +17,56 @@ enum battery_chemistry std::ostream& operator<<(std::ostream& os, const battery_chemistry& chemistry); +typedef double crate; +typedef double power; +typedef std::unordered_map< battery_chemistry, std::map > peak_power_per_crate; + struct EV_characteristics { private: + + const peak_power_per_crate charge_profile_peak_power_W_per_Wh; + const EV_type type; const battery_chemistry chemistry; - const double max_c_rate; - const double battery_size_kWh; + const double usable_battery_size_kWh; const double range_miles; const double efficiency_Wh_per_mile; const double AC_charge_rate_kW; const bool DCFC_capable; + const double max_c_rate; + const double pack_voltage_at_peak_power_V; + + const double battery_size_kWh; + const double battery_size_Ah_1C; + const double battery_size_with_stochastic_degradation_kWh; + + peak_power_per_crate compute_charge_profile_peak_power_W_per_Wh(); + double compute_battery_size_kWh(); + double compute_battery_size_Ah_1C(); + double compute_battery_size_with_stochastic_degradation_kWh(); public: - EV_characteristics(const EV_type& type, const battery_chemistry& chemistry, const bool& DCFC_capable, - const double& max_c_rate, const double& battery_size_kWh, const double& range_miles, - const double& efficiency_Wh_per_mile, const double& AC_charge_rate_kW) - : type(type), chemistry(chemistry), DCFC_capable(DCFC_capable), max_c_rate(max_c_rate), - battery_size_kWh(battery_size_kWh), range_miles(range_miles), efficiency_Wh_per_mile(efficiency_Wh_per_mile), - AC_charge_rate_kW(AC_charge_rate_kW) {} - - EV_type get_type() const { return this->type; } - battery_chemistry get_chemistry() const { return this->chemistry; } - bool get_DCFC_capable() const { return this->DCFC_capable; } - double get_max_c_rate() const { return this->max_c_rate; } - double get_battery_size_kWh() const { return this->battery_size_kWh; } - double get_range_miles() const { return this->range_miles; } - double get_efficiency_Wh_per_mile() const { return this->efficiency_Wh_per_mile; } - double get_AC_charge_rate_kW() const { return this->AC_charge_rate_kW; } + EV_characteristics(const EV_type& type, const battery_chemistry& chemistry, const double& usable_battery_size_kWh, + const double& range_miles, const double& efficiency_Wh_per_mile, const double& AC_charge_rate_kW, + const bool& DCFC_capable, const double& max_c_rate, const double& pack_voltage_at_peak_power_V); + + const peak_power_per_crate& get_charge_profile_peak_power_W_per_Wh() const; + + const EV_type& get_type() const; + const battery_chemistry& get_chemistry() const; + const double& get_usable_battery_size_kWh() const; + const double& get_range_miles() const; + const double& get_efficiency_Wh_per_mile() const; + const double& get_AC_charge_rate_kW() const; + const bool& get_DCFC_capable() const; + const double& get_max_c_rate() const; + const double& get_pack_voltage_at_peak_power_V() const; + + const double& get_battery_size_kWh() const; + const double& get_battery_size_Ah_1C() const; + const double& get_battery_size_with_stochastic_degradation_kWh() const; + }; std::ostream& operator<<(std::ostream& os, const EV_characteristics& ev); diff --git a/source/charging_models/datatypes_global.cpp b/source/charging_models/datatypes_global.cpp index 6c249d0..90d8cf3 100644 --- a/source/charging_models/datatypes_global.cpp +++ b/source/charging_models/datatypes_global.cpp @@ -233,7 +233,7 @@ std::string stop_charging_criteria::get_file_header() std::ostream& operator<<(std::ostream& out, const charge_event_data& x) { - out << x.charge_event_id << "," << x.SE_group_id << "," << x.SE_id << "," << x.vehicle_id << "," << x.vehicle_type << "," << x.arrival_unix_time << "," << x.departure_unix_time << "," << x.arrival_SOC << "," << x.departure_SOC << "," << x.stop_charge; + out << x.charge_event_id << "," << x.SE_group_id << "," << x.SE_id << "," << x.vehicle_id << "," << x.EV << "," << x.arrival_unix_time << "," << x.departure_unix_time << "," << x.arrival_SOC << "," << x.departure_SOC << "," << x.stop_charge; return out; } @@ -264,7 +264,7 @@ stop_charging_criteria::stop_charging_criteria(stop_charging_decision_metric dec } -charge_event_data::charge_event_data(int charge_event_id_, int SE_group_id_, SE_id_type SE_id_, vehicle_id_type vehicle_id_, vehicle_enum vehicle_type_, +charge_event_data::charge_event_data(int charge_event_id_, int SE_group_id_, SE_id_type SE_id_, vehicle_id_type vehicle_id_, EV_type EV, double arrival_unix_time_, double departure_unix_time_, double arrival_SOC_, double departure_SOC_, stop_charging_criteria stop_charge_, control_strategy_enums control_enums_) { @@ -272,7 +272,7 @@ charge_event_data::charge_event_data(int charge_event_id_, int SE_group_id_, SE_ this->SE_group_id = SE_group_id_; this->SE_id = SE_id_; this->vehicle_id = vehicle_id_; - this->vehicle_type = vehicle_type_; + this->EV = EV; this->arrival_unix_time = arrival_unix_time_; this->departure_unix_time = departure_unix_time_; this->arrival_SOC = arrival_SOC_; @@ -293,7 +293,7 @@ SE_group_charge_event_data::SE_group_charge_event_data(int SE_group_id_, std::ve // SE_group Configuration //================================================================== -SE_configuration::SE_configuration(int SE_group_id_, SE_id_type SE_id_, supply_equipment_enum supply_equipment_type_, double lat_, double long_, grid_node_id_type grid_node_id_, std::string location_type_) +SE_configuration::SE_configuration(int SE_group_id_, SE_id_type SE_id_, EVSE_type supply_equipment_type_, double lat_, double long_, grid_node_id_type grid_node_id_, std::string location_type_) { this->SE_group_id = SE_group_id_; this->SE_id = SE_id_; diff --git a/source/charging_models/datatypes_global.h b/source/charging_models/datatypes_global.h index 65b1ac5..6731122 100644 --- a/source/charging_models/datatypes_global.h +++ b/source/charging_models/datatypes_global.h @@ -2,7 +2,10 @@ #ifndef inl_datatypes_global_H #define inl_datatypes_global_H -#include "datatypes_global_SE_EV_definitions.h" // supply_equipment_enum, vehicle_enum +//#include "datatypes_global_SE_EV_definitions.h" // supply_equipment_enum, vehicle_enum + +#include "EV_characteristics.h" +#include "EVSE_characteristics.h" #include #include @@ -319,7 +322,7 @@ struct charge_event_data int SE_group_id; SE_id_type SE_id; vehicle_id_type vehicle_id; - vehicle_enum vehicle_type; + EV_type EV; double arrival_unix_time; double departure_unix_time; double arrival_SOC; @@ -329,7 +332,7 @@ struct charge_event_data control_strategy_enums control_enums; charge_event_data() {}; - charge_event_data(int charge_event_id_, int SE_group_id_, SE_id_type SE_id_, vehicle_id_type vehicle_id_, vehicle_enum vehicle_type_, + charge_event_data(int charge_event_id_, int SE_group_id_, SE_id_type SE_id_, vehicle_id_type vehicle_id_, EV_type EV, double arrival_unix_time_, double departure_unix_time_, double arrival_SOC_, double departure_SOC_, stop_charging_criteria stop_charge_, control_strategy_enums control_enums_); static std::string get_file_header(); @@ -382,14 +385,14 @@ struct SE_configuration { int SE_group_id; SE_id_type SE_id; - supply_equipment_enum supply_equipment_type; + EVSE_type supply_equipment_type; double lattitude; double longitude; grid_node_id_type grid_node_id; std::string location_type; SE_configuration() {}; - SE_configuration(int SE_group_id_, SE_id_type SE_id_, supply_equipment_enum supply_equipment_type_, double lat_, double long_, grid_node_id_type grid_node_id_, std::string location_type_); + SE_configuration(int SE_group_id_, SE_id_type SE_id_, EVSE_type supply_equipment_type_, double lat_, double long_, grid_node_id_type grid_node_id_, std::string location_type_); }; @@ -462,7 +465,7 @@ struct active_CE double now_acPkW; double now_acQkVAR; vehicle_id_type vehicle_id; - vehicle_enum vehicle_type; + EV_type vehicle_type; active_CE() {}; }; @@ -513,7 +516,7 @@ enum ac_to_dc_converter_enum struct pev_batterySize_info { - vehicle_enum vehicle_type; + EV_type vehicle_type; double battery_size_kWh; double battery_size_with_stochastic_degredation_kWh; }; @@ -645,8 +648,8 @@ struct pev_charge_ramping struct pev_charge_ramping_workaround { pev_charge_ramping pev_charge_ramping_obj; - vehicle_enum pev_type; - supply_equipment_enum SE_type; + EV_type pev_type; + EVSE_type SE_type; }; diff --git a/source/dcfc_charge_profile.csv b/source/dcfc_charge_profile.csv new file mode 100644 index 0000000..0003dcb --- /dev/null +++ b/source/dcfc_charge_profile.csv @@ -0,0 +1,103 @@ +soc, XFC250_300kW_dcfc_50, +0.000000, 83.256603, + 1.000000, 86.230053, + 2.000000, 89.203503, + 3.000000, 92.176953, + 4.000000, 95.150404, + 5.000000, 95.861610, + 6.000000, 96.572817, + 7.000000, 97.284024, + 8.000000, 97.995231, + 9.000000, 98.706438, + 10.000000, 99.417645, + 11.000000, 99.598066, + 12.000000, 99.778486, + 13.000000, 99.958907, + 14.000000, 100.139328, + 15.000000, 100.319749, + 16.000000, 100.500169, + 17.000000, 100.680590, + 18.000000, 100.861011, + 19.000000, 101.041432, + 20.000000, 101.221852, + 21.000000, 101.402273, + 22.000000, 101.582694, + 23.000000, 101.763114, + 24.000000, 101.943535, + 25.000000, 102.123956, + 26.000000, 102.304377, + 27.000000, 102.484797, + 28.000000, 102.665218, + 29.000000, 102.845639, + 30.000000, 103.026060, + 31.000000, 103.206480, + 32.000000, 103.386901, + 33.000000, 103.567322, + 34.000000, 103.747743, + 35.000000, 103.928163, + 36.000000, 104.108584, + 37.000000, 104.289005, + 38.000000, 104.469425, + 39.000000, 104.649846, + 40.000000, 104.830267, + 41.000000, 105.010688, + 42.000000, 105.191108, + 43.000000, 105.371529, + 44.000000, 105.551950, + 45.000000, 105.732371, + 46.000000, 105.912791, + 47.000000, 106.093212, + 48.000000, 106.273633, + 49.000000, 106.454054, + 50.000000, 106.634474, + 51.000000, 106.814895, + 52.000000, 106.995316, + 53.000000, 107.175736, + 54.000000, 107.356157, + 55.000000, 107.536578, + 56.000000, 107.716999, + 57.000000, 107.897419, + 58.000000, 108.077840, + 59.000000, 108.258261, + 60.000000, 108.438682, + 61.000000, 108.619102, + 62.000000, 108.799523, + 63.000000, 108.979944, + 64.000000, 109.160365, + 65.000000, 109.340785, + 66.000000, 109.521206, + 67.000000, 109.701627, + 68.000000, 109.882048, + 69.000000, 110.062468, + 70.000000, 110.242889, + 71.000000, 110.423310, + 72.000000, 110.603730, + 73.000000, 110.784151, + 74.000000, 110.964572, + 75.000000, 111.144993, + 76.000000, 111.325413, + 77.000000, 111.505834, + 78.000000, 111.686255, + 79.000000, 111.866676, + 80.000000, 112.047096, + 81.000000, 112.227517, + 82.000000, 112.407938, + 83.000000, 112.588359, + 84.000000, 112.768779, + 85.000000, 112.949200, + 86.000000, 113.129621, + 87.000000, 113.310041, + 88.000000, 113.490462, + 89.000000, 105.997807, + 90.000000, 96.864035, + 91.000000, 87.730263, + 92.000000, 78.596491, + 93.000000, 69.462719, + 94.000000, 60.328947, + 95.000000, 51.195175, + 96.000000, 42.061404, + 97.000000, 32.927632, + 98.000000, 23.793860, + 99.000000, 14.660088, + 100.000000, 5.526316, + \ No newline at end of file diff --git a/source/factory/EV_charge_model_factory.cpp b/source/factory/EV_charge_model_factory.cpp new file mode 100644 index 0000000..1bb8c65 --- /dev/null +++ b/source/factory/EV_charge_model_factory.cpp @@ -0,0 +1,93 @@ +#include "EV_charge_model_factory.h" + +#include "helper.h" //poly_segment + +#include + + +//############################################################################# +// EV Charge Model Factory +//############################################################################# + +EV_charge_model_factory::EV_charge_model_factory(const EV_EVSE_inventory& inventory, + const EV_ramping_map& custom_EV_ramping, const EV_EVSE_ramping_map& custom_EV_EVSE_ramping, + const bool& model_stochastic_battery_degregation) + : inventory(inventory), + charging_transitions_obj(charging_transitions_factory(inventory, custom_EV_ramping, custom_EV_EVSE_ramping)), + puVrms_vs_P2_obj(puVrms_vs_P2_factory(inventory)), + SOC_vs_P2_obj(SOC_vs_P2_factory(inventory)), P2_vs_battery_eff_obj(P2_vs_battery_efficiency_factory(inventory)), + model_stochastic_battery_degregation(model_stochastic_battery_degregation) {} + + +vehicle_charge_model* EV_charge_model_factory::alloc_get_EV_charge_model(const charge_event_data& event, const EVSE_type& EVSE, const double& SE_P2_limit_kW) +{ + const EV_type& EV = event.EV; + double battery_size_kWh = this->inventory.get_EV_inventory().at(EV).get_usable_battery_size_kWh(); + double battery_size_with_degredation_kWh = this->inventory.get_EV_inventory().at(EV).get_battery_size_with_stochastic_degradation_kWh(); + battery_chemistry chemistry = this->inventory.get_EV_inventory().at(EV).get_chemistry(); + + double soc_of_full_battery = 99.8; + double recalc_exponent_threashold = 0.00000001; // Should be very small + double max_P2kW_error_before_reappling_P2kW_limit_to_P2_vs_soc_segments = 0.5; + + bool will_never_discharge = true; + bool are_battery_losses = true; + + //--------------------------------- + + //precomputed + const integrate_X_through_time& get_next_P2 = this->charging_transitions_obj.get_charging_transitions(EV, EVSE); + + //--------------------------------- + + //dynamic + const poly_function_of_x puVrms_vs_P2_curve = this->puVrms_vs_P2_obj.get_puVrms_vs_P2(EVSE, SE_P2_limit_kW); + + //precomputed + const SOC_vs_P2& SOC_vs_P2_curve = this->SOC_vs_P2_obj.get_SOC_vs_P2_curves(EV, EVSE); + + //--------------------------------- + + double zero_slope_threashold_bat_eff_vs_P2; + + //precomputed + const P2_vs_battery_efficiency& P2_vs_battery_eff_charging = this->P2_vs_battery_eff_obj.get_P2_vs_battery_eff(EV, charging); + //precomputed + const P2_vs_battery_efficiency& P2_vs_battery_eff_discharging = this->P2_vs_battery_eff_obj.get_P2_vs_battery_eff(EV, discharging); + + zero_slope_threashold_bat_eff_vs_P2 = (P2_vs_battery_eff_charging.zero_slope_threashold < P2_vs_battery_eff_discharging.zero_slope_threashold) ? P2_vs_battery_eff_charging.zero_slope_threashold : P2_vs_battery_eff_discharging.zero_slope_threashold; + + //--------------------------------- + + double final_bat_size_kWh; + + if (this->model_stochastic_battery_degregation) + final_bat_size_kWh = battery_size_with_degredation_kWh; + else + final_bat_size_kWh = battery_size_kWh; + + //--------------------------------- + + algorithm_P2_vs_soc_inputs charging_inputs{ final_bat_size_kWh, recalc_exponent_threashold, SOC_vs_P2_curve.zero_slope_threashold, + P2_vs_battery_eff_charging.curve }; + algorithm_P2_vs_soc_inputs discharging_inputs{ final_bat_size_kWh, recalc_exponent_threashold, SOC_vs_P2_curve.zero_slope_threashold, + P2_vs_battery_eff_discharging.curve }; + + calculate_E1_energy_limit_inputs E1_limits_charging_inputs{ charging, are_battery_losses, charging_inputs, puVrms_vs_P2_curve, + max_P2kW_error_before_reappling_P2kW_limit_to_P2_vs_soc_segments, SOC_vs_P2_curve.curve }; + calculate_E1_energy_limit_inputs E1_limits_discharging_inputs{ discharging, are_battery_losses, discharging_inputs, puVrms_vs_P2_curve, + max_P2kW_error_before_reappling_P2kW_limit_to_P2_vs_soc_segments, SOC_vs_P2_curve.curve }; + + battery_inputs bat_input{ E1_limits_charging_inputs, E1_limits_discharging_inputs, get_next_P2, final_bat_size_kWh, event.arrival_SOC, + zero_slope_threashold_bat_eff_vs_P2, will_never_discharge, P2_vs_battery_eff_charging.curve, P2_vs_battery_eff_discharging.curve }; + + //--------------------------------- + + return new vehicle_charge_model(event, bat_input, soc_of_full_battery); +} + + +void EV_charge_model_factory::write_charge_profile(const std::string& output_path) const +{ + this->SOC_vs_P2_obj.write_charge_profile(output_path); +} \ No newline at end of file diff --git a/source/factory/EV_charge_model_factory.h b/source/factory/EV_charge_model_factory.h new file mode 100644 index 0000000..6446e2c --- /dev/null +++ b/source/factory/EV_charge_model_factory.h @@ -0,0 +1,41 @@ +#ifndef EV_CHARGE_MODEL_FACTORY_H +#define EV_CHARGE_MODEL_FACTORY_H + +#include +#include + +#include "EV_characteristics.h" +#include "EVSE_characteristics.h" +#include "EV_EVSE_inventory.h" + +#include "charging_transitions_factory.h" +#include "puVrms_vs_P2_factory.h" +#include "SOC_vs_P2_factory.h" +#include "P2_vs_battery_efficiency_factory.h" + +#include "battery_calculate_limits.h" +#include "vehicle_charge_model.h" + +class EV_charge_model_factory +{ +private: + + const EV_EVSE_inventory& inventory; + + const charging_transitions_factory charging_transitions_obj; + const puVrms_vs_P2_factory puVrms_vs_P2_obj; + const SOC_vs_P2_factory SOC_vs_P2_obj; + const P2_vs_battery_efficiency_factory P2_vs_battery_eff_obj; + + const bool model_stochastic_battery_degregation; + +public: + EV_charge_model_factory(const EV_EVSE_inventory& inventory, const EV_ramping_map& EV_ramping, const EV_EVSE_ramping_map& EV_EVSE_ramping, + const bool& model_stochastic_battery_degregation); + + vehicle_charge_model* alloc_get_EV_charge_model(const charge_event_data& event, const EVSE_type& EVSE, const double& SE_P2_limit_kW); + + void write_charge_profile(const std::string& output_path) const; +}; + +#endif \ No newline at end of file diff --git a/source/factory/P2_vs_battery_efficiency_factory.cpp b/source/factory/P2_vs_battery_efficiency_factory.cpp new file mode 100644 index 0000000..4c9becc --- /dev/null +++ b/source/factory/P2_vs_battery_efficiency_factory.cpp @@ -0,0 +1,92 @@ +#include "P2_vs_battery_efficiency_factory.h" +#include "helper.h" + +//################################################## +// P2_vs_battery_efficiency +//################################################## + +P2_vs_battery_efficiency::P2_vs_battery_efficiency(const line_segment& curve, const double& zero_slope_threashold) + : curve(curve), zero_slope_threashold(zero_slope_threashold) {} + + +//################################################## +// P2_vs_battery_efficiency_factory +//################################################## + +P2_vs_battery_efficiency_factory::P2_vs_battery_efficiency_factory(const EV_EVSE_inventory& inventory) : inventory(inventory), P2_vs_battery_eff(this->load_P2_vs_battery_eff()) {} + +const P2_vs_battery_efficiency_map P2_vs_battery_efficiency_factory::load_P2_vs_battery_eff() +{ + P2_vs_battery_efficiency_map outer_map; + + EV_type EV; + battery_chemistry chemistry; + battery_charge_mode mode; + double battery_size_kWh; + double zero_slope_threashold; + + for (const auto& EVs : this->inventory.get_EV_inventory()) + { + std::unordered_map< battery_charge_mode, P2_vs_battery_efficiency> inner_map; + + EV = EVs.first; + chemistry = EVs.second.get_chemistry(); + battery_size_kWh = EVs.second.get_battery_size_kWh(); + + if (chemistry == LTO) + { + mode = charging; + line_segment curve1(0, 6 * battery_size_kWh, -0.0078354 / battery_size_kWh, 0.987448); + zero_slope_threashold = (std::abs(curve1.a) < 0.000001) ? 0.000001 : 0.9 * std::abs(curve1.a); // If the slope is smaller than 0.000001 that the 'safe' method will be used. // Very little rational to using 0.000001 it will allow the complex method using a 1000 kWh battery pack + inner_map.emplace(mode, P2_vs_battery_efficiency(curve1, zero_slope_threashold)); + + //----------------------- + mode = discharging; + line_segment curve2(-6 * battery_size_kWh, 0, -0.0102411 / battery_size_kWh, 1.0109224); + zero_slope_threashold = (std::abs(curve2.a) < 0.000001) ? 0.000001 : 0.9 * std::abs(curve2.a); + + inner_map.emplace(mode, P2_vs_battery_efficiency(curve2, zero_slope_threashold)); + } + else if (chemistry == LMO) + { + mode = charging; + line_segment curve1(0, 4 * battery_size_kWh, -0.0079286 / battery_size_kWh, 0.9936637); + zero_slope_threashold = (std::abs(curve1.a) < 0.000001) ? 0.000001 : 0.9 * std::abs(curve1.a); + + inner_map.emplace(mode, P2_vs_battery_efficiency(curve1, zero_slope_threashold)); + + //----------------------- + mode = discharging; + line_segment curve2(-4 * battery_size_kWh, 0, -0.0092091 / battery_size_kWh, 1.005674); + zero_slope_threashold = (std::abs(curve2.a) < 0.000001) ? 0.000001 : 0.9 * std::abs(curve2.a); + + inner_map.emplace(mode, P2_vs_battery_efficiency(curve2, zero_slope_threashold)); + } + else if (chemistry == NMC) + { + mode = charging; + line_segment curve1(0, 4 * battery_size_kWh, -0.0053897 / battery_size_kWh, 0.9908405); + zero_slope_threashold = (std::abs(curve1.a) < 0.000001) ? 0.000001 : 0.9 * std::abs(curve1.a); + + inner_map.emplace(mode, P2_vs_battery_efficiency(curve1, zero_slope_threashold)); + + //---------------------- + mode = discharging; + line_segment curve2(-4 * battery_size_kWh, 0, -0.0062339 / battery_size_kWh, 1.0088727); + zero_slope_threashold = (std::abs(curve2.a) < 0.000001) ? 0.000001 : 0.9 * std::abs(curve2.a); + + inner_map.emplace(mode, P2_vs_battery_efficiency(curve2, zero_slope_threashold)); + } + else + { + ASSERT(false, "battery chemistry not valid"); + } + outer_map.emplace(EV, inner_map); + } + return std::move(outer_map); +} + +const P2_vs_battery_efficiency& P2_vs_battery_efficiency_factory::get_P2_vs_battery_eff(const EV_type& EV, const battery_charge_mode& mode) const +{ + return this->P2_vs_battery_eff.at(EV).at(mode); +} \ No newline at end of file diff --git a/source/factory/P2_vs_battery_efficiency_factory.h b/source/factory/P2_vs_battery_efficiency_factory.h new file mode 100644 index 0000000..f8f6849 --- /dev/null +++ b/source/factory/P2_vs_battery_efficiency_factory.h @@ -0,0 +1,36 @@ +#ifndef P2_VS_BATTERY_EFFICIENCY_H +#define P2_VS_BATTERY_EFFICIENCY_H + +#include +#include + +#include "SOC_vs_P2_factory.h" +#include "EV_characteristics.h" +#include "EV_EVSE_inventory.h" + +#include "helper.h" // line_segment + +struct P2_vs_battery_efficiency +{ + const line_segment curve; + const double zero_slope_threashold; + P2_vs_battery_efficiency(const line_segment& curve, const double& zero_slope_threashold); +}; + +typedef std::unordered_map > P2_vs_battery_efficiency_map; + +class P2_vs_battery_efficiency_factory +{ +private: + const EV_EVSE_inventory& inventory; + + const P2_vs_battery_efficiency_map P2_vs_battery_eff; + + const P2_vs_battery_efficiency_map load_P2_vs_battery_eff(); + +public: + P2_vs_battery_efficiency_factory(const EV_EVSE_inventory& inventory); + + const P2_vs_battery_efficiency& get_P2_vs_battery_eff(const EV_type& EV, const battery_charge_mode& mode) const; +}; +#endif \ No newline at end of file diff --git a/source/factory/SOC_vs_P2_factory.cpp b/source/factory/SOC_vs_P2_factory.cpp new file mode 100644 index 0000000..9be630b --- /dev/null +++ b/source/factory/SOC_vs_P2_factory.cpp @@ -0,0 +1,1264 @@ +#include "SOC_vs_P2_factory.h" +#include + + +//########################################################## +// create_dcPkW_from_soc +//########################################################## + + +create_dcPkW_from_soc::create_dcPkW_from_soc(const EV_EVSE_inventory& inventory, + const std::map >, std::greater >& curves, + const battery_charge_mode& mode) + : inventory(inventory), curves(curves), mode(mode) {} + +const double create_dcPkW_from_soc::compute_min_non_zero_slope(const std::vector& charge_profile) const +{ + double abs_min_non_zero_slope = 1000000; + + for (const line_segment& ls : charge_profile) + { + if ((0 < std::abs(ls.a)) && (std::abs(ls.a) < abs_min_non_zero_slope)) + { + abs_min_non_zero_slope = std::abs(ls.a); + } + } + return abs_min_non_zero_slope; +} + +const double create_dcPkW_from_soc::compute_zero_slope_threashold_P2_vs_soc(const std::vector& charge_profile) const +{ + const double min_zero_slope_threashold_P2_vs_soc = 0.01; // 1 kW change in P2 over 100 soc + const double min_non_zero_slope = this->compute_min_non_zero_slope(charge_profile); + + double zero_slope_threashold_P2_vs_soc; + if (min_non_zero_slope < min_zero_slope_threashold_P2_vs_soc) + { + zero_slope_threashold_P2_vs_soc = min_zero_slope_threashold_P2_vs_soc; + } + else + { + zero_slope_threashold_P2_vs_soc = 0.9 * min_non_zero_slope; + } + return zero_slope_threashold_P2_vs_soc; +} + +const SOC_vs_P2 create_dcPkW_from_soc::get_L1_or_L2_charge_profile(const EV_type& EV) const +{ + + const double battery_size_kWh = this->inventory.get_EV_inventory().at(EV).get_battery_size_kWh(); + const double AC_charge_rate_kW = this->inventory.get_EV_inventory().at(EV).get_AC_charge_rate_kW(); + + const auto curve_1c_ptr = this->curves.find(1.0); + + ASSERT(curve_1c_ptr != this->curves.end(), "Error: 1c curve doesnot exist in charging profiles" << std::endl); + ASSERT(curve_1c_ptr->second.size() >= 2, "Error: 1c curve should have atleast 2 points. currently there are " << curve_1c_ptr->second.size() << " points" << std::endl); + + auto elem_ptr = curve_1c_ptr->second.begin(); + + double soc_A = elem_ptr->first; + double P_A = elem_ptr->second.first * battery_size_kWh; + + elem_ptr++; + + double soc_B = elem_ptr->first; + double P_B = elem_ptr->second.first * battery_size_kWh; + + double m = (P_A - P_B) / (soc_A - soc_B); + double b = P_A - m * soc_A; + + double soc_intersection = (AC_charge_rate_kW - b) / m; + + //------------------------------------------------ + + const std::vector charge_profile = [&]() { + // start and end of SOC below are supposed to be 0 and 100 but due to the following reason it gets adjusted + // Don Scoffield's notes + // P2 vs soc must be defigned a little below 0 soc and a little above 100 soc. + + // When a battery is approaching 0 soc or 100 soc there is a chance that energy continues to go into the battery while + // the soc is not changing (fixed at 0 or 100 soc) + // - This is caused by the fact that when a battery stopps charging/discharging there is a ramp down period. + // - This problem (for small time steps) can be mitigated by the following: + // - Make sure the P2_vs_soc curve decreases to zero as soc approaches 0 or 100 soc + // - Make sure the ramp rate is large when a battery stops charging/discharging + // - Make sure the delay is small when battery stops charging/discharging + + std::vector charge_profile; + + if (soc_intersection < 99.5) + { + charge_profile.emplace_back( -0.1, soc_intersection, 0, AC_charge_rate_kW); + charge_profile.emplace_back( soc_intersection, 100.1, m, b ); + } + else + { + charge_profile.emplace_back( -0.1, 100.1, 0, AC_charge_rate_kW ); + } + return charge_profile; + }(); + + //------------------------------------------------ + + const double zero_slope_threashold_P2_vs_soc = this->compute_zero_slope_threashold_P2_vs_soc(charge_profile); + + return SOC_vs_P2(charge_profile, zero_slope_threashold_P2_vs_soc); +} + + +const SOC_vs_P2 create_dcPkW_from_soc::get_dcfc_charge_profile(const battery_charge_mode& mode, const EV_type& EV, const EVSE_type& EVSE) const +{ + if (mode == charging) + { + return this->get_charging_dcfc_charge_profile(EV, EVSE); + } + else if (mode == discharging) + { + return this->get_discharging_dcfc_charge_profile(EV, EVSE); + } + else + { + ASSERT(false, "Error : Unknown battery mode. Its not charging nor discharging"); + } +} + + +const SOC_vs_P2 create_dcPkW_from_soc::get_charging_dcfc_charge_profile(const EV_type& EV, const EVSE_type& EVSE) const +{ + const double battery_size_kWh = this->inventory.get_EV_inventory().at(EV).get_battery_size_kWh(); + const double battery_capacity_Ah_1C = this->inventory.get_EV_inventory().at(EV).get_battery_size_Ah_1C(); + const double current_limit_A = this->inventory.get_EVSE_inventory().at(EVSE).get_current_limit_A(); + const double power_limit_kW = 10000;//this->inventory.get_EVSE_inventory().at(EVSE).get_power_limit_kW(); + + //===================================================== + // Interpolate pu curves using dc_current_limit + //===================================================== + + std::vector dcPkW_from_soc_input; + double soc_0, soc_1, soc_tmp, P_0, P_1, w, P_tmp; + double m, b, m1, b1; + + auto it = this->curves.begin(); + if (current_limit_A >= (it->first * battery_capacity_Ah_1C)) // crate * battery_capacity_Ah_1C + { + const std::map >& points= it->second; + + double cur_SOC, next_SOC; + double cur_Ppu, next_Ppu; + double m, b; + + for (auto it_points = points.begin(); it_points != std::prev(points.end()); it_points++) + { + cur_SOC = it_points->first; + cur_Ppu = it_points->second.first; // second is a pair of power and point_type + + next_SOC = std::next(it_points)->first; + next_Ppu = std::next(it_points)->second.first; + + m = (cur_Ppu - next_Ppu) / (cur_SOC - next_SOC); + b = cur_Ppu - m * cur_SOC; + + dcPkW_from_soc_input.emplace_back(cur_SOC, next_SOC, m, b); + } + } + else + { + //-------------------------------------- + // Select Curves to Interpolate + //-------------------------------------- + + auto upper_curve_ptr = this->curves.begin(); // temporary initialization + auto lower_curve_ptr = this->curves.begin(); + + for (it = std::next(this->curves.begin()); it != this->curves.end(); it++) + { + if ( (it->first * battery_capacity_Ah_1C) < current_limit_A) + { + upper_curve_ptr = std::prev(it); + lower_curve_ptr = it; + break; + } + } + + //-------------------------------------- + // Interpolate Curves + //-------------------------------------- + + // interpolated_val = weight_factor*high_val + (1 - weight_factor)*low_val; + double weight_factor = (current_limit_A - lower_curve_ptr->first * battery_capacity_Ah_1C) / (upper_curve_ptr->first * battery_capacity_Ah_1C - lower_curve_ptr->first * battery_capacity_Ah_1C); + + const std::map < SOC, std::pair >& upper_points = upper_curve_ptr->second; + const std::map < SOC, std::pair >& lower_points = lower_curve_ptr->second; + + //----------------- + + auto upper_ptr = upper_points.begin(); + auto lower_ptr = lower_points.begin(); + + double lower_soc{}, upper_soc{}; + double next_lower_soc{}, next_upper_soc{}; + double lower_power{}, upper_power{}; + double next_lower_power{}, next_upper_power{}; + point_type lower_point_type{}, next_lower_point_type{}; + point_type upper_point_type{}, next_upper_point_type{}; + + bool extend_segment; + + auto update_lower = [&]() { + lower_soc = lower_ptr->first; + lower_power = lower_ptr->second.first; + lower_point_type = lower_ptr->second.second; + + next_lower_soc = std::next(lower_ptr)->first; + next_lower_power = std::next(lower_ptr)->second.first; + next_lower_point_type = std::next(lower_ptr)->second.second; + }; + + auto update_upper = [&]() { + upper_soc = upper_ptr->first; + upper_power = upper_ptr->second.first; + upper_point_type = upper_ptr->second.second; + + next_upper_soc = std::next(upper_ptr)->first; + next_upper_power = std::next(upper_ptr)->second.first; + next_upper_point_type = std::next(upper_ptr)->second.second; + }; + + soc_0 = 0; + P_0 = weight_factor * upper_ptr->second.first + (1 - weight_factor) * lower_ptr->second.first; + + // upper_points and lower_points are points not segments + while (true) + { + update_lower(); + update_upper(); + + extend_segment = false; + + if (std::abs(next_lower_soc - next_upper_soc) < 1) + { + if (next_upper_point_type == extend) + extend_segment = true; + + soc_1 = next_upper_soc; + P_1 = weight_factor * next_upper_power + (1 - weight_factor) * next_lower_power; + + lower_ptr++; + update_lower(); + upper_ptr++; + update_upper(); + } + else if (next_upper_soc < next_lower_soc) + { + if (next_upper_point_type == extend) + extend_segment = true; + + soc_1 = next_upper_soc; + + w = (soc_1 - lower_soc) / (next_lower_soc - lower_soc); + P_tmp = w * next_lower_power + (1 - w) * lower_power; + + P_1 = weight_factor * next_upper_power + (1 - weight_factor) * P_tmp; + upper_ptr++; + update_upper(); + } + else if (next_lower_soc < next_upper_soc) + { + soc_1 = next_lower_soc; + + w = (soc_1 - upper_soc) / (next_upper_soc - upper_soc); + P_tmp = w * next_upper_power + (1 - w) * upper_power; + + P_1 = weight_factor * P_tmp + (1 - weight_factor) * next_lower_power; + lower_ptr++; + update_lower(); + } + + //------------------------------- + + m = (P_1 - P_0) / (soc_1 - soc_0); + b = P_1 - m * soc_1; + + if (extend_segment) + { + m1 = (next_upper_power - upper_power) / (next_upper_soc - upper_soc); + b1 = upper_power - m1 * upper_soc; + + soc_1 = (b - b1) / (m1 - m); + P_1 = m * soc_1 + b; + } + + dcPkW_from_soc_input.emplace_back(soc_0, soc_1, m, b); + + soc_0 = soc_1; + P_0 = P_1; + + if (extend_segment) + break; + } + + //-------------------------------------- + // Use Upper Curve Directly + //-------------------------------------- + + for (upper_ptr = std::next(upper_points.begin()); upper_ptr != upper_points.end(); upper_ptr++) + { + soc_1 = upper_ptr->first; + P_1 = upper_ptr->second.first; + + m = (P_1 - P_0) / (soc_1 - soc_0); + b = P_1 - m * soc_1; + + dcPkW_from_soc_input.emplace_back(soc_0, soc_1, m, b); + + soc_0 = soc_1; + P_0 = P_1; + } + } + + //===================================================== + // Scale Using Battery Energy + //===================================================== + + for (int i = 0; i < dcPkW_from_soc_input.size(); i++) + { + dcPkW_from_soc_input[i].a = dcPkW_from_soc_input[i].a * battery_size_kWh; + dcPkW_from_soc_input[i].b = dcPkW_from_soc_input[i].b * battery_size_kWh; + } + + //===================================================== + // Apply Power Limits + //===================================================== + + for (int i = 0; i < dcPkW_from_soc_input.size(); i++) + { + soc_0 = dcPkW_from_soc_input[i].x_LB; + soc_1 = dcPkW_from_soc_input[i].x_UB; + m = dcPkW_from_soc_input[i].a; + b = dcPkW_from_soc_input[i].b; + + P_0 = m * soc_0 + b; + P_1 = m * soc_1 + b; + + if (power_limit_kW <= P_0 && power_limit_kW <= P_1) + { + dcPkW_from_soc_input[i].a = 0; + dcPkW_from_soc_input[i].b = power_limit_kW; + } + else if (P_0 < power_limit_kW && power_limit_kW < P_1) + { + soc_tmp = (power_limit_kW - b) / m; + dcPkW_from_soc_input[i].x_UB = soc_tmp; + + dcPkW_from_soc_input.emplace_back(soc_tmp, soc_1, 0, power_limit_kW); + } + else if (power_limit_kW < P_0 && P_1 < power_limit_kW) + { + soc_tmp = (power_limit_kW - b) / m; + dcPkW_from_soc_input[i].x_LB = soc_tmp; + + dcPkW_from_soc_input.emplace_back(soc_0, soc_tmp, 0, power_limit_kW); + } + } + + //-------------------------------------- + + const double zero_slope_threashold_P2_vs_soc = this->compute_zero_slope_threashold_P2_vs_soc(dcPkW_from_soc_input); + + //===================================================== + // Calculate Objective Function Constraints + //===================================================== + + int boundary_index; + + std::sort(dcPkW_from_soc_input.begin(), dcPkW_from_soc_input.end()); + + boundary_index = -1; + for (int i = (int)dcPkW_from_soc_input.size() - 1; i >= 0; i--) + { + if (0 <= dcPkW_from_soc_input[i].a) + { + boundary_index = i; + break; + } + } + + //---------------------- + + std::vector points_A; + std::vector points_B; + double x0, x1, y0, y1; + + for (int i = 0; i < dcPkW_from_soc_input.size(); i++) + { + x0 = dcPkW_from_soc_input[i].x_LB; + y0 = dcPkW_from_soc_input[i].a * x0 + dcPkW_from_soc_input[i].b; + x1 = dcPkW_from_soc_input[i].x_UB; + y1 = dcPkW_from_soc_input[i].a * x1 + dcPkW_from_soc_input[i].b; + w = std::sqrt((x1 - x0) * (x1 - x0) + (y1 - y0) * (y1 - y0)); + + xy_point point_0 = { x0, y0, w }; + xy_point point_1 = { x1, y1, w }; + + if (i <= boundary_index) + { + points_A.push_back(point_0); + points_A.push_back(point_1); + } + else + { + points_B.push_back(point_0); + points_B.push_back(point_1); + } + } + + lin_reg_slope_yinter val_A = linear_regression::weighted(points_A); + lin_reg_slope_yinter val_B = linear_regression::weighted(points_B); + + //---------------------- + + bat_objfun_constraints constraint_A = { val_A.m, val_A.b }; + bat_objfun_constraints constraint_B = { val_B.m, val_B.b }; + + std::vector constraints_; + constraints_.push_back(constraint_A); + constraints_.push_back(constraint_B); + + //constraints = constraints_; + + return SOC_vs_P2(dcPkW_from_soc_input, zero_slope_threashold_P2_vs_soc); +} + +const SOC_vs_P2 create_dcPkW_from_soc::get_discharging_dcfc_charge_profile(const EV_type& EV, const EVSE_type& EVSE) const +{ + const double battery_size_kWh = this->inventory.get_EV_inventory().at(EV).get_battery_size_kWh(); + const double battery_capacity_Ah_1C = this->inventory.get_EV_inventory().at(EV).get_battery_size_Ah_1C(); + const double current_limit_A = this->inventory.get_EVSE_inventory().at(EVSE).get_current_limit_A(); + const double power_limit_kW = this->inventory.get_EVSE_inventory().at(EVSE).get_power_limit_kW(); + + //===================================================== + // Interpolate pu curves using dc_current_limit + //===================================================== + + std::vector dcPkW_from_soc_input; + double soc_0, soc_1, soc_tmp, P_0, P_1, w, P_tmp; + double m, b, m1, b1; + + auto it = this->curves.rbegin(); + if (current_limit_A <= it->first * battery_capacity_Ah_1C) + { + const std::map< SOC, std::pair >& points = it->second; + + double cur_SOC, next_SOC; + double cur_Ppu, next_Ppu; + + for (auto it_points = points.begin(); it_points != std::prev(points.end()); it_points++) + { + cur_SOC = it_points->first; + cur_Ppu = it_points->second.first; // second is a pair of power and point_type + + next_SOC = std::next(it_points)->first; + next_Ppu = std::next(it_points)->second.first; + + m = (cur_Ppu - next_Ppu) / (cur_SOC - next_SOC); + b = cur_Ppu - m * cur_SOC; + + dcPkW_from_soc_input.emplace_back(cur_SOC, next_SOC, m, b); + } + } + else + { + //-------------------------------------- + // Select Curves to Interpolate + //-------------------------------------- + + auto upper_curve_ptr = this->curves.rbegin(); // temporary initialization + auto lower_curve_ptr = this->curves.rbegin(); + + for (it = std::next(this->curves.rbegin()); it != this->curves.rend(); it++) + { + if (current_limit_A < it->first * battery_capacity_Ah_1C) + { + upper_curve_ptr = std::prev(it); + lower_curve_ptr = it; + break; + } + } + + //-------------------------------------- + // Interpolate Curves + //-------------------------------------- + + // interpolated_val = weight_factor*high_val + (1 - weight_factor)*low_val; + double weight_factor = (current_limit_A - lower_curve_ptr->first * battery_capacity_Ah_1C) / (upper_curve_ptr->first * battery_capacity_Ah_1C - lower_curve_ptr->first * battery_capacity_Ah_1C); + + const std::map < SOC, std::pair >& upper_points = upper_curve_ptr->second; + const std::map < SOC, std::pair >& lower_points = lower_curve_ptr->second; + + //----------------- + + auto upper_ptr = upper_points.rbegin(); + auto lower_ptr = lower_points.rbegin(); + + double lower_soc{}, upper_soc{}; + double next_lower_soc{}, next_upper_soc{}; + double lower_power{}, upper_power{}; + double next_lower_power{}, next_upper_power{}; + point_type lower_point_type{}, next_lower_point_type{}; + point_type upper_point_type{}, next_upper_point_type{}; + + bool extend_segment; + + auto update_lower = [&]() { + lower_soc = lower_ptr->first; + lower_power = lower_ptr->second.first; + lower_point_type = lower_ptr->second.second; + + next_lower_soc = std::next(lower_ptr)->first; + next_lower_power = std::next(lower_ptr)->second.first; + next_lower_point_type = std::next(lower_ptr)->second.second; + }; + + auto update_upper = [&]() { + upper_soc = upper_ptr->first; + upper_power = upper_ptr->second.first; + upper_point_type = upper_ptr->second.second; + + next_upper_soc = std::next(upper_ptr)->first; + next_upper_power = std::next(upper_ptr)->second.first; + next_upper_point_type = std::next(upper_ptr)->second.second; + }; + + soc_0 = 100; + P_0 = weight_factor * upper_ptr->second.first + (1 - weight_factor) * lower_ptr->second.first; + + // upper_points and lower_points are points not segments + while (true) + { + update_lower(); + update_upper(); + + extend_segment = false; + + if (std::abs(next_lower_soc - next_upper_soc) < 1) + { + if (next_upper_point_type == extend) + extend_segment = true; + + soc_1 = next_upper_soc; + P_1 = weight_factor * next_upper_power + (1 - weight_factor) * next_lower_power; + + lower_ptr++; + update_lower(); + upper_ptr++; + update_upper(); + } + else if (next_upper_soc > next_lower_soc) + { + if (next_upper_point_type == extend) + extend_segment = true; + + soc_1 = next_upper_soc; + + w = (soc_1 - lower_soc) / (next_lower_soc - lower_soc); + P_tmp = w * next_lower_power + (1 - w) * lower_power; + + P_1 = weight_factor * next_upper_power + (1 - weight_factor) * P_tmp; + upper_ptr++; + update_upper(); + } + else if (next_lower_soc > next_upper_soc) + { + soc_1 = next_lower_soc; + + w = (soc_1 - upper_soc) / (next_upper_soc - upper_soc); + P_tmp = w * next_upper_power + (1 - w) * upper_power; + + P_1 = weight_factor * P_tmp + (1 - weight_factor) * next_lower_power; + lower_ptr++; + update_lower(); + } + + //------------------------------- + + m = (P_1 - P_0) / (soc_1 - soc_0); + b = P_1 - m * soc_1; + + if (extend_segment) + { + m1 = (next_upper_power - upper_power) / (next_upper_soc - upper_soc); + b1 = upper_power - m1 * upper_soc; + + soc_1 = (b - b1) / (m1 - m); + P_1 = m * soc_1 + b; + } + + dcPkW_from_soc_input.emplace_back(soc_0, soc_1, m, b); + + soc_0 = soc_1; + P_0 = P_1; + + if (extend_segment) + break; + } + + //-------------------------------------- + // Use Upper Curve Directly + //-------------------------------------- + for (upper_ptr = std::next(upper_points.rbegin()); upper_ptr != upper_points.rend(); upper_ptr++) + { + soc_1 = upper_ptr->first; + P_1 = upper_ptr->second.first; + + m = (P_1 - P_0) / (soc_1 - soc_0); + b = P_1 - m * soc_1; + + dcPkW_from_soc_input.emplace_back(soc_1, soc_0, m, b); + + soc_0 = soc_1; + P_0 = P_1; + } + } + + //===================================================== + // Scale Using Battery Energy + //===================================================== + + for (int i = 0; i < dcPkW_from_soc_input.size(); i++) + { + dcPkW_from_soc_input[i].a *= battery_size_kWh; + dcPkW_from_soc_input[i].b *= battery_size_kWh; + } + + //===================================================== + // Apply Power Limits + //===================================================== + + for (int i = 0; i < dcPkW_from_soc_input.size(); i++) + { + soc_0 = dcPkW_from_soc_input[i].x_LB; + soc_1 = dcPkW_from_soc_input[i].x_UB; + m = dcPkW_from_soc_input[i].a; + b = dcPkW_from_soc_input[i].b; + + P_0 = m * soc_0 + b; + P_1 = m * soc_1 + b; + + if (P_0 <= power_limit_kW && P_1 <= power_limit_kW) + { + dcPkW_from_soc_input[i].a = 0; + dcPkW_from_soc_input[i].b = power_limit_kW; + } + else if (power_limit_kW < P_0 && P_1 < power_limit_kW) + { + soc_tmp = (power_limit_kW - b) / m; + dcPkW_from_soc_input[i].x_UB = soc_tmp; + + dcPkW_from_soc_input.emplace_back(soc_tmp, soc_1, 0, power_limit_kW); + } + else if (P_0 < power_limit_kW && power_limit_kW < P_1) + { + soc_tmp = (power_limit_kW - b) / m; + dcPkW_from_soc_input[i].x_LB = soc_tmp; + + dcPkW_from_soc_input.emplace_back(soc_0, soc_tmp, 0, power_limit_kW); + } + } + + //-------------------------------------- + + const double zero_slope_threashold_P2_vs_soc = this->compute_zero_slope_threashold_P2_vs_soc(dcPkW_from_soc_input); + + //===================================================== + // Calculate Objective Function Constraints + //===================================================== + + int boundary_index; + + std::sort(dcPkW_from_soc_input.begin(), dcPkW_from_soc_input.end()); + + boundary_index = -1; + for (int i = 0; i < dcPkW_from_soc_input.size(); i++) + { + if (0 <= dcPkW_from_soc_input[i].a) + { + boundary_index = i; + break; + } + } + + //---------------------- + + std::vector points_A; + std::vector points_B; + double x0, x1, y0, y1; + + for (int i = 0; i < dcPkW_from_soc_input.size(); i++) + { + x0 = dcPkW_from_soc_input[i].x_LB; + y0 = dcPkW_from_soc_input[i].a * x0 + dcPkW_from_soc_input[i].b; + x1 = dcPkW_from_soc_input[i].x_UB; + y1 = dcPkW_from_soc_input[i].a * x1 + dcPkW_from_soc_input[i].b; + w = std::sqrt((x1 - x0) * (x1 - x0) + (y1 - y0) * (y1 - y0)); + + xy_point point_0 = { x0, y0, w }; + xy_point point_1 = { x1, y1, w }; + + if (i < boundary_index) + { + points_A.push_back(point_0); + points_A.push_back(point_1); + } + else + { + points_B.push_back(point_0); + points_B.push_back(point_1); + } + } + + lin_reg_slope_yinter val_A = linear_regression::weighted(points_A); + lin_reg_slope_yinter val_B = linear_regression::weighted(points_B); + + //---------------------- + + bat_objfun_constraints constraint_A = { val_A.m, val_A.b }; + bat_objfun_constraints constraint_B = { val_B.m, val_B.b }; + + std::vector constraints_; + constraints_.push_back(constraint_A); + constraints_.push_back(constraint_B); + + //constraints = constraints_; + return SOC_vs_P2(dcPkW_from_soc_input, zero_slope_threashold_P2_vs_soc); +} + + +//########################################################## +// SOC_vs_P2_factory +//########################################################## + + +SOC_vs_P2_factory::SOC_vs_P2_factory(const EV_EVSE_inventory& inventory) : inventory(inventory), + LMO_charge(this->load_LMO_charge()), NMC_charge(this->load_NMC_charge()), LTO_charge(this->load_LTO_charge()), + L1_L2_curves(this->load_L1_L2_curves()), DCFC_curves(this->load_DCFC_curves()) {} + + +const SOC_vs_P2& SOC_vs_P2_factory::get_SOC_vs_P2_curves(const EV_type& EV, const EVSE_type& EVSE) const +{ + const EVSE_level& level = this->inventory.get_EVSE_inventory().at(EVSE).get_level(); + + if (level == L1 || level == L2) + { + if (this->L1_L2_curves.find(EV) != this->L1_L2_curves.end()) + { + return this->L1_L2_curves.at(EV); + } + else + { + ASSERT(false, "Error: P2_vs_soc is not defined in the EV_charge_model_factory for EV_type:" << EV << " and SE_type:" << EVSE << std::endl); + } + } + else if (level == DCFC) + { + const std::pair key = std::make_pair(EV, EVSE); + + if (this->DCFC_curves.find(key) != this->DCFC_curves.end()) + { + return this->DCFC_curves.at(key); + } + else + { + ASSERT(false, "Error: P2_vs_soc is not defined in the EV_charge_model_factory for EV_type:" << EV << " and SE_type:" << EVSE << std::endl); + } + } + else + { + ASSERT(false, "invalid EVSE_level"); + } +} + + +const create_dcPkW_from_soc SOC_vs_P2_factory::load_LMO_charge() +{ + std::map > points; + std::map >, std::greater > curves; + + double C_rate; + + //======================== + // LMO Charging + //======================== + + // {soc, P, (interpolate, extend, use_directly)} + points.clear(); + points.emplace( 0.0, std::make_pair(0.898, interpolate)); + points.emplace( 4.4, std::make_pair(1.056, interpolate)); + points.emplace( 11.3, std::make_pair(1.154, interpolate)); + points.emplace( 32.4, std::make_pair(1.215, interpolate)); + points.emplace( 76.1, std::make_pair(1.274, extend)); + points.emplace( 100.0, std::make_pair(0.064, use_directly)); + + C_rate = 1; + curves.emplace(C_rate, points); + + //------------------------------------ + + // {soc, P, (interpolate, extend, use_directly)} + points.clear(); + points.emplace( 0.0, std::make_pair(1.742, interpolate)); + points.emplace( 4.0, std::make_pair(2.044, interpolate)); + points.emplace( 12.0, std::make_pair(2.249, interpolate)); + points.emplace( 55.0, std::make_pair(2.418, extend)); + points.emplace( 75.0, std::make_pair(1.190, use_directly)); + points.emplace( 100.0, std::make_pair(0.064, use_directly)); + + C_rate = 2; + curves.emplace(C_rate, points); + + //------------------------------------ + + // {soc, P, (interpolate, extend, use_directly)} + points.clear(); + points.emplace( 0.0, std::make_pair(2.667, interpolate)); + points.emplace( 6.0, std::make_pair(3.246, interpolate)); + points.emplace( 11.9, std::make_pair(3.436, interpolate)); + points.emplace( 37.6, std::make_pair(3.628, extend)); + points.emplace( 70.0, std::make_pair(1.440, use_directly)); + points.emplace( 100.0, std::make_pair(0.064, use_directly)); + + C_rate = 3; + curves.emplace(C_rate, points); + + //------------------------------------ + + // {soc, P, (interpolate, extend, use_directly)} + points.clear(); + points.emplace( 0.0, std::make_pair(0, interpolate)); + points.emplace( 100.0, std::make_pair(0, interpolate)); + + C_rate = 0; + curves.emplace(C_rate, points); + + //------------------------------------ + + const create_dcPkW_from_soc LMO_charge(this->inventory, curves, charging); + return LMO_charge; +} + +const create_dcPkW_from_soc SOC_vs_P2_factory::load_NMC_charge() +{ + std::map > points; + std::map >, std::greater > curves; + + double C_rate; + + bool is_charging_not_discharging = true; + + //======================== + // NMC Charging + //======================== + + // {soc, P, (interpolate, extend, use_directly)} + points.clear(); + points.emplace( 0.0, std::make_pair(0.917, interpolate)); + points.emplace( 4.0, std::make_pair(1.048, interpolate)); + points.emplace( 10.0, std::make_pair(1.095, interpolate)); + points.emplace( 88.0, std::make_pair(1.250, extend)); + // points.push_back({ 93.0, 0.595, use_directly}); // This point violates one of the key rules. + points.emplace( 100.0, std::make_pair(0.060, use_directly)); + + C_rate = 1; + curves.emplace(C_rate, points); + + //------------------------------------ + + // {soc, P, (interpolate, extend, use_directly)} + points.clear(); + points.emplace( 0.0, std::make_pair(1.750, interpolate)); + points.emplace( 3.0, std::make_pair(2.000, interpolate)); + points.emplace( 10.0, std::make_pair(2.143, interpolate)); + points.emplace( 78.5, std::make_pair(2.417, extend)); + points.emplace( 93.0, std::make_pair(0.595, use_directly)); + points.emplace( 100.0, std::make_pair(0.060, use_directly)); + + C_rate = 2; + curves.emplace(C_rate, points); + + //------------------------------------ + + // {soc, P, (interpolate, extend, use_directly)} + points.clear(); + points.emplace( 0.0, std::make_pair(2.798, interpolate)); + points.emplace( 3.0, std::make_pair(3.167, interpolate)); + points.emplace( 10.0, std::make_pair(3.393, interpolate)); + points.emplace( 67.0, std::make_pair(3.750, extend)); + points.emplace( 93.0, std::make_pair(0.595, use_directly)); + points.emplace( 100.0, std::make_pair(0.060, use_directly)); + + C_rate = 3; + curves.emplace(C_rate, points); + + //------------------------------------ + + // {soc, P, (interpolate, extend, use_directly)} + points.clear(); + points.emplace( 0.0, std::make_pair(0, interpolate)); + points.emplace( 100.0, std::make_pair(0, interpolate)); + + C_rate = 0; + curves.emplace(C_rate, points); + + //------------------------------------ + + const create_dcPkW_from_soc NMC_charge(this->inventory, curves, charging); + return NMC_charge; +} + +const create_dcPkW_from_soc SOC_vs_P2_factory::load_LTO_charge() +{ + std::map > points; + std::map >, std::greater > curves; + + double C_rate; + + bool is_charging_not_discharging = true; + + //======================== + // LTO Charging + //======================== + curves.clear(); + + // {soc, P, (interpolate, extend, use_directly)} + points.clear(); + points.emplace( 0.0, std::make_pair(0.798, interpolate)); + points.emplace( 2.0, std::make_pair(0.882, interpolate)); + points.emplace( 50.0, std::make_pair(0.966, interpolate)); + points.emplace( 64.0, std::make_pair(1.008, interpolate)); + points.emplace( 80.0, std::make_pair(1.040, interpolate)); + points.emplace( 90.0, std::make_pair(1.071, interpolate)); + points.emplace( 96.0, std::make_pair(1.134, extend)); + points.emplace( 100.0, std::make_pair(0.057, use_directly)); + + C_rate = 1; + curves.emplace(C_rate, points); + + //------------------------------------ + + // {soc, P, (interpolate, extend, use_directly)} + points.clear(); + points.emplace( 0.0, std::make_pair(1.765, interpolate)); + points.emplace( 2.0, std::make_pair(1.828, interpolate)); + points.emplace( 50.0, std::make_pair(1.975, interpolate)); + points.emplace( 60.0, std::make_pair(2.038, interpolate)); + points.emplace( 80.0, std::make_pair(2.122, interpolate)); + points.emplace( 91.0, std::make_pair(2.227, extend)); + points.emplace( 100.0, std::make_pair(0.057, use_directly)); + + C_rate = 2; + curves.emplace(C_rate, points); + + //------------------------------------ + + // {soc, P, (interpolate, extend, use_directly)} + points.clear(); + points.emplace( 0.0, std::make_pair(2.647, interpolate)); + points.emplace( 2.0, std::make_pair(2.794, interpolate)); + points.emplace( 50.0, std::make_pair(2.983, interpolate)); + points.emplace( 60.0, std::make_pair(3.109, interpolate)); + points.emplace( 80.0, std::make_pair(3.256, interpolate)); + points.emplace( 88.0, std::make_pair(3.361, extend)); + points.emplace( 100.0, std::make_pair(0.085, use_directly)); + + C_rate = 3; + curves.emplace(C_rate, points); + + //------------------------------------ + + // {soc, P, (interpolate, extend, use_directly)} + points.clear(); + points.emplace( 0.0, std::make_pair(3.655, interpolate)); + points.emplace( 3.0, std::make_pair(3.782, interpolate)); + points.emplace( 50.0, std::make_pair(4.055, interpolate)); + points.emplace( 60.0, std::make_pair(4.202, interpolate)); + points.emplace( 80.0, std::make_pair(4.391, interpolate)); + points.emplace( 86.0, std::make_pair(4.517, extend)); + points.emplace( 100.0, std::make_pair(0.113, use_directly)); + + C_rate = 4; + curves.emplace(C_rate, points); + + //------------------------------------ + + // {soc, P, (interpolate, extend, use_directly)} + points.clear(); + points.emplace( 0.0, std::make_pair(4.622, interpolate)); + points.emplace( 4.0, std::make_pair(4.832, interpolate)); + points.emplace( 50.0, std::make_pair(5.168, interpolate)); + points.emplace( 60.0, std::make_pair(5.357, interpolate)); + points.emplace( 84.0, std::make_pair(5.630, extend)); + points.emplace( 100.0, std::make_pair(0.063, use_directly)); + + C_rate = 5; + curves.emplace(C_rate, points); + + //------------------------------------ + + // {soc, P, (interpolate, extend, use_directly)} + points.clear(); + points.emplace( 0.0, std::make_pair(0, interpolate)); + points.emplace( 100.0, std::make_pair(0, interpolate)); + + C_rate = 0; + curves.emplace(C_rate, points); + + //------------------------------------ + + const create_dcPkW_from_soc LTO_charge(this->inventory, curves, charging); + return LTO_charge; +} + + +const std::unordered_map SOC_vs_P2_factory::load_L1_L2_curves() +{ + std::unordered_map return_val; + + const EV_inventory& EV_inv = this->inventory.get_EV_inventory(); + + for (const auto& EVs : EV_inv) + { + const EV_type& EV = EVs.first; + const EV_characteristics& EV_char = EVs.second; + + const battery_chemistry& chemistry = EV_char.get_chemistry(); + + if (chemistry == LMO) + { + return_val.emplace(EV, this->LMO_charge.get_L1_or_L2_charge_profile(EV)); + } + else if (chemistry == NMC) + { + return_val.emplace(EV, this->NMC_charge.get_L1_or_L2_charge_profile(EV)); + } + else if (chemistry == LTO) + { + return_val.emplace(EV, this->LTO_charge.get_L1_or_L2_charge_profile(EV)); + } + else + { + ASSERT(false, "Error: Invalid battery chemistry for EV_type:" << EV << std::endl); + } + } + return return_val; +} + + +const std::unordered_map< std::pair, SOC_vs_P2, pair_hash > SOC_vs_P2_factory::load_DCFC_curves() +{ + std::unordered_map< std::pair, SOC_vs_P2, pair_hash > return_val; + + const EV_inventory& EV_inv = this->inventory.get_EV_inventory(); + const EVSE_inventory& EVSE_inv = this->inventory.get_EVSE_inventory(); + + for (const auto& EVSE_elem : EVSE_inv) + { + const EVSE_type& EVSE = EVSE_elem.first; + const EVSE_characteristics& EVSE_char = EVSE_elem.second; + const EVSE_level& level = EVSE_char.get_level(); + + if (level == DCFC) + { + for (const auto& EV_elem : EV_inv) + { + const EV_type& EV = EV_elem.first; + const EV_characteristics& EV_char = EV_elem.second; + const bool& DCFC_capable = EV_char.get_DCFC_capable(); + + if (DCFC_capable == true) + { + const battery_chemistry& chemistry = EV_char.get_chemistry(); + const double& battery_size_kWh = EV_char.get_battery_size_kWh(); + const double& bat_size_Ah_1C = EV_char.get_battery_size_Ah_1C(); + const double& max_c_rate = EV_char.get_max_c_rate(); + const double& power_limit_kW = EVSE_char.get_power_limit_kW(); + const double& DC_current_limit = EVSE_char.get_current_limit_A(); + + const battery_charge_mode mode = charging; + + // charge profile is not a reference because the data is not stored by the object. + if (chemistry == LMO) + { + return_val.emplace(std::make_pair(EV, EVSE), this->LMO_charge.get_dcfc_charge_profile(mode, EV, EVSE)); + } + else if (chemistry == NMC) + { + return_val.emplace(std::make_pair(EV, EVSE), this->NMC_charge.get_dcfc_charge_profile(mode, EV, EVSE)); + } + else if (chemistry == LTO) + { + return_val.emplace(std::make_pair(EV, EVSE), this->LTO_charge.get_dcfc_charge_profile(mode, EV, EVSE)); + } + else + { + ASSERT(false, "Error: Invalid battery chemistry for EV_type:" << EV << std::endl); + } + //constraints = factory_obj.get_constraints() + } + else + { + continue; + } + } + } + else + { + continue; + } + } + + return return_val; +} + +void SOC_vs_P2_factory::write_charge_profile(const std::string& output_path) const +{ + +// const std::unordered_map L1_L2_curves; +// const std::unordered_map< std::pair, SOC_vs_P2, pair_hash > DCFC_curves; + + std::string filename, header, data; + std::ofstream file_handle; + + + filename = output_path + "/dcfc_charge_profile.csv"; + + file_handle = std::ofstream(filename); + + header = "soc, "; + + std::vector soc_vals = [&]() { + std::vector soc_vals; + for (int i = 0; i <= 100; i++) + { + soc_vals.push_back(i); + } + return soc_vals; + }(); + + std::vector > all_dcfc_profiles = [&]() { + + std::vector > all_dcfc_profiles; + + for (const auto& curves : this->DCFC_curves) + { + const EV_type& EV = curves.first.first; + const EVSE_type& EVSE = curves.first.second; + const std::vector& profile = curves.second.curve; + + header += EV + "_" + EVSE + ", "; + + int i = 0; + double soc = 0.0; + double a, b; + int plot_soc_vs_P2_soc_step_size = 1; + + std::vector P2_vals; + + while (true) + { + while (true) + { + if (soc <= profile[i].x_UB) break; + else i += 1; + } + a = profile[i].a; + b = profile[i].b; + P2_vals.push_back(a * soc + b); + soc += plot_soc_vs_P2_soc_step_size; + + if (soc > 100) + break; + } + all_dcfc_profiles.push_back(P2_vals); + } + return all_dcfc_profiles; + }(); + + header += "\n"; + + file_handle << header; + + for (int i = 0; i < soc_vals.size(); i++) + { + file_handle << std::to_string(soc_vals[i]) + ", "; + + for (int j = 0; j < all_dcfc_profiles.size(); j++) + { + file_handle << std::to_string(all_dcfc_profiles[j][i]) + ", "; + } + file_handle << "\n "; + } + + file_handle.close(); + + //==================================================== + + filename = output_path + "/L1_L2_charge_profile.csv"; + + file_handle = std::ofstream(filename); + + header = "soc, "; + + std::vector > all_L1_L2_profiles = [&]() { + + std::vector > all_L1_L2_profiles; + + for (const auto& curves : this->L1_L2_curves) + { + const EV_type& EV = curves.first; + const std::vector& profile = curves.second.curve; + + header += EV + ", "; + + int i = 0; + double soc = 0.0; + double a, b; + int plot_soc_vs_P2_soc_step_size = 1; + + std::vector P2_vals; + + while (true) + { + while (true) + { + if (soc <= profile[i].x_UB) break; + else i += 1; + } + a = profile[i].a; + b = profile[i].b; + P2_vals.push_back(a * soc + b); + soc += plot_soc_vs_P2_soc_step_size; + + if (soc > 100) + break; + } + all_dcfc_profiles.push_back(P2_vals); + } + return all_dcfc_profiles; + }(); + + header += "\n"; + + file_handle << header; + + for (int i = 0; i < soc_vals.size(); i++) + { + file_handle << std::to_string(soc_vals[i]) + ", "; + + for (int j = 0; j < all_dcfc_profiles.size(); j++) + { + file_handle << std::to_string(all_dcfc_profiles[j][i]) + ", "; + } + file_handle << "\n "; + } + + file_handle.close(); +} \ No newline at end of file diff --git a/source/factory/SOC_vs_P2_factory.h b/source/factory/SOC_vs_P2_factory.h new file mode 100644 index 0000000..6205e79 --- /dev/null +++ b/source/factory/SOC_vs_P2_factory.h @@ -0,0 +1,98 @@ +#ifndef SOC_VS_P2_FACTORY_H +#define SOC_VS_P2_FACTORY_H + +#include +#include + +#include "EV_EVSE_inventory.h" + +#include "helper.h" // line_segment, + +typedef double c_rate; +typedef double SOC; +typedef double power; + +enum point_type +{ + interpolate, + extend, + use_directly +}; + +enum battery_charge_mode +{ + charging = 0, + discharging = 1 +}; + +struct bat_objfun_constraints +{ + double a; + double b; +}; + +struct SOC_vs_P2 +{ + const std::vector curve; + const double zero_slope_threashold; + + SOC_vs_P2(const std::vector& curve, const double& zero_slope_threashold) + : curve(curve), zero_slope_threashold(zero_slope_threashold) {} +}; + + +class create_dcPkW_from_soc +{ +private: + + const EV_EVSE_inventory& inventory; + + const std::map >, std::greater > curves; + const battery_charge_mode mode; + + const double compute_min_non_zero_slope(const std::vector& charge_profile) const; + const double compute_zero_slope_threashold_P2_vs_soc(const std::vector& charge_profile) const; + + const SOC_vs_P2 get_charging_dcfc_charge_profile(const EV_type& EV, const EVSE_type& EVSE) const; + const SOC_vs_P2 get_discharging_dcfc_charge_profile(const EV_type& EV, const EVSE_type& EVSE) const; + +public: + create_dcPkW_from_soc(const EV_EVSE_inventory& inventory, + const std::map >, std::greater >& curves, + const battery_charge_mode& mode); + + const SOC_vs_P2 get_dcfc_charge_profile(const battery_charge_mode& mode, const EV_type& EV, const EVSE_type& EVSE) const; + const SOC_vs_P2 get_L1_or_L2_charge_profile(const EV_type& EV) const; +}; + +class SOC_vs_P2_factory +{ +private: + + const EV_EVSE_inventory& inventory; + + const create_dcPkW_from_soc LMO_charge; + const create_dcPkW_from_soc NMC_charge; + const create_dcPkW_from_soc LTO_charge; + + std::vector constraints; + + const std::unordered_map L1_L2_curves; + const std::unordered_map< std::pair, SOC_vs_P2, pair_hash > DCFC_curves; + + const create_dcPkW_from_soc load_LMO_charge(); + const create_dcPkW_from_soc load_NMC_charge(); + const create_dcPkW_from_soc load_LTO_charge(); + + const std::unordered_map load_L1_L2_curves(); + const std::unordered_map< std::pair, SOC_vs_P2, pair_hash > load_DCFC_curves(); + +public: + SOC_vs_P2_factory(const EV_EVSE_inventory& inventory); + + const SOC_vs_P2& get_SOC_vs_P2_curves(const EV_type& EV, const EVSE_type& EVSE) const; + + void write_charge_profile(const std::string& output_path) const; +}; + +#endif \ No newline at end of file diff --git a/source/factory/charging_transitions_factory.cpp b/source/factory/charging_transitions_factory.cpp new file mode 100644 index 0000000..5f03660 --- /dev/null +++ b/source/factory/charging_transitions_factory.cpp @@ -0,0 +1,369 @@ +#include "charging_transitions_factory.h" + +#include "battery_integrate_X_in_time.h" // integrate_X_through_time, transition_goto_next_segment_criteria, transition_of_X_through_time + +//########################################### +// charging_transitions +//########################################### + +charging_transitions::charging_transitions(const EVSE_level_charging_transitions& charging_transitions_by_EVSE_level, + const EV_charging_transitions& charging_transitions_by_custom_EV, + const EV_EVSE_charging_transitions& charging_transitions_by_custom_EV_EVSE) + : charging_transitions_by_EVSE_level(charging_transitions_by_EVSE_level), + charging_transitions_by_custom_EV(charging_transitions_by_custom_EV), + charging_transitions_by_custom_EV_EVSE(charging_transitions_by_custom_EV_EVSE) {} + +//########################################### +// transitions_factory +//########################################### + +charging_transitions_factory::charging_transitions_factory(const EV_EVSE_inventory& inventory, const EV_ramping_map& custom_EV_ramping, const EV_EVSE_ramping_map& custom_EV_EVSE_ramping) + : inventory(inventory), custom_EV_ramping(custom_EV_ramping), custom_EV_EVSE_ramping(custom_EV_EVSE_ramping), charging_transitions_obj(this->load_charging_transitions()) {} + + +const charging_transitions charging_transitions_factory::load_charging_transitions() +{ + EVSE_level_charging_transitions transitions_by_EVSE_level; + + // Each transition_of_X_through_time must have at least 3 segments. + + // struct transition_goto_next_segment_criteria + // { + // transition_criteria_type criteria_type; + // double criteria_value; + // bool inturupt_this_transition_if_target_X_deviation_limit_exceeded; + // double target_X_deviation_limit_to_interupt_this_transition; + // double segment_slope_X_per_sec; + // }; + + double X_deadband, target_deadband, off_deadband; + bool pos_and_neg_transitions_are_unique = false; + + std::vector goto_next_seg; + + X_deadband = 0.1; + target_deadband = 0.01; + off_deadband = 0.0001; + + goto_next_seg.clear(); + goto_next_seg.push_back({ time_delay_sec, 0.1, false, 0, 0 }); + goto_next_seg.push_back({ time_delay_sec, 0.1, false, 0, 0 }); + goto_next_seg.push_back({ from_final_X, 0, false, 0, 10 }); + transition_of_X_through_time default_to_pos_inf(moving_toward_pos_inf, X_deadband, goto_next_seg); + + goto_next_seg.clear(); + goto_next_seg.push_back({ time_delay_sec, 0.1, false, 0, 0 }); + goto_next_seg.push_back({ time_delay_sec, 0.1, false, 0, 0 }); + goto_next_seg.push_back({ from_final_X, 0, false, 0, -10 }); + transition_of_X_through_time default_to_neg_inf(moving_toward_neg_inf, X_deadband, goto_next_seg); + + //================================ + // All Default V2G Transitions + //================================ + + //---------------------- + // off_to_neg + //---------------------- + transition_of_X_through_time off_to_neg_obj; + off_to_neg_obj = default_to_neg_inf; + + //---------------------- + // neg_to_off + //---------------------- + transition_of_X_through_time neg_to_off_obj; + neg_to_off_obj = default_to_pos_inf; + + //--------------------------- + // pos_moving_toward_pos_inf + //--------------------------- + transition_of_X_through_time pos_moving_toward_pos_inf_obj; + pos_moving_toward_pos_inf_obj = default_to_pos_inf; + + //--------------------------- + // pos_moving_toward_neg_inf + //--------------------------- + transition_of_X_through_time pos_moving_toward_neg_inf_obj; + pos_moving_toward_neg_inf_obj = default_to_neg_inf; + + //--------------------------- + // neg_moving_toward_pos_inf + //--------------------------- + transition_of_X_through_time neg_moving_toward_pos_inf_obj; + neg_moving_toward_pos_inf_obj = default_to_pos_inf; + + //--------------------------- + // neg_moving_toward_neg_inf + //--------------------------- + transition_of_X_through_time neg_moving_toward_neg_inf_obj; + neg_moving_toward_neg_inf_obj = default_to_neg_inf; + + //---------------------------------- + + transitions_by_EVSE_level.emplace(L1, [&]() { + + X_deadband = 0.01; + target_deadband = 0.01; + off_deadband = 0.0001; + + //---------------------- + // off_to_pos + //---------------------- + goto_next_seg.clear(); + goto_next_seg.push_back({ time_delay_sec, 4.95, false, 0, 0 }); + goto_next_seg.push_back({ time_delay_sec, 0.05, false, 0, 0 }); + goto_next_seg.push_back({ from_final_X, 0, false, 0, 0.5 }); + transition_of_X_through_time off_to_pos_obj(off_to_pos, X_deadband, goto_next_seg); + + //---------------------- + // pos_to_off + //---------------------- + goto_next_seg.clear(); + goto_next_seg.push_back({ time_delay_sec, 0.095, false, 0, 0 }); + goto_next_seg.push_back({ time_delay_sec, 0.005, false, 0, 0 }); + goto_next_seg.push_back({ from_final_X, 0, false, 0, -50 }); + transition_of_X_through_time pos_to_off_obj(pos_to_off, X_deadband, goto_next_seg); + + //----------------------- + // moving_toward_pos_inf + //----------------------- + goto_next_seg.clear(); + goto_next_seg.push_back({ time_delay_sec, 0.12, false, 0, 0 }); + goto_next_seg.push_back({ time_delay_sec, 0.03, false, 0, 0 }); + goto_next_seg.push_back({ from_final_X, 0, false, 0, 0.5 }); + transition_of_X_through_time moving_toward_pos_inf_obj(moving_toward_pos_inf, X_deadband, goto_next_seg); + + //----------------------- + // moving_toward_neg_inf + //----------------------- + goto_next_seg.clear(); + goto_next_seg.push_back({ time_delay_sec, 0.09, false, 0, 0 }); + goto_next_seg.push_back({ time_delay_sec, 0.01, false, 0, 0 }); + goto_next_seg.push_back({ from_final_X, 0, false, 0, -0.5 }); + transition_of_X_through_time moving_toward_neg_inf_obj(moving_toward_neg_inf, X_deadband, goto_next_seg); + + //----------------------- + + return std::move(integrate_X_through_time(target_deadband, off_deadband, pos_and_neg_transitions_are_unique, + pos_to_off_obj, neg_to_off_obj, off_to_pos_obj, off_to_neg_obj, moving_toward_pos_inf_obj, moving_toward_neg_inf_obj, + pos_moving_toward_pos_inf_obj, pos_moving_toward_neg_inf_obj, neg_moving_toward_pos_inf_obj, neg_moving_toward_neg_inf_obj)); + }()); + + transitions_by_EVSE_level.emplace(L2, [&]() { + + X_deadband = 0.01; + target_deadband = 0.01; + off_deadband = 0.0001; + + //---------------------- + // off_to_pos + //---------------------- + goto_next_seg.clear(); + goto_next_seg.push_back({ time_delay_sec, 4.95, false, 0, 0 }); + goto_next_seg.push_back({ time_delay_sec, 0.05, false, 0, 0 }); + goto_next_seg.push_back({ from_final_X, 0, false, 0, 2 }); + transition_of_X_through_time off_to_pos_obj(off_to_pos, X_deadband, goto_next_seg); + + //---------------------- + // pos_to_off + //---------------------- + goto_next_seg.clear(); + goto_next_seg.push_back({ time_delay_sec, 0.095, false, 0, 0 }); + goto_next_seg.push_back({ time_delay_sec, 0.005, false, 0, 0 }); + goto_next_seg.push_back({ from_final_X, 0, false, 0, -100 }); + transition_of_X_through_time pos_to_off_obj(pos_to_off, X_deadband, goto_next_seg); + + //----------------------- + // moving_toward_pos_inf + //----------------------- + goto_next_seg.clear(); + goto_next_seg.push_back({ time_delay_sec, 0.12, false, 0, 0 }); + goto_next_seg.push_back({ time_delay_sec, 0.03, false, 0, 0 }); + goto_next_seg.push_back({ from_final_X, 0, false, 0, 2 }); + transition_of_X_through_time moving_toward_pos_inf_obj(moving_toward_pos_inf, X_deadband, goto_next_seg); + + //----------------------- + // moving_toward_neg_inf + //----------------------- + goto_next_seg.clear(); + goto_next_seg.push_back({ time_delay_sec, 0.09, false, 0, 0 }); + goto_next_seg.push_back({ time_delay_sec, 0.01, false, 0, 0 }); + goto_next_seg.push_back({ from_final_X, 0, false, 0, -3 }); + transition_of_X_through_time moving_toward_neg_inf_obj(moving_toward_neg_inf, X_deadband, goto_next_seg); + + //----------------------- + + return std::move(integrate_X_through_time(target_deadband, off_deadband, pos_and_neg_transitions_are_unique, + pos_to_off_obj, neg_to_off_obj, off_to_pos_obj, off_to_neg_obj, moving_toward_pos_inf_obj, moving_toward_neg_inf_obj, + pos_moving_toward_pos_inf_obj, pos_moving_toward_neg_inf_obj, neg_moving_toward_pos_inf_obj, neg_moving_toward_neg_inf_obj)); + }()); + + transitions_by_EVSE_level.emplace(DCFC, [&]() { + + X_deadband = 0.01; + target_deadband = 0.01; + off_deadband = 0.0001; + + //---------------------- + // pos_to_off + //---------------------- + goto_next_seg.clear(); + goto_next_seg.push_back({ time_delay_sec, 0.040, false, 0, 0 }); + goto_next_seg.push_back({ time_delay_sec, 0.010, false, 0, 0 }); + goto_next_seg.push_back({ from_final_X, 0, false, 0, -140000 }); + transition_of_X_through_time pos_to_off_obj(pos_to_off, X_deadband, goto_next_seg); + + //---------------------- + // off_to_pos + //---------------------- + goto_next_seg.clear(); + goto_next_seg.push_back({ time_delay_sec, 14.9, false, 0, 0 }); + goto_next_seg.push_back({ time_delay_sec, 0.1, false, 0, 0 }); + goto_next_seg.push_back({ from_final_X, 0, false, 0, 25 }); + transition_of_X_through_time off_to_pos_obj(off_to_pos, X_deadband, goto_next_seg); + + //----------------------- + // moving_toward_pos_inf + //----------------------- + goto_next_seg.clear(); + goto_next_seg.push_back({ time_delay_sec, 0.09, false, 0, 0 }); + goto_next_seg.push_back({ time_delay_sec, 0.01, false, 0, 0 }); + goto_next_seg.push_back({ from_final_X, 0, false, 0, 25 }); + transition_of_X_through_time moving_toward_pos_inf_obj(moving_toward_pos_inf, X_deadband, goto_next_seg); + + //----------------------- + // moving_toward_neg_inf + //----------------------- + goto_next_seg.clear(); + goto_next_seg.push_back({ time_delay_sec, 0.09, false, 0, 0 }); + goto_next_seg.push_back({ time_delay_sec, 0.01, false, 0, 0 }); + goto_next_seg.push_back({ from_final_X, 0, false, 0, -25 }); + transition_of_X_through_time moving_toward_neg_inf_obj(moving_toward_neg_inf, X_deadband, goto_next_seg); + + //-------------------------------- + + return std::move(integrate_X_through_time(target_deadband, off_deadband, pos_and_neg_transitions_are_unique, + pos_to_off_obj, neg_to_off_obj, off_to_pos_obj, off_to_neg_obj, moving_toward_pos_inf_obj, moving_toward_neg_inf_obj, + pos_moving_toward_pos_inf_obj, pos_moving_toward_neg_inf_obj, neg_moving_toward_pos_inf_obj, neg_moving_toward_neg_inf_obj)); + }()); + + //-------------------------------------------- + // transition_by_custom_EV + //-------------------------------------------- + + //helper function + pev_charge_ramping custom_charge_ramping; + + auto load_custom_ramping = [&]() { + X_deadband = 0.01; + target_deadband = 0.01; + off_deadband = 0.0001; + + double delay_sec, ramping_kW_per_sec; + + //---------------------- + // pos_to_off + //---------------------- + delay_sec = custom_charge_ramping.on_to_off_delay_sec; + ramping_kW_per_sec = custom_charge_ramping.on_to_off_kW_per_sec; + + goto_next_seg.clear(); + goto_next_seg.push_back({ time_delay_sec, 0.9 * delay_sec, false, 0, 0 }); + goto_next_seg.push_back({ time_delay_sec, 0.1 * delay_sec, false, 0, 0 }); + goto_next_seg.push_back({ from_final_X, 0, false, 0, ramping_kW_per_sec }); + transition_of_X_through_time pos_to_off_obj(pos_to_off, X_deadband, goto_next_seg); + + //---------------------- + // off_to_pos + //---------------------- + delay_sec = custom_charge_ramping.off_to_on_delay_sec; + ramping_kW_per_sec = custom_charge_ramping.off_to_on_kW_per_sec; + + goto_next_seg.clear(); + goto_next_seg.push_back({ time_delay_sec, 0.9 * delay_sec, false, 0, 0 }); + goto_next_seg.push_back({ time_delay_sec, 0.1 * delay_sec, false, 0, 0 }); + goto_next_seg.push_back({ from_final_X, 0, false, 0, ramping_kW_per_sec }); + transition_of_X_through_time off_to_pos_obj(off_to_pos, X_deadband, goto_next_seg); + + //----------------------- + // moving_toward_pos_inf + //----------------------- + delay_sec = custom_charge_ramping.ramp_up_delay_sec; + ramping_kW_per_sec = custom_charge_ramping.ramp_up_kW_per_sec; + + goto_next_seg.clear(); + goto_next_seg.push_back({ time_delay_sec, 0.9 * delay_sec, false, 0, 0 }); + goto_next_seg.push_back({ time_delay_sec, 0.1 * delay_sec, false, 0, 0 }); + goto_next_seg.push_back({ from_final_X, 0, false, 0, ramping_kW_per_sec }); + transition_of_X_through_time moving_toward_pos_inf_obj(moving_toward_pos_inf, X_deadband, goto_next_seg); + + //----------------------- + // moving_toward_neg_inf + //----------------------- + delay_sec = custom_charge_ramping.ramp_down_delay_sec; + ramping_kW_per_sec = custom_charge_ramping.ramp_down_kW_per_sec; + + goto_next_seg.clear(); + goto_next_seg.push_back({ time_delay_sec, 0.9 * delay_sec, false, 0, 0 }); + goto_next_seg.push_back({ time_delay_sec, 0.1 * delay_sec, false, 0, 0 }); + goto_next_seg.push_back({ from_final_X, 0, false, 0, ramping_kW_per_sec }); + transition_of_X_through_time moving_toward_neg_inf_obj(moving_toward_neg_inf, X_deadband, goto_next_seg); + + //----------------------- + + return integrate_X_through_time(target_deadband, off_deadband, pos_and_neg_transitions_are_unique, + pos_to_off_obj, neg_to_off_obj, off_to_pos_obj, off_to_neg_obj, moving_toward_pos_inf_obj, moving_toward_neg_inf_obj, + pos_moving_toward_pos_inf_obj, pos_moving_toward_neg_inf_obj, neg_moving_toward_pos_inf_obj, neg_moving_toward_neg_inf_obj); + }; + + EV_charging_transitions charging_transitions_by_custom_EV; + + for (const std::pair& custom_ramping : this->custom_EV_ramping) + { + const EV_type& EV = custom_ramping.first; + custom_charge_ramping = custom_ramping.second; + + charging_transitions_by_custom_EV.emplace(EV, load_custom_ramping()); + } + + //-------------------------------------------- + // transition_by_custom_EV_EVSE + //-------------------------------------------- + + EV_EVSE_charging_transitions charging_transitions_by_custom_EV_EVSE; + + for (const std::pair, pev_charge_ramping>& custom_ramping : this->custom_EV_EVSE_ramping) + { + const std::pair& EV_EVSE = custom_ramping.first; + custom_charge_ramping = custom_ramping.second; + + charging_transitions_by_custom_EV_EVSE.emplace(EV_EVSE, load_custom_ramping()); + } + + return charging_transitions(transitions_by_EVSE_level, charging_transitions_by_custom_EV, charging_transitions_by_custom_EV_EVSE); +} + +const integrate_X_through_time& charging_transitions_factory::get_charging_transitions(const EV_type& EV, const EVSE_type& EVSE) const +{ + const EVSE_level& level = this->inventory.get_EVSE_inventory().at(EVSE).get_level(); + + if (level == L1 || level == L2) + { + return this->charging_transitions_obj.charging_transitions_by_EVSE_level.at(level); + } + else // DCFC + { + + if (this->charging_transitions_obj.charging_transitions_by_custom_EV_EVSE.count(std::make_pair( EV, EVSE )) > 0) + { + return this->charging_transitions_obj.charging_transitions_by_custom_EV_EVSE.at(std::make_pair(EV, EVSE)); + } + else if (this->charging_transitions_obj.charging_transitions_by_custom_EV.count(EV) > 0) + { + return this->charging_transitions_obj.charging_transitions_by_custom_EV.at(EV); + } + else + { + return this->charging_transitions_obj.charging_transitions_by_EVSE_level.at(level); + } + } +} diff --git a/source/factory/charging_transitions_factory.h b/source/factory/charging_transitions_factory.h new file mode 100644 index 0000000..127b2eb --- /dev/null +++ b/source/factory/charging_transitions_factory.h @@ -0,0 +1,53 @@ +#ifndef CHARGING_TRANSITIONS_FACTORY_H +#define CHARGING_TRANSITIONS_FACTORY_H + +#include + +#include "EV_characteristics.h" +#include "EVSE_characteristics.h" +#include "EV_EVSE_inventory.h" + +#include "datatypes_global.h" // pev_charge_ramping +#include "battery_integrate_X_in_time.h" // integrate_X_through_time +#include "helper.h" + +typedef std::unordered_map EV_ramping_map; +typedef std::unordered_map, pev_charge_ramping, pair_hash> EV_EVSE_ramping_map; + +typedef std::unordered_map EVSE_level_charging_transitions; +typedef std::unordered_map EV_charging_transitions; +typedef std::unordered_map, integrate_X_through_time, pair_hash> EV_EVSE_charging_transitions; + +struct charging_transitions +{ + const EVSE_level_charging_transitions charging_transitions_by_EVSE_level; + const EV_charging_transitions charging_transitions_by_custom_EV; + const EV_EVSE_charging_transitions charging_transitions_by_custom_EV_EVSE; + + charging_transitions(const EVSE_level_charging_transitions& charging_transitions_by_EVSE_level, + const EV_charging_transitions& charging_transitions_by_custom_EV, + const EV_EVSE_charging_transitions& charging_transitions_by_custom_EV_EVSE); +}; + + +class charging_transitions_factory +{ +private: + + const EV_EVSE_inventory& inventory; + + const EV_ramping_map custom_EV_ramping; + const EV_EVSE_ramping_map custom_EV_EVSE_ramping; + + const charging_transitions charging_transitions_obj; + + const charging_transitions load_charging_transitions(); + + +public: + charging_transitions_factory(const EV_EVSE_inventory& inventory, const EV_ramping_map& custom_EV_ramping, const EV_EVSE_ramping_map& custom_EV_EVSE_ramping); + + const integrate_X_through_time& get_charging_transitions(const EV_type& EV, const EVSE_type& EVSE) const; +}; + +#endif \ No newline at end of file diff --git a/source/factory/puVrms_vs_P2_factory.cpp b/source/factory/puVrms_vs_P2_factory.cpp new file mode 100644 index 0000000..cba13a6 --- /dev/null +++ b/source/factory/puVrms_vs_P2_factory.cpp @@ -0,0 +1,107 @@ +#include "puVrms_vs_P2_factory.h" + +//########################################### +// puVrms_vs_P2_factory +//########################################### + +puVrms_vs_P2_factory::puVrms_vs_P2_factory(const EV_EVSE_inventory& inventory) : inventory(inventory), puVrms_vs_P2_curves(this->load_puVrms_vs_P2_curves()) {} + + +const std::unordered_map > puVrms_vs_P2_factory::load_puVrms_vs_P2_curves() +{ + // The points on the P2_vs_pu_Vrms plot are all multiplied by SE_P2_limit_atNominalV_kW + // The P2_vs_pu_Vrms plot must pass through the point (1, 1) + // At nominal voltage Vrms = 1 the final curve is 1*SE_P2_limit_atNominalV_kW or the limit at nominal voltage + + std::unordered_map > data; + + data.emplace(L1, []() { + std::vector puVrms_vec = { 0.0, 0.69, 0.7, 2.0 }; + std::vector P2_vec = { 0.0, 0.00, 0.7, 2.0 }; + + std::map curve; + + for (int i = 0; i < (int)puVrms_vec.size(); i++) + { + curve.emplace(puVrms_vec[i], P2_vec[i]); + } + return curve; + }()); + + data.emplace(L2, []() { + std::vector puVrms_vec = { 0.0, 0.34, 0.35, 0.94, 2.0 }; + std::vector P2_vec = { 0.0, 0.0, 0.373, 1.0, 1.0 }; + + std::map curve; + + for (int i = 0; i < (int)puVrms_vec.size(); i++) + { + curve.emplace(puVrms_vec[i], P2_vec[i]); + } + return curve; + }()); + + data.emplace(DCFC, []() { + std::vector puVrms_vec = { 0.0, 0.79, 0.80, 1.20, 1.21, 2.0 }; + std::vector P2_vec = { 0.0, 0.0, 1.0, 1.0, 0.0, 0.0 }; + + std::map curve; + + for (int i = 0; i < (int)puVrms_vec.size(); i++) + { + curve.emplace(puVrms_vec[i], P2_vec[i]); + } + return curve; + }()); + return std::move(data); +} + +const poly_function_of_x puVrms_vs_P2_factory::get_puVrms_vs_P2(const EVSE_type& EVSE, const double& SE_P2_limit_atNominalV_kW) const +{ + const EVSE_level& level = this->inventory.get_EVSE_inventory().at(EVSE).get_level(); + + const std::map& curve = this->puVrms_vs_P2_curves.at(level); + + const std::map curve_scaled = [&]() { + + std::map curve_scaled; + + for (const auto& elem : curve) + { + curve_scaled.emplace(elem.first, elem.second * SE_P2_limit_atNominalV_kW); + } + return curve_scaled; + }(); + + + const poly_function_of_x puVrms_vs_P2 = [&]() { + + std::vector segments; + double a, b; + + double prev_puVrms, cur_puVrms; + double prev_P2, cur_P2; + + auto it = curve_scaled.begin(); + prev_puVrms = it->first; + prev_P2 = it->second; + + for (it = std::next(it); it != curve_scaled.end(); it++) + { + cur_puVrms = it->first; + cur_P2 = it->second; + + a = (prev_P2 - cur_P2) / (prev_puVrms - cur_puVrms); + b = cur_P2 - a * cur_puVrms; + segments.emplace_back(prev_puVrms, cur_puVrms, first, a, b, 0, 0, 0 ); // x_LB, x_UB, degree, a, b, c, d, e + } + //-------- + + double x_tolerance = 0.0001; + bool take_abs_of_x = false; + bool if_x_is_out_of_bounds_print_warning_message = true; + return poly_function_of_x(x_tolerance, take_abs_of_x, if_x_is_out_of_bounds_print_warning_message, segments, "P2_vs_puVrms"); + }(); + + return puVrms_vs_P2; +} \ No newline at end of file diff --git a/source/factory/puVrms_vs_P2_factory.h b/source/factory/puVrms_vs_P2_factory.h new file mode 100644 index 0000000..80b3cc9 --- /dev/null +++ b/source/factory/puVrms_vs_P2_factory.h @@ -0,0 +1,32 @@ +#ifndef PUVRMS_VS_P2_FACTORY_H +#define PUVRMS_VS_P2_FACTORY_H + +#include +#include + +#include "EV_characteristics.h" +#include "EVSE_characteristics.h" +#include "EV_EVSE_inventory.h" + +#include "helper.h" // poly_segment, poly_function_of_x + +typedef double puVrms; +typedef double P2; + +class puVrms_vs_P2_factory +{ +private: + const EV_EVSE_inventory& inventory; + + const std::unordered_map > puVrms_vs_P2_curves; + + const std::unordered_map > load_puVrms_vs_P2_curves(); + +public: + puVrms_vs_P2_factory(const EV_EVSE_inventory& inventory); + + const poly_function_of_x get_puVrms_vs_P2(const EVSE_type& EVSE, const double& SE_P2_limit_atNominalV_kW) const; + +}; + +#endif \ No newline at end of file diff --git a/source/load_inputs/CMakeLists.txt b/source/load_inputs/CMakeLists.txt deleted file mode 100644 index 344102f..0000000 --- a/source/load_inputs/CMakeLists.txt +++ /dev/null @@ -1,22 +0,0 @@ -cmake_minimum_required(VERSION 3.5) - -project(test) - -set(CMAKE_POSITION_INDEPENDENT_CODE ON) - -if (NOT DEFINED INSTALL_DIR) - message(STATUS "setting local install dir") - set(INSTALL_DIR ${PROJECT_SOURCE_DIR}) -endif() - -message(STATUS "Install dir is ${INSTALL_DIR}") - -add_executable(loader "main.cpp" "load_EV_EVSE_inventory.cpp" "load_EV_inventory.cpp" "load_EVSE_inventory.cpp" -"load_helper.cpp" "../charging_models/EV_characteristics.cpp" "../charging_models/EVSE_characteristics.cpp" -"../charging_models/EV_EVSE_inventory.cpp" "load_EV_EVSE_inventory.h" "load_EV_EVSE_inventory.cpp") - -target_compile_features(loader PUBLIC cxx_std_17) -target_include_directories(loader PUBLIC ${PROJECT_SOURCE_DIR}/../charging_models) - -install(TARGETS loader - DESTINATION ${INSTALL_DIR}) diff --git a/source/load_inputs/load_EVSE_inventory.cpp b/source/load_inputs/load_EVSE_inventory.cpp index d962730..0b4dd75 100644 --- a/source/load_inputs/load_EVSE_inventory.cpp +++ b/source/load_inputs/load_EVSE_inventory.cpp @@ -1,5 +1,5 @@ #include "load_EVSE_inventory.h" -#include "load_helper.h" +#include "helper.h" #include #include diff --git a/source/load_inputs/load_EV_inventory.cpp b/source/load_inputs/load_EV_inventory.cpp index 81cd4b3..766827e 100644 --- a/source/load_inputs/load_EV_inventory.cpp +++ b/source/load_inputs/load_EV_inventory.cpp @@ -1,5 +1,5 @@ #include "load_EV_inventory.h" -#include "load_helper.h" +#include "helper.h" #include #include @@ -58,76 +58,95 @@ EV_inventory load_EV_inventory::load(std::string inputs_dir) //------------------------------- + std::vector column_names = { "EV_type", "battery_chemistry", "usable_battery_size_kWh", + "range_miles", "efficiency_Wh/Mile", "AC_charge_rate_kW", "DCFC_capable", "max_c_rate", + "pack_voltage_at_peak_power_V" }; + + int num_columns = (int)column_names.size(); + + //------------------------------- + // column names std::getline(EV_inputs_file_handle, line); elements_in_line = tokenize(line); // check number of columns - ASSERT(elements_in_line.size() == 8, EV_inputs_file << " invalid number of columns. Need 8 \ - columns but " << elements_in_line.size() << " provided in line number " << line_number); - - // check if columns equal to { EV_type, battery_chemistry, "DCFC_capable", max_c_rate, - // battery_size_kWh, range_miles, efficiency_Wh/Mile, AC_charge_rate_kW } - std::vector column_names = { "EV_type", "battery_chemistry", "DCFC_capable", - "max_c_rate", "battery_size_kWh", "range_miles", "efficiency_Wh/Mile", "AC_charge_rate_kW" }; - + ASSERT(elements_in_line.size() == num_columns, EV_inputs_file << " invalid number of columns. Need " + << num_columns << " columns but " << elements_in_line.size() << " provided in line number " + << line_number); + ASSERT(elements_in_line == column_names, EV_inputs_file << " column names doesn\'t match. " << - "Expected column names are {EV_type, battery_chemistry, DCFC_capable, max_c_rate, " << - "battery_size_kWh, range_miles, efficiency_Wh/Mile, AC_charge_rate_kW }"); + "Expected column names are { EV_type, battery_chemistry, usable_battery_size_kWh, " << + "range_miles, efficiency_Wh/Mile, AC_charge_rate_kW, DCFC_capable, max_c_rate, " << + "pack_voltage_at_peak_power_V}"); while (std::getline(EV_inputs_file_handle, line)) { line_number += 1; elements_in_line = tokenize(line); - ASSERT(elements_in_line.size() == 8, EV_inputs_file << " invalid number of columns. Need 8 \ - columns but " << elements_in_line.size() << " provided in line number " << line_number); - + ASSERT(elements_in_line.size() == num_columns, EV_inputs_file << " invalid number of columns. Need " + << num_columns << " columns but " << elements_in_line.size() << " provided in line number " + << line_number); const EV_type type = [&]() { + int column_num = 0; + // check if EV_type is unique - std::string str = elements_in_line[0]; - ASSERT(EV_inv.find(str) == EV_inv.end(), EV_inputs_file << " " << column_names[0] << " " << - str << " is not unique in line number " << line_number); + std::string str = elements_in_line[column_num]; + ASSERT(EV_inv.find(str) == EV_inv.end(), EV_inputs_file << " " << column_names[column_num] + << " " << str << " is not unique in line number " << line_number); return str; }(); const battery_chemistry chemistry = [&]() { + int column_num = 1; + // check if battery_chemistry is equal to LTO, LMO or NMC std::vector options = { "LTO", "LMO", "NMC" }; - std::string str = elements_in_line[1]; + std::string str = elements_in_line[column_num]; bool is_valid = std::any_of(options.begin(), options.end(), [&str](const std::string& s) { return str == s; }); - ASSERT(is_valid, EV_inputs_file << " " << column_names[1] << " " << str << " is not \ + ASSERT(is_valid, EV_inputs_file << " " << column_names[column_num] << " " << str << " is not \ one of {LMO, LTO, NMC} in line number " << line_number); return this->string_to_battery_chemistry(str); }(); - const bool DCFC_capable = [&]() { + const double usable_battery_size_kWh = [&]() { - // check if DCFC_capable is yes or no - std::vector options = { "true", "false", "t", "f"}; - std::string str = elements_in_line[2]; - std::transform(str.begin(), str.end(), str.begin(), ::tolower); + int column_num = 2; - bool is_valid = std::any_of(options.begin(), options.end(), - [&str](const std::string& s) { return str == s; }); - ASSERT(is_valid, EV_inputs_file << " " << column_names[2] << " " << str << - " is not one of {TRUE, FALSE, T, F} case insensitive in line number " << line_number); + // check if battery_size_kWh is double and also non negative + std::string str = elements_in_line[column_num]; + double val; + bool is_conversion_successful; + try { + val = std::stod(str); + is_conversion_successful = true; + } + catch (...) { + is_conversion_successful = false; + } + ASSERT(is_conversion_successful, EV_inputs_file << " " << column_names[column_num] << " " << + str << " is not a double in line number " << line_number); - return this->string_to_DCFC_capable(str); + ASSERT(val >= 0, EV_inputs_file << " " << column_names[column_num] << " " << str << + " is less than or equal to 0 in line number " << line_number); + + return val; }(); - - const double max_c_rate = [&]() { + const double range_miles = [&]() { - // check if max_c_rate can be converted to double - std::string str = elements_in_line[3]; + int column_num = 3; + + // check if range_miles is double and also non negative + std::string str = elements_in_line[column_num]; double val; bool is_conversion_successful; try { @@ -137,17 +156,22 @@ EV_inventory load_EV_inventory::load(std::string inputs_dir) catch (...) { is_conversion_successful = false; } - ASSERT(is_conversion_successful, EV_inputs_file << " " << column_names[3] << " " << + ASSERT(is_conversion_successful, EV_inputs_file << " " << column_names[column_num] << " " << str << " is not a double in line number " << line_number); - + + ASSERT(val >= 0, EV_inputs_file << " " << column_names[column_num] << " " << str << + " is less than or equal to 0 in line number " << line_number); + return val; }(); - const double battery_size_kWh = [&]() { + const double efficiency_Wh_per_mile = [&]() { - // check if battery_size_kWh is double and also non negative - std::string str = elements_in_line[4]; + int column_num = 4; + + // check efficiency_Wh_per_mile is double and non negative + std::string str = elements_in_line[column_num]; double val; bool is_conversion_successful; try { @@ -157,20 +181,22 @@ EV_inventory load_EV_inventory::load(std::string inputs_dir) catch (...) { is_conversion_successful = false; } - ASSERT(is_conversion_successful, EV_inputs_file << " " << column_names[4] << " " << - str << " is not a double in line number " << line_number); + ASSERT(is_conversion_successful, EV_inputs_file << " " << column_names[column_num] << " " << str << + " is not a double in line number " << line_number); - ASSERT(val > 0, EV_inputs_file << " " << column_names[4] << " " << str << + ASSERT(val >= 0, EV_inputs_file << " " << column_names[column_num] << " " << str << " is less than or equal to 0 in line number " << line_number); return val; }(); - const double range_miles = [&]() { + const double AC_charge_rate_kW = [&]() { - // check if range_miles is double and also non negative - std::string str = elements_in_line[5]; + int column_num = 5; + + // check AC_charge_rate_kW is double and non negative + std::string str = elements_in_line[column_num]; double val; bool is_conversion_successful; try { @@ -180,20 +206,40 @@ EV_inventory load_EV_inventory::load(std::string inputs_dir) catch (...) { is_conversion_successful = false; } - ASSERT(is_conversion_successful, EV_inputs_file << " " << column_names[5] << " " << + ASSERT(is_conversion_successful, EV_inputs_file << " " << column_names[column_num] << " " << str << " is not a double in line number " << line_number); - ASSERT(val > 0, EV_inputs_file << " " << column_names[5] << " " << str << - " is less than or equal to 0 in line number " << line_number); + ASSERT(val >= 0, EV_inputs_file << " " << column_names[column_num] << " " << str + << " is less than or equal to 0 in line number " << line_number); return val; + }(); + + const bool DCFC_capable = [&]() { + + int column_num = 6; + + // check if DCFC_capable is yes or no + std::vector options = { "true", "false", "t", "f"}; + std::string str = elements_in_line[column_num]; + std::transform(str.begin(), str.end(), str.begin(), ::tolower); + + bool is_valid = std::any_of(options.begin(), options.end(), + [&str](const std::string& s) { return str == s; }); + ASSERT(is_valid, EV_inputs_file << " " << column_names[column_num] << " " << str << + " is not one of {TRUE, FALSE, T, F} case insensitive in line number " << line_number); + + return this->string_to_DCFC_capable(str); }(); - const double efficiency_Wh_per_mile = [&]() { + + const double max_c_rate = [&]() { - // check efficiency_Wh_per_mile is double and non negative - std::string str = elements_in_line[6]; + int column_num = 7; + + // check if max_c_rate can be converted to double + std::string str = elements_in_line[column_num]; double val; bool is_conversion_successful; try { @@ -203,20 +249,19 @@ EV_inventory load_EV_inventory::load(std::string inputs_dir) catch (...) { is_conversion_successful = false; } - ASSERT(is_conversion_successful, EV_inputs_file << " " << column_names[6] << " " << str << - " is not a double in line number " << line_number); - - ASSERT(val > 0, EV_inputs_file << " " << column_names[6] << " " << str << - " is less than or equal to 0 in line number " << line_number); - + ASSERT(is_conversion_successful, EV_inputs_file << " " << column_names[column_num] << " " << + str << " is not a double in line number " << line_number); + return val; }(); - const double AC_charge_rate_kW = [&](){ + const double pack_voltage_at_peak_power_V = [&]() { - // check AC_charge_rate_kW is double and non negative - std::string str = elements_in_line[7]; + int column_num = 8; + + // check pack_voltage_at_peak_power_V is double and non negative + std::string str = elements_in_line[column_num]; double val; bool is_conversion_successful; try { @@ -226,20 +271,20 @@ EV_inventory load_EV_inventory::load(std::string inputs_dir) catch (...) { is_conversion_successful = false; } - ASSERT(is_conversion_successful, EV_inputs_file << " " << column_names[7] << " " << + ASSERT(is_conversion_successful, EV_inputs_file << " " << column_names[column_num] << " " << str << " is not a double in line number " << line_number); - ASSERT(val > 0, EV_inputs_file << " " << column_names[7] << " " << str + ASSERT(val >= 0, EV_inputs_file << " " << column_names[column_num] << " " << str << " is less than or equal to 0 in line number " << line_number); return val; }(); + // other checks - EV_inv.emplace(type, EV_characteristics(type, chemistry, DCFC_capable, max_c_rate, battery_size_kWh, - range_miles, efficiency_Wh_per_mile, AC_charge_rate_kW)); - + EV_inv.emplace(type, EV_characteristics(type, chemistry, usable_battery_size_kWh, range_miles, + efficiency_Wh_per_mile, AC_charge_rate_kW, DCFC_capable, max_c_rate, pack_voltage_at_peak_power_V)); } return std::move(EV_inv); diff --git a/source/load_inputs/load_helper.cpp b/source/load_inputs/load_helper.cpp index 1e5b49a..e69de29 100644 --- a/source/load_inputs/load_helper.cpp +++ b/source/load_inputs/load_helper.cpp @@ -1,28 +0,0 @@ -#include "load_helper.h" - -#include -#include - -std::string trim(const std::string& s) -{ - size_t first = s.find_first_not_of(" \t\n\r\f\v"); - if (first == std::string::npos) { - return ""; - } - size_t last = s.find_last_not_of(" \t\n\r\f\v"); - return s.substr(first, last - first + 1); -} - -std::vector tokenize(std::string s, std::string delim) -{ - std::vector tokenized_vec; - - size_t start, end = -1 * delim.size(); - do { - start = end + delim.size(); - end = s.find(delim, start); - tokenized_vec.push_back(trim(s.substr(start, end - start))); - } while (end != -1); - - return tokenized_vec; -} \ No newline at end of file diff --git a/source/load_inputs/load_helper.h b/source/load_inputs/load_helper.h index 64a65d7..314531d 100644 --- a/source/load_inputs/load_helper.h +++ b/source/load_inputs/load_helper.h @@ -1,22 +1,6 @@ #ifndef load_helper_H #define load_helper_H -#include -#include -#ifndef NDEBUG -# define ASSERT(condition, message) \ - do { \ - if (! (condition)) { \ - std::cerr << "Assertion `" #condition "` failed in " << __FILE__ \ - << " line " << __LINE__ << ": " << message << std::endl; \ - std::terminate(); \ - } \ - } while (false) -#else -# define ASSERT(condition, message) do { } while (false) -#endif - -std::vector tokenize(std::string s, std::string delim = ","); #endif \ No newline at end of file diff --git a/source/main.cpp b/source/main.cpp new file mode 100644 index 0000000..824be8d --- /dev/null +++ b/source/main.cpp @@ -0,0 +1,19 @@ +#include +#include "EV_charge_model_factory.h" +#include "load_EV_EVSE_inventory.h" + +int main() +{ + load_EV_EVSE_inventory load_inventory{ "../inputs" }; + const EV_EVSE_inventory& inventory = load_inventory.get_EV_EVSE_inventory(); + + std::cout << inventory << std::endl; + EV_ramping_map custom_EV_ramping; + EV_EVSE_ramping_map custom_EV_EVSE_ramping; + bool model_stochastic_battery_degregation = false; + + EV_charge_model_factory charge_model_factory{ inventory, custom_EV_ramping, custom_EV_EVSE_ramping, model_stochastic_battery_degregation }; + charge_model_factory.write_charge_profile("./"); + + return 0; +} \ No newline at end of file diff --git a/source/pev_charge_profile_factory/create_library/CMakeLists.txt b/source/pev_charge_profile_factory/create_library/CMakeLists.txt new file mode 100644 index 0000000..48cceee --- /dev/null +++ b/source/pev_charge_profile_factory/create_library/CMakeLists.txt @@ -0,0 +1,18 @@ +cmake_minimum_required(VERSION 3.5) + +project(Charge_profile_library) + +set(CMAKE_POSITION_INDEPENDENT_CODE ON) + +if (NOT DEFINED INSTALL_DIR) + message(STATUS "setting local install dir") + set(INSTALL_DIR ${PROJECT_SOURCE_DIR}/../generate_charge_profiles) +endif() + +message(STATUS "Install dir is ${INSTALL_DIR}") +find_package(pybind11 CONFIG) +add_executable(charge_profile_factory pev_charge_profile_factory.cpp main.cpp) +#pybind11_add_module(charge_profile_factory MODULE pev_charge_profile_factory.cpp python_bind.cpp main.cpp) + +install(TARGETS charge_profile_factory + DESTINATION ${INSTALL_DIR}) diff --git a/source/pev_charge_profile_factory/create_library/main.cpp b/source/pev_charge_profile_factory/create_library/main.cpp new file mode 100644 index 0000000..094fd4d --- /dev/null +++ b/source/pev_charge_profile_factory/create_library/main.cpp @@ -0,0 +1,9 @@ +#include +#include "pev_charge_profile_factory.h" + +int main() +{ + pev_charge_profile_factory factory_obj; + std::vector segs = factory_obj.get_dcfc_charge_profile(NMC, 92.1053, 126.808, 2.64, 100000, 125); + return 0; +} \ No newline at end of file diff --git a/source/pev_charge_profile_factory/create_library/pev_charge_profile_factory.cpp b/source/pev_charge_profile_factory/create_library/pev_charge_profile_factory.cpp index 9baf66d..c2e2644 100644 --- a/source/pev_charge_profile_factory/create_library/pev_charge_profile_factory.cpp +++ b/source/pev_charge_profile_factory/create_library/pev_charge_profile_factory.cpp @@ -217,15 +217,15 @@ void create_dcPkW_from_soc::get_charging_dcfc_charge_profile(double bat_energy_k double soc_0, soc_1, soc_tmp, P_0, P_1, w, P_tmp; double m, b, m1, b1; - if(dc_current_limit >= curves[0].get_current_rate_amps(bat_capacity_Ah_1C)) + if(dc_current_limit >= this->curves[0].get_current_rate_amps(bat_capacity_Ah_1C)) { std::vector points; - points = curves[0].get_points(); + points = this->curves[0].get_points(); for(int i=0; icurves.size(); i++) { - if(curves[i].get_current_rate_amps(bat_capacity_Ah_1C) < dc_current_limit) + if(this->curves[i].get_current_rate_amps(bat_capacity_Ah_1C) < dc_current_limit) { - upper_curve = curves[i-1]; - lower_curve = curves[i]; + upper_curve = this->curves[i-1]; // curves ar getting copied + lower_curve = this->curves[i]; break; } } - //-------------------------------------- + //-------------------------------------- // Interpolate Curves //-------------------------------------- // interpolated_val = weight_factor*high_val + (1 - weight_factor)*low_val; double weight_factor = (dc_current_limit - lower_curve.get_current_rate_amps(bat_capacity_Ah_1C)) / (upper_curve.get_current_rate_amps(bat_capacity_Ah_1C) - lower_curve.get_current_rate_amps(bat_capacity_Ah_1C)); - std::vector upper_points = upper_curve.get_points(); + std::vector upper_points = upper_curve.get_points(); // get points return const reference so this copy is alright std::vector lower_points = lower_curve.get_points(); //----------------- diff --git a/source/pev_charge_profile_factory/generate_charge_profiles/archives/L1_L2_inputs.csv b/source/pev_charge_profile_factory/generate_charge_profiles/archives/L1_L2_inputs.csv new file mode 100644 index 0000000..165d2bd --- /dev/null +++ b/source/pev_charge_profile_factory/generate_charge_profiles/archives/L1_L2_inputs.csv @@ -0,0 +1,9 @@ +EV_enum,bat_chemistry,bat_size_kWh,P2_charge_rate_kW +ld_50kWh,NMC,52.63157895,15.8976 +ld_100kWh,NMC,105.1578947,15.8976 +md_200kWh,NMC,210.5263158,15.8976 +hd_300kWh,NMC,315.7894737,15.8976 +hd_400kWh,NMC,421.0526316,15.8976 +hd_600kWh,NMC,631.5789474,15.8976 +hd_800kWh,NMC,842.1052632,15.8976 +hd_1000kWh,NMC,1052.631579,15.8976 diff --git a/source/pev_charge_profile_factory/generate_charge_profiles/archives/dcfc_inputs.csv b/source/pev_charge_profile_factory/generate_charge_profiles/archives/dcfc_inputs.csv new file mode 100644 index 0000000..f2a4eeb --- /dev/null +++ b/source/pev_charge_profile_factory/generate_charge_profiles/archives/dcfc_inputs.csv @@ -0,0 +1,57 @@ +EV_enum,bat_chemistry,bat_size_kWh,bat_size_Ah_1C,bat_max_c_rate,SE_enum,SE_dc_current_limit_amps +ld_50kWh,NMC,52.63157895,65.63823351,2.9,xfc_150,170 +ld_100kWh,NMC,105.1578947,131.1451906,2.9,xfc_150,170 +md_200kWh,NMC,210.5263158,262.5529341,2.9,xfc_150,170 +hd_300kWh,NMC,315.7894737,262.5529341,2.9,xfc_150,170 +hd_400kWh,NMC,421.0526316,350.0705787,2.9,xfc_150,170 +hd_600kWh,NMC,631.5789474,525.1058681,2.9,xfc_150,170 +hd_800kWh,NMC,842.1052632,700.1411575,2.9,xfc_150,170 +hd_1000kWh,NMC,1052.631579,865.497076,2.5,xfc_150,170 +ld_50kWh,NMC,52.63157895,65.63823351,2.9,xfc_350,500 +ld_100kWh,NMC,105.1578947,131.1451906,2.9,xfc_350,500 +md_200kWh,NMC,210.5263158,262.5529341,2.9,xfc_350,500 +hd_300kWh,NMC,315.7894737,262.5529341,2.9,xfc_350,500 +hd_400kWh,NMC,421.0526316,350.0705787,2.9,xfc_350,500 +hd_600kWh,NMC,631.5789474,525.1058681,2.9,xfc_350,500 +hd_800kWh,NMC,842.1052632,700.1411575,2.9,xfc_350,500 +hd_1000kWh,NMC,1052.631579,865.497076,2.5,xfc_350,500 +ld_50kWh,NMC,52.63157895,65.63823351,2.9,xfc_500kW,500 +ld_100kWh,NMC,105.1578947,131.1451906,2.9,xfc_500kW,500 +md_200kWh,NMC,210.5263158,262.5529341,2.9,xfc_500kW,500 +hd_300kWh,NMC,315.7894737,262.5529341,2.9,xfc_500kW,500 +hd_400kWh,NMC,421.0526316,350.0705787,2.9,xfc_500kW,500 +hd_600kWh,NMC,631.5789474,525.1058681,2.9,xfc_500kW,500 +hd_800kWh,NMC,842.1052632,700.1411575,2.9,xfc_500kW,500 +hd_1000kWh,NMC,1052.631579,865.497076,2.5,xfc_500kW,500 +ld_50kWh,NMC,52.63157895,65.63823351,2.9,xfc_1000kW,732.6 +ld_100kWh,NMC,105.1578947,131.1451906,2.9,xfc_1000kW,732.6 +md_200kWh,NMC,210.5263158,262.5529341,2.9,xfc_1000kW,732.6 +hd_300kWh,NMC,315.7894737,262.5529341,2.9,xfc_1000kW,732.6 +hd_400kWh,NMC,421.0526316,350.0705787,2.9,xfc_1000kW,732.6 +hd_600kWh,NMC,631.5789474,525.1058681,2.9,xfc_1000kW,732.6 +hd_800kWh,NMC,842.1052632,700.1411575,2.9,xfc_1000kW,732.6 +hd_1000kWh,NMC,1052.631579,865.497076,2.5,xfc_1000kW,732.6 +ld_50kWh,NMC,52.63157895,65.63823351,2.9,xfc_2000kW,1466.6663 +ld_100kWh,NMC,105.1578947,131.1451906,2.9,xfc_2000kW,1466.6663 +md_200kWh,NMC,210.5263158,262.5529341,2.9,xfc_2000kW,1466.6663 +hd_300kWh,NMC,315.7894737,262.5529341,2.9,xfc_2000kW,1466.6663 +hd_400kWh,NMC,421.0526316,350.0705787,2.9,xfc_2000kW,1466.6663 +hd_600kWh,NMC,631.5789474,525.1058681,2.9,xfc_2000kW,1466.6663 +hd_800kWh,NMC,842.1052632,700.1411575,2.9,xfc_2000kW,1466.6663 +hd_1000kWh,NMC,1052.631579,865.497076,2.5,xfc_2000kW,1466.6663 +ld_50kWh,NMC,52.63157895,65.63823351,2.9,xfc_3000kW,2200 +ld_100kWh,NMC,105.1578947,131.1451906,2.9,xfc_3000kW,2200 +md_200kWh,NMC,210.5263158,262.5529341,2.9,xfc_3000kW,2200 +hd_300kWh,NMC,315.7894737,262.5529341,2.9,xfc_3000kW,2200 +hd_400kWh,NMC,421.0526316,350.0705787,2.9,xfc_3000kW,2200 +hd_600kWh,NMC,631.5789474,525.1058681,2.9,xfc_3000kW,2200 +hd_800kWh,NMC,842.1052632,700.1411575,2.9,xfc_3000kW,2200 +hd_1000kWh,NMC,1052.631579,865.497076,2.5,xfc_3000kW,2200 +ld_50kWh,NMC,52.63157895,65.63823351,2.9,dwc_100kW,125 +ld_100kWh,NMC,105.1578947,131.1451906,2.9,dwc_100kW,125 +md_200kWh,NMC,210.5263158,262.5529341,2.9,dwc_100kW,125 +hd_300kWh,NMC,315.7894737,262.5529341,2.9,dwc_100kW,125 +hd_400kWh,NMC,421.0526316,350.0705787,2.9,dwc_100kW,125 +hd_600kWh,NMC,631.5789474,525.1058681,2.9,dwc_100kW,125 +hd_800kWh,NMC,842.1052632,700.1411575,2.9,dwc_100kW,125 +hd_1000kWh,NMC,1052.631579,865.497076,2.5,dwc_100kW,125 diff --git a/source/pev_charge_profile_factory/generate_charge_profiles/archives/output/L1_L2_charge_profiles.csv b/source/pev_charge_profile_factory/generate_charge_profiles/archives/output/L1_L2_charge_profiles.csv new file mode 100644 index 0000000..ddd3573 --- /dev/null +++ b/source/pev_charge_profile_factory/generate_charge_profiles/archives/output/L1_L2_charge_profiles.csv @@ -0,0 +1,103 @@ +, , , , , , , , , +soc, ld_50kWh, ld_100kWh, md_200kWh, hd_300kWh, hd_400kWh, hd_600kWh, hd_800kWh, hd_1000kWh, +0, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +1, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +2, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +3, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +4, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +5, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +6, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +7, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +8, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +9, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +10, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +11, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +12, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +13, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +14, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +15, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +16, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +17, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +18, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +19, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +20, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +21, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +22, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +23, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +24, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +25, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +26, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +27, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +28, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +29, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +30, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +31, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +32, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +33, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +34, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +35, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +36, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +37, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +38, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +39, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +40, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +41, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +42, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +43, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +44, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +45, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +46, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +47, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +48, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +49, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +50, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +51, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +52, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +53, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +54, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +55, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +56, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +57, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +58, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +59, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +60, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +61, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +62, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +63, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +64, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +65, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +66, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +67, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +68, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +69, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +70, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +71, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +72, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +73, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +74, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +75, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +76, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +77, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +78, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +79, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +80, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +81, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +82, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +83, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +84, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +85, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +86, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +87, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +88, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +89, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +90, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +91, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +92, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +93, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +94, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +95, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +96, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +97, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +98, 13.596491228749983, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +99, 8.377192982875044, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, +100, 3.1578947369999923, 6.309473682000089, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, diff --git a/source/pev_charge_profile_factory/generate_charge_profiles/archives/output/L1_L2_code.txt b/source/pev_charge_profile_factory/generate_charge_profiles/archives/output/L1_L2_code.txt new file mode 100644 index 0000000..d6debe9 --- /dev/null +++ b/source/pev_charge_profile_factory/generate_charge_profiles/archives/output/L1_L2_code.txt @@ -0,0 +1,50 @@ +else if(EV_enum == ld_50kWh) +{ + P2_vs_soc_segments.push_back({-0.1, 97.55911529426994, 0.0, 15.8976}); + P2_vs_soc_segments.push_back({97.55911529426994, 100.1, -5.219298245875, 525.0877193245}); + zero_slope_threashold_P2_vs_soc = 4.6973684212875; + // min_non_zero_slope = 5.219298245875 +} +else if(EV_enum == ld_100kWh) +{ + P2_vs_soc_segments.push_back({-0.1, 99.0805541670789, 0.0, 15.8976}); + P2_vs_soc_segments.push_back({99.0805541670789, 100.1, -10.428157891083332, 1049.1252627903334}); + zero_slope_threashold_P2_vs_soc = 9.385342101974999; + // min_non_zero_slope = 10.428157891083332 +} +else if(EV_enum == md_200kWh) +{ + P2_vs_soc_segments.push_back({-0.1, 100.1, 0.0, 15.8976}); + zero_slope_threashold_P2_vs_soc = 900000.0; + // min_non_zero_slope = 1000000 +} +else if(EV_enum == hd_300kWh) +{ + P2_vs_soc_segments.push_back({-0.1, 100.1, 0.0, 15.8976}); + zero_slope_threashold_P2_vs_soc = 900000.0; + // min_non_zero_slope = 1000000 +} +else if(EV_enum == hd_400kWh) +{ + P2_vs_soc_segments.push_back({-0.1, 100.1, 0.0, 15.8976}); + zero_slope_threashold_P2_vs_soc = 900000.0; + // min_non_zero_slope = 1000000 +} +else if(EV_enum == hd_600kWh) +{ + P2_vs_soc_segments.push_back({-0.1, 100.1, 0.0, 15.8976}); + zero_slope_threashold_P2_vs_soc = 900000.0; + // min_non_zero_slope = 1000000 +} +else if(EV_enum == hd_800kWh) +{ + P2_vs_soc_segments.push_back({-0.1, 100.1, 0.0, 15.8976}); + zero_slope_threashold_P2_vs_soc = 900000.0; + // min_non_zero_slope = 1000000 +} +else if(EV_enum == hd_1000kWh) +{ + P2_vs_soc_segments.push_back({-0.1, 100.1, 0.0, 15.8976}); + zero_slope_threashold_P2_vs_soc = 900000.0; + // min_non_zero_slope = 1000000 +} diff --git a/source/pev_charge_profile_factory/generate_charge_profiles/archives/output/L1_L2_data.csv b/source/pev_charge_profile_factory/generate_charge_profiles/archives/output/L1_L2_data.csv new file mode 100644 index 0000000..d0d17c7 --- /dev/null +++ b/source/pev_charge_profile_factory/generate_charge_profiles/archives/output/L1_L2_data.csv @@ -0,0 +1,42 @@ +EV,ld_50kWh +soc_LB,soc_UB,a,b +-0.1, 97.55911529426994, 0.0, 15.8976 +97.55911529426994, 100.1, -5.219298245875, 525.0877193245 + + +EV,ld_100kWh +soc_LB,soc_UB,a,b +-0.1, 99.0805541670789, 0.0, 15.8976 +99.0805541670789, 100.1, -10.428157891083332, 1049.1252627903334 + + +EV,md_200kWh +soc_LB,soc_UB,a,b +-0.1, 100.1, 0.0, 15.8976 + + +EV,hd_300kWh +soc_LB,soc_UB,a,b +-0.1, 100.1, 0.0, 15.8976 + + +EV,hd_400kWh +soc_LB,soc_UB,a,b +-0.1, 100.1, 0.0, 15.8976 + + +EV,hd_600kWh +soc_LB,soc_UB,a,b +-0.1, 100.1, 0.0, 15.8976 + + +EV,hd_800kWh +soc_LB,soc_UB,a,b +-0.1, 100.1, 0.0, 15.8976 + + +EV,hd_1000kWh +soc_LB,soc_UB,a,b +-0.1, 100.1, 0.0, 15.8976 + + diff --git a/source/pev_charge_profile_factory/generate_charge_profiles/archives/output/dcfc_charge_profiles.csv b/source/pev_charge_profile_factory/generate_charge_profiles/archives/output/dcfc_charge_profiles.csv new file mode 100644 index 0000000..019faff --- /dev/null +++ b/source/pev_charge_profile_factory/generate_charge_profiles/archives/output/dcfc_charge_profiles.csv @@ -0,0 +1,103 @@ +, xfc_150, xfc_150, xfc_150, xfc_150, xfc_150, xfc_150, xfc_150, xfc_150, xfc_350, xfc_350, xfc_350, xfc_350, xfc_350, xfc_350, xfc_350, xfc_350, xfc_500kW, xfc_500kW, xfc_500kW, xfc_500kW, xfc_500kW, xfc_500kW, xfc_500kW, xfc_500kW, xfc_1000kW, xfc_1000kW, xfc_1000kW, xfc_1000kW, xfc_1000kW, xfc_1000kW, xfc_1000kW, xfc_1000kW, xfc_2000kW, xfc_2000kW, xfc_2000kW, xfc_2000kW, xfc_2000kW, xfc_2000kW, xfc_2000kW, xfc_2000kW, xfc_3000kW, xfc_3000kW, xfc_3000kW, xfc_3000kW, xfc_3000kW, xfc_3000kW, xfc_3000kW, xfc_3000kW, dwc_100kW, dwc_100kW, dwc_100kW, dwc_100kW, dwc_100kW, dwc_100kW, dwc_100kW, dwc_100kW, +soc, ld_50kWh, ld_100kWh, md_200kWh, hd_300kWh, hd_400kWh, hd_600kWh, hd_800kWh, hd_1000kWh, ld_50kWh, ld_100kWh, md_200kWh, hd_300kWh, hd_400kWh, hd_600kWh, hd_800kWh, hd_1000kWh, ld_50kWh, ld_100kWh, md_200kWh, hd_300kWh, hd_400kWh, hd_600kWh, hd_800kWh, hd_1000kWh, ld_50kWh, ld_100kWh, md_200kWh, hd_300kWh, hd_400kWh, hd_600kWh, hd_800kWh, hd_1000kWh, ld_50kWh, ld_100kWh, md_200kWh, hd_300kWh, hd_400kWh, hd_600kWh, hd_800kWh, hd_1000kWh, ld_50kWh, ld_100kWh, md_200kWh, hd_300kWh, hd_400kWh, hd_600kWh, hd_800kWh, hd_1000kWh, ld_50kWh, ld_100kWh, md_200kWh, hd_300kWh, hd_400kWh, hd_600kWh, hd_800kWh, hd_1000kWh, +0, 124.64587923089042, 122.38229534071229, 124.99935482557609, 187.49903223836412, 187.4990322919245, 187.49903227407106, 187.49903226514434, 189.59594596054998, 141.74736842814, 283.21124200604, 351.65195242759415, 527.4779286413913, 536.3200340480914, 551.467741982562, 551.4677419563069, 557.6351351780881, 141.74736842814, 283.21124200604, 351.65195242759415, 527.4779286413913, 536.3200340480914, 551.467741982562, 551.4677419563069, 557.6351351780881, 141.74736842814, 283.21124200604, 542.7849693228944, 814.1774539843416, 777.7564016147287, 787.0469348700666, 804.7311453623216, 817.0470000629349, 141.74736842814, 283.21124200604, 566.98947371256, 850.4842105688399, 1133.97894742512, 1630.2031760919858, 1557.361070737169, 1574.312573169373, 141.74736842814, 283.21124200604, 566.98947371256, 850.4842105688399, 1133.97894742512, 1700.9684211376798, 2267.9578948502403, 2393.6842106460003, 87.91298812597856, 91.91129026417764, 91.9112903129236, 137.8669354693854, 137.866935508768, 137.8669354956405, 137.86693548907672, 139.40878379452204, +1, 130.2635023215515, 127.40216387931146, 129.46361749791808, 194.19542624687713, 194.19542630235037, 194.19542628385932, 194.19542627461377, 196.36722974485534, 148.012280709155, 295.72853673849664, 368.17752037741406, 552.266280566121, 559.231192998961, 571.1630184819392, 571.1630184547464, 577.5506757201628, 148.012280709155, 295.72853673849664, 368.17752037741406, 552.266280566121, 559.231192998961, 571.1630184819392, 571.1630184547464, 577.5506757201628, 148.012280709155, 295.72853673849664, 566.9284810352591, 850.3927215528886, 814.39272182486, 820.3550596974655, 834.2848842224986, 846.2272500651826, 148.012280709155, 295.72853673849664, 592.04912283662, 888.0736842549298, 1184.09824567324, 1702.7036679423982, 1630.7036678474499, 1645.7703505231204, 148.012280709155, 295.72853673849664, 592.04912283662, 888.0736842549298, 1184.09824567324, 1776.1473685098597, 2368.1964913464803, 2502.2807018795, 92.04438011459216, 95.19383634504112, 95.19383639552801, 142.790754593292, 142.79075463408114, 142.7907546204848, 142.7907546136866, 144.3876689300407, +2, 135.88112541221258, 132.42203241791063, 133.9278801702601, 200.89182025539012, 200.89182031277625, 200.89182029364756, 200.89182028408322, 203.1385135291607, 154.27719299017, 308.2458314709533, 384.7030883272339, 577.0546324908508, 582.1423519498304, 590.8582949813164, 590.8582949531859, 597.4662162622373, 154.27719299017, 308.2458314709533, 384.7030883272339, 577.0546324908508, 582.1423519498304, 590.8582949813164, 590.8582949531859, 597.4662162622373, 154.27719299017, 308.2458314709533, 591.0719927476238, 886.6079891214355, 851.0290420349912, 853.6631845248646, 863.8386230826756, 875.4075000674303, 154.27719299017, 308.2458314709533, 617.1087719606799, 925.6631579410198, 1234.2175439213597, 1775.2041597928105, 1704.0462649577307, 1717.2281278768678, 154.27719299017, 308.2458314709533, 617.1087719606799, 925.6631579410198, 1234.2175439213597, 1851.3263158820398, 2468.4350878427203, 2610.8771931130004, 96.17577210320574, 98.4763824259046, 98.47638247813242, 147.71457371719865, 147.71457375939428, 147.7145737453291, 147.71457373829648, 149.3665540655593, +3, 141.49874850287367, 137.44190095650978, 138.39214284260208, 207.58821426390313, 207.58821432320212, 207.58821430343582, 207.58821429355265, 209.90979731346607, 160.542105271185, 320.7631262034099, 401.2286562770538, 601.8429844155808, 605.0535109007, 610.5535714806936, 610.5535714516255, 617.3817568043119, 160.542105271185, 320.7631262034099, 401.2286562770538, 601.8429844155808, 605.0535109007, 610.5535714806936, 610.5535714516255, 617.3817568043119, 160.542105271185, 320.7631262034099, 615.2155044599883, 922.8232566899825, 887.6653622451225, 886.9713093522636, 893.3923619428525, 904.5877500696779, 160.542105271185, 320.7631262034099, 642.1684210847399, 963.2526316271097, 1284.3368421694797, 1847.7046516432226, 1777.3888620680116, 1788.6859052306154, 160.542105271185, 320.7631262034099, 642.1684210847399, 963.2526316271097, 1284.3368421694797, 1926.5052632542197, 2568.6736843389604, 2719.4736843465002, 100.30716409181935, 101.75892850676809, 101.75892856073683, 152.63839284110526, 152.63839288470743, 152.6383928701734, 152.6383928629064, 154.34543920107797, +4, 142.9421032031789, 140.5019421187314, 142.8564055149441, 214.2846082724161, 214.284608333628, 214.28460831322406, 214.2846083030221, 216.68108109777143, 162.17894737653, 324.03353672858, 405.77745049862176, 608.6661757479327, 616.621063133428, 630.2488479800709, 630.248847950065, 637.2972973463865, 162.17894737653, 324.03353672858, 405.77745049862176, 608.6661757479327, 616.621063133428, 630.2488479800709, 630.248847950065, 637.2972973463865, 162.17894737653, 324.03353672858, 621.4890214821942, 932.2335322232911, 896.7297731197442, 904.5805019223177, 920.4902763184092, 933.7680000719256, 162.17894737653, 324.03353672858, 648.7157895061199, 973.0736842591798, 1297.4315790122398, 1866.5461141403516, 1795.538595240802, 1814.1507552697778, 162.17894737653, 324.03353672858, 648.7157895061199, 973.0736842591798, 1297.4315790122398, 1946.1473685183598, 2594.86315802448, 2747.218045250143, 101.44436264692911, 105.04147458763157, 105.04147464334125, 157.56221196501187, 157.56221201002057, 157.56221199501772, 157.56221198751626, 159.32432433659662, +5, 144.38545790348414, 141.71808951395602, 143.92419353326508, 215.8862902998976, 215.88629036156698, 215.88629034101055, 215.88629033073235, 218.30067569249076, 163.81578948187502, 327.30394725375, 409.8246479848457, 614.7369719772685, 622.1906062320703, 634.9596774735605, 634.9596774433305, 642.0608108602669, 163.81578948187502, 327.30394725375, 409.8246479848457, 614.7369719772685, 622.1906062320703, 634.9596774735605, 634.9596774433305, 642.0608108602669, 163.81578948187502, 327.30394725375, 627.7625385043999, 941.6438077565998, 905.7941839943659, 912.6712220332979, 927.5784901631467, 940.7475000724631, 163.81578948187502, 327.30394725375, 655.2631579274998, 982.8947368912499, 1310.5263158549997, 1885.3875766374806, 1813.6883284135922, 1831.605399793323, 163.81578948187502, 327.30394725375, 655.2631579274998, 982.8947368912499, 1310.5263158549997, 1965.7894737825, 2621.0526317100002, 2774.962406153786, 102.45616201877357, 105.8266128359806, 105.82661289210668, 158.73991933816, 158.73991938350514, 158.73991936839013, 158.73991936083263, 160.51520271506672, +6, 145.82881260378937, 142.93423690918058, 144.99198155158606, 217.48797232737908, 217.487972389506, 217.48797236879705, 217.4879723584426, 219.92027028721012, 165.45263158722, 330.57435777892, 413.87184547106955, 620.8077682066044, 627.7601493307127, 639.6705069670502, 639.670506936596, 646.8243243741473, 165.45263158722, 330.57435777892, 413.87184547106955, 620.8077682066044, 627.7601493307127, 639.6705069670502, 639.670506936596, 646.8243243741473, 165.45263158722, 330.57435777892, 634.0360555266057, 951.0540832899084, 914.8585948689877, 920.7619421442782, 934.6667040078844, 947.7270000730008, 165.45263158722, 330.57435777892, 661.8105263488799, 992.7157895233198, 1323.6210526977598, 1904.2290391346096, 1831.8380615863825, 1849.0600443168682, 165.45263158722, 330.57435777892, 661.8105263488799, 992.7157895233198, 1323.6210526977598, 1985.4315790466399, 2647.24210539552, 2802.706767057429, 103.46796139061803, 106.61175108432963, 106.61175114087212, 159.91762671130817, 159.9176267569897, 159.91762674176255, 159.917626734149, 161.70608109353682, +7, 147.2721673040946, 144.15038430440518, 146.05976956990705, 219.08965435486058, 219.08965441744502, 219.08965439658354, 219.08965438615283, 221.53986488192945, 167.089473692565, 333.84476830409, 417.9190429572934, 626.8785644359401, 633.3296924293552, 644.38133646054, 644.3813364298613, 651.5878378880277, 167.089473692565, 333.84476830409, 417.9190429572934, 626.8785644359401, 633.3296924293552, 644.38133646054, 644.3813364298613, 651.5878378880277, 167.089473692565, 333.84476830409, 640.3095725488114, 960.464358823217, 923.9230057436093, 928.8526622552586, 941.7549178526222, 954.7065000735383, 167.089473692565, 333.84476830409, 668.3578947702599, 1002.5368421553899, 1336.7157895405198, 1923.0705016317386, 1849.987794759173, 1866.5146888404133, 167.089473692565, 333.84476830409, 668.3578947702599, 1002.5368421553899, 1336.7157895405198, 2005.0736843107798, 2673.43157908104, 2830.4511279610715, 104.47976076246249, 107.39688933267865, 107.39688938963755, 161.0953340844563, 161.09533413047427, 161.095334115135, 161.09533410746533, 162.89695947200693, +8, 148.71552200439984, 145.36653169962977, 147.12755758822803, 220.69133638234206, 220.69133644538402, 220.69133642437006, 220.69133641386307, 223.1594594766488, 168.72631579791, 337.11517882926, 421.9662404435173, 632.9493606652759, 638.8992355279976, 649.0921659540296, 649.0921659231268, 656.3513514019082, 168.72631579791, 337.11517882926, 421.9662404435173, 632.9493606652759, 638.8992355279976, 649.0921659540296, 649.0921659231268, 656.3513514019082, 168.72631579791, 337.11517882926, 646.5830895710171, 969.8746343565257, 932.987416618231, 936.9433823662389, 948.8431316973598, 961.686000074076, 168.72631579791, 337.11517882926, 674.90526319164, 1012.3578947874598, 1349.81052638328, 1941.9119641288676, 1868.1375279319634, 1883.9693333639584, 168.72631579791, 337.11517882926, 674.90526319164, 1012.3578947874598, 1349.81052638328, 2024.7157895749199, 2699.62105276656, 2858.195488864714, 105.49156013430695, 108.18202758102768, 108.18202763840297, 162.27304145760445, 162.27304150395884, 162.2730414885074, 162.2730414807817, 164.08783785047706, +9, 150.15887670470508, 146.58267909485437, 148.195345606549, 222.29301840982353, 222.29301847332303, 222.29301845215656, 222.2930184415733, 224.77905407136817, 170.363157903255, 340.38558935442995, 426.01343792974114, 639.0201568946117, 644.46877862664, 653.8029954475194, 653.8029954163922, 661.1148649157886, 170.363157903255, 340.38558935442995, 426.01343792974114, 639.0201568946117, 644.46877862664, 653.8029954475194, 653.8029954163922, 661.1148649157886, 170.363157903255, 340.38558935442995, 652.856606593223, 979.2849098898344, 942.0518274928527, 945.0341024772192, 955.9313455420975, 968.6655000746135, 170.363157903255, 340.38558935442995, 681.4526316130199, 1022.1789474195299, 1362.9052632260398, 1960.7534266259966, 1886.2872611047537, 1901.4239778875037, 170.363157903255, 340.38558935442995, 681.4526316130199, 1022.1789474195299, 1362.9052632260398, 2044.3578948390598, 2725.81052645208, 2885.9398497683574, 106.50335950615141, 108.96716582937671, 108.9671658871684, 163.4507488307526, 163.4507488774434, 163.45074886187984, 163.45074885409804, 165.27871622894716, +10, 151.60223140501031, 147.79882649007894, 149.26313362487002, 223.894700437305, 223.89470050126204, 223.89470047994308, 223.89470046928355, 226.3986486660875, 172.0000000086, 343.65599987959996, 430.060635415965, 645.0909531239475, 650.0383217252823, 658.513824941009, 658.5138249096576, 665.878378429669, 172.0000000086, 343.65599987959996, 430.060635415965, 645.0909531239475, 650.0383217252823, 658.513824941009, 658.5138249096576, 665.878378429669, 172.0000000086, 343.65599987959996, 659.1301236154287, 988.6951854231429, 951.1162383674745, 953.1248225881997, 963.0195593868351, 975.6450000751512, 172.0000000086, 343.65599987959996, 688.0000000343999, 1032.0000000516, 1376.0000000687999, 1979.5948891231255, 1904.436994277544, 1918.8786224110488, 172.0000000086, 343.65599987959996, 688.0000000343999, 1032.0000000516, 1376.0000000687999, 2064.0000001032, 2752.0000001376, 2913.684210672, 107.51515887799587, 109.75230407772574, 109.75230413593384, 164.62845620390073, 164.62845625092797, 164.62845623525226, 164.6284562274144, 166.46959460741726, +11, 151.883029240042, 148.0705044689723, 149.53401274572067, 224.301019118581, 224.3010191826541, 224.30101916129647, 224.30101915061758, 226.80951145198196, 172.31772854047182, 344.2908214860258, 430.8622206444601, 646.2933309666901, 651.23800051304, 659.7088798861661, 659.7088798547576, 667.0867983881822, 172.31772854047182, 344.2908214860258, 430.8622206444601, 646.2933309666901, 651.23800051304, 659.7088798861661, 659.7088798547576, 667.0867983881822, 172.31772854047182, 344.2908214860258, 660.3487680719259, 990.5231521078888, 952.8888033907374, 954.8822162393514, 964.7715549272409, 977.4155769983644, 172.31772854047182, 344.2908214860258, 689.2709141618873, 1033.9063712428308, 1378.5418283237746, 1983.2548138309712, 1907.9861156610941, 1922.4420675508452, 172.31772854047182, 344.2908214860258, 689.2709141618873, 1033.9063712428308, 1378.5418283237746, 2067.8127424856616, 2757.0836566475496, 2919.0858727221316, 107.71555518516575, 109.95147990177499, 109.95147996008873, 164.92721994013309, 164.92721998724568, 164.92721997154152, 164.9272199636894, 166.77169959704554, +12, 152.16382707507364, 148.34218244786567, 149.80489186657135, 224.707337799857, 224.70733786404617, 224.70733784264985, 224.7073378319516, 227.22037423787637, 172.63545707234368, 344.92564309245154, 431.66380587295515, 647.4957088094327, 652.4376793007976, 660.903934831323, 660.9039347998577, 668.2952183466952, 172.63545707234368, 344.92564309245154, 431.66380587295515, 647.4957088094327, 652.4376793007976, 660.903934831323, 660.9039347998577, 668.2952183466952, 172.63545707234368, 344.92564309245154, 661.5674125284231, 992.3511187926347, 954.6613684140002, 956.6396098905028, 966.5235504676465, 979.1861539215777, 172.63545707234368, 344.92564309245154, 690.5418282893747, 1035.8127424340619, 1381.0836565787495, 1986.914738538817, 1911.5352370446442, 1926.0055126906416, 172.63545707234368, 344.92564309245154, 690.5418282893747, 1035.8127424340619, 1381.0836565787495, 2071.6254848681237, 2762.1673131574994, 2924.487534772263, 107.91595149233564, 110.15065572582425, 110.15065578424363, 165.22598367636542, 165.22598372356336, 165.22598370783075, 165.22598369996442, 167.0738045866738, +13, 152.44462491010532, 148.61386042675906, 150.075770987422, 225.11365648113298, 225.11365654543823, 225.1136565240032, 225.11365651328563, 227.6312370237708, 172.95318560421552, 345.56046469887735, 432.4653911014502, 648.6980866521753, 653.6373580885552, 662.09898977648, 662.0989897449577, 669.5036383052083, 172.95318560421552, 345.56046469887735, 432.4653911014502, 648.6980866521753, 653.6373580885552, 662.09898977648, 662.0989897449577, 669.5036383052083, 172.95318560421552, 345.56046469887735, 662.7860569849204, 994.1790854773805, 956.4339334372631, 958.3970035416544, 968.2755460080521, 980.956730844791, 172.95318560421552, 345.56046469887735, 691.8127424168621, 1037.719113625293, 1383.6254848337242, 1990.5746632466623, 1915.0843584281945, 1929.568957830438, 172.95318560421552, 345.56046469887735, 691.8127424168621, 1037.719113625293, 1383.6254848337242, 2075.438227250586, 2767.2509696674488, 2929.8891968223948, 108.1163477995055, 110.34983154987351, 110.34983160839853, 165.52474741259778, 165.52474745988104, 165.52474744412, 165.52474743623944, 167.37590957630206, +14, 152.72542274513697, 148.88553840565243, 150.34665010827266, 225.51997516240897, 225.51997522683027, 225.51997520535656, 225.51997519461966, 228.04209980966525, 173.27091413608736, 346.1952863053031, 433.2669763299453, 649.9004644949179, 654.8370368763128, 663.294044721637, 663.2940446900577, 670.7120582637212, 173.27091413608736, 346.1952863053031, 433.2669763299453, 649.9004644949179, 654.8370368763128, 663.294044721637, 663.2940446900577, 670.7120582637212, 173.27091413608736, 346.1952863053031, 664.0047014414176, 996.0070521621263, 958.206498460526, 960.154397192806, 970.0275415484576, 982.7273077680043, 173.27091413608736, 346.1952863053031, 693.0836565443494, 1039.625484816524, 1386.1673130886988, 1994.234587954508, 1918.6334798117446, 1933.1324029702341, 173.27091413608736, 346.1952863053031, 693.0836565443494, 1039.625484816524, 1386.1673130886988, 2079.250969633048, 2772.334626177398, 2935.2908588725263, 108.31674410667537, 110.54900737392278, 110.54900743255342, 165.8235111488301, 165.82351119619875, 165.82351118040924, 165.82351117251443, 167.6780145659303, +15, 153.00622058016862, 149.1572163845458, 150.61752922912333, 225.92629384368493, 225.92629390822233, 225.92629388670994, 225.9262938759537, 228.45296259555968, 173.5886426679592, 346.83010791172893, 434.06856155844036, 651.1028423376605, 656.0367156640705, 664.4890996667939, 664.4890996351578, 671.9204782222342, 173.5886426679592, 346.83010791172893, 434.06856155844036, 651.1028423376605, 656.0367156640705, 664.4890996667939, 664.4890996351578, 671.9204782222342, 173.5886426679592, 346.83010791172893, 665.2233458979148, 997.8350188468722, 959.9790634837889, 961.9117908439575, 971.7795370888632, 984.4978846912176, 173.5886426679592, 346.83010791172893, 694.3545706718368, 1041.531856007755, 1388.7091413436735, 1997.8945126623535, 1922.1826011952949, 1936.6958481100305, 173.5886426679592, 346.83010791172893, 694.3545706718368, 1041.531856007755, 1388.7091413436735, 2083.06371201551, 2777.4182826873475, 2940.692520922658, 108.51714041384525, 110.74818319797204, 110.74818325670832, 166.12227488506247, 166.12227493251643, 166.12227491669847, 166.12227490878945, 167.98011955555856, +16, 153.2870184152003, 149.42889436343918, 150.888408349974, 226.33261252496092, 226.3326125896144, 226.3326125680633, 226.33261255728772, 228.86382538145412, 173.90637119983103, 347.4649295181547, 434.87014678693544, 652.3052201804031, 657.2363944518281, 665.6841546119509, 665.6841545802579, 673.1288981807473, 173.90637119983103, 347.4649295181547, 434.87014678693544, 652.3052201804031, 657.2363944518281, 665.6841546119509, 665.6841545802579, 673.1288981807473, 173.90637119983103, 347.4649295181547, 666.441990354412, 999.662985531618, 961.7516285070517, 963.669184495109, 973.5315326292688, 986.2684616144309, 173.90637119983103, 347.4649295181547, 695.6254847993241, 1043.4382271989862, 1391.2509695986482, 2001.5544373701991, 1925.7317225788452, 1940.259293249827, 173.90637119983103, 347.4649295181547, 695.6254847993241, 1043.4382271989862, 1391.2509695986482, 2086.8764543979723, 2782.501939197297, 2946.0941829727894, 108.71753672101512, 110.9473590220213, 110.94735908086322, 166.4210386212948, 166.42103866883411, 166.42103865298773, 166.42103864506447, 168.28222454518684, +17, 153.56781625023194, 149.70057234233255, 151.15928747082464, 226.7389312062369, 226.73893127100644, 226.73893124941668, 226.73893123862172, 229.27468816734856, 174.2240997317029, 348.0997511245805, 435.67173201543056, 653.5075980231458, 658.4360732395858, 666.8792095571079, 666.879209525358, 674.3373181392603, 174.2240997317029, 348.0997511245805, 435.67173201543056, 653.5075980231458, 658.4360732395858, 666.8792095571079, 666.879209525358, 674.3373181392603, 174.2240997317029, 348.0997511245805, 667.6606348109093, 1001.4909522163639, 963.5241935303145, 965.4265781462606, 975.2835281696744, 988.0390385376442, 174.2240997317029, 348.0997511245805, 696.8963989268116, 1045.3445983902172, 1393.7927978536231, 2005.2143620780446, 1929.2808439623952, 1943.822738389623, 174.2240997317029, 348.0997511245805, 696.8963989268116, 1045.3445983902172, 1393.7927978536231, 2090.6891967804345, 2787.5855957072467, 2951.495845022921, 108.91793302818499, 111.14653484607057, 111.14653490501811, 166.71980235752716, 166.71980240515182, 166.71980238927696, 166.7198023813395, 168.58432953481508, +18, 153.8486140852636, 149.9722503212259, 151.43016659167532, 227.1452498875129, 227.1452499523985, 227.14524993077004, 227.14524991995575, 229.685550953243, 174.54182826357473, 348.73457273100627, 436.47331724392564, 654.7099758658884, 659.6357520273434, 668.0742645022648, 668.074264470458, 675.5457380977734, 174.54182826357473, 348.73457273100627, 436.47331724392564, 654.7099758658884, 659.6357520273434, 668.0742645022648, 668.074264470458, 675.5457380977734, 174.54182826357473, 348.73457273100627, 668.8792792674066, 1003.3189189011097, 965.2967585535774, 967.1839717974121, 977.0355237100799, 989.8096154608575, 174.54182826357473, 348.73457273100627, 698.1673130542989, 1047.2509695814483, 1396.3346261085978, 2008.87428678589, 1932.8299653459455, 1947.3861835294194, 174.54182826357473, 348.73457273100627, 698.1673130542989, 1047.2509695814483, 1396.3346261085978, 2094.5019391628966, 2792.669252217196, 2956.8975070730526, 109.11832933535487, 111.34571067011983, 111.345710729173, 167.0185660937595, 167.0185661414695, 167.0185661255662, 167.0185661176145, 168.88643452444336, +19, 154.12941192029527, 150.24392830011928, 151.70104571252597, 227.5515685687889, 227.55156863379057, 227.55156861212342, 227.55156860128977, 230.0964137391374, 174.85955679544657, 349.3693943374321, 437.2749024724207, 655.912353708631, 660.835430815101, 669.2693194474218, 669.2693194155581, 676.7541580562864, 174.85955679544657, 349.3693943374321, 437.2749024724207, 655.912353708631, 660.835430815101, 669.2693194474218, 669.2693194155581, 676.7541580562864, 174.85955679544657, 349.3693943374321, 670.0979237239037, 1005.1468855858556, 967.0693235768402, 968.9413654485637, 978.7875192504855, 991.5801923840708, 174.85955679544657, 349.3693943374321, 699.4382271817863, 1049.1573407726794, 1398.8764543635725, 2012.5342114937357, 1936.3790867294956, 1950.9496286692158, 174.85955679544657, 349.3693943374321, 699.4382271817863, 1049.1573407726794, 1398.8764543635725, 2098.3146815453583, 2797.7529087271455, 2962.299169123184, 109.31872564252474, 111.54488649416909, 111.54488655332791, 167.31732982999185, 167.3173298777872, 167.31732986185546, 167.31732985388953, 169.1885395140716, +20, 154.41020975532692, 150.51560627901267, 151.97192483337662, 227.95788725006489, 227.95788731518263, 227.95788729347677, 227.9578872826238, 230.50727652503184, 175.1772853273184, 350.00421594385784, 438.0764877009158, 657.1147315513736, 662.0351096028586, 670.4643743925787, 670.4643743606582, 677.9625780147995, 175.1772853273184, 350.00421594385784, 438.0764877009158, 657.1147315513736, 662.0351096028586, 670.4643743925787, 670.4643743606582, 677.9625780147995, 175.1772853273184, 350.00421594385784, 671.316568180401, 1006.9748522706014, 968.8418886001032, 970.6987590997153, 980.5395147908911, 993.350769307284, 175.1772853273184, 350.00421594385784, 700.7091413092736, 1051.0637119639105, 1401.4182826185472, 2016.1941362015812, 1939.928208113046, 1954.513073809012, 175.1772853273184, 350.00421594385784, 700.7091413092736, 1051.0637119639105, 1401.4182826185472, 2102.1274239278205, 2802.836565237095, 2967.7008311733157, 109.51912194969462, 111.74406231821835, 111.7440623774828, 167.61609356622418, 167.61609361410487, 167.6160935981447, 167.61609359016455, 169.49064450369988, +21, 154.69100759035857, 150.78728425790604, 152.2428039542273, 228.36420593134088, 228.36420599657467, 228.36420597483016, 228.36420596395783, 230.91813931092628, 175.49501385919024, 350.63903755028366, 438.87807292941085, 658.3171093941162, 663.2347883906162, 671.6594293377357, 671.6594293057583, 679.1709979733125, 175.49501385919024, 350.63903755028366, 438.87807292941085, 658.3171093941162, 663.2347883906162, 671.6594293377357, 671.6594293057583, 679.1709979733125, 175.49501385919024, 350.63903755028366, 672.5352126368982, 1008.8028189553472, 970.614453623366, 972.4561527508667, 982.2915103312966, 995.1213462304975, 175.49501385919024, 350.63903755028366, 701.980055436761, 1052.9700831551415, 1403.960110873522, 2019.8540609094268, 1943.4773294965962, 1958.0765189488084, 175.49501385919024, 350.63903755028366, 701.980055436761, 1052.9700831551415, 1403.960110873522, 2105.9401663102826, 2807.9202217470443, 2973.1024932234473, 109.71951825686449, 111.94323814226762, 111.9432382016377, 167.91485730245654, 167.91485735042258, 167.91485733443392, 167.91485732643957, 169.79274949332813, +22, 154.97180542539024, 151.0589622367994, 152.51368307507795, 228.77052461261687, 228.77052467796673, 228.7705246561835, 228.77052464529186, 231.32900209682072, 175.8127423910621, 351.2738591567094, 439.6796581579059, 659.5194872368588, 664.4344671783739, 672.8544842828927, 672.8544842508584, 680.3794179318256, 175.8127423910621, 351.2738591567094, 439.6796581579059, 659.5194872368588, 664.4344671783739, 672.8544842828927, 672.8544842508584, 680.3794179318256, 175.8127423910621, 351.2738591567094, 673.7538570933955, 1010.6307856400931, 972.3870186466289, 974.2135464020183, 984.0435058717022, 996.8919231537108, 175.8127423910621, 351.2738591567094, 703.2509695642484, 1054.8764543463724, 1406.5019391284968, 2023.5139856172723, 1947.0264508801463, 1961.6399640886048, 175.8127423910621, 351.2738591567094, 703.2509695642484, 1054.8764543463724, 1406.5019391284968, 2109.7529086927448, 2813.003878256994, 2978.504155273579, 109.91991456403436, 112.14241396631688, 112.1424140257926, 168.21362103868887, 168.21362108674026, 168.21362107072318, 168.2136210627146, 170.0948544829564, +23, 155.2526032604219, 151.3306402156928, 152.7845621959286, 229.17684329389286, 229.1768433593588, 229.1768433375369, 229.17684332662589, 231.73986488271515, 176.13047092293394, 351.90868076313524, 440.481243386401, 660.7218650796015, 665.6341459661314, 674.0495392280496, 674.0495391959583, 681.5878378903386, 176.13047092293394, 351.90868076313524, 440.481243386401, 660.7218650796015, 665.6341459661314, 674.0495392280496, 674.0495391959583, 681.5878378903386, 176.13047092293394, 351.90868076313524, 674.9725015498926, 1012.458752324839, 974.1595836698917, 975.9709400531699, 985.7955014121078, 998.6625000769241, 176.13047092293394, 351.90868076313524, 704.5218836917358, 1056.7828255376035, 1409.0437673834715, 2027.173910325118, 1950.5755722636966, 1965.2034092284011, 176.13047092293394, 351.90868076313524, 704.5218836917358, 1056.7828255376035, 1409.0437673834715, 2113.565651075207, 2818.0875347669435, 2983.9058173237104, 110.12031087120424, 112.34158979036614, 112.3415898499475, 168.51238477492123, 168.51238482305794, 168.5123848070124, 168.5123847989896, 170.39695947258465, +24, 155.53340109545354, 151.60231819458616, 153.05544131677925, 229.58316197516885, 229.58316204075084, 229.58316201889025, 229.58316200795988, 232.1507276686096, 176.44819945480577, 352.543502369561, 441.28282861489606, 661.9242429223441, 666.8338247538891, 675.2445941732066, 675.2445941410584, 682.7962578488516, 176.44819945480577, 352.543502369561, 441.28282861489606, 661.9242429223441, 666.8338247538891, 675.2445941732066, 675.2445941410584, 682.7962578488516, 176.44819945480577, 352.543502369561, 676.1911460063899, 1014.2867190095848, 975.9321486931547, 977.7283337043215, 987.5474969525134, 1000.4330770001374, 176.44819945480577, 352.543502369561, 705.7927978192231, 1058.6891967288345, 1411.5855956384462, 2030.8338350329634, 1954.1246936472467, 1968.7668543681973, 176.44819945480577, 352.543502369561, 705.7927978192231, 1058.6891967288345, 1411.5855956384462, 2117.378393457669, 2823.171191276893, 2989.307479373842, 110.32070717837411, 112.5407656144154, 112.5407656741024, 168.81114851115356, 168.81114855937562, 168.81114854330164, 168.8111485352646, 170.6990644622129, +25, 155.81419893048522, 151.87399617347953, 153.32632043762993, 229.98948065644484, 229.9894807221429, 229.98948070024363, 229.9894806892939, 232.56159045450403, 176.7659279866776, 353.1783239759868, 442.08441384339113, 663.1266207650866, 668.0335035416467, 676.4396491183636, 676.4396490861585, 684.0046778073647, 176.7659279866776, 353.1783239759868, 442.08441384339113, 663.1266207650866, 668.0335035416467, 676.4396491183636, 676.4396490861585, 684.0046778073647, 176.7659279866776, 353.1783239759868, 677.4097904628871, 1016.1146856943307, 977.7047137164175, 979.485727355473, 989.299492492919, 1002.2036539233507, 176.7659279866776, 353.1783239759868, 707.0637119467104, 1060.5955679200656, 1414.1274238934209, 2034.493759740809, 1957.673815030797, 1972.3302995079937, 176.7659279866776, 353.1783239759868, 707.0637119467104, 1060.5955679200656, 1414.1274238934209, 2121.191135840131, 2828.254847786842, 2994.7091414239735, 110.52110348554397, 112.73994143846467, 112.7399414982573, 169.10991224738592, 169.10991229569333, 169.1099122795909, 169.10991227153963, 171.00116945184118, +26, 156.09499676551687, 152.1456741523729, 153.59719955848058, 230.39579933772083, 230.39579940353497, 230.395799381597, 230.39579937062794, 232.97245324039847, 177.08365651854945, 353.81314558241263, 442.8859990718862, 664.3289986078292, 669.2331823294044, 677.6347040635205, 677.6347040312586, 685.2130977658777, 177.08365651854945, 353.81314558241263, 442.8859990718862, 664.3289986078292, 669.2331823294044, 677.6347040635205, 677.6347040312586, 685.2130977658777, 177.08365651854945, 353.81314558241263, 678.6284349193844, 1017.9426523790765, 979.4772787396803, 981.2431210066245, 991.0514880333245, 1003.974230846564, 177.08365651854945, 353.81314558241263, 708.3346260741978, 1062.5019391112967, 1416.6692521483956, 2038.1536844486545, 1961.2229364143473, 1975.8937446477898, 177.08365651854945, 353.81314558241263, 708.3346260741978, 1062.5019391112967, 1416.6692521483956, 2125.0038782225934, 2833.338504296792, 3000.110803474105, 110.72149979271386, 112.93911726251393, 112.93911732241219, 169.40867598361825, 169.40867603201102, 169.40867601588013, 169.40867600781465, 171.30327444146943, +27, 156.37579460054855, 152.41735213126628, 153.86807867933123, 230.80211801899682, 230.80211808492703, 230.80211806295034, 230.80211805196197, 233.38331602629287, 177.4013850504213, 354.4479671888384, 443.68758430038133, 665.5313764505719, 670.432861117162, 678.8297590086775, 678.8297589763587, 686.4215177243908, 177.4013850504213, 354.4479671888384, 443.68758430038133, 665.5313764505719, 670.432861117162, 678.8297590086775, 678.8297589763587, 686.4215177243908, 177.4013850504213, 354.4479671888384, 679.8470793758815, 1019.7706190638223, 981.2498437629432, 983.0005146577761, 992.8034835737301, 1005.7448077697773, 177.4013850504213, 354.4479671888384, 709.6055402016852, 1064.4083103025278, 1419.2110804033705, 2041.8136091565002, 1964.7720577978973, 1979.4571897875862, 177.4013850504213, 354.4479671888384, 709.6055402016852, 1064.4083103025278, 1419.2110804033705, 2128.8166206050555, 2838.4221608067414, 3005.512465524237, 110.92189609988372, 113.1382930865632, 113.1382931465671, 169.7074397198506, 169.7074397683287, 169.70743975216936, 169.70743974408967, 171.6053794310977, +28, 156.6565924355802, 152.68903011015965, 154.1389578001819, 231.2084367002728, 231.20843676631907, 231.20843674430373, 231.208436733296, 233.7941788121873, 177.71911358229315, 355.0827887952642, 444.4891695288764, 666.7337542933145, 671.6325399049197, 680.0248139538345, 680.0248139214588, 687.6299376829038, 177.71911358229315, 355.0827887952642, 444.4891695288764, 666.7337542933145, 671.6325399049197, 680.0248139538345, 680.0248139214588, 687.6299376829038, 177.71911358229315, 355.0827887952642, 681.0657238323788, 1021.5985857485682, 983.022408786206, 984.7579083089277, 994.5554791141357, 1007.5153846929906, 177.71911358229315, 355.0827887952642, 710.8764543291726, 1066.3146814937588, 1421.7529086583452, 2045.4735338643457, 1968.3211791814476, 1983.0206349273826, 177.71911358229315, 355.0827887952642, 710.8764543291726, 1066.3146814937588, 1421.7529086583452, 2132.6293629875177, 2843.505817316691, 3010.9141275743686, 111.1222924070536, 113.33746891061246, 113.33746897072199, 170.00620345608294, 170.0062035046464, 170.00620348845862, 170.0062034803647, 171.90748442072595, +29, 156.93739027061184, 152.960708089053, 154.40983692103256, 231.6147553815488, 231.61475544771113, 231.61475542565708, 231.61475541463003, 234.20504159808175, 178.03684211416498, 355.71761040168997, 445.2907547573715, 667.9361321360572, 672.8322186926772, 681.2198688989914, 681.2198688665588, 688.8383576414169, 178.03684211416498, 355.71761040168997, 445.2907547573715, 667.9361321360572, 672.8322186926772, 681.2198688989914, 681.2198688665588, 688.8383576414169, 178.03684211416498, 355.71761040168997, 682.2843682888761, 1023.426552433314, 984.794973809469, 986.5153019600792, 996.3074746545412, 1009.2859616162038, 178.03684211416498, 355.71761040168997, 712.1473684566599, 1068.22105268499, 1424.2947369133199, 2049.133458572191, 1971.8703005649977, 1986.584080067179, 178.03684211416498, 355.71761040168997, 712.1473684566599, 1068.22105268499, 1424.2947369133199, 2136.44210536998, 2848.58947382664, 3016.3157896245, 111.32268871422347, 113.53664473466172, 113.53664479487688, 170.3049671923153, 170.3049672409641, 170.30496722474786, 170.3049672166397, 172.20958941035423, +30, 157.21818810564352, 153.2323860679464, 154.68071604188322, 232.0210740628248, 232.0210741291032, 232.02107410701046, 232.02107409596405, 234.6159043839762, 178.35457064603682, 356.3524320081158, 446.09233998586654, 669.1385099787998, 674.0318974804348, 682.4149238441485, 682.4149238116589, 690.0467775999299, 178.35457064603682, 356.3524320081158, 446.09233998586654, 669.1385099787998, 674.0318974804348, 682.4149238441485, 682.4149238116589, 690.0467775999299, 178.35457064603682, 356.3524320081158, 683.5030127453733, 1025.25451911806, 986.5675388327318, 988.2726956112307, 998.0594701949468, 1011.0565385394171, 178.35457064603682, 356.3524320081158, 713.4182825841473, 1070.127423876221, 1426.8365651682946, 2052.793383280037, 1975.419421948548, 1990.1475252069752, 178.35457064603682, 356.3524320081158, 713.4182825841473, 1070.127423876221, 1426.8365651682946, 2140.254847752442, 2853.6731303365896, 3021.717451674632, 111.52308502139334, 113.73582055871098, 113.73582061903178, 170.60373092854763, 170.60373097728177, 170.60373096103712, 170.60373095291473, 172.51169439998247, +31, 157.49898594067517, 153.50406404683977, 154.9515951627339, 232.42739274410079, 232.42739281049526, 232.42739278836382, 232.42739277729805, 235.02676716987062, 178.67229917790868, 356.98725361454154, 446.8939252143616, 670.3408878215423, 675.2315762681925, 683.6099787893054, 683.6099787567589, 691.2551975584429, 178.67229917790868, 356.98725361454154, 446.8939252143616, 670.3408878215423, 675.2315762681925, 683.6099787893054, 683.6099787567589, 691.2551975584429, 178.67229917790868, 356.98725361454154, 684.7216572018706, 1027.0824858028056, 988.3401038559947, 990.0300892623823, 999.8114657353524, 1012.8271154626304, 178.67229917790868, 356.98725361454154, 714.6891967116347, 1072.033795067452, 1429.3783934232695, 2056.4533079878825, 1978.968543332098, 1993.7109703467715, 178.67229917790868, 356.98725361454154, 714.6891967116347, 1072.033795067452, 1429.3783934232695, 2144.067590134904, 2858.7567868465394, 3027.1191137247633, 111.72348132856322, 113.93499638276023, 113.93499644318668, 170.90249466478, 170.90249471359945, 170.90249469732635, 170.90249468918972, 172.81379938961072, +32, 157.77978377570682, 153.77574202573314, 155.22247428358455, 232.83371142537678, 232.8337114918873, 232.8337114697172, 232.83371145863208, 235.43762995576506, 178.99002770978052, 357.62207522096736, 447.6955104428567, 671.543265664285, 676.4312550559501, 684.8050337344623, 684.805033701859, 692.463617516956, 178.99002770978052, 357.62207522096736, 447.6955104428567, 671.543265664285, 676.4312550559501, 684.8050337344623, 684.805033701859, 692.463617516956, 178.99002770978052, 357.62207522096736, 685.9403016583677, 1028.9104524875515, 990.1126688792575, 991.7874829135338, 1001.563461275758, 1014.5976923858437, 178.99002770978052, 357.62207522096736, 715.9601108391221, 1073.9401662586831, 1431.9202216782442, 2060.113232695728, 1982.5176647156484, 1997.274415486568, 178.99002770978052, 357.62207522096736, 715.9601108391221, 1073.9401662586831, 1431.9202216782442, 2147.880332517366, 2863.840443356489, 3032.520775774895, 111.92387763573309, 114.1341722068095, 114.13417226734157, 171.20125840101235, 171.20125844991716, 171.20125843361558, 171.20125842546474, 173.115904379239, +33, 158.0605816107385, 154.0474200046265, 155.4933534044352, 233.24003010665277, 233.24003017327937, 233.24003015107056, 233.2400301399661, 235.8484927416595, 179.30775624165236, 358.2568968273931, 448.49709567135176, 672.7456435070276, 677.6309338437078, 686.0000886796194, 686.0000886469591, 693.672037475469, 179.30775624165236, 358.2568968273931, 448.49709567135176, 672.7456435070276, 677.6309338437078, 686.0000886796194, 686.0000886469591, 693.672037475469, 179.30775624165236, 358.2568968273931, 687.158946114865, 1030.7384191722974, 991.8852339025203, 993.5448765646854, 1003.3154568161635, 1016.368269309057, 179.30775624165236, 358.2568968273931, 717.2310249666094, 1075.846537449914, 1434.4620499332189, 2063.7731574035734, 1986.0667860991987, 2000.837860626364, 179.30775624165236, 358.2568968273931, 717.2310249666094, 1075.846537449914, 1434.4620499332189, 2151.693074899828, 2868.924099866438, 3037.9224378250265, 112.12427394290296, 114.33334803085876, 114.33334809149648, 171.50002213724468, 171.50002218623484, 171.50002216990484, 171.50002216173976, 173.41800936886725, +34, 158.34137944577014, 154.3190979835199, 155.76423252528588, 233.64634878792876, 233.64634885467143, 233.64634883242394, 233.64634882130014, 236.2593555275539, 179.6254847735242, 358.89171843381894, 449.29868089984683, 673.9480213497702, 678.8306126314653, 687.1951436247763, 687.1951435920591, 694.8804574339821, 179.6254847735242, 358.89171843381894, 449.29868089984683, 673.9480213497702, 678.8306126314653, 687.1951436247763, 687.1951435920591, 694.8804574339821, 179.6254847735242, 358.89171843381894, 688.3775905713622, 1032.5663858570433, 993.6577989257833, 995.302270215837, 1005.0674523565691, 1018.1388462322705, 179.6254847735242, 358.89171843381894, 718.5019390940968, 1077.752908641145, 1437.0038781881935, 2067.433082111419, 1989.6159074827488, 2004.4013057661605, 179.6254847735242, 358.89171843381894, 718.5019390940968, 1077.752908641145, 1437.0038781881935, 2155.50581728229, 2874.0077563763875, 3043.324099875158, 112.32467025007284, 114.53252385490802, 114.53252391565137, 171.79878587347702, 171.79878592255253, 171.79878590619407, 171.79878589801478, 173.72011435849552, +35, 158.6221772808018, 154.59077596241326, 156.03511164613653, 234.05266746920475, 234.0526675360635, 234.0526675137773, 234.05266750263416, 236.67021831344834, 179.94321330539603, 359.5265400402447, 450.1002661283419, 675.1503991925129, 680.030291419223, 688.3901985699332, 688.3901985371592, 696.0888773924951, 179.94321330539603, 359.5265400402447, 450.1002661283419, 675.1503991925129, 680.030291419223, 688.3901985699332, 688.3901985371592, 696.0888773924951, 179.94321330539603, 359.5265400402447, 689.5962350278594, 1034.3943525417892, 995.4303639490461, 997.0596638669884, 1006.8194478969747, 1019.9094231554838, 179.94321330539603, 359.5265400402447, 719.7728532215841, 1079.6592798323761, 1439.5457064431682, 2071.0930068192647, 1993.165028866299, 2007.9647509059569, 179.94321330539603, 359.5265400402447, 719.7728532215841, 1079.6592798323761, 1439.5457064431682, 2159.3185596647522, 2879.091412886337, 3048.7257619252896, 112.52506655724271, 114.73169967895728, 114.73169973980626, 172.09754960970938, 172.0975496588702, 172.0975496424833, 172.0975496342898, 174.02221934812377, +36, 158.90297511583347, 154.86245394130663, 156.30599076698718, 234.45898615048074, 234.45898621745553, 234.45898619513068, 234.4589861839682, 237.08108109934278, 180.2609418372679, 360.1613616466705, 450.90185135683697, 676.3527770352554, 681.2299702069806, 689.5852535150902, 689.5852534822593, 697.2972973510082, 180.2609418372679, 360.1613616466705, 450.90185135683697, 676.3527770352554, 681.2299702069806, 689.5852535150902, 689.5852534822593, 697.2972973510082, 180.2609418372679, 360.1613616466705, 690.8148794843567, 1036.2223192265349, 997.202928972309, 998.81705751814, 1008.5714434373801, 1021.680000078697, 180.2609418372679, 360.1613616466705, 721.0437673490716, 1081.5656510236072, 1442.0875346981431, 2074.7529315271104, 1996.7141502498491, 2011.528196045753, 180.2609418372679, 360.1613616466705, 721.0437673490716, 1081.5656510236072, 1442.0875346981431, 2163.1313020472144, 2884.1750693962867, 3054.127423975421, 112.72546286441259, 114.93087550300655, 114.93087556396117, 172.39631334594173, 172.39631339518792, 172.39631337877256, 172.39631337056483, 174.32432433775205, +37, 159.18377295086512, 155.13413192020002, 156.57686988783786, 234.86530483175673, 234.8653048988476, 234.86530487648403, 234.86530486530222, 237.49194388523722, 180.57867036913973, 360.7961832530963, 451.70343658533204, 677.555154877998, 682.4296489947383, 690.7803084602472, 690.7803084273594, 698.5057173095212, 180.57867036913973, 360.7961832530963, 451.70343658533204, 677.555154877998, 682.4296489947383, 690.7803084602472, 690.7803084273594, 698.5057173095212, 180.57867036913973, 360.7961832530963, 692.0335239408539, 1038.0502859112808, 998.9754939955718, 1000.5744511692916, 1010.3234389777858, 1023.4505770019103, 180.57867036913973, 360.7961832530963, 722.3146814765589, 1083.4720222148383, 1444.6293629531178, 2078.4128562349556, 2000.2632716333994, 2015.0916411855494, 180.57867036913973, 360.7961832530963, 722.3146814765589, 1083.4720222148383, 1444.6293629531178, 2166.9440444296765, 2889.258725906236, 3059.5290860255527, 112.92585917158246, 115.13005132705581, 115.13005138811606, 172.69507708217407, 172.6950771315056, 172.6950771150618, 172.69507710683985, 174.6264293273803, +38, 159.46457078589677, 155.40580989909338, 156.8477490086885, 235.27162351303272, 235.27162358023966, 235.27162355783742, 235.27162354663622, 237.90280667113166, 180.89639890101157, 361.4310048595221, 452.50502181382717, 678.7575327207406, 683.6293277824959, 691.9753634054041, 691.9753633724595, 699.7141372680342, 180.89639890101157, 361.4310048595221, 452.50502181382717, 678.7575327207406, 683.6293277824959, 691.9753634054041, 691.9753633724595, 699.7141372680342, 180.89639890101157, 361.4310048595221, 693.2521683973512, 1039.8782525960266, 1000.7480590188347, 1002.3318448204432, 1012.0754345181913, 1025.2211539251236, 180.89639890101157, 361.4310048595221, 723.5855956040463, 1085.3783934060693, 1447.1711912080925, 2082.0727809428013, 2003.8123930169497, 2018.6550863253458, 180.89639890101157, 361.4310048595221, 723.5855956040463, 1085.3783934060693, 1447.1711912080925, 2170.7567868121387, 2894.3423824161855, 3064.9307480756843, 113.12625547875233, 115.32922715110507, 115.32922721227095, 172.99384081840643, 172.99384086782328, 172.99384085135102, 172.99384084311487, 174.92853431700854, +39, 159.74536862092845, 155.67748787798675, 157.11862812953916, 235.6779421943087, 235.6779422616317, 235.67794223919077, 235.67794222797025, 238.3136694570261, 181.2141274328834, 362.06582646594785, 453.30660704232224, 679.9599105634833, 684.8290065702535, 693.1704183505611, 693.1704183175596, 700.9225572265473, 181.2141274328834, 362.06582646594785, 453.30660704232224, 679.9599105634833, 684.8290065702535, 693.1704183505611, 693.1704183175596, 700.9225572265473, 181.2141274328834, 362.06582646594785, 694.4708128538484, 1041.7062192807725, 1002.5206240420976, 1004.0892384715946, 1013.827430058597, 1026.9917308483368, 181.2141274328834, 362.06582646594785, 724.8565097315336, 1087.2847645973004, 1449.7130194630672, 2085.732705650647, 2007.3615144004998, 2022.218531465142, 181.2141274328834, 362.06582646594785, 724.8565097315336, 1087.2847645973004, 1449.7130194630672, 2174.569529194601, 2899.426038926135, 3070.332410125816, 113.32665178592221, 115.52840297515434, 115.52840303642586, 173.29260455463876, 173.29260460414096, 173.29260458764028, 173.2926045793899, 175.23063930663682, +40, 160.0261664559601, 155.94916585688011, 157.3895072503898, 236.0842608755847, 236.08426094302376, 236.08426092054412, 236.08426090930428, 238.72453224292053, 181.53185596475524, 362.70064807237367, 454.1081922708173, 681.1622884062259, 686.0286853580111, 694.3654732957181, 694.3654732626596, 702.1309771850603, 181.53185596475524, 362.70064807237367, 454.1081922708173, 681.1622884062259, 686.0286853580111, 694.3654732957181, 694.3654732626596, 702.1309771850603, 181.53185596475524, 362.70064807237367, 695.6894573103456, 1043.5341859655184, 1004.2931890653604, 1005.8466321227462, 1015.5794255990024, 1028.7623077715502, 181.53185596475524, 362.70064807237367, 726.127423859021, 1089.1911357885315, 1452.254847718042, 2089.392630358492, 2010.91063578405, 2025.7819766049383, 181.53185596475524, 362.70064807237367, 726.127423859021, 1089.1911357885315, 1452.254847718042, 2178.382271577063, 2904.5096954360843, 3075.7340721759474, 113.52704809309208, 115.7275787992036, 115.72757886058075, 173.59136829087112, 173.59136834045867, 173.59136832392952, 173.5913683156649, 175.53274429626507, +41, 160.30696429099174, 156.2208438357735, 157.6603863712405, 236.49057955686067, 236.49057962441583, 236.4905796018975, 236.4905795906383, 239.13539502881497, 181.8495844966271, 363.3354696787994, 454.9097774993124, 682.3646662489685, 687.2283641457688, 695.560528240875, 695.5605282077596, 703.3393971435734, 181.8495844966271, 363.3354696787994, 454.9097774993124, 682.3646662489685, 687.2283641457688, 695.560528240875, 695.5605282077596, 703.3393971435734, 181.8495844966271, 363.3354696787994, 696.9081017668428, 1045.3621526502643, 1006.0657540886233, 1007.6040257738978, 1017.3314211394081, 1030.5328846947637, 181.8495844966271, 363.3354696787994, 727.3983379865084, 1091.0975069797626, 1454.7966759730168, 2093.052555066338, 2014.4597571676002, 2029.3454217447347, 181.8495844966271, 363.3354696787994, 727.3983379865084, 1091.0975069797626, 1454.7966759730168, 2182.195013959525, 2909.593351946034, 3081.135734226079, 113.72744440026196, 115.92675462325286, 115.92675468473564, 173.89013202710345, 173.89013207677635, 173.89013206021875, 173.8901320519399, 175.83484928589334, +42, 160.58776212602342, 156.49252181466687, 157.93126549209114, 236.89689823813666, 236.8968983058079, 236.8968982832509, 236.89689827197233, 239.54625781470938, 182.16731302849894, 363.97029128522524, 455.71136272780745, 683.5670440917111, 688.4280429335264, 696.755583186032, 696.7555831528597, 704.5478171020864, 182.16731302849894, 363.97029128522524, 455.71136272780745, 683.5670440917111, 688.4280429335264, 696.755583186032, 696.7555831528597, 704.5478171020864, 182.16731302849894, 363.97029128522524, 698.1267462233401, 1047.19011933501, 1007.8383191118861, 1009.3614194250493, 1019.0834166798136, 1032.3034616179768, 182.16731302849894, 363.97029128522524, 728.6692521139958, 1093.0038781709936, 1457.3385042279915, 2096.7124797741835, 2018.0088785511505, 2032.9088668845309, 182.16731302849894, 363.97029128522524, 728.6692521139958, 1093.0038781709936, 1457.3385042279915, 2186.0077563419873, 2914.6770084559835, 3086.5373962762105, 113.92784070743183, 116.12593044730212, 116.12593050889055, 174.1888957633358, 174.18889581309404, 174.188895796508, 174.18889578821492, 176.1369542755216, +43, 160.86855996105507, 156.76419979356024, 158.2021446129418, 237.30321691941265, 237.30321698719993, 237.30321696460425, 237.30321695330636, 239.95712060060382, 182.48504156037077, 364.605112891651, 456.5129479563025, 684.7694219344537, 689.627721721284, 697.950638131189, 697.9506380979598, 705.7562370605995, 182.48504156037077, 364.605112891651, 456.5129479563025, 684.7694219344537, 689.627721721284, 697.950638131189, 697.9506380979598, 705.7562370605995, 182.48504156037077, 364.605112891651, 699.3453906798374, 1049.0180860197559, 1009.610884135149, 1011.1188130762009, 1020.8354122202192, 1034.0740385411902, 182.48504156037077, 364.605112891651, 729.9401662414831, 1094.9102493622247, 1459.8803324829662, 2100.372404482029, 2021.5579999347008, 2036.4723120243273, 182.48504156037077, 364.605112891651, 729.9401662414831, 1094.9102493622247, 1459.8803324829662, 2189.820498724449, 2919.760664965933, 3091.939058326342, 114.1282370146017, 116.32510627135139, 116.32510633304544, 174.48765949956814, 174.48765954941172, 174.48765953279724, 174.48765952448994, 176.43905926514987, +44, 161.14935779608675, 157.03587777245363, 158.47302373379247, 237.70953560068864, 237.709535668592, 237.7095356459576, 237.70953563464036, 240.36798338649825, 182.8027700922426, 365.2399344980768, 457.3145331847976, 685.9717997771963, 690.8274005090416, 699.1456930763459, 699.1456930430599, 706.9646570191125, 182.8027700922426, 365.2399344980768, 457.3145331847976, 685.9717997771963, 690.8274005090416, 699.1456930763459, 699.1456930430599, 706.9646570191125, 182.8027700922426, 365.2399344980768, 700.5640351363345, 1050.8460527045017, 1011.3834491584118, 1012.8762067273524, 1022.5874077606247, 1035.8446154644034, 182.8027700922426, 365.2399344980768, 731.2110803689704, 1096.8166205534556, 1462.4221607379409, 2104.0323291898744, 2025.1071213182508, 2040.0357571641237, 182.8027700922426, 365.2399344980768, 731.2110803689704, 1096.8166205534556, 1462.4221607379409, 2193.633241106911, 2924.844321475882, 3097.3407203764737, 114.32863332177158, 116.52428209540065, 116.52428215720033, 174.7864232358005, 174.78642328572943, 174.78642326908647, 174.78642326076496, 176.7411642547781, +45, 161.4301556311184, 157.307555751347, 158.74390285464312, 238.11585428196463, 238.11585434998406, 238.11585432731098, 238.1158543159744, 240.7788461723927, 183.12049862411448, 365.8747561045026, 458.11611841329267, 687.174177619939, 692.0270792967992, 700.3407480215029, 700.3407479881599, 708.1730769776254, 183.12049862411448, 365.8747561045026, 458.11611841329267, 687.174177619939, 692.0270792967992, 700.3407480215029, 700.3407479881599, 708.1730769776254, 183.12049862411448, 365.8747561045026, 701.7826795928318, 1052.6740193892476, 1013.1560141816748, 1014.633600378504, 1024.3394033010304, 1037.6151923876168, 183.12049862411448, 365.8747561045026, 732.4819944964579, 1098.7229917446866, 1464.9639889929158, 2107.69225389772, 2028.6562427018011, 2043.5992023039198, 183.12049862411448, 365.8747561045026, 732.4819944964579, 1098.7229917446866, 1464.9639889929158, 2197.4459834893732, 2929.9279779858316, 3102.742382426605, 114.52902962894144, 116.72345791944991, 116.72345798135524, 175.08518697203283, 175.0851870220471, 175.08518700537573, 175.08518699703998, 177.04326924440636, +46, 161.71095346615004, 157.57923373024036, 159.01478197549378, 238.52217296324062, 238.52217303137613, 238.52217300866434, 238.52217299730842, 241.18970895828713, 183.4382271559863, 366.5095777109284, 458.91770364178774, 688.3765554626816, 693.2267580845569, 701.5358029666598, 701.53580293326, 709.3814969361385, 183.4382271559863, 366.5095777109284, 458.91770364178774, 688.3765554626816, 693.2267580845569, 701.5358029666598, 701.53580293326, 709.3814969361385, 183.4382271559863, 366.5095777109284, 703.001324049329, 1054.5019860739935, 1014.9285792049376, 1016.3909940296555, 1026.0913988414359, 1039.38576931083, 183.4382271559863, 366.5095777109284, 733.7529086239452, 1100.6293629359177, 1467.5058172478905, 2111.3521786055658, 2032.2053640853512, 2047.1626474437162, 183.4382271559863, 366.5095777109284, 733.7529086239452, 1100.6293629359177, 1467.5058172478905, 2201.2587258718354, 2935.0116344957814, 3108.144044476737, 114.72942593611131, 116.92263374349918, 116.92263380551013, 175.3839507082652, 175.3839507583648, 175.38395074166496, 175.383950733315, 177.34537423403464, +47, 161.99175130118172, 157.85091170913373, 159.28566109634446, 238.9284916445166, 238.92849171276816, 238.92849169001772, 238.92849167864244, 241.60057174418156, 183.75595568785815, 367.1443993173542, 459.7192888702828, 689.5789333054241, 694.4264368723145, 702.7308579118168, 702.7308578783601, 710.5899168946515, 183.75595568785815, 367.1443993173542, 459.7192888702828, 689.5789333054241, 694.4264368723145, 702.7308579118168, 702.7308578783601, 710.5899168946515, 183.75595568785815, 367.1443993173542, 704.2199685058263, 1056.3299527587392, 1016.7011442282005, 1018.1483876808071, 1027.8433943818416, 1041.1563462340434, 183.75595568785815, 367.1443993173542, 735.0238227514326, 1102.5357341271488, 1470.0476455028652, 2115.0121033134114, 2035.7544854689015, 2050.7260925835126, 183.75595568785815, 367.1443993173542, 735.0238227514326, 1102.5357341271488, 1470.0476455028652, 2205.0714682542975, 2940.095291005731, 3113.545706526869, 114.9298222432812, 117.12180956754844, 117.12180962966504, 175.68271444449752, 175.6827144946825, 175.6827144779542, 175.68271446959002, 177.64747922366288, +48, 162.27254913621337, 158.12258968802712, 159.5565402171951, 239.3348103257926, 239.33481039416023, 239.33481037137108, 239.33481035997647, 242.01143453007597, 184.07368421972998, 367.77922092378, 460.5208740987779, 690.7813111481668, 695.6261156600722, 703.9259128569738, 703.9259128234602, 711.7983368531646, 184.07368421972998, 367.77922092378, 460.5208740987779, 690.7813111481668, 695.6261156600722, 703.9259128569738, 703.9259128234602, 711.7983368531646, 184.07368421972998, 367.77922092378, 705.4386129623234, 1058.157919443485, 1018.4737092514633, 1019.9057813319587, 1029.595389922247, 1042.9269231572566, 184.07368421972998, 367.77922092378, 736.2947368789199, 1104.4421053183798, 1472.5894737578399, 2118.6720280212567, 2039.3036068524518, 2054.289537723309, 184.07368421972998, 367.77922092378, 736.2947368789199, 1104.4421053183798, 1472.5894737578399, 2208.8842106367597, 2945.17894751568, 3118.9473685770004, 115.13021855045106, 117.3209853915977, 117.32098545381993, 175.98147818072988, 175.98147823100018, 175.98147821424345, 175.98147820586505, 177.94958421329116, +49, 162.55334697124502, 158.39426766692048, 159.82741933804576, 239.7411290070686, 239.7411290755523, 239.74112905272446, 239.7411290413105, 242.4222973159704, 184.39141275160182, 368.4140425302058, 461.322459327273, 691.9836889909094, 696.8257944478297, 705.1209678021307, 705.1209677685601, 713.0067568116776, 184.39141275160182, 368.4140425302058, 461.322459327273, 691.9836889909094, 696.8257944478297, 705.1209678021307, 705.1209677685601, 713.0067568116776, 184.39141275160182, 368.4140425302058, 706.6572574188207, 1059.985886128231, 1020.2462742747261, 1021.6631749831101, 1031.3473854626527, 1044.69750008047, 184.39141275160182, 368.4140425302058, 737.5656510064073, 1106.348476509611, 1475.1313020128146, 2122.3319527291023, 2042.852728236002, 2057.8529828631054, 184.39141275160182, 368.4140425302058, 737.5656510064073, 1106.348476509611, 1475.1313020128146, 2212.696953019222, 2950.2626040256296, 3124.349030627132, 115.33061485762093, 117.52016121564697, 117.52016127797482, 176.2802419169622, 176.28024196731786, 176.28024195053268, 176.28024194214004, 178.2516892029194, +50, 162.8341448062767, 158.66594564581385, 160.0982984588964, 240.14744768834458, 240.14744775694436, 240.14744773407782, 240.14744772264453, 242.83316010186485, 184.70914128347368, 369.04886413663155, 462.1240445557681, 693.186066833652, 698.0254732355874, 706.3160227472877, 706.3160227136602, 714.2151767701907, 184.70914128347368, 369.04886413663155, 462.1240445557681, 693.186066833652, 698.0254732355874, 706.3160227472877, 706.3160227136602, 714.2151767701907, 184.70914128347368, 369.04886413663155, 707.8759018753179, 1061.8138528129768, 1022.0188392979891, 1023.4205686342617, 1033.0993810030582, 1046.4680770036832, 184.70914128347368, 369.04886413663155, 738.8365651338947, 1108.254847700842, 1477.6731302677895, 2125.991877436948, 2046.4018496195522, 2061.4164280029013, 184.70914128347368, 369.04886413663155, 738.8365651338947, 1108.254847700842, 1477.6731302677895, 2216.509695401684, 2955.3462605355794, 3129.7506926772635, 115.53101116479081, 117.71933703969623, 117.71933710212973, 176.57900565319457, 176.57900570363554, 176.57900568682192, 176.57900567841506, 178.55379419254768, +51, 163.11494264130835, 158.93762362470724, 160.3691775797471, 240.55376636962058, 240.5537664383364, 240.5537664154312, 240.55376640397853, 243.2440228877593, 185.02686981534552, 369.68368574305737, 462.92562978426315, 694.3884446763947, 699.225152023345, 707.5110776924447, 707.5110776587603, 715.4235967287037, 185.02686981534552, 369.68368574305737, 462.92562978426315, 694.3884446763947, 699.225152023345, 707.5110776924447, 707.5110776587603, 715.4235967287037, 185.02686981534552, 369.68368574305737, 709.0945463318152, 1063.6418194977227, 1023.7914043212519, 1025.1779622854133, 1034.8513765434639, 1048.2386539268966, 185.02686981534552, 369.68368574305737, 740.1074792613821, 1110.161218892073, 1480.2149585227642, 2129.6518021447937, 2049.9509710031025, 2064.9798731426977, 185.02686981534552, 369.68368574305737, 740.1074792613821, 1110.161218892073, 1480.2149585227642, 2220.322437784146, 2960.429917045529, 3135.152354727395, 115.73140747196068, 117.91851286374549, 117.91851292628462, 176.8777693894269, 176.87776943995325, 176.87776942311118, 176.87776941469008, 178.85589918217593, +52, 163.39574047634, 159.2093016036006, 160.64005670059774, 240.96008505089657, 240.96008511972846, 240.96008509678455, 240.96008508531256, 243.65488567365372, 185.34459834721736, 370.3185073494831, 463.7272150127582, 695.5908225191373, 700.4248308111027, 708.7061326376016, 708.7061326038604, 716.6320166872167, 185.34459834721736, 370.3185073494831, 463.7272150127582, 695.5908225191373, 700.4248308111027, 708.7061326376016, 708.7061326038604, 716.6320166872167, 185.34459834721736, 370.3185073494831, 710.3131907883123, 1065.4697861824686, 1025.5639693445148, 1026.9353559365647, 1036.6033720838693, 1050.0092308501098, 185.34459834721736, 370.3185073494831, 741.3783933888694, 1112.0675900833041, 1482.7567867777389, 2133.311726852639, 2053.500092386653, 2068.543318282494, 185.34459834721736, 370.3185073494831, 741.3783933888694, 1112.0675900833041, 1482.7567867777389, 2224.1351801666083, 2965.513573555478, 3140.5540167775266, 115.93180377913056, 118.11768868779475, 118.11768875043951, 177.17653312565926, 177.17653317627094, 177.1765331594004, 177.1765331509651, 179.15800417180418, +53, 163.67653831137167, 159.48097958249397, 160.9109358214484, 241.36640373217256, 241.36640380112053, 241.3664037781379, 241.36640376664658, 244.06574845954816, 185.6623268790892, 370.95332895590894, 464.5288002412533, 696.7932003618798, 701.6245095988603, 709.9011875827587, 709.9011875489605, 717.8404366457298, 185.6623268790892, 370.95332895590894, 464.5288002412533, 696.7932003618798, 701.6245095988603, 709.9011875827587, 709.9011875489605, 717.8404366457298, 185.6623268790892, 370.95332895590894, 711.5318352448096, 1067.2977528672143, 1027.3365343677776, 1028.6927495877164, 1038.355367624275, 1051.7798077733232, 185.6623268790892, 370.95332895590894, 742.6493075163568, 1113.9739612745352, 1485.2986150327135, 2136.9716515604846, 2057.0492137702026, 2072.1067634222904, 185.6623268790892, 370.95332895590894, 742.6493075163568, 1113.9739612745352, 1485.2986150327135, 2227.9479225490704, 2970.5972300654275, 3145.955678827658, 116.13220008630043, 118.316864511844, 118.31686457459442, 177.4752968618916, 177.47529691258862, 177.47529689568967, 177.47529688724012, 179.46010916143246, +54, 163.95733614640332, 159.75265756138734, 161.18181494229907, 241.77272241344855, 241.77272248251256, 241.7727224594913, 241.7727224479806, 244.4766112454426, 185.98005541096103, 371.5881505623347, 465.33038546974836, 697.9955782046225, 702.8241883866178, 711.0962425279156, 711.0962424940606, 719.0488566042428, 185.98005541096103, 371.5881505623347, 465.33038546974836, 697.9955782046225, 702.8241883866178, 711.0962425279156, 711.0962424940606, 719.0488566042428, 185.98005541096103, 371.5881505623347, 712.7504797013069, 1069.1257195519602, 1029.1090993910404, 1030.450143238868, 1040.1073631646805, 1053.5503846965366, 185.98005541096103, 371.5881505623347, 743.9202216438441, 1115.8803324657663, 1487.8404432876882, 2140.6315762683303, 2060.598335153753, 2075.670208562087, 185.98005541096103, 371.5881505623347, 743.9202216438441, 1115.8803324657663, 1487.8404432876882, 2231.7606649315326, 2975.680886575377, 3151.3573408777897, 116.3325963934703, 118.51604033589327, 118.51604039874931, 177.77406059812395, 177.7740606489063, 177.7740606319789, 177.77406062351514, 179.7622141510607, +55, 164.23813398143497, 160.02433554028073, 161.45269406314972, 242.17904109472454, 242.17904116390463, 242.17904114084467, 242.17904112931464, 244.88747403133704, 186.2977839428329, 372.2229721687605, 466.13197069824344, 699.1979560473651, 704.0238671743755, 712.2912974730725, 712.2912974391606, 720.2572765627559, 186.2977839428329, 372.2229721687605, 466.13197069824344, 699.1979560473651, 704.0238671743755, 712.2912974730725, 712.2912974391606, 720.2572765627559, 186.2977839428329, 372.2229721687605, 713.9691241578041, 1070.953686236706, 1030.8816644143035, 1032.2075368900196, 1041.8593587050862, 1055.3209616197498, 186.2977839428329, 372.2229721687605, 745.1911357713316, 1117.7867036569971, 1490.3822715426631, 2144.2915009761755, 2064.1474565373032, 2079.2336537018828, 186.2977839428329, 372.2229721687605, 745.1911357713316, 1117.7867036569971, 1490.3822715426631, 2235.5734073139947, 2980.7645430853267, 3156.7590029279213, 116.53299270064018, 118.71521615994253, 118.71521622290422, 178.07282433435628, 178.072824385224, 178.07282436826813, 178.07282435979016, 180.06431914068898, +56, 164.51893181646665, 160.2960135191741, 161.72357318400037, 242.58535977600053, 242.5853598452967, 242.58535982219803, 242.58535981064867, 245.29833681723147, 186.61551247470473, 372.8577937751863, 466.9335559267385, 700.4003338901077, 705.2235459621331, 713.4863524182296, 713.4863523842607, 721.4656965212689, 186.61551247470473, 372.8577937751863, 466.9335559267385, 700.4003338901077, 705.2235459621331, 713.4863524182296, 713.4863523842607, 721.4656965212689, 186.61551247470473, 372.8577937751863, 715.1877686143014, 1072.781652921452, 1032.6542294375663, 1033.964930541171, 1043.6113542454916, 1057.0915385429632, 186.61551247470473, 372.8577937751863, 746.4620498988189, 1119.6930748482282, 1492.9240997976378, 2147.951425684021, 2067.6965779208535, 2082.797098841679, 186.61551247470473, 372.8577937751863, 746.4620498988189, 1119.6930748482282, 1492.9240997976378, 2239.3861496964564, 2985.848199595276, 3162.160664978053, 116.73338900781005, 118.91439198399179, 118.91439204705911, 178.37158807058864, 178.3715881215417, 178.3715881045574, 178.37158809606518, 180.36642413031723, +57, 164.7997296514983, 160.56769149806746, 161.99445230485105, 242.99167845727652, 242.99167852668876, 242.99167850355138, 242.99167849198267, 245.70919960312588, 186.93324100657657, 373.4926153816121, 467.7351411552336, 701.6027117328504, 706.4232247498908, 714.6814073633865, 714.6814073293608, 722.674116479782, 186.93324100657657, 373.4926153816121, 467.7351411552336, 701.6027117328504, 706.4232247498908, 714.6814073633865, 714.6814073293608, 722.674116479782, 186.93324100657657, 373.4926153816121, 716.4064130707985, 1074.6096196061978, 1034.4267944608291, 1035.7223241923225, 1045.3633497858973, 1058.8621154661764, 186.93324100657657, 373.4926153816121, 747.7329640263063, 1121.5994460394593, 1495.4659280526125, 2151.611350391867, 2071.2456993044034, 2086.3605439814755, 186.93324100657657, 373.4926153816121, 747.7329640263063, 1121.5994460394593, 1495.4659280526125, 2243.1988920789186, 2990.9318561052255, 3167.5623270281844, 116.93378531497993, 119.11356780804105, 119.113567871214, 178.67035180682097, 178.67035185785937, 178.67035184084662, 178.6703518323402, 180.6685291199455, +58, 165.08052748652995, 160.83936947696085, 162.2653314257017, 243.3979971385525, 243.3979972080808, 243.39799718490477, 243.3979971733167, 246.12006238902032, 187.2509695384484, 374.12743698803786, 468.53672638372865, 702.805089575593, 707.6229035376484, 715.8764623085434, 715.8764622744608, 723.882536438295, 187.2509695384484, 374.12743698803786, 468.53672638372865, 702.805089575593, 707.6229035376484, 715.8764623085434, 715.8764622744608, 723.882536438295, 187.2509695384484, 374.12743698803786, 717.6250575272958, 1076.4375862909435, 1036.199359484092, 1037.4797178434742, 1047.1153453263028, 1060.6326923893898, 187.2509695384484, 374.12743698803786, 749.0038781537936, 1123.5058172306904, 1498.0077563075872, 2155.2712750997125, 2074.7948206879537, 2089.923989121272, 187.2509695384484, 374.12743698803786, 749.0038781537936, 1123.5058172306904, 1498.0077563075872, 2247.0116344613807, 2996.015512615175, 3172.963989078316, 117.1341816221498, 119.31274363209032, 119.31274369536891, 178.96911554305333, 178.96911559417708, 178.96911557713585, 178.9691155686152, 180.97063410957375, +59, 165.36132532156162, 161.11104745585422, 162.53621054655235, 243.8043158198285, 243.80431588947286, 243.80431586625812, 243.80431585465072, 246.53092517491476, 187.56869807032024, 374.7622585944637, 469.3383116122237, 704.0074674183355, 708.8225823254061, 717.0715172537004, 717.0715172195609, 725.090956396808, 187.56869807032024, 374.7622585944637, 469.3383116122237, 704.0074674183355, 708.8225823254061, 717.0715172537004, 717.0715172195609, 725.090956396808, 187.56869807032024, 374.7622585944637, 718.843701983793, 1078.2655529756894, 1037.9719245073547, 1039.2371114946257, 1048.8673408667084, 1062.403269312603, 187.56869807032024, 374.7622585944637, 750.274792281281, 1125.4121884219214, 1500.549584562562, 2158.9311998075577, 2078.343942071504, 2093.4874342610683, 187.56869807032024, 374.7622585944637, 750.274792281281, 1125.4121884219214, 1500.549584562562, 2250.824376843843, 3001.0991691251247, 3178.3656511284476, 117.33457792931966, 119.51191945613958, 119.5119195195238, 179.26787927928567, 179.26787933049476, 179.2678793134251, 179.26787930489022, 181.272739099202, +60, 165.64212315659327, 161.38272543474758, 162.80708966740303, 244.2106345011045, 244.21063457086493, 244.2106345476115, 244.21063453598475, 246.9417879608092, 187.8864266021921, 375.39708020088943, 470.13989684071885, 705.2098452610782, 710.0222611131636, 718.2665721988574, 718.2665721646609, 726.2993763553211, 187.8864266021921, 375.39708020088943, 470.13989684071885, 705.2098452610782, 710.0222611131636, 718.2665721988574, 718.2665721646609, 726.2993763553211, 187.8864266021921, 375.39708020088943, 720.0623464402902, 1080.0935196604353, 1039.7444895306178, 1040.994505145777, 1050.619336407114, 1064.1738462358164, 187.8864266021921, 375.39708020088943, 751.5457064087684, 1127.3185596131525, 1503.0914128175368, 2162.5911245154034, 2081.8930634550543, 2097.0508794008647, 187.8864266021921, 375.39708020088943, 751.5457064087684, 1127.3185596131525, 1503.0914128175368, 2254.637119226305, 3006.182825635074, 3183.767313178579, 117.53497423648955, 119.71109528018884, 119.71109534367869, 179.56664301551803, 179.56664306681245, 179.56664304971434, 179.56664304116524, 181.57484408883028, +61, 165.92292099162495, 161.65440341364095, 163.07796878825368, 244.61695318238048, 244.61695325225696, 244.61695322896486, 244.61695321731878, 247.35265074670363, 188.20415513406394, 376.03190180731525, 470.9414820692139, 706.4122231038208, 711.2219399009213, 719.4616271440143, 719.461627109761, 727.5077963138341, 188.20415513406394, 376.03190180731525, 470.9414820692139, 706.4122231038208, 711.2219399009213, 719.4616271440143, 719.461627109761, 727.5077963138341, 188.20415513406394, 376.03190180731525, 721.2809908967874, 1081.9214863451812, 1041.5170545538806, 1042.7518987969288, 1052.3713319475196, 1065.9444231590296, 188.20415513406394, 376.03190180731525, 752.8166205362558, 1129.2249308043836, 1505.6332410725115, 2166.251049223249, 2085.4421848386046, 2100.614324540661, 188.20415513406394, 376.03190180731525, 752.8166205362558, 1129.2249308043836, 1505.6332410725115, 2258.449861608767, 3011.2664821450235, 3189.1689752287107, 117.73537054365941, 119.9102711042381, 119.9102711678336, 179.86540675175036, 179.86540680313013, 179.86540678600358, 179.86540677744026, 181.87694907845852, +62, 166.2037188266566, 161.92608139253434, 163.34884790910434, 245.02327186365648, 245.02327193364903, 245.02327191031824, 245.0232718986528, 247.76351353259807, 188.52188366593577, 376.666723413741, 471.743067297709, 707.6146009465634, 712.4216186886789, 720.6566820891713, 720.6566820548611, 728.7162162723472, 188.52188366593577, 376.666723413741, 471.743067297709, 707.6146009465634, 712.4216186886789, 720.6566820891713, 720.6566820548611, 728.7162162723472, 188.52188366593577, 376.666723413741, 722.4996353532847, 1083.749453029927, 1043.2896195771434, 1044.5092924480803, 1054.123327487925, 1067.715000082243, 188.52188366593577, 376.666723413741, 754.0875346637431, 1131.1313019956146, 1508.1750693274862, 2169.9109739310948, 2088.9913062221544, 2104.177769680457, 188.52188366593577, 376.666723413741, 754.0875346637431, 1131.1313019956146, 1508.1750693274862, 2262.2626039912293, 3016.350138654973, 3194.5706372788422, 117.93576685082928, 120.10944692828737, 120.10944699198849, 180.16417048798272, 180.16417053944784, 180.16417052229284, 180.16417051371528, 182.1790540680868, +63, 166.48451666168825, 162.1977593714277, 163.61972702995502, 245.42959054493247, 245.4295906150411, 245.4295905916716, 245.42959057998684, 248.17437631849248, 188.8396121978076, 377.3015450201668, 472.54465252620406, 708.816978789306, 713.6212974764366, 721.8517370343283, 721.8517369999612, 729.9246362308602, 188.8396121978076, 377.3015450201668, 472.54465252620406, 708.816978789306, 713.6212974764366, 721.8517370343283, 721.8517369999612, 729.9246362308602, 188.8396121978076, 377.3015450201668, 723.718279809782, 1085.577419714673, 1045.0621846004062, 1046.266686099232, 1055.8753230283307, 1069.4855770054562, 188.8396121978076, 377.3015450201668, 755.3584487912304, 1133.0376731868457, 1510.716897582461, 2173.57089863894, 2092.5404276057047, 2107.7412148202534, 188.8396121978076, 377.3015450201668, 755.3584487912304, 1133.0376731868457, 1510.716897582461, 2266.0753463736914, 3021.4337951649222, 3199.9722993289743, 118.13616315799916, 120.30862275233663, 120.30862281614338, 180.46293422421508, 180.46293427576552, 180.46293425858207, 180.4629342499903, 182.48115905771505, +64, 166.76531449671992, 162.46943735032107, 163.89060615080567, 245.83590922620846, 245.83590929643316, 245.83590927302498, 245.83590926132086, 248.58523910438691, 189.15734072967945, 377.9363666265926, 473.34623775469913, 710.0193566320486, 714.8209762641941, 723.0467919794852, 723.0467919450613, 731.1330561893733, 189.15734072967945, 377.9363666265926, 473.34623775469913, 710.0193566320486, 714.8209762641941, 723.0467919794852, 723.0467919450613, 731.1330561893733, 189.15734072967945, 377.9363666265926, 724.9369242662792, 1087.4053863994186, 1046.8347496236693, 1048.0240797503834, 1057.6273185687362, 1071.2561539286696, 189.15734072967945, 377.9363666265926, 756.6293629187178, 1134.9440443780768, 1513.2587258374356, 2177.2308233467857, 2096.089548989255, 2111.30465996005, 189.15734072967945, 377.9363666265926, 756.6293629187178, 1134.9440443780768, 1513.2587258374356, 2269.8880887561536, 3026.517451674872, 3205.373961379106, 118.33655946516903, 120.5077985763859, 120.50779864029829, 180.7616979604474, 180.7616980120832, 180.7616979948713, 180.76169798626532, 182.78326404734332, +65, 167.04611233175157, 162.74111532921444, 164.16148527165632, 246.24222790748445, 246.24222797782522, 246.24222795437834, 246.24222794265486, 248.99610189028135, 189.4750692615513, 378.5711882330184, 474.1478229831942, 711.2217344747912, 716.0206550519517, 724.2418469246422, 724.2418468901614, 732.3414761478863, 189.4750692615513, 378.5711882330184, 474.1478229831942, 711.2217344747912, 716.0206550519517, 724.2418469246422, 724.2418468901614, 732.3414761478863, 189.4750692615513, 378.5711882330184, 726.1555687227764, 1089.2333530841645, 1048.607314646932, 1049.7814734015349, 1059.379314109142, 1073.0267308518828, 189.4750692615513, 378.5711882330184, 757.9002770462052, 1136.8504155693079, 1515.8005540924105, 2180.8907480546313, 2099.6386703728053, 2114.868105099846, 189.4750692615513, 378.5711882330184, 757.9002770462052, 1136.8504155693079, 1515.8005540924105, 2273.7008311386157, 3031.6011081848214, 3210.7756234292374, 118.5369557723389, 120.70697440043516, 120.70697446445318, 181.06046169667974, 181.06046174840088, 181.06046173116056, 181.06046172254034, 183.08536903697157, +66, 167.32691016678322, 163.01279330810783, 164.432364392507, 246.64854658876044, 246.64854665921726, 246.6485466357317, 246.6485466239889, 249.4069646761758, 189.79279779342315, 379.20600983944416, 474.9494082116893, 712.4241123175339, 717.2203338397094, 725.4369018697992, 725.4369018352613, 733.5498961063993, 189.79279779342315, 379.20600983944416, 474.9494082116893, 712.4241123175339, 717.2203338397094, 725.4369018697992, 725.4369018352613, 733.5498961063993, 189.79279779342315, 379.20600983944416, 727.3742131792736, 1091.0613197689104, 1050.379879670195, 1051.5388670526866, 1061.1313096495473, 1074.7973077750962, 189.79279779342315, 379.20600983944416, 759.1711911736926, 1138.7567867605387, 1518.3423823473852, 2184.550672762477, 2103.1877917563556, 2118.4315502396425, 189.79279779342315, 379.20600983944416, 759.1711911736926, 1138.7567867605387, 1518.3423823473852, 2277.513573521078, 3036.684764694771, 3216.177285479369, 118.73735207950878, 120.90615022448442, 120.90615028860807, 181.3592254329121, 181.3592254847186, 181.3592254674498, 181.35922545881533, 183.38747402659982, +67, 167.6077080018149, 163.2844712870012, 164.70324351335765, 247.05486527003643, 247.05486534060933, 247.05486531708507, 247.05486530532292, 249.81782746207023, 190.11052632529498, 379.84083144587, 475.75099344018435, 713.6264901602765, 718.420012627467, 726.6319568149561, 726.6319567803614, 734.7583160649124, 190.11052632529498, 379.84083144587, 475.75099344018435, 713.6264901602765, 718.420012627467, 726.6319568149561, 726.6319567803614, 734.7583160649124, 190.11052632529498, 379.84083144587, 728.5928576357709, 1092.8892864536563, 1052.1524446934577, 1053.296260703838, 1062.883305189953, 1076.5678846983096, 190.11052632529498, 379.84083144587, 760.4421053011799, 1140.6631579517698, 1520.8842106023599, 2188.210597470322, 2106.7369131399055, 2121.994995379439, 190.11052632529498, 379.84083144587, 760.4421053011799, 1140.6631579517698, 1520.8842106023599, 2281.32631590354, 3041.76842120472, 3221.5789475295005, 118.93774838667865, 121.10532604853368, 121.10532611276298, 181.65798916914446, 181.65798922103627, 181.65798920373902, 181.65798919509035, 183.6895790162281, +68, 167.88850583684655, 163.55614926589456, 164.9741226342083, 247.46118395131242, 247.4611840220014, 247.46118399843846, 247.46118398665695, 250.22869024796466, 190.42825485716682, 380.4756530522958, 476.5525786686794, 714.8288680030191, 719.6196914152247, 727.8270117601131, 727.8270117254615, 735.9667360234254, 190.42825485716682, 380.4756530522958, 476.5525786686794, 714.8288680030191, 719.6196914152247, 727.8270117601131, 727.8270117254615, 735.9667360234254, 190.42825485716682, 380.4756530522958, 729.811502092268, 1094.7172531384022, 1053.9250097167205, 1055.0536543549897, 1064.6353007303585, 1078.3384616215228, 190.42825485716682, 380.4756530522958, 761.7130194286673, 1142.5695291430009, 1523.4260388573346, 2191.870522178168, 2110.286034523456, 2125.558440519235, 190.42825485716682, 380.4756530522958, 761.7130194286673, 1142.5695291430009, 1523.4260388573346, 2285.139058286002, 3046.8520777146696, 3226.980609579632, 119.13814469384853, 121.30450187258295, 121.30450193691787, 181.9567529053768, 181.95675295735396, 181.95675294002828, 181.95675293136537, 183.99168400585634, +69, 168.1693036718782, 163.82782724478795, 165.24500175505895, 247.8675026325884, 247.86750270339343, 247.8675026797918, 247.86750266799098, 250.6395530338591, 184.59514170963473, 368.8210929881925, 477.3541638971745, 716.0312458457618, 720.8193702029823, 729.02206670527, 729.0220666705616, 737.1751559819385, 184.59514170963473, 368.8210929881925, 477.3541638971745, 716.0312458457618, 720.8193702029823, 729.02206670527, 729.0220666705616, 737.1751559819385, 184.59514170963473, 368.8210929881925, 731.0301465487653, 1096.5452198231478, 1055.6975747399836, 1056.8110480061412, 1066.3872962707642, 1080.1090385447362, 184.59514170963473, 368.8210929881925, 738.3805668385389, 1107.5708502578082, 1476.7611336770779, 2195.5304468860136, 2113.835155907006, 2129.1218856590312, 184.59514170963473, 368.8210929881925, 738.3805668385389, 1107.5708502578082, 1476.7611336770779, 2215.1417005156145, 2953.522267354153, 3232.3822716297636, 119.3385410010184, 121.50367769663221, 121.50367776107277, 182.25551664160915, 182.25551669367167, 182.2555166763175, 182.2555166676404, 184.29378899548462, +70, 168.45010150690987, 164.09950522368132, 165.51588087590963, 248.2738213138644, 248.2738213847855, 248.27382136114517, 248.273821349325, 251.05041581975354, 178.20850203320208, 356.06058691978865, 478.15574912566956, 717.2336236885043, 722.0190489907399, 730.2171216504271, 730.2171216156617, 738.3835759404515, 178.20850203320208, 356.06058691978865, 478.15574912566956, 717.2336236885043, 722.0190489907399, 730.2171216504271, 730.2171216156617, 738.3835759404515, 178.20850203320208, 356.06058691978865, 712.8340081328076, 1069.2510121992113, 1057.4701397632464, 1058.5684416572926, 1068.1392918111696, 1081.8796154679494, 178.20850203320208, 356.06058691978865, 712.8340081328083, 1069.2510121992123, 1425.6680162656166, 2138.5020243984227, 2117.3842772905564, 2132.6853307988276, 178.20850203320208, 356.06058691978865, 712.8340081328083, 1069.2510121992123, 1425.6680162656166, 2138.5020243984227, 2851.3360325312306, 3237.783933679895, 119.53893730818827, 121.70285352068147, 121.70285358522767, 182.55428037784148, 182.55428042998935, 182.55428041260677, 182.5542804039154, 184.59589398511287, +71, 168.73089934194152, 164.37118320257468, 165.78675999676028, 248.6801399951404, 248.68014006617756, 248.68014004249855, 248.680140030659, 251.46127860564795, 171.82186235676937, 343.3000808513848, 478.9573343541647, 718.4360015312469, 723.2187277784975, 731.412176595584, 731.4121765607617, 739.5919958989646, 171.82186235676937, 343.3000808513848, 478.9573343541647, 718.4360015312469, 723.2187277784975, 731.412176595584, 731.4121765607617, 739.5919958989646, 171.82186235676937, 343.3000808513848, 687.2874494270768, 1030.931174140615, 1059.2427047865092, 1060.3258353084443, 1069.891287351575, 1083.6501923911628, 171.82186235676937, 343.3000808513848, 687.2874494270775, 1030.931174140616, 1374.574898854155, 2061.862348281231, 2120.9333986741067, 2136.248775938624, 171.82186235676937, 343.3000808513848, 687.2874494270775, 1030.931174140616, 1374.574898854155, 2061.86234828123, 2749.1497977083072, 3243.1855957300268, 119.73933361535815, 121.90202934473072, 121.90202940938256, 182.85304411407384, 182.85304416630703, 182.853044148896, 182.85304414019043, 184.89799897474114, +72, 165.43522268033644, 164.64286118146805, 166.05763911761093, 249.08645867641638, 249.08645874756962, 249.0864587238519, 249.08645871199303, 251.87214139154239, 165.43522268033666, 330.53957478298094, 479.75891958265976, 719.6383793739896, 724.4184065662552, 732.6072315407409, 732.6072315058618, 740.8004158574776, 165.43522268033666, 330.53957478298094, 479.75891958265976, 719.6383793739896, 724.4184065662552, 732.6072315407409, 732.6072315058618, 740.8004158574776, 165.43522268033666, 330.53957478298094, 661.740890721346, 992.6113360820191, 1061.015269809772, 1062.0832289595958, 1071.6432828919808, 1085.420769314376, 165.43522268033666, 330.53957478298094, 661.7408907213467, 992.61133608202, 1323.4817814426933, 1985.2226721640382, 2124.4825200576565, 2139.8122210784204, 165.43522268033666, 330.53957478298094, 661.7408907213467, 992.61133608202, 1323.4817814426933, 1985.2226721640382, 2646.963562885384, 3248.5872577801583, 119.93972992252802, 122.10120516877998, 122.10120523353746, 183.15180785030617, 183.1518079026247, 183.15180788518524, 183.15180787646545, 185.2001039643694, +73, 159.0485830039038, 164.91453916036144, 166.3285182384616, 249.49277735769235, 249.49277742896166, 249.4927774052053, 249.49277739332706, 252.28300417743682, 159.04858300390396, 317.7790687145772, 480.56050481115483, 720.8407572167322, 725.6180853540128, 733.8022864858979, 733.8022864509619, 742.0088358159906, 159.04858300390396, 317.7790687145772, 480.56050481115483, 720.8407572167322, 725.6180853540128, 733.8022864858979, 733.8022864509619, 742.0088358159906, 159.04858300390396, 317.7790687145772, 636.1943320156151, 954.2914980234227, 1062.787834833035, 1063.8406226107472, 1073.3952784323865, 1087.1913462375894, 159.04858300390396, 317.7790687145772, 636.1943320156158, 954.2914980234236, 1272.3886640312317, 1908.5829960468454, 2128.031641441207, 2143.375666218217, 159.04858300390396, 317.7790687145772, 636.1943320156158, 954.2914980234236, 1272.3886640312317, 1908.5829960468454, 2544.7773280624606, 3180.9716600780775, 120.1401262296979, 122.30038099282925, 122.30038105769236, 183.45057158653853, 183.4505716389424, 183.45057162147447, 183.45057161274048, 185.50220895399764, +74, 152.66194332747108, 165.1862171392548, 166.59939735931226, 249.89909603896834, 249.89909611035372, 249.89909608655864, 249.8990960746611, 252.69386696333126, 152.66194332747125, 305.01856264617334, 481.3620900396499, 722.0431350594747, 726.8177641417703, 734.9973414310549, 734.997341396062, 743.2172557745037, 152.66194332747125, 305.01856264617334, 481.3620900396499, 722.0431350594747, 726.8177641417703, 734.9973414310549, 734.997341396062, 743.2172557745037, 152.66194332747125, 305.01856264617334, 610.6477733098845, 915.9716599648268, 1064.5603998562979, 1065.598016261899, 1075.147273972792, 1088.9619231608026, 152.66194332747125, 305.01856264617334, 610.647773309885, 915.9716599648273, 1221.29554661977, 1831.9433199296536, 2131.580762824757, 2146.9391113580127, 152.66194332747125, 305.01856264617334, 610.647773309885, 915.9716599648273, 1221.29554661977, 1831.9433199296536, 2442.591093239538, 3053.2388665494236, 120.34052253686777, 122.49955681687851, 122.49955688184725, 183.74933532277086, 183.7493353752601, 183.74933535776373, 183.7493353490155, 185.8043139436259, +75, 146.27530365103837, 165.45789511814817, 166.87027648016291, 250.30541472024433, 250.3054147917458, 250.30541476791203, 250.30541475599512, 253.1047297492257, 146.2753036510386, 292.2580565777695, 482.16367526814497, 723.2455129022173, 728.017442929528, 736.1923963762118, 736.1923963411621, 744.4256757330166, 146.2753036510386, 292.2580565777695, 482.16367526814497, 723.2455129022173, 728.017442929528, 736.1923963762118, 736.1923963411621, 744.4256757330166, 146.2753036510386, 292.2580565777695, 585.1012146041537, 877.6518219062305, 1066.3329648795607, 1067.3554099130504, 1076.8992695131974, 1090.732500084016, 146.2753036510386, 292.2580565777695, 585.1012146041544, 877.6518219062314, 1170.2024292083088, 1755.3036438124618, 2135.1298842083074, 2150.502556497809, 146.2753036510386, 292.2580565777695, 585.1012146041544, 877.6518219062314, 1170.2024292083088, 1755.303643812461, 2340.404858416615, 2925.5060730207697, 120.54091884403763, 122.69873264092777, 122.69873270600215, 184.04809905900322, 184.04809911157778, 184.04809909405296, 184.04809908529052, 186.10641893325416, +76, 139.88866397460572, 165.72957309704157, 167.1411556010136, 250.71173340152032, 250.71173347313783, 250.71173344926538, 250.71173343732914, 253.51559253512013, 139.8886639746059, 279.4975505093656, 482.96526049664004, 724.44789074496, 729.2171217172856, 737.3874513213689, 737.387451286262, 745.6340956915298, 139.8886639746059, 279.4975505093656, 482.96526049664004, 724.44789074496, 729.2171217172856, 737.3874513213689, 737.387451286262, 745.6340956915298, 139.8886639746059, 279.4975505093656, 559.5546558984229, 839.3319838476341, 1068.1055299028235, 1069.112803564202, 1078.651265053603, 1092.5030770072292, 139.8886639746059, 279.4975505093656, 559.5546558984236, 839.331983847635, 1119.1093117968471, 1678.663967695269, 2138.6790055918577, 2154.0660016376055, 139.8886639746059, 279.4975505093656, 559.5546558984236, 839.331983847635, 1119.1093117968471, 1678.663967695269, 2238.2186235936915, 2797.7732794921158, 120.74131515120752, 122.89790846497704, 122.89790853015705, 184.34686279523555, 184.34686284789547, 184.34686283034222, 184.3468628215655, 186.40852392288244, +77, 133.502024298173, 166.00125107593493, 167.41203472186425, 251.1180520827963, 251.1180521545299, 251.11805213061876, 251.11805211866317, 253.92645532101457, 133.50202429817318, 266.73704444096177, 483.7668457251351, 725.6502685877026, 730.4168005050433, 738.5825062665258, 738.5825062313621, 746.8425156500427, 133.50202429817318, 266.73704444096177, 483.7668457251351, 725.6502685877026, 730.4168005050433, 738.5825062665258, 738.5825062313621, 746.8425156500427, 133.50202429817318, 266.73704444096177, 534.008097192692, 801.0121457890382, 1068.0161943853846, 1070.8701972153535, 1080.4032605940088, 1094.2736539304426, 133.50202429817318, 266.73704444096177, 534.0080971926927, 801.0121457890391, 1068.0161943853855, 1602.0242915780764, 2136.032388770772, 2157.629446777402, 133.50202429817318, 266.73704444096177, 534.0080971926927, 801.0121457890391, 1068.0161943853855, 1602.0242915780764, 2136.032388770768, 2670.040485963462, 120.94171145837738, 123.0970842890263, 123.09708435431195, 184.6456265314679, 184.64562658421318, 184.64562656663145, 184.64562655784053, 186.71062891251069, +78, 127.1153846217403, 166.2729290548283, 167.6829138427149, 251.5243707640723, 251.52437083592196, 251.52437081197212, 251.52437079999717, 254.33731810690898, 127.11538462174053, 253.9765383725579, 484.5684309536302, 726.8526464304452, 731.6164792928009, 739.7775612116827, 739.7775611764622, 748.0509356085558, 127.11538462174053, 253.9765383725579, 484.5684309536302, 726.8526464304452, 731.6164792928009, 739.7775612116827, 739.7775611764622, 748.0509356085558, 127.11538462174053, 253.9765383725579, 508.46153848696144, 762.6923077304418, 1016.9230769739229, 1072.6275908665052, 1082.1552561344142, 1096.0442308536558, 127.11538462174053, 253.9765383725579, 508.4615384869621, 762.6923077304427, 1016.9230769739243, 1525.3846154608846, 2033.8461539478485, 2161.1928919171983, 127.11538462174053, 253.9765383725579, 508.4615384869621, 762.6923077304427, 1016.9230769739243, 1525.3846154608846, 2033.8461539478458, 2542.307692434808, 121.14210776554725, 123.29626011307556, 123.29626017846685, 184.94439026770024, 184.94439032053086, 184.94439030292068, 184.94439029411555, 187.01273390213896, +79, 120.72874494530765, 166.54460703372166, 167.95379296356555, 251.9306894453483, 251.93068951731402, 251.93068949332547, 251.9306894813312, 254.74818089280342, 120.72874494530782, 241.21603230415406, 485.37001618212525, 728.0550242731879, 732.8161580805586, 740.9726161568398, 740.9726161215623, 749.2593555670688, 120.72874494530782, 241.21603230415406, 485.37001618212525, 728.0550242731879, 732.8161580805586, 740.9726161568398, 740.9726161215623, 749.2593555670688, 120.72874494530782, 241.21603230415406, 482.9149797812306, 724.3724696718459, 965.8299595624612, 1074.3849845176567, 1083.9072516748197, 1097.8148077768692, 120.72874494530782, 241.21603230415406, 482.9149797812313, 724.3724696718468, 965.8299595624626, 1448.7449393436927, 1931.659919124926, 2164.7563370569947, 120.72874494530782, 241.21603230415406, 482.9149797812313, 724.3724696718468, 965.8299595624626, 1448.7449393436918, 1931.6599191249225, 2414.574898906154, 121.34250407271713, 123.49543593712482, 123.49543600262174, 185.2431540039326, 185.24315405684854, 185.24315403920994, 185.24315403039057, 187.3148388917672, +80, 114.34210526887495, 166.81628501261505, 168.22467208441623, 252.33700812662428, 252.3370081987061, 252.33700817467886, 252.33700816266523, 255.15904367869786, 114.34210526887512, 228.4555262357502, 469.1615245243652, 703.742286786548, 734.0158368683161, 742.1676711019967, 742.1676710666624, 750.4677755255818, 114.34210526887512, 228.4555262357502, 469.1615245243652, 703.742286786548, 734.0158368683161, 742.1676711019967, 742.1676710666624, 750.4677755255818, 114.34210526887512, 228.4555262357502, 457.3684210754998, 686.0526316132496, 914.736842151, 1076.1423781688081, 1085.6592472152254, 1099.5853847000826, 114.34210526887512, 228.4555262357502, 457.36842107550046, 686.0526316132505, 914.7368421510009, 1372.1052632265, 1829.4736843020028, 2168.3197821967906, 114.34210526887512, 228.4555262357502, 457.36842107550046, 686.0526316132505, 914.7368421510009, 1372.1052632265, 1829.4736843019991, 2286.8421053775, 117.29038113109118, 123.69461176117409, 123.69461182677664, 185.54191774016493, 185.54191779316622, 185.54191777549917, 185.5419177666656, 187.61694388139546, +81, 107.95546559244224, 167.08796299150842, 168.49555120526688, 252.74332680790027, 252.74332688009812, 252.74332685603224, 252.74332684399926, 255.5699064645923, 107.95546559244247, 215.69502016734646, 442.7078040148758, 664.0617060223135, 735.2155156560738, 743.3627260471536, 743.3627260117624, 751.6761954840949, 107.95546559244247, 215.69502016734646, 442.7078040148758, 664.0617060223135, 735.2155156560738, 743.3627260471536, 743.3627260117624, 751.6761954840949, 107.95546559244247, 215.69502016734646, 431.82186236976895, 647.7327935546537, 863.6437247395388, 1077.8997718199598, 1087.411242755631, 1101.3559616232958, 107.95546559244247, 215.69502016734646, 431.82186236976986, 647.7327935546541, 863.6437247395397, 1295.4655871093073, 1727.2874494790794, 2171.883227336587, 107.95546559244247, 215.69502016734646, 431.82186236976986, 647.7327935546541, 863.6437247395397, 1295.4655871093073, 1727.2874494790758, 2159.109311848846, 110.67695100371884, 123.89378758522335, 123.89378765093154, 185.8406814763973, 185.84068152948393, 185.8406815117884, 185.8406815029406, 187.91904887102373, +82, 101.56882591600959, 167.35964097040178, 168.76643032611753, 253.14964548917627, 253.1496455614902, 253.1496455373856, 253.14964552533328, 255.98076925048673, 101.5688259160097, 202.9345140989426, 416.254083505386, 624.381125258079, 736.4151944438314, 744.5577809923107, 744.5577809568625, 752.8846154426079, 101.5688259160097, 202.9345140989426, 416.254083505386, 624.381125258079, 736.4151944438314, 744.5577809923107, 744.5577809568625, 752.8846154426079, 101.5688259160097, 202.9345140989426, 406.27530366403835, 609.4129554960573, 812.5506073280767, 1079.6571654711113, 1089.1632382960365, 1103.126538546509, 101.5688259160097, 202.9345140989426, 406.2753036640388, 609.4129554960582, 812.5506073280776, 1218.8259109921155, 1625.101214656157, 2081.270417526932, 101.5688259160097, 202.9345140989426, 406.2753036640388, 609.4129554960582, 812.5506073280776, 1218.8259109921155, 1625.1012146561534, 2031.3765183201922, 104.06352087634639, 124.09296340927261, 124.09296347508644, 186.13944521262962, 186.1394452658016, 186.13944524807766, 186.13944523921563, 188.22115386065198, +83, 95.18218623957682, 167.63131894929518, 169.0373094469682, 253.55596417045226, 253.55596424288225, 253.55596421873895, 253.5559642066673, 256.39163203638117, 95.18218623957705, 190.17400803053874, 389.8003629958962, 584.7005444938445, 737.6148732315891, 745.7528359374676, 745.7528359019626, 754.093035401121, 95.18218623957705, 190.17400803053874, 389.8003629958962, 584.7005444938445, 737.6148732315891, 745.7528359374676, 745.7528359019626, 754.093035401121, 95.18218623957705, 190.17400803053874, 380.72874495830774, 571.0931174374614, 761.4574899166155, 1081.4145591222627, 1090.915233836442, 1104.8971154697224, 95.18218623957705, 190.17400803053874, 380.7287449583082, 571.0931174374618, 761.4574899166164, 1142.1862348749237, 1522.9149798332328, 1949.0018149794832, 95.18218623957705, 190.17400803053874, 380.7287449583082, 571.0931174374618, 761.4574899166164, 1142.1862348749228, 1522.914979833231, 1903.6437247915383, 97.45009074897393, 124.29213923332188, 124.29213929924133, 186.43820894886198, 186.4382090021193, 186.4382089843669, 186.43820897549065, 188.52325885028026, +84, 88.79554656314417, 167.90299692818854, 169.30818856781886, 253.96228285172825, 253.9622829242743, 253.96228290009233, 253.9622828880013, 256.8024948222756, 88.79554656314428, 177.4135019621349, 363.34664248640684, 545.01996372961, 726.6932849728146, 746.9478908826245, 746.9478908470626, 755.301455359634, 88.79554656314428, 177.4135019621349, 363.34664248640684, 545.01996372961, 726.6932849728146, 746.9478908826245, 746.9478908470626, 755.301455359634, 88.79554656314428, 177.4135019621349, 355.1821862525767, 532.773279378865, 710.3643725051534, 1083.1719527734144, 1092.6672293768477, 1106.6676923929358, 88.79554656314428, 177.4135019621349, 355.18218625257714, 532.7732793788659, 710.3643725051543, 1065.546558757731, 1420.7287450103104, 1816.7332124320346, 88.79554656314428, 177.4135019621349, 355.18218625257714, 532.7732793788659, 710.3643725051543, 1065.546558757731, 1420.7287450103067, 1775.9109312628862, 90.8366606216016, 124.49131505737114, 124.49131512339623, 186.73697268509432, 186.73697273843698, 186.73697272065613, 186.73697271176565, 188.8253638399085, +85, 82.40890688671152, 168.1746749070819, 169.5790676886695, 254.36860153300424, 254.36860160566636, 254.3686015814457, 254.36860156933534, 257.21335760817004, 82.40890688671163, 164.65299589373103, 336.892921976917, 505.33938296537553, 673.785843953835, 748.1429458277815, 748.1429457921627, 756.5098753181471, 82.40890688671163, 164.65299589373103, 336.892921976917, 505.33938296537553, 673.785843953835, 748.1429458277815, 748.1429457921627, 756.5098753181471, 82.40890688671163, 164.65299589373103, 329.6356275468461, 494.4534413202691, 659.2712550936922, 1010.678765930752, 1094.4192249172531, 1108.438269316149, 82.40890688671163, 164.65299589373103, 329.63562754684654, 494.4534413202696, 659.2712550936931, 988.9068826405382, 1318.5425101873861, 1684.4646098845878, 82.40890688671163, 164.65299589373103, 329.63562754684654, 494.4534413202696, 659.2712550936931, 988.9068826405382, 1318.5425101873843, 1648.1781377342322, 84.22323049422914, 124.6904908814204, 124.69049094755113, 187.03573642132667, 187.03573647475469, 187.0357364569454, 187.03573644804067, 189.12746882953678, +86, 76.02226721027876, 155.06438107090003, 169.8499468095202, 254.77492021428023, 254.77492028705842, 254.77492026279907, 254.77492025066937, 257.6242203940645, 76.02226721027898, 151.89248982532717, 310.43920146742767, 465.65880220114104, 620.8784029348553, 749.3380007729385, 749.3380007372627, 757.7182952766601, 76.02226721027898, 151.89248982532717, 310.43920146742767, 465.65880220114104, 620.8784029348553, 749.3380007729385, 749.3380007372627, 757.7182952766601, 76.02226721027898, 151.89248982532717, 304.089068841115, 456.13360326167276, 608.178137682231, 931.317604402283, 1096.1712204576588, 1110.2088462393624, 76.02226721027898, 151.89248982532717, 304.08906884111593, 456.13360326167367, 608.1781376822319, 912.2672065233464, 1216.3562753644637, 1552.1960073371392, 76.02226721027898, 151.89248982532717, 304.08906884111593, 456.13360326167367, 608.1781376822319, 912.2672065233464, 1216.35627536446, 1520.4453442055783, 77.6098003668568, 124.88966670546966, 124.88966677170603, 187.334500157559, 187.33450021107237, 187.33450019323462, 187.3345001843157, 189.42957381916503, +87, 69.6356275338461, 141.8507476817001, 170.12082593037084, 255.18123889555622, 255.1812389684505, 255.18123894415243, 255.1812389320034, 258.0350831799589, 69.63562753384622, 139.13198375692332, 283.98548095793785, 425.97822143690655, 567.9709619158766, 750.5330557180954, 750.5330556823628, 758.9267152351731, 69.63562753384622, 139.13198375692332, 283.98548095793785, 425.97822143690655, 567.9709619158766, 750.5330557180954, 750.5330556823628, 758.9267152351731, 69.63562753384622, 139.13198375692332, 278.5425101353844, 417.8137652030764, 557.0850202707688, 851.956442873814, 1097.9232159980643, 1111.9794231625756, 69.63562753384622, 139.13198375692332, 278.5425101353849, 417.8137652030773, 557.0850202707697, 835.6275304061546, 1114.1700405415413, 1419.9274047896906, 69.63562753384622, 139.13198375692332, 278.5425101353849, 417.8137652030773, 557.0850202707697, 835.6275304061537, 1114.1700405415377, 1392.7125506769244, 70.99637023948435, 125.08884252951893, 125.08884259586092, 187.63326389379137, 187.63326394739005, 187.63326392952385, 187.6332639205907, 189.73167880879328, +88, 63.248987857413454, 128.6371142925002, 170.3917050512215, 255.5875575768322, 255.58755764984252, 255.5875576255058, 255.58755761333742, 258.44594596585335, 63.24898785741357, 126.37147768851946, 257.53176044844804, 386.29764067267206, 515.063520896897, 751.7281106632524, 751.7281106274629, 760.1351351936862, 63.24898785741357, 126.37147768851946, 257.53176044844804, 386.29764067267206, 515.063520896897, 751.7281106632524, 751.7281106274629, 760.1351351936862, 63.24898785741357, 126.37147768851946, 252.99595142965381, 379.4939271444805, 505.99190285930763, 772.595281345345, 1030.1270417937922, 1113.750000085789, 63.24898785741357, 126.37147768851946, 252.99595142965427, 379.49392714448095, 505.99190285930854, 758.9878542889619, 1011.9838057186171, 1287.658802242242, 63.24898785741357, 126.37147768851946, 252.99595142965427, 379.49392714448095, 505.99190285930854, 758.9878542889619, 1011.9838057186153, 1264.9797571482704, 64.3829401121119, 125.28801835356819, 125.28801842001582, 187.9320276300237, 187.93202768370776, 187.9320276658131, 187.93202765686573, 190.03378379842155, +89, 56.86234818098069, 115.42348090330006, 170.66258417207217, 255.9938762581082, 255.9938763312346, 255.99387630685916, 255.99387629467145, 258.85680875174774, 56.862348180980916, 113.6109716201156, 231.07803993895868, 346.61705990843757, 462.15607987791736, 726.842105299499, 752.923165572563, 761.3435551521992, 56.862348180980916, 113.6109716201156, 231.07803993895868, 346.61705990843757, 462.15607987791736, 726.842105299499, 752.923165572563, 761.3435551521992, 56.862348180980916, 113.6109716201156, 227.44939272392276, 341.17408908588413, 454.8987854478464, 693.234119816876, 924.3121597558329, 1115.5205770090022, 56.862348180980916, 113.6109716201156, 227.44939272392367, 341.17408908588504, 454.89878544784733, 682.3481781717692, 909.7975708956947, 1155.3901996947934, 56.862348180980916, 113.6109716201156, 227.44939272392367, 341.17408908588504, 454.89878544784733, 682.3481781717692, 909.797570895691, 1137.2469636196165, 57.76950998473956, 121.01921048391682, 125.48719424417072, 188.23079136625606, 188.23079142002544, 188.23079140210234, 188.23079139314075, 190.3358887880498, +90, 50.47570850454804, 102.20984751410015, 170.93346329292282, 256.40019493938416, 256.4001950126266, 256.40019498821255, 256.4001949760055, 259.2676715376422, 50.47570850454815, 100.85046555171175, 204.62431942946887, 306.9364791442031, 409.24863885893865, 664.2105263489993, 754.1182205176631, 762.5519751107123, 50.47570850454815, 100.85046555171175, 204.62431942946887, 306.9364791442031, 409.24863885893865, 664.2105263489993, 754.1182205176631, 762.5519751107123, 50.47570850454815, 100.85046555171175, 201.90283401819215, 302.8542510272882, 403.8056680363843, 613.8729582884071, 818.4972777178755, 1107.0175439150007, 50.47570850454815, 100.85046555171175, 201.9028340181926, 302.8542510272887, 403.8056680363852, 605.7085020545774, 807.6113360727722, 1023.1215971473466, 50.47570850454815, 100.85046555171175, 201.9028340181926, 302.8542510272887, 403.8056680363852, 605.7085020545774, 807.6113360727686, 1009.5141700909626, 51.156079857367104, 110.59105259283353, 125.68637006832562, 188.5295551024884, 188.52955515634312, 188.52955513839157, 188.52955512941577, 190.63799377767808, +91, 44.08906882811539, 88.9962141249, 171.20434241377347, 256.80651362066016, 256.8065136940187, 256.8065136695659, 256.8065136573395, 259.6785343235366, 44.0890688281155, 88.0899594833079, 178.17059891997906, 267.2558983799686, 356.341197839959, 601.5789473984996, 755.3132754627632, 763.7603950692253, 44.0890688281155, 88.0899594833079, 178.17059891997906, 267.2558983799686, 356.341197839959, 601.5789473984996, 755.3132754627632, 763.7603950692253, 44.0890688281155, 88.0899594833079, 176.35627531246155, 264.53441296869187, 352.7125506249231, 534.5117967599381, 712.6823956799162, 1002.6315789975015, 44.0890688281155, 88.0899594833079, 176.356275312462, 264.5344129686928, 352.712550624924, 529.0688259373856, 705.425101249848, 890.852994599898, 44.0890688281155, 88.0899594833079, 176.356275312462, 264.5344129686928, 352.712550624924, 529.0688259373846, 705.4251012498462, 881.7813765623087, 44.542649729994764, 100.16289470175013, 125.88554589248051, 188.82831883872075, 188.8283188926608, 188.82831887468083, 188.8283188656908, 190.94009876730632, +92, 37.70242915168262, 75.7825807357001, 171.47522153462415, 257.21283230193615, 257.21283237541076, 257.21283235091926, 257.21283233867354, 260.08939710943105, 37.70242915168285, 75.32945341490404, 151.7168784104897, 227.5753176157341, 303.4337568209794, 538.9473684479999, 718.5964912640002, 764.9688150277384, 37.70242915168285, 75.32945341490404, 151.7168784104897, 227.5753176157341, 303.4337568209794, 538.9473684479999, 718.5964912640002, 764.9688150277384, 37.70242915168285, 75.32945341490404, 150.8097166067305, 226.21457491009596, 301.6194332134619, 455.1506352314691, 606.8675136419588, 898.2456140800005, 37.70242915168285, 75.32945341490404, 150.8097166067314, 226.21457491009642, 301.6194332134628, 452.42914982019283, 603.2388664269256, 758.5843920524494, 37.70242915168285, 75.32945341490404, 150.8097166067314, 226.21457491009642, 301.6194332134628, 452.42914982019283, 603.238866426922, 754.0485830336547, 37.92921960262231, 89.73473681066685, 126.08472171663541, 189.12708257495308, 189.1270826289785, 189.12708261097006, 189.1270826019658, 191.2422037569346, +93, 31.31578947524997, 62.56894734650018, 158.7719298324996, 238.1578947487501, 257.6191510568028, 257.6191510322726, 257.61915102000756, 260.5002598953255, 31.315789475250085, 62.56894734650018, 125.26315790099989, 187.8947368514996, 250.52631580200068, 476.3157894974993, 635.0877193300003, 766.1772349862514, 31.315789475250085, 62.56894734650018, 125.26315790099989, 187.8947368514996, 250.52631580200068, 476.3157894974993, 635.0877193300003, 766.1772349862514, 31.315789475250085, 62.56894734650018, 125.26315790099989, 187.8947368514996, 250.52631580199977, 375.7894737030001, 501.05263160399954, 793.8596491625012, 31.315789475250085, 62.56894734650018, 125.26315790100034, 187.8947368515005, 250.52631580200068, 375.7894737030001, 501.05263160400136, 626.3157895050008, 31.315789475250085, 62.56894734650018, 125.26315790100034, 187.8947368515005, 250.52631580200068, 375.7894737030001, 501.05263160399954, 626.3157895050008, 31.31578947524997, 79.30657891958356, 126.2838975407903, 189.42584631118544, 189.4258463652962, 189.42584634725932, 189.42584633824083, 191.54430874656285, +94, 27.293233084071403, 54.53187968014265, 137.89473684899963, 206.84210527349978, 258.0254697381949, 258.025469713626, 258.02546970134154, 260.9111226812199, 27.293233084071403, 54.53187968014265, 109.17293233628561, 163.75939850442865, 218.34586467257122, 413.68421054699957, 551.5789473960003, 689.473684245002, 27.293233084071403, 54.53187968014265, 109.17293233628561, 163.75939850442865, 218.34586467257122, 413.68421054699957, 551.5789473960003, 689.473684245002, 27.293233084071403, 54.53187968014265, 109.17293233628561, 163.75939850442865, 218.34586467257122, 327.5187970088573, 436.69172934514245, 689.473684245002, 27.293233084071403, 54.53187968014265, 109.17293233628561, 163.75939850442865, 218.34586467257122, 327.5187970088573, 436.69172934514245, 545.8646616814276, 27.293233084071403, 54.53187968014265, 109.17293233628561, 163.75939850442865, 218.34586467257122, 327.5187970088573, 436.69172934514245, 545.8646616814276, 27.293233084071403, 68.87842102850016, 126.4830733649452, 189.7246100474178, 189.72461010161388, 189.72461008354855, 189.72461007451582, 191.84641373619112, +95, 23.270676692892835, 46.49481201378558, 117.01754386549965, 175.52631579824993, 234.0350877310011, 258.4317883949794, 258.43178838267556, 261.32198546711436, 23.270676692892835, 46.49481201378558, 93.08270677157134, 139.62406015735723, 186.16541354314268, 351.05263159649985, 468.0701754620004, 585.0877193275028, 23.270676692892835, 46.49481201378558, 93.08270677157134, 139.62406015735723, 186.16541354314268, 351.05263159649985, 468.0701754620004, 585.0877193275028, 23.270676692892835, 46.49481201378558, 93.08270677157134, 139.62406015735723, 186.16541354314268, 279.24812031471447, 372.33082708628535, 585.087719327501, 23.270676692892835, 46.49481201378558, 93.08270677157134, 139.62406015735723, 186.16541354314268, 279.24812031471447, 372.33082708628535, 465.41353385785624, 23.270676692892835, 46.49481201378558, 93.08270677157134, 139.62406015735723, 186.16541354314268, 279.24812031471447, 372.33082708628535, 465.41353385785624, 23.270676692892835, 58.45026313741687, 117.0175438655001, 175.52631579825038, 190.02337383793156, 190.0233738198378, 190.02337381079084, 192.14851872581937, +96, 19.248120301714266, 38.45774434742839, 96.14035088199967, 144.21052632300007, 192.2807017640007, 258.83810707633273, 258.8381070640096, 261.7328482530088, 19.248120301714266, 38.45774434742839, 76.99248120685706, 115.48872181028582, 153.98496241371413, 288.4210526459992, 384.5614035279996, 480.70175441000174, 19.248120301714266, 38.45774434742839, 76.99248120685706, 115.48872181028582, 153.98496241371413, 288.4210526459992, 384.5614035279996, 480.70175441000174, 19.248120301714266, 38.45774434742839, 76.99248120685706, 115.48872181028582, 153.98496241371413, 230.97744362057165, 307.96992482742826, 480.70175441000174, 19.248120301714266, 38.45774434742839, 76.99248120685706, 115.48872181028582, 153.98496241371413, 230.97744362057165, 307.96992482742826, 384.96240603428487, 19.248120301714266, 38.45774434742839, 76.99248120685706, 115.48872181028582, 153.98496241371413, 230.97744362057165, 307.96992482742826, 384.96240603428487, 19.248120301714266, 48.02210524633347, 96.1403508819999, 144.21052632300007, 190.32213757424927, 190.32213755612702, 190.32213754706586, 192.45062371544765, +97, 15.225563910535698, 30.4206766810712, 75.26315789849968, 112.89473684775021, 150.52631579700073, 225.7894736954995, 259.2444257453436, 262.14371103890323, 15.225563910535698, 30.4206766810712, 60.90225564214279, 91.35338346321441, 121.80451128428558, 225.7894736954995, 301.05263159399965, 376.3157894925025, 15.225563910535698, 30.4206766810712, 60.90225564214279, 91.35338346321441, 121.80451128428558, 225.7894736954995, 301.05263159399965, 376.3157894925025, 15.225563910535698, 30.4206766810712, 60.90225564214279, 91.35338346321441, 121.80451128428558, 182.70676692642883, 243.60902256857116, 376.3157894925007, 15.225563910535698, 30.4206766810712, 60.90225564214279, 91.35338346321441, 121.80451128428558, 182.70676692642883, 243.60902256857116, 304.5112782107135, 15.225563910535698, 30.4206766810712, 60.90225564214279, 91.35338346321441, 121.80451128428558, 182.70676692642883, 243.60902256857116, 304.5112782107135, 15.225563910535698, 37.59394735525018, 75.26315789849991, 112.89473684775021, 150.52631579700028, 190.62090129241628, 190.62090128334088, 192.7527287050759, +98, 11.20300751935713, 22.383609014714125, 54.385964914999704, 81.57894737250035, 108.77192983000077, 163.1578947449998, 217.54385965999882, 262.55457382479767, 11.20300751935713, 22.383609014714125, 44.81203007742852, 67.218045116143, 89.62406015485703, 163.1578947449998, 217.54385965999973, 271.9298245750033, 11.20300751935713, 22.383609014714125, 44.81203007742852, 67.218045116143, 89.62406015485703, 163.1578947449998, 217.54385965999973, 271.9298245750033, 11.20300751935713, 22.383609014714125, 44.81203007742852, 67.218045116143, 89.62406015485703, 134.436090232286, 179.24812030971407, 271.9298245750015, 11.20300751935713, 22.383609014714125, 44.81203007742852, 67.218045116143, 89.62406015485703, 134.436090232286, 179.24812030971407, 224.06015038714213, 11.20300751935713, 22.383609014714125, 44.81203007742852, 67.218045116143, 89.62406015485703, 134.436090232286, 179.24812030971407, 224.06015038714213, 11.20300751935713, 27.16578946416689, 54.38596491499993, 81.57894737250035, 108.77192983000032, 163.1578947449998, 190.9196650196159, 193.05483369470414, +99, 7.180451128178561, 14.346541348356936, 33.50877193149972, 50.26315789725004, 67.01754386300036, 100.52631579450008, 134.0350877259989, 167.54385965750043, 7.180451128178561, 14.346541348356936, 28.721804512714243, 43.08270676907159, 57.443609025428486, 100.52631579449917, 134.0350877260007, 167.54385965750225, 7.180451128178561, 14.346541348356936, 28.721804512714243, 43.08270676907159, 57.443609025428486, 100.52631579449917, 134.0350877260007, 167.54385965750225, 7.180451128178561, 14.346541348356936, 28.721804512714243, 43.08270676907159, 57.443609025428486, 86.16541353814318, 114.88721805085697, 167.54385965750043, 7.180451128178561, 14.346541348356936, 28.721804512714243, 43.08270676907159, 57.443609025428486, 86.16541353814318, 114.88721805085697, 143.60902256357076, 7.180451128178561, 14.346541348356936, 28.721804512714243, 43.08270676907159, 57.443609025428486, 86.16541353814318, 114.88721805085697, 143.60902256357076, 7.180451128178561, 16.73763157308349, 33.50877193149972, 50.26315789725004, 67.01754386300036, 100.52631579450008, 134.0350877260007, 167.54385965750225, +100, 3.1578947369999923, 6.309473681999862, 12.63157894799997, 18.94736842200018, 25.26315789600085, 37.89473684400036, 50.52631579199988, 63.15789474000121, 3.1578947369999923, 6.309473681999862, 12.63157894799997, 18.94736842200018, 25.26315789599994, 37.89473684399945, 50.52631579199988, 63.15789474000303, 3.1578947369999923, 6.309473681999862, 12.63157894799997, 18.94736842200018, 25.26315789599994, 37.89473684399945, 50.52631579199988, 63.15789474000303, 3.1578947369999923, 6.309473681999862, 12.63157894799997, 18.94736842200018, 25.26315789599994, 37.89473684400036, 50.52631579199988, 63.15789474000121, 3.1578947369999923, 6.309473681999862, 12.63157894799997, 18.94736842200018, 25.26315789599994, 37.89473684400036, 50.52631579199988, 63.15789473999939, 3.1578947369999923, 6.309473681999862, 12.63157894799997, 18.94736842200018, 25.26315789599994, 37.89473684400036, 50.52631579199988, 63.15789473999939, 3.1578947369999923, 6.309473682000089, 12.63157894799997, 18.94736842200018, 25.26315789600085, 37.89473684400036, 50.52631579199988, 63.15789474000121, diff --git a/source/pev_charge_profile_factory/generate_charge_profiles/archives/output/dcfc_code.txt b/source/pev_charge_profile_factory/generate_charge_profiles/archives/output/dcfc_code.txt new file mode 100644 index 0000000..e1586dd --- /dev/null +++ b/source/pev_charge_profile_factory/generate_charge_profiles/archives/output/dcfc_code.txt @@ -0,0 +1,551 @@ +else if(SE_enum == xfc_150 && EV_enum == ld_50kWh) +{ + P2_vs_soc_segments.push_back({-0.1, 3.0, 5.617623090661083, 124.64587923089042}); + P2_vs_soc_segments.push_back({3.0, 10.0, 1.4433547003052354, 137.16868440195796}); + P2_vs_soc_segments.push_back({10.0, 71.46359084873505, 0.28079783503165895, 148.79425305469374}); + P2_vs_soc_segments.push_back({71.46359084873505, 93.0, -6.38663967643269, 625.2732793834901}); + P2_vs_soc_segments.push_back({93.0, 100.1, -4.02255639117857, 405.413533854857}); + zero_slope_threashold_P2_vs_soc = 0.2527180515284931; + // min_non_zero_slope = 0.28079783503165895 +} +else if(SE_enum == xfc_150 && EV_enum == ld_100kWh) +{ + P2_vs_soc_segments.push_back({-0.1, 3.0, 5.019868538599169, 122.38229534071229}); + P2_vs_soc_segments.push_back({3.0, 4.0, 3.0600411622216184, 128.26177746984493}); + P2_vs_soc_segments.push_back({4.0, 10.0, 1.216147395224588, 135.63735253783307}); + P2_vs_soc_segments.push_back({10.0, 85.0076631195378, 0.2716779788933731, 145.0820467011452}); + P2_vs_soc_segments.push_back({85.0076631195378, 93.0, -13.213633389200002, 1291.4368525421003}); + P2_vs_soc_segments.push_back({93.0, 100.1, -8.037067666357142, 810.016240317714}); + zero_slope_threashold_P2_vs_soc = 0.2445101810040358; + // min_non_zero_slope = 0.2716779788933731 +} +else if(SE_enum == xfc_150 && EV_enum == md_200kWh) +{ + P2_vs_soc_segments.push_back({-0.1, 4.0, 4.4642626723420005, 124.99935482557609}); + P2_vs_soc_segments.push_back({4.0, 10.0, 1.0677880183209867, 138.58525344166014}); + P2_vs_soc_segments.push_back({10.0, 92.38650810537449, 0.27087912085065996, 146.55434241636343}); + P2_vs_soc_segments.push_back({92.38650810537449, 100.1, -20.877192983499974, 2100.350877297997}); + zero_slope_threashold_P2_vs_soc = 0.24379120876559396; + // min_non_zero_slope = 0.27087912085065996 +} +else if(SE_enum == xfc_150 && EV_enum == hd_300kWh) +{ + P2_vs_soc_segments.push_back({-0.1, 4.0, 6.696394008513, 187.49903223836412}); + P2_vs_soc_segments.push_back({4.0, 10.0, 1.6016820274814798, 207.87788016249021}); + P2_vs_soc_segments.push_back({10.0, 92.38650810537449, 0.4063186812759899, 219.8315136245451}); + P2_vs_soc_segments.push_back({92.38650810537449, 100.1, -31.315789475249957, 3150.526315946996}); + zero_slope_threashold_P2_vs_soc = 0.3656868131483909; + // min_non_zero_slope = 0.4063186812759899 +} +else if(SE_enum == xfc_150 && EV_enum == hd_400kWh) +{ + P2_vs_soc_segments.push_back({-0.1, 4.0, 6.696394010425876, 187.4990322919245}); + P2_vs_soc_segments.push_back({4.0, 10.0, 1.6016820279390087, 207.87788022187195}); + P2_vs_soc_segments.push_back({10.0, 94.42134030035675, 0.4063186813920575, 219.83151368734147}); + P2_vs_soc_segments.push_back({94.42134030035675, 100.1, -41.75438596700008, 4200.701754596009}); + zero_slope_threashold_P2_vs_soc = 0.3656868132528518; + // min_non_zero_slope = 0.4063186813920575 +} +else if(SE_enum == xfc_150 && EV_enum == hd_600kWh) +{ + P2_vs_soc_segments.push_back({-0.1, 4.0, 6.696394009788252, 187.49903227407106}); + P2_vs_soc_segments.push_back({4.0, 10.0, 1.601682027786505, 207.87788020207802}); + P2_vs_soc_segments.push_back({10.0, 96.46928826437762, 0.40631868135336796, 219.83151366640942}); + P2_vs_soc_segments.push_back({96.46928826437762, 100.1, -62.63157895049987, 6301.052631893987}); + zero_slope_threashold_P2_vs_soc = 0.36568681321803115; + // min_non_zero_slope = 0.40631868135336796 +} +else if(SE_enum == xfc_150 && EV_enum == hd_800kWh) +{ + P2_vs_soc_segments.push_back({-0.1, 4.0, 6.696394009469443, 187.49903226514434}); + P2_vs_soc_segments.push_back({4.0, 10.0, 1.6016820277102406, 207.87788019218115}); + P2_vs_soc_segments.push_back({10.0, 97.49822035038136, 0.4063186813340238, 219.83151365594333}); + P2_vs_soc_segments.push_back({97.49822035038136, 100.1, -83.50877193399954, 8401.403509191954}); + zero_slope_threashold_P2_vs_soc = 0.36568681320062146; + // min_non_zero_slope = 0.4063186813340238 +} +else if(SE_enum == xfc_150 && EV_enum == hd_1000kWh) +{ + P2_vs_soc_segments.push_back({-0.1, 4.0, 6.771283784305358, 189.59594596054998}); + P2_vs_soc_segments.push_back({4.0, 10.0, 1.6195945947193486, 210.20270271889402}); + P2_vs_soc_segments.push_back({10.0, 98.08946120751611, 0.41086278589443354, 222.29002080714318}); + P2_vs_soc_segments.push_back({98.08946120751611, 100.1, -104.3859649175005, 10501.75438649005}); + zero_slope_threashold_P2_vs_soc = 0.3697765073049902; + // min_non_zero_slope = 0.41086278589443354 +} +else if(SE_enum == xfc_350 && EV_enum == ld_50kWh) +{ + P2_vs_soc_segments.push_back({-0.1, 3.0, 6.2649122810149995, 141.74736842814}); + P2_vs_soc_segments.push_back({3.0, 10.0, 1.6368421053449982, 155.63157895515002}); + P2_vs_soc_segments.push_back({10.0, 68.08256207172734, 0.31772853187184213, 168.82271468988156}); + P2_vs_soc_segments.push_back({68.08256207172734, 93.0, -6.386639676432694, 625.2732793834906}); + P2_vs_soc_segments.push_back({93.0, 100.1, -4.02255639117857, 405.413533854857}); + zero_slope_threashold_P2_vs_soc = 0.28595567868465793; + // min_non_zero_slope = 0.31772853187184213 +} +else if(SE_enum == xfc_350 && EV_enum == ld_100kWh) +{ + P2_vs_soc_segments.push_back({-0.1, 3.0, 12.51729473245665, 283.21124200604}); + P2_vs_soc_segments.push_back({3.0, 10.0, 3.2704105251700035, 310.95189462789995}); + P2_vs_soc_segments.push_back({10.0, 68.08256207172734, 0.6348216064257896, 337.3077838153421}); + P2_vs_soc_segments.push_back({68.08256207172734, 93.0, -12.76050606840385, 1249.2960117080581}); + P2_vs_soc_segments.push_back({93.0, 100.1, -8.037067666357142, 810.016240317714}); + zero_slope_threashold_P2_vs_soc = 0.5713394457832106; + // min_non_zero_slope = 0.6348216064257896 +} +else if(SE_enum == xfc_350 && EV_enum == md_200kWh) +{ + P2_vs_soc_segments.push_back({-0.1, 3.0, 16.525567949819884, 351.65195242759415}); + P2_vs_soc_segments.push_back({3.0, 4.0, 4.548794221567978, 387.58227361234987}); + P2_vs_soc_segments.push_back({4.0, 10.0, 4.047197486223866, 389.58866055372636}); + P2_vs_soc_segments.push_back({10.0, 79.37589851129248, 0.8015852284950763, 422.04478313101424}); + P2_vs_soc_segments.push_back({79.37589851129248, 93.0, -26.453720509489646, 2585.459165283537}); + P2_vs_soc_segments.push_back({93.0, 100.1, -16.09022556471428, 1621.654135419428}); + zero_slope_threashold_P2_vs_soc = 0.7214267056455687; + // min_non_zero_slope = 0.8015852284950763 +} +else if(SE_enum == xfc_350 && EV_enum == hd_300kWh) +{ + P2_vs_soc_segments.push_back({-0.1, 3.0, 24.78835192472982, 527.4779286413913}); + P2_vs_soc_segments.push_back({3.0, 4.0, 6.823191332351967, 581.3734104185248}); + P2_vs_soc_segments.push_back({4.0, 10.0, 6.070796229335799, 584.3829908305895}); + P2_vs_soc_segments.push_back({10.0, 79.37589851129248, 1.2023778427426144, 633.0671746965213}); + P2_vs_soc_segments.push_back({79.37589851129248, 93.0, -39.68058076423447, 3878.1887479253055}); + P2_vs_soc_segments.push_back({93.0, 100.1, -24.13533834707142, 2432.481203129142}); + zero_slope_threashold_P2_vs_soc = 1.082140058468353; + // min_non_zero_slope = 1.2023778427426144 +} +else if(SE_enum == xfc_350 && EV_enum == hd_400kWh) +{ + P2_vs_soc_segments.push_back({-0.1, 3.0, 22.9111589508695, 536.3200340480914}); + P2_vs_soc_segments.push_back({3.0, 4.0, 11.56755223272807, 570.3508542025157}); + P2_vs_soc_segments.push_back({4.0, 10.0, 5.569543098642392, 594.3428907388584}); + P2_vs_soc_segments.push_back({10.0, 83.77597648720116, 1.1996787877576258, 638.0415338477061}); + P2_vs_soc_segments.push_back({83.77597648720116, 93.0, -52.90744101897933, 5170.918330567078}); + P2_vs_soc_segments.push_back({93.0, 100.1, -32.18045112942856, 3243.308270838856}); + zero_slope_threashold_P2_vs_soc = 1.0797109089818633; + // min_non_zero_slope = 1.1996787877576258 +} +else if(SE_enum == xfc_350 && EV_enum == hd_600kWh) +{ + P2_vs_soc_segments.push_back({-0.1, 4.0, 19.695276499377215, 551.467741982562}); + P2_vs_soc_segments.push_back({4.0, 10.0, 4.710829493489699, 611.405530006112}); + P2_vs_soc_segments.push_back({10.0, 88.59137653488752, 1.1950549451569656, 646.5632754894394}); + P2_vs_soc_segments.push_back({88.59137653488752, 100.1, -62.63157895050001, 6301.052631894}); + zero_slope_threashold_P2_vs_soc = 1.075549450641269; + // min_non_zero_slope = 1.1950549451569656 +} +else if(SE_enum == xfc_350 && EV_enum == hd_800kWh) +{ + P2_vs_soc_segments.push_back({-0.1, 4.0, 19.695276498439537, 551.4677419563069}); + P2_vs_soc_segments.push_back({4.0, 10.0, 4.710829493265419, 611.4055299770034}); + P2_vs_soc_segments.push_back({10.0, 91.55241881576407, 1.1950549451000696, 646.5632754586568}); + P2_vs_soc_segments.push_back({91.55241881576407, 100.1, -83.50877193400005, 8401.403509192005}); + zero_slope_threashold_P2_vs_soc = 1.0755494505900627; + // min_non_zero_slope = 1.1950549451000696 +} +else if(SE_enum == xfc_350 && EV_enum == hd_1000kWh) +{ + P2_vs_soc_segments.push_back({-0.1, 4.0, 19.915540542074574, 557.6351351780881}); + P2_vs_soc_segments.push_back({4.0, 10.0, 4.763513513880435, 618.2432432908647}); + P2_vs_soc_segments.push_back({10.0, 93.26215801350378, 1.20841995851304, 653.7941788445387}); + P2_vs_soc_segments.push_back({93.26215801350378, 100.1, -104.38596491750005, 10501.754386490007}); + zero_slope_threashold_P2_vs_soc = 1.087577962661736; + // min_non_zero_slope = 1.20841995851304 +} +else if(SE_enum == xfc_500kW && EV_enum == ld_50kWh) +{ + P2_vs_soc_segments.push_back({-0.1, 3.0, 6.2649122810149995, 141.74736842814}); + P2_vs_soc_segments.push_back({3.0, 10.0, 1.6368421053449982, 155.63157895515002}); + P2_vs_soc_segments.push_back({10.0, 68.08256207172734, 0.31772853187184213, 168.82271468988156}); + P2_vs_soc_segments.push_back({68.08256207172734, 93.0, -6.386639676432694, 625.2732793834906}); + P2_vs_soc_segments.push_back({93.0, 100.1, -4.02255639117857, 405.413533854857}); + zero_slope_threashold_P2_vs_soc = 0.28595567868465793; + // min_non_zero_slope = 0.31772853187184213 +} +else if(SE_enum == xfc_500kW && EV_enum == ld_100kWh) +{ + P2_vs_soc_segments.push_back({-0.1, 3.0, 12.51729473245665, 283.21124200604}); + P2_vs_soc_segments.push_back({3.0, 10.0, 3.2704105251700035, 310.95189462789995}); + P2_vs_soc_segments.push_back({10.0, 68.08256207172734, 0.6348216064257896, 337.3077838153421}); + P2_vs_soc_segments.push_back({68.08256207172734, 93.0, -12.76050606840385, 1249.2960117080581}); + P2_vs_soc_segments.push_back({93.0, 100.1, -8.037067666357142, 810.016240317714}); + zero_slope_threashold_P2_vs_soc = 0.5713394457832106; + // min_non_zero_slope = 0.6348216064257896 +} +else if(SE_enum == xfc_500kW && EV_enum == md_200kWh) +{ + P2_vs_soc_segments.push_back({-0.1, 3.0, 16.525567949819884, 351.65195242759415}); + P2_vs_soc_segments.push_back({3.0, 4.0, 4.548794221567978, 387.58227361234987}); + P2_vs_soc_segments.push_back({4.0, 10.0, 4.047197486223866, 389.58866055372636}); + P2_vs_soc_segments.push_back({10.0, 79.37589851129248, 0.8015852284950763, 422.04478313101424}); + P2_vs_soc_segments.push_back({79.37589851129248, 93.0, -26.453720509489646, 2585.459165283537}); + P2_vs_soc_segments.push_back({93.0, 100.1, -16.09022556471428, 1621.654135419428}); + zero_slope_threashold_P2_vs_soc = 0.7214267056455687; + // min_non_zero_slope = 0.8015852284950763 +} +else if(SE_enum == xfc_500kW && EV_enum == hd_300kWh) +{ + P2_vs_soc_segments.push_back({-0.1, 3.0, 24.78835192472982, 527.4779286413913}); + P2_vs_soc_segments.push_back({3.0, 4.0, 6.823191332351967, 581.3734104185248}); + P2_vs_soc_segments.push_back({4.0, 10.0, 6.070796229335799, 584.3829908305895}); + P2_vs_soc_segments.push_back({10.0, 79.37589851129248, 1.2023778427426144, 633.0671746965213}); + P2_vs_soc_segments.push_back({79.37589851129248, 93.0, -39.68058076423447, 3878.1887479253055}); + P2_vs_soc_segments.push_back({93.0, 100.1, -24.13533834707142, 2432.481203129142}); + zero_slope_threashold_P2_vs_soc = 1.082140058468353; + // min_non_zero_slope = 1.2023778427426144 +} +else if(SE_enum == xfc_500kW && EV_enum == hd_400kWh) +{ + P2_vs_soc_segments.push_back({-0.1, 3.0, 22.9111589508695, 536.3200340480914}); + P2_vs_soc_segments.push_back({3.0, 4.0, 11.56755223272807, 570.3508542025157}); + P2_vs_soc_segments.push_back({4.0, 10.0, 5.569543098642392, 594.3428907388584}); + P2_vs_soc_segments.push_back({10.0, 83.77597648720116, 1.1996787877576258, 638.0415338477061}); + P2_vs_soc_segments.push_back({83.77597648720116, 93.0, -52.90744101897933, 5170.918330567078}); + P2_vs_soc_segments.push_back({93.0, 100.1, -32.18045112942856, 3243.308270838856}); + zero_slope_threashold_P2_vs_soc = 1.0797109089818633; + // min_non_zero_slope = 1.1996787877576258 +} +else if(SE_enum == xfc_500kW && EV_enum == hd_600kWh) +{ + P2_vs_soc_segments.push_back({-0.1, 4.0, 19.695276499377215, 551.467741982562}); + P2_vs_soc_segments.push_back({4.0, 10.0, 4.710829493489699, 611.405530006112}); + P2_vs_soc_segments.push_back({10.0, 88.59137653488752, 1.1950549451569656, 646.5632754894394}); + P2_vs_soc_segments.push_back({88.59137653488752, 100.1, -62.63157895050001, 6301.052631894}); + zero_slope_threashold_P2_vs_soc = 1.075549450641269; + // min_non_zero_slope = 1.1950549451569656 +} +else if(SE_enum == xfc_500kW && EV_enum == hd_800kWh) +{ + P2_vs_soc_segments.push_back({-0.1, 4.0, 19.695276498439537, 551.4677419563069}); + P2_vs_soc_segments.push_back({4.0, 10.0, 4.710829493265419, 611.4055299770034}); + P2_vs_soc_segments.push_back({10.0, 91.55241881576407, 1.1950549451000696, 646.5632754586568}); + P2_vs_soc_segments.push_back({91.55241881576407, 100.1, -83.50877193400005, 8401.403509192005}); + zero_slope_threashold_P2_vs_soc = 1.0755494505900627; + // min_non_zero_slope = 1.1950549451000696 +} +else if(SE_enum == xfc_500kW && EV_enum == hd_1000kWh) +{ + P2_vs_soc_segments.push_back({-0.1, 4.0, 19.915540542074574, 557.6351351780881}); + P2_vs_soc_segments.push_back({4.0, 10.0, 4.763513513880435, 618.2432432908647}); + P2_vs_soc_segments.push_back({10.0, 93.26215801350378, 1.20841995851304, 653.7941788445387}); + P2_vs_soc_segments.push_back({93.26215801350378, 100.1, -104.38596491750005, 10501.754386490007}); + zero_slope_threashold_P2_vs_soc = 1.087577962661736; + // min_non_zero_slope = 1.20841995851304 +} +else if(SE_enum == xfc_1000kW && EV_enum == ld_50kWh) +{ + P2_vs_soc_segments.push_back({-0.1, 3.0, 6.2649122810149995, 141.74736842814}); + P2_vs_soc_segments.push_back({3.0, 10.0, 1.6368421053449982, 155.63157895515002}); + P2_vs_soc_segments.push_back({10.0, 68.08256207172734, 0.31772853187184213, 168.82271468988156}); + P2_vs_soc_segments.push_back({68.08256207172734, 93.0, -6.386639676432694, 625.2732793834906}); + P2_vs_soc_segments.push_back({93.0, 100.1, -4.02255639117857, 405.413533854857}); + zero_slope_threashold_P2_vs_soc = 0.28595567868465793; + // min_non_zero_slope = 0.31772853187184213 +} +else if(SE_enum == xfc_1000kW && EV_enum == ld_100kWh) +{ + P2_vs_soc_segments.push_back({-0.1, 3.0, 12.51729473245665, 283.21124200604}); + P2_vs_soc_segments.push_back({3.0, 10.0, 3.2704105251700035, 310.95189462789995}); + P2_vs_soc_segments.push_back({10.0, 68.08256207172734, 0.6348216064257896, 337.3077838153421}); + P2_vs_soc_segments.push_back({68.08256207172734, 93.0, -12.76050606840385, 1249.2960117080581}); + P2_vs_soc_segments.push_back({93.0, 100.1, -8.037067666357142, 810.016240317714}); + zero_slope_threashold_P2_vs_soc = 0.5713394457832106; + // min_non_zero_slope = 0.6348216064257896 +} +else if(SE_enum == xfc_1000kW && EV_enum == md_200kWh) +{ + P2_vs_soc_segments.push_back({-0.1, 3.0, 24.143511712364646, 542.7849693228944}); + P2_vs_soc_segments.push_back({3.0, 10.0, 6.273517022205756, 596.3949533933711}); + P2_vs_soc_segments.push_back({10.0, 69.27462598528474, 1.2186444564972314, 646.9436790504564}); + P2_vs_soc_segments.push_back({69.27462598528474, 93.0, -25.54655870573077, 2501.0931175339615}); + P2_vs_soc_segments.push_back({93.0, 100.1, -16.09022556471428, 1621.654135419428}); + zero_slope_threashold_P2_vs_soc = 1.0967800108475083; + // min_non_zero_slope = 1.2186444564972314 +} +else if(SE_enum == xfc_1000kW && EV_enum == hd_300kWh) +{ + P2_vs_soc_segments.push_back({-0.1, 3.0, 36.21526756854697, 814.1774539843416}); + P2_vs_soc_segments.push_back({3.0, 10.0, 9.410275533308633, 894.5924300900566}); + P2_vs_soc_segments.push_back({10.0, 69.27462598528474, 1.8279666847458471, 970.4155185756845}); + P2_vs_soc_segments.push_back({69.27462598528474, 93.0, -38.319838058596154, 3751.639676300942}); + P2_vs_soc_segments.push_back({93.0, 100.1, -24.13533834707142, 2432.481203129142}); + zero_slope_threashold_P2_vs_soc = 1.6451700162712624; + // min_non_zero_slope = 1.8279666847458471 +} +else if(SE_enum == xfc_1000kW && EV_enum == hd_400kWh) +{ + P2_vs_soc_segments.push_back({-0.1, 3.0, 36.63632021013128, 777.7564016147287}); + P2_vs_soc_segments.push_back({3.0, 10.0, 9.064410874621704, 860.4721296212574}); + P2_vs_soc_segments.push_back({10.0, 76.96478054467563, 1.7725650232628638, 933.3905881348459}); + P2_vs_soc_segments.push_back({76.96478054467563, 93.0, -51.09311741146153, 5002.186235067922}); + P2_vs_soc_segments.push_back({93.0, 100.1, -32.18045112942856, 3243.308270838856}); + zero_slope_threashold_P2_vs_soc = 1.5953085209365774; + // min_non_zero_slope = 1.7725650232628638 +} +else if(SE_enum == xfc_1000kW && EV_enum == hd_600kWh) +{ + P2_vs_soc_segments.push_back({-0.1, 3.0, 33.308124827399, 787.0469348700666}); + P2_vs_soc_segments.push_back({3.0, 4.0, 17.609192570054, 834.1437316421017}); + P2_vs_soc_segments.push_back({4.0, 10.0, 8.090720110980348, 872.2176214783962}); + P2_vs_soc_segments.push_back({10.0, 84.08466589019737, 1.757393651151549, 935.5508860766843}); + P2_vs_soc_segments.push_back({84.08466589019737, 93.0, -79.36116152846905, 7756.377495850622}); + P2_vs_soc_segments.push_back({93.0, 100.1, -48.27067669414284, 4864.962406258284}); + zero_slope_threashold_P2_vs_soc = 1.5816542860363942; + // min_non_zero_slope = 1.757393651151549 +} +else if(SE_enum == xfc_1000kW && EV_enum == hd_800kWh) +{ + P2_vs_soc_segments.push_back({-0.1, 3.0, 29.553738860176978, 804.7311453623216}); + P2_vs_soc_segments.push_back({3.0, 4.0, 27.09791437555665, 812.0986188161826}); + P2_vs_soc_segments.push_back({4.0, 10.0, 7.088213844737678, 892.1374209394584}); + P2_vs_soc_segments.push_back({10.0, 87.35344251585242, 1.751995540405572, 945.4996039827796}); + P2_vs_soc_segments.push_back({87.35344251585242, 93.0, -105.81488203795847, 10341.836661134137}); + P2_vs_soc_segments.push_back({93.0, 100.1, -64.36090225885712, 6486.616541677712}); + zero_slope_threashold_P2_vs_soc = 1.576795986365015; + // min_non_zero_slope = 1.751995540405572 +} +else if(SE_enum == xfc_1000kW && EV_enum == hd_1000kWh) +{ + P2_vs_soc_segments.push_back({-0.1, 4.0, 29.18025000224768, 817.0470000629349}); + P2_vs_soc_segments.push_back({4.0, 10.0, 6.979500000537595, 905.8500000697752}); + P2_vs_soc_segments.push_back({10.0, 89.9032220733732, 1.7705769232133064, 957.939230843018}); + P2_vs_soc_segments.push_back({89.9032220733732, 100.1, -104.3859649175, 10501.754386490002}); + zero_slope_threashold_P2_vs_soc = 1.593519230891976; + // min_non_zero_slope = 1.7705769232133064 +} +else if(SE_enum == xfc_2000kW && EV_enum == ld_50kWh) +{ + P2_vs_soc_segments.push_back({-0.1, 3.0, 6.2649122810149995, 141.74736842814}); + P2_vs_soc_segments.push_back({3.0, 10.0, 1.6368421053449982, 155.63157895515002}); + P2_vs_soc_segments.push_back({10.0, 68.08256207172734, 0.31772853187184213, 168.82271468988156}); + P2_vs_soc_segments.push_back({68.08256207172734, 93.0, -6.386639676432694, 625.2732793834906}); + P2_vs_soc_segments.push_back({93.0, 100.1, -4.02255639117857, 405.413533854857}); + zero_slope_threashold_P2_vs_soc = 0.28595567868465793; + // min_non_zero_slope = 0.31772853187184213 +} +else if(SE_enum == xfc_2000kW && EV_enum == ld_100kWh) +{ + P2_vs_soc_segments.push_back({-0.1, 3.0, 12.51729473245665, 283.21124200604}); + P2_vs_soc_segments.push_back({3.0, 10.0, 3.2704105251700035, 310.95189462789995}); + P2_vs_soc_segments.push_back({10.0, 68.08256207172734, 0.6348216064257896, 337.3077838153421}); + P2_vs_soc_segments.push_back({68.08256207172734, 93.0, -12.76050606840385, 1249.2960117080581}); + P2_vs_soc_segments.push_back({93.0, 100.1, -8.037067666357142, 810.016240317714}); + zero_slope_threashold_P2_vs_soc = 0.5713394457832106; + // min_non_zero_slope = 0.6348216064257896 +} +else if(SE_enum == xfc_2000kW && EV_enum == md_200kWh) +{ + P2_vs_soc_segments.push_back({-0.1, 3.0, 25.059649124059966, 566.98947371256}); + P2_vs_soc_segments.push_back({3.0, 10.0, 6.547368421380007, 622.5263158205998}); + P2_vs_soc_segments.push_back({10.0, 68.08256207172734, 1.2709141274873685, 675.2908587595263}); + P2_vs_soc_segments.push_back({68.08256207172734, 93.0, -25.546558705730774, 2501.0931175339624}); + P2_vs_soc_segments.push_back({93.0, 100.1, -16.09022556471428, 1621.654135419428}); + zero_slope_threashold_P2_vs_soc = 1.1438227147386317; + // min_non_zero_slope = 1.2709141274873685 +} +else if(SE_enum == xfc_2000kW && EV_enum == hd_300kWh) +{ + P2_vs_soc_segments.push_back({-0.1, 3.0, 37.589473686089946, 850.4842105688399}); + P2_vs_soc_segments.push_back({3.0, 10.0, 9.82105263207001, 933.7894737308998}); + P2_vs_soc_segments.push_back({10.0, 68.08256207172734, 1.9063711912310528, 1012.9362881392893}); + P2_vs_soc_segments.push_back({68.08256207172734, 93.0, -38.31983805859616, 3751.6396763009434}); + P2_vs_soc_segments.push_back({93.0, 100.1, -24.13533834707142, 2432.481203129142}); + zero_slope_threashold_P2_vs_soc = 1.7157340721079475; + // min_non_zero_slope = 1.9063711912310528 +} +else if(SE_enum == xfc_2000kW && EV_enum == hd_400kWh) +{ + P2_vs_soc_segments.push_back({-0.1, 3.0, 50.11929824811993, 1133.97894742512}); + P2_vs_soc_segments.push_back({3.0, 10.0, 13.094736842760014, 1245.0526316411997}); + P2_vs_soc_segments.push_back({10.0, 68.08256207172734, 2.541828254974737, 1350.5817175190525}); + P2_vs_soc_segments.push_back({68.08256207172734, 93.0, -51.09311741146155, 5002.186235067925}); + P2_vs_soc_segments.push_back({93.0, 100.1, -32.18045112942856, 3243.308270838856}); + zero_slope_threashold_P2_vs_soc = 2.2876454294772635; + // min_non_zero_slope = 2.541828254974737 +} +else if(SE_enum == xfc_2000kW && EV_enum == hd_600kWh) +{ + P2_vs_soc_segments.push_back({-0.1, 3.0, 72.50049185041229, 1630.2031760919858}); + P2_vs_soc_segments.push_back({3.0, 10.0, 18.841462497128997, 1791.1802641518357}); + P2_vs_soc_segments.push_back({10.0, 69.24422604132654, 3.6599247078455552, 1942.9956420446701}); + P2_vs_soc_segments.push_back({69.24422604132654, 93.0, -76.63967611719227, 7503.279352601881}); + P2_vs_soc_segments.push_back({93.0, 100.1, -48.27067669414284, 4864.962406258284}); + zero_slope_threashold_P2_vs_soc = 3.2939322370609996; + // min_non_zero_slope = 3.6599247078455552 +} +else if(SE_enum == xfc_2000kW && EV_enum == hd_800kWh) +{ + P2_vs_soc_segments.push_back({-0.1, 3.0, 73.34259711028085, 1557.361070737169}); + P2_vs_soc_segments.push_back({3.0, 10.0, 18.149733172790338, 1722.9396625496406}); + P2_vs_soc_segments.push_back({10.0, 76.94140334485147, 3.5491213835502085, 1868.9457804420417}); + P2_vs_soc_segments.push_back({76.94140334485147, 93.0, -102.18623482292311, 10004.372470135851}); + P2_vs_soc_segments.push_back({93.0, 100.1, -64.36090225885712, 6486.616541677712}); + zero_slope_threashold_P2_vs_soc = 3.1942092451951876; + // min_non_zero_slope = 3.5491213835502085 +} +else if(SE_enum == xfc_2000kW && EV_enum == hd_1000kWh) +{ + P2_vs_soc_segments.push_back({-0.1, 3.0, 71.4577773537474, 1574.312573169373}); + P2_vs_soc_segments.push_back({3.0, 4.0, 25.464850039162634, 1712.2913551131273}); + P2_vs_soc_segments.push_back({4.0, 10.0, 17.45464452354518, 1744.332177175597}); + P2_vs_soc_segments.push_back({10.0, 81.30667131540051, 3.5634451397963116, 1883.2441710130859}); + P2_vs_soc_segments.push_back({81.30667131540051, 93.0, -132.2686025474482, 12927.295826417685}); + P2_vs_soc_segments.push_back({93.0, 100.1, -80.45112782357143, 8108.270677097142}); + zero_slope_threashold_P2_vs_soc = 3.2071006258166803; + // min_non_zero_slope = 3.5634451397963116 +} +else if(SE_enum == xfc_3000kW && EV_enum == ld_50kWh) +{ + P2_vs_soc_segments.push_back({-0.1, 3.0, 6.2649122810149995, 141.74736842814}); + P2_vs_soc_segments.push_back({3.0, 10.0, 1.6368421053449982, 155.63157895515002}); + P2_vs_soc_segments.push_back({10.0, 68.08256207172734, 0.31772853187184213, 168.82271468988156}); + P2_vs_soc_segments.push_back({68.08256207172734, 93.0, -6.386639676432694, 625.2732793834906}); + P2_vs_soc_segments.push_back({93.0, 100.1, -4.02255639117857, 405.413533854857}); + zero_slope_threashold_P2_vs_soc = 0.28595567868465793; + // min_non_zero_slope = 0.31772853187184213 +} +else if(SE_enum == xfc_3000kW && EV_enum == ld_100kWh) +{ + P2_vs_soc_segments.push_back({-0.1, 3.0, 12.51729473245665, 283.21124200604}); + P2_vs_soc_segments.push_back({3.0, 10.0, 3.2704105251700035, 310.95189462789995}); + P2_vs_soc_segments.push_back({10.0, 68.08256207172734, 0.6348216064257896, 337.3077838153421}); + P2_vs_soc_segments.push_back({68.08256207172734, 93.0, -12.76050606840385, 1249.2960117080581}); + P2_vs_soc_segments.push_back({93.0, 100.1, -8.037067666357142, 810.016240317714}); + zero_slope_threashold_P2_vs_soc = 0.5713394457832106; + // min_non_zero_slope = 0.6348216064257896 +} +else if(SE_enum == xfc_3000kW && EV_enum == md_200kWh) +{ + P2_vs_soc_segments.push_back({-0.1, 3.0, 25.059649124059966, 566.98947371256}); + P2_vs_soc_segments.push_back({3.0, 10.0, 6.547368421380007, 622.5263158205998}); + P2_vs_soc_segments.push_back({10.0, 68.08256207172734, 1.2709141274873685, 675.2908587595263}); + P2_vs_soc_segments.push_back({68.08256207172734, 93.0, -25.546558705730774, 2501.0931175339624}); + P2_vs_soc_segments.push_back({93.0, 100.1, -16.09022556471428, 1621.654135419428}); + zero_slope_threashold_P2_vs_soc = 1.1438227147386317; + // min_non_zero_slope = 1.2709141274873685 +} +else if(SE_enum == xfc_3000kW && EV_enum == hd_300kWh) +{ + P2_vs_soc_segments.push_back({-0.1, 3.0, 37.589473686089946, 850.4842105688399}); + P2_vs_soc_segments.push_back({3.0, 10.0, 9.82105263207001, 933.7894737308998}); + P2_vs_soc_segments.push_back({10.0, 68.08256207172734, 1.9063711912310528, 1012.9362881392893}); + P2_vs_soc_segments.push_back({68.08256207172734, 93.0, -38.31983805859616, 3751.6396763009434}); + P2_vs_soc_segments.push_back({93.0, 100.1, -24.13533834707142, 2432.481203129142}); + zero_slope_threashold_P2_vs_soc = 1.7157340721079475; + // min_non_zero_slope = 1.9063711912310528 +} +else if(SE_enum == xfc_3000kW && EV_enum == hd_400kWh) +{ + P2_vs_soc_segments.push_back({-0.1, 3.0, 50.11929824811993, 1133.97894742512}); + P2_vs_soc_segments.push_back({3.0, 10.0, 13.094736842760014, 1245.0526316411997}); + P2_vs_soc_segments.push_back({10.0, 68.08256207172734, 2.541828254974737, 1350.5817175190525}); + P2_vs_soc_segments.push_back({68.08256207172734, 93.0, -51.09311741146155, 5002.186235067925}); + P2_vs_soc_segments.push_back({93.0, 100.1, -32.18045112942856, 3243.308270838856}); + zero_slope_threashold_P2_vs_soc = 2.2876454294772635; + // min_non_zero_slope = 2.541828254974737 +} +else if(SE_enum == xfc_3000kW && EV_enum == hd_600kWh) +{ + P2_vs_soc_segments.push_back({-0.1, 3.0, 75.17894737217999, 1700.9684211376798}); + P2_vs_soc_segments.push_back({3.0, 10.0, 19.64210526413998, 1867.5789474618}); + P2_vs_soc_segments.push_back({10.0, 68.08256207172732, 3.8127423824621105, 2025.8725762785784}); + P2_vs_soc_segments.push_back({68.08256207172732, 93.0, -76.63967611719228, 7503.279352601882}); + P2_vs_soc_segments.push_back({93.0, 100.1, -48.27067669414284, 4864.962406258284}); + zero_slope_threashold_P2_vs_soc = 3.4314681442158994; + // min_non_zero_slope = 3.8127423824621105 +} +else if(SE_enum == xfc_3000kW && EV_enum == hd_800kWh) +{ + P2_vs_soc_segments.push_back({-0.1, 3.0, 100.23859649623999, 2267.9578948502403}); + P2_vs_soc_segments.push_back({3.0, 10.0, 26.18947368551997, 2490.1052632824003}); + P2_vs_soc_segments.push_back({10.0, 68.08256207172732, 5.083656509949474, 2701.1634350381055}); + P2_vs_soc_segments.push_back({68.08256207172732, 93.0, -102.18623482292308, 10004.372470135846}); + P2_vs_soc_segments.push_back({93.0, 100.1, -64.36090225885712, 6486.616541677712}); + zero_slope_threashold_P2_vs_soc = 4.575290858954527; + // min_non_zero_slope = 5.083656509949474 +} +else if(SE_enum == xfc_3000kW && EV_enum == hd_1000kWh) +{ + P2_vs_soc_segments.push_back({-0.1, 3.0, 108.59649123349998, 2393.6842106460003}); + P2_vs_soc_segments.push_back({3.0, 10.0, 27.744360903642843, 2636.2406016355717}); + P2_vs_soc_segments.push_back({10.0, 72.45155249679897, 5.401662050131588, 2859.667590170684}); + P2_vs_soc_segments.push_back({72.45155249679897, 93.0, -127.73279352865379, 12505.465587669803}); + P2_vs_soc_segments.push_back({93.0, 100.1, -80.45112782357143, 8108.270677097142}); + zero_slope_threashold_P2_vs_soc = 4.861495845118429; + // min_non_zero_slope = 5.401662050131588 +} +else if(SE_enum == dwc_100kW && EV_enum == ld_50kWh) +{ + P2_vs_soc_segments.push_back({-0.1, 3.0, 4.131391988613595, 87.91298812597856}); + P2_vs_soc_segments.push_back({3.0, 4.0, 1.137198555109764, 96.89556842649004}); + P2_vs_soc_segments.push_back({4.0, 10.0, 1.011799371844463, 97.39716515955125}); + P2_vs_soc_segments.push_back({10.0, 79.37589850730012, 0.20039630716987314, 105.51119580629715}); + P2_vs_soc_segments.push_back({79.37589850730012, 93.0, -6.613430127372406, 646.3647913208837}); + P2_vs_soc_segments.push_back({93.0, 100.1, -4.02255639117857, 405.413533854857}); + zero_slope_threashold_P2_vs_soc = 0.18035667645288583; + // min_non_zero_slope = 0.20039630716987314 +} +else if(SE_enum == dwc_100kW && EV_enum == ld_100kWh) +{ + P2_vs_soc_segments.push_back({-0.1, 4.0, 3.2825460808634848, 91.91129026417764}); + P2_vs_soc_segments.push_back({4.0, 10.0, 0.7851382483490266, 101.90092159423547}); + P2_vs_soc_segments.push_back({10.0, 88.5795762311163, 0.19917582404926223, 107.76054583723311}); + P2_vs_soc_segments.push_back({88.5795762311163, 100.1, -10.428157891083332, 1049.1252627903334}); + zero_slope_threashold_P2_vs_soc = 0.179258241644336; + // min_non_zero_slope = 0.19917582404926223 +} +else if(SE_enum == dwc_100kW && EV_enum == md_200kWh) +{ + P2_vs_soc_segments.push_back({-0.1, 4.0, 3.282546082604413, 91.9112903129236}); + P2_vs_soc_segments.push_back({4.0, 10.0, 0.7851382487654301, 101.90092164827954}); + P2_vs_soc_segments.push_back({10.0, 94.54144352797196, 0.19917582415489724, 107.76054589438486}); + P2_vs_soc_segments.push_back({94.54144352797196, 100.1, -20.877192983500027, 2100.3508772980026}); + zero_slope_threashold_P2_vs_soc = 0.17925824173940752; + // min_non_zero_slope = 0.19917582415489724 +} +else if(SE_enum == dwc_100kW && EV_enum == hd_300kWh) +{ + P2_vs_soc_segments.push_back({-0.1, 4.0, 4.923819123906619, 137.8669354693854}); + P2_vs_soc_segments.push_back({4.0, 10.0, 1.177707373148145, 152.8513824724193}); + P2_vs_soc_segments.push_back({10.0, 94.54144352797196, 0.29876373623234587, 161.64081884157727}); + P2_vs_soc_segments.push_back({94.54144352797196, 100.1, -31.315789475250035, 3150.5263159470037}); + zero_slope_threashold_P2_vs_soc = 0.2688873626091113; + // min_non_zero_slope = 0.29876373623234587 +} +else if(SE_enum == dwc_100kW && EV_enum == hd_400kWh) +{ + P2_vs_soc_segments.push_back({-0.1, 4.0, 4.9238191253131465, 137.866935508768}); + P2_vs_soc_segments.push_back({4.0, 10.0, 1.177707373484567, 152.8513825160823}); + P2_vs_soc_segments.push_back({10.0, 96.04657354332714, 0.2987637363176892, 161.6408188877511}); + P2_vs_soc_segments.push_back({96.04657354332714, 100.1, -41.754385966999884, 4200.701754595989}); + zero_slope_threashold_P2_vs_soc = 0.2688873626859203; + // min_non_zero_slope = 0.2987637363176892 +} +else if(SE_enum == dwc_100kW && EV_enum == hd_600kWh) +{ + P2_vs_soc_segments.push_back({-0.1, 4.0, 4.923819124844304, 137.8669354956405}); + P2_vs_soc_segments.push_back({4.0, 10.0, 1.1777073733724248, 152.851382501528}); + P2_vs_soc_segments.push_back({10.0, 97.5588492117089, 0.2987637362892414, 161.64081887235986}); + P2_vs_soc_segments.push_back({97.5588492117089, 100.1, -62.63157895049983, 6301.052631893983}); + zero_slope_threashold_P2_vs_soc = 0.26888736266031726; + // min_non_zero_slope = 0.2987637362892414 +} +else if(SE_enum == dwc_100kW && EV_enum == hd_800kWh) +{ + P2_vs_soc_segments.push_back({-0.1, 4.0, 4.923819124609884, 137.86693548907672}); + P2_vs_soc_segments.push_back({4.0, 10.0, 1.1777073733163548, 152.85138249425086}); + P2_vs_soc_segments.push_back({10.0, 98.31768258578957, 0.2987637362750174, 161.6408188646642}); + P2_vs_soc_segments.push_back({98.31768258578957, 100.1, -83.50877193400026, 8401.403509192027}); + zero_slope_threashold_P2_vs_soc = 0.26888736264751567; + // min_non_zero_slope = 0.2987637362750174 +} +else if(SE_enum == dwc_100kW && EV_enum == hd_1000kWh) +{ + P2_vs_soc_segments.push_back({-0.1, 4.0, 4.978885135518643, 139.40878379452204}); + P2_vs_soc_segments.push_back({4.0, 10.0, 1.1908783784701087, 154.56081082271618}); + P2_vs_soc_segments.push_back({10.0, 98.75342864712539, 0.30210498962826, 163.44854471113467}); + P2_vs_soc_segments.push_back({98.75342864712539, 100.1, -104.38596491749996, 10501.754386489998}); + zero_slope_threashold_P2_vs_soc = 0.271894490665434; + // min_non_zero_slope = 0.30210498962826 +} diff --git a/source/pev_charge_profile_factory/generate_charge_profiles/archives/output/dcfc_constraints.csv b/source/pev_charge_profile_factory/generate_charge_profiles/archives/output/dcfc_constraints.csv new file mode 100644 index 0000000..5a9f0b1 --- /dev/null +++ b/source/pev_charge_profile_factory/generate_charge_profiles/archives/output/dcfc_constraints.csv @@ -0,0 +1,392 @@ +EV,ld_50kWh +SE,xfc_150 +a,b +0.3838190153733452, 142.30508114974413 +-6.214806375342803, 612.1473065097462 + + +EV,ld_100kWh +SE,xfc_150 +a,b +0.33846809288095603, 139.956517846928 +-11.283423498498166, 1120.912969738063 + + +EV,md_200kWh +SE,xfc_150 +a,b +0.32383901401349924, 142.1200022256849 +-20.8771929835018, 2100.350877298166 + + +EV,hd_300kWh +SE,xfc_150 +a,b +0.5034479725903376, 211.73727422261084 +-31.315789475245992, 3150.5263159466267 + + +EV,hd_400kWh +SE,xfc_150 +a,b +0.49965137611331034, 211.8640459620138 +-41.75438596698655, 4200.7017545947165 + + +EV,hd_600kWh +SE,xfc_150 +a,b +0.49605515037035897, 211.98753196924494 +-62.63157895049426, 6301.052631893253 + + +EV,hd_800kWh +SE,xfc_150 +a,b +0.4943278345539328, 212.04808552247957 +-83.50877193389533, 8401.403509181691 + + +EV,hd_1000kWh +SE,xfc_150 +a,b +0.4993262048055147, 214.4152418325102 +-104.3859649174774, 10501.754386487883 + + +EV,ld_50kWh +SE,xfc_350 +a,b +0.4507583311672283, 160.9059852199924 +-6.257389869479674, 615.8114518987386 + + +EV,ld_100kWh +SE,xfc_350 +a,b +0.970656047458295, 317.67292845918024 +-12.504652955408176, 1230.5681891324011 + + +EV,md_200kWh +SE,xfc_350 +a,b +1.1591357869973713, 397.1802537320568 +-24.7487055257821, 2442.961665006922 + + +EV,hd_300kWh +SE,xfc_350 +a,b +1.7781252678326425, 593.3558900695136 +-37.123969381929214, 3664.5198342475996 + + +EV,hd_400kWh +SE,xfc_350 +a,b +1.6999030713893397, 601.188963587306 +-46.55439545864999, 4616.021524043492 + + +EV,hd_600kWh +SE,xfc_350 +a,b +1.6166921975685487, 613.6211484495791 +-62.63157895050267, 6301.052631894272 + + +EV,hd_800kWh +SE,xfc_350 +a,b +1.5944073350638792, 614.1686499883272 +-83.5087719339972, 8401.403509191761 + + +EV,hd_1000kWh +SE,xfc_350 +a,b +1.60076299731368, 621.2959639811877 +-104.38596491748922, 10501.754386489047 + + +EV,ld_50kWh +SE,xfc_500kW +a,b +0.4507583311672283, 160.9059852199924 +-6.257389869479674, 615.8114518987386 + + +EV,ld_100kWh +SE,xfc_500kW +a,b +0.970656047458295, 317.67292845918024 +-12.504652955408176, 1230.5681891324011 + + +EV,md_200kWh +SE,xfc_500kW +a,b +1.1591357869973713, 397.1802537320568 +-24.7487055257821, 2442.961665006922 + + +EV,hd_300kWh +SE,xfc_500kW +a,b +1.7781252678326425, 593.3558900695136 +-37.123969381929214, 3664.5198342475996 + + +EV,hd_400kWh +SE,xfc_500kW +a,b +1.6999030713893397, 601.188963587306 +-46.55439545864999, 4616.021524043492 + + +EV,hd_600kWh +SE,xfc_500kW +a,b +1.6166921975685487, 613.6211484495791 +-62.63157895050267, 6301.052631894272 + + +EV,hd_800kWh +SE,xfc_500kW +a,b +1.5944073350638792, 614.1686499883272 +-83.5087719339972, 8401.403509191761 + + +EV,hd_1000kWh +SE,xfc_500kW +a,b +1.60076299731368, 621.2959639811877 +-104.38596491748922, 10501.754386489047 + + +EV,ld_50kWh +SE,xfc_1000kW +a,b +0.4507583311672283, 160.9059852199924 +-6.257389869479674, 615.8114518987386 + + +EV,ld_100kWh +SE,xfc_1000kW +a,b +0.970656047458295, 317.67292845918024 +-12.504652955408176, 1230.5681891324011 + + +EV,md_200kWh +SE,xfc_1000kW +a,b +1.9288751752372129, 605.3201944785251 +-24.98380049087342, 2459.2679707606403 + + +EV,hd_300kWh +SE,xfc_1000kW +a,b +2.934718625603651, 906.0537298564684 +-37.47607649787227, 3688.9302223707164 + + +EV,hd_400kWh +SE,xfc_1000kW +a,b +2.7054381612153193, 871.9195598361531 +-48.722881056780125, 4809.14768053242 + + +EV,hd_600kWh +SE,xfc_1000kW +a,b +2.51258647919326, 879.9290322337347 +-69.36321082399832, 6880.592493193661 + + +EV,hd_800kWh +SE,xfc_1000kW +a,b +2.4107672172290897, 894.5509092820225 +-83.21613883405826, 8304.897917131282 + + +EV,hd_1000kWh +SE,xfc_1000kW +a,b +2.4088737234270923, 907.4621666791724 +-104.38596491749422, 10501.754386489396 + + +EV,ld_50kWh +SE,xfc_2000kW +a,b +0.4507583311672283, 160.9059852199924 +-6.257389869479674, 615.8114518987386 + + +EV,ld_100kWh +SE,xfc_2000kW +a,b +0.970656047458295, 317.67292845918024 +-12.504652955408176, 1230.5681891324011 + + +EV,md_200kWh +SE,xfc_2000kW +a,b +2.0341703395663515, 631.5151209706091 +-25.035583252898505, 2463.692045511156 + + +EV,hd_300kWh +SE,xfc_2000kW +a,b +3.092719102741171, 945.4099697860258 +-37.55372223395477, 3695.563795039805 + + +EV,hd_400kWh +SE,xfc_2000kW +a,b +4.146436606199401, 1259.5598818760973 +-50.071792041482865, 4927.430421122368 + + +EV,hd_600kWh +SE,xfc_2000kW +a,b +5.938867990101066, 1811.3877591644837 +-74.95684227771426, 7378.257601770827 + + +EV,hd_800kWh +SE,xfc_2000kW +a,b +5.474361960777841, 1742.8527987905227 +-97.45893990759578, 9619.4692557815 + + +EV,hd_1000kWh +SE,xfc_2000kW +a,b +5.292827753878868, 1761.687691982259 +-121.23595930728607, 11986.649660626135 + + +EV,ld_50kWh +SE,xfc_3000kW +a,b +0.4507583311672283, 160.9059852199924 +-6.257389869479674, 615.8114518987386 + + +EV,ld_100kWh +SE,xfc_3000kW +a,b +0.970656047458295, 317.67292845918024 +-12.504652955408176, 1230.5681891324011 + + +EV,md_200kWh +SE,xfc_3000kW +a,b +2.0341703395663515, 631.5151209706091 +-25.035583252898505, 2463.692045511156 + + +EV,hd_300kWh +SE,xfc_3000kW +a,b +3.092719102741171, 945.4099697860258 +-37.55372223395477, 3695.563795039805 + + +EV,hd_400kWh +SE,xfc_3000kW +a,b +4.146436606199401, 1259.5598818760973 +-50.071792041482865, 4927.430421122368 + + +EV,hd_600kWh +SE,xfc_3000kW +a,b +6.246288234993088, 1888.2121938886412 +-75.10786220010544, 7391.158529000095 + + +EV,hd_800kWh +SE,xfc_3000kW +a,b +8.341476126470226, 2517.069356010025 +-100.14389756844628, 9854.884060161872 + + +EV,hd_1000kWh +SE,xfc_3000kW +a,b +8.58053999499667, 2666.0729544555206 +-124.01403086249275, 12218.01410064222 + + +EV,ld_50kWh +SE,dwc_100kW +a,b +0.2524738616009765, 101.80086195431582 +-6.1832327947676475, 610.4055877227938 + + +EV,ld_100kWh +SE,dwc_100kW +a,b +0.23481176672048054, 104.90347655830557 +-10.428157891083174, 1049.125262790316 + + +EV,md_200kWh +SE,dwc_100kW +a,b +0.23048208121297398, 105.06518012978654 +-20.877192983503505, 2100.350877298333 + + +EV,hd_300kWh +SE,dwc_100kW +a,b +0.3576482923200923, 156.5890070457873 +-31.315789475249176, 3150.526315946903 + + +EV,hd_400kWh +SE,dwc_100kW +a,b +0.35590638830164645, 156.6527686259542 +-41.754385967029975, 4200.701754599024 + + +EV,hd_600kWh +SE,dwc_100kW +a,b +0.3542337535676663, 156.7151960642626 +-62.631578950444236, 6301.052631888655 + + +EV,hd_800kWh +SE,dwc_100kW +a,b +0.3534222905686506, 156.74592302552526 +-83.50877193370616, 8401.4035091626 + + +EV,hd_1000kWh +SE,dwc_100kW +a,b +0.35723828260493606, 158.48772160783224 +-104.38596491731369, 10501.754386471584 + + diff --git a/source/pev_charge_profile_factory/generate_charge_profiles/archives/output/dcfc_data.csv b/source/pev_charge_profile_factory/generate_charge_profiles/archives/output/dcfc_data.csv new file mode 100644 index 0000000..bfac83d --- /dev/null +++ b/source/pev_charge_profile_factory/generate_charge_profiles/archives/output/dcfc_data.csv @@ -0,0 +1,551 @@ +EV,ld_50kWh +SE,xfc_150 +soc_LB,soc_UB,a,b +-0.1, 3.0, 5.617623090661083, 124.64587923089042 +3.0, 10.0, 1.4433547003052354, 137.16868440195796 +10.0, 71.46359084873505, 0.28079783503165895, 148.79425305469374 +71.46359084873505, 93.0, -6.38663967643269, 625.2732793834901 +93.0, 100.1, -4.02255639117857, 405.413533854857 + + +EV,ld_100kWh +SE,xfc_150 +soc_LB,soc_UB,a,b +-0.1, 3.0, 5.019868538599169, 122.38229534071229 +3.0, 4.0, 3.0600411622216184, 128.26177746984493 +4.0, 10.0, 1.216147395224588, 135.63735253783307 +10.0, 85.0076631195378, 0.2716779788933731, 145.0820467011452 +85.0076631195378, 93.0, -13.213633389200002, 1291.4368525421003 +93.0, 100.1, -8.037067666357142, 810.016240317714 + + +EV,md_200kWh +SE,xfc_150 +soc_LB,soc_UB,a,b +-0.1, 4.0, 4.4642626723420005, 124.99935482557609 +4.0, 10.0, 1.0677880183209867, 138.58525344166014 +10.0, 92.38650810537449, 0.27087912085065996, 146.55434241636343 +92.38650810537449, 100.1, -20.877192983499974, 2100.350877297997 + + +EV,hd_300kWh +SE,xfc_150 +soc_LB,soc_UB,a,b +-0.1, 4.0, 6.696394008513, 187.49903223836412 +4.0, 10.0, 1.6016820274814798, 207.87788016249021 +10.0, 92.38650810537449, 0.4063186812759899, 219.8315136245451 +92.38650810537449, 100.1, -31.315789475249957, 3150.526315946996 + + +EV,hd_400kWh +SE,xfc_150 +soc_LB,soc_UB,a,b +-0.1, 4.0, 6.696394010425876, 187.4990322919245 +4.0, 10.0, 1.6016820279390087, 207.87788022187195 +10.0, 94.42134030035675, 0.4063186813920575, 219.83151368734147 +94.42134030035675, 100.1, -41.75438596700008, 4200.701754596009 + + +EV,hd_600kWh +SE,xfc_150 +soc_LB,soc_UB,a,b +-0.1, 4.0, 6.696394009788252, 187.49903227407106 +4.0, 10.0, 1.601682027786505, 207.87788020207802 +10.0, 96.46928826437762, 0.40631868135336796, 219.83151366640942 +96.46928826437762, 100.1, -62.63157895049987, 6301.052631893987 + + +EV,hd_800kWh +SE,xfc_150 +soc_LB,soc_UB,a,b +-0.1, 4.0, 6.696394009469443, 187.49903226514434 +4.0, 10.0, 1.6016820277102406, 207.87788019218115 +10.0, 97.49822035038136, 0.4063186813340238, 219.83151365594333 +97.49822035038136, 100.1, -83.50877193399954, 8401.403509191954 + + +EV,hd_1000kWh +SE,xfc_150 +soc_LB,soc_UB,a,b +-0.1, 4.0, 6.771283784305358, 189.59594596054998 +4.0, 10.0, 1.6195945947193486, 210.20270271889402 +10.0, 98.08946120751611, 0.41086278589443354, 222.29002080714318 +98.08946120751611, 100.1, -104.3859649175005, 10501.75438649005 + + +EV,ld_50kWh +SE,xfc_350 +soc_LB,soc_UB,a,b +-0.1, 3.0, 6.2649122810149995, 141.74736842814 +3.0, 10.0, 1.6368421053449982, 155.63157895515002 +10.0, 68.08256207172734, 0.31772853187184213, 168.82271468988156 +68.08256207172734, 93.0, -6.386639676432694, 625.2732793834906 +93.0, 100.1, -4.02255639117857, 405.413533854857 + + +EV,ld_100kWh +SE,xfc_350 +soc_LB,soc_UB,a,b +-0.1, 3.0, 12.51729473245665, 283.21124200604 +3.0, 10.0, 3.2704105251700035, 310.95189462789995 +10.0, 68.08256207172734, 0.6348216064257896, 337.3077838153421 +68.08256207172734, 93.0, -12.76050606840385, 1249.2960117080581 +93.0, 100.1, -8.037067666357142, 810.016240317714 + + +EV,md_200kWh +SE,xfc_350 +soc_LB,soc_UB,a,b +-0.1, 3.0, 16.525567949819884, 351.65195242759415 +3.0, 4.0, 4.548794221567978, 387.58227361234987 +4.0, 10.0, 4.047197486223866, 389.58866055372636 +10.0, 79.37589851129248, 0.8015852284950763, 422.04478313101424 +79.37589851129248, 93.0, -26.453720509489646, 2585.459165283537 +93.0, 100.1, -16.09022556471428, 1621.654135419428 + + +EV,hd_300kWh +SE,xfc_350 +soc_LB,soc_UB,a,b +-0.1, 3.0, 24.78835192472982, 527.4779286413913 +3.0, 4.0, 6.823191332351967, 581.3734104185248 +4.0, 10.0, 6.070796229335799, 584.3829908305895 +10.0, 79.37589851129248, 1.2023778427426144, 633.0671746965213 +79.37589851129248, 93.0, -39.68058076423447, 3878.1887479253055 +93.0, 100.1, -24.13533834707142, 2432.481203129142 + + +EV,hd_400kWh +SE,xfc_350 +soc_LB,soc_UB,a,b +-0.1, 3.0, 22.9111589508695, 536.3200340480914 +3.0, 4.0, 11.56755223272807, 570.3508542025157 +4.0, 10.0, 5.569543098642392, 594.3428907388584 +10.0, 83.77597648720116, 1.1996787877576258, 638.0415338477061 +83.77597648720116, 93.0, -52.90744101897933, 5170.918330567078 +93.0, 100.1, -32.18045112942856, 3243.308270838856 + + +EV,hd_600kWh +SE,xfc_350 +soc_LB,soc_UB,a,b +-0.1, 4.0, 19.695276499377215, 551.467741982562 +4.0, 10.0, 4.710829493489699, 611.405530006112 +10.0, 88.59137653488752, 1.1950549451569656, 646.5632754894394 +88.59137653488752, 100.1, -62.63157895050001, 6301.052631894 + + +EV,hd_800kWh +SE,xfc_350 +soc_LB,soc_UB,a,b +-0.1, 4.0, 19.695276498439537, 551.4677419563069 +4.0, 10.0, 4.710829493265419, 611.4055299770034 +10.0, 91.55241881576407, 1.1950549451000696, 646.5632754586568 +91.55241881576407, 100.1, -83.50877193400005, 8401.403509192005 + + +EV,hd_1000kWh +SE,xfc_350 +soc_LB,soc_UB,a,b +-0.1, 4.0, 19.915540542074574, 557.6351351780881 +4.0, 10.0, 4.763513513880435, 618.2432432908647 +10.0, 93.26215801350378, 1.20841995851304, 653.7941788445387 +93.26215801350378, 100.1, -104.38596491750005, 10501.754386490007 + + +EV,ld_50kWh +SE,xfc_500kW +soc_LB,soc_UB,a,b +-0.1, 3.0, 6.2649122810149995, 141.74736842814 +3.0, 10.0, 1.6368421053449982, 155.63157895515002 +10.0, 68.08256207172734, 0.31772853187184213, 168.82271468988156 +68.08256207172734, 93.0, -6.386639676432694, 625.2732793834906 +93.0, 100.1, -4.02255639117857, 405.413533854857 + + +EV,ld_100kWh +SE,xfc_500kW +soc_LB,soc_UB,a,b +-0.1, 3.0, 12.51729473245665, 283.21124200604 +3.0, 10.0, 3.2704105251700035, 310.95189462789995 +10.0, 68.08256207172734, 0.6348216064257896, 337.3077838153421 +68.08256207172734, 93.0, -12.76050606840385, 1249.2960117080581 +93.0, 100.1, -8.037067666357142, 810.016240317714 + + +EV,md_200kWh +SE,xfc_500kW +soc_LB,soc_UB,a,b +-0.1, 3.0, 16.525567949819884, 351.65195242759415 +3.0, 4.0, 4.548794221567978, 387.58227361234987 +4.0, 10.0, 4.047197486223866, 389.58866055372636 +10.0, 79.37589851129248, 0.8015852284950763, 422.04478313101424 +79.37589851129248, 93.0, -26.453720509489646, 2585.459165283537 +93.0, 100.1, -16.09022556471428, 1621.654135419428 + + +EV,hd_300kWh +SE,xfc_500kW +soc_LB,soc_UB,a,b +-0.1, 3.0, 24.78835192472982, 527.4779286413913 +3.0, 4.0, 6.823191332351967, 581.3734104185248 +4.0, 10.0, 6.070796229335799, 584.3829908305895 +10.0, 79.37589851129248, 1.2023778427426144, 633.0671746965213 +79.37589851129248, 93.0, -39.68058076423447, 3878.1887479253055 +93.0, 100.1, -24.13533834707142, 2432.481203129142 + + +EV,hd_400kWh +SE,xfc_500kW +soc_LB,soc_UB,a,b +-0.1, 3.0, 22.9111589508695, 536.3200340480914 +3.0, 4.0, 11.56755223272807, 570.3508542025157 +4.0, 10.0, 5.569543098642392, 594.3428907388584 +10.0, 83.77597648720116, 1.1996787877576258, 638.0415338477061 +83.77597648720116, 93.0, -52.90744101897933, 5170.918330567078 +93.0, 100.1, -32.18045112942856, 3243.308270838856 + + +EV,hd_600kWh +SE,xfc_500kW +soc_LB,soc_UB,a,b +-0.1, 4.0, 19.695276499377215, 551.467741982562 +4.0, 10.0, 4.710829493489699, 611.405530006112 +10.0, 88.59137653488752, 1.1950549451569656, 646.5632754894394 +88.59137653488752, 100.1, -62.63157895050001, 6301.052631894 + + +EV,hd_800kWh +SE,xfc_500kW +soc_LB,soc_UB,a,b +-0.1, 4.0, 19.695276498439537, 551.4677419563069 +4.0, 10.0, 4.710829493265419, 611.4055299770034 +10.0, 91.55241881576407, 1.1950549451000696, 646.5632754586568 +91.55241881576407, 100.1, -83.50877193400005, 8401.403509192005 + + +EV,hd_1000kWh +SE,xfc_500kW +soc_LB,soc_UB,a,b +-0.1, 4.0, 19.915540542074574, 557.6351351780881 +4.0, 10.0, 4.763513513880435, 618.2432432908647 +10.0, 93.26215801350378, 1.20841995851304, 653.7941788445387 +93.26215801350378, 100.1, -104.38596491750005, 10501.754386490007 + + +EV,ld_50kWh +SE,xfc_1000kW +soc_LB,soc_UB,a,b +-0.1, 3.0, 6.2649122810149995, 141.74736842814 +3.0, 10.0, 1.6368421053449982, 155.63157895515002 +10.0, 68.08256207172734, 0.31772853187184213, 168.82271468988156 +68.08256207172734, 93.0, -6.386639676432694, 625.2732793834906 +93.0, 100.1, -4.02255639117857, 405.413533854857 + + +EV,ld_100kWh +SE,xfc_1000kW +soc_LB,soc_UB,a,b +-0.1, 3.0, 12.51729473245665, 283.21124200604 +3.0, 10.0, 3.2704105251700035, 310.95189462789995 +10.0, 68.08256207172734, 0.6348216064257896, 337.3077838153421 +68.08256207172734, 93.0, -12.76050606840385, 1249.2960117080581 +93.0, 100.1, -8.037067666357142, 810.016240317714 + + +EV,md_200kWh +SE,xfc_1000kW +soc_LB,soc_UB,a,b +-0.1, 3.0, 24.143511712364646, 542.7849693228944 +3.0, 10.0, 6.273517022205756, 596.3949533933711 +10.0, 69.27462598528474, 1.2186444564972314, 646.9436790504564 +69.27462598528474, 93.0, -25.54655870573077, 2501.0931175339615 +93.0, 100.1, -16.09022556471428, 1621.654135419428 + + +EV,hd_300kWh +SE,xfc_1000kW +soc_LB,soc_UB,a,b +-0.1, 3.0, 36.21526756854697, 814.1774539843416 +3.0, 10.0, 9.410275533308633, 894.5924300900566 +10.0, 69.27462598528474, 1.8279666847458471, 970.4155185756845 +69.27462598528474, 93.0, -38.319838058596154, 3751.639676300942 +93.0, 100.1, -24.13533834707142, 2432.481203129142 + + +EV,hd_400kWh +SE,xfc_1000kW +soc_LB,soc_UB,a,b +-0.1, 3.0, 36.63632021013128, 777.7564016147287 +3.0, 10.0, 9.064410874621704, 860.4721296212574 +10.0, 76.96478054467563, 1.7725650232628638, 933.3905881348459 +76.96478054467563, 93.0, -51.09311741146153, 5002.186235067922 +93.0, 100.1, -32.18045112942856, 3243.308270838856 + + +EV,hd_600kWh +SE,xfc_1000kW +soc_LB,soc_UB,a,b +-0.1, 3.0, 33.308124827399, 787.0469348700666 +3.0, 4.0, 17.609192570054, 834.1437316421017 +4.0, 10.0, 8.090720110980348, 872.2176214783962 +10.0, 84.08466589019737, 1.757393651151549, 935.5508860766843 +84.08466589019737, 93.0, -79.36116152846905, 7756.377495850622 +93.0, 100.1, -48.27067669414284, 4864.962406258284 + + +EV,hd_800kWh +SE,xfc_1000kW +soc_LB,soc_UB,a,b +-0.1, 3.0, 29.553738860176978, 804.7311453623216 +3.0, 4.0, 27.09791437555665, 812.0986188161826 +4.0, 10.0, 7.088213844737678, 892.1374209394584 +10.0, 87.35344251585242, 1.751995540405572, 945.4996039827796 +87.35344251585242, 93.0, -105.81488203795847, 10341.836661134137 +93.0, 100.1, -64.36090225885712, 6486.616541677712 + + +EV,hd_1000kWh +SE,xfc_1000kW +soc_LB,soc_UB,a,b +-0.1, 4.0, 29.18025000224768, 817.0470000629349 +4.0, 10.0, 6.979500000537595, 905.8500000697752 +10.0, 89.9032220733732, 1.7705769232133064, 957.939230843018 +89.9032220733732, 100.1, -104.3859649175, 10501.754386490002 + + +EV,ld_50kWh +SE,xfc_2000kW +soc_LB,soc_UB,a,b +-0.1, 3.0, 6.2649122810149995, 141.74736842814 +3.0, 10.0, 1.6368421053449982, 155.63157895515002 +10.0, 68.08256207172734, 0.31772853187184213, 168.82271468988156 +68.08256207172734, 93.0, -6.386639676432694, 625.2732793834906 +93.0, 100.1, -4.02255639117857, 405.413533854857 + + +EV,ld_100kWh +SE,xfc_2000kW +soc_LB,soc_UB,a,b +-0.1, 3.0, 12.51729473245665, 283.21124200604 +3.0, 10.0, 3.2704105251700035, 310.95189462789995 +10.0, 68.08256207172734, 0.6348216064257896, 337.3077838153421 +68.08256207172734, 93.0, -12.76050606840385, 1249.2960117080581 +93.0, 100.1, -8.037067666357142, 810.016240317714 + + +EV,md_200kWh +SE,xfc_2000kW +soc_LB,soc_UB,a,b +-0.1, 3.0, 25.059649124059966, 566.98947371256 +3.0, 10.0, 6.547368421380007, 622.5263158205998 +10.0, 68.08256207172734, 1.2709141274873685, 675.2908587595263 +68.08256207172734, 93.0, -25.546558705730774, 2501.0931175339624 +93.0, 100.1, -16.09022556471428, 1621.654135419428 + + +EV,hd_300kWh +SE,xfc_2000kW +soc_LB,soc_UB,a,b +-0.1, 3.0, 37.589473686089946, 850.4842105688399 +3.0, 10.0, 9.82105263207001, 933.7894737308998 +10.0, 68.08256207172734, 1.9063711912310528, 1012.9362881392893 +68.08256207172734, 93.0, -38.31983805859616, 3751.6396763009434 +93.0, 100.1, -24.13533834707142, 2432.481203129142 + + +EV,hd_400kWh +SE,xfc_2000kW +soc_LB,soc_UB,a,b +-0.1, 3.0, 50.11929824811993, 1133.97894742512 +3.0, 10.0, 13.094736842760014, 1245.0526316411997 +10.0, 68.08256207172734, 2.541828254974737, 1350.5817175190525 +68.08256207172734, 93.0, -51.09311741146155, 5002.186235067925 +93.0, 100.1, -32.18045112942856, 3243.308270838856 + + +EV,hd_600kWh +SE,xfc_2000kW +soc_LB,soc_UB,a,b +-0.1, 3.0, 72.50049185041229, 1630.2031760919858 +3.0, 10.0, 18.841462497128997, 1791.1802641518357 +10.0, 69.24422604132654, 3.6599247078455552, 1942.9956420446701 +69.24422604132654, 93.0, -76.63967611719227, 7503.279352601881 +93.0, 100.1, -48.27067669414284, 4864.962406258284 + + +EV,hd_800kWh +SE,xfc_2000kW +soc_LB,soc_UB,a,b +-0.1, 3.0, 73.34259711028085, 1557.361070737169 +3.0, 10.0, 18.149733172790338, 1722.9396625496406 +10.0, 76.94140334485147, 3.5491213835502085, 1868.9457804420417 +76.94140334485147, 93.0, -102.18623482292311, 10004.372470135851 +93.0, 100.1, -64.36090225885712, 6486.616541677712 + + +EV,hd_1000kWh +SE,xfc_2000kW +soc_LB,soc_UB,a,b +-0.1, 3.0, 71.4577773537474, 1574.312573169373 +3.0, 4.0, 25.464850039162634, 1712.2913551131273 +4.0, 10.0, 17.45464452354518, 1744.332177175597 +10.0, 81.30667131540051, 3.5634451397963116, 1883.2441710130859 +81.30667131540051, 93.0, -132.2686025474482, 12927.295826417685 +93.0, 100.1, -80.45112782357143, 8108.270677097142 + + +EV,ld_50kWh +SE,xfc_3000kW +soc_LB,soc_UB,a,b +-0.1, 3.0, 6.2649122810149995, 141.74736842814 +3.0, 10.0, 1.6368421053449982, 155.63157895515002 +10.0, 68.08256207172734, 0.31772853187184213, 168.82271468988156 +68.08256207172734, 93.0, -6.386639676432694, 625.2732793834906 +93.0, 100.1, -4.02255639117857, 405.413533854857 + + +EV,ld_100kWh +SE,xfc_3000kW +soc_LB,soc_UB,a,b +-0.1, 3.0, 12.51729473245665, 283.21124200604 +3.0, 10.0, 3.2704105251700035, 310.95189462789995 +10.0, 68.08256207172734, 0.6348216064257896, 337.3077838153421 +68.08256207172734, 93.0, -12.76050606840385, 1249.2960117080581 +93.0, 100.1, -8.037067666357142, 810.016240317714 + + +EV,md_200kWh +SE,xfc_3000kW +soc_LB,soc_UB,a,b +-0.1, 3.0, 25.059649124059966, 566.98947371256 +3.0, 10.0, 6.547368421380007, 622.5263158205998 +10.0, 68.08256207172734, 1.2709141274873685, 675.2908587595263 +68.08256207172734, 93.0, -25.546558705730774, 2501.0931175339624 +93.0, 100.1, -16.09022556471428, 1621.654135419428 + + +EV,hd_300kWh +SE,xfc_3000kW +soc_LB,soc_UB,a,b +-0.1, 3.0, 37.589473686089946, 850.4842105688399 +3.0, 10.0, 9.82105263207001, 933.7894737308998 +10.0, 68.08256207172734, 1.9063711912310528, 1012.9362881392893 +68.08256207172734, 93.0, -38.31983805859616, 3751.6396763009434 +93.0, 100.1, -24.13533834707142, 2432.481203129142 + + +EV,hd_400kWh +SE,xfc_3000kW +soc_LB,soc_UB,a,b +-0.1, 3.0, 50.11929824811993, 1133.97894742512 +3.0, 10.0, 13.094736842760014, 1245.0526316411997 +10.0, 68.08256207172734, 2.541828254974737, 1350.5817175190525 +68.08256207172734, 93.0, -51.09311741146155, 5002.186235067925 +93.0, 100.1, -32.18045112942856, 3243.308270838856 + + +EV,hd_600kWh +SE,xfc_3000kW +soc_LB,soc_UB,a,b +-0.1, 3.0, 75.17894737217999, 1700.9684211376798 +3.0, 10.0, 19.64210526413998, 1867.5789474618 +10.0, 68.08256207172732, 3.8127423824621105, 2025.8725762785784 +68.08256207172732, 93.0, -76.63967611719228, 7503.279352601882 +93.0, 100.1, -48.27067669414284, 4864.962406258284 + + +EV,hd_800kWh +SE,xfc_3000kW +soc_LB,soc_UB,a,b +-0.1, 3.0, 100.23859649623999, 2267.9578948502403 +3.0, 10.0, 26.18947368551997, 2490.1052632824003 +10.0, 68.08256207172732, 5.083656509949474, 2701.1634350381055 +68.08256207172732, 93.0, -102.18623482292308, 10004.372470135846 +93.0, 100.1, -64.36090225885712, 6486.616541677712 + + +EV,hd_1000kWh +SE,xfc_3000kW +soc_LB,soc_UB,a,b +-0.1, 3.0, 108.59649123349998, 2393.6842106460003 +3.0, 10.0, 27.744360903642843, 2636.2406016355717 +10.0, 72.45155249679897, 5.401662050131588, 2859.667590170684 +72.45155249679897, 93.0, -127.73279352865379, 12505.465587669803 +93.0, 100.1, -80.45112782357143, 8108.270677097142 + + +EV,ld_50kWh +SE,dwc_100kW +soc_LB,soc_UB,a,b +-0.1, 3.0, 4.131391988613595, 87.91298812597856 +3.0, 4.0, 1.137198555109764, 96.89556842649004 +4.0, 10.0, 1.011799371844463, 97.39716515955125 +10.0, 79.37589850730012, 0.20039630716987314, 105.51119580629715 +79.37589850730012, 93.0, -6.613430127372406, 646.3647913208837 +93.0, 100.1, -4.02255639117857, 405.413533854857 + + +EV,ld_100kWh +SE,dwc_100kW +soc_LB,soc_UB,a,b +-0.1, 4.0, 3.2825460808634848, 91.91129026417764 +4.0, 10.0, 0.7851382483490266, 101.90092159423547 +10.0, 88.5795762311163, 0.19917582404926223, 107.76054583723311 +88.5795762311163, 100.1, -10.428157891083332, 1049.1252627903334 + + +EV,md_200kWh +SE,dwc_100kW +soc_LB,soc_UB,a,b +-0.1, 4.0, 3.282546082604413, 91.9112903129236 +4.0, 10.0, 0.7851382487654301, 101.90092164827954 +10.0, 94.54144352797196, 0.19917582415489724, 107.76054589438486 +94.54144352797196, 100.1, -20.877192983500027, 2100.3508772980026 + + +EV,hd_300kWh +SE,dwc_100kW +soc_LB,soc_UB,a,b +-0.1, 4.0, 4.923819123906619, 137.8669354693854 +4.0, 10.0, 1.177707373148145, 152.8513824724193 +10.0, 94.54144352797196, 0.29876373623234587, 161.64081884157727 +94.54144352797196, 100.1, -31.315789475250035, 3150.5263159470037 + + +EV,hd_400kWh +SE,dwc_100kW +soc_LB,soc_UB,a,b +-0.1, 4.0, 4.9238191253131465, 137.866935508768 +4.0, 10.0, 1.177707373484567, 152.8513825160823 +10.0, 96.04657354332714, 0.2987637363176892, 161.6408188877511 +96.04657354332714, 100.1, -41.754385966999884, 4200.701754595989 + + +EV,hd_600kWh +SE,dwc_100kW +soc_LB,soc_UB,a,b +-0.1, 4.0, 4.923819124844304, 137.8669354956405 +4.0, 10.0, 1.1777073733724248, 152.851382501528 +10.0, 97.5588492117089, 0.2987637362892414, 161.64081887235986 +97.5588492117089, 100.1, -62.63157895049983, 6301.052631893983 + + +EV,hd_800kWh +SE,dwc_100kW +soc_LB,soc_UB,a,b +-0.1, 4.0, 4.923819124609884, 137.86693548907672 +4.0, 10.0, 1.1777073733163548, 152.85138249425086 +10.0, 98.31768258578957, 0.2987637362750174, 161.6408188646642 +98.31768258578957, 100.1, -83.50877193400026, 8401.403509192027 + + +EV,hd_1000kWh +SE,dwc_100kW +soc_LB,soc_UB,a,b +-0.1, 4.0, 4.978885135518643, 139.40878379452204 +4.0, 10.0, 1.1908783784701087, 154.56081082271618 +10.0, 98.75342864712539, 0.30210498962826, 163.44854471113467 +98.75342864712539, 100.1, -104.38596491749996, 10501.754386489998 + + diff --git a/source/pev_charge_profile_factory/generate_charge_profiles/charge_profile_factory.exe b/source/pev_charge_profile_factory/generate_charge_profiles/charge_profile_factory.exe new file mode 100644 index 0000000000000000000000000000000000000000..de8d5390eca760bc80a6ba54aaa8e8349dd49e17 GIT binary patch literal 227328 zcmeFa34C6|{y+Y7Nrf&+QBuqGAPDZaLM^GK_h}UeK~yg(MXJR^Rij#sJ(advNhpfC zmIg&Fms(ogXi8~H5qqt-%4H%&agkb@|NH%!nX^34d6KkEUHA8IUhSMSGoR0AKJ(dT z&di+i9CzyENV`ZR(jNaC8zYf9xbiP1Y17GSRCn2FUYE$zo4>mAoHqHd?mQrV-o?@4 zkt5C>Ie2(<$lwbv95E_-*4fdKqc4n}cVV>O2`5E|j~IG(kItR9$Tp;7v&O3SZ+|=A z{+~bNt9jcaKYvF3ye@KGHE%PyelxEfu9*wJnHRye{oCKnAB^kA4}CSSgIqJ`r^)r} zdA#;NZ%CXp6MIl_L?kkFLVDzyV^0}s>sCj0iF9n+W!K1sZ6lFRZKSwccU&^%HYO#! zM|B4&@~)9;NRPt9U%N=rSc_zEQL2g93*k%&ZzCn6+eJ!vQ`IgqkaS}0A`QE-!2Hc@ z7a59nGgaG2o-GTxPX3~8L^EnCi$OOn1ke=q7j@iAEwtJw^^4 zJZf+x((4hFmICHcTu0*S`-_3=9vUq2P)AhcLM9Z{Uuaq0Un~--?oq4(SMP;#^fmHV zT(gtlVm;2&a79_DM_(e_;aU&^mzz7}oO2_Q(Nxl8)RVRIL*PbUJaP!CM8=S{@OMEN z+}Rh50APR0Zl-}7nFQAtwf|52E#qI^?vF(xbvOQsWY7g|B6YVth-BnBNRHbV$&9}v zIjI8483!X-x)YL7tB}0@F)$8(9(V5yKvLVaZKUoH;&yl$6;IrZyL{5y_Hra6KSy#H z;qv+;xp)nd=iWoos}jlE^MLXA2e{koPTaltChiJOMl!4yk_k0P1|v4rUGO#To^g9aZS?95|uH;g*^q84|b9*yMD zY9!aP;-(i+@#+J(b7tc1@EqLrE<@7&I3!yyLNaX|B-;^V)~85{c17~*0pQ@)+ki3l zL}Zt3hU{%yAldQ@WOsZR6%H9HI{?XraLc;x6y229keoRb$z>Gm5eooU{0Q!TosQ(C zW07>d5=p1?kR0?hl6y(?Yl<`HX8_-KHtvq6OqXtpinpJ{-L(Elw)hsc_tToH>yW&1 zKavBY`C8T%LYk>Rx|8N&4fifEAg>zB%5Zj&dBkme$7JJ2!>_*`f(ZaST zr`yz{tZN4(%P^wUJu?S)eQ9flO~hSc1wT|#SWlScVbzh6#5(su-sR}VrG-wGA&j>g^E6Og=r6_P1afxD2&cG<}On;b+b z#M5Xc6Da#d?SQs`42@wwo~IT*rfLhR#vd4IdJIDHKHD9-0(Ti?cdr>pM$_{qUkBh} zw0t2*NOtXrtz- z-`|_UIe8S4MT`+2^+fU|1$)+6NM3yp$y7?b=M3OJMxJ}oorgY$p|Q3tK*iU$B2oWAGK9bvu0%3-2x^CpK=L;Rk9lt+Nh?FP zm<-*)4&Hh$?gsZmGKk^-+~;t&l8hhr6Kdms$K7WyBYBLPKJOwVTNfc2fk|22!yn^r z76W4@<+3-UcZYwX;vV{Mrznzxc0l&YYj9V26_UKSkhEjKTl*RA)(l0`o()Z-Dh?(G zKe8XivyuEt2m68^`W=Py+b6i&mJ-_UStQR=E?I2+1)AuEG?n+~0_{J8ahI_rYPUER zcinim`bOOSdN-1j`y$!-Ux2&f3ncH+vTtH*uW|}e@-FV)x(8*)6Zq1RNcMjN$>TJ$ z?Wpd5(+z6RKr)}In0-HzK8GVYlp;CmCfxPk8_BcpAW^wUUSRDv?985D0c6TuNX}#| zIiJondLpu`X+Dq8?!Ta1+ORXf^+9qQz3lm;kbF%}8)*0U5u*#|P4Cmt`;qZ)+alSE zWBdU>pls&xxZ8dr?k=IRewvBeisz9%h+RF4>N$+|oVPQQlW1_y(XHl^!2UB)wvZ9& z;3sf*3yps@ZRnA4NRFgk?M&;uf|^Be`xo zDrV8VYkxuVA=&Lvh@>l{az1(4ERJLscK>U#TX-;%x6Vd#J)`&gl)--pH*GDFm&w%; zuOXRCkD8wj4u0ATcQ@XOq=F2Mxe|BZAByDn7m&oCMMH0~Z(YRx%5nF08Im(uc1#wM zBZeVaL3h4m4ekzHjAYS6NCpw^y=_qOJY`?W+T}Om?&77myE`ArQmXrNa&_i#B*&~o z^7l`X#NGm2N0K^{(~rUD;cn1E+`Wefw7Typza3c?FFys|S)DDeQ^YBH43@gq@cJDiI_tR6jYeRFqlUmq}Z9Gp^41Wm8L<+Xui%8C(dEb6MlDCO=^)pB= zdlR_-Cgl}>L-r9edEjfN!(4#u-(-J!j4w+Hq1JS}H9%Z}OJ( z%Ps(Dq<)KX+%;BDLh1}*0wQ?62HA@2bdXm&eBRi|j1(SHlTn5x+=vD(uXUkb`?|65 z`;5$pG#pE+eq2|_(xu)3B-r~tqp)9gOtUH_xF0Abnfci{sIAG!StQlS03lZpfQ-K3 z9wi!qIB(QBWh>e^9cx&&6v#_; zYvZy@(Ls>3H(-hF=ab=qk`B^b6$%fiJELDV?!i@<Auj|9H49Xt)(|sXz*#V%%HW zES#u@$E)dWHKv;f7vmmc;fHuRHXnd5+M2Sc@X)d9oD6!Qbc>Rw$dJrR}wL!!bA>?!B_3}fOjLeN4T3>Ejrdf^Z-@n;@1Cax<= z1QaPutQ3-!EV^qjtx1Ahu`oq8^Roeu2FaSX@~Ilrk^p0bt1$K)0M!N!Th}*!Th~<9 z-PZdJg025sCE5CcjDaa^otE#}`zcP@s$2&#)p5%6MZ>X7bg_*Tp_j2NZ3ZTvnNF}+ zW4D#P;R2Q2Hao2?B5#dSpIGH&*!MnF}CD|}p_H^sI$39M&QXfWN(7!sIZ4q!7atkyS%=2Hk2DAvM23VMS`pzDBu zSY$9y-wYy=!F(QuSKnYBWkq?~j9;M`J(xFih(ul*m;FW>q=;)RuTCZWQ*DLdEAk{# z&o|lO549pIvSUK0Miu=_Y^WkT7X{~J>{F9*P4BiOP?0?cgw&l7asrLpK!dbaQ2vN& z7PJO}TQV;DbD;6BJ`<{C2H{rUI77^pQxLG}Vs7^ZC^go|z`=5vKycP#5qzzTVyhsq z0)QB3q=7}wkfl!f8!o*9;jBVnprAhK2vrh{$7L(h4vTMxPKp2p11FF1M z2vNi^GZWFVCajS;BmmwUgbB^OpYN%t2SFRG213&s7=;cy;kLlo71qMZngZBDTx$T3 zs{?1MUspZ+aGW6engu53LsH_#$V{rEa*EK@*0u73#>TqtYtbWX0KY(nbzgQOU`2Kw z5Y%CqQcY&Agt>i~gM~~-2LH5$Fe4Vi8+J*q5E73W(jsWQ>M}FGltP*ZHhMj11BDK% zUp_SUYz_SCj}i?0lD|VH(rOK5q8lLULZBKM3GWg`sm4+_gMw{|{Nh+qQrIRyV)M-Pj3XSu;ghcv!7ohj~FUDnVhW85j}V$(RI1R{`ME&!ls zcESfI9Pj6c%L4$SW(*e~!u5yIMlFUgP~3UW?QL~*oM4( z6x*11j7R~>BnaLx4y9o1cHj$SP?R}Fl>38+peS=u16pCiIL^`{j3-u2OT-G^IA(x1 zuvFrbf#;E)%OdjZYu(4~d;-Eiq5G3D0lTRlu&WRe^itS*3j~hv2<{PMZFJ zUJC1QCFFKeXnd|+a$GiHJo|Sv$<9~bW|XF@VgCifjFz&$Yj;>e1n@Mb30X(bQzBP6 zE-NDMftG^Lelk1%erv#N2HI(I;i4o9&_-=FUM~)93|BNx-^iHo7Rm#LtzCwO9Z=+7 zPlO_We_Jb(r2R4IpBOzLa=#)A(eD&JyBg3`WRb|OLM+k_oZv>C$$BV~^#MhaW{4ug zymx!eQKBN_nq=qMwK!s+3vXP64Pd1+olGA z@sy$_g(041nE0+6&EctRkY1?B7kA9( z`oWp#Mrw%*) zmuq902szN}wdv{EA&q4}*27p>kB0oS!^v8_VdnAMdz$Lh6jVQAJ*cuCRJ~Y2ntl_k zf@nCcNc4z1OaoOZ8n_(wA|?`mer0kG#7wKfb>iGAbp#kG`IkSXJn5OVzh;T)pCKtv!zjOF?qZD=f*}i z_8`!VLxb`F!yB2N@`h@YD9z$WpgD|-L25E)a5ZZ5jo6^7lR@GiLEdrw!$0gRIad< znPMw6U&q8ADWRd<2V@tNhC--HGz^i*q7WtucmNWQnInjY)yt;uMFO+}K)RDypTWJ`0jXV03xn^Il(wum(Cc2)oT7uS z{4yrs_Rct7c+Gl!N0d`PpSMDL>FuKoZShGM<8wN7PfN(beIj zVAI%`{OKNGO~sT{n392*s-sjRU`j})Q8LArz~!W5;LD)CNWJrM8!d=Z=tNx96-|R} zQzJmI5xfsAFd7&o>9)k}RgNvu8~`TQmbh4XD1qV7VtQ$vU;S5l4qJ51XEqeZLK1Wf z??GYxUVhlAz){yFz)In06xQALyQWfTNY8|Csj=`&k}M(V@-`C7Fy6 zU?Y!gY>wc7DGU^gYPa-r_!|p}>=wRm3W-OjDquMJ3f<6CAX1yBso{}_f;|ZHL#ddIf?TcXiC<7D-HqfTALmZ)K#xCZDN5T#SP|MBIE5M^ z^6?RTft}SG8P)0VqKlNZdWyQaD?u-IIS|_#oNUO^}^W7_>8wve zmzhRV?Vg;9dNF?eK)D{fCs~?;_N4~M9I6x%c`MB#@zu~3TGDXqw|g>u5kgL2_hbRY zUboV}d(wy!aVdHJ_)c;@<2r|qRi@fP?%d80i_!ZUrUc_N^O1}SPIhQN%u)x|7?(Yt zVBIIa;InRTr$qYiq1^&BW4rP&R8Wn42>Ib2oOB@vaCq1rfEfnFm#|avuH}V}g{h~z z*A64U39jTPA#^ZMCFQzFyBjTH}0B=G)X zpIhXC9faLf8!N-~oV@dyrC}Q@34}{QxJ4TY@D9oo!O-39q)cO)u|%0hjZ8nhI#H%M zr~xgC)JIFi`X6|RL>a<(V%4;oSZ3ukn)F;2kteU-#tJ2-M;6=!H&zn*Qw$zjB#*$O z*V6}M_#OVNcGW~{*->{(R&~tAN^WW)d`rhh2l4k(&I4`F$+o;3Z7p`|*= zh6%b{d+@ky!Wcor{$iSB=iRSLT#t8znPf-kYY7p+)0ie?9U-`}k|6Jhr4ZOynSN!! zY?|Fzp#_M>-HjD)oQTG$`j&63)B{{ipRW~}7(WJJV1dZ}iY!3CU9$^%#_oWoA`3-! z6=qS|TPyFtdMJ|h0Y#E#h$6$h?|DRh@tB|@i!{m3r(cn%$ha_*yh47dB}4#Ek(y9Y zkJUXsP?N&r+uCLc<29>kwZP*8OE0?~2;Hf<35%EA4?^jiC>70N zX|m-TE1!_yZJMCB!m|KhaZzJ6LA!Lb?i(u!Zm{M#Z7ijbL)ga3`>cntupS-pZ>&tz z;tey8`wZ2|DX5kis;mc9FP4y|-vp}=CpZu$dPHB-z|<5C?1Fl+7ZQMeF^XaxP`9>G zHdgkgaz1~?v}$In;;^BMiGd*g?f$@>p>YKTA+ZqALktH?n8+6CtW`To;EYA~RLq$ZUx>n5puDnQE$y zlPedrbmQbC4cX+z$zA(_^Rs3r^!R4>Cm*FE%ysg@LZWun1U)Z2kj?x$D@4&@+nWLD zZ$^UE8rAA~Dn#VdbCu5e^gP3sxOz_BIN2LC11*UxPWHEysOJ&;f|va*gwb)b0;9z;*FCkx@;w%)iW0A*dird+?xb*p|>wa zpJm!hr~#balvU%c2(v*4PoAMYnVyZgfjsHk!mh~_w$v1|NMR;h2L)as_aFsb*cG2O zz|%~Nw@2o<9qMhunv|s69w~z)b<_5Fp~m0ep{Vw4C#KvUIaHHrYI~%+0m+gWq7A6U z+am)plTlkf6=LY25e+@^EyfooY>!0t0kIdKG{n3$`;p1pBSSF>O1V996e``8&?|3y z1Yt@~ySRjtyghO?7LHZFWCqrEd*r!!!ie4*XnK1jlYL+Mgn=&-U95n{?OuYi9&WaL zu;fB};F6wP=>$gu-ENQg#T>Fda?Agrxl?U(-cHo|ZjZcer!d_8q0bV@B5Lc*CG1R}iap-TegE0Ov+ha!Ad^$y+8<=ZMzzmPrW)=#VXwn;CFrf%Ue> zOi-1@*GbHQE9K{knb0kh`V=-cW%6Wi{)W-#~HfVQbg0-IY=TmIMB4axuC+DKEO83TCeGiwq@j%j608Thf-vou)9bW%3NVp(j6BC|C)7wdQe&v>5Z8a`)Am;UWyfg8$VTc_#)w9=6}Zj>PyD zO+m)&Saf{#s6H;oXgHTOC1fE-#uvOchM7_n_k(x@AroyQ#nD8kJU_cYeGDDd|7`;Z z40r?`E?XS)zvyG$=*h>cxM(=+bso-<_3J#BK={7bc``X_m#4kI#NDn^1ciunO^qt$ z7>8AU8h|dVRo%#h-LAeD!?(2?8ip>9t6jCN;Zc?pIh_?Ia8StPYo(9QtXzKMS`%Oy_${GMA4l?LFot zQ5_*P3^awQIp8GRH^>c2mfI3{t7WE?U_PHE^C654=^!uYE0U`C>WWlp80?6f5U@TaBj_FM%3V=>yB?Y1rMx$S6 z&~t|wXl=onX(P@y1vwf$7Z(_Tpc6);A8XLxu+UQhl3%F@6&!F71f0nNf?9T;=yZzl zI|jW6AAlu_6u!IH(;oeRJs4zrP>KTdU?ML3V-E7GWg#Jt1Fg)3yS6cL`8okPg zP8f|o$)NwsqR%ks*IV?N8hwrroiG~x7=ymTqE{RA5f;5hqu1hsf5JRrG*5Ees1$YwSe^eW68% zWQbnuLnn+ze`SUiKv#=iV$iECdZ|XA=tC!rMz1jFZ7up_gMOn$pQ_QTaDmu_dBSM) z;|%()7JY_6zsZV!rbeHG3;qc@VKjOdgZ{KduSOL`_rqYLy&4pt@3pw#pP&;)qrZ-+ z1)ofYx(x;h!iU_ZsO$)B4ZW z&U1a3c^Wh3!(_F_+!mO&iEx%>T7MU~5`$w-vs?ljWN?XR%$|~6B`ldkRC(|tZ@7Vl zO(hZrk^_OFk;?$085n=J$AEt1&P-cfWQ52EVRU*qF8pJs38OIwAzo4BPg?z&C*ZU; zR%3i(2l{FsI$<>Wjt2d3tFZ=Dk>2;Vbsql%I?w#s)(NB0Ke=DGo^6dY6JSJdXIszG z=uup(wGu|7Pc!I8SafraFm33WrtdsPh}QFPvF4_qb2&~G8T2nKbhz#uAgfRBGP+}q zt;f{@SfJ*k11hclOHj`qjI{zNMFCith>H~fVKnB)2snhk*!Fj_LBGbLPu1u=#b?n8 zqtWj+=!?%X{heXZ%Pjg#jXuYRP8f}Tra?d3D!$0GL0@js zXBhM`_^63!Z>C0{gNqeEVKn-#27ReTuQuokpCl3V8jW7-Lnn+z{~Y5h`+k`M0=#(bEp z)|h|w%?rX=E(EN45?tv}Z!qJk5;m9|>Ir-t{KyOSWz_`?(Nl?taDNogbf2dHOfzxo zRIkrml%^ox!1q~1>|9nx$Cu+`J5CslIUF&I(7Re4uQ2HMT6C_50-Xy?7M(B}y@x@6 z+G?%Apx&MiyleWwu6gpoiG~xDT6-HqGtk(^x_shOQT19=!DVeqYV0W7CpzHA8pZd zHF};8oiG~x0E2#qMUNTuy)3$;(F<^~$|sCQ{|Qb^UhlN%g$DhRlZ`ryGn$YP}Jmt?oJ$Z8NZzc+${5iN-@e@X4?r&K5 z>J-CpwLza`d8*OqwLWyhX!IX3#6jeeOypKQ^ULI2kFX0=9d@Szh%qaR|> zFS6*7Ewt!rEqXc%Ai7Lktnvw?(SL*QvG4a<^eltk<|L#1s7BAh#VVgL8vR*=zLjk( zT={uGP`z(7%4d$~an&9Et_cm9>?uEvdh+xaOSBjT=s^iCR{4a{mwB1SlifCgI;UVt2FuyA39+)`T~P~mPMaw(C@M6b2NIj51lX? z{Yry=pGB`R=p!w9twvvti`5=sGu-a^_iQ)Y*cM&TPS31 ziLH~T4Tc+OFN@C}kJy}p2TygE&2ceCEz{A~9K#rE>tuQAVw=l?S*WvZ&Vh}oQ*@3h z{!%l->FE*~xZMp0>}2z6s(p9Fc1Iawc)5H{Rdyw?F&*5fry!rY=W%Bmh>XUzZ%6}Wi*iUh*IA!Njz=T) zMW%(eqfbuJ0=|*FzAdam*yelS4ka>&9UBOXK}V>lvYIy7q2--c*Dj0~s3V+HZVc$6 z?O{NDfkXouySNH<$p+&$5`2$z3AW7v2O|COAx+UoEjP^_)v*Gtqn1tMLI4MQ;EA94 zOksaztBUm2cP5Ct#+RR6j0OitgD|@sbq<{ZQY}SMo6)Y&Th@Ood=|c+)9v@H( z=NS0N=)D9UT<0`_^8j)7GdOKWV=oVF0H>e{oRPpW@8suam#A7u8(0IhCHZDIqrtS|E>fdApm2le=Z>J@u+zjQ zEdSdF3O9)UAtOWR?;a>@0e!#dvAdJ>BW@eJKKXrKQGZPBb-A@W7}4vlMK+;oQMkOH znoJZ%#5ZH#5o6@`^g#NE-sr;*d#Gbf7TaZbjaD5Z9t4AP$_Hde^UJs3H7CCuFQ{g! z8%2k*f0(pAm=wN}Suy>~cDscBl@;60Zdm^=x`1@pzX+N1`uE+1I&1p3l3Boo_HQra z@lE{7q1VlIv5&EN`0&mcl#! zkw7W0vJGC2uSzq6{ZdCohs$9L-u8e~X3VZ0Up+b#E`}ZE_Eb#WM4X>!o`XZcf!PZ; zo8!Axu9aMGk0Zk`E6WbqU?(7+(^dtPm_^m#dh~AZ6g!MWmmKa_)-8< z4BV#XOFbG(|H?{Zx64tBN*<~~v%G+vp=t=kfSWkCmxod^arF$GOT;m%vrioOWNObw zeDM))utr7?Yo7J`mo+z4Xel3bU?fw-Y-k-UZ0xqefXqOSLdtP^>DNt1b@VkXEoO}0 zU|IG@YmntkX{VAg8cQF9XzaERY9Y&NR6>@#K!g{lZQ7|O-IgtF8<||+w5c4?vzlR09PMquyL7=!iMI9v6BE7D0WYNCbii~O zj(9qQo}WDX@#4t;U+?_!Q+_X(vz)8W_XTf9jbK*KB%)5QHlw#dq|8AKh}5U^4mYqN zns@SXl_ar-w)cjAuyEA#qD-h6pL*CR?cIG|pno?o>-BF`tM|{2elTIiV?Fx0{cG*^ z9Q9n>*T0y0oLSqy^39#SW!So14yrjnuW3?kA^LLE&So^1{>0RlGMbzI_~_Fz)`Nab ztv%PrzoWio*7D!0%_Xg_pA#`ixRVt}^<}n|+6$lm58%uPKPj&!a^lt0oU0l9Gly&# zexISu;0N^&h0D)9^C`2GbG;$zG55XM zQ$FX^7*lY7R(>A_;YWQ*0b#TjeMOx~>C8Y3oVy~^Y{WC)$0%DBb;fdLl!+fI>O}Nh zbr8Z%{WgwFm`0hhrC_GMZO`iDj+jX5(kmb%ML1ZukD2^2*9$YTF=^^ticZ?N)O0S7 z&E!S!Gi<}0%CvsYzS6vBhh(c<23M{#d7VP`0?Bl?U+z|B~MYpGfY^EKc2UCS(bwp>zE)5iL0M z3FBRLI&*lq(>Z(+lU+4A91uodU&1*~Sv<&5BSbC6mVmT5gUsHG94`_BLG)U{nIh+8 zm*jI=X=i6uC{dqtw5rq}|54pxp83$USY&Q~Ia;#d>FOWnXfuFt+tgi+0b6T=hLNK2 zLP8YU#xo|=qd|0_NH9Sj*8%*>lWF}<2IgVF$g)LFI~iLrd7NQT+i+@71Z%(k@^m#uf&d~hL{xvKGfYbz-Jy)ywV?(v-8GaR1tqCTkaG{1 z2p<8U1YtOnK*j1AT8=J3meFGDVwzUycXW~_N`I1qX8q$Z8X3fd&TpuHoFMa*WdB&y z(4H+c>lwQe-zw`8zuFT$V<(^5>n=^<8K&7nZDGbCoArr1NO~B20#=~yW<7jD0*T)z zP|yOOz~F+9fVIFU1`ck*C)&!8m*^8>)X6@P0ZL&$@y)5BK5@SpPT|)7n?BL3KTJHm z)%@XaVx?jJkk%r9_=o|>`oq;tjT8r-p|vO@MQVSLX4lalKB30x4+s$J?GI7**Y6J~ zXn{XOTj~#IVH)iYqlsfgcWM;o8XP0gov<+?ixYCzB#aSV#p9C3hNY;Dh9ta4QW)8G9r+2!TE18F#jHiY9dVGSw*{FHA2YHzR5muGJfZbju zTK8dQQsY@S$v{I1)-9BJ7*|LX)e#VC$PDPrQcOB1K}#ekRGnoc#PTtJzc35E{9!tt;_{lA?Ro97IhY35-+moH zxz#BCh!;LJDnEFr7P4*IoTJnr*2$gsek_Vmdkikqh<`$?L{Fj^$B}qJ6Ncu{hf8DJp!zwJpJv(O?!F%_AU&z z_v>k`*Io~iRgL;uXc~K2%Z%5*_=&#uT5K=g{-UQz2Hh$MNbhV>RKA_9nXEu?;8i_e z;IhC4^~(J0{neY4NoBw6{mC2r-fSTtj*N9nS>C~Cj zCzJbMe2n5B13B;2wTv{vV@JT^C1bLCs7Rmh`u+vqF;urvDXHGmY^@lwVftBJNbyKW zarKi$-)xzFemkiJ`e}ax=($=>(9iuehD7~LMq!is*$wS7a;4VKTxw91G7Q}@`nglQ zk@`8~Yv|`^c7EgQC*jR)d2^PJ>!Zn{$R2!_sB=sfrjH+6qKyqOB?!{g5I`|H&}DEJ z(*ry1;4f0a1wwZKISceu%V z{oB`+w0{5YANmLMZx;Q;)87Lo>-BGnDOsQX`SryuoVSLcN1jgG)$ky|`sgjSz82>P z`ZLR9z5d*1N?M~o?KXaY-aIDIpBGHl>(3LWq&51}^Q?`opC=ecJ$t*?WWD}OHYKgm zpCN-cUVn1=cq!_m9h3(DN+t6D$-FHe6*QqW{5p&`k5)|f8z>rL+E4Lor3?Y z{_D@bOd@gc%0z1fch1kJV;WU|Z2g`(0+=Q20_I|NL0bj{$DE3BxclNnMs3CUEZ|0& zuY_Q&Zh@h(IH#Eh1v5cOkZ(AD+d^Z0{$x4PJ` zq8O4lTz-7$ifTntb^fv3T*b&8U!5`TCdi&Zs5d`5QlLKXXAha_J;ql$@O%`fN0n(E8}<0F z_ZUaZhi1FI*{-eKV_Y~RbdQmM*kjzYJt$Rn>y6JqVUMvKbQ`TKOzxhi`~;$<{%i7>kBMWm^0*a1etA4Xts48N|1CrwPquO8G3|k-PWjR4YKVk5Y+UE_1T9*UXDBCAt&Fj0 z$;HxTG!>jlSQIF0!2(xk`=2GZ|J>nhCZzo#h-3ctGernkc-VmU_cTvdQB8~e-zHW2 zJN5~-Z*VrK{a#0drk=rB`Ts0p4(b0GC)j>YEA;>SW0Tq+f-xmj{^yHeT37#V{+87K zb0X%D{%9yY)`mZ9*p!~N<)qbaqp#NOb47UHqp(*75v?#{wzj-d$Ap84;jRo5u z(>q1`Ju#i~``-rHA7Tw>?z(Atc;V01$}%Sx2uFymN$^24>1v*YJygp{7XcIX7pTun zR05ccTDc@F8U7G1;s|Draz<%gCm_Li)eOHCA~cWRgHrPQaTEMXMEOJb9e*%&>G6A; z$%w^37H4A>a%AKrwtxr(6aHYz51x zC9xF8h-%bR#%U4_r$}99%sI?(P!=?t^*G$NPWE%YFyratYtc`by`N@A!7#R4Q6J6N zd)!V##Mjc*e-1KMl4L($AC}sFTG8IcEMuYeBP?P(!R#i>>6NZ$QjY2*h7FPPQSn*G zyM8C$JL(7ca(;QWG5Smma8e$+(UNJ7JNF9ef8F`(WnGl~b$}Ete^FE<@z;(D`9t~Z zdmt5S<~ivosH%#e|w`MiN7xxPX18&jj=97{=R}STK>*J zMG}8M(2f33{>IxOjr`5P_+a_FAk06OF#xO+e~HgmiRV+UVvqIwK)+eW45A*B)W>__ zXA!5|>{04n9&=hSMpPL;0AmmMnmUIllev}j8GDTfE@yO_T1cA(5*7=q*?0k;DUle^ zOm-Q?h32bj0Tq&MFS9?t?tLzW^DD@ zeP}ExZS^oSoA=x5W+pUhTg`H9H7k{^&ip^!V{NNI@ND%8Rwdf%UOiAqTQ#)T(^h}u z+^4Bn`XL7j^xbExzTTv?)#*TM!d4Hb`z3Mz=d@LZ@aE#_QVw^mW3Rqbrzz~!2jSW4 z7)sRG>nBZ*{pXvoSm+!3zo3bu1KM75Tzka>a(HaLmu;X<+ba+}d;R{es7kcgFDW5v z+|XW6d;NK@X6*G{03_I}uQw^}bsEr`u-D`E4&(lR*IqOCM1NYxUU|mQoRUsquRaLJ zolOnoXl3m62BWhSbAda}WW{f<{fXk*t1lv@vey?4k&yV>L&AH)T%Z?&Zc>Coi^XOT zY1v%$Qjlpfz7|SwU+4I`Gtio_*VXJ&68HbR_BzR^dxPf#iyGEpzIs@WXQLf=$9;Lq zIY39lpx;JIIo)+_6s$KlUwz#K;gI?2VRYEUn0gQksbxcZJ!5L!Zq3+e4FD2is;@UG zW9p4SYr;m;ZA=Yt|L3$(_x@M=ohq zAh_O&MqKc(30J>#8}JG&JJV01BGWT$z=p;Q2Ktc;T8mK7i!coFIj3 zu6rt^oD>{VbDuY%xtc#hbK&~3@9UUvHB?r}N4C`N>>_-~)!8-Xt;5vb#^ujkb9B(W zfb-oBnhI9T=$1HE7<15qya4nL>R`wEZ5(PEK-jmIrBwmAc_(fQ7(9n~e7Q&6B{cQN z=G^K6w|ci|fUJID!n^@Xd@cs}@>4D(YBec;g<`&O!q<4*&R{j$RKJ31m*IS@F%gN+ zCWLqN>p}nei;w5Hi#pj*=Bla7b1|!>r!Q~sqimmc5_ldD%JsX4w4dtt`M=>Z#TZzmY54YRkNsB^{VlqcKULKv2-9M9f<70y!H+e3b&oNLBYS&YpjR%eXsDFM%0Nsj8dhB;!7 zoJBy8%ovyEhDT77#iOX&sXIhd$+z{(*LZK@Qj@}fK4fjS#dgm!XHrKU&UU!tC(FKa z;2-qlql0E2ZZBFn>8fXe<&-bb^xSuS>o3tHz)4{}zSqhfJIxjE%9Ic;q^ZLe<)pV^ z;+}0S6Wh~43f1XC{|a`{a#h_2Ysrq0i~ViH7oW!qbr0;!8vM8^W?K$^ z+4L6%@v_AwEql`-EV^uXSw9>U_DwxuFJo6pC>N92E@(1Uw2kt#=z*@ul(45WSPYY4 zwP!NS>0kyKV+5^^nw&*QX)@Dygj{?k69uIorqg7Erqz~=8s{aOjI@(rGDK9zbTf2S zU$y{~5qi*S6xDcn!84h-HW}Hrh2H5KWl9KRp3Gc;iO+*36IUy#S-e{!CS!;jlUb5n z<(iBL(wfYhOJOn>GlprCDWS+$hk6FGE8%m({nS}yu>E=VOY zyLwB@Y;X380bKQ#Hfz*9=m?2dvnAHVw^2FBv$Wo&HPaIiP-8|X|YDV zMWY5gH6$r!KHTskCH%HrjXECG>nCXb?==Wwh=OpaL68!Sup z5QT;;R^?Lpxy~C6)V6tL@2cS}^xoqehD;WXN7`stqd(-XKJ5asxXm z`+O?{A}!VSc>@DSsf2PonNyzcWrF@jv`_c@U?R?~!M$(jnv5*vr>|yakuTGOaQS6i ze+^Omj_t}2nlMjpkCOsq_cDDO*KMT3GG;mIF=Qm>I%=&k$tutcHA(WN?%Lc%sDm-q zjcg=UPCCZo-CI2)YsIax@bMoz7rxLV4s|N{(qH1wU_gSo@mY1BEjY5#tWXv+uIEDb zVkxS4_BPExns6pGJGhX3njfOH$vu*$MuislCj!e)?#}|5R0R9;E;!ea{{Gx#ApQM$ z)P?l-Cr*1P^R|$hVn3-aRewa*1!{MA8@)eD(HE+1nT5EaJ$dU9g>hB2ndM)&Dj-0i z+L2rd(n{JbXyhl=VAr5T zUXJ=Xjbf3{QP}6h`e%s-z?OcD0(xx`e?LHt;rz)Ghs&Sj41XCM=`4RyL|&|ytQUXD z`<)_08EA{N#S~$hp(Dr<+Q$|{pd2dB75l@`(H?ngmT`5zsdl8gfl|Zt#}(uKT8ywc ztmmX#nKt(&K%bNNZo|JP#xDh8o=`w;9W~u`h{IV>pn8*Cu)iE0&1<&teiMauGSzdX z8uBp@Pj{ib{z38^lNe-}kHH{vTlzrZKObOLQ!`01>4&{cAA|5>0L{SrcdeyEdFmPH zPu|GD-mmXH%xDPH!Ch~I|6$AV!{e9v=qV;OQTg;^;-tndvXqPxr5Xw~=HU>{$1}<} zIbq7PcTXpU;Ix~`L_1i!-dFAM|) z?U#Uf0eUn_cmO#Hy^F_#*`gs2hQaUFu5GN}o9+6k^7#z7arGvu6PP;xciKdQejq5t z!m`>KvjncFx8gH_Z+Q5B?zT1KD_1ZivPNy7G{;&3k@eo+*ESJZe>FPxN7fGQpwg6) zwLj=3x$%A=BQp#eS^p|f2`;=H24D>(;g80v+igi?eH|1va#&{NJK`mt% zT}5_a+80@+Q4>Z^2VNku=CeS*x16Uspg-#uS&M0E2yzT|>kwIQkqN3_fWF9DVk#L~ zZ69=Gm0Y~3$m$8&Gfsv;%r6onYgdm4ZN&(xZe;xro<6+DYN@)B^&NRQ2{09itmiz2 z$ht%(J)0tHlVd=tcpBq2kjz&dn3iw8S|AluvJ2%}kzItVs)S=Bl$t#fEJRdDy_)b7 zt$d0Av5?Eh>I6hFnX1NtYJM{)hY^@0)jMX^WOkEa5{^^J(X=}wEv6O78qgWm@33pd zNd>?h^)^|-*2`*^Xl!#->^SJ``bI@InNbITUmXQccX4aT^Bo5F5<|Vg zZEvWd#*zeT-~DK*;p2Vet+HWlV_hC+P?c6D?AZ!Ct8M-InyhYnI3%%bS9E7__4zb=fK!9 zgBn<@22x{ghfHB7uTO7DpG^4yhB3X@PND2-7-LBSV-NhthTzTWC)Z67Iz(B`;0Z>! zH}10Wp+wXQDNLXfcj>gRck26)S?Q37stkhG(fcnnRozp{a6Y=Ar8x$ZKpemj@L{;G zLysG^1SktNi)Id@%(&LM1%QNZ#<*^-77jF=M_Gc_EJiKK9LNUoINsItgg^;Bneu~W zcC-4@I=Yje%5qX!O?80EE5B$V<+zQ{WeE(3B?)wobm_LQKfiv6pXdq_y@Ny{@m!bK zA{Y&cNr~Q{>;+9~N#e)5yuK+CI90g9w1xT`j7;5g+`WX*Y#<1z<{jCw@3iGIe_kn+de9a`B6T7BCj_)_lv%Umo8awSY5!QF)1w_DsW3 zRi@5SgIH%h;RIyr9!7VQcyH^rEk82ssB2)76lk7sYMz{jvk)DULM_vOLuZ<|EuC`H zUy;;~E_(+FmJw|S6xZ)Xjs$9ZTW8$wOYq^cTLpd9_56+IVxCBTx)0;#4Pt&AH)CKf zWR0ZB0cBI=MwLM8jMv*@APO6=r?VWcTV$+~0Y>eB!qnsS?uZ;58Is29n;0O(MPZC| za<%ejW6S>WdI0g^2+8C1bbvFE?I$gSj@RA4GZaTBjMs64`_uQDI!9+Zv!gy|34Dwt z2|;kHHI|wguebR&biCfq>xVa9SD2O}B07#AmzkDWlF-uN)wU%wULS9;z47``gB>zn z4}(G^CX6=Y^&w!q<>Pf{Kqm#LBkjy5V_aaoo&^b0Jsh320PkZ71jv$vZe0g?>0lKc zuZs5k=C^`3yX)<27lOYhl`a>W{gg^;BDfz}Sn{vEsZFdZUiJ>q{I5Mbb~y=J=ck$-n0KCfl2%g|dO{&=e^B-}vD(6Keqfn0*S*7Hm42m$pR?D;<6^9g$`(C&o8Fun2EMX5V?_bq&6F*vHyCUugNR!8h4n9-Fg6sx zN*-T=C!R+L6Mzf8ME5|j#1O1J6z@;i-BgVZ+>*Kz%@eC;cl1!VH@D-LrQ0|?pLh0t z-oY;oAL~{m^Nr?y2X9R@=Shf-GVU|Zs2=b_o~~l|5>E#KihBu9F@}^aE^M8XXf3nI zKT!W-jDG#2AeH|6LZv!{hv+{*2nxyO&_(?lf=2&QNE&C`#C$eH|B21bqMA}SmqPy^ zAyPM^|HC<+|2gzOcGXl!kAA=@zKH@}CXY4MtO*YUzX>w^H7O97H9%RVn+Y&=%}Vqd zT0De7ih9zUA9ymr@dWe6!Wjl;TN(c3EkJ$ls3KctT6dv7%v@Yjm?0QaTNzTz>U6XF ze8y(&n}YUL2re{Rj88w+kpB>j1~)h)h8T@ohlvsT;|9g?Iw%@(1tU$yczyoRm8B6* zvD^09rtQBNZpV^)aLbUw7mP$Z5ET|XO#gZsj8%$U3%7cn;{`;wIZ_e|2vRlF#Uz=I zYM};$RKg3Z+tTG)^W1F9qSd-Xg~c}>B4rq+CTH*ptHU7YWyHK`oGHxv7eQ{;ysH4F zE;5>{_?((cGH-!7&cMV8QywtyYSQT6BJ&nfZ4Id%g;b3?PrS-AZ|N@#M$B6KIY`x701tC2}GZD|OA zRRrux7aO~n2J$Cd+X}O1nXh4`lSej-&`lnDEB4QTU{UHZ6JBBHfaAy;*B`jxn+xu@ zIygd=qUV$l0dZh)DfHI!O-;QWWmC4;Y55E#CBN`79yQY@e+4 z%ISQ^7V+h0H*+mDjk)Vr%UKw1Rj;A0rB?N@m=Oil?*<5JH-=ldsaVw&I>K$BRVB!W zp#uXl-}TCbrhM*KimX#PC0k$3Lu{j1Hso;;MZnQlZ7E$hnFr}zkjD=)39S{8sB-jT zvcCNg<&*`5>@yk?@)qQD)KrHeMj5nf*M9z439)n`^|HmqtuZ_Y&JXJoe3^{$Ejn+k z&!sd2A9CLKe#(qrfM3t^#&^HlV*If2!kk}6FAKd1ZnR$d;V+>a3c0jXbmcHEyhO9e zvH7+WAFZ$xDmpG!JG?{1R*$b9)h7v(2C)?Nd}b~L2^nV+muTb&Phs7qvP8oXbS;&f z5~FN!vm<@Wo)ubEKGBr&83~Q~<>QB>d$yqC{Q#CVB)}?1u=;XImM=X<%j)nS**Q z!;vmFrY#2h5QF`n_cfJM-oh0#Acv$Rz@V{Q7rc`Je^J0?Vuu;DH?bpk=24_>4>3wJ zB%H$#2)YG+x-pmT({JeJhkJAje00ke$6G#kZkYuKp~CE$LB5F2T$1GO{t^uVEm0eK zG1rwdw8UxfbPj${(L%Vh+kdShhII81gsxRI)J27gh<42FT?{ekLY{2Dr<%$(;CIr4 zQulHp<7-r(;OBwIEcO^vPkD;qbRld4yDc`;0Z!TLUQ5fXIidb?Mh*qeH}Jd_eE2h z?fZ6!X7_vzXpg7V>>jjn2)JdMC3lJH#F~n8$f8sVyoJMPvkDwxpo{{s_y8m-@JcH1 z3~}^7MuDmHSET(j@Q_14KsZ9eWt=)1VOc};>Rn)@`gul=Ca`7!anw+H*=F3~FI$jZ z3Y|o*J^;XGegQamGDn^35x&C8E0+R)3D8oskfX*dqqxl$5`9(AZd`XYHJ0lf)zglA zZeT4@JBd4SrVhvatFJACZQZk2z2(<#as6JQu+phq^`KwJC3VlcI_`cEbbJ|WH^zV( z;-mhe_1AY#nF2Ja@7@q(OZ2@Iq{8$)uckSD@Am3C>ifzNeV^B2eIE$}biKJ5eQ#%A z#i#xHe&|Bz`#O={MwmePl^b&Je_sDDe_!03&v3uT-75L;`MdqzFW(Q2B7V42488v5 zRGQ7dV_v3yapKHai9B4%_D8O%8DnZ3eBOQlzISTgeb}0D2hTg4#WNf_>H%6NO5`aF zB{^z}*s5N5{vIK^vRb#f+)T9-j;K0`${25tMe2a7g_7OR*hZoI;=tc2{gbIFyvp2~ z(}eYs?>~%u3&Q2Q68006ZwD)1G3|Ai?;D`#$yZFfS^18Ew5)u8fqs1QEv=>?DQ^2> z#ye+0zCVf2{|V$P<_P=U5>IkuJHdWW#oRF{-!)dgkcye{x}l>b_B%gdzp~2FtbDIu zs6rqVPKJ^^7Q9Rp| z*<7=-=>)}D+k2nJ=K1z&C@*MxYX(C$mr>QNAe;5_=R1u0Br=t#3X{cD#4HXU;CZyn zPonB68Qd7}FkMMr_%PEI&(rINheysu^lW*#JQz81xNj2Gzv3NLFE5~UYISs+fK2_X z`d&QQ6Yd(rmFL(C7&vzndu(0DHZzd*lK1?eydO=HcNL7zc({@G(Z*~7^7c&^nwNAX zXnKg#3SapRjt-UCe*U)-~kc>jp@DTF`Siv-??7L?Hl z>7t(6bXse72QdM{Gd;uKhJ3hZ6C;LJr6 z?M)GyroDZG?PZDwv~GKc&!+9x%E2bJh>d&w>neRW?eQTTrz~1@W}=Dyy*10%-ig8X zj+o23)@^Tyzr9a6pYi&4!jrAv-XS`~$O5FgDA?Y$j0?7Z(bkdYD>_8#_Syv7d;Y1` zZ|^jJdpDXv0uI1^%)c<(%Kgg}n#Lb?4z^eRxUape){$qG*q~|e31&QdIo>bN4QP*B z;RyO1I`WM;bHKgo>u;_=DQ~ojstL@b8Uqsi%}0Ngac`l&k~D003e-0;yRVgzOYOdX z^eg=IuL;sW?=h;!(0_z|OT~Y1JdEn&>UnCHrv)eZRD~H&6LZezD|kQ123ZuiM8QJbAh@QEbIU#59vh&YqlXPbLI9+z(} z-*QD++2T|uBlYvm|NrQ1nxB~8qy3Z2r-J8gu|_V_om}-Ehsz|N2-+*6y$fH@_|*)2 zE+5DpRr&-#CHf#6Qx`D{j|DZEG@q_p4xKay+c)%z7+ySjCrY&O=)K2$ihvWOC;qHg zVCciW(l72rua-xqbp4ZI@?f9N(sb?gO*{FYeZITy{CW0bzrx&)nrrA;jbC5E#PDIK z(nu`EJBNxX;vVHx)KbkcHSUL9HjI#kk)12}uR%g%P*>)_$5Ln%W z!B=vmsK#+9Uhl8HhMb3s(WtSa$oGTZegwqjZYRSWy2^)vOq0#wF)p0jLKeTYm+Kn? z5{@dOPZ*Pei+r~{EFED(&tU?JK9TfOoQtmK>q3F?X}$H+?x9fqtb!J(&1C&dvl+8V8Y*7S zDtvbYmZi4TvA-zg0*s!9rA%8zf3xom)!#HzoUFe!5BT*r2EoPC-+7EYf2{sClcy_J zf9Hccy_qihI}KS^f0v<82!ww9{gOg|b@#dYyG8ex`nyhu^Q_55heLn;A4OXmumSGr zPu}8*Yg;h4RlEHyVt*xg zZ$|&|^*4%Ml4!ozDJ_H_=+&&-;kct87Dm9oOrx zerqHAlnCMlPMJ#UvcR3Ab~mCgQDaQ8z-)1k>AfoQic8cFRkrwS+N1QSe<6DG6ocuy zm}jcz^O$Z!mXpB=W=&4|JkF;W>m0Scm{N^8*+>v;&N$z~iNiwH=((@_LWR5uk*=n( zBcKLD#*E88kg_txL^wqROyU z3>MQAt74(4`TfZyu`c~j&2N4`rWNK*6bNJwi=<*D(v`$tPy2-7cLQ-IyMD;J$y$t8Ctb^B?qJtt#%GH6NrSKgkw zC#l&8!8@e;$&zfC4j zjk~$o?giG*_^FR2;711sbF_xXy|Fd{q1C7ZID}*Fol7t$0W6bX4#Bz@uo%G#6Ts35 zR!FcfDK1be;KP&tP?mh{Di;zE2msvuB39^2fvu%-e6R^x+Vr@SwhB_E)H4G71Qjx$5u6m~Dsl zRa@M`4)Mg1Jm=s}Mh_%MW4MTAI(z%R$VHeOLi2oSCcOeTi_-PiuQ=$VlFv=u%%D|( z2clTZSBKpA4`0PBf)WQGHEM-)fs5O(O(wU}nVr?Yjc22ywd$MObU&JU1`CzXYkv8} zZzL5@;rpsD#XOpp508$vP%^bf-0LVAt>9Gh+0K>E6(SNNpGU;fTLgpU2TFoA%E;B|w_xrKNuVyh^0u`QfvoiDdum zA||kr{L{>z66|{qV|6jLt;g}sYMDsD=&y@0oTl{`PXBeGO8+Uj!RJ4>`|0bj)btug zD*KxyzDN28iL#9SRr>Akc*!(JKRA9P2zcY?B0~VO!}#}oMrNPr_ZeMd2oNa;^q{{B zq(|=naTVgO13hp4D~L7fv8IMS-+ad5o7Q@Q?44O?zTT4udYMU1y`>@F9MU6chkm(+ z^dH{pGJ<O2dl4=P6YVocuL-)sIL=jW zW#<|F*sKswxsH-R&-WBO)I{H0r?T@IEuf@1Oigb@xgPCEug5yjbM3dXTL#e}vRu`! z!Xx%6_63^jrWK#nzjr>UM!o8atStHTa8iG0XO*411=_5JjJe;A37kwCOu{e29`F)Rq?+wT-?l7dOpy%AItT$w4SgasMBCR{|JS zb+zvdGa-a*AfrJeJ~U`lz#)J}7M(ys2TgQj6E&KIB$!A@rbz}tZ4Cx2aU4sn{?%&x zQ?-BH8<#3jm$1lUT_V~R>(aQieHdHgj_ds2xyze3lbK{<&{jJGcR%;sbIv{Y+~vJ@ z6RkeKavk-O^;_CvR5OU`yZ&|>GtrujRlk^)znl@juqvF4d)CE76VZP3`VF*%jZQ{f z_5VJ|_SrRqYya%{+9$*EKR*g@%FG{?ujr?IQ9tF!MQB7M{*(KupB{)!AL%c)9<8x^ zEBw4l!vA1RI7&meC}Pm(5l;?#U(iIayKKG^C@_f2^{!Tmb<#P;6#Zke(s<`*iZBA$ z?G~yP1zr+ZkW)zHe#Ym8PHqGA+j)W>h_)V%$7xlf<2^CWSs1PH(_2Rh!Rh^yPb8Aw z36$L*y{DV$-G3D!B6^=619~46y>r0nP2*IOeDC0rmh@f_54|^W5~Y0I2EDgxpx5>_ z(R(465!Vc}KD@>=+;jVnS5 z=}?35AsX~#t_L;FIESPme@WlHSA;VYS-yhw+r+H7T-vJu$=C!EW&DV=Mo9*@fvo=s2Z| zRxq@hngNZ9M^5JT7{r_vDOPiN>)U9B-aGpj4Jv#e?ePtzzVUP~qI{2D`9tLMeFg_x zAd|T;yiQ?w2`X(hpwz*arvH+URsQ`RN@=Nja|;0gFGMteqcGkNQR%Iw;bo@x`-0vF zeh^0QTo7bhdepN%{yrGj5?cHauYZ=+zX~g{`MH|}Waej? zXze~y-jMu{A5oZU zD!8@lkA8b^`tRf>cECy%mHv&FN6;_zsV-dpKbP#}n&>~3D}Ueg-?%9kqs9I4C%w7& zP*y)c`UInBJ}(NA@kS0;@dI#PbeJ5-gTZH8uCeFtYq1*xm>`9ZOa6SP5lJm_k z_r>`d&a&fV5?>%~DdZ4zY(Nb&=e3G+^eLI>!Er7mFhKsJ_rL6O-v4=KDf~wEKLAw! zzZ6vp1W5hQ*>_APQKJ7L6ZAi7n5FP#lM@DFK#f7FP|Kg{mnwLq@NFzhok9&#l|E{{U{(@ZiAP(0{6zQFOr@#~^hJl1D- z#(FPW{oD|)e(Do_)HbyVuJNiJe`??RklVzMfag+*AD*rO90>l7e(*oqj%g3&&2S%`^GX+sE~bH!lrN&4_rmiVwnQMpwvuwqczAAP;>UFGYO%5eL{ zm56hS2R)fCZE3~{1=@;XJ8e01Oy4~e5t>gj9wPOOs#1O7V?bva5H{K$hK`b3-wvnm ztKbVmC+xgl0mUG_z#jp{b|_;rUp>*-*VkXB7BsQe4AJm4t_;UVZ)0&=qPxBlzDrld z!q;=@SE28%rdaqk^ouXNKRh&^YPccjIDuHKk%pt38!{|&HYOAE%Q`Uf_^!uhq4_*t zWq&EMH-9RB?vqDZd}7sOJziLPvid19uJKjR&k1F~VL_&}`j5R3)#?)!aA6hatd3>NB;rF5*@~( zWJD*G(Am^6xPx0y#;E9jVH(~(*6HX(=EH*=I^@V~z|Bb)P;a}XzJej>0F`R^TDEzX zNYX{Ts+PUlqnb(7_1GrludwSgc!wBT==6rmD-vl`eAf}{5})_`h=;WLW!TEz zS{=d~j*r{JaxxcOGI(B&r>IC_N~J7%feR_8O5s5%i3-vv*DqWq+J!aUrJqltL79sn zQJE`NG9^$~CYHhS@w*Mg>~D2Y{CJf-`8xS{}mEw9Q1Ro_|Kp}Q|b|y|8HrO z#6drLnR;W$F1qFz(SM`-oo4x4h?zL(m#THZ=!d?N(e9u@h~~L?Jo?$R1Vu8JZa+aT zpAX$1ze~XC>P?J3Z3RCK&h0)a3Y;c|3^aWB@V`suY~nQ*cjK>GP=4!xk9#B5my-T_ zYQpIEkq!7Z(SMWdekuR5+HV{Ebz$;f-}o(~f8>Q>^gki3`G2DR$NE0QLxZzif3C{l zgqEE&2*i{mCpJD7>0*99v0*AB0C|HrA56LWCNc(Mcw$LVEdDMS(g23}=fgQ!|HD!N z#Ona*FuCwH&ci}S*{FoonZAoC6V>^)Bbj#nUOpk#L>Ocg(8cHkW>`8b)CM?HhUWaf zV*SYTOsNVOnO{|&wOF)<5q6C(yz{$nRJ_(evp7`WQogA4u)$EkDzvAt}EXmqe2vC=63LLw=D3->Ce$ ziPpi%Zyy#-G%iLjs1*yF*&*jczrIq|ACtnIGYqAE-(x&mzkCVAzQx3_9kci7gbzCm1qc zzNcEQUsHi91KOj7w6S+Asyz1%)=HM^t7!==<#|3=K0}_5k(9#ac~NwEejH;~k2VW+ z7*?JnuLUaU3z!&=gUwZ<5$e z`WZu>7f5Z3)K5G$?X^CdT}q9RS&3Vok5;0}HzCh8)o5rivrxJIeNq>xpL=P!9g=4= z6@}|(jPV|nGK!R^@f5O`RFCCdHz29rd_c9-^!$xKOZ<+e&EGeiPUEAs_ooefz?#oX zsatS(wt;$e0Pqz9gujGF;Q;X8GeG)RiD9VqdR9yfN8z_^fcR_A85sS;&K?;2mUH8Q z#{^2tcv?f6UeILjHd{`2vRgiAbo*mIXcXo;OdfPJ>>)dA>KsE}aU7NBKTJpEbb!ST ztvDsWiD%L&`J{j1eynS0^6TTA$!HI%NZT*)hcodKdbC6*2)1%sY=_Cr=od16j|3cYf zJ|!@<2TnblfBU`{CFdU6)|-zGaApSuIFh6SfkE{2)CGSKBFR@c}@{$NvuKsr#Dgx#qqo z@>y<@&))zb=(&{S^Rk$dzBc)M*&c6lFyPbjTJmb zk6ZB-9gHK)6qRyA$>-aAS~4d$^6wavDeh{@AZ(e!C}Zl)7D=^dpz8Fxmaux=*T*s& zA%%~KMbZBR{R#O;Xi4nkw_ShadWerP(?}Ad49mR8MgDgQUKo*Z4#Uq^Um6}(_LiwjY<5Uv{n!++2?o(tz`f48f@?`m}j)t&zun6J~yHunr~C64-w~A z>59LP!Ow+KbL7YTSiQq0hpGTllSOz&ri!ou0KJ5Szbn-Hjoa|C5l#=9H{`ebbnpX` zoP;f3SZwh%y^(`S!E^;3!DJx^N9p{iOs@@h4W}G4|l$6o#i# zjUL(kAMXptjrhZVBIB>+9ILqtjQxX$*eKUMZg7RE44i(oqqkf=pE{ZghJ+sDDCo4) z1dxlGg~0lM0Qo(ljH6YPWsC#ML7k{Y$|L=(LCYhTy1|e~jHAXG)DD0m;bEw}2ryp7K6#1kdG34=v?Csw2=za9MYmP$r&C4U@dxMrovg~@XH;*x1 zCdfXIlt=6be6M{YS`w)rqt6_)JoXa`W4y$W$AhxZd&?u%1G-lW722;;OAL8vf(5@j zQ$L2rOblZl4gOBzZ2<5u5oa;s&F}MbX?gTJickTAm`_xT^`BFco8jrZp98r2quH^GgcSN`N=$_!(-1j(alJ zE~S^j(c^p$!f61mo<7-~DPQ@%(?m*R7%961DK`SOJb5}gIw=GQQhGQIj$ePlNx6cP zk{UsZk4Wivl@dPZ4kQ)6o{;@9nmRDlA1Pc@X<9V;;|WWsKbC(6`Xl?}Ixr=LF!tAd z^+z}7-m!rs8Ay8+c!Q3is1bL69BK`b^7^M{Qe=M&3z70aw?!pI_D8uO#UV&}kCSp4 zYM4p+xAaHbtg!yLgp%RoV=4;?;gwI!LXhLb2Bu_x{N&cCLXhL*JkGr%lR7n!HUW5p zj*C&lEQCJC$5kd$=7o_W`(qVQOHz`elOp@0lhfc>OPv}>Tf#|s`<8H0zV80u>sJlU zpAO~F*Em2*m}N7{kEimg*yY2iyfAioH{`D8#4i5>mD_ri3ws^fW0}S?&%}LwIPu|s zHW6QRVLhkcy^!+|;|YSPzW95^*h}cEW|PA0(t`yE!`P2_e-@Jr!S9#w&&CPAOTzze zobXL9K~F=R@SFI6*`=QvC;V?u75FpygU5tLOJp*B#JQ%gnJfP=IL{HcIJosUW)i+a z`i7{#CpY2p?}gunsaQUgMvDsn)u$XN{M*2JZ~VjL;x{h(<$ZUV#IWXWlgE>OY>UP9 zwproV+eZJ4(3rxE^+@0Nuq}aXqimkzu5TYyePh`h9gD$E=y_$|{1|T_#ElPAH!WC% zDw5=5e|mx=2f4>RIT`D#8A5eO$W@m|e>vY!0w^FS6jhS-qo)fsLuTmEV}NTDqdx{s zZ-rcyc=UxcqSJfAe-ypLMGoyggUF^`2tT;H*{`EC6` z@JRe#+9Tp&{5B#}@_WM1`{H*u)eboBj6;p6{9;y<{rlOJZ1xn@eF4>%@4dm$5hma%5O-YhkvvDJ|M>|>GNH9M%s(tTaYRF zE&Ewt{C+~U1CCcY+i5oeZ_rVM8d3ShL?Zk5u*nCafBRW4eGtB$!DzzO$NGE{HKxnB z)-&ew3MbWaaZ!m$vpF>N(0WYb|NMaAp9~{sT8~NmtKwhpxz65*6NI3#K?s)@@bQHz zrgQ%=ECvR0(}S?9#(WO;>HVwnxljhv z@GiO?Ril2%HzeWFONcVT-eUb8&MRGD7j@?l-hOm^k8vI5-LqJ~WIQ1s6uu|S^ra1+ zzD};AlD@wjA2)sAqSp@AERX2r{q46S{+vwIU2;gL4SSR+riQj&`*)6y?rDpPDbD%_ zaK9}1%caBjk3We{Rc!uRS0=M&{tgtzF1>Y&cc6x2NtF5~Er}%aQ8^VjF~6;T+lAYa z=w=hwCKsqsH=AH4z-6T{CF^nWW2g1J;JTb--V!0+05h?3O%ARw<3D%cYF?;6jKRU*67=ZLOR9^kZgtR(Y1n-2kz;h~Iad`1)*SOf0Tk2Nxo$fiUu zTcijGj{9XBj-kh8UPZo@`ycR}zjJ>t_n+kcBiz52`y06bI``Lbe+BnzxPLD9i@ARy z_j9>_DECX@Q~R7hoP@%j(exZ}ky??QXEBvuApzIJ{!iQ z+paU%fbPe@VE#76Q>-vF-qENysL?l}A5l3sT4g}tZ$a&Luif2zoO|t_=5Zys!U`66 zMo#-v{4YE|`Tm`A=?#+^Idj_zY;)VrN-g0pnj}ZVM*No2?QeBCS&QiWck)Ya|9fu# zzLO9A;Uah2WjRj&XBkJh*wUpLN30Qg=UsYgv}nP!WW5-pA-K)mx-)b7n9H`i{XppUm(pZWhh;Ss;DYE>5u)fn*L*tL#>+E6 zFgaKZ61BPhy>9ipCE3-Xfn|G`iT?wH%UBXhcsUACpz4>WFg?qV|NP`qC^O8MgY;Y>LneLRbS7VnF(z*DI;3 z{j*b7UzWuw3ok9=rRUj#&$`#Xelh+eCKi+QIuN~9M8naEo2|`%_Q37A`uwU=iks{ooCMll{8ccu+SPf0KPpP8V|gGnXNw z$loJ|Su1upYw+BWL3MqH6b5G5{C_SEr0pcD{W?y|_Wcb4D)yh2O6I-=ad+FzIX!@% z+qy5u9XMAjhB9KBxB*4_eV8=d{yBh6dzBwv;g5y`*=d+iaL*&a#h*YY3s-|WMhAHTUkNtr@`jjLjTqR|DJsw2)Njv zwj1Xko9*DDU^6IWvT!mA;~4=5yTsC-r-&pISR6xMwoJU0j52JddcMlz7EXKbdHRQedR;Z2e`*3E1a{!|mX? z0O}qJ*2mz`N-R34XP(iQQak7oqK0~;=VK~_BdnG%1O+rPEgzi)2FtasgOKWbh^!t)d#{~B5Ua@c&Dp=vPe zk)hX$0vAsz_J3KB@lf^*@OvrFr3(FjnCt%&soMV?^JQ>u>%WGqJHp-i#1MDja$E-T zFN=@gPqdf}yhf7~aB;+F<+Olp`SD2Q#<}W;(bH51uuYS8dodj>c;8a5))+48A@;~QR>P7w!OZ=Y{`d@eZ zU(|PMWNr7;#Dl+X^ani?+oEEBPa!0eTd;|aPD=bci;>cBxl-GMIkyANrhRxO9dxX| z9LOtoxmSO}ptDVrF-Bz-cVJD<`Vr3W3S z{m_C%RL0t)N#{U7If$aK=WINE`e&RD`U{~h*bbhz0L$UG(V;+uMG*R)Y!1;w%#)!Z z6ucT8L160Mx$hxTDHOv}t;z91iz(qO#-!q*wo>>bjG2!EhY%jGJ$a90|7?&bYv0Uk zukGOV30Vtf2LnY$;a_FVV#$d_7npe|$xC!VGDnBC5YbBY*LD!)V4@yCSQZGDGYX%b z>)%o6#|dPC|EZv(;1}Xl)`Eqe=ujG>q#rayOOE13lN1P=dI9Nb+4%=}u`oc}8V@)v z=CGcfya$t?ebc&wmb-$Ey_Z>7Hy?9hLxrQ`>s6EKoHD~0DZ+FPr40XzWH&FSRq`Tz z)#vm|RmU`w(Y!zpGnx-fA+VWSy$)eL!AmXLW3}^>Eo#} zljVG9EREBfbKGP}S8pc+Iw-3NB{>Vm!4M3|1H0HdTEsW!Wbqe2=K5cpOB+C1$m(EjMY~^xbifTY$NJiZt-%7ixr2_$QV#zzxDg{hhAMD< zhHyvAa&UI)b@D5sw(IeV}fYVBHz86ph@8pMneoUe$4l@iz~=dk7@ib-UV zA7Jiq!i2*bcPEoUrH)6%TxgKnQ1=kwea1}t)#+&?FxU7p-CMR~F8z2*FzB;vb8p$5 zx$jR|Uj}<45&M6%n~dq~Sxjg6OvBu|asRVWTI!QivGG9#<2vck_0I)IN)gfe!Hgx; zE}_v!9{Oca-vwa3`H(Mze3PZuAy51@pOj6QBA7mw%I_WnjDfUcpa%NvYb`7`9mYz0_Dfn8!KHct~8gVVDX1wCfk3Q}tJop}&p! zB!u`jAjTh3SjwctwM1J*&(|AJ6cJG{J!*c}&(aLT+DacPWuB?O3efuqpqeP z?Ui*9Q0GLNqMK7T;#Fd{?XugK9=~WMzDmGz&;Dh6Ksz+6IK{iq7xM zdCz?oy$))F7IV9&qE-%KIS9w=&nRv2QSI^i<6*U*MGBzf`Se{AUF9P*Q^o znwg^ZgnllK+9=BN^@R{MTF~^{sRdxvo$HS0h@)CmY@Q16$6gH0L;7TMy7d#=#To9( zEnsmpXWX`B+vE-d{Hcw0jI~e_OKtnR^rvLn(%zzAr~MxY=qF)N{-P+~Bg!8SFQ@h# zXb+3Y3j8UP0)J{tLEESn|CVk1F}bNFp@7%}E~cfT-+nH@-QwiPg`Ad|ZG<^vZ8rQJ z_REm4=+_{QEnvplVH63Z{SYkaKRcFZHv80m>AD;zZHS;TD^LVWcAhHX4`{FE#riF1 z1ZAgU=SSU9u#pV|GLJx(vGzCMIp|pUecFSZ?Hf%CcGrEP_-B2@*e$X23+&y z7-reXb^D(UI_9H>8z<%v_l3wGrShlq{2t0b)0}@4@^P?0`6tox-YrgV$s%fi`}_^U zyN#OOxdptn1RXa*D>*bZ_jWzK807W`h)?ROUyl+;NhAmyC1v6$DQm9(QmsTBDV>kQ zb-c1eExEV}rk#HwC26DXN+$8irblqncc5v!Uxqe$MgLyxnel!dPow=hw7>SHjI}Fa zJ+SsHv}CMZjwnpG>!Ynmlq2!nTZR57TR*jCTrm%+;FJ7VU}?e0*`AVs&6BZq1~LP) zf(4sPA>^fnCod@UG!I=`)RtM`f6l-4daQ5B!EoIT8-Cpu|CVm6uwI-M43?ERlBUyx8;G^l+ll8vogVb=S^oFi7tY5+ z3p#>bLaBWx))TUXw?0JUGnv6w$0Hj^OIWR z(BQU$>3bVrgO{=9FEA3pZH4($&zXpw-|@vKPo0BE#@emO*KgVnJKScUf*el!J;>Z) zpNOQT8&7xbhfx9SVi!@qE9f}tA_=&LOi!TXS$@2Ml{V}SS$CX0mi(0>G(lmpqJiIw zgO2O)JeeeL2G#PH;3V&(;x^yIZa@B>6y{MMif0!5Bo7ifSV9yBO7QH*{@cIu`GDYD z`9TLguO>Y7&Zp_yw!|{pQjMbQVmzoLC>?P#yz6OPIQ@QwxtuD8gzWR z&VrNIj5Vu7`NKFQ%UDy#6NDiX=Wl=@43iZ^U||_=6OEru2li0uq6Xl7oEk-11M7ZQ zR?zWFi8~E7GafEFd-^tCy1%4h`m+}g9a8f6^iLWO1rLH6YN&xXU7h{5!aXSiPObr#$4n;JmN(0aPlCZUZ+9Zfu`9yRXvPt|8Au^R z7yn}%^+P3b^I=QB*{h0Go3PXI{qN^#l7As7Q&CZ zTMMU!QoYY}abQhrL9EztmO*_q3_}-vz~3`*>eDei`{B z(;R`{)RO`(qMUZJk^JCEEVU1D5_ii)`?ANeM-JD=@YbWs3;nj@)$pE#1iA2%L#NEV zOW~o-Q17{V|FymW^&UT;z*B%U-xWBd`g|zu@Y7ziBAC9VIfWKkWOn)au7(I56=_h< zs3#qQQ}f=OatwW+ygTSPVu@06M=GL0$HDM753{ijK3`-~ag1@Q-Gn_T)3a<5rjXZD$1ze|zbohBN(RGD|1K`CtH6eC=ZhLF zej$oaA$PStyP34GP-qf5;&j-3MRD=q|*BjD9C$ifxk7J;;M4aJt(@S&+Q) zPat$QsaZeW9Fu20KIu?jGN$z44+)Un;*-Ajsa19g~55ppT*x38w4&Hf$^ zig()g!WWF~L5vu~F4WCdWXg~0=uw9oxjZ|4MG6FoR|H^wNr&*-K%4!3)H93VPNZr3 zN+RIf7F6!0dK#eNQ$5`Dr!^f(c^KbXa0^}-3^=}zie!5{bN#jscbo0WZfsZ6X8#c) zWMbMItnx&WvKn72=}@Kxqy`}ec%Lg!*`C=-<+FS1OFnvpeBm#Q6E+dXZRL zOsqWzY~5D;TlWkjGQ66db~hfb zQvTE&JYe;A@a(1}%I>yxKLV9$?Q8llcV*PLVjac_FJv&EEw7{7OVq%`5LtLk`!JhH z+t+3)T1YuUEU7smwxqb)lvKo)me)9nkR^l9kZ`gH<#1R?4uIEU24KCaLBKdXwKLA2 z>3PLpf?r_G!f7wor_orJ7fN$+L%@8fq;7BA$kroo@nW1Xs!d@ zo}|T1P-r~xb)ARyeDroC%5gk<4K~>%?;7Nl>+}e-KXn!S@y4)@52VeYNoNZxcBkvl ze9CFC>y-jgv?aBa=Uc#_pF|6<*6=4lYW^15K6HnjPfPmmhCm{Y?YzSp3#t&iliAYjd-WXyu+)^=p*Mb!K# z^eUjIDKH<*d)f@3(0@0AuaJl4b?mzl;K-gy*}n{BUxDoIi}^7g_5;v=X{7i7;O5F{ zfyh7jA7AjtzaXEU;GXmu-XngfLz;kj1jJTqhsb>2shiAjsN%2t8YN0;9D%m1g*~ zb7<-MqZmeS9Y&qP0S%f8SX50T9Qi~QC_0#)tUL9UP;n94yg#;uQSw7S+IuuH?cxbM zY<g#$ zaAkiC#ep1CjFn?D#c0eBqrLI)`;J_+&O)pECwK6@!TWdeu@iLsX#v?cDkHH49giW6 zIT~bZp;woX|I4WPgv5#SFe;=OYD*VtQ6!>1wXXHbl%E-sys5dPcF83MAO$DpYesty ztQa}4T>0*edAIy^!j1Hl`DFX^2U!^Xg#!DNh`2xQ#L9jnV%Y0ZP5Uz3 z8z(CSyqpu%W?x4bc$}m8J|zdbdg1+P+7$Em<4i--RKz*l$Xv!+fifb?Bhxg0K(p*) zXgeL8$0;<=GqU_|hePwG4d3ZZDstkDozV|k!cvS`+&=+MDo`+yeG_? z>`J_U(Ygz3G3w?vi{33up^#iFsnklP&_c2*eePm_KdW`-h>_Td_5S+ZkF{OIF(K$H z2%|4xA8k(4e7Dp75j~X0&tSvgm&)mJRS)Jlxo2K|7Po1`v14I)phLUMO*md)`n@oj z?!X#;NFoMXC!Sl;V7r>J&At*PJF6JSq{cr zh^|4DBt*0;Z0nK6^9_%9sd*^g)N)z)t5YuiHj)c3Y!w)oL1DR>+#1^WXsAmzq&(VpIP_{`|%SP}lc=mugPMhupXOlS>~!i2*5 z-Fhases$uV)ZrNq<0Vz<4{=C_Hz@ER1xb)kSo$TO#-~2(9q`*4zVMR-Mj7wCR-&%x(4LmRZ$j&B%^f)W%;!kYW_q7TF#WGhhh`js zMu*URpA>XhmyW$M2dC+C7+F zm!+aQJ;;Y}uq2@^F5Y#>!5jBH+rxy81EHg|GCnfO;7Rs3Vz3O`3CfHKuUbcIPzc^J}{cdf2_1xiGRHjvA);Cwz4c|hB15JY< zEWBualuAU9O-Ws6%L&I^;A^f?NF?U!`sUhRm@5lP3JuJe2IfqKITPkCnNQ~NvS`bA z$d*G-OxFSjUQC-a99Ua;bT*=LNoO0^b80YSW=9fMF&-$MOqVBFS+gsY_EOpzN_&!q zux2_+G~kiW45hs&_htC)_Jd)*cUju(pF40$DJ0x6L@RAHCPn1*{c!RX+J7OohcuV7@!PNsiJcn zW0|O!v4-C7-D&?2510tXZ+{=L)?KzX`&)=89#j>UOjVwWf{bNS$^9q+N0v_ame)1+ z@J@WoM#`N#Gs&ZE4z)P03su}R$@h)kY0p3n7#ko-<49a>b{iseK1Ami zc=_bBfALww^Pm3_k;z^SHVSJ*>%(M>rREq5Lx_g3OzY%~!i@)8nANFX7Bgai^2 zNJtqR)(1H&o^!6>{tGY7WQOmy? z3x^7n~Kte^B&Ik^W(SbnPdoXZwR%j89bb zH@5ae*9`>qXn#=o_<}`G?MD(2>7O6#r#UXtQT>t5MOw41A6#6dv-*SLBE9ADesFP- zUe+HJ7wP(b#1P;jy{JDZF49eXwG$#BT&dsDH;puE|J8-^q@Z~@1{a%5<_{=gSO{`YL(dm>1GnA?8k zr2`O`yx%lzWf|7q>Fp8ioqn%u?+V%8Lq9l>?M;Qy!}v>qlsJDQWqa>kejwW`{cS{h zzqv=YcguDm&%7%RWP7t9zA*mE@0RW5$@Uu89LV1*^K zgr|Fq`k?>Eal?cDCDDNUpg(UQ@IwAShUMwi zWqr_J7B_s!N`l77e%$`hPkgc$fav0N?{9 zIYGyeq2ey12m=?5eh&Y9(!k(v9Uy$u0O4m31m2@tW7redLVni~oyu7z?_Qlxe=(T< z=^SXX7G*&if^REvx&1|O^f&y9aGhL{%U^<^Q{V9j&Ak2BccTuRsP8YznTefl2X2uo z!ZnPzDQGAn2=RwZaEVq_VxT{XUqS*22_z(tkU&BL2?-=5kdQz^0tpEuB#@9mLIMd1 zBqT6c3D5yV;+K$sl0f?>78jjPC4LDBBqY$k1lso}#*0}>>l60FERIAxA%TPh5)w#A z-~dTr_Owz@W5b1w70b0bwRP1^r6skMjSWo=OPjStwN1W?I&FTlud248G|!orS30|4 z`Ep-if_yh&3_YwIiPd{xz@E9)96E9$BxowfBV zD(Y&hw2H7Y*flmEc|NpJ zi}F&I$DD9^h|NZNIsW<3UM*l&A#V|KOW6XHG@!1)KVRlfVpG^eHknQ3KH->zcq!`E zgMvEVMm5qaIS?(7?Kei^I~QT-9Psl!wv^PpnWtmKBgJAY2haT;|VG`8=ZX%bcPdd{j2n zH#Ij_fM`+Gl;%}J>83KmHHtj^ygv??3w?8S?YlaZ$W&6nxDczu}CxiWo&OsC59 zVwwIx$~zb7EWm5Bd_O)WqI8z3kFXrqz64lW8>{IAvPR2f3=gwD*~+ zzD)1GPSB<1gC3by^MNkYYCh6UA8eFqH6PqA(`r7rLDh#|YjEpT zeVJY-(`r8O$~1}-zk~!568M%%plnj5Y1NNE*o$;%RWH})WwYcuow2>(lh(HzelF}4 z?T;wEQrfc`#5K6}vYhM%xfYp5^jrPIa-aX&B|m(}gnbkb%bc|J;y;OYujbnqiEmN_zDW`ICPmOaN@vOR4Va%Poh;LfWqSWjf*<yT+Gqx9|Hk?{dm62F85zB3XyNOIC8$G^9Fg|e&O z#)hRh0uE=@jid(G{wrZ0!b|&4StLlOtlwXI%6@3K46Z%bSFGPZM+u081QHTRNZ`Oo zpscu|a+wKL4&t;Xcm8IO_Ak!*vD$Bsv%ZOR9#!_fBhLD<+IQYQNdDujAFKWLIP1sc zKhFBG+IQYDNdDujpEKXs0&!MogG7DU9%ucS{Kr{8CjWO1lK(jC=gc>@gyHrj>j=5%s=>qTwW$Eu2%^*woC*78X|^U^IS7KUUr+Vo;ceh zRNv%J+2Kq{|3KT0l!wxf%-_Y=zme^!{?X#BAFKWKan_I3{)RZ~$EzROL*e?7CDTej zGG#iFo_}{*>4)s&2YgveJu2i` zgLp1ni%h#^`AV6lvSc`~Oe6ZO{?S=F{nj5Kew2I#RB7MZ_JrdP^zjZAxG+AY&HGMy{aHp zH|UKOtF-#+i?zDy`U{(DRGSpW`c7TJd{f`6tM($p@51-#kv#R4j`zELg=6l5qIm@i z&YY(e&z-+On|BTN~*11`YWYxKH6i)H*Us zWA(neI*oroRNbgmR@B!wG>fFx+@MuxOK{1>GV1^OhWZJYR5vzgO|_Sp_25Y0_TjDu zx);KW7U}MWX0+9abR}=O9=SwKs8mC`0XY?LOHi``kjoGk^b&kMo4_vNSO~5OSSb~a ze#Mg1+vbJ_t*)W|LY4h>-oN2%uC2pWAx2YCBi}~-T*>u^ZUhmxctm9^MyBkC+UDxU z3K)_mt+rm+4$Ml`8r^H5Rn;zCTHS~{QZ!rw(Tpo1svDbPU}Na>aD69=NV_Vy4mCnI zG_G@IJr{SMRHI}mAn8sLjo((X6ltm}?n5E{Bu#4uF49^mY3ftQh{y>3ByYIsqQ1%7 z&{Q4vtc&3Lqd%PPX3kkX=%CTk1e&U1P^9MZ%7*3M3NC7DjoOR62Zp#@4t#VUjFMVk zBT3-dz2dR|J@kZoP8BJf7mr!neb&Z%jr4*yetpw+t=&j}e#g6eN|uDu+dj-K{qfe{ z8RcW!8*6^@&qs`O%Aarb&P;j3Nca3^$LS}v?K9HPmn_L#eDd2y`ly#a`Qb&6gwpS! zwamr;G|C@(|BDw^?)#UK7IgO*X+du&eH&W;^R1!u{`tgEC|!I~TS58XLTO5M9{H|; zkEAhXZ75CBdL`#Qqa4IPxNAiyE%<%kDE~e+?+v8|y&o9mLY|?tsQEG2rKvQ1g54+=@S(JzC&?%m@(QId<^&Bj z${GJ98)+fGP+H(0W|SZQqk~_3=HpQM)TtM2o|~Ftlpli9`EP{Mg8$)0Ial|~Lg@{p z9!Y6Nx#*uzn(<${QGPoOhk{UAlxG^{d_3ld(pFAzD19dl$Mqu&c+uaX^b;B=95K=; z7xaeGoc;L+8Rd-sMj7c<`;LZ2gwlL`FLxN_VtgEIqTqBR!e_Tt-^J&oa`C|K^6LTTTy8voj*np73->M7rgyi1K+xdMW*q<{N27zYP&- zwjjKmEeub$M5NiGi1LVZM?~6nb~rp+9G>oqNV9Xo%bD?Okuen-1z+EKKXIShzw16V z>fEIjwC`J0*0AIvhWo{g1zEC1oVULD7jf?30qhNMdu5vHew{z7MBX#V_Kx5NDKvjf z8FAu_N0TDPi>u6~c-itKCaecSX`X-4extnSWqE$}st6bVRfH`v?2zGp8A6QwN1@rx zZ^rwTSQ|I^>Z`QonrdxDMPqHnlDcZ`7!H4oc5y`$7Rrr{K5uh%)kJ}Xu>}#J$7r=p z+LG$p`U^E5mZ93kwaqoObr)H+xYMu}_Y+=X!k{qq9g249eAToGESm4(mV*_rW zt6QZtRjfdJ6?Cg&6LySCef5=eo`ub1UEM@YTTlbS@ZU$5EdsnkYpiba)$v0G0wIb` zwW_Ks>#$Q03}_AY)f^82VY9FTn+8Hn%$X~x{cCvT3iD1wwiH4#F)gKU&ZCzWfS#si zu{my94y@QVS5-7uXw9p<)mjbpRR!;W3hYB65J-)RA&9w4(Z3J`^(U^y6RcF!jn`H+ z__QW;R$Z00yrO9t*Mg=7Ut=YgIq3v%k~2-I3NOB7_CiaVtFRFmD)@#w^ln^bFQ2-=h*3KDYI*EkVE3+cpIv!X@e%|S_Q%4G=O@y z0$a37u!-irkAA~8mpGxM=sm*FfOE^`q*Cabs_L&OPbFnB4#bs~;VK{APX!Pw)Fw1c zNSs{YORASPV2fGXEG2Acd>DeTcI2=tLpK6xU(GUgUOUeR6X|alTQ69T@FL8*$%d8cSgs&f)5@C!;eE+O3LH5xQ5C_J4IK zS%utrIH{YBummto_*cQtatuSD1Q;U}^h^MbXcWx>HrnU=Koe1L6dT9y4xNDbIJDLK zr{qAFsn%C4H;#f-en~@>560^ZRRnoWSP&A}oQm2yAA0GiaaGy`jV?%)KhZCSox|xh zwAUvO$(2o1zzD}p%v-D>RQ9vFLK#ujn^KpcuhqCDvr1dCO6a*^pfDDV_IlX@$~XlL zq!eQGPSa)}$$u#YTvxams`o8lg5ggCQw<`8e3~ZVRgf|tBgK@PQczU|(we4WWGWa6 z4-h|QlsrDJ3IDusmsG(cC;v&vg3yS9Tn0Xo?ClZr-`tVm&pG(>2t#BcvR1w!;BSy& zrwn^!nER$ES2cuOl%bdX7J6*LW=pHAY%({;WQxgBnJuwGC_{l)>Pm0444*HXtxcGv zQIl$g>G_R9ulkYC>q;dJbyH9bW1r4zN-++XW8|HP8*%9d-uXD6FJ!ZDAMO;~t~(L& zV*H~Y-KR_E_h(>4&jnbWdOx^VTQulQ6OX6Sy6? z5V=jTMs(Zm1Yn#5pBzyVtBnej(Cx#7eKKzHjf9+6ec_qj>iW~GR~4;18T z6<*KuRf{Z6FY;%jyQ%@m)ARAfVh(sc8_zT5f!k8V8bCKmirP5?sVYz&?cQR#eK>S) zarmvp;_hK5>di-Oy3g2)I7zqfpSU@>3h;D-UkLn-VHH9>C9)&?QUS-x_Y}?|IYBJ7 zST|HpC3tGVJ7oxej+i-BgbEMOREYx^<~qaMF;K4;`I-!kd=;^%$iFwtl=L}e=#rsF zhUGFm5LA9X=jibrf`Zu+!K}O=2kU&BL2?-=5 zkdVN4Kmz9JzjM+M=6T1;@GexpoKd|R6WmHuoGKG8^$X%haTgrnkM=Xuu>p1W0uJw1 zMFS1XBZwXoTyl?Sv~d@F#w;B`|M(;r!_{ zGuK;B*igLr(FHZD-k4jR1aLfmS%?FTrqbC(v(79jEo`Xde{QC!w6PlRAC%6nsH?)8 z7iDv2mz0V##M0h35|+us{?f|EYV0w}>S~uXRy3|E#d&e*5?^gyRq4tTr%WiUUgEp3 zRNiqb?@m-TCwi-v2-=TFK#qRLiXh=9BrsqJ>^v;|+$b_VV1$VZ2?_icNnqxf@bMFw z{x1?mg4H-AU`evDBrl#t54W)4JhZam^M-mYRtvM5^D`|hlhPShmXSByYe})Pl)NMn zjzpMlW$Ae--d^PjUX`2cQT@pBBr8j5w1)6g`L$?I(WmHDcvO8#&y)B@0$xM95$SQL z--xuTr{Gl>4G;07%2jf<&O01%-Xb(Et%Qr z+16~9yB#FG2bVkMODo#|7fzp<)&n1p+Y`yk>YG{hVSQ zYlDZEq3TSDGC^6n+?1@b;6Pdgvp z9P;YOyOz9-??A1$j4|fDgBeA%ukX= zK5ZR!?!hyYvOY;V^pm9Qr>$eo)e43k`Qgx<4~HK8;n3Vql8$@YI{w^=)5d2Xmz|q^ zbaqbmk=a`InC$HAL$kB856&KyJu;iLIyF1x;N;jc`6l)IKdr41Ck|nUTSl>ip$}xQ zoR%Rh_hfjd!dcUG^bXYX2J26fSZ*`2E`bZd#aT)DQuyL*gyU))?j21y z_YCLqSj%Cq>IK8+qiap`7u7*sj^kQ{YTlAE=K1qvxq_pR;AkF{bQx(gJ_UcRte=N) zw3Us%*5T#+fDYnk(h%b3MEH^)n&a~@$CFI*GQA^?L)e(fVb3Sn+@iK7q5No}TFWRrG5Xfrr&DbtgK6-k z3~1eO?Z2U)qV&&moVGuOXzQbYz987#B>NDS3TI7kSvH9NQSwuv>JJqv`K$66a#m|Y zv%G%|>R9=mL?a*fye}Kkr}4;rp46q0vVW)^(Q>UxC!)x4bP}~W27do~UPQ3DXTV=T z@aa8+(Q_rA$S{Vy%yN2~=qTSqGzd9G%7^-bs{N<1S*TG`0=gzaCQOtQKP{{O() z($`;zHBSdTx`86cwg(IDUUOqFIu9^?hOJaO7{QO3{(@md|7q|S!P(L~Ye7G|Xkhd! z`NYxQeZ0NR@OSX`GO0Zmyn)C|wG+pf8k++C%8!OG^xiyg&*WvZjIyZqC{NlM8dt>U zwFpU`jnW>?llc@WkaMW;HG$g;64%Lq2Yn^{gq)ZmBc zGWV6DQ`MvNNZFTp2o+wHpJioP^F|3BAUtZ_q3|j^Dqq!C`H^%*)}uXRUWRwX)FCVz z>ve}*ufLuOnX%k%1RulM(tBVDCu&O|G}yyoR%?x|-Rg|P#z?wG%YGr-J2Q>O#w_?^ zY#2N%nh&wEL*A3?Wa3%nNAmbp`$FN1!TYO3AItp*g7@KIT#5G%cwdcoK7PT6dCo0J zCmGCvFJv%6_6y19d@9Rb3crrZ)7M|b*H@=le;vM;Cp|Ocyq@Zn|D5VjQMe9{H0hSo z5hXtr%6x9C^29u|kK_E8fpY})qgBZGOD?O#FVx@qGzD1t)8^ z^med1vCH7MGamYsu8%kYcJF=%-|v(F8_Qh;zZ4FKc}sDANBxJCI=|!nNwmzvxNr<% zj#CE&t5Df5b2@^qUl6YR zyWrmo_b8<#T@N7+x}24qu5q@$c{caayM!h8Q}RawM|$P~?4uH3Wcla8zW{DIr6j#e z5eL1VzU8QNitmLc^yCKJfgiWYOF}l;JT@jAOnP@B z{26f8bcT5{s(pt=&g=uHan_}1iVP#`t8$tzV$imm)3yixUQU}c7HtZb3cm(9Ej)ze zbOHP-IBR-mEE}t6P+>f@z%H8mWD9TWN%)<-t#a@Ud(~-O7sXzwc2pQodjr&wv$BZy zbK#f6S<^T4$2;lgwMpL5GtsxN3%#Rfh&4hT*=Sd2KSKE!%KT^O&{RAJdQXl!j6*Ru zWQW%OL=V>g2;Suc^$7d*gw<-Xqa<>UpmTa!v(uX6@X^G}(eTH^VSfk{1=(J2wJzyZ zFGLURKXQ5dL@2ihpldY#sQ2M`MtZQ#Pj z@7qXDEgZWUkCc<@`-rjB%YG<06)L--(y>CruE=NXvFwkkKUg}bJ&cK%^heSiZ+og9 z;coBlX;vr#L>bUnUNWd__lO7)dAbza+%J<#5vT zgSeg(zL@e*e1FyU2ih;O?1<9C{`y71sW6rv#mXmo&3dZ%SNJGB5_+J{NeKRa=v}0I zDSd@W-tyduo?B;b74tZae-8;CKVw`F-2KoW#it6#q22q@uA+nRZ#ChM)}C2^`=ZmV z7iKzN57Al9sWj24=#X|}1lk`4drI%`kWFqMgXgcC;5`n9mA*K#JI(q!@k;B4S>inr ziI!Q0S=g{8C`-4n^jQcql32!qWR@{yD2+Sb{8+n{*_)G?bDxEs4)-=t({C(XWS#}* z=|g7?@zR+Q{l=!+Sn3BhW(UqL)cptC_#eBg_g zM>xak11_>Hi_OApSd5K@XKO~eZebt6Z8zbL%;R-PHdGhk=p*bbZAu&7f4GvrM@4$1 z*@#P&v6oEnx zn}m5f&+6fP-6HuzIJ#~)tE>8>#kcKDk%=4ei1X$w-BeM$;zf5*aJfy*2l;wLf>jj@A>hAa!q0^K~kLbijz zl4fCPlrQ<}Gh8C!P(K#jFv7DH?~6$JjQZ5V7JLR8>#RJamMv!aP}{>WM$94MP;F4C z$`2dH4znE0GP=?_hj$F~CYKL&CV2!eqo)pMId9HqInDD}PSsf~XNrgASk7P$l#^`B ztrCvw*z?epXAB)H$D)dUqhTY4TKpUy=9>R_+eeycAljCg(u%fNA<2Ih;A4fj3@Dk( zM_AYh!mIj$@TqoQm+h%=mQ1ViD?;gERPUCM{NI5+p9j7?kUxd=3zI+9RWztD6?S13 z^6`8kWowexUe2pA%OMta$P(l$8siO>Y{&+x`V^8L(EEwe@F=(=0f#3|!*HffHkf`K zUX{->(Srl_RLf(0zs=#43{z|@Wl9o%KY`~*rYRFY8oi_OZeY^2RwwCAy1;OXzBUQXR$V~-$Sj_^lI0rQ2Gtw&gNA37n-U2rY@eYLh;Brux-NV?iaE}mvgtc%tBfkaVZE#QFA$>c-7vSzDoCt0A z;!8cmGZ9XKdmAt=gtx)ffv*mPU%=gs{LJ4nc2GNGm*F8?Il@2PkF_TFZFvBC^*hud znLNbUryHRIh;P`$*q?vT*kZtVAA!u^G}P@v=zJ9Yi#J$22ycVS!IRGpgrgoqALHq- z6X6=T&q3P;gdf1IM}Fqxz}LapF6tMA`?r8EwB^}~H>2UMLmxS}G4>+d44eUHZfER1 zxGZWH;p!)#Cupl3;aNL?7x-Hcj@=14;GEin@Mmy)@m5AV!jIub;f0jUU5uR#=f(N7 z7vVqQx&V{8o3Q{~HelKjPI!{Bm4NXed;l&VFr5f9{s5fNa}D9?a4zs(j_|~%P#1mV zML6eaj4AY83&KUufEVPiNBAIIG4%z)J#a1Hy$j)caJ%T8xM!iya3A1}QVn4qTnF-9 z2!9MWo@9k^L?^})?Oz^t{w3W2(w-W zoq%y6ocAj9f#^Z_UKeCV_+Mk}mv3O)fgb0Z7_)ze?tz9bgkS0m%!B5A7;D{V8}QDz z(f@F_A-@G-2i$hVI}v976Lcc3AuNY`1aU9I7PwUEM}!;TZYEhF?10Ngyc1y;+ziBf z5VC(kpApYQcpTgdz~e-C8r*~EBM-t=a0?J$k8l&*2SfwHE;t>1*MpF~1DVr!L8!rP zr~XCgf@=Yc2jN{k=sVDs`7UGC@4*&e>~tV}-~-4Odg%O+v7;u3syf=FZ+<2l5;h{Kh z-A;B7;WKbE5XS*Ey9(|$z_cU$16(uWT?jveO9h@xoTr`&cQxQW2rq|AMSMNN=SG4a z(BFe|=i_nq|0d{kjkd7LBfuBpJsQrXkFl^~#5d$x*xhh1qc7SKJ_@%Udf0*RX}FuA zhn)ytfwLjrh47zn9>DY<%s3XbfgTOv!^eSs(5W4d_;?F@0rY4SEUfwjv_*V5L31A3 z1578vb0#B>x-AIbhg(2)Z;FNe8ZMjUhVX)^cqRsz^$0IN5qMCy1L1E^0$;${gYb{} z7FLRQ=E)ZJD%>MP!!!$<4p)V^2jMcf&jHhd@V9Wyh<6}-2kryFu<76t?q=d;hJ}3r zR|pzhGcD};Qy^Q!dk~Iwp?D>2dE$o^i&;Y_u1%Qw96J-*pcU0*ha*?2uh47zn*O84v_yyc3#Ic}bX>e1>ULiajZad-{!U=Hepxe&> zZ|{7d+p6w6e*GsLw@o(zDf9Sugh^L#3qeV}9GBzNa$=_nIH^b+VrYUSThEpnSyCj~ zQPPBpVyLz{pi-B4G@)|*C&sa36#^KVv}(ziM+vA9S`PwK!KE%us7BMwrKH>EXFWSk zfdjN>ZO`hQ^Ude0tNZT#-QTZ-xp^hCkNjcm4;SRKm zI3sW;3KK&N?nZ6YiNirO7oUKK&;ooC9zkK+Ou-k>ar#Qb6DY-JVg{Z@9`?1`n4_*m z$E9ER9b_U8X}IV{&QX+GVJ9jfpGkPGjbn#xP4H%Pk{rh2e<3?@8tggBf#%{P@cXC_ zpMez)+F@He97G2tX87Sc>d?LsHX$cWG+Ef&+i_2y2=RGp;qenVGpV#w@LU* zWZ=5p;LK4~XanVT*o2NreYgX)atub`PBcagF}NFr@NqbZjx(+VJcLT9pM*zHK0XCs zKnJLwh9}Sl_E!d;Mt#JrG{%J%;0^E+G{)RE!Yj~r`OJk&k(qgJhO1B;?OWkS6eVwV z*o2&N48k2KL;VQci7FXa4DLozIdSy4* z24a)*9;`(3D7V7f(Jsz)arh#-7@vVxH8Ni2l@)G8yNJyWo6xAl40oUsVvE3?Xo47G za5w5>uEyaY>L#BFcnDoA`xG8Qm6WI83n)QfX?Ow+%Y25X(RSigE^>})*wz3qK}Xrv z2)~W|%%2S0>1N)tZ4%l(OUxW2G5E1f>?58iu)?3C_y^e5lcSzP?UWmuIOii1Ix^T;e?fqx&$QKfh@ybT%garit6F|G_;(#-yqa}N9xN=qI1JQ|gD z;F6XcmBd@&R%FM=;KQgEpMrT?a+C{ifS*8Z(k8qGwM!1+!$^^z6#NyMkow^qwHy^t zZiRiQJC9t!bGDLyyb(5_R-Sx~z)@5w@xvwCIPXhe@GjKO&y@*yO3Hbn*zh^_H7e%m zdn3F8c_=r*r6@zcX1EINqJ1mei1K-M+79nPPI4ZHPf0mG4d-spQ5|e+gr7kXydUmD z#rOpL88YD24t}qF6FDaaJDflsiRbfNGaxHI0?&&uhl$M$zl7THarn^99JBH)-xs(B zKnA=W?n4KOISD^>3!l-%Y=m|+M&A4|fsWym@FjE@pMf7}Wj@IH5dJL+|C;YW;0EN! z`{8|P7@vZtPy(-R%~6|CF~>*@K8Xq`PYZ9O9B+ayWWh(^1E>_Ag0G_*#-+Z<+(8p> z&=-6dW$-E373I7n$1*(kAIUSvg%Mg%4d*L6jG{Q@arhKc^4SFc@}Jm8@_7M2jgGOu z?C=h>f#W3(pF%O}q~ROL#5`1A;yM|5m`g@@6-rTVhBqK9-VV2+R_a9H-6%tO93Db3 z_H_!LKt|c`ZN!N>*uM!_x|4h|b~_wL7WSjzcHT#$vLB)44vt^;qaW@>NAqYOK7vNb zVG>>xBWChrhBqK1<#xCYnI-3NH`+j737AHT@(f)5W#VUBI}D(4avp(scM?Bwn&6YD z53jyLY-ogblCZX&xkbzoc{vV)Zde%zKAmT1biIX@hMo+ z#lFK^VGl~AO=Hsj=CC6$b1u`0?Lg&%t4f)JPpIW9M|MO4ommq$+;cAj+E5z z<2-=Ir9KSY%iNIqaB)9v%J+Eib=1eU#(i9G50D?W^+V4f?J&0!a9}@uvuy^xK17^s zYfj{-W#6EjZDVlPeZ)XM)9{u1$qD_M4sf1-fLzHufo%^m7pb3uFQ9hzQ5v2=CHM?H zjiPc4KE&rfD#RP$CFp>R3toW^;!SWVY9mfFT!q^4R=5#WbG+MO6RN@c;SRJ*<|^EY zy74i%8&wi>91fytd;%UpZS<9fr%^lJFiZ?6B>lpTXgl5yccKOK6^DmV2|fi+pjP@) z4>K0jhBv`gXaRlM;SN-SkHHZ%%G^l9H&6tx9^t%!;&?xN4#lMWo0OvhJ{SDZeUN>J zPrw&ZD=}x_rH9zB#A$*zqWO{&cn{i6JPG)sloLY++P_5}*fs()sDy0|-zFAxT;>uq zB*~kM1;){F_HPod`wr!@E&RxL8KdM1K8wcKRz1qk&ZvxSlW^T(%Govo_n-nk7ZUJk zG*`~~F!x`n!#pv-#mLF$f*IDK4(j+}D=K8{F?aw)$xjl_e~fvKH^ci;2R;R_{Ws>f z#0mGJTFMhJI+DY8Jj4d?{CDCZ{uJEvIOiJTPs8Ew(HHS&;K&n{6Tdn_o{@#m7ZY5K zwv%T&ya|m{9)piR$!9L!_!Rpt#aO75fUka^wkS70O)RL480;{N<`Y8%cA#UDe>jXv zB!_TR%84Nj$I%F%5gB+IrSR$*&ZB4)Z-VPlDaWiGei4;$jU9szq3z6pB>V|d^p$~s zb(CBYgAslT&7&_XY)47jNx+jROnt+%9COG;9Y5?v8R{g3C{6q72b^nB2ldUc1x?U? z3_d31G8WkIL&nLrF?hi!*Ev!jK8Ebn$-qnggL1C7O>hjEsBe6Z&tVjzFT?X(L!k*d zw;W?`pl!^VC<%Z<*&;iLUT#PQJFEhLajk9eWzKljCZ$ILC0L9qW z4!cl>ZIdwXCCb^>2&++?ZSAlXCD}Fx529MOO~I4MDlxpw*io8xOt1!7XvYrYC`CI7 zm_cF5!x&>iqm)}=3`Ho9!~2kh@+5p3waIwl1wW>J%1zLYqV(&By=YwGho_{Rb_}oZ zIfx249_{e*pK#vh=Px@6qa^g%Td0cv;Xij@AH;>z%3cdFUy-` z9o~XZK*KM{xzvYGp#gjv_M9Z=_zbN1CHoHVhhIhA_&9tHIcX;Y$4_y+iZ}gtj`|_; z;0+TwY9R{a?eJ@8J3ayHe#Jb;$6y>ClydkuI*d=jm(c`118@H|`wp+(vhwaFKkHf>L5TAl4kP)B! z4acR*RZ)BdF3ihSmH0G#ndcikc+(sfwdA>iV!Yy6kxS7oDTfx+jkm%kbQm9jUFZpX z625|t;xn-DL%Hf8-UPpf4oDsNKWGeZn47ECq2u@%97QMb8F)SGQXa!c;6rEtpN1b{ zjgJMF(1V^DrB&uvg1gO{;B(#3cy%w=tl`FImNg~rA6 z%*`VxjnBX}+%p}<`{8ahj8DKLD1lEy!v%Z}y;{oQ5Q^ZF@PAMYZ@4g5?L=kx1pGCsl=6#m)pAsVw?dXx zRTFqKJb*IdFJU25q~_--J8VV;_#~WjDdWK#VHGOG$6%3>eJ>vV2pRF}GTKL_coX~q zGD&$+uDSr3r5rwvYVjGk`0`w3$6Mi@$d6CJbsx)BZFn=!R%j@WH&|H93PtcHxCBL| zPHnD|6=>spP6=fpTJz~FWj)$zyik^)?;ng<0P}X1Vzzby=)^5B|R%1=z zg|aB?LA+4bW*xx`Wr^0Kc%iJ+n#K!d!Pet=p{(0Fffvg1t@$~u*aT&7(cv;Hm{5sm_dth17Xa$;wmt{8Y zL1DiCk)=!iqMkV*-2M<|li!=bC(%*9bCyS?&(}Cd@iT%v z`@9^L$nVi$5RLI&w=CPxh1%Fwmfd&;jnZ!#<~7ilv=2Xy@+p@!Vd{~c_GN92ub^V; z$aCV4A}4*x^YXtyE`HXKH3lw6X1V5sYtb?JZXe!)MyVrf#yyDQ!AHL9KXM7wLW}m;DRJ z#ODz|oVSU2F4wED63rt{Sx+#8Jj@eWv$9*tx%QKXA)i4ba%~3r5>=&)#1G9Va~a#h zoydPVvCaOQ&A@C1W-~CGfj{dET-ciZEGWD+%MzVybT;VRrt>bH37wDWJf`!M&bhZ` z+q+cft9m~_(0N$rgF1V4w(E@QT&UBm^E#a#o!fQh>;3+*cc$g@*>Rtv^S+z1uU((Z zGNivQ)%lwp+46Rs3w5^X+xKqIzVFnzOlOhKT%9lJ?I(5Kqq9}#YkIvuR(_60vg3F{ z=iNGQ(%GQXtk0Jf`s)jIDxKqcUS8Chdvmtk15@?>Km#=WANN;uOLkm~buQDnTIY>A zy*jt)Y}47N^RUiiI$zbvFDxcAHCKQA_!qLT59-{nGp_SRoiUwX&{?B%vCcxB`8rSP z`{yN{kLi3w=YE~Lbl$1+Hl5pbdUQHeRpHtlFhelm|`wl zH}l_Let$oE zzJL21&YthzJ}>W7I(xp)p0EDDp6{DfdAZ3}?W^D94rL$1y|${N!fY|$pi~dpxxU~+Z0p-gpZ}2!8gKty8LI-NaoboMhXUO$7@7u1XLe)FHUr}MZ z+IBS|ypmrY^f!m<&E@k6z+G<(hWJChO?Ax;=E`;D^W{(S+Cl+`I}|imW}};mv7*8< zIfkERTk!raE!eJ>OiTu%j?j)43WoSA!P8BVmv;}N)?!=DNY0y69&*30O_x^+2dc0cc);A~HB_PyKVd4C;MN{nTbdtE!TN8VG6 zm6Ln3nmPOFU_*Gi+jmRLYA0Ss-|-~v&6P2o9C7s)(dEHc-&5#-yx|9 zX#u6K&u?(l1^G4RoZ#jF{pXX>K&Y~=aSealoPtGj$Ta6}r82Q-_PRVsX2SgWG3MXAj) zR(HtFXtzzjrFmQ20iU;t)GDSH#s##My1Xj>~TSV6H8oHL~*=dC0|wj?+eF9Ue)8 zjSm5Om`r?~qkfZ84@`|YTXnLgrk>13AWL*i2C*vJ>tv!Orb}{c4FOHFIqMp^Bj2{A z$+1cElSbJu!@LgqJ?@ZR;GDCiKB(`%@1C_^8rBvPqwNj+=8SFZ(wQiGeZ=3M6vgqj_m zYn!zIXRQM{Qd2+lxo=IcU*U8TD0zQ2e@)1<+~E%~dzb4+@-Zo^_W3q7`&a0htMZ1V zwU^}`y@Pe$EpD%q=WOS!^JY(D&gs!|ZX#K%RWN6*7JA3GjS|iB>}f_Hgt})=%~Y1B zin!x-Wl(?N3#`x_66;i+*W^zQ)T#voVBdPdRA2`RuW4R2|ErBi)$Mk!}(<~fDx z7gD-*E3?0;#@(b<1m)x^j%&V^(}(cdYK{-m>{QQ9)(<(zw0|YbpR89mOG);`JazI_ z*Ho=pT~+<@#gmgnmB}XzGy0u=u9+>L&A@C1{&X`CHYhW9>P`Rq?bpwqclP_HcX>VC zkZ!vE?(B81e*68|*MCYG;C@WPL6NhgVhw5vOm9>Efqd5D;5~mQf5ma;L^`{H*;jf7 ze*VpGmz9T`JjNC+5acJSrA3Ptnu?5?x8CP;dmEP)t*cpaMQM?d?0)p@oWX}}v?TGSlyUKOl&X-$sc6;1B?fG_B42wlOI=~a$k)54ZT zMMkb2+ztFdciqh1Xv%0T3k8~kA^DhpkF9;YXmUHY405d*aEG?)uPF&=o15uHb6NxL z7A`UxwczxdGvBV7yi8@-)mn?@F?!_xrA3b5N^gsAlNKm4HoGh8<+5*SQG>%1)QUb? zcI9;2XKy^+{)`%L>AmdAvtli~a(d8gUUubFK0i4-J!doUXPSYC+4rkM@uE5APcv zm>4J+EF3HzEFH8A)(*M`!-LVmj={dc;lYu?QKFe39v-maeqW{fI!8MT_gMBs_gMBu z_m1o>=(F@i`$qZ-?zP+-y?5l^f__VXl(q}@S@uQujqEEJuna^8M(Dvpt0R*mi|!xU zUod1Ha!rnqMibmy4E*{iqMaR`1@uw7XJk)7m!&J(HPThsUEE#TJ=$H|<6?Z{J=qaW z^uE6+Mh7g@BkR~dvA=XEHY2}0+@3Pa&?7?p`)v>tDwh1 zhDRo|8tonFE!g``{TKI}`b+!m{jPq0e}s(0`e``Deb!)t?1agTVW4opI8Z!b8lW(p zodbnkMn-Jys_n8%zrB&(@m{sJU~k{v#NOe(Nit5|4EG;{T5{3R*Vm^^++)gXS7*F4 k)v3BvERTD<`4>0Djd4@l9Jj~i Date: Wed, 10 May 2023 10:14:55 -0600 Subject: [PATCH 07/52] cleanups and formatting --- source/base/battery.cpp | 75 ++++-- source/base/battery.h | 42 +-- source/base/battery_calculate_limits.cpp | 239 +++++++++++------- source/base/battery_calculate_limits.h | 110 ++++---- source/base/battery_integrate_X_in_time.h | 13 + source/base/inputs.h | 43 ++++ source/base/vehicle_charge_model.cpp | 63 +++-- source/base/vehicle_charge_model.h | 21 +- source/factory/EV_charge_model_factory.cpp | 111 +++----- source/factory/EV_charge_model_factory.h | 15 +- .../P2_vs_battery_efficiency_factory.cpp | 43 ++-- .../P2_vs_battery_efficiency_factory.h | 6 +- source/factory/SOC_vs_P2_factory.cpp | 72 ++++-- source/factory/SOC_vs_P2_factory.h | 22 +- .../factory/charging_transitions_factory.cpp | 215 ++++++++-------- source/factory/charging_transitions_factory.h | 11 +- source/factory/puVrms_vs_P2_factory.cpp | 13 +- source/factory/puVrms_vs_P2_factory.h | 12 +- 18 files changed, 661 insertions(+), 465 deletions(-) create mode 100644 source/base/inputs.h diff --git a/source/base/battery.cpp b/source/base/battery.cpp index 9860f33..2d65904 100644 --- a/source/base/battery.cpp +++ b/source/base/battery.cpp @@ -3,6 +3,9 @@ #include +//########################################### +// battery_state +//########################################### std::string battery_state::get_file_header() { @@ -16,33 +19,67 @@ std::ostream& operator<<(std::ostream& out, battery_state& x) return out; } -//======================================================== +//########################################### +// battery +//########################################### -battery::battery(const battery_inputs& inputs) - : get_E1_limits_charging(calculate_E1_energy_limit(inputs.E1_limits_charging_inputs)), - get_E1_limits_discharging(calculate_E1_energy_limit(inputs.E1_limits_discharging_inputs)), - get_next_P2(inputs.get_next_P2), battery_size_kWh(inputs.battery_size_kWh), - soc(inputs.soc), soc_to_energy(this->battery_size_kWh / 100.0), target_P2_kW(0.0), - zero_slope_threashold_bat_eff_vs_P2(inputs.zero_slope_threashold_bat_eff_vs_P2), - will_never_discharge(inputs.will_never_discharge), soc_of_full_battery(100), - soc_of_empty_battery(0.0), bat_eff_vs_P2_charging(inputs.bat_eff_vs_P2_charging), - bat_eff_vs_P2_discharging(inputs.bat_eff_vs_P2_discharging) , max_E1_limit(0.0), min_E1_limit(0.0), - print_debug_info(false) {} +battery::battery(const vehicle_charge_model_inputs& inputs) + : get_E1_limits_charging{ calculate_E1_energy_limit{ charging, inputs } }, + get_E1_limits_discharging{ calculate_E1_energy_limit{ discharging, inputs } }, + get_next_P2{ inputs.CT_factory.get_charging_transitions(inputs.EV, inputs.EVSE) }, + battery_size_kWh{ inputs.battery_size_kWh }, + soc{ inputs.CE.arrival_SOC }, + soc_to_energy{ this->battery_size_kWh / 100.0 }, + target_P2_kW{ 0.0 }, + zero_slope_threashold_bat_eff_vs_P2{ this->get_zero_slope_threashold_bat_eff_vs_P2(inputs) }, + will_never_discharge{ true }, + soc_of_full_battery{ 100 }, + soc_of_empty_battery{ 0.0 }, + bat_eff_vs_P2_charging{ inputs.PE_factory.get_P2_vs_battery_eff(inputs.EV, charging).curve }, + bat_eff_vs_P2_discharging{ inputs.PE_factory.get_P2_vs_battery_eff(inputs.EV, discharging).curve }, + max_E1_limit{ 0.0 }, + min_E1_limit{ 0.0 }, + print_debug_info{ false } +{ +} -void battery::set_soc_of_full_and_empty_battery(double soc_of_full_battery_, double soc_of_empty_battery_) +double battery::get_zero_slope_threashold_bat_eff_vs_P2(const vehicle_charge_model_inputs& inputs) +{ + double charging_zst = inputs.PE_factory.get_P2_vs_battery_eff(inputs.EV, charging).zero_slope_threashold; + double discharging_zst = inputs.PE_factory.get_P2_vs_battery_eff(inputs.EV, discharging).zero_slope_threashold; + + return (charging_zst < discharging_zst) ? charging_zst : discharging_zst; +} + +void battery::set_soc_of_full_and_empty_battery(double soc_of_full_battery_, + double soc_of_empty_battery_) { this->soc_of_full_battery = soc_of_full_battery_; this->soc_of_empty_battery = soc_of_empty_battery_; } -void battery::set_P2_kW(double P2_kW) {this->get_next_P2.set_init_state(P2_kW);} +void battery::set_P2_kW(double P2_kW) +{ + this->get_next_P2.set_init_state(P2_kW); +} -void battery::set_target_P2_kW(double target_P2_kW_) {this->target_P2_kW = target_P2_kW_;} +void battery::set_target_P2_kW(double target_P2_kW_) +{ + this->target_P2_kW = target_P2_kW_; +} -double battery::get_target_P2_kW() {return this->target_P2_kW;} +double battery::get_target_P2_kW() +{ + return this->target_P2_kW; +} -void battery::get_next(double prev_unix_time, double now_unix_time, double target_soc, double pu_Vrms, bool stop_charging_at_target_soc, battery_state& return_val) +void battery::get_next(double prev_unix_time, + double now_unix_time, + double target_soc, + double pu_Vrms, + bool stop_charging_at_target_soc, + battery_state& return_val) { double time_step_sec, time_step_hrs; @@ -222,8 +259,4 @@ if(this->print_debug_info) return_val.reached_target_status = (this->target_P2_kW == 0) ? target_P2_is_zero : (this->target_P2_kW >= 0) ? E1_limit_UB.reached_target_status : E1_limit_LB.reached_target_status; return_val.E1_energy_to_target_soc_kWh = (this->target_P2_kW == 0) ? 0 :(this->target_P2_kW >= 0) ? E1_limit_UB.E1_energy_to_target_soc_kWh : E1_limit_LB.E1_energy_to_target_soc_kWh; return_val.min_time_to_target_soc_hrs = (this->target_P2_kW == 0) ? -1 :(this->target_P2_kW >= 0) ? E1_limit_UB.min_time_to_target_soc_hrs : E1_limit_LB.min_time_to_target_soc_hrs; -} - - - - +} \ No newline at end of file diff --git a/source/base/battery.h b/source/base/battery.h index b9d0f31..335721b 100644 --- a/source/base/battery.h +++ b/source/base/battery.h @@ -5,11 +5,11 @@ #include #include +#include "inputs.h" // vehicle_charge_model_inputs #include "helper.h" #include "battery_integrate_X_in_time.h" #include "battery_calculate_limits.h" - struct battery_state { double soc_t1; @@ -22,32 +22,8 @@ struct battery_state static std::string get_file_header(); }; -std::ostream& operator<<(std::ostream& out, battery_state& x); - - -struct battery_inputs -{ - const calculate_E1_energy_limit_inputs E1_limits_charging_inputs; - const calculate_E1_energy_limit_inputs E1_limits_discharging_inputs; - const integrate_X_through_time get_next_P2; - const double battery_size_kWh; - const double soc; - const double zero_slope_threashold_bat_eff_vs_P2; - const bool will_never_discharge; - const line_segment bat_eff_vs_P2_charging; - const line_segment bat_eff_vs_P2_discharging; - battery_inputs(const calculate_E1_energy_limit_inputs& E1_limits_charging_inputs, - const calculate_E1_energy_limit_inputs& E1_limits_discharging_inputs, - const integrate_X_through_time& get_next_P2, const double& battery_size_kWh, const double& soc, - const double& zero_slope_threashold_bat_eff_vs_P2, const bool& will_never_discharge, - const line_segment& bat_eff_vs_P2_charging, const line_segment& bat_eff_vs_P2_discharging) - : E1_limits_charging_inputs(E1_limits_charging_inputs), E1_limits_discharging_inputs(E1_limits_discharging_inputs), - get_next_P2(get_next_P2), battery_size_kWh(battery_size_kWh), soc(soc), - zero_slope_threashold_bat_eff_vs_P2(zero_slope_threashold_bat_eff_vs_P2), - will_never_discharge(will_never_discharge), bat_eff_vs_P2_charging(bat_eff_vs_P2_charging), - bat_eff_vs_P2_discharging(bat_eff_vs_P2_discharging) {} -}; +std::ostream& operator<<(std::ostream& out, battery_state& x); class battery { @@ -63,22 +39,30 @@ class battery line_segment bat_eff_vs_P2_charging; line_segment bat_eff_vs_P2_discharging; + + double get_zero_slope_threashold_bat_eff_vs_P2(const vehicle_charge_model_inputs& inputs); public: // Debugging double max_E1_limit, min_E1_limit; bool print_debug_info; - battery(const battery_inputs& inputs); + battery(const vehicle_charge_model_inputs& inputs); - void set_soc_of_full_and_empty_battery(double soc_of_full_battery_, double soc_of_empty_battery_); + void set_soc_of_full_and_empty_battery(double soc_of_full_battery_, + double soc_of_empty_battery_); // This should only be used for debugging purposes or maybe by battery_factory void set_P2_kW(double P2_kW); void set_target_P2_kW(double target_P2_kW_); double get_target_P2_kW(); - void get_next(double prev_unix_time, double now_unix_time, double target_soc, double pu_Vrms, bool stop_charging_at_target_soc, battery_state& return_val); + void get_next(double prev_unix_time, + double now_unix_time, + double target_soc, + double pu_Vrms, + bool stop_charging_at_target_soc, + battery_state& return_val); }; diff --git a/source/base/battery_calculate_limits.cpp b/source/base/battery_calculate_limits.cpp index 4f02c59..bb29574 100644 --- a/source/base/battery_calculate_limits.cpp +++ b/source/base/battery_calculate_limits.cpp @@ -6,14 +6,16 @@ #include // sort() #include // invalid_argument -std::ostream& operator<<(std::ostream& out, E1_energy_limit& x) +std::ostream& operator<<(std::ostream& out, + E1_energy_limit& x) { out << x.target_soc << "," << x.max_E1_energy_kWh << "," << x.max_E1_energy_charge_time_hrs << "," << x.reached_target_status << "," << x.E1_energy_to_target_soc_kWh << "," << x.min_time_to_target_soc_hrs << std::endl; return out; } -std::ostream& operator<<(std::ostream& out, energy_target_reached_status& x) +std::ostream& operator<<(std::ostream& out, + energy_target_reached_status& x) { if(x == 0) out << "can_not_reach_energy_target_this_timestep"; @@ -38,16 +40,34 @@ std::ostream& operator<<(std::ostream& out, energy_target_reached_status& x) // Parent Class //############################## -double algorithm_P2_vs_soc::get_soc_to_energy() const {return this->soc_to_energy;} -double algorithm_P2_vs_soc::get_soc_UB() const {return this->P2_vs_soc->at(seg_index).x_UB;} -double algorithm_P2_vs_soc::get_soc_LB() const {return this->P2_vs_soc->at(seg_index).x_LB;} +double algorithm_P2_vs_soc::get_soc_to_energy() const +{ + return this->soc_to_energy; +} -algorithm_P2_vs_soc::algorithm_P2_vs_soc(const algorithm_P2_vs_soc_inputs& inputs) - : P2_vs_soc(std::make_shared >()), seg_index(0), ref_seg_index(-1), soc_to_energy(inputs.battery_size_kWh / 100.0), - prev_exp_val(-1), exp_term(std::exp(this->prev_exp_val)), recalc_exponent_threashold(inputs.recalc_exponent_threashold), - zero_slope_threashold_P2_vs_soc(inputs.zero_slope_threashold_SOC_vs_P2), - segment_is_flat_P2_vs_soc(false), P2_vs_soc_segments_changed(false) {} +double algorithm_P2_vs_soc::get_soc_UB() const +{ + return this->P2_vs_soc->at(seg_index).x_UB; +} +double algorithm_P2_vs_soc::get_soc_LB() const +{ + return this->P2_vs_soc->at(seg_index).x_LB; +} + +algorithm_P2_vs_soc::algorithm_P2_vs_soc(const vehicle_charge_model_inputs& inputs) + :P2_vs_soc{ std::make_shared >() }, + seg_index{ 0 }, + ref_seg_index{ -1 }, + soc_to_energy{ inputs.battery_size_kWh / 100.0 }, + prev_exp_val{ -1 }, + exp_term{ std::exp(this->prev_exp_val) }, + recalc_exponent_threashold{ 0.00000001 }, + zero_slope_threashold_P2_vs_soc{ inputs.SOCP_factory.get_SOC_vs_P2_curves(inputs.EV, inputs.EVSE).zero_slope_threashold }, + segment_is_flat_P2_vs_soc{ false }, + P2_vs_soc_segments_changed{ false } +{ +} void algorithm_P2_vs_soc::set_P2_vs_soc(std::shared_ptr > P2_vs_soc) { @@ -56,7 +76,8 @@ void algorithm_P2_vs_soc::set_P2_vs_soc(std::shared_ptrseg_index = -1; for(int i=0; i< this->P2_vs_soc->size(); i++) @@ -72,7 +93,8 @@ void algorithm_P2_vs_soc::find_line_segment_index(double init_soc, bool &line_se } -void algorithm_P2_vs_soc::get_next_line_segment(bool is_charging_not_discharging, bool &next_line_segment_exists) +void algorithm_P2_vs_soc::get_next_line_segment(bool is_charging_not_discharging, + bool &next_line_segment_exists) { if(is_charging_not_discharging) { @@ -91,11 +113,17 @@ void algorithm_P2_vs_soc::get_next_line_segment(bool is_charging_not_discharging // Child Class (No Losses) //############################## +algorithm_P2_vs_soc_no_losses::algorithm_P2_vs_soc_no_losses(const battery_charge_mode& mode, + const vehicle_charge_model_inputs& inputs) + :algorithm_P2_vs_soc{ inputs }, + a{ 0.0 }, + b{ 0.0 }, + A{ 0.0 } +{ +} -algorithm_P2_vs_soc_no_losses::algorithm_P2_vs_soc_no_losses(const algorithm_P2_vs_soc_inputs& inputs) - :algorithm_P2_vs_soc(inputs), a(0.0), b(0.0), A(0.0) {} - -double algorithm_P2_vs_soc_no_losses::get_soc_t1(double t1_minus_t0_hrs, double soc_t0) +double algorithm_P2_vs_soc_no_losses::get_soc_t1(double t1_minus_t0_hrs, + double soc_t0) { bool update_vals = (this->ref_seg_index != this->seg_index) || (this->P2_vs_soc_segments_changed); this->P2_vs_soc_segments_changed = false; @@ -140,7 +168,8 @@ double algorithm_P2_vs_soc_no_losses::get_soc_t1(double t1_minus_t0_hrs, double return soc_t1; } -double algorithm_P2_vs_soc_no_losses::get_time_to_soc_t1_hrs(double soc_t0, double soc_t1) +double algorithm_P2_vs_soc_no_losses::get_time_to_soc_t1_hrs(double soc_t0, + double soc_t1) { bool update_vals = (this->ref_seg_index != this->seg_index) || (this->P2_vs_soc_segments_changed); this->P2_vs_soc_segments_changed = false; @@ -174,11 +203,25 @@ double algorithm_P2_vs_soc_no_losses::get_time_to_soc_t1_hrs(double soc_t0, doub // Child Class (Losses) //############################## -algorithm_P2_vs_soc_losses::algorithm_P2_vs_soc_losses(const algorithm_P2_vs_soc_inputs& inputs) - :algorithm_P2_vs_soc(inputs), bat_eff_vs_P2(inputs.P2_vs_battery_eff), a(0.0), b(0.0), c(0.0), - d(0.0), A(0.0), B(0.0), C(0.0), D(0.0), z(0.0) {} +algorithm_P2_vs_soc_losses::algorithm_P2_vs_soc_losses(const battery_charge_mode& mode, + const vehicle_charge_model_inputs& inputs) + :algorithm_P2_vs_soc{ inputs }, + bat_eff_vs_P2{ inputs.PE_factory.get_P2_vs_battery_eff(inputs.EV, mode).curve }, + a{ 0.0 }, + b{ 0.0 }, + c{ 0.0 }, + d{ 0.0 }, + A{ 0.0 }, + B{ 0.0 }, + C{ 0.0 }, + D{ 0.0 }, + z{ 0.0 } +{ +} + -double algorithm_P2_vs_soc_losses::get_soc_t1(double t1_minus_t0_hrs, double soc_t0) +double algorithm_P2_vs_soc_losses::get_soc_t1(double t1_minus_t0_hrs, + double soc_t0) { bool update_vals = (this->ref_seg_index != this->seg_index) || (this->P2_vs_soc_segments_changed); this->P2_vs_soc_segments_changed = false; @@ -239,7 +282,8 @@ double algorithm_P2_vs_soc_losses::get_soc_t1(double t1_minus_t0_hrs, double soc } -double algorithm_P2_vs_soc_losses::get_time_to_soc_t1_hrs(double soc_t0, double soc_t1) +double algorithm_P2_vs_soc_losses::get_time_to_soc_t1_hrs(double soc_t0, + double soc_t1) { bool update_vals = (this->ref_seg_index != this->seg_index) || (this->P2_vs_soc_segments_changed); this->P2_vs_soc_segments_changed = false; @@ -292,15 +336,18 @@ double algorithm_P2_vs_soc_losses::get_time_to_soc_t1_hrs(double soc_t0, double // Calculate Energy Limits //############################################################################# -calc_E1_energy_limit::calc_E1_energy_limit(const bool& are_battery_losses, const algorithm_P2_vs_soc_inputs& inputs) + +calc_E1_energy_limit::calc_E1_energy_limit(const battery_charge_mode& mode, + const bool& are_battery_losses, + const vehicle_charge_model_inputs& inputs) { if (are_battery_losses) { - this->P2_vs_soc_algorithm = std::make_shared(inputs); + this->P2_vs_soc_algorithm = std::make_shared(mode, inputs); } else { - this->P2_vs_soc_algorithm = std::make_shared(inputs); + this->P2_vs_soc_algorithm = std::make_shared(mode, inputs); } } @@ -308,11 +355,18 @@ calc_E1_energy_limit::calc_E1_energy_limit(const bool& are_battery_losses, const // Charging //############################## -calc_E1_energy_limit_charging::calc_E1_energy_limit_charging(const bool& are_battery_losses, const algorithm_P2_vs_soc_inputs& inputs) - : calc_E1_energy_limit(are_battery_losses, inputs){} +calc_E1_energy_limit_charging::calc_E1_energy_limit_charging(const bool& are_battery_losses, + const vehicle_charge_model_inputs& inputs) + : calc_E1_energy_limit{ charging, are_battery_losses, inputs } +{ +} -void calc_E1_energy_limit_charging::get_E1_limit(double time_step_sec, double init_soc, double target_soc, bool P2_vs_soc_segments_changed, - std::shared_ptr > P2_vs_soc, E1_energy_limit& E1_limit) +void calc_E1_energy_limit_charging::get_E1_limit(double time_step_sec, + double init_soc, + double target_soc, + bool P2_vs_soc_segments_changed, + std::shared_ptr > P2_vs_soc, + E1_energy_limit& E1_limit) { if(P2_vs_soc_segments_changed) this->P2_vs_soc_algorithm->set_P2_vs_soc(P2_vs_soc); @@ -410,11 +464,18 @@ void calc_E1_energy_limit_charging::get_E1_limit(double time_step_sec, double in // Discharging //############################## -calc_E1_energy_limit_discharging::calc_E1_energy_limit_discharging(const bool& are_battery_losses, const algorithm_P2_vs_soc_inputs& inputs) - :calc_E1_energy_limit(are_battery_losses, inputs) {} +calc_E1_energy_limit_discharging::calc_E1_energy_limit_discharging(const bool& are_battery_losses, + const vehicle_charge_model_inputs& inputs) + :calc_E1_energy_limit{ discharging, are_battery_losses, inputs } +{ +} -void calc_E1_energy_limit_discharging::get_E1_limit(double time_step_sec, double init_soc, double target_soc, bool P2_vs_soc_segments_changed, - std::shared_ptr > P2_vs_soc, E1_energy_limit& E1_limit) +void calc_E1_energy_limit_discharging::get_E1_limit(double time_step_sec, + double init_soc, + double target_soc, + bool P2_vs_soc_segments_changed, + std::shared_ptr > P2_vs_soc, + E1_energy_limit& E1_limit) { if(P2_vs_soc_segments_changed) this->P2_vs_soc_algorithm->set_P2_vs_soc(P2_vs_soc); @@ -512,68 +573,71 @@ void calc_E1_energy_limit_discharging::get_E1_limit(double time_step_sec, double // Calculate Energy Limit Upper and Lower Bound //############################################################################# -calculate_E1_energy_limit::calculate_E1_energy_limit(const calculate_E1_energy_limit_inputs& inputs) - : mode(inputs.mode), P2_vs_puVrms(inputs.P2_vs_puVrms), - max_P2kW_error_before_reappling_P2kW_limit_to_P2_vs_soc_segments(inputs.max_P2kW_error_before_reappling_P2kW_limit_to_P2_vs_soc_segments), - orig_P2_vs_soc_segments(inputs.P2_vs_soc_segments) +calculate_E1_energy_limit::calculate_E1_energy_limit(const battery_charge_mode& mode, + const vehicle_charge_model_inputs& inputs) + : mode{ mode }, + P2_vs_puVrms{ inputs.VP_factory.get_puVrms_vs_P2(inputs.EVSE, inputs.SE_P2_limit_kW) }, + max_P2kW_error_before_reappling_P2kW_limit_to_P2_vs_soc_segments{ 0.5 }, + orig_P2_vs_soc_segments{ inputs.SOCP_factory.get_SOC_vs_P2_curves(inputs.EV, inputs.EVSE).curve } { + bool are_battery_losses = true; if (this->mode == charging) { - this->calc_E1_limit = std::make_shared(inputs.are_battery_losses, inputs.inputs); + this->calc_E1_limit = std::make_shared(are_battery_losses, inputs); } else { - this->calc_E1_limit = std::make_shared(inputs.are_battery_losses, inputs.inputs); + this->calc_E1_limit = std::make_shared(are_battery_losses, inputs); } - double min_soc = 1000; - double max_soc = -1000; + double min_soc = 1000; + double max_soc = -1000; - for(line_segment& x : this->orig_P2_vs_soc_segments) - { - if(x.x_LB < min_soc) min_soc = x.x_LB; - if(x.x_UB > max_soc) max_soc = x.x_UB; - } + for (line_segment& x : this->orig_P2_vs_soc_segments) + { + if (x.x_LB < min_soc) min_soc = x.x_LB; + if (x.x_UB > max_soc) max_soc = x.x_UB; + } ASSERT(min_soc < 0 || max_soc > 100, "PROBLEM: The following rule (for the P2_vs_soc_segments datatype) has been broken: min_soc < 0 and 100 < max_soc."); - //--------------------------------------------- - - std::sort(this->orig_P2_vs_soc_segments.begin(), this->orig_P2_vs_soc_segments.end()); - - this->cur_P2_vs_soc_segments = this->orig_P2_vs_soc_segments; + //--------------------------------------------- - //--------------------- - - this->prev_P2_limit_binding = true; - - if(this->mode == charging) - this->prev_P2_limit = -1000000000; - else - this->prev_P2_limit = 1000000000; - - //--------------------- - - this->max_abs_P2_in_P2_vs_soc_segments = this->prev_P2_limit; - - double val_0, val_1, val_tmp; - - for(line_segment& seg: this->cur_P2_vs_soc_segments) - { - val_0 = seg.a*seg.x_LB + seg.b; - val_1 = seg.a*seg.x_UB + seg.b; - - if(this->mode == charging) - { // max(val_0, val_1, this->max_abs_P2_in_P2_vs_soc_segments) - val_tmp = val_0 < val_1 ? val_1 : val_0; - this->max_abs_P2_in_P2_vs_soc_segments = val_tmp < this->max_abs_P2_in_P2_vs_soc_segments ? this->max_abs_P2_in_P2_vs_soc_segments : val_tmp; - } - else - { // min(val_0, val_1, this->max_abs_P2_in_P2_vs_soc_segments) - val_tmp = val_0 < val_1 ? val_0 : val_1; - this->max_abs_P2_in_P2_vs_soc_segments = val_tmp < this->max_abs_P2_in_P2_vs_soc_segments ? val_tmp : this->max_abs_P2_in_P2_vs_soc_segments; - } - } + std::sort(this->orig_P2_vs_soc_segments.begin(), this->orig_P2_vs_soc_segments.end()); + + this->cur_P2_vs_soc_segments = this->orig_P2_vs_soc_segments; + + //--------------------- + + this->prev_P2_limit_binding = true; + + if (this->mode == charging) + this->prev_P2_limit = -1000000000; + else + this->prev_P2_limit = 1000000000; + + //--------------------- + + this->max_abs_P2_in_P2_vs_soc_segments = this->prev_P2_limit; + + double val_0, val_1, val_tmp; + + for(const line_segment& seg : this->cur_P2_vs_soc_segments) + { + val_0 = seg.a * seg.x_LB + seg.b; + val_1 = seg.a * seg.x_UB + seg.b; + + if (this->mode == charging) + { // max(val_0, val_1, this->max_abs_P2_in_P2_vs_soc_segments) + val_tmp = val_0 < val_1 ? val_1 : val_0; + this->max_abs_P2_in_P2_vs_soc_segments = val_tmp < this->max_abs_P2_in_P2_vs_soc_segments ? this->max_abs_P2_in_P2_vs_soc_segments : val_tmp; + } + else + { // min(val_0, val_1, this->max_abs_P2_in_P2_vs_soc_segments) + val_tmp = val_0 < val_1 ? val_0 : val_1; + this->max_abs_P2_in_P2_vs_soc_segments = val_tmp < this->max_abs_P2_in_P2_vs_soc_segments ? val_tmp : this->max_abs_P2_in_P2_vs_soc_segments; + } + } } void calculate_E1_energy_limit::apply_P2_limit_to_P2_vs_soc_segments(double P2_limit) @@ -649,7 +713,11 @@ void calculate_E1_energy_limit::apply_P2_limit_to_P2_vs_soc_segments(double P2_l } -void calculate_E1_energy_limit::get_E1_limit(double time_step_sec, double init_soc, double target_soc, double pu_Vrms, E1_energy_limit& E1_limit) +void calculate_E1_energy_limit::get_E1_limit(double time_step_sec, + double init_soc, + double target_soc, + double pu_Vrms, + E1_energy_limit& E1_limit) { double P2_limit; bool P2_limit_binding, P2_vs_soc_segments_changed; @@ -696,13 +764,10 @@ void calculate_E1_energy_limit::get_E1_limit(double time_step_sec, double init_s } - void calculate_E1_energy_limit::log_cur_P2_vs_soc_segments(std::ostream& out) { for(line_segment x: this->cur_P2_vs_soc_segments) out << x; out << "Number segments: " << this->cur_P2_vs_soc_segments.size() << std::endl << std::endl; -} - - +} \ No newline at end of file diff --git a/source/base/battery_calculate_limits.h b/source/base/battery_calculate_limits.h index b1d8b51..7fcfe9f 100644 --- a/source/base/battery_calculate_limits.h +++ b/source/base/battery_calculate_limits.h @@ -6,9 +6,8 @@ #include #include // Stream to consol (may be needed for files too???) -#include "helper.h" // line_segment -#include "SOC_vs_P2_factory.h" - +#include "inputs.h" // vehicle_charge_model_inputs +#include "helper.h" // line_segment //----------------------------------------------- @@ -39,19 +38,6 @@ std::ostream& operator<<(std::ostream& out, E1_energy_limit& x); // Algroithm soc_t1 from (t1-t0) and soc_t0 //############################################################################# -struct algorithm_P2_vs_soc_inputs -{ - const double battery_size_kWh; - const double recalc_exponent_threashold; - const double zero_slope_threashold_SOC_vs_P2; - const line_segment& P2_vs_battery_eff; - - algorithm_P2_vs_soc_inputs(const double& battery_size_kWh, const double& recalc_exponent_threashold, - const double& zero_slope_threashold_SOC_vs_P2, const line_segment& P2_vs_battery_eff) - : battery_size_kWh(battery_size_kWh), recalc_exponent_threashold(recalc_exponent_threashold), - zero_slope_threashold_SOC_vs_P2(zero_slope_threashold_SOC_vs_P2), P2_vs_battery_eff(P2_vs_battery_eff) {} -}; - class algorithm_P2_vs_soc { private: @@ -67,16 +53,20 @@ class algorithm_P2_vs_soc public: - algorithm_P2_vs_soc(const algorithm_P2_vs_soc_inputs& inputs); + algorithm_P2_vs_soc(const vehicle_charge_model_inputs& inputs); - void find_line_segment_index(double init_soc, bool &line_segment_not_found); + void find_line_segment_index(double init_soc, + bool &line_segment_not_found); double get_soc_UB() const; double get_soc_LB() const; double get_soc_to_energy() const; - void get_next_line_segment(bool is_charging_not_discharging, bool &next_line_segment_exists); + void get_next_line_segment(bool is_charging_not_discharging, + bool &next_line_segment_exists); void set_P2_vs_soc(std::shared_ptr > P2_vs_soc); - virtual double get_soc_t1(double t1_minus_t0_hrs, double soc_t0) = 0; - virtual double get_time_to_soc_t1_hrs(double soc_t0, double soc_t1) = 0; + virtual double get_soc_t1(double t1_minus_t0_hrs, + double soc_t0) = 0; + virtual double get_time_to_soc_t1_hrs(double soc_t0, + double soc_t1) = 0; }; @@ -87,11 +77,13 @@ class algorithm_P2_vs_soc_no_losses:public algorithm_P2_vs_soc double a, b, A; public: - - algorithm_P2_vs_soc_no_losses(const algorithm_P2_vs_soc_inputs& inputs); + algorithm_P2_vs_soc_no_losses(const battery_charge_mode& mode, + const vehicle_charge_model_inputs& inputs); - virtual double get_soc_t1(double t1_minus_t0_hrs, double soc_t0) override final; - virtual double get_time_to_soc_t1_hrs(double soc_t0, double soc_t1) override final; + virtual double get_soc_t1(double t1_minus_t0_hrs, + double soc_t0) override final; + virtual double get_time_to_soc_t1_hrs(double soc_t0, + double soc_t1) override final; }; @@ -103,11 +95,13 @@ class algorithm_P2_vs_soc_losses:public algorithm_P2_vs_soc const line_segment& bat_eff_vs_P2; public: - - algorithm_P2_vs_soc_losses(const algorithm_P2_vs_soc_inputs& inputs); + algorithm_P2_vs_soc_losses(const battery_charge_mode& mode, + const vehicle_charge_model_inputs& inputs); - virtual double get_soc_t1(double t1_minus_t0_hrs, double soc_t0) override final; - virtual double get_time_to_soc_t1_hrs(double soc_t0, double soc_t1) override final; + virtual double get_soc_t1(double t1_minus_t0_hrs, + double soc_t0) override final; + virtual double get_time_to_soc_t1_hrs(double soc_t0, + double soc_t1) override final; }; @@ -124,7 +118,9 @@ class calc_E1_energy_limit public: - calc_E1_energy_limit(const bool& are_battery_losses, const algorithm_P2_vs_soc_inputs& inputs); + calc_E1_energy_limit(const battery_charge_mode& mode, + const bool& are_battery_losses, + const vehicle_charge_model_inputs& inputs); virtual void get_E1_limit(double time_step_sec, double init_soc, double target_soc, bool P2_vs_soc_segments_changed, std::shared_ptr > P2_vs_soc, E1_energy_limit& E1_limit) = 0; }; @@ -135,9 +131,15 @@ class calc_E1_energy_limit_charging:public calc_E1_energy_limit private: public: - calc_E1_energy_limit_charging(const bool& are_battery_losses, const algorithm_P2_vs_soc_inputs& inputs); + calc_E1_energy_limit_charging(const bool& are_battery_losses, + const vehicle_charge_model_inputs& inputs); - virtual void get_E1_limit(double time_step_sec, double init_soc, double target_soc, bool P2_vs_soc_segments_changed, std::shared_ptr > P2_vs_soc, E1_energy_limit& E1_limit) override final; + virtual void get_E1_limit(double time_step_sec, + double init_soc, + double target_soc, + bool P2_vs_soc_segments_changed, + std::shared_ptr > P2_vs_soc, + E1_energy_limit& E1_limit) override final; }; @@ -146,9 +148,15 @@ class calc_E1_energy_limit_discharging:public calc_E1_energy_limit private: public: - calc_E1_energy_limit_discharging(const bool& are_battery_losses, const algorithm_P2_vs_soc_inputs& inputs); - - virtual void get_E1_limit(double time_step_sec, double init_soc, double target_soc, bool P2_vs_soc_segments_changed, std::shared_ptr > P2_vs_soc, E1_energy_limit& E1_limit) override final; + calc_E1_energy_limit_discharging(const bool& are_battery_losses, + const vehicle_charge_model_inputs& inputs); + + virtual void get_E1_limit(double time_step_sec, + double init_soc, + double target_soc, + bool P2_vs_soc_segments_changed, + std::shared_ptr > P2_vs_soc, + E1_energy_limit& E1_limit) override final; }; @@ -157,23 +165,6 @@ class calc_E1_energy_limit_discharging:public calc_E1_energy_limit //############################################################################# -struct calculate_E1_energy_limit_inputs -{ - const battery_charge_mode mode; - const bool are_battery_losses; - const algorithm_P2_vs_soc_inputs inputs; - const poly_function_of_x P2_vs_puVrms; - const double max_P2kW_error_before_reappling_P2kW_limit_to_P2_vs_soc_segments; - const std::vector P2_vs_soc_segments; - - calculate_E1_energy_limit_inputs(const battery_charge_mode& mode, const bool& are_battery_losses, const algorithm_P2_vs_soc_inputs& inputs, - const poly_function_of_x& P2_vs_puVrms, const double& max_P2kW_error_before_reappling_P2kW_limit_to_P2_vs_soc_segments, - const std::vector P2_vs_soc_segments) - : mode(mode), are_battery_losses(are_battery_losses), inputs(inputs), P2_vs_puVrms(P2_vs_puVrms), - max_P2kW_error_before_reappling_P2kW_limit_to_P2_vs_soc_segments(max_P2kW_error_before_reappling_P2kW_limit_to_P2_vs_soc_segments), - P2_vs_soc_segments(P2_vs_soc_segments) {} -}; - class calculate_E1_energy_limit { private: @@ -194,15 +185,16 @@ class calculate_E1_energy_limit public: - calculate_E1_energy_limit::calculate_E1_energy_limit(const calculate_E1_energy_limit_inputs& inputs); + calculate_E1_energy_limit(const battery_charge_mode& mode, + const vehicle_charge_model_inputs& inputs); - void get_E1_limit(double time_step_sec, double init_soc, double target_soc, double pu_Vrms, E1_energy_limit& E1_limit); + void get_E1_limit(double time_step_sec, + double init_soc, + double target_soc, + double pu_Vrms, + E1_energy_limit& E1_limit); void log_cur_P2_vs_soc_segments(std::ostream& out); }; - -#endif - - - +#endif \ No newline at end of file diff --git a/source/base/battery_integrate_X_in_time.h b/source/base/battery_integrate_X_in_time.h index 824a171..de60cd1 100644 --- a/source/base/battery_integrate_X_in_time.h +++ b/source/base/battery_integrate_X_in_time.h @@ -62,6 +62,19 @@ struct transition_goto_next_segment_criteria bool inturupt_this_transition_if_target_X_deviation_limit_exceeded; double target_X_deviation_limit_to_interupt_this_transition; double segment_slope_X_per_sec; + + transition_goto_next_segment_criteria(const transition_criteria_type& criteria_type, + const double criteria_value, + const bool inturupt_this_transition_if_target_X_deviation_limit_exceeded, + const double target_X_deviation_limit_to_interupt_this_transition, + const double segment_slope_X_per_sec) + : criteria_type{ criteria_type }, + criteria_value{ criteria_value }, + inturupt_this_transition_if_target_X_deviation_limit_exceeded{ inturupt_this_transition_if_target_X_deviation_limit_exceeded }, + target_X_deviation_limit_to_interupt_this_transition{ target_X_deviation_limit_to_interupt_this_transition }, + segment_slope_X_per_sec{ segment_slope_X_per_sec } + { + } }; diff --git a/source/base/inputs.h b/source/base/inputs.h new file mode 100644 index 0000000..b672e90 --- /dev/null +++ b/source/base/inputs.h @@ -0,0 +1,43 @@ +#ifndef INPUTS_H +#define INPUTS_H + +#include "charging_transitions_factory.h" +#include "puVrms_vs_P2_factory.h" +#include "SOC_vs_P2_factory.h" +#include "P2_vs_battery_efficiency_factory.h" + +struct vehicle_charge_model_inputs +{ + const charge_event_data& CE; + const EV_type& EV; + const EVSE_type& EVSE; + const double SE_P2_limit_kW; + const double battery_size_kWh; + const charging_transitions_factory& CT_factory; + const puVrms_vs_P2_factory& VP_factory; + const SOC_vs_P2_factory& SOCP_factory; + const P2_vs_battery_efficiency_factory& PE_factory; + + vehicle_charge_model_inputs(const charge_event_data& CE, + const EV_type& EV, + const EVSE_type& EVSE, + const double& SE_P2_limit_kW, + const double& battery_size_kWh, + const charging_transitions_factory& CT_factory, + const puVrms_vs_P2_factory& VP_factory, + const SOC_vs_P2_factory& SOCP_factory, + const P2_vs_battery_efficiency_factory& PE_factory) + : CE{ CE }, + EV{ EV }, + EVSE{ EVSE }, + SE_P2_limit_kW{ SE_P2_limit_kW }, + battery_size_kWh{ battery_size_kWh }, + CT_factory{ CT_factory }, + VP_factory{ VP_factory }, + SOCP_factory{ SOCP_factory }, + PE_factory{ PE_factory } + { + } +}; + +#endif \ No newline at end of file diff --git a/source/base/vehicle_charge_model.cpp b/source/base/vehicle_charge_model.cpp index d13de31..1dffa12 100644 --- a/source/base/vehicle_charge_model.cpp +++ b/source/base/vehicle_charge_model.cpp @@ -3,34 +3,56 @@ #include - -vehicle_charge_model::vehicle_charge_model(const charge_event_data& event, const battery_inputs& bat_inputs, double soc_of_full_battery) - : charge_event(event), charge_event_id(event.charge_event_id), EV(event.EV), arrival_unix_time(event.arrival_unix_time), - depart_unix_time(event.departure_unix_time), arrival_soc(event.arrival_SOC), requested_depart_soc(event.departure_SOC), - decision_metric(event.stop_charge.decision_metric), soc_mode(event.stop_charge.soc_mode), - depart_time_mode(event.stop_charge.depart_time_mode), - soc_block_charging_max_undershoot_percent(event.stop_charge.soc_block_charging_max_undershoot_percent), - depart_time_block_charging_max_undershoot_percent(event.stop_charge.depart_time_block_charging_max_undershoot_percent), - bat(battery {bat_inputs}), soc_of_full_battery(soc_of_full_battery), charge_has_completed_(false), charge_needs_met_(false), - prev_soc_t1(this->arrival_soc), target_P2_kW(0.0) +//########################################### +// vehicle_charge_model +//########################################### + +vehicle_charge_model::vehicle_charge_model(const vehicle_charge_model_inputs& inputs) + : charge_event{ inputs.CE }, + charge_event_id{ inputs.CE.charge_event_id }, + EV{ inputs.EV }, + arrival_unix_time{ inputs.CE.arrival_unix_time }, + depart_unix_time{ inputs.CE.departure_unix_time }, + arrival_soc{ inputs.CE.arrival_SOC }, + requested_depart_soc{ inputs.CE.departure_SOC }, + decision_metric{ inputs.CE.stop_charge.decision_metric }, + soc_mode{ inputs.CE.stop_charge.soc_mode }, + depart_time_mode{ inputs.CE.stop_charge.depart_time_mode }, + soc_block_charging_max_undershoot_percent{ inputs.CE.stop_charge.soc_block_charging_max_undershoot_percent }, + depart_time_block_charging_max_undershoot_percent{ inputs.CE.stop_charge.depart_time_block_charging_max_undershoot_percent }, + bat{ battery{inputs} }, + soc_of_full_battery{ 99.8 }, + charge_has_completed_{ false }, + charge_needs_met_{ false }, + prev_soc_t1{ this->arrival_soc }, + target_P2_kW{ 0.0 } { - - double soc_of_empty_battery = 100 - this->soc_of_full_battery; - this->bat.set_soc_of_full_and_empty_battery(this->soc_of_full_battery, soc_of_empty_battery); - this->bat.set_target_P2_kW(this->target_P2_kW); + + double soc_of_empty_battery = 100 - this->soc_of_full_battery; + this->bat.set_soc_of_full_and_empty_battery(this->soc_of_full_battery, soc_of_empty_battery); + this->bat.set_target_P2_kW(this->target_P2_kW); //------------------------- - + this->stop_charging_at_target_soc = (this->soc_mode == target_charging && this->decision_metric != stop_charging_using_depart_time); this->depart_soc = (this->requested_depart_soc < this->soc_of_full_battery) ? this->requested_depart_soc : this->soc_of_full_battery; } -void vehicle_charge_model::set_target_P2_kW(double target_P2_kW_) {this->target_P2_kW = target_P2_kW_;} +void vehicle_charge_model::set_target_P2_kW(double target_P2_kW_) +{ + this->target_P2_kW = target_P2_kW_; +} -double vehicle_charge_model::get_target_P2_kW() {return this->target_P2_kW;} +double vehicle_charge_model::get_target_P2_kW() +{ + return this->target_P2_kW; +} -bool vehicle_charge_model::charge_has_completed() {return this->charge_has_completed_;} +bool vehicle_charge_model::charge_has_completed() +{ + return this->charge_has_completed_; +} bool vehicle_charge_model::pev_has_arrived_at_SE(double now_unix_time) @@ -57,9 +79,13 @@ void vehicle_charge_model::get_next(double prev_unix_time, double now_unix_time, if(this->arrival_unix_time <= now_unix_time) { if(this->charge_needs_met_ || this->soc_of_full_battery <= this->prev_soc_t1) + { this->bat.set_target_P2_kW(0); + } else + { this->bat.set_target_P2_kW(this->target_P2_kW); + } } else { @@ -150,5 +176,4 @@ if(this->charge_event_id == 1214) } } */ - } diff --git a/source/base/vehicle_charge_model.h b/source/base/vehicle_charge_model.h index b019c23..89ae55d 100644 --- a/source/base/vehicle_charge_model.h +++ b/source/base/vehicle_charge_model.h @@ -4,9 +4,16 @@ #include +#include "inputs.h" // vehicle_charge_model_inputs #include "battery.h" // battery #include "datatypes_global.h" // charge_event_data, stop_charging_mode, stop_charging_decision_metric -#include "EVSE_characteristics.h" // EV_type + +#include "EVSE_characteristics.h" // EV_type, EVSE_type + +#include "charging_transitions_factory.h" // charging_transitions_factory +#include "puVrms_vs_P2_factory.h" // puVrms_vs_P2_factory +#include "SOC_vs_P2_factory.h" // SOC_vs_P2_factory +#include "P2_vs_battery_efficiency_factory.h" // P2_vs_battery_efficiency_factory //--------------------------------- @@ -36,7 +43,8 @@ class vehicle_charge_model vehicle_charge_model(const vehicle_charge_model& obj) = default; public: - vehicle_charge_model(const charge_event_data& event, const battery_inputs& inputs, double soc_of_full_battery); + + vehicle_charge_model(const vehicle_charge_model_inputs& inputs); void set_target_P2_kW(double target_P2_kW_); double get_target_P2_kW(); @@ -44,9 +52,14 @@ class vehicle_charge_model bool pev_is_connected_to_SE(double now_unix_time); bool charge_has_completed(); - void get_E1_battery_limits(double& max_E1_limit, double& min_E1_limit); + void get_E1_battery_limits(double& max_E1_limit, + double& min_E1_limit); - void get_next(double prev_unix_time, double now_unix_time, double pu_Vrms, bool& charge_has_completed, battery_state& bat_state); + void get_next(double prev_unix_time, + double now_unix_time, + double pu_Vrms, + bool& charge_has_completed, + battery_state& bat_state); }; diff --git a/source/factory/EV_charge_model_factory.cpp b/source/factory/EV_charge_model_factory.cpp index 1bb8c65..334f432 100644 --- a/source/factory/EV_charge_model_factory.cpp +++ b/source/factory/EV_charge_model_factory.cpp @@ -5,89 +5,48 @@ #include -//############################################################################# +//######################################################################## // EV Charge Model Factory -//############################################################################# - -EV_charge_model_factory::EV_charge_model_factory(const EV_EVSE_inventory& inventory, - const EV_ramping_map& custom_EV_ramping, const EV_EVSE_ramping_map& custom_EV_EVSE_ramping, - const bool& model_stochastic_battery_degregation) - : inventory(inventory), - charging_transitions_obj(charging_transitions_factory(inventory, custom_EV_ramping, custom_EV_EVSE_ramping)), - puVrms_vs_P2_obj(puVrms_vs_P2_factory(inventory)), - SOC_vs_P2_obj(SOC_vs_P2_factory(inventory)), P2_vs_battery_eff_obj(P2_vs_battery_efficiency_factory(inventory)), - model_stochastic_battery_degregation(model_stochastic_battery_degregation) {} - - -vehicle_charge_model* EV_charge_model_factory::alloc_get_EV_charge_model(const charge_event_data& event, const EVSE_type& EVSE, const double& SE_P2_limit_kW) +//######################################################################## + + +EV_charge_model_factory::EV_charge_model_factory(const EV_EVSE_inventory& inventory, + const EV_ramping_map& custom_EV_ramping, + const EV_EVSE_ramping_map& custom_EV_EVSE_ramping, + const bool& model_stochastic_battery_degregation) + : inventory{ inventory }, + charging_transitions_obj{ charging_transitions_factory{inventory,custom_EV_ramping, custom_EV_EVSE_ramping} }, + puVrms_vs_P2_obj{ puVrms_vs_P2_factory{inventory} }, + SOC_vs_P2_obj{ SOC_vs_P2_factory{inventory} }, + P2_vs_battery_eff_obj{ P2_vs_battery_efficiency_factory{inventory} }, + model_stochastic_battery_degregation{ model_stochastic_battery_degregation } { - const EV_type& EV = event.EV; - double battery_size_kWh = this->inventory.get_EV_inventory().at(EV).get_usable_battery_size_kWh(); - double battery_size_with_degredation_kWh = this->inventory.get_EV_inventory().at(EV).get_battery_size_with_stochastic_degradation_kWh(); - battery_chemistry chemistry = this->inventory.get_EV_inventory().at(EV).get_chemistry(); - - double soc_of_full_battery = 99.8; - double recalc_exponent_threashold = 0.00000001; // Should be very small - double max_P2kW_error_before_reappling_P2kW_limit_to_P2_vs_soc_segments = 0.5; - - bool will_never_discharge = true; - bool are_battery_losses = true; - - //--------------------------------- - - //precomputed - const integrate_X_through_time& get_next_P2 = this->charging_transitions_obj.get_charging_transitions(EV, EVSE); - - //--------------------------------- - - //dynamic - const poly_function_of_x puVrms_vs_P2_curve = this->puVrms_vs_P2_obj.get_puVrms_vs_P2(EVSE, SE_P2_limit_kW); - - //precomputed - const SOC_vs_P2& SOC_vs_P2_curve = this->SOC_vs_P2_obj.get_SOC_vs_P2_curves(EV, EVSE); - - //--------------------------------- - - double zero_slope_threashold_bat_eff_vs_P2; - - //precomputed - const P2_vs_battery_efficiency& P2_vs_battery_eff_charging = this->P2_vs_battery_eff_obj.get_P2_vs_battery_eff(EV, charging); - //precomputed - const P2_vs_battery_efficiency& P2_vs_battery_eff_discharging = this->P2_vs_battery_eff_obj.get_P2_vs_battery_eff(EV, discharging); - - zero_slope_threashold_bat_eff_vs_P2 = (P2_vs_battery_eff_charging.zero_slope_threashold < P2_vs_battery_eff_discharging.zero_slope_threashold) ? P2_vs_battery_eff_charging.zero_slope_threashold : P2_vs_battery_eff_discharging.zero_slope_threashold; - - //--------------------------------- - - double final_bat_size_kWh; - - if (this->model_stochastic_battery_degregation) - final_bat_size_kWh = battery_size_with_degredation_kWh; - else - final_bat_size_kWh = battery_size_kWh; - - //--------------------------------- - - algorithm_P2_vs_soc_inputs charging_inputs{ final_bat_size_kWh, recalc_exponent_threashold, SOC_vs_P2_curve.zero_slope_threashold, - P2_vs_battery_eff_charging.curve }; - algorithm_P2_vs_soc_inputs discharging_inputs{ final_bat_size_kWh, recalc_exponent_threashold, SOC_vs_P2_curve.zero_slope_threashold, - P2_vs_battery_eff_discharging.curve }; - - calculate_E1_energy_limit_inputs E1_limits_charging_inputs{ charging, are_battery_losses, charging_inputs, puVrms_vs_P2_curve, - max_P2kW_error_before_reappling_P2kW_limit_to_P2_vs_soc_segments, SOC_vs_P2_curve.curve }; - calculate_E1_energy_limit_inputs E1_limits_discharging_inputs{ discharging, are_battery_losses, discharging_inputs, puVrms_vs_P2_curve, - max_P2kW_error_before_reappling_P2kW_limit_to_P2_vs_soc_segments, SOC_vs_P2_curve.curve }; - - battery_inputs bat_input{ E1_limits_charging_inputs, E1_limits_discharging_inputs, get_next_P2, final_bat_size_kWh, event.arrival_SOC, - zero_slope_threashold_bat_eff_vs_P2, will_never_discharge, P2_vs_battery_eff_charging.curve, P2_vs_battery_eff_discharging.curve }; +} - //--------------------------------- - return new vehicle_charge_model(event, bat_input, soc_of_full_battery); +vehicle_charge_model* EV_charge_model_factory::alloc_get_EV_charge_model(const charge_event_data& event, + const EVSE_type& EVSE, + const double& SE_P2_limit_kW) const +{ + const EV_type& EV = event.EV; + + double final_bat_size_kWh; + if (this->model_stochastic_battery_degregation) + { + final_bat_size_kWh = this->inventory.get_EV_inventory().at(EV).get_battery_size_with_stochastic_degradation_kWh(); + } + else + { + final_bat_size_kWh = this->inventory.get_EV_inventory().at(EV).get_usable_battery_size_kWh(); + } + vehicle_charge_model_inputs inputs{ event, EV, EVSE, SE_P2_limit_kW, final_bat_size_kWh, + this->charging_transitions_obj, this->puVrms_vs_P2_obj, this->SOC_vs_P2_obj, this->P2_vs_battery_eff_obj }; + + return new vehicle_charge_model(inputs); } void EV_charge_model_factory::write_charge_profile(const std::string& output_path) const { - this->SOC_vs_P2_obj.write_charge_profile(output_path); + this->SOC_vs_P2_obj.write_charge_profile(output_path); } \ No newline at end of file diff --git a/source/factory/EV_charge_model_factory.h b/source/factory/EV_charge_model_factory.h index 6446e2c..72277eb 100644 --- a/source/factory/EV_charge_model_factory.h +++ b/source/factory/EV_charge_model_factory.h @@ -4,8 +4,6 @@ #include #include -#include "EV_characteristics.h" -#include "EVSE_characteristics.h" #include "EV_EVSE_inventory.h" #include "charging_transitions_factory.h" @@ -13,7 +11,6 @@ #include "SOC_vs_P2_factory.h" #include "P2_vs_battery_efficiency_factory.h" -#include "battery_calculate_limits.h" #include "vehicle_charge_model.h" class EV_charge_model_factory @@ -30,10 +27,14 @@ class EV_charge_model_factory const bool model_stochastic_battery_degregation; public: - EV_charge_model_factory(const EV_EVSE_inventory& inventory, const EV_ramping_map& EV_ramping, const EV_EVSE_ramping_map& EV_EVSE_ramping, - const bool& model_stochastic_battery_degregation); - - vehicle_charge_model* alloc_get_EV_charge_model(const charge_event_data& event, const EVSE_type& EVSE, const double& SE_P2_limit_kW); + EV_charge_model_factory(const EV_EVSE_inventory& inventory, + const EV_ramping_map& EV_ramping, + const EV_EVSE_ramping_map& EV_EVSE_ramping, + const bool& model_stochastic_battery_degregation); + + vehicle_charge_model* alloc_get_EV_charge_model(const charge_event_data& event, + const EVSE_type& EVSE, + const double& SE_P2_limit_kW) const; void write_charge_profile(const std::string& output_path) const; }; diff --git a/source/factory/P2_vs_battery_efficiency_factory.cpp b/source/factory/P2_vs_battery_efficiency_factory.cpp index 4c9becc..19b0075 100644 --- a/source/factory/P2_vs_battery_efficiency_factory.cpp +++ b/source/factory/P2_vs_battery_efficiency_factory.cpp @@ -5,15 +5,23 @@ // P2_vs_battery_efficiency //################################################## -P2_vs_battery_efficiency::P2_vs_battery_efficiency(const line_segment& curve, const double& zero_slope_threashold) - : curve(curve), zero_slope_threashold(zero_slope_threashold) {} +P2_vs_battery_efficiency::P2_vs_battery_efficiency(const line_segment& curve, + const double& zero_slope_threashold) + : curve{ curve }, + zero_slope_threashold{ zero_slope_threashold } +{ +} //################################################## // P2_vs_battery_efficiency_factory //################################################## -P2_vs_battery_efficiency_factory::P2_vs_battery_efficiency_factory(const EV_EVSE_inventory& inventory) : inventory(inventory), P2_vs_battery_eff(this->load_P2_vs_battery_eff()) {} +P2_vs_battery_efficiency_factory::P2_vs_battery_efficiency_factory(const EV_EVSE_inventory& inventory) + : inventory{ inventory }, + P2_vs_battery_eff{ this->load_P2_vs_battery_eff() } +{ +} const P2_vs_battery_efficiency_map P2_vs_battery_efficiency_factory::load_P2_vs_battery_eff() { @@ -36,46 +44,46 @@ const P2_vs_battery_efficiency_map P2_vs_battery_efficiency_factory::load_P2_vs_ if (chemistry == LTO) { mode = charging; - line_segment curve1(0, 6 * battery_size_kWh, -0.0078354 / battery_size_kWh, 0.987448); + line_segment curve1{ 0, 6 * battery_size_kWh, -0.0078354 / battery_size_kWh, 0.987448 }; zero_slope_threashold = (std::abs(curve1.a) < 0.000001) ? 0.000001 : 0.9 * std::abs(curve1.a); // If the slope is smaller than 0.000001 that the 'safe' method will be used. // Very little rational to using 0.000001 it will allow the complex method using a 1000 kWh battery pack - inner_map.emplace(mode, P2_vs_battery_efficiency(curve1, zero_slope_threashold)); + inner_map.emplace(mode, P2_vs_battery_efficiency{ curve1, zero_slope_threashold }); //----------------------- mode = discharging; - line_segment curve2(-6 * battery_size_kWh, 0, -0.0102411 / battery_size_kWh, 1.0109224); + line_segment curve2{ -6 * battery_size_kWh, 0, -0.0102411 / battery_size_kWh, 1.0109224 }; zero_slope_threashold = (std::abs(curve2.a) < 0.000001) ? 0.000001 : 0.9 * std::abs(curve2.a); - inner_map.emplace(mode, P2_vs_battery_efficiency(curve2, zero_slope_threashold)); + inner_map.emplace(mode, P2_vs_battery_efficiency{ curve2, zero_slope_threashold }); } else if (chemistry == LMO) { mode = charging; - line_segment curve1(0, 4 * battery_size_kWh, -0.0079286 / battery_size_kWh, 0.9936637); + line_segment curve1{ 0, 4 * battery_size_kWh, -0.0079286 / battery_size_kWh, 0.9936637 }; zero_slope_threashold = (std::abs(curve1.a) < 0.000001) ? 0.000001 : 0.9 * std::abs(curve1.a); - inner_map.emplace(mode, P2_vs_battery_efficiency(curve1, zero_slope_threashold)); + inner_map.emplace(mode, P2_vs_battery_efficiency{ curve1, zero_slope_threashold }); //----------------------- mode = discharging; - line_segment curve2(-4 * battery_size_kWh, 0, -0.0092091 / battery_size_kWh, 1.005674); + line_segment curve2{ -4 * battery_size_kWh, 0, -0.0092091 / battery_size_kWh, 1.005674 }; zero_slope_threashold = (std::abs(curve2.a) < 0.000001) ? 0.000001 : 0.9 * std::abs(curve2.a); - inner_map.emplace(mode, P2_vs_battery_efficiency(curve2, zero_slope_threashold)); + inner_map.emplace(mode, P2_vs_battery_efficiency{ curve2, zero_slope_threashold }); } else if (chemistry == NMC) { mode = charging; - line_segment curve1(0, 4 * battery_size_kWh, -0.0053897 / battery_size_kWh, 0.9908405); + line_segment curve1{ 0, 4 * battery_size_kWh, -0.0053897 / battery_size_kWh, 0.9908405 }; zero_slope_threashold = (std::abs(curve1.a) < 0.000001) ? 0.000001 : 0.9 * std::abs(curve1.a); - inner_map.emplace(mode, P2_vs_battery_efficiency(curve1, zero_slope_threashold)); + inner_map.emplace(mode, P2_vs_battery_efficiency{ curve1, zero_slope_threashold }); //---------------------- mode = discharging; - line_segment curve2(-4 * battery_size_kWh, 0, -0.0062339 / battery_size_kWh, 1.0088727); + line_segment curve2{ -4 * battery_size_kWh, 0, -0.0062339 / battery_size_kWh, 1.0088727 }; zero_slope_threashold = (std::abs(curve2.a) < 0.000001) ? 0.000001 : 0.9 * std::abs(curve2.a); - inner_map.emplace(mode, P2_vs_battery_efficiency(curve2, zero_slope_threashold)); + inner_map.emplace(mode, P2_vs_battery_efficiency{ curve2, zero_slope_threashold }); } else { @@ -83,10 +91,11 @@ const P2_vs_battery_efficiency_map P2_vs_battery_efficiency_factory::load_P2_vs_ } outer_map.emplace(EV, inner_map); } - return std::move(outer_map); + return outer_map; } -const P2_vs_battery_efficiency& P2_vs_battery_efficiency_factory::get_P2_vs_battery_eff(const EV_type& EV, const battery_charge_mode& mode) const +const P2_vs_battery_efficiency& P2_vs_battery_efficiency_factory::get_P2_vs_battery_eff(const EV_type& EV, + const battery_charge_mode& mode) const { return this->P2_vs_battery_eff.at(EV).at(mode); } \ No newline at end of file diff --git a/source/factory/P2_vs_battery_efficiency_factory.h b/source/factory/P2_vs_battery_efficiency_factory.h index f8f6849..a4bcbbf 100644 --- a/source/factory/P2_vs_battery_efficiency_factory.h +++ b/source/factory/P2_vs_battery_efficiency_factory.h @@ -14,7 +14,8 @@ struct P2_vs_battery_efficiency { const line_segment curve; const double zero_slope_threashold; - P2_vs_battery_efficiency(const line_segment& curve, const double& zero_slope_threashold); + P2_vs_battery_efficiency(const line_segment& curve, + const double& zero_slope_threashold); }; typedef std::unordered_map > P2_vs_battery_efficiency_map; @@ -31,6 +32,7 @@ class P2_vs_battery_efficiency_factory public: P2_vs_battery_efficiency_factory(const EV_EVSE_inventory& inventory); - const P2_vs_battery_efficiency& get_P2_vs_battery_eff(const EV_type& EV, const battery_charge_mode& mode) const; + const P2_vs_battery_efficiency& get_P2_vs_battery_eff(const EV_type& EV, + const battery_charge_mode& mode) const; }; #endif \ No newline at end of file diff --git a/source/factory/SOC_vs_P2_factory.cpp b/source/factory/SOC_vs_P2_factory.cpp index 9be630b..1ba40cf 100644 --- a/source/factory/SOC_vs_P2_factory.cpp +++ b/source/factory/SOC_vs_P2_factory.cpp @@ -1,6 +1,17 @@ #include "SOC_vs_P2_factory.h" #include +//########################################################## +// SOC_vs_P2 +//########################################################## + +SOC_vs_P2::SOC_vs_P2(const std::vector& curve, + const double& zero_slope_threashold) + : curve{ curve }, + zero_slope_threashold{ zero_slope_threashold } +{ +} + //########################################################## // create_dcPkW_from_soc @@ -8,9 +19,13 @@ create_dcPkW_from_soc::create_dcPkW_from_soc(const EV_EVSE_inventory& inventory, - const std::map >, std::greater >& curves, - const battery_charge_mode& mode) - : inventory(inventory), curves(curves), mode(mode) {} + const curves_grouping& curves, + const battery_charge_mode& mode) + : inventory{ inventory }, + curves{ curves }, + mode{ mode } +{ +} const double create_dcPkW_from_soc::compute_min_non_zero_slope(const std::vector& charge_profile) const { @@ -102,11 +117,13 @@ const SOC_vs_P2 create_dcPkW_from_soc::get_L1_or_L2_charge_profile(const EV_type const double zero_slope_threashold_P2_vs_soc = this->compute_zero_slope_threashold_P2_vs_soc(charge_profile); - return SOC_vs_P2(charge_profile, zero_slope_threashold_P2_vs_soc); + return SOC_vs_P2{ charge_profile, zero_slope_threashold_P2_vs_soc }; } -const SOC_vs_P2 create_dcPkW_from_soc::get_dcfc_charge_profile(const battery_charge_mode& mode, const EV_type& EV, const EVSE_type& EVSE) const +const SOC_vs_P2 create_dcPkW_from_soc::get_dcfc_charge_profile(const battery_charge_mode& mode, + const EV_type& EV, + const EVSE_type& EVSE) const { if (mode == charging) { @@ -123,7 +140,8 @@ const SOC_vs_P2 create_dcPkW_from_soc::get_dcfc_charge_profile(const battery_cha } -const SOC_vs_P2 create_dcPkW_from_soc::get_charging_dcfc_charge_profile(const EV_type& EV, const EVSE_type& EVSE) const +const SOC_vs_P2 create_dcPkW_from_soc::get_charging_dcfc_charge_profile(const EV_type& EV, + const EVSE_type& EVSE) const { const double battery_size_kWh = this->inventory.get_EV_inventory().at(EV).get_battery_size_kWh(); const double battery_capacity_Ah_1C = this->inventory.get_EV_inventory().at(EV).get_battery_size_Ah_1C(); @@ -273,6 +291,10 @@ const SOC_vs_P2 create_dcPkW_from_soc::get_charging_dcfc_charge_profile(const EV lower_ptr++; update_lower(); } + else + { + ASSERT(false, "ERROR: Not expecting this block to be active"); + } //------------------------------- @@ -426,7 +448,7 @@ const SOC_vs_P2 create_dcPkW_from_soc::get_charging_dcfc_charge_profile(const EV //constraints = constraints_; - return SOC_vs_P2(dcPkW_from_soc_input, zero_slope_threashold_P2_vs_soc); + return SOC_vs_P2{ dcPkW_from_soc_input, zero_slope_threashold_P2_vs_soc }; } const SOC_vs_P2 create_dcPkW_from_soc::get_discharging_dcfc_charge_profile(const EV_type& EV, const EVSE_type& EVSE) const @@ -578,6 +600,10 @@ const SOC_vs_P2 create_dcPkW_from_soc::get_discharging_dcfc_charge_profile(const lower_ptr++; update_lower(); } + else + { + ASSERT(false, "ERROR: Not expecting this block to be active"); + } //------------------------------- @@ -729,7 +755,7 @@ const SOC_vs_P2 create_dcPkW_from_soc::get_discharging_dcfc_charge_profile(const constraints_.push_back(constraint_B); //constraints = constraints_; - return SOC_vs_P2(dcPkW_from_soc_input, zero_slope_threashold_P2_vs_soc); + return SOC_vs_P2{ dcPkW_from_soc_input, zero_slope_threashold_P2_vs_soc }; } @@ -738,12 +764,19 @@ const SOC_vs_P2 create_dcPkW_from_soc::get_discharging_dcfc_charge_profile(const //########################################################## -SOC_vs_P2_factory::SOC_vs_P2_factory(const EV_EVSE_inventory& inventory) : inventory(inventory), - LMO_charge(this->load_LMO_charge()), NMC_charge(this->load_NMC_charge()), LTO_charge(this->load_LTO_charge()), - L1_L2_curves(this->load_L1_L2_curves()), DCFC_curves(this->load_DCFC_curves()) {} +SOC_vs_P2_factory::SOC_vs_P2_factory(const EV_EVSE_inventory& inventory) + : inventory{ inventory }, + LMO_charge{ this->load_LMO_charge() }, + NMC_charge{ this->load_NMC_charge() }, + LTO_charge{ this->load_LTO_charge() }, + L1_L2_curves{ this->load_L1_L2_curves() }, + DCFC_curves{ this->load_DCFC_curves() } +{ +} -const SOC_vs_P2& SOC_vs_P2_factory::get_SOC_vs_P2_curves(const EV_type& EV, const EVSE_type& EVSE) const +const SOC_vs_P2& SOC_vs_P2_factory::get_SOC_vs_P2_curves(const EV_type& EV, + const EVSE_type& EVSE) const { const EVSE_level& level = this->inventory.get_EVSE_inventory().at(EVSE).get_level(); @@ -781,7 +814,7 @@ const SOC_vs_P2& SOC_vs_P2_factory::get_SOC_vs_P2_curves(const EV_type& EV, cons const create_dcPkW_from_soc SOC_vs_P2_factory::load_LMO_charge() { std::map > points; - std::map >, std::greater > curves; + curves_grouping curves; double C_rate; @@ -841,14 +874,14 @@ const create_dcPkW_from_soc SOC_vs_P2_factory::load_LMO_charge() //------------------------------------ - const create_dcPkW_from_soc LMO_charge(this->inventory, curves, charging); + const create_dcPkW_from_soc LMO_charge{ this->inventory, curves, charging }; return LMO_charge; } const create_dcPkW_from_soc SOC_vs_P2_factory::load_NMC_charge() { std::map > points; - std::map >, std::greater > curves; + curves_grouping curves; double C_rate; @@ -910,14 +943,14 @@ const create_dcPkW_from_soc SOC_vs_P2_factory::load_NMC_charge() //------------------------------------ - const create_dcPkW_from_soc NMC_charge(this->inventory, curves, charging); + const create_dcPkW_from_soc NMC_charge{ this->inventory, curves, charging }; return NMC_charge; } const create_dcPkW_from_soc SOC_vs_P2_factory::load_LTO_charge() { std::map > points; - std::map >, std::greater > curves; + curves_grouping curves; double C_rate; @@ -1013,7 +1046,7 @@ const create_dcPkW_from_soc SOC_vs_P2_factory::load_LTO_charge() //------------------------------------ - const create_dcPkW_from_soc LTO_charge(this->inventory, curves, charging); + const create_dcPkW_from_soc LTO_charge{ this->inventory, curves, charging }; return LTO_charge; } @@ -1121,9 +1154,6 @@ const std::unordered_map< std::pair, SOC_vs_P2, pair_hash > void SOC_vs_P2_factory::write_charge_profile(const std::string& output_path) const { -// const std::unordered_map L1_L2_curves; -// const std::unordered_map< std::pair, SOC_vs_P2, pair_hash > DCFC_curves; - std::string filename, header, data; std::ofstream file_handle; diff --git a/source/factory/SOC_vs_P2_factory.h b/source/factory/SOC_vs_P2_factory.h index 6205e79..471fb52 100644 --- a/source/factory/SOC_vs_P2_factory.h +++ b/source/factory/SOC_vs_P2_factory.h @@ -36,10 +36,11 @@ struct SOC_vs_P2 const std::vector curve; const double zero_slope_threashold; - SOC_vs_P2(const std::vector& curve, const double& zero_slope_threashold) - : curve(curve), zero_slope_threashold(zero_slope_threashold) {} + SOC_vs_P2(const std::vector& curve, + const double& zero_slope_threashold); }; +typedef std::map >, std::greater > curves_grouping; class create_dcPkW_from_soc { @@ -47,21 +48,26 @@ class create_dcPkW_from_soc const EV_EVSE_inventory& inventory; - const std::map >, std::greater > curves; + // all the curves are sorted in descending order by c_rate + const curves_grouping curves; const battery_charge_mode mode; const double compute_min_non_zero_slope(const std::vector& charge_profile) const; const double compute_zero_slope_threashold_P2_vs_soc(const std::vector& charge_profile) const; - const SOC_vs_P2 get_charging_dcfc_charge_profile(const EV_type& EV, const EVSE_type& EVSE) const; - const SOC_vs_P2 get_discharging_dcfc_charge_profile(const EV_type& EV, const EVSE_type& EVSE) const; + const SOC_vs_P2 get_charging_dcfc_charge_profile(const EV_type& EV, + const EVSE_type& EVSE) const; + const SOC_vs_P2 get_discharging_dcfc_charge_profile(const EV_type& EV, + const EVSE_type& EVSE) const; public: create_dcPkW_from_soc(const EV_EVSE_inventory& inventory, - const std::map >, std::greater >& curves, - const battery_charge_mode& mode); + const curves_grouping& curves, + const battery_charge_mode& mode); - const SOC_vs_P2 get_dcfc_charge_profile(const battery_charge_mode& mode, const EV_type& EV, const EVSE_type& EVSE) const; + const SOC_vs_P2 get_dcfc_charge_profile(const battery_charge_mode& mode, + const EV_type& EV, + const EVSE_type& EVSE) const; const SOC_vs_P2 get_L1_or_L2_charge_profile(const EV_type& EV) const; }; diff --git a/source/factory/charging_transitions_factory.cpp b/source/factory/charging_transitions_factory.cpp index 5f03660..66c4e9e 100644 --- a/source/factory/charging_transitions_factory.cpp +++ b/source/factory/charging_transitions_factory.cpp @@ -7,55 +7,67 @@ //########################################### charging_transitions::charging_transitions(const EVSE_level_charging_transitions& charging_transitions_by_EVSE_level, - const EV_charging_transitions& charging_transitions_by_custom_EV, - const EV_EVSE_charging_transitions& charging_transitions_by_custom_EV_EVSE) - : charging_transitions_by_EVSE_level(charging_transitions_by_EVSE_level), - charging_transitions_by_custom_EV(charging_transitions_by_custom_EV), - charging_transitions_by_custom_EV_EVSE(charging_transitions_by_custom_EV_EVSE) {} + const EV_charging_transitions& charging_transitions_by_custom_EV, + const EV_EVSE_charging_transitions& charging_transitions_by_custom_EV_EVSE) + : charging_transitions_by_EVSE_level{ charging_transitions_by_EVSE_level }, + charging_transitions_by_custom_EV{ charging_transitions_by_custom_EV }, + charging_transitions_by_custom_EV_EVSE{ charging_transitions_by_custom_EV_EVSE } +{ +} + //########################################### -// transitions_factory +// charging_transitions_factory //########################################### -charging_transitions_factory::charging_transitions_factory(const EV_EVSE_inventory& inventory, const EV_ramping_map& custom_EV_ramping, const EV_EVSE_ramping_map& custom_EV_EVSE_ramping) - : inventory(inventory), custom_EV_ramping(custom_EV_ramping), custom_EV_EVSE_ramping(custom_EV_EVSE_ramping), charging_transitions_obj(this->load_charging_transitions()) {} +charging_transitions_factory::charging_transitions_factory(const EV_EVSE_inventory& inventory, + const EV_ramping_map& custom_EV_ramping, + const EV_EVSE_ramping_map& custom_EV_EVSE_ramping) + : inventory{ inventory }, + custom_EV_ramping{ custom_EV_ramping }, + custom_EV_EVSE_ramping{ custom_EV_EVSE_ramping }, + charging_transitions_obj{ this->load_charging_transitions() } +{ +} const charging_transitions charging_transitions_factory::load_charging_transitions() { EVSE_level_charging_transitions transitions_by_EVSE_level; - // Each transition_of_X_through_time must have at least 3 segments. + /* + Each transition_of_X_through_time must have at least 3 segments. - // struct transition_goto_next_segment_criteria - // { - // transition_criteria_type criteria_type; - // double criteria_value; - // bool inturupt_this_transition_if_target_X_deviation_limit_exceeded; - // double target_X_deviation_limit_to_interupt_this_transition; - // double segment_slope_X_per_sec; - // }; + struct transition_goto_next_segment_criteria + { + transition_criteria_type criteria_type; + double criteria_value; + bool inturupt_this_transition_if_target_X_deviation_limit_exceeded; + double target_X_deviation_limit_to_interupt_this_transition; + double segment_slope_X_per_sec; + }; + */ double X_deadband, target_deadband, off_deadband; bool pos_and_neg_transitions_are_unique = false; - std::vector goto_next_seg; - + std::vector goto_next_seg{}; + X_deadband = 0.1; target_deadband = 0.01; off_deadband = 0.0001; goto_next_seg.clear(); - goto_next_seg.push_back({ time_delay_sec, 0.1, false, 0, 0 }); - goto_next_seg.push_back({ time_delay_sec, 0.1, false, 0, 0 }); - goto_next_seg.push_back({ from_final_X, 0, false, 0, 10 }); - transition_of_X_through_time default_to_pos_inf(moving_toward_pos_inf, X_deadband, goto_next_seg); + goto_next_seg.emplace_back( time_delay_sec, 0.1, false, 0, 0 ); + goto_next_seg.emplace_back( time_delay_sec, 0.1, false, 0, 0 ); + goto_next_seg.emplace_back( from_final_X, 0, false, 0, 10 ); + transition_of_X_through_time default_to_pos_inf{ moving_toward_pos_inf, X_deadband, goto_next_seg }; goto_next_seg.clear(); - goto_next_seg.push_back({ time_delay_sec, 0.1, false, 0, 0 }); - goto_next_seg.push_back({ time_delay_sec, 0.1, false, 0, 0 }); - goto_next_seg.push_back({ from_final_X, 0, false, 0, -10 }); - transition_of_X_through_time default_to_neg_inf(moving_toward_neg_inf, X_deadband, goto_next_seg); + goto_next_seg.emplace_back( time_delay_sec, 0.1, false, 0, 0 ); + goto_next_seg.emplace_back( time_delay_sec, 0.1, false, 0, 0 ); + goto_next_seg.emplace_back( from_final_X, 0, false, 0, -10 ); + transition_of_X_through_time default_to_neg_inf{ moving_toward_neg_inf, X_deadband, goto_next_seg }; //================================ // All Default V2G Transitions @@ -109,43 +121,43 @@ const charging_transitions charging_transitions_factory::load_charging_transitio // off_to_pos //---------------------- goto_next_seg.clear(); - goto_next_seg.push_back({ time_delay_sec, 4.95, false, 0, 0 }); - goto_next_seg.push_back({ time_delay_sec, 0.05, false, 0, 0 }); - goto_next_seg.push_back({ from_final_X, 0, false, 0, 0.5 }); - transition_of_X_through_time off_to_pos_obj(off_to_pos, X_deadband, goto_next_seg); + goto_next_seg.emplace_back( time_delay_sec, 4.95, false, 0, 0 ); + goto_next_seg.emplace_back( time_delay_sec, 0.05, false, 0, 0 ); + goto_next_seg.emplace_back( from_final_X, 0, false, 0, 0.5 ); + transition_of_X_through_time off_to_pos_obj{ off_to_pos, X_deadband, goto_next_seg }; //---------------------- // pos_to_off //---------------------- goto_next_seg.clear(); - goto_next_seg.push_back({ time_delay_sec, 0.095, false, 0, 0 }); - goto_next_seg.push_back({ time_delay_sec, 0.005, false, 0, 0 }); - goto_next_seg.push_back({ from_final_X, 0, false, 0, -50 }); - transition_of_X_through_time pos_to_off_obj(pos_to_off, X_deadband, goto_next_seg); + goto_next_seg.emplace_back( time_delay_sec, 0.095, false, 0, 0 ); + goto_next_seg.emplace_back( time_delay_sec, 0.005, false, 0, 0 ); + goto_next_seg.emplace_back( from_final_X, 0, false, 0, -50 ); + transition_of_X_through_time pos_to_off_obj{ pos_to_off, X_deadband, goto_next_seg }; //----------------------- // moving_toward_pos_inf //----------------------- goto_next_seg.clear(); - goto_next_seg.push_back({ time_delay_sec, 0.12, false, 0, 0 }); - goto_next_seg.push_back({ time_delay_sec, 0.03, false, 0, 0 }); - goto_next_seg.push_back({ from_final_X, 0, false, 0, 0.5 }); - transition_of_X_through_time moving_toward_pos_inf_obj(moving_toward_pos_inf, X_deadband, goto_next_seg); + goto_next_seg.emplace_back( time_delay_sec, 0.12, false, 0, 0 ); + goto_next_seg.emplace_back( time_delay_sec, 0.03, false, 0, 0 ); + goto_next_seg.emplace_back( from_final_X, 0, false, 0, 0.5 ); + transition_of_X_through_time moving_toward_pos_inf_obj{ moving_toward_pos_inf, X_deadband, goto_next_seg }; //----------------------- // moving_toward_neg_inf //----------------------- goto_next_seg.clear(); - goto_next_seg.push_back({ time_delay_sec, 0.09, false, 0, 0 }); - goto_next_seg.push_back({ time_delay_sec, 0.01, false, 0, 0 }); - goto_next_seg.push_back({ from_final_X, 0, false, 0, -0.5 }); - transition_of_X_through_time moving_toward_neg_inf_obj(moving_toward_neg_inf, X_deadband, goto_next_seg); + goto_next_seg.emplace_back( time_delay_sec, 0.09, false, 0, 0 ); + goto_next_seg.emplace_back( time_delay_sec, 0.01, false, 0, 0 ); + goto_next_seg.emplace_back( from_final_X, 0, false, 0, -0.5 ); + transition_of_X_through_time moving_toward_neg_inf_obj{ moving_toward_neg_inf, X_deadband, goto_next_seg }; //----------------------- - return std::move(integrate_X_through_time(target_deadband, off_deadband, pos_and_neg_transitions_are_unique, + return integrate_X_through_time{ target_deadband, off_deadband, pos_and_neg_transitions_are_unique, pos_to_off_obj, neg_to_off_obj, off_to_pos_obj, off_to_neg_obj, moving_toward_pos_inf_obj, moving_toward_neg_inf_obj, - pos_moving_toward_pos_inf_obj, pos_moving_toward_neg_inf_obj, neg_moving_toward_pos_inf_obj, neg_moving_toward_neg_inf_obj)); + pos_moving_toward_pos_inf_obj, pos_moving_toward_neg_inf_obj, neg_moving_toward_pos_inf_obj, neg_moving_toward_neg_inf_obj }; }()); transitions_by_EVSE_level.emplace(L2, [&]() { @@ -158,43 +170,43 @@ const charging_transitions charging_transitions_factory::load_charging_transitio // off_to_pos //---------------------- goto_next_seg.clear(); - goto_next_seg.push_back({ time_delay_sec, 4.95, false, 0, 0 }); - goto_next_seg.push_back({ time_delay_sec, 0.05, false, 0, 0 }); - goto_next_seg.push_back({ from_final_X, 0, false, 0, 2 }); - transition_of_X_through_time off_to_pos_obj(off_to_pos, X_deadband, goto_next_seg); + goto_next_seg.emplace_back( time_delay_sec, 4.95, false, 0, 0 ); + goto_next_seg.emplace_back( time_delay_sec, 0.05, false, 0, 0 ); + goto_next_seg.emplace_back( from_final_X, 0, false, 0, 2 ); + transition_of_X_through_time off_to_pos_obj{ off_to_pos, X_deadband, goto_next_seg }; //---------------------- // pos_to_off //---------------------- goto_next_seg.clear(); - goto_next_seg.push_back({ time_delay_sec, 0.095, false, 0, 0 }); - goto_next_seg.push_back({ time_delay_sec, 0.005, false, 0, 0 }); - goto_next_seg.push_back({ from_final_X, 0, false, 0, -100 }); - transition_of_X_through_time pos_to_off_obj(pos_to_off, X_deadband, goto_next_seg); + goto_next_seg.emplace_back( time_delay_sec, 0.095, false, 0, 0 ); + goto_next_seg.emplace_back( time_delay_sec, 0.005, false, 0, 0 ); + goto_next_seg.emplace_back( from_final_X, 0, false, 0, -100 ); + transition_of_X_through_time pos_to_off_obj{ pos_to_off, X_deadband, goto_next_seg }; //----------------------- // moving_toward_pos_inf //----------------------- goto_next_seg.clear(); - goto_next_seg.push_back({ time_delay_sec, 0.12, false, 0, 0 }); - goto_next_seg.push_back({ time_delay_sec, 0.03, false, 0, 0 }); - goto_next_seg.push_back({ from_final_X, 0, false, 0, 2 }); - transition_of_X_through_time moving_toward_pos_inf_obj(moving_toward_pos_inf, X_deadband, goto_next_seg); + goto_next_seg.emplace_back( time_delay_sec, 0.12, false, 0, 0 ); + goto_next_seg.emplace_back( time_delay_sec, 0.03, false, 0, 0 ); + goto_next_seg.emplace_back( from_final_X, 0, false, 0, 2 ); + transition_of_X_through_time moving_toward_pos_inf_obj{ moving_toward_pos_inf, X_deadband, goto_next_seg }; //----------------------- // moving_toward_neg_inf //----------------------- goto_next_seg.clear(); - goto_next_seg.push_back({ time_delay_sec, 0.09, false, 0, 0 }); - goto_next_seg.push_back({ time_delay_sec, 0.01, false, 0, 0 }); - goto_next_seg.push_back({ from_final_X, 0, false, 0, -3 }); - transition_of_X_through_time moving_toward_neg_inf_obj(moving_toward_neg_inf, X_deadband, goto_next_seg); + goto_next_seg.emplace_back( time_delay_sec, 0.09, false, 0, 0 ); + goto_next_seg.emplace_back( time_delay_sec, 0.01, false, 0, 0 ); + goto_next_seg.emplace_back( from_final_X, 0, false, 0, -3 ); + transition_of_X_through_time moving_toward_neg_inf_obj{ moving_toward_neg_inf, X_deadband, goto_next_seg }; //----------------------- - return std::move(integrate_X_through_time(target_deadband, off_deadband, pos_and_neg_transitions_are_unique, + return integrate_X_through_time{ target_deadband, off_deadband, pos_and_neg_transitions_are_unique, pos_to_off_obj, neg_to_off_obj, off_to_pos_obj, off_to_neg_obj, moving_toward_pos_inf_obj, moving_toward_neg_inf_obj, - pos_moving_toward_pos_inf_obj, pos_moving_toward_neg_inf_obj, neg_moving_toward_pos_inf_obj, neg_moving_toward_neg_inf_obj)); + pos_moving_toward_pos_inf_obj, pos_moving_toward_neg_inf_obj, neg_moving_toward_pos_inf_obj, neg_moving_toward_neg_inf_obj }; }()); transitions_by_EVSE_level.emplace(DCFC, [&]() { @@ -207,43 +219,43 @@ const charging_transitions charging_transitions_factory::load_charging_transitio // pos_to_off //---------------------- goto_next_seg.clear(); - goto_next_seg.push_back({ time_delay_sec, 0.040, false, 0, 0 }); - goto_next_seg.push_back({ time_delay_sec, 0.010, false, 0, 0 }); - goto_next_seg.push_back({ from_final_X, 0, false, 0, -140000 }); - transition_of_X_through_time pos_to_off_obj(pos_to_off, X_deadband, goto_next_seg); + goto_next_seg.emplace_back( time_delay_sec, 0.040, false, 0, 0 ); + goto_next_seg.emplace_back( time_delay_sec, 0.010, false, 0, 0 ); + goto_next_seg.emplace_back( from_final_X, 0, false, 0, -140000 ); + transition_of_X_through_time pos_to_off_obj{ pos_to_off, X_deadband, goto_next_seg }; //---------------------- // off_to_pos //---------------------- goto_next_seg.clear(); - goto_next_seg.push_back({ time_delay_sec, 14.9, false, 0, 0 }); - goto_next_seg.push_back({ time_delay_sec, 0.1, false, 0, 0 }); - goto_next_seg.push_back({ from_final_X, 0, false, 0, 25 }); - transition_of_X_through_time off_to_pos_obj(off_to_pos, X_deadband, goto_next_seg); + goto_next_seg.emplace_back( time_delay_sec, 14.9, false, 0, 0 ); + goto_next_seg.emplace_back( time_delay_sec, 0.1, false, 0, 0 ); + goto_next_seg.emplace_back( from_final_X, 0, false, 0, 25 ); + transition_of_X_through_time off_to_pos_obj{ off_to_pos, X_deadband, goto_next_seg }; //----------------------- // moving_toward_pos_inf //----------------------- goto_next_seg.clear(); - goto_next_seg.push_back({ time_delay_sec, 0.09, false, 0, 0 }); - goto_next_seg.push_back({ time_delay_sec, 0.01, false, 0, 0 }); - goto_next_seg.push_back({ from_final_X, 0, false, 0, 25 }); - transition_of_X_through_time moving_toward_pos_inf_obj(moving_toward_pos_inf, X_deadband, goto_next_seg); + goto_next_seg.emplace_back( time_delay_sec, 0.09, false, 0, 0 ); + goto_next_seg.emplace_back( time_delay_sec, 0.01, false, 0, 0 ); + goto_next_seg.emplace_back( from_final_X, 0, false, 0, 25 ); + transition_of_X_through_time moving_toward_pos_inf_obj{ moving_toward_pos_inf, X_deadband, goto_next_seg }; //----------------------- // moving_toward_neg_inf //----------------------- goto_next_seg.clear(); - goto_next_seg.push_back({ time_delay_sec, 0.09, false, 0, 0 }); - goto_next_seg.push_back({ time_delay_sec, 0.01, false, 0, 0 }); - goto_next_seg.push_back({ from_final_X, 0, false, 0, -25 }); - transition_of_X_through_time moving_toward_neg_inf_obj(moving_toward_neg_inf, X_deadband, goto_next_seg); + goto_next_seg.emplace_back( time_delay_sec, 0.09, false, 0, 0 ); + goto_next_seg.emplace_back( time_delay_sec, 0.01, false, 0, 0 ); + goto_next_seg.emplace_back( from_final_X, 0, false, 0, -25 ); + transition_of_X_through_time moving_toward_neg_inf_obj{ moving_toward_neg_inf, X_deadband, goto_next_seg }; //-------------------------------- - return std::move(integrate_X_through_time(target_deadband, off_deadband, pos_and_neg_transitions_are_unique, + return integrate_X_through_time{ target_deadband, off_deadband, pos_and_neg_transitions_are_unique, pos_to_off_obj, neg_to_off_obj, off_to_pos_obj, off_to_neg_obj, moving_toward_pos_inf_obj, moving_toward_neg_inf_obj, - pos_moving_toward_pos_inf_obj, pos_moving_toward_neg_inf_obj, neg_moving_toward_pos_inf_obj, neg_moving_toward_neg_inf_obj)); + pos_moving_toward_pos_inf_obj, pos_moving_toward_neg_inf_obj, neg_moving_toward_pos_inf_obj, neg_moving_toward_neg_inf_obj }; }()); //-------------------------------------------- @@ -267,10 +279,10 @@ const charging_transitions charging_transitions_factory::load_charging_transitio ramping_kW_per_sec = custom_charge_ramping.on_to_off_kW_per_sec; goto_next_seg.clear(); - goto_next_seg.push_back({ time_delay_sec, 0.9 * delay_sec, false, 0, 0 }); - goto_next_seg.push_back({ time_delay_sec, 0.1 * delay_sec, false, 0, 0 }); - goto_next_seg.push_back({ from_final_X, 0, false, 0, ramping_kW_per_sec }); - transition_of_X_through_time pos_to_off_obj(pos_to_off, X_deadband, goto_next_seg); + goto_next_seg.emplace_back( time_delay_sec, 0.9 * delay_sec, false, 0, 0 ); + goto_next_seg.emplace_back( time_delay_sec, 0.1 * delay_sec, false, 0, 0 ); + goto_next_seg.emplace_back( from_final_X, 0, false, 0, ramping_kW_per_sec ); + transition_of_X_through_time pos_to_off_obj{ pos_to_off, X_deadband, goto_next_seg }; //---------------------- // off_to_pos @@ -279,10 +291,10 @@ const charging_transitions charging_transitions_factory::load_charging_transitio ramping_kW_per_sec = custom_charge_ramping.off_to_on_kW_per_sec; goto_next_seg.clear(); - goto_next_seg.push_back({ time_delay_sec, 0.9 * delay_sec, false, 0, 0 }); - goto_next_seg.push_back({ time_delay_sec, 0.1 * delay_sec, false, 0, 0 }); - goto_next_seg.push_back({ from_final_X, 0, false, 0, ramping_kW_per_sec }); - transition_of_X_through_time off_to_pos_obj(off_to_pos, X_deadband, goto_next_seg); + goto_next_seg.emplace_back( time_delay_sec, 0.9 * delay_sec, false, 0, 0 ); + goto_next_seg.emplace_back( time_delay_sec, 0.1 * delay_sec, false, 0, 0 ); + goto_next_seg.emplace_back( from_final_X, 0, false, 0, ramping_kW_per_sec ); + transition_of_X_through_time off_to_pos_obj{ off_to_pos, X_deadband, goto_next_seg }; //----------------------- // moving_toward_pos_inf @@ -291,10 +303,10 @@ const charging_transitions charging_transitions_factory::load_charging_transitio ramping_kW_per_sec = custom_charge_ramping.ramp_up_kW_per_sec; goto_next_seg.clear(); - goto_next_seg.push_back({ time_delay_sec, 0.9 * delay_sec, false, 0, 0 }); - goto_next_seg.push_back({ time_delay_sec, 0.1 * delay_sec, false, 0, 0 }); - goto_next_seg.push_back({ from_final_X, 0, false, 0, ramping_kW_per_sec }); - transition_of_X_through_time moving_toward_pos_inf_obj(moving_toward_pos_inf, X_deadband, goto_next_seg); + goto_next_seg.emplace_back( time_delay_sec, 0.9 * delay_sec, false, 0, 0 ); + goto_next_seg.emplace_back( time_delay_sec, 0.1 * delay_sec, false, 0, 0 ); + goto_next_seg.emplace_back( from_final_X, 0, false, 0, ramping_kW_per_sec ); + transition_of_X_through_time moving_toward_pos_inf_obj{ moving_toward_pos_inf, X_deadband, goto_next_seg }; //----------------------- // moving_toward_neg_inf @@ -303,16 +315,16 @@ const charging_transitions charging_transitions_factory::load_charging_transitio ramping_kW_per_sec = custom_charge_ramping.ramp_down_kW_per_sec; goto_next_seg.clear(); - goto_next_seg.push_back({ time_delay_sec, 0.9 * delay_sec, false, 0, 0 }); - goto_next_seg.push_back({ time_delay_sec, 0.1 * delay_sec, false, 0, 0 }); - goto_next_seg.push_back({ from_final_X, 0, false, 0, ramping_kW_per_sec }); - transition_of_X_through_time moving_toward_neg_inf_obj(moving_toward_neg_inf, X_deadband, goto_next_seg); + goto_next_seg.emplace_back( time_delay_sec, 0.9 * delay_sec, false, 0, 0 ); + goto_next_seg.emplace_back( time_delay_sec, 0.1 * delay_sec, false, 0, 0 ); + goto_next_seg.emplace_back( from_final_X, 0, false, 0, ramping_kW_per_sec ); + transition_of_X_through_time moving_toward_neg_inf_obj{ moving_toward_neg_inf, X_deadband, goto_next_seg }; //----------------------- - return integrate_X_through_time(target_deadband, off_deadband, pos_and_neg_transitions_are_unique, + return integrate_X_through_time{ target_deadband, off_deadband, pos_and_neg_transitions_are_unique, pos_to_off_obj, neg_to_off_obj, off_to_pos_obj, off_to_neg_obj, moving_toward_pos_inf_obj, moving_toward_neg_inf_obj, - pos_moving_toward_pos_inf_obj, pos_moving_toward_neg_inf_obj, neg_moving_toward_pos_inf_obj, neg_moving_toward_neg_inf_obj); + pos_moving_toward_pos_inf_obj, pos_moving_toward_neg_inf_obj, neg_moving_toward_pos_inf_obj, neg_moving_toward_neg_inf_obj }; }; EV_charging_transitions charging_transitions_by_custom_EV; @@ -339,10 +351,11 @@ const charging_transitions charging_transitions_factory::load_charging_transitio charging_transitions_by_custom_EV_EVSE.emplace(EV_EVSE, load_custom_ramping()); } - return charging_transitions(transitions_by_EVSE_level, charging_transitions_by_custom_EV, charging_transitions_by_custom_EV_EVSE); + return charging_transitions{ transitions_by_EVSE_level, charging_transitions_by_custom_EV, charging_transitions_by_custom_EV_EVSE }; } -const integrate_X_through_time& charging_transitions_factory::get_charging_transitions(const EV_type& EV, const EVSE_type& EVSE) const +const integrate_X_through_time& charging_transitions_factory::get_charging_transitions(const EV_type& EV, + const EVSE_type& EVSE) const { const EVSE_level& level = this->inventory.get_EVSE_inventory().at(EVSE).get_level(); diff --git a/source/factory/charging_transitions_factory.h b/source/factory/charging_transitions_factory.h index 127b2eb..8c3351a 100644 --- a/source/factory/charging_transitions_factory.h +++ b/source/factory/charging_transitions_factory.h @@ -25,8 +25,8 @@ struct charging_transitions const EV_EVSE_charging_transitions charging_transitions_by_custom_EV_EVSE; charging_transitions(const EVSE_level_charging_transitions& charging_transitions_by_EVSE_level, - const EV_charging_transitions& charging_transitions_by_custom_EV, - const EV_EVSE_charging_transitions& charging_transitions_by_custom_EV_EVSE); + const EV_charging_transitions& charging_transitions_by_custom_EV, + const EV_EVSE_charging_transitions& charging_transitions_by_custom_EV_EVSE); }; @@ -45,9 +45,12 @@ class charging_transitions_factory public: - charging_transitions_factory(const EV_EVSE_inventory& inventory, const EV_ramping_map& custom_EV_ramping, const EV_EVSE_ramping_map& custom_EV_EVSE_ramping); + charging_transitions_factory(const EV_EVSE_inventory& inventory, + const EV_ramping_map& custom_EV_ramping, + const EV_EVSE_ramping_map& custom_EV_EVSE_ramping); - const integrate_X_through_time& get_charging_transitions(const EV_type& EV, const EVSE_type& EVSE) const; + const integrate_X_through_time& get_charging_transitions(const EV_type& EV, + const EVSE_type& EVSE) const; }; #endif \ No newline at end of file diff --git a/source/factory/puVrms_vs_P2_factory.cpp b/source/factory/puVrms_vs_P2_factory.cpp index cba13a6..32566e8 100644 --- a/source/factory/puVrms_vs_P2_factory.cpp +++ b/source/factory/puVrms_vs_P2_factory.cpp @@ -4,7 +4,11 @@ // puVrms_vs_P2_factory //########################################### -puVrms_vs_P2_factory::puVrms_vs_P2_factory(const EV_EVSE_inventory& inventory) : inventory(inventory), puVrms_vs_P2_curves(this->load_puVrms_vs_P2_curves()) {} +puVrms_vs_P2_factory::puVrms_vs_P2_factory(const EV_EVSE_inventory& inventory) + : inventory{ inventory }, + puVrms_vs_P2_curves{ this->load_puVrms_vs_P2_curves() } +{ +} const std::unordered_map > puVrms_vs_P2_factory::load_puVrms_vs_P2_curves() @@ -53,10 +57,11 @@ const std::unordered_map > puVrms_vs_P2_factory } return curve; }()); - return std::move(data); + return data; } -const poly_function_of_x puVrms_vs_P2_factory::get_puVrms_vs_P2(const EVSE_type& EVSE, const double& SE_P2_limit_atNominalV_kW) const +const poly_function_of_x puVrms_vs_P2_factory::get_puVrms_vs_P2(const EVSE_type& EVSE, + const double& SE_P2_limit_atNominalV_kW) const { const EVSE_level& level = this->inventory.get_EVSE_inventory().at(EVSE).get_level(); @@ -100,7 +105,7 @@ const poly_function_of_x puVrms_vs_P2_factory::get_puVrms_vs_P2(const EVSE_type& double x_tolerance = 0.0001; bool take_abs_of_x = false; bool if_x_is_out_of_bounds_print_warning_message = true; - return poly_function_of_x(x_tolerance, take_abs_of_x, if_x_is_out_of_bounds_print_warning_message, segments, "P2_vs_puVrms"); + return poly_function_of_x{ x_tolerance, take_abs_of_x, if_x_is_out_of_bounds_print_warning_message, segments, "P2_vs_puVrms" }; }(); return puVrms_vs_P2; diff --git a/source/factory/puVrms_vs_P2_factory.h b/source/factory/puVrms_vs_P2_factory.h index 80b3cc9..f5b8b1f 100644 --- a/source/factory/puVrms_vs_P2_factory.h +++ b/source/factory/puVrms_vs_P2_factory.h @@ -4,11 +4,11 @@ #include #include -#include "EV_characteristics.h" -#include "EVSE_characteristics.h" -#include "EV_EVSE_inventory.h" +#include "EV_characteristics.h" // EV_type +#include "EVSE_characteristics.h" // EVSE_type +#include "EV_EVSE_inventory.h" // EV_EVSE_inventory -#include "helper.h" // poly_segment, poly_function_of_x +#include "helper.h" // poly_segment, poly_function_of_x typedef double puVrms; typedef double P2; @@ -25,8 +25,8 @@ class puVrms_vs_P2_factory public: puVrms_vs_P2_factory(const EV_EVSE_inventory& inventory); - const poly_function_of_x get_puVrms_vs_P2(const EVSE_type& EVSE, const double& SE_P2_limit_atNominalV_kW) const; - + const poly_function_of_x get_puVrms_vs_P2(const EVSE_type& EVSE, + const double& SE_P2_limit_atNominalV_kW) const; }; #endif \ No newline at end of file From 97e629413fdcab311000d10045151ebe10124ef8 Mon Sep 17 00:00:00 2001 From: Manoj Kumar Cebol Sundarrajan Date: Wed, 10 May 2023 13:21:45 -0600 Subject: [PATCH 08/52] changed filenames and classes to start with factory --- ...actory.cpp => factory_EV_charge_model.cpp} | 16 ++++++------- ...el_factory.h => factory_EV_charge_model.h} | 24 +++++++++---------- ...p => factory_P2_vs_battery_efficiency.cpp} | 10 ++++---- ...y.h => factory_P2_vs_battery_efficiency.h} | 8 +++---- ...s_P2_factory.cpp => factory_SOC_vs_P2.cpp} | 20 ++++++++-------- ...OC_vs_P2_factory.h => factory_SOC_vs_P2.h} | 10 ++++---- ...y.cpp => factory_charging_transitions.cpp} | 10 ++++---- ...ctory.h => factory_charging_transitions.h} | 8 +++---- ...2_factory.cpp => factory_puVrms_vs_P2.cpp} | 10 ++++---- ...vs_P2_factory.h => factory_puVrms_vs_P2.h} | 8 +++---- 10 files changed, 62 insertions(+), 62 deletions(-) rename source/factory/{EV_charge_model_factory.cpp => factory_EV_charge_model.cpp} (76%) rename source/factory/{EV_charge_model_factory.h => factory_EV_charge_model.h} (59%) rename source/factory/{P2_vs_battery_efficiency_factory.cpp => factory_P2_vs_battery_efficiency.cpp} (91%) rename source/factory/{P2_vs_battery_efficiency_factory.h => factory_P2_vs_battery_efficiency.h} (81%) rename source/factory/{SOC_vs_P2_factory.cpp => factory_SOC_vs_P2.cpp} (98%) rename source/factory/{SOC_vs_P2_factory.h => factory_SOC_vs_P2.h} (94%) rename source/factory/{charging_transitions_factory.cpp => factory_charging_transitions.cpp} (98%) rename source/factory/{charging_transitions_factory.h => factory_charging_transitions.h} (90%) rename source/factory/{puVrms_vs_P2_factory.cpp => factory_puVrms_vs_P2.cpp} (91%) rename source/factory/{puVrms_vs_P2_factory.h => factory_puVrms_vs_P2.h} (81%) diff --git a/source/factory/EV_charge_model_factory.cpp b/source/factory/factory_EV_charge_model.cpp similarity index 76% rename from source/factory/EV_charge_model_factory.cpp rename to source/factory/factory_EV_charge_model.cpp index 334f432..e917559 100644 --- a/source/factory/EV_charge_model_factory.cpp +++ b/source/factory/factory_EV_charge_model.cpp @@ -1,4 +1,4 @@ -#include "EV_charge_model_factory.h" +#include "factory_EV_charge_model.h" #include "helper.h" //poly_segment @@ -10,21 +10,21 @@ //######################################################################## -EV_charge_model_factory::EV_charge_model_factory(const EV_EVSE_inventory& inventory, +factory_EV_charge_model::factory_EV_charge_model(const EV_EVSE_inventory& inventory, const EV_ramping_map& custom_EV_ramping, const EV_EVSE_ramping_map& custom_EV_EVSE_ramping, const bool& model_stochastic_battery_degregation) : inventory{ inventory }, - charging_transitions_obj{ charging_transitions_factory{inventory,custom_EV_ramping, custom_EV_EVSE_ramping} }, - puVrms_vs_P2_obj{ puVrms_vs_P2_factory{inventory} }, - SOC_vs_P2_obj{ SOC_vs_P2_factory{inventory} }, - P2_vs_battery_eff_obj{ P2_vs_battery_efficiency_factory{inventory} }, + charging_transitions_obj{ factory_charging_transitions{inventory,custom_EV_ramping, custom_EV_EVSE_ramping} }, + puVrms_vs_P2_obj{ factory_puVrms_vs_P2{inventory} }, + SOC_vs_P2_obj{ factory_SOC_vs_P2{inventory} }, + P2_vs_battery_eff_obj{ factory_P2_vs_battery_efficiency{inventory} }, model_stochastic_battery_degregation{ model_stochastic_battery_degregation } { } -vehicle_charge_model* EV_charge_model_factory::alloc_get_EV_charge_model(const charge_event_data& event, +vehicle_charge_model* factory_EV_charge_model::alloc_get_EV_charge_model(const charge_event_data& event, const EVSE_type& EVSE, const double& SE_P2_limit_kW) const { @@ -46,7 +46,7 @@ vehicle_charge_model* EV_charge_model_factory::alloc_get_EV_charge_model(const c } -void EV_charge_model_factory::write_charge_profile(const std::string& output_path) const +void factory_EV_charge_model::write_charge_profile(const std::string& output_path) const { this->SOC_vs_P2_obj.write_charge_profile(output_path); } \ No newline at end of file diff --git a/source/factory/EV_charge_model_factory.h b/source/factory/factory_EV_charge_model.h similarity index 59% rename from source/factory/EV_charge_model_factory.h rename to source/factory/factory_EV_charge_model.h index 72277eb..71175ef 100644 --- a/source/factory/EV_charge_model_factory.h +++ b/source/factory/factory_EV_charge_model.h @@ -1,33 +1,33 @@ -#ifndef EV_CHARGE_MODEL_FACTORY_H -#define EV_CHARGE_MODEL_FACTORY_H +#ifndef FACTORY_EV_CHARGE_MODEL_H +#define FACTORY_EV_CHARGE_MODEL_H #include #include #include "EV_EVSE_inventory.h" -#include "charging_transitions_factory.h" -#include "puVrms_vs_P2_factory.h" -#include "SOC_vs_P2_factory.h" -#include "P2_vs_battery_efficiency_factory.h" +#include "factory_charging_transitions.h" +#include "factory_puVrms_vs_P2.h" +#include "factory_SOC_vs_P2.h" +#include "factory_P2_vs_battery_efficiency.h" #include "vehicle_charge_model.h" -class EV_charge_model_factory +class factory_EV_charge_model { private: const EV_EVSE_inventory& inventory; - const charging_transitions_factory charging_transitions_obj; - const puVrms_vs_P2_factory puVrms_vs_P2_obj; - const SOC_vs_P2_factory SOC_vs_P2_obj; - const P2_vs_battery_efficiency_factory P2_vs_battery_eff_obj; + const factory_charging_transitions charging_transitions_obj; + const factory_puVrms_vs_P2 puVrms_vs_P2_obj; + const factory_SOC_vs_P2 SOC_vs_P2_obj; + const factory_P2_vs_battery_efficiency P2_vs_battery_eff_obj; const bool model_stochastic_battery_degregation; public: - EV_charge_model_factory(const EV_EVSE_inventory& inventory, + factory_EV_charge_model(const EV_EVSE_inventory& inventory, const EV_ramping_map& EV_ramping, const EV_EVSE_ramping_map& EV_EVSE_ramping, const bool& model_stochastic_battery_degregation); diff --git a/source/factory/P2_vs_battery_efficiency_factory.cpp b/source/factory/factory_P2_vs_battery_efficiency.cpp similarity index 91% rename from source/factory/P2_vs_battery_efficiency_factory.cpp rename to source/factory/factory_P2_vs_battery_efficiency.cpp index 19b0075..dd4b9bd 100644 --- a/source/factory/P2_vs_battery_efficiency_factory.cpp +++ b/source/factory/factory_P2_vs_battery_efficiency.cpp @@ -1,4 +1,4 @@ -#include "P2_vs_battery_efficiency_factory.h" +#include "factory_P2_vs_battery_efficiency.h" #include "helper.h" //################################################## @@ -14,16 +14,16 @@ P2_vs_battery_efficiency::P2_vs_battery_efficiency(const line_segment& curve, //################################################## -// P2_vs_battery_efficiency_factory +// factory_P2_vs_battery_efficiency //################################################## -P2_vs_battery_efficiency_factory::P2_vs_battery_efficiency_factory(const EV_EVSE_inventory& inventory) +factory_P2_vs_battery_efficiency::factory_P2_vs_battery_efficiency(const EV_EVSE_inventory& inventory) : inventory{ inventory }, P2_vs_battery_eff{ this->load_P2_vs_battery_eff() } { } -const P2_vs_battery_efficiency_map P2_vs_battery_efficiency_factory::load_P2_vs_battery_eff() +const P2_vs_battery_efficiency_map factory_P2_vs_battery_efficiency::load_P2_vs_battery_eff() { P2_vs_battery_efficiency_map outer_map; @@ -94,7 +94,7 @@ const P2_vs_battery_efficiency_map P2_vs_battery_efficiency_factory::load_P2_vs_ return outer_map; } -const P2_vs_battery_efficiency& P2_vs_battery_efficiency_factory::get_P2_vs_battery_eff(const EV_type& EV, +const P2_vs_battery_efficiency& factory_P2_vs_battery_efficiency::get_P2_vs_battery_eff(const EV_type& EV, const battery_charge_mode& mode) const { return this->P2_vs_battery_eff.at(EV).at(mode); diff --git a/source/factory/P2_vs_battery_efficiency_factory.h b/source/factory/factory_P2_vs_battery_efficiency.h similarity index 81% rename from source/factory/P2_vs_battery_efficiency_factory.h rename to source/factory/factory_P2_vs_battery_efficiency.h index a4bcbbf..452073a 100644 --- a/source/factory/P2_vs_battery_efficiency_factory.h +++ b/source/factory/factory_P2_vs_battery_efficiency.h @@ -1,5 +1,5 @@ -#ifndef P2_VS_BATTERY_EFFICIENCY_H -#define P2_VS_BATTERY_EFFICIENCY_H +#ifndef FACTORY_P2_VS_BATTERY_EFFICIENCY_H +#define FACTORY_P2_VS_BATTERY_EFFICIENCY_H #include #include @@ -20,7 +20,7 @@ struct P2_vs_battery_efficiency typedef std::unordered_map > P2_vs_battery_efficiency_map; -class P2_vs_battery_efficiency_factory +class factory_P2_vs_battery_efficiency { private: const EV_EVSE_inventory& inventory; @@ -30,7 +30,7 @@ class P2_vs_battery_efficiency_factory const P2_vs_battery_efficiency_map load_P2_vs_battery_eff(); public: - P2_vs_battery_efficiency_factory(const EV_EVSE_inventory& inventory); + factory_P2_vs_battery_efficiency(const EV_EVSE_inventory& inventory); const P2_vs_battery_efficiency& get_P2_vs_battery_eff(const EV_type& EV, const battery_charge_mode& mode) const; diff --git a/source/factory/SOC_vs_P2_factory.cpp b/source/factory/factory_SOC_vs_P2.cpp similarity index 98% rename from source/factory/SOC_vs_P2_factory.cpp rename to source/factory/factory_SOC_vs_P2.cpp index 1ba40cf..acc28d8 100644 --- a/source/factory/SOC_vs_P2_factory.cpp +++ b/source/factory/factory_SOC_vs_P2.cpp @@ -1,4 +1,4 @@ -#include "SOC_vs_P2_factory.h" +#include "factory_SOC_vs_P2.h" #include //########################################################## @@ -760,11 +760,11 @@ const SOC_vs_P2 create_dcPkW_from_soc::get_discharging_dcfc_charge_profile(const //########################################################## -// SOC_vs_P2_factory +// factory_SOC_vs_P2 //########################################################## -SOC_vs_P2_factory::SOC_vs_P2_factory(const EV_EVSE_inventory& inventory) +factory_SOC_vs_P2::factory_SOC_vs_P2(const EV_EVSE_inventory& inventory) : inventory{ inventory }, LMO_charge{ this->load_LMO_charge() }, NMC_charge{ this->load_NMC_charge() }, @@ -775,7 +775,7 @@ SOC_vs_P2_factory::SOC_vs_P2_factory(const EV_EVSE_inventory& inventory) } -const SOC_vs_P2& SOC_vs_P2_factory::get_SOC_vs_P2_curves(const EV_type& EV, +const SOC_vs_P2& factory_SOC_vs_P2::get_SOC_vs_P2_curves(const EV_type& EV, const EVSE_type& EVSE) const { const EVSE_level& level = this->inventory.get_EVSE_inventory().at(EVSE).get_level(); @@ -811,7 +811,7 @@ const SOC_vs_P2& SOC_vs_P2_factory::get_SOC_vs_P2_curves(const EV_type& EV, } -const create_dcPkW_from_soc SOC_vs_P2_factory::load_LMO_charge() +const create_dcPkW_from_soc factory_SOC_vs_P2::load_LMO_charge() { std::map > points; curves_grouping curves; @@ -878,7 +878,7 @@ const create_dcPkW_from_soc SOC_vs_P2_factory::load_LMO_charge() return LMO_charge; } -const create_dcPkW_from_soc SOC_vs_P2_factory::load_NMC_charge() +const create_dcPkW_from_soc factory_SOC_vs_P2::load_NMC_charge() { std::map > points; curves_grouping curves; @@ -947,7 +947,7 @@ const create_dcPkW_from_soc SOC_vs_P2_factory::load_NMC_charge() return NMC_charge; } -const create_dcPkW_from_soc SOC_vs_P2_factory::load_LTO_charge() +const create_dcPkW_from_soc factory_SOC_vs_P2::load_LTO_charge() { std::map > points; curves_grouping curves; @@ -1051,7 +1051,7 @@ const create_dcPkW_from_soc SOC_vs_P2_factory::load_LTO_charge() } -const std::unordered_map SOC_vs_P2_factory::load_L1_L2_curves() +const std::unordered_map factory_SOC_vs_P2::load_L1_L2_curves() { std::unordered_map return_val; @@ -1085,7 +1085,7 @@ const std::unordered_map SOC_vs_P2_factory::load_L1_L2_curv } -const std::unordered_map< std::pair, SOC_vs_P2, pair_hash > SOC_vs_P2_factory::load_DCFC_curves() +const std::unordered_map< std::pair, SOC_vs_P2, pair_hash > factory_SOC_vs_P2::load_DCFC_curves() { std::unordered_map< std::pair, SOC_vs_P2, pair_hash > return_val; @@ -1151,7 +1151,7 @@ const std::unordered_map< std::pair, SOC_vs_P2, pair_hash > return return_val; } -void SOC_vs_P2_factory::write_charge_profile(const std::string& output_path) const +void factory_SOC_vs_P2::write_charge_profile(const std::string& output_path) const { std::string filename, header, data; diff --git a/source/factory/SOC_vs_P2_factory.h b/source/factory/factory_SOC_vs_P2.h similarity index 94% rename from source/factory/SOC_vs_P2_factory.h rename to source/factory/factory_SOC_vs_P2.h index 471fb52..33bcf9d 100644 --- a/source/factory/SOC_vs_P2_factory.h +++ b/source/factory/factory_SOC_vs_P2.h @@ -1,5 +1,5 @@ -#ifndef SOC_VS_P2_FACTORY_H -#define SOC_VS_P2_FACTORY_H +#ifndef FACTORY_SOC_VS_P2_H +#define FACTORY_SOC_VS_P2_H #include #include @@ -71,7 +71,7 @@ class create_dcPkW_from_soc const SOC_vs_P2 get_L1_or_L2_charge_profile(const EV_type& EV) const; }; -class SOC_vs_P2_factory +class factory_SOC_vs_P2 { private: @@ -94,11 +94,11 @@ class SOC_vs_P2_factory const std::unordered_map< std::pair, SOC_vs_P2, pair_hash > load_DCFC_curves(); public: - SOC_vs_P2_factory(const EV_EVSE_inventory& inventory); + factory_SOC_vs_P2(const EV_EVSE_inventory& inventory); const SOC_vs_P2& get_SOC_vs_P2_curves(const EV_type& EV, const EVSE_type& EVSE) const; void write_charge_profile(const std::string& output_path) const; }; -#endif \ No newline at end of file +#endif // FACTORY_SOC_VS_P2_H \ No newline at end of file diff --git a/source/factory/charging_transitions_factory.cpp b/source/factory/factory_charging_transitions.cpp similarity index 98% rename from source/factory/charging_transitions_factory.cpp rename to source/factory/factory_charging_transitions.cpp index 66c4e9e..acc1a48 100644 --- a/source/factory/charging_transitions_factory.cpp +++ b/source/factory/factory_charging_transitions.cpp @@ -1,4 +1,4 @@ -#include "charging_transitions_factory.h" +#include "factory_charging_transitions.h" #include "battery_integrate_X_in_time.h" // integrate_X_through_time, transition_goto_next_segment_criteria, transition_of_X_through_time @@ -17,10 +17,10 @@ charging_transitions::charging_transitions(const EVSE_level_charging_transitions //########################################### -// charging_transitions_factory +// factory_charging_transitions //########################################### -charging_transitions_factory::charging_transitions_factory(const EV_EVSE_inventory& inventory, +factory_charging_transitions::factory_charging_transitions(const EV_EVSE_inventory& inventory, const EV_ramping_map& custom_EV_ramping, const EV_EVSE_ramping_map& custom_EV_EVSE_ramping) : inventory{ inventory }, @@ -31,7 +31,7 @@ charging_transitions_factory::charging_transitions_factory(const EV_EVSE_invento } -const charging_transitions charging_transitions_factory::load_charging_transitions() +const charging_transitions factory_charging_transitions::load_charging_transitions() { EVSE_level_charging_transitions transitions_by_EVSE_level; @@ -354,7 +354,7 @@ const charging_transitions charging_transitions_factory::load_charging_transitio return charging_transitions{ transitions_by_EVSE_level, charging_transitions_by_custom_EV, charging_transitions_by_custom_EV_EVSE }; } -const integrate_X_through_time& charging_transitions_factory::get_charging_transitions(const EV_type& EV, +const integrate_X_through_time& factory_charging_transitions::get_charging_transitions(const EV_type& EV, const EVSE_type& EVSE) const { const EVSE_level& level = this->inventory.get_EVSE_inventory().at(EVSE).get_level(); diff --git a/source/factory/charging_transitions_factory.h b/source/factory/factory_charging_transitions.h similarity index 90% rename from source/factory/charging_transitions_factory.h rename to source/factory/factory_charging_transitions.h index 8c3351a..aff5ed3 100644 --- a/source/factory/charging_transitions_factory.h +++ b/source/factory/factory_charging_transitions.h @@ -1,5 +1,5 @@ -#ifndef CHARGING_TRANSITIONS_FACTORY_H -#define CHARGING_TRANSITIONS_FACTORY_H +#ifndef FACTORY_CHARGING_TRANSITIONS_H +#define FACTORY_CHARGING_TRANSITIONS_H #include @@ -30,7 +30,7 @@ struct charging_transitions }; -class charging_transitions_factory +class factory_charging_transitions { private: @@ -45,7 +45,7 @@ class charging_transitions_factory public: - charging_transitions_factory(const EV_EVSE_inventory& inventory, + factory_charging_transitions(const EV_EVSE_inventory& inventory, const EV_ramping_map& custom_EV_ramping, const EV_EVSE_ramping_map& custom_EV_EVSE_ramping); diff --git a/source/factory/puVrms_vs_P2_factory.cpp b/source/factory/factory_puVrms_vs_P2.cpp similarity index 91% rename from source/factory/puVrms_vs_P2_factory.cpp rename to source/factory/factory_puVrms_vs_P2.cpp index 32566e8..f8ab601 100644 --- a/source/factory/puVrms_vs_P2_factory.cpp +++ b/source/factory/factory_puVrms_vs_P2.cpp @@ -1,17 +1,17 @@ -#include "puVrms_vs_P2_factory.h" +#include "factory_puVrms_vs_P2.h" //########################################### -// puVrms_vs_P2_factory +// factory_puVrms_vs_P2 //########################################### -puVrms_vs_P2_factory::puVrms_vs_P2_factory(const EV_EVSE_inventory& inventory) +factory_puVrms_vs_P2::factory_puVrms_vs_P2(const EV_EVSE_inventory& inventory) : inventory{ inventory }, puVrms_vs_P2_curves{ this->load_puVrms_vs_P2_curves() } { } -const std::unordered_map > puVrms_vs_P2_factory::load_puVrms_vs_P2_curves() +const std::unordered_map > factory_puVrms_vs_P2::load_puVrms_vs_P2_curves() { // The points on the P2_vs_pu_Vrms plot are all multiplied by SE_P2_limit_atNominalV_kW // The P2_vs_pu_Vrms plot must pass through the point (1, 1) @@ -60,7 +60,7 @@ const std::unordered_map > puVrms_vs_P2_factory return data; } -const poly_function_of_x puVrms_vs_P2_factory::get_puVrms_vs_P2(const EVSE_type& EVSE, +const poly_function_of_x factory_puVrms_vs_P2::get_puVrms_vs_P2(const EVSE_type& EVSE, const double& SE_P2_limit_atNominalV_kW) const { const EVSE_level& level = this->inventory.get_EVSE_inventory().at(EVSE).get_level(); diff --git a/source/factory/puVrms_vs_P2_factory.h b/source/factory/factory_puVrms_vs_P2.h similarity index 81% rename from source/factory/puVrms_vs_P2_factory.h rename to source/factory/factory_puVrms_vs_P2.h index f5b8b1f..10a0ca5 100644 --- a/source/factory/puVrms_vs_P2_factory.h +++ b/source/factory/factory_puVrms_vs_P2.h @@ -1,5 +1,5 @@ -#ifndef PUVRMS_VS_P2_FACTORY_H -#define PUVRMS_VS_P2_FACTORY_H +#ifndef FACTORY_PUVRMS_VS_P2_H +#define FACTORY_PUVRMS_VS_P2_H #include #include @@ -13,7 +13,7 @@ typedef double puVrms; typedef double P2; -class puVrms_vs_P2_factory +class factory_puVrms_vs_P2 { private: const EV_EVSE_inventory& inventory; @@ -23,7 +23,7 @@ class puVrms_vs_P2_factory const std::unordered_map > load_puVrms_vs_P2_curves(); public: - puVrms_vs_P2_factory(const EV_EVSE_inventory& inventory); + factory_puVrms_vs_P2(const EV_EVSE_inventory& inventory); const poly_function_of_x get_puVrms_vs_P2(const EVSE_type& EVSE, const double& SE_P2_limit_atNominalV_kW) const; From 32d9b2ead8ffc2e744d373ee88c143f3ba4d1479 Mon Sep 17 00:00:00 2001 From: Manoj Kumar Cebol Sundarrajan Date: Thu, 11 May 2023 22:25:53 -0600 Subject: [PATCH 09/52] Integration of dynamic charging models with rest of the ICM --- CMakeLists.txt | 3 +- source/CMakeLists.txt | 10 ++ source/base/Aux_interface.cpp | 91 ++++++---- source/base/Aux_interface.h | 56 ++++-- source/base/CMakeLists.txt | 53 +++++- source/base/ICM_interface.cpp | 169 ++++++++---------- source/base/ICM_interface.h | 78 +++++++- source/base/SE_EV_factory_charge_profile.cpp | 91 ++++++---- source/base/SE_EV_factory_charge_profile.h | 35 ++-- source/base/charge_profile_library.cpp | 37 ++-- source/base/charge_profile_library.h | 39 ++-- source/base/datatypes_module.h | 2 +- source/base/inputs.h | 24 +-- source/base/supply_equipment.cpp | 5 +- source/base/supply_equipment.h | 4 +- source/base/supply_equipment_control.cpp | 4 +- source/base/supply_equipment_control.h | 6 +- source/base/supply_equipment_group.cpp | 24 +-- source/base/supply_equipment_group.h | 12 +- source/base/supply_equipment_load.cpp | 12 +- source/base/supply_equipment_load.h | 3 +- source/base/vehicle_charge_model.h | 5 - source/charging_models/CMakeLists.txt | 18 +- source/charging_models/EV_EVSE_inventory.cpp | 94 +++++++++- source/charging_models/EV_EVSE_inventory.h | 36 ++++ source/charging_models/datatypes_global.cpp | 6 +- source/charging_models/datatypes_global.h | 4 +- source/factory/CMakeLists.txt | 33 ++++ source/factory/factory_EV_charge_model.cpp | 2 +- .../factory_P2_vs_battery_efficiency.h | 2 +- source/factory/factory_ac_to_dc_converter.cpp | 132 ++++++++++++++ source/factory/factory_ac_to_dc_converter.h | 29 +++ .../factory_supply_equipment_model.cpp | 34 ++++ .../factory/factory_supply_equipment_model.h | 34 ++++ source/load_inputs/CMakeLists.txt | 30 ++++ source/main.cpp | 1 + 36 files changed, 918 insertions(+), 300 deletions(-) create mode 100644 source/factory/CMakeLists.txt create mode 100644 source/factory/factory_ac_to_dc_converter.cpp create mode 100644 source/factory/factory_ac_to_dc_converter.h create mode 100644 source/factory/factory_supply_equipment_model.cpp create mode 100644 source/factory/factory_supply_equipment_model.h create mode 100644 source/load_inputs/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index 5259f63..4a80bee 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -23,5 +23,4 @@ message(STATUS "Install dir is ${INSTALL_DIR}") find_package(pybind11 CONFIG) -add_subdirectory(source/charging_models) -add_subdirectory(source/base) +add_subdirectory(source) diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt index 64f2859..88181ec 100644 --- a/source/CMakeLists.txt +++ b/source/CMakeLists.txt @@ -1,3 +1,10 @@ +add_subdirectory(base) +add_subdirectory(charging_models) +add_subdirectory(factory) +add_subdirectory(load_inputs) + + +#[===[ cmake_minimum_required(VERSION 3.5) project(CalderaICM) @@ -44,3 +51,6 @@ target_include_directories(models_test PUBLIC ${PROJECT_SOURCE_DIR}/base) install(TARGETS models_test DESTINATION ${INSTALL_DIR}) + + +]===] \ No newline at end of file diff --git a/source/base/Aux_interface.cpp b/source/base/Aux_interface.cpp index 6856b3a..0b537f2 100644 --- a/source/base/Aux_interface.cpp +++ b/source/base/Aux_interface.cpp @@ -1,6 +1,5 @@ #include "Aux_interface.h" -#include "SE_EV_factory.h" #include "SE_EV_factory_charge_profile.h" @@ -8,7 +7,7 @@ // get_pevType_batterySize_map //############################################################################# - +/* std::vector get_pevType_batterySize_map() { std::vector return_val; @@ -17,8 +16,8 @@ std::vector get_pevType_batterySize_map() battery_chemistry bat_chem; double battery_size_kWh, battery_size_with_stochastic_degredation_kWh; - std::vector vehicle_types = get_all_pev_enums(); - for(vehicle_enum pev_type : vehicle_types) + std::vector vehicle_types = get_all_pev_enums(); + for(EV_type pev_type : vehicle_types) { bool is_succes = get_pev_battery_info(pev_type, bat_chem, battery_size_kWh, battery_size_with_stochastic_degredation_kWh); @@ -35,29 +34,31 @@ std::vector get_pevType_batterySize_map() return return_val; } - +*/ //############################################################################# // Get Charge Profile Object //############################################################################# -CP_interface::CP_interface() +CP_interface::CP_interface(const EV_EVSE_inventory& inventory) + : inventory{ inventory }, + CP_library{ load_CP_library(inventory, false) } { - bool save_validation_data = false; - bool create_charge_profile_library = true; - factory_charge_profile_library CP_Factory; - this->CP_library = CP_Factory.get_charge_profile_library(save_validation_data, create_charge_profile_library); } -CP_interface::CP_interface(bool save_validation_data) +CP_interface::CP_interface(const EV_EVSE_inventory& inventory, bool save_validation_data) + : inventory{ inventory }, + CP_library{ load_CP_library(inventory, save_validation_data) } { - bool create_charge_profile_library = true; - factory_charge_profile_library CP_Factory; - this->CP_library = CP_Factory.get_charge_profile_library(save_validation_data, create_charge_profile_library); - this->CP_validation_data = CP_Factory.get_validation_data(); } +pev_charge_profile_library CP_interface::load_CP_library(const EV_EVSE_inventory& inventory, bool save_validation_data) +{ + bool create_charge_profile_library = true; + factory_charge_profile_library CP_Factory{ inventory }; + return CP_Factory.get_charge_profile_library(save_validation_data, create_charge_profile_library); +} double CP_interface::get_size_of_CP_library_MB() { @@ -65,41 +66,41 @@ double CP_interface::get_size_of_CP_library_MB() } -std::map< std::pair, std::vector > CP_interface::get_CP_validation_data() +std::map< std::pair, std::vector > CP_interface::get_CP_validation_data() { return this->CP_validation_data; } -charge_event_P3kW_limits CP_interface::get_charge_event_P3kW_limits(vehicle_enum pev_type, supply_equipment_enum SE_type) +charge_event_P3kW_limits CP_interface::get_charge_event_P3kW_limits(EV_type pev_type, EVSE_type SE_type) { pev_charge_profile* CP_ptr = this->CP_library.get_charge_profile(pev_type, SE_type); return CP_ptr->get_charge_event_P3kW_limits(); } -std::vector CP_interface::get_P3kW_setpoints_of_charge_profiles(vehicle_enum pev_type, supply_equipment_enum SE_type) +std::vector CP_interface::get_P3kW_setpoints_of_charge_profiles(EV_type pev_type, EVSE_type SE_type) { pev_charge_profile* CP_ptr = this->CP_library.get_charge_profile(pev_type, SE_type); return CP_ptr->get_P3kW_setpoints_of_charge_profiles(); } -pev_charge_profile_result CP_interface::find_result_given_startSOC_and_endSOC(vehicle_enum pev_type, supply_equipment_enum SE_type, double setpoint_P3kW, double startSOC, double endSOC) +pev_charge_profile_result CP_interface::find_result_given_startSOC_and_endSOC(EV_type pev_type, EVSE_type SE_type, double setpoint_P3kW, double startSOC, double endSOC) { pev_charge_profile* CP_ptr = this->CP_library.get_charge_profile(pev_type, SE_type); return CP_ptr->find_result_given_startSOC_and_endSOC(setpoint_P3kW, startSOC, endSOC); } -pev_charge_profile_result CP_interface::find_result_given_startSOC_and_chargeTime(vehicle_enum pev_type, supply_equipment_enum SE_type, double setpoint_P3kW, double startSOC, double charge_time_hrs) +pev_charge_profile_result CP_interface::find_result_given_startSOC_and_chargeTime(EV_type pev_type, EVSE_type SE_type, double setpoint_P3kW, double startSOC, double charge_time_hrs) { pev_charge_profile* CP_ptr = this->CP_library.get_charge_profile(pev_type, SE_type); return CP_ptr->find_result_given_startSOC_and_chargeTime(setpoint_P3kW, startSOC, charge_time_hrs); } -std::vector CP_interface::find_chargeProfile_given_startSOC_and_endSOCs(vehicle_enum pev_type, supply_equipment_enum SE_type, double setpoint_P3kW, double startSOC, std::vector endSOC) +std::vector CP_interface::find_chargeProfile_given_startSOC_and_endSOCs(EV_type pev_type, EVSE_type SE_type, double setpoint_P3kW, double startSOC, std::vector endSOC) { pev_charge_profile* CP_ptr = this->CP_library.get_charge_profile(pev_type, SE_type); @@ -110,7 +111,7 @@ std::vector CP_interface::find_chargeProfile_given_st } -std::vector CP_interface::find_chargeProfile_given_startSOC_and_chargeTimes(vehicle_enum pev_type, supply_equipment_enum SE_type, double setpoint_P3kW, double startSOC, std::vector charge_time_hrs) +std::vector CP_interface::find_chargeProfile_given_startSOC_and_chargeTimes(EV_type pev_type, EVSE_type SE_type, double setpoint_P3kW, double startSOC, std::vector charge_time_hrs) { pev_charge_profile* CP_ptr = this->CP_library.get_charge_profile(pev_type, SE_type); @@ -121,9 +122,9 @@ std::vector CP_interface::find_chargeProfile_given_st } -std::vector CP_interface::USE_FOR_DEBUG_PURPOSES_ONLY_get_raw_charge_profile(double time_step_sec, double target_acP3_kW, vehicle_enum pev_type, supply_equipment_enum SE_type) +std::vector CP_interface::USE_FOR_DEBUG_PURPOSES_ONLY_get_raw_charge_profile(double time_step_sec, double target_acP3_kW, EV_type pev_type, EVSE_type SE_type) { - factory_charge_profile_library CP_Factory; + factory_charge_profile_library CP_Factory{this->inventory}; return CP_Factory.USE_FOR_DEBUG_PURPOSES_ONLY_get_raw_charge_profile(time_step_sec, target_acP3_kW, pev_type, SE_type); } @@ -132,7 +133,14 @@ std::vector CP_interface::USE_FOR_DEBUG_PURPOSES_ONLY_get_r //############################################################################# -all_charge_profile_data CP_interface_v2::create_charge_profile_from_model(double time_step_sec, vehicle_enum pev_type, supply_equipment_enum SE_type, double start_soc, double end_soc, double target_acP3_kW, std::map ramping_by_pevType_only, std::map< std::tuple, pev_charge_ramping> ramping_by_pevType_seType) +all_charge_profile_data CP_interface_v2::create_charge_profile_from_model(double time_step_sec, + EV_type pev_type, + EVSE_type SE_type, + double start_soc, + double end_soc, + double target_acP3_kW, + EV_ramping_map ramping_by_pevType_only, + EV_EVSE_ramping_map ramping_by_pevType_seType) { all_charge_profile_data return_val; return_val.timestep_sec = time_step_sec; @@ -145,12 +153,12 @@ all_charge_profile_data CP_interface_v2::create_charge_profile_from_model(double //--------------------- - factory_charge_profile_library_v2 CP_Factory_v2; - CP_Factory_v2.initialize_custome_parameters(ramping_by_pevType_only, ramping_by_pevType_seType); + factory_charge_profile_library_v2 CP_Factory_v2{this->inventory, ramping_by_pevType_only, ramping_by_pevType_seType}; + //CP_Factory_v2.initialize_custome_parameters(ramping_by_pevType_only, ramping_by_pevType_seType); pev_SE_pair pev_SE; - pev_SE.EV_type = pev_type; - pev_SE.SE_type = SE_type; + pev_SE.ev_type = pev_type; + pev_SE.se_type = SE_type; std::vector soc; std::vector ac_power_vec; @@ -175,17 +183,24 @@ all_charge_profile_data CP_interface_v2::create_charge_profile_from_model(double return return_val; } +CP_interface_v2::CP_interface_v2(const EV_EVSE_inventory& inventory) + : inventory(inventory), + CP_library_v2{ pev_charge_profile_library_v2 {this->inventory} } +{}; -CP_interface_v2::CP_interface_v2(double L1_timestep_sec, double L2_timestep_sec, double HPC_timestep_sec, std::map ramping_by_pevType_only, std::map< std::tuple, pev_charge_ramping> ramping_by_pevType_seType) -{ - factory_charge_profile_library_v2 CP_Factory_v2; - CP_Factory_v2.initialize_custome_parameters(ramping_by_pevType_only, ramping_by_pevType_seType); - - this->CP_library_v2 = CP_Factory_v2.get_charge_profile_library(L1_timestep_sec, L2_timestep_sec, HPC_timestep_sec); -}; +CP_interface_v2::CP_interface_v2(const EV_EVSE_inventory& inventory, + double L1_timestep_sec, + double L2_timestep_sec, + double HPC_timestep_sec, + EV_ramping_map ramping_by_pevType_only, + EV_EVSE_ramping_map ramping_by_pevType_seType) + : inventory{ inventory }, + CP_library_v2{ factory_charge_profile_library_v2{this->inventory, ramping_by_pevType_only, ramping_by_pevType_seType}.get_charge_profile_library(L1_timestep_sec, L2_timestep_sec, HPC_timestep_sec)} +{ +} -std::vector CP_interface_v2::get_P3kW_charge_profile(double start_soc, double end_soc, vehicle_enum pev_type, supply_equipment_enum SE_type) +std::vector CP_interface_v2::get_P3kW_charge_profile(double start_soc, double end_soc, EV_type pev_type, EVSE_type SE_type) { std::vector return_val; this->CP_library_v2.get_P3kW_charge_profile(start_soc, end_soc, pev_type, SE_type, this->timestep_sec, return_val); @@ -200,7 +215,7 @@ double CP_interface_v2::get_timestep_of_prev_call_sec() } -all_charge_profile_data CP_interface_v2::get_all_charge_profile_data(double start_soc, double end_soc, vehicle_enum pev_type, supply_equipment_enum SE_type) +all_charge_profile_data CP_interface_v2::get_all_charge_profile_data(double start_soc, double end_soc, EV_type pev_type, EVSE_type SE_type) { all_charge_profile_data return_val; this->CP_library_v2.get_all_charge_profile_data(start_soc, end_soc, pev_type, SE_type, return_val); diff --git a/source/base/Aux_interface.h b/source/base/Aux_interface.h index 150525c..b3d0e1f 100644 --- a/source/base/Aux_interface.h +++ b/source/base/Aux_interface.h @@ -3,56 +3,74 @@ #define inl_Aux_interface_H #include "datatypes_global.h" // SE_id_type, station_charge_event_data, station_status -#include "datatypes_global_SE_EV_definitions.h" // pev_SE_pair, get_supply_equipment_enum, get_vehicle_enum, supply_equipment_is_L1, supply_equipment_is_L2, pev_is_compatible_with_supply_equipment +//#include "datatypes_global_SE_EV_definitions.h" // pev_SE_pair, get_EVSE_type, get_EV_type, supply_equipment_is_L1, supply_equipment_is_L2, pev_is_compatible_with_supply_equipment #include "charge_profile_library.h" // pev_charge_profile_library #include "helper.h" // get_base_load_forecast -std::vector get_pevType_batterySize_map(); +//std::vector get_pevType_batterySize_map(); +#include "factory_charging_transitions.h" class CP_interface { private: + const EV_EVSE_inventory& inventory; pev_charge_profile_library CP_library; - std::map< std::pair, std::vector > CP_validation_data; + std::map< std::pair, std::vector > CP_validation_data; public: - CP_interface(); - CP_interface(bool save_validation_data); + + CP_interface(const EV_EVSE_inventory& inventory); + CP_interface(const EV_EVSE_inventory& inventory, bool save_validation_data); + + pev_charge_profile_library load_CP_library(const EV_EVSE_inventory& inventory, bool save_validation_data); double get_size_of_CP_library_MB(); - std::map< std::pair, std::vector > get_CP_validation_data(); + std::map< std::pair, std::vector > get_CP_validation_data(); - charge_event_P3kW_limits get_charge_event_P3kW_limits(vehicle_enum pev_type, supply_equipment_enum SE_type); - std::vector get_P3kW_setpoints_of_charge_profiles(vehicle_enum pev_type, supply_equipment_enum SE_type); + charge_event_P3kW_limits get_charge_event_P3kW_limits(EV_type pev_type, EVSE_type SE_type); + std::vector get_P3kW_setpoints_of_charge_profiles(EV_type pev_type, EVSE_type SE_type); - pev_charge_profile_result find_result_given_startSOC_and_endSOC(vehicle_enum pev_type, supply_equipment_enum SE_type, double setpoint_P3kW, double startSOC, double endSOC); - pev_charge_profile_result find_result_given_startSOC_and_chargeTime(vehicle_enum pev_type, supply_equipment_enum SE_type, double setpoint_P3kW, double startSOC, double charge_time_hrs); + pev_charge_profile_result find_result_given_startSOC_and_endSOC(EV_type pev_type, EVSE_type SE_type, double setpoint_P3kW, double startSOC, double endSOC); + pev_charge_profile_result find_result_given_startSOC_and_chargeTime(EV_type pev_type, EVSE_type SE_type, double setpoint_P3kW, double startSOC, double charge_time_hrs); - std::vector find_chargeProfile_given_startSOC_and_endSOCs(vehicle_enum pev_type, supply_equipment_enum SE_type, double setpoint_P3kW, double startSOC, std::vector endSOC); - std::vector find_chargeProfile_given_startSOC_and_chargeTimes(vehicle_enum pev_type, supply_equipment_enum SE_type, double setpoint_P3kW, double startSOC, std::vector charge_time_hrs); + std::vector find_chargeProfile_given_startSOC_and_endSOCs(EV_type pev_type, EVSE_type SE_type, double setpoint_P3kW, double startSOC, std::vector endSOC); + std::vector find_chargeProfile_given_startSOC_and_chargeTimes(EV_type pev_type, EVSE_type SE_type, double setpoint_P3kW, double startSOC, std::vector charge_time_hrs); - std::vector USE_FOR_DEBUG_PURPOSES_ONLY_get_raw_charge_profile(double time_step_sec, double target_acP3_kW, vehicle_enum pev_type, supply_equipment_enum SE_type); + std::vector USE_FOR_DEBUG_PURPOSES_ONLY_get_raw_charge_profile(double time_step_sec, double target_acP3_kW, EV_type pev_type, EVSE_type SE_type); }; class CP_interface_v2 { private: + const EV_EVSE_inventory& inventory; pev_charge_profile_library_v2 CP_library_v2; double timestep_sec; public: - CP_interface_v2() {}; - CP_interface_v2(double L1_timestep_sec, double L2_timestep_sec, double HPC_timestep_sec, std::map ramping_by_pevType_only, std::map< std::tuple, pev_charge_ramping> ramping_by_pevType_seType); - - all_charge_profile_data create_charge_profile_from_model(double time_step_sec, vehicle_enum pev_type, supply_equipment_enum SE_type, double start_soc, double end_soc, double target_acP3_kW, std::map ramping_by_pevType_only, std::map< std::tuple, pev_charge_ramping> ramping_by_pevType_seType); + CP_interface_v2(const EV_EVSE_inventory& inventory); + CP_interface_v2(const EV_EVSE_inventory& inventory, + double L1_timestep_sec, + double L2_timestep_sec, + double HPC_timestep_sec, + EV_ramping_map ramping_by_pevType_only, + EV_EVSE_ramping_map ramping_by_pevType_seType); + + all_charge_profile_data create_charge_profile_from_model(double time_step_sec, + EV_type pev_type, + EVSE_type SE_type, + double start_soc, + double end_soc, + double target_acP3_kW, + EV_ramping_map ramping_by_pevType_only, + EV_EVSE_ramping_map ramping_by_pevType_seType); - std::vector get_P3kW_charge_profile(double start_soc, double end_soc, vehicle_enum pev_type, supply_equipment_enum SE_type); + std::vector get_P3kW_charge_profile(double start_soc, double end_soc, EV_type pev_type, EVSE_type SE_type); double get_timestep_of_prev_call_sec(); - all_charge_profile_data get_all_charge_profile_data(double start_soc, double end_soc, vehicle_enum pev_type, supply_equipment_enum SE_type); + all_charge_profile_data get_all_charge_profile_data(double start_soc, double end_soc, EV_type pev_type, EVSE_type SE_type); }; diff --git a/source/base/CMakeLists.txt b/source/base/CMakeLists.txt index 34d7b53..f264e19 100644 --- a/source/base/CMakeLists.txt +++ b/source/base/CMakeLists.txt @@ -1,3 +1,51 @@ +set(BASE_FILES "datatypes_module.cpp" + "ac_to_dc_converter.cpp" + "helper.cpp" + "battery_calculate_limits.cpp" + "battery_integrate_X_in_time.cpp" + "battery.cpp" + "vehicle_charge_model.cpp" + "supply_equipment_load.cpp" + "supply_equipment_control.cpp" + "supply_equipment.cpp" + "supply_equipment_group.cpp" + "charge_profile_library.cpp" + "SE_EV_factory_charge_profile.cpp" + "charge_profile_downsample_fragments.cpp" + "ICM_interface.cpp") + +add_library(Base STATIC ${BASE_FILES}) +target_include_directories(Base PUBLIC ${PROJECT_SOURCE_DIR}/source/base) +target_include_directories(Base PUBLIC ${PROJECT_SOURCE_DIR}/source/charging_models) +target_include_directories(Base PUBLIC ${PROJECT_SOURCE_DIR}/source/factory) +target_include_directories(Base PUBLIC ${PROJECT_SOURCE_DIR}/source/load_inputs) + + + +set(BASE_AUX_FILES "datatypes_module.cpp" + "ac_to_dc_converter.cpp" + "helper.cpp" + "battery_calculate_limits.cpp" + "battery_integrate_X_in_time.cpp" + "battery.cpp" + "vehicle_charge_model.cpp" + "supply_equipment_load.cpp" + "supply_equipment_control.cpp" + "supply_equipment.cpp" + "charge_profile_library.cpp" + "SE_EV_factory_charge_profile.cpp" + "charge_profile_downsample_fragments.cpp" + "Aux_interface.cpp") + +add_library(Base_aux STATIC ${BASE_AUX_FILES}) +target_include_directories(Base PUBLIC ${PROJECT_SOURCE_DIR}/source/base) +target_include_directories(Base_aux PUBLIC ${PROJECT_SOURCE_DIR}/source/charging_models) +target_include_directories(Base_aux PUBLIC ${PROJECT_SOURCE_DIR}/source/factory) +target_include_directories(Base_aux PUBLIC ${PROJECT_SOURCE_DIR}/source/load_inputs) + + +#[===[ + set(GLOBALS_DIR ${PROJECT_SOURCE_DIR}/source/charging_models) option(ICM "compile caldera_ICM library" OFF) @@ -40,4 +88,7 @@ target_link_libraries(Caldera_ICM_Aux PRIVATE Caldera_ICM_Aux_lib) message(Caldera_ICM_Aux " current source dir = ${CMAKE_CURRENT_SOURCE_DIR}") install(TARGETS Caldera_ICM_Aux - DESTINATION ${INSTALL_DIR}) \ No newline at end of file + DESTINATION ${INSTALL_DIR}) + + +]===] \ No newline at end of file diff --git a/source/base/ICM_interface.cpp b/source/base/ICM_interface.cpp index 0a2b709..2addf92 100644 --- a/source/base/ICM_interface.cpp +++ b/source/base/ICM_interface.cpp @@ -1,6 +1,5 @@ #include "ICM_interface.h" -#include "SE_EV_factory.h" // factory_EV_charge_model, factory_supply_equipment_model #include "ac_to_dc_converter.h" // ac_to_dc_converter #include "datatypes_module.h" // ac_power_metrics @@ -11,113 +10,111 @@ #include -interface_to_SE_groups::~interface_to_SE_groups() +interface_to_SE_groups::interface_to_SE_groups(const interface_to_SE_groups_inputs& inputs) + : inventory{ inputs.inventory }, + charge_profile_library{ load_charge_profile_library(inputs) } { - if(this->EV_model_factory != NULL) - { - delete this->EV_model_factory; - this->EV_model_factory = NULL; - } - - if(this->ac_to_dc_converter_factory != NULL) + EV_EVSE_ramping_map ramping_by_pevType_seType_map; + for (const pev_charge_ramping_workaround& X : inputs.ramping_by_pevType_seType) { - delete this->ac_to_dc_converter_factory; - this->ac_to_dc_converter_factory = NULL; + ramping_by_pevType_seType_map[std::make_pair(X.pev_type, X.SE_type)] = X.pev_charge_ramping_obj; } -} - -void interface_to_SE_groups::initialize(bool create_charge_profile_library, std::map ramping_by_pevType_only, std::vector ramping_by_pevType_seType) -{ - // These both have to be pointers otherwise it will not compile. - // Has to do with the fact that neither of these classes are imported directly into the interface.h file. - - //-------------------- - - std::map< std::tuple, pev_charge_ramping> ramping_by_pevType_seType_map; - for(pev_charge_ramping_workaround& X : ramping_by_pevType_seType) - { - std::tuple key(X.pev_type, X.SE_type); - ramping_by_pevType_seType_map[key] = X.pev_charge_ramping_obj; - } - //-------------------- - - this->EV_model_factory = new factory_EV_charge_model(); // Should the parenthesis be here??? - this->EV_model_factory->initialize_custome_parameters(ramping_by_pevType_only, ramping_by_pevType_seType_map); - - this->ac_to_dc_converter_factory = new factory_ac_to_dc_converter(); - - factory_charge_profile_library X; - this->charge_profile_library = X.get_charge_profile_library(false, create_charge_profile_library); // save_validation_data = false -} + this->EV_model_factory = new factory_EV_charge_model(this->inventory, inputs.ramping_by_pevType_only, ramping_by_pevType_seType_map, false); + + this->ac_to_dc_converter_factory = new factory_ac_to_dc_converter(this->inventory); -void interface_to_SE_groups::initialize_L2_control_strategy_parameters(L2_control_strategy_parameters L2_parameters) -{ - manage_L2_control_strategy_parameters X(L2_parameters); - this->manage_L2_control = X; -} - - -void interface_to_SE_groups::set_ensure_pev_charge_needs_met_for_ext_control_strategy(bool ensure_pev_charge_needs_met) -{ - for(supply_equipment* SE_ptr : this->SE_ptr_vector) - SE_ptr->set_ensure_pev_charge_needs_met_for_ext_control_strategy(ensure_pev_charge_needs_met); -} - - -void interface_to_SE_groups::initialize_baseLD_forecaster(double data_start_unix_time, int data_timestep_sec, std::vector& actual_load_akW, std::vector& forecast_load_akW, double adjustment_interval_hrs) -{ - get_base_load_forecast X(data_start_unix_time, data_timestep_sec, actual_load_akW, forecast_load_akW, adjustment_interval_hrs); - this->baseLD_forecaster = X; -} - + //========================================== + // Initialize infrastructure + //========================================== -void interface_to_SE_groups::initialize_infrastructure(charge_event_queuing_inputs CE_queuing_inputs, std::vector infrastructure_topology) -{ - factory_supply_equipment_model SE_factory(CE_queuing_inputs); + factory_supply_equipment_model SE_factory(this->inventory, inputs.CE_queuing_inputs); factory_EV_charge_model* EV_model = this->EV_model_factory; factory_ac_to_dc_converter* ac_to_dc_converter = this->ac_to_dc_converter_factory; pev_charge_profile_library* charge_profile_library_ = &this->charge_profile_library; get_base_load_forecast* baseLD_forecaster_ = &this->baseLD_forecaster; manage_L2_control_strategy_parameters* manage_L2_control_ = &this->manage_L2_control; - - for(SE_group_configuration& SE_group_conf : infrastructure_topology) + + for (const SE_group_configuration& SE_group_conf : inputs.infrastructure_topology) { supply_equipment_group Y(SE_group_conf, SE_factory, EV_model, ac_to_dc_converter, charge_profile_library_, baseLD_forecaster_, manage_L2_control_); this->SE_group_objs.push_back(Y); } - + //--------------------------------- - - for(supply_equipment_group& SE_group : this->SE_group_objs) + + for (supply_equipment_group& SE_group : this->SE_group_objs) { - SE_group_configuration SE_group_conf = SE_group.get_SE_group_configuration(); + SE_group_configuration SE_group_conf = SE_group.get_SE_group_configuration(); this->SE_group_Id_to_ptr[SE_group_conf.SE_group_id] = &SE_group; - + //------------------------ - + std::vector SE_ptrs = SE_group.get_pointers_to_all_SE_objects(); - - for(supply_equipment* SE_ptr : SE_ptrs) - { + + for (supply_equipment* SE_ptr : SE_ptrs) + { this->SE_ptr_vector.push_back(SE_ptr); - + SE_configuration SE_conf = SE_ptr->get_SE_configuration(); this->SEid_to_SE_ptr[SE_conf.SE_id] = SE_ptr; - + //------------------- - - if(this->gridNodeId_to_SE_ptrs.count(SE_conf.grid_node_id) == 0) + + if (this->gridNodeId_to_SE_ptrs.count(SE_conf.grid_node_id) == 0) { std::vector X; this->gridNodeId_to_SE_ptrs[SE_conf.grid_node_id] = X; - } + } this->gridNodeId_to_SE_ptrs[SE_conf.grid_node_id].push_back(SE_ptr); } } + + //========================================== + // Initialize baseLD_forecaster + //========================================== + + get_base_load_forecast X{ inputs.data_start_unix_time, inputs.data_timestep_sec, inputs.actual_load_akW, inputs.forecast_load_akW, inputs.adjustment_interval_hrs }; + this->baseLD_forecaster = X; + + //========================================== + // Initialize L2 parameters + //========================================== + + manage_L2_control_strategy_parameters Z{ inputs.L2_parameters }; + this->manage_L2_control = Z; + + //========================================== + // set_ensure_pev_charge_needs_met_for_ext_control_strategy + //========================================== + + for (supply_equipment* SE_ptr : this->SE_ptr_vector) + SE_ptr->set_ensure_pev_charge_needs_met_for_ext_control_strategy(inputs.ensure_pev_charge_needs_met); + +} + +pev_charge_profile_library interface_to_SE_groups::load_charge_profile_library(const interface_to_SE_groups_inputs& inputs) +{ + factory_charge_profile_library X{ inventory }; + return X.get_charge_profile_library(false, inputs.create_charge_profile_library); +} + +interface_to_SE_groups::~interface_to_SE_groups() +{ + if(this->EV_model_factory != NULL) + { + delete this->EV_model_factory; + this->EV_model_factory = NULL; + } + + if(this->ac_to_dc_converter_factory != NULL) + { + delete this->ac_to_dc_converter_factory; + this->ac_to_dc_converter_factory = NULL; + } } @@ -579,27 +576,5 @@ void interface_to_SE_groups::ES500_set_energy_setpoints(ES500_aggregator_e_step_ this->SEid_to_SE_ptr[SE_id[i]]->ES500_set_energy_setpoints(e3_step_kWh[i]); } } - -/* - std::map::iterator it; - - for(int i=0; iSEid_to_SE_ptr.find(SE_id[i]); - - std::cout << SE_id[i] << " " << e3_step_kWh[i] << std::endl; - - if(it == this->SEid_to_SE_ptr.end()) - { - std::cout << "No findy" << std::endl; - - // Throw an Error - } - else - { - it->second->ES500_set_energy_setpoints(e3_step_kWh[i]); - } - } -*/ } diff --git a/source/base/ICM_interface.h b/source/base/ICM_interface.h index 96ddd11..fdbf729 100644 --- a/source/base/ICM_interface.h +++ b/source/base/ICM_interface.h @@ -3,7 +3,7 @@ #define inl_ICM_interface_H #include "datatypes_global.h" // grid_node_id_type, SE_id_type, station_configuration, station_charge_event_data, station_status -#include "datatypes_global_SE_EV_definitions.h" // get_supply_equipment_enum, get_vehicle_enum, supply_equipment_is_L1, supply_equipment_is_L2, pev_is_compatible_with_supply_equipment +//#include "datatypes_global_SE_EV_definitions.h" // get_supply_equipment_enum, get_vehicle_enum, supply_equipment_is_L1, supply_equipment_is_L2, pev_is_compatible_with_supply_equipment #include "supply_equipment_group.h" // supply_equipment_group #include "supply_equipment.h" // supply_equipment #include "supply_equipment_control.h" // manage_L2_control_strategy_parameters @@ -14,12 +14,68 @@ #include #include +#include "factory_EV_charge_model.h" +#include "factory_charging_transitions.h" +#include "factory_ac_to_dc_converter.h" +#include "factory_supply_equipment_model.h" + //#include //namespace py = pybind11; -class factory_EV_charge_model; -class factory_ac_to_dc_converter; +struct interface_to_SE_groups_inputs +{ + const EV_EVSE_inventory& inventory; + + // factory_inputs + bool create_charge_profile_library; + EV_ramping_map ramping_by_pevType_only; + std::vector ramping_by_pevType_seType; + + // infrastructure_inputs + charge_event_queuing_inputs CE_queuing_inputs; + std::vector infrastructure_topology; + + // baseLD_forecaster_inputs + double data_start_unix_time; + int data_timestep_sec; + std::vector& actual_load_akW; + std::vector& forecast_load_akW; + double adjustment_interval_hrs; + + // control_strategy_inputs + L2_control_strategy_parameters L2_parameters; + bool ensure_pev_charge_needs_met; + + interface_to_SE_groups_inputs(const EV_EVSE_inventory& inventory, + bool create_charge_profile_library, + EV_ramping_map ramping_by_pevType_only, + std::vector ramping_by_pevType_seType, + charge_event_queuing_inputs CE_queuing_inputs, + std::vector infrastructure_topology, + double data_start_unix_time, + int data_timestep_sec, + std::vector& actual_load_akW, + std::vector& forecast_load_akW, + double adjustment_interval_hrs, + L2_control_strategy_parameters L2_parameters, + bool ensure_pev_charge_needs_met) + : inventory{ inventory }, + create_charge_profile_library{ create_charge_profile_library }, + ramping_by_pevType_only{ ramping_by_pevType_only }, + ramping_by_pevType_seType{ ramping_by_pevType_seType }, + CE_queuing_inputs{ CE_queuing_inputs }, + infrastructure_topology{ infrastructure_topology }, + data_start_unix_time{ data_start_unix_time }, + data_timestep_sec{ data_timestep_sec }, + actual_load_akW{ actual_load_akW }, + forecast_load_akW{ forecast_load_akW }, + adjustment_interval_hrs{ adjustment_interval_hrs }, + L2_parameters{ L2_parameters }, + ensure_pev_charge_needs_met{ ensure_pev_charge_needs_met } + { + } +}; class interface_to_SE_groups @@ -28,6 +84,8 @@ class interface_to_SE_groups // unordered_maps may not be used here if they are iterated through. To maintain repeatable // stochastic behavior. + const EV_EVSE_inventory& inventory; + std::vector SE_group_objs; std::map SE_group_Id_to_ptr; std::map SEid_to_SE_ptr; @@ -42,12 +100,16 @@ class interface_to_SE_groups manage_L2_control_strategy_parameters manage_L2_control; public: - interface_to_SE_groups() {}; + interface_to_SE_groups(const interface_to_SE_groups_inputs& inputs); + ~interface_to_SE_groups(); - void initialize(bool create_charge_profile_library, std::map ramping_by_pevType_only, std::vector ramping_by_pevType_seType); - void initialize_infrastructure(charge_event_queuing_inputs CE_queuing_inputs, std::vector infrastructure_topology); - void initialize_baseLD_forecaster(double data_start_unix_time, int data_timestep_sec, std::vector& actual_load_akW, std::vector& forecast_load_akW, double adjustment_interval_hrs); - void initialize_L2_control_strategy_parameters(L2_control_strategy_parameters L2_parameters); + + pev_charge_profile_library load_charge_profile_library(const interface_to_SE_groups_inputs& inputs); + + //void initialize(bool create_charge_profile_library, std::map ramping_by_pevType_only, std::vector ramping_by_pevType_seType); + //void initialize_infrastructure(charge_event_queuing_inputs CE_queuing_inputs, std::vector infrastructure_topology); + //void initialize_baseLD_forecaster(double data_start_unix_time, int data_timestep_sec, std::vector& actual_load_akW, std::vector& forecast_load_akW, double adjustment_interval_hrs); + //void initialize_L2_control_strategy_parameters(L2_control_strategy_parameters L2_parameters); void set_ensure_pev_charge_needs_met_for_ext_control_strategy(bool ensure_pev_charge_needs_met); void stop_active_charge_events(std::vector SE_ids); diff --git a/source/base/SE_EV_factory_charge_profile.cpp b/source/base/SE_EV_factory_charge_profile.cpp index 6076fda..7af92d3 100644 --- a/source/base/SE_EV_factory_charge_profile.cpp +++ b/source/base/SE_EV_factory_charge_profile.cpp @@ -9,6 +9,9 @@ #include "charge_profile_library.h" #include "charge_profile_downsample_fragments.h" +#include "factory_supply_equipment_model.h" +#include "factory_ac_to_dc_converter.h" +#include "factory_EV_charge_model.h" #include #include @@ -37,12 +40,16 @@ void factory_charge_profile_library::create_charge_fragments_vector(int charge_e //------------------------ // Create Factories //------------------------ - factory_supply_equipment_model SE_factory; - factory_ac_to_dc_converter ac_to_dc_converter_factory; + factory_supply_equipment_model SE_factory{ inventory }; + factory_ac_to_dc_converter ac_to_dc_converter_factory{ inventory }; pev_charge_profile_library* charge_profile_library = NULL; - factory_EV_charge_model PEV_charge_factory; - PEV_charge_factory.set_bool_model_stochastic_battery_degregation(false); + EV_ramping_map EV_ramping; + EV_EVSE_ramping_map EV_EVSE_ramping; + bool model_stochastic_battery_degregation = false; + + factory_EV_charge_model PEV_charge_factory{ inventory, EV_ramping, EV_EVSE_ramping, model_stochastic_battery_degregation }; + //PEV_charge_factory.set_bool_model_stochastic_battery_degregation(false); //------------------------ // Create SE Object @@ -52,7 +59,7 @@ void factory_charge_profile_library::create_charge_fragments_vector(int charge_e supply_equipment SE_obj; bool building_charge_profile_library = true; - SE_configuration SE_config(1, 1, pev_SE.SE_type, 12.2, 9.2, "bus_A", "U"); // (station_id, SE_id, SE_enum, lat, long, grid_node_id, location_type) + SE_configuration SE_config(1, 1, pev_SE.se_type, 12.2, 9.2, "bus_A", "U"); // (station_id, SE_id, SE_enum, lat, long, grid_node_id, location_type) SE_factory.get_supply_equipment_model(building_charge_profile_library, SE_config, baseLD_forecaster, manage_L2_control, SE_obj); SE_obj.set_pointers_in_SE_Load(&PEV_charge_factory, &ac_to_dc_converter_factory, charge_profile_library); @@ -71,7 +78,7 @@ void factory_charge_profile_library::create_charge_fragments_vector(int charge_e double arrival_unix_time = 20*time_step_sec; double departure_unix_time = 1000*3600; - charge_event_data charge_event(charge_event_Id, 1, 1, 1, pev_SE.EV_type, arrival_unix_time, departure_unix_time, 0, 100, stop_charge, control_enums); + charge_event_data charge_event(charge_event_Id, 1, 1, 1, pev_SE.ev_type, arrival_unix_time, departure_unix_time, 0, 100, stop_charge, control_enums); SE_obj.add_charge_event(charge_event); //------------------------ @@ -139,9 +146,9 @@ double factory_charge_profile_library::get_min_P3kW(double max_P3kW, pev_SE_pair { double min_P3kW; - if(supply_equipment_is_L1(pev_SE.SE_type)) + if(this->inventory.get_EVSE_inventory().at(pev_SE.se_type).get_level() == L1) min_P3kW = 0.8*max_P3kW; - else if(supply_equipment_is_L2(pev_SE.SE_type)) + else if(this->inventory.get_EVSE_inventory().at(pev_SE.se_type).get_level() == L2) min_P3kW = 0.5*max_P3kW; else min_P3kW = 1; @@ -150,7 +157,12 @@ double factory_charge_profile_library::get_min_P3kW(double max_P3kW, pev_SE_pair } -void factory_charge_profile_library::get_charge_profile_aux_parameters(double max_P3kW, pev_SE_pair pev_SE, std::vector& time_step_sec, std::vector& target_acP3_kW, std::vector& fragment_removal_criteria) +void factory_charge_profile_library::get_charge_profile_aux_parameters(double max_P3kW, + pev_SE_pair pev_SE, + std::vector& time_step_sec, + std::vector& target_acP3_kW, + std::vector& + fragment_removal_criteria) { time_step_sec.clear(); target_acP3_kW.clear(); @@ -253,12 +265,12 @@ pev_charge_profile_aux factory_charge_profile_library::get_pev_charge_profile_au validation_data_struct.retained_fragments = downsample_obj.get_retained_fragments();; validation_data_struct.downsampled_charge_fragments = downsampled_charge_fragments; validation_data_struct.original_charge_fragments = original_charge_fragments; - this->validation_data[std::make_pair(pev_SE.EV_type, pev_SE.SE_type)].push_back(validation_data_struct); + this->validation_data[std::make_pair(pev_SE.ev_type, pev_SE.se_type)].push_back(validation_data_struct); } //----------------------------- - pev_charge_profile_aux aux_obj(pev_SE.EV_type, pev_SE.SE_type, max_P3kW, downsampled_charge_fragments); + pev_charge_profile_aux aux_obj(pev_SE.ev_type, pev_SE.se_type, max_P3kW, downsampled_charge_fragments); return aux_obj; } @@ -269,20 +281,20 @@ pev_charge_profile_library factory_charge_profile_library::get_charge_profile_li //----------------------------------- - pev_charge_profile_library return_val; + pev_charge_profile_library return_val{inventory}; if(create_charge_profile_library) { - std::vector all_pev_SE_pairs = get_all_compatible_pev_SE_combinations(); + const std::vector& all_pev_SE_pairs = this->inventory.get_all_compatible_pev_SE_combinations(); int charge_event_Id = 1000; double get_max_time_step_sec; - for(pev_SE_pair pev_SE : all_pev_SE_pairs) + for(const pev_SE_pair& pev_SE : all_pev_SE_pairs) { - if(supply_equipment_is_L1(pev_SE.SE_type)) + if(this->inventory.get_EVSE_inventory().at(pev_SE.se_type).get_level() == L1) get_max_time_step_sec = 60; - else if(supply_equipment_is_L2(pev_SE.SE_type)) + else if(this->inventory.get_EVSE_inventory().at(pev_SE.se_type).get_level() == L2) get_max_time_step_sec = 30; else get_max_time_step_sec = 1; @@ -321,8 +333,8 @@ pev_charge_profile_library factory_charge_profile_library::get_charge_profile_li //----------------------- - pev_charge_profile charge_profile(pev_SE.EV_type, pev_SE.SE_type, CE_P3kW_limits, charge_profiles_aux_vector); - return_val.add_charge_profile_to_library(pev_SE.EV_type, pev_SE.SE_type, charge_profile); + pev_charge_profile charge_profile(pev_SE.ev_type, pev_SE.se_type, CE_P3kW_limits, charge_profiles_aux_vector); + return_val.add_charge_profile_to_library(pev_SE.ev_type, pev_SE.se_type, charge_profile); } } @@ -330,17 +342,17 @@ pev_charge_profile_library factory_charge_profile_library::get_charge_profile_li } -std::map< std::pair, std::vector > factory_charge_profile_library::get_validation_data() +std::map< std::pair, std::vector > factory_charge_profile_library::get_validation_data() { return this->validation_data; } -std::vector factory_charge_profile_library::USE_FOR_DEBUG_PURPOSES_ONLY_get_raw_charge_profile(double time_step_sec, double target_acP3_kW, vehicle_enum pev_type, supply_equipment_enum SE_type) +std::vector factory_charge_profile_library::USE_FOR_DEBUG_PURPOSES_ONLY_get_raw_charge_profile(double time_step_sec, double target_acP3_kW, EV_type pev_type, EVSE_type SE_type) { pev_SE_pair pev_SE; - pev_SE.EV_type = pev_type; - pev_SE.SE_type = SE_type; + pev_SE.ev_type = pev_type; + pev_SE.se_type = SE_type; double max_P3kW; int charge_event_Id = 1000; @@ -357,12 +369,13 @@ std::vector factory_charge_profile_library::USE_FOR_DEBUG_P // Charge Profile Library Factory //############################################################################# - -void factory_charge_profile_library_v2::initialize_custome_parameters(std::map ramping_by_pevType_only_, std::map< std::tuple, pev_charge_ramping> ramping_by_pevType_seType_) +/* +void factory_charge_profile_library_v2::initialize_custome_parameters(std::map ramping_by_pevType_only_, std::map< std::tuple, pev_charge_ramping> ramping_by_pevType_seType_) { this->ramping_by_pevType_only = ramping_by_pevType_only_; this->ramping_by_pevType_seType = ramping_by_pevType_seType_; } +*/ void factory_charge_profile_library_v2::create_charge_profile(double time_step_sec, pev_SE_pair pev_SE, double start_soc, double end_soc, double target_acP3_kW, std::vector& soc, std::vector& charge_profile) @@ -380,13 +393,19 @@ void factory_charge_profile_library_v2::create_charge_profile(double time_step_s //------------------------ // Create Factories //------------------------ - factory_supply_equipment_model SE_factory; - factory_ac_to_dc_converter ac_to_dc_converter_factory; + factory_supply_equipment_model SE_factory{ inventory }; + factory_ac_to_dc_converter ac_to_dc_converter_factory{inventory}; pev_charge_profile_library* charge_profile_library = NULL; // Is needed in SE_obj - factory_EV_charge_model PEV_charge_factory; - PEV_charge_factory.set_bool_model_stochastic_battery_degregation(false); - PEV_charge_factory.initialize_custome_parameters(this->ramping_by_pevType_only, this->ramping_by_pevType_seType); + EV_ramping_map EV_ramping; + EV_EVSE_ramping_map EV_EVSE_ramping; + bool model_stochastic_battery_degregation = false; + + factory_EV_charge_model PEV_charge_factory{ inventory, EV_ramping, EV_EVSE_ramping, model_stochastic_battery_degregation }; + + //factory_EV_charge_model PEV_charge_factory; + //PEV_charge_factory.set_bool_model_stochastic_battery_degregation(false); + //PEV_charge_factory.initialize_custome_parameters(this->ramping_by_pevType_only, this->ramping_by_pevType_seType); //------------------------ // Create SE Object @@ -396,7 +415,7 @@ void factory_charge_profile_library_v2::create_charge_profile(double time_step_s supply_equipment SE_obj; bool building_charge_profile_library = true; - SE_configuration SE_config(1, 1, pev_SE.SE_type, 12.2, 9.2, "bus_A", "U"); // (station_id, SE_id, SE_enum, lat, long, grid_node_id, location_type) + SE_configuration SE_config(1, 1, pev_SE.se_type, 12.2, 9.2, "bus_A", "U"); // (station_id, SE_id, SE_enum, lat, long, grid_node_id, location_type) SE_factory.get_supply_equipment_model(building_charge_profile_library, SE_config, baseLD_forecaster, manage_L2_control, SE_obj); SE_obj.set_pointers_in_SE_Load(&PEV_charge_factory, &ac_to_dc_converter_factory, charge_profile_library); @@ -415,7 +434,7 @@ void factory_charge_profile_library_v2::create_charge_profile(double time_step_s double arrival_unix_time = 5*max_time_step_sec; double departure_unix_time = arrival_unix_time + 1000*3600; - charge_event_data charge_event(1, 1, 1, 1, pev_SE.EV_type, arrival_unix_time, departure_unix_time, start_soc, end_soc, stop_charge, control_enums); + charge_event_data charge_event(1, 1, 1, 1, pev_SE.ev_type, arrival_unix_time, departure_unix_time, start_soc, end_soc, stop_charge, control_enums); SE_obj.add_charge_event(charge_event); //------------------------ @@ -457,8 +476,8 @@ void factory_charge_profile_library_v2::create_charge_profile(double time_step_s pev_charge_profile_library_v2 factory_charge_profile_library_v2::get_charge_profile_library(double L1_timestep_sec, double L2_timestep_sec, double HPC_timestep_sec) { - pev_charge_profile_library_v2 return_val; - std::vector all_pev_SE_pairs = get_all_compatible_pev_SE_combinations(); + pev_charge_profile_library_v2 return_val{ this->inventory }; + std::vector all_pev_SE_pairs = this->inventory.get_all_compatible_pev_SE_combinations(); std::vector charge_profile; std::vector soc; @@ -470,15 +489,15 @@ pev_charge_profile_library_v2 factory_charge_profile_library_v2::get_charge_prof for(pev_SE_pair pev_SE : all_pev_SE_pairs) { - if(supply_equipment_is_L1(pev_SE.SE_type)) + if(this->inventory.get_EVSE_inventory().at(pev_SE.se_type).get_level() == L1) time_step_sec = L1_timestep_sec; - else if(supply_equipment_is_L2(pev_SE.SE_type)) + else if(this->inventory.get_EVSE_inventory().at(pev_SE.se_type).get_level() == L2) time_step_sec = L2_timestep_sec; else time_step_sec = HPC_timestep_sec; create_charge_profile(time_step_sec, pev_SE, start_soc, end_soc, target_acP3_kW, soc, charge_profile); - return_val.add_charge_PkW_profile_to_library(pev_SE.EV_type, pev_SE.SE_type, time_step_sec, soc, charge_profile); + return_val.add_charge_PkW_profile_to_library(pev_SE.ev_type, pev_SE.se_type, time_step_sec, soc, charge_profile); } return return_val; diff --git a/source/base/SE_EV_factory_charge_profile.h b/source/base/SE_EV_factory_charge_profile.h index 16ea6d8..56bd1d7 100644 --- a/source/base/SE_EV_factory_charge_profile.h +++ b/source/base/SE_EV_factory_charge_profile.h @@ -4,7 +4,6 @@ #include "datatypes_global.h" // SE_configuration, pev_charge_fragment, pev_charge_fragment_removal_criteria -#include "datatypes_global_SE_EV_definitions.h" // supply_equipment_enum, vehicle_enum, pev_SE_pair #include "datatypes_module.h" // charge_event_P3kW_limits, SE_status, CE_Status #include "vehicle_charge_model.h" // vehicle_charge_model, charge_event_data #include "supply_equipment_load.h" // supply_equipment_load @@ -12,7 +11,10 @@ #include "supply_equipment.h" // supply_equipment #include "ac_to_dc_converter.h" // ac_to_dc_converter -#include "SE_EV_factory.h" +#include "EV_characteristics.h" +#include "EVSE_characteristics.h" +#include "EV_EVSE_inventory.h" +#include "factory_charging_transitions.h" #include @@ -24,7 +26,9 @@ class factory_charge_profile_library { private: - std::map< std::pair, std::vector > validation_data; + const EV_EVSE_inventory& inventory; + + std::map< std::pair, std::vector > validation_data; void create_charge_fragments_vector(int charge_event_Id, double time_step_sec, double target_acP3_kW, pev_SE_pair pev_SE, double& max_P3kW, std::vector& charge_fragments); double get_max_P3kW(double time_step_sec, pev_SE_pair pev_SE); @@ -33,11 +37,11 @@ class factory_charge_profile_library pev_charge_profile_aux get_pev_charge_profile_aux(int charge_event_Id, bool save_validation_data, double time_step_sec, double target_acP3_kW, pev_SE_pair pev_SE, pev_charge_fragment_removal_criteria fragment_removal_criteria, double& max_P3kW); public: - factory_charge_profile_library() {}; + factory_charge_profile_library(const EV_EVSE_inventory& inventory) : inventory{ inventory } {}; pev_charge_profile_library get_charge_profile_library(bool save_validation_data, bool create_charge_profile_library); - std::map< std::pair, std::vector > get_validation_data(); - std::vector USE_FOR_DEBUG_PURPOSES_ONLY_get_raw_charge_profile(double time_step_sec, double target_acP3_kW, vehicle_enum pev_type, supply_equipment_enum SE_type); + std::map< std::pair, std::vector > get_validation_data(); + std::vector USE_FOR_DEBUG_PURPOSES_ONLY_get_raw_charge_profile(double time_step_sec, double target_acP3_kW, EV_type pev_type, EVSE_type SE_type); }; @@ -47,14 +51,23 @@ class factory_charge_profile_library class factory_charge_profile_library_v2 { private: - std::map ramping_by_pevType_only; - std::map< std::tuple, pev_charge_ramping> ramping_by_pevType_seType; + const EV_EVSE_inventory& inventory; + EV_ramping_map ramping_by_pevType_only; + EV_EVSE_ramping_map ramping_by_pevType_seType; public: - void create_charge_profile(double time_step_sec, pev_SE_pair pev_SE, double start_soc, double end_soc, double target_acP3_kW, std::vector& soc, std::vector& charge_profile); + + factory_charge_profile_library_v2(const EV_EVSE_inventory& inventory, + const EV_ramping_map& ramping_by_pevType_only, + const EV_EVSE_ramping_map& ramping_by_pevType_seType) + : inventory{ inventory }, + ramping_by_pevType_only{ ramping_by_pevType_only }, + ramping_by_pevType_seType{ ramping_by_pevType_seType } + { + } - factory_charge_profile_library_v2() {}; - void initialize_custome_parameters(std::map ramping_by_pevType_only_, std::map< std::tuple, pev_charge_ramping> ramping_by_pevType_seType_); + void create_charge_profile(double time_step_sec, pev_SE_pair pev_SE, double start_soc, double end_soc, double target_acP3_kW, std::vector& soc, std::vector& charge_profile); + //void initialize_custome_parameters(std::map ramping_by_pevType_only_, std::map< std::tuple, pev_charge_ramping> ramping_by_pevType_seType_); pev_charge_profile_library_v2 get_charge_profile_library(double L1_timestep_sec, double L2_timestep_sec, double HPC_timestep_sec); }; diff --git a/source/base/charge_profile_library.cpp b/source/base/charge_profile_library.cpp index 4f2c3b7..a343c33 100644 --- a/source/base/charge_profile_library.cpp +++ b/source/base/charge_profile_library.cpp @@ -65,7 +65,7 @@ pev_charge_profile_result get_default_charge_profile_result() // pev_charge_profile_aux //============================================================================== -pev_charge_profile_aux::pev_charge_profile_aux(vehicle_enum pev_type_, supply_equipment_enum SE_type_, double setpoint_P3kW_, std::vector& charge_fragments_) +pev_charge_profile_aux::pev_charge_profile_aux(EV_type pev_type_, EVSE_type SE_type_, double setpoint_P3kW_, std::vector& charge_fragments_) { this->pev_type = pev_type_; this->SE_type = SE_type_; @@ -264,7 +264,7 @@ void pev_charge_profile_aux::find_chargeProfile_given_startSOC_and_chargeTimes(d // pev_charge_profile //============================================================================== -pev_charge_profile::pev_charge_profile(vehicle_enum pev_type_, supply_equipment_enum SE_type_, charge_event_P3kW_limits& CE_P3kW_limits_, std::vector& charge_profiles_) +pev_charge_profile::pev_charge_profile(EV_type pev_type_, EVSE_type SE_type_, charge_event_P3kW_limits& CE_P3kW_limits_, std::vector& charge_profiles_) { this->pev_type = pev_type_; this->SE_type = SE_type_; @@ -363,11 +363,12 @@ void pev_charge_profile::find_chargeProfile_given_startSOC_and_chargeTimes(doubl // pev_charge_profile_library //============================================================================== -pev_charge_profile_library::pev_charge_profile_library() +pev_charge_profile_library::pev_charge_profile_library(const EV_EVSE_inventory& inventory) + : inventory(inventory) { // Dummy Values for default profile - vehicle_enum pev_type = get_default_vehicle_enum(); - supply_equipment_enum SE_type = get_default_supply_equipment_enum(); + EV_type pev_type = inventory.get_default_EV(); + EVSE_type SE_type = inventory.get_default_EVSE(); charge_event_P3kW_limits CE_P3kW_limits; CE_P3kW_limits.min_P3kW = 0; CE_P3kW_limits.max_P3kW = 1; @@ -398,9 +399,9 @@ pev_charge_profile_library::pev_charge_profile_library() } -void pev_charge_profile_library::add_charge_profile_to_library(vehicle_enum pev_type, supply_equipment_enum SE_type, pev_charge_profile& charge_profile) +void pev_charge_profile_library::add_charge_profile_to_library(EV_type pev_type, EVSE_type SE_type, pev_charge_profile& charge_profile) { - std::pair key; + std::pair key; key = std::make_pair(pev_type, SE_type); if(this->charge_profile.count(key) == 0) @@ -410,9 +411,9 @@ void pev_charge_profile_library::add_charge_profile_to_library(vehicle_enum pev_ } -pev_charge_profile* pev_charge_profile_library::get_charge_profile(vehicle_enum pev_type, supply_equipment_enum SE_type) +pev_charge_profile* pev_charge_profile_library::get_charge_profile(EV_type pev_type, EVSE_type SE_type) { - std::pair key; + std::pair key; key = std::make_pair(pev_type, SE_type); pev_charge_profile* return_val; @@ -433,9 +434,15 @@ pev_charge_profile* pev_charge_profile_library::get_charge_profile(vehicle_enum // pev_charge_profile_library_v2 //============================================================================== -void pev_charge_profile_library_v2::add_charge_PkW_profile_to_library(vehicle_enum pev_type, supply_equipment_enum SE_type, double timestep_sec, std::vector& soc, std::vector& profile) +pev_charge_profile_library_v2::pev_charge_profile_library_v2(const EV_EVSE_inventory& inventory) + : inventory{ inventory } { - std::pair key; + +} + +void pev_charge_profile_library_v2::add_charge_PkW_profile_to_library(EV_type pev_type, EVSE_type SE_type, double timestep_sec, std::vector& soc, std::vector& profile) +{ + std::pair key; key = std::make_pair(pev_type, SE_type); tmp_charge_profile X; @@ -497,7 +504,7 @@ void pev_charge_profile_library_v2::find_start_end_indexes_from_start_end_soc(do } -void pev_charge_profile_library_v2::get_P3kW_charge_profile(double start_soc, double end_soc, vehicle_enum pev_type, supply_equipment_enum SE_type, double& timestep_sec, std::vector& P3kW_charge_profile) +void pev_charge_profile_library_v2::get_P3kW_charge_profile(double start_soc, double end_soc, EV_type pev_type, EVSE_type SE_type, double& timestep_sec, std::vector& P3kW_charge_profile) { timestep_sec = 1; P3kW_charge_profile.clear(); @@ -512,7 +519,7 @@ void pev_charge_profile_library_v2::get_P3kW_charge_profile(double start_soc, do //----------------------------- - std::pair key; + std::pair key; key = std::make_pair(pev_type, SE_type); if(this->PkW_profile.count(key) == 0) @@ -535,7 +542,7 @@ void pev_charge_profile_library_v2::get_P3kW_charge_profile(double start_soc, do } -void pev_charge_profile_library_v2::get_all_charge_profile_data(double start_soc, double end_soc, vehicle_enum pev_type, supply_equipment_enum SE_type, all_charge_profile_data& return_val) +void pev_charge_profile_library_v2::get_all_charge_profile_data(double start_soc, double end_soc, EV_type pev_type, EVSE_type SE_type, all_charge_profile_data& return_val) { return_val.timestep_sec = 1; return_val.P1_kW.clear(); @@ -554,7 +561,7 @@ void pev_charge_profile_library_v2::get_all_charge_profile_data(double start_soc //----------------------------- - std::pair key; + std::pair key; key = std::make_pair(pev_type, SE_type); if(this->PkW_profile.count(key) == 0) diff --git a/source/base/charge_profile_library.h b/source/base/charge_profile_library.h index 5eeb824..adb7978 100644 --- a/source/base/charge_profile_library.h +++ b/source/base/charge_profile_library.h @@ -4,7 +4,6 @@ #include "datatypes_global.h" #include "datatypes_module.h" -#include "datatypes_global_SE_EV_definitions.h" #include "helper.h" #include @@ -13,6 +12,9 @@ #include // int64_t #include // pair +#include "EV_characteristics.h" +#include "EVSE_characteristics.h" +#include "EV_EVSE_inventory.h" void search_vector_of_doubles(double search_value, std::vector& search_vector, int& LB_index, int& UB_index); pev_charge_profile_result get_default_charge_profile_result(); @@ -21,8 +23,8 @@ pev_charge_profile_result get_default_charge_profile_result(); class pev_charge_profile_aux { private: - vehicle_enum pev_type; - supply_equipment_enum SE_type; + EV_type pev_type; + EVSE_type SE_type; double setpoint_P3kW; std::vector charge_fragments; @@ -38,7 +40,7 @@ class pev_charge_profile_aux void find_chargeProfile(double startSOC, bool values_are_soc_not_timeHrs, std::vector& values, std::vector& charge_profile, std::vector& cumulative_charge_profile); public: - pev_charge_profile_aux(vehicle_enum pev_type_, supply_equipment_enum SE_type_, double setpoint_P3kW_, std::vector& charge_fragments_); + pev_charge_profile_aux(EV_type pev_type_, EVSE_type SE_type_, double setpoint_P3kW_, std::vector& charge_fragments_); double get_setpoint_P3kW(); pev_charge_profile_result find_result_given_startSOC_and_endSOC(double startSOC, double endSOC); @@ -62,8 +64,9 @@ class pev_charge_profile_aux class pev_charge_profile { private: - vehicle_enum pev_type; - supply_equipment_enum SE_type; + + EV_type pev_type; + EVSE_type SE_type; charge_event_P3kW_limits CE_P3kW_limits; std::vector charge_profiles; @@ -76,7 +79,7 @@ class pev_charge_profile public: pev_charge_profile() {}; - pev_charge_profile(vehicle_enum pev_type_, supply_equipment_enum SE_type_, charge_event_P3kW_limits& CE_P3kW_limits_, std::vector& charge_profiles_); + pev_charge_profile(EV_type pev_type_, EVSE_type SE_type_, charge_event_P3kW_limits& CE_P3kW_limits_, std::vector& charge_profiles_); charge_event_P3kW_limits get_charge_event_P3kW_limits(); std::vector get_P3kW_setpoints_of_charge_profiles(); @@ -93,14 +96,16 @@ class pev_charge_profile_library { private: // Using map because there is no specialization of std::hash for std::pair in the c++ standard library. - std::map< std::pair, pev_charge_profile> charge_profile; + std::map< std::pair, pev_charge_profile> charge_profile; pev_charge_profile default_profile; + const EV_EVSE_inventory& inventory; + public: - pev_charge_profile_library(); + pev_charge_profile_library(const EV_EVSE_inventory& inventory); - void add_charge_profile_to_library(vehicle_enum pev_type, supply_equipment_enum SE_type, pev_charge_profile& charge_profile); - pev_charge_profile* get_charge_profile(vehicle_enum pev_type, supply_equipment_enum SE_type); + void add_charge_profile_to_library(EV_type pev_type, EVSE_type SE_type, pev_charge_profile& charge_profile); + pev_charge_profile* get_charge_profile(EV_type pev_type, EVSE_type SE_type); }; @@ -114,17 +119,19 @@ class pev_charge_profile_library_v2 std::vector soc; double timestep_sec; }; + + const EV_EVSE_inventory& inventory; - std::map, tmp_charge_profile> PkW_profile; + std::map, tmp_charge_profile> PkW_profile; void find_index_and_weight(double soc, std::vector& soc_vector, double& index, double& weight); void find_start_end_indexes_from_start_end_soc(double start_soc, double end_soc, std::vector& soc, double& start_index, double& end_index); public: - pev_charge_profile_library_v2() {}; + pev_charge_profile_library_v2(const EV_EVSE_inventory& inventory); - void add_charge_PkW_profile_to_library(vehicle_enum pev_type, supply_equipment_enum SE_type, double timestep_sec, std::vector& soc, std::vector& profile); - void get_P3kW_charge_profile(double start_soc, double end_soc, vehicle_enum pev_type, supply_equipment_enum SE_type, double& timestep_sec, std::vector& P3kW_charge_profile); - void get_all_charge_profile_data(double start_soc, double end_soc, vehicle_enum pev_type, supply_equipment_enum SE_type, all_charge_profile_data& return_val); + void add_charge_PkW_profile_to_library(EV_type pev_type, EVSE_type SE_type, double timestep_sec, std::vector& soc, std::vector& profile); + void get_P3kW_charge_profile(double start_soc, double end_soc, EV_type pev_type, EVSE_type SE_type, double& timestep_sec, std::vector& P3kW_charge_profile); + void get_all_charge_profile_data(double start_soc, double end_soc, EV_type pev_type, EVSE_type SE_type, all_charge_profile_data& return_val); }; diff --git a/source/base/datatypes_module.h b/source/base/datatypes_module.h index f61311a..6abce64 100644 --- a/source/base/datatypes_module.h +++ b/source/base/datatypes_module.h @@ -35,7 +35,7 @@ struct CE_status { int charge_event_id; vehicle_id_type vehicle_id; - vehicle_enum vehicle_type; + EV_type vehicle_type; stop_charging_criteria stop_charge; double arrival_unix_time; double departure_unix_time; diff --git a/source/base/inputs.h b/source/base/inputs.h index b672e90..30da571 100644 --- a/source/base/inputs.h +++ b/source/base/inputs.h @@ -1,10 +1,10 @@ #ifndef INPUTS_H #define INPUTS_H -#include "charging_transitions_factory.h" -#include "puVrms_vs_P2_factory.h" -#include "SOC_vs_P2_factory.h" -#include "P2_vs_battery_efficiency_factory.h" +#include "factory_charging_transitions.h" +#include "factory_puVrms_vs_P2.h" +#include "factory_SOC_vs_P2.h" +#include "factory_P2_vs_battery_efficiency.h" struct vehicle_charge_model_inputs { @@ -13,20 +13,20 @@ struct vehicle_charge_model_inputs const EVSE_type& EVSE; const double SE_P2_limit_kW; const double battery_size_kWh; - const charging_transitions_factory& CT_factory; - const puVrms_vs_P2_factory& VP_factory; - const SOC_vs_P2_factory& SOCP_factory; - const P2_vs_battery_efficiency_factory& PE_factory; + const factory_charging_transitions& CT_factory; + const factory_puVrms_vs_P2& VP_factory; + const factory_SOC_vs_P2& SOCP_factory; + const factory_P2_vs_battery_efficiency& PE_factory; vehicle_charge_model_inputs(const charge_event_data& CE, const EV_type& EV, const EVSE_type& EVSE, const double& SE_P2_limit_kW, const double& battery_size_kWh, - const charging_transitions_factory& CT_factory, - const puVrms_vs_P2_factory& VP_factory, - const SOC_vs_P2_factory& SOCP_factory, - const P2_vs_battery_efficiency_factory& PE_factory) + const factory_charging_transitions& CT_factory, + const factory_puVrms_vs_P2& VP_factory, + const factory_SOC_vs_P2& SOCP_factory, + const factory_P2_vs_battery_efficiency& PE_factory) : CE{ CE }, EV{ EV }, EVSE{ EVSE }, diff --git a/source/base/supply_equipment.cpp b/source/base/supply_equipment.cpp index 0b73e42..7a66d4b 100644 --- a/source/base/supply_equipment.cpp +++ b/source/base/supply_equipment.cpp @@ -1,9 +1,10 @@ #include "supply_equipment.h" -#include "SE_EV_factory.h" // factory_EV_charge_model, factory_ac_to_dc_converter +#include "factory_EV_charge_model.h" // factory_EV_charge_model +#include "factory_supply_equipment_model.h" // factory_supply_equipment_model -supply_equipment::supply_equipment(SE_configuration& SE_config_, supply_equipment_control& SE_control_, supply_equipment_load& SE_Load_) +supply_equipment::supply_equipment(const SE_configuration& SE_config_, supply_equipment_control& SE_control_, supply_equipment_load& SE_Load_) { this->SE_config = SE_config_; this->SE_control = SE_control_; diff --git a/source/base/supply_equipment.h b/source/base/supply_equipment.h index 7bfeb28..70c54c0 100644 --- a/source/base/supply_equipment.h +++ b/source/base/supply_equipment.h @@ -6,7 +6,7 @@ #include "supply_equipment_control.h" #include "datatypes_global.h" // SE_configuration, SE_charging_status, charge_event_data -#include "datatypes_global_SE_EV_definitions.h" +//#include "datatypes_global_SE_EV_definitions.h" #include "datatypes_module.h" // ac_power_metrics, SE_status, CE_Status #include "charge_profile_library.h" // pev_charge_profile_library @@ -25,7 +25,7 @@ class supply_equipment public: supply_equipment() {}; - supply_equipment(SE_configuration& SE_config_, supply_equipment_control& SE_control_, supply_equipment_load& SE_Load_); + supply_equipment(const SE_configuration& SE_config_, supply_equipment_control& SE_control_, supply_equipment_load& SE_Load_); void set_pointers_in_SE_Load(factory_EV_charge_model* PEV_charge_factory, factory_ac_to_dc_converter* ac_to_dc_converter_factory, pev_charge_profile_library* charge_profile_library); bool is_SE_with_id(SE_id_type SE_id); diff --git a/source/base/supply_equipment_control.cpp b/source/base/supply_equipment_control.cpp index f0edf22..0a5ee9b 100644 --- a/source/base/supply_equipment_control.cpp +++ b/source/base/supply_equipment_control.cpp @@ -651,7 +651,7 @@ void enforce_ramping(double prev_unix_time, double now_unix_time, double max_del //=============================================================================================== //=============================================================================================== -supply_equipment_control::supply_equipment_control(bool building_charge_profile_library_, SE_configuration& SE_config_, get_base_load_forecast* baseLD_forecaster_, manage_L2_control_strategy_parameters* manage_L2_control_) +supply_equipment_control::supply_equipment_control(bool building_charge_profile_library_, const SE_configuration& SE_config_, get_base_load_forecast* baseLD_forecaster_, manage_L2_control_strategy_parameters* manage_L2_control_) { this->building_charge_profile_library = building_charge_profile_library_; @@ -1066,7 +1066,7 @@ int manage_L2_control_strategy_parameters::get_LPF_max_window_size() } -manage_L2_control_strategy_parameters::manage_L2_control_strategy_parameters(L2_control_strategy_parameters& parameters_) +manage_L2_control_strategy_parameters::manage_L2_control_strategy_parameters(const L2_control_strategy_parameters& parameters_) { this->parameters = parameters_; diff --git a/source/base/supply_equipment_control.h b/source/base/supply_equipment_control.h index ad5d514..c8f3a07 100644 --- a/source/base/supply_equipment_control.h +++ b/source/base/supply_equipment_control.h @@ -3,7 +3,7 @@ #define inl_supply_equipment_control_H #include "datatypes_global.h" // ES500_aggregator_charging_needs -#include "datatypes_global_SE_EV_definitions.h" +//#include "datatypes_global_SE_EV_definitions.h" #include "supply_equipment_load.h" // supply_equipment_load #include "helper.h" // get_base_load_forecast, get_value_from_normal_distribution, get_real_value_from_uniform_distribution, get_int_value_from_uniform_distribution #include "charge_profile_library.h" // pev_charge_profile @@ -54,7 +54,7 @@ class manage_L2_control_strategy_parameters public: manage_L2_control_strategy_parameters() {}; - manage_L2_control_strategy_parameters(L2_control_strategy_parameters& parameters_); + manage_L2_control_strategy_parameters(const L2_control_strategy_parameters& parameters_); const ES100_L2_parameters& get_ES100_A(); const ES100_L2_parameters& get_ES100_B(); @@ -295,7 +295,7 @@ class supply_equipment_control public: supply_equipment_control() {}; - supply_equipment_control(bool building_charge_profile_library_, SE_configuration& SE_config_, get_base_load_forecast* baseLD_forecaster_, manage_L2_control_strategy_parameters* manage_L2_control_); + supply_equipment_control(bool building_charge_profile_library_, const SE_configuration& SE_config_, get_base_load_forecast* baseLD_forecaster_, manage_L2_control_strategy_parameters* manage_L2_control_); control_strategy_enums get_control_strategy_enums(); std::string get_external_control_strategy(); diff --git a/source/base/supply_equipment_group.cpp b/source/base/supply_equipment_group.cpp index 65d3388..d5b5950 100644 --- a/source/base/supply_equipment_group.cpp +++ b/source/base/supply_equipment_group.cpp @@ -1,18 +1,22 @@ -#include "supply_equipment_group.h" -#include "SE_EV_factory.h" // factory_EV_charge_model, factory_supply_equipment_model -#include "datatypes_module.h" // ac_power_metrics - - - -supply_equipment_group::supply_equipment_group(SE_group_configuration& SE_group_topology_, factory_supply_equipment_model& SE_factory, factory_EV_charge_model* PEV_charge_factory, - factory_ac_to_dc_converter* ac_to_dc_converter_factory, pev_charge_profile_library* charge_profile_library, - get_base_load_forecast* baseLD_forecaster, manage_L2_control_strategy_parameters* manage_L2_control) +#include "supply_equipment_group.h" +#include "datatypes_module.h" // ac_power_metrics +#include "factory_EV_charge_model.h" // factory_EV_charge_model +#include "factory_supply_equipment_model.h" // factory_supply_equipment_model + + +supply_equipment_group::supply_equipment_group(const SE_group_configuration& SE_group_topology_, + factory_supply_equipment_model& SE_factory, + factory_EV_charge_model* PEV_charge_factory, + factory_ac_to_dc_converter* ac_to_dc_converter_factory, + pev_charge_profile_library* charge_profile_library, + get_base_load_forecast* baseLD_forecaster, + manage_L2_control_strategy_parameters* manage_L2_control) { this->SE_group_topology = SE_group_topology_; this->SE_objs.clear(); - for(SE_configuration& SE_config : SE_group_topology_.SEs) + for(const SE_configuration& SE_config : SE_group_topology_.SEs) { supply_equipment SE_obj; bool building_charge_profile_library = false; diff --git a/source/base/supply_equipment_group.h b/source/base/supply_equipment_group.h index 84ae4e8..2588329 100644 --- a/source/base/supply_equipment_group.h +++ b/source/base/supply_equipment_group.h @@ -4,7 +4,7 @@ #include "datatypes_global.h" // SE_group_configuration, SE_group_charge_event_data, grid_power -#include "datatypes_global_SE_EV_definitions.h" +//#include "datatypes_global_SE_EV_definitions.h" #include "supply_equipment.h" // supply_equipment #include "helper.h" // LPF_kernel @@ -21,9 +21,13 @@ class supply_equipment_group std::vector SE_objs; public: - supply_equipment_group(SE_group_configuration& SE_group_topology_, factory_supply_equipment_model& SE_factory, factory_EV_charge_model* PEV_charge_factory, - factory_ac_to_dc_converter* ac_to_dc_converter_factory, pev_charge_profile_library* charge_profile_library, - get_base_load_forecast* baseLD_forecaster, manage_L2_control_strategy_parameters* manage_L2_control); + supply_equipment_group(const SE_group_configuration& SE_group_topology_, + factory_supply_equipment_model& SE_factory, + factory_EV_charge_model* PEV_charge_factory, + factory_ac_to_dc_converter* ac_to_dc_converter_factory, + pev_charge_profile_library* charge_profile_library, + get_base_load_forecast* baseLD_forecaster, + manage_L2_control_strategy_parameters* manage_L2_control); std::vector get_pointers_to_all_SE_objects(); SE_group_configuration get_SE_group_configuration(); void get_active_CEs(std::vector& return_val); diff --git a/source/base/supply_equipment_load.cpp b/source/base/supply_equipment_load.cpp index 4edf65e..925063f 100644 --- a/source/base/supply_equipment_load.cpp +++ b/source/base/supply_equipment_load.cpp @@ -1,10 +1,12 @@ #include "supply_equipment_load.h" -#include "SE_EV_factory.h" // factory_EV_charge_model, factory_ac_to_dc_converter +//#include "SE_EV_factory.h" // factory_EV_charge_model, factory_ac_to_dc_converter #include #include // sort +#include "factory_EV_charge_model.h" +#include "factory_ac_to_dc_converter.h" //############################################################################# // Charge Event Handler @@ -132,7 +134,7 @@ supply_equipment_load::supply_equipment_load() } -supply_equipment_load::supply_equipment_load(double P2_limit_kW_, double standby_acP_kW_, double standby_acQ_kVAR_, SE_configuration& SE_config_, charge_event_queuing_inputs& CE_queuing_inputs) +supply_equipment_load::supply_equipment_load(double P2_limit_kW_, double standby_acP_kW_, double standby_acQ_kVAR_, const SE_configuration& SE_config_, charge_event_queuing_inputs& CE_queuing_inputs) { this->P2_limit_kW = P2_limit_kW_; this->standby_acP_kW = standby_acP_kW_; @@ -566,7 +568,7 @@ bool supply_equipment_load::get_next(double prev_unix_time, double now_unix_time if(this->event_handler.charge_event_is_available(now_unix_time)) { charge_event_data charge_event = this->event_handler.get_next_charge_event(now_unix_time); - supply_equipment_enum SE_type = this->SE_config.supply_equipment_type; + EVSE_type SE_type = this->SE_config.supply_equipment_type; this->ev_charge_model = this->PEV_charge_factory->alloc_get_EV_charge_model(charge_event, SE_type, this->P2_limit_kW); @@ -594,8 +596,8 @@ bool supply_equipment_load::get_next(double prev_unix_time, double now_unix_time //-------------------------------- // Update Charge Profile //-------------------------------- - supply_equipment_enum SE_type = this->SE_config.supply_equipment_type; - vehicle_enum pev_type = charge_event.vehicle_type; + SE_type = this->SE_config.supply_equipment_type; + EV_type pev_type = charge_event.vehicle_type; if(this->charge_profile_library != NULL) this->cur_charge_profile = this->charge_profile_library->get_charge_profile(pev_type, SE_type); diff --git a/source/base/supply_equipment_load.h b/source/base/supply_equipment_load.h index fa925b7..9158fc6 100644 --- a/source/base/supply_equipment_load.h +++ b/source/base/supply_equipment_load.h @@ -3,7 +3,6 @@ #define inl_supply_equipment_load_H #include "datatypes_global.h" // SE_configuration, SE_charging_status, charge_event_data -#include "datatypes_global_SE_EV_definitions.h" #include "ac_to_dc_converter.h" // ac_to_dc_converter #include "vehicle_charge_model.h" // vehicle_charge_model #include "datatypes_module.h" // ac_power_metrics, SE_status, CE_Status @@ -59,7 +58,7 @@ class supply_equipment_load public: supply_equipment_load(); - supply_equipment_load(double P2_limit_kW_, double standby_acP_kW_, double standby_acQ_kVAR_, SE_configuration& SE_config_, charge_event_queuing_inputs& CE_queuing_inputs); + supply_equipment_load(double P2_limit_kW_, double standby_acP_kW_, double standby_acQ_kVAR_, const SE_configuration& SE_config_, charge_event_queuing_inputs& CE_queuing_inputs); ~supply_equipment_load(); //supply_equipment_load& operator=(const supply_equipment_load& obj); //supply_equipment_load(const supply_equipment_load& obj); diff --git a/source/base/vehicle_charge_model.h b/source/base/vehicle_charge_model.h index 89ae55d..9c21f7d 100644 --- a/source/base/vehicle_charge_model.h +++ b/source/base/vehicle_charge_model.h @@ -10,11 +10,6 @@ #include "EVSE_characteristics.h" // EV_type, EVSE_type -#include "charging_transitions_factory.h" // charging_transitions_factory -#include "puVrms_vs_P2_factory.h" // puVrms_vs_P2_factory -#include "SOC_vs_P2_factory.h" // SOC_vs_P2_factory -#include "P2_vs_battery_efficiency_factory.h" // P2_vs_battery_efficiency_factory - //--------------------------------- class vehicle_charge_model diff --git a/source/charging_models/CMakeLists.txt b/source/charging_models/CMakeLists.txt index 29ba7ba..0d3188d 100644 --- a/source/charging_models/CMakeLists.txt +++ b/source/charging_models/CMakeLists.txt @@ -1,4 +1,18 @@ +set(CHARGING_MODEL_FILES "datatypes_global.cpp" + "EV_characteristics.cpp" + "EVSE_characteristics.cpp" + "EV_EVSE_inventory.cpp") +add_library(Charging_models STATIC ${CHARGING_MODEL_FILES}) +target_compile_features(Charging_models PUBLIC cxx_std_17) +target_include_directories(Charging_models PUBLIC ${PROJECT_SOURCE_DIR}/source/base) +target_include_directories(Charging_models PUBLIC ${PROJECT_SOURCE_DIR}/source/charging_models) +target_include_directories(Charging_models PUBLIC ${PROJECT_SOURCE_DIR}/source/factory) +target_include_directories(Charging_models PUBLIC ${PROJECT_SOURCE_DIR}/source/load_inputs) + + + +#[===[ add_library(Caldera_global_lib STATIC datatypes_global.cpp ${PROJECT}/datatypes_global_SE_EV_definitions.cpp) target_include_directories(Caldera_global_lib PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) target_include_directories(Caldera_global_lib PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT}) @@ -11,4 +25,6 @@ message(Caldera_global " current source dir = ${CMAKE_CURRENT_SOURCE_DIR}") #target_compile_options(Caldera_global PUBLIC -Wa,-mbig-obj) install(TARGETS Caldera_global - DESTINATION ${INSTALL_DIR}) \ No newline at end of file + DESTINATION ${INSTALL_DIR}) + +]===] \ No newline at end of file diff --git a/source/charging_models/EV_EVSE_inventory.cpp b/source/charging_models/EV_EVSE_inventory.cpp index 128cd74..51b60a2 100644 --- a/source/charging_models/EV_EVSE_inventory.cpp +++ b/source/charging_models/EV_EVSE_inventory.cpp @@ -2,7 +2,74 @@ EV_EVSE_inventory::EV_EVSE_inventory(const EV_inventory& EV_inv, const EVSE_inventory& EVSE_inv) - : EV_inv(EV_inv), EVSE_inv(EVSE_inv) {} + : EV_inv{ EV_inv }, + EVSE_inv{ EVSE_inv }, + all_EVs{ load_all_EVs() }, + all_EVSEs{ load_all_EVSEs() }, + default_EV{ load_default_EV() }, + default_EVSE{ load_default_EVSE() }, + compatible_EV_EVSE_pair{ load_compatible_EV_EVSE_pair() } +{ +} + +const std::vector EV_EVSE_inventory::load_all_EVs() const +{ + std::vector return_val; + for (const auto& EVs : this->get_EV_inventory()) + { + return_val.push_back(EVs.first); + } + return return_val; +} + +const std::vector EV_EVSE_inventory::load_all_EVSEs() const +{ + std::vector return_val; + for (const auto& EVSEs : this->get_EVSE_inventory()) + { + return_val.push_back(EVSEs.first); + } + return return_val; +} + +const EV_type EV_EVSE_inventory::load_default_EV() const +{ + return this->get_EV_inventory().begin()->first; +} + +const EVSE_type EV_EVSE_inventory::load_default_EVSE() const +{ + return this->get_EVSE_inventory().begin()->first; +} + +const std::vector EV_EVSE_inventory::load_compatible_EV_EVSE_pair() const +{ + std::vector return_val; + + for (const auto& EVs : this->get_EV_inventory()) + { + for (const auto& EVSEs : this->get_EVSE_inventory()) + { + if (EVSEs.second.get_level() == DCFC) + { + if (EVs.second.get_DCFC_capable() == true) + { + return_val.emplace_back(EVs.first, EVSEs.first); + } + else // Non DCFC capable vehicle + { + continue; // This combination is not valid + } + } + else // L1 or L2, almost all vehicles can charge at L1 or L2 + { + return_val.emplace_back(EVs.first, EVSEs.first); + } + } + } + return return_val; +} + const EV_inventory& EV_EVSE_inventory::get_EV_inventory() const { @@ -14,6 +81,31 @@ const EVSE_inventory& EV_EVSE_inventory::get_EVSE_inventory() const return this->EVSE_inv; } +const std::vector& EV_EVSE_inventory::get_all_EVs() const +{ + return this->all_EVs; +} + +const std::vector& EV_EVSE_inventory::get_all_EVSEs() const +{ + return this->all_EVSEs; +} + +const EV_type& EV_EVSE_inventory::get_default_EV() const +{ + return this->default_EV; +} + +const EVSE_type& EV_EVSE_inventory::get_default_EVSE() const +{ + return this->default_EVSE; +} + +const std::vector& EV_EVSE_inventory::get_all_compatible_pev_SE_combinations() const +{ + return this->compatible_EV_EVSE_pair; +} + std::ostream& operator<<(std::ostream& os, const EV_EVSE_inventory& inventory) { os << inventory.get_EV_inventory(); diff --git a/source/charging_models/EV_EVSE_inventory.h b/source/charging_models/EV_EVSE_inventory.h index 91ac29b..891c636 100644 --- a/source/charging_models/EV_EVSE_inventory.h +++ b/source/charging_models/EV_EVSE_inventory.h @@ -8,21 +8,57 @@ typedef std::unordered_map EV_inventory; typedef std::unordered_map EVSE_inventory; +struct pev_SE_pair +{ + EV_type ev_type; + EVSE_type se_type; + + pev_SE_pair() {} + pev_SE_pair(const EV_type& ev_type, + const EVSE_type& se_type) + : ev_type(ev_type), + se_type(se_type) { } +}; + class EV_EVSE_inventory { private: const EV_inventory EV_inv; const EVSE_inventory EVSE_inv; + const std::vector all_EVs; + const std::vector all_EVSEs; + + const EV_type default_EV; + const EVSE_type default_EVSE; + + const std::vector compatible_EV_EVSE_pair; + + const std::vector load_all_EVs() const; + const std::vector load_all_EVSEs() const; + const EV_type load_default_EV() const; + const EVSE_type load_default_EVSE() const; + const std::vector EV_EVSE_inventory::load_compatible_EV_EVSE_pair() const; + public: EV_EVSE_inventory(const EV_inventory& EV_inv, const EVSE_inventory& EVSE_inv); const EV_inventory& get_EV_inventory() const; const EVSE_inventory& get_EVSE_inventory() const; + + const std::vector& get_all_EVs() const; + const std::vector& get_all_EVSEs() const; + + const EV_type& get_default_EV() const; + const EVSE_type& get_default_EVSE() const; + + const std::vector& get_all_compatible_pev_SE_combinations() const; }; std::ostream& operator<<(std::ostream& os, const EV_EVSE_inventory& inventory); std::ostream& operator<<(std::ostream& os, const EV_inventory& inventory); std::ostream& operator<<(std::ostream& os, const EVSE_inventory& inventory); + + #endif //EV_EVSE_INVENTORY_H diff --git a/source/charging_models/datatypes_global.cpp b/source/charging_models/datatypes_global.cpp index 90d8cf3..ca11ffc 100644 --- a/source/charging_models/datatypes_global.cpp +++ b/source/charging_models/datatypes_global.cpp @@ -233,7 +233,7 @@ std::string stop_charging_criteria::get_file_header() std::ostream& operator<<(std::ostream& out, const charge_event_data& x) { - out << x.charge_event_id << "," << x.SE_group_id << "," << x.SE_id << "," << x.vehicle_id << "," << x.EV << "," << x.arrival_unix_time << "," << x.departure_unix_time << "," << x.arrival_SOC << "," << x.departure_SOC << "," << x.stop_charge; + out << x.charge_event_id << "," << x.SE_group_id << "," << x.SE_id << "," << x.vehicle_id << "," << x.vehicle_type << "," << x.arrival_unix_time << "," << x.departure_unix_time << "," << x.arrival_SOC << "," << x.departure_SOC << "," << x.stop_charge; return out; } @@ -264,7 +264,7 @@ stop_charging_criteria::stop_charging_criteria(stop_charging_decision_metric dec } -charge_event_data::charge_event_data(int charge_event_id_, int SE_group_id_, SE_id_type SE_id_, vehicle_id_type vehicle_id_, EV_type EV, +charge_event_data::charge_event_data(int charge_event_id_, int SE_group_id_, SE_id_type SE_id_, vehicle_id_type vehicle_id_, EV_type vehicle_type, double arrival_unix_time_, double departure_unix_time_, double arrival_SOC_, double departure_SOC_, stop_charging_criteria stop_charge_, control_strategy_enums control_enums_) { @@ -272,7 +272,7 @@ charge_event_data::charge_event_data(int charge_event_id_, int SE_group_id_, SE_ this->SE_group_id = SE_group_id_; this->SE_id = SE_id_; this->vehicle_id = vehicle_id_; - this->EV = EV; + this->vehicle_type = vehicle_type; this->arrival_unix_time = arrival_unix_time_; this->departure_unix_time = departure_unix_time_; this->arrival_SOC = arrival_SOC_; diff --git a/source/charging_models/datatypes_global.h b/source/charging_models/datatypes_global.h index 6731122..3012927 100644 --- a/source/charging_models/datatypes_global.h +++ b/source/charging_models/datatypes_global.h @@ -322,7 +322,7 @@ struct charge_event_data int SE_group_id; SE_id_type SE_id; vehicle_id_type vehicle_id; - EV_type EV; + EV_type vehicle_type; double arrival_unix_time; double departure_unix_time; double arrival_SOC; @@ -332,7 +332,7 @@ struct charge_event_data control_strategy_enums control_enums; charge_event_data() {}; - charge_event_data(int charge_event_id_, int SE_group_id_, SE_id_type SE_id_, vehicle_id_type vehicle_id_, EV_type EV, + charge_event_data(int charge_event_id_, int SE_group_id_, SE_id_type SE_id_, vehicle_id_type vehicle_id_, EV_type vehicle_type, double arrival_unix_time_, double departure_unix_time_, double arrival_SOC_, double departure_SOC_, stop_charging_criteria stop_charge_, control_strategy_enums control_enums_); static std::string get_file_header(); diff --git a/source/factory/CMakeLists.txt b/source/factory/CMakeLists.txt new file mode 100644 index 0000000..7d1038d --- /dev/null +++ b/source/factory/CMakeLists.txt @@ -0,0 +1,33 @@ +set(FACTORY_FILES "factory_charging_transitions.cpp" + "factory_P2_vs_battery_efficiency.cpp" + "factory_puVrms_vs_P2.cpp" + "factory_SOC_vs_P2.cpp" + "factory_EV_charge_model.cpp" + "factory_supply_equipment_model.cpp" + "factory_ac_to_dc_converter.cpp") + +add_library(factory STATIC ${FACTORY_FILES}) +target_compile_features(factory PUBLIC cxx_std_17) +target_include_directories(factory PUBLIC ${PROJECT_SOURCE_DIR}/source/base) +target_include_directories(factory PUBLIC ${PROJECT_SOURCE_DIR}/source/charging_models) +target_include_directories(factory PUBLIC ${PROJECT_SOURCE_DIR}/source/factory) +target_include_directories(factory PUBLIC ${PROJECT_SOURCE_DIR}/source/load_inputs) + + + +#[===[ +add_library(Caldera_global_lib STATIC datatypes_global.cpp ${PROJECT}/datatypes_global_SE_EV_definitions.cpp) +target_include_directories(Caldera_global_lib PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) +target_include_directories(Caldera_global_lib PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT}) + +pybind11_add_module(Caldera_global MODULE ${PROJECT}/python_bind.cpp) +target_link_libraries(Caldera_global PRIVATE Caldera_global_lib) + +message(Caldera_global " current source dir = ${CMAKE_CURRENT_SOURCE_DIR}") + +#target_compile_options(Caldera_global PUBLIC -Wa,-mbig-obj) + +install(TARGETS Caldera_global + DESTINATION ${INSTALL_DIR}) + +]===] \ No newline at end of file diff --git a/source/factory/factory_EV_charge_model.cpp b/source/factory/factory_EV_charge_model.cpp index e917559..bcdb143 100644 --- a/source/factory/factory_EV_charge_model.cpp +++ b/source/factory/factory_EV_charge_model.cpp @@ -28,7 +28,7 @@ vehicle_charge_model* factory_EV_charge_model::alloc_get_EV_charge_model(const c const EVSE_type& EVSE, const double& SE_P2_limit_kW) const { - const EV_type& EV = event.EV; + const EV_type& EV = event.vehicle_type; double final_bat_size_kWh; if (this->model_stochastic_battery_degregation) diff --git a/source/factory/factory_P2_vs_battery_efficiency.h b/source/factory/factory_P2_vs_battery_efficiency.h index 452073a..eb74b2a 100644 --- a/source/factory/factory_P2_vs_battery_efficiency.h +++ b/source/factory/factory_P2_vs_battery_efficiency.h @@ -4,7 +4,7 @@ #include #include -#include "SOC_vs_P2_factory.h" +#include "factory_SOC_vs_P2.h" #include "EV_characteristics.h" #include "EV_EVSE_inventory.h" diff --git a/source/factory/factory_ac_to_dc_converter.cpp b/source/factory/factory_ac_to_dc_converter.cpp new file mode 100644 index 0000000..dc3d71f --- /dev/null +++ b/source/factory/factory_ac_to_dc_converter.cpp @@ -0,0 +1,132 @@ +#include "factory_ac_to_dc_converter.h" + +//############################################################################# +// AC to DC Converter Factory +//############################################################################# + +ac_to_dc_converter* factory_ac_to_dc_converter::alloc_get_ac_to_dc_converter(ac_to_dc_converter_enum converter_type, + EVSE_type EVSE, + EV_type EV, + charge_event_P3kW_limits& P3kW_limits) +{ + std::vector inv_eff_from_P2_vec; + std::vector inv_pf_from_P3_vec; + + //============================================================= + //============================================================= + + if (this->inventory.get_EVSE_inventory().at(EVSE).get_level() == L1) + { + // {x_LB, x_UB, degree, a, b, c, d, e} degree = {first, second, third, fourth} + inv_eff_from_P2_vec.clear(); + inv_eff_from_P2_vec.push_back({ -20, 0, first, (1.1 - 1) / (-20 - 0), 1, 0, 0, 0 }); + inv_eff_from_P2_vec.push_back({ 0, 1.4, second, -0.09399, 0.26151, 0.71348, 0, 0 }); + inv_eff_from_P2_vec.push_back({ 1.4, 20, first, 0, 0.895374, 0, 0, 0 }); + + inv_pf_from_P3_vec.clear(); + inv_pf_from_P3_vec.push_back({ -20, 0, first, (-1 + 0.9) / (-20 - 0), -0.90, 0, 0, 0 }); + inv_pf_from_P3_vec.push_back({ 0, 1.3, first, -0.0138, -0.9793, 0, 0, 0 }); + inv_pf_from_P3_vec.push_back({ 1.3, 20, first, 0, -0.99724, 0, 0, 0 }); + } + else if (this->inventory.get_EVSE_inventory().at(EVSE).get_level() == L2) + { + // {x_LB, x_UB, degree, a, b, c, d, e} degree = {first, second, third, fourth} + inv_eff_from_P2_vec.clear(); + inv_eff_from_P2_vec.push_back({ -20, 0, first, (1.1 - 1) / (-20 - 0), 1, 0, 0, 0 }); + inv_eff_from_P2_vec.push_back({ 0, 4, second, -0.005, 0.045, 0.82, 0, 0 }); + inv_eff_from_P2_vec.push_back({ 4, 20, first, 0, 0.92, 0, 0, 0 }); + + inv_pf_from_P3_vec.clear(); + inv_pf_from_P3_vec.push_back({ -20, 0, first, (-1 + 0.9) / (-20 - 0), -0.90, 0, 0, 0 }); + inv_pf_from_P3_vec.push_back({ 0, 6, third, -0.00038737, 0.00591216, -0.03029164, -0.9462841, 0 }); + inv_pf_from_P3_vec.push_back({ 6, 20, first, 0, -0.9988681, 0, 0, 0 }); + } + else if (this->inventory.get_EVSE_inventory().at(EVSE).get_level() == DCFC) // Copied data from L2 Charger + { + if(this->inventory.get_EVSE_inventory().at(EVSE).get_power_limit_kW() <= 20) + { + // {x_LB, x_UB, degree, a, b, c, d, e} degree = {first, second, third, fourth} + inv_eff_from_P2_vec.clear(); + inv_eff_from_P2_vec.push_back({ -30, 0, first, (1.1 - 1) / (-30 - 0), 1, 0, 0, 0 }); + inv_eff_from_P2_vec.push_back({ 0, 4, second, -0.005, 0.045, 0.82, 0, 0 }); + inv_eff_from_P2_vec.push_back({ 4, 30, first, 0, 0.92, 0, 0, 0 }); + + inv_pf_from_P3_vec.clear(); + inv_pf_from_P3_vec.push_back({ -30, 0, first, (-1 + 0.9) / (-30 - 0), -0.90, 0, 0, 0 }); + inv_pf_from_P3_vec.push_back({ 0, 6, third, -0.00038737, 0.00591216, -0.03029164, -0.9462841, 0 }); + inv_pf_from_P3_vec.push_back({ 6, 30, first, 0, -0.9988681, 0, 0, 0 }); + } + else if (this->inventory.get_EVSE_inventory().at(EVSE).get_power_limit_kW() > 20 && this->inventory.get_EVSE_inventory().at(EVSE).get_power_limit_kW() <= 100) + { + // {x_LB, x_UB, degree, a, b, c, d, e} degree = {first, second, third, fourth} + inv_eff_from_P2_vec.clear(); + inv_eff_from_P2_vec.push_back({ -1000, 0, first, (1.1 - 1) / 1000, 1, 0, 0, 0 }); + inv_eff_from_P2_vec.push_back({ 0, 10, second, -0.0023331, 0.04205, 0.7284, 0, 0 }); + inv_eff_from_P2_vec.push_back({ 10, 20, second, -0.00035233, 0.01454, 0.7755, 0, 0 }); + inv_eff_from_P2_vec.push_back({ 20, 30, second, -0.00015968, 0.01006, 0.7698, 0, 0 }); + inv_eff_from_P2_vec.push_back({ 30, 40, second, -0.000083167, 0.007314, 0.7697, 0, 0 }); + inv_eff_from_P2_vec.push_back({ 40, 1000, first, 0, 0.9292, 0, 0, 0 }); + + // {x_LB, x_UB, degree, a, b, c, d, e} degree = {first, second, third, fourth} + inv_pf_from_P3_vec.clear(); + inv_pf_from_P3_vec.push_back({ -1000, 0, first, (0.9 - 1) / 1000, 0.90, 0, 0, 0 }); + inv_pf_from_P3_vec.push_back({ 0, 10, second, 0.0037161, -0.1109, -0.06708, 0, 0 }); + inv_pf_from_P3_vec.push_back({ 10, 18.6, first, -0.01474, -0.6568, 0, 0, 0 }); + inv_pf_from_P3_vec.push_back({ 18.6, 28, first, -0.003804, -0.8601, 0, 0, 0 }); + inv_pf_from_P3_vec.push_back({ 28, 42, first, -0.001603, -0.9218, 0, 0, 0 }); + inv_pf_from_P3_vec.push_back({ 42, 1000, first, 0, -0.99, 0, 0, 0 }); + } + else if (this->inventory.get_EVSE_inventory().at(EVSE).get_power_limit_kW() > 100) + { + // {x_LB, x_UB, degree, a, b, c, d, e} degree = {first, second, third, fourth} + inv_eff_from_P2_vec.clear(); + inv_eff_from_P2_vec.push_back({ -1000, 0, first, (1.1 - 1) / 1000, 1, 0, 0, 0 }); + inv_eff_from_P2_vec.push_back({ 0, 25, second, -0.0007134, 0.03554, 0.4724, 0, 0 }); + inv_eff_from_P2_vec.push_back({ 25, 130, first, 0.0003331, 0.9067, 0, 0, 0 }); + inv_eff_from_P2_vec.push_back({ 130, 1000, first, 0, 0.95, 0, 0, 0 }); + + // {x_LB, x_UB, degree, a, b, c, d, e} degree = {first, second, third, fourth} + inv_pf_from_P3_vec.clear(); + inv_pf_from_P3_vec.push_back({ -1000, 0, first, (0.9 - 1) / 1000, 0.90, 0, 0, 0 }); + inv_pf_from_P3_vec.push_back({ 0, 60, third, -0.0000053284, 0.00071628, -0.03361, -0.3506, 0 }); + inv_pf_from_P3_vec.push_back({ 60, 80, first, -0.001034, -0.8775, 0, 0, 0 }); + inv_pf_from_P3_vec.push_back({ 80, 133, second, 0.0000027985, -0.0008177, -0.9127, 0, 0 }); + inv_pf_from_P3_vec.push_back({ 133, 1000, first, 0, -0.972, 0, 0, 0 }); + } + else + { + ASSERT(false, "error"); + } + } + else + { + ASSERT(false, "error"); + } + + //------------------------------------ + + double S3kVA_from_max_nominal_P3kW_multiplier = 1; + + double x_tolerance = 0.0001; + bool take_abs_of_x = false; + bool if_x_is_out_of_bounds_print_warning_message = false; + + poly_function_of_x inv_eff_from_P2(x_tolerance, take_abs_of_x, if_x_is_out_of_bounds_print_warning_message, inv_eff_from_P2_vec, "inv_eff_from_P2"); + poly_function_of_x inv_pf_from_P3(x_tolerance, take_abs_of_x, if_x_is_out_of_bounds_print_warning_message, inv_pf_from_P3_vec, "inv_pf_from_P3"); + + ac_to_dc_converter* return_val = NULL; + + if (converter_type == pf) + return_val = new ac_to_dc_converter_pf(P3kW_limits, S3kVA_from_max_nominal_P3kW_multiplier, inv_eff_from_P2, inv_pf_from_P3); + + else if (converter_type == Q_setpoint) + return_val = new ac_to_dc_converter_Q_setpoint(P3kW_limits, S3kVA_from_max_nominal_P3kW_multiplier, inv_eff_from_P2); + + else + { + std::cout << "ERROR: In factory_ac_to_dc_converter undefigned converter_type." << std::endl; + return_val = new ac_to_dc_converter_pf(P3kW_limits, S3kVA_from_max_nominal_P3kW_multiplier, inv_eff_from_P2, inv_pf_from_P3); + } + + return return_val; +} diff --git a/source/factory/factory_ac_to_dc_converter.h b/source/factory/factory_ac_to_dc_converter.h new file mode 100644 index 0000000..61e3a01 --- /dev/null +++ b/source/factory/factory_ac_to_dc_converter.h @@ -0,0 +1,29 @@ +#ifndef FACTORY_AC_TO_DC_CONVERTER_H +#define FACTORY_AC_TO_DC_CONVERTER_H + +#include "ac_to_dc_converter.h" +#include "EV_characteristics.h" +#include "EVSE_characteristics.h" +#include "EV_EVSE_inventory.h" + +//############################################################################# +// AC to DC Converter Factory +//############################################################################# + +class factory_ac_to_dc_converter +{ +private: + const EV_EVSE_inventory& inventory; + +public: + factory_ac_to_dc_converter(const EV_EVSE_inventory& inventory) + : inventory(inventory) + { + } + ac_to_dc_converter* alloc_get_ac_to_dc_converter(ac_to_dc_converter_enum converter_type, + EVSE_type EVSE, + EV_type EV, + charge_event_P3kW_limits& CE_P3kW_limits); +}; + +#endif // FACTORY_AC_TO_DC_CONVERTER_H \ No newline at end of file diff --git a/source/factory/factory_supply_equipment_model.cpp b/source/factory/factory_supply_equipment_model.cpp new file mode 100644 index 0000000..9614123 --- /dev/null +++ b/source/factory/factory_supply_equipment_model.cpp @@ -0,0 +1,34 @@ +#include "factory_supply_equipment_model.h" + +//############################################################################# +// Supply Equipment Charge Model Factory +//############################################################################# + +factory_supply_equipment_model::factory_supply_equipment_model(const EV_EVSE_inventory& inventory, + const charge_event_queuing_inputs& CE_queuing_inputs_) + : inventory(inventory), + CE_queuing_inputs(CE_queuing_inputs_) +{ +} + + +void factory_supply_equipment_model::get_supply_equipment_model(bool building_charge_profile_library, + const SE_configuration& SE_config, + get_base_load_forecast* baseLD_forecaster, + manage_L2_control_strategy_parameters* manage_L2_control, + supply_equipment& return_val) +{ + EVSE_type EVSE = SE_config.supply_equipment_type; + + double P2_limit_kW = this->inventory.get_EVSE_inventory().at(EVSE).get_power_limit_kW(); + double standby_acP_kW = this->inventory.get_EVSE_inventory().at(EVSE).get_standby_real_power_kW(); + double standby_acQ_kVAR = this->inventory.get_EVSE_inventory().at(EVSE).get_standby_reactive_power_kW(); + + //============================ + + supply_equipment_load load(P2_limit_kW, standby_acP_kW, standby_acQ_kVAR, SE_config, this->CE_queuing_inputs); + supply_equipment_control control(building_charge_profile_library, SE_config, baseLD_forecaster, manage_L2_control); + supply_equipment SE(SE_config, control, load); + + return_val = SE; +} diff --git a/source/factory/factory_supply_equipment_model.h b/source/factory/factory_supply_equipment_model.h new file mode 100644 index 0000000..4984c72 --- /dev/null +++ b/source/factory/factory_supply_equipment_model.h @@ -0,0 +1,34 @@ +#ifndef FACTORY_SUPPLY_EQUIPMENT_MODEL_H +#define FACTORY_SUPPLY_EQUIPMENT_MODEL_H + +#include "datatypes_global.h" +#include "helper.h" +#include "supply_equipment_load.h" +#include "supply_equipment_control.h" +#include "supply_equipment.h" + +#include "EV_EVSE_inventory.h" + +//############################################################################# +// Supply Equipment Charge Model Factory +//############################################################################# + +class factory_supply_equipment_model +{ +private: + const EV_EVSE_inventory& inventory; + + charge_event_queuing_inputs CE_queuing_inputs; + +public: + factory_supply_equipment_model(const EV_EVSE_inventory& inventory) : inventory{ inventory } {} + factory_supply_equipment_model(const EV_EVSE_inventory& inventory, const charge_event_queuing_inputs& CE_queuing_inputs_); + + void get_supply_equipment_model(bool building_charge_profile_library, + const SE_configuration& SE_config, + get_base_load_forecast* baseLD_forecaster, + manage_L2_control_strategy_parameters* manage_L2_control, + supply_equipment& return_val); +}; + +#endif // FACTORY_SUPPLY_EQUIPMENT_MODEL_H \ No newline at end of file diff --git a/source/load_inputs/CMakeLists.txt b/source/load_inputs/CMakeLists.txt new file mode 100644 index 0000000..8002be0 --- /dev/null +++ b/source/load_inputs/CMakeLists.txt @@ -0,0 +1,30 @@ +set(LOAD_INPUTS_FILES "load_EV_EVSE_inventory.cpp" + "load_EV_inventory.cpp" + "load_EVSE_inventory.cpp" + "load_helper.cpp") + +add_library(Load_inputs STATIC ${LOAD_INPUTS_FILES}) +target_compile_features(Load_inputs PUBLIC cxx_std_17) +target_include_directories(Load_inputs PUBLIC ${PROJECT_SOURCE_DIR}/source/base) +target_include_directories(Load_inputs PUBLIC ${PROJECT_SOURCE_DIR}/source/charging_models) +target_include_directories(Load_inputs PUBLIC ${PROJECT_SOURCE_DIR}/source/factory) +target_include_directories(Load_inputs PUBLIC ${PROJECT_SOURCE_DIR}/source/load_inputs) + + + +#[===[ +add_library(Caldera_global_lib STATIC datatypes_global.cpp ${PROJECT}/datatypes_global_SE_EV_definitions.cpp) +target_include_directories(Caldera_global_lib PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) +target_include_directories(Caldera_global_lib PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT}) + +pybind11_add_module(Caldera_global MODULE ${PROJECT}/python_bind.cpp) +target_link_libraries(Caldera_global PRIVATE Caldera_global_lib) + +message(Caldera_global " current source dir = ${CMAKE_CURRENT_SOURCE_DIR}") + +#target_compile_options(Caldera_global PUBLIC -Wa,-mbig-obj) + +install(TARGETS Caldera_global + DESTINATION ${INSTALL_DIR}) + +]===] \ No newline at end of file diff --git a/source/main.cpp b/source/main.cpp index 824be8d..9fb22d6 100644 --- a/source/main.cpp +++ b/source/main.cpp @@ -13,6 +13,7 @@ int main() bool model_stochastic_battery_degregation = false; EV_charge_model_factory charge_model_factory{ inventory, custom_EV_ramping, custom_EV_EVSE_ramping, model_stochastic_battery_degregation }; + charge_model_factory.write_charge_profile("./"); return 0; From d9530420148e32661fe744454654128793b96a63 Mon Sep 17 00:00:00 2001 From: Manoj Kumar Cebol Sundarrajan Date: Wed, 17 May 2023 14:17:42 -0600 Subject: [PATCH 10/52] bug fixes --- source/CMakeLists.txt | 11 +++ source/base/ICM_interface.cpp | 22 ++--- source/base/ICM_interface.h | 70 +------------- source/base/ICM_python_bind.cpp | 8 +- source/base/battery_calculate_limits.cpp | 2 +- source/base/inputs.h | 56 +++++++++++ source/charging_models/CMakeLists.txt | 21 +---- source/factory/CMakeLists.txt | 19 ---- source/factory/factory_SOC_vs_P2.cpp | 10 +- source/load_inputs/CMakeLists.txt | 21 +---- source/load_inputs/main.cpp | 13 --- source/main.cpp | 114 ++++++++++++++++++++++- 12 files changed, 197 insertions(+), 170 deletions(-) delete mode 100644 source/load_inputs/main.cpp diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt index 88181ec..d139e1e 100644 --- a/source/CMakeLists.txt +++ b/source/CMakeLists.txt @@ -4,6 +4,17 @@ add_subdirectory(factory) add_subdirectory(load_inputs) +add_executable(tests main.cpp ) +target_link_libraries(tests Charging_models Load_inputs factory Base) +target_compile_features(tests PUBLIC cxx_std_17) +target_include_directories(tests PUBLIC ${PROJECT_SOURCE_DIR}/source/base) +target_include_directories(tests PUBLIC ${PROJECT_SOURCE_DIR}/source/charging_models) +target_include_directories(tests PUBLIC ${PROJECT_SOURCE_DIR}/source/factory) +target_include_directories(tests PUBLIC ${PROJECT_SOURCE_DIR}/source/load_inputs) + +install(TARGETS tests + DESTINATION ${PROJECT_SOURCE_DIR}/source) + #[===[ cmake_minimum_required(VERSION 3.5) diff --git a/source/base/ICM_interface.cpp b/source/base/ICM_interface.cpp index 2addf92..b6edea4 100644 --- a/source/base/ICM_interface.cpp +++ b/source/base/ICM_interface.cpp @@ -26,6 +26,10 @@ interface_to_SE_groups::interface_to_SE_groups(const interface_to_SE_groups_inpu this->ac_to_dc_converter_factory = new factory_ac_to_dc_converter(this->inventory); + this->baseLD_forecaster = get_base_load_forecast{ inputs.data_start_unix_time, inputs.data_timestep_sec, inputs.actual_load_akW, inputs.forecast_load_akW, inputs.adjustment_interval_hrs }; + + this->manage_L2_control = manage_L2_control_strategy_parameters{ inputs.L2_parameters }; + //========================================== // Initialize infrastructure //========================================== @@ -73,23 +77,9 @@ interface_to_SE_groups::interface_to_SE_groups(const interface_to_SE_groups_inpu } } - //========================================== - // Initialize baseLD_forecaster - //========================================== - - get_base_load_forecast X{ inputs.data_start_unix_time, inputs.data_timestep_sec, inputs.actual_load_akW, inputs.forecast_load_akW, inputs.adjustment_interval_hrs }; - this->baseLD_forecaster = X; - - //========================================== - // Initialize L2 parameters - //========================================== - - manage_L2_control_strategy_parameters Z{ inputs.L2_parameters }; - this->manage_L2_control = Z; - - //========================================== + //========================================================================= // set_ensure_pev_charge_needs_met_for_ext_control_strategy - //========================================== + //========================================================================= for (supply_equipment* SE_ptr : this->SE_ptr_vector) SE_ptr->set_ensure_pev_charge_needs_met_for_ext_control_strategy(inputs.ensure_pev_charge_needs_met); diff --git a/source/base/ICM_interface.h b/source/base/ICM_interface.h index fdbf729..f22243a 100644 --- a/source/base/ICM_interface.h +++ b/source/base/ICM_interface.h @@ -3,12 +3,12 @@ #define inl_ICM_interface_H #include "datatypes_global.h" // grid_node_id_type, SE_id_type, station_configuration, station_charge_event_data, station_status -//#include "datatypes_global_SE_EV_definitions.h" // get_supply_equipment_enum, get_vehicle_enum, supply_equipment_is_L1, supply_equipment_is_L2, pev_is_compatible_with_supply_equipment -#include "supply_equipment_group.h" // supply_equipment_group +#include "supply_equipment_group.h" // supply_equipment_group #include "supply_equipment.h" // supply_equipment #include "supply_equipment_control.h" // manage_L2_control_strategy_parameters #include "charge_profile_library.h" // pev_charge_profile_library #include "helper.h" // get_base_load_forecast +#include "inputs.h" #include #include @@ -19,70 +19,10 @@ #include "factory_ac_to_dc_converter.h" #include "factory_supply_equipment_model.h" -//#include -//namespace py = pybind11; - - -struct interface_to_SE_groups_inputs -{ - const EV_EVSE_inventory& inventory; - - // factory_inputs - bool create_charge_profile_library; - EV_ramping_map ramping_by_pevType_only; - std::vector ramping_by_pevType_seType; - - // infrastructure_inputs - charge_event_queuing_inputs CE_queuing_inputs; - std::vector infrastructure_topology; - - // baseLD_forecaster_inputs - double data_start_unix_time; - int data_timestep_sec; - std::vector& actual_load_akW; - std::vector& forecast_load_akW; - double adjustment_interval_hrs; - - // control_strategy_inputs - L2_control_strategy_parameters L2_parameters; - bool ensure_pev_charge_needs_met; - - interface_to_SE_groups_inputs(const EV_EVSE_inventory& inventory, - bool create_charge_profile_library, - EV_ramping_map ramping_by_pevType_only, - std::vector ramping_by_pevType_seType, - charge_event_queuing_inputs CE_queuing_inputs, - std::vector infrastructure_topology, - double data_start_unix_time, - int data_timestep_sec, - std::vector& actual_load_akW, - std::vector& forecast_load_akW, - double adjustment_interval_hrs, - L2_control_strategy_parameters L2_parameters, - bool ensure_pev_charge_needs_met) - : inventory{ inventory }, - create_charge_profile_library{ create_charge_profile_library }, - ramping_by_pevType_only{ ramping_by_pevType_only }, - ramping_by_pevType_seType{ ramping_by_pevType_seType }, - CE_queuing_inputs{ CE_queuing_inputs }, - infrastructure_topology{ infrastructure_topology }, - data_start_unix_time{ data_start_unix_time }, - data_timestep_sec{ data_timestep_sec }, - actual_load_akW{ actual_load_akW }, - forecast_load_akW{ forecast_load_akW }, - adjustment_interval_hrs{ adjustment_interval_hrs }, - L2_parameters{ L2_parameters }, - ensure_pev_charge_needs_met{ ensure_pev_charge_needs_met } - { - } -}; - class interface_to_SE_groups { private: - // unordered_maps may not be used here if they are iterated through. To maintain repeatable - // stochastic behavior. const EV_EVSE_inventory& inventory; @@ -105,12 +45,6 @@ class interface_to_SE_groups ~interface_to_SE_groups(); pev_charge_profile_library load_charge_profile_library(const interface_to_SE_groups_inputs& inputs); - - //void initialize(bool create_charge_profile_library, std::map ramping_by_pevType_only, std::vector ramping_by_pevType_seType); - //void initialize_infrastructure(charge_event_queuing_inputs CE_queuing_inputs, std::vector infrastructure_topology); - //void initialize_baseLD_forecaster(double data_start_unix_time, int data_timestep_sec, std::vector& actual_load_akW, std::vector& forecast_load_akW, double adjustment_interval_hrs); - //void initialize_L2_control_strategy_parameters(L2_control_strategy_parameters L2_parameters); - void set_ensure_pev_charge_needs_met_for_ext_control_strategy(bool ensure_pev_charge_needs_met); void stop_active_charge_events(std::vector SE_ids); void add_charge_events(std::vector charge_events); diff --git a/source/base/ICM_python_bind.cpp b/source/base/ICM_python_bind.cpp index 573deeb..8ebc841 100644 --- a/source/base/ICM_python_bind.cpp +++ b/source/base/ICM_python_bind.cpp @@ -21,13 +21,13 @@ PYBIND11_MODULE(Caldera_ICM, m) py::class_(m, "interface_to_SE_groups") .def(py::init<>()) .def("initialize", &interface_to_SE_groups::initialize) - .def("initialize_infrastructure", &interface_to_SE_groups::initialize_infrastructure) - .def("initialize_baseLD_forecaster", &interface_to_SE_groups::initialize_baseLD_forecaster) - .def("initialize_L2_control_strategy_parameters", &interface_to_SE_groups::initialize_L2_control_strategy_parameters) + //.def("initialize_infrastructure", &interface_to_SE_groups::initialize_infrastructure) + //.def("initialize_baseLD_forecaster", &interface_to_SE_groups::initialize_baseLD_forecaster) + //.def("initialize_L2_control_strategy_parameters", &interface_to_SE_groups::initialize_L2_control_strategy_parameters) .def("add_charge_events", &interface_to_SE_groups::add_charge_events) .def("add_charge_events_by_SE_group", &interface_to_SE_groups::add_charge_events_by_SE_group) .def("stop_active_charge_events", &interface_to_SE_groups::stop_active_charge_events) - .def("set_ensure_pev_charge_needs_met_for_ext_control_strategy", &interface_to_SE_groups::set_ensure_pev_charge_needs_met_for_ext_control_strategy) + //.def("set_ensure_pev_charge_needs_met_for_ext_control_strategy", &interface_to_SE_groups::set_ensure_pev_charge_needs_met_for_ext_control_strategy) //.def("get_SE_charge_profile_forecast_akW", &interface_to_SE_groups::get_SE_charge_profile_forecast_akW) //.def("get_SE_group_charge_profile_forecast_akW", &interface_to_SE_groups::get_SE_group_charge_profile_forecast_akW) .def("get_charging_power", &interface_to_SE_groups::get_charging_power) diff --git a/source/base/battery_calculate_limits.cpp b/source/base/battery_calculate_limits.cpp index bb29574..6aea454 100644 --- a/source/base/battery_calculate_limits.cpp +++ b/source/base/battery_calculate_limits.cpp @@ -599,7 +599,7 @@ calculate_E1_energy_limit::calculate_E1_energy_limit(const battery_charge_mode& if (x.x_UB > max_soc) max_soc = x.x_UB; } - ASSERT(min_soc < 0 || max_soc > 100, "PROBLEM: The following rule (for the P2_vs_soc_segments datatype) has been broken: min_soc < 0 and 100 < max_soc."); + ASSERT(min_soc >= 0 || max_soc <= 100, "PROBLEM: The following rule (for the P2_vs_soc_segments datatype) has been broken: min_soc < 0 and 100 < max_soc."); //--------------------------------------------- diff --git a/source/base/inputs.h b/source/base/inputs.h index 30da571..c577a61 100644 --- a/source/base/inputs.h +++ b/source/base/inputs.h @@ -40,4 +40,60 @@ struct vehicle_charge_model_inputs } }; + + +struct interface_to_SE_groups_inputs +{ + const EV_EVSE_inventory& inventory; + + // factory_inputs + bool create_charge_profile_library; + EV_ramping_map ramping_by_pevType_only; + std::vector ramping_by_pevType_seType; + + // infrastructure_inputs + charge_event_queuing_inputs CE_queuing_inputs; + std::vector infrastructure_topology; + + // baseLD_forecaster_inputs + double data_start_unix_time; + int data_timestep_sec; + std::vector& actual_load_akW; + std::vector& forecast_load_akW; + double adjustment_interval_hrs; + + // control_strategy_inputs + L2_control_strategy_parameters L2_parameters; + bool ensure_pev_charge_needs_met; + + interface_to_SE_groups_inputs(const EV_EVSE_inventory& inventory, + bool create_charge_profile_library, + EV_ramping_map ramping_by_pevType_only, + std::vector ramping_by_pevType_seType, + charge_event_queuing_inputs CE_queuing_inputs, + std::vector infrastructure_topology, + double data_start_unix_time, + int data_timestep_sec, + std::vector& actual_load_akW, + std::vector& forecast_load_akW, + double adjustment_interval_hrs, + L2_control_strategy_parameters L2_parameters, + bool ensure_pev_charge_needs_met) + : inventory{ inventory }, + create_charge_profile_library{ create_charge_profile_library }, + ramping_by_pevType_only{ ramping_by_pevType_only }, + ramping_by_pevType_seType{ ramping_by_pevType_seType }, + CE_queuing_inputs{ CE_queuing_inputs }, + infrastructure_topology{ infrastructure_topology }, + data_start_unix_time{ data_start_unix_time }, + data_timestep_sec{ data_timestep_sec }, + actual_load_akW{ actual_load_akW }, + forecast_load_akW{ forecast_load_akW }, + adjustment_interval_hrs{ adjustment_interval_hrs }, + L2_parameters{ L2_parameters }, + ensure_pev_charge_needs_met{ ensure_pev_charge_needs_met } + { + } +}; + #endif \ No newline at end of file diff --git a/source/charging_models/CMakeLists.txt b/source/charging_models/CMakeLists.txt index 0d3188d..e444752 100644 --- a/source/charging_models/CMakeLists.txt +++ b/source/charging_models/CMakeLists.txt @@ -8,23 +8,4 @@ target_compile_features(Charging_models PUBLIC cxx_std_17) target_include_directories(Charging_models PUBLIC ${PROJECT_SOURCE_DIR}/source/base) target_include_directories(Charging_models PUBLIC ${PROJECT_SOURCE_DIR}/source/charging_models) target_include_directories(Charging_models PUBLIC ${PROJECT_SOURCE_DIR}/source/factory) -target_include_directories(Charging_models PUBLIC ${PROJECT_SOURCE_DIR}/source/load_inputs) - - - -#[===[ -add_library(Caldera_global_lib STATIC datatypes_global.cpp ${PROJECT}/datatypes_global_SE_EV_definitions.cpp) -target_include_directories(Caldera_global_lib PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) -target_include_directories(Caldera_global_lib PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT}) - -pybind11_add_module(Caldera_global MODULE ${PROJECT}/python_bind.cpp) -target_link_libraries(Caldera_global PRIVATE Caldera_global_lib) - -message(Caldera_global " current source dir = ${CMAKE_CURRENT_SOURCE_DIR}") - -#target_compile_options(Caldera_global PUBLIC -Wa,-mbig-obj) - -install(TARGETS Caldera_global - DESTINATION ${INSTALL_DIR}) - -]===] \ No newline at end of file +target_include_directories(Charging_models PUBLIC ${PROJECT_SOURCE_DIR}/source/load_inputs) \ No newline at end of file diff --git a/source/factory/CMakeLists.txt b/source/factory/CMakeLists.txt index 7d1038d..05d953e 100644 --- a/source/factory/CMakeLists.txt +++ b/source/factory/CMakeLists.txt @@ -12,22 +12,3 @@ target_include_directories(factory PUBLIC ${PROJECT_SOURCE_DIR}/source/base) target_include_directories(factory PUBLIC ${PROJECT_SOURCE_DIR}/source/charging_models) target_include_directories(factory PUBLIC ${PROJECT_SOURCE_DIR}/source/factory) target_include_directories(factory PUBLIC ${PROJECT_SOURCE_DIR}/source/load_inputs) - - - -#[===[ -add_library(Caldera_global_lib STATIC datatypes_global.cpp ${PROJECT}/datatypes_global_SE_EV_definitions.cpp) -target_include_directories(Caldera_global_lib PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) -target_include_directories(Caldera_global_lib PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT}) - -pybind11_add_module(Caldera_global MODULE ${PROJECT}/python_bind.cpp) -target_link_libraries(Caldera_global PRIVATE Caldera_global_lib) - -message(Caldera_global " current source dir = ${CMAKE_CURRENT_SOURCE_DIR}") - -#target_compile_options(Caldera_global PUBLIC -Wa,-mbig-obj) - -install(TARGETS Caldera_global - DESTINATION ${INSTALL_DIR}) - -]===] \ No newline at end of file diff --git a/source/factory/factory_SOC_vs_P2.cpp b/source/factory/factory_SOC_vs_P2.cpp index acc28d8..a5022be 100644 --- a/source/factory/factory_SOC_vs_P2.cpp +++ b/source/factory/factory_SOC_vs_P2.cpp @@ -69,7 +69,7 @@ const SOC_vs_P2 create_dcPkW_from_soc::get_L1_or_L2_charge_profile(const EV_type ASSERT(curve_1c_ptr != this->curves.end(), "Error: 1c curve doesnot exist in charging profiles" << std::endl); ASSERT(curve_1c_ptr->second.size() >= 2, "Error: 1c curve should have atleast 2 points. currently there are " << curve_1c_ptr->second.size() << " points" << std::endl); - auto elem_ptr = curve_1c_ptr->second.begin(); + auto elem_ptr = curve_1c_ptr->second.rbegin(); // iterated from back double soc_A = elem_ptr->first; double P_A = elem_ptr->second.first * battery_size_kWh; @@ -1270,9 +1270,9 @@ void factory_SOC_vs_P2::write_charge_profile(const std::string& output_path) con if (soc > 100) break; } - all_dcfc_profiles.push_back(P2_vals); + all_L1_L2_profiles.push_back(P2_vals); } - return all_dcfc_profiles; + return all_L1_L2_profiles; }(); header += "\n"; @@ -1283,9 +1283,9 @@ void factory_SOC_vs_P2::write_charge_profile(const std::string& output_path) con { file_handle << std::to_string(soc_vals[i]) + ", "; - for (int j = 0; j < all_dcfc_profiles.size(); j++) + for (int j = 0; j < all_L1_L2_profiles.size(); j++) { - file_handle << std::to_string(all_dcfc_profiles[j][i]) + ", "; + file_handle << std::to_string(all_L1_L2_profiles[j][i]) + ", "; } file_handle << "\n "; } diff --git a/source/load_inputs/CMakeLists.txt b/source/load_inputs/CMakeLists.txt index 8002be0..f643694 100644 --- a/source/load_inputs/CMakeLists.txt +++ b/source/load_inputs/CMakeLists.txt @@ -8,23 +8,4 @@ target_compile_features(Load_inputs PUBLIC cxx_std_17) target_include_directories(Load_inputs PUBLIC ${PROJECT_SOURCE_DIR}/source/base) target_include_directories(Load_inputs PUBLIC ${PROJECT_SOURCE_DIR}/source/charging_models) target_include_directories(Load_inputs PUBLIC ${PROJECT_SOURCE_DIR}/source/factory) -target_include_directories(Load_inputs PUBLIC ${PROJECT_SOURCE_DIR}/source/load_inputs) - - - -#[===[ -add_library(Caldera_global_lib STATIC datatypes_global.cpp ${PROJECT}/datatypes_global_SE_EV_definitions.cpp) -target_include_directories(Caldera_global_lib PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) -target_include_directories(Caldera_global_lib PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT}) - -pybind11_add_module(Caldera_global MODULE ${PROJECT}/python_bind.cpp) -target_link_libraries(Caldera_global PRIVATE Caldera_global_lib) - -message(Caldera_global " current source dir = ${CMAKE_CURRENT_SOURCE_DIR}") - -#target_compile_options(Caldera_global PUBLIC -Wa,-mbig-obj) - -install(TARGETS Caldera_global - DESTINATION ${INSTALL_DIR}) - -]===] \ No newline at end of file +target_include_directories(Load_inputs PUBLIC ${PROJECT_SOURCE_DIR}/source/load_inputs) \ No newline at end of file diff --git a/source/load_inputs/main.cpp b/source/load_inputs/main.cpp deleted file mode 100644 index 884def1..0000000 --- a/source/load_inputs/main.cpp +++ /dev/null @@ -1,13 +0,0 @@ -#include "load_EV_inventory.h" -#include "load_EVSE_inventory.h" -#include "load_EV_EVSE_inventory.h" - - -int main() -{ - load_EV_EVSE_inventory loader("C:\\Users\\CEBOM\\Documents\\repos\\Caldera_ICM\\inputs"); - EV_EVSE_inventory inv = loader.get_EV_EVSE_inventory(); - std::cout << inv << std::endl; - - return 0; -} \ No newline at end of file diff --git a/source/main.cpp b/source/main.cpp index 9fb22d6..6354b02 100644 --- a/source/main.cpp +++ b/source/main.cpp @@ -1,20 +1,126 @@ #include -#include "EV_charge_model_factory.h" + #include "load_EV_EVSE_inventory.h" +#include "factory_charging_transitions.h" +#include "factory_EV_charge_model.h" +#include "factory_SOC_vs_P2.h" + +#include + int main() { - load_EV_EVSE_inventory load_inventory{ "../inputs" }; + load_EV_EVSE_inventory load_inventory{ "C:\\Users\\CEBOM\\Documents\\repos\\Caldera_ICM\\inputs" }; const EV_EVSE_inventory& inventory = load_inventory.get_EV_EVSE_inventory(); + //factory_SOC_vs_P2 soc_vs_p2(inventory); + + //soc_vs_p2.get_SOC_vs_P2_curves("XFC250_300kW", "L2_9600"); + std::cout << inventory << std::endl; EV_ramping_map custom_EV_ramping; EV_EVSE_ramping_map custom_EV_EVSE_ramping; bool model_stochastic_battery_degregation = false; - EV_charge_model_factory charge_model_factory{ inventory, custom_EV_ramping, custom_EV_EVSE_ramping, model_stochastic_battery_degregation }; + factory_EV_charge_model charge_model_factory{ inventory, custom_EV_ramping, custom_EV_EVSE_ramping, model_stochastic_battery_degregation }; + + //charge_model_factory.write_charge_profile("./"); + + // Build charge event + + control_strategy_enums cs; + cs.inverter_model_supports_Qsetpoint = false; + cs.ES_control_strategy = L2_control_strategies_enum::NA; + cs.VS_control_strategy = L2_control_strategies_enum::NA; + cs.ext_control_strategy = ""; + + stop_charging_criteria scc; + + int charge_event_id = 1; + int SE_group_id = 1; + SE_id_type SE_id = 1; + vehicle_id_type vehicle_id = 1; + EV_type vehicle_type = "XFC250_300kW"; + double arrival_unix_time = 1*3600; + double departure_unix_time = 4*3600; + double arrival_SOC = 0; + double departure_SOC = 100; + stop_charging_criteria stop_charge = scc; + control_strategy_enums control_enums = cs; + + charge_event_data event(charge_event_id, SE_group_id, SE_id, vehicle_id, vehicle_type, arrival_unix_time, departure_unix_time, arrival_SOC, departure_SOC, scc, cs); + + vehicle_charge_model* DCFC_model = charge_model_factory.alloc_get_EV_charge_model(event, "dcfc_50", 1000000); + + // Run the vehicle charge model + + bool charge_has_completed; + battery_state bat_state; + double soc_t1; + double P1_kW; + double P2_kW; + double time_step_duration_hrs; + double E1_energy_to_target_soc_kWh; + double min_time_to_target_soc_hrs; + + std::string filename, header, data, seperator, new_line; + std::ofstream file_handle; + + filename = "./dcfc_vehicle_charge_model.csv"; + + file_handle = std::ofstream(filename); + + seperator = ", "; + new_line = "\n"; + + header = "simulation_time_hrs, soc_t1, P1_kW, P2_kW, time_step_duration_hrs, E1_energy_to_target_soc_kWh, min_time_to_target_soc_hrs"; + header += new_line; + + data = ""; + + double simulation_timestep_sec = 1; + double simulation_start_unix_time = 1 * 3600 - simulation_timestep_sec; + double simulation_end_unix_time = 4 * 3600; + + double previous_unix_time = simulation_start_unix_time - simulation_timestep_sec; + double current_unix_time = simulation_start_unix_time; + while (current_unix_time <= simulation_end_unix_time) + { + if (current_unix_time >= simulation_start_unix_time || current_unix_time < simulation_end_unix_time) + { + DCFC_model->set_target_P2_kW(10000); + } + else + { + DCFC_model->set_target_P2_kW(0); + } + + DCFC_model->get_next(previous_unix_time, current_unix_time, 1.0, charge_has_completed, bat_state); + + soc_t1 = bat_state.soc_t1; + P1_kW = bat_state.P1_kW; + P2_kW = bat_state.P2_kW; + time_step_duration_hrs = bat_state.time_step_duration_hrs; + E1_energy_to_target_soc_kWh = bat_state.E1_energy_to_target_soc_kWh; + min_time_to_target_soc_hrs = bat_state.min_time_to_target_soc_hrs; + + data += std::to_string(current_unix_time) + seperator; + data += std::to_string(soc_t1) + seperator; + data += std::to_string(P1_kW) + seperator; + data += std::to_string(P2_kW) + seperator; + data += std::to_string(time_step_duration_hrs) + seperator; + data += std::to_string(E1_energy_to_target_soc_kWh) + seperator; + data += std::to_string(min_time_to_target_soc_hrs) + new_line; + + current_unix_time += simulation_timestep_sec; + } + + file_handle << header; + file_handle << data; + file_handle.close(); + +// "L2_9600" - charge_model_factory.write_charge_profile("./"); return 0; } \ No newline at end of file From b3bf5dad8e3eb86344c6d8f0408066840aff62eb Mon Sep 17 00:00:00 2001 From: Manoj Kumar Cebol Sundarrajan Date: Sat, 20 May 2023 23:23:38 -0600 Subject: [PATCH 11/52] bug fixes --- source/base/battery_calculate_limits.cpp | 2 +- source/factory/factory_SOC_vs_P2.cpp | 28 +++++++++++++++++++----- source/factory/factory_puVrms_vs_P2.cpp | 3 +++ 3 files changed, 27 insertions(+), 6 deletions(-) diff --git a/source/base/battery_calculate_limits.cpp b/source/base/battery_calculate_limits.cpp index 6aea454..ee8bb92 100644 --- a/source/base/battery_calculate_limits.cpp +++ b/source/base/battery_calculate_limits.cpp @@ -599,7 +599,7 @@ calculate_E1_energy_limit::calculate_E1_energy_limit(const battery_charge_mode& if (x.x_UB > max_soc) max_soc = x.x_UB; } - ASSERT(min_soc >= 0 || max_soc <= 100, "PROBLEM: The following rule (for the P2_vs_soc_segments datatype) has been broken: min_soc < 0 and 100 < max_soc."); + ASSERT(min_soc >= -0.01 || max_soc <= 100.1, "PROBLEM: The following rule (for the P2_vs_soc_segments datatype) has been broken: min_soc < 0 and 100 < max_soc."); //--------------------------------------------- diff --git a/source/factory/factory_SOC_vs_P2.cpp b/source/factory/factory_SOC_vs_P2.cpp index a5022be..ec0672c 100644 --- a/source/factory/factory_SOC_vs_P2.cpp +++ b/source/factory/factory_SOC_vs_P2.cpp @@ -145,8 +145,17 @@ const SOC_vs_P2 create_dcPkW_from_soc::get_charging_dcfc_charge_profile(const EV { const double battery_size_kWh = this->inventory.get_EV_inventory().at(EV).get_battery_size_kWh(); const double battery_capacity_Ah_1C = this->inventory.get_EV_inventory().at(EV).get_battery_size_Ah_1C(); - const double current_limit_A = this->inventory.get_EVSE_inventory().at(EVSE).get_current_limit_A(); + const double EV_crate = this->inventory.get_EV_inventory().at(EV).get_max_c_rate(); + const double EV_current_limit = EV_crate * battery_capacity_Ah_1C; + + const double EVSE_current_limit_A = this->inventory.get_EVSE_inventory().at(EVSE).get_current_limit_A(); const double power_limit_kW = 10000;//this->inventory.get_EVSE_inventory().at(EVSE).get_power_limit_kW(); + + //===================================================== + // Apply current limits + //===================================================== + + const double current_limit_A = std::min(EV_current_limit, EVSE_current_limit_A); //===================================================== // Interpolate pu curves using dc_current_limit @@ -323,7 +332,7 @@ const SOC_vs_P2 create_dcPkW_from_soc::get_charging_dcfc_charge_profile(const EV // Use Upper Curve Directly //-------------------------------------- - for (upper_ptr = std::next(upper_points.begin()); upper_ptr != upper_points.end(); upper_ptr++) + for (upper_ptr = std::next(upper_ptr); upper_ptr != upper_points.end(); upper_ptr++) { soc_1 = upper_ptr->first; P_1 = upper_ptr->second.first; @@ -455,8 +464,17 @@ const SOC_vs_P2 create_dcPkW_from_soc::get_discharging_dcfc_charge_profile(const { const double battery_size_kWh = this->inventory.get_EV_inventory().at(EV).get_battery_size_kWh(); const double battery_capacity_Ah_1C = this->inventory.get_EV_inventory().at(EV).get_battery_size_Ah_1C(); - const double current_limit_A = this->inventory.get_EVSE_inventory().at(EVSE).get_current_limit_A(); - const double power_limit_kW = this->inventory.get_EVSE_inventory().at(EVSE).get_power_limit_kW(); + const double EV_crate = this->inventory.get_EV_inventory().at(EV).get_max_c_rate(); + const double EV_current_limit = EV_crate * battery_capacity_Ah_1C; + + const double EVSE_current_limit_A = this->inventory.get_EVSE_inventory().at(EVSE).get_current_limit_A(); + const double power_limit_kW = 10000;//this->inventory.get_EVSE_inventory().at(EVSE).get_power_limit_kW(); + + //===================================================== + // Apply current limits + //===================================================== + + const double current_limit_A = std::min(EV_current_limit, EVSE_current_limit_A); //===================================================== // Interpolate pu curves using dc_current_limit @@ -631,7 +649,7 @@ const SOC_vs_P2 create_dcPkW_from_soc::get_discharging_dcfc_charge_profile(const //-------------------------------------- // Use Upper Curve Directly //-------------------------------------- - for (upper_ptr = std::next(upper_points.rbegin()); upper_ptr != upper_points.rend(); upper_ptr++) + for (upper_ptr = std::next(upper_ptr); upper_ptr != upper_points.rend(); upper_ptr++) { soc_1 = upper_ptr->first; P_1 = upper_ptr->second.first; diff --git a/source/factory/factory_puVrms_vs_P2.cpp b/source/factory/factory_puVrms_vs_P2.cpp index f8ab601..c98ae7d 100644 --- a/source/factory/factory_puVrms_vs_P2.cpp +++ b/source/factory/factory_puVrms_vs_P2.cpp @@ -99,6 +99,9 @@ const poly_function_of_x factory_puVrms_vs_P2::get_puVrms_vs_P2(const EVSE_type& a = (prev_P2 - cur_P2) / (prev_puVrms - cur_puVrms); b = cur_P2 - a * cur_puVrms; segments.emplace_back(prev_puVrms, cur_puVrms, first, a, b, 0, 0, 0 ); // x_LB, x_UB, degree, a, b, c, d, e + + prev_puVrms = cur_puVrms; + prev_P2 = cur_P2; } //-------- From 1b6695ded20edb1b500b046bc7cc2a2564196d61 Mon Sep 17 00:00:00 2001 From: Manoj Kumar Cebol Sundarrajan Date: Sun, 21 May 2023 23:17:01 -0600 Subject: [PATCH 12/52] unittest and some cleanups --- .gitignore | 2 + CMakeLists.txt | 1 + source/dcfc_charge_profile.csv | 103 ---------- source/factory/factory_SOC_vs_P2.cpp | 9 + unittests/CMakeLists.txt | 3 + unittests/test_charging_models/.gitignore | 2 + unittests/test_charging_models/CMakeLists.txt | 13 ++ .../inputs/EVSE_inputs.csv | 4 + .../test_charging_models/inputs/EV_inputs.csv | 4 + unittests/test_charging_models/main.cpp | 119 ++++++++++++ .../L2_7200_bev150_ld1_50kW.csv | 183 ++++++++++++++++++ .../L2_7200_bev250_ld2_300kW.csv | 183 ++++++++++++++++++ .../L2_7200_bev300_575kW.csv | 183 ++++++++++++++++++ .../dcfc_50_bev150_ld1_50kW.csv | 183 ++++++++++++++++++ .../dcfc_50_bev250_ld2_300kW.csv | 183 ++++++++++++++++++ .../dcfc_50_bev300_575kW.csv | 183 ++++++++++++++++++ .../xfc_350_bev150_ld1_50kW.csv | 183 ++++++++++++++++++ .../xfc_350_bev250_ld2_300kW.csv | 183 ++++++++++++++++++ .../xfc_350_bev300_575kW.csv | 183 ++++++++++++++++++ unittests/test_charging_models/validate.py | 50 +++++ 20 files changed, 1854 insertions(+), 103 deletions(-) delete mode 100644 source/dcfc_charge_profile.csv create mode 100644 unittests/CMakeLists.txt create mode 100644 unittests/test_charging_models/.gitignore create mode 100644 unittests/test_charging_models/CMakeLists.txt create mode 100644 unittests/test_charging_models/inputs/EVSE_inputs.csv create mode 100644 unittests/test_charging_models/inputs/EV_inputs.csv create mode 100644 unittests/test_charging_models/main.cpp create mode 100644 unittests/test_charging_models/original_dxfc_models/L2_7200_bev150_ld1_50kW.csv create mode 100644 unittests/test_charging_models/original_dxfc_models/L2_7200_bev250_ld2_300kW.csv create mode 100644 unittests/test_charging_models/original_dxfc_models/L2_7200_bev300_575kW.csv create mode 100644 unittests/test_charging_models/original_dxfc_models/dcfc_50_bev150_ld1_50kW.csv create mode 100644 unittests/test_charging_models/original_dxfc_models/dcfc_50_bev250_ld2_300kW.csv create mode 100644 unittests/test_charging_models/original_dxfc_models/dcfc_50_bev300_575kW.csv create mode 100644 unittests/test_charging_models/original_dxfc_models/xfc_350_bev150_ld1_50kW.csv create mode 100644 unittests/test_charging_models/original_dxfc_models/xfc_350_bev250_ld2_300kW.csv create mode 100644 unittests/test_charging_models/original_dxfc_models/xfc_350_bev300_575kW.csv create mode 100644 unittests/test_charging_models/validate.py diff --git a/.gitignore b/.gitignore index abcef2f..486122f 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,8 @@ __pycache__/ # C extensions *.so +*.exe +*.editorconfig # Distribution / packaging build/ diff --git a/CMakeLists.txt b/CMakeLists.txt index 4a80bee..4c2618c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -24,3 +24,4 @@ message(STATUS "Install dir is ${INSTALL_DIR}") find_package(pybind11 CONFIG) add_subdirectory(source) +add_subdirectory(unittests) diff --git a/source/dcfc_charge_profile.csv b/source/dcfc_charge_profile.csv deleted file mode 100644 index 0003dcb..0000000 --- a/source/dcfc_charge_profile.csv +++ /dev/null @@ -1,103 +0,0 @@ -soc, XFC250_300kW_dcfc_50, -0.000000, 83.256603, - 1.000000, 86.230053, - 2.000000, 89.203503, - 3.000000, 92.176953, - 4.000000, 95.150404, - 5.000000, 95.861610, - 6.000000, 96.572817, - 7.000000, 97.284024, - 8.000000, 97.995231, - 9.000000, 98.706438, - 10.000000, 99.417645, - 11.000000, 99.598066, - 12.000000, 99.778486, - 13.000000, 99.958907, - 14.000000, 100.139328, - 15.000000, 100.319749, - 16.000000, 100.500169, - 17.000000, 100.680590, - 18.000000, 100.861011, - 19.000000, 101.041432, - 20.000000, 101.221852, - 21.000000, 101.402273, - 22.000000, 101.582694, - 23.000000, 101.763114, - 24.000000, 101.943535, - 25.000000, 102.123956, - 26.000000, 102.304377, - 27.000000, 102.484797, - 28.000000, 102.665218, - 29.000000, 102.845639, - 30.000000, 103.026060, - 31.000000, 103.206480, - 32.000000, 103.386901, - 33.000000, 103.567322, - 34.000000, 103.747743, - 35.000000, 103.928163, - 36.000000, 104.108584, - 37.000000, 104.289005, - 38.000000, 104.469425, - 39.000000, 104.649846, - 40.000000, 104.830267, - 41.000000, 105.010688, - 42.000000, 105.191108, - 43.000000, 105.371529, - 44.000000, 105.551950, - 45.000000, 105.732371, - 46.000000, 105.912791, - 47.000000, 106.093212, - 48.000000, 106.273633, - 49.000000, 106.454054, - 50.000000, 106.634474, - 51.000000, 106.814895, - 52.000000, 106.995316, - 53.000000, 107.175736, - 54.000000, 107.356157, - 55.000000, 107.536578, - 56.000000, 107.716999, - 57.000000, 107.897419, - 58.000000, 108.077840, - 59.000000, 108.258261, - 60.000000, 108.438682, - 61.000000, 108.619102, - 62.000000, 108.799523, - 63.000000, 108.979944, - 64.000000, 109.160365, - 65.000000, 109.340785, - 66.000000, 109.521206, - 67.000000, 109.701627, - 68.000000, 109.882048, - 69.000000, 110.062468, - 70.000000, 110.242889, - 71.000000, 110.423310, - 72.000000, 110.603730, - 73.000000, 110.784151, - 74.000000, 110.964572, - 75.000000, 111.144993, - 76.000000, 111.325413, - 77.000000, 111.505834, - 78.000000, 111.686255, - 79.000000, 111.866676, - 80.000000, 112.047096, - 81.000000, 112.227517, - 82.000000, 112.407938, - 83.000000, 112.588359, - 84.000000, 112.768779, - 85.000000, 112.949200, - 86.000000, 113.129621, - 87.000000, 113.310041, - 88.000000, 113.490462, - 89.000000, 105.997807, - 90.000000, 96.864035, - 91.000000, 87.730263, - 92.000000, 78.596491, - 93.000000, 69.462719, - 94.000000, 60.328947, - 95.000000, 51.195175, - 96.000000, 42.061404, - 97.000000, 32.927632, - 98.000000, 23.793860, - 99.000000, 14.660088, - 100.000000, 5.526316, - \ No newline at end of file diff --git a/source/factory/factory_SOC_vs_P2.cpp b/source/factory/factory_SOC_vs_P2.cpp index ec0672c..898b76f 100644 --- a/source/factory/factory_SOC_vs_P2.cpp +++ b/source/factory/factory_SOC_vs_P2.cpp @@ -456,7 +456,16 @@ const SOC_vs_P2 create_dcPkW_from_soc::get_charging_dcfc_charge_profile(const EV constraints_.push_back(constraint_B); //constraints = constraints_; + + //---------------------------------- + // adjust start and end soc + //---------------------------------- + for (int i = 0; i < (int)dcPkW_from_soc_input.size(); i++) + { + if (dcPkW_from_soc_input[i].x_LB == 0) dcPkW_from_soc_input[i].x_LB = -0.1; + if(dcPkW_from_soc_input[i].x_UB == 100) dcPkW_from_soc_input[i].x_UB = 100.1; + } return SOC_vs_P2{ dcPkW_from_soc_input, zero_slope_threashold_P2_vs_soc }; } diff --git a/unittests/CMakeLists.txt b/unittests/CMakeLists.txt new file mode 100644 index 0000000..5e83dcc --- /dev/null +++ b/unittests/CMakeLists.txt @@ -0,0 +1,3 @@ +enable_testing() + +add_subdirectory(test_charging_models) \ No newline at end of file diff --git a/unittests/test_charging_models/.gitignore b/unittests/test_charging_models/.gitignore new file mode 100644 index 0000000..a74c966 --- /dev/null +++ b/unittests/test_charging_models/.gitignore @@ -0,0 +1,2 @@ +*.csv +!/**/*.csv \ No newline at end of file diff --git a/unittests/test_charging_models/CMakeLists.txt b/unittests/test_charging_models/CMakeLists.txt new file mode 100644 index 0000000..3086116 --- /dev/null +++ b/unittests/test_charging_models/CMakeLists.txt @@ -0,0 +1,13 @@ + +add_executable(test_charging_models main.cpp ) +target_link_libraries(test_charging_models Charging_models Load_inputs factory Base) +target_compile_features(test_charging_models PUBLIC cxx_std_17) +target_include_directories(test_charging_models PUBLIC ${PROJECT_SOURCE_DIR}/source/base) +target_include_directories(test_charging_models PUBLIC ${PROJECT_SOURCE_DIR}/source/charging_models) +target_include_directories(test_charging_models PUBLIC ${PROJECT_SOURCE_DIR}/source/factory) +target_include_directories(test_charging_models PUBLIC ${PROJECT_SOURCE_DIR}/source/load_inputs) + +message("CMAKE_CURRENT_SOURCE_DIR = ${CMAKE_CURRENT_SOURCE_DIR}") + +add_test(NAME "test_charging_models" COMMAND "test_charging_models" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} ) +add_test(NAME "test_charging_models_py" COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/validate.py WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} ) \ No newline at end of file diff --git a/unittests/test_charging_models/inputs/EVSE_inputs.csv b/unittests/test_charging_models/inputs/EVSE_inputs.csv new file mode 100644 index 0000000..78125e7 --- /dev/null +++ b/unittests/test_charging_models/inputs/EVSE_inputs.csv @@ -0,0 +1,4 @@ +EVSE_type,EVSE_level,EVSE_phase_connection,AC/DC_power_limit_kW,AC/DC_voltage_limits_V,AC/DC_current_limit_A,standby_real_power_kW,standby_reactive_power_kVAR +L2_7200,L2,1,6.624,240,60,0,0 +dcfc_50,DCFC,3,50,500,125,0.17,-0.445 +xfc_350,DCFC,3,350,700,500,0.17,-0.445 diff --git a/unittests/test_charging_models/inputs/EV_inputs.csv b/unittests/test_charging_models/inputs/EV_inputs.csv new file mode 100644 index 0000000..d9a88b9 --- /dev/null +++ b/unittests/test_charging_models/inputs/EV_inputs.csv @@ -0,0 +1,4 @@ +EV_type,battery_chemistry,usable_battery_size_kWh,range_miles,efficiency_Wh/Mile,AC_charge_rate_kW,DCFC_capable,max_c_rate,pack_voltage_at_peak_power_V +bev150_ld1_50kW,NMC,45,150,300,6.072,TRUE,0.85,460 +bev250_ld2_300kW,NMC,87.5,250,350,10.58,TRUE,2.64,900 +bev300_575kW,LTO,142.5,300,475,10.58,TRUE,3.41,900 diff --git a/unittests/test_charging_models/main.cpp b/unittests/test_charging_models/main.cpp new file mode 100644 index 0000000..0827c13 --- /dev/null +++ b/unittests/test_charging_models/main.cpp @@ -0,0 +1,119 @@ +#include + +#include "load_EV_EVSE_inventory.h" +#include "factory_charging_transitions.h" +#include "factory_EV_charge_model.h" +#include "factory_SOC_vs_P2.h" + +#include + + +int main() +{ + load_EV_EVSE_inventory load_inventory{ "./inputs" }; + const EV_EVSE_inventory& inventory = load_inventory.get_EV_EVSE_inventory(); + + EV_ramping_map custom_EV_ramping; + EV_EVSE_ramping_map custom_EV_EVSE_ramping; + bool model_stochastic_battery_degregation = false; + + factory_EV_charge_model charge_model_factory{ inventory, custom_EV_ramping, custom_EV_EVSE_ramping, model_stochastic_battery_degregation }; + + std::vector > EV_EVSE_pair; + + EV_EVSE_pair.push_back(std::make_pair("L2_7200", "bev150_ld1_50kW")); + EV_EVSE_pair.push_back(std::make_pair("dcfc_50", "bev150_ld1_50kW")); + EV_EVSE_pair.push_back(std::make_pair("xfc_350", "bev150_ld1_50kW")); + + EV_EVSE_pair.push_back(std::make_pair("L2_7200", "bev250_ld2_300kW")); + EV_EVSE_pair.push_back(std::make_pair("dcfc_50", "bev250_ld2_300kW")); + EV_EVSE_pair.push_back(std::make_pair("xfc_350", "bev250_ld2_300kW")); + + EV_EVSE_pair.push_back(std::make_pair("L2_7200", "bev300_575kW")); + EV_EVSE_pair.push_back(std::make_pair("dcfc_50", "bev300_575kW")); + EV_EVSE_pair.push_back(std::make_pair("xfc_350", "bev300_575kW")); + + // Build charge event + + bool charge_has_completed; + battery_state bat_state; + double soc_t1; + double P1_kW; + double P2_kW; + + control_strategy_enums cs; + cs.inverter_model_supports_Qsetpoint = false; + cs.ES_control_strategy = L2_control_strategies_enum::NA; + cs.VS_control_strategy = L2_control_strategies_enum::NA; + cs.ext_control_strategy = ""; + + stop_charging_criteria scc; + + int charge_event_id = 1; + int SE_group_id = 1; + SE_id_type SE_id = 1; + vehicle_id_type vehicle_id = 1; + double arrival_unix_time = 1*3600; + double departure_unix_time = 4*3600; + double arrival_SOC = 0; + double departure_SOC = 100; + stop_charging_criteria stop_charge = scc; + control_strategy_enums control_enums = cs; + + std::string filename, header, data, seperator, new_line; + std::ofstream file_handle; + + for (std::pair elem : EV_EVSE_pair) + { + EVSE_type supply_equipment_type = elem.first; + EV_type vehicle_type = elem.second; + + charge_event_data event(charge_event_id, SE_group_id, SE_id, vehicle_id, vehicle_type, arrival_unix_time, departure_unix_time, arrival_SOC, departure_SOC, scc, cs); + + vehicle_charge_model* model = charge_model_factory.alloc_get_EV_charge_model(event, supply_equipment_type, 1000000); + model->set_target_P2_kW(10000000); + + filename = supply_equipment_type + "_" + vehicle_type + ".csv"; + + file_handle = std::ofstream(filename); + + seperator = ", "; + new_line = "\n"; + + header = "simulation_time_hrs, soc_t1, P1_kW, P2_kW"; + header += new_line; + + data = ""; + + double simulation_timestep_sec = 60; + double simulation_start_unix_time = arrival_unix_time - simulation_timestep_sec; + double simulation_end_unix_time = departure_unix_time; + + double previous_unix_time = simulation_start_unix_time - simulation_timestep_sec; + double current_unix_time = simulation_start_unix_time; + + + while (current_unix_time <= simulation_end_unix_time) + { + model->get_next(previous_unix_time, current_unix_time, 1.0, charge_has_completed, bat_state); + + soc_t1 = bat_state.soc_t1; + P1_kW = bat_state.P1_kW; + P2_kW = bat_state.P2_kW; + + data += std::to_string(current_unix_time / 3600.0) + seperator; + data += std::to_string(soc_t1) + seperator; + data += std::to_string(P1_kW) + seperator; + data += std::to_string(P2_kW) + new_line; + + previous_unix_time = current_unix_time; + current_unix_time += simulation_timestep_sec; + } + + file_handle << header; + file_handle << data; + file_handle.close(); + } + + return 0; +} \ No newline at end of file diff --git a/unittests/test_charging_models/original_dxfc_models/L2_7200_bev150_ld1_50kW.csv b/unittests/test_charging_models/original_dxfc_models/L2_7200_bev150_ld1_50kW.csv new file mode 100644 index 0000000..7fb388e --- /dev/null +++ b/unittests/test_charging_models/original_dxfc_models/L2_7200_bev150_ld1_50kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.198492, 5.359295, 5.412378 +1.016667, 0.421158, 6.011968, 6.072000 +1.033333, 0.643823, 6.011968, 6.072000 +1.050000, 0.866489, 6.011968, 6.072000 +1.066667, 1.089154, 6.011968, 6.072000 +1.083333, 1.311820, 6.011968, 6.072000 +1.100000, 1.534485, 6.011968, 6.072000 +1.116667, 1.757151, 6.011968, 6.072000 +1.133333, 1.979816, 6.011968, 6.072000 +1.150000, 2.202482, 6.011968, 6.072000 +1.166667, 2.425147, 6.011968, 6.072000 +1.183333, 2.647813, 6.011968, 6.072000 +1.200000, 2.870478, 6.011968, 6.072000 +1.216667, 3.093144, 6.011968, 6.072000 +1.233333, 3.315809, 6.011968, 6.072000 +1.250000, 3.538474, 6.011968, 6.072000 +1.266667, 3.761140, 6.011968, 6.072000 +1.283333, 3.983805, 6.011968, 6.072000 +1.300000, 4.206471, 6.011968, 6.072000 +1.316667, 4.429136, 6.011968, 6.072000 +1.333333, 4.651802, 6.011968, 6.072000 +1.350000, 4.874467, 6.011968, 6.072000 +1.366667, 5.097133, 6.011968, 6.072000 +1.383333, 5.319798, 6.011968, 6.072000 +1.400000, 5.542464, 6.011968, 6.072000 +1.416667, 5.765129, 6.011968, 6.072000 +1.433333, 5.987795, 6.011968, 6.072000 +1.450000, 6.210460, 6.011968, 6.072000 +1.466667, 6.433126, 6.011968, 6.072000 +1.483333, 6.655791, 6.011968, 6.072000 +1.500000, 6.878456, 6.011968, 6.072000 +1.516667, 7.101122, 6.011968, 6.072000 +1.533333, 7.323787, 6.011968, 6.072000 +1.550000, 7.546453, 6.011968, 6.072000 +1.566667, 7.769118, 6.011968, 6.072000 +1.583333, 7.991784, 6.011968, 6.072000 +1.600000, 8.214449, 6.011968, 6.072000 +1.616667, 8.437115, 6.011968, 6.072000 +1.633333, 8.659780, 6.011968, 6.072000 +1.650000, 8.882446, 6.011968, 6.072000 +1.666667, 9.105111, 6.011968, 6.072000 +1.683333, 9.327777, 6.011968, 6.072000 +1.700000, 9.550442, 6.011968, 6.072000 +1.716667, 9.773108, 6.011968, 6.072000 +1.733333, 9.995773, 6.011968, 6.072000 +1.750000, 10.218439, 6.011968, 6.072000 +1.766667, 10.441104, 6.011968, 6.072000 +1.783333, 10.663769, 6.011968, 6.072000 +1.800000, 10.886435, 6.011968, 6.072000 +1.816667, 11.109100, 6.011968, 6.072000 +1.833333, 11.331766, 6.011968, 6.072000 +1.850000, 11.554431, 6.011968, 6.072000 +1.866667, 11.777097, 6.011968, 6.072000 +1.883333, 11.999762, 6.011968, 6.072000 +1.900000, 12.222428, 6.011968, 6.072000 +1.916667, 12.445093, 6.011968, 6.072000 +1.933333, 12.667759, 6.011968, 6.072000 +1.950000, 12.890424, 6.011968, 6.072000 +1.966667, 13.113090, 6.011968, 6.072000 +1.983333, 13.335755, 6.011968, 6.072000 +2.000000, 13.558421, 6.011968, 6.072000 +2.016667, 13.781086, 6.011968, 6.072000 +2.033333, 14.003751, 6.011968, 6.072000 +2.050000, 14.226417, 6.011968, 6.072000 +2.066667, 14.449082, 6.011968, 6.072000 +2.083333, 14.671748, 6.011968, 6.072000 +2.100000, 14.894413, 6.011968, 6.072000 +2.116667, 15.117079, 6.011968, 6.072000 +2.133333, 15.339744, 6.011968, 6.072000 +2.150000, 15.562410, 6.011968, 6.072000 +2.166667, 15.785075, 6.011968, 6.072000 +2.183333, 16.007741, 6.011968, 6.072000 +2.200000, 16.230406, 6.011968, 6.072000 +2.216667, 16.453072, 6.011968, 6.072000 +2.233333, 16.675737, 6.011968, 6.072000 +2.250000, 16.898403, 6.011968, 6.072000 +2.266667, 17.121068, 6.011968, 6.072000 +2.283333, 17.343733, 6.011968, 6.072000 +2.300000, 17.566399, 6.011968, 6.072000 +2.316667, 17.789064, 6.011968, 6.072000 +2.333333, 18.011730, 6.011968, 6.072000 +2.350000, 18.234395, 6.011968, 6.072000 +2.366667, 18.457061, 6.011968, 6.072000 +2.383333, 18.679726, 6.011968, 6.072000 +2.400000, 18.902392, 6.011968, 6.072000 +2.416667, 19.125057, 6.011968, 6.072000 +2.433333, 19.347723, 6.011968, 6.072000 +2.450000, 19.570388, 6.011968, 6.072000 +2.466667, 19.793054, 6.011968, 6.072000 +2.483333, 20.015719, 6.011968, 6.072000 +2.500000, 20.238385, 6.011968, 6.072000 +2.516667, 20.461050, 6.011968, 6.072000 +2.533333, 20.683716, 6.011968, 6.072000 +2.550000, 20.906381, 6.011968, 6.072000 +2.566667, 21.129046, 6.011968, 6.072000 +2.583333, 21.351712, 6.011968, 6.072000 +2.600000, 21.574377, 6.011968, 6.072000 +2.616667, 21.797043, 6.011968, 6.072000 +2.633333, 22.019708, 6.011968, 6.072000 +2.650000, 22.242374, 6.011968, 6.072000 +2.666667, 22.465039, 6.011968, 6.072000 +2.683333, 22.687705, 6.011968, 6.072000 +2.700000, 22.910370, 6.011968, 6.072000 +2.716667, 23.133036, 6.011968, 6.072000 +2.733333, 23.355701, 6.011968, 6.072000 +2.750000, 23.578367, 6.011968, 6.072000 +2.766667, 23.801032, 6.011968, 6.072000 +2.783333, 24.023698, 6.011968, 6.072000 +2.800000, 24.246363, 6.011968, 6.072000 +2.816667, 24.469028, 6.011968, 6.072000 +2.833333, 24.691694, 6.011968, 6.072000 +2.850000, 24.914359, 6.011968, 6.072000 +2.866667, 25.137025, 6.011968, 6.072000 +2.883333, 25.359690, 6.011968, 6.072000 +2.900000, 25.582356, 6.011968, 6.072000 +2.916667, 25.805021, 6.011968, 6.072000 +2.933333, 26.027687, 6.011968, 6.072000 +2.950000, 26.250352, 6.011968, 6.072000 +2.966667, 26.473018, 6.011968, 6.072000 +2.983333, 26.695683, 6.011968, 6.072000 +3.000000, 26.918349, 6.011968, 6.072000 +3.016667, 27.141014, 6.011968, 6.072000 +3.033333, 27.363680, 6.011968, 6.072000 +3.050000, 27.586345, 6.011968, 6.072000 +3.066667, 27.809011, 6.011968, 6.072000 +3.083333, 28.031676, 6.011968, 6.072000 +3.100000, 28.254341, 6.011968, 6.072000 +3.116667, 28.477007, 6.011968, 6.072000 +3.133333, 28.699672, 6.011968, 6.072000 +3.150000, 28.922338, 6.011968, 6.072000 +3.166667, 29.145003, 6.011968, 6.072000 +3.183333, 29.367669, 6.011968, 6.072000 +3.200000, 29.590334, 6.011968, 6.072000 +3.216667, 29.813000, 6.011968, 6.072000 +3.233333, 30.035665, 6.011968, 6.072000 +3.250000, 30.258331, 6.011968, 6.072000 +3.266667, 30.480996, 6.011968, 6.072000 +3.283333, 30.703662, 6.011968, 6.072000 +3.300000, 30.926327, 6.011968, 6.072000 +3.316667, 31.148993, 6.011968, 6.072000 +3.333333, 31.371658, 6.011968, 6.072000 +3.350000, 31.594323, 6.011968, 6.072000 +3.366667, 31.816989, 6.011968, 6.072000 +3.383333, 32.039654, 6.011968, 6.072000 +3.400000, 32.262320, 6.011968, 6.072000 +3.416667, 32.484985, 6.011968, 6.072000 +3.433333, 32.707651, 6.011968, 6.072000 +3.450000, 32.930316, 6.011968, 6.072000 +3.466667, 33.152982, 6.011968, 6.072000 +3.483333, 33.375647, 6.011968, 6.072000 +3.500000, 33.598313, 6.011968, 6.072000 +3.516667, 33.820978, 6.011968, 6.072000 +3.533333, 34.043644, 6.011968, 6.072000 +3.550000, 34.266309, 6.011968, 6.072000 +3.566667, 34.488975, 6.011968, 6.072000 +3.583333, 34.711640, 6.011968, 6.072000 +3.600000, 34.934306, 6.011968, 6.072000 +3.616667, 35.156971, 6.011968, 6.072000 +3.633333, 35.379636, 6.011968, 6.072000 +3.650000, 35.602302, 6.011968, 6.072000 +3.666667, 35.824967, 6.011968, 6.072000 +3.683333, 36.047633, 6.011968, 6.072000 +3.700000, 36.270298, 6.011968, 6.072000 +3.716667, 36.492964, 6.011968, 6.072000 +3.733333, 36.715629, 6.011968, 6.072000 +3.750000, 36.938295, 6.011968, 6.072000 +3.766667, 37.160960, 6.011968, 6.072000 +3.783333, 37.383626, 6.011968, 6.072000 +3.800000, 37.606291, 6.011968, 6.072000 +3.816667, 37.828957, 6.011968, 6.072000 +3.833333, 38.051622, 6.011968, 6.072000 +3.850000, 38.274288, 6.011968, 6.072000 +3.866667, 38.496953, 6.011968, 6.072000 +3.883333, 38.719618, 6.011968, 6.072000 +3.900000, 38.942284, 6.011968, 6.072000 +3.916667, 39.164949, 6.011968, 6.072000 +3.933333, 39.387615, 6.011968, 6.072000 +3.950000, 39.610280, 6.011968, 6.072000 +3.966667, 39.832946, 6.011968, 6.072000 +3.983333, 40.055611, 6.011968, 6.072000 +4.000000, 40.278277, 6.011968, 6.072000 diff --git a/unittests/test_charging_models/original_dxfc_models/L2_7200_bev250_ld2_300kW.csv b/unittests/test_charging_models/original_dxfc_models/L2_7200_bev250_ld2_300kW.csv new file mode 100644 index 0000000..542a53b --- /dev/null +++ b/unittests/test_charging_models/original_dxfc_models/L2_7200_bev250_ld2_300kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.173147, 9.142152, 9.231932 +1.016667, 0.371560, 10.476237, 10.580000 +1.033333, 0.569974, 10.476237, 10.580000 +1.050000, 0.768388, 10.476237, 10.580000 +1.066667, 0.966801, 10.476237, 10.580000 +1.083333, 1.165215, 10.476237, 10.580000 +1.100000, 1.363628, 10.476237, 10.580000 +1.116667, 1.562042, 10.476237, 10.580000 +1.133333, 1.760455, 10.476237, 10.580000 +1.150000, 1.958869, 10.476237, 10.580000 +1.166667, 2.157283, 10.476237, 10.580000 +1.183333, 2.355696, 10.476237, 10.580000 +1.200000, 2.554110, 10.476237, 10.580000 +1.216667, 2.752523, 10.476237, 10.580000 +1.233333, 2.950937, 10.476237, 10.580000 +1.250000, 3.149350, 10.476237, 10.580000 +1.266667, 3.347764, 10.476237, 10.580000 +1.283333, 3.546178, 10.476237, 10.580000 +1.300000, 3.744591, 10.476237, 10.580000 +1.316667, 3.943005, 10.476237, 10.580000 +1.333333, 4.141418, 10.476237, 10.580000 +1.350000, 4.339832, 10.476237, 10.580000 +1.366667, 4.538245, 10.476237, 10.580000 +1.383333, 4.736659, 10.476237, 10.580000 +1.400000, 4.935073, 10.476237, 10.580000 +1.416667, 5.133486, 10.476237, 10.580000 +1.433333, 5.331900, 10.476237, 10.580000 +1.450000, 5.530313, 10.476237, 10.580000 +1.466667, 5.728727, 10.476237, 10.580000 +1.483333, 5.927140, 10.476237, 10.580000 +1.500000, 6.125554, 10.476237, 10.580000 +1.516667, 6.323968, 10.476237, 10.580000 +1.533333, 6.522381, 10.476237, 10.580000 +1.550000, 6.720795, 10.476237, 10.580000 +1.566667, 6.919208, 10.476237, 10.580000 +1.583333, 7.117622, 10.476237, 10.580000 +1.600000, 7.316036, 10.476237, 10.580000 +1.616667, 7.514449, 10.476237, 10.580000 +1.633333, 7.712863, 10.476237, 10.580000 +1.650000, 7.911276, 10.476237, 10.580000 +1.666667, 8.109690, 10.476237, 10.580000 +1.683333, 8.308103, 10.476237, 10.580000 +1.700000, 8.506517, 10.476237, 10.580000 +1.716667, 8.704931, 10.476237, 10.580000 +1.733333, 8.903344, 10.476237, 10.580000 +1.750000, 9.101758, 10.476237, 10.580000 +1.766667, 9.300171, 10.476237, 10.580000 +1.783333, 9.498585, 10.476237, 10.580000 +1.800000, 9.696998, 10.476237, 10.580000 +1.816667, 9.895412, 10.476237, 10.580000 +1.833333, 10.093826, 10.476237, 10.580000 +1.850000, 10.292239, 10.476237, 10.580000 +1.866667, 10.490653, 10.476237, 10.580000 +1.883333, 10.689066, 10.476237, 10.580000 +1.900000, 10.887480, 10.476237, 10.580000 +1.916667, 11.085893, 10.476237, 10.580000 +1.933333, 11.284307, 10.476237, 10.580000 +1.950000, 11.482721, 10.476237, 10.580000 +1.966667, 11.681134, 10.476237, 10.580000 +1.983333, 11.879548, 10.476237, 10.580000 +2.000000, 12.077961, 10.476237, 10.580000 +2.016667, 12.276375, 10.476237, 10.580000 +2.033333, 12.474788, 10.476237, 10.580000 +2.050000, 12.673202, 10.476237, 10.580000 +2.066667, 12.871616, 10.476237, 10.580000 +2.083333, 13.070029, 10.476237, 10.580000 +2.100000, 13.268443, 10.476237, 10.580000 +2.116667, 13.466856, 10.476237, 10.580000 +2.133333, 13.665270, 10.476237, 10.580000 +2.150000, 13.863683, 10.476237, 10.580000 +2.166667, 14.062097, 10.476237, 10.580000 +2.183333, 14.260511, 10.476237, 10.580000 +2.200000, 14.458924, 10.476237, 10.580000 +2.216667, 14.657338, 10.476237, 10.580000 +2.233333, 14.855751, 10.476237, 10.580000 +2.250000, 15.054165, 10.476237, 10.580000 +2.266667, 15.252579, 10.476237, 10.580000 +2.283333, 15.450992, 10.476237, 10.580000 +2.300000, 15.649406, 10.476237, 10.580000 +2.316667, 15.847819, 10.476237, 10.580000 +2.333333, 16.046233, 10.476237, 10.580000 +2.350000, 16.244646, 10.476237, 10.580000 +2.366667, 16.443060, 10.476237, 10.580000 +2.383333, 16.641474, 10.476237, 10.580000 +2.400000, 16.839887, 10.476237, 10.580000 +2.416667, 17.038301, 10.476237, 10.580000 +2.433333, 17.236714, 10.476237, 10.580000 +2.450000, 17.435128, 10.476237, 10.580000 +2.466667, 17.633541, 10.476237, 10.580000 +2.483333, 17.831955, 10.476237, 10.580000 +2.500000, 18.030369, 10.476237, 10.580000 +2.516667, 18.228782, 10.476237, 10.580000 +2.533333, 18.427196, 10.476237, 10.580000 +2.550000, 18.625609, 10.476237, 10.580000 +2.566667, 18.824023, 10.476237, 10.580000 +2.583333, 19.022436, 10.476237, 10.580000 +2.600000, 19.220850, 10.476237, 10.580000 +2.616667, 19.419264, 10.476237, 10.580000 +2.633333, 19.617677, 10.476237, 10.580000 +2.650000, 19.816091, 10.476237, 10.580000 +2.666667, 20.014504, 10.476237, 10.580000 +2.683333, 20.212918, 10.476237, 10.580000 +2.700000, 20.411331, 10.476237, 10.580000 +2.716667, 20.609745, 10.476237, 10.580000 +2.733333, 20.808159, 10.476237, 10.580000 +2.750000, 21.006572, 10.476237, 10.580000 +2.766667, 21.204986, 10.476237, 10.580000 +2.783333, 21.403399, 10.476237, 10.580000 +2.800000, 21.601813, 10.476237, 10.580000 +2.816667, 21.800227, 10.476237, 10.580000 +2.833333, 21.998640, 10.476237, 10.580000 +2.850000, 22.197054, 10.476237, 10.580000 +2.866667, 22.395467, 10.476237, 10.580000 +2.883333, 22.593881, 10.476237, 10.580000 +2.900000, 22.792294, 10.476237, 10.580000 +2.916667, 22.990708, 10.476237, 10.580000 +2.933333, 23.189122, 10.476237, 10.580000 +2.950000, 23.387535, 10.476237, 10.580000 +2.966667, 23.585949, 10.476237, 10.580000 +2.983333, 23.784362, 10.476237, 10.580000 +3.000000, 23.982776, 10.476237, 10.580000 +3.016667, 24.181189, 10.476237, 10.580000 +3.033333, 24.379603, 10.476237, 10.580000 +3.050000, 24.578017, 10.476237, 10.580000 +3.066667, 24.776430, 10.476237, 10.580000 +3.083333, 24.974844, 10.476237, 10.580000 +3.100000, 25.173257, 10.476237, 10.580000 +3.116667, 25.371671, 10.476237, 10.580000 +3.133333, 25.570084, 10.476237, 10.580000 +3.150000, 25.768498, 10.476237, 10.580000 +3.166667, 25.966912, 10.476237, 10.580000 +3.183333, 26.165325, 10.476237, 10.580000 +3.200000, 26.363739, 10.476237, 10.580000 +3.216667, 26.562152, 10.476237, 10.580000 +3.233333, 26.760566, 10.476237, 10.580000 +3.250000, 26.958979, 10.476237, 10.580000 +3.266667, 27.157393, 10.476237, 10.580000 +3.283333, 27.355807, 10.476237, 10.580000 +3.300000, 27.554220, 10.476237, 10.580000 +3.316667, 27.752634, 10.476237, 10.580000 +3.333333, 27.951047, 10.476237, 10.580000 +3.350000, 28.149461, 10.476237, 10.580000 +3.366667, 28.347874, 10.476237, 10.580000 +3.383333, 28.546288, 10.476237, 10.580000 +3.400000, 28.744702, 10.476237, 10.580000 +3.416667, 28.943115, 10.476237, 10.580000 +3.433333, 29.141529, 10.476237, 10.580000 +3.450000, 29.339942, 10.476237, 10.580000 +3.466667, 29.538356, 10.476237, 10.580000 +3.483333, 29.736770, 10.476237, 10.580000 +3.500000, 29.935183, 10.476237, 10.580000 +3.516667, 30.133597, 10.476237, 10.580000 +3.533333, 30.332010, 10.476237, 10.580000 +3.550000, 30.530424, 10.476237, 10.580000 +3.566667, 30.728837, 10.476237, 10.580000 +3.583333, 30.927251, 10.476237, 10.580000 +3.600000, 31.125665, 10.476237, 10.580000 +3.616667, 31.324078, 10.476237, 10.580000 +3.633333, 31.522492, 10.476237, 10.580000 +3.650000, 31.720905, 10.476237, 10.580000 +3.666667, 31.919319, 10.476237, 10.580000 +3.683333, 32.117732, 10.476237, 10.580000 +3.700000, 32.316146, 10.476237, 10.580000 +3.716667, 32.514560, 10.476237, 10.580000 +3.733333, 32.712973, 10.476237, 10.580000 +3.750000, 32.911387, 10.476237, 10.580000 +3.766667, 33.109800, 10.476237, 10.580000 +3.783333, 33.308214, 10.476237, 10.580000 +3.800000, 33.506627, 10.476237, 10.580000 +3.816667, 33.705041, 10.476237, 10.580000 +3.833333, 33.903455, 10.476237, 10.580000 +3.850000, 34.101868, 10.476237, 10.580000 +3.866667, 34.300282, 10.476237, 10.580000 +3.883333, 34.498695, 10.476237, 10.580000 +3.900000, 34.697109, 10.476237, 10.580000 +3.916667, 34.895522, 10.476237, 10.580000 +3.933333, 35.093936, 10.476237, 10.580000 +3.950000, 35.292350, 10.476237, 10.580000 +3.966667, 35.490763, 10.476237, 10.580000 +3.983333, 35.689177, 10.476237, 10.580000 +4.000000, 35.887590, 10.476237, 10.580000 diff --git a/unittests/test_charging_models/original_dxfc_models/L2_7200_bev300_575kW.csv b/unittests/test_charging_models/original_dxfc_models/L2_7200_bev300_575kW.csv new file mode 100644 index 0000000..6571484 --- /dev/null +++ b/unittests/test_charging_models/original_dxfc_models/L2_7200_bev300_575kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.106566, 9.111366, 9.231932 +1.016667, 0.228683, 10.441045, 10.580000 +1.033333, 0.350801, 10.441045, 10.580000 +1.050000, 0.472918, 10.441045, 10.580000 +1.066667, 0.595036, 10.441045, 10.580000 +1.083333, 0.717153, 10.441045, 10.580000 +1.100000, 0.839271, 10.441045, 10.580000 +1.116667, 0.961388, 10.441045, 10.580000 +1.133333, 1.083506, 10.441045, 10.580000 +1.150000, 1.205623, 10.441045, 10.580000 +1.166667, 1.327741, 10.441045, 10.580000 +1.183333, 1.449858, 10.441045, 10.580000 +1.200000, 1.571976, 10.441045, 10.580000 +1.216667, 1.694093, 10.441045, 10.580000 +1.233333, 1.816210, 10.441045, 10.580000 +1.250000, 1.938328, 10.441045, 10.580000 +1.266667, 2.060445, 10.441045, 10.580000 +1.283333, 2.182563, 10.441045, 10.580000 +1.300000, 2.304680, 10.441045, 10.580000 +1.316667, 2.426798, 10.441045, 10.580000 +1.333333, 2.548915, 10.441045, 10.580000 +1.350000, 2.671033, 10.441045, 10.580000 +1.366667, 2.793150, 10.441045, 10.580000 +1.383333, 2.915268, 10.441045, 10.580000 +1.400000, 3.037385, 10.441045, 10.580000 +1.416667, 3.159503, 10.441045, 10.580000 +1.433333, 3.281620, 10.441045, 10.580000 +1.450000, 3.403738, 10.441045, 10.580000 +1.466667, 3.525855, 10.441045, 10.580000 +1.483333, 3.647973, 10.441045, 10.580000 +1.500000, 3.770090, 10.441045, 10.580000 +1.516667, 3.892208, 10.441045, 10.580000 +1.533333, 4.014325, 10.441045, 10.580000 +1.550000, 4.136443, 10.441045, 10.580000 +1.566667, 4.258560, 10.441045, 10.580000 +1.583333, 4.380678, 10.441045, 10.580000 +1.600000, 4.502795, 10.441045, 10.580000 +1.616667, 4.624913, 10.441045, 10.580000 +1.633333, 4.747030, 10.441045, 10.580000 +1.650000, 4.869148, 10.441045, 10.580000 +1.666667, 4.991265, 10.441045, 10.580000 +1.683333, 5.113383, 10.441045, 10.580000 +1.700000, 5.235500, 10.441045, 10.580000 +1.716667, 5.357618, 10.441045, 10.580000 +1.733333, 5.479735, 10.441045, 10.580000 +1.750000, 5.601853, 10.441045, 10.580000 +1.766667, 5.723970, 10.441045, 10.580000 +1.783333, 5.846087, 10.441045, 10.580000 +1.800000, 5.968205, 10.441045, 10.580000 +1.816667, 6.090322, 10.441045, 10.580000 +1.833333, 6.212440, 10.441045, 10.580000 +1.850000, 6.334557, 10.441045, 10.580000 +1.866667, 6.456675, 10.441045, 10.580000 +1.883333, 6.578792, 10.441045, 10.580000 +1.900000, 6.700910, 10.441045, 10.580000 +1.916667, 6.823027, 10.441045, 10.580000 +1.933333, 6.945145, 10.441045, 10.580000 +1.950000, 7.067262, 10.441045, 10.580000 +1.966667, 7.189380, 10.441045, 10.580000 +1.983333, 7.311497, 10.441045, 10.580000 +2.000000, 7.433615, 10.441045, 10.580000 +2.016667, 7.555732, 10.441045, 10.580000 +2.033333, 7.677850, 10.441045, 10.580000 +2.050000, 7.799967, 10.441045, 10.580000 +2.066667, 7.922085, 10.441045, 10.580000 +2.083333, 8.044202, 10.441045, 10.580000 +2.100000, 8.166320, 10.441045, 10.580000 +2.116667, 8.288437, 10.441045, 10.580000 +2.133333, 8.410555, 10.441045, 10.580000 +2.150000, 8.532672, 10.441045, 10.580000 +2.166667, 8.654790, 10.441045, 10.580000 +2.183333, 8.776907, 10.441045, 10.580000 +2.200000, 8.899025, 10.441045, 10.580000 +2.216667, 9.021142, 10.441045, 10.580000 +2.233333, 9.143260, 10.441045, 10.580000 +2.250000, 9.265377, 10.441045, 10.580000 +2.266667, 9.387495, 10.441045, 10.580000 +2.283333, 9.509612, 10.441045, 10.580000 +2.300000, 9.631730, 10.441045, 10.580000 +2.316667, 9.753847, 10.441045, 10.580000 +2.333333, 9.875965, 10.441045, 10.580000 +2.350000, 9.998082, 10.441045, 10.580000 +2.366667, 10.120199, 10.441045, 10.580000 +2.383333, 10.242317, 10.441045, 10.580000 +2.400000, 10.364434, 10.441045, 10.580000 +2.416667, 10.486552, 10.441045, 10.580000 +2.433333, 10.608669, 10.441045, 10.580000 +2.450000, 10.730787, 10.441045, 10.580000 +2.466667, 10.852904, 10.441045, 10.580000 +2.483333, 10.975022, 10.441045, 10.580000 +2.500000, 11.097139, 10.441045, 10.580000 +2.516667, 11.219257, 10.441045, 10.580000 +2.533333, 11.341374, 10.441045, 10.580000 +2.550000, 11.463492, 10.441045, 10.580000 +2.566667, 11.585609, 10.441045, 10.580000 +2.583333, 11.707727, 10.441045, 10.580000 +2.600000, 11.829844, 10.441045, 10.580000 +2.616667, 11.951962, 10.441045, 10.580000 +2.633333, 12.074079, 10.441045, 10.580000 +2.650000, 12.196197, 10.441045, 10.580000 +2.666667, 12.318314, 10.441045, 10.580000 +2.683333, 12.440432, 10.441045, 10.580000 +2.700000, 12.562549, 10.441045, 10.580000 +2.716667, 12.684667, 10.441045, 10.580000 +2.733333, 12.806784, 10.441045, 10.580000 +2.750000, 12.928902, 10.441045, 10.580000 +2.766667, 13.051019, 10.441045, 10.580000 +2.783333, 13.173137, 10.441045, 10.580000 +2.800000, 13.295254, 10.441045, 10.580000 +2.816667, 13.417372, 10.441045, 10.580000 +2.833333, 13.539489, 10.441045, 10.580000 +2.850000, 13.661607, 10.441045, 10.580000 +2.866667, 13.783724, 10.441045, 10.580000 +2.883333, 13.905842, 10.441045, 10.580000 +2.900000, 14.027959, 10.441045, 10.580000 +2.916667, 14.150076, 10.441045, 10.580000 +2.933333, 14.272194, 10.441045, 10.580000 +2.950000, 14.394311, 10.441045, 10.580000 +2.966667, 14.516429, 10.441045, 10.580000 +2.983333, 14.638546, 10.441045, 10.580000 +3.000000, 14.760664, 10.441045, 10.580000 +3.016667, 14.882781, 10.441045, 10.580000 +3.033333, 15.004899, 10.441045, 10.580000 +3.050000, 15.127016, 10.441045, 10.580000 +3.066667, 15.249134, 10.441045, 10.580000 +3.083333, 15.371251, 10.441045, 10.580000 +3.100000, 15.493369, 10.441045, 10.580000 +3.116667, 15.615486, 10.441045, 10.580000 +3.133333, 15.737604, 10.441045, 10.580000 +3.150000, 15.859721, 10.441045, 10.580000 +3.166667, 15.981839, 10.441045, 10.580000 +3.183333, 16.103956, 10.441045, 10.580000 +3.200000, 16.226074, 10.441045, 10.580000 +3.216667, 16.348191, 10.441045, 10.580000 +3.233333, 16.470309, 10.441045, 10.580000 +3.250000, 16.592426, 10.441045, 10.580000 +3.266667, 16.714544, 10.441045, 10.580000 +3.283333, 16.836661, 10.441045, 10.580000 +3.300000, 16.958779, 10.441045, 10.580000 +3.316667, 17.080896, 10.441045, 10.580000 +3.333333, 17.203014, 10.441045, 10.580000 +3.350000, 17.325131, 10.441045, 10.580000 +3.366667, 17.447249, 10.441045, 10.580000 +3.383333, 17.569366, 10.441045, 10.580000 +3.400000, 17.691484, 10.441045, 10.580000 +3.416667, 17.813601, 10.441045, 10.580000 +3.433333, 17.935719, 10.441045, 10.580000 +3.450000, 18.057836, 10.441045, 10.580000 +3.466667, 18.179954, 10.441045, 10.580000 +3.483333, 18.302071, 10.441045, 10.580000 +3.500000, 18.424188, 10.441045, 10.580000 +3.516667, 18.546306, 10.441045, 10.580000 +3.533333, 18.668423, 10.441045, 10.580000 +3.550000, 18.790541, 10.441045, 10.580000 +3.566667, 18.912658, 10.441045, 10.580000 +3.583333, 19.034776, 10.441045, 10.580000 +3.600000, 19.156893, 10.441045, 10.580000 +3.616667, 19.279011, 10.441045, 10.580000 +3.633333, 19.401128, 10.441045, 10.580000 +3.650000, 19.523246, 10.441045, 10.580000 +3.666667, 19.645363, 10.441045, 10.580000 +3.683333, 19.767481, 10.441045, 10.580000 +3.700000, 19.889598, 10.441045, 10.580000 +3.716667, 20.011716, 10.441045, 10.580000 +3.733333, 20.133833, 10.441045, 10.580000 +3.750000, 20.255951, 10.441045, 10.580000 +3.766667, 20.378068, 10.441045, 10.580000 +3.783333, 20.500186, 10.441045, 10.580000 +3.800000, 20.622303, 10.441045, 10.580000 +3.816667, 20.744421, 10.441045, 10.580000 +3.833333, 20.866538, 10.441045, 10.580000 +3.850000, 20.988656, 10.441045, 10.580000 +3.866667, 21.110773, 10.441045, 10.580000 +3.883333, 21.232891, 10.441045, 10.580000 +3.900000, 21.355008, 10.441045, 10.580000 +3.916667, 21.477126, 10.441045, 10.580000 +3.933333, 21.599243, 10.441045, 10.580000 +3.950000, 21.721361, 10.441045, 10.580000 +3.966667, 21.843478, 10.441045, 10.580000 +3.983333, 21.965596, 10.441045, 10.580000 +4.000000, 22.087713, 10.441045, 10.580000 diff --git a/unittests/test_charging_models/original_dxfc_models/dcfc_50_bev150_ld1_50kW.csv b/unittests/test_charging_models/original_dxfc_models/dcfc_50_bev150_ld1_50kW.csv new file mode 100644 index 0000000..0c1b902 --- /dev/null +++ b/unittests/test_charging_models/original_dxfc_models/dcfc_50_bev150_ld1_50kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.994041, 26.839094, 27.176475 +1.016667, 2.424467, 38.621519, 39.163948 +1.033333, 3.925016, 40.514819, 41.093469 +1.050000, 5.473405, 41.806512, 42.410395 +1.066667, 7.039795, 42.292529, 42.906017 +1.083333, 8.624229, 42.779704, 43.402878 +1.100000, 10.226775, 43.268745, 43.901705 +1.116667, 11.839072, 43.532013, 44.170265 +1.133333, 13.456069, 43.658920, 44.299730 +1.150000, 15.077769, 43.785920, 44.429293 +1.166667, 16.704187, 43.913285, 44.559234 +1.183333, 18.335336, 44.041017, 44.689552 +1.200000, 19.971229, 44.169116, 44.820250 +1.216667, 21.611881, 44.297583, 44.951327 +1.233333, 23.257304, 44.426420, 45.082786 +1.250000, 24.907512, 44.555628, 45.214627 +1.266667, 26.562520, 44.685207, 45.346852 +1.283333, 28.222340, 44.815159, 45.479461 +1.300000, 29.886988, 44.945485, 45.612455 +1.316667, 31.556476, 45.076185, 45.745837 +1.333333, 33.230819, 45.207261, 45.879606 +1.350000, 34.910031, 45.338714, 46.013765 +1.366667, 36.594125, 45.470545, 46.148313 +1.383333, 38.283116, 45.602755, 46.283253 +1.400000, 39.977018, 45.735345, 46.418585 +1.416667, 41.675844, 45.868316, 46.554310 +1.433333, 43.379610, 46.001669, 46.690430 +1.450000, 45.088328, 46.135405, 46.826946 +1.466667, 46.802015, 46.269526, 46.963859 +1.483333, 48.520682, 46.404032, 47.101169 +1.500000, 50.244346, 46.538924, 47.238879 +1.516667, 51.973021, 46.674204, 47.376989 +1.533333, 53.706720, 46.809873, 47.515501 +1.550000, 55.445458, 46.945931, 47.654415 +1.566667, 57.189250, 47.082380, 47.793733 +1.583333, 58.938110, 47.219221, 47.933456 +1.600000, 60.692052, 47.356456, 48.073585 +1.616667, 62.451093, 47.494084, 48.214121 +1.633333, 64.215245, 47.632107, 48.355066 +1.650000, 65.984523, 47.770527, 48.496420 +1.666667, 67.758944, 47.909344, 48.638185 +1.683333, 69.538520, 48.048560, 48.780362 +1.700000, 71.323267, 48.188175, 48.922952 +1.716667, 73.113200, 48.328192, 49.065956 +1.733333, 74.908334, 48.468610, 49.209376 +1.750000, 76.708683, 48.609431, 49.353213 +1.766667, 78.514263, 48.750656, 49.497468 +1.783333, 80.325088, 48.892287, 49.642141 +1.800000, 82.141175, 49.034324, 49.787235 +1.816667, 83.962536, 49.176769, 49.932750 +1.833333, 85.789189, 49.319622, 50.078689 +1.850000, 87.621148, 49.462885, 50.225051 +1.866667, 89.458428, 49.606559, 50.371838 +1.883333, 91.207885, 47.235352, 47.949927 +1.900000, 92.691269, 40.051362, 40.621062 +1.916667, 93.941252, 33.749548, 34.202943 +1.933333, 94.994269, 28.431444, 28.794493 +1.950000, 95.881218, 23.947641, 24.240043 +1.966667, 96.628194, 20.168342, 20.405112 +1.983333, 97.257217, 16.983622, 17.176283 +2.000000, 97.786864, 14.300479, 14.457943 +2.016667, 98.232802, 12.040303, 12.169507 +2.033333, 98.608234, 10.136687, 10.243075 +2.050000, 98.924293, 8.533575, 8.621446 +2.066667, 99.190354, 7.183665, 7.256437 +2.083333, 99.414320, 6.047061, 6.107470 +2.100000, 99.602843, 5.090126, 5.140374 +2.116667, 99.761528, 4.284507, 4.326376 +2.133333, 99.800528, 1.053006, 1.062876 +2.150000, 99.800561, 0.000868, 0.000876 +2.166667, 99.800561, 0.000000, 0.000000 +2.183333, 99.800561, 0.000000, 0.000000 +2.200000, 99.800561, 0.000000, 0.000000 +2.216667, 99.800561, 0.000000, 0.000000 +2.233333, 99.800561, 0.000000, 0.000000 +2.250000, 99.800561, 0.000000, 0.000000 +2.266667, 99.800561, 0.000000, 0.000000 +2.283333, 99.800561, 0.000000, 0.000000 +2.300000, 99.800561, 0.000000, 0.000000 +2.316667, 99.800561, 0.000000, 0.000000 +2.333333, 99.800561, 0.000000, 0.000000 +2.350000, 99.800561, 0.000000, 0.000000 +2.366667, 99.800561, 0.000000, 0.000000 +2.383333, 99.800561, 0.000000, 0.000000 +2.400000, 99.800561, 0.000000, 0.000000 +2.416667, 99.800561, 0.000000, 0.000000 +2.433333, 99.800561, 0.000000, 0.000000 +2.450000, 99.800561, 0.000000, 0.000000 +2.466667, 99.800561, 0.000000, 0.000000 +2.483333, 99.800561, 0.000000, 0.000000 +2.500000, 99.800561, 0.000000, 0.000000 +2.516667, 99.800561, 0.000000, 0.000000 +2.533333, 99.800561, 0.000000, 0.000000 +2.550000, 99.800561, 0.000000, 0.000000 +2.566667, 99.800561, 0.000000, 0.000000 +2.583333, 99.800561, 0.000000, 0.000000 +2.600000, 99.800561, 0.000000, 0.000000 +2.616667, 99.800561, 0.000000, 0.000000 +2.633333, 99.800561, 0.000000, 0.000000 +2.650000, 99.800561, 0.000000, 0.000000 +2.666667, 99.800561, 0.000000, 0.000000 +2.683333, 99.800561, 0.000000, 0.000000 +2.700000, 99.800561, 0.000000, 0.000000 +2.716667, 99.800561, 0.000000, 0.000000 +2.733333, 99.800561, 0.000000, 0.000000 +2.750000, 99.800561, 0.000000, 0.000000 +2.766667, 99.800561, 0.000000, 0.000000 +2.783333, 99.800561, 0.000000, 0.000000 +2.800000, 99.800561, 0.000000, 0.000000 +2.816667, 99.800561, 0.000000, 0.000000 +2.833333, 99.800561, 0.000000, 0.000000 +2.850000, 99.800561, 0.000000, 0.000000 +2.866667, 99.800561, 0.000000, 0.000000 +2.883333, 99.800561, 0.000000, 0.000000 +2.900000, 99.800561, 0.000000, 0.000000 +2.916667, 99.800561, 0.000000, 0.000000 +2.933333, 99.800561, 0.000000, 0.000000 +2.950000, 99.800561, 0.000000, 0.000000 +2.966667, 99.800561, 0.000000, 0.000000 +2.983333, 99.800561, 0.000000, 0.000000 +3.000000, 99.800561, 0.000000, 0.000000 +3.016667, 99.800561, 0.000000, 0.000000 +3.033333, 99.800561, 0.000000, 0.000000 +3.050000, 99.800561, 0.000000, 0.000000 +3.066667, 99.800561, 0.000000, 0.000000 +3.083333, 99.800561, 0.000000, 0.000000 +3.100000, 99.800561, 0.000000, 0.000000 +3.116667, 99.800561, 0.000000, 0.000000 +3.133333, 99.800561, 0.000000, 0.000000 +3.150000, 99.800561, 0.000000, 0.000000 +3.166667, 99.800561, 0.000000, 0.000000 +3.183333, 99.800561, 0.000000, 0.000000 +3.200000, 99.800561, 0.000000, 0.000000 +3.216667, 99.800561, 0.000000, 0.000000 +3.233333, 99.800561, 0.000000, 0.000000 +3.250000, 99.800561, 0.000000, 0.000000 +3.266667, 99.800561, 0.000000, 0.000000 +3.283333, 99.800561, 0.000000, 0.000000 +3.300000, 99.800561, 0.000000, 0.000000 +3.316667, 99.800561, 0.000000, 0.000000 +3.333333, 99.800561, 0.000000, 0.000000 +3.350000, 99.800561, 0.000000, 0.000000 +3.366667, 99.800561, 0.000000, 0.000000 +3.383333, 99.800561, 0.000000, 0.000000 +3.400000, 99.800561, 0.000000, 0.000000 +3.416667, 99.800561, 0.000000, 0.000000 +3.433333, 99.800561, 0.000000, 0.000000 +3.450000, 99.800561, 0.000000, 0.000000 +3.466667, 99.800561, 0.000000, 0.000000 +3.483333, 99.800561, 0.000000, 0.000000 +3.500000, 99.800561, 0.000000, 0.000000 +3.516667, 99.800561, 0.000000, 0.000000 +3.533333, 99.800561, 0.000000, 0.000000 +3.550000, 99.800561, 0.000000, 0.000000 +3.566667, 99.800561, 0.000000, 0.000000 +3.583333, 99.800561, 0.000000, 0.000000 +3.600000, 99.800561, 0.000000, 0.000000 +3.616667, 99.800561, 0.000000, 0.000000 +3.633333, 99.800561, 0.000000, 0.000000 +3.650000, 99.800561, 0.000000, 0.000000 +3.666667, 99.800561, 0.000000, 0.000000 +3.683333, 99.800561, 0.000000, 0.000000 +3.700000, 99.800561, 0.000000, 0.000000 +3.716667, 99.800561, 0.000000, 0.000000 +3.733333, 99.800561, 0.000000, 0.000000 +3.750000, 99.800561, 0.000000, 0.000000 +3.766667, 99.800561, 0.000000, 0.000000 +3.783333, 99.800561, 0.000000, 0.000000 +3.800000, 99.800561, 0.000000, 0.000000 +3.816667, 99.800561, 0.000000, 0.000000 +3.833333, 99.800561, 0.000000, 0.000000 +3.850000, 99.800561, 0.000000, 0.000000 +3.866667, 99.800561, 0.000000, 0.000000 +3.883333, 99.800561, 0.000000, 0.000000 +3.900000, 99.800561, 0.000000, 0.000000 +3.916667, 99.800561, 0.000000, 0.000000 +3.933333, 99.800561, 0.000000, 0.000000 +3.950000, 99.800561, 0.000000, 0.000000 +3.966667, 99.800561, 0.000000, 0.000000 +3.983333, 99.800561, 0.000000, 0.000000 +4.000000, 99.800561, 0.000000, 0.000000 diff --git a/unittests/test_charging_models/original_dxfc_models/dcfc_50_bev250_ld2_300kW.csv b/unittests/test_charging_models/original_dxfc_models/dcfc_50_bev250_ld2_300kW.csv new file mode 100644 index 0000000..b5c30e5 --- /dev/null +++ b/unittests/test_charging_models/original_dxfc_models/dcfc_50_bev250_ld2_300kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 1.155065, 60.987438, 61.787197 +1.016667, 2.819109, 87.861514, 89.165159 +1.033333, 4.573553, 92.634647, 94.037592 +1.050000, 6.368570, 94.776870, 96.225348 +1.066667, 8.187468, 96.037859, 97.513419 +1.083333, 10.030513, 97.312751, 98.815903 +1.100000, 11.888567, 98.105246, 99.625656 +1.116667, 13.752865, 98.434926, 99.962540 +1.133333, 15.623409, 98.764747, 100.299583 +1.150000, 17.500221, 99.095660, 100.637755 +1.166667, 19.383321, 99.427668, 100.977060 +1.183333, 21.272729, 99.760773, 101.317501 +1.200000, 23.168467, 100.094980, 101.659084 +1.216667, 25.070556, 100.430293, 102.001810 +1.233333, 26.979017, 100.766714, 102.345685 +1.250000, 28.893870, 101.104247, 102.690712 +1.266667, 30.815137, 101.442897, 103.036894 +1.283333, 32.742839, 101.782666, 103.384236 +1.300000, 34.676997, 102.123558, 103.732741 +1.316667, 36.617633, 102.465577, 104.082413 +1.333333, 38.564768, 102.808726, 104.433257 +1.350000, 40.518424, 103.153009, 104.785275 +1.366667, 42.478621, 103.498430, 105.138472 +1.383333, 44.445382, 103.844993, 105.492852 +1.400000, 46.418729, 104.192700, 105.848418 +1.416667, 48.398683, 104.541556, 106.205175 +1.433333, 50.385265, 104.891564, 106.563127 +1.450000, 52.378499, 105.242728, 106.922276 +1.466667, 54.378405, 105.595052, 107.282629 +1.483333, 56.385006, 105.948539, 107.644187 +1.500000, 58.398324, 106.303194, 108.006956 +1.516667, 60.418381, 106.659020, 108.370939 +1.533333, 62.445200, 107.016020, 108.736141 +1.550000, 64.478802, 107.374199, 109.102564 +1.566667, 66.519211, 107.733560, 109.470215 +1.583333, 68.566447, 108.094107, 109.839095 +1.600000, 70.620535, 108.455844, 110.209210 +1.616667, 72.681497, 108.818774, 110.580564 +1.633333, 74.749355, 109.182902, 110.953160 +1.650000, 76.824132, 109.548232, 111.327003 +1.666667, 78.905851, 109.914766, 111.702097 +1.683333, 80.994535, 110.282510, 112.078446 +1.700000, 83.090207, 110.651466, 112.456054 +1.716667, 85.192889, 111.021639, 112.834925 +1.733333, 87.302606, 111.393033, 113.215064 +1.750000, 89.358254, 108.538219, 110.293496 +1.766667, 91.122385, 93.146107, 94.559869 +1.783333, 92.611156, 78.607105, 79.726665 +1.800000, 93.866908, 66.303714, 67.195738 +1.816667, 94.925904, 55.914981, 56.630100 +1.833333, 95.818824, 47.146189, 47.722793 +1.850000, 96.571608, 39.747011, 40.214403 +1.866667, 97.206175, 33.505138, 33.885842 +1.883333, 97.741037, 28.240699, 28.552152 +1.900000, 98.191822, 23.801446, 24.057245 +1.916667, 98.571720, 20.058610, 20.269431 +1.933333, 98.891859, 16.903347, 17.077631 +1.950000, 99.161626, 14.243706, 14.388173 +1.966667, 99.388938, 12.002041, 12.122073 +1.983333, 99.580468, 10.112812, 10.212743 +2.000000, 99.741845, 8.520711, 8.604054 +2.016667, 99.800361, 3.089642, 3.118805 +2.033333, 99.800410, 0.002581, 0.002605 +2.050000, 99.800410, 0.000000, 0.000000 +2.066667, 99.800410, 0.000000, 0.000000 +2.083333, 99.800410, 0.000000, 0.000000 +2.100000, 99.800410, 0.000000, 0.000000 +2.116667, 99.800410, 0.000000, 0.000000 +2.133333, 99.800410, 0.000000, 0.000000 +2.150000, 99.800410, 0.000000, 0.000000 +2.166667, 99.800410, 0.000000, 0.000000 +2.183333, 99.800410, 0.000000, 0.000000 +2.200000, 99.800410, 0.000000, 0.000000 +2.216667, 99.800410, 0.000000, 0.000000 +2.233333, 99.800410, 0.000000, 0.000000 +2.250000, 99.800410, 0.000000, 0.000000 +2.266667, 99.800410, 0.000000, 0.000000 +2.283333, 99.800410, 0.000000, 0.000000 +2.300000, 99.800410, 0.000000, 0.000000 +2.316667, 99.800410, 0.000000, 0.000000 +2.333333, 99.800410, 0.000000, 0.000000 +2.350000, 99.800410, 0.000000, 0.000000 +2.366667, 99.800410, 0.000000, 0.000000 +2.383333, 99.800410, 0.000000, 0.000000 +2.400000, 99.800410, 0.000000, 0.000000 +2.416667, 99.800410, 0.000000, 0.000000 +2.433333, 99.800410, 0.000000, 0.000000 +2.450000, 99.800410, 0.000000, 0.000000 +2.466667, 99.800410, 0.000000, 0.000000 +2.483333, 99.800410, 0.000000, 0.000000 +2.500000, 99.800410, 0.000000, 0.000000 +2.516667, 99.800410, 0.000000, 0.000000 +2.533333, 99.800410, 0.000000, 0.000000 +2.550000, 99.800410, 0.000000, 0.000000 +2.566667, 99.800410, 0.000000, 0.000000 +2.583333, 99.800410, 0.000000, 0.000000 +2.600000, 99.800410, 0.000000, 0.000000 +2.616667, 99.800410, 0.000000, 0.000000 +2.633333, 99.800410, 0.000000, 0.000000 +2.650000, 99.800410, 0.000000, 0.000000 +2.666667, 99.800410, 0.000000, 0.000000 +2.683333, 99.800410, 0.000000, 0.000000 +2.700000, 99.800410, 0.000000, 0.000000 +2.716667, 99.800410, 0.000000, 0.000000 +2.733333, 99.800410, 0.000000, 0.000000 +2.750000, 99.800410, 0.000000, 0.000000 +2.766667, 99.800410, 0.000000, 0.000000 +2.783333, 99.800410, 0.000000, 0.000000 +2.800000, 99.800410, 0.000000, 0.000000 +2.816667, 99.800410, 0.000000, 0.000000 +2.833333, 99.800410, 0.000000, 0.000000 +2.850000, 99.800410, 0.000000, 0.000000 +2.866667, 99.800410, 0.000000, 0.000000 +2.883333, 99.800410, 0.000000, 0.000000 +2.900000, 99.800410, 0.000000, 0.000000 +2.916667, 99.800410, 0.000000, 0.000000 +2.933333, 99.800410, 0.000000, 0.000000 +2.950000, 99.800410, 0.000000, 0.000000 +2.966667, 99.800410, 0.000000, 0.000000 +2.983333, 99.800410, 0.000000, 0.000000 +3.000000, 99.800410, 0.000000, 0.000000 +3.016667, 99.800410, 0.000000, 0.000000 +3.033333, 99.800410, 0.000000, 0.000000 +3.050000, 99.800410, 0.000000, 0.000000 +3.066667, 99.800410, 0.000000, 0.000000 +3.083333, 99.800410, 0.000000, 0.000000 +3.100000, 99.800410, 0.000000, 0.000000 +3.116667, 99.800410, 0.000000, 0.000000 +3.133333, 99.800410, 0.000000, 0.000000 +3.150000, 99.800410, 0.000000, 0.000000 +3.166667, 99.800410, 0.000000, 0.000000 +3.183333, 99.800410, 0.000000, 0.000000 +3.200000, 99.800410, 0.000000, 0.000000 +3.216667, 99.800410, 0.000000, 0.000000 +3.233333, 99.800410, 0.000000, 0.000000 +3.250000, 99.800410, 0.000000, 0.000000 +3.266667, 99.800410, 0.000000, 0.000000 +3.283333, 99.800410, 0.000000, 0.000000 +3.300000, 99.800410, 0.000000, 0.000000 +3.316667, 99.800410, 0.000000, 0.000000 +3.333333, 99.800410, 0.000000, 0.000000 +3.350000, 99.800410, 0.000000, 0.000000 +3.366667, 99.800410, 0.000000, 0.000000 +3.383333, 99.800410, 0.000000, 0.000000 +3.400000, 99.800410, 0.000000, 0.000000 +3.416667, 99.800410, 0.000000, 0.000000 +3.433333, 99.800410, 0.000000, 0.000000 +3.450000, 99.800410, 0.000000, 0.000000 +3.466667, 99.800410, 0.000000, 0.000000 +3.483333, 99.800410, 0.000000, 0.000000 +3.500000, 99.800410, 0.000000, 0.000000 +3.516667, 99.800410, 0.000000, 0.000000 +3.533333, 99.800410, 0.000000, 0.000000 +3.550000, 99.800410, 0.000000, 0.000000 +3.566667, 99.800410, 0.000000, 0.000000 +3.583333, 99.800410, 0.000000, 0.000000 +3.600000, 99.800410, 0.000000, 0.000000 +3.616667, 99.800410, 0.000000, 0.000000 +3.633333, 99.800410, 0.000000, 0.000000 +3.650000, 99.800410, 0.000000, 0.000000 +3.666667, 99.800410, 0.000000, 0.000000 +3.683333, 99.800410, 0.000000, 0.000000 +3.700000, 99.800410, 0.000000, 0.000000 +3.716667, 99.800410, 0.000000, 0.000000 +3.733333, 99.800410, 0.000000, 0.000000 +3.750000, 99.800410, 0.000000, 0.000000 +3.766667, 99.800410, 0.000000, 0.000000 +3.783333, 99.800410, 0.000000, 0.000000 +3.800000, 99.800410, 0.000000, 0.000000 +3.816667, 99.800410, 0.000000, 0.000000 +3.833333, 99.800410, 0.000000, 0.000000 +3.850000, 99.800410, 0.000000, 0.000000 +3.866667, 99.800410, 0.000000, 0.000000 +3.883333, 99.800410, 0.000000, 0.000000 +3.900000, 99.800410, 0.000000, 0.000000 +3.916667, 99.800410, 0.000000, 0.000000 +3.933333, 99.800410, 0.000000, 0.000000 +3.950000, 99.800410, 0.000000, 0.000000 +3.966667, 99.800410, 0.000000, 0.000000 +3.983333, 99.800410, 0.000000, 0.000000 +4.000000, 99.800410, 0.000000, 0.000000 diff --git a/unittests/test_charging_models/original_dxfc_models/dcfc_50_bev300_575kW.csv b/unittests/test_charging_models/original_dxfc_models/dcfc_50_bev300_575kW.csv new file mode 100644 index 0000000..8f7e8a6 --- /dev/null +++ b/unittests/test_charging_models/original_dxfc_models/dcfc_50_bev300_575kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.680398, 58.174034, 59.108064 +1.016667, 1.654039, 83.246342, 84.704055 +1.033333, 2.665439, 86.474660, 88.005156 +1.050000, 3.681714, 86.891486, 88.431470 +1.066667, 4.700030, 87.066035, 88.609997 +1.083333, 5.720387, 87.240492, 88.788435 +1.100000, 6.742788, 87.415295, 88.967230 +1.116667, 7.767237, 87.590445, 89.146383 +1.133333, 8.793740, 87.765943, 89.325895 +1.150000, 9.822298, 87.941788, 89.505767 +1.166667, 10.852918, 88.117982, 89.685999 +1.183333, 11.885603, 88.294526, 89.866592 +1.200000, 12.920356, 88.471419, 90.047547 +1.216667, 13.957183, 88.648664, 90.228865 +1.233333, 14.996086, 88.826260, 90.410546 +1.250000, 16.037071, 89.004208, 90.592591 +1.266667, 17.080141, 89.182508, 90.775000 +1.283333, 18.125301, 89.361163, 90.957775 +1.300000, 19.172555, 89.540171, 91.140916 +1.316667, 20.221906, 89.719535, 91.324424 +1.333333, 21.273359, 89.899254, 91.508300 +1.350000, 22.326919, 90.079329, 91.692544 +1.366667, 23.382588, 90.259762, 91.877157 +1.383333, 24.440373, 90.440551, 92.062140 +1.400000, 25.500275, 90.621700, 92.247493 +1.416667, 26.562301, 90.803207, 92.433217 +1.433333, 27.626454, 90.985074, 92.619314 +1.450000, 28.692738, 91.167301, 92.805783 +1.466667, 29.761158, 91.349890, 92.992626 +1.483333, 30.831718, 91.532840, 93.179842 +1.500000, 31.904421, 91.716153, 93.367434 +1.516667, 32.979273, 91.899830, 93.555402 +1.533333, 34.056277, 92.083870, 93.743746 +1.550000, 35.135439, 92.268275, 93.932467 +1.566667, 36.216761, 92.453045, 94.121566 +1.583333, 37.300248, 92.638181, 94.311043 +1.600000, 38.385905, 92.823684, 94.500901 +1.616667, 39.473736, 93.009554, 94.691138 +1.633333, 40.563746, 93.195793, 94.881756 +1.650000, 41.655937, 93.382400, 95.072756 +1.666667, 42.750316, 93.569378, 95.264138 +1.683333, 43.846886, 93.756725, 95.455904 +1.700000, 44.945651, 93.944444, 95.648053 +1.716667, 46.046617, 94.132534, 95.840588 +1.733333, 47.149786, 94.320997, 96.033507 +1.750000, 48.255164, 94.509833, 96.226813 +1.766667, 49.362756, 94.699043, 96.420506 +1.783333, 50.472708, 94.900891, 96.627141 +1.800000, 51.586207, 95.204202, 96.937655 +1.816667, 52.703530, 95.531107, 97.272335 +1.833333, 53.824690, 95.859164, 97.608207 +1.850000, 54.949699, 96.188335, 97.945232 +1.866667, 56.078572, 96.518624, 98.283415 +1.883333, 57.211321, 96.850034, 98.622758 +1.900000, 58.347959, 97.182570, 98.963267 +1.916667, 59.488500, 97.516234, 99.304946 +1.933333, 60.632957, 97.851031, 99.647797 +1.950000, 61.781342, 98.186965, 99.991825 +1.966667, 62.933670, 98.524039, 100.337035 +1.983333, 64.089950, 98.861916, 100.683080 +2.000000, 65.249439, 99.136280, 100.964087 +2.016667, 66.411580, 99.363104, 101.196410 +2.033333, 67.576380, 99.590353, 101.429174 +2.050000, 68.743843, 99.818116, 101.662470 +2.066667, 69.913976, 100.046393, 101.896299 +2.083333, 71.086785, 100.275187, 102.130664 +2.100000, 72.262277, 100.504497, 102.365564 +2.116667, 73.440456, 100.734326, 102.601002 +2.133333, 74.621329, 100.964674, 102.836978 +2.150000, 75.804903, 101.195543, 103.073493 +2.166667, 76.991183, 101.426934, 103.310549 +2.183333, 78.180175, 101.658847, 103.548148 +2.200000, 79.371886, 101.891285, 103.786289 +2.216667, 80.566490, 102.138636, 104.039718 +2.233333, 81.765120, 102.482839, 104.392389 +2.250000, 82.967999, 102.846194, 104.764699 +2.266667, 84.175144, 103.210855, 105.138363 +2.283333, 85.386568, 103.576794, 105.513353 +2.300000, 86.602288, 103.944015, 105.889671 +2.316667, 87.822317, 104.312522, 106.267324 +2.333333, 89.046672, 104.682320, 106.646316 +2.350000, 90.275627, 105.075642, 107.049435 +2.366667, 91.516229, 106.071543, 108.070223 +2.383333, 92.771780, 107.349595, 109.380385 +2.400000, 94.042465, 108.643509, 110.707005 +2.416667, 95.328462, 109.952822, 112.049615 +2.433333, 96.629956, 111.277710, 113.408404 +2.450000, 97.891071, 107.825342, 109.868134 +2.466667, 98.758603, 74.173960, 75.433683 +2.483333, 99.302708, 46.520966, 47.236567 +2.500000, 99.642639, 29.064118, 29.481968 +2.516667, 99.801251, 13.561339, 13.744243 +2.533333, 99.801387, 0.011634, 0.011782 +2.550000, 99.801387, 0.000000, 0.000000 +2.566667, 99.801387, 0.000000, 0.000000 +2.583333, 99.801387, 0.000000, 0.000000 +2.600000, 99.801387, 0.000000, 0.000000 +2.616667, 99.801387, 0.000000, 0.000000 +2.633333, 99.801387, 0.000000, 0.000000 +2.650000, 99.801387, 0.000000, 0.000000 +2.666667, 99.801387, 0.000000, 0.000000 +2.683333, 99.801387, 0.000000, 0.000000 +2.700000, 99.801387, 0.000000, 0.000000 +2.716667, 99.801387, 0.000000, 0.000000 +2.733333, 99.801387, 0.000000, 0.000000 +2.750000, 99.801387, 0.000000, 0.000000 +2.766667, 99.801387, 0.000000, 0.000000 +2.783333, 99.801387, 0.000000, 0.000000 +2.800000, 99.801387, 0.000000, 0.000000 +2.816667, 99.801387, 0.000000, 0.000000 +2.833333, 99.801387, 0.000000, 0.000000 +2.850000, 99.801387, 0.000000, 0.000000 +2.866667, 99.801387, 0.000000, 0.000000 +2.883333, 99.801387, 0.000000, 0.000000 +2.900000, 99.801387, 0.000000, 0.000000 +2.916667, 99.801387, 0.000000, 0.000000 +2.933333, 99.801387, 0.000000, 0.000000 +2.950000, 99.801387, 0.000000, 0.000000 +2.966667, 99.801387, 0.000000, 0.000000 +2.983333, 99.801387, 0.000000, 0.000000 +3.000000, 99.801387, 0.000000, 0.000000 +3.016667, 99.801387, 0.000000, 0.000000 +3.033333, 99.801387, 0.000000, 0.000000 +3.050000, 99.801387, 0.000000, 0.000000 +3.066667, 99.801387, 0.000000, 0.000000 +3.083333, 99.801387, 0.000000, 0.000000 +3.100000, 99.801387, 0.000000, 0.000000 +3.116667, 99.801387, 0.000000, 0.000000 +3.133333, 99.801387, 0.000000, 0.000000 +3.150000, 99.801387, 0.000000, 0.000000 +3.166667, 99.801387, 0.000000, 0.000000 +3.183333, 99.801387, 0.000000, 0.000000 +3.200000, 99.801387, 0.000000, 0.000000 +3.216667, 99.801387, 0.000000, 0.000000 +3.233333, 99.801387, 0.000000, 0.000000 +3.250000, 99.801387, 0.000000, 0.000000 +3.266667, 99.801387, 0.000000, 0.000000 +3.283333, 99.801387, 0.000000, 0.000000 +3.300000, 99.801387, 0.000000, 0.000000 +3.316667, 99.801387, 0.000000, 0.000000 +3.333333, 99.801387, 0.000000, 0.000000 +3.350000, 99.801387, 0.000000, 0.000000 +3.366667, 99.801387, 0.000000, 0.000000 +3.383333, 99.801387, 0.000000, 0.000000 +3.400000, 99.801387, 0.000000, 0.000000 +3.416667, 99.801387, 0.000000, 0.000000 +3.433333, 99.801387, 0.000000, 0.000000 +3.450000, 99.801387, 0.000000, 0.000000 +3.466667, 99.801387, 0.000000, 0.000000 +3.483333, 99.801387, 0.000000, 0.000000 +3.500000, 99.801387, 0.000000, 0.000000 +3.516667, 99.801387, 0.000000, 0.000000 +3.533333, 99.801387, 0.000000, 0.000000 +3.550000, 99.801387, 0.000000, 0.000000 +3.566667, 99.801387, 0.000000, 0.000000 +3.583333, 99.801387, 0.000000, 0.000000 +3.600000, 99.801387, 0.000000, 0.000000 +3.616667, 99.801387, 0.000000, 0.000000 +3.633333, 99.801387, 0.000000, 0.000000 +3.650000, 99.801387, 0.000000, 0.000000 +3.666667, 99.801387, 0.000000, 0.000000 +3.683333, 99.801387, 0.000000, 0.000000 +3.700000, 99.801387, 0.000000, 0.000000 +3.716667, 99.801387, 0.000000, 0.000000 +3.733333, 99.801387, 0.000000, 0.000000 +3.750000, 99.801387, 0.000000, 0.000000 +3.766667, 99.801387, 0.000000, 0.000000 +3.783333, 99.801387, 0.000000, 0.000000 +3.800000, 99.801387, 0.000000, 0.000000 +3.816667, 99.801387, 0.000000, 0.000000 +3.833333, 99.801387, 0.000000, 0.000000 +3.850000, 99.801387, 0.000000, 0.000000 +3.866667, 99.801387, 0.000000, 0.000000 +3.883333, 99.801387, 0.000000, 0.000000 +3.900000, 99.801387, 0.000000, 0.000000 +3.916667, 99.801387, 0.000000, 0.000000 +3.933333, 99.801387, 0.000000, 0.000000 +3.950000, 99.801387, 0.000000, 0.000000 +3.966667, 99.801387, 0.000000, 0.000000 +3.983333, 99.801387, 0.000000, 0.000000 +4.000000, 99.801387, 0.000000, 0.000000 diff --git a/unittests/test_charging_models/original_dxfc_models/xfc_350_bev150_ld1_50kW.csv b/unittests/test_charging_models/original_dxfc_models/xfc_350_bev150_ld1_50kW.csv new file mode 100644 index 0000000..e776440 --- /dev/null +++ b/unittests/test_charging_models/original_dxfc_models/xfc_350_bev150_ld1_50kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.994041, 26.839094, 27.176475 +1.016667, 2.424467, 38.621519, 39.163948 +1.033333, 3.925016, 40.514819, 41.093469 +1.050000, 5.473405, 41.806512, 42.410395 +1.066667, 7.039795, 42.292529, 42.906017 +1.083333, 8.624229, 42.779704, 43.402878 +1.100000, 10.226775, 43.268745, 43.901705 +1.116667, 11.839072, 43.532013, 44.170265 +1.133333, 13.456069, 43.658920, 44.299730 +1.150000, 15.077769, 43.785920, 44.429293 +1.166667, 16.704187, 43.913285, 44.559234 +1.183333, 18.335336, 44.041017, 44.689552 +1.200000, 19.971229, 44.169116, 44.820250 +1.216667, 21.611881, 44.297583, 44.951327 +1.233333, 23.257304, 44.426420, 45.082786 +1.250000, 24.907512, 44.555628, 45.214627 +1.266667, 26.562520, 44.685207, 45.346852 +1.283333, 28.222340, 44.815159, 45.479461 +1.300000, 29.886988, 44.945485, 45.612455 +1.316667, 31.556476, 45.076185, 45.745837 +1.333333, 33.230819, 45.207261, 45.879606 +1.350000, 34.910031, 45.338714, 46.013765 +1.366667, 36.594125, 45.470545, 46.148313 +1.383333, 38.283116, 45.602755, 46.283253 +1.400000, 39.977018, 45.735345, 46.418585 +1.416667, 41.675844, 45.868316, 46.554310 +1.433333, 43.379610, 46.001669, 46.690430 +1.450000, 45.088328, 46.135405, 46.826946 +1.466667, 46.802015, 46.269526, 46.963859 +1.483333, 48.520682, 46.404032, 47.101169 +1.500000, 50.244346, 46.538924, 47.238879 +1.516667, 51.973021, 46.674204, 47.376989 +1.533333, 53.706720, 46.809873, 47.515501 +1.550000, 55.445458, 46.945931, 47.654415 +1.566667, 57.189250, 47.082380, 47.793733 +1.583333, 58.938110, 47.219221, 47.933456 +1.600000, 60.692052, 47.356456, 48.073585 +1.616667, 62.451093, 47.494084, 48.214121 +1.633333, 64.215245, 47.632107, 48.355066 +1.650000, 65.984523, 47.770527, 48.496420 +1.666667, 67.758944, 47.909344, 48.638185 +1.683333, 69.538520, 48.048560, 48.780362 +1.700000, 71.323267, 48.188175, 48.922952 +1.716667, 73.113200, 48.328192, 49.065956 +1.733333, 74.908334, 48.468610, 49.209376 +1.750000, 76.708683, 48.609431, 49.353213 +1.766667, 78.514263, 48.750656, 49.497468 +1.783333, 80.325088, 48.892287, 49.642141 +1.800000, 82.141175, 49.034324, 49.787235 +1.816667, 83.962536, 49.176769, 49.932750 +1.833333, 85.789189, 49.319622, 50.078689 +1.850000, 87.621148, 49.462885, 50.225051 +1.866667, 89.458428, 49.606559, 50.371838 +1.883333, 91.207885, 47.235352, 47.949927 +1.900000, 92.691269, 40.051362, 40.621062 +1.916667, 93.941252, 33.749548, 34.202943 +1.933333, 94.994269, 28.431444, 28.794493 +1.950000, 95.881218, 23.947641, 24.240043 +1.966667, 96.628194, 20.168342, 20.405112 +1.983333, 97.257217, 16.983622, 17.176283 +2.000000, 97.786864, 14.300479, 14.457943 +2.016667, 98.232802, 12.040303, 12.169507 +2.033333, 98.608234, 10.136687, 10.243075 +2.050000, 98.924293, 8.533575, 8.621446 +2.066667, 99.190354, 7.183665, 7.256437 +2.083333, 99.414320, 6.047061, 6.107470 +2.100000, 99.602843, 5.090126, 5.140374 +2.116667, 99.761528, 4.284507, 4.326376 +2.133333, 99.800528, 1.053006, 1.062876 +2.150000, 99.800561, 0.000866, 0.000874 +2.166667, 99.800561, 0.000000, 0.000000 +2.183333, 99.800561, 0.000000, 0.000000 +2.200000, 99.800561, 0.000000, 0.000000 +2.216667, 99.800561, 0.000000, 0.000000 +2.233333, 99.800561, 0.000000, 0.000000 +2.250000, 99.800561, 0.000000, 0.000000 +2.266667, 99.800561, 0.000000, 0.000000 +2.283333, 99.800561, 0.000000, 0.000000 +2.300000, 99.800561, 0.000000, 0.000000 +2.316667, 99.800561, 0.000000, 0.000000 +2.333333, 99.800561, 0.000000, 0.000000 +2.350000, 99.800561, 0.000000, 0.000000 +2.366667, 99.800561, 0.000000, 0.000000 +2.383333, 99.800561, 0.000000, 0.000000 +2.400000, 99.800561, 0.000000, 0.000000 +2.416667, 99.800561, 0.000000, 0.000000 +2.433333, 99.800561, 0.000000, 0.000000 +2.450000, 99.800561, 0.000000, 0.000000 +2.466667, 99.800561, 0.000000, 0.000000 +2.483333, 99.800561, 0.000000, 0.000000 +2.500000, 99.800561, 0.000000, 0.000000 +2.516667, 99.800561, 0.000000, 0.000000 +2.533333, 99.800561, 0.000000, 0.000000 +2.550000, 99.800561, 0.000000, 0.000000 +2.566667, 99.800561, 0.000000, 0.000000 +2.583333, 99.800561, 0.000000, 0.000000 +2.600000, 99.800561, 0.000000, 0.000000 +2.616667, 99.800561, 0.000000, 0.000000 +2.633333, 99.800561, 0.000000, 0.000000 +2.650000, 99.800561, 0.000000, 0.000000 +2.666667, 99.800561, 0.000000, 0.000000 +2.683333, 99.800561, 0.000000, 0.000000 +2.700000, 99.800561, 0.000000, 0.000000 +2.716667, 99.800561, 0.000000, 0.000000 +2.733333, 99.800561, 0.000000, 0.000000 +2.750000, 99.800561, 0.000000, 0.000000 +2.766667, 99.800561, 0.000000, 0.000000 +2.783333, 99.800561, 0.000000, 0.000000 +2.800000, 99.800561, 0.000000, 0.000000 +2.816667, 99.800561, 0.000000, 0.000000 +2.833333, 99.800561, 0.000000, 0.000000 +2.850000, 99.800561, 0.000000, 0.000000 +2.866667, 99.800561, 0.000000, 0.000000 +2.883333, 99.800561, 0.000000, 0.000000 +2.900000, 99.800561, 0.000000, 0.000000 +2.916667, 99.800561, 0.000000, 0.000000 +2.933333, 99.800561, 0.000000, 0.000000 +2.950000, 99.800561, 0.000000, 0.000000 +2.966667, 99.800561, 0.000000, 0.000000 +2.983333, 99.800561, 0.000000, 0.000000 +3.000000, 99.800561, 0.000000, 0.000000 +3.016667, 99.800561, 0.000000, 0.000000 +3.033333, 99.800561, 0.000000, 0.000000 +3.050000, 99.800561, 0.000000, 0.000000 +3.066667, 99.800561, 0.000000, 0.000000 +3.083333, 99.800561, 0.000000, 0.000000 +3.100000, 99.800561, 0.000000, 0.000000 +3.116667, 99.800561, 0.000000, 0.000000 +3.133333, 99.800561, 0.000000, 0.000000 +3.150000, 99.800561, 0.000000, 0.000000 +3.166667, 99.800561, 0.000000, 0.000000 +3.183333, 99.800561, 0.000000, 0.000000 +3.200000, 99.800561, 0.000000, 0.000000 +3.216667, 99.800561, 0.000000, 0.000000 +3.233333, 99.800561, 0.000000, 0.000000 +3.250000, 99.800561, 0.000000, 0.000000 +3.266667, 99.800561, 0.000000, 0.000000 +3.283333, 99.800561, 0.000000, 0.000000 +3.300000, 99.800561, 0.000000, 0.000000 +3.316667, 99.800561, 0.000000, 0.000000 +3.333333, 99.800561, 0.000000, 0.000000 +3.350000, 99.800561, 0.000000, 0.000000 +3.366667, 99.800561, 0.000000, 0.000000 +3.383333, 99.800561, 0.000000, 0.000000 +3.400000, 99.800561, 0.000000, 0.000000 +3.416667, 99.800561, 0.000000, 0.000000 +3.433333, 99.800561, 0.000000, 0.000000 +3.450000, 99.800561, 0.000000, 0.000000 +3.466667, 99.800561, 0.000000, 0.000000 +3.483333, 99.800561, 0.000000, 0.000000 +3.500000, 99.800561, 0.000000, 0.000000 +3.516667, 99.800561, 0.000000, 0.000000 +3.533333, 99.800561, 0.000000, 0.000000 +3.550000, 99.800561, 0.000000, 0.000000 +3.566667, 99.800561, 0.000000, 0.000000 +3.583333, 99.800561, 0.000000, 0.000000 +3.600000, 99.800561, 0.000000, 0.000000 +3.616667, 99.800561, 0.000000, 0.000000 +3.633333, 99.800561, 0.000000, 0.000000 +3.650000, 99.800561, 0.000000, 0.000000 +3.666667, 99.800561, 0.000000, 0.000000 +3.683333, 99.800561, 0.000000, 0.000000 +3.700000, 99.800561, 0.000000, 0.000000 +3.716667, 99.800561, 0.000000, 0.000000 +3.733333, 99.800561, 0.000000, 0.000000 +3.750000, 99.800561, 0.000000, 0.000000 +3.766667, 99.800561, 0.000000, 0.000000 +3.783333, 99.800561, 0.000000, 0.000000 +3.800000, 99.800561, 0.000000, 0.000000 +3.816667, 99.800561, 0.000000, 0.000000 +3.833333, 99.800561, 0.000000, 0.000000 +3.850000, 99.800561, 0.000000, 0.000000 +3.866667, 99.800561, 0.000000, 0.000000 +3.883333, 99.800561, 0.000000, 0.000000 +3.900000, 99.800561, 0.000000, 0.000000 +3.916667, 99.800561, 0.000000, 0.000000 +3.933333, 99.800561, 0.000000, 0.000000 +3.950000, 99.800561, 0.000000, 0.000000 +3.966667, 99.800561, 0.000000, 0.000000 +3.983333, 99.800561, 0.000000, 0.000000 +4.000000, 99.800561, 0.000000, 0.000000 diff --git a/unittests/test_charging_models/original_dxfc_models/xfc_350_bev250_ld2_300kW.csv b/unittests/test_charging_models/original_dxfc_models/xfc_350_bev250_ld2_300kW.csv new file mode 100644 index 0000000..8e01fb2 --- /dev/null +++ b/unittests/test_charging_models/original_dxfc_models/xfc_350_bev250_ld2_300kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 3.021556, 159.538156, 162.648176 +1.016667, 7.805410, 252.587480, 259.071184 +1.033333, 12.790122, 263.192819, 270.136528 +1.050000, 17.839840, 266.625089, 273.721027 +1.066667, 22.935771, 269.065174, 276.270337 +1.083333, 28.078256, 271.523174, 278.839204 +1.100000, 33.267703, 274.002805, 281.431535 +1.116667, 38.504525, 276.504243, 284.047535 +1.133333, 43.789140, 279.027662, 286.687413 +1.150000, 49.121967, 281.573241, 289.351378 +1.166667, 54.503428, 284.141158, 292.039642 +1.183333, 59.933951, 286.731592, 294.752418 +1.200000, 65.413964, 289.344724, 297.489922 +1.216667, 70.943887, 291.979912, 300.251505 +1.233333, 75.973014, 265.537907, 272.585448 +1.250000, 80.088498, 217.297577, 222.362655 +1.266667, 83.437287, 176.816060, 180.463642 +1.283333, 86.160178, 143.768624, 146.422891 +1.300000, 88.372907, 116.832069, 118.784244 +1.316667, 90.170243, 94.899355, 96.350454 +1.333333, 91.629635, 77.055883, 78.145676 +1.350000, 92.814274, 62.548988, 63.375470 +1.366667, 93.799801, 52.035788, 52.688412 +1.383333, 94.662384, 45.544372, 46.096738 +1.400000, 95.418664, 39.931582, 40.401613 +1.416667, 96.081697, 35.008159, 35.409283 +1.433333, 96.662941, 30.689692, 31.032921 +1.450000, 97.172455, 26.902331, 27.196742 +1.466667, 97.619067, 23.581132, 23.834234 +1.483333, 98.010526, 20.669003, 20.887038 +1.500000, 98.353627, 18.115779, 18.303954 +1.516667, 98.654336, 15.877395, 16.040072 +1.533333, 98.917880, 13.915158, 14.056004 +1.550000, 99.148848, 12.195098, 12.317210 +1.566667, 99.351261, 10.687404, 10.793401 +1.583333, 99.528646, 9.365914, 9.458023 +1.600000, 99.684094, 8.207676, 8.287795 +1.616667, 99.800094, 6.124765, 6.183747 +1.633333, 99.800190, 0.005104, 0.005151 +1.650000, 99.800190, 0.000000, 0.000000 +1.666667, 99.800190, 0.000000, 0.000000 +1.683333, 99.800190, 0.000000, 0.000000 +1.700000, 99.800190, 0.000000, 0.000000 +1.716667, 99.800190, 0.000000, 0.000000 +1.733333, 99.800190, 0.000000, 0.000000 +1.750000, 99.800190, 0.000000, 0.000000 +1.766667, 99.800190, 0.000000, 0.000000 +1.783333, 99.800190, 0.000000, 0.000000 +1.800000, 99.800190, 0.000000, 0.000000 +1.816667, 99.800190, 0.000000, 0.000000 +1.833333, 99.800190, 0.000000, 0.000000 +1.850000, 99.800190, 0.000000, 0.000000 +1.866667, 99.800190, 0.000000, 0.000000 +1.883333, 99.800190, 0.000000, 0.000000 +1.900000, 99.800190, 0.000000, 0.000000 +1.916667, 99.800190, 0.000000, 0.000000 +1.933333, 99.800190, 0.000000, 0.000000 +1.950000, 99.800190, 0.000000, 0.000000 +1.966667, 99.800190, 0.000000, 0.000000 +1.983333, 99.800190, 0.000000, 0.000000 +2.000000, 99.800190, 0.000000, 0.000000 +2.016667, 99.800190, 0.000000, 0.000000 +2.033333, 99.800190, 0.000000, 0.000000 +2.050000, 99.800190, 0.000000, 0.000000 +2.066667, 99.800190, 0.000000, 0.000000 +2.083333, 99.800190, 0.000000, 0.000000 +2.100000, 99.800190, 0.000000, 0.000000 +2.116667, 99.800190, 0.000000, 0.000000 +2.133333, 99.800190, 0.000000, 0.000000 +2.150000, 99.800190, 0.000000, 0.000000 +2.166667, 99.800190, 0.000000, 0.000000 +2.183333, 99.800190, 0.000000, 0.000000 +2.200000, 99.800190, 0.000000, 0.000000 +2.216667, 99.800190, 0.000000, 0.000000 +2.233333, 99.800190, 0.000000, 0.000000 +2.250000, 99.800190, 0.000000, 0.000000 +2.266667, 99.800190, 0.000000, 0.000000 +2.283333, 99.800190, 0.000000, 0.000000 +2.300000, 99.800190, 0.000000, 0.000000 +2.316667, 99.800190, 0.000000, 0.000000 +2.333333, 99.800190, 0.000000, 0.000000 +2.350000, 99.800190, 0.000000, 0.000000 +2.366667, 99.800190, 0.000000, 0.000000 +2.383333, 99.800190, 0.000000, 0.000000 +2.400000, 99.800190, 0.000000, 0.000000 +2.416667, 99.800190, 0.000000, 0.000000 +2.433333, 99.800190, 0.000000, 0.000000 +2.450000, 99.800190, 0.000000, 0.000000 +2.466667, 99.800190, 0.000000, 0.000000 +2.483333, 99.800190, 0.000000, 0.000000 +2.500000, 99.800190, 0.000000, 0.000000 +2.516667, 99.800190, 0.000000, 0.000000 +2.533333, 99.800190, 0.000000, 0.000000 +2.550000, 99.800190, 0.000000, 0.000000 +2.566667, 99.800190, 0.000000, 0.000000 +2.583333, 99.800190, 0.000000, 0.000000 +2.600000, 99.800190, 0.000000, 0.000000 +2.616667, 99.800190, 0.000000, 0.000000 +2.633333, 99.800190, 0.000000, 0.000000 +2.650000, 99.800190, 0.000000, 0.000000 +2.666667, 99.800190, 0.000000, 0.000000 +2.683333, 99.800190, 0.000000, 0.000000 +2.700000, 99.800190, 0.000000, 0.000000 +2.716667, 99.800190, 0.000000, 0.000000 +2.733333, 99.800190, 0.000000, 0.000000 +2.750000, 99.800190, 0.000000, 0.000000 +2.766667, 99.800190, 0.000000, 0.000000 +2.783333, 99.800190, 0.000000, 0.000000 +2.800000, 99.800190, 0.000000, 0.000000 +2.816667, 99.800190, 0.000000, 0.000000 +2.833333, 99.800190, 0.000000, 0.000000 +2.850000, 99.800190, 0.000000, 0.000000 +2.866667, 99.800190, 0.000000, 0.000000 +2.883333, 99.800190, 0.000000, 0.000000 +2.900000, 99.800190, 0.000000, 0.000000 +2.916667, 99.800190, 0.000000, 0.000000 +2.933333, 99.800190, 0.000000, 0.000000 +2.950000, 99.800190, 0.000000, 0.000000 +2.966667, 99.800190, 0.000000, 0.000000 +2.983333, 99.800190, 0.000000, 0.000000 +3.000000, 99.800190, 0.000000, 0.000000 +3.016667, 99.800190, 0.000000, 0.000000 +3.033333, 99.800190, 0.000000, 0.000000 +3.050000, 99.800190, 0.000000, 0.000000 +3.066667, 99.800190, 0.000000, 0.000000 +3.083333, 99.800190, 0.000000, 0.000000 +3.100000, 99.800190, 0.000000, 0.000000 +3.116667, 99.800190, 0.000000, 0.000000 +3.133333, 99.800190, 0.000000, 0.000000 +3.150000, 99.800190, 0.000000, 0.000000 +3.166667, 99.800190, 0.000000, 0.000000 +3.183333, 99.800190, 0.000000, 0.000000 +3.200000, 99.800190, 0.000000, 0.000000 +3.216667, 99.800190, 0.000000, 0.000000 +3.233333, 99.800190, 0.000000, 0.000000 +3.250000, 99.800190, 0.000000, 0.000000 +3.266667, 99.800190, 0.000000, 0.000000 +3.283333, 99.800190, 0.000000, 0.000000 +3.300000, 99.800190, 0.000000, 0.000000 +3.316667, 99.800190, 0.000000, 0.000000 +3.333333, 99.800190, 0.000000, 0.000000 +3.350000, 99.800190, 0.000000, 0.000000 +3.366667, 99.800190, 0.000000, 0.000000 +3.383333, 99.800190, 0.000000, 0.000000 +3.400000, 99.800190, 0.000000, 0.000000 +3.416667, 99.800190, 0.000000, 0.000000 +3.433333, 99.800190, 0.000000, 0.000000 +3.450000, 99.800190, 0.000000, 0.000000 +3.466667, 99.800190, 0.000000, 0.000000 +3.483333, 99.800190, 0.000000, 0.000000 +3.500000, 99.800190, 0.000000, 0.000000 +3.516667, 99.800190, 0.000000, 0.000000 +3.533333, 99.800190, 0.000000, 0.000000 +3.550000, 99.800190, 0.000000, 0.000000 +3.566667, 99.800190, 0.000000, 0.000000 +3.583333, 99.800190, 0.000000, 0.000000 +3.600000, 99.800190, 0.000000, 0.000000 +3.616667, 99.800190, 0.000000, 0.000000 +3.633333, 99.800190, 0.000000, 0.000000 +3.650000, 99.800190, 0.000000, 0.000000 +3.666667, 99.800190, 0.000000, 0.000000 +3.683333, 99.800190, 0.000000, 0.000000 +3.700000, 99.800190, 0.000000, 0.000000 +3.716667, 99.800190, 0.000000, 0.000000 +3.733333, 99.800190, 0.000000, 0.000000 +3.750000, 99.800190, 0.000000, 0.000000 +3.766667, 99.800190, 0.000000, 0.000000 +3.783333, 99.800190, 0.000000, 0.000000 +3.800000, 99.800190, 0.000000, 0.000000 +3.816667, 99.800190, 0.000000, 0.000000 +3.833333, 99.800190, 0.000000, 0.000000 +3.850000, 99.800190, 0.000000, 0.000000 +3.866667, 99.800190, 0.000000, 0.000000 +3.883333, 99.800190, 0.000000, 0.000000 +3.900000, 99.800190, 0.000000, 0.000000 +3.916667, 99.800190, 0.000000, 0.000000 +3.933333, 99.800190, 0.000000, 0.000000 +3.950000, 99.800190, 0.000000, 0.000000 +3.966667, 99.800190, 0.000000, 0.000000 +3.983333, 99.800190, 0.000000, 0.000000 +4.000000, 99.800190, 0.000000, 0.000000 diff --git a/unittests/test_charging_models/original_dxfc_models/xfc_350_bev300_575kW.csv b/unittests/test_charging_models/original_dxfc_models/xfc_350_bev300_575kW.csv new file mode 100644 index 0000000..0187455 --- /dev/null +++ b/unittests/test_charging_models/original_dxfc_models/xfc_350_bev300_575kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 2.625229, 224.457099, 230.262726 +1.016667, 6.836821, 360.091128, 372.390434 +1.033333, 11.074145, 362.291200, 374.715187 +1.050000, 15.337194, 364.490647, 377.039907 +1.066667, 19.626116, 366.702846, 379.378739 +1.083333, 23.941062, 368.927862, 381.731764 +1.100000, 28.282182, 371.165762, 384.099065 +1.116667, 32.649628, 373.416614, 386.480723 +1.133333, 37.043551, 375.680483, 388.876822 +1.150000, 41.464106, 377.957439, 391.287445 +1.166667, 45.911446, 380.247547, 393.712676 +1.183333, 50.385913, 382.566935, 396.169613 +1.200000, 54.917253, 387.429582, 401.322918 +1.216667, 59.527897, 394.210052, 408.513855 +1.233333, 64.206199, 399.994807, 414.653572 +1.250000, 68.933727, 404.203615, 419.123406 +1.266667, 73.710704, 408.431562, 423.615919 +1.283333, 78.537621, 412.701400, 428.155339 +1.300000, 83.426037, 417.959556, 433.748789 +1.316667, 88.409247, 426.064518, 442.377754 +1.333333, 92.802404, 375.614898, 388.807396 +1.350000, 95.679721, 246.010589, 252.693424 +1.366667, 97.448987, 151.272234, 154.524761 +1.383333, 98.537088, 93.032652, 94.714778 +1.400000, 99.209516, 57.492550, 58.413372 +1.416667, 99.626342, 35.638656, 36.164507 +1.433333, 99.802084, 15.025913, 15.229831 +1.450000, 99.802229, 0.012397, 0.012554 +1.466667, 99.802229, 0.000000, 0.000000 +1.483333, 99.802229, 0.000000, 0.000000 +1.500000, 99.802229, 0.000000, 0.000000 +1.516667, 99.802229, 0.000000, 0.000000 +1.533333, 99.802229, 0.000000, 0.000000 +1.550000, 99.802229, 0.000000, 0.000000 +1.566667, 99.802229, 0.000000, 0.000000 +1.583333, 99.802229, 0.000000, 0.000000 +1.600000, 99.802229, 0.000000, 0.000000 +1.616667, 99.802229, 0.000000, 0.000000 +1.633333, 99.802229, 0.000000, 0.000000 +1.650000, 99.802229, 0.000000, 0.000000 +1.666667, 99.802229, 0.000000, 0.000000 +1.683333, 99.802229, 0.000000, 0.000000 +1.700000, 99.802229, 0.000000, 0.000000 +1.716667, 99.802229, 0.000000, 0.000000 +1.733333, 99.802229, 0.000000, 0.000000 +1.750000, 99.802229, 0.000000, 0.000000 +1.766667, 99.802229, 0.000000, 0.000000 +1.783333, 99.802229, 0.000000, 0.000000 +1.800000, 99.802229, 0.000000, 0.000000 +1.816667, 99.802229, 0.000000, 0.000000 +1.833333, 99.802229, 0.000000, 0.000000 +1.850000, 99.802229, 0.000000, 0.000000 +1.866667, 99.802229, 0.000000, 0.000000 +1.883333, 99.802229, 0.000000, 0.000000 +1.900000, 99.802229, 0.000000, 0.000000 +1.916667, 99.802229, 0.000000, 0.000000 +1.933333, 99.802229, 0.000000, 0.000000 +1.950000, 99.802229, 0.000000, 0.000000 +1.966667, 99.802229, 0.000000, 0.000000 +1.983333, 99.802229, 0.000000, 0.000000 +2.000000, 99.802229, 0.000000, 0.000000 +2.016667, 99.802229, 0.000000, 0.000000 +2.033333, 99.802229, 0.000000, 0.000000 +2.050000, 99.802229, 0.000000, 0.000000 +2.066667, 99.802229, 0.000000, 0.000000 +2.083333, 99.802229, 0.000000, 0.000000 +2.100000, 99.802229, 0.000000, 0.000000 +2.116667, 99.802229, 0.000000, 0.000000 +2.133333, 99.802229, 0.000000, 0.000000 +2.150000, 99.802229, 0.000000, 0.000000 +2.166667, 99.802229, 0.000000, 0.000000 +2.183333, 99.802229, 0.000000, 0.000000 +2.200000, 99.802229, 0.000000, 0.000000 +2.216667, 99.802229, 0.000000, 0.000000 +2.233333, 99.802229, 0.000000, 0.000000 +2.250000, 99.802229, 0.000000, 0.000000 +2.266667, 99.802229, 0.000000, 0.000000 +2.283333, 99.802229, 0.000000, 0.000000 +2.300000, 99.802229, 0.000000, 0.000000 +2.316667, 99.802229, 0.000000, 0.000000 +2.333333, 99.802229, 0.000000, 0.000000 +2.350000, 99.802229, 0.000000, 0.000000 +2.366667, 99.802229, 0.000000, 0.000000 +2.383333, 99.802229, 0.000000, 0.000000 +2.400000, 99.802229, 0.000000, 0.000000 +2.416667, 99.802229, 0.000000, 0.000000 +2.433333, 99.802229, 0.000000, 0.000000 +2.450000, 99.802229, 0.000000, 0.000000 +2.466667, 99.802229, 0.000000, 0.000000 +2.483333, 99.802229, 0.000000, 0.000000 +2.500000, 99.802229, 0.000000, 0.000000 +2.516667, 99.802229, 0.000000, 0.000000 +2.533333, 99.802229, 0.000000, 0.000000 +2.550000, 99.802229, 0.000000, 0.000000 +2.566667, 99.802229, 0.000000, 0.000000 +2.583333, 99.802229, 0.000000, 0.000000 +2.600000, 99.802229, 0.000000, 0.000000 +2.616667, 99.802229, 0.000000, 0.000000 +2.633333, 99.802229, 0.000000, 0.000000 +2.650000, 99.802229, 0.000000, 0.000000 +2.666667, 99.802229, 0.000000, 0.000000 +2.683333, 99.802229, 0.000000, 0.000000 +2.700000, 99.802229, 0.000000, 0.000000 +2.716667, 99.802229, 0.000000, 0.000000 +2.733333, 99.802229, 0.000000, 0.000000 +2.750000, 99.802229, 0.000000, 0.000000 +2.766667, 99.802229, 0.000000, 0.000000 +2.783333, 99.802229, 0.000000, 0.000000 +2.800000, 99.802229, 0.000000, 0.000000 +2.816667, 99.802229, 0.000000, 0.000000 +2.833333, 99.802229, 0.000000, 0.000000 +2.850000, 99.802229, 0.000000, 0.000000 +2.866667, 99.802229, 0.000000, 0.000000 +2.883333, 99.802229, 0.000000, 0.000000 +2.900000, 99.802229, 0.000000, 0.000000 +2.916667, 99.802229, 0.000000, 0.000000 +2.933333, 99.802229, 0.000000, 0.000000 +2.950000, 99.802229, 0.000000, 0.000000 +2.966667, 99.802229, 0.000000, 0.000000 +2.983333, 99.802229, 0.000000, 0.000000 +3.000000, 99.802229, 0.000000, 0.000000 +3.016667, 99.802229, 0.000000, 0.000000 +3.033333, 99.802229, 0.000000, 0.000000 +3.050000, 99.802229, 0.000000, 0.000000 +3.066667, 99.802229, 0.000000, 0.000000 +3.083333, 99.802229, 0.000000, 0.000000 +3.100000, 99.802229, 0.000000, 0.000000 +3.116667, 99.802229, 0.000000, 0.000000 +3.133333, 99.802229, 0.000000, 0.000000 +3.150000, 99.802229, 0.000000, 0.000000 +3.166667, 99.802229, 0.000000, 0.000000 +3.183333, 99.802229, 0.000000, 0.000000 +3.200000, 99.802229, 0.000000, 0.000000 +3.216667, 99.802229, 0.000000, 0.000000 +3.233333, 99.802229, 0.000000, 0.000000 +3.250000, 99.802229, 0.000000, 0.000000 +3.266667, 99.802229, 0.000000, 0.000000 +3.283333, 99.802229, 0.000000, 0.000000 +3.300000, 99.802229, 0.000000, 0.000000 +3.316667, 99.802229, 0.000000, 0.000000 +3.333333, 99.802229, 0.000000, 0.000000 +3.350000, 99.802229, 0.000000, 0.000000 +3.366667, 99.802229, 0.000000, 0.000000 +3.383333, 99.802229, 0.000000, 0.000000 +3.400000, 99.802229, 0.000000, 0.000000 +3.416667, 99.802229, 0.000000, 0.000000 +3.433333, 99.802229, 0.000000, 0.000000 +3.450000, 99.802229, 0.000000, 0.000000 +3.466667, 99.802229, 0.000000, 0.000000 +3.483333, 99.802229, 0.000000, 0.000000 +3.500000, 99.802229, 0.000000, 0.000000 +3.516667, 99.802229, 0.000000, 0.000000 +3.533333, 99.802229, 0.000000, 0.000000 +3.550000, 99.802229, 0.000000, 0.000000 +3.566667, 99.802229, 0.000000, 0.000000 +3.583333, 99.802229, 0.000000, 0.000000 +3.600000, 99.802229, 0.000000, 0.000000 +3.616667, 99.802229, 0.000000, 0.000000 +3.633333, 99.802229, 0.000000, 0.000000 +3.650000, 99.802229, 0.000000, 0.000000 +3.666667, 99.802229, 0.000000, 0.000000 +3.683333, 99.802229, 0.000000, 0.000000 +3.700000, 99.802229, 0.000000, 0.000000 +3.716667, 99.802229, 0.000000, 0.000000 +3.733333, 99.802229, 0.000000, 0.000000 +3.750000, 99.802229, 0.000000, 0.000000 +3.766667, 99.802229, 0.000000, 0.000000 +3.783333, 99.802229, 0.000000, 0.000000 +3.800000, 99.802229, 0.000000, 0.000000 +3.816667, 99.802229, 0.000000, 0.000000 +3.833333, 99.802229, 0.000000, 0.000000 +3.850000, 99.802229, 0.000000, 0.000000 +3.866667, 99.802229, 0.000000, 0.000000 +3.883333, 99.802229, 0.000000, 0.000000 +3.900000, 99.802229, 0.000000, 0.000000 +3.916667, 99.802229, 0.000000, 0.000000 +3.933333, 99.802229, 0.000000, 0.000000 +3.950000, 99.802229, 0.000000, 0.000000 +3.966667, 99.802229, 0.000000, 0.000000 +3.983333, 99.802229, 0.000000, 0.000000 +4.000000, 99.802229, 0.000000, 0.000000 diff --git a/unittests/test_charging_models/validate.py b/unittests/test_charging_models/validate.py new file mode 100644 index 0000000..908a838 --- /dev/null +++ b/unittests/test_charging_models/validate.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- +""" +Created on Sat May 20 22:27:35 2023 + +@author: CEBOM +""" + +import glob +import pandas as pd +import numpy as np +#import matplotlib.pyplot as plt + +files = glob.glob("*.csv") + +for file in files: + original_file = "original_dxfc_models/" + file + + original_df = pd.read_csv(original_file) + new_df = pd.read_csv(file) + + tolerance = 1 + bool_array = np.isclose(original_df, new_df, rtol=tolerance, atol=tolerance) + count_false = np.count_nonzero(bool_array == False) + count_true = np.count_nonzero(bool_array == True) + + error_rate = (count_false/(count_true+count_false))*100 + + #equal = np.allclose(original_df, new_df, atol=tolerance) + + # Check if the DataFrames are equal + if error_rate < 0.5: + print("{} The DataFrames are equal within the tolerance.".format(file.split(".")[0])) + else: + print("{} The DataFrames are not equal within the tolerance.".format(file.split(".")[0])) + exit(1) + +exit(0) + + +# fig = plt.figure(figsize=(8, 6)) +# plt.plot(original_df["simulation_time_hrs"], original_df[" soc_t1"], label = "original") +# plt.plot(new_df["simulation_time_hrs"], new_df[" soc_t1"], label = "new") + +# plt.plot(original_df["simulation_time_hrs"], original_df[" P2_kW"], label = "original") +# plt.plot(new_df["simulation_time_hrs"], new_df[" P2_kW"], label = "new") + +# plt.legend() +# plt.show() + +#fig.savefig("test") \ No newline at end of file From 06f8c4cf3e8a2756e16bfa6e0ed3b79012a1554b Mon Sep 17 00:00:00 2001 From: Manoj Kumar Cebol Sundarrajan Date: Sun, 21 May 2023 23:27:07 -0600 Subject: [PATCH 13/52] update gitignore --- unittests/test_charging_models/.gitignore | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/unittests/test_charging_models/.gitignore b/unittests/test_charging_models/.gitignore index a74c966..9bc969e 100644 --- a/unittests/test_charging_models/.gitignore +++ b/unittests/test_charging_models/.gitignore @@ -1,2 +1 @@ -*.csv -!/**/*.csv \ No newline at end of file +/*.csv \ No newline at end of file From 4c659dd1c05042ba4e1dfe2275d4607a84dba032 Mon Sep 17 00:00:00 2001 From: Manoj Kumar Cebol Sundarrajan Date: Tue, 23 May 2023 13:34:20 -0600 Subject: [PATCH 14/52] Updated python interface for new ICM updates --- source/CMakeLists.txt | 74 +- source/base/Aux_interface.cpp | 20 +- source/base/Aux_interface.h | 15 +- source/base/Aux_python_bind.cpp | 11 +- source/base/CMakeLists.txt | 62 +- source/base/ICM_interface.cpp | 11 +- source/base/ICM_interface.h | 6 +- source/base/ICM_python_bind.cpp | 7 +- source/base/helper.cpp | 13 +- source/base/inputs.h | 8 +- source/charging_models/CMakeLists.txt | 7 +- .../charging_models_python_bind.cpp | 1169 +++++++++++++++++ 12 files changed, 1248 insertions(+), 155 deletions(-) create mode 100644 source/charging_models/charging_models_python_bind.cpp diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt index d139e1e..c645a45 100644 --- a/source/CMakeLists.txt +++ b/source/CMakeLists.txt @@ -3,65 +3,15 @@ add_subdirectory(charging_models) add_subdirectory(factory) add_subdirectory(load_inputs) - -add_executable(tests main.cpp ) -target_link_libraries(tests Charging_models Load_inputs factory Base) -target_compile_features(tests PUBLIC cxx_std_17) -target_include_directories(tests PUBLIC ${PROJECT_SOURCE_DIR}/source/base) -target_include_directories(tests PUBLIC ${PROJECT_SOURCE_DIR}/source/charging_models) -target_include_directories(tests PUBLIC ${PROJECT_SOURCE_DIR}/source/factory) -target_include_directories(tests PUBLIC ${PROJECT_SOURCE_DIR}/source/load_inputs) - -install(TARGETS tests - DESTINATION ${PROJECT_SOURCE_DIR}/source) - -#[===[ -cmake_minimum_required(VERSION 3.5) - -project(CalderaICM) - -set(CMAKE_POSITION_INDEPENDENT_CODE ON) - -if (NOT DEFINED INSTALL_DIR) - message(STATUS "setting local install dir") - set(INSTALL_DIR ${PROJECT_SOURCE_DIR}) -endif() - -message(STATUS "Install dir is ${INSTALL_DIR}") - -set(LOAD_SOURCE_FILES "load_inputs/load_helper.cpp" - "load_inputs/load_EV_EVSE_inventory.cpp" - "load_inputs/load_EV_inventory.cpp" - "load_inputs/load_EVSE_inventory.cpp") - -set(FACTORY_SOURCE_FILES "factory/EV_charge_model_factory.cpp" - "factory/charging_transitions_factory.cpp" - "factory/P2_vs_battery_efficiency_factory.cpp" - "factory/puVrms_vs_P2_factory.cpp" - "factory/SOC_vs_P2_factory.cpp" -) - -set(MODELS_SOURCE_FILES "charging_models/EV_characteristics.cpp" - "charging_models/EV_EVSE_inventory.cpp" - "charging_models/EVSE_characteristics.cpp" - "charging_models/datatypes_global.cpp") - -set(BASE_SOURCE_FILES "base/battery_calculate_limits.cpp" - "base/battery_integrate_X_in_time.cpp" - "base/vehicle_charge_model.cpp" - "base/battery.cpp" - "base/helper.cpp") - -add_executable(models_test ${MODELS_SOURCE_FILES} ${LOAD_SOURCE_FILES} ${FACTORY_SOURCE_FILES} ${BASE_SOURCE_FILES} "main.cpp") - -target_compile_features(models_test PUBLIC cxx_std_17) -target_include_directories(models_test PUBLIC ${PROJECT_SOURCE_DIR}/charging_models) -target_include_directories(models_test PUBLIC ${PROJECT_SOURCE_DIR}/factory) -target_include_directories(models_test PUBLIC ${PROJECT_SOURCE_DIR}/load_inputs) -target_include_directories(models_test PUBLIC ${PROJECT_SOURCE_DIR}/base) - -install(TARGETS models_test - DESTINATION ${INSTALL_DIR}) - - -]===] \ No newline at end of file +if(CMAKE_BUILD_TYPE STREQUAL "Debug") + add_executable(tests main.cpp ) + target_link_libraries(tests Charging_models Load_inputs factory Base) + target_compile_features(tests PUBLIC cxx_std_17) + target_include_directories(tests PUBLIC ${PROJECT_SOURCE_DIR}/source/base) + target_include_directories(tests PUBLIC ${PROJECT_SOURCE_DIR}/source/charging_models) + target_include_directories(tests PUBLIC ${PROJECT_SOURCE_DIR}/source/factory) + target_include_directories(tests PUBLIC ${PROJECT_SOURCE_DIR}/source/load_inputs) + + install(TARGETS tests + DESTINATION ${PROJECT_SOURCE_DIR}/source) +endif() \ No newline at end of file diff --git a/source/base/Aux_interface.cpp b/source/base/Aux_interface.cpp index 0b537f2..f16b0b2 100644 --- a/source/base/Aux_interface.cpp +++ b/source/base/Aux_interface.cpp @@ -40,15 +40,17 @@ std::vector get_pevType_batterySize_map() // Get Charge Profile Object //############################################################################# -CP_interface::CP_interface(const EV_EVSE_inventory& inventory) - : inventory{ inventory }, +CP_interface::CP_interface(const std::string& input_path) + : loader{ load_EV_EVSE_inventory{ input_path } }, + inventory{ this->loader.get_EV_EVSE_inventory() }, CP_library{ load_CP_library(inventory, false) } { } -CP_interface::CP_interface(const EV_EVSE_inventory& inventory, bool save_validation_data) - : inventory{ inventory }, +CP_interface::CP_interface(const std::string& input_path, bool save_validation_data) + : loader{ load_EV_EVSE_inventory{ input_path } }, + inventory{ this->loader.get_EV_EVSE_inventory() }, CP_library{ load_CP_library(inventory, save_validation_data) } { } @@ -183,19 +185,21 @@ all_charge_profile_data CP_interface_v2::create_charge_profile_from_model(double return return_val; } -CP_interface_v2::CP_interface_v2(const EV_EVSE_inventory& inventory) - : inventory(inventory), +CP_interface_v2::CP_interface_v2(const std::string& input_path) + : loader{ load_EV_EVSE_inventory{ input_path } }, + inventory{ this->loader.get_EV_EVSE_inventory() }, CP_library_v2{ pev_charge_profile_library_v2 {this->inventory} } {}; -CP_interface_v2::CP_interface_v2(const EV_EVSE_inventory& inventory, +CP_interface_v2::CP_interface_v2(const std::string& input_path, double L1_timestep_sec, double L2_timestep_sec, double HPC_timestep_sec, EV_ramping_map ramping_by_pevType_only, EV_EVSE_ramping_map ramping_by_pevType_seType) - : inventory{ inventory }, + : loader{ load_EV_EVSE_inventory{ input_path } }, + inventory{ this->loader.get_EV_EVSE_inventory() }, CP_library_v2{ factory_charge_profile_library_v2{this->inventory, ramping_by_pevType_only, ramping_by_pevType_seType}.get_charge_profile_library(L1_timestep_sec, L2_timestep_sec, HPC_timestep_sec)} { } diff --git a/source/base/Aux_interface.h b/source/base/Aux_interface.h index b3d0e1f..009a4dc 100644 --- a/source/base/Aux_interface.h +++ b/source/base/Aux_interface.h @@ -3,10 +3,9 @@ #define inl_Aux_interface_H #include "datatypes_global.h" // SE_id_type, station_charge_event_data, station_status -//#include "datatypes_global_SE_EV_definitions.h" // pev_SE_pair, get_EVSE_type, get_EV_type, supply_equipment_is_L1, supply_equipment_is_L2, pev_is_compatible_with_supply_equipment #include "charge_profile_library.h" // pev_charge_profile_library #include "helper.h" // get_base_load_forecast - +#include "load_EV_EVSE_inventory.h" //std::vector get_pevType_batterySize_map(); @@ -15,14 +14,16 @@ class CP_interface { private: + + const load_EV_EVSE_inventory loader; const EV_EVSE_inventory& inventory; pev_charge_profile_library CP_library; std::map< std::pair, std::vector > CP_validation_data; public: - CP_interface(const EV_EVSE_inventory& inventory); - CP_interface(const EV_EVSE_inventory& inventory, bool save_validation_data); + CP_interface(const std::string& input_path); + CP_interface(const std::string& input_path, bool save_validation_data); pev_charge_profile_library load_CP_library(const EV_EVSE_inventory& inventory, bool save_validation_data); @@ -45,13 +46,15 @@ class CP_interface class CP_interface_v2 { private: + + const load_EV_EVSE_inventory loader; const EV_EVSE_inventory& inventory; pev_charge_profile_library_v2 CP_library_v2; double timestep_sec; public: - CP_interface_v2(const EV_EVSE_inventory& inventory); - CP_interface_v2(const EV_EVSE_inventory& inventory, + CP_interface_v2(const std::string& input_path); + CP_interface_v2(const std::string& input_path, double L1_timestep_sec, double L2_timestep_sec, double HPC_timestep_sec, diff --git a/source/base/Aux_python_bind.cpp b/source/base/Aux_python_bind.cpp index 6c506ee..de63058 100644 --- a/source/base/Aux_python_bind.cpp +++ b/source/base/Aux_python_bind.cpp @@ -1,7 +1,6 @@ #include "Aux_interface.h" #include "datatypes_global.h" -#include "datatypes_global_SE_EV_definitions.h" #include "helper.h" // get_value_from_normal_distribution, get_real_value_from_uniform_distribution, get_int_value_from_uniform_distribution, get_bernoulli_success #include @@ -12,11 +11,11 @@ namespace py = pybind11; PYBIND11_MODULE(Caldera_ICM_Aux, m) { - m.def("get_pevType_batterySize_map", &get_pevType_batterySize_map); +// m.def("get_pevType_batterySize_map", &get_pevType_batterySize_map); py::class_(m, "CP_interface") - .def(py::init<>()) - .def(py::init()) + .def(py::init()) + .def(py::init()) .def("get_size_of_CP_library_MB", &CP_interface::get_size_of_CP_library_MB) .def("get_CP_validation_data", &CP_interface::get_CP_validation_data) .def("get_charge_event_P3kW_limits", &CP_interface::get_charge_event_P3kW_limits) @@ -28,8 +27,8 @@ PYBIND11_MODULE(Caldera_ICM_Aux, m) .def("USE_FOR_DEBUG_PURPOSES_ONLY_get_raw_charge_profile", &CP_interface::USE_FOR_DEBUG_PURPOSES_ONLY_get_raw_charge_profile); py::class_(m, "CP_interface_v2") - .def(py::init<>()) - .def(py::init, std::map< std::tuple, pev_charge_ramping> >()) + .def(py::init()) + .def(py::init()) .def("get_P3kW_charge_profile", &CP_interface_v2::get_P3kW_charge_profile) .def("get_timestep_of_prev_call_sec", &CP_interface_v2::get_timestep_of_prev_call_sec) .def("get_all_charge_profile_data", &CP_interface_v2::get_all_charge_profile_data) diff --git a/source/base/CMakeLists.txt b/source/base/CMakeLists.txt index f264e19..55e8529 100644 --- a/source/base/CMakeLists.txt +++ b/source/base/CMakeLists.txt @@ -15,12 +15,18 @@ set(BASE_FILES "datatypes_module.cpp" "ICM_interface.cpp") add_library(Base STATIC ${BASE_FILES}) +target_link_libraries(Base PRIVATE Charging_models) +target_link_libraries(Base PRIVATE factory) +target_link_libraries(Base PRIVATE Load_inputs) target_include_directories(Base PUBLIC ${PROJECT_SOURCE_DIR}/source/base) target_include_directories(Base PUBLIC ${PROJECT_SOURCE_DIR}/source/charging_models) target_include_directories(Base PUBLIC ${PROJECT_SOURCE_DIR}/source/factory) target_include_directories(Base PUBLIC ${PROJECT_SOURCE_DIR}/source/load_inputs) - +pybind11_add_module(Caldera_ICM MODULE ICM_python_bind.cpp) +target_link_libraries(Caldera_ICM PRIVATE Base) +install(TARGETS Caldera_ICM + DESTINATION ${INSTALL_DIR}) set(BASE_AUX_FILES "datatypes_module.cpp" "ac_to_dc_converter.cpp" @@ -38,57 +44,15 @@ set(BASE_AUX_FILES "datatypes_module.cpp" "Aux_interface.cpp") add_library(Base_aux STATIC ${BASE_AUX_FILES}) -target_include_directories(Base PUBLIC ${PROJECT_SOURCE_DIR}/source/base) +target_link_libraries(Base_aux PRIVATE Charging_models) +target_link_libraries(Base_aux PRIVATE factory) +target_link_libraries(Base_aux PRIVATE Load_inputs) +target_include_directories(Base_aux PUBLIC ${PROJECT_SOURCE_DIR}/source/base) target_include_directories(Base_aux PUBLIC ${PROJECT_SOURCE_DIR}/source/charging_models) target_include_directories(Base_aux PUBLIC ${PROJECT_SOURCE_DIR}/source/factory) target_include_directories(Base_aux PUBLIC ${PROJECT_SOURCE_DIR}/source/load_inputs) - -#[===[ - -set(GLOBALS_DIR ${PROJECT_SOURCE_DIR}/source/charging_models) - -option(ICM "compile caldera_ICM library" OFF) - -if(ICM) - add_library(Caldera_ICM_lib STATIC datatypes_module.cpp ac_to_dc_converter.cpp helper.cpp battery_calculate_limits.cpp - battery_integrate_X_in_time.cpp battery.cpp vehicle_charge_model.cpp supply_equipment_load.cpp - supply_equipment_control.cpp supply_equipment.cpp supply_equipment_group.cpp charge_profile_library.cpp - SE_EV_factory_charge_profile.cpp charge_profile_downsample_fragments.cpp ICM_interface.cpp - ${GLOBALS_DIR}/datatypes_global.cpp ${GLOBALS_DIR}/${PROJECT}/SE_EV_factory.cpp - ${GLOBALS_DIR}/${PROJECT}/datatypes_global_SE_EV_definitions.cpp) - - target_include_directories(Caldera_ICM_lib PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) - target_include_directories(Caldera_ICM_lib PUBLIC ${GLOBALS_DIR}) - target_include_directories(Caldera_ICM_lib PUBLIC ${GLOBALS_DIR}/${PROJECT}) - - pybind11_add_module(Caldera_ICM MODULE ICM_python_bind.cpp) - target_link_libraries(Caldera_ICM PRIVATE Caldera_ICM_lib) - - message(Caldera_ICM " current source dir = ${CMAKE_CURRENT_SOURCE_DIR}") - - install(TARGETS Caldera_ICM - DESTINATION ${INSTALL_DIR}) -endif() - -add_library(Caldera_ICM_Aux_lib STATIC datatypes_module.cpp ac_to_dc_converter.cpp helper.cpp battery_calculate_limits.cpp - battery_integrate_X_in_time.cpp battery.cpp vehicle_charge_model.cpp supply_equipment_load.cpp - supply_equipment_control.cpp supply_equipment.cpp charge_profile_library.cpp SE_EV_factory_charge_profile.cpp - charge_profile_downsample_fragments.cpp Aux_interface.cpp - ${GLOBALS_DIR}/${PROJECT}/datatypes_global_SE_EV_definitions.cpp ${GLOBALS_DIR}/datatypes_global.cpp - ${GLOBALS_DIR}/${PROJECT}/SE_EV_factory.cpp) - -target_include_directories(Caldera_ICM_Aux_lib PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) -target_include_directories(Caldera_ICM_Aux_lib PUBLIC ${GLOBALS_DIR}) -target_include_directories(Caldera_ICM_Aux_lib PUBLIC ${GLOBALS_DIR}/${PROJECT}) - pybind11_add_module(Caldera_ICM_Aux MODULE Aux_python_bind.cpp) -target_link_libraries(Caldera_ICM_Aux PRIVATE Caldera_ICM_Aux_lib) - -message(Caldera_ICM_Aux " current source dir = ${CMAKE_CURRENT_SOURCE_DIR}") - +target_link_libraries(Caldera_ICM_Aux PRIVATE Base_aux) install(TARGETS Caldera_ICM_Aux - DESTINATION ${INSTALL_DIR}) - - -]===] \ No newline at end of file + DESTINATION ${INSTALL_DIR}) \ No newline at end of file diff --git a/source/base/ICM_interface.cpp b/source/base/ICM_interface.cpp index b6edea4..d781681 100644 --- a/source/base/ICM_interface.cpp +++ b/source/base/ICM_interface.cpp @@ -5,13 +5,16 @@ #include "SE_EV_factory_charge_profile.h" +#include "load_EV_EVSE_inventory.h" + #include #include #include - -interface_to_SE_groups::interface_to_SE_groups(const interface_to_SE_groups_inputs& inputs) - : inventory{ inputs.inventory }, +interface_to_SE_groups::interface_to_SE_groups(const std::string& input_path, + const interface_to_SE_groups_inputs& inputs) + : loader{ load_EV_EVSE_inventory(input_path) }, + inventory{ this->loader.get_EV_EVSE_inventory() }, charge_profile_library{ load_charge_profile_library(inputs) } { EV_EVSE_ramping_map ramping_by_pevType_seType_map; @@ -23,7 +26,7 @@ interface_to_SE_groups::interface_to_SE_groups(const interface_to_SE_groups_inpu //-------------------- this->EV_model_factory = new factory_EV_charge_model(this->inventory, inputs.ramping_by_pevType_only, ramping_by_pevType_seType_map, false); - + this->ac_to_dc_converter_factory = new factory_ac_to_dc_converter(this->inventory); this->baseLD_forecaster = get_base_load_forecast{ inputs.data_start_unix_time, inputs.data_timestep_sec, inputs.actual_load_akW, inputs.forecast_load_akW, inputs.adjustment_interval_hrs }; diff --git a/source/base/ICM_interface.h b/source/base/ICM_interface.h index f22243a..27139a0 100644 --- a/source/base/ICM_interface.h +++ b/source/base/ICM_interface.h @@ -19,17 +19,19 @@ #include "factory_ac_to_dc_converter.h" #include "factory_supply_equipment_model.h" +#include "load_EV_EVSE_inventory.h" class interface_to_SE_groups { private: + const load_EV_EVSE_inventory loader; const EV_EVSE_inventory& inventory; std::vector SE_group_objs; std::map SE_group_Id_to_ptr; std::map SEid_to_SE_ptr; - std::vector SE_ptr_vector; + std::vector SE_ptr_vector; std::map > gridNodeId_to_SE_ptrs; // Pointers to the following should be in every supply_equipment_load object. @@ -40,7 +42,7 @@ class interface_to_SE_groups manage_L2_control_strategy_parameters manage_L2_control; public: - interface_to_SE_groups(const interface_to_SE_groups_inputs& inputs); + interface_to_SE_groups(const std::string& input_path, const interface_to_SE_groups_inputs& inputs); ~interface_to_SE_groups(); diff --git a/source/base/ICM_python_bind.cpp b/source/base/ICM_python_bind.cpp index 8ebc841..914b71a 100644 --- a/source/base/ICM_python_bind.cpp +++ b/source/base/ICM_python_bind.cpp @@ -1,8 +1,7 @@ #include "ICM_interface.h" #include "datatypes_global.h" -#include "datatypes_global_SE_EV_definitions.h" - +#include "inputs.h" #include #include @@ -19,8 +18,8 @@ PYBIND11_MODULE(Caldera_ICM, m) //======================================================= py::class_(m, "interface_to_SE_groups") - .def(py::init<>()) - .def("initialize", &interface_to_SE_groups::initialize) + .def(py::init()) + //.def("initialize", &interface_to_SE_groups::initialize) //.def("initialize_infrastructure", &interface_to_SE_groups::initialize_infrastructure) //.def("initialize_baseLD_forecaster", &interface_to_SE_groups::initialize_baseLD_forecaster) //.def("initialize_L2_control_strategy_parameters", &interface_to_SE_groups::initialize_L2_control_strategy_parameters) diff --git a/source/base/helper.cpp b/source/base/helper.cpp index 2070d2c..a12fee2 100644 --- a/source/base/helper.cpp +++ b/source/base/helper.cpp @@ -451,13 +451,12 @@ double LPF_kernel::get_filtered_value() //############################################################################# get_base_load_forecast::get_base_load_forecast(double data_start_unix_time_, int data_timestep_sec_, std::vector& actual_load_akW_, std::vector& forecast_load_akW_, double adjustment_interval_hrs_) -{ - this->adjustment_interval_hrs = adjustment_interval_hrs_; - this->data_start_unix_time = data_start_unix_time_; - this->data_timestep_sec = data_timestep_sec_; - this->actual_load_akW = actual_load_akW_; - this->forecast_load_akW = forecast_load_akW_; - + : data_start_unix_time{data_start_unix_time_}, + data_timestep_sec{ data_timestep_sec_ }, + actual_load_akW{ actual_load_akW_ }, + forecast_load_akW{ forecast_load_akW_ }, + adjustment_interval_hrs{ adjustment_interval_hrs_ } +{ double sum_val = 0; for(double x : this->forecast_load_akW) sum_val += x; diff --git a/source/base/inputs.h b/source/base/inputs.h index c577a61..677cabb 100644 --- a/source/base/inputs.h +++ b/source/base/inputs.h @@ -44,8 +44,6 @@ struct vehicle_charge_model_inputs struct interface_to_SE_groups_inputs { - const EV_EVSE_inventory& inventory; - // factory_inputs bool create_charge_profile_library; EV_ramping_map ramping_by_pevType_only; @@ -66,8 +64,7 @@ struct interface_to_SE_groups_inputs L2_control_strategy_parameters L2_parameters; bool ensure_pev_charge_needs_met; - interface_to_SE_groups_inputs(const EV_EVSE_inventory& inventory, - bool create_charge_profile_library, + interface_to_SE_groups_inputs(bool create_charge_profile_library, EV_ramping_map ramping_by_pevType_only, std::vector ramping_by_pevType_seType, charge_event_queuing_inputs CE_queuing_inputs, @@ -79,8 +76,7 @@ struct interface_to_SE_groups_inputs double adjustment_interval_hrs, L2_control_strategy_parameters L2_parameters, bool ensure_pev_charge_needs_met) - : inventory{ inventory }, - create_charge_profile_library{ create_charge_profile_library }, + : create_charge_profile_library{ create_charge_profile_library }, ramping_by_pevType_only{ ramping_by_pevType_only }, ramping_by_pevType_seType{ ramping_by_pevType_seType }, CE_queuing_inputs{ CE_queuing_inputs }, diff --git a/source/charging_models/CMakeLists.txt b/source/charging_models/CMakeLists.txt index e444752..85357a8 100644 --- a/source/charging_models/CMakeLists.txt +++ b/source/charging_models/CMakeLists.txt @@ -8,4 +8,9 @@ target_compile_features(Charging_models PUBLIC cxx_std_17) target_include_directories(Charging_models PUBLIC ${PROJECT_SOURCE_DIR}/source/base) target_include_directories(Charging_models PUBLIC ${PROJECT_SOURCE_DIR}/source/charging_models) target_include_directories(Charging_models PUBLIC ${PROJECT_SOURCE_DIR}/source/factory) -target_include_directories(Charging_models PUBLIC ${PROJECT_SOURCE_DIR}/source/load_inputs) \ No newline at end of file +target_include_directories(Charging_models PUBLIC ${PROJECT_SOURCE_DIR}/source/load_inputs) + +pybind11_add_module(Caldera_models MODULE charging_models_python_bind.cpp) +target_link_libraries(Caldera_models PRIVATE Charging_models) +install(TARGETS Caldera_models + DESTINATION ${INSTALL_DIR}) \ No newline at end of file diff --git a/source/charging_models/charging_models_python_bind.cpp b/source/charging_models/charging_models_python_bind.cpp new file mode 100644 index 0000000..2dab214 --- /dev/null +++ b/source/charging_models/charging_models_python_bind.cpp @@ -0,0 +1,1169 @@ +#include "datatypes_global.h" +#include "EVSE_characteristics.h" +#include "EV_characteristics.h" +#include "EV_EVSE_inventory.h" +#include "inputs.h" + +#include +#include + +// delete when done adding pickling functionality +#include +#include + +namespace py = pybind11; + +PYBIND11_MODULE(Caldera_models, m) +{ + + //-------------------------------------------- + // interface_to_SE_groups_inputs + //-------------------------------------------- + + py::class_(m, "interface_to_SE_groups_inputs") + .def(py::init, charge_event_queuing_inputs, std::vector, double, int, std::vector, std::vector, double, L2_control_strategy_parameters, bool > () ); + + //--------------------------------- + // Charge Event Data + //--------------------------------- + py::enum_(m, "stop_charging_decision_metric") + .value("stop_charging_using_target_soc", stop_charging_decision_metric::stop_charging_using_target_soc) + .value("stop_charging_using_depart_time", stop_charging_decision_metric::stop_charging_using_depart_time) + .value("stop_charging_using_whatever_happens_first", stop_charging_decision_metric::stop_charging_using_whatever_happens_first); + + py::enum_(m, "stop_charging_mode") + .value("target_charging", stop_charging_mode::target_charging) + .value("block_charging", stop_charging_mode::block_charging); + + py::class_(m, "stop_charging_criteria") + .def(py::init<>()) + .def(py::init()) + .def_readwrite("decision_metric", &stop_charging_criteria::decision_metric) + .def_readwrite("soc_mode", &stop_charging_criteria::soc_mode) + .def_readwrite("depart_time_mode", &stop_charging_criteria::depart_time_mode) + .def_readwrite("soc_block_charging_max_undershoot_percent", &stop_charging_criteria::soc_block_charging_max_undershoot_percent) + .def_readwrite("depart_time_block_charging_max_undershoot_percent", &stop_charging_criteria::depart_time_block_charging_max_undershoot_percent) + .def(py::pickle( + [](const stop_charging_criteria& obj) + { // __getstate__ + return py::make_tuple(obj.decision_metric, obj.soc_mode, obj.depart_time_mode, obj.soc_block_charging_max_undershoot_percent, obj.depart_time_block_charging_max_undershoot_percent); + }, + [](py::tuple t) + { // __setstate__ + stop_charging_criteria obj; + obj.decision_metric = t[0].cast(); + obj.soc_mode = t[1].cast(); + obj.depart_time_mode = t[2].cast(); + obj.soc_block_charging_max_undershoot_percent = t[3].cast(); + obj.depart_time_block_charging_max_undershoot_percent = t[4].cast(); + return obj; + } + )); + + py::class_(m, "charge_event_data") + .def(py::init<>()) + .def(py::init()) + .def_readwrite("charge_event_id", &charge_event_data::charge_event_id) + .def_readwrite("SE_group_id", &charge_event_data::SE_group_id) + .def_readwrite("SE_id", &charge_event_data::SE_id) + .def_readwrite("vehicle_id", &charge_event_data::vehicle_id) + .def_readwrite("vehicle_type", &charge_event_data::vehicle_type) + .def_readwrite("arrival_unix_time", &charge_event_data::arrival_unix_time) + .def_readwrite("departure_unix_time", &charge_event_data::departure_unix_time) + .def_readwrite("arrival_SOC", &charge_event_data::arrival_SOC) + .def_readwrite("departure_SOC", &charge_event_data::departure_SOC) + .def_readwrite("stop_charge", &charge_event_data::stop_charge) + .def_readwrite("control_enums", &charge_event_data::control_enums) + .def_static("get_file_header", &charge_event_data::get_file_header) + .def(py::pickle( + [](const charge_event_data& obj) + { // __getstate__ + return py::make_tuple(obj.charge_event_id, obj.SE_group_id, obj.SE_id, obj.vehicle_id, obj.vehicle_type, obj.arrival_unix_time, obj.departure_unix_time, obj.arrival_SOC, obj.departure_SOC, obj.stop_charge, obj.control_enums); + }, + [](py::tuple t) + { // __setstate__ + charge_event_data obj; + obj.charge_event_id = t[0].cast(); + obj.SE_group_id = t[1].cast(); + obj.SE_id = t[2].cast(); + obj.vehicle_id = t[3].cast(); + obj.vehicle_type = t[4].cast(); + obj.arrival_unix_time = t[5].cast(); + obj.departure_unix_time = t[6].cast(); + obj.arrival_SOC = t[7].cast(); + obj.departure_SOC = t[8].cast(); + obj.stop_charge = t[9].cast(); + obj.control_enums = t[10].cast(); + return obj; + } + )); + + py::class_(m, "SE_group_charge_event_data") + .def(py::init<>()) + .def(py::init>()) + .def_readwrite("SE_group_id", &SE_group_charge_event_data::SE_group_id) + .def_readwrite("charge_events", &SE_group_charge_event_data::charge_events) + .def(py::pickle( + [](const SE_group_charge_event_data& obj) + { // __getstate__ + return py::make_tuple(obj.SE_group_id, obj.charge_events); + }, + [](py::tuple t) + { // __setstate__ + SE_group_charge_event_data obj; + obj.SE_group_id = t[0].cast(); + + for (auto x : t[1]) + obj.charge_events.push_back(x.cast()); + + return obj; + } + )); + + //======================================= + + py::enum_(m, "queuing_mode_enum") + .value("overlapAllowed_earlierArrivalTimeHasPriority", queuing_mode_enum::overlapAllowed_earlierArrivalTimeHasPriority) + .value("overlapLimited_mostRecentlyQueuedHasPriority", queuing_mode_enum::overlapLimited_mostRecentlyQueuedHasPriority); + + py::class_(m, "charge_event_queuing_inputs") + .def(py::init<>()) + .def_readwrite("max_allowed_overlap_time_sec", &charge_event_queuing_inputs::max_allowed_overlap_time_sec) + .def_readwrite("queuing_mode", &charge_event_queuing_inputs::queuing_mode) + .def(py::pickle( + [](const charge_event_queuing_inputs& obj) + { // __getstate__ + return py::make_tuple(obj.max_allowed_overlap_time_sec, obj.queuing_mode); + }, + [](py::tuple t) + { // __setstate__ + charge_event_queuing_inputs obj; + obj.max_allowed_overlap_time_sec = t[0].cast(); + obj.queuing_mode = t[1].cast(); + + return obj; + } + )); + + //--------------------------------- + // SE Configuration + //--------------------------------- + py::class_(m, "SE_configuration") + .def(py::init<>()) + .def(py::init()) + .def_readwrite("SE_group_id", &SE_configuration::SE_group_id) + .def_readwrite("SE_id", &SE_configuration::SE_id) + .def_readwrite("supply_equipment_type", &SE_configuration::supply_equipment_type) + .def_readwrite("lattitude", &SE_configuration::lattitude) + .def_readwrite("longitude", &SE_configuration::longitude) + .def_readwrite("grid_node_id", &SE_configuration::grid_node_id) + .def_readwrite("location_type", &SE_configuration::location_type) + .def(py::pickle( + [](const SE_configuration& obj) + { // __getstate__ + return py::make_tuple(obj.SE_group_id, obj.SE_id, obj.supply_equipment_type, obj.lattitude, obj.longitude, obj.grid_node_id, obj.location_type); + }, + [](py::tuple t) + { // __setstate__ + SE_configuration obj; + obj.SE_group_id = t[0].cast(); + obj.SE_id = t[1].cast(); + obj.supply_equipment_type = t[2].cast(); + obj.lattitude = t[3].cast(); + obj.longitude = t[4].cast(); + obj.grid_node_id = t[5].cast(); + obj.location_type = t[6].cast(); + return obj; + } + )); + + py::class_(m, "SE_group_configuration") + .def(py::init<>()) + .def(py::init >()) + .def_readwrite("SE_group_id", &SE_group_configuration::SE_group_id) + .def_readwrite("SEs", &SE_group_configuration::SEs) + .def(py::pickle( + [](const SE_group_configuration& obj) + { // __getstate__ + return py::make_tuple(obj.SE_group_id, obj.SEs); + }, + [](py::tuple t) + { // __setstate__ + SE_group_configuration obj; + obj.SE_group_id = t[0].cast(); + for (auto x : t[1]) + obj.SEs.push_back(x.cast()); + + return obj; + } + )); + + //--------------------------------- + // Status of CE + //--------------------------------- + + py::enum_(m, "SE_charging_status") + .value("no_ev_plugged_in", SE_charging_status::no_ev_plugged_in) + .value("ev_plugged_in_not_charging", SE_charging_status::ev_plugged_in_not_charging) + .value("ev_charging", SE_charging_status::ev_charging) + .value("ev_charge_complete", SE_charging_status::ev_charge_complete); + + py::class_(m, "FICE_inputs") + .def(py::init<>()) + .def_readwrite("interval_start_unixtime", &FICE_inputs::interval_start_unixtime) + .def_readwrite("interval_duration_sec", &FICE_inputs::interval_duration_sec) + .def_readwrite("acPkW_setpoint", &FICE_inputs::acPkW_setpoint) + .def(py::pickle( + [](const FICE_inputs& obj) + { // __getstate__ + return py::make_tuple(obj.interval_start_unixtime, obj.interval_duration_sec, obj.acPkW_setpoint); + }, + [](py::tuple t) + { // __setstate__ + FICE_inputs obj; + obj.interval_start_unixtime = t[0].cast(); + obj.interval_duration_sec = t[1].cast(); + obj.acPkW_setpoint = t[2].cast(); + return obj; + } + )); + + py::class_(m, "CE_FICE") + .def(py::init<>()) + .def_readwrite("SE_id", &CE_FICE::SE_id) + .def_readwrite("charge_event_id", &CE_FICE::charge_event_id) + .def_readwrite("charge_energy_ackWh", &CE_FICE::charge_energy_ackWh) + .def_readwrite("interval_duration_hrs", &CE_FICE::interval_duration_hrs) + .def(py::pickle( + [](const CE_FICE& obj) + { // __getstate__ + return py::make_tuple(obj.SE_id, obj.charge_event_id, obj.charge_energy_ackWh, obj.interval_duration_hrs); + }, + [](py::tuple t) + { // __setstate__ + CE_FICE obj; + obj.SE_id = t[0].cast(); + obj.charge_event_id = t[1].cast(); + obj.charge_energy_ackWh = t[2].cast(); + obj.interval_duration_hrs = t[3].cast(); + return obj; + } + )); + + py::class_(m, "CE_FICE_in_SE_group") + .def(py::init<>()) + .def_readwrite("SE_group_id", &CE_FICE_in_SE_group::SE_group_id) + .def_readwrite("SE_FICE_vals", &CE_FICE_in_SE_group::SE_FICE_vals) + .def(py::pickle( + [](const CE_FICE_in_SE_group& obj) + { // __getstate__ + return py::make_tuple(obj.SE_group_id, obj.SE_FICE_vals); + }, + [](py::tuple t) + { // __setstate__ + CE_FICE_in_SE_group obj; + obj.SE_group_id = t[0].cast(); + for (auto x : t[1]) + obj.SE_FICE_vals.push_back(x.cast()); + + return obj; + } + )); + + py::class_(m, "active_CE") + .def(py::init<>()) + .def_readwrite("SE_id", &active_CE::SE_id) + .def_readwrite("charge_event_id", &active_CE::charge_event_id) + .def_readwrite("now_unix_time", &active_CE::now_unix_time) + .def_readwrite("now_soc", &active_CE::now_soc) + .def_readwrite("now_dcPkW", &active_CE::now_dcPkW) + .def_readwrite("now_acPkW", &active_CE::now_acPkW) + .def_readwrite("now_acQkVAR", &active_CE::now_acQkVAR) + //.def_readwrite("min_remaining_charge_time_hrs", &active_CE::min_remaining_charge_time_hrs) + //.def_readwrite("min_time_to_complete_entire_charge_hrs", &active_CE::min_time_to_complete_entire_charge_hrs) + .def_readwrite("now_charge_energy_ackWh", &active_CE::now_charge_energy_ackWh) + .def_readwrite("energy_of_complete_charge_ackWh", &active_CE::energy_of_complete_charge_ackWh) + .def_readwrite("vehicle_id", &active_CE::vehicle_id) + .def_readwrite("vehicle_type", &active_CE::vehicle_type) + .def(py::pickle( + [](const active_CE& obj) + { // __getstate__ + return py::make_tuple(obj.SE_id, obj.charge_event_id, obj.now_unix_time, obj.now_soc, + obj.now_charge_energy_ackWh, obj.energy_of_complete_charge_ackWh, + obj.now_dcPkW, obj.now_acPkW, obj.now_acQkVAR, obj.vehicle_id, obj.vehicle_type + //obj.min_remaining_charge_time_hrs, obj.min_time_to_complete_entire_charge_hrs + ); + }, + [](py::tuple t) + { // __setstate_ + active_CE obj; + obj.SE_id = t[0].cast(); + obj.charge_event_id = t[1].cast(); + obj.now_unix_time = t[2].cast(); + obj.now_soc = t[3].cast(); + obj.now_charge_energy_ackWh = t[4].cast(); + obj.energy_of_complete_charge_ackWh = t[5].cast(); + obj.now_dcPkW = t[6].cast(); + obj.now_acPkW = t[7].cast(); + obj.now_acQkVAR = t[8].cast(); + obj.vehicle_id = t[9].cast(); + obj.vehicle_type = t[10].cast(); + //obj.min_remaining_charge_time_hrs = t[6].cast(); + //obj.min_time_to_complete_entire_charge_hrs = t[7].cast(); + + return obj; + } + )); + + py::class_(m, "SE_setpoint") + .def(py::init<>()) + .def_readwrite("SE_id", &SE_setpoint::SE_id) + .def_readwrite("PkW", &SE_setpoint::PkW) + .def_readwrite("QkVAR", &SE_setpoint::QkVAR) + .def(py::pickle( + [](const SE_setpoint& obj) + { // __getstate__ + return py::make_tuple(obj.SE_id, obj.PkW, obj.QkVAR); + }, + [](py::tuple t) + { // __setstate__ + SE_setpoint obj; + obj.SE_id = t[0].cast(); + obj.PkW = t[1].cast(); + obj.QkVAR = t[2].cast(); + + return obj; + } + )); + + py::class_(m, "completed_CE") + .def(py::init<>()) + .def_readwrite("SE_id", &completed_CE::SE_id) + .def_readwrite("charge_event_id", &completed_CE::charge_event_id) + .def_readwrite("final_soc", &completed_CE::final_soc) + .def(py::pickle( + [](const completed_CE& obj) + { // __getstate__ + return py::make_tuple(obj.SE_id, obj.charge_event_id, obj.final_soc); + }, + [](py::tuple t) + { // __setstate__ + completed_CE obj; + obj.SE_id = t[0].cast(); + obj.charge_event_id = t[1].cast(); + obj.final_soc = t[2].cast(); + + return obj; + } + )); + + //--------------------------------- + // Miscellaneous + //--------------------------------- + py::enum_(m, "ac_to_dc_converter_enum") + .value("pf", ac_to_dc_converter_enum::pf) + .value("Q_setpoint", ac_to_dc_converter_enum::Q_setpoint); + + py::class_(m, "SE_power") + .def(py::init<>()) + .def_readwrite("time_step_duration_hrs", &SE_power::time_step_duration_hrs) + .def_readwrite("P1_kW", &SE_power::P1_kW) + .def_readwrite("P2_kW", &SE_power::P2_kW) + .def_readwrite("P3_kW", &SE_power::P3_kW) + .def_readwrite("Q3_kVAR", &SE_power::Q3_kVAR) + .def_readwrite("soc", &SE_power::soc) + .def_readwrite("SE_status_val", &SE_power::SE_status_val) + .def(py::pickle( + [](const SE_power& obj) + { // __getstate__ + return py::make_tuple(obj.time_step_duration_hrs, obj.P1_kW, obj.P2_kW, obj.P3_kW, obj.Q3_kVAR, obj.soc, obj.SE_status_val); + }, + [](py::tuple t) + { // __setstate__ + SE_power obj; + obj.time_step_duration_hrs = t[0].cast(); + obj.P1_kW = t[1].cast(); + obj.P2_kW = t[2].cast(); + obj.P3_kW = t[3].cast(); + obj.Q3_kVAR = t[4].cast(); + obj.soc = t[5].cast(); + obj.SE_status_val = t[6].cast(); + + return obj; + } + )); + + py::class_(m, "pev_batterySize_info") + .def(py::init<>()) + .def_readwrite("vehicle_type", &pev_batterySize_info::vehicle_type) + .def_readwrite("battery_size_kWh", &pev_batterySize_info::battery_size_kWh) + .def_readwrite("battery_size_with_stochastic_degredation_kWh", &pev_batterySize_info::battery_size_with_stochastic_degredation_kWh) + + .def(py::pickle( + [](const pev_batterySize_info& obj) + { // __getstate__ + return py::make_tuple(obj.vehicle_type, obj.battery_size_kWh, obj.battery_size_with_stochastic_degredation_kWh); + }, + [](py::tuple t) + { // __setstate__ + pev_batterySize_info obj; + obj.vehicle_type = t[0].cast(); + obj.battery_size_kWh = t[1].cast(); + obj.battery_size_with_stochastic_degredation_kWh = t[2].cast(); + + return obj; + } + )); + + //--------------------------------- + // PEV Charge Profile + //--------------------------------- + py::class_(m, "pev_charge_profile_result") + .def(py::init<>()) + .def_readwrite("soc_increase", &pev_charge_profile_result::soc_increase) + .def_readwrite("E1_kWh", &pev_charge_profile_result::E1_kWh) + .def_readwrite("E2_kWh", &pev_charge_profile_result::E2_kWh) + .def_readwrite("E3_kWh", &pev_charge_profile_result::E3_kWh) + .def_readwrite("cumQ3_kVARh", &pev_charge_profile_result::cumQ3_kVARh) + .def_readwrite("total_charge_time_hrs", &pev_charge_profile_result::total_charge_time_hrs) + .def_readwrite("incremental_chage_time_hrs", &pev_charge_profile_result::incremental_chage_time_hrs) + .def(py::pickle( + [](const pev_charge_profile_result& obj) + { // __getstate__ + return py::make_tuple(obj.soc_increase, obj.E1_kWh, obj.E2_kWh, obj.E3_kWh, obj.cumQ3_kVARh, obj.total_charge_time_hrs, obj.incremental_chage_time_hrs); + }, + [](py::tuple t) + { // __setstate__ + pev_charge_profile_result obj; + obj.soc_increase = t[0].cast(); + obj.E1_kWh = t[1].cast(); + obj.E2_kWh = t[2].cast(); + obj.E3_kWh = t[3].cast(); + obj.cumQ3_kVARh = t[4].cast(); + obj.total_charge_time_hrs = t[5].cast(); + obj.incremental_chage_time_hrs = t[6].cast(); + return obj; + } + )); + + py::class_(m, "pev_charge_fragment_removal_criteria") + .def(py::init<>()) + .def_readwrite("max_percent_of_fragments_that_can_be_removed", &pev_charge_fragment_removal_criteria::max_percent_of_fragments_that_can_be_removed) + .def_readwrite("kW_change_threashold", &pev_charge_fragment_removal_criteria::kW_change_threashold) + .def_readwrite("threshold_to_determine_not_removable_fragments_on_flat_peak_kW", &pev_charge_fragment_removal_criteria::threshold_to_determine_not_removable_fragments_on_flat_peak_kW) + .def_readwrite("perc_of_max_starting_point_to_determine_not_removable_fragments_on_low_elbow", &pev_charge_fragment_removal_criteria::perc_of_max_starting_point_to_determine_not_removable_fragments_on_low_elbow) + .def(py::pickle( + [](const pev_charge_fragment_removal_criteria& obj) + { // __getstate__ + return py::make_tuple(obj.max_percent_of_fragments_that_can_be_removed, obj.kW_change_threashold, obj.threshold_to_determine_not_removable_fragments_on_flat_peak_kW, obj.perc_of_max_starting_point_to_determine_not_removable_fragments_on_low_elbow); + }, + [](py::tuple t) + { // __setstate__ + pev_charge_fragment_removal_criteria obj; + obj.max_percent_of_fragments_that_can_be_removed = t[0].cast(); + obj.kW_change_threashold = t[1].cast(); + obj.threshold_to_determine_not_removable_fragments_on_flat_peak_kW = t[2].cast(); + obj.perc_of_max_starting_point_to_determine_not_removable_fragments_on_low_elbow = t[3].cast(); + return obj; + } + )); + + py::class_(m, "pev_charge_fragment") + .def(py::init<>()) + .def(py::init()) + .def_readwrite("soc", &pev_charge_fragment::soc) + .def_readwrite("E1_kWh", &pev_charge_fragment::E1_kWh) + .def_readwrite("E2_kWh", &pev_charge_fragment::E2_kWh) + .def_readwrite("E3_kWh", &pev_charge_fragment::E3_kWh) + .def_readwrite("cumQ3_kVARh", &pev_charge_fragment::cumQ3_kVARh) + .def_readwrite("time_since_charge_began_hrs", &pev_charge_fragment::time_since_charge_began_hrs) + .def(py::pickle( + [](const pev_charge_fragment& obj) + { // __getstate__ + return py::make_tuple(obj.soc, obj.E1_kWh, obj.E2_kWh, obj.E3_kWh, obj.cumQ3_kVARh, obj.time_since_charge_began_hrs); + }, + [](py::tuple t) + { // __setstate__ + pev_charge_fragment obj; + obj.soc = t[0].cast(); + obj.E1_kWh = t[1].cast(); + obj.E2_kWh = t[2].cast(); + obj.E3_kWh = t[3].cast(); + obj.cumQ3_kVARh = t[4].cast(); + obj.time_since_charge_began_hrs = t[5].cast(); + return obj; + } + )); + + py::class_(m, "pev_charge_fragment_variation") + .def(py::init<>()) + .def(py::init()) + .def_readwrite("is_removable", &pev_charge_fragment_variation::is_removable) + .def_readwrite("original_charge_fragment_index", &pev_charge_fragment_variation::original_charge_fragment_index) + .def_readwrite("time_since_charge_began_hrs", &pev_charge_fragment_variation::time_since_charge_began_hrs) + .def_readwrite("soc", &pev_charge_fragment_variation::soc) + .def_readwrite("P3_kW", &pev_charge_fragment_variation::P3_kW) + .def_readwrite("variation_rank", &pev_charge_fragment_variation::variation_rank) + .def(py::pickle( + [](const pev_charge_fragment_variation& obj) + { // __getstate__ + return py::make_tuple(obj.is_removable, obj.original_charge_fragment_index, obj.time_since_charge_began_hrs, obj.soc, obj.P3_kW, obj.variation_rank); + }, + [](py::tuple t) + { // __setstate__ + pev_charge_fragment_variation obj; + obj.is_removable = t[0].cast(); + obj.original_charge_fragment_index = t[1].cast(); + obj.time_since_charge_began_hrs = t[2].cast(); + obj.soc = t[3].cast(); + obj.P3_kW = t[4].cast(); + obj.variation_rank = t[5].cast(); + return obj; + } + )); + + py::class_(m, "charge_profile_validation_data") + .def(py::init<>()) + .def_readwrite("time_step_sec", &charge_profile_validation_data::time_step_sec) + .def_readwrite("target_acP3_kW", &charge_profile_validation_data::target_acP3_kW) + .def_readwrite("fragment_removal_criteria", &charge_profile_validation_data::fragment_removal_criteria) + .def_readwrite("removed_fragments", &charge_profile_validation_data::removed_fragments) + .def_readwrite("retained_fragments", &charge_profile_validation_data::retained_fragments) + .def_readwrite("downsampled_charge_fragments", &charge_profile_validation_data::downsampled_charge_fragments) + .def_readwrite("original_charge_fragments", &charge_profile_validation_data::original_charge_fragments) + .def(py::pickle( + [](const charge_profile_validation_data& obj) + { // __getstate__ + return py::make_tuple(obj.time_step_sec, obj.target_acP3_kW, obj.fragment_removal_criteria, obj.removed_fragments, obj.retained_fragments, obj.downsampled_charge_fragments, obj.original_charge_fragments); + }, + [](py::tuple t) + { // __setstate__ + charge_profile_validation_data obj; + obj.time_step_sec = t[0].cast(); + obj.target_acP3_kW = t[1].cast(); + obj.fragment_removal_criteria = t[2].cast(); + + for (auto x : t[3]) + obj.removed_fragments.push_back(x.cast()); + + for (auto x : t[4]) + obj.retained_fragments.push_back(x.cast()); + + for (auto x : t[5]) + obj.downsampled_charge_fragments.push_back(x.cast()); + + for (auto x : t[6]) + obj.original_charge_fragments.push_back(x.cast()); + + return obj; + } + )); + + py::class_(m, "charge_event_P3kW_limits") + .def(py::init<>()) + .def_readwrite("min_P3kW", &charge_event_P3kW_limits::min_P3kW) + .def_readwrite("max_P3kW", &charge_event_P3kW_limits::max_P3kW) + .def(py::pickle( + [](const charge_event_P3kW_limits& obj) + { // __getstate__ + return py::make_tuple(obj.min_P3kW, obj.max_P3kW); + }, + [](py::tuple t) + { // __setstate__ + charge_event_P3kW_limits obj; + obj.min_P3kW = t[0].cast(); + obj.max_P3kW = t[1].cast(); + return obj; + } + )); + + //--------------------------------- + // Low Pass Filter Parameters + //--------------------------------- + py::enum_(m, "LPF_window_enum") + .value("Hanning", LPF_window_enum::Hanning) + .value("Blackman", LPF_window_enum::Blackman) + .value("Rectangular", LPF_window_enum::Rectangular); + + py::class_(m, "LPF_parameters") + .def(py::init<>()) + .def_readwrite("window_size", &LPF_parameters::window_size) + .def_readwrite("window_type", &LPF_parameters::window_type) + .def(py::pickle( + [](const LPF_parameters& obj) + { // __getstate__ + return py::make_tuple(obj.window_size, obj.window_type); + }, + [](py::tuple t) + { // __setstate__ + LPF_parameters obj; + obj.window_size = t[0].cast(); + obj.window_type = t[1].cast(); + return obj; + } + )); + + py::class_(m, "LPF_parameters_randomize_window_size") + .def(py::init<>()) + .def_readwrite("is_active", &LPF_parameters_randomize_window_size::is_active) + .def_readwrite("seed", &LPF_parameters_randomize_window_size::seed) + .def_readwrite("window_size_LB", &LPF_parameters_randomize_window_size::window_size_LB) + .def_readwrite("window_size_UB", &LPF_parameters_randomize_window_size::window_size_UB) + .def_readwrite("window_type", &LPF_parameters_randomize_window_size::window_type) + .def(py::pickle( + [](const LPF_parameters_randomize_window_size& obj) + { // __getstate__ + return py::make_tuple(obj.is_active, obj.seed, obj.window_size_LB, obj.window_size_UB, obj.window_type); + }, + [](py::tuple t) + { // __setstate__ + LPF_parameters_randomize_window_size obj; + obj.is_active = t[0].cast(); + obj.seed = t[1].cast(); + obj.window_size_LB = t[2].cast(); + obj.window_size_UB = t[3].cast(); + obj.window_type = t[4].cast(); + return obj; + } + )); + + //--------------------------------- + // Control Strategy Parameters + //--------------------------------- + py::enum_(m, "L2_control_strategies_enum") + .value("NA", L2_control_strategies_enum::NA) + .value("ES100_A", L2_control_strategies_enum::ES100_A) + .value("ES100_B", L2_control_strategies_enum::ES100_B) + .value("ES110", L2_control_strategies_enum::ES110) + .value("ES200", L2_control_strategies_enum::ES200) + .value("ES300", L2_control_strategies_enum::ES300) + .value("ES500", L2_control_strategies_enum::ES500) + .value("VS100", L2_control_strategies_enum::VS100) + .value("VS200_A", L2_control_strategies_enum::VS200_A) + .value("VS200_B", L2_control_strategies_enum::VS200_B) + .value("VS200_C", L2_control_strategies_enum::VS200_C) + .value("VS300", L2_control_strategies_enum::VS300); + + py::class_(m, "ES100_L2_parameters") + .def(py::init<>()) + .def_readwrite("beginning_of_TofU_rate_period__time_from_midnight_hrs", &ES100_L2_parameters::beginning_of_TofU_rate_period__time_from_midnight_hrs) + .def_readwrite("end_of_TofU_rate_period__time_from_midnight_hrs", &ES100_L2_parameters::end_of_TofU_rate_period__time_from_midnight_hrs) + .def_readwrite("randomization_method", &ES100_L2_parameters::randomization_method) + .def_readwrite("M1_delay_period_hrs", &ES100_L2_parameters::M1_delay_period_hrs) + .def_readwrite("random_seed", &ES100_L2_parameters::random_seed) + .def(py::pickle( + [](const ES100_L2_parameters& obj) + { // __getstate__ + return py::make_tuple(obj.beginning_of_TofU_rate_period__time_from_midnight_hrs, obj.end_of_TofU_rate_period__time_from_midnight_hrs, obj.randomization_method, obj.M1_delay_period_hrs, obj.random_seed); + }, + [](py::tuple t) + { // __setstate__ + ES100_L2_parameters obj; + obj.beginning_of_TofU_rate_period__time_from_midnight_hrs = t[0].cast(); + obj.end_of_TofU_rate_period__time_from_midnight_hrs = t[1].cast(); + obj.randomization_method = t[2].cast(); + obj.M1_delay_period_hrs = t[3].cast(); + obj.random_seed = t[4].cast(); + return obj; + } + )); + + py::class_(m, "ES110_L2_parameters") + .def(py::init<>()) + .def_readwrite("random_seed", &ES110_L2_parameters::random_seed) + .def(py::pickle( + [](const ES110_L2_parameters& obj) + { // __getstate__ + return py::make_tuple(obj.random_seed); + }, + [](py::tuple t) + { // __setstate__ + ES110_L2_parameters obj; + obj.random_seed = t[0].cast(); + return obj; + } + )); + + py::class_(m, "ES200_L2_parameters") + .def(py::init<>()) + .def_readwrite("weight_factor_to_calculate_valley_fill_target", &ES200_L2_parameters::weight_factor_to_calculate_valley_fill_target) + .def(py::pickle( + [](const ES200_L2_parameters& obj) + { // __getstate__ + return py::make_tuple(obj.weight_factor_to_calculate_valley_fill_target); + }, + [](py::tuple t) + { // __setstate__ + ES200_L2_parameters obj; + obj.weight_factor_to_calculate_valley_fill_target = t[0].cast(); + return obj; + } + )); + + py::class_(m, "ES300_L2_parameters") + .def(py::init<>()) + .def_readwrite("weight_factor_to_calculate_valley_fill_target", &ES300_L2_parameters::weight_factor_to_calculate_valley_fill_target) + .def(py::pickle( + [](const ES300_L2_parameters& obj) + { // __getstate__ + return py::make_tuple(obj.weight_factor_to_calculate_valley_fill_target); + }, + [](py::tuple t) + { // __setstate__ + ES300_L2_parameters obj; + obj.weight_factor_to_calculate_valley_fill_target = t[0].cast(); + return obj; + } + )); + + py::class_(m, "normal_random_error") + .def(py::init<>()) + .def_readwrite("seed", &normal_random_error::seed) + .def_readwrite("stdev", &normal_random_error::stdev) + .def_readwrite("stdev_bounds", &normal_random_error::stdev_bounds) + .def(py::pickle( + [](const normal_random_error& obj) + { // __getstate__ + return py::make_tuple(obj.seed, obj.stdev, obj.stdev_bounds); + }, + [](py::tuple t) + { // __setstate__ + normal_random_error obj; + obj.seed = t[0].cast(); + obj.stdev = t[1].cast(); + obj.stdev_bounds = t[2].cast(); + return obj; + } + )); + + py::class_(m, "ES500_L2_parameters") + .def(py::init<>()) + .def_readwrite("aggregator_timestep_mins", &ES500_L2_parameters::aggregator_timestep_mins) + .def_readwrite("off_to_on_lead_time_sec", &ES500_L2_parameters::off_to_on_lead_time_sec) + .def_readwrite("default_lead_time_sec", &ES500_L2_parameters::default_lead_time_sec) + .def(py::pickle( + [](const ES500_L2_parameters& obj) + { // __getstate__ + return py::make_tuple(obj.aggregator_timestep_mins, obj.off_to_on_lead_time_sec, obj.default_lead_time_sec); + }, + [](py::tuple t) + { // __setstate__ + ES500_L2_parameters obj; + obj.aggregator_timestep_mins = t[0].cast(); + obj.off_to_on_lead_time_sec = t[1].cast(); + obj.default_lead_time_sec = t[2].cast(); + return obj; + } + )); + + py::class_(m, "VS100_L2_parameters") + .def(py::init<>()) + .def_readwrite("target_P3_reference__percent_of_maxP3", &VS100_L2_parameters::target_P3_reference__percent_of_maxP3) + .def_readwrite("max_delta_kW_per_min", &VS100_L2_parameters::max_delta_kW_per_min) + .def_readwrite("volt_delta_kW_curve_puV", &VS100_L2_parameters::volt_delta_kW_curve_puV) + .def_readwrite("volt_delta_kW_percP", &VS100_L2_parameters::volt_delta_kW_percP) + .def_readwrite("voltage_LPF", &VS100_L2_parameters::voltage_LPF) + .def(py::pickle( + [](const VS100_L2_parameters& obj) + { // __getstate__ + return py::make_tuple(obj.target_P3_reference__percent_of_maxP3, obj.max_delta_kW_per_min, obj.volt_delta_kW_curve_puV, obj.volt_delta_kW_percP, obj.voltage_LPF); + }, + [](py::tuple t) + { // __setstate__ + VS100_L2_parameters obj; + obj.target_P3_reference__percent_of_maxP3 = t[0].cast(); + obj.max_delta_kW_per_min = t[1].cast(); + + for (auto x : t[2]) + obj.volt_delta_kW_curve_puV.push_back(x.cast()); + + for (auto x : t[3]) + obj.volt_delta_kW_percP.push_back(x.cast()); + + obj.voltage_LPF = t[4].cast(); + + return obj; + } + )); + + py::class_(m, "VS200_L2_parameters") + .def(py::init<>()) + .def_readwrite("target_P3_reference__percent_of_maxP3", &VS200_L2_parameters::target_P3_reference__percent_of_maxP3) + .def_readwrite("max_delta_kVAR_per_min", &VS200_L2_parameters::max_delta_kVAR_per_min) + .def_readwrite("volt_var_curve_puV", &VS200_L2_parameters::volt_var_curve_puV) + .def_readwrite("volt_var_curve_percQ", &VS200_L2_parameters::volt_var_curve_percQ) + .def_readwrite("voltage_LPF", &VS200_L2_parameters::voltage_LPF) + .def(py::pickle( + [](const VS200_L2_parameters& obj) + { // __getstate__ + return py::make_tuple(obj.target_P3_reference__percent_of_maxP3, obj.max_delta_kVAR_per_min, obj.volt_var_curve_puV, obj.volt_var_curve_percQ, obj.voltage_LPF); + }, + [](py::tuple t) + { // __setstate__ + VS200_L2_parameters obj; + obj.target_P3_reference__percent_of_maxP3 = t[0].cast(); + obj.max_delta_kVAR_per_min = t[1].cast(); + + for (auto x : t[2]) + obj.volt_var_curve_puV.push_back(x.cast()); + + for (auto x : t[3]) + obj.volt_var_curve_percQ.push_back(x.cast()); + + obj.voltage_LPF = t[4].cast(); + + return obj; + } + )); + + py::class_(m, "VS300_L2_parameters") + .def(py::init<>()) + .def_readwrite("target_P3_reference__percent_of_maxP3", &VS300_L2_parameters::target_P3_reference__percent_of_maxP3) + .def_readwrite("max_QkVAR_as_percent_of_SkVA", &VS300_L2_parameters::max_QkVAR_as_percent_of_SkVA) + .def_readwrite("gamma", &VS300_L2_parameters::gamma) + .def_readwrite("voltage_LPF", &VS300_L2_parameters::voltage_LPF) + .def(py::pickle( + [](const VS300_L2_parameters& obj) + { // __getstate__ + return py::make_tuple(obj.target_P3_reference__percent_of_maxP3, obj.max_QkVAR_as_percent_of_SkVA, obj.gamma, obj.voltage_LPF); + }, + [](py::tuple t) + { // __setstate__ + VS300_L2_parameters obj; + obj.target_P3_reference__percent_of_maxP3 = t[0].cast(); + obj.max_QkVAR_as_percent_of_SkVA = t[1].cast(); + obj.gamma = t[2].cast(); + obj.voltage_LPF = t[3].cast(); + return obj; + } + )); + + py::class_(m, "control_strategy_enums") + .def(py::init<>()) + .def_readwrite("inverter_model_supports_Qsetpoint", &control_strategy_enums::inverter_model_supports_Qsetpoint) + .def_readwrite("ES_control_strategy", &control_strategy_enums::ES_control_strategy) + .def_readwrite("VS_control_strategy", &control_strategy_enums::VS_control_strategy) + .def_readwrite("ext_control_strategy", &control_strategy_enums::ext_control_strategy) + .def(py::pickle( + [](const control_strategy_enums& obj) + { // __getstate__ + return py::make_tuple(obj.inverter_model_supports_Qsetpoint, obj.ES_control_strategy, obj.VS_control_strategy, obj.ext_control_strategy); + }, + [](py::tuple t) + { // __setstate__ + control_strategy_enums obj; + obj.inverter_model_supports_Qsetpoint = t[0].cast(); + obj.ES_control_strategy = t[1].cast(); + obj.VS_control_strategy = t[2].cast(); + obj.ext_control_strategy = t[3].cast(); + return obj; + } + )); + + py::class_(m, "L2_control_strategy_parameters") + .def(py::init<>()) + + .def_readwrite("ES100_A", &L2_control_strategy_parameters::ES100_A) + .def_readwrite("ES100_B", &L2_control_strategy_parameters::ES100_B) + .def_readwrite("ES110", &L2_control_strategy_parameters::ES110) + .def_readwrite("ES200", &L2_control_strategy_parameters::ES200) + .def_readwrite("ES300", &L2_control_strategy_parameters::ES300) + .def_readwrite("ES500", &L2_control_strategy_parameters::ES500) + + .def_readwrite("VS100", &L2_control_strategy_parameters::VS100) + .def_readwrite("VS200_A", &L2_control_strategy_parameters::VS200_A) + .def_readwrite("VS200_B", &L2_control_strategy_parameters::VS200_B) + .def_readwrite("VS200_C", &L2_control_strategy_parameters::VS200_C) + .def_readwrite("VS300", &L2_control_strategy_parameters::VS300) + + .def(py::pickle( + [](const L2_control_strategy_parameters& obj) + { // __getstate__ + return py::make_tuple(obj.ES100_A, obj.ES100_B, obj.ES110, obj.ES200, obj.ES300, obj.ES500, + obj.VS100, obj.VS200_A, obj.VS200_B, obj.VS200_C, obj.VS300); + }, + [](py::tuple t) + { // __setstate__ + L2_control_strategy_parameters obj; + + obj.ES100_A = t[0].cast(); + obj.ES100_B = t[1].cast(); + obj.ES110 = t[2].cast(); + obj.ES200 = t[3].cast(); + obj.ES300 = t[4].cast(); + obj.ES500 = t[5].cast(); + + obj.VS100 = t[6].cast(); + obj.VS200_A = t[7].cast(); + obj.VS200_B = t[8].cast(); + obj.VS200_C = t[9].cast(); + obj.VS300 = t[10].cast(); + + return obj; + } + )); + + //--------------------------------- + // ES500 Aggregator Structures + //--------------------------------- + py::class_(m, "ES500_aggregator_pev_charge_needs") + .def(py::init<>()) + .def_readwrite("SE_id", &ES500_aggregator_pev_charge_needs::SE_id) + .def_readwrite("departure_unix_time", &ES500_aggregator_pev_charge_needs::departure_unix_time) + .def_readwrite("e3_charge_remain_kWh", &ES500_aggregator_pev_charge_needs::e3_charge_remain_kWh) + .def_readwrite("e3_step_max_kWh", &ES500_aggregator_pev_charge_needs::e3_step_max_kWh) + .def_readwrite("e3_step_target_kWh", &ES500_aggregator_pev_charge_needs::e3_step_target_kWh) + .def_readwrite("min_remaining_charge_time_hrs", &ES500_aggregator_pev_charge_needs::min_remaining_charge_time_hrs) + .def_readwrite("min_time_to_complete_entire_charge_hrs", &ES500_aggregator_pev_charge_needs::min_time_to_complete_entire_charge_hrs) + .def_readwrite("remaining_park_time_hrs", &ES500_aggregator_pev_charge_needs::remaining_park_time_hrs) + .def_readwrite("total_park_time_hrs", &ES500_aggregator_pev_charge_needs::total_park_time_hrs) + .def(py::pickle( + [](const ES500_aggregator_pev_charge_needs& obj) + { // __getstate__ + return py::make_tuple(obj.SE_id, obj.departure_unix_time, obj.e3_charge_remain_kWh, obj.e3_step_max_kWh, obj.e3_step_target_kWh, obj.min_remaining_charge_time_hrs, obj.min_time_to_complete_entire_charge_hrs, obj.remaining_park_time_hrs, obj.total_park_time_hrs); + }, + [](py::tuple t) + { // __setstate__ + ES500_aggregator_pev_charge_needs obj; + obj.SE_id = t[0].cast(); + obj.departure_unix_time = t[1].cast(); + obj.e3_charge_remain_kWh = t[2].cast(); + obj.e3_step_max_kWh = t[3].cast(); + obj.e3_step_target_kWh = t[4].cast(); + obj.min_remaining_charge_time_hrs = t[5].cast(); + obj.min_time_to_complete_entire_charge_hrs = t[6].cast(); + obj.remaining_park_time_hrs = t[7].cast(); + obj.total_park_time_hrs = t[8].cast(); + + return obj; + } + )); + + py::class_(m, "ES500_aggregator_charging_needs") + .def(py::init<>()) + .def("is_empty", &ES500_aggregator_charging_needs::is_empty) + .def_readwrite("next_aggregator_timestep_start_time", &ES500_aggregator_charging_needs::next_aggregator_timestep_start_time) + .def_readwrite("pev_charge_needs", &ES500_aggregator_charging_needs::pev_charge_needs) + .def(py::pickle( + [](const ES500_aggregator_charging_needs& obj) + { // __getstate__ + return py::make_tuple(obj.next_aggregator_timestep_start_time, obj.pev_charge_needs); + }, + [](py::tuple t) + { // __setstate__ + ES500_aggregator_charging_needs obj; + obj.next_aggregator_timestep_start_time = t[0].cast(); + + for (auto x : t[1]) + obj.pev_charge_needs.push_back(x.cast()); + + return obj; + } + )); + + py::class_(m, "ES500_aggregator_e_step_setpoints") + .def(py::init<>()) + .def(py::init, std::vector, std::vector >()) + .def("is_empty", &ES500_aggregator_e_step_setpoints::is_empty) + .def_readwrite("next_aggregator_timestep_start_time", &ES500_aggregator_e_step_setpoints::next_aggregator_timestep_start_time) + .def_readwrite("SE_id", &ES500_aggregator_e_step_setpoints::SE_id) + .def_readwrite("e3_step_kWh", &ES500_aggregator_e_step_setpoints::e3_step_kWh) + .def_readwrite("charge_progression", &ES500_aggregator_e_step_setpoints::charge_progression) + .def(py::pickle( + [](const ES500_aggregator_e_step_setpoints& obj) + { // __getstate__ + return py::make_tuple(obj.next_aggregator_timestep_start_time, obj.SE_id, obj.e3_step_kWh, obj.charge_progression); + }, + [](py::tuple t) + { // __setstate__ + ES500_aggregator_e_step_setpoints obj; + obj.next_aggregator_timestep_start_time = t[0].cast(); + + for (auto x : t[1]) + obj.SE_id.push_back(x.cast()); + + for (auto x : t[2]) + obj.e3_step_kWh.push_back(x.cast()); + + for (auto x : t[3]) + obj.charge_progression.push_back(x.cast()); + + return obj; + } + )); + + py::class_(m, "ES500_aggregator_charging_forecast") + .def(py::init<>()) + .def_readwrite("arrival_unix_time", &ES500_aggregator_charging_forecast::arrival_unix_time) + .def_readwrite("departure_unix_time", &ES500_aggregator_charging_forecast::departure_unix_time) + .def_readwrite("e3_charge_remain_kWh", &ES500_aggregator_charging_forecast::e3_charge_remain_kWh) + .def_readwrite("e3_step_max_kWh", &ES500_aggregator_charging_forecast::e3_step_max_kWh) + .def(py::pickle( + [](const ES500_aggregator_charging_forecast& obj) + { // __getstate__ + return py::make_tuple(obj.arrival_unix_time, obj.departure_unix_time, obj.e3_charge_remain_kWh, obj.e3_step_max_kWh); + }, + [](py::tuple t) + { // __setstate__ + ES500_aggregator_charging_forecast obj; + + for (auto x : t[0]) + obj.arrival_unix_time.push_back(x.cast()); + + for (auto x : t[1]) + obj.departure_unix_time.push_back(x.cast()); + + for (auto x : t[2]) + obj.e3_charge_remain_kWh.push_back(x.cast()); + + for (auto x : t[3]) + obj.e3_step_max_kWh.push_back(x.cast()); + + return obj; + } + )); + + py::class_(m, "ES500_aggregator_obj_fun_constraints") + .def(py::init<>()) + .def_readwrite("E_cumEnergy_ALAP_kWh", &ES500_aggregator_obj_fun_constraints::E_cumEnergy_ALAP_kWh) + .def_readwrite("E_cumEnergy_ASAP_kWh", &ES500_aggregator_obj_fun_constraints::E_cumEnergy_ASAP_kWh) + .def_readwrite("E_energy_ALAP_kWh", &ES500_aggregator_obj_fun_constraints::E_energy_ALAP_kWh) + .def_readwrite("E_energy_ASAP_kWh", &ES500_aggregator_obj_fun_constraints::E_energy_ASAP_kWh) + .def_readwrite("E_step_ALAP", &ES500_aggregator_obj_fun_constraints::E_step_ALAP) + .def_readwrite("canSolve_aka_pev_charging_in_prediction_window", &ES500_aggregator_obj_fun_constraints::canSolve_aka_pev_charging_in_prediction_window) + .def(py::pickle( + [](const ES500_aggregator_obj_fun_constraints& obj) + { // __getstate__ + return py::make_tuple(obj.E_cumEnergy_ALAP_kWh, obj.E_cumEnergy_ASAP_kWh, obj.E_energy_ALAP_kWh, obj.E_energy_ASAP_kWh, obj.E_step_ALAP, obj.canSolve_aka_pev_charging_in_prediction_window); + }, + [](py::tuple t) + { // __setstate__ + ES500_aggregator_obj_fun_constraints obj; + + for (auto x : t[0]) + obj.E_cumEnergy_ALAP_kWh.push_back(x.cast()); + + for (auto x : t[1]) + obj.E_cumEnergy_ASAP_kWh.push_back(x.cast()); + + for (auto x : t[2]) + obj.E_energy_ALAP_kWh.push_back(x.cast()); + + for (auto x : t[3]) + obj.E_energy_ASAP_kWh.push_back(x.cast()); + + for (auto x : t[4]) + obj.E_step_ALAP.push_back(x.cast()); + + obj.canSolve_aka_pev_charging_in_prediction_window = t[5].cast(); + + return obj; + } + )); + + py::class_(m, "ES500_charge_cycling_control_boundary_point") + .def(py::init<>()) + .def(py::init()) + .def_readwrite("cycling_magnitude", &ES500_charge_cycling_control_boundary_point::cycling_magnitude) + .def_readwrite("cycling_vs_ramping", &ES500_charge_cycling_control_boundary_point::cycling_vs_ramping) + .def(py::pickle( + [](const ES500_charge_cycling_control_boundary_point& obj) + { // __getstate__ + return py::make_tuple(obj.cycling_magnitude, obj.cycling_vs_ramping); + }, + [](py::tuple t) + { // __setstate__ + ES500_charge_cycling_control_boundary_point obj; + obj.cycling_magnitude = t[0].cast(); + obj.cycling_vs_ramping = t[1].cast(); + return obj; + } + )); + + py::class_(m, "ES500_stop_charge_cycling_decision_parameters") + .def(py::init<>()) + .def_readwrite("next_aggregator_timestep_start_time", &ES500_stop_charge_cycling_decision_parameters::next_aggregator_timestep_start_time) + .def_readwrite("iteration", &ES500_stop_charge_cycling_decision_parameters::iteration) + .def_readwrite("is_last_iteration", &ES500_stop_charge_cycling_decision_parameters::is_last_iteration) + .def_readwrite("off_to_on_nrg_kWh", &ES500_stop_charge_cycling_decision_parameters::off_to_on_nrg_kWh) + .def_readwrite("on_to_off_nrg_kWh", &ES500_stop_charge_cycling_decision_parameters::on_to_off_nrg_kWh) + .def_readwrite("total_on_nrg_kWh", &ES500_stop_charge_cycling_decision_parameters::total_on_nrg_kWh) + .def_readwrite("cycling_vs_ramping", &ES500_stop_charge_cycling_decision_parameters::cycling_vs_ramping) + .def_readwrite("cycling_magnitude", &ES500_stop_charge_cycling_decision_parameters::cycling_magnitude) + .def_readwrite("delta_energy_kWh", &ES500_stop_charge_cycling_decision_parameters::delta_energy_kWh) + .def(py::pickle( + [](const ES500_stop_charge_cycling_decision_parameters& obj) + { // __getstate__ + return py::make_tuple(obj.next_aggregator_timestep_start_time, obj.iteration, obj.is_last_iteration, obj.off_to_on_nrg_kWh, obj.on_to_off_nrg_kWh, obj.total_on_nrg_kWh, obj.cycling_vs_ramping, obj.cycling_magnitude, obj.delta_energy_kWh); + }, + [](py::tuple t) + { // __setstate__ + ES500_stop_charge_cycling_decision_parameters obj; + obj.next_aggregator_timestep_start_time = t[0].cast(); + obj.iteration = t[1].cast(); + obj.is_last_iteration = t[2].cast(); + obj.off_to_on_nrg_kWh = t[3].cast(); + obj.on_to_off_nrg_kWh = t[4].cast(); + obj.total_on_nrg_kWh = t[5].cast(); + obj.cycling_vs_ramping = t[6].cast(); + obj.cycling_magnitude = t[7].cast(); + obj.delta_energy_kWh = t[8].cast(); + return obj; + } + )); + + //--------------------------------- + // PEV Ramping Parameters + //--------------------------------- + + py::class_(m, "pev_charge_ramping") + .def(py::init<>()) + .def(py::init()) + .def_readwrite("off_to_on_delay_sec", &pev_charge_ramping::off_to_on_delay_sec) + .def_readwrite("off_to_on_kW_per_sec", &pev_charge_ramping::off_to_on_kW_per_sec) + .def_readwrite("on_to_off_delay_sec", &pev_charge_ramping::on_to_off_delay_sec) + .def_readwrite("on_to_off_kW_per_sec", &pev_charge_ramping::on_to_off_kW_per_sec) + .def_readwrite("ramp_up_delay_sec", &pev_charge_ramping::ramp_up_delay_sec) + .def_readwrite("ramp_up_kW_per_sec", &pev_charge_ramping::ramp_up_kW_per_sec) + .def_readwrite("ramp_down_delay_sec", &pev_charge_ramping::ramp_down_delay_sec) + .def_readwrite("ramp_down_kW_per_sec", &pev_charge_ramping::ramp_down_kW_per_sec) + .def(py::pickle( + [](const pev_charge_ramping& obj) + { // __getstate__ + return py::make_tuple(obj.off_to_on_delay_sec, obj.off_to_on_kW_per_sec, obj.on_to_off_delay_sec, obj.on_to_off_kW_per_sec, obj.ramp_up_delay_sec, obj.ramp_up_kW_per_sec, obj.ramp_down_delay_sec, obj.ramp_down_kW_per_sec); + }, + [](py::tuple t) + { // __setstate__ + pev_charge_ramping obj; + obj.off_to_on_delay_sec = t[0].cast(); + obj.off_to_on_kW_per_sec = t[1].cast(); + obj.on_to_off_delay_sec = t[2].cast(); + obj.on_to_off_kW_per_sec = t[3].cast(); + obj.ramp_up_delay_sec = t[4].cast(); + obj.ramp_up_kW_per_sec = t[5].cast(); + obj.ramp_down_delay_sec = t[6].cast(); + obj.ramp_down_kW_per_sec = t[7].cast(); + return obj; + } + )); + + py::class_(m, "pev_charge_ramping_workaround") + .def(py::init<>()) + .def_readwrite("pev_charge_ramping_obj", &pev_charge_ramping_workaround::pev_charge_ramping_obj) + .def_readwrite("pev_type", &pev_charge_ramping_workaround::pev_type) + .def_readwrite("SE_type", &pev_charge_ramping_workaround::SE_type) + .def(py::pickle( + [](const pev_charge_ramping_workaround& obj) + { // __getstate__ + return py::make_tuple(obj.pev_charge_ramping_obj, obj.pev_type, obj.SE_type); + }, + [](py::tuple t) + { // __setstate__ + pev_charge_ramping_workaround obj; + obj.pev_charge_ramping_obj = t[0].cast(); + obj.pev_type = t[1].cast(); + obj.SE_type = t[2].cast(); + return obj; + } + )); +} From 9c626a49c7929710544317cf6ddf65e9b5b0d808 Mon Sep 17 00:00:00 2001 From: Manoj Kumar Cebol Sundarrajan Date: Tue, 23 May 2023 15:59:08 -0600 Subject: [PATCH 15/52] added python interfaces for charing models and some re org of files to create Caldera_globals --- source/CMakeLists.txt | 1 + source/base/CMakeLists.txt | 4 +- source/charging_models/CMakeLists.txt | 5 +- .../charging_models_python_bind.cpp | 1217 +---------------- source/factory/CMakeLists.txt | 1 + source/globals/CMakeLists.txt | 15 + .../datatypes_global.cpp | 0 .../datatypes_global.h | 0 source/globals/globals_python_bind.cpp | 1169 ++++++++++++++++ source/{base => globals}/helper.cpp | 0 source/{base => globals}/helper.h | 0 source/{base => globals}/inputs.h | 0 source/load_inputs/CMakeLists.txt | 1 + 13 files changed, 1259 insertions(+), 1154 deletions(-) create mode 100644 source/globals/CMakeLists.txt rename source/{charging_models => globals}/datatypes_global.cpp (100%) rename source/{charging_models => globals}/datatypes_global.h (100%) create mode 100644 source/globals/globals_python_bind.cpp rename source/{base => globals}/helper.cpp (100%) rename source/{base => globals}/helper.h (100%) rename source/{base => globals}/inputs.h (100%) diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt index c645a45..4b9a9d2 100644 --- a/source/CMakeLists.txt +++ b/source/CMakeLists.txt @@ -2,6 +2,7 @@ add_subdirectory(base) add_subdirectory(charging_models) add_subdirectory(factory) add_subdirectory(load_inputs) +add_subdirectory(globals) if(CMAKE_BUILD_TYPE STREQUAL "Debug") add_executable(tests main.cpp ) diff --git a/source/base/CMakeLists.txt b/source/base/CMakeLists.txt index 55e8529..baaf179 100644 --- a/source/base/CMakeLists.txt +++ b/source/base/CMakeLists.txt @@ -1,6 +1,5 @@ set(BASE_FILES "datatypes_module.cpp" "ac_to_dc_converter.cpp" - "helper.cpp" "battery_calculate_limits.cpp" "battery_integrate_X_in_time.cpp" "battery.cpp" @@ -18,6 +17,7 @@ add_library(Base STATIC ${BASE_FILES}) target_link_libraries(Base PRIVATE Charging_models) target_link_libraries(Base PRIVATE factory) target_link_libraries(Base PRIVATE Load_inputs) +target_include_directories(Base PUBLIC ${PROJECT_SOURCE_DIR}/source/globals) target_include_directories(Base PUBLIC ${PROJECT_SOURCE_DIR}/source/base) target_include_directories(Base PUBLIC ${PROJECT_SOURCE_DIR}/source/charging_models) target_include_directories(Base PUBLIC ${PROJECT_SOURCE_DIR}/source/factory) @@ -30,7 +30,6 @@ install(TARGETS Caldera_ICM set(BASE_AUX_FILES "datatypes_module.cpp" "ac_to_dc_converter.cpp" - "helper.cpp" "battery_calculate_limits.cpp" "battery_integrate_X_in_time.cpp" "battery.cpp" @@ -47,6 +46,7 @@ add_library(Base_aux STATIC ${BASE_AUX_FILES}) target_link_libraries(Base_aux PRIVATE Charging_models) target_link_libraries(Base_aux PRIVATE factory) target_link_libraries(Base_aux PRIVATE Load_inputs) +target_include_directories(Base_aux PUBLIC ${PROJECT_SOURCE_DIR}/source/globals) target_include_directories(Base_aux PUBLIC ${PROJECT_SOURCE_DIR}/source/base) target_include_directories(Base_aux PUBLIC ${PROJECT_SOURCE_DIR}/source/charging_models) target_include_directories(Base_aux PUBLIC ${PROJECT_SOURCE_DIR}/source/factory) diff --git a/source/charging_models/CMakeLists.txt b/source/charging_models/CMakeLists.txt index 85357a8..ab78a59 100644 --- a/source/charging_models/CMakeLists.txt +++ b/source/charging_models/CMakeLists.txt @@ -1,10 +1,11 @@ -set(CHARGING_MODEL_FILES "datatypes_global.cpp" - "EV_characteristics.cpp" +set(CHARGING_MODEL_FILES "EV_characteristics.cpp" "EVSE_characteristics.cpp" "EV_EVSE_inventory.cpp") add_library(Charging_models STATIC ${CHARGING_MODEL_FILES}) target_compile_features(Charging_models PUBLIC cxx_std_17) +target_link_libraries(Charging_models PRIVATE Globals) +target_include_directories(Charging_models PUBLIC ${PROJECT_SOURCE_DIR}/source/globals) target_include_directories(Charging_models PUBLIC ${PROJECT_SOURCE_DIR}/source/base) target_include_directories(Charging_models PUBLIC ${PROJECT_SOURCE_DIR}/source/charging_models) target_include_directories(Charging_models PUBLIC ${PROJECT_SOURCE_DIR}/source/factory) diff --git a/source/charging_models/charging_models_python_bind.cpp b/source/charging_models/charging_models_python_bind.cpp index 2dab214..3740953 100644 --- a/source/charging_models/charging_models_python_bind.cpp +++ b/source/charging_models/charging_models_python_bind.cpp @@ -15,1155 +15,72 @@ namespace py = pybind11; PYBIND11_MODULE(Caldera_models, m) { + //-------------------------------------------- + // EV_characteristics + //-------------------------------------------- + + py::enum_(m, "battery_chemistry") + .value("LTO", battery_chemistry::LTO) + .value("LMO", battery_chemistry::LMO) + .value("NMC", battery_chemistry::NMC); + + py::class_(m, "EV_characteristics") + .def(py::init()) + .def("get_charge_profile_peak_power_W_per_Wh", &EV_characteristics::get_charge_profile_peak_power_W_per_Wh) + .def("get_type", &EV_characteristics::get_type) + .def("get_chemistry", &EV_characteristics::get_chemistry) + .def("get_usable_battery_size_kWh", &EV_characteristics::get_usable_battery_size_kWh) + .def("get_range_miles", &EV_characteristics::get_range_miles) + .def("get_efficiency_Wh_per_mile", &EV_characteristics::get_efficiency_Wh_per_mile) + .def("get_AC_charge_rate_kW", &EV_characteristics::get_AC_charge_rate_kW) + .def("get_DCFC_capable", &EV_characteristics::get_DCFC_capable) + .def("get_max_c_rate", &EV_characteristics::get_max_c_rate) + .def("get_pack_voltage_at_peak_power_V", &EV_characteristics::get_pack_voltage_at_peak_power_V) + .def("get_battery_size_kWh", &EV_characteristics::get_battery_size_kWh) + .def("get_battery_size_Ah_1C", &EV_characteristics::get_battery_size_Ah_1C) + .def("get_battery_size_with_stochastic_degradation_kWh", &EV_characteristics::get_battery_size_with_stochastic_degradation_kWh); + + //-------------------------------------------- + // EVSE_characteristics + //-------------------------------------------- + + py::enum_(m, "EVSE_level") + .value("L1", EVSE_level::L1) + .value("L2", EVSE_level::L2) + .value("DCFC", EVSE_level::DCFC); + + py::enum_(m, "EVSE_phase") + .value("singlephase", EVSE_phase::singlephase) + .value("threephase", EVSE_phase::threephase); + + py::class_(m, "EVSE_characteristics") + .def(py::init()) + .def("get_type", &EVSE_characteristics::get_type) + .def("get_level", &EVSE_characteristics::get_level) + .def("get_phase", &EVSE_characteristics::get_phase) + .def("get_power_limit_kW", &EVSE_characteristics::get_power_limit_kW) + .def("get_volatge_limit_V", &EVSE_characteristics::get_volatge_limit_V) + .def("get_current_limit_A", &EVSE_characteristics::get_current_limit_A) + .def("get_standby_real_power_kW", &EVSE_characteristics::get_standby_real_power_kW) + .def("get_standby_reactive_power_kW", &EVSE_characteristics::get_standby_reactive_power_kW); + + //-------------------------------------------- + // EV_EVSE_inventory + //-------------------------------------------- + + py::class_(m, "pev_SE_pair") + .def(py::init()) + .def_readwrite("ev_type", &pev_SE_pair::ev_type) + .def_readwrite("se_type", &pev_SE_pair::se_type); + + py::class_(m, "EV_EVSE_inventory") + .def(py::init()) + .def("get_EV_inventory", &EV_EVSE_inventory::get_EV_inventory) + .def("get_EVSE_inventory", &EV_EVSE_inventory::get_EVSE_inventory) + .def("get_all_EVs", &EV_EVSE_inventory::get_all_EVs) + .def("get_all_EVSEs", &EV_EVSE_inventory::get_all_EVSEs) + .def("get_default_EV", &EV_EVSE_inventory::get_default_EV) + .def("get_default_EVSE", &EV_EVSE_inventory::get_default_EVSE) + .def("get_all_compatible_pev_SE_combinations", &EV_EVSE_inventory::get_all_compatible_pev_SE_combinations); - //-------------------------------------------- - // interface_to_SE_groups_inputs - //-------------------------------------------- - - py::class_(m, "interface_to_SE_groups_inputs") - .def(py::init, charge_event_queuing_inputs, std::vector, double, int, std::vector, std::vector, double, L2_control_strategy_parameters, bool > () ); - - //--------------------------------- - // Charge Event Data - //--------------------------------- - py::enum_(m, "stop_charging_decision_metric") - .value("stop_charging_using_target_soc", stop_charging_decision_metric::stop_charging_using_target_soc) - .value("stop_charging_using_depart_time", stop_charging_decision_metric::stop_charging_using_depart_time) - .value("stop_charging_using_whatever_happens_first", stop_charging_decision_metric::stop_charging_using_whatever_happens_first); - - py::enum_(m, "stop_charging_mode") - .value("target_charging", stop_charging_mode::target_charging) - .value("block_charging", stop_charging_mode::block_charging); - - py::class_(m, "stop_charging_criteria") - .def(py::init<>()) - .def(py::init()) - .def_readwrite("decision_metric", &stop_charging_criteria::decision_metric) - .def_readwrite("soc_mode", &stop_charging_criteria::soc_mode) - .def_readwrite("depart_time_mode", &stop_charging_criteria::depart_time_mode) - .def_readwrite("soc_block_charging_max_undershoot_percent", &stop_charging_criteria::soc_block_charging_max_undershoot_percent) - .def_readwrite("depart_time_block_charging_max_undershoot_percent", &stop_charging_criteria::depart_time_block_charging_max_undershoot_percent) - .def(py::pickle( - [](const stop_charging_criteria& obj) - { // __getstate__ - return py::make_tuple(obj.decision_metric, obj.soc_mode, obj.depart_time_mode, obj.soc_block_charging_max_undershoot_percent, obj.depart_time_block_charging_max_undershoot_percent); - }, - [](py::tuple t) - { // __setstate__ - stop_charging_criteria obj; - obj.decision_metric = t[0].cast(); - obj.soc_mode = t[1].cast(); - obj.depart_time_mode = t[2].cast(); - obj.soc_block_charging_max_undershoot_percent = t[3].cast(); - obj.depart_time_block_charging_max_undershoot_percent = t[4].cast(); - return obj; - } - )); - - py::class_(m, "charge_event_data") - .def(py::init<>()) - .def(py::init()) - .def_readwrite("charge_event_id", &charge_event_data::charge_event_id) - .def_readwrite("SE_group_id", &charge_event_data::SE_group_id) - .def_readwrite("SE_id", &charge_event_data::SE_id) - .def_readwrite("vehicle_id", &charge_event_data::vehicle_id) - .def_readwrite("vehicle_type", &charge_event_data::vehicle_type) - .def_readwrite("arrival_unix_time", &charge_event_data::arrival_unix_time) - .def_readwrite("departure_unix_time", &charge_event_data::departure_unix_time) - .def_readwrite("arrival_SOC", &charge_event_data::arrival_SOC) - .def_readwrite("departure_SOC", &charge_event_data::departure_SOC) - .def_readwrite("stop_charge", &charge_event_data::stop_charge) - .def_readwrite("control_enums", &charge_event_data::control_enums) - .def_static("get_file_header", &charge_event_data::get_file_header) - .def(py::pickle( - [](const charge_event_data& obj) - { // __getstate__ - return py::make_tuple(obj.charge_event_id, obj.SE_group_id, obj.SE_id, obj.vehicle_id, obj.vehicle_type, obj.arrival_unix_time, obj.departure_unix_time, obj.arrival_SOC, obj.departure_SOC, obj.stop_charge, obj.control_enums); - }, - [](py::tuple t) - { // __setstate__ - charge_event_data obj; - obj.charge_event_id = t[0].cast(); - obj.SE_group_id = t[1].cast(); - obj.SE_id = t[2].cast(); - obj.vehicle_id = t[3].cast(); - obj.vehicle_type = t[4].cast(); - obj.arrival_unix_time = t[5].cast(); - obj.departure_unix_time = t[6].cast(); - obj.arrival_SOC = t[7].cast(); - obj.departure_SOC = t[8].cast(); - obj.stop_charge = t[9].cast(); - obj.control_enums = t[10].cast(); - return obj; - } - )); - - py::class_(m, "SE_group_charge_event_data") - .def(py::init<>()) - .def(py::init>()) - .def_readwrite("SE_group_id", &SE_group_charge_event_data::SE_group_id) - .def_readwrite("charge_events", &SE_group_charge_event_data::charge_events) - .def(py::pickle( - [](const SE_group_charge_event_data& obj) - { // __getstate__ - return py::make_tuple(obj.SE_group_id, obj.charge_events); - }, - [](py::tuple t) - { // __setstate__ - SE_group_charge_event_data obj; - obj.SE_group_id = t[0].cast(); - - for (auto x : t[1]) - obj.charge_events.push_back(x.cast()); - - return obj; - } - )); - - //======================================= - - py::enum_(m, "queuing_mode_enum") - .value("overlapAllowed_earlierArrivalTimeHasPriority", queuing_mode_enum::overlapAllowed_earlierArrivalTimeHasPriority) - .value("overlapLimited_mostRecentlyQueuedHasPriority", queuing_mode_enum::overlapLimited_mostRecentlyQueuedHasPriority); - - py::class_(m, "charge_event_queuing_inputs") - .def(py::init<>()) - .def_readwrite("max_allowed_overlap_time_sec", &charge_event_queuing_inputs::max_allowed_overlap_time_sec) - .def_readwrite("queuing_mode", &charge_event_queuing_inputs::queuing_mode) - .def(py::pickle( - [](const charge_event_queuing_inputs& obj) - { // __getstate__ - return py::make_tuple(obj.max_allowed_overlap_time_sec, obj.queuing_mode); - }, - [](py::tuple t) - { // __setstate__ - charge_event_queuing_inputs obj; - obj.max_allowed_overlap_time_sec = t[0].cast(); - obj.queuing_mode = t[1].cast(); - - return obj; - } - )); - - //--------------------------------- - // SE Configuration - //--------------------------------- - py::class_(m, "SE_configuration") - .def(py::init<>()) - .def(py::init()) - .def_readwrite("SE_group_id", &SE_configuration::SE_group_id) - .def_readwrite("SE_id", &SE_configuration::SE_id) - .def_readwrite("supply_equipment_type", &SE_configuration::supply_equipment_type) - .def_readwrite("lattitude", &SE_configuration::lattitude) - .def_readwrite("longitude", &SE_configuration::longitude) - .def_readwrite("grid_node_id", &SE_configuration::grid_node_id) - .def_readwrite("location_type", &SE_configuration::location_type) - .def(py::pickle( - [](const SE_configuration& obj) - { // __getstate__ - return py::make_tuple(obj.SE_group_id, obj.SE_id, obj.supply_equipment_type, obj.lattitude, obj.longitude, obj.grid_node_id, obj.location_type); - }, - [](py::tuple t) - { // __setstate__ - SE_configuration obj; - obj.SE_group_id = t[0].cast(); - obj.SE_id = t[1].cast(); - obj.supply_equipment_type = t[2].cast(); - obj.lattitude = t[3].cast(); - obj.longitude = t[4].cast(); - obj.grid_node_id = t[5].cast(); - obj.location_type = t[6].cast(); - return obj; - } - )); - - py::class_(m, "SE_group_configuration") - .def(py::init<>()) - .def(py::init >()) - .def_readwrite("SE_group_id", &SE_group_configuration::SE_group_id) - .def_readwrite("SEs", &SE_group_configuration::SEs) - .def(py::pickle( - [](const SE_group_configuration& obj) - { // __getstate__ - return py::make_tuple(obj.SE_group_id, obj.SEs); - }, - [](py::tuple t) - { // __setstate__ - SE_group_configuration obj; - obj.SE_group_id = t[0].cast(); - for (auto x : t[1]) - obj.SEs.push_back(x.cast()); - - return obj; - } - )); - - //--------------------------------- - // Status of CE - //--------------------------------- - - py::enum_(m, "SE_charging_status") - .value("no_ev_plugged_in", SE_charging_status::no_ev_plugged_in) - .value("ev_plugged_in_not_charging", SE_charging_status::ev_plugged_in_not_charging) - .value("ev_charging", SE_charging_status::ev_charging) - .value("ev_charge_complete", SE_charging_status::ev_charge_complete); - - py::class_(m, "FICE_inputs") - .def(py::init<>()) - .def_readwrite("interval_start_unixtime", &FICE_inputs::interval_start_unixtime) - .def_readwrite("interval_duration_sec", &FICE_inputs::interval_duration_sec) - .def_readwrite("acPkW_setpoint", &FICE_inputs::acPkW_setpoint) - .def(py::pickle( - [](const FICE_inputs& obj) - { // __getstate__ - return py::make_tuple(obj.interval_start_unixtime, obj.interval_duration_sec, obj.acPkW_setpoint); - }, - [](py::tuple t) - { // __setstate__ - FICE_inputs obj; - obj.interval_start_unixtime = t[0].cast(); - obj.interval_duration_sec = t[1].cast(); - obj.acPkW_setpoint = t[2].cast(); - return obj; - } - )); - - py::class_(m, "CE_FICE") - .def(py::init<>()) - .def_readwrite("SE_id", &CE_FICE::SE_id) - .def_readwrite("charge_event_id", &CE_FICE::charge_event_id) - .def_readwrite("charge_energy_ackWh", &CE_FICE::charge_energy_ackWh) - .def_readwrite("interval_duration_hrs", &CE_FICE::interval_duration_hrs) - .def(py::pickle( - [](const CE_FICE& obj) - { // __getstate__ - return py::make_tuple(obj.SE_id, obj.charge_event_id, obj.charge_energy_ackWh, obj.interval_duration_hrs); - }, - [](py::tuple t) - { // __setstate__ - CE_FICE obj; - obj.SE_id = t[0].cast(); - obj.charge_event_id = t[1].cast(); - obj.charge_energy_ackWh = t[2].cast(); - obj.interval_duration_hrs = t[3].cast(); - return obj; - } - )); - - py::class_(m, "CE_FICE_in_SE_group") - .def(py::init<>()) - .def_readwrite("SE_group_id", &CE_FICE_in_SE_group::SE_group_id) - .def_readwrite("SE_FICE_vals", &CE_FICE_in_SE_group::SE_FICE_vals) - .def(py::pickle( - [](const CE_FICE_in_SE_group& obj) - { // __getstate__ - return py::make_tuple(obj.SE_group_id, obj.SE_FICE_vals); - }, - [](py::tuple t) - { // __setstate__ - CE_FICE_in_SE_group obj; - obj.SE_group_id = t[0].cast(); - for (auto x : t[1]) - obj.SE_FICE_vals.push_back(x.cast()); - - return obj; - } - )); - - py::class_(m, "active_CE") - .def(py::init<>()) - .def_readwrite("SE_id", &active_CE::SE_id) - .def_readwrite("charge_event_id", &active_CE::charge_event_id) - .def_readwrite("now_unix_time", &active_CE::now_unix_time) - .def_readwrite("now_soc", &active_CE::now_soc) - .def_readwrite("now_dcPkW", &active_CE::now_dcPkW) - .def_readwrite("now_acPkW", &active_CE::now_acPkW) - .def_readwrite("now_acQkVAR", &active_CE::now_acQkVAR) - //.def_readwrite("min_remaining_charge_time_hrs", &active_CE::min_remaining_charge_time_hrs) - //.def_readwrite("min_time_to_complete_entire_charge_hrs", &active_CE::min_time_to_complete_entire_charge_hrs) - .def_readwrite("now_charge_energy_ackWh", &active_CE::now_charge_energy_ackWh) - .def_readwrite("energy_of_complete_charge_ackWh", &active_CE::energy_of_complete_charge_ackWh) - .def_readwrite("vehicle_id", &active_CE::vehicle_id) - .def_readwrite("vehicle_type", &active_CE::vehicle_type) - .def(py::pickle( - [](const active_CE& obj) - { // __getstate__ - return py::make_tuple(obj.SE_id, obj.charge_event_id, obj.now_unix_time, obj.now_soc, - obj.now_charge_energy_ackWh, obj.energy_of_complete_charge_ackWh, - obj.now_dcPkW, obj.now_acPkW, obj.now_acQkVAR, obj.vehicle_id, obj.vehicle_type - //obj.min_remaining_charge_time_hrs, obj.min_time_to_complete_entire_charge_hrs - ); - }, - [](py::tuple t) - { // __setstate_ - active_CE obj; - obj.SE_id = t[0].cast(); - obj.charge_event_id = t[1].cast(); - obj.now_unix_time = t[2].cast(); - obj.now_soc = t[3].cast(); - obj.now_charge_energy_ackWh = t[4].cast(); - obj.energy_of_complete_charge_ackWh = t[5].cast(); - obj.now_dcPkW = t[6].cast(); - obj.now_acPkW = t[7].cast(); - obj.now_acQkVAR = t[8].cast(); - obj.vehicle_id = t[9].cast(); - obj.vehicle_type = t[10].cast(); - //obj.min_remaining_charge_time_hrs = t[6].cast(); - //obj.min_time_to_complete_entire_charge_hrs = t[7].cast(); - - return obj; - } - )); - - py::class_(m, "SE_setpoint") - .def(py::init<>()) - .def_readwrite("SE_id", &SE_setpoint::SE_id) - .def_readwrite("PkW", &SE_setpoint::PkW) - .def_readwrite("QkVAR", &SE_setpoint::QkVAR) - .def(py::pickle( - [](const SE_setpoint& obj) - { // __getstate__ - return py::make_tuple(obj.SE_id, obj.PkW, obj.QkVAR); - }, - [](py::tuple t) - { // __setstate__ - SE_setpoint obj; - obj.SE_id = t[0].cast(); - obj.PkW = t[1].cast(); - obj.QkVAR = t[2].cast(); - - return obj; - } - )); - - py::class_(m, "completed_CE") - .def(py::init<>()) - .def_readwrite("SE_id", &completed_CE::SE_id) - .def_readwrite("charge_event_id", &completed_CE::charge_event_id) - .def_readwrite("final_soc", &completed_CE::final_soc) - .def(py::pickle( - [](const completed_CE& obj) - { // __getstate__ - return py::make_tuple(obj.SE_id, obj.charge_event_id, obj.final_soc); - }, - [](py::tuple t) - { // __setstate__ - completed_CE obj; - obj.SE_id = t[0].cast(); - obj.charge_event_id = t[1].cast(); - obj.final_soc = t[2].cast(); - - return obj; - } - )); - - //--------------------------------- - // Miscellaneous - //--------------------------------- - py::enum_(m, "ac_to_dc_converter_enum") - .value("pf", ac_to_dc_converter_enum::pf) - .value("Q_setpoint", ac_to_dc_converter_enum::Q_setpoint); - - py::class_(m, "SE_power") - .def(py::init<>()) - .def_readwrite("time_step_duration_hrs", &SE_power::time_step_duration_hrs) - .def_readwrite("P1_kW", &SE_power::P1_kW) - .def_readwrite("P2_kW", &SE_power::P2_kW) - .def_readwrite("P3_kW", &SE_power::P3_kW) - .def_readwrite("Q3_kVAR", &SE_power::Q3_kVAR) - .def_readwrite("soc", &SE_power::soc) - .def_readwrite("SE_status_val", &SE_power::SE_status_val) - .def(py::pickle( - [](const SE_power& obj) - { // __getstate__ - return py::make_tuple(obj.time_step_duration_hrs, obj.P1_kW, obj.P2_kW, obj.P3_kW, obj.Q3_kVAR, obj.soc, obj.SE_status_val); - }, - [](py::tuple t) - { // __setstate__ - SE_power obj; - obj.time_step_duration_hrs = t[0].cast(); - obj.P1_kW = t[1].cast(); - obj.P2_kW = t[2].cast(); - obj.P3_kW = t[3].cast(); - obj.Q3_kVAR = t[4].cast(); - obj.soc = t[5].cast(); - obj.SE_status_val = t[6].cast(); - - return obj; - } - )); - - py::class_(m, "pev_batterySize_info") - .def(py::init<>()) - .def_readwrite("vehicle_type", &pev_batterySize_info::vehicle_type) - .def_readwrite("battery_size_kWh", &pev_batterySize_info::battery_size_kWh) - .def_readwrite("battery_size_with_stochastic_degredation_kWh", &pev_batterySize_info::battery_size_with_stochastic_degredation_kWh) - - .def(py::pickle( - [](const pev_batterySize_info& obj) - { // __getstate__ - return py::make_tuple(obj.vehicle_type, obj.battery_size_kWh, obj.battery_size_with_stochastic_degredation_kWh); - }, - [](py::tuple t) - { // __setstate__ - pev_batterySize_info obj; - obj.vehicle_type = t[0].cast(); - obj.battery_size_kWh = t[1].cast(); - obj.battery_size_with_stochastic_degredation_kWh = t[2].cast(); - - return obj; - } - )); - - //--------------------------------- - // PEV Charge Profile - //--------------------------------- - py::class_(m, "pev_charge_profile_result") - .def(py::init<>()) - .def_readwrite("soc_increase", &pev_charge_profile_result::soc_increase) - .def_readwrite("E1_kWh", &pev_charge_profile_result::E1_kWh) - .def_readwrite("E2_kWh", &pev_charge_profile_result::E2_kWh) - .def_readwrite("E3_kWh", &pev_charge_profile_result::E3_kWh) - .def_readwrite("cumQ3_kVARh", &pev_charge_profile_result::cumQ3_kVARh) - .def_readwrite("total_charge_time_hrs", &pev_charge_profile_result::total_charge_time_hrs) - .def_readwrite("incremental_chage_time_hrs", &pev_charge_profile_result::incremental_chage_time_hrs) - .def(py::pickle( - [](const pev_charge_profile_result& obj) - { // __getstate__ - return py::make_tuple(obj.soc_increase, obj.E1_kWh, obj.E2_kWh, obj.E3_kWh, obj.cumQ3_kVARh, obj.total_charge_time_hrs, obj.incremental_chage_time_hrs); - }, - [](py::tuple t) - { // __setstate__ - pev_charge_profile_result obj; - obj.soc_increase = t[0].cast(); - obj.E1_kWh = t[1].cast(); - obj.E2_kWh = t[2].cast(); - obj.E3_kWh = t[3].cast(); - obj.cumQ3_kVARh = t[4].cast(); - obj.total_charge_time_hrs = t[5].cast(); - obj.incremental_chage_time_hrs = t[6].cast(); - return obj; - } - )); - - py::class_(m, "pev_charge_fragment_removal_criteria") - .def(py::init<>()) - .def_readwrite("max_percent_of_fragments_that_can_be_removed", &pev_charge_fragment_removal_criteria::max_percent_of_fragments_that_can_be_removed) - .def_readwrite("kW_change_threashold", &pev_charge_fragment_removal_criteria::kW_change_threashold) - .def_readwrite("threshold_to_determine_not_removable_fragments_on_flat_peak_kW", &pev_charge_fragment_removal_criteria::threshold_to_determine_not_removable_fragments_on_flat_peak_kW) - .def_readwrite("perc_of_max_starting_point_to_determine_not_removable_fragments_on_low_elbow", &pev_charge_fragment_removal_criteria::perc_of_max_starting_point_to_determine_not_removable_fragments_on_low_elbow) - .def(py::pickle( - [](const pev_charge_fragment_removal_criteria& obj) - { // __getstate__ - return py::make_tuple(obj.max_percent_of_fragments_that_can_be_removed, obj.kW_change_threashold, obj.threshold_to_determine_not_removable_fragments_on_flat_peak_kW, obj.perc_of_max_starting_point_to_determine_not_removable_fragments_on_low_elbow); - }, - [](py::tuple t) - { // __setstate__ - pev_charge_fragment_removal_criteria obj; - obj.max_percent_of_fragments_that_can_be_removed = t[0].cast(); - obj.kW_change_threashold = t[1].cast(); - obj.threshold_to_determine_not_removable_fragments_on_flat_peak_kW = t[2].cast(); - obj.perc_of_max_starting_point_to_determine_not_removable_fragments_on_low_elbow = t[3].cast(); - return obj; - } - )); - - py::class_(m, "pev_charge_fragment") - .def(py::init<>()) - .def(py::init()) - .def_readwrite("soc", &pev_charge_fragment::soc) - .def_readwrite("E1_kWh", &pev_charge_fragment::E1_kWh) - .def_readwrite("E2_kWh", &pev_charge_fragment::E2_kWh) - .def_readwrite("E3_kWh", &pev_charge_fragment::E3_kWh) - .def_readwrite("cumQ3_kVARh", &pev_charge_fragment::cumQ3_kVARh) - .def_readwrite("time_since_charge_began_hrs", &pev_charge_fragment::time_since_charge_began_hrs) - .def(py::pickle( - [](const pev_charge_fragment& obj) - { // __getstate__ - return py::make_tuple(obj.soc, obj.E1_kWh, obj.E2_kWh, obj.E3_kWh, obj.cumQ3_kVARh, obj.time_since_charge_began_hrs); - }, - [](py::tuple t) - { // __setstate__ - pev_charge_fragment obj; - obj.soc = t[0].cast(); - obj.E1_kWh = t[1].cast(); - obj.E2_kWh = t[2].cast(); - obj.E3_kWh = t[3].cast(); - obj.cumQ3_kVARh = t[4].cast(); - obj.time_since_charge_began_hrs = t[5].cast(); - return obj; - } - )); - - py::class_(m, "pev_charge_fragment_variation") - .def(py::init<>()) - .def(py::init()) - .def_readwrite("is_removable", &pev_charge_fragment_variation::is_removable) - .def_readwrite("original_charge_fragment_index", &pev_charge_fragment_variation::original_charge_fragment_index) - .def_readwrite("time_since_charge_began_hrs", &pev_charge_fragment_variation::time_since_charge_began_hrs) - .def_readwrite("soc", &pev_charge_fragment_variation::soc) - .def_readwrite("P3_kW", &pev_charge_fragment_variation::P3_kW) - .def_readwrite("variation_rank", &pev_charge_fragment_variation::variation_rank) - .def(py::pickle( - [](const pev_charge_fragment_variation& obj) - { // __getstate__ - return py::make_tuple(obj.is_removable, obj.original_charge_fragment_index, obj.time_since_charge_began_hrs, obj.soc, obj.P3_kW, obj.variation_rank); - }, - [](py::tuple t) - { // __setstate__ - pev_charge_fragment_variation obj; - obj.is_removable = t[0].cast(); - obj.original_charge_fragment_index = t[1].cast(); - obj.time_since_charge_began_hrs = t[2].cast(); - obj.soc = t[3].cast(); - obj.P3_kW = t[4].cast(); - obj.variation_rank = t[5].cast(); - return obj; - } - )); - - py::class_(m, "charge_profile_validation_data") - .def(py::init<>()) - .def_readwrite("time_step_sec", &charge_profile_validation_data::time_step_sec) - .def_readwrite("target_acP3_kW", &charge_profile_validation_data::target_acP3_kW) - .def_readwrite("fragment_removal_criteria", &charge_profile_validation_data::fragment_removal_criteria) - .def_readwrite("removed_fragments", &charge_profile_validation_data::removed_fragments) - .def_readwrite("retained_fragments", &charge_profile_validation_data::retained_fragments) - .def_readwrite("downsampled_charge_fragments", &charge_profile_validation_data::downsampled_charge_fragments) - .def_readwrite("original_charge_fragments", &charge_profile_validation_data::original_charge_fragments) - .def(py::pickle( - [](const charge_profile_validation_data& obj) - { // __getstate__ - return py::make_tuple(obj.time_step_sec, obj.target_acP3_kW, obj.fragment_removal_criteria, obj.removed_fragments, obj.retained_fragments, obj.downsampled_charge_fragments, obj.original_charge_fragments); - }, - [](py::tuple t) - { // __setstate__ - charge_profile_validation_data obj; - obj.time_step_sec = t[0].cast(); - obj.target_acP3_kW = t[1].cast(); - obj.fragment_removal_criteria = t[2].cast(); - - for (auto x : t[3]) - obj.removed_fragments.push_back(x.cast()); - - for (auto x : t[4]) - obj.retained_fragments.push_back(x.cast()); - - for (auto x : t[5]) - obj.downsampled_charge_fragments.push_back(x.cast()); - - for (auto x : t[6]) - obj.original_charge_fragments.push_back(x.cast()); - - return obj; - } - )); - - py::class_(m, "charge_event_P3kW_limits") - .def(py::init<>()) - .def_readwrite("min_P3kW", &charge_event_P3kW_limits::min_P3kW) - .def_readwrite("max_P3kW", &charge_event_P3kW_limits::max_P3kW) - .def(py::pickle( - [](const charge_event_P3kW_limits& obj) - { // __getstate__ - return py::make_tuple(obj.min_P3kW, obj.max_P3kW); - }, - [](py::tuple t) - { // __setstate__ - charge_event_P3kW_limits obj; - obj.min_P3kW = t[0].cast(); - obj.max_P3kW = t[1].cast(); - return obj; - } - )); - - //--------------------------------- - // Low Pass Filter Parameters - //--------------------------------- - py::enum_(m, "LPF_window_enum") - .value("Hanning", LPF_window_enum::Hanning) - .value("Blackman", LPF_window_enum::Blackman) - .value("Rectangular", LPF_window_enum::Rectangular); - - py::class_(m, "LPF_parameters") - .def(py::init<>()) - .def_readwrite("window_size", &LPF_parameters::window_size) - .def_readwrite("window_type", &LPF_parameters::window_type) - .def(py::pickle( - [](const LPF_parameters& obj) - { // __getstate__ - return py::make_tuple(obj.window_size, obj.window_type); - }, - [](py::tuple t) - { // __setstate__ - LPF_parameters obj; - obj.window_size = t[0].cast(); - obj.window_type = t[1].cast(); - return obj; - } - )); - - py::class_(m, "LPF_parameters_randomize_window_size") - .def(py::init<>()) - .def_readwrite("is_active", &LPF_parameters_randomize_window_size::is_active) - .def_readwrite("seed", &LPF_parameters_randomize_window_size::seed) - .def_readwrite("window_size_LB", &LPF_parameters_randomize_window_size::window_size_LB) - .def_readwrite("window_size_UB", &LPF_parameters_randomize_window_size::window_size_UB) - .def_readwrite("window_type", &LPF_parameters_randomize_window_size::window_type) - .def(py::pickle( - [](const LPF_parameters_randomize_window_size& obj) - { // __getstate__ - return py::make_tuple(obj.is_active, obj.seed, obj.window_size_LB, obj.window_size_UB, obj.window_type); - }, - [](py::tuple t) - { // __setstate__ - LPF_parameters_randomize_window_size obj; - obj.is_active = t[0].cast(); - obj.seed = t[1].cast(); - obj.window_size_LB = t[2].cast(); - obj.window_size_UB = t[3].cast(); - obj.window_type = t[4].cast(); - return obj; - } - )); - - //--------------------------------- - // Control Strategy Parameters - //--------------------------------- - py::enum_(m, "L2_control_strategies_enum") - .value("NA", L2_control_strategies_enum::NA) - .value("ES100_A", L2_control_strategies_enum::ES100_A) - .value("ES100_B", L2_control_strategies_enum::ES100_B) - .value("ES110", L2_control_strategies_enum::ES110) - .value("ES200", L2_control_strategies_enum::ES200) - .value("ES300", L2_control_strategies_enum::ES300) - .value("ES500", L2_control_strategies_enum::ES500) - .value("VS100", L2_control_strategies_enum::VS100) - .value("VS200_A", L2_control_strategies_enum::VS200_A) - .value("VS200_B", L2_control_strategies_enum::VS200_B) - .value("VS200_C", L2_control_strategies_enum::VS200_C) - .value("VS300", L2_control_strategies_enum::VS300); - - py::class_(m, "ES100_L2_parameters") - .def(py::init<>()) - .def_readwrite("beginning_of_TofU_rate_period__time_from_midnight_hrs", &ES100_L2_parameters::beginning_of_TofU_rate_period__time_from_midnight_hrs) - .def_readwrite("end_of_TofU_rate_period__time_from_midnight_hrs", &ES100_L2_parameters::end_of_TofU_rate_period__time_from_midnight_hrs) - .def_readwrite("randomization_method", &ES100_L2_parameters::randomization_method) - .def_readwrite("M1_delay_period_hrs", &ES100_L2_parameters::M1_delay_period_hrs) - .def_readwrite("random_seed", &ES100_L2_parameters::random_seed) - .def(py::pickle( - [](const ES100_L2_parameters& obj) - { // __getstate__ - return py::make_tuple(obj.beginning_of_TofU_rate_period__time_from_midnight_hrs, obj.end_of_TofU_rate_period__time_from_midnight_hrs, obj.randomization_method, obj.M1_delay_period_hrs, obj.random_seed); - }, - [](py::tuple t) - { // __setstate__ - ES100_L2_parameters obj; - obj.beginning_of_TofU_rate_period__time_from_midnight_hrs = t[0].cast(); - obj.end_of_TofU_rate_period__time_from_midnight_hrs = t[1].cast(); - obj.randomization_method = t[2].cast(); - obj.M1_delay_period_hrs = t[3].cast(); - obj.random_seed = t[4].cast(); - return obj; - } - )); - - py::class_(m, "ES110_L2_parameters") - .def(py::init<>()) - .def_readwrite("random_seed", &ES110_L2_parameters::random_seed) - .def(py::pickle( - [](const ES110_L2_parameters& obj) - { // __getstate__ - return py::make_tuple(obj.random_seed); - }, - [](py::tuple t) - { // __setstate__ - ES110_L2_parameters obj; - obj.random_seed = t[0].cast(); - return obj; - } - )); - - py::class_(m, "ES200_L2_parameters") - .def(py::init<>()) - .def_readwrite("weight_factor_to_calculate_valley_fill_target", &ES200_L2_parameters::weight_factor_to_calculate_valley_fill_target) - .def(py::pickle( - [](const ES200_L2_parameters& obj) - { // __getstate__ - return py::make_tuple(obj.weight_factor_to_calculate_valley_fill_target); - }, - [](py::tuple t) - { // __setstate__ - ES200_L2_parameters obj; - obj.weight_factor_to_calculate_valley_fill_target = t[0].cast(); - return obj; - } - )); - - py::class_(m, "ES300_L2_parameters") - .def(py::init<>()) - .def_readwrite("weight_factor_to_calculate_valley_fill_target", &ES300_L2_parameters::weight_factor_to_calculate_valley_fill_target) - .def(py::pickle( - [](const ES300_L2_parameters& obj) - { // __getstate__ - return py::make_tuple(obj.weight_factor_to_calculate_valley_fill_target); - }, - [](py::tuple t) - { // __setstate__ - ES300_L2_parameters obj; - obj.weight_factor_to_calculate_valley_fill_target = t[0].cast(); - return obj; - } - )); - - py::class_(m, "normal_random_error") - .def(py::init<>()) - .def_readwrite("seed", &normal_random_error::seed) - .def_readwrite("stdev", &normal_random_error::stdev) - .def_readwrite("stdev_bounds", &normal_random_error::stdev_bounds) - .def(py::pickle( - [](const normal_random_error& obj) - { // __getstate__ - return py::make_tuple(obj.seed, obj.stdev, obj.stdev_bounds); - }, - [](py::tuple t) - { // __setstate__ - normal_random_error obj; - obj.seed = t[0].cast(); - obj.stdev = t[1].cast(); - obj.stdev_bounds = t[2].cast(); - return obj; - } - )); - - py::class_(m, "ES500_L2_parameters") - .def(py::init<>()) - .def_readwrite("aggregator_timestep_mins", &ES500_L2_parameters::aggregator_timestep_mins) - .def_readwrite("off_to_on_lead_time_sec", &ES500_L2_parameters::off_to_on_lead_time_sec) - .def_readwrite("default_lead_time_sec", &ES500_L2_parameters::default_lead_time_sec) - .def(py::pickle( - [](const ES500_L2_parameters& obj) - { // __getstate__ - return py::make_tuple(obj.aggregator_timestep_mins, obj.off_to_on_lead_time_sec, obj.default_lead_time_sec); - }, - [](py::tuple t) - { // __setstate__ - ES500_L2_parameters obj; - obj.aggregator_timestep_mins = t[0].cast(); - obj.off_to_on_lead_time_sec = t[1].cast(); - obj.default_lead_time_sec = t[2].cast(); - return obj; - } - )); - - py::class_(m, "VS100_L2_parameters") - .def(py::init<>()) - .def_readwrite("target_P3_reference__percent_of_maxP3", &VS100_L2_parameters::target_P3_reference__percent_of_maxP3) - .def_readwrite("max_delta_kW_per_min", &VS100_L2_parameters::max_delta_kW_per_min) - .def_readwrite("volt_delta_kW_curve_puV", &VS100_L2_parameters::volt_delta_kW_curve_puV) - .def_readwrite("volt_delta_kW_percP", &VS100_L2_parameters::volt_delta_kW_percP) - .def_readwrite("voltage_LPF", &VS100_L2_parameters::voltage_LPF) - .def(py::pickle( - [](const VS100_L2_parameters& obj) - { // __getstate__ - return py::make_tuple(obj.target_P3_reference__percent_of_maxP3, obj.max_delta_kW_per_min, obj.volt_delta_kW_curve_puV, obj.volt_delta_kW_percP, obj.voltage_LPF); - }, - [](py::tuple t) - { // __setstate__ - VS100_L2_parameters obj; - obj.target_P3_reference__percent_of_maxP3 = t[0].cast(); - obj.max_delta_kW_per_min = t[1].cast(); - - for (auto x : t[2]) - obj.volt_delta_kW_curve_puV.push_back(x.cast()); - - for (auto x : t[3]) - obj.volt_delta_kW_percP.push_back(x.cast()); - - obj.voltage_LPF = t[4].cast(); - - return obj; - } - )); - - py::class_(m, "VS200_L2_parameters") - .def(py::init<>()) - .def_readwrite("target_P3_reference__percent_of_maxP3", &VS200_L2_parameters::target_P3_reference__percent_of_maxP3) - .def_readwrite("max_delta_kVAR_per_min", &VS200_L2_parameters::max_delta_kVAR_per_min) - .def_readwrite("volt_var_curve_puV", &VS200_L2_parameters::volt_var_curve_puV) - .def_readwrite("volt_var_curve_percQ", &VS200_L2_parameters::volt_var_curve_percQ) - .def_readwrite("voltage_LPF", &VS200_L2_parameters::voltage_LPF) - .def(py::pickle( - [](const VS200_L2_parameters& obj) - { // __getstate__ - return py::make_tuple(obj.target_P3_reference__percent_of_maxP3, obj.max_delta_kVAR_per_min, obj.volt_var_curve_puV, obj.volt_var_curve_percQ, obj.voltage_LPF); - }, - [](py::tuple t) - { // __setstate__ - VS200_L2_parameters obj; - obj.target_P3_reference__percent_of_maxP3 = t[0].cast(); - obj.max_delta_kVAR_per_min = t[1].cast(); - - for (auto x : t[2]) - obj.volt_var_curve_puV.push_back(x.cast()); - - for (auto x : t[3]) - obj.volt_var_curve_percQ.push_back(x.cast()); - - obj.voltage_LPF = t[4].cast(); - - return obj; - } - )); - - py::class_(m, "VS300_L2_parameters") - .def(py::init<>()) - .def_readwrite("target_P3_reference__percent_of_maxP3", &VS300_L2_parameters::target_P3_reference__percent_of_maxP3) - .def_readwrite("max_QkVAR_as_percent_of_SkVA", &VS300_L2_parameters::max_QkVAR_as_percent_of_SkVA) - .def_readwrite("gamma", &VS300_L2_parameters::gamma) - .def_readwrite("voltage_LPF", &VS300_L2_parameters::voltage_LPF) - .def(py::pickle( - [](const VS300_L2_parameters& obj) - { // __getstate__ - return py::make_tuple(obj.target_P3_reference__percent_of_maxP3, obj.max_QkVAR_as_percent_of_SkVA, obj.gamma, obj.voltage_LPF); - }, - [](py::tuple t) - { // __setstate__ - VS300_L2_parameters obj; - obj.target_P3_reference__percent_of_maxP3 = t[0].cast(); - obj.max_QkVAR_as_percent_of_SkVA = t[1].cast(); - obj.gamma = t[2].cast(); - obj.voltage_LPF = t[3].cast(); - return obj; - } - )); - - py::class_(m, "control_strategy_enums") - .def(py::init<>()) - .def_readwrite("inverter_model_supports_Qsetpoint", &control_strategy_enums::inverter_model_supports_Qsetpoint) - .def_readwrite("ES_control_strategy", &control_strategy_enums::ES_control_strategy) - .def_readwrite("VS_control_strategy", &control_strategy_enums::VS_control_strategy) - .def_readwrite("ext_control_strategy", &control_strategy_enums::ext_control_strategy) - .def(py::pickle( - [](const control_strategy_enums& obj) - { // __getstate__ - return py::make_tuple(obj.inverter_model_supports_Qsetpoint, obj.ES_control_strategy, obj.VS_control_strategy, obj.ext_control_strategy); - }, - [](py::tuple t) - { // __setstate__ - control_strategy_enums obj; - obj.inverter_model_supports_Qsetpoint = t[0].cast(); - obj.ES_control_strategy = t[1].cast(); - obj.VS_control_strategy = t[2].cast(); - obj.ext_control_strategy = t[3].cast(); - return obj; - } - )); - - py::class_(m, "L2_control_strategy_parameters") - .def(py::init<>()) - - .def_readwrite("ES100_A", &L2_control_strategy_parameters::ES100_A) - .def_readwrite("ES100_B", &L2_control_strategy_parameters::ES100_B) - .def_readwrite("ES110", &L2_control_strategy_parameters::ES110) - .def_readwrite("ES200", &L2_control_strategy_parameters::ES200) - .def_readwrite("ES300", &L2_control_strategy_parameters::ES300) - .def_readwrite("ES500", &L2_control_strategy_parameters::ES500) - - .def_readwrite("VS100", &L2_control_strategy_parameters::VS100) - .def_readwrite("VS200_A", &L2_control_strategy_parameters::VS200_A) - .def_readwrite("VS200_B", &L2_control_strategy_parameters::VS200_B) - .def_readwrite("VS200_C", &L2_control_strategy_parameters::VS200_C) - .def_readwrite("VS300", &L2_control_strategy_parameters::VS300) - - .def(py::pickle( - [](const L2_control_strategy_parameters& obj) - { // __getstate__ - return py::make_tuple(obj.ES100_A, obj.ES100_B, obj.ES110, obj.ES200, obj.ES300, obj.ES500, - obj.VS100, obj.VS200_A, obj.VS200_B, obj.VS200_C, obj.VS300); - }, - [](py::tuple t) - { // __setstate__ - L2_control_strategy_parameters obj; - - obj.ES100_A = t[0].cast(); - obj.ES100_B = t[1].cast(); - obj.ES110 = t[2].cast(); - obj.ES200 = t[3].cast(); - obj.ES300 = t[4].cast(); - obj.ES500 = t[5].cast(); - - obj.VS100 = t[6].cast(); - obj.VS200_A = t[7].cast(); - obj.VS200_B = t[8].cast(); - obj.VS200_C = t[9].cast(); - obj.VS300 = t[10].cast(); - - return obj; - } - )); - - //--------------------------------- - // ES500 Aggregator Structures - //--------------------------------- - py::class_(m, "ES500_aggregator_pev_charge_needs") - .def(py::init<>()) - .def_readwrite("SE_id", &ES500_aggregator_pev_charge_needs::SE_id) - .def_readwrite("departure_unix_time", &ES500_aggregator_pev_charge_needs::departure_unix_time) - .def_readwrite("e3_charge_remain_kWh", &ES500_aggregator_pev_charge_needs::e3_charge_remain_kWh) - .def_readwrite("e3_step_max_kWh", &ES500_aggregator_pev_charge_needs::e3_step_max_kWh) - .def_readwrite("e3_step_target_kWh", &ES500_aggregator_pev_charge_needs::e3_step_target_kWh) - .def_readwrite("min_remaining_charge_time_hrs", &ES500_aggregator_pev_charge_needs::min_remaining_charge_time_hrs) - .def_readwrite("min_time_to_complete_entire_charge_hrs", &ES500_aggregator_pev_charge_needs::min_time_to_complete_entire_charge_hrs) - .def_readwrite("remaining_park_time_hrs", &ES500_aggregator_pev_charge_needs::remaining_park_time_hrs) - .def_readwrite("total_park_time_hrs", &ES500_aggregator_pev_charge_needs::total_park_time_hrs) - .def(py::pickle( - [](const ES500_aggregator_pev_charge_needs& obj) - { // __getstate__ - return py::make_tuple(obj.SE_id, obj.departure_unix_time, obj.e3_charge_remain_kWh, obj.e3_step_max_kWh, obj.e3_step_target_kWh, obj.min_remaining_charge_time_hrs, obj.min_time_to_complete_entire_charge_hrs, obj.remaining_park_time_hrs, obj.total_park_time_hrs); - }, - [](py::tuple t) - { // __setstate__ - ES500_aggregator_pev_charge_needs obj; - obj.SE_id = t[0].cast(); - obj.departure_unix_time = t[1].cast(); - obj.e3_charge_remain_kWh = t[2].cast(); - obj.e3_step_max_kWh = t[3].cast(); - obj.e3_step_target_kWh = t[4].cast(); - obj.min_remaining_charge_time_hrs = t[5].cast(); - obj.min_time_to_complete_entire_charge_hrs = t[6].cast(); - obj.remaining_park_time_hrs = t[7].cast(); - obj.total_park_time_hrs = t[8].cast(); - - return obj; - } - )); - - py::class_(m, "ES500_aggregator_charging_needs") - .def(py::init<>()) - .def("is_empty", &ES500_aggregator_charging_needs::is_empty) - .def_readwrite("next_aggregator_timestep_start_time", &ES500_aggregator_charging_needs::next_aggregator_timestep_start_time) - .def_readwrite("pev_charge_needs", &ES500_aggregator_charging_needs::pev_charge_needs) - .def(py::pickle( - [](const ES500_aggregator_charging_needs& obj) - { // __getstate__ - return py::make_tuple(obj.next_aggregator_timestep_start_time, obj.pev_charge_needs); - }, - [](py::tuple t) - { // __setstate__ - ES500_aggregator_charging_needs obj; - obj.next_aggregator_timestep_start_time = t[0].cast(); - - for (auto x : t[1]) - obj.pev_charge_needs.push_back(x.cast()); - - return obj; - } - )); - - py::class_(m, "ES500_aggregator_e_step_setpoints") - .def(py::init<>()) - .def(py::init, std::vector, std::vector >()) - .def("is_empty", &ES500_aggregator_e_step_setpoints::is_empty) - .def_readwrite("next_aggregator_timestep_start_time", &ES500_aggregator_e_step_setpoints::next_aggregator_timestep_start_time) - .def_readwrite("SE_id", &ES500_aggregator_e_step_setpoints::SE_id) - .def_readwrite("e3_step_kWh", &ES500_aggregator_e_step_setpoints::e3_step_kWh) - .def_readwrite("charge_progression", &ES500_aggregator_e_step_setpoints::charge_progression) - .def(py::pickle( - [](const ES500_aggregator_e_step_setpoints& obj) - { // __getstate__ - return py::make_tuple(obj.next_aggregator_timestep_start_time, obj.SE_id, obj.e3_step_kWh, obj.charge_progression); - }, - [](py::tuple t) - { // __setstate__ - ES500_aggregator_e_step_setpoints obj; - obj.next_aggregator_timestep_start_time = t[0].cast(); - - for (auto x : t[1]) - obj.SE_id.push_back(x.cast()); - - for (auto x : t[2]) - obj.e3_step_kWh.push_back(x.cast()); - - for (auto x : t[3]) - obj.charge_progression.push_back(x.cast()); - - return obj; - } - )); - - py::class_(m, "ES500_aggregator_charging_forecast") - .def(py::init<>()) - .def_readwrite("arrival_unix_time", &ES500_aggregator_charging_forecast::arrival_unix_time) - .def_readwrite("departure_unix_time", &ES500_aggregator_charging_forecast::departure_unix_time) - .def_readwrite("e3_charge_remain_kWh", &ES500_aggregator_charging_forecast::e3_charge_remain_kWh) - .def_readwrite("e3_step_max_kWh", &ES500_aggregator_charging_forecast::e3_step_max_kWh) - .def(py::pickle( - [](const ES500_aggregator_charging_forecast& obj) - { // __getstate__ - return py::make_tuple(obj.arrival_unix_time, obj.departure_unix_time, obj.e3_charge_remain_kWh, obj.e3_step_max_kWh); - }, - [](py::tuple t) - { // __setstate__ - ES500_aggregator_charging_forecast obj; - - for (auto x : t[0]) - obj.arrival_unix_time.push_back(x.cast()); - - for (auto x : t[1]) - obj.departure_unix_time.push_back(x.cast()); - - for (auto x : t[2]) - obj.e3_charge_remain_kWh.push_back(x.cast()); - - for (auto x : t[3]) - obj.e3_step_max_kWh.push_back(x.cast()); - - return obj; - } - )); - - py::class_(m, "ES500_aggregator_obj_fun_constraints") - .def(py::init<>()) - .def_readwrite("E_cumEnergy_ALAP_kWh", &ES500_aggregator_obj_fun_constraints::E_cumEnergy_ALAP_kWh) - .def_readwrite("E_cumEnergy_ASAP_kWh", &ES500_aggregator_obj_fun_constraints::E_cumEnergy_ASAP_kWh) - .def_readwrite("E_energy_ALAP_kWh", &ES500_aggregator_obj_fun_constraints::E_energy_ALAP_kWh) - .def_readwrite("E_energy_ASAP_kWh", &ES500_aggregator_obj_fun_constraints::E_energy_ASAP_kWh) - .def_readwrite("E_step_ALAP", &ES500_aggregator_obj_fun_constraints::E_step_ALAP) - .def_readwrite("canSolve_aka_pev_charging_in_prediction_window", &ES500_aggregator_obj_fun_constraints::canSolve_aka_pev_charging_in_prediction_window) - .def(py::pickle( - [](const ES500_aggregator_obj_fun_constraints& obj) - { // __getstate__ - return py::make_tuple(obj.E_cumEnergy_ALAP_kWh, obj.E_cumEnergy_ASAP_kWh, obj.E_energy_ALAP_kWh, obj.E_energy_ASAP_kWh, obj.E_step_ALAP, obj.canSolve_aka_pev_charging_in_prediction_window); - }, - [](py::tuple t) - { // __setstate__ - ES500_aggregator_obj_fun_constraints obj; - - for (auto x : t[0]) - obj.E_cumEnergy_ALAP_kWh.push_back(x.cast()); - - for (auto x : t[1]) - obj.E_cumEnergy_ASAP_kWh.push_back(x.cast()); - - for (auto x : t[2]) - obj.E_energy_ALAP_kWh.push_back(x.cast()); - - for (auto x : t[3]) - obj.E_energy_ASAP_kWh.push_back(x.cast()); - - for (auto x : t[4]) - obj.E_step_ALAP.push_back(x.cast()); - - obj.canSolve_aka_pev_charging_in_prediction_window = t[5].cast(); - - return obj; - } - )); - - py::class_(m, "ES500_charge_cycling_control_boundary_point") - .def(py::init<>()) - .def(py::init()) - .def_readwrite("cycling_magnitude", &ES500_charge_cycling_control_boundary_point::cycling_magnitude) - .def_readwrite("cycling_vs_ramping", &ES500_charge_cycling_control_boundary_point::cycling_vs_ramping) - .def(py::pickle( - [](const ES500_charge_cycling_control_boundary_point& obj) - { // __getstate__ - return py::make_tuple(obj.cycling_magnitude, obj.cycling_vs_ramping); - }, - [](py::tuple t) - { // __setstate__ - ES500_charge_cycling_control_boundary_point obj; - obj.cycling_magnitude = t[0].cast(); - obj.cycling_vs_ramping = t[1].cast(); - return obj; - } - )); - - py::class_(m, "ES500_stop_charge_cycling_decision_parameters") - .def(py::init<>()) - .def_readwrite("next_aggregator_timestep_start_time", &ES500_stop_charge_cycling_decision_parameters::next_aggregator_timestep_start_time) - .def_readwrite("iteration", &ES500_stop_charge_cycling_decision_parameters::iteration) - .def_readwrite("is_last_iteration", &ES500_stop_charge_cycling_decision_parameters::is_last_iteration) - .def_readwrite("off_to_on_nrg_kWh", &ES500_stop_charge_cycling_decision_parameters::off_to_on_nrg_kWh) - .def_readwrite("on_to_off_nrg_kWh", &ES500_stop_charge_cycling_decision_parameters::on_to_off_nrg_kWh) - .def_readwrite("total_on_nrg_kWh", &ES500_stop_charge_cycling_decision_parameters::total_on_nrg_kWh) - .def_readwrite("cycling_vs_ramping", &ES500_stop_charge_cycling_decision_parameters::cycling_vs_ramping) - .def_readwrite("cycling_magnitude", &ES500_stop_charge_cycling_decision_parameters::cycling_magnitude) - .def_readwrite("delta_energy_kWh", &ES500_stop_charge_cycling_decision_parameters::delta_energy_kWh) - .def(py::pickle( - [](const ES500_stop_charge_cycling_decision_parameters& obj) - { // __getstate__ - return py::make_tuple(obj.next_aggregator_timestep_start_time, obj.iteration, obj.is_last_iteration, obj.off_to_on_nrg_kWh, obj.on_to_off_nrg_kWh, obj.total_on_nrg_kWh, obj.cycling_vs_ramping, obj.cycling_magnitude, obj.delta_energy_kWh); - }, - [](py::tuple t) - { // __setstate__ - ES500_stop_charge_cycling_decision_parameters obj; - obj.next_aggregator_timestep_start_time = t[0].cast(); - obj.iteration = t[1].cast(); - obj.is_last_iteration = t[2].cast(); - obj.off_to_on_nrg_kWh = t[3].cast(); - obj.on_to_off_nrg_kWh = t[4].cast(); - obj.total_on_nrg_kWh = t[5].cast(); - obj.cycling_vs_ramping = t[6].cast(); - obj.cycling_magnitude = t[7].cast(); - obj.delta_energy_kWh = t[8].cast(); - return obj; - } - )); - - //--------------------------------- - // PEV Ramping Parameters - //--------------------------------- - - py::class_(m, "pev_charge_ramping") - .def(py::init<>()) - .def(py::init()) - .def_readwrite("off_to_on_delay_sec", &pev_charge_ramping::off_to_on_delay_sec) - .def_readwrite("off_to_on_kW_per_sec", &pev_charge_ramping::off_to_on_kW_per_sec) - .def_readwrite("on_to_off_delay_sec", &pev_charge_ramping::on_to_off_delay_sec) - .def_readwrite("on_to_off_kW_per_sec", &pev_charge_ramping::on_to_off_kW_per_sec) - .def_readwrite("ramp_up_delay_sec", &pev_charge_ramping::ramp_up_delay_sec) - .def_readwrite("ramp_up_kW_per_sec", &pev_charge_ramping::ramp_up_kW_per_sec) - .def_readwrite("ramp_down_delay_sec", &pev_charge_ramping::ramp_down_delay_sec) - .def_readwrite("ramp_down_kW_per_sec", &pev_charge_ramping::ramp_down_kW_per_sec) - .def(py::pickle( - [](const pev_charge_ramping& obj) - { // __getstate__ - return py::make_tuple(obj.off_to_on_delay_sec, obj.off_to_on_kW_per_sec, obj.on_to_off_delay_sec, obj.on_to_off_kW_per_sec, obj.ramp_up_delay_sec, obj.ramp_up_kW_per_sec, obj.ramp_down_delay_sec, obj.ramp_down_kW_per_sec); - }, - [](py::tuple t) - { // __setstate__ - pev_charge_ramping obj; - obj.off_to_on_delay_sec = t[0].cast(); - obj.off_to_on_kW_per_sec = t[1].cast(); - obj.on_to_off_delay_sec = t[2].cast(); - obj.on_to_off_kW_per_sec = t[3].cast(); - obj.ramp_up_delay_sec = t[4].cast(); - obj.ramp_up_kW_per_sec = t[5].cast(); - obj.ramp_down_delay_sec = t[6].cast(); - obj.ramp_down_kW_per_sec = t[7].cast(); - return obj; - } - )); - - py::class_(m, "pev_charge_ramping_workaround") - .def(py::init<>()) - .def_readwrite("pev_charge_ramping_obj", &pev_charge_ramping_workaround::pev_charge_ramping_obj) - .def_readwrite("pev_type", &pev_charge_ramping_workaround::pev_type) - .def_readwrite("SE_type", &pev_charge_ramping_workaround::SE_type) - .def(py::pickle( - [](const pev_charge_ramping_workaround& obj) - { // __getstate__ - return py::make_tuple(obj.pev_charge_ramping_obj, obj.pev_type, obj.SE_type); - }, - [](py::tuple t) - { // __setstate__ - pev_charge_ramping_workaround obj; - obj.pev_charge_ramping_obj = t[0].cast(); - obj.pev_type = t[1].cast(); - obj.SE_type = t[2].cast(); - return obj; - } - )); } diff --git a/source/factory/CMakeLists.txt b/source/factory/CMakeLists.txt index 05d953e..e8447c0 100644 --- a/source/factory/CMakeLists.txt +++ b/source/factory/CMakeLists.txt @@ -8,6 +8,7 @@ set(FACTORY_FILES "factory_charging_transitions.cpp" add_library(factory STATIC ${FACTORY_FILES}) target_compile_features(factory PUBLIC cxx_std_17) +target_include_directories(factory PUBLIC ${PROJECT_SOURCE_DIR}/source/globals) target_include_directories(factory PUBLIC ${PROJECT_SOURCE_DIR}/source/base) target_include_directories(factory PUBLIC ${PROJECT_SOURCE_DIR}/source/charging_models) target_include_directories(factory PUBLIC ${PROJECT_SOURCE_DIR}/source/factory) diff --git a/source/globals/CMakeLists.txt b/source/globals/CMakeLists.txt new file mode 100644 index 0000000..5c1ffd7 --- /dev/null +++ b/source/globals/CMakeLists.txt @@ -0,0 +1,15 @@ +set(GLOBAL_FILES "datatypes_global.cpp" + "helper.cpp") + +add_library(Globals STATIC ${GLOBAL_FILES}) +target_compile_features(Globals PUBLIC cxx_std_17) +target_include_directories(Globals PUBLIC ${PROJECT_SOURCE_DIR}/source/globals) +target_include_directories(Globals PUBLIC ${PROJECT_SOURCE_DIR}/source/base) +target_include_directories(Globals PUBLIC ${PROJECT_SOURCE_DIR}/source/charging_models) +target_include_directories(Globals PUBLIC ${PROJECT_SOURCE_DIR}/source/factory) +target_include_directories(Globals PUBLIC ${PROJECT_SOURCE_DIR}/source/load_inputs) + +pybind11_add_module(Caldera_globals MODULE globals_python_bind.cpp) +target_link_libraries(Caldera_globals PRIVATE Globals) +install(TARGETS Caldera_globals + DESTINATION ${INSTALL_DIR}) \ No newline at end of file diff --git a/source/charging_models/datatypes_global.cpp b/source/globals/datatypes_global.cpp similarity index 100% rename from source/charging_models/datatypes_global.cpp rename to source/globals/datatypes_global.cpp diff --git a/source/charging_models/datatypes_global.h b/source/globals/datatypes_global.h similarity index 100% rename from source/charging_models/datatypes_global.h rename to source/globals/datatypes_global.h diff --git a/source/globals/globals_python_bind.cpp b/source/globals/globals_python_bind.cpp new file mode 100644 index 0000000..4d55879 --- /dev/null +++ b/source/globals/globals_python_bind.cpp @@ -0,0 +1,1169 @@ +#include "datatypes_global.h" +#include "EVSE_characteristics.h" +#include "EV_characteristics.h" +#include "EV_EVSE_inventory.h" +#include "inputs.h" + +#include +#include + +// delete when done adding pickling functionality +#include +#include + +namespace py = pybind11; + +PYBIND11_MODULE(Caldera_globals, m) +{ + + //-------------------------------------------- + // interface_to_SE_groups_inputs + //-------------------------------------------- + + py::class_(m, "interface_to_SE_groups_inputs") + .def(py::init, charge_event_queuing_inputs, std::vector, double, int, std::vector, std::vector, double, L2_control_strategy_parameters, bool >()); + + //--------------------------------- + // Charge Event Data + //--------------------------------- + py::enum_(m, "stop_charging_decision_metric") + .value("stop_charging_using_target_soc", stop_charging_decision_metric::stop_charging_using_target_soc) + .value("stop_charging_using_depart_time", stop_charging_decision_metric::stop_charging_using_depart_time) + .value("stop_charging_using_whatever_happens_first", stop_charging_decision_metric::stop_charging_using_whatever_happens_first); + + py::enum_(m, "stop_charging_mode") + .value("target_charging", stop_charging_mode::target_charging) + .value("block_charging", stop_charging_mode::block_charging); + + py::class_(m, "stop_charging_criteria") + .def(py::init<>()) + .def(py::init()) + .def_readwrite("decision_metric", &stop_charging_criteria::decision_metric) + .def_readwrite("soc_mode", &stop_charging_criteria::soc_mode) + .def_readwrite("depart_time_mode", &stop_charging_criteria::depart_time_mode) + .def_readwrite("soc_block_charging_max_undershoot_percent", &stop_charging_criteria::soc_block_charging_max_undershoot_percent) + .def_readwrite("depart_time_block_charging_max_undershoot_percent", &stop_charging_criteria::depart_time_block_charging_max_undershoot_percent) + .def(py::pickle( + [](const stop_charging_criteria& obj) + { // __getstate__ + return py::make_tuple(obj.decision_metric, obj.soc_mode, obj.depart_time_mode, obj.soc_block_charging_max_undershoot_percent, obj.depart_time_block_charging_max_undershoot_percent); + }, + [](py::tuple t) + { // __setstate__ + stop_charging_criteria obj; + obj.decision_metric = t[0].cast(); + obj.soc_mode = t[1].cast(); + obj.depart_time_mode = t[2].cast(); + obj.soc_block_charging_max_undershoot_percent = t[3].cast(); + obj.depart_time_block_charging_max_undershoot_percent = t[4].cast(); + return obj; + } + )); + + py::class_(m, "charge_event_data") + .def(py::init<>()) + .def(py::init()) + .def_readwrite("charge_event_id", &charge_event_data::charge_event_id) + .def_readwrite("SE_group_id", &charge_event_data::SE_group_id) + .def_readwrite("SE_id", &charge_event_data::SE_id) + .def_readwrite("vehicle_id", &charge_event_data::vehicle_id) + .def_readwrite("vehicle_type", &charge_event_data::vehicle_type) + .def_readwrite("arrival_unix_time", &charge_event_data::arrival_unix_time) + .def_readwrite("departure_unix_time", &charge_event_data::departure_unix_time) + .def_readwrite("arrival_SOC", &charge_event_data::arrival_SOC) + .def_readwrite("departure_SOC", &charge_event_data::departure_SOC) + .def_readwrite("stop_charge", &charge_event_data::stop_charge) + .def_readwrite("control_enums", &charge_event_data::control_enums) + .def_static("get_file_header", &charge_event_data::get_file_header) + .def(py::pickle( + [](const charge_event_data& obj) + { // __getstate__ + return py::make_tuple(obj.charge_event_id, obj.SE_group_id, obj.SE_id, obj.vehicle_id, obj.vehicle_type, obj.arrival_unix_time, obj.departure_unix_time, obj.arrival_SOC, obj.departure_SOC, obj.stop_charge, obj.control_enums); + }, + [](py::tuple t) + { // __setstate__ + charge_event_data obj; + obj.charge_event_id = t[0].cast(); + obj.SE_group_id = t[1].cast(); + obj.SE_id = t[2].cast(); + obj.vehicle_id = t[3].cast(); + obj.vehicle_type = t[4].cast(); + obj.arrival_unix_time = t[5].cast(); + obj.departure_unix_time = t[6].cast(); + obj.arrival_SOC = t[7].cast(); + obj.departure_SOC = t[8].cast(); + obj.stop_charge = t[9].cast(); + obj.control_enums = t[10].cast(); + return obj; + } + )); + + py::class_(m, "SE_group_charge_event_data") + .def(py::init<>()) + .def(py::init>()) + .def_readwrite("SE_group_id", &SE_group_charge_event_data::SE_group_id) + .def_readwrite("charge_events", &SE_group_charge_event_data::charge_events) + .def(py::pickle( + [](const SE_group_charge_event_data& obj) + { // __getstate__ + return py::make_tuple(obj.SE_group_id, obj.charge_events); + }, + [](py::tuple t) + { // __setstate__ + SE_group_charge_event_data obj; + obj.SE_group_id = t[0].cast(); + + for (auto x : t[1]) + obj.charge_events.push_back(x.cast()); + + return obj; + } + )); + + //======================================= + + py::enum_(m, "queuing_mode_enum") + .value("overlapAllowed_earlierArrivalTimeHasPriority", queuing_mode_enum::overlapAllowed_earlierArrivalTimeHasPriority) + .value("overlapLimited_mostRecentlyQueuedHasPriority", queuing_mode_enum::overlapLimited_mostRecentlyQueuedHasPriority); + + py::class_(m, "charge_event_queuing_inputs") + .def(py::init<>()) + .def_readwrite("max_allowed_overlap_time_sec", &charge_event_queuing_inputs::max_allowed_overlap_time_sec) + .def_readwrite("queuing_mode", &charge_event_queuing_inputs::queuing_mode) + .def(py::pickle( + [](const charge_event_queuing_inputs& obj) + { // __getstate__ + return py::make_tuple(obj.max_allowed_overlap_time_sec, obj.queuing_mode); + }, + [](py::tuple t) + { // __setstate__ + charge_event_queuing_inputs obj; + obj.max_allowed_overlap_time_sec = t[0].cast(); + obj.queuing_mode = t[1].cast(); + + return obj; + } + )); + + //--------------------------------- + // SE Configuration + //--------------------------------- + py::class_(m, "SE_configuration") + .def(py::init<>()) + .def(py::init()) + .def_readwrite("SE_group_id", &SE_configuration::SE_group_id) + .def_readwrite("SE_id", &SE_configuration::SE_id) + .def_readwrite("supply_equipment_type", &SE_configuration::supply_equipment_type) + .def_readwrite("lattitude", &SE_configuration::lattitude) + .def_readwrite("longitude", &SE_configuration::longitude) + .def_readwrite("grid_node_id", &SE_configuration::grid_node_id) + .def_readwrite("location_type", &SE_configuration::location_type) + .def(py::pickle( + [](const SE_configuration& obj) + { // __getstate__ + return py::make_tuple(obj.SE_group_id, obj.SE_id, obj.supply_equipment_type, obj.lattitude, obj.longitude, obj.grid_node_id, obj.location_type); + }, + [](py::tuple t) + { // __setstate__ + SE_configuration obj; + obj.SE_group_id = t[0].cast(); + obj.SE_id = t[1].cast(); + obj.supply_equipment_type = t[2].cast(); + obj.lattitude = t[3].cast(); + obj.longitude = t[4].cast(); + obj.grid_node_id = t[5].cast(); + obj.location_type = t[6].cast(); + return obj; + } + )); + + py::class_(m, "SE_group_configuration") + .def(py::init<>()) + .def(py::init >()) + .def_readwrite("SE_group_id", &SE_group_configuration::SE_group_id) + .def_readwrite("SEs", &SE_group_configuration::SEs) + .def(py::pickle( + [](const SE_group_configuration& obj) + { // __getstate__ + return py::make_tuple(obj.SE_group_id, obj.SEs); + }, + [](py::tuple t) + { // __setstate__ + SE_group_configuration obj; + obj.SE_group_id = t[0].cast(); + for (auto x : t[1]) + obj.SEs.push_back(x.cast()); + + return obj; + } + )); + + //--------------------------------- + // Status of CE + //--------------------------------- + + py::enum_(m, "SE_charging_status") + .value("no_ev_plugged_in", SE_charging_status::no_ev_plugged_in) + .value("ev_plugged_in_not_charging", SE_charging_status::ev_plugged_in_not_charging) + .value("ev_charging", SE_charging_status::ev_charging) + .value("ev_charge_complete", SE_charging_status::ev_charge_complete); + + py::class_(m, "FICE_inputs") + .def(py::init<>()) + .def_readwrite("interval_start_unixtime", &FICE_inputs::interval_start_unixtime) + .def_readwrite("interval_duration_sec", &FICE_inputs::interval_duration_sec) + .def_readwrite("acPkW_setpoint", &FICE_inputs::acPkW_setpoint) + .def(py::pickle( + [](const FICE_inputs& obj) + { // __getstate__ + return py::make_tuple(obj.interval_start_unixtime, obj.interval_duration_sec, obj.acPkW_setpoint); + }, + [](py::tuple t) + { // __setstate__ + FICE_inputs obj; + obj.interval_start_unixtime = t[0].cast(); + obj.interval_duration_sec = t[1].cast(); + obj.acPkW_setpoint = t[2].cast(); + return obj; + } + )); + + py::class_(m, "CE_FICE") + .def(py::init<>()) + .def_readwrite("SE_id", &CE_FICE::SE_id) + .def_readwrite("charge_event_id", &CE_FICE::charge_event_id) + .def_readwrite("charge_energy_ackWh", &CE_FICE::charge_energy_ackWh) + .def_readwrite("interval_duration_hrs", &CE_FICE::interval_duration_hrs) + .def(py::pickle( + [](const CE_FICE& obj) + { // __getstate__ + return py::make_tuple(obj.SE_id, obj.charge_event_id, obj.charge_energy_ackWh, obj.interval_duration_hrs); + }, + [](py::tuple t) + { // __setstate__ + CE_FICE obj; + obj.SE_id = t[0].cast(); + obj.charge_event_id = t[1].cast(); + obj.charge_energy_ackWh = t[2].cast(); + obj.interval_duration_hrs = t[3].cast(); + return obj; + } + )); + + py::class_(m, "CE_FICE_in_SE_group") + .def(py::init<>()) + .def_readwrite("SE_group_id", &CE_FICE_in_SE_group::SE_group_id) + .def_readwrite("SE_FICE_vals", &CE_FICE_in_SE_group::SE_FICE_vals) + .def(py::pickle( + [](const CE_FICE_in_SE_group& obj) + { // __getstate__ + return py::make_tuple(obj.SE_group_id, obj.SE_FICE_vals); + }, + [](py::tuple t) + { // __setstate__ + CE_FICE_in_SE_group obj; + obj.SE_group_id = t[0].cast(); + for (auto x : t[1]) + obj.SE_FICE_vals.push_back(x.cast()); + + return obj; + } + )); + + py::class_(m, "active_CE") + .def(py::init<>()) + .def_readwrite("SE_id", &active_CE::SE_id) + .def_readwrite("charge_event_id", &active_CE::charge_event_id) + .def_readwrite("now_unix_time", &active_CE::now_unix_time) + .def_readwrite("now_soc", &active_CE::now_soc) + .def_readwrite("now_dcPkW", &active_CE::now_dcPkW) + .def_readwrite("now_acPkW", &active_CE::now_acPkW) + .def_readwrite("now_acQkVAR", &active_CE::now_acQkVAR) + //.def_readwrite("min_remaining_charge_time_hrs", &active_CE::min_remaining_charge_time_hrs) + //.def_readwrite("min_time_to_complete_entire_charge_hrs", &active_CE::min_time_to_complete_entire_charge_hrs) + .def_readwrite("now_charge_energy_ackWh", &active_CE::now_charge_energy_ackWh) + .def_readwrite("energy_of_complete_charge_ackWh", &active_CE::energy_of_complete_charge_ackWh) + .def_readwrite("vehicle_id", &active_CE::vehicle_id) + .def_readwrite("vehicle_type", &active_CE::vehicle_type) + .def(py::pickle( + [](const active_CE& obj) + { // __getstate__ + return py::make_tuple(obj.SE_id, obj.charge_event_id, obj.now_unix_time, obj.now_soc, + obj.now_charge_energy_ackWh, obj.energy_of_complete_charge_ackWh, + obj.now_dcPkW, obj.now_acPkW, obj.now_acQkVAR, obj.vehicle_id, obj.vehicle_type + //obj.min_remaining_charge_time_hrs, obj.min_time_to_complete_entire_charge_hrs + ); + }, + [](py::tuple t) + { // __setstate_ + active_CE obj; + obj.SE_id = t[0].cast(); + obj.charge_event_id = t[1].cast(); + obj.now_unix_time = t[2].cast(); + obj.now_soc = t[3].cast(); + obj.now_charge_energy_ackWh = t[4].cast(); + obj.energy_of_complete_charge_ackWh = t[5].cast(); + obj.now_dcPkW = t[6].cast(); + obj.now_acPkW = t[7].cast(); + obj.now_acQkVAR = t[8].cast(); + obj.vehicle_id = t[9].cast(); + obj.vehicle_type = t[10].cast(); + //obj.min_remaining_charge_time_hrs = t[6].cast(); + //obj.min_time_to_complete_entire_charge_hrs = t[7].cast(); + + return obj; + } + )); + + py::class_(m, "SE_setpoint") + .def(py::init<>()) + .def_readwrite("SE_id", &SE_setpoint::SE_id) + .def_readwrite("PkW", &SE_setpoint::PkW) + .def_readwrite("QkVAR", &SE_setpoint::QkVAR) + .def(py::pickle( + [](const SE_setpoint& obj) + { // __getstate__ + return py::make_tuple(obj.SE_id, obj.PkW, obj.QkVAR); + }, + [](py::tuple t) + { // __setstate__ + SE_setpoint obj; + obj.SE_id = t[0].cast(); + obj.PkW = t[1].cast(); + obj.QkVAR = t[2].cast(); + + return obj; + } + )); + + py::class_(m, "completed_CE") + .def(py::init<>()) + .def_readwrite("SE_id", &completed_CE::SE_id) + .def_readwrite("charge_event_id", &completed_CE::charge_event_id) + .def_readwrite("final_soc", &completed_CE::final_soc) + .def(py::pickle( + [](const completed_CE& obj) + { // __getstate__ + return py::make_tuple(obj.SE_id, obj.charge_event_id, obj.final_soc); + }, + [](py::tuple t) + { // __setstate__ + completed_CE obj; + obj.SE_id = t[0].cast(); + obj.charge_event_id = t[1].cast(); + obj.final_soc = t[2].cast(); + + return obj; + } + )); + + //--------------------------------- + // Miscellaneous + //--------------------------------- + py::enum_(m, "ac_to_dc_converter_enum") + .value("pf", ac_to_dc_converter_enum::pf) + .value("Q_setpoint", ac_to_dc_converter_enum::Q_setpoint); + + py::class_(m, "SE_power") + .def(py::init<>()) + .def_readwrite("time_step_duration_hrs", &SE_power::time_step_duration_hrs) + .def_readwrite("P1_kW", &SE_power::P1_kW) + .def_readwrite("P2_kW", &SE_power::P2_kW) + .def_readwrite("P3_kW", &SE_power::P3_kW) + .def_readwrite("Q3_kVAR", &SE_power::Q3_kVAR) + .def_readwrite("soc", &SE_power::soc) + .def_readwrite("SE_status_val", &SE_power::SE_status_val) + .def(py::pickle( + [](const SE_power& obj) + { // __getstate__ + return py::make_tuple(obj.time_step_duration_hrs, obj.P1_kW, obj.P2_kW, obj.P3_kW, obj.Q3_kVAR, obj.soc, obj.SE_status_val); + }, + [](py::tuple t) + { // __setstate__ + SE_power obj; + obj.time_step_duration_hrs = t[0].cast(); + obj.P1_kW = t[1].cast(); + obj.P2_kW = t[2].cast(); + obj.P3_kW = t[3].cast(); + obj.Q3_kVAR = t[4].cast(); + obj.soc = t[5].cast(); + obj.SE_status_val = t[6].cast(); + + return obj; + } + )); + + py::class_(m, "pev_batterySize_info") + .def(py::init<>()) + .def_readwrite("vehicle_type", &pev_batterySize_info::vehicle_type) + .def_readwrite("battery_size_kWh", &pev_batterySize_info::battery_size_kWh) + .def_readwrite("battery_size_with_stochastic_degredation_kWh", &pev_batterySize_info::battery_size_with_stochastic_degredation_kWh) + + .def(py::pickle( + [](const pev_batterySize_info& obj) + { // __getstate__ + return py::make_tuple(obj.vehicle_type, obj.battery_size_kWh, obj.battery_size_with_stochastic_degredation_kWh); + }, + [](py::tuple t) + { // __setstate__ + pev_batterySize_info obj; + obj.vehicle_type = t[0].cast(); + obj.battery_size_kWh = t[1].cast(); + obj.battery_size_with_stochastic_degredation_kWh = t[2].cast(); + + return obj; + } + )); + + //--------------------------------- + // PEV Charge Profile + //--------------------------------- + py::class_(m, "pev_charge_profile_result") + .def(py::init<>()) + .def_readwrite("soc_increase", &pev_charge_profile_result::soc_increase) + .def_readwrite("E1_kWh", &pev_charge_profile_result::E1_kWh) + .def_readwrite("E2_kWh", &pev_charge_profile_result::E2_kWh) + .def_readwrite("E3_kWh", &pev_charge_profile_result::E3_kWh) + .def_readwrite("cumQ3_kVARh", &pev_charge_profile_result::cumQ3_kVARh) + .def_readwrite("total_charge_time_hrs", &pev_charge_profile_result::total_charge_time_hrs) + .def_readwrite("incremental_chage_time_hrs", &pev_charge_profile_result::incremental_chage_time_hrs) + .def(py::pickle( + [](const pev_charge_profile_result& obj) + { // __getstate__ + return py::make_tuple(obj.soc_increase, obj.E1_kWh, obj.E2_kWh, obj.E3_kWh, obj.cumQ3_kVARh, obj.total_charge_time_hrs, obj.incremental_chage_time_hrs); + }, + [](py::tuple t) + { // __setstate__ + pev_charge_profile_result obj; + obj.soc_increase = t[0].cast(); + obj.E1_kWh = t[1].cast(); + obj.E2_kWh = t[2].cast(); + obj.E3_kWh = t[3].cast(); + obj.cumQ3_kVARh = t[4].cast(); + obj.total_charge_time_hrs = t[5].cast(); + obj.incremental_chage_time_hrs = t[6].cast(); + return obj; + } + )); + + py::class_(m, "pev_charge_fragment_removal_criteria") + .def(py::init<>()) + .def_readwrite("max_percent_of_fragments_that_can_be_removed", &pev_charge_fragment_removal_criteria::max_percent_of_fragments_that_can_be_removed) + .def_readwrite("kW_change_threashold", &pev_charge_fragment_removal_criteria::kW_change_threashold) + .def_readwrite("threshold_to_determine_not_removable_fragments_on_flat_peak_kW", &pev_charge_fragment_removal_criteria::threshold_to_determine_not_removable_fragments_on_flat_peak_kW) + .def_readwrite("perc_of_max_starting_point_to_determine_not_removable_fragments_on_low_elbow", &pev_charge_fragment_removal_criteria::perc_of_max_starting_point_to_determine_not_removable_fragments_on_low_elbow) + .def(py::pickle( + [](const pev_charge_fragment_removal_criteria& obj) + { // __getstate__ + return py::make_tuple(obj.max_percent_of_fragments_that_can_be_removed, obj.kW_change_threashold, obj.threshold_to_determine_not_removable_fragments_on_flat_peak_kW, obj.perc_of_max_starting_point_to_determine_not_removable_fragments_on_low_elbow); + }, + [](py::tuple t) + { // __setstate__ + pev_charge_fragment_removal_criteria obj; + obj.max_percent_of_fragments_that_can_be_removed = t[0].cast(); + obj.kW_change_threashold = t[1].cast(); + obj.threshold_to_determine_not_removable_fragments_on_flat_peak_kW = t[2].cast(); + obj.perc_of_max_starting_point_to_determine_not_removable_fragments_on_low_elbow = t[3].cast(); + return obj; + } + )); + + py::class_(m, "pev_charge_fragment") + .def(py::init<>()) + .def(py::init()) + .def_readwrite("soc", &pev_charge_fragment::soc) + .def_readwrite("E1_kWh", &pev_charge_fragment::E1_kWh) + .def_readwrite("E2_kWh", &pev_charge_fragment::E2_kWh) + .def_readwrite("E3_kWh", &pev_charge_fragment::E3_kWh) + .def_readwrite("cumQ3_kVARh", &pev_charge_fragment::cumQ3_kVARh) + .def_readwrite("time_since_charge_began_hrs", &pev_charge_fragment::time_since_charge_began_hrs) + .def(py::pickle( + [](const pev_charge_fragment& obj) + { // __getstate__ + return py::make_tuple(obj.soc, obj.E1_kWh, obj.E2_kWh, obj.E3_kWh, obj.cumQ3_kVARh, obj.time_since_charge_began_hrs); + }, + [](py::tuple t) + { // __setstate__ + pev_charge_fragment obj; + obj.soc = t[0].cast(); + obj.E1_kWh = t[1].cast(); + obj.E2_kWh = t[2].cast(); + obj.E3_kWh = t[3].cast(); + obj.cumQ3_kVARh = t[4].cast(); + obj.time_since_charge_began_hrs = t[5].cast(); + return obj; + } + )); + + py::class_(m, "pev_charge_fragment_variation") + .def(py::init<>()) + .def(py::init()) + .def_readwrite("is_removable", &pev_charge_fragment_variation::is_removable) + .def_readwrite("original_charge_fragment_index", &pev_charge_fragment_variation::original_charge_fragment_index) + .def_readwrite("time_since_charge_began_hrs", &pev_charge_fragment_variation::time_since_charge_began_hrs) + .def_readwrite("soc", &pev_charge_fragment_variation::soc) + .def_readwrite("P3_kW", &pev_charge_fragment_variation::P3_kW) + .def_readwrite("variation_rank", &pev_charge_fragment_variation::variation_rank) + .def(py::pickle( + [](const pev_charge_fragment_variation& obj) + { // __getstate__ + return py::make_tuple(obj.is_removable, obj.original_charge_fragment_index, obj.time_since_charge_began_hrs, obj.soc, obj.P3_kW, obj.variation_rank); + }, + [](py::tuple t) + { // __setstate__ + pev_charge_fragment_variation obj; + obj.is_removable = t[0].cast(); + obj.original_charge_fragment_index = t[1].cast(); + obj.time_since_charge_began_hrs = t[2].cast(); + obj.soc = t[3].cast(); + obj.P3_kW = t[4].cast(); + obj.variation_rank = t[5].cast(); + return obj; + } + )); + + py::class_(m, "charge_profile_validation_data") + .def(py::init<>()) + .def_readwrite("time_step_sec", &charge_profile_validation_data::time_step_sec) + .def_readwrite("target_acP3_kW", &charge_profile_validation_data::target_acP3_kW) + .def_readwrite("fragment_removal_criteria", &charge_profile_validation_data::fragment_removal_criteria) + .def_readwrite("removed_fragments", &charge_profile_validation_data::removed_fragments) + .def_readwrite("retained_fragments", &charge_profile_validation_data::retained_fragments) + .def_readwrite("downsampled_charge_fragments", &charge_profile_validation_data::downsampled_charge_fragments) + .def_readwrite("original_charge_fragments", &charge_profile_validation_data::original_charge_fragments) + .def(py::pickle( + [](const charge_profile_validation_data& obj) + { // __getstate__ + return py::make_tuple(obj.time_step_sec, obj.target_acP3_kW, obj.fragment_removal_criteria, obj.removed_fragments, obj.retained_fragments, obj.downsampled_charge_fragments, obj.original_charge_fragments); + }, + [](py::tuple t) + { // __setstate__ + charge_profile_validation_data obj; + obj.time_step_sec = t[0].cast(); + obj.target_acP3_kW = t[1].cast(); + obj.fragment_removal_criteria = t[2].cast(); + + for (auto x : t[3]) + obj.removed_fragments.push_back(x.cast()); + + for (auto x : t[4]) + obj.retained_fragments.push_back(x.cast()); + + for (auto x : t[5]) + obj.downsampled_charge_fragments.push_back(x.cast()); + + for (auto x : t[6]) + obj.original_charge_fragments.push_back(x.cast()); + + return obj; + } + )); + + py::class_(m, "charge_event_P3kW_limits") + .def(py::init<>()) + .def_readwrite("min_P3kW", &charge_event_P3kW_limits::min_P3kW) + .def_readwrite("max_P3kW", &charge_event_P3kW_limits::max_P3kW) + .def(py::pickle( + [](const charge_event_P3kW_limits& obj) + { // __getstate__ + return py::make_tuple(obj.min_P3kW, obj.max_P3kW); + }, + [](py::tuple t) + { // __setstate__ + charge_event_P3kW_limits obj; + obj.min_P3kW = t[0].cast(); + obj.max_P3kW = t[1].cast(); + return obj; + } + )); + + //--------------------------------- + // Low Pass Filter Parameters + //--------------------------------- + py::enum_(m, "LPF_window_enum") + .value("Hanning", LPF_window_enum::Hanning) + .value("Blackman", LPF_window_enum::Blackman) + .value("Rectangular", LPF_window_enum::Rectangular); + + py::class_(m, "LPF_parameters") + .def(py::init<>()) + .def_readwrite("window_size", &LPF_parameters::window_size) + .def_readwrite("window_type", &LPF_parameters::window_type) + .def(py::pickle( + [](const LPF_parameters& obj) + { // __getstate__ + return py::make_tuple(obj.window_size, obj.window_type); + }, + [](py::tuple t) + { // __setstate__ + LPF_parameters obj; + obj.window_size = t[0].cast(); + obj.window_type = t[1].cast(); + return obj; + } + )); + + py::class_(m, "LPF_parameters_randomize_window_size") + .def(py::init<>()) + .def_readwrite("is_active", &LPF_parameters_randomize_window_size::is_active) + .def_readwrite("seed", &LPF_parameters_randomize_window_size::seed) + .def_readwrite("window_size_LB", &LPF_parameters_randomize_window_size::window_size_LB) + .def_readwrite("window_size_UB", &LPF_parameters_randomize_window_size::window_size_UB) + .def_readwrite("window_type", &LPF_parameters_randomize_window_size::window_type) + .def(py::pickle( + [](const LPF_parameters_randomize_window_size& obj) + { // __getstate__ + return py::make_tuple(obj.is_active, obj.seed, obj.window_size_LB, obj.window_size_UB, obj.window_type); + }, + [](py::tuple t) + { // __setstate__ + LPF_parameters_randomize_window_size obj; + obj.is_active = t[0].cast(); + obj.seed = t[1].cast(); + obj.window_size_LB = t[2].cast(); + obj.window_size_UB = t[3].cast(); + obj.window_type = t[4].cast(); + return obj; + } + )); + + //--------------------------------- + // Control Strategy Parameters + //--------------------------------- + py::enum_(m, "L2_control_strategies_enum") + .value("NA", L2_control_strategies_enum::NA) + .value("ES100_A", L2_control_strategies_enum::ES100_A) + .value("ES100_B", L2_control_strategies_enum::ES100_B) + .value("ES110", L2_control_strategies_enum::ES110) + .value("ES200", L2_control_strategies_enum::ES200) + .value("ES300", L2_control_strategies_enum::ES300) + .value("ES500", L2_control_strategies_enum::ES500) + .value("VS100", L2_control_strategies_enum::VS100) + .value("VS200_A", L2_control_strategies_enum::VS200_A) + .value("VS200_B", L2_control_strategies_enum::VS200_B) + .value("VS200_C", L2_control_strategies_enum::VS200_C) + .value("VS300", L2_control_strategies_enum::VS300); + + py::class_(m, "ES100_L2_parameters") + .def(py::init<>()) + .def_readwrite("beginning_of_TofU_rate_period__time_from_midnight_hrs", &ES100_L2_parameters::beginning_of_TofU_rate_period__time_from_midnight_hrs) + .def_readwrite("end_of_TofU_rate_period__time_from_midnight_hrs", &ES100_L2_parameters::end_of_TofU_rate_period__time_from_midnight_hrs) + .def_readwrite("randomization_method", &ES100_L2_parameters::randomization_method) + .def_readwrite("M1_delay_period_hrs", &ES100_L2_parameters::M1_delay_period_hrs) + .def_readwrite("random_seed", &ES100_L2_parameters::random_seed) + .def(py::pickle( + [](const ES100_L2_parameters& obj) + { // __getstate__ + return py::make_tuple(obj.beginning_of_TofU_rate_period__time_from_midnight_hrs, obj.end_of_TofU_rate_period__time_from_midnight_hrs, obj.randomization_method, obj.M1_delay_period_hrs, obj.random_seed); + }, + [](py::tuple t) + { // __setstate__ + ES100_L2_parameters obj; + obj.beginning_of_TofU_rate_period__time_from_midnight_hrs = t[0].cast(); + obj.end_of_TofU_rate_period__time_from_midnight_hrs = t[1].cast(); + obj.randomization_method = t[2].cast(); + obj.M1_delay_period_hrs = t[3].cast(); + obj.random_seed = t[4].cast(); + return obj; + } + )); + + py::class_(m, "ES110_L2_parameters") + .def(py::init<>()) + .def_readwrite("random_seed", &ES110_L2_parameters::random_seed) + .def(py::pickle( + [](const ES110_L2_parameters& obj) + { // __getstate__ + return py::make_tuple(obj.random_seed); + }, + [](py::tuple t) + { // __setstate__ + ES110_L2_parameters obj; + obj.random_seed = t[0].cast(); + return obj; + } + )); + + py::class_(m, "ES200_L2_parameters") + .def(py::init<>()) + .def_readwrite("weight_factor_to_calculate_valley_fill_target", &ES200_L2_parameters::weight_factor_to_calculate_valley_fill_target) + .def(py::pickle( + [](const ES200_L2_parameters& obj) + { // __getstate__ + return py::make_tuple(obj.weight_factor_to_calculate_valley_fill_target); + }, + [](py::tuple t) + { // __setstate__ + ES200_L2_parameters obj; + obj.weight_factor_to_calculate_valley_fill_target = t[0].cast(); + return obj; + } + )); + + py::class_(m, "ES300_L2_parameters") + .def(py::init<>()) + .def_readwrite("weight_factor_to_calculate_valley_fill_target", &ES300_L2_parameters::weight_factor_to_calculate_valley_fill_target) + .def(py::pickle( + [](const ES300_L2_parameters& obj) + { // __getstate__ + return py::make_tuple(obj.weight_factor_to_calculate_valley_fill_target); + }, + [](py::tuple t) + { // __setstate__ + ES300_L2_parameters obj; + obj.weight_factor_to_calculate_valley_fill_target = t[0].cast(); + return obj; + } + )); + + py::class_(m, "normal_random_error") + .def(py::init<>()) + .def_readwrite("seed", &normal_random_error::seed) + .def_readwrite("stdev", &normal_random_error::stdev) + .def_readwrite("stdev_bounds", &normal_random_error::stdev_bounds) + .def(py::pickle( + [](const normal_random_error& obj) + { // __getstate__ + return py::make_tuple(obj.seed, obj.stdev, obj.stdev_bounds); + }, + [](py::tuple t) + { // __setstate__ + normal_random_error obj; + obj.seed = t[0].cast(); + obj.stdev = t[1].cast(); + obj.stdev_bounds = t[2].cast(); + return obj; + } + )); + + py::class_(m, "ES500_L2_parameters") + .def(py::init<>()) + .def_readwrite("aggregator_timestep_mins", &ES500_L2_parameters::aggregator_timestep_mins) + .def_readwrite("off_to_on_lead_time_sec", &ES500_L2_parameters::off_to_on_lead_time_sec) + .def_readwrite("default_lead_time_sec", &ES500_L2_parameters::default_lead_time_sec) + .def(py::pickle( + [](const ES500_L2_parameters& obj) + { // __getstate__ + return py::make_tuple(obj.aggregator_timestep_mins, obj.off_to_on_lead_time_sec, obj.default_lead_time_sec); + }, + [](py::tuple t) + { // __setstate__ + ES500_L2_parameters obj; + obj.aggregator_timestep_mins = t[0].cast(); + obj.off_to_on_lead_time_sec = t[1].cast(); + obj.default_lead_time_sec = t[2].cast(); + return obj; + } + )); + + py::class_(m, "VS100_L2_parameters") + .def(py::init<>()) + .def_readwrite("target_P3_reference__percent_of_maxP3", &VS100_L2_parameters::target_P3_reference__percent_of_maxP3) + .def_readwrite("max_delta_kW_per_min", &VS100_L2_parameters::max_delta_kW_per_min) + .def_readwrite("volt_delta_kW_curve_puV", &VS100_L2_parameters::volt_delta_kW_curve_puV) + .def_readwrite("volt_delta_kW_percP", &VS100_L2_parameters::volt_delta_kW_percP) + .def_readwrite("voltage_LPF", &VS100_L2_parameters::voltage_LPF) + .def(py::pickle( + [](const VS100_L2_parameters& obj) + { // __getstate__ + return py::make_tuple(obj.target_P3_reference__percent_of_maxP3, obj.max_delta_kW_per_min, obj.volt_delta_kW_curve_puV, obj.volt_delta_kW_percP, obj.voltage_LPF); + }, + [](py::tuple t) + { // __setstate__ + VS100_L2_parameters obj; + obj.target_P3_reference__percent_of_maxP3 = t[0].cast(); + obj.max_delta_kW_per_min = t[1].cast(); + + for (auto x : t[2]) + obj.volt_delta_kW_curve_puV.push_back(x.cast()); + + for (auto x : t[3]) + obj.volt_delta_kW_percP.push_back(x.cast()); + + obj.voltage_LPF = t[4].cast(); + + return obj; + } + )); + + py::class_(m, "VS200_L2_parameters") + .def(py::init<>()) + .def_readwrite("target_P3_reference__percent_of_maxP3", &VS200_L2_parameters::target_P3_reference__percent_of_maxP3) + .def_readwrite("max_delta_kVAR_per_min", &VS200_L2_parameters::max_delta_kVAR_per_min) + .def_readwrite("volt_var_curve_puV", &VS200_L2_parameters::volt_var_curve_puV) + .def_readwrite("volt_var_curve_percQ", &VS200_L2_parameters::volt_var_curve_percQ) + .def_readwrite("voltage_LPF", &VS200_L2_parameters::voltage_LPF) + .def(py::pickle( + [](const VS200_L2_parameters& obj) + { // __getstate__ + return py::make_tuple(obj.target_P3_reference__percent_of_maxP3, obj.max_delta_kVAR_per_min, obj.volt_var_curve_puV, obj.volt_var_curve_percQ, obj.voltage_LPF); + }, + [](py::tuple t) + { // __setstate__ + VS200_L2_parameters obj; + obj.target_P3_reference__percent_of_maxP3 = t[0].cast(); + obj.max_delta_kVAR_per_min = t[1].cast(); + + for (auto x : t[2]) + obj.volt_var_curve_puV.push_back(x.cast()); + + for (auto x : t[3]) + obj.volt_var_curve_percQ.push_back(x.cast()); + + obj.voltage_LPF = t[4].cast(); + + return obj; + } + )); + + py::class_(m, "VS300_L2_parameters") + .def(py::init<>()) + .def_readwrite("target_P3_reference__percent_of_maxP3", &VS300_L2_parameters::target_P3_reference__percent_of_maxP3) + .def_readwrite("max_QkVAR_as_percent_of_SkVA", &VS300_L2_parameters::max_QkVAR_as_percent_of_SkVA) + .def_readwrite("gamma", &VS300_L2_parameters::gamma) + .def_readwrite("voltage_LPF", &VS300_L2_parameters::voltage_LPF) + .def(py::pickle( + [](const VS300_L2_parameters& obj) + { // __getstate__ + return py::make_tuple(obj.target_P3_reference__percent_of_maxP3, obj.max_QkVAR_as_percent_of_SkVA, obj.gamma, obj.voltage_LPF); + }, + [](py::tuple t) + { // __setstate__ + VS300_L2_parameters obj; + obj.target_P3_reference__percent_of_maxP3 = t[0].cast(); + obj.max_QkVAR_as_percent_of_SkVA = t[1].cast(); + obj.gamma = t[2].cast(); + obj.voltage_LPF = t[3].cast(); + return obj; + } + )); + + py::class_(m, "control_strategy_enums") + .def(py::init<>()) + .def_readwrite("inverter_model_supports_Qsetpoint", &control_strategy_enums::inverter_model_supports_Qsetpoint) + .def_readwrite("ES_control_strategy", &control_strategy_enums::ES_control_strategy) + .def_readwrite("VS_control_strategy", &control_strategy_enums::VS_control_strategy) + .def_readwrite("ext_control_strategy", &control_strategy_enums::ext_control_strategy) + .def(py::pickle( + [](const control_strategy_enums& obj) + { // __getstate__ + return py::make_tuple(obj.inverter_model_supports_Qsetpoint, obj.ES_control_strategy, obj.VS_control_strategy, obj.ext_control_strategy); + }, + [](py::tuple t) + { // __setstate__ + control_strategy_enums obj; + obj.inverter_model_supports_Qsetpoint = t[0].cast(); + obj.ES_control_strategy = t[1].cast(); + obj.VS_control_strategy = t[2].cast(); + obj.ext_control_strategy = t[3].cast(); + return obj; + } + )); + + py::class_(m, "L2_control_strategy_parameters") + .def(py::init<>()) + + .def_readwrite("ES100_A", &L2_control_strategy_parameters::ES100_A) + .def_readwrite("ES100_B", &L2_control_strategy_parameters::ES100_B) + .def_readwrite("ES110", &L2_control_strategy_parameters::ES110) + .def_readwrite("ES200", &L2_control_strategy_parameters::ES200) + .def_readwrite("ES300", &L2_control_strategy_parameters::ES300) + .def_readwrite("ES500", &L2_control_strategy_parameters::ES500) + + .def_readwrite("VS100", &L2_control_strategy_parameters::VS100) + .def_readwrite("VS200_A", &L2_control_strategy_parameters::VS200_A) + .def_readwrite("VS200_B", &L2_control_strategy_parameters::VS200_B) + .def_readwrite("VS200_C", &L2_control_strategy_parameters::VS200_C) + .def_readwrite("VS300", &L2_control_strategy_parameters::VS300) + + .def(py::pickle( + [](const L2_control_strategy_parameters& obj) + { // __getstate__ + return py::make_tuple(obj.ES100_A, obj.ES100_B, obj.ES110, obj.ES200, obj.ES300, obj.ES500, + obj.VS100, obj.VS200_A, obj.VS200_B, obj.VS200_C, obj.VS300); + }, + [](py::tuple t) + { // __setstate__ + L2_control_strategy_parameters obj; + + obj.ES100_A = t[0].cast(); + obj.ES100_B = t[1].cast(); + obj.ES110 = t[2].cast(); + obj.ES200 = t[3].cast(); + obj.ES300 = t[4].cast(); + obj.ES500 = t[5].cast(); + + obj.VS100 = t[6].cast(); + obj.VS200_A = t[7].cast(); + obj.VS200_B = t[8].cast(); + obj.VS200_C = t[9].cast(); + obj.VS300 = t[10].cast(); + + return obj; + } + )); + + //--------------------------------- + // ES500 Aggregator Structures + //--------------------------------- + py::class_(m, "ES500_aggregator_pev_charge_needs") + .def(py::init<>()) + .def_readwrite("SE_id", &ES500_aggregator_pev_charge_needs::SE_id) + .def_readwrite("departure_unix_time", &ES500_aggregator_pev_charge_needs::departure_unix_time) + .def_readwrite("e3_charge_remain_kWh", &ES500_aggregator_pev_charge_needs::e3_charge_remain_kWh) + .def_readwrite("e3_step_max_kWh", &ES500_aggregator_pev_charge_needs::e3_step_max_kWh) + .def_readwrite("e3_step_target_kWh", &ES500_aggregator_pev_charge_needs::e3_step_target_kWh) + .def_readwrite("min_remaining_charge_time_hrs", &ES500_aggregator_pev_charge_needs::min_remaining_charge_time_hrs) + .def_readwrite("min_time_to_complete_entire_charge_hrs", &ES500_aggregator_pev_charge_needs::min_time_to_complete_entire_charge_hrs) + .def_readwrite("remaining_park_time_hrs", &ES500_aggregator_pev_charge_needs::remaining_park_time_hrs) + .def_readwrite("total_park_time_hrs", &ES500_aggregator_pev_charge_needs::total_park_time_hrs) + .def(py::pickle( + [](const ES500_aggregator_pev_charge_needs& obj) + { // __getstate__ + return py::make_tuple(obj.SE_id, obj.departure_unix_time, obj.e3_charge_remain_kWh, obj.e3_step_max_kWh, obj.e3_step_target_kWh, obj.min_remaining_charge_time_hrs, obj.min_time_to_complete_entire_charge_hrs, obj.remaining_park_time_hrs, obj.total_park_time_hrs); + }, + [](py::tuple t) + { // __setstate__ + ES500_aggregator_pev_charge_needs obj; + obj.SE_id = t[0].cast(); + obj.departure_unix_time = t[1].cast(); + obj.e3_charge_remain_kWh = t[2].cast(); + obj.e3_step_max_kWh = t[3].cast(); + obj.e3_step_target_kWh = t[4].cast(); + obj.min_remaining_charge_time_hrs = t[5].cast(); + obj.min_time_to_complete_entire_charge_hrs = t[6].cast(); + obj.remaining_park_time_hrs = t[7].cast(); + obj.total_park_time_hrs = t[8].cast(); + + return obj; + } + )); + + py::class_(m, "ES500_aggregator_charging_needs") + .def(py::init<>()) + .def("is_empty", &ES500_aggregator_charging_needs::is_empty) + .def_readwrite("next_aggregator_timestep_start_time", &ES500_aggregator_charging_needs::next_aggregator_timestep_start_time) + .def_readwrite("pev_charge_needs", &ES500_aggregator_charging_needs::pev_charge_needs) + .def(py::pickle( + [](const ES500_aggregator_charging_needs& obj) + { // __getstate__ + return py::make_tuple(obj.next_aggregator_timestep_start_time, obj.pev_charge_needs); + }, + [](py::tuple t) + { // __setstate__ + ES500_aggregator_charging_needs obj; + obj.next_aggregator_timestep_start_time = t[0].cast(); + + for (auto x : t[1]) + obj.pev_charge_needs.push_back(x.cast()); + + return obj; + } + )); + + py::class_(m, "ES500_aggregator_e_step_setpoints") + .def(py::init<>()) + .def(py::init, std::vector, std::vector >()) + .def("is_empty", &ES500_aggregator_e_step_setpoints::is_empty) + .def_readwrite("next_aggregator_timestep_start_time", &ES500_aggregator_e_step_setpoints::next_aggregator_timestep_start_time) + .def_readwrite("SE_id", &ES500_aggregator_e_step_setpoints::SE_id) + .def_readwrite("e3_step_kWh", &ES500_aggregator_e_step_setpoints::e3_step_kWh) + .def_readwrite("charge_progression", &ES500_aggregator_e_step_setpoints::charge_progression) + .def(py::pickle( + [](const ES500_aggregator_e_step_setpoints& obj) + { // __getstate__ + return py::make_tuple(obj.next_aggregator_timestep_start_time, obj.SE_id, obj.e3_step_kWh, obj.charge_progression); + }, + [](py::tuple t) + { // __setstate__ + ES500_aggregator_e_step_setpoints obj; + obj.next_aggregator_timestep_start_time = t[0].cast(); + + for (auto x : t[1]) + obj.SE_id.push_back(x.cast()); + + for (auto x : t[2]) + obj.e3_step_kWh.push_back(x.cast()); + + for (auto x : t[3]) + obj.charge_progression.push_back(x.cast()); + + return obj; + } + )); + + py::class_(m, "ES500_aggregator_charging_forecast") + .def(py::init<>()) + .def_readwrite("arrival_unix_time", &ES500_aggregator_charging_forecast::arrival_unix_time) + .def_readwrite("departure_unix_time", &ES500_aggregator_charging_forecast::departure_unix_time) + .def_readwrite("e3_charge_remain_kWh", &ES500_aggregator_charging_forecast::e3_charge_remain_kWh) + .def_readwrite("e3_step_max_kWh", &ES500_aggregator_charging_forecast::e3_step_max_kWh) + .def(py::pickle( + [](const ES500_aggregator_charging_forecast& obj) + { // __getstate__ + return py::make_tuple(obj.arrival_unix_time, obj.departure_unix_time, obj.e3_charge_remain_kWh, obj.e3_step_max_kWh); + }, + [](py::tuple t) + { // __setstate__ + ES500_aggregator_charging_forecast obj; + + for (auto x : t[0]) + obj.arrival_unix_time.push_back(x.cast()); + + for (auto x : t[1]) + obj.departure_unix_time.push_back(x.cast()); + + for (auto x : t[2]) + obj.e3_charge_remain_kWh.push_back(x.cast()); + + for (auto x : t[3]) + obj.e3_step_max_kWh.push_back(x.cast()); + + return obj; + } + )); + + py::class_(m, "ES500_aggregator_obj_fun_constraints") + .def(py::init<>()) + .def_readwrite("E_cumEnergy_ALAP_kWh", &ES500_aggregator_obj_fun_constraints::E_cumEnergy_ALAP_kWh) + .def_readwrite("E_cumEnergy_ASAP_kWh", &ES500_aggregator_obj_fun_constraints::E_cumEnergy_ASAP_kWh) + .def_readwrite("E_energy_ALAP_kWh", &ES500_aggregator_obj_fun_constraints::E_energy_ALAP_kWh) + .def_readwrite("E_energy_ASAP_kWh", &ES500_aggregator_obj_fun_constraints::E_energy_ASAP_kWh) + .def_readwrite("E_step_ALAP", &ES500_aggregator_obj_fun_constraints::E_step_ALAP) + .def_readwrite("canSolve_aka_pev_charging_in_prediction_window", &ES500_aggregator_obj_fun_constraints::canSolve_aka_pev_charging_in_prediction_window) + .def(py::pickle( + [](const ES500_aggregator_obj_fun_constraints& obj) + { // __getstate__ + return py::make_tuple(obj.E_cumEnergy_ALAP_kWh, obj.E_cumEnergy_ASAP_kWh, obj.E_energy_ALAP_kWh, obj.E_energy_ASAP_kWh, obj.E_step_ALAP, obj.canSolve_aka_pev_charging_in_prediction_window); + }, + [](py::tuple t) + { // __setstate__ + ES500_aggregator_obj_fun_constraints obj; + + for (auto x : t[0]) + obj.E_cumEnergy_ALAP_kWh.push_back(x.cast()); + + for (auto x : t[1]) + obj.E_cumEnergy_ASAP_kWh.push_back(x.cast()); + + for (auto x : t[2]) + obj.E_energy_ALAP_kWh.push_back(x.cast()); + + for (auto x : t[3]) + obj.E_energy_ASAP_kWh.push_back(x.cast()); + + for (auto x : t[4]) + obj.E_step_ALAP.push_back(x.cast()); + + obj.canSolve_aka_pev_charging_in_prediction_window = t[5].cast(); + + return obj; + } + )); + + py::class_(m, "ES500_charge_cycling_control_boundary_point") + .def(py::init<>()) + .def(py::init()) + .def_readwrite("cycling_magnitude", &ES500_charge_cycling_control_boundary_point::cycling_magnitude) + .def_readwrite("cycling_vs_ramping", &ES500_charge_cycling_control_boundary_point::cycling_vs_ramping) + .def(py::pickle( + [](const ES500_charge_cycling_control_boundary_point& obj) + { // __getstate__ + return py::make_tuple(obj.cycling_magnitude, obj.cycling_vs_ramping); + }, + [](py::tuple t) + { // __setstate__ + ES500_charge_cycling_control_boundary_point obj; + obj.cycling_magnitude = t[0].cast(); + obj.cycling_vs_ramping = t[1].cast(); + return obj; + } + )); + + py::class_(m, "ES500_stop_charge_cycling_decision_parameters") + .def(py::init<>()) + .def_readwrite("next_aggregator_timestep_start_time", &ES500_stop_charge_cycling_decision_parameters::next_aggregator_timestep_start_time) + .def_readwrite("iteration", &ES500_stop_charge_cycling_decision_parameters::iteration) + .def_readwrite("is_last_iteration", &ES500_stop_charge_cycling_decision_parameters::is_last_iteration) + .def_readwrite("off_to_on_nrg_kWh", &ES500_stop_charge_cycling_decision_parameters::off_to_on_nrg_kWh) + .def_readwrite("on_to_off_nrg_kWh", &ES500_stop_charge_cycling_decision_parameters::on_to_off_nrg_kWh) + .def_readwrite("total_on_nrg_kWh", &ES500_stop_charge_cycling_decision_parameters::total_on_nrg_kWh) + .def_readwrite("cycling_vs_ramping", &ES500_stop_charge_cycling_decision_parameters::cycling_vs_ramping) + .def_readwrite("cycling_magnitude", &ES500_stop_charge_cycling_decision_parameters::cycling_magnitude) + .def_readwrite("delta_energy_kWh", &ES500_stop_charge_cycling_decision_parameters::delta_energy_kWh) + .def(py::pickle( + [](const ES500_stop_charge_cycling_decision_parameters& obj) + { // __getstate__ + return py::make_tuple(obj.next_aggregator_timestep_start_time, obj.iteration, obj.is_last_iteration, obj.off_to_on_nrg_kWh, obj.on_to_off_nrg_kWh, obj.total_on_nrg_kWh, obj.cycling_vs_ramping, obj.cycling_magnitude, obj.delta_energy_kWh); + }, + [](py::tuple t) + { // __setstate__ + ES500_stop_charge_cycling_decision_parameters obj; + obj.next_aggregator_timestep_start_time = t[0].cast(); + obj.iteration = t[1].cast(); + obj.is_last_iteration = t[2].cast(); + obj.off_to_on_nrg_kWh = t[3].cast(); + obj.on_to_off_nrg_kWh = t[4].cast(); + obj.total_on_nrg_kWh = t[5].cast(); + obj.cycling_vs_ramping = t[6].cast(); + obj.cycling_magnitude = t[7].cast(); + obj.delta_energy_kWh = t[8].cast(); + return obj; + } + )); + + //--------------------------------- + // PEV Ramping Parameters + //--------------------------------- + + py::class_(m, "pev_charge_ramping") + .def(py::init<>()) + .def(py::init()) + .def_readwrite("off_to_on_delay_sec", &pev_charge_ramping::off_to_on_delay_sec) + .def_readwrite("off_to_on_kW_per_sec", &pev_charge_ramping::off_to_on_kW_per_sec) + .def_readwrite("on_to_off_delay_sec", &pev_charge_ramping::on_to_off_delay_sec) + .def_readwrite("on_to_off_kW_per_sec", &pev_charge_ramping::on_to_off_kW_per_sec) + .def_readwrite("ramp_up_delay_sec", &pev_charge_ramping::ramp_up_delay_sec) + .def_readwrite("ramp_up_kW_per_sec", &pev_charge_ramping::ramp_up_kW_per_sec) + .def_readwrite("ramp_down_delay_sec", &pev_charge_ramping::ramp_down_delay_sec) + .def_readwrite("ramp_down_kW_per_sec", &pev_charge_ramping::ramp_down_kW_per_sec) + .def(py::pickle( + [](const pev_charge_ramping& obj) + { // __getstate__ + return py::make_tuple(obj.off_to_on_delay_sec, obj.off_to_on_kW_per_sec, obj.on_to_off_delay_sec, obj.on_to_off_kW_per_sec, obj.ramp_up_delay_sec, obj.ramp_up_kW_per_sec, obj.ramp_down_delay_sec, obj.ramp_down_kW_per_sec); + }, + [](py::tuple t) + { // __setstate__ + pev_charge_ramping obj; + obj.off_to_on_delay_sec = t[0].cast(); + obj.off_to_on_kW_per_sec = t[1].cast(); + obj.on_to_off_delay_sec = t[2].cast(); + obj.on_to_off_kW_per_sec = t[3].cast(); + obj.ramp_up_delay_sec = t[4].cast(); + obj.ramp_up_kW_per_sec = t[5].cast(); + obj.ramp_down_delay_sec = t[6].cast(); + obj.ramp_down_kW_per_sec = t[7].cast(); + return obj; + } + )); + + py::class_(m, "pev_charge_ramping_workaround") + .def(py::init<>()) + .def_readwrite("pev_charge_ramping_obj", &pev_charge_ramping_workaround::pev_charge_ramping_obj) + .def_readwrite("pev_type", &pev_charge_ramping_workaround::pev_type) + .def_readwrite("SE_type", &pev_charge_ramping_workaround::SE_type) + .def(py::pickle( + [](const pev_charge_ramping_workaround& obj) + { // __getstate__ + return py::make_tuple(obj.pev_charge_ramping_obj, obj.pev_type, obj.SE_type); + }, + [](py::tuple t) + { // __setstate__ + pev_charge_ramping_workaround obj; + obj.pev_charge_ramping_obj = t[0].cast(); + obj.pev_type = t[1].cast(); + obj.SE_type = t[2].cast(); + return obj; + } + )); +} diff --git a/source/base/helper.cpp b/source/globals/helper.cpp similarity index 100% rename from source/base/helper.cpp rename to source/globals/helper.cpp diff --git a/source/base/helper.h b/source/globals/helper.h similarity index 100% rename from source/base/helper.h rename to source/globals/helper.h diff --git a/source/base/inputs.h b/source/globals/inputs.h similarity index 100% rename from source/base/inputs.h rename to source/globals/inputs.h diff --git a/source/load_inputs/CMakeLists.txt b/source/load_inputs/CMakeLists.txt index f643694..145dfc4 100644 --- a/source/load_inputs/CMakeLists.txt +++ b/source/load_inputs/CMakeLists.txt @@ -5,6 +5,7 @@ set(LOAD_INPUTS_FILES "load_EV_EVSE_inventory.cpp" add_library(Load_inputs STATIC ${LOAD_INPUTS_FILES}) target_compile_features(Load_inputs PUBLIC cxx_std_17) +target_include_directories(Load_inputs PUBLIC ${PROJECT_SOURCE_DIR}/source/globals) target_include_directories(Load_inputs PUBLIC ${PROJECT_SOURCE_DIR}/source/base) target_include_directories(Load_inputs PUBLIC ${PROJECT_SOURCE_DIR}/source/charging_models) target_include_directories(Load_inputs PUBLIC ${PROJECT_SOURCE_DIR}/source/factory) From 59a7a53b428aea12550da9a7feac89cc505e399b Mon Sep 17 00:00:00 2001 From: Manoj Kumar Cebol Sundarrajan Date: Wed, 24 May 2023 09:17:51 -0600 Subject: [PATCH 16/52] added load_EV_EVSE_inventory to have python interface and added const ref for string parameters for files under load_inputs --- source/charging_models/CMakeLists.txt | 1 + source/charging_models/charging_models_python_bind.cpp | 9 +++++++++ source/load_inputs/load_EVSE_inventory.cpp | 4 ++-- source/load_inputs/load_EVSE_inventory.h | 4 ++-- source/load_inputs/load_EV_EVSE_inventory.cpp | 2 +- source/load_inputs/load_EV_EVSE_inventory.h | 2 +- source/load_inputs/load_EV_inventory.cpp | 4 ++-- source/load_inputs/load_EV_inventory.h | 4 ++-- 8 files changed, 20 insertions(+), 10 deletions(-) diff --git a/source/charging_models/CMakeLists.txt b/source/charging_models/CMakeLists.txt index ab78a59..1930809 100644 --- a/source/charging_models/CMakeLists.txt +++ b/source/charging_models/CMakeLists.txt @@ -13,5 +13,6 @@ target_include_directories(Charging_models PUBLIC ${PROJECT_SOURCE_DIR}/source/l pybind11_add_module(Caldera_models MODULE charging_models_python_bind.cpp) target_link_libraries(Caldera_models PRIVATE Charging_models) +target_link_libraries(Caldera_models PRIVATE Load_inputs) install(TARGETS Caldera_models DESTINATION ${INSTALL_DIR}) \ No newline at end of file diff --git a/source/charging_models/charging_models_python_bind.cpp b/source/charging_models/charging_models_python_bind.cpp index 3740953..7bad934 100644 --- a/source/charging_models/charging_models_python_bind.cpp +++ b/source/charging_models/charging_models_python_bind.cpp @@ -3,6 +3,7 @@ #include "EV_characteristics.h" #include "EV_EVSE_inventory.h" #include "inputs.h" +#include "load_EV_EVSE_inventory.h" #include #include @@ -15,6 +16,14 @@ namespace py = pybind11; PYBIND11_MODULE(Caldera_models, m) { + //-------------------------------------------- + // load_EV_EVSE_inventory + //-------------------------------------------- + + py::class_(m, "load_EV_EVSE_inventory") + .def(py::init< std::string >()) + .def("get_EV_EVSE_inventory", &load_EV_EVSE_inventory::get_EV_EVSE_inventory); + //-------------------------------------------- // EV_characteristics //-------------------------------------------- diff --git a/source/load_inputs/load_EVSE_inventory.cpp b/source/load_inputs/load_EVSE_inventory.cpp index 0b4dd75..be31b08 100644 --- a/source/load_inputs/load_EVSE_inventory.cpp +++ b/source/load_inputs/load_EVSE_inventory.cpp @@ -4,7 +4,7 @@ #include #include -load_EVSE_inventory::load_EVSE_inventory(std::string inputs_dir) : +load_EVSE_inventory::load_EVSE_inventory(const std::string& inputs_dir) : EVSE_inv(this->load(inputs_dir)) {} @@ -48,7 +48,7 @@ EVSE_phase load_EVSE_inventory::string_to_EVSE_phase(const std::string& str) } } -EVSE_inventory load_EVSE_inventory::load(std::string inputs_dir) +EVSE_inventory load_EVSE_inventory::load(const std::string& inputs_dir) { EVSE_inventory EVSE_inv; diff --git a/source/load_inputs/load_EVSE_inventory.h b/source/load_inputs/load_EVSE_inventory.h index 02b5d56..52b302b 100644 --- a/source/load_inputs/load_EVSE_inventory.h +++ b/source/load_inputs/load_EVSE_inventory.h @@ -11,10 +11,10 @@ class load_EVSE_inventory EVSE_level string_to_EVSE_level(const std::string& str); EVSE_phase string_to_EVSE_phase(const std::string& str); - EVSE_inventory load(std::string inputs_dir); + EVSE_inventory load(const std::string& inputs_dir); public: - load_EVSE_inventory(std::string inputs_dir); + load_EVSE_inventory(const std::string& inputs_dir); const EVSE_inventory& get_EVSE_inventory() const; }; diff --git a/source/load_inputs/load_EV_EVSE_inventory.cpp b/source/load_inputs/load_EV_EVSE_inventory.cpp index 28a35e2..9509d6d 100644 --- a/source/load_inputs/load_EV_EVSE_inventory.cpp +++ b/source/load_inputs/load_EV_EVSE_inventory.cpp @@ -1,6 +1,6 @@ #include "load_EV_EVSE_inventory.h" -load_EV_EVSE_inventory::load_EV_EVSE_inventory(std::string inputs_dir) : +load_EV_EVSE_inventory::load_EV_EVSE_inventory(const std::string& inputs_dir) : inventory(EV_EVSE_inventory(load_EV_inventory(inputs_dir).get_EV_inventory(), load_EVSE_inventory(inputs_dir).get_EVSE_inventory())) {} diff --git a/source/load_inputs/load_EV_EVSE_inventory.h b/source/load_inputs/load_EV_EVSE_inventory.h index 6902581..3f9819e 100644 --- a/source/load_inputs/load_EV_EVSE_inventory.h +++ b/source/load_inputs/load_EV_EVSE_inventory.h @@ -11,7 +11,7 @@ class load_EV_EVSE_inventory const EV_EVSE_inventory inventory; public: - load_EV_EVSE_inventory(std::string inputs_dir); + load_EV_EVSE_inventory(const std::string& inputs_dir); const EV_EVSE_inventory& get_EV_EVSE_inventory() const; }; diff --git a/source/load_inputs/load_EV_inventory.cpp b/source/load_inputs/load_EV_inventory.cpp index 766827e..ed0d9e8 100644 --- a/source/load_inputs/load_EV_inventory.cpp +++ b/source/load_inputs/load_EV_inventory.cpp @@ -4,7 +4,7 @@ #include #include -load_EV_inventory::load_EV_inventory(std::string inputs_dir) : +load_EV_inventory::load_EV_inventory(const std::string& inputs_dir) : EV_inv(this->load(inputs_dir)) {} @@ -42,7 +42,7 @@ bool load_EV_inventory::string_to_DCFC_capable(const std::string& str) { } } -EV_inventory load_EV_inventory::load(std::string inputs_dir) +EV_inventory load_EV_inventory::load(const std::string& inputs_dir) { EV_inventory EV_inv; diff --git a/source/load_inputs/load_EV_inventory.h b/source/load_inputs/load_EV_inventory.h index 711e238..905c053 100644 --- a/source/load_inputs/load_EV_inventory.h +++ b/source/load_inputs/load_EV_inventory.h @@ -13,10 +13,10 @@ class load_EV_inventory battery_chemistry string_to_battery_chemistry(const std::string& str); bool string_to_DCFC_capable(const std::string& str); - EV_inventory load(std::string inputs_dir); + EV_inventory load(const std::string& inputs_dir); public: - load_EV_inventory(std::string inputs_dir); + load_EV_inventory(const std::string& inputs_dir); const EV_inventory& get_EV_inventory() const; }; From 3b5e98aadab1e71009f6f73b4a26a0fcbdd09c8d Mon Sep 17 00:00:00 2001 From: Manoj Kumar Cebol Sundarrajan Date: Wed, 24 May 2023 09:21:53 -0600 Subject: [PATCH 17/52] added some missing functions in pybind python interface --- source/globals/globals_python_bind.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/source/globals/globals_python_bind.cpp b/source/globals/globals_python_bind.cpp index 4d55879..a622544 100644 --- a/source/globals/globals_python_bind.cpp +++ b/source/globals/globals_python_bind.cpp @@ -15,7 +15,12 @@ namespace py = pybind11; PYBIND11_MODULE(Caldera_globals, m) { - + m.def("get_LPF_window_enum", &get_LPF_window_enum); + m.def("L2_control_strategy_supports_Vrms_using_QkVAR", &L2_control_strategy_supports_Vrms_using_QkVAR); + m.def("get_L2_control_strategies_enum", &get_L2_control_strategies_enum); + m.def("is_L2_ES_control_strategy", &is_L2_ES_control_strategy); + m.def("is_L2_VS_control_strategy", &is_L2_VS_control_strategy); + //-------------------------------------------- // interface_to_SE_groups_inputs //-------------------------------------------- From e8b1d5cf064320cf10bc62924954705bae9fa3b4 Mon Sep 17 00:00:00 2001 From: Manoj Kumar Cebol Sundarrajan Date: Wed, 24 May 2023 11:27:54 -0600 Subject: [PATCH 18/52] added utility function to check if EV is compatible with EVSE --- source/charging_models/EV_EVSE_inventory.cpp | 15 +++++++++++++++ source/charging_models/EV_EVSE_inventory.h | 7 +++++++ 2 files changed, 22 insertions(+) diff --git a/source/charging_models/EV_EVSE_inventory.cpp b/source/charging_models/EV_EVSE_inventory.cpp index 51b60a2..ffe6cd4 100644 --- a/source/charging_models/EV_EVSE_inventory.cpp +++ b/source/charging_models/EV_EVSE_inventory.cpp @@ -106,6 +106,21 @@ const std::vector& EV_EVSE_inventory::get_all_compatible_pev_SE_com return this->compatible_EV_EVSE_pair; } +const bool EV_EVSE_inventory::pev_is_compatible_with_supply_equipment(const pev_SE_pair& EV_EVSE_combination) const +{ + auto it = std::find(this->compatible_EV_EVSE_pair.begin(), this->compatible_EV_EVSE_pair.end(), EV_EVSE_combination); + + if (it == this->compatible_EV_EVSE_pair.end()) + { + return false; + } + else + { + return true; + } +} + + std::ostream& operator<<(std::ostream& os, const EV_EVSE_inventory& inventory) { os << inventory.get_EV_inventory(); diff --git a/source/charging_models/EV_EVSE_inventory.h b/source/charging_models/EV_EVSE_inventory.h index 891c636..717c02f 100644 --- a/source/charging_models/EV_EVSE_inventory.h +++ b/source/charging_models/EV_EVSE_inventory.h @@ -18,6 +18,11 @@ struct pev_SE_pair const EVSE_type& se_type) : ev_type(ev_type), se_type(se_type) { } + + bool operator==(const pev_SE_pair& rhs) const + { + return (this->ev_type == rhs.ev_type) && (this->se_type == rhs.se_type); + } }; class EV_EVSE_inventory { @@ -53,6 +58,8 @@ class EV_EVSE_inventory { const EVSE_type& get_default_EVSE() const; const std::vector& get_all_compatible_pev_SE_combinations() const; + + const bool pev_is_compatible_with_supply_equipment(const pev_SE_pair& EV_EVSE_combination) const; }; std::ostream& operator<<(std::ostream& os, const EV_EVSE_inventory& inventory); From fb504a06e6f5914ab8bff6f1875c406a089f9bc7 Mon Sep 17 00:00:00 2001 From: Manoj Kumar Cebol Sundarrajan Date: Wed, 24 May 2023 11:33:00 -0600 Subject: [PATCH 19/52] python interface for the new utility function to check if EV is compatible with EVSE --- source/charging_models/charging_models_python_bind.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/charging_models/charging_models_python_bind.cpp b/source/charging_models/charging_models_python_bind.cpp index 7bad934..3e42c0e 100644 --- a/source/charging_models/charging_models_python_bind.cpp +++ b/source/charging_models/charging_models_python_bind.cpp @@ -90,6 +90,6 @@ PYBIND11_MODULE(Caldera_models, m) .def("get_all_EVSEs", &EV_EVSE_inventory::get_all_EVSEs) .def("get_default_EV", &EV_EVSE_inventory::get_default_EV) .def("get_default_EVSE", &EV_EVSE_inventory::get_default_EVSE) - .def("get_all_compatible_pev_SE_combinations", &EV_EVSE_inventory::get_all_compatible_pev_SE_combinations); - + .def("get_all_compatible_pev_SE_combinations", &EV_EVSE_inventory::get_all_compatible_pev_SE_combinations) + .def("pev_is_compatible_with_supply_equipment", &EV_EVSE_inventory::pev_is_compatible_with_supply_equipment); } From 69b61a690162052aaa61d73c709e7836e2249712 Mon Sep 17 00:00:00 2001 From: Manoj Kumar Cebol Sundarrajan Date: Wed, 24 May 2023 16:30:54 -0600 Subject: [PATCH 20/52] Added pickling functionality for EV_EVSE_inventory --- .../charging_models_python_bind.cpp | 68 ++++++++++++++++++- 1 file changed, 65 insertions(+), 3 deletions(-) diff --git a/source/charging_models/charging_models_python_bind.cpp b/source/charging_models/charging_models_python_bind.cpp index 3e42c0e..3ff71dd 100644 --- a/source/charging_models/charging_models_python_bind.cpp +++ b/source/charging_models/charging_models_python_bind.cpp @@ -47,8 +47,28 @@ PYBIND11_MODULE(Caldera_models, m) .def("get_pack_voltage_at_peak_power_V", &EV_characteristics::get_pack_voltage_at_peak_power_V) .def("get_battery_size_kWh", &EV_characteristics::get_battery_size_kWh) .def("get_battery_size_Ah_1C", &EV_characteristics::get_battery_size_Ah_1C) - .def("get_battery_size_with_stochastic_degradation_kWh", &EV_characteristics::get_battery_size_with_stochastic_degradation_kWh); + .def("get_battery_size_with_stochastic_degradation_kWh", &EV_characteristics::get_battery_size_with_stochastic_degradation_kWh) + .def(py::pickle( + [](const EV_characteristics& obj) + { // __getstate__ + return py::make_tuple(obj.get_type(), obj.get_chemistry(), obj.get_usable_battery_size_kWh(), obj.get_range_miles(), obj.get_efficiency_Wh_per_mile(), obj.get_AC_charge_rate_kW(), obj.get_DCFC_capable(), obj.get_max_c_rate(), obj.get_pack_voltage_at_peak_power_V()); + }, + [](py::tuple t) + { // __setstate__ + EV_type type = t[0].cast(); + battery_chemistry chemistry = t[1].cast(); + double usable_battery_size_kWh = t[2].cast(); + double range_miles = t[3].cast(); + double efficiency_Wh_per_mile = t[4].cast(); + double AC_charge_rate_kW = t[5].cast(); + bool DCFC_capable = t[6].cast(); + double max_c_rate = t[7].cast(); + double pack_voltage_at_peak_power_V = t[8].cast(); + EV_characteristics obj{ type, chemistry, usable_battery_size_kWh, range_miles, efficiency_Wh_per_mile, AC_charge_rate_kW, DCFC_capable, max_c_rate, pack_voltage_at_peak_power_V}; + return obj; + } + )); //-------------------------------------------- // EVSE_characteristics //-------------------------------------------- @@ -71,7 +91,27 @@ PYBIND11_MODULE(Caldera_models, m) .def("get_volatge_limit_V", &EVSE_characteristics::get_volatge_limit_V) .def("get_current_limit_A", &EVSE_characteristics::get_current_limit_A) .def("get_standby_real_power_kW", &EVSE_characteristics::get_standby_real_power_kW) - .def("get_standby_reactive_power_kW", &EVSE_characteristics::get_standby_reactive_power_kW); + .def("get_standby_reactive_power_kW", &EVSE_characteristics::get_standby_reactive_power_kW) + .def(py::pickle( + [](const EVSE_characteristics& obj) + { // __getstate__ + return py::make_tuple(obj.get_type(), obj.get_level(), obj.get_phase(), obj.get_power_limit_kW(), obj.get_volatge_limit_V(), obj.get_current_limit_A(), obj.get_standby_real_power_kW(), obj.get_standby_reactive_power_kW()); + }, + [](py::tuple t) + { // __setstate__ + EVSE_type type = t[0].cast(); + EVSE_level level = t[1].cast(); + EVSE_phase phase = t[2].cast(); + double power_limit_kW = t[3].cast(); + double volatge_limit_V = t[4].cast(); + double current_limit_A = t[5].cast(); + double standby_real_power_kW = t[6].cast(); + double standby_reactive_power_kW = t[7].cast(); + + EVSE_characteristics obj{ type, level, phase, power_limit_kW, volatge_limit_V, current_limit_A, standby_real_power_kW, standby_reactive_power_kW }; + return obj; + } + )); //-------------------------------------------- // EV_EVSE_inventory @@ -91,5 +131,27 @@ PYBIND11_MODULE(Caldera_models, m) .def("get_default_EV", &EV_EVSE_inventory::get_default_EV) .def("get_default_EVSE", &EV_EVSE_inventory::get_default_EVSE) .def("get_all_compatible_pev_SE_combinations", &EV_EVSE_inventory::get_all_compatible_pev_SE_combinations) - .def("pev_is_compatible_with_supply_equipment", &EV_EVSE_inventory::pev_is_compatible_with_supply_equipment); + .def("pev_is_compatible_with_supply_equipment", &EV_EVSE_inventory::pev_is_compatible_with_supply_equipment) + .def(py::pickle( + [](const EV_EVSE_inventory& obj) + { // __getstate__ + return py::make_tuple(obj.get_EV_inventory(), obj.get_EVSE_inventory()); + }, + [](py::tuple t) + { // __setstate__ + + // EV_inventory + EV_inventory EV_inv; + for (auto x : t[0]) + EV_inv.insert(x.cast>()); + + // EVSE_inventory + EVSE_inventory EVSE_inv; + for (auto x : t[1]) + EVSE_inv.insert(x.cast>()); + + EV_EVSE_inventory obj{ EV_inv, EVSE_inv }; + return obj; + } + )); } From 883984919677e0a5263a0dda0f665305121e0a9f Mon Sep 17 00:00:00 2001 From: Manoj Kumar Cebol Sundarrajan Date: Wed, 24 May 2023 17:10:07 -0600 Subject: [PATCH 21/52] bug fix in pickling functionality --- source/charging_models/charging_models_python_bind.cpp | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/source/charging_models/charging_models_python_bind.cpp b/source/charging_models/charging_models_python_bind.cpp index 3ff71dd..e372da4 100644 --- a/source/charging_models/charging_models_python_bind.cpp +++ b/source/charging_models/charging_models_python_bind.cpp @@ -141,14 +141,12 @@ PYBIND11_MODULE(Caldera_models, m) { // __setstate__ // EV_inventory - EV_inventory EV_inv; - for (auto x : t[0]) - EV_inv.insert(x.cast>()); + EV_inventory EV_inv = t[0].cast(); // EVSE_inventory - EVSE_inventory EVSE_inv; - for (auto x : t[1]) - EVSE_inv.insert(x.cast>()); + EVSE_inventory EVSE_inv = t[1].cast(); +// for (auto x : t[1].cast()) +// EVSE_inv.insert(x); EV_EVSE_inventory obj{ EV_inv, EVSE_inv }; return obj; From bdce4013acdb25a9465631b7780e0d75cb94c6ac Mon Sep 17 00:00:00 2001 From: Steven Schmidt Date: Fri, 26 May 2023 11:22:25 -0600 Subject: [PATCH 22/52] Fixing compile-errors on Mac (using the clang compiler) --- source/base/ac_to_dc_converter.h | 4 ++-- source/charging_models/EVSE_characteristics.h | 6 ++++++ source/charging_models/EV_EVSE_inventory.h | 3 ++- source/charging_models/EV_characteristics.h | 6 ++++++ source/globals/globals_python_bind.cpp | 13 ++++++++++++- source/globals/helper.h | 2 +- 6 files changed, 29 insertions(+), 5 deletions(-) diff --git a/source/base/ac_to_dc_converter.h b/source/base/ac_to_dc_converter.h index 302e351..30ecc29 100644 --- a/source/base/ac_to_dc_converter.h +++ b/source/base/ac_to_dc_converter.h @@ -50,7 +50,7 @@ class ac_to_dc_converter_pf : public ac_to_dc_converter public: ac_to_dc_converter_pf(charge_event_P3kW_limits& CE_P3kW_limits_, double S3kVA_from_max_nominal_P3kW_multiplier, poly_function_of_x& inv_eff_from_P2_, poly_function_of_x& inv_pf_from_P3_); virtual ~ac_to_dc_converter_pf() override final; - ac_to_dc_converter* clone() const; + ac_to_dc_converter* clone() const override; virtual void get_next(double time_step_duration_hrs, double P1_kW, double P2_kW, ac_power_metrics& return_val) override final; }; @@ -66,7 +66,7 @@ class ac_to_dc_converter_Q_setpoint : public ac_to_dc_converter public: ac_to_dc_converter_Q_setpoint(charge_event_P3kW_limits& CE_P3kW_limits_, double S3kVA_from_max_nominal_P3kW_multiplier, poly_function_of_x& inv_eff_from_P2_); virtual ~ac_to_dc_converter_Q_setpoint() override final; - ac_to_dc_converter* clone() const; + ac_to_dc_converter* clone() const override; virtual void get_next(double time_step_duration_hrs, double P1_kW, double P2_kW, ac_power_metrics& return_val) override final; }; diff --git a/source/charging_models/EVSE_characteristics.h b/source/charging_models/EVSE_characteristics.h index 0d14685..1581291 100644 --- a/source/charging_models/EVSE_characteristics.h +++ b/source/charging_models/EVSE_characteristics.h @@ -13,6 +13,12 @@ enum EVSE_level DCFC = 2 }; +namespace std { + template <> struct hash { + int operator() (const EVSE_level& t) const { return (int)t; } + }; +} + std::ostream& operator<<(std::ostream& os, const EVSE_level& level); enum EVSE_phase diff --git a/source/charging_models/EV_EVSE_inventory.h b/source/charging_models/EV_EVSE_inventory.h index 717c02f..4f10cf4 100644 --- a/source/charging_models/EV_EVSE_inventory.h +++ b/source/charging_models/EV_EVSE_inventory.h @@ -4,6 +4,7 @@ #include #include "EV_characteristics.h" #include "EVSE_characteristics.h" +#include typedef std::unordered_map EV_inventory; typedef std::unordered_map EVSE_inventory; @@ -42,7 +43,7 @@ class EV_EVSE_inventory { const std::vector load_all_EVSEs() const; const EV_type load_default_EV() const; const EVSE_type load_default_EVSE() const; - const std::vector EV_EVSE_inventory::load_compatible_EV_EVSE_pair() const; + const std::vector load_compatible_EV_EVSE_pair() const; public: EV_EVSE_inventory(const EV_inventory& EV_inv, diff --git a/source/charging_models/EV_characteristics.h b/source/charging_models/EV_characteristics.h index 9f75aa9..283d1df 100644 --- a/source/charging_models/EV_characteristics.h +++ b/source/charging_models/EV_characteristics.h @@ -15,6 +15,12 @@ enum battery_chemistry NMC = 2 }; +namespace std { + template <> struct hash { + int operator() (const battery_chemistry& t) const { return (int)t; } + }; +} + std::ostream& operator<<(std::ostream& os, const battery_chemistry& chemistry); typedef double crate; diff --git a/source/globals/globals_python_bind.cpp b/source/globals/globals_python_bind.cpp index a622544..76444a5 100644 --- a/source/globals/globals_python_bind.cpp +++ b/source/globals/globals_python_bind.cpp @@ -26,7 +26,18 @@ PYBIND11_MODULE(Caldera_globals, m) //-------------------------------------------- py::class_(m, "interface_to_SE_groups_inputs") - .def(py::init, charge_event_queuing_inputs, std::vector, double, int, std::vector, std::vector, double, L2_control_strategy_parameters, bool >()); + .def(py::init< bool, + EV_ramping_map, + std::vector, + charge_event_queuing_inputs, + std::vector, + double, + int, + std::vector&, + std::vector&, + double, + L2_control_strategy_parameters, + bool >()); //--------------------------------- // Charge Event Data diff --git a/source/globals/helper.h b/source/globals/helper.h index c02b695..6d1168c 100644 --- a/source/globals/helper.h +++ b/source/globals/helper.h @@ -115,7 +115,7 @@ struct poly_segment double d; double e; - poly_segment::poly_segment(const double& x_LB, const double& x_UB, const poly_degree& degree, const double& a, + poly_segment(const double& x_LB, const double& x_UB, const poly_degree& degree, const double& a, const double& b, const double& c, const double& d, const double& e) : x_LB(x_LB), x_UB(x_UB), degree(degree), a(a), b(b), c(c), d(d), e(e) {} From a8dcfb495b1329e7a6ecfc81f9cfa7d8b43d59db Mon Sep 17 00:00:00 2001 From: Manoj Kumar Cebol Sundarrajan Date: Fri, 26 May 2023 11:41:56 -0600 Subject: [PATCH 23/52] Removed PROJECT flag in cmake as Upgraded ICM doesn't need it anymore --- CMakeLists.txt | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4c2618c..2de721a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,16 +4,6 @@ project(ICM) set(CMAKE_POSITION_INDEPENDENT_CODE ON) -if (NOT DEFINED PROJECT) - message(WARNING "PROJECT cmake variable not set defaulting to emosiac project") -endif() - -SET(PROJECT "eMosaic" CACHE STRING "Project to compile for") - -if (NOT (${PROJECT} STREQUAL "eMosaic" OR ${PROJECT} STREQUAL "EVs_at_Risk" OR ${PROJECT} STREQUAL "DirectXFC")) - message(FATAL_ERROR "PROJECT cmake variable must be equal to eMosaic or EVs_at_Risk or DirectXFC") -endif() - if (NOT DEFINED INSTALL_DIR) message(STATUS "setting local install dir") set(INSTALL_DIR ${PROJECT_SOURCE_DIR}/libs) @@ -24,4 +14,4 @@ message(STATUS "Install dir is ${INSTALL_DIR}") find_package(pybind11 CONFIG) add_subdirectory(source) -add_subdirectory(unittests) +add_subdirectory(unittests) \ No newline at end of file From e6d88694a24a1b8459143c2659e377240dd1f81e Mon Sep 17 00:00:00 2001 From: Manoj Kumar Cebol Sundarrajan Date: Mon, 29 May 2023 19:39:43 -0600 Subject: [PATCH 24/52] complete DirectXFC charging models Unit test and some improvements related to reading input files --- source/charging_models/EV_characteristics.cpp | 7 +- source/load_inputs/load_EVSE_inventory.cpp | 30 ++- source/load_inputs/load_EVSE_inventory.h | 4 +- source/load_inputs/load_EV_inventory.cpp | 12 +- unittests/CMakeLists.txt | 2 +- unittests/test_charging_models/.gitignore | 1 - .../inputs/EVSE_inputs.csv | 4 - .../test_charging_models/inputs/EV_inputs.csv | 4 - unittests/test_charging_models/validate.py | 50 ----- .../test_charging_models_DirectXFC/.gitignore | 4 + .../CMakeLists.txt | 0 .../inputs/EVSE_inputs.csv | 10 + .../inputs/EV_inputs.csv | 15 ++ .../main.cpp | 13 +- .../L1_1440_bev150_150kW.csv | 183 ++++++++++++++++++ .../L1_1440_bev150_ld1_50kW.csv | 183 ++++++++++++++++++ .../L1_1440_bev200_ld4_150kW.csv | 183 ++++++++++++++++++ .../L1_1440_bev250_350kW.csv | 183 ++++++++++++++++++ .../L1_1440_bev250_400kW.csv | 183 ++++++++++++++++++ .../L1_1440_bev250_ld1_75kW.csv | 183 ++++++++++++++++++ .../L1_1440_bev250_ld2_300kW.csv | 183 ++++++++++++++++++ .../L1_1440_bev275_ld1_150kW.csv | 183 ++++++++++++++++++ .../L1_1440_bev300_300kW.csv | 183 ++++++++++++++++++ .../L1_1440_bev300_400kW.csv | 183 ++++++++++++++++++ .../L1_1440_bev300_575kW.csv | 183 ++++++++++++++++++ .../original_dxfc_models/L1_1440_phev20.csv | 183 ++++++++++++++++++ .../original_dxfc_models/L1_1440_phev50.csv | 183 ++++++++++++++++++ .../original_dxfc_models/L1_1440_phev_SUV.csv | 183 ++++++++++++++++++ .../L2_11520_bev150_150kW.csv | 183 ++++++++++++++++++ .../L2_11520_bev150_ld1_50kW.csv} | 0 .../L2_11520_bev200_ld4_150kW.csv | 183 ++++++++++++++++++ .../L2_11520_bev250_350kW.csv | 183 ++++++++++++++++++ .../L2_11520_bev250_400kW.csv | 183 ++++++++++++++++++ .../L2_11520_bev250_ld1_75kW.csv | 183 ++++++++++++++++++ .../L2_11520_bev250_ld2_300kW.csv} | 0 .../L2_11520_bev275_ld1_150kW.csv | 183 ++++++++++++++++++ .../L2_11520_bev300_300kW.csv | 183 ++++++++++++++++++ .../L2_11520_bev300_400kW.csv | 183 ++++++++++++++++++ .../L2_11520_bev300_575kW.csv} | 0 .../original_dxfc_models/L2_11520_phev20.csv | 183 ++++++++++++++++++ .../original_dxfc_models/L2_11520_phev50.csv | 183 ++++++++++++++++++ .../L2_11520_phev_SUV.csv | 183 ++++++++++++++++++ .../L2_17280_bev150_150kW.csv | 183 ++++++++++++++++++ .../L2_17280_bev150_ld1_50kW.csv | 183 ++++++++++++++++++ .../L2_17280_bev200_ld4_150kW.csv | 183 ++++++++++++++++++ .../L2_17280_bev250_350kW.csv | 183 ++++++++++++++++++ .../L2_17280_bev250_400kW.csv | 183 ++++++++++++++++++ .../L2_17280_bev250_ld1_75kW.csv | 183 ++++++++++++++++++ .../L2_17280_bev250_ld2_300kW.csv | 183 ++++++++++++++++++ .../L2_17280_bev275_ld1_150kW.csv | 183 ++++++++++++++++++ .../L2_17280_bev300_300kW.csv | 183 ++++++++++++++++++ .../L2_17280_bev300_400kW.csv | 183 ++++++++++++++++++ .../L2_17280_bev300_575kW.csv | 183 ++++++++++++++++++ .../original_dxfc_models/L2_17280_phev20.csv | 183 ++++++++++++++++++ .../original_dxfc_models/L2_17280_phev50.csv | 183 ++++++++++++++++++ .../L2_17280_phev_SUV.csv | 183 ++++++++++++++++++ .../L2_3600_bev150_150kW.csv | 183 ++++++++++++++++++ .../L2_3600_bev150_ld1_50kW.csv | 183 ++++++++++++++++++ .../L2_3600_bev200_ld4_150kW.csv | 183 ++++++++++++++++++ .../L2_3600_bev250_350kW.csv | 183 ++++++++++++++++++ .../L2_3600_bev250_400kW.csv | 183 ++++++++++++++++++ .../L2_3600_bev250_ld1_75kW.csv | 183 ++++++++++++++++++ .../L2_3600_bev250_ld2_300kW.csv | 183 ++++++++++++++++++ .../L2_3600_bev275_ld1_150kW.csv | 183 ++++++++++++++++++ .../L2_3600_bev300_300kW.csv | 183 ++++++++++++++++++ .../L2_3600_bev300_400kW.csv | 183 ++++++++++++++++++ .../L2_3600_bev300_575kW.csv | 183 ++++++++++++++++++ .../original_dxfc_models/L2_3600_phev20.csv | 183 ++++++++++++++++++ .../original_dxfc_models/L2_3600_phev50.csv | 183 ++++++++++++++++++ .../original_dxfc_models/L2_3600_phev_SUV.csv | 183 ++++++++++++++++++ .../L2_7200_bev150_150kW.csv | 183 ++++++++++++++++++ .../L2_7200_bev150_ld1_50kW.csv | 183 ++++++++++++++++++ .../L2_7200_bev200_ld4_150kW.csv | 183 ++++++++++++++++++ .../L2_7200_bev250_350kW.csv | 183 ++++++++++++++++++ .../L2_7200_bev250_400kW.csv | 183 ++++++++++++++++++ .../L2_7200_bev250_ld1_75kW.csv | 183 ++++++++++++++++++ .../L2_7200_bev250_ld2_300kW.csv | 183 ++++++++++++++++++ .../L2_7200_bev275_ld1_150kW.csv | 183 ++++++++++++++++++ .../L2_7200_bev300_300kW.csv | 183 ++++++++++++++++++ .../L2_7200_bev300_400kW.csv | 183 ++++++++++++++++++ .../L2_7200_bev300_575kW.csv | 183 ++++++++++++++++++ .../original_dxfc_models/L2_7200_phev20.csv | 183 ++++++++++++++++++ .../original_dxfc_models/L2_7200_phev50.csv | 183 ++++++++++++++++++ .../original_dxfc_models/L2_7200_phev_SUV.csv | 183 ++++++++++++++++++ .../L2_9600_bev150_150kW.csv | 183 ++++++++++++++++++ .../L2_9600_bev150_ld1_50kW.csv | 183 ++++++++++++++++++ .../L2_9600_bev200_ld4_150kW.csv | 183 ++++++++++++++++++ .../L2_9600_bev250_350kW.csv | 183 ++++++++++++++++++ .../L2_9600_bev250_400kW.csv | 183 ++++++++++++++++++ .../L2_9600_bev250_ld1_75kW.csv | 183 ++++++++++++++++++ .../L2_9600_bev250_ld2_300kW.csv | 183 ++++++++++++++++++ .../L2_9600_bev275_ld1_150kW.csv | 183 ++++++++++++++++++ .../L2_9600_bev300_300kW.csv | 183 ++++++++++++++++++ .../L2_9600_bev300_400kW.csv | 183 ++++++++++++++++++ .../L2_9600_bev300_575kW.csv | 183 ++++++++++++++++++ .../original_dxfc_models/L2_9600_phev20.csv | 183 ++++++++++++++++++ .../original_dxfc_models/L2_9600_phev50.csv | 183 ++++++++++++++++++ .../original_dxfc_models/L2_9600_phev_SUV.csv | 183 ++++++++++++++++++ .../dcfc_50_bev150_150kW.csv | 183 ++++++++++++++++++ .../dcfc_50_bev150_ld1_50kW.csv | 0 .../dcfc_50_bev200_ld4_150kW.csv | 183 ++++++++++++++++++ .../dcfc_50_bev250_350kW.csv | 183 ++++++++++++++++++ .../dcfc_50_bev250_400kW.csv | 183 ++++++++++++++++++ .../dcfc_50_bev250_ld1_75kW.csv | 183 ++++++++++++++++++ .../dcfc_50_bev250_ld2_300kW.csv | 0 .../dcfc_50_bev275_ld1_150kW.csv | 183 ++++++++++++++++++ .../dcfc_50_bev300_300kW.csv | 183 ++++++++++++++++++ .../dcfc_50_bev300_400kW.csv | 183 ++++++++++++++++++ .../dcfc_50_bev300_575kW.csv | 0 .../xfc_150_bev150_150kW.csv | 183 ++++++++++++++++++ .../xfc_150_bev150_ld1_50kW.csv} | 0 .../xfc_150_bev200_ld4_150kW.csv | 183 ++++++++++++++++++ .../xfc_150_bev250_350kW.csv | 183 ++++++++++++++++++ .../xfc_150_bev250_400kW.csv | 183 ++++++++++++++++++ .../xfc_150_bev250_ld1_75kW.csv | 183 ++++++++++++++++++ .../xfc_150_bev250_ld2_300kW.csv | 183 ++++++++++++++++++ .../xfc_150_bev275_ld1_150kW.csv | 183 ++++++++++++++++++ .../xfc_150_bev300_300kW.csv | 183 ++++++++++++++++++ .../xfc_150_bev300_400kW.csv | 183 ++++++++++++++++++ .../xfc_150_bev300_575kW.csv | 183 ++++++++++++++++++ .../xfc_350_bev150_150kW.csv | 183 ++++++++++++++++++ .../xfc_350_bev150_ld1_50kW.csv | 183 ++++++++++++++++++ .../xfc_350_bev200_ld4_150kW.csv | 183 ++++++++++++++++++ .../xfc_350_bev250_350kW.csv | 183 ++++++++++++++++++ .../xfc_350_bev250_400kW.csv | 183 ++++++++++++++++++ .../xfc_350_bev250_ld1_75kW.csv | 183 ++++++++++++++++++ .../xfc_350_bev250_ld2_300kW.csv | 0 .../xfc_350_bev275_ld1_150kW.csv | 183 ++++++++++++++++++ .../xfc_350_bev300_300kW.csv | 183 ++++++++++++++++++ .../xfc_350_bev300_400kW.csv | 183 ++++++++++++++++++ .../xfc_350_bev300_575kW.csv | 0 .../outputs/tmp.txt.txt | 0 .../validate.py | 54 ++++++ 133 files changed, 19895 insertions(+), 79 deletions(-) delete mode 100644 unittests/test_charging_models/.gitignore delete mode 100644 unittests/test_charging_models/inputs/EVSE_inputs.csv delete mode 100644 unittests/test_charging_models/inputs/EV_inputs.csv delete mode 100644 unittests/test_charging_models/validate.py create mode 100644 unittests/test_charging_models_DirectXFC/.gitignore rename unittests/{test_charging_models => test_charging_models_DirectXFC}/CMakeLists.txt (100%) create mode 100644 unittests/test_charging_models_DirectXFC/inputs/EVSE_inputs.csv create mode 100644 unittests/test_charging_models_DirectXFC/inputs/EV_inputs.csv rename unittests/{test_charging_models => test_charging_models_DirectXFC}/main.cpp (91%) create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L1_1440_bev150_150kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L1_1440_bev150_ld1_50kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L1_1440_bev200_ld4_150kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L1_1440_bev250_350kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L1_1440_bev250_400kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L1_1440_bev250_ld1_75kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L1_1440_bev250_ld2_300kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L1_1440_bev275_ld1_150kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L1_1440_bev300_300kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L1_1440_bev300_400kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L1_1440_bev300_575kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L1_1440_phev20.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L1_1440_phev50.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L1_1440_phev_SUV.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_11520_bev150_150kW.csv rename unittests/{test_charging_models/original_dxfc_models/L2_7200_bev150_ld1_50kW.csv => test_charging_models_DirectXFC/original_dxfc_models/L2_11520_bev150_ld1_50kW.csv} (100%) create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_11520_bev200_ld4_150kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_11520_bev250_350kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_11520_bev250_400kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_11520_bev250_ld1_75kW.csv rename unittests/{test_charging_models/original_dxfc_models/L2_7200_bev250_ld2_300kW.csv => test_charging_models_DirectXFC/original_dxfc_models/L2_11520_bev250_ld2_300kW.csv} (100%) create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_11520_bev275_ld1_150kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_11520_bev300_300kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_11520_bev300_400kW.csv rename unittests/{test_charging_models/original_dxfc_models/L2_7200_bev300_575kW.csv => test_charging_models_DirectXFC/original_dxfc_models/L2_11520_bev300_575kW.csv} (100%) create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_11520_phev20.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_11520_phev50.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_11520_phev_SUV.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_17280_bev150_150kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_17280_bev150_ld1_50kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_17280_bev200_ld4_150kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_17280_bev250_350kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_17280_bev250_400kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_17280_bev250_ld1_75kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_17280_bev250_ld2_300kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_17280_bev275_ld1_150kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_17280_bev300_300kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_17280_bev300_400kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_17280_bev300_575kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_17280_phev20.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_17280_phev50.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_17280_phev_SUV.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_3600_bev150_150kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_3600_bev150_ld1_50kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_3600_bev200_ld4_150kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_3600_bev250_350kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_3600_bev250_400kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_3600_bev250_ld1_75kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_3600_bev250_ld2_300kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_3600_bev275_ld1_150kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_3600_bev300_300kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_3600_bev300_400kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_3600_bev300_575kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_3600_phev20.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_3600_phev50.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_3600_phev_SUV.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_7200_bev150_150kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_7200_bev150_ld1_50kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_7200_bev200_ld4_150kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_7200_bev250_350kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_7200_bev250_400kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_7200_bev250_ld1_75kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_7200_bev250_ld2_300kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_7200_bev275_ld1_150kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_7200_bev300_300kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_7200_bev300_400kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_7200_bev300_575kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_7200_phev20.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_7200_phev50.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_7200_phev_SUV.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_9600_bev150_150kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_9600_bev150_ld1_50kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_9600_bev200_ld4_150kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_9600_bev250_350kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_9600_bev250_400kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_9600_bev250_ld1_75kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_9600_bev250_ld2_300kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_9600_bev275_ld1_150kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_9600_bev300_300kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_9600_bev300_400kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_9600_bev300_575kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_9600_phev20.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_9600_phev50.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_9600_phev_SUV.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/dcfc_50_bev150_150kW.csv rename unittests/{test_charging_models => test_charging_models_DirectXFC}/original_dxfc_models/dcfc_50_bev150_ld1_50kW.csv (100%) create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/dcfc_50_bev200_ld4_150kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/dcfc_50_bev250_350kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/dcfc_50_bev250_400kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/dcfc_50_bev250_ld1_75kW.csv rename unittests/{test_charging_models => test_charging_models_DirectXFC}/original_dxfc_models/dcfc_50_bev250_ld2_300kW.csv (100%) create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/dcfc_50_bev275_ld1_150kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/dcfc_50_bev300_300kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/dcfc_50_bev300_400kW.csv rename unittests/{test_charging_models => test_charging_models_DirectXFC}/original_dxfc_models/dcfc_50_bev300_575kW.csv (100%) create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_150_bev150_150kW.csv rename unittests/{test_charging_models/original_dxfc_models/xfc_350_bev150_ld1_50kW.csv => test_charging_models_DirectXFC/original_dxfc_models/xfc_150_bev150_ld1_50kW.csv} (100%) create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_150_bev200_ld4_150kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_150_bev250_350kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_150_bev250_400kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_150_bev250_ld1_75kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_150_bev250_ld2_300kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_150_bev275_ld1_150kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_150_bev300_300kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_150_bev300_400kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_150_bev300_575kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_350_bev150_150kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_350_bev150_ld1_50kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_350_bev200_ld4_150kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_350_bev250_350kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_350_bev250_400kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_350_bev250_ld1_75kW.csv rename unittests/{test_charging_models => test_charging_models_DirectXFC}/original_dxfc_models/xfc_350_bev250_ld2_300kW.csv (100%) create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_350_bev275_ld1_150kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_350_bev300_300kW.csv create mode 100644 unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_350_bev300_400kW.csv rename unittests/{test_charging_models => test_charging_models_DirectXFC}/original_dxfc_models/xfc_350_bev300_575kW.csv (100%) create mode 100644 unittests/test_charging_models_DirectXFC/outputs/tmp.txt.txt create mode 100644 unittests/test_charging_models_DirectXFC/validate.py diff --git a/source/charging_models/EV_characteristics.cpp b/source/charging_models/EV_characteristics.cpp index 9d89690..21c078c 100644 --- a/source/charging_models/EV_characteristics.cpp +++ b/source/charging_models/EV_characteristics.cpp @@ -108,11 +108,14 @@ double EV_characteristics::compute_battery_size_Ah_1C() crate smallest_crate = profile_peak_power_W_per_Wh.begin()->first; crate largest_crate = (--profile_peak_power_W_per_Wh.end())->first; - if (this->max_c_rate < smallest_crate || this->max_c_rate > largest_crate) + if ((this->max_c_rate < smallest_crate || this->max_c_rate > largest_crate) && this->max_c_rate != -1) { - ASSERT(false, "invalid crate for model " << this->type << " crate needs to be between " << smallest_crate << " and " << largest_crate); + ASSERT(false, "invalid crate for model " << this->type << " crate needs to be between " << smallest_crate << " and " << largest_crate << " crate is " << this->max_c_rate); } + if (this->max_c_rate == -1) + return -1; + auto it_UB = profile_peak_power_W_per_Wh.upper_bound(this->max_c_rate); auto it_LB = std::prev(it_UB); if (it_UB == profile_peak_power_W_per_Wh.end()) diff --git a/source/load_inputs/load_EVSE_inventory.cpp b/source/load_inputs/load_EVSE_inventory.cpp index be31b08..984e9bc 100644 --- a/source/load_inputs/load_EVSE_inventory.cpp +++ b/source/load_inputs/load_EVSE_inventory.cpp @@ -13,7 +13,7 @@ const EVSE_inventory& load_EVSE_inventory::get_EVSE_inventory() const return this->EVSE_inv; } -EVSE_level load_EVSE_inventory::string_to_EVSE_level(const std::string& str) +const EVSE_level load_EVSE_inventory::string_to_EVSE_level(const std::string& str) const { const std::unordered_map map = { {"L1", L1}, @@ -30,7 +30,7 @@ EVSE_level load_EVSE_inventory::string_to_EVSE_level(const std::string& str) } } -EVSE_phase load_EVSE_inventory::string_to_EVSE_phase(const std::string& str) +const EVSE_phase load_EVSE_inventory::string_to_EVSE_phase(const std::string& str) const { const std::unordered_map map = { {"1", singlephase}, @@ -168,8 +168,16 @@ EVSE_inventory load_EVSE_inventory::load(const std::string& inputs_dir) ASSERT(is_conversion_successful, EVSE_inputs_file << " " << column_names[4] << " " << str << " is not a double in line number " << line_number); - ASSERT(val > 0, EVSE_inputs_file << " " << column_names[4] << " " << str << - " is less than or equal to 0 in line number " << line_number); + if(level == DCFC) + { + ASSERT(val > 0, EVSE_inputs_file << " " << column_names[4] << " " << str << + " is less than or equal to 0 in line number " << line_number); + } + else + { + ASSERT(val > 0 || val == -1, EVSE_inputs_file << " " << column_names[4] << " " << str << + " is less than or equal to 0 in line number " << line_number); + } return val; @@ -188,11 +196,17 @@ EVSE_inventory load_EVSE_inventory::load(const std::string& inputs_dir) catch (...) { is_conversion_successful = false; } - ASSERT(is_conversion_successful, EVSE_inputs_file << " " << column_names[5] << " " << - str << " is not a double in line number " << line_number); - ASSERT(val > 0, EVSE_inputs_file << " " << column_names[5] << " " << str << - " is less than or equal to 0 in line number " << line_number); + if (level == DCFC) + { + ASSERT(is_conversion_successful, EVSE_inputs_file << " " << column_names[5] << " " << + str << " is not a double in line number " << line_number); + } + else + { + ASSERT(val > 0 || val == -1, EVSE_inputs_file << " " << column_names[5] << " " << str << + " is less than or equal to 0 in line number " << line_number); + } return val; diff --git a/source/load_inputs/load_EVSE_inventory.h b/source/load_inputs/load_EVSE_inventory.h index 52b302b..ff0878c 100644 --- a/source/load_inputs/load_EVSE_inventory.h +++ b/source/load_inputs/load_EVSE_inventory.h @@ -8,8 +8,8 @@ class load_EVSE_inventory private: const EVSE_inventory EVSE_inv; - EVSE_level string_to_EVSE_level(const std::string& str); - EVSE_phase string_to_EVSE_phase(const std::string& str); + const EVSE_level string_to_EVSE_level(const std::string& str) const; + const EVSE_phase string_to_EVSE_phase(const std::string& str) const; EVSE_inventory load(const std::string& inputs_dir); diff --git a/source/load_inputs/load_EV_inventory.cpp b/source/load_inputs/load_EV_inventory.cpp index ed0d9e8..5244375 100644 --- a/source/load_inputs/load_EV_inventory.cpp +++ b/source/load_inputs/load_EV_inventory.cpp @@ -274,8 +274,16 @@ EV_inventory load_EV_inventory::load(const std::string& inputs_dir) ASSERT(is_conversion_successful, EV_inputs_file << " " << column_names[column_num] << " " << str << " is not a double in line number " << line_number); - ASSERT(val >= 0, EV_inputs_file << " " << column_names[column_num] << " " << str - << " is less than or equal to 0 in line number " << line_number); + if (DCFC_capable) + { + ASSERT(val >= 0, EV_inputs_file << " " << column_names[column_num] << " " << str + << " is less than or equal to 0 in line number " << line_number); + } + else + { + ASSERT(val == -1 || val >= 0, EV_inputs_file << " " << column_names[column_num] << " " << str + << " is not valid when DCFC_capable is True in line number " << line_number); + } return val; }(); diff --git a/unittests/CMakeLists.txt b/unittests/CMakeLists.txt index 5e83dcc..0bab090 100644 --- a/unittests/CMakeLists.txt +++ b/unittests/CMakeLists.txt @@ -1,3 +1,3 @@ enable_testing() -add_subdirectory(test_charging_models) \ No newline at end of file +add_subdirectory(test_charging_models_DirectXFC) \ No newline at end of file diff --git a/unittests/test_charging_models/.gitignore b/unittests/test_charging_models/.gitignore deleted file mode 100644 index 9bc969e..0000000 --- a/unittests/test_charging_models/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/*.csv \ No newline at end of file diff --git a/unittests/test_charging_models/inputs/EVSE_inputs.csv b/unittests/test_charging_models/inputs/EVSE_inputs.csv deleted file mode 100644 index 78125e7..0000000 --- a/unittests/test_charging_models/inputs/EVSE_inputs.csv +++ /dev/null @@ -1,4 +0,0 @@ -EVSE_type,EVSE_level,EVSE_phase_connection,AC/DC_power_limit_kW,AC/DC_voltage_limits_V,AC/DC_current_limit_A,standby_real_power_kW,standby_reactive_power_kVAR -L2_7200,L2,1,6.624,240,60,0,0 -dcfc_50,DCFC,3,50,500,125,0.17,-0.445 -xfc_350,DCFC,3,350,700,500,0.17,-0.445 diff --git a/unittests/test_charging_models/inputs/EV_inputs.csv b/unittests/test_charging_models/inputs/EV_inputs.csv deleted file mode 100644 index d9a88b9..0000000 --- a/unittests/test_charging_models/inputs/EV_inputs.csv +++ /dev/null @@ -1,4 +0,0 @@ -EV_type,battery_chemistry,usable_battery_size_kWh,range_miles,efficiency_Wh/Mile,AC_charge_rate_kW,DCFC_capable,max_c_rate,pack_voltage_at_peak_power_V -bev150_ld1_50kW,NMC,45,150,300,6.072,TRUE,0.85,460 -bev250_ld2_300kW,NMC,87.5,250,350,10.58,TRUE,2.64,900 -bev300_575kW,LTO,142.5,300,475,10.58,TRUE,3.41,900 diff --git a/unittests/test_charging_models/validate.py b/unittests/test_charging_models/validate.py deleted file mode 100644 index 908a838..0000000 --- a/unittests/test_charging_models/validate.py +++ /dev/null @@ -1,50 +0,0 @@ -# -*- coding: utf-8 -*- -""" -Created on Sat May 20 22:27:35 2023 - -@author: CEBOM -""" - -import glob -import pandas as pd -import numpy as np -#import matplotlib.pyplot as plt - -files = glob.glob("*.csv") - -for file in files: - original_file = "original_dxfc_models/" + file - - original_df = pd.read_csv(original_file) - new_df = pd.read_csv(file) - - tolerance = 1 - bool_array = np.isclose(original_df, new_df, rtol=tolerance, atol=tolerance) - count_false = np.count_nonzero(bool_array == False) - count_true = np.count_nonzero(bool_array == True) - - error_rate = (count_false/(count_true+count_false))*100 - - #equal = np.allclose(original_df, new_df, atol=tolerance) - - # Check if the DataFrames are equal - if error_rate < 0.5: - print("{} The DataFrames are equal within the tolerance.".format(file.split(".")[0])) - else: - print("{} The DataFrames are not equal within the tolerance.".format(file.split(".")[0])) - exit(1) - -exit(0) - - -# fig = plt.figure(figsize=(8, 6)) -# plt.plot(original_df["simulation_time_hrs"], original_df[" soc_t1"], label = "original") -# plt.plot(new_df["simulation_time_hrs"], new_df[" soc_t1"], label = "new") - -# plt.plot(original_df["simulation_time_hrs"], original_df[" P2_kW"], label = "original") -# plt.plot(new_df["simulation_time_hrs"], new_df[" P2_kW"], label = "new") - -# plt.legend() -# plt.show() - -#fig.savefig("test") \ No newline at end of file diff --git a/unittests/test_charging_models_DirectXFC/.gitignore b/unittests/test_charging_models_DirectXFC/.gitignore new file mode 100644 index 0000000..8a7e573 --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/.gitignore @@ -0,0 +1,4 @@ +/*.csv +*.png +*.jpg +outputs/*.csv \ No newline at end of file diff --git a/unittests/test_charging_models/CMakeLists.txt b/unittests/test_charging_models_DirectXFC/CMakeLists.txt similarity index 100% rename from unittests/test_charging_models/CMakeLists.txt rename to unittests/test_charging_models_DirectXFC/CMakeLists.txt diff --git a/unittests/test_charging_models_DirectXFC/inputs/EVSE_inputs.csv b/unittests/test_charging_models_DirectXFC/inputs/EVSE_inputs.csv new file mode 100644 index 0000000..042eb0a --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/inputs/EVSE_inputs.csv @@ -0,0 +1,10 @@ +EVSE_type,EVSE_level,EVSE_phase_connection,AC/DC_power_limit_kW,AC/DC_voltage_limits_V,AC/DC_current_limit_A,standby_real_power_kW,standby_reactive_power_kVAR +L1_1440,L1,1,1.289338,-1,-1,0,0 +L2_3600,L2,1,3.30192,-1,-1,0,0 +L2_7200,L2,1,6.624,-1,-1,0,0 +L2_9600,L2,1,8.832,-1,-1,0,0 +L2_11520,L2,1,10.5984,-1,-1,0,0 +L2_17280,L2,1,15.8976,-1,-1,0,0 +dcfc_50,DCFC,3,50,500,125,0.1,-0.59 +xfc_150,DCFC,3,150,882.3529412,170,0.17,-0.445 +xfc_350,DCFC,3,350,700,500,0.17,-0.445 diff --git a/unittests/test_charging_models_DirectXFC/inputs/EV_inputs.csv b/unittests/test_charging_models_DirectXFC/inputs/EV_inputs.csv new file mode 100644 index 0000000..46ae966 --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/inputs/EV_inputs.csv @@ -0,0 +1,15 @@ +EV_type,battery_chemistry,usable_battery_size_kWh,range_miles,efficiency_Wh/Mile,AC_charge_rate_kW,DCFC_capable,max_c_rate,pack_voltage_at_peak_power_V +bev250_400kW,LTO,87.5,250,350,10.58,TRUE,3.85,900 +bev300_575kW,LTO,142.5,300,475,10.58,TRUE,3.41,900 +bev300_400kW,LTO,97.5,300,325,10.58,TRUE,3.46,900 +bev250_350kW,NMC,118.75,250,475,10.58,TRUE,2.29,900 +bev300_300kW,NMC,97.5,300,325,10.58,TRUE,2.38,900 +bev150_150kW,NMC,45,150,300,8.832,TRUE,2.56,900 +bev250_ld2_300kW,NMC,87.5,250,350,10.58,TRUE,2.64,900 +bev200_ld4_150kW,NMC,95,200,475,8.832,TRUE,1.22,900 +bev275_ld1_150kW,NMC,82.5,275,300,8.832,TRUE,1.41,900 +bev250_ld1_75kW,NMC,75,250,300,6.072,TRUE,0.76,460 +bev150_ld1_50kW,NMC,45,150,300,6.072,TRUE,0.85,460 +phev_SUV,NMC,23.75,50,475,8.832,FALSE,-1,-1 +phev50,NMC,15.5,50,310,3.016365,FALSE,-1,-1 +phev20,NMC,5,20,250,3.016365,FALSE,-1,-1 diff --git a/unittests/test_charging_models/main.cpp b/unittests/test_charging_models_DirectXFC/main.cpp similarity index 91% rename from unittests/test_charging_models/main.cpp rename to unittests/test_charging_models_DirectXFC/main.cpp index 0827c13..dc759e8 100644 --- a/unittests/test_charging_models/main.cpp +++ b/unittests/test_charging_models_DirectXFC/main.cpp @@ -19,6 +19,9 @@ int main() factory_EV_charge_model charge_model_factory{ inventory, custom_EV_ramping, custom_EV_EVSE_ramping, model_stochastic_battery_degregation }; + std::vector EV_EVSE_pair = inventory.get_all_compatible_pev_SE_combinations(); + + /* std::vector > EV_EVSE_pair; EV_EVSE_pair.push_back(std::make_pair("L2_7200", "bev150_ld1_50kW")); @@ -32,6 +35,7 @@ int main() EV_EVSE_pair.push_back(std::make_pair("L2_7200", "bev300_575kW")); EV_EVSE_pair.push_back(std::make_pair("dcfc_50", "bev300_575kW")); EV_EVSE_pair.push_back(std::make_pair("xfc_350", "bev300_575kW")); + */ // Build charge event @@ -63,17 +67,17 @@ int main() std::string filename, header, data, seperator, new_line; std::ofstream file_handle; - for (std::pair elem : EV_EVSE_pair) + for (pev_SE_pair elem : EV_EVSE_pair) { - EVSE_type supply_equipment_type = elem.first; - EV_type vehicle_type = elem.second; + EVSE_type supply_equipment_type = elem.se_type; + EV_type vehicle_type = elem.ev_type; charge_event_data event(charge_event_id, SE_group_id, SE_id, vehicle_id, vehicle_type, arrival_unix_time, departure_unix_time, arrival_SOC, departure_SOC, scc, cs); vehicle_charge_model* model = charge_model_factory.alloc_get_EV_charge_model(event, supply_equipment_type, 1000000); model->set_target_P2_kW(10000000); - filename = supply_equipment_type + "_" + vehicle_type + ".csv"; + filename = "outputs/" + supply_equipment_type + "_" + vehicle_type + ".csv"; file_handle = std::ofstream(filename); @@ -92,7 +96,6 @@ int main() double previous_unix_time = simulation_start_unix_time - simulation_timestep_sec; double current_unix_time = simulation_start_unix_time; - while (current_unix_time <= simulation_end_unix_time) { model->get_next(previous_unix_time, current_unix_time, 1.0, charge_has_completed, bat_state); diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L1_1440_bev150_150kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L1_1440_bev150_150kW.csv new file mode 100644 index 0000000..b3e1251 --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L1_1440_bev150_150kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.249191, 6.728151, 6.795930 +1.016667, 0.572960, 8.741761, 8.832000 +1.033333, 0.896729, 8.741761, 8.832000 +1.050000, 1.220498, 8.741761, 8.832000 +1.066667, 1.544266, 8.741761, 8.832000 +1.083333, 1.868035, 8.741761, 8.832000 +1.100000, 2.191804, 8.741761, 8.832000 +1.116667, 2.515573, 8.741761, 8.832000 +1.133333, 2.839342, 8.741761, 8.832000 +1.150000, 3.163111, 8.741761, 8.832000 +1.166667, 3.486880, 8.741761, 8.832000 +1.183333, 3.810649, 8.741761, 8.832000 +1.200000, 4.134418, 8.741761, 8.832000 +1.216667, 4.458187, 8.741761, 8.832000 +1.233333, 4.781956, 8.741761, 8.832000 +1.250000, 5.105724, 8.741761, 8.832000 +1.266667, 5.429493, 8.741761, 8.832000 +1.283333, 5.753262, 8.741761, 8.832000 +1.300000, 6.077031, 8.741761, 8.832000 +1.316667, 6.400800, 8.741761, 8.832000 +1.333333, 6.724569, 8.741761, 8.832000 +1.350000, 7.048338, 8.741761, 8.832000 +1.366667, 7.372107, 8.741761, 8.832000 +1.383333, 7.695876, 8.741761, 8.832000 +1.400000, 8.019645, 8.741761, 8.832000 +1.416667, 8.343414, 8.741761, 8.832000 +1.433333, 8.667182, 8.741761, 8.832000 +1.450000, 8.990951, 8.741761, 8.832000 +1.466667, 9.314720, 8.741761, 8.832000 +1.483333, 9.638489, 8.741761, 8.832000 +1.500000, 9.962258, 8.741761, 8.832000 +1.516667, 10.286027, 8.741761, 8.832000 +1.533333, 10.609796, 8.741761, 8.832000 +1.550000, 10.933565, 8.741761, 8.832000 +1.566667, 11.257334, 8.741761, 8.832000 +1.583333, 11.581103, 8.741761, 8.832000 +1.600000, 11.904872, 8.741761, 8.832000 +1.616667, 12.228641, 8.741761, 8.832000 +1.633333, 12.552409, 8.741761, 8.832000 +1.650000, 12.876178, 8.741761, 8.832000 +1.666667, 13.199947, 8.741761, 8.832000 +1.683333, 13.523716, 8.741761, 8.832000 +1.700000, 13.847485, 8.741761, 8.832000 +1.716667, 14.171254, 8.741761, 8.832000 +1.733333, 14.495023, 8.741761, 8.832000 +1.750000, 14.818792, 8.741761, 8.832000 +1.766667, 15.142561, 8.741761, 8.832000 +1.783333, 15.466330, 8.741761, 8.832000 +1.800000, 15.790099, 8.741761, 8.832000 +1.816667, 16.113867, 8.741761, 8.832000 +1.833333, 16.437636, 8.741761, 8.832000 +1.850000, 16.761405, 8.741761, 8.832000 +1.866667, 17.085174, 8.741761, 8.832000 +1.883333, 17.408943, 8.741761, 8.832000 +1.900000, 17.732712, 8.741761, 8.832000 +1.916667, 18.056481, 8.741761, 8.832000 +1.933333, 18.380250, 8.741761, 8.832000 +1.950000, 18.704019, 8.741761, 8.832000 +1.966667, 19.027788, 8.741761, 8.832000 +1.983333, 19.351557, 8.741761, 8.832000 +2.000000, 19.675326, 8.741761, 8.832000 +2.016667, 19.999094, 8.741761, 8.832000 +2.033333, 20.322863, 8.741761, 8.832000 +2.050000, 20.646632, 8.741761, 8.832000 +2.066667, 20.970401, 8.741761, 8.832000 +2.083333, 21.294170, 8.741761, 8.832000 +2.100000, 21.617939, 8.741761, 8.832000 +2.116667, 21.941708, 8.741761, 8.832000 +2.133333, 22.265477, 8.741761, 8.832000 +2.150000, 22.589246, 8.741761, 8.832000 +2.166667, 22.913015, 8.741761, 8.832000 +2.183333, 23.236784, 8.741761, 8.832000 +2.200000, 23.560552, 8.741761, 8.832000 +2.216667, 23.884321, 8.741761, 8.832000 +2.233333, 24.208090, 8.741761, 8.832000 +2.250000, 24.531859, 8.741761, 8.832000 +2.266667, 24.855628, 8.741761, 8.832000 +2.283333, 25.179397, 8.741761, 8.832000 +2.300000, 25.503166, 8.741761, 8.832000 +2.316667, 25.826935, 8.741761, 8.832000 +2.333333, 26.150704, 8.741761, 8.832000 +2.350000, 26.474473, 8.741761, 8.832000 +2.366667, 26.798242, 8.741761, 8.832000 +2.383333, 27.122011, 8.741761, 8.832000 +2.400000, 27.445779, 8.741761, 8.832000 +2.416667, 27.769548, 8.741761, 8.832000 +2.433333, 28.093317, 8.741761, 8.832000 +2.450000, 28.417086, 8.741761, 8.832000 +2.466667, 28.740855, 8.741761, 8.832000 +2.483333, 29.064624, 8.741761, 8.832000 +2.500000, 29.388393, 8.741761, 8.832000 +2.516667, 29.712162, 8.741761, 8.832000 +2.533333, 30.035931, 8.741761, 8.832000 +2.550000, 30.359700, 8.741761, 8.832000 +2.566667, 30.683469, 8.741761, 8.832000 +2.583333, 31.007237, 8.741761, 8.832000 +2.600000, 31.331006, 8.741761, 8.832000 +2.616667, 31.654775, 8.741761, 8.832000 +2.633333, 31.978544, 8.741761, 8.832000 +2.650000, 32.302313, 8.741761, 8.832000 +2.666667, 32.626082, 8.741761, 8.832000 +2.683333, 32.949851, 8.741761, 8.832000 +2.700000, 33.273620, 8.741761, 8.832000 +2.716667, 33.597389, 8.741761, 8.832000 +2.733333, 33.921158, 8.741761, 8.832000 +2.750000, 34.244927, 8.741761, 8.832000 +2.766667, 34.568696, 8.741761, 8.832000 +2.783333, 34.892464, 8.741761, 8.832000 +2.800000, 35.216233, 8.741761, 8.832000 +2.816667, 35.540002, 8.741761, 8.832000 +2.833333, 35.863771, 8.741761, 8.832000 +2.850000, 36.187540, 8.741761, 8.832000 +2.866667, 36.511309, 8.741761, 8.832000 +2.883333, 36.835078, 8.741761, 8.832000 +2.900000, 37.158847, 8.741761, 8.832000 +2.916667, 37.482616, 8.741761, 8.832000 +2.933333, 37.806385, 8.741761, 8.832000 +2.950000, 38.130154, 8.741761, 8.832000 +2.966667, 38.453922, 8.741761, 8.832000 +2.983333, 38.777691, 8.741761, 8.832000 +3.000000, 39.101460, 8.741761, 8.832000 +3.016667, 39.425229, 8.741761, 8.832000 +3.033333, 39.748998, 8.741761, 8.832000 +3.050000, 40.072767, 8.741761, 8.832000 +3.066667, 40.396536, 8.741761, 8.832000 +3.083333, 40.720305, 8.741761, 8.832000 +3.100000, 41.044074, 8.741761, 8.832000 +3.116667, 41.367843, 8.741761, 8.832000 +3.133333, 41.691612, 8.741761, 8.832000 +3.150000, 42.015381, 8.741761, 8.832000 +3.166667, 42.339149, 8.741761, 8.832000 +3.183333, 42.662918, 8.741761, 8.832000 +3.200000, 42.986687, 8.741761, 8.832000 +3.216667, 43.310456, 8.741761, 8.832000 +3.233333, 43.634225, 8.741761, 8.832000 +3.250000, 43.957994, 8.741761, 8.832000 +3.266667, 44.281763, 8.741761, 8.832000 +3.283333, 44.605532, 8.741761, 8.832000 +3.300000, 44.929301, 8.741761, 8.832000 +3.316667, 45.253070, 8.741761, 8.832000 +3.333333, 45.576839, 8.741761, 8.832000 +3.350000, 45.900607, 8.741761, 8.832000 +3.366667, 46.224376, 8.741761, 8.832000 +3.383333, 46.548145, 8.741761, 8.832000 +3.400000, 46.871914, 8.741761, 8.832000 +3.416667, 47.195683, 8.741761, 8.832000 +3.433333, 47.519452, 8.741761, 8.832000 +3.450000, 47.843221, 8.741761, 8.832000 +3.466667, 48.166990, 8.741761, 8.832000 +3.483333, 48.490759, 8.741761, 8.832000 +3.500000, 48.814528, 8.741761, 8.832000 +3.516667, 49.138297, 8.741761, 8.832000 +3.533333, 49.462065, 8.741761, 8.832000 +3.550000, 49.785834, 8.741761, 8.832000 +3.566667, 50.109603, 8.741761, 8.832000 +3.583333, 50.433372, 8.741761, 8.832000 +3.600000, 50.757141, 8.741761, 8.832000 +3.616667, 51.080910, 8.741761, 8.832000 +3.633333, 51.404679, 8.741761, 8.832000 +3.650000, 51.728448, 8.741761, 8.832000 +3.666667, 52.052217, 8.741761, 8.832000 +3.683333, 52.375986, 8.741761, 8.832000 +3.700000, 52.699755, 8.741761, 8.832000 +3.716667, 53.023524, 8.741761, 8.832000 +3.733333, 53.347292, 8.741761, 8.832000 +3.750000, 53.671061, 8.741761, 8.832000 +3.766667, 53.994830, 8.741761, 8.832000 +3.783333, 54.318599, 8.741761, 8.832000 +3.800000, 54.642368, 8.741761, 8.832000 +3.816667, 54.966137, 8.741761, 8.832000 +3.833333, 55.289906, 8.741761, 8.832000 +3.850000, 55.613675, 8.741761, 8.832000 +3.866667, 55.937444, 8.741761, 8.832000 +3.883333, 56.261213, 8.741761, 8.832000 +3.900000, 56.584982, 8.741761, 8.832000 +3.916667, 56.908750, 8.741761, 8.832000 +3.933333, 57.232519, 8.741761, 8.832000 +3.950000, 57.556288, 8.741761, 8.832000 +3.966667, 57.880057, 8.741761, 8.832000 +3.983333, 58.203826, 8.741761, 8.832000 +4.000000, 58.527595, 8.741761, 8.832000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L1_1440_bev150_ld1_50kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L1_1440_bev150_ld1_50kW.csv new file mode 100644 index 0000000..80645c5 --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L1_1440_bev150_ld1_50kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.181601, 4.903224, 4.951514 +1.016667, 0.404266, 6.011968, 6.072000 +1.033333, 0.626932, 6.011968, 6.072000 +1.050000, 0.849597, 6.011968, 6.072000 +1.066667, 1.072263, 6.011968, 6.072000 +1.083333, 1.294928, 6.011968, 6.072000 +1.100000, 1.517594, 6.011968, 6.072000 +1.116667, 1.740259, 6.011968, 6.072000 +1.133333, 1.962925, 6.011968, 6.072000 +1.150000, 2.185590, 6.011968, 6.072000 +1.166667, 2.408256, 6.011968, 6.072000 +1.183333, 2.630921, 6.011968, 6.072000 +1.200000, 2.853587, 6.011968, 6.072000 +1.216667, 3.076252, 6.011968, 6.072000 +1.233333, 3.298917, 6.011968, 6.072000 +1.250000, 3.521583, 6.011968, 6.072000 +1.266667, 3.744248, 6.011968, 6.072000 +1.283333, 3.966914, 6.011968, 6.072000 +1.300000, 4.189579, 6.011968, 6.072000 +1.316667, 4.412245, 6.011968, 6.072000 +1.333333, 4.634910, 6.011968, 6.072000 +1.350000, 4.857576, 6.011968, 6.072000 +1.366667, 5.080241, 6.011968, 6.072000 +1.383333, 5.302907, 6.011968, 6.072000 +1.400000, 5.525572, 6.011968, 6.072000 +1.416667, 5.748238, 6.011968, 6.072000 +1.433333, 5.970903, 6.011968, 6.072000 +1.450000, 6.193569, 6.011968, 6.072000 +1.466667, 6.416234, 6.011968, 6.072000 +1.483333, 6.638899, 6.011968, 6.072000 +1.500000, 6.861565, 6.011968, 6.072000 +1.516667, 7.084230, 6.011968, 6.072000 +1.533333, 7.306896, 6.011968, 6.072000 +1.550000, 7.529561, 6.011968, 6.072000 +1.566667, 7.752227, 6.011968, 6.072000 +1.583333, 7.974892, 6.011968, 6.072000 +1.600000, 8.197558, 6.011968, 6.072000 +1.616667, 8.420223, 6.011968, 6.072000 +1.633333, 8.642889, 6.011968, 6.072000 +1.650000, 8.865554, 6.011968, 6.072000 +1.666667, 9.088220, 6.011968, 6.072000 +1.683333, 9.310885, 6.011968, 6.072000 +1.700000, 9.533551, 6.011968, 6.072000 +1.716667, 9.756216, 6.011968, 6.072000 +1.733333, 9.978881, 6.011968, 6.072000 +1.750000, 10.201547, 6.011968, 6.072000 +1.766667, 10.424212, 6.011968, 6.072000 +1.783333, 10.646878, 6.011968, 6.072000 +1.800000, 10.869543, 6.011968, 6.072000 +1.816667, 11.092209, 6.011968, 6.072000 +1.833333, 11.314874, 6.011968, 6.072000 +1.850000, 11.537540, 6.011968, 6.072000 +1.866667, 11.760205, 6.011968, 6.072000 +1.883333, 11.982871, 6.011968, 6.072000 +1.900000, 12.205536, 6.011968, 6.072000 +1.916667, 12.428202, 6.011968, 6.072000 +1.933333, 12.650867, 6.011968, 6.072000 +1.950000, 12.873533, 6.011968, 6.072000 +1.966667, 13.096198, 6.011968, 6.072000 +1.983333, 13.318864, 6.011968, 6.072000 +2.000000, 13.541529, 6.011968, 6.072000 +2.016667, 13.764194, 6.011968, 6.072000 +2.033333, 13.986860, 6.011968, 6.072000 +2.050000, 14.209525, 6.011968, 6.072000 +2.066667, 14.432191, 6.011968, 6.072000 +2.083333, 14.654856, 6.011968, 6.072000 +2.100000, 14.877522, 6.011968, 6.072000 +2.116667, 15.100187, 6.011968, 6.072000 +2.133333, 15.322853, 6.011968, 6.072000 +2.150000, 15.545518, 6.011968, 6.072000 +2.166667, 15.768184, 6.011968, 6.072000 +2.183333, 15.990849, 6.011968, 6.072000 +2.200000, 16.213515, 6.011968, 6.072000 +2.216667, 16.436180, 6.011968, 6.072000 +2.233333, 16.658846, 6.011968, 6.072000 +2.250000, 16.881511, 6.011968, 6.072000 +2.266667, 17.104176, 6.011968, 6.072000 +2.283333, 17.326842, 6.011968, 6.072000 +2.300000, 17.549507, 6.011968, 6.072000 +2.316667, 17.772173, 6.011968, 6.072000 +2.333333, 17.994838, 6.011968, 6.072000 +2.350000, 18.217504, 6.011968, 6.072000 +2.366667, 18.440169, 6.011968, 6.072000 +2.383333, 18.662835, 6.011968, 6.072000 +2.400000, 18.885500, 6.011968, 6.072000 +2.416667, 19.108166, 6.011968, 6.072000 +2.433333, 19.330831, 6.011968, 6.072000 +2.450000, 19.553497, 6.011968, 6.072000 +2.466667, 19.776162, 6.011968, 6.072000 +2.483333, 19.998828, 6.011968, 6.072000 +2.500000, 20.221493, 6.011968, 6.072000 +2.516667, 20.444159, 6.011968, 6.072000 +2.533333, 20.666824, 6.011968, 6.072000 +2.550000, 20.889489, 6.011968, 6.072000 +2.566667, 21.112155, 6.011968, 6.072000 +2.583333, 21.334820, 6.011968, 6.072000 +2.600000, 21.557486, 6.011968, 6.072000 +2.616667, 21.780151, 6.011968, 6.072000 +2.633333, 22.002817, 6.011968, 6.072000 +2.650000, 22.225482, 6.011968, 6.072000 +2.666667, 22.448148, 6.011968, 6.072000 +2.683333, 22.670813, 6.011968, 6.072000 +2.700000, 22.893479, 6.011968, 6.072000 +2.716667, 23.116144, 6.011968, 6.072000 +2.733333, 23.338810, 6.011968, 6.072000 +2.750000, 23.561475, 6.011968, 6.072000 +2.766667, 23.784141, 6.011968, 6.072000 +2.783333, 24.006806, 6.011968, 6.072000 +2.800000, 24.229471, 6.011968, 6.072000 +2.816667, 24.452137, 6.011968, 6.072000 +2.833333, 24.674802, 6.011968, 6.072000 +2.850000, 24.897468, 6.011968, 6.072000 +2.866667, 25.120133, 6.011968, 6.072000 +2.883333, 25.342799, 6.011968, 6.072000 +2.900000, 25.565464, 6.011968, 6.072000 +2.916667, 25.788130, 6.011968, 6.072000 +2.933333, 26.010795, 6.011968, 6.072000 +2.950000, 26.233461, 6.011968, 6.072000 +2.966667, 26.456126, 6.011968, 6.072000 +2.983333, 26.678792, 6.011968, 6.072000 +3.000000, 26.901457, 6.011968, 6.072000 +3.016667, 27.124123, 6.011968, 6.072000 +3.033333, 27.346788, 6.011968, 6.072000 +3.050000, 27.569454, 6.011968, 6.072000 +3.066667, 27.792119, 6.011968, 6.072000 +3.083333, 28.014784, 6.011968, 6.072000 +3.100000, 28.237450, 6.011968, 6.072000 +3.116667, 28.460115, 6.011968, 6.072000 +3.133333, 28.682781, 6.011968, 6.072000 +3.150000, 28.905446, 6.011968, 6.072000 +3.166667, 29.128112, 6.011968, 6.072000 +3.183333, 29.350777, 6.011968, 6.072000 +3.200000, 29.573443, 6.011968, 6.072000 +3.216667, 29.796108, 6.011968, 6.072000 +3.233333, 30.018774, 6.011968, 6.072000 +3.250000, 30.241439, 6.011968, 6.072000 +3.266667, 30.464105, 6.011968, 6.072000 +3.283333, 30.686770, 6.011968, 6.072000 +3.300000, 30.909436, 6.011968, 6.072000 +3.316667, 31.132101, 6.011968, 6.072000 +3.333333, 31.354766, 6.011968, 6.072000 +3.350000, 31.577432, 6.011968, 6.072000 +3.366667, 31.800097, 6.011968, 6.072000 +3.383333, 32.022763, 6.011968, 6.072000 +3.400000, 32.245428, 6.011968, 6.072000 +3.416667, 32.468094, 6.011968, 6.072000 +3.433333, 32.690759, 6.011968, 6.072000 +3.450000, 32.913425, 6.011968, 6.072000 +3.466667, 33.136090, 6.011968, 6.072000 +3.483333, 33.358756, 6.011968, 6.072000 +3.500000, 33.581421, 6.011968, 6.072000 +3.516667, 33.804087, 6.011968, 6.072000 +3.533333, 34.026752, 6.011968, 6.072000 +3.550000, 34.249418, 6.011968, 6.072000 +3.566667, 34.472083, 6.011968, 6.072000 +3.583333, 34.694749, 6.011968, 6.072000 +3.600000, 34.917414, 6.011968, 6.072000 +3.616667, 35.140079, 6.011968, 6.072000 +3.633333, 35.362745, 6.011968, 6.072000 +3.650000, 35.585410, 6.011968, 6.072000 +3.666667, 35.808076, 6.011968, 6.072000 +3.683333, 36.030741, 6.011968, 6.072000 +3.700000, 36.253407, 6.011968, 6.072000 +3.716667, 36.476072, 6.011968, 6.072000 +3.733333, 36.698738, 6.011968, 6.072000 +3.750000, 36.921403, 6.011968, 6.072000 +3.766667, 37.144069, 6.011968, 6.072000 +3.783333, 37.366734, 6.011968, 6.072000 +3.800000, 37.589400, 6.011968, 6.072000 +3.816667, 37.812065, 6.011968, 6.072000 +3.833333, 38.034731, 6.011968, 6.072000 +3.850000, 38.257396, 6.011968, 6.072000 +3.866667, 38.480061, 6.011968, 6.072000 +3.883333, 38.702727, 6.011968, 6.072000 +3.900000, 38.925392, 6.011968, 6.072000 +3.916667, 39.148058, 6.011968, 6.072000 +3.933333, 39.370723, 6.011968, 6.072000 +3.950000, 39.593389, 6.011968, 6.072000 +3.966667, 39.816054, 6.011968, 6.072000 +3.983333, 40.038720, 6.011968, 6.072000 +4.000000, 40.261385, 6.011968, 6.072000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L1_1440_bev200_ld4_150kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L1_1440_bev200_ld4_150kW.csv new file mode 100644 index 0000000..81f26d3 --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L1_1440_bev200_ld4_150kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.118089, 6.731062, 6.795930 +1.016667, 0.271539, 8.746678, 8.832000 +1.033333, 0.424990, 8.746678, 8.832000 +1.050000, 0.578440, 8.746678, 8.832000 +1.066667, 0.731891, 8.746678, 8.832000 +1.083333, 0.885341, 8.746678, 8.832000 +1.100000, 1.038792, 8.746678, 8.832000 +1.116667, 1.192242, 8.746678, 8.832000 +1.133333, 1.345693, 8.746678, 8.832000 +1.150000, 1.499143, 8.746678, 8.832000 +1.166667, 1.652594, 8.746678, 8.832000 +1.183333, 1.806044, 8.746678, 8.832000 +1.200000, 1.959495, 8.746678, 8.832000 +1.216667, 2.112945, 8.746678, 8.832000 +1.233333, 2.266396, 8.746678, 8.832000 +1.250000, 2.419846, 8.746678, 8.832000 +1.266667, 2.573297, 8.746678, 8.832000 +1.283333, 2.726747, 8.746678, 8.832000 +1.300000, 2.880198, 8.746678, 8.832000 +1.316667, 3.033648, 8.746678, 8.832000 +1.333333, 3.187099, 8.746678, 8.832000 +1.350000, 3.340549, 8.746678, 8.832000 +1.366667, 3.494000, 8.746678, 8.832000 +1.383333, 3.647450, 8.746678, 8.832000 +1.400000, 3.800901, 8.746678, 8.832000 +1.416667, 3.954351, 8.746678, 8.832000 +1.433333, 4.107802, 8.746678, 8.832000 +1.450000, 4.261252, 8.746678, 8.832000 +1.466667, 4.414702, 8.746678, 8.832000 +1.483333, 4.568153, 8.746678, 8.832000 +1.500000, 4.721603, 8.746678, 8.832000 +1.516667, 4.875054, 8.746678, 8.832000 +1.533333, 5.028504, 8.746678, 8.832000 +1.550000, 5.181955, 8.746678, 8.832000 +1.566667, 5.335405, 8.746678, 8.832000 +1.583333, 5.488856, 8.746678, 8.832000 +1.600000, 5.642306, 8.746678, 8.832000 +1.616667, 5.795757, 8.746678, 8.832000 +1.633333, 5.949207, 8.746678, 8.832000 +1.650000, 6.102658, 8.746678, 8.832000 +1.666667, 6.256108, 8.746678, 8.832000 +1.683333, 6.409559, 8.746678, 8.832000 +1.700000, 6.563009, 8.746678, 8.832000 +1.716667, 6.716460, 8.746678, 8.832000 +1.733333, 6.869910, 8.746678, 8.832000 +1.750000, 7.023361, 8.746678, 8.832000 +1.766667, 7.176811, 8.746678, 8.832000 +1.783333, 7.330262, 8.746678, 8.832000 +1.800000, 7.483712, 8.746678, 8.832000 +1.816667, 7.637163, 8.746678, 8.832000 +1.833333, 7.790613, 8.746678, 8.832000 +1.850000, 7.944064, 8.746678, 8.832000 +1.866667, 8.097514, 8.746678, 8.832000 +1.883333, 8.250965, 8.746678, 8.832000 +1.900000, 8.404415, 8.746678, 8.832000 +1.916667, 8.557866, 8.746678, 8.832000 +1.933333, 8.711316, 8.746678, 8.832000 +1.950000, 8.864767, 8.746678, 8.832000 +1.966667, 9.018217, 8.746678, 8.832000 +1.983333, 9.171668, 8.746678, 8.832000 +2.000000, 9.325118, 8.746678, 8.832000 +2.016667, 9.478569, 8.746678, 8.832000 +2.033333, 9.632019, 8.746678, 8.832000 +2.050000, 9.785470, 8.746678, 8.832000 +2.066667, 9.938920, 8.746678, 8.832000 +2.083333, 10.092371, 8.746678, 8.832000 +2.100000, 10.245821, 8.746678, 8.832000 +2.116667, 10.399272, 8.746678, 8.832000 +2.133333, 10.552722, 8.746678, 8.832000 +2.150000, 10.706172, 8.746678, 8.832000 +2.166667, 10.859623, 8.746678, 8.832000 +2.183333, 11.013073, 8.746678, 8.832000 +2.200000, 11.166524, 8.746678, 8.832000 +2.216667, 11.319974, 8.746678, 8.832000 +2.233333, 11.473425, 8.746678, 8.832000 +2.250000, 11.626875, 8.746678, 8.832000 +2.266667, 11.780326, 8.746678, 8.832000 +2.283333, 11.933776, 8.746678, 8.832000 +2.300000, 12.087227, 8.746678, 8.832000 +2.316667, 12.240677, 8.746678, 8.832000 +2.333333, 12.394128, 8.746678, 8.832000 +2.350000, 12.547578, 8.746678, 8.832000 +2.366667, 12.701029, 8.746678, 8.832000 +2.383333, 12.854479, 8.746678, 8.832000 +2.400000, 13.007930, 8.746678, 8.832000 +2.416667, 13.161380, 8.746678, 8.832000 +2.433333, 13.314831, 8.746678, 8.832000 +2.450000, 13.468281, 8.746678, 8.832000 +2.466667, 13.621732, 8.746678, 8.832000 +2.483333, 13.775182, 8.746678, 8.832000 +2.500000, 13.928633, 8.746678, 8.832000 +2.516667, 14.082083, 8.746678, 8.832000 +2.533333, 14.235534, 8.746678, 8.832000 +2.550000, 14.388984, 8.746678, 8.832000 +2.566667, 14.542435, 8.746678, 8.832000 +2.583333, 14.695885, 8.746678, 8.832000 +2.600000, 14.849336, 8.746678, 8.832000 +2.616667, 15.002786, 8.746678, 8.832000 +2.633333, 15.156237, 8.746678, 8.832000 +2.650000, 15.309687, 8.746678, 8.832000 +2.666667, 15.463138, 8.746678, 8.832000 +2.683333, 15.616588, 8.746678, 8.832000 +2.700000, 15.770039, 8.746678, 8.832000 +2.716667, 15.923489, 8.746678, 8.832000 +2.733333, 16.076940, 8.746678, 8.832000 +2.750000, 16.230390, 8.746678, 8.832000 +2.766667, 16.383841, 8.746678, 8.832000 +2.783333, 16.537291, 8.746678, 8.832000 +2.800000, 16.690742, 8.746678, 8.832000 +2.816667, 16.844192, 8.746678, 8.832000 +2.833333, 16.997643, 8.746678, 8.832000 +2.850000, 17.151093, 8.746678, 8.832000 +2.866667, 17.304543, 8.746678, 8.832000 +2.883333, 17.457994, 8.746678, 8.832000 +2.900000, 17.611444, 8.746678, 8.832000 +2.916667, 17.764895, 8.746678, 8.832000 +2.933333, 17.918345, 8.746678, 8.832000 +2.950000, 18.071796, 8.746678, 8.832000 +2.966667, 18.225246, 8.746678, 8.832000 +2.983333, 18.378697, 8.746678, 8.832000 +3.000000, 18.532147, 8.746678, 8.832000 +3.016667, 18.685598, 8.746678, 8.832000 +3.033333, 18.839048, 8.746678, 8.832000 +3.050000, 18.992499, 8.746678, 8.832000 +3.066667, 19.145949, 8.746678, 8.832000 +3.083333, 19.299400, 8.746678, 8.832000 +3.100000, 19.452850, 8.746678, 8.832000 +3.116667, 19.606301, 8.746678, 8.832000 +3.133333, 19.759751, 8.746678, 8.832000 +3.150000, 19.913202, 8.746678, 8.832000 +3.166667, 20.066652, 8.746678, 8.832000 +3.183333, 20.220103, 8.746678, 8.832000 +3.200000, 20.373553, 8.746678, 8.832000 +3.216667, 20.527004, 8.746678, 8.832000 +3.233333, 20.680454, 8.746678, 8.832000 +3.250000, 20.833905, 8.746678, 8.832000 +3.266667, 20.987355, 8.746678, 8.832000 +3.283333, 21.140806, 8.746678, 8.832000 +3.300000, 21.294256, 8.746678, 8.832000 +3.316667, 21.447707, 8.746678, 8.832000 +3.333333, 21.601157, 8.746678, 8.832000 +3.350000, 21.754608, 8.746678, 8.832000 +3.366667, 21.908058, 8.746678, 8.832000 +3.383333, 22.061509, 8.746678, 8.832000 +3.400000, 22.214959, 8.746678, 8.832000 +3.416667, 22.368410, 8.746678, 8.832000 +3.433333, 22.521860, 8.746678, 8.832000 +3.450000, 22.675311, 8.746678, 8.832000 +3.466667, 22.828761, 8.746678, 8.832000 +3.483333, 22.982212, 8.746678, 8.832000 +3.500000, 23.135662, 8.746678, 8.832000 +3.516667, 23.289113, 8.746678, 8.832000 +3.533333, 23.442563, 8.746678, 8.832000 +3.550000, 23.596014, 8.746678, 8.832000 +3.566667, 23.749464, 8.746678, 8.832000 +3.583333, 23.902914, 8.746678, 8.832000 +3.600000, 24.056365, 8.746678, 8.832000 +3.616667, 24.209815, 8.746678, 8.832000 +3.633333, 24.363266, 8.746678, 8.832000 +3.650000, 24.516716, 8.746678, 8.832000 +3.666667, 24.670167, 8.746678, 8.832000 +3.683333, 24.823617, 8.746678, 8.832000 +3.700000, 24.977068, 8.746678, 8.832000 +3.716667, 25.130518, 8.746678, 8.832000 +3.733333, 25.283969, 8.746678, 8.832000 +3.750000, 25.437419, 8.746678, 8.832000 +3.766667, 25.590870, 8.746678, 8.832000 +3.783333, 25.744320, 8.746678, 8.832000 +3.800000, 25.897771, 8.746678, 8.832000 +3.816667, 26.051221, 8.746678, 8.832000 +3.833333, 26.204672, 8.746678, 8.832000 +3.850000, 26.358122, 8.746678, 8.832000 +3.866667, 26.511573, 8.746678, 8.832000 +3.883333, 26.665023, 8.746678, 8.832000 +3.900000, 26.818474, 8.746678, 8.832000 +3.916667, 26.971924, 8.746678, 8.832000 +3.933333, 27.125375, 8.746678, 8.832000 +3.950000, 27.278825, 8.746678, 8.832000 +3.966667, 27.432276, 8.746678, 8.832000 +3.983333, 27.585726, 8.746678, 8.832000 +4.000000, 27.739177, 8.746678, 8.832000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L1_1440_bev250_350kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L1_1440_bev250_350kW.csv new file mode 100644 index 0000000..2b7a842 --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L1_1440_bev250_350kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.108841, 7.758199, 7.832727 +1.016667, 0.255839, 10.478014, 10.580000 +1.033333, 0.402837, 10.478014, 10.580000 +1.050000, 0.549835, 10.478014, 10.580000 +1.066667, 0.696833, 10.478014, 10.580000 +1.083333, 0.843831, 10.478014, 10.580000 +1.100000, 0.990829, 10.478014, 10.580000 +1.116667, 1.137827, 10.478014, 10.580000 +1.133333, 1.284825, 10.478014, 10.580000 +1.150000, 1.431823, 10.478014, 10.580000 +1.166667, 1.578821, 10.478014, 10.580000 +1.183333, 1.725819, 10.478014, 10.580000 +1.200000, 1.872817, 10.478014, 10.580000 +1.216667, 2.019815, 10.478014, 10.580000 +1.233333, 2.166813, 10.478014, 10.580000 +1.250000, 2.313810, 10.478014, 10.580000 +1.266667, 2.460808, 10.478014, 10.580000 +1.283333, 2.607806, 10.478014, 10.580000 +1.300000, 2.754804, 10.478014, 10.580000 +1.316667, 2.901802, 10.478014, 10.580000 +1.333333, 3.048800, 10.478014, 10.580000 +1.350000, 3.195798, 10.478014, 10.580000 +1.366667, 3.342796, 10.478014, 10.580000 +1.383333, 3.489794, 10.478014, 10.580000 +1.400000, 3.636792, 10.478014, 10.580000 +1.416667, 3.783790, 10.478014, 10.580000 +1.433333, 3.930788, 10.478014, 10.580000 +1.450000, 4.077786, 10.478014, 10.580000 +1.466667, 4.224784, 10.478014, 10.580000 +1.483333, 4.371782, 10.478014, 10.580000 +1.500000, 4.518780, 10.478014, 10.580000 +1.516667, 4.665778, 10.478014, 10.580000 +1.533333, 4.812776, 10.478014, 10.580000 +1.550000, 4.959774, 10.478014, 10.580000 +1.566667, 5.106772, 10.478014, 10.580000 +1.583333, 5.253770, 10.478014, 10.580000 +1.600000, 5.400768, 10.478014, 10.580000 +1.616667, 5.547765, 10.478014, 10.580000 +1.633333, 5.694763, 10.478014, 10.580000 +1.650000, 5.841761, 10.478014, 10.580000 +1.666667, 5.988759, 10.478014, 10.580000 +1.683333, 6.135757, 10.478014, 10.580000 +1.700000, 6.282755, 10.478014, 10.580000 +1.716667, 6.429753, 10.478014, 10.580000 +1.733333, 6.576751, 10.478014, 10.580000 +1.750000, 6.723749, 10.478014, 10.580000 +1.766667, 6.870747, 10.478014, 10.580000 +1.783333, 7.017745, 10.478014, 10.580000 +1.800000, 7.164743, 10.478014, 10.580000 +1.816667, 7.311741, 10.478014, 10.580000 +1.833333, 7.458739, 10.478014, 10.580000 +1.850000, 7.605737, 10.478014, 10.580000 +1.866667, 7.752735, 10.478014, 10.580000 +1.883333, 7.899733, 10.478014, 10.580000 +1.900000, 8.046731, 10.478014, 10.580000 +1.916667, 8.193729, 10.478014, 10.580000 +1.933333, 8.340727, 10.478014, 10.580000 +1.950000, 8.487725, 10.478014, 10.580000 +1.966667, 8.634723, 10.478014, 10.580000 +1.983333, 8.781720, 10.478014, 10.580000 +2.000000, 8.928718, 10.478014, 10.580000 +2.016667, 9.075716, 10.478014, 10.580000 +2.033333, 9.222714, 10.478014, 10.580000 +2.050000, 9.369712, 10.478014, 10.580000 +2.066667, 9.516710, 10.478014, 10.580000 +2.083333, 9.663708, 10.478014, 10.580000 +2.100000, 9.810706, 10.478014, 10.580000 +2.116667, 9.957704, 10.478014, 10.580000 +2.133333, 10.104702, 10.478014, 10.580000 +2.150000, 10.251700, 10.478014, 10.580000 +2.166667, 10.398698, 10.478014, 10.580000 +2.183333, 10.545696, 10.478014, 10.580000 +2.200000, 10.692694, 10.478014, 10.580000 +2.216667, 10.839692, 10.478014, 10.580000 +2.233333, 10.986690, 10.478014, 10.580000 +2.250000, 11.133688, 10.478014, 10.580000 +2.266667, 11.280686, 10.478014, 10.580000 +2.283333, 11.427684, 10.478014, 10.580000 +2.300000, 11.574682, 10.478014, 10.580000 +2.316667, 11.721680, 10.478014, 10.580000 +2.333333, 11.868678, 10.478014, 10.580000 +2.350000, 12.015675, 10.478014, 10.580000 +2.366667, 12.162673, 10.478014, 10.580000 +2.383333, 12.309671, 10.478014, 10.580000 +2.400000, 12.456669, 10.478014, 10.580000 +2.416667, 12.603667, 10.478014, 10.580000 +2.433333, 12.750665, 10.478014, 10.580000 +2.450000, 12.897663, 10.478014, 10.580000 +2.466667, 13.044661, 10.478014, 10.580000 +2.483333, 13.191659, 10.478014, 10.580000 +2.500000, 13.338657, 10.478014, 10.580000 +2.516667, 13.485655, 10.478014, 10.580000 +2.533333, 13.632653, 10.478014, 10.580000 +2.550000, 13.779651, 10.478014, 10.580000 +2.566667, 13.926649, 10.478014, 10.580000 +2.583333, 14.073647, 10.478014, 10.580000 +2.600000, 14.220645, 10.478014, 10.580000 +2.616667, 14.367643, 10.478014, 10.580000 +2.633333, 14.514641, 10.478014, 10.580000 +2.650000, 14.661639, 10.478014, 10.580000 +2.666667, 14.808637, 10.478014, 10.580000 +2.683333, 14.955635, 10.478014, 10.580000 +2.700000, 15.102633, 10.478014, 10.580000 +2.716667, 15.249630, 10.478014, 10.580000 +2.733333, 15.396628, 10.478014, 10.580000 +2.750000, 15.543626, 10.478014, 10.580000 +2.766667, 15.690624, 10.478014, 10.580000 +2.783333, 15.837622, 10.478014, 10.580000 +2.800000, 15.984620, 10.478014, 10.580000 +2.816667, 16.131618, 10.478014, 10.580000 +2.833333, 16.278616, 10.478014, 10.580000 +2.850000, 16.425614, 10.478014, 10.580000 +2.866667, 16.572612, 10.478014, 10.580000 +2.883333, 16.719610, 10.478014, 10.580000 +2.900000, 16.866608, 10.478014, 10.580000 +2.916667, 17.013606, 10.478014, 10.580000 +2.933333, 17.160604, 10.478014, 10.580000 +2.950000, 17.307602, 10.478014, 10.580000 +2.966667, 17.454600, 10.478014, 10.580000 +2.983333, 17.601598, 10.478014, 10.580000 +3.000000, 17.748596, 10.478014, 10.580000 +3.016667, 17.895594, 10.478014, 10.580000 +3.033333, 18.042592, 10.478014, 10.580000 +3.050000, 18.189590, 10.478014, 10.580000 +3.066667, 18.336588, 10.478014, 10.580000 +3.083333, 18.483585, 10.478014, 10.580000 +3.100000, 18.630583, 10.478014, 10.580000 +3.116667, 18.777581, 10.478014, 10.580000 +3.133333, 18.924579, 10.478014, 10.580000 +3.150000, 19.071577, 10.478014, 10.580000 +3.166667, 19.218575, 10.478014, 10.580000 +3.183333, 19.365573, 10.478014, 10.580000 +3.200000, 19.512571, 10.478014, 10.580000 +3.216667, 19.659569, 10.478014, 10.580000 +3.233333, 19.806567, 10.478014, 10.580000 +3.250000, 19.953565, 10.478014, 10.580000 +3.266667, 20.100563, 10.478014, 10.580000 +3.283333, 20.247561, 10.478014, 10.580000 +3.300000, 20.394559, 10.478014, 10.580000 +3.316667, 20.541557, 10.478014, 10.580000 +3.333333, 20.688555, 10.478014, 10.580000 +3.350000, 20.835553, 10.478014, 10.580000 +3.366667, 20.982551, 10.478014, 10.580000 +3.383333, 21.129549, 10.478014, 10.580000 +3.400000, 21.276547, 10.478014, 10.580000 +3.416667, 21.423545, 10.478014, 10.580000 +3.433333, 21.570542, 10.478014, 10.580000 +3.450000, 21.717540, 10.478014, 10.580000 +3.466667, 21.864538, 10.478014, 10.580000 +3.483333, 22.011536, 10.478014, 10.580000 +3.500000, 22.158534, 10.478014, 10.580000 +3.516667, 22.305532, 10.478014, 10.580000 +3.533333, 22.452530, 10.478014, 10.580000 +3.550000, 22.599528, 10.478014, 10.580000 +3.566667, 22.746526, 10.478014, 10.580000 +3.583333, 22.893524, 10.478014, 10.580000 +3.600000, 23.040522, 10.478014, 10.580000 +3.616667, 23.187520, 10.478014, 10.580000 +3.633333, 23.334518, 10.478014, 10.580000 +3.650000, 23.481516, 10.478014, 10.580000 +3.666667, 23.628514, 10.478014, 10.580000 +3.683333, 23.775512, 10.478014, 10.580000 +3.700000, 23.922510, 10.478014, 10.580000 +3.716667, 24.069508, 10.478014, 10.580000 +3.733333, 24.216506, 10.478014, 10.580000 +3.750000, 24.363504, 10.478014, 10.580000 +3.766667, 24.510502, 10.478014, 10.580000 +3.783333, 24.657500, 10.478014, 10.580000 +3.800000, 24.804497, 10.478014, 10.580000 +3.816667, 24.951495, 10.478014, 10.580000 +3.833333, 25.098493, 10.478014, 10.580000 +3.850000, 25.245491, 10.478014, 10.580000 +3.866667, 25.392489, 10.478014, 10.580000 +3.883333, 25.539487, 10.478014, 10.580000 +3.900000, 25.686485, 10.478014, 10.580000 +3.916667, 25.833483, 10.478014, 10.580000 +3.933333, 25.980481, 10.478014, 10.580000 +3.950000, 26.127479, 10.478014, 10.580000 +3.966667, 26.274477, 10.478014, 10.580000 +3.983333, 26.421475, 10.478014, 10.580000 +4.000000, 26.568473, 10.478014, 10.580000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L1_1440_bev250_400kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L1_1440_bev250_400kW.csv new file mode 100644 index 0000000..e82c3af --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L1_1440_bev250_400kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.147217, 7.728916, 7.832727 +1.016667, 0.346021, 10.437176, 10.580000 +1.033333, 0.544824, 10.437176, 10.580000 +1.050000, 0.743628, 10.437176, 10.580000 +1.066667, 0.942431, 10.437176, 10.580000 +1.083333, 1.141234, 10.437176, 10.580000 +1.100000, 1.340038, 10.437176, 10.580000 +1.116667, 1.538841, 10.437176, 10.580000 +1.133333, 1.737644, 10.437176, 10.580000 +1.150000, 1.936448, 10.437176, 10.580000 +1.166667, 2.135251, 10.437176, 10.580000 +1.183333, 2.334054, 10.437176, 10.580000 +1.200000, 2.532858, 10.437176, 10.580000 +1.216667, 2.731661, 10.437176, 10.580000 +1.233333, 2.930464, 10.437176, 10.580000 +1.250000, 3.129268, 10.437176, 10.580000 +1.266667, 3.328071, 10.437176, 10.580000 +1.283333, 3.526875, 10.437176, 10.580000 +1.300000, 3.725678, 10.437176, 10.580000 +1.316667, 3.924481, 10.437176, 10.580000 +1.333333, 4.123285, 10.437176, 10.580000 +1.350000, 4.322088, 10.437176, 10.580000 +1.366667, 4.520891, 10.437176, 10.580000 +1.383333, 4.719695, 10.437176, 10.580000 +1.400000, 4.918498, 10.437176, 10.580000 +1.416667, 5.117301, 10.437176, 10.580000 +1.433333, 5.316105, 10.437176, 10.580000 +1.450000, 5.514908, 10.437176, 10.580000 +1.466667, 5.713711, 10.437176, 10.580000 +1.483333, 5.912515, 10.437176, 10.580000 +1.500000, 6.111318, 10.437176, 10.580000 +1.516667, 6.310122, 10.437176, 10.580000 +1.533333, 6.508925, 10.437176, 10.580000 +1.550000, 6.707728, 10.437176, 10.580000 +1.566667, 6.906532, 10.437176, 10.580000 +1.583333, 7.105335, 10.437176, 10.580000 +1.600000, 7.304138, 10.437176, 10.580000 +1.616667, 7.502942, 10.437176, 10.580000 +1.633333, 7.701745, 10.437176, 10.580000 +1.650000, 7.900548, 10.437176, 10.580000 +1.666667, 8.099352, 10.437176, 10.580000 +1.683333, 8.298155, 10.437176, 10.580000 +1.700000, 8.496958, 10.437176, 10.580000 +1.716667, 8.695762, 10.437176, 10.580000 +1.733333, 8.894565, 10.437176, 10.580000 +1.750000, 9.093369, 10.437176, 10.580000 +1.766667, 9.292172, 10.437176, 10.580000 +1.783333, 9.490975, 10.437176, 10.580000 +1.800000, 9.689779, 10.437176, 10.580000 +1.816667, 9.888582, 10.437176, 10.580000 +1.833333, 10.087385, 10.437176, 10.580000 +1.850000, 10.286189, 10.437176, 10.580000 +1.866667, 10.484992, 10.437176, 10.580000 +1.883333, 10.683795, 10.437176, 10.580000 +1.900000, 10.882599, 10.437176, 10.580000 +1.916667, 11.081402, 10.437176, 10.580000 +1.933333, 11.280205, 10.437176, 10.580000 +1.950000, 11.479009, 10.437176, 10.580000 +1.966667, 11.677812, 10.437176, 10.580000 +1.983333, 11.876615, 10.437176, 10.580000 +2.000000, 12.075419, 10.437176, 10.580000 +2.016667, 12.274222, 10.437176, 10.580000 +2.033333, 12.473026, 10.437176, 10.580000 +2.050000, 12.671829, 10.437176, 10.580000 +2.066667, 12.870632, 10.437176, 10.580000 +2.083333, 13.069436, 10.437176, 10.580000 +2.100000, 13.268239, 10.437176, 10.580000 +2.116667, 13.467042, 10.437176, 10.580000 +2.133333, 13.665846, 10.437176, 10.580000 +2.150000, 13.864649, 10.437176, 10.580000 +2.166667, 14.063452, 10.437176, 10.580000 +2.183333, 14.262256, 10.437176, 10.580000 +2.200000, 14.461059, 10.437176, 10.580000 +2.216667, 14.659862, 10.437176, 10.580000 +2.233333, 14.858666, 10.437176, 10.580000 +2.250000, 15.057469, 10.437176, 10.580000 +2.266667, 15.256273, 10.437176, 10.580000 +2.283333, 15.455076, 10.437176, 10.580000 +2.300000, 15.653879, 10.437176, 10.580000 +2.316667, 15.852683, 10.437176, 10.580000 +2.333333, 16.051486, 10.437176, 10.580000 +2.350000, 16.250289, 10.437176, 10.580000 +2.366667, 16.449093, 10.437176, 10.580000 +2.383333, 16.647896, 10.437176, 10.580000 +2.400000, 16.846699, 10.437176, 10.580000 +2.416667, 17.045503, 10.437176, 10.580000 +2.433333, 17.244306, 10.437176, 10.580000 +2.450000, 17.443109, 10.437176, 10.580000 +2.466667, 17.641913, 10.437176, 10.580000 +2.483333, 17.840716, 10.437176, 10.580000 +2.500000, 18.039520, 10.437176, 10.580000 +2.516667, 18.238323, 10.437176, 10.580000 +2.533333, 18.437126, 10.437176, 10.580000 +2.550000, 18.635930, 10.437176, 10.580000 +2.566667, 18.834733, 10.437176, 10.580000 +2.583333, 19.033536, 10.437176, 10.580000 +2.600000, 19.232340, 10.437176, 10.580000 +2.616667, 19.431143, 10.437176, 10.580000 +2.633333, 19.629946, 10.437176, 10.580000 +2.650000, 19.828750, 10.437176, 10.580000 +2.666667, 20.027553, 10.437176, 10.580000 +2.683333, 20.226356, 10.437176, 10.580000 +2.700000, 20.425160, 10.437176, 10.580000 +2.716667, 20.623963, 10.437176, 10.580000 +2.733333, 20.822767, 10.437176, 10.580000 +2.750000, 21.021570, 10.437176, 10.580000 +2.766667, 21.220373, 10.437176, 10.580000 +2.783333, 21.419177, 10.437176, 10.580000 +2.800000, 21.617980, 10.437176, 10.580000 +2.816667, 21.816783, 10.437176, 10.580000 +2.833333, 22.015587, 10.437176, 10.580000 +2.850000, 22.214390, 10.437176, 10.580000 +2.866667, 22.413193, 10.437176, 10.580000 +2.883333, 22.611997, 10.437176, 10.580000 +2.900000, 22.810800, 10.437176, 10.580000 +2.916667, 23.009603, 10.437176, 10.580000 +2.933333, 23.208407, 10.437176, 10.580000 +2.950000, 23.407210, 10.437176, 10.580000 +2.966667, 23.606014, 10.437176, 10.580000 +2.983333, 23.804817, 10.437176, 10.580000 +3.000000, 24.003620, 10.437176, 10.580000 +3.016667, 24.202424, 10.437176, 10.580000 +3.033333, 24.401227, 10.437176, 10.580000 +3.050000, 24.600030, 10.437176, 10.580000 +3.066667, 24.798834, 10.437176, 10.580000 +3.083333, 24.997637, 10.437176, 10.580000 +3.100000, 25.196440, 10.437176, 10.580000 +3.116667, 25.395244, 10.437176, 10.580000 +3.133333, 25.594047, 10.437176, 10.580000 +3.150000, 25.792850, 10.437176, 10.580000 +3.166667, 25.991654, 10.437176, 10.580000 +3.183333, 26.190457, 10.437176, 10.580000 +3.200000, 26.389261, 10.437176, 10.580000 +3.216667, 26.588064, 10.437176, 10.580000 +3.233333, 26.786867, 10.437176, 10.580000 +3.250000, 26.985671, 10.437176, 10.580000 +3.266667, 27.184474, 10.437176, 10.580000 +3.283333, 27.383277, 10.437176, 10.580000 +3.300000, 27.582081, 10.437176, 10.580000 +3.316667, 27.780884, 10.437176, 10.580000 +3.333333, 27.979687, 10.437176, 10.580000 +3.350000, 28.178491, 10.437176, 10.580000 +3.366667, 28.377294, 10.437176, 10.580000 +3.383333, 28.576097, 10.437176, 10.580000 +3.400000, 28.774901, 10.437176, 10.580000 +3.416667, 28.973704, 10.437176, 10.580000 +3.433333, 29.172508, 10.437176, 10.580000 +3.450000, 29.371311, 10.437176, 10.580000 +3.466667, 29.570114, 10.437176, 10.580000 +3.483333, 29.768918, 10.437176, 10.580000 +3.500000, 29.967721, 10.437176, 10.580000 +3.516667, 30.166524, 10.437176, 10.580000 +3.533333, 30.365328, 10.437176, 10.580000 +3.550000, 30.564131, 10.437176, 10.580000 +3.566667, 30.762934, 10.437176, 10.580000 +3.583333, 30.961738, 10.437176, 10.580000 +3.600000, 31.160541, 10.437176, 10.580000 +3.616667, 31.359344, 10.437176, 10.580000 +3.633333, 31.558148, 10.437176, 10.580000 +3.650000, 31.756951, 10.437176, 10.580000 +3.666667, 31.955755, 10.437176, 10.580000 +3.683333, 32.154558, 10.437176, 10.580000 +3.700000, 32.353361, 10.437176, 10.580000 +3.716667, 32.552165, 10.437176, 10.580000 +3.733333, 32.750968, 10.437176, 10.580000 +3.750000, 32.949771, 10.437176, 10.580000 +3.766667, 33.148575, 10.437176, 10.580000 +3.783333, 33.347378, 10.437176, 10.580000 +3.800000, 33.546181, 10.437176, 10.580000 +3.816667, 33.744985, 10.437176, 10.580000 +3.833333, 33.943788, 10.437176, 10.580000 +3.850000, 34.142591, 10.437176, 10.580000 +3.866667, 34.341395, 10.437176, 10.580000 +3.883333, 34.540198, 10.437176, 10.580000 +3.900000, 34.739002, 10.437176, 10.580000 +3.916667, 34.937805, 10.437176, 10.580000 +3.933333, 35.136608, 10.437176, 10.580000 +3.950000, 35.335412, 10.437176, 10.580000 +3.966667, 35.534215, 10.437176, 10.580000 +3.983333, 35.733018, 10.437176, 10.580000 +4.000000, 35.931822, 10.437176, 10.580000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L1_1440_bev250_ld1_75kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L1_1440_bev250_ld1_75kW.csv new file mode 100644 index 0000000..5b92b4b --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L1_1440_bev250_ld1_75kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.108987, 4.904398, 4.951514 +1.016667, 0.242625, 6.013734, 6.072000 +1.033333, 0.376264, 6.013734, 6.072000 +1.050000, 0.509902, 6.013734, 6.072000 +1.066667, 0.643541, 6.013734, 6.072000 +1.083333, 0.777179, 6.013734, 6.072000 +1.100000, 0.910818, 6.013734, 6.072000 +1.116667, 1.044456, 6.013734, 6.072000 +1.133333, 1.178095, 6.013734, 6.072000 +1.150000, 1.311733, 6.013734, 6.072000 +1.166667, 1.445372, 6.013734, 6.072000 +1.183333, 1.579010, 6.013734, 6.072000 +1.200000, 1.712649, 6.013734, 6.072000 +1.216667, 1.846288, 6.013734, 6.072000 +1.233333, 1.979926, 6.013734, 6.072000 +1.250000, 2.113565, 6.013734, 6.072000 +1.266667, 2.247203, 6.013734, 6.072000 +1.283333, 2.380842, 6.013734, 6.072000 +1.300000, 2.514480, 6.013734, 6.072000 +1.316667, 2.648119, 6.013734, 6.072000 +1.333333, 2.781757, 6.013734, 6.072000 +1.350000, 2.915396, 6.013734, 6.072000 +1.366667, 3.049034, 6.013734, 6.072000 +1.383333, 3.182673, 6.013734, 6.072000 +1.400000, 3.316311, 6.013734, 6.072000 +1.416667, 3.449950, 6.013734, 6.072000 +1.433333, 3.583588, 6.013734, 6.072000 +1.450000, 3.717227, 6.013734, 6.072000 +1.466667, 3.850866, 6.013734, 6.072000 +1.483333, 3.984504, 6.013734, 6.072000 +1.500000, 4.118143, 6.013734, 6.072000 +1.516667, 4.251781, 6.013734, 6.072000 +1.533333, 4.385420, 6.013734, 6.072000 +1.550000, 4.519058, 6.013734, 6.072000 +1.566667, 4.652697, 6.013734, 6.072000 +1.583333, 4.786335, 6.013734, 6.072000 +1.600000, 4.919974, 6.013734, 6.072000 +1.616667, 5.053612, 6.013734, 6.072000 +1.633333, 5.187251, 6.013734, 6.072000 +1.650000, 5.320889, 6.013734, 6.072000 +1.666667, 5.454528, 6.013734, 6.072000 +1.683333, 5.588166, 6.013734, 6.072000 +1.700000, 5.721805, 6.013734, 6.072000 +1.716667, 5.855444, 6.013734, 6.072000 +1.733333, 5.989082, 6.013734, 6.072000 +1.750000, 6.122721, 6.013734, 6.072000 +1.766667, 6.256359, 6.013734, 6.072000 +1.783333, 6.389998, 6.013734, 6.072000 +1.800000, 6.523636, 6.013734, 6.072000 +1.816667, 6.657275, 6.013734, 6.072000 +1.833333, 6.790913, 6.013734, 6.072000 +1.850000, 6.924552, 6.013734, 6.072000 +1.866667, 7.058190, 6.013734, 6.072000 +1.883333, 7.191829, 6.013734, 6.072000 +1.900000, 7.325467, 6.013734, 6.072000 +1.916667, 7.459106, 6.013734, 6.072000 +1.933333, 7.592744, 6.013734, 6.072000 +1.950000, 7.726383, 6.013734, 6.072000 +1.966667, 7.860022, 6.013734, 6.072000 +1.983333, 7.993660, 6.013734, 6.072000 +2.000000, 8.127299, 6.013734, 6.072000 +2.016667, 8.260937, 6.013734, 6.072000 +2.033333, 8.394576, 6.013734, 6.072000 +2.050000, 8.528214, 6.013734, 6.072000 +2.066667, 8.661853, 6.013734, 6.072000 +2.083333, 8.795491, 6.013734, 6.072000 +2.100000, 8.929130, 6.013734, 6.072000 +2.116667, 9.062768, 6.013734, 6.072000 +2.133333, 9.196407, 6.013734, 6.072000 +2.150000, 9.330045, 6.013734, 6.072000 +2.166667, 9.463684, 6.013734, 6.072000 +2.183333, 9.597322, 6.013734, 6.072000 +2.200000, 9.730961, 6.013734, 6.072000 +2.216667, 9.864600, 6.013734, 6.072000 +2.233333, 9.998238, 6.013734, 6.072000 +2.250000, 10.131877, 6.013734, 6.072000 +2.266667, 10.265515, 6.013734, 6.072000 +2.283333, 10.399154, 6.013734, 6.072000 +2.300000, 10.532792, 6.013734, 6.072000 +2.316667, 10.666431, 6.013734, 6.072000 +2.333333, 10.800069, 6.013734, 6.072000 +2.350000, 10.933708, 6.013734, 6.072000 +2.366667, 11.067346, 6.013734, 6.072000 +2.383333, 11.200985, 6.013734, 6.072000 +2.400000, 11.334623, 6.013734, 6.072000 +2.416667, 11.468262, 6.013734, 6.072000 +2.433333, 11.601900, 6.013734, 6.072000 +2.450000, 11.735539, 6.013734, 6.072000 +2.466667, 11.869178, 6.013734, 6.072000 +2.483333, 12.002816, 6.013734, 6.072000 +2.500000, 12.136455, 6.013734, 6.072000 +2.516667, 12.270093, 6.013734, 6.072000 +2.533333, 12.403732, 6.013734, 6.072000 +2.550000, 12.537370, 6.013734, 6.072000 +2.566667, 12.671009, 6.013734, 6.072000 +2.583333, 12.804647, 6.013734, 6.072000 +2.600000, 12.938286, 6.013734, 6.072000 +2.616667, 13.071924, 6.013734, 6.072000 +2.633333, 13.205563, 6.013734, 6.072000 +2.650000, 13.339201, 6.013734, 6.072000 +2.666667, 13.472840, 6.013734, 6.072000 +2.683333, 13.606478, 6.013734, 6.072000 +2.700000, 13.740117, 6.013734, 6.072000 +2.716667, 13.873756, 6.013734, 6.072000 +2.733333, 14.007394, 6.013734, 6.072000 +2.750000, 14.141033, 6.013734, 6.072000 +2.766667, 14.274671, 6.013734, 6.072000 +2.783333, 14.408310, 6.013734, 6.072000 +2.800000, 14.541948, 6.013734, 6.072000 +2.816667, 14.675587, 6.013734, 6.072000 +2.833333, 14.809225, 6.013734, 6.072000 +2.850000, 14.942864, 6.013734, 6.072000 +2.866667, 15.076502, 6.013734, 6.072000 +2.883333, 15.210141, 6.013734, 6.072000 +2.900000, 15.343779, 6.013734, 6.072000 +2.916667, 15.477418, 6.013734, 6.072000 +2.933333, 15.611056, 6.013734, 6.072000 +2.950000, 15.744695, 6.013734, 6.072000 +2.966667, 15.878334, 6.013734, 6.072000 +2.983333, 16.011972, 6.013734, 6.072000 +3.000000, 16.145611, 6.013734, 6.072000 +3.016667, 16.279249, 6.013734, 6.072000 +3.033333, 16.412888, 6.013734, 6.072000 +3.050000, 16.546526, 6.013734, 6.072000 +3.066667, 16.680165, 6.013734, 6.072000 +3.083333, 16.813803, 6.013734, 6.072000 +3.100000, 16.947442, 6.013734, 6.072000 +3.116667, 17.081080, 6.013734, 6.072000 +3.133333, 17.214719, 6.013734, 6.072000 +3.150000, 17.348357, 6.013734, 6.072000 +3.166667, 17.481996, 6.013734, 6.072000 +3.183333, 17.615634, 6.013734, 6.072000 +3.200000, 17.749273, 6.013734, 6.072000 +3.216667, 17.882912, 6.013734, 6.072000 +3.233333, 18.016550, 6.013734, 6.072000 +3.250000, 18.150189, 6.013734, 6.072000 +3.266667, 18.283827, 6.013734, 6.072000 +3.283333, 18.417466, 6.013734, 6.072000 +3.300000, 18.551104, 6.013734, 6.072000 +3.316667, 18.684743, 6.013734, 6.072000 +3.333333, 18.818381, 6.013734, 6.072000 +3.350000, 18.952020, 6.013734, 6.072000 +3.366667, 19.085658, 6.013734, 6.072000 +3.383333, 19.219297, 6.013734, 6.072000 +3.400000, 19.352935, 6.013734, 6.072000 +3.416667, 19.486574, 6.013734, 6.072000 +3.433333, 19.620212, 6.013734, 6.072000 +3.450000, 19.753851, 6.013734, 6.072000 +3.466667, 19.887490, 6.013734, 6.072000 +3.483333, 20.021128, 6.013734, 6.072000 +3.500000, 20.154767, 6.013734, 6.072000 +3.516667, 20.288405, 6.013734, 6.072000 +3.533333, 20.422044, 6.013734, 6.072000 +3.550000, 20.555682, 6.013734, 6.072000 +3.566667, 20.689321, 6.013734, 6.072000 +3.583333, 20.822959, 6.013734, 6.072000 +3.600000, 20.956598, 6.013734, 6.072000 +3.616667, 21.090236, 6.013734, 6.072000 +3.633333, 21.223875, 6.013734, 6.072000 +3.650000, 21.357513, 6.013734, 6.072000 +3.666667, 21.491152, 6.013734, 6.072000 +3.683333, 21.624790, 6.013734, 6.072000 +3.700000, 21.758429, 6.013734, 6.072000 +3.716667, 21.892068, 6.013734, 6.072000 +3.733333, 22.025706, 6.013734, 6.072000 +3.750000, 22.159345, 6.013734, 6.072000 +3.766667, 22.292983, 6.013734, 6.072000 +3.783333, 22.426622, 6.013734, 6.072000 +3.800000, 22.560260, 6.013734, 6.072000 +3.816667, 22.693899, 6.013734, 6.072000 +3.833333, 22.827537, 6.013734, 6.072000 +3.850000, 22.961176, 6.013734, 6.072000 +3.866667, 23.094814, 6.013734, 6.072000 +3.883333, 23.228453, 6.013734, 6.072000 +3.900000, 23.362091, 6.013734, 6.072000 +3.916667, 23.495730, 6.013734, 6.072000 +3.933333, 23.629368, 6.013734, 6.072000 +3.950000, 23.763007, 6.013734, 6.072000 +3.966667, 23.896646, 6.013734, 6.072000 +3.983333, 24.030284, 6.013734, 6.072000 +4.000000, 24.163923, 6.013734, 6.072000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L1_1440_bev250_ld2_300kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L1_1440_bev250_ld2_300kW.csv new file mode 100644 index 0000000..5a08d39 --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L1_1440_bev250_ld2_300kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.146917, 7.757225, 7.832727 +1.016667, 0.345331, 10.476237, 10.580000 +1.033333, 0.543744, 10.476237, 10.580000 +1.050000, 0.742158, 10.476237, 10.580000 +1.066667, 0.940571, 10.476237, 10.580000 +1.083333, 1.138985, 10.476237, 10.580000 +1.100000, 1.337399, 10.476237, 10.580000 +1.116667, 1.535812, 10.476237, 10.580000 +1.133333, 1.734226, 10.476237, 10.580000 +1.150000, 1.932639, 10.476237, 10.580000 +1.166667, 2.131053, 10.476237, 10.580000 +1.183333, 2.329466, 10.476237, 10.580000 +1.200000, 2.527880, 10.476237, 10.580000 +1.216667, 2.726294, 10.476237, 10.580000 +1.233333, 2.924707, 10.476237, 10.580000 +1.250000, 3.123121, 10.476237, 10.580000 +1.266667, 3.321534, 10.476237, 10.580000 +1.283333, 3.519948, 10.476237, 10.580000 +1.300000, 3.718361, 10.476237, 10.580000 +1.316667, 3.916775, 10.476237, 10.580000 +1.333333, 4.115189, 10.476237, 10.580000 +1.350000, 4.313602, 10.476237, 10.580000 +1.366667, 4.512016, 10.476237, 10.580000 +1.383333, 4.710429, 10.476237, 10.580000 +1.400000, 4.908843, 10.476237, 10.580000 +1.416667, 5.107257, 10.476237, 10.580000 +1.433333, 5.305670, 10.476237, 10.580000 +1.450000, 5.504084, 10.476237, 10.580000 +1.466667, 5.702497, 10.476237, 10.580000 +1.483333, 5.900911, 10.476237, 10.580000 +1.500000, 6.099324, 10.476237, 10.580000 +1.516667, 6.297738, 10.476237, 10.580000 +1.533333, 6.496152, 10.476237, 10.580000 +1.550000, 6.694565, 10.476237, 10.580000 +1.566667, 6.892979, 10.476237, 10.580000 +1.583333, 7.091392, 10.476237, 10.580000 +1.600000, 7.289806, 10.476237, 10.580000 +1.616667, 7.488219, 10.476237, 10.580000 +1.633333, 7.686633, 10.476237, 10.580000 +1.650000, 7.885047, 10.476237, 10.580000 +1.666667, 8.083460, 10.476237, 10.580000 +1.683333, 8.281874, 10.476237, 10.580000 +1.700000, 8.480287, 10.476237, 10.580000 +1.716667, 8.678701, 10.476237, 10.580000 +1.733333, 8.877114, 10.476237, 10.580000 +1.750000, 9.075528, 10.476237, 10.580000 +1.766667, 9.273942, 10.476237, 10.580000 +1.783333, 9.472355, 10.476237, 10.580000 +1.800000, 9.670769, 10.476237, 10.580000 +1.816667, 9.869182, 10.476237, 10.580000 +1.833333, 10.067596, 10.476237, 10.580000 +1.850000, 10.266009, 10.476237, 10.580000 +1.866667, 10.464423, 10.476237, 10.580000 +1.883333, 10.662837, 10.476237, 10.580000 +1.900000, 10.861250, 10.476237, 10.580000 +1.916667, 11.059664, 10.476237, 10.580000 +1.933333, 11.258077, 10.476237, 10.580000 +1.950000, 11.456491, 10.476237, 10.580000 +1.966667, 11.654905, 10.476237, 10.580000 +1.983333, 11.853318, 10.476237, 10.580000 +2.000000, 12.051732, 10.476237, 10.580000 +2.016667, 12.250145, 10.476237, 10.580000 +2.033333, 12.448559, 10.476237, 10.580000 +2.050000, 12.646972, 10.476237, 10.580000 +2.066667, 12.845386, 10.476237, 10.580000 +2.083333, 13.043800, 10.476237, 10.580000 +2.100000, 13.242213, 10.476237, 10.580000 +2.116667, 13.440627, 10.476237, 10.580000 +2.133333, 13.639040, 10.476237, 10.580000 +2.150000, 13.837454, 10.476237, 10.580000 +2.166667, 14.035867, 10.476237, 10.580000 +2.183333, 14.234281, 10.476237, 10.580000 +2.200000, 14.432695, 10.476237, 10.580000 +2.216667, 14.631108, 10.476237, 10.580000 +2.233333, 14.829522, 10.476237, 10.580000 +2.250000, 15.027935, 10.476237, 10.580000 +2.266667, 15.226349, 10.476237, 10.580000 +2.283333, 15.424762, 10.476237, 10.580000 +2.300000, 15.623176, 10.476237, 10.580000 +2.316667, 15.821590, 10.476237, 10.580000 +2.333333, 16.020003, 10.476237, 10.580000 +2.350000, 16.218417, 10.476237, 10.580000 +2.366667, 16.416830, 10.476237, 10.580000 +2.383333, 16.615244, 10.476237, 10.580000 +2.400000, 16.813657, 10.476237, 10.580000 +2.416667, 17.012071, 10.476237, 10.580000 +2.433333, 17.210485, 10.476237, 10.580000 +2.450000, 17.408898, 10.476237, 10.580000 +2.466667, 17.607312, 10.476237, 10.580000 +2.483333, 17.805725, 10.476237, 10.580000 +2.500000, 18.004139, 10.476237, 10.580000 +2.516667, 18.202552, 10.476237, 10.580000 +2.533333, 18.400966, 10.476237, 10.580000 +2.550000, 18.599380, 10.476237, 10.580000 +2.566667, 18.797793, 10.476237, 10.580000 +2.583333, 18.996207, 10.476237, 10.580000 +2.600000, 19.194620, 10.476237, 10.580000 +2.616667, 19.393034, 10.476237, 10.580000 +2.633333, 19.591448, 10.476237, 10.580000 +2.650000, 19.789861, 10.476237, 10.580000 +2.666667, 19.988275, 10.476237, 10.580000 +2.683333, 20.186688, 10.476237, 10.580000 +2.700000, 20.385102, 10.476237, 10.580000 +2.716667, 20.583515, 10.476237, 10.580000 +2.733333, 20.781929, 10.476237, 10.580000 +2.750000, 20.980343, 10.476237, 10.580000 +2.766667, 21.178756, 10.476237, 10.580000 +2.783333, 21.377170, 10.476237, 10.580000 +2.800000, 21.575583, 10.476237, 10.580000 +2.816667, 21.773997, 10.476237, 10.580000 +2.833333, 21.972410, 10.476237, 10.580000 +2.850000, 22.170824, 10.476237, 10.580000 +2.866667, 22.369238, 10.476237, 10.580000 +2.883333, 22.567651, 10.476237, 10.580000 +2.900000, 22.766065, 10.476237, 10.580000 +2.916667, 22.964478, 10.476237, 10.580000 +2.933333, 23.162892, 10.476237, 10.580000 +2.950000, 23.361305, 10.476237, 10.580000 +2.966667, 23.559719, 10.476237, 10.580000 +2.983333, 23.758133, 10.476237, 10.580000 +3.000000, 23.956546, 10.476237, 10.580000 +3.016667, 24.154960, 10.476237, 10.580000 +3.033333, 24.353373, 10.476237, 10.580000 +3.050000, 24.551787, 10.476237, 10.580000 +3.066667, 24.750200, 10.476237, 10.580000 +3.083333, 24.948614, 10.476237, 10.580000 +3.100000, 25.147028, 10.476237, 10.580000 +3.116667, 25.345441, 10.476237, 10.580000 +3.133333, 25.543855, 10.476237, 10.580000 +3.150000, 25.742268, 10.476237, 10.580000 +3.166667, 25.940682, 10.476237, 10.580000 +3.183333, 26.139095, 10.476237, 10.580000 +3.200000, 26.337509, 10.476237, 10.580000 +3.216667, 26.535923, 10.476237, 10.580000 +3.233333, 26.734336, 10.476237, 10.580000 +3.250000, 26.932750, 10.476237, 10.580000 +3.266667, 27.131163, 10.476237, 10.580000 +3.283333, 27.329577, 10.476237, 10.580000 +3.300000, 27.527991, 10.476237, 10.580000 +3.316667, 27.726404, 10.476237, 10.580000 +3.333333, 27.924818, 10.476237, 10.580000 +3.350000, 28.123231, 10.476237, 10.580000 +3.366667, 28.321645, 10.476237, 10.580000 +3.383333, 28.520058, 10.476237, 10.580000 +3.400000, 28.718472, 10.476237, 10.580000 +3.416667, 28.916886, 10.476237, 10.580000 +3.433333, 29.115299, 10.476237, 10.580000 +3.450000, 29.313713, 10.476237, 10.580000 +3.466667, 29.512126, 10.476237, 10.580000 +3.483333, 29.710540, 10.476237, 10.580000 +3.500000, 29.908953, 10.476237, 10.580000 +3.516667, 30.107367, 10.476237, 10.580000 +3.533333, 30.305781, 10.476237, 10.580000 +3.550000, 30.504194, 10.476237, 10.580000 +3.566667, 30.702608, 10.476237, 10.580000 +3.583333, 30.901021, 10.476237, 10.580000 +3.600000, 31.099435, 10.476237, 10.580000 +3.616667, 31.297848, 10.476237, 10.580000 +3.633333, 31.496262, 10.476237, 10.580000 +3.650000, 31.694676, 10.476237, 10.580000 +3.666667, 31.893089, 10.476237, 10.580000 +3.683333, 32.091503, 10.476237, 10.580000 +3.700000, 32.289916, 10.476237, 10.580000 +3.716667, 32.488330, 10.476237, 10.580000 +3.733333, 32.686743, 10.476237, 10.580000 +3.750000, 32.885157, 10.476237, 10.580000 +3.766667, 33.083571, 10.476237, 10.580000 +3.783333, 33.281984, 10.476237, 10.580000 +3.800000, 33.480398, 10.476237, 10.580000 +3.816667, 33.678811, 10.476237, 10.580000 +3.833333, 33.877225, 10.476237, 10.580000 +3.850000, 34.075638, 10.476237, 10.580000 +3.866667, 34.274052, 10.476237, 10.580000 +3.883333, 34.472466, 10.476237, 10.580000 +3.900000, 34.670879, 10.476237, 10.580000 +3.916667, 34.869293, 10.476237, 10.580000 +3.933333, 35.067706, 10.476237, 10.580000 +3.950000, 35.266120, 10.476237, 10.580000 +3.966667, 35.464534, 10.476237, 10.580000 +3.983333, 35.662947, 10.476237, 10.580000 +4.000000, 35.861361, 10.476237, 10.580000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L1_1440_bev275_ld1_150kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L1_1440_bev275_ld1_150kW.csv new file mode 100644 index 0000000..d497f93 --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L1_1440_bev275_ld1_150kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.135154, 6.730683, 6.795930 +1.016667, 0.310778, 8.746038, 8.832000 +1.033333, 0.486401, 8.746038, 8.832000 +1.050000, 0.662024, 8.746038, 8.832000 +1.066667, 0.837647, 8.746038, 8.832000 +1.083333, 1.013271, 8.746038, 8.832000 +1.100000, 1.188894, 8.746038, 8.832000 +1.116667, 1.364517, 8.746038, 8.832000 +1.133333, 1.540140, 8.746038, 8.832000 +1.150000, 1.715764, 8.746038, 8.832000 +1.166667, 1.891387, 8.746038, 8.832000 +1.183333, 2.067010, 8.746038, 8.832000 +1.200000, 2.242633, 8.746038, 8.832000 +1.216667, 2.418257, 8.746038, 8.832000 +1.233333, 2.593880, 8.746038, 8.832000 +1.250000, 2.769503, 8.746038, 8.832000 +1.266667, 2.945126, 8.746038, 8.832000 +1.283333, 3.120750, 8.746038, 8.832000 +1.300000, 3.296373, 8.746038, 8.832000 +1.316667, 3.471996, 8.746038, 8.832000 +1.333333, 3.647619, 8.746038, 8.832000 +1.350000, 3.823243, 8.746038, 8.832000 +1.366667, 3.998866, 8.746038, 8.832000 +1.383333, 4.174489, 8.746038, 8.832000 +1.400000, 4.350112, 8.746038, 8.832000 +1.416667, 4.525736, 8.746038, 8.832000 +1.433333, 4.701359, 8.746038, 8.832000 +1.450000, 4.876982, 8.746038, 8.832000 +1.466667, 5.052605, 8.746038, 8.832000 +1.483333, 5.228229, 8.746038, 8.832000 +1.500000, 5.403852, 8.746038, 8.832000 +1.516667, 5.579475, 8.746038, 8.832000 +1.533333, 5.755098, 8.746038, 8.832000 +1.550000, 5.930722, 8.746038, 8.832000 +1.566667, 6.106345, 8.746038, 8.832000 +1.583333, 6.281968, 8.746038, 8.832000 +1.600000, 6.457591, 8.746038, 8.832000 +1.616667, 6.633215, 8.746038, 8.832000 +1.633333, 6.808838, 8.746038, 8.832000 +1.650000, 6.984461, 8.746038, 8.832000 +1.666667, 7.160084, 8.746038, 8.832000 +1.683333, 7.335708, 8.746038, 8.832000 +1.700000, 7.511331, 8.746038, 8.832000 +1.716667, 7.686954, 8.746038, 8.832000 +1.733333, 7.862577, 8.746038, 8.832000 +1.750000, 8.038201, 8.746038, 8.832000 +1.766667, 8.213824, 8.746038, 8.832000 +1.783333, 8.389447, 8.746038, 8.832000 +1.800000, 8.565070, 8.746038, 8.832000 +1.816667, 8.740694, 8.746038, 8.832000 +1.833333, 8.916317, 8.746038, 8.832000 +1.850000, 9.091940, 8.746038, 8.832000 +1.866667, 9.267563, 8.746038, 8.832000 +1.883333, 9.443187, 8.746038, 8.832000 +1.900000, 9.618810, 8.746038, 8.832000 +1.916667, 9.794433, 8.746038, 8.832000 +1.933333, 9.970056, 8.746038, 8.832000 +1.950000, 10.145680, 8.746038, 8.832000 +1.966667, 10.321303, 8.746038, 8.832000 +1.983333, 10.496926, 8.746038, 8.832000 +2.000000, 10.672549, 8.746038, 8.832000 +2.016667, 10.848173, 8.746038, 8.832000 +2.033333, 11.023796, 8.746038, 8.832000 +2.050000, 11.199419, 8.746038, 8.832000 +2.066667, 11.375042, 8.746038, 8.832000 +2.083333, 11.550666, 8.746038, 8.832000 +2.100000, 11.726289, 8.746038, 8.832000 +2.116667, 11.901912, 8.746038, 8.832000 +2.133333, 12.077535, 8.746038, 8.832000 +2.150000, 12.253159, 8.746038, 8.832000 +2.166667, 12.428782, 8.746038, 8.832000 +2.183333, 12.604405, 8.746038, 8.832000 +2.200000, 12.780029, 8.746038, 8.832000 +2.216667, 12.955652, 8.746038, 8.832000 +2.233333, 13.131275, 8.746038, 8.832000 +2.250000, 13.306898, 8.746038, 8.832000 +2.266667, 13.482522, 8.746038, 8.832000 +2.283333, 13.658145, 8.746038, 8.832000 +2.300000, 13.833768, 8.746038, 8.832000 +2.316667, 14.009391, 8.746038, 8.832000 +2.333333, 14.185015, 8.746038, 8.832000 +2.350000, 14.360638, 8.746038, 8.832000 +2.366667, 14.536261, 8.746038, 8.832000 +2.383333, 14.711884, 8.746038, 8.832000 +2.400000, 14.887508, 8.746038, 8.832000 +2.416667, 15.063131, 8.746038, 8.832000 +2.433333, 15.238754, 8.746038, 8.832000 +2.450000, 15.414377, 8.746038, 8.832000 +2.466667, 15.590001, 8.746038, 8.832000 +2.483333, 15.765624, 8.746038, 8.832000 +2.500000, 15.941247, 8.746038, 8.832000 +2.516667, 16.116870, 8.746038, 8.832000 +2.533333, 16.292494, 8.746038, 8.832000 +2.550000, 16.468117, 8.746038, 8.832000 +2.566667, 16.643740, 8.746038, 8.832000 +2.583333, 16.819363, 8.746038, 8.832000 +2.600000, 16.994987, 8.746038, 8.832000 +2.616667, 17.170610, 8.746038, 8.832000 +2.633333, 17.346233, 8.746038, 8.832000 +2.650000, 17.521856, 8.746038, 8.832000 +2.666667, 17.697480, 8.746038, 8.832000 +2.683333, 17.873103, 8.746038, 8.832000 +2.700000, 18.048726, 8.746038, 8.832000 +2.716667, 18.224349, 8.746038, 8.832000 +2.733333, 18.399973, 8.746038, 8.832000 +2.750000, 18.575596, 8.746038, 8.832000 +2.766667, 18.751219, 8.746038, 8.832000 +2.783333, 18.926842, 8.746038, 8.832000 +2.800000, 19.102466, 8.746038, 8.832000 +2.816667, 19.278089, 8.746038, 8.832000 +2.833333, 19.453712, 8.746038, 8.832000 +2.850000, 19.629335, 8.746038, 8.832000 +2.866667, 19.804959, 8.746038, 8.832000 +2.883333, 19.980582, 8.746038, 8.832000 +2.900000, 20.156205, 8.746038, 8.832000 +2.916667, 20.331828, 8.746038, 8.832000 +2.933333, 20.507452, 8.746038, 8.832000 +2.950000, 20.683075, 8.746038, 8.832000 +2.966667, 20.858698, 8.746038, 8.832000 +2.983333, 21.034321, 8.746038, 8.832000 +3.000000, 21.209945, 8.746038, 8.832000 +3.016667, 21.385568, 8.746038, 8.832000 +3.033333, 21.561191, 8.746038, 8.832000 +3.050000, 21.736814, 8.746038, 8.832000 +3.066667, 21.912438, 8.746038, 8.832000 +3.083333, 22.088061, 8.746038, 8.832000 +3.100000, 22.263684, 8.746038, 8.832000 +3.116667, 22.439307, 8.746038, 8.832000 +3.133333, 22.614931, 8.746038, 8.832000 +3.150000, 22.790554, 8.746038, 8.832000 +3.166667, 22.966177, 8.746038, 8.832000 +3.183333, 23.141800, 8.746038, 8.832000 +3.200000, 23.317424, 8.746038, 8.832000 +3.216667, 23.493047, 8.746038, 8.832000 +3.233333, 23.668670, 8.746038, 8.832000 +3.250000, 23.844293, 8.746038, 8.832000 +3.266667, 24.019917, 8.746038, 8.832000 +3.283333, 24.195540, 8.746038, 8.832000 +3.300000, 24.371163, 8.746038, 8.832000 +3.316667, 24.546786, 8.746038, 8.832000 +3.333333, 24.722410, 8.746038, 8.832000 +3.350000, 24.898033, 8.746038, 8.832000 +3.366667, 25.073656, 8.746038, 8.832000 +3.383333, 25.249279, 8.746038, 8.832000 +3.400000, 25.424903, 8.746038, 8.832000 +3.416667, 25.600526, 8.746038, 8.832000 +3.433333, 25.776149, 8.746038, 8.832000 +3.450000, 25.951772, 8.746038, 8.832000 +3.466667, 26.127396, 8.746038, 8.832000 +3.483333, 26.303019, 8.746038, 8.832000 +3.500000, 26.478642, 8.746038, 8.832000 +3.516667, 26.654265, 8.746038, 8.832000 +3.533333, 26.829889, 8.746038, 8.832000 +3.550000, 27.005512, 8.746038, 8.832000 +3.566667, 27.181135, 8.746038, 8.832000 +3.583333, 27.356759, 8.746038, 8.832000 +3.600000, 27.532382, 8.746038, 8.832000 +3.616667, 27.708005, 8.746038, 8.832000 +3.633333, 27.883628, 8.746038, 8.832000 +3.650000, 28.059252, 8.746038, 8.832000 +3.666667, 28.234875, 8.746038, 8.832000 +3.683333, 28.410498, 8.746038, 8.832000 +3.700000, 28.586121, 8.746038, 8.832000 +3.716667, 28.761745, 8.746038, 8.832000 +3.733333, 28.937368, 8.746038, 8.832000 +3.750000, 29.112991, 8.746038, 8.832000 +3.766667, 29.288614, 8.746038, 8.832000 +3.783333, 29.464238, 8.746038, 8.832000 +3.800000, 29.639861, 8.746038, 8.832000 +3.816667, 29.815484, 8.746038, 8.832000 +3.833333, 29.991107, 8.746038, 8.832000 +3.850000, 30.166731, 8.746038, 8.832000 +3.866667, 30.342354, 8.746038, 8.832000 +3.883333, 30.517977, 8.746038, 8.832000 +3.900000, 30.693600, 8.746038, 8.832000 +3.916667, 30.869224, 8.746038, 8.832000 +3.933333, 31.044847, 8.746038, 8.832000 +3.950000, 31.220470, 8.746038, 8.832000 +3.966667, 31.396093, 8.746038, 8.832000 +3.983333, 31.571717, 8.746038, 8.832000 +4.000000, 31.747340, 8.746038, 8.832000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L1_1440_bev300_300kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L1_1440_bev300_300kW.csv new file mode 100644 index 0000000..3a81456 --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L1_1440_bev300_300kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.132608, 7.757591, 7.832727 +1.016667, 0.311701, 10.476905, 10.580000 +1.033333, 0.490793, 10.476905, 10.580000 +1.050000, 0.669886, 10.476905, 10.580000 +1.066667, 0.848978, 10.476905, 10.580000 +1.083333, 1.028070, 10.476905, 10.580000 +1.100000, 1.207163, 10.476905, 10.580000 +1.116667, 1.386255, 10.476905, 10.580000 +1.133333, 1.565348, 10.476905, 10.580000 +1.150000, 1.744440, 10.476905, 10.580000 +1.166667, 1.923532, 10.476905, 10.580000 +1.183333, 2.102625, 10.476905, 10.580000 +1.200000, 2.281717, 10.476905, 10.580000 +1.216667, 2.460809, 10.476905, 10.580000 +1.233333, 2.639902, 10.476905, 10.580000 +1.250000, 2.818994, 10.476905, 10.580000 +1.266667, 2.998087, 10.476905, 10.580000 +1.283333, 3.177179, 10.476905, 10.580000 +1.300000, 3.356271, 10.476905, 10.580000 +1.316667, 3.535364, 10.476905, 10.580000 +1.333333, 3.714456, 10.476905, 10.580000 +1.350000, 3.893549, 10.476905, 10.580000 +1.366667, 4.072641, 10.476905, 10.580000 +1.383333, 4.251733, 10.476905, 10.580000 +1.400000, 4.430826, 10.476905, 10.580000 +1.416667, 4.609918, 10.476905, 10.580000 +1.433333, 4.789011, 10.476905, 10.580000 +1.450000, 4.968103, 10.476905, 10.580000 +1.466667, 5.147195, 10.476905, 10.580000 +1.483333, 5.326288, 10.476905, 10.580000 +1.500000, 5.505380, 10.476905, 10.580000 +1.516667, 5.684472, 10.476905, 10.580000 +1.533333, 5.863565, 10.476905, 10.580000 +1.550000, 6.042657, 10.476905, 10.580000 +1.566667, 6.221750, 10.476905, 10.580000 +1.583333, 6.400842, 10.476905, 10.580000 +1.600000, 6.579934, 10.476905, 10.580000 +1.616667, 6.759027, 10.476905, 10.580000 +1.633333, 6.938119, 10.476905, 10.580000 +1.650000, 7.117212, 10.476905, 10.580000 +1.666667, 7.296304, 10.476905, 10.580000 +1.683333, 7.475396, 10.476905, 10.580000 +1.700000, 7.654489, 10.476905, 10.580000 +1.716667, 7.833581, 10.476905, 10.580000 +1.733333, 8.012674, 10.476905, 10.580000 +1.750000, 8.191766, 10.476905, 10.580000 +1.766667, 8.370858, 10.476905, 10.580000 +1.783333, 8.549951, 10.476905, 10.580000 +1.800000, 8.729043, 10.476905, 10.580000 +1.816667, 8.908135, 10.476905, 10.580000 +1.833333, 9.087228, 10.476905, 10.580000 +1.850000, 9.266320, 10.476905, 10.580000 +1.866667, 9.445413, 10.476905, 10.580000 +1.883333, 9.624505, 10.476905, 10.580000 +1.900000, 9.803597, 10.476905, 10.580000 +1.916667, 9.982690, 10.476905, 10.580000 +1.933333, 10.161782, 10.476905, 10.580000 +1.950000, 10.340875, 10.476905, 10.580000 +1.966667, 10.519967, 10.476905, 10.580000 +1.983333, 10.699059, 10.476905, 10.580000 +2.000000, 10.878152, 10.476905, 10.580000 +2.016667, 11.057244, 10.476905, 10.580000 +2.033333, 11.236337, 10.476905, 10.580000 +2.050000, 11.415429, 10.476905, 10.580000 +2.066667, 11.594521, 10.476905, 10.580000 +2.083333, 11.773614, 10.476905, 10.580000 +2.100000, 11.952706, 10.476905, 10.580000 +2.116667, 12.131798, 10.476905, 10.580000 +2.133333, 12.310891, 10.476905, 10.580000 +2.150000, 12.489983, 10.476905, 10.580000 +2.166667, 12.669076, 10.476905, 10.580000 +2.183333, 12.848168, 10.476905, 10.580000 +2.200000, 13.027260, 10.476905, 10.580000 +2.216667, 13.206353, 10.476905, 10.580000 +2.233333, 13.385445, 10.476905, 10.580000 +2.250000, 13.564538, 10.476905, 10.580000 +2.266667, 13.743630, 10.476905, 10.580000 +2.283333, 13.922722, 10.476905, 10.580000 +2.300000, 14.101815, 10.476905, 10.580000 +2.316667, 14.280907, 10.476905, 10.580000 +2.333333, 14.460000, 10.476905, 10.580000 +2.350000, 14.639092, 10.476905, 10.580000 +2.366667, 14.818184, 10.476905, 10.580000 +2.383333, 14.997277, 10.476905, 10.580000 +2.400000, 15.176369, 10.476905, 10.580000 +2.416667, 15.355461, 10.476905, 10.580000 +2.433333, 15.534554, 10.476905, 10.580000 +2.450000, 15.713646, 10.476905, 10.580000 +2.466667, 15.892739, 10.476905, 10.580000 +2.483333, 16.071831, 10.476905, 10.580000 +2.500000, 16.250923, 10.476905, 10.580000 +2.516667, 16.430016, 10.476905, 10.580000 +2.533333, 16.609108, 10.476905, 10.580000 +2.550000, 16.788201, 10.476905, 10.580000 +2.566667, 16.967293, 10.476905, 10.580000 +2.583333, 17.146385, 10.476905, 10.580000 +2.600000, 17.325478, 10.476905, 10.580000 +2.616667, 17.504570, 10.476905, 10.580000 +2.633333, 17.683663, 10.476905, 10.580000 +2.650000, 17.862755, 10.476905, 10.580000 +2.666667, 18.041847, 10.476905, 10.580000 +2.683333, 18.220940, 10.476905, 10.580000 +2.700000, 18.400032, 10.476905, 10.580000 +2.716667, 18.579124, 10.476905, 10.580000 +2.733333, 18.758217, 10.476905, 10.580000 +2.750000, 18.937309, 10.476905, 10.580000 +2.766667, 19.116402, 10.476905, 10.580000 +2.783333, 19.295494, 10.476905, 10.580000 +2.800000, 19.474586, 10.476905, 10.580000 +2.816667, 19.653679, 10.476905, 10.580000 +2.833333, 19.832771, 10.476905, 10.580000 +2.850000, 20.011864, 10.476905, 10.580000 +2.866667, 20.190956, 10.476905, 10.580000 +2.883333, 20.370048, 10.476905, 10.580000 +2.900000, 20.549141, 10.476905, 10.580000 +2.916667, 20.728233, 10.476905, 10.580000 +2.933333, 20.907326, 10.476905, 10.580000 +2.950000, 21.086418, 10.476905, 10.580000 +2.966667, 21.265510, 10.476905, 10.580000 +2.983333, 21.444603, 10.476905, 10.580000 +3.000000, 21.623695, 10.476905, 10.580000 +3.016667, 21.802787, 10.476905, 10.580000 +3.033333, 21.981880, 10.476905, 10.580000 +3.050000, 22.160972, 10.476905, 10.580000 +3.066667, 22.340065, 10.476905, 10.580000 +3.083333, 22.519157, 10.476905, 10.580000 +3.100000, 22.698249, 10.476905, 10.580000 +3.116667, 22.877342, 10.476905, 10.580000 +3.133333, 23.056434, 10.476905, 10.580000 +3.150000, 23.235527, 10.476905, 10.580000 +3.166667, 23.414619, 10.476905, 10.580000 +3.183333, 23.593711, 10.476905, 10.580000 +3.200000, 23.772804, 10.476905, 10.580000 +3.216667, 23.951896, 10.476905, 10.580000 +3.233333, 24.130989, 10.476905, 10.580000 +3.250000, 24.310081, 10.476905, 10.580000 +3.266667, 24.489173, 10.476905, 10.580000 +3.283333, 24.668266, 10.476905, 10.580000 +3.300000, 24.847358, 10.476905, 10.580000 +3.316667, 25.026450, 10.476905, 10.580000 +3.333333, 25.205543, 10.476905, 10.580000 +3.350000, 25.384635, 10.476905, 10.580000 +3.366667, 25.563728, 10.476905, 10.580000 +3.383333, 25.742820, 10.476905, 10.580000 +3.400000, 25.921912, 10.476905, 10.580000 +3.416667, 26.101005, 10.476905, 10.580000 +3.433333, 26.280097, 10.476905, 10.580000 +3.450000, 26.459190, 10.476905, 10.580000 +3.466667, 26.638282, 10.476905, 10.580000 +3.483333, 26.817374, 10.476905, 10.580000 +3.500000, 26.996467, 10.476905, 10.580000 +3.516667, 27.175559, 10.476905, 10.580000 +3.533333, 27.354652, 10.476905, 10.580000 +3.550000, 27.533744, 10.476905, 10.580000 +3.566667, 27.712836, 10.476905, 10.580000 +3.583333, 27.891929, 10.476905, 10.580000 +3.600000, 28.071021, 10.476905, 10.580000 +3.616667, 28.250113, 10.476905, 10.580000 +3.633333, 28.429206, 10.476905, 10.580000 +3.650000, 28.608298, 10.476905, 10.580000 +3.666667, 28.787391, 10.476905, 10.580000 +3.683333, 28.966483, 10.476905, 10.580000 +3.700000, 29.145575, 10.476905, 10.580000 +3.716667, 29.324668, 10.476905, 10.580000 +3.733333, 29.503760, 10.476905, 10.580000 +3.750000, 29.682853, 10.476905, 10.580000 +3.766667, 29.861945, 10.476905, 10.580000 +3.783333, 30.041037, 10.476905, 10.580000 +3.800000, 30.220130, 10.476905, 10.580000 +3.816667, 30.399222, 10.476905, 10.580000 +3.833333, 30.578315, 10.476905, 10.580000 +3.850000, 30.757407, 10.476905, 10.580000 +3.866667, 30.936499, 10.476905, 10.580000 +3.883333, 31.115592, 10.476905, 10.580000 +3.900000, 31.294684, 10.476905, 10.580000 +3.916667, 31.473776, 10.476905, 10.580000 +3.933333, 31.652869, 10.476905, 10.580000 +3.950000, 31.831961, 10.476905, 10.580000 +3.966667, 32.011054, 10.476905, 10.580000 +3.983333, 32.190146, 10.476905, 10.580000 +4.000000, 32.369238, 10.476905, 10.580000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L1_1440_bev300_400kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L1_1440_bev300_400kW.csv new file mode 100644 index 0000000..9508cbc --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L1_1440_bev300_400kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.132128, 7.729480, 7.832727 +1.016667, 0.310559, 10.438204, 10.580000 +1.033333, 0.488990, 10.438204, 10.580000 +1.050000, 0.667420, 10.438204, 10.580000 +1.066667, 0.845851, 10.438204, 10.580000 +1.083333, 1.024282, 10.438204, 10.580000 +1.100000, 1.202713, 10.438204, 10.580000 +1.116667, 1.381144, 10.438204, 10.580000 +1.133333, 1.559575, 10.438204, 10.580000 +1.150000, 1.738005, 10.438204, 10.580000 +1.166667, 1.916436, 10.438204, 10.580000 +1.183333, 2.094867, 10.438204, 10.580000 +1.200000, 2.273298, 10.438204, 10.580000 +1.216667, 2.451729, 10.438204, 10.580000 +1.233333, 2.630160, 10.438204, 10.580000 +1.250000, 2.808590, 10.438204, 10.580000 +1.266667, 2.987021, 10.438204, 10.580000 +1.283333, 3.165452, 10.438204, 10.580000 +1.300000, 3.343883, 10.438204, 10.580000 +1.316667, 3.522314, 10.438204, 10.580000 +1.333333, 3.700745, 10.438204, 10.580000 +1.350000, 3.879176, 10.438204, 10.580000 +1.366667, 4.057606, 10.438204, 10.580000 +1.383333, 4.236037, 10.438204, 10.580000 +1.400000, 4.414468, 10.438204, 10.580000 +1.416667, 4.592899, 10.438204, 10.580000 +1.433333, 4.771330, 10.438204, 10.580000 +1.450000, 4.949761, 10.438204, 10.580000 +1.466667, 5.128191, 10.438204, 10.580000 +1.483333, 5.306622, 10.438204, 10.580000 +1.500000, 5.485053, 10.438204, 10.580000 +1.516667, 5.663484, 10.438204, 10.580000 +1.533333, 5.841915, 10.438204, 10.580000 +1.550000, 6.020346, 10.438204, 10.580000 +1.566667, 6.198777, 10.438204, 10.580000 +1.583333, 6.377207, 10.438204, 10.580000 +1.600000, 6.555638, 10.438204, 10.580000 +1.616667, 6.734069, 10.438204, 10.580000 +1.633333, 6.912500, 10.438204, 10.580000 +1.650000, 7.090931, 10.438204, 10.580000 +1.666667, 7.269362, 10.438204, 10.580000 +1.683333, 7.447792, 10.438204, 10.580000 +1.700000, 7.626223, 10.438204, 10.580000 +1.716667, 7.804654, 10.438204, 10.580000 +1.733333, 7.983085, 10.438204, 10.580000 +1.750000, 8.161516, 10.438204, 10.580000 +1.766667, 8.339947, 10.438204, 10.580000 +1.783333, 8.518377, 10.438204, 10.580000 +1.800000, 8.696808, 10.438204, 10.580000 +1.816667, 8.875239, 10.438204, 10.580000 +1.833333, 9.053670, 10.438204, 10.580000 +1.850000, 9.232101, 10.438204, 10.580000 +1.866667, 9.410532, 10.438204, 10.580000 +1.883333, 9.588963, 10.438204, 10.580000 +1.900000, 9.767393, 10.438204, 10.580000 +1.916667, 9.945824, 10.438204, 10.580000 +1.933333, 10.124255, 10.438204, 10.580000 +1.950000, 10.302686, 10.438204, 10.580000 +1.966667, 10.481117, 10.438204, 10.580000 +1.983333, 10.659548, 10.438204, 10.580000 +2.000000, 10.837978, 10.438204, 10.580000 +2.016667, 11.016409, 10.438204, 10.580000 +2.033333, 11.194840, 10.438204, 10.580000 +2.050000, 11.373271, 10.438204, 10.580000 +2.066667, 11.551702, 10.438204, 10.580000 +2.083333, 11.730133, 10.438204, 10.580000 +2.100000, 11.908563, 10.438204, 10.580000 +2.116667, 12.086994, 10.438204, 10.580000 +2.133333, 12.265425, 10.438204, 10.580000 +2.150000, 12.443856, 10.438204, 10.580000 +2.166667, 12.622287, 10.438204, 10.580000 +2.183333, 12.800718, 10.438204, 10.580000 +2.200000, 12.979149, 10.438204, 10.580000 +2.216667, 13.157579, 10.438204, 10.580000 +2.233333, 13.336010, 10.438204, 10.580000 +2.250000, 13.514441, 10.438204, 10.580000 +2.266667, 13.692872, 10.438204, 10.580000 +2.283333, 13.871303, 10.438204, 10.580000 +2.300000, 14.049734, 10.438204, 10.580000 +2.316667, 14.228164, 10.438204, 10.580000 +2.333333, 14.406595, 10.438204, 10.580000 +2.350000, 14.585026, 10.438204, 10.580000 +2.366667, 14.763457, 10.438204, 10.580000 +2.383333, 14.941888, 10.438204, 10.580000 +2.400000, 15.120319, 10.438204, 10.580000 +2.416667, 15.298749, 10.438204, 10.580000 +2.433333, 15.477180, 10.438204, 10.580000 +2.450000, 15.655611, 10.438204, 10.580000 +2.466667, 15.834042, 10.438204, 10.580000 +2.483333, 16.012473, 10.438204, 10.580000 +2.500000, 16.190904, 10.438204, 10.580000 +2.516667, 16.369335, 10.438204, 10.580000 +2.533333, 16.547765, 10.438204, 10.580000 +2.550000, 16.726196, 10.438204, 10.580000 +2.566667, 16.904627, 10.438204, 10.580000 +2.583333, 17.083058, 10.438204, 10.580000 +2.600000, 17.261489, 10.438204, 10.580000 +2.616667, 17.439920, 10.438204, 10.580000 +2.633333, 17.618350, 10.438204, 10.580000 +2.650000, 17.796781, 10.438204, 10.580000 +2.666667, 17.975212, 10.438204, 10.580000 +2.683333, 18.153643, 10.438204, 10.580000 +2.700000, 18.332074, 10.438204, 10.580000 +2.716667, 18.510505, 10.438204, 10.580000 +2.733333, 18.688935, 10.438204, 10.580000 +2.750000, 18.867366, 10.438204, 10.580000 +2.766667, 19.045797, 10.438204, 10.580000 +2.783333, 19.224228, 10.438204, 10.580000 +2.800000, 19.402659, 10.438204, 10.580000 +2.816667, 19.581090, 10.438204, 10.580000 +2.833333, 19.759521, 10.438204, 10.580000 +2.850000, 19.937951, 10.438204, 10.580000 +2.866667, 20.116382, 10.438204, 10.580000 +2.883333, 20.294813, 10.438204, 10.580000 +2.900000, 20.473244, 10.438204, 10.580000 +2.916667, 20.651675, 10.438204, 10.580000 +2.933333, 20.830106, 10.438204, 10.580000 +2.950000, 21.008536, 10.438204, 10.580000 +2.966667, 21.186967, 10.438204, 10.580000 +2.983333, 21.365398, 10.438204, 10.580000 +3.000000, 21.543829, 10.438204, 10.580000 +3.016667, 21.722260, 10.438204, 10.580000 +3.033333, 21.900691, 10.438204, 10.580000 +3.050000, 22.079121, 10.438204, 10.580000 +3.066667, 22.257552, 10.438204, 10.580000 +3.083333, 22.435983, 10.438204, 10.580000 +3.100000, 22.614414, 10.438204, 10.580000 +3.116667, 22.792845, 10.438204, 10.580000 +3.133333, 22.971276, 10.438204, 10.580000 +3.150000, 23.149707, 10.438204, 10.580000 +3.166667, 23.328137, 10.438204, 10.580000 +3.183333, 23.506568, 10.438204, 10.580000 +3.200000, 23.684999, 10.438204, 10.580000 +3.216667, 23.863430, 10.438204, 10.580000 +3.233333, 24.041861, 10.438204, 10.580000 +3.250000, 24.220292, 10.438204, 10.580000 +3.266667, 24.398722, 10.438204, 10.580000 +3.283333, 24.577153, 10.438204, 10.580000 +3.300000, 24.755584, 10.438204, 10.580000 +3.316667, 24.934015, 10.438204, 10.580000 +3.333333, 25.112446, 10.438204, 10.580000 +3.350000, 25.290877, 10.438204, 10.580000 +3.366667, 25.469307, 10.438204, 10.580000 +3.383333, 25.647738, 10.438204, 10.580000 +3.400000, 25.826169, 10.438204, 10.580000 +3.416667, 26.004600, 10.438204, 10.580000 +3.433333, 26.183031, 10.438204, 10.580000 +3.450000, 26.361462, 10.438204, 10.580000 +3.466667, 26.539893, 10.438204, 10.580000 +3.483333, 26.718323, 10.438204, 10.580000 +3.500000, 26.896754, 10.438204, 10.580000 +3.516667, 27.075185, 10.438204, 10.580000 +3.533333, 27.253616, 10.438204, 10.580000 +3.550000, 27.432047, 10.438204, 10.580000 +3.566667, 27.610478, 10.438204, 10.580000 +3.583333, 27.788908, 10.438204, 10.580000 +3.600000, 27.967339, 10.438204, 10.580000 +3.616667, 28.145770, 10.438204, 10.580000 +3.633333, 28.324201, 10.438204, 10.580000 +3.650000, 28.502632, 10.438204, 10.580000 +3.666667, 28.681063, 10.438204, 10.580000 +3.683333, 28.859494, 10.438204, 10.580000 +3.700000, 29.037924, 10.438204, 10.580000 +3.716667, 29.216355, 10.438204, 10.580000 +3.733333, 29.394786, 10.438204, 10.580000 +3.750000, 29.573217, 10.438204, 10.580000 +3.766667, 29.751648, 10.438204, 10.580000 +3.783333, 29.930079, 10.438204, 10.580000 +3.800000, 30.108509, 10.438204, 10.580000 +3.816667, 30.286940, 10.438204, 10.580000 +3.833333, 30.465371, 10.438204, 10.580000 +3.850000, 30.643802, 10.438204, 10.580000 +3.866667, 30.822233, 10.438204, 10.580000 +3.883333, 31.000664, 10.438204, 10.580000 +3.900000, 31.179094, 10.438204, 10.580000 +3.916667, 31.357525, 10.438204, 10.580000 +3.933333, 31.535956, 10.438204, 10.580000 +3.950000, 31.714387, 10.438204, 10.580000 +3.966667, 31.892818, 10.438204, 10.580000 +3.983333, 32.071249, 10.438204, 10.580000 +4.000000, 32.249680, 10.438204, 10.580000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L1_1440_bev300_575kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L1_1440_bev300_575kW.csv new file mode 100644 index 0000000..15f9d56 --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L1_1440_bev300_575kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.090421, 7.731037, 7.832727 +1.016667, 0.212539, 10.441045, 10.580000 +1.033333, 0.334656, 10.441045, 10.580000 +1.050000, 0.456774, 10.441045, 10.580000 +1.066667, 0.578891, 10.441045, 10.580000 +1.083333, 0.701009, 10.441045, 10.580000 +1.100000, 0.823126, 10.441045, 10.580000 +1.116667, 0.945244, 10.441045, 10.580000 +1.133333, 1.067361, 10.441045, 10.580000 +1.150000, 1.189479, 10.441045, 10.580000 +1.166667, 1.311596, 10.441045, 10.580000 +1.183333, 1.433714, 10.441045, 10.580000 +1.200000, 1.555831, 10.441045, 10.580000 +1.216667, 1.677949, 10.441045, 10.580000 +1.233333, 1.800066, 10.441045, 10.580000 +1.250000, 1.922184, 10.441045, 10.580000 +1.266667, 2.044301, 10.441045, 10.580000 +1.283333, 2.166419, 10.441045, 10.580000 +1.300000, 2.288536, 10.441045, 10.580000 +1.316667, 2.410654, 10.441045, 10.580000 +1.333333, 2.532771, 10.441045, 10.580000 +1.350000, 2.654889, 10.441045, 10.580000 +1.366667, 2.777006, 10.441045, 10.580000 +1.383333, 2.899124, 10.441045, 10.580000 +1.400000, 3.021241, 10.441045, 10.580000 +1.416667, 3.143359, 10.441045, 10.580000 +1.433333, 3.265476, 10.441045, 10.580000 +1.450000, 3.387594, 10.441045, 10.580000 +1.466667, 3.509711, 10.441045, 10.580000 +1.483333, 3.631829, 10.441045, 10.580000 +1.500000, 3.753946, 10.441045, 10.580000 +1.516667, 3.876064, 10.441045, 10.580000 +1.533333, 3.998181, 10.441045, 10.580000 +1.550000, 4.120298, 10.441045, 10.580000 +1.566667, 4.242416, 10.441045, 10.580000 +1.583333, 4.364533, 10.441045, 10.580000 +1.600000, 4.486651, 10.441045, 10.580000 +1.616667, 4.608768, 10.441045, 10.580000 +1.633333, 4.730886, 10.441045, 10.580000 +1.650000, 4.853003, 10.441045, 10.580000 +1.666667, 4.975121, 10.441045, 10.580000 +1.683333, 5.097238, 10.441045, 10.580000 +1.700000, 5.219356, 10.441045, 10.580000 +1.716667, 5.341473, 10.441045, 10.580000 +1.733333, 5.463591, 10.441045, 10.580000 +1.750000, 5.585708, 10.441045, 10.580000 +1.766667, 5.707826, 10.441045, 10.580000 +1.783333, 5.829943, 10.441045, 10.580000 +1.800000, 5.952061, 10.441045, 10.580000 +1.816667, 6.074178, 10.441045, 10.580000 +1.833333, 6.196296, 10.441045, 10.580000 +1.850000, 6.318413, 10.441045, 10.580000 +1.866667, 6.440531, 10.441045, 10.580000 +1.883333, 6.562648, 10.441045, 10.580000 +1.900000, 6.684766, 10.441045, 10.580000 +1.916667, 6.806883, 10.441045, 10.580000 +1.933333, 6.929001, 10.441045, 10.580000 +1.950000, 7.051118, 10.441045, 10.580000 +1.966667, 7.173236, 10.441045, 10.580000 +1.983333, 7.295353, 10.441045, 10.580000 +2.000000, 7.417471, 10.441045, 10.580000 +2.016667, 7.539588, 10.441045, 10.580000 +2.033333, 7.661706, 10.441045, 10.580000 +2.050000, 7.783823, 10.441045, 10.580000 +2.066667, 7.905941, 10.441045, 10.580000 +2.083333, 8.028058, 10.441045, 10.580000 +2.100000, 8.150176, 10.441045, 10.580000 +2.116667, 8.272293, 10.441045, 10.580000 +2.133333, 8.394410, 10.441045, 10.580000 +2.150000, 8.516528, 10.441045, 10.580000 +2.166667, 8.638645, 10.441045, 10.580000 +2.183333, 8.760763, 10.441045, 10.580000 +2.200000, 8.882880, 10.441045, 10.580000 +2.216667, 9.004998, 10.441045, 10.580000 +2.233333, 9.127115, 10.441045, 10.580000 +2.250000, 9.249233, 10.441045, 10.580000 +2.266667, 9.371350, 10.441045, 10.580000 +2.283333, 9.493468, 10.441045, 10.580000 +2.300000, 9.615585, 10.441045, 10.580000 +2.316667, 9.737703, 10.441045, 10.580000 +2.333333, 9.859820, 10.441045, 10.580000 +2.350000, 9.981938, 10.441045, 10.580000 +2.366667, 10.104055, 10.441045, 10.580000 +2.383333, 10.226173, 10.441045, 10.580000 +2.400000, 10.348290, 10.441045, 10.580000 +2.416667, 10.470408, 10.441045, 10.580000 +2.433333, 10.592525, 10.441045, 10.580000 +2.450000, 10.714643, 10.441045, 10.580000 +2.466667, 10.836760, 10.441045, 10.580000 +2.483333, 10.958878, 10.441045, 10.580000 +2.500000, 11.080995, 10.441045, 10.580000 +2.516667, 11.203113, 10.441045, 10.580000 +2.533333, 11.325230, 10.441045, 10.580000 +2.550000, 11.447348, 10.441045, 10.580000 +2.566667, 11.569465, 10.441045, 10.580000 +2.583333, 11.691583, 10.441045, 10.580000 +2.600000, 11.813700, 10.441045, 10.580000 +2.616667, 11.935818, 10.441045, 10.580000 +2.633333, 12.057935, 10.441045, 10.580000 +2.650000, 12.180053, 10.441045, 10.580000 +2.666667, 12.302170, 10.441045, 10.580000 +2.683333, 12.424287, 10.441045, 10.580000 +2.700000, 12.546405, 10.441045, 10.580000 +2.716667, 12.668522, 10.441045, 10.580000 +2.733333, 12.790640, 10.441045, 10.580000 +2.750000, 12.912757, 10.441045, 10.580000 +2.766667, 13.034875, 10.441045, 10.580000 +2.783333, 13.156992, 10.441045, 10.580000 +2.800000, 13.279110, 10.441045, 10.580000 +2.816667, 13.401227, 10.441045, 10.580000 +2.833333, 13.523345, 10.441045, 10.580000 +2.850000, 13.645462, 10.441045, 10.580000 +2.866667, 13.767580, 10.441045, 10.580000 +2.883333, 13.889697, 10.441045, 10.580000 +2.900000, 14.011815, 10.441045, 10.580000 +2.916667, 14.133932, 10.441045, 10.580000 +2.933333, 14.256050, 10.441045, 10.580000 +2.950000, 14.378167, 10.441045, 10.580000 +2.966667, 14.500285, 10.441045, 10.580000 +2.983333, 14.622402, 10.441045, 10.580000 +3.000000, 14.744520, 10.441045, 10.580000 +3.016667, 14.866637, 10.441045, 10.580000 +3.033333, 14.988755, 10.441045, 10.580000 +3.050000, 15.110872, 10.441045, 10.580000 +3.066667, 15.232990, 10.441045, 10.580000 +3.083333, 15.355107, 10.441045, 10.580000 +3.100000, 15.477225, 10.441045, 10.580000 +3.116667, 15.599342, 10.441045, 10.580000 +3.133333, 15.721460, 10.441045, 10.580000 +3.150000, 15.843577, 10.441045, 10.580000 +3.166667, 15.965695, 10.441045, 10.580000 +3.183333, 16.087812, 10.441045, 10.580000 +3.200000, 16.209930, 10.441045, 10.580000 +3.216667, 16.332047, 10.441045, 10.580000 +3.233333, 16.454165, 10.441045, 10.580000 +3.250000, 16.576282, 10.441045, 10.580000 +3.266667, 16.698399, 10.441045, 10.580000 +3.283333, 16.820517, 10.441045, 10.580000 +3.300000, 16.942634, 10.441045, 10.580000 +3.316667, 17.064752, 10.441045, 10.580000 +3.333333, 17.186869, 10.441045, 10.580000 +3.350000, 17.308987, 10.441045, 10.580000 +3.366667, 17.431104, 10.441045, 10.580000 +3.383333, 17.553222, 10.441045, 10.580000 +3.400000, 17.675339, 10.441045, 10.580000 +3.416667, 17.797457, 10.441045, 10.580000 +3.433333, 17.919574, 10.441045, 10.580000 +3.450000, 18.041692, 10.441045, 10.580000 +3.466667, 18.163809, 10.441045, 10.580000 +3.483333, 18.285927, 10.441045, 10.580000 +3.500000, 18.408044, 10.441045, 10.580000 +3.516667, 18.530162, 10.441045, 10.580000 +3.533333, 18.652279, 10.441045, 10.580000 +3.550000, 18.774397, 10.441045, 10.580000 +3.566667, 18.896514, 10.441045, 10.580000 +3.583333, 19.018632, 10.441045, 10.580000 +3.600000, 19.140749, 10.441045, 10.580000 +3.616667, 19.262867, 10.441045, 10.580000 +3.633333, 19.384984, 10.441045, 10.580000 +3.650000, 19.507102, 10.441045, 10.580000 +3.666667, 19.629219, 10.441045, 10.580000 +3.683333, 19.751337, 10.441045, 10.580000 +3.700000, 19.873454, 10.441045, 10.580000 +3.716667, 19.995572, 10.441045, 10.580000 +3.733333, 20.117689, 10.441045, 10.580000 +3.750000, 20.239807, 10.441045, 10.580000 +3.766667, 20.361924, 10.441045, 10.580000 +3.783333, 20.484042, 10.441045, 10.580000 +3.800000, 20.606159, 10.441045, 10.580000 +3.816667, 20.728276, 10.441045, 10.580000 +3.833333, 20.850394, 10.441045, 10.580000 +3.850000, 20.972511, 10.441045, 10.580000 +3.866667, 21.094629, 10.441045, 10.580000 +3.883333, 21.216746, 10.441045, 10.580000 +3.900000, 21.338864, 10.441045, 10.580000 +3.916667, 21.460981, 10.441045, 10.580000 +3.933333, 21.583099, 10.441045, 10.580000 +3.950000, 21.705216, 10.441045, 10.580000 +3.966667, 21.827334, 10.441045, 10.580000 +3.983333, 21.949451, 10.441045, 10.580000 +4.000000, 22.071569, 10.441045, 10.580000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L1_1440_phev20.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L1_1440_phev20.csv new file mode 100644 index 0000000..99cad15 --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L1_1440_phev20.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.860687, 2.582061, 2.613360 +1.016667, 1.853663, 2.978929, 3.016365 +1.033333, 2.846640, 2.978929, 3.016365 +1.050000, 3.839616, 2.978929, 3.016365 +1.066667, 4.832592, 2.978929, 3.016365 +1.083333, 5.825569, 2.978929, 3.016365 +1.100000, 6.818545, 2.978929, 3.016365 +1.116667, 7.811521, 2.978929, 3.016365 +1.133333, 8.804498, 2.978929, 3.016365 +1.150000, 9.797474, 2.978929, 3.016365 +1.166667, 10.790450, 2.978929, 3.016365 +1.183333, 11.783427, 2.978929, 3.016365 +1.200000, 12.776403, 2.978929, 3.016365 +1.216667, 13.769379, 2.978929, 3.016365 +1.233333, 14.762356, 2.978929, 3.016365 +1.250000, 15.755332, 2.978929, 3.016365 +1.266667, 16.748308, 2.978929, 3.016365 +1.283333, 17.741285, 2.978929, 3.016365 +1.300000, 18.734261, 2.978929, 3.016365 +1.316667, 19.727238, 2.978929, 3.016365 +1.333333, 20.720214, 2.978929, 3.016365 +1.350000, 21.713190, 2.978929, 3.016365 +1.366667, 22.706167, 2.978929, 3.016365 +1.383333, 23.699143, 2.978929, 3.016365 +1.400000, 24.692119, 2.978929, 3.016365 +1.416667, 25.685096, 2.978929, 3.016365 +1.433333, 26.678072, 2.978929, 3.016365 +1.450000, 27.671048, 2.978929, 3.016365 +1.466667, 28.664025, 2.978929, 3.016365 +1.483333, 29.657001, 2.978929, 3.016365 +1.500000, 30.649977, 2.978929, 3.016365 +1.516667, 31.642954, 2.978929, 3.016365 +1.533333, 32.635930, 2.978929, 3.016365 +1.550000, 33.628906, 2.978929, 3.016365 +1.566667, 34.621883, 2.978929, 3.016365 +1.583333, 35.614859, 2.978929, 3.016365 +1.600000, 36.607835, 2.978929, 3.016365 +1.616667, 37.600812, 2.978929, 3.016365 +1.633333, 38.593788, 2.978929, 3.016365 +1.650000, 39.586764, 2.978929, 3.016365 +1.666667, 40.579741, 2.978929, 3.016365 +1.683333, 41.572717, 2.978929, 3.016365 +1.700000, 42.565693, 2.978929, 3.016365 +1.716667, 43.558670, 2.978929, 3.016365 +1.733333, 44.551646, 2.978929, 3.016365 +1.750000, 45.544622, 2.978929, 3.016365 +1.766667, 46.537599, 2.978929, 3.016365 +1.783333, 47.530575, 2.978929, 3.016365 +1.800000, 48.523551, 2.978929, 3.016365 +1.816667, 49.516528, 2.978929, 3.016365 +1.833333, 50.509504, 2.978929, 3.016365 +1.850000, 51.502480, 2.978929, 3.016365 +1.866667, 52.495457, 2.978929, 3.016365 +1.883333, 53.488433, 2.978929, 3.016365 +1.900000, 54.481409, 2.978929, 3.016365 +1.916667, 55.474386, 2.978929, 3.016365 +1.933333, 56.467362, 2.978929, 3.016365 +1.950000, 57.460338, 2.978929, 3.016365 +1.966667, 58.453315, 2.978929, 3.016365 +1.983333, 59.446291, 2.978929, 3.016365 +2.000000, 60.439267, 2.978929, 3.016365 +2.016667, 61.432244, 2.978929, 3.016365 +2.033333, 62.425220, 2.978929, 3.016365 +2.050000, 63.418196, 2.978929, 3.016365 +2.066667, 64.411173, 2.978929, 3.016365 +2.083333, 65.404149, 2.978929, 3.016365 +2.100000, 66.397125, 2.978929, 3.016365 +2.116667, 67.390102, 2.978929, 3.016365 +2.133333, 68.383078, 2.978929, 3.016365 +2.150000, 69.376054, 2.978929, 3.016365 +2.166667, 70.369031, 2.978929, 3.016365 +2.183333, 71.362007, 2.978929, 3.016365 +2.200000, 72.354983, 2.978929, 3.016365 +2.216667, 73.347960, 2.978929, 3.016365 +2.233333, 74.340936, 2.978929, 3.016365 +2.250000, 75.333912, 2.978929, 3.016365 +2.266667, 76.326889, 2.978929, 3.016365 +2.283333, 77.319865, 2.978929, 3.016365 +2.300000, 78.312841, 2.978929, 3.016365 +2.316667, 79.305818, 2.978929, 3.016365 +2.333333, 80.298794, 2.978929, 3.016365 +2.350000, 81.291770, 2.978929, 3.016365 +2.366667, 82.284747, 2.978929, 3.016365 +2.383333, 83.277723, 2.978929, 3.016365 +2.400000, 84.270699, 2.978929, 3.016365 +2.416667, 85.263676, 2.978929, 3.016365 +2.433333, 86.256652, 2.978929, 3.016365 +2.450000, 87.249628, 2.978929, 3.016365 +2.466667, 88.242605, 2.978929, 3.016365 +2.483333, 89.235581, 2.978929, 3.016365 +2.500000, 90.228557, 2.978929, 3.016365 +2.516667, 91.221534, 2.978929, 3.016365 +2.533333, 92.214510, 2.978929, 3.016365 +2.550000, 93.207486, 2.978929, 3.016365 +2.566667, 94.200463, 2.978929, 3.016365 +2.583333, 95.193439, 2.978929, 3.016365 +2.600000, 96.166518, 2.919235, 2.955725 +2.616667, 96.987589, 2.463214, 2.492744 +2.633333, 97.657306, 2.009152, 2.032218 +2.650000, 98.203063, 1.637272, 1.655388 +2.666667, 98.647794, 1.334191, 1.348503 +2.683333, 99.010193, 1.087197, 1.098561 +2.700000, 99.305499, 0.885917, 0.894978 +2.716667, 99.546130, 0.721894, 0.729145 +2.733333, 99.742208, 0.588233, 0.594055 +2.750000, 99.801194, 0.176960, 0.178630 +2.766667, 99.801292, 0.000294, 0.000297 +2.783333, 99.801292, 0.000000, 0.000000 +2.800000, 99.801292, 0.000000, 0.000000 +2.816667, 99.801292, 0.000000, 0.000000 +2.833333, 99.801292, 0.000000, 0.000000 +2.850000, 99.801292, 0.000000, 0.000000 +2.866667, 99.801292, 0.000000, 0.000000 +2.883333, 99.801292, 0.000000, 0.000000 +2.900000, 99.801292, 0.000000, 0.000000 +2.916667, 99.801292, 0.000000, 0.000000 +2.933333, 99.801292, 0.000000, 0.000000 +2.950000, 99.801292, 0.000000, 0.000000 +2.966667, 99.801292, 0.000000, 0.000000 +2.983333, 99.801292, 0.000000, 0.000000 +3.000000, 99.801292, 0.000000, 0.000000 +3.016667, 99.801292, 0.000000, 0.000000 +3.033333, 99.801292, 0.000000, 0.000000 +3.050000, 99.801292, 0.000000, 0.000000 +3.066667, 99.801292, 0.000000, 0.000000 +3.083333, 99.801292, 0.000000, 0.000000 +3.100000, 99.801292, 0.000000, 0.000000 +3.116667, 99.801292, 0.000000, 0.000000 +3.133333, 99.801292, 0.000000, 0.000000 +3.150000, 99.801292, 0.000000, 0.000000 +3.166667, 99.801292, 0.000000, 0.000000 +3.183333, 99.801292, 0.000000, 0.000000 +3.200000, 99.801292, 0.000000, 0.000000 +3.216667, 99.801292, 0.000000, 0.000000 +3.233333, 99.801292, 0.000000, 0.000000 +3.250000, 99.801292, 0.000000, 0.000000 +3.266667, 99.801292, 0.000000, 0.000000 +3.283333, 99.801292, 0.000000, 0.000000 +3.300000, 99.801292, 0.000000, 0.000000 +3.316667, 99.801292, 0.000000, 0.000000 +3.333333, 99.801292, 0.000000, 0.000000 +3.350000, 99.801292, 0.000000, 0.000000 +3.366667, 99.801292, 0.000000, 0.000000 +3.383333, 99.801292, 0.000000, 0.000000 +3.400000, 99.801292, 0.000000, 0.000000 +3.416667, 99.801292, 0.000000, 0.000000 +3.433333, 99.801292, 0.000000, 0.000000 +3.450000, 99.801292, 0.000000, 0.000000 +3.466667, 99.801292, 0.000000, 0.000000 +3.483333, 99.801292, 0.000000, 0.000000 +3.500000, 99.801292, 0.000000, 0.000000 +3.516667, 99.801292, 0.000000, 0.000000 +3.533333, 99.801292, 0.000000, 0.000000 +3.550000, 99.801292, 0.000000, 0.000000 +3.566667, 99.801292, 0.000000, 0.000000 +3.583333, 99.801292, 0.000000, 0.000000 +3.600000, 99.801292, 0.000000, 0.000000 +3.616667, 99.801292, 0.000000, 0.000000 +3.633333, 99.801292, 0.000000, 0.000000 +3.650000, 99.801292, 0.000000, 0.000000 +3.666667, 99.801292, 0.000000, 0.000000 +3.683333, 99.801292, 0.000000, 0.000000 +3.700000, 99.801292, 0.000000, 0.000000 +3.716667, 99.801292, 0.000000, 0.000000 +3.733333, 99.801292, 0.000000, 0.000000 +3.750000, 99.801292, 0.000000, 0.000000 +3.766667, 99.801292, 0.000000, 0.000000 +3.783333, 99.801292, 0.000000, 0.000000 +3.800000, 99.801292, 0.000000, 0.000000 +3.816667, 99.801292, 0.000000, 0.000000 +3.833333, 99.801292, 0.000000, 0.000000 +3.850000, 99.801292, 0.000000, 0.000000 +3.866667, 99.801292, 0.000000, 0.000000 +3.883333, 99.801292, 0.000000, 0.000000 +3.900000, 99.801292, 0.000000, 0.000000 +3.916667, 99.801292, 0.000000, 0.000000 +3.933333, 99.801292, 0.000000, 0.000000 +3.950000, 99.801292, 0.000000, 0.000000 +3.966667, 99.801292, 0.000000, 0.000000 +3.983333, 99.801292, 0.000000, 0.000000 +4.000000, 99.801292, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L1_1440_phev50.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L1_1440_phev50.csv new file mode 100644 index 0000000..d83c97e --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L1_1440_phev50.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.269492, 2.587123, 2.613360 +1.016667, 0.580499, 2.985672, 3.016365 +1.033333, 0.891507, 2.985672, 3.016365 +1.050000, 1.202514, 2.985672, 3.016365 +1.066667, 1.513522, 2.985672, 3.016365 +1.083333, 1.824529, 2.985672, 3.016365 +1.100000, 2.135537, 2.985672, 3.016365 +1.116667, 2.446544, 2.985672, 3.016365 +1.133333, 2.757552, 2.985672, 3.016365 +1.150000, 3.068559, 2.985672, 3.016365 +1.166667, 3.379567, 2.985672, 3.016365 +1.183333, 3.690574, 2.985672, 3.016365 +1.200000, 4.001582, 2.985672, 3.016365 +1.216667, 4.312589, 2.985672, 3.016365 +1.233333, 4.623597, 2.985672, 3.016365 +1.250000, 4.934604, 2.985672, 3.016365 +1.266667, 5.245611, 2.985672, 3.016365 +1.283333, 5.556619, 2.985672, 3.016365 +1.300000, 5.867626, 2.985672, 3.016365 +1.316667, 6.178634, 2.985672, 3.016365 +1.333333, 6.489641, 2.985672, 3.016365 +1.350000, 6.800649, 2.985672, 3.016365 +1.366667, 7.111656, 2.985672, 3.016365 +1.383333, 7.422664, 2.985672, 3.016365 +1.400000, 7.733671, 2.985672, 3.016365 +1.416667, 8.044679, 2.985672, 3.016365 +1.433333, 8.355686, 2.985672, 3.016365 +1.450000, 8.666694, 2.985672, 3.016365 +1.466667, 8.977701, 2.985672, 3.016365 +1.483333, 9.288709, 2.985672, 3.016365 +1.500000, 9.599716, 2.985672, 3.016365 +1.516667, 9.910724, 2.985672, 3.016365 +1.533333, 10.221731, 2.985672, 3.016365 +1.550000, 10.532739, 2.985672, 3.016365 +1.566667, 10.843746, 2.985672, 3.016365 +1.583333, 11.154753, 2.985672, 3.016365 +1.600000, 11.465761, 2.985672, 3.016365 +1.616667, 11.776768, 2.985672, 3.016365 +1.633333, 12.087776, 2.985672, 3.016365 +1.650000, 12.398783, 2.985672, 3.016365 +1.666667, 12.709791, 2.985672, 3.016365 +1.683333, 13.020798, 2.985672, 3.016365 +1.700000, 13.331806, 2.985672, 3.016365 +1.716667, 13.642813, 2.985672, 3.016365 +1.733333, 13.953821, 2.985672, 3.016365 +1.750000, 14.264828, 2.985672, 3.016365 +1.766667, 14.575836, 2.985672, 3.016365 +1.783333, 14.886843, 2.985672, 3.016365 +1.800000, 15.197851, 2.985672, 3.016365 +1.816667, 15.508858, 2.985672, 3.016365 +1.833333, 15.819866, 2.985672, 3.016365 +1.850000, 16.130873, 2.985672, 3.016365 +1.866667, 16.441880, 2.985672, 3.016365 +1.883333, 16.752888, 2.985672, 3.016365 +1.900000, 17.063895, 2.985672, 3.016365 +1.916667, 17.374903, 2.985672, 3.016365 +1.933333, 17.685910, 2.985672, 3.016365 +1.950000, 17.996918, 2.985672, 3.016365 +1.966667, 18.307925, 2.985672, 3.016365 +1.983333, 18.618933, 2.985672, 3.016365 +2.000000, 18.929940, 2.985672, 3.016365 +2.016667, 19.240948, 2.985672, 3.016365 +2.033333, 19.551955, 2.985672, 3.016365 +2.050000, 19.862963, 2.985672, 3.016365 +2.066667, 20.173970, 2.985672, 3.016365 +2.083333, 20.484978, 2.985672, 3.016365 +2.100000, 20.795985, 2.985672, 3.016365 +2.116667, 21.106993, 2.985672, 3.016365 +2.133333, 21.418000, 2.985672, 3.016365 +2.150000, 21.729008, 2.985672, 3.016365 +2.166667, 22.040015, 2.985672, 3.016365 +2.183333, 22.351022, 2.985672, 3.016365 +2.200000, 22.662030, 2.985672, 3.016365 +2.216667, 22.973037, 2.985672, 3.016365 +2.233333, 23.284045, 2.985672, 3.016365 +2.250000, 23.595052, 2.985672, 3.016365 +2.266667, 23.906060, 2.985672, 3.016365 +2.283333, 24.217067, 2.985672, 3.016365 +2.300000, 24.528075, 2.985672, 3.016365 +2.316667, 24.839082, 2.985672, 3.016365 +2.333333, 25.150090, 2.985672, 3.016365 +2.350000, 25.461097, 2.985672, 3.016365 +2.366667, 25.772105, 2.985672, 3.016365 +2.383333, 26.083112, 2.985672, 3.016365 +2.400000, 26.394120, 2.985672, 3.016365 +2.416667, 26.705127, 2.985672, 3.016365 +2.433333, 27.016135, 2.985672, 3.016365 +2.450000, 27.327142, 2.985672, 3.016365 +2.466667, 27.638149, 2.985672, 3.016365 +2.483333, 27.949157, 2.985672, 3.016365 +2.500000, 28.260164, 2.985672, 3.016365 +2.516667, 28.571172, 2.985672, 3.016365 +2.533333, 28.882179, 2.985672, 3.016365 +2.550000, 29.193187, 2.985672, 3.016365 +2.566667, 29.504194, 2.985672, 3.016365 +2.583333, 29.815202, 2.985672, 3.016365 +2.600000, 30.126209, 2.985672, 3.016365 +2.616667, 30.437217, 2.985672, 3.016365 +2.633333, 30.748224, 2.985672, 3.016365 +2.650000, 31.059232, 2.985672, 3.016365 +2.666667, 31.370239, 2.985672, 3.016365 +2.683333, 31.681247, 2.985672, 3.016365 +2.700000, 31.992254, 2.985672, 3.016365 +2.716667, 32.303262, 2.985672, 3.016365 +2.733333, 32.614269, 2.985672, 3.016365 +2.750000, 32.925277, 2.985672, 3.016365 +2.766667, 33.236284, 2.985672, 3.016365 +2.783333, 33.547291, 2.985672, 3.016365 +2.800000, 33.858299, 2.985672, 3.016365 +2.816667, 34.169306, 2.985672, 3.016365 +2.833333, 34.480314, 2.985672, 3.016365 +2.850000, 34.791321, 2.985672, 3.016365 +2.866667, 35.102329, 2.985672, 3.016365 +2.883333, 35.413336, 2.985672, 3.016365 +2.900000, 35.724344, 2.985672, 3.016365 +2.916667, 36.035351, 2.985672, 3.016365 +2.933333, 36.346359, 2.985672, 3.016365 +2.950000, 36.657366, 2.985672, 3.016365 +2.966667, 36.968374, 2.985672, 3.016365 +2.983333, 37.279381, 2.985672, 3.016365 +3.000000, 37.590389, 2.985672, 3.016365 +3.016667, 37.901396, 2.985672, 3.016365 +3.033333, 38.212404, 2.985672, 3.016365 +3.050000, 38.523411, 2.985672, 3.016365 +3.066667, 38.834418, 2.985672, 3.016365 +3.083333, 39.145426, 2.985672, 3.016365 +3.100000, 39.456433, 2.985672, 3.016365 +3.116667, 39.767441, 2.985672, 3.016365 +3.133333, 40.078448, 2.985672, 3.016365 +3.150000, 40.389456, 2.985672, 3.016365 +3.166667, 40.700463, 2.985672, 3.016365 +3.183333, 41.011471, 2.985672, 3.016365 +3.200000, 41.322478, 2.985672, 3.016365 +3.216667, 41.633486, 2.985672, 3.016365 +3.233333, 41.944493, 2.985672, 3.016365 +3.250000, 42.255501, 2.985672, 3.016365 +3.266667, 42.566508, 2.985672, 3.016365 +3.283333, 42.877516, 2.985672, 3.016365 +3.300000, 43.188523, 2.985672, 3.016365 +3.316667, 43.499531, 2.985672, 3.016365 +3.333333, 43.810538, 2.985672, 3.016365 +3.350000, 44.121546, 2.985672, 3.016365 +3.366667, 44.432553, 2.985672, 3.016365 +3.383333, 44.743560, 2.985672, 3.016365 +3.400000, 45.054568, 2.985672, 3.016365 +3.416667, 45.365575, 2.985672, 3.016365 +3.433333, 45.676583, 2.985672, 3.016365 +3.450000, 45.987590, 2.985672, 3.016365 +3.466667, 46.298598, 2.985672, 3.016365 +3.483333, 46.609605, 2.985672, 3.016365 +3.500000, 46.920613, 2.985672, 3.016365 +3.516667, 47.231620, 2.985672, 3.016365 +3.533333, 47.542628, 2.985672, 3.016365 +3.550000, 47.853635, 2.985672, 3.016365 +3.566667, 48.164643, 2.985672, 3.016365 +3.583333, 48.475650, 2.985672, 3.016365 +3.600000, 48.786658, 2.985672, 3.016365 +3.616667, 49.097665, 2.985672, 3.016365 +3.633333, 49.408673, 2.985672, 3.016365 +3.650000, 49.719680, 2.985672, 3.016365 +3.666667, 50.030687, 2.985672, 3.016365 +3.683333, 50.341695, 2.985672, 3.016365 +3.700000, 50.652702, 2.985672, 3.016365 +3.716667, 50.963710, 2.985672, 3.016365 +3.733333, 51.274717, 2.985672, 3.016365 +3.750000, 51.585725, 2.985672, 3.016365 +3.766667, 51.896732, 2.985672, 3.016365 +3.783333, 52.207740, 2.985672, 3.016365 +3.800000, 52.518747, 2.985672, 3.016365 +3.816667, 52.829755, 2.985672, 3.016365 +3.833333, 53.140762, 2.985672, 3.016365 +3.850000, 53.451770, 2.985672, 3.016365 +3.866667, 53.762777, 2.985672, 3.016365 +3.883333, 54.073785, 2.985672, 3.016365 +3.900000, 54.384792, 2.985672, 3.016365 +3.916667, 54.695800, 2.985672, 3.016365 +3.933333, 55.006807, 2.985672, 3.016365 +3.950000, 55.317815, 2.985672, 3.016365 +3.966667, 55.628822, 2.985672, 3.016365 +3.983333, 55.939829, 2.985672, 3.016365 +4.000000, 56.250837, 2.985672, 3.016365 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L1_1440_phev_SUV.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L1_1440_phev_SUV.csv new file mode 100644 index 0000000..5756abb --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L1_1440_phev_SUV.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.471804, 6.723201, 6.795930 +1.016667, 1.084674, 8.733401, 8.832000 +1.033333, 1.697544, 8.733401, 8.832000 +1.050000, 2.310414, 8.733401, 8.832000 +1.066667, 2.923285, 8.733401, 8.832000 +1.083333, 3.536155, 8.733401, 8.832000 +1.100000, 4.149025, 8.733401, 8.832000 +1.116667, 4.761896, 8.733401, 8.832000 +1.133333, 5.374766, 8.733401, 8.832000 +1.150000, 5.987636, 8.733401, 8.832000 +1.166667, 6.600506, 8.733401, 8.832000 +1.183333, 7.213377, 8.733401, 8.832000 +1.200000, 7.826247, 8.733401, 8.832000 +1.216667, 8.439117, 8.733401, 8.832000 +1.233333, 9.051987, 8.733401, 8.832000 +1.250000, 9.664858, 8.733401, 8.832000 +1.266667, 10.277728, 8.733401, 8.832000 +1.283333, 10.890598, 8.733401, 8.832000 +1.300000, 11.503469, 8.733401, 8.832000 +1.316667, 12.116339, 8.733401, 8.832000 +1.333333, 12.729209, 8.733401, 8.832000 +1.350000, 13.342079, 8.733401, 8.832000 +1.366667, 13.954950, 8.733401, 8.832000 +1.383333, 14.567820, 8.733401, 8.832000 +1.400000, 15.180690, 8.733401, 8.832000 +1.416667, 15.793560, 8.733401, 8.832000 +1.433333, 16.406431, 8.733401, 8.832000 +1.450000, 17.019301, 8.733401, 8.832000 +1.466667, 17.632171, 8.733401, 8.832000 +1.483333, 18.245042, 8.733401, 8.832000 +1.500000, 18.857912, 8.733401, 8.832000 +1.516667, 19.470782, 8.733401, 8.832000 +1.533333, 20.083652, 8.733401, 8.832000 +1.550000, 20.696523, 8.733401, 8.832000 +1.566667, 21.309393, 8.733401, 8.832000 +1.583333, 21.922263, 8.733401, 8.832000 +1.600000, 22.535134, 8.733401, 8.832000 +1.616667, 23.148004, 8.733401, 8.832000 +1.633333, 23.760874, 8.733401, 8.832000 +1.650000, 24.373744, 8.733401, 8.832000 +1.666667, 24.986615, 8.733401, 8.832000 +1.683333, 25.599485, 8.733401, 8.832000 +1.700000, 26.212355, 8.733401, 8.832000 +1.716667, 26.825225, 8.733401, 8.832000 +1.733333, 27.438096, 8.733401, 8.832000 +1.750000, 28.050966, 8.733401, 8.832000 +1.766667, 28.663836, 8.733401, 8.832000 +1.783333, 29.276707, 8.733401, 8.832000 +1.800000, 29.889577, 8.733401, 8.832000 +1.816667, 30.502447, 8.733401, 8.832000 +1.833333, 31.115317, 8.733401, 8.832000 +1.850000, 31.728188, 8.733401, 8.832000 +1.866667, 32.341058, 8.733401, 8.832000 +1.883333, 32.953928, 8.733401, 8.832000 +1.900000, 33.566798, 8.733401, 8.832000 +1.916667, 34.179669, 8.733401, 8.832000 +1.933333, 34.792539, 8.733401, 8.832000 +1.950000, 35.405409, 8.733401, 8.832000 +1.966667, 36.018280, 8.733401, 8.832000 +1.983333, 36.631150, 8.733401, 8.832000 +2.000000, 37.244020, 8.733401, 8.832000 +2.016667, 37.856890, 8.733401, 8.832000 +2.033333, 38.469761, 8.733401, 8.832000 +2.050000, 39.082631, 8.733401, 8.832000 +2.066667, 39.695501, 8.733401, 8.832000 +2.083333, 40.308372, 8.733401, 8.832000 +2.100000, 40.921242, 8.733401, 8.832000 +2.116667, 41.534112, 8.733401, 8.832000 +2.133333, 42.146982, 8.733401, 8.832000 +2.150000, 42.759853, 8.733401, 8.832000 +2.166667, 43.372723, 8.733401, 8.832000 +2.183333, 43.985593, 8.733401, 8.832000 +2.200000, 44.598463, 8.733401, 8.832000 +2.216667, 45.211334, 8.733401, 8.832000 +2.233333, 45.824204, 8.733401, 8.832000 +2.250000, 46.437074, 8.733401, 8.832000 +2.266667, 47.049945, 8.733401, 8.832000 +2.283333, 47.662815, 8.733401, 8.832000 +2.300000, 48.275685, 8.733401, 8.832000 +2.316667, 48.888555, 8.733401, 8.832000 +2.333333, 49.501426, 8.733401, 8.832000 +2.350000, 50.114296, 8.733401, 8.832000 +2.366667, 50.727166, 8.733401, 8.832000 +2.383333, 51.340036, 8.733401, 8.832000 +2.400000, 51.952907, 8.733401, 8.832000 +2.416667, 52.565777, 8.733401, 8.832000 +2.433333, 53.178647, 8.733401, 8.832000 +2.450000, 53.791518, 8.733401, 8.832000 +2.466667, 54.404388, 8.733401, 8.832000 +2.483333, 55.017258, 8.733401, 8.832000 +2.500000, 55.630128, 8.733401, 8.832000 +2.516667, 56.242999, 8.733401, 8.832000 +2.533333, 56.855869, 8.733401, 8.832000 +2.550000, 57.468739, 8.733401, 8.832000 +2.566667, 58.081610, 8.733401, 8.832000 +2.583333, 58.694480, 8.733401, 8.832000 +2.600000, 59.307350, 8.733401, 8.832000 +2.616667, 59.920220, 8.733401, 8.832000 +2.633333, 60.533091, 8.733401, 8.832000 +2.650000, 61.145961, 8.733401, 8.832000 +2.666667, 61.758831, 8.733401, 8.832000 +2.683333, 62.371701, 8.733401, 8.832000 +2.700000, 62.984572, 8.733401, 8.832000 +2.716667, 63.597442, 8.733401, 8.832000 +2.733333, 64.210312, 8.733401, 8.832000 +2.750000, 64.823183, 8.733401, 8.832000 +2.766667, 65.436053, 8.733401, 8.832000 +2.783333, 66.048923, 8.733401, 8.832000 +2.800000, 66.661793, 8.733401, 8.832000 +2.816667, 67.274664, 8.733401, 8.832000 +2.833333, 67.887534, 8.733401, 8.832000 +2.850000, 68.500404, 8.733401, 8.832000 +2.866667, 69.113274, 8.733401, 8.832000 +2.883333, 69.726145, 8.733401, 8.832000 +2.900000, 70.339015, 8.733401, 8.832000 +2.916667, 70.951885, 8.733401, 8.832000 +2.933333, 71.564756, 8.733401, 8.832000 +2.950000, 72.177626, 8.733401, 8.832000 +2.966667, 72.790496, 8.733401, 8.832000 +2.983333, 73.403366, 8.733401, 8.832000 +3.000000, 74.016237, 8.733401, 8.832000 +3.016667, 74.629107, 8.733401, 8.832000 +3.033333, 75.241977, 8.733401, 8.832000 +3.050000, 75.854848, 8.733401, 8.832000 +3.066667, 76.467718, 8.733401, 8.832000 +3.083333, 77.080588, 8.733401, 8.832000 +3.100000, 77.693458, 8.733401, 8.832000 +3.116667, 78.306329, 8.733401, 8.832000 +3.133333, 78.919199, 8.733401, 8.832000 +3.150000, 79.532069, 8.733401, 8.832000 +3.166667, 80.144939, 8.733401, 8.832000 +3.183333, 80.757810, 8.733401, 8.832000 +3.200000, 81.370680, 8.733401, 8.832000 +3.216667, 81.983550, 8.733401, 8.832000 +3.233333, 82.596421, 8.733401, 8.832000 +3.250000, 83.209291, 8.733401, 8.832000 +3.266667, 83.822161, 8.733401, 8.832000 +3.283333, 84.435031, 8.733401, 8.832000 +3.300000, 85.047902, 8.733401, 8.832000 +3.316667, 85.660772, 8.733401, 8.832000 +3.333333, 86.273642, 8.733401, 8.832000 +3.350000, 86.886512, 8.733401, 8.832000 +3.366667, 87.499383, 8.733401, 8.832000 +3.383333, 88.112253, 8.733401, 8.832000 +3.400000, 88.725123, 8.733401, 8.832000 +3.416667, 89.337994, 8.733401, 8.832000 +3.433333, 89.950864, 8.733401, 8.832000 +3.450000, 90.563734, 8.733401, 8.832000 +3.466667, 91.176604, 8.733401, 8.832000 +3.483333, 91.789475, 8.733401, 8.832000 +3.500000, 92.402345, 8.733401, 8.832000 +3.516667, 93.015215, 8.733401, 8.832000 +3.533333, 93.628086, 8.733401, 8.832000 +3.550000, 94.240956, 8.733401, 8.832000 +3.566667, 94.853826, 8.733401, 8.832000 +3.583333, 95.466696, 8.733401, 8.832000 +3.600000, 96.079567, 8.733401, 8.832000 +3.616667, 96.692437, 8.733401, 8.832000 +3.633333, 97.305307, 8.733401, 8.832000 +3.650000, 97.902505, 8.510070, 8.605700 +3.666667, 98.404489, 7.153268, 7.231371 +3.683333, 98.813565, 5.829341, 5.891177 +3.700000, 99.146361, 4.742341, 4.791438 +3.716667, 99.417175, 3.859102, 3.898256 +3.733333, 99.637606, 3.141131, 3.172474 +3.750000, 99.800885, 2.326733, 2.349506 +3.766667, 99.801219, 0.004761, 0.004805 +3.783333, 99.801219, 0.000000, 0.000000 +3.800000, 99.801219, 0.000000, 0.000000 +3.816667, 99.801219, 0.000000, 0.000000 +3.833333, 99.801219, 0.000000, 0.000000 +3.850000, 99.801219, 0.000000, 0.000000 +3.866667, 99.801219, 0.000000, 0.000000 +3.883333, 99.801219, 0.000000, 0.000000 +3.900000, 99.801219, 0.000000, 0.000000 +3.916667, 99.801219, 0.000000, 0.000000 +3.933333, 99.801219, 0.000000, 0.000000 +3.950000, 99.801219, 0.000000, 0.000000 +3.966667, 99.801219, 0.000000, 0.000000 +3.983333, 99.801219, 0.000000, 0.000000 +4.000000, 99.801219, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_11520_bev150_150kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_11520_bev150_150kW.csv new file mode 100644 index 0000000..4b23e41 --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_11520_bev150_150kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.284910, 7.692571, 7.770982 +1.016667, 0.608679, 8.741761, 8.832000 +1.033333, 0.932448, 8.741761, 8.832000 +1.050000, 1.256217, 8.741761, 8.832000 +1.066667, 1.579986, 8.741761, 8.832000 +1.083333, 1.903755, 8.741761, 8.832000 +1.100000, 2.227524, 8.741761, 8.832000 +1.116667, 2.551292, 8.741761, 8.832000 +1.133333, 2.875061, 8.741761, 8.832000 +1.150000, 3.198830, 8.741761, 8.832000 +1.166667, 3.522599, 8.741761, 8.832000 +1.183333, 3.846368, 8.741761, 8.832000 +1.200000, 4.170137, 8.741761, 8.832000 +1.216667, 4.493906, 8.741761, 8.832000 +1.233333, 4.817675, 8.741761, 8.832000 +1.250000, 5.141444, 8.741761, 8.832000 +1.266667, 5.465213, 8.741761, 8.832000 +1.283333, 5.788982, 8.741761, 8.832000 +1.300000, 6.112750, 8.741761, 8.832000 +1.316667, 6.436519, 8.741761, 8.832000 +1.333333, 6.760288, 8.741761, 8.832000 +1.350000, 7.084057, 8.741761, 8.832000 +1.366667, 7.407826, 8.741761, 8.832000 +1.383333, 7.731595, 8.741761, 8.832000 +1.400000, 8.055364, 8.741761, 8.832000 +1.416667, 8.379133, 8.741761, 8.832000 +1.433333, 8.702902, 8.741761, 8.832000 +1.450000, 9.026671, 8.741761, 8.832000 +1.466667, 9.350440, 8.741761, 8.832000 +1.483333, 9.674209, 8.741761, 8.832000 +1.500000, 9.997977, 8.741761, 8.832000 +1.516667, 10.321746, 8.741761, 8.832000 +1.533333, 10.645515, 8.741761, 8.832000 +1.550000, 10.969284, 8.741761, 8.832000 +1.566667, 11.293053, 8.741761, 8.832000 +1.583333, 11.616822, 8.741761, 8.832000 +1.600000, 11.940591, 8.741761, 8.832000 +1.616667, 12.264360, 8.741761, 8.832000 +1.633333, 12.588129, 8.741761, 8.832000 +1.650000, 12.911898, 8.741761, 8.832000 +1.666667, 13.235667, 8.741761, 8.832000 +1.683333, 13.559435, 8.741761, 8.832000 +1.700000, 13.883204, 8.741761, 8.832000 +1.716667, 14.206973, 8.741761, 8.832000 +1.733333, 14.530742, 8.741761, 8.832000 +1.750000, 14.854511, 8.741761, 8.832000 +1.766667, 15.178280, 8.741761, 8.832000 +1.783333, 15.502049, 8.741761, 8.832000 +1.800000, 15.825818, 8.741761, 8.832000 +1.816667, 16.149587, 8.741761, 8.832000 +1.833333, 16.473356, 8.741761, 8.832000 +1.850000, 16.797125, 8.741761, 8.832000 +1.866667, 17.120894, 8.741761, 8.832000 +1.883333, 17.444662, 8.741761, 8.832000 +1.900000, 17.768431, 8.741761, 8.832000 +1.916667, 18.092200, 8.741761, 8.832000 +1.933333, 18.415969, 8.741761, 8.832000 +1.950000, 18.739738, 8.741761, 8.832000 +1.966667, 19.063507, 8.741761, 8.832000 +1.983333, 19.387276, 8.741761, 8.832000 +2.000000, 19.711045, 8.741761, 8.832000 +2.016667, 20.034814, 8.741761, 8.832000 +2.033333, 20.358583, 8.741761, 8.832000 +2.050000, 20.682352, 8.741761, 8.832000 +2.066667, 21.006120, 8.741761, 8.832000 +2.083333, 21.329889, 8.741761, 8.832000 +2.100000, 21.653658, 8.741761, 8.832000 +2.116667, 21.977427, 8.741761, 8.832000 +2.133333, 22.301196, 8.741761, 8.832000 +2.150000, 22.624965, 8.741761, 8.832000 +2.166667, 22.948734, 8.741761, 8.832000 +2.183333, 23.272503, 8.741761, 8.832000 +2.200000, 23.596272, 8.741761, 8.832000 +2.216667, 23.920041, 8.741761, 8.832000 +2.233333, 24.243810, 8.741761, 8.832000 +2.250000, 24.567579, 8.741761, 8.832000 +2.266667, 24.891347, 8.741761, 8.832000 +2.283333, 25.215116, 8.741761, 8.832000 +2.300000, 25.538885, 8.741761, 8.832000 +2.316667, 25.862654, 8.741761, 8.832000 +2.333333, 26.186423, 8.741761, 8.832000 +2.350000, 26.510192, 8.741761, 8.832000 +2.366667, 26.833961, 8.741761, 8.832000 +2.383333, 27.157730, 8.741761, 8.832000 +2.400000, 27.481499, 8.741761, 8.832000 +2.416667, 27.805268, 8.741761, 8.832000 +2.433333, 28.129037, 8.741761, 8.832000 +2.450000, 28.452805, 8.741761, 8.832000 +2.466667, 28.776574, 8.741761, 8.832000 +2.483333, 29.100343, 8.741761, 8.832000 +2.500000, 29.424112, 8.741761, 8.832000 +2.516667, 29.747881, 8.741761, 8.832000 +2.533333, 30.071650, 8.741761, 8.832000 +2.550000, 30.395419, 8.741761, 8.832000 +2.566667, 30.719188, 8.741761, 8.832000 +2.583333, 31.042957, 8.741761, 8.832000 +2.600000, 31.366726, 8.741761, 8.832000 +2.616667, 31.690495, 8.741761, 8.832000 +2.633333, 32.014263, 8.741761, 8.832000 +2.650000, 32.338032, 8.741761, 8.832000 +2.666667, 32.661801, 8.741761, 8.832000 +2.683333, 32.985570, 8.741761, 8.832000 +2.700000, 33.309339, 8.741761, 8.832000 +2.716667, 33.633108, 8.741761, 8.832000 +2.733333, 33.956877, 8.741761, 8.832000 +2.750000, 34.280646, 8.741761, 8.832000 +2.766667, 34.604415, 8.741761, 8.832000 +2.783333, 34.928184, 8.741761, 8.832000 +2.800000, 35.251953, 8.741761, 8.832000 +2.816667, 35.575722, 8.741761, 8.832000 +2.833333, 35.899490, 8.741761, 8.832000 +2.850000, 36.223259, 8.741761, 8.832000 +2.866667, 36.547028, 8.741761, 8.832000 +2.883333, 36.870797, 8.741761, 8.832000 +2.900000, 37.194566, 8.741761, 8.832000 +2.916667, 37.518335, 8.741761, 8.832000 +2.933333, 37.842104, 8.741761, 8.832000 +2.950000, 38.165873, 8.741761, 8.832000 +2.966667, 38.489642, 8.741761, 8.832000 +2.983333, 38.813411, 8.741761, 8.832000 +3.000000, 39.137180, 8.741761, 8.832000 +3.016667, 39.460948, 8.741761, 8.832000 +3.033333, 39.784717, 8.741761, 8.832000 +3.050000, 40.108486, 8.741761, 8.832000 +3.066667, 40.432255, 8.741761, 8.832000 +3.083333, 40.756024, 8.741761, 8.832000 +3.100000, 41.079793, 8.741761, 8.832000 +3.116667, 41.403562, 8.741761, 8.832000 +3.133333, 41.727331, 8.741761, 8.832000 +3.150000, 42.051100, 8.741761, 8.832000 +3.166667, 42.374869, 8.741761, 8.832000 +3.183333, 42.698638, 8.741761, 8.832000 +3.200000, 43.022407, 8.741761, 8.832000 +3.216667, 43.346175, 8.741761, 8.832000 +3.233333, 43.669944, 8.741761, 8.832000 +3.250000, 43.993713, 8.741761, 8.832000 +3.266667, 44.317482, 8.741761, 8.832000 +3.283333, 44.641251, 8.741761, 8.832000 +3.300000, 44.965020, 8.741761, 8.832000 +3.316667, 45.288789, 8.741761, 8.832000 +3.333333, 45.612558, 8.741761, 8.832000 +3.350000, 45.936327, 8.741761, 8.832000 +3.366667, 46.260096, 8.741761, 8.832000 +3.383333, 46.583865, 8.741761, 8.832000 +3.400000, 46.907633, 8.741761, 8.832000 +3.416667, 47.231402, 8.741761, 8.832000 +3.433333, 47.555171, 8.741761, 8.832000 +3.450000, 47.878940, 8.741761, 8.832000 +3.466667, 48.202709, 8.741761, 8.832000 +3.483333, 48.526478, 8.741761, 8.832000 +3.500000, 48.850247, 8.741761, 8.832000 +3.516667, 49.174016, 8.741761, 8.832000 +3.533333, 49.497785, 8.741761, 8.832000 +3.550000, 49.821554, 8.741761, 8.832000 +3.566667, 50.145323, 8.741761, 8.832000 +3.583333, 50.469092, 8.741761, 8.832000 +3.600000, 50.792860, 8.741761, 8.832000 +3.616667, 51.116629, 8.741761, 8.832000 +3.633333, 51.440398, 8.741761, 8.832000 +3.650000, 51.764167, 8.741761, 8.832000 +3.666667, 52.087936, 8.741761, 8.832000 +3.683333, 52.411705, 8.741761, 8.832000 +3.700000, 52.735474, 8.741761, 8.832000 +3.716667, 53.059243, 8.741761, 8.832000 +3.733333, 53.383012, 8.741761, 8.832000 +3.750000, 53.706781, 8.741761, 8.832000 +3.766667, 54.030550, 8.741761, 8.832000 +3.783333, 54.354318, 8.741761, 8.832000 +3.800000, 54.678087, 8.741761, 8.832000 +3.816667, 55.001856, 8.741761, 8.832000 +3.833333, 55.325625, 8.741761, 8.832000 +3.850000, 55.649394, 8.741761, 8.832000 +3.866667, 55.973163, 8.741761, 8.832000 +3.883333, 56.296932, 8.741761, 8.832000 +3.900000, 56.620701, 8.741761, 8.832000 +3.916667, 56.944470, 8.741761, 8.832000 +3.933333, 57.268239, 8.741761, 8.832000 +3.950000, 57.592008, 8.741761, 8.832000 +3.966667, 57.915777, 8.741761, 8.832000 +3.983333, 58.239545, 8.741761, 8.832000 +4.000000, 58.563314, 8.741761, 8.832000 diff --git a/unittests/test_charging_models/original_dxfc_models/L2_7200_bev150_ld1_50kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_11520_bev150_ld1_50kW.csv similarity index 100% rename from unittests/test_charging_models/original_dxfc_models/L2_7200_bev150_ld1_50kW.csv rename to unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_11520_bev150_ld1_50kW.csv diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_11520_bev200_ld4_150kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_11520_bev200_ld4_150kW.csv new file mode 100644 index 0000000..5708a5d --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_11520_bev200_ld4_150kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.135024, 7.696378, 7.770982 +1.016667, 0.288475, 8.746678, 8.832000 +1.033333, 0.441925, 8.746678, 8.832000 +1.050000, 0.595376, 8.746678, 8.832000 +1.066667, 0.748826, 8.746678, 8.832000 +1.083333, 0.902277, 8.746678, 8.832000 +1.100000, 1.055727, 8.746678, 8.832000 +1.116667, 1.209178, 8.746678, 8.832000 +1.133333, 1.362628, 8.746678, 8.832000 +1.150000, 1.516079, 8.746678, 8.832000 +1.166667, 1.669529, 8.746678, 8.832000 +1.183333, 1.822980, 8.746678, 8.832000 +1.200000, 1.976430, 8.746678, 8.832000 +1.216667, 2.129881, 8.746678, 8.832000 +1.233333, 2.283331, 8.746678, 8.832000 +1.250000, 2.436781, 8.746678, 8.832000 +1.266667, 2.590232, 8.746678, 8.832000 +1.283333, 2.743682, 8.746678, 8.832000 +1.300000, 2.897133, 8.746678, 8.832000 +1.316667, 3.050583, 8.746678, 8.832000 +1.333333, 3.204034, 8.746678, 8.832000 +1.350000, 3.357484, 8.746678, 8.832000 +1.366667, 3.510935, 8.746678, 8.832000 +1.383333, 3.664385, 8.746678, 8.832000 +1.400000, 3.817836, 8.746678, 8.832000 +1.416667, 3.971286, 8.746678, 8.832000 +1.433333, 4.124737, 8.746678, 8.832000 +1.450000, 4.278187, 8.746678, 8.832000 +1.466667, 4.431638, 8.746678, 8.832000 +1.483333, 4.585088, 8.746678, 8.832000 +1.500000, 4.738539, 8.746678, 8.832000 +1.516667, 4.891989, 8.746678, 8.832000 +1.533333, 5.045440, 8.746678, 8.832000 +1.550000, 5.198890, 8.746678, 8.832000 +1.566667, 5.352341, 8.746678, 8.832000 +1.583333, 5.505791, 8.746678, 8.832000 +1.600000, 5.659242, 8.746678, 8.832000 +1.616667, 5.812692, 8.746678, 8.832000 +1.633333, 5.966143, 8.746678, 8.832000 +1.650000, 6.119593, 8.746678, 8.832000 +1.666667, 6.273044, 8.746678, 8.832000 +1.683333, 6.426494, 8.746678, 8.832000 +1.700000, 6.579945, 8.746678, 8.832000 +1.716667, 6.733395, 8.746678, 8.832000 +1.733333, 6.886846, 8.746678, 8.832000 +1.750000, 7.040296, 8.746678, 8.832000 +1.766667, 7.193747, 8.746678, 8.832000 +1.783333, 7.347197, 8.746678, 8.832000 +1.800000, 7.500648, 8.746678, 8.832000 +1.816667, 7.654098, 8.746678, 8.832000 +1.833333, 7.807549, 8.746678, 8.832000 +1.850000, 7.960999, 8.746678, 8.832000 +1.866667, 8.114450, 8.746678, 8.832000 +1.883333, 8.267900, 8.746678, 8.832000 +1.900000, 8.421351, 8.746678, 8.832000 +1.916667, 8.574801, 8.746678, 8.832000 +1.933333, 8.728252, 8.746678, 8.832000 +1.950000, 8.881702, 8.746678, 8.832000 +1.966667, 9.035152, 8.746678, 8.832000 +1.983333, 9.188603, 8.746678, 8.832000 +2.000000, 9.342053, 8.746678, 8.832000 +2.016667, 9.495504, 8.746678, 8.832000 +2.033333, 9.648954, 8.746678, 8.832000 +2.050000, 9.802405, 8.746678, 8.832000 +2.066667, 9.955855, 8.746678, 8.832000 +2.083333, 10.109306, 8.746678, 8.832000 +2.100000, 10.262756, 8.746678, 8.832000 +2.116667, 10.416207, 8.746678, 8.832000 +2.133333, 10.569657, 8.746678, 8.832000 +2.150000, 10.723108, 8.746678, 8.832000 +2.166667, 10.876558, 8.746678, 8.832000 +2.183333, 11.030009, 8.746678, 8.832000 +2.200000, 11.183459, 8.746678, 8.832000 +2.216667, 11.336910, 8.746678, 8.832000 +2.233333, 11.490360, 8.746678, 8.832000 +2.250000, 11.643811, 8.746678, 8.832000 +2.266667, 11.797261, 8.746678, 8.832000 +2.283333, 11.950712, 8.746678, 8.832000 +2.300000, 12.104162, 8.746678, 8.832000 +2.316667, 12.257613, 8.746678, 8.832000 +2.333333, 12.411063, 8.746678, 8.832000 +2.350000, 12.564514, 8.746678, 8.832000 +2.366667, 12.717964, 8.746678, 8.832000 +2.383333, 12.871415, 8.746678, 8.832000 +2.400000, 13.024865, 8.746678, 8.832000 +2.416667, 13.178316, 8.746678, 8.832000 +2.433333, 13.331766, 8.746678, 8.832000 +2.450000, 13.485217, 8.746678, 8.832000 +2.466667, 13.638667, 8.746678, 8.832000 +2.483333, 13.792118, 8.746678, 8.832000 +2.500000, 13.945568, 8.746678, 8.832000 +2.516667, 14.099019, 8.746678, 8.832000 +2.533333, 14.252469, 8.746678, 8.832000 +2.550000, 14.405920, 8.746678, 8.832000 +2.566667, 14.559370, 8.746678, 8.832000 +2.583333, 14.712821, 8.746678, 8.832000 +2.600000, 14.866271, 8.746678, 8.832000 +2.616667, 15.019722, 8.746678, 8.832000 +2.633333, 15.173172, 8.746678, 8.832000 +2.650000, 15.326623, 8.746678, 8.832000 +2.666667, 15.480073, 8.746678, 8.832000 +2.683333, 15.633523, 8.746678, 8.832000 +2.700000, 15.786974, 8.746678, 8.832000 +2.716667, 15.940424, 8.746678, 8.832000 +2.733333, 16.093875, 8.746678, 8.832000 +2.750000, 16.247325, 8.746678, 8.832000 +2.766667, 16.400776, 8.746678, 8.832000 +2.783333, 16.554226, 8.746678, 8.832000 +2.800000, 16.707677, 8.746678, 8.832000 +2.816667, 16.861127, 8.746678, 8.832000 +2.833333, 17.014578, 8.746678, 8.832000 +2.850000, 17.168028, 8.746678, 8.832000 +2.866667, 17.321479, 8.746678, 8.832000 +2.883333, 17.474929, 8.746678, 8.832000 +2.900000, 17.628380, 8.746678, 8.832000 +2.916667, 17.781830, 8.746678, 8.832000 +2.933333, 17.935281, 8.746678, 8.832000 +2.950000, 18.088731, 8.746678, 8.832000 +2.966667, 18.242182, 8.746678, 8.832000 +2.983333, 18.395632, 8.746678, 8.832000 +3.000000, 18.549083, 8.746678, 8.832000 +3.016667, 18.702533, 8.746678, 8.832000 +3.033333, 18.855984, 8.746678, 8.832000 +3.050000, 19.009434, 8.746678, 8.832000 +3.066667, 19.162885, 8.746678, 8.832000 +3.083333, 19.316335, 8.746678, 8.832000 +3.100000, 19.469786, 8.746678, 8.832000 +3.116667, 19.623236, 8.746678, 8.832000 +3.133333, 19.776687, 8.746678, 8.832000 +3.150000, 19.930137, 8.746678, 8.832000 +3.166667, 20.083588, 8.746678, 8.832000 +3.183333, 20.237038, 8.746678, 8.832000 +3.200000, 20.390489, 8.746678, 8.832000 +3.216667, 20.543939, 8.746678, 8.832000 +3.233333, 20.697390, 8.746678, 8.832000 +3.250000, 20.850840, 8.746678, 8.832000 +3.266667, 21.004291, 8.746678, 8.832000 +3.283333, 21.157741, 8.746678, 8.832000 +3.300000, 21.311192, 8.746678, 8.832000 +3.316667, 21.464642, 8.746678, 8.832000 +3.333333, 21.618093, 8.746678, 8.832000 +3.350000, 21.771543, 8.746678, 8.832000 +3.366667, 21.924994, 8.746678, 8.832000 +3.383333, 22.078444, 8.746678, 8.832000 +3.400000, 22.231894, 8.746678, 8.832000 +3.416667, 22.385345, 8.746678, 8.832000 +3.433333, 22.538795, 8.746678, 8.832000 +3.450000, 22.692246, 8.746678, 8.832000 +3.466667, 22.845696, 8.746678, 8.832000 +3.483333, 22.999147, 8.746678, 8.832000 +3.500000, 23.152597, 8.746678, 8.832000 +3.516667, 23.306048, 8.746678, 8.832000 +3.533333, 23.459498, 8.746678, 8.832000 +3.550000, 23.612949, 8.746678, 8.832000 +3.566667, 23.766399, 8.746678, 8.832000 +3.583333, 23.919850, 8.746678, 8.832000 +3.600000, 24.073300, 8.746678, 8.832000 +3.616667, 24.226751, 8.746678, 8.832000 +3.633333, 24.380201, 8.746678, 8.832000 +3.650000, 24.533652, 8.746678, 8.832000 +3.666667, 24.687102, 8.746678, 8.832000 +3.683333, 24.840553, 8.746678, 8.832000 +3.700000, 24.994003, 8.746678, 8.832000 +3.716667, 25.147454, 8.746678, 8.832000 +3.733333, 25.300904, 8.746678, 8.832000 +3.750000, 25.454355, 8.746678, 8.832000 +3.766667, 25.607805, 8.746678, 8.832000 +3.783333, 25.761256, 8.746678, 8.832000 +3.800000, 25.914706, 8.746678, 8.832000 +3.816667, 26.068157, 8.746678, 8.832000 +3.833333, 26.221607, 8.746678, 8.832000 +3.850000, 26.375058, 8.746678, 8.832000 +3.866667, 26.528508, 8.746678, 8.832000 +3.883333, 26.681959, 8.746678, 8.832000 +3.900000, 26.835409, 8.746678, 8.832000 +3.916667, 26.988860, 8.746678, 8.832000 +3.933333, 27.142310, 8.746678, 8.832000 +3.950000, 27.295761, 8.746678, 8.832000 +3.966667, 27.449211, 8.746678, 8.832000 +3.983333, 27.602662, 8.746678, 8.832000 +4.000000, 27.756112, 8.746678, 8.832000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_11520_bev250_350kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_11520_bev250_350kW.csv new file mode 100644 index 0000000..d43538c --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_11520_bev250_350kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.128276, 9.143505, 9.231932 +1.016667, 0.275274, 10.478014, 10.580000 +1.033333, 0.422272, 10.478014, 10.580000 +1.050000, 0.569270, 10.478014, 10.580000 +1.066667, 0.716268, 10.478014, 10.580000 +1.083333, 0.863266, 10.478014, 10.580000 +1.100000, 1.010264, 10.478014, 10.580000 +1.116667, 1.157262, 10.478014, 10.580000 +1.133333, 1.304260, 10.478014, 10.580000 +1.150000, 1.451257, 10.478014, 10.580000 +1.166667, 1.598255, 10.478014, 10.580000 +1.183333, 1.745253, 10.478014, 10.580000 +1.200000, 1.892251, 10.478014, 10.580000 +1.216667, 2.039249, 10.478014, 10.580000 +1.233333, 2.186247, 10.478014, 10.580000 +1.250000, 2.333245, 10.478014, 10.580000 +1.266667, 2.480243, 10.478014, 10.580000 +1.283333, 2.627241, 10.478014, 10.580000 +1.300000, 2.774239, 10.478014, 10.580000 +1.316667, 2.921237, 10.478014, 10.580000 +1.333333, 3.068235, 10.478014, 10.580000 +1.350000, 3.215233, 10.478014, 10.580000 +1.366667, 3.362231, 10.478014, 10.580000 +1.383333, 3.509229, 10.478014, 10.580000 +1.400000, 3.656227, 10.478014, 10.580000 +1.416667, 3.803225, 10.478014, 10.580000 +1.433333, 3.950223, 10.478014, 10.580000 +1.450000, 4.097221, 10.478014, 10.580000 +1.466667, 4.244219, 10.478014, 10.580000 +1.483333, 4.391217, 10.478014, 10.580000 +1.500000, 4.538215, 10.478014, 10.580000 +1.516667, 4.685212, 10.478014, 10.580000 +1.533333, 4.832210, 10.478014, 10.580000 +1.550000, 4.979208, 10.478014, 10.580000 +1.566667, 5.126206, 10.478014, 10.580000 +1.583333, 5.273204, 10.478014, 10.580000 +1.600000, 5.420202, 10.478014, 10.580000 +1.616667, 5.567200, 10.478014, 10.580000 +1.633333, 5.714198, 10.478014, 10.580000 +1.650000, 5.861196, 10.478014, 10.580000 +1.666667, 6.008194, 10.478014, 10.580000 +1.683333, 6.155192, 10.478014, 10.580000 +1.700000, 6.302190, 10.478014, 10.580000 +1.716667, 6.449188, 10.478014, 10.580000 +1.733333, 6.596186, 10.478014, 10.580000 +1.750000, 6.743184, 10.478014, 10.580000 +1.766667, 6.890182, 10.478014, 10.580000 +1.783333, 7.037180, 10.478014, 10.580000 +1.800000, 7.184178, 10.478014, 10.580000 +1.816667, 7.331176, 10.478014, 10.580000 +1.833333, 7.478174, 10.478014, 10.580000 +1.850000, 7.625172, 10.478014, 10.580000 +1.866667, 7.772170, 10.478014, 10.580000 +1.883333, 7.919167, 10.478014, 10.580000 +1.900000, 8.066165, 10.478014, 10.580000 +1.916667, 8.213163, 10.478014, 10.580000 +1.933333, 8.360161, 10.478014, 10.580000 +1.950000, 8.507159, 10.478014, 10.580000 +1.966667, 8.654157, 10.478014, 10.580000 +1.983333, 8.801155, 10.478014, 10.580000 +2.000000, 8.948153, 10.478014, 10.580000 +2.016667, 9.095151, 10.478014, 10.580000 +2.033333, 9.242149, 10.478014, 10.580000 +2.050000, 9.389147, 10.478014, 10.580000 +2.066667, 9.536145, 10.478014, 10.580000 +2.083333, 9.683143, 10.478014, 10.580000 +2.100000, 9.830141, 10.478014, 10.580000 +2.116667, 9.977139, 10.478014, 10.580000 +2.133333, 10.124137, 10.478014, 10.580000 +2.150000, 10.271135, 10.478014, 10.580000 +2.166667, 10.418133, 10.478014, 10.580000 +2.183333, 10.565131, 10.478014, 10.580000 +2.200000, 10.712129, 10.478014, 10.580000 +2.216667, 10.859127, 10.478014, 10.580000 +2.233333, 11.006124, 10.478014, 10.580000 +2.250000, 11.153122, 10.478014, 10.580000 +2.266667, 11.300120, 10.478014, 10.580000 +2.283333, 11.447118, 10.478014, 10.580000 +2.300000, 11.594116, 10.478014, 10.580000 +2.316667, 11.741114, 10.478014, 10.580000 +2.333333, 11.888112, 10.478014, 10.580000 +2.350000, 12.035110, 10.478014, 10.580000 +2.366667, 12.182108, 10.478014, 10.580000 +2.383333, 12.329106, 10.478014, 10.580000 +2.400000, 12.476104, 10.478014, 10.580000 +2.416667, 12.623102, 10.478014, 10.580000 +2.433333, 12.770100, 10.478014, 10.580000 +2.450000, 12.917098, 10.478014, 10.580000 +2.466667, 13.064096, 10.478014, 10.580000 +2.483333, 13.211094, 10.478014, 10.580000 +2.500000, 13.358092, 10.478014, 10.580000 +2.516667, 13.505090, 10.478014, 10.580000 +2.533333, 13.652088, 10.478014, 10.580000 +2.550000, 13.799086, 10.478014, 10.580000 +2.566667, 13.946084, 10.478014, 10.580000 +2.583333, 14.093082, 10.478014, 10.580000 +2.600000, 14.240079, 10.478014, 10.580000 +2.616667, 14.387077, 10.478014, 10.580000 +2.633333, 14.534075, 10.478014, 10.580000 +2.650000, 14.681073, 10.478014, 10.580000 +2.666667, 14.828071, 10.478014, 10.580000 +2.683333, 14.975069, 10.478014, 10.580000 +2.700000, 15.122067, 10.478014, 10.580000 +2.716667, 15.269065, 10.478014, 10.580000 +2.733333, 15.416063, 10.478014, 10.580000 +2.750000, 15.563061, 10.478014, 10.580000 +2.766667, 15.710059, 10.478014, 10.580000 +2.783333, 15.857057, 10.478014, 10.580000 +2.800000, 16.004055, 10.478014, 10.580000 +2.816667, 16.151053, 10.478014, 10.580000 +2.833333, 16.298051, 10.478014, 10.580000 +2.850000, 16.445049, 10.478014, 10.580000 +2.866667, 16.592047, 10.478014, 10.580000 +2.883333, 16.739045, 10.478014, 10.580000 +2.900000, 16.886043, 10.478014, 10.580000 +2.916667, 17.033041, 10.478014, 10.580000 +2.933333, 17.180039, 10.478014, 10.580000 +2.950000, 17.327037, 10.478014, 10.580000 +2.966667, 17.474034, 10.478014, 10.580000 +2.983333, 17.621032, 10.478014, 10.580000 +3.000000, 17.768030, 10.478014, 10.580000 +3.016667, 17.915028, 10.478014, 10.580000 +3.033333, 18.062026, 10.478014, 10.580000 +3.050000, 18.209024, 10.478014, 10.580000 +3.066667, 18.356022, 10.478014, 10.580000 +3.083333, 18.503020, 10.478014, 10.580000 +3.100000, 18.650018, 10.478014, 10.580000 +3.116667, 18.797016, 10.478014, 10.580000 +3.133333, 18.944014, 10.478014, 10.580000 +3.150000, 19.091012, 10.478014, 10.580000 +3.166667, 19.238010, 10.478014, 10.580000 +3.183333, 19.385008, 10.478014, 10.580000 +3.200000, 19.532006, 10.478014, 10.580000 +3.216667, 19.679004, 10.478014, 10.580000 +3.233333, 19.826002, 10.478014, 10.580000 +3.250000, 19.973000, 10.478014, 10.580000 +3.266667, 20.119998, 10.478014, 10.580000 +3.283333, 20.266996, 10.478014, 10.580000 +3.300000, 20.413994, 10.478014, 10.580000 +3.316667, 20.560992, 10.478014, 10.580000 +3.333333, 20.707989, 10.478014, 10.580000 +3.350000, 20.854987, 10.478014, 10.580000 +3.366667, 21.001985, 10.478014, 10.580000 +3.383333, 21.148983, 10.478014, 10.580000 +3.400000, 21.295981, 10.478014, 10.580000 +3.416667, 21.442979, 10.478014, 10.580000 +3.433333, 21.589977, 10.478014, 10.580000 +3.450000, 21.736975, 10.478014, 10.580000 +3.466667, 21.883973, 10.478014, 10.580000 +3.483333, 22.030971, 10.478014, 10.580000 +3.500000, 22.177969, 10.478014, 10.580000 +3.516667, 22.324967, 10.478014, 10.580000 +3.533333, 22.471965, 10.478014, 10.580000 +3.550000, 22.618963, 10.478014, 10.580000 +3.566667, 22.765961, 10.478014, 10.580000 +3.583333, 22.912959, 10.478014, 10.580000 +3.600000, 23.059957, 10.478014, 10.580000 +3.616667, 23.206955, 10.478014, 10.580000 +3.633333, 23.353953, 10.478014, 10.580000 +3.650000, 23.500951, 10.478014, 10.580000 +3.666667, 23.647949, 10.478014, 10.580000 +3.683333, 23.794947, 10.478014, 10.580000 +3.700000, 23.941944, 10.478014, 10.580000 +3.716667, 24.088942, 10.478014, 10.580000 +3.733333, 24.235940, 10.478014, 10.580000 +3.750000, 24.382938, 10.478014, 10.580000 +3.766667, 24.529936, 10.478014, 10.580000 +3.783333, 24.676934, 10.478014, 10.580000 +3.800000, 24.823932, 10.478014, 10.580000 +3.816667, 24.970930, 10.478014, 10.580000 +3.833333, 25.117928, 10.478014, 10.580000 +3.850000, 25.264926, 10.478014, 10.580000 +3.866667, 25.411924, 10.478014, 10.580000 +3.883333, 25.558922, 10.478014, 10.580000 +3.900000, 25.705920, 10.478014, 10.580000 +3.916667, 25.852918, 10.478014, 10.580000 +3.933333, 25.999916, 10.478014, 10.580000 +3.950000, 26.146914, 10.478014, 10.580000 +3.966667, 26.293912, 10.478014, 10.580000 +3.983333, 26.440910, 10.478014, 10.580000 +4.000000, 26.587908, 10.478014, 10.580000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_11520_bev250_400kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_11520_bev250_400kW.csv new file mode 100644 index 0000000..d46a87e --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_11520_bev250_400kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.173494, 9.108420, 9.231932 +1.016667, 0.372297, 10.437176, 10.580000 +1.033333, 0.571100, 10.437176, 10.580000 +1.050000, 0.769904, 10.437176, 10.580000 +1.066667, 0.968707, 10.437176, 10.580000 +1.083333, 1.167511, 10.437176, 10.580000 +1.100000, 1.366314, 10.437176, 10.580000 +1.116667, 1.565117, 10.437176, 10.580000 +1.133333, 1.763921, 10.437176, 10.580000 +1.150000, 1.962724, 10.437176, 10.580000 +1.166667, 2.161527, 10.437176, 10.580000 +1.183333, 2.360331, 10.437176, 10.580000 +1.200000, 2.559134, 10.437176, 10.580000 +1.216667, 2.757937, 10.437176, 10.580000 +1.233333, 2.956741, 10.437176, 10.580000 +1.250000, 3.155544, 10.437176, 10.580000 +1.266667, 3.354347, 10.437176, 10.580000 +1.283333, 3.553151, 10.437176, 10.580000 +1.300000, 3.751954, 10.437176, 10.580000 +1.316667, 3.950757, 10.437176, 10.580000 +1.333333, 4.149561, 10.437176, 10.580000 +1.350000, 4.348364, 10.437176, 10.580000 +1.366667, 4.547168, 10.437176, 10.580000 +1.383333, 4.745971, 10.437176, 10.580000 +1.400000, 4.944774, 10.437176, 10.580000 +1.416667, 5.143578, 10.437176, 10.580000 +1.433333, 5.342381, 10.437176, 10.580000 +1.450000, 5.541184, 10.437176, 10.580000 +1.466667, 5.739988, 10.437176, 10.580000 +1.483333, 5.938791, 10.437176, 10.580000 +1.500000, 6.137594, 10.437176, 10.580000 +1.516667, 6.336398, 10.437176, 10.580000 +1.533333, 6.535201, 10.437176, 10.580000 +1.550000, 6.734004, 10.437176, 10.580000 +1.566667, 6.932808, 10.437176, 10.580000 +1.583333, 7.131611, 10.437176, 10.580000 +1.600000, 7.330415, 10.437176, 10.580000 +1.616667, 7.529218, 10.437176, 10.580000 +1.633333, 7.728021, 10.437176, 10.580000 +1.650000, 7.926825, 10.437176, 10.580000 +1.666667, 8.125628, 10.437176, 10.580000 +1.683333, 8.324431, 10.437176, 10.580000 +1.700000, 8.523235, 10.437176, 10.580000 +1.716667, 8.722038, 10.437176, 10.580000 +1.733333, 8.920841, 10.437176, 10.580000 +1.750000, 9.119645, 10.437176, 10.580000 +1.766667, 9.318448, 10.437176, 10.580000 +1.783333, 9.517251, 10.437176, 10.580000 +1.800000, 9.716055, 10.437176, 10.580000 +1.816667, 9.914858, 10.437176, 10.580000 +1.833333, 10.113662, 10.437176, 10.580000 +1.850000, 10.312465, 10.437176, 10.580000 +1.866667, 10.511268, 10.437176, 10.580000 +1.883333, 10.710072, 10.437176, 10.580000 +1.900000, 10.908875, 10.437176, 10.580000 +1.916667, 11.107678, 10.437176, 10.580000 +1.933333, 11.306482, 10.437176, 10.580000 +1.950000, 11.505285, 10.437176, 10.580000 +1.966667, 11.704088, 10.437176, 10.580000 +1.983333, 11.902892, 10.437176, 10.580000 +2.000000, 12.101695, 10.437176, 10.580000 +2.016667, 12.300498, 10.437176, 10.580000 +2.033333, 12.499302, 10.437176, 10.580000 +2.050000, 12.698105, 10.437176, 10.580000 +2.066667, 12.896909, 10.437176, 10.580000 +2.083333, 13.095712, 10.437176, 10.580000 +2.100000, 13.294515, 10.437176, 10.580000 +2.116667, 13.493319, 10.437176, 10.580000 +2.133333, 13.692122, 10.437176, 10.580000 +2.150000, 13.890925, 10.437176, 10.580000 +2.166667, 14.089729, 10.437176, 10.580000 +2.183333, 14.288532, 10.437176, 10.580000 +2.200000, 14.487335, 10.437176, 10.580000 +2.216667, 14.686139, 10.437176, 10.580000 +2.233333, 14.884942, 10.437176, 10.580000 +2.250000, 15.083745, 10.437176, 10.580000 +2.266667, 15.282549, 10.437176, 10.580000 +2.283333, 15.481352, 10.437176, 10.580000 +2.300000, 15.680156, 10.437176, 10.580000 +2.316667, 15.878959, 10.437176, 10.580000 +2.333333, 16.077762, 10.437176, 10.580000 +2.350000, 16.276566, 10.437176, 10.580000 +2.366667, 16.475369, 10.437176, 10.580000 +2.383333, 16.674172, 10.437176, 10.580000 +2.400000, 16.872976, 10.437176, 10.580000 +2.416667, 17.071779, 10.437176, 10.580000 +2.433333, 17.270582, 10.437176, 10.580000 +2.450000, 17.469386, 10.437176, 10.580000 +2.466667, 17.668189, 10.437176, 10.580000 +2.483333, 17.866992, 10.437176, 10.580000 +2.500000, 18.065796, 10.437176, 10.580000 +2.516667, 18.264599, 10.437176, 10.580000 +2.533333, 18.463403, 10.437176, 10.580000 +2.550000, 18.662206, 10.437176, 10.580000 +2.566667, 18.861009, 10.437176, 10.580000 +2.583333, 19.059813, 10.437176, 10.580000 +2.600000, 19.258616, 10.437176, 10.580000 +2.616667, 19.457419, 10.437176, 10.580000 +2.633333, 19.656223, 10.437176, 10.580000 +2.650000, 19.855026, 10.437176, 10.580000 +2.666667, 20.053829, 10.437176, 10.580000 +2.683333, 20.252633, 10.437176, 10.580000 +2.700000, 20.451436, 10.437176, 10.580000 +2.716667, 20.650239, 10.437176, 10.580000 +2.733333, 20.849043, 10.437176, 10.580000 +2.750000, 21.047846, 10.437176, 10.580000 +2.766667, 21.246650, 10.437176, 10.580000 +2.783333, 21.445453, 10.437176, 10.580000 +2.800000, 21.644256, 10.437176, 10.580000 +2.816667, 21.843060, 10.437176, 10.580000 +2.833333, 22.041863, 10.437176, 10.580000 +2.850000, 22.240666, 10.437176, 10.580000 +2.866667, 22.439470, 10.437176, 10.580000 +2.883333, 22.638273, 10.437176, 10.580000 +2.900000, 22.837076, 10.437176, 10.580000 +2.916667, 23.035880, 10.437176, 10.580000 +2.933333, 23.234683, 10.437176, 10.580000 +2.950000, 23.433486, 10.437176, 10.580000 +2.966667, 23.632290, 10.437176, 10.580000 +2.983333, 23.831093, 10.437176, 10.580000 +3.000000, 24.029897, 10.437176, 10.580000 +3.016667, 24.228700, 10.437176, 10.580000 +3.033333, 24.427503, 10.437176, 10.580000 +3.050000, 24.626307, 10.437176, 10.580000 +3.066667, 24.825110, 10.437176, 10.580000 +3.083333, 25.023913, 10.437176, 10.580000 +3.100000, 25.222717, 10.437176, 10.580000 +3.116667, 25.421520, 10.437176, 10.580000 +3.133333, 25.620323, 10.437176, 10.580000 +3.150000, 25.819127, 10.437176, 10.580000 +3.166667, 26.017930, 10.437176, 10.580000 +3.183333, 26.216733, 10.437176, 10.580000 +3.200000, 26.415537, 10.437176, 10.580000 +3.216667, 26.614340, 10.437176, 10.580000 +3.233333, 26.813144, 10.437176, 10.580000 +3.250000, 27.011947, 10.437176, 10.580000 +3.266667, 27.210750, 10.437176, 10.580000 +3.283333, 27.409554, 10.437176, 10.580000 +3.300000, 27.608357, 10.437176, 10.580000 +3.316667, 27.807160, 10.437176, 10.580000 +3.333333, 28.005964, 10.437176, 10.580000 +3.350000, 28.204767, 10.437176, 10.580000 +3.366667, 28.403570, 10.437176, 10.580000 +3.383333, 28.602374, 10.437176, 10.580000 +3.400000, 28.801177, 10.437176, 10.580000 +3.416667, 28.999980, 10.437176, 10.580000 +3.433333, 29.198784, 10.437176, 10.580000 +3.450000, 29.397587, 10.437176, 10.580000 +3.466667, 29.596391, 10.437176, 10.580000 +3.483333, 29.795194, 10.437176, 10.580000 +3.500000, 29.993997, 10.437176, 10.580000 +3.516667, 30.192801, 10.437176, 10.580000 +3.533333, 30.391604, 10.437176, 10.580000 +3.550000, 30.590407, 10.437176, 10.580000 +3.566667, 30.789211, 10.437176, 10.580000 +3.583333, 30.988014, 10.437176, 10.580000 +3.600000, 31.186817, 10.437176, 10.580000 +3.616667, 31.385621, 10.437176, 10.580000 +3.633333, 31.584424, 10.437176, 10.580000 +3.650000, 31.783227, 10.437176, 10.580000 +3.666667, 31.982031, 10.437176, 10.580000 +3.683333, 32.180834, 10.437176, 10.580000 +3.700000, 32.379637, 10.437176, 10.580000 +3.716667, 32.578441, 10.437176, 10.580000 +3.733333, 32.777244, 10.437176, 10.580000 +3.750000, 32.976048, 10.437176, 10.580000 +3.766667, 33.174851, 10.437176, 10.580000 +3.783333, 33.373654, 10.437176, 10.580000 +3.800000, 33.572458, 10.437176, 10.580000 +3.816667, 33.771261, 10.437176, 10.580000 +3.833333, 33.970064, 10.437176, 10.580000 +3.850000, 34.168868, 10.437176, 10.580000 +3.866667, 34.367671, 10.437176, 10.580000 +3.883333, 34.566474, 10.437176, 10.580000 +3.900000, 34.765278, 10.437176, 10.580000 +3.916667, 34.964081, 10.437176, 10.580000 +3.933333, 35.162884, 10.437176, 10.580000 +3.950000, 35.361688, 10.437176, 10.580000 +3.966667, 35.560491, 10.437176, 10.580000 +3.983333, 35.759295, 10.437176, 10.580000 +4.000000, 35.958098, 10.437176, 10.580000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_11520_bev250_ld1_75kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_11520_bev250_ld1_75kW.csv new file mode 100644 index 0000000..a18d99c --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_11520_bev250_ld1_75kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.119127, 5.360699, 5.412378 +1.016667, 0.252765, 6.013734, 6.072000 +1.033333, 0.386404, 6.013734, 6.072000 +1.050000, 0.520042, 6.013734, 6.072000 +1.066667, 0.653681, 6.013734, 6.072000 +1.083333, 0.787319, 6.013734, 6.072000 +1.100000, 0.920958, 6.013734, 6.072000 +1.116667, 1.054596, 6.013734, 6.072000 +1.133333, 1.188235, 6.013734, 6.072000 +1.150000, 1.321873, 6.013734, 6.072000 +1.166667, 1.455512, 6.013734, 6.072000 +1.183333, 1.589151, 6.013734, 6.072000 +1.200000, 1.722789, 6.013734, 6.072000 +1.216667, 1.856428, 6.013734, 6.072000 +1.233333, 1.990066, 6.013734, 6.072000 +1.250000, 2.123705, 6.013734, 6.072000 +1.266667, 2.257343, 6.013734, 6.072000 +1.283333, 2.390982, 6.013734, 6.072000 +1.300000, 2.524620, 6.013734, 6.072000 +1.316667, 2.658259, 6.013734, 6.072000 +1.333333, 2.791897, 6.013734, 6.072000 +1.350000, 2.925536, 6.013734, 6.072000 +1.366667, 3.059174, 6.013734, 6.072000 +1.383333, 3.192813, 6.013734, 6.072000 +1.400000, 3.326451, 6.013734, 6.072000 +1.416667, 3.460090, 6.013734, 6.072000 +1.433333, 3.593729, 6.013734, 6.072000 +1.450000, 3.727367, 6.013734, 6.072000 +1.466667, 3.861006, 6.013734, 6.072000 +1.483333, 3.994644, 6.013734, 6.072000 +1.500000, 4.128283, 6.013734, 6.072000 +1.516667, 4.261921, 6.013734, 6.072000 +1.533333, 4.395560, 6.013734, 6.072000 +1.550000, 4.529198, 6.013734, 6.072000 +1.566667, 4.662837, 6.013734, 6.072000 +1.583333, 4.796475, 6.013734, 6.072000 +1.600000, 4.930114, 6.013734, 6.072000 +1.616667, 5.063752, 6.013734, 6.072000 +1.633333, 5.197391, 6.013734, 6.072000 +1.650000, 5.331029, 6.013734, 6.072000 +1.666667, 5.464668, 6.013734, 6.072000 +1.683333, 5.598307, 6.013734, 6.072000 +1.700000, 5.731945, 6.013734, 6.072000 +1.716667, 5.865584, 6.013734, 6.072000 +1.733333, 5.999222, 6.013734, 6.072000 +1.750000, 6.132861, 6.013734, 6.072000 +1.766667, 6.266499, 6.013734, 6.072000 +1.783333, 6.400138, 6.013734, 6.072000 +1.800000, 6.533776, 6.013734, 6.072000 +1.816667, 6.667415, 6.013734, 6.072000 +1.833333, 6.801053, 6.013734, 6.072000 +1.850000, 6.934692, 6.013734, 6.072000 +1.866667, 7.068330, 6.013734, 6.072000 +1.883333, 7.201969, 6.013734, 6.072000 +1.900000, 7.335607, 6.013734, 6.072000 +1.916667, 7.469246, 6.013734, 6.072000 +1.933333, 7.602884, 6.013734, 6.072000 +1.950000, 7.736523, 6.013734, 6.072000 +1.966667, 7.870162, 6.013734, 6.072000 +1.983333, 8.003800, 6.013734, 6.072000 +2.000000, 8.137439, 6.013734, 6.072000 +2.016667, 8.271077, 6.013734, 6.072000 +2.033333, 8.404716, 6.013734, 6.072000 +2.050000, 8.538354, 6.013734, 6.072000 +2.066667, 8.671993, 6.013734, 6.072000 +2.083333, 8.805631, 6.013734, 6.072000 +2.100000, 8.939270, 6.013734, 6.072000 +2.116667, 9.072908, 6.013734, 6.072000 +2.133333, 9.206547, 6.013734, 6.072000 +2.150000, 9.340185, 6.013734, 6.072000 +2.166667, 9.473824, 6.013734, 6.072000 +2.183333, 9.607462, 6.013734, 6.072000 +2.200000, 9.741101, 6.013734, 6.072000 +2.216667, 9.874740, 6.013734, 6.072000 +2.233333, 10.008378, 6.013734, 6.072000 +2.250000, 10.142017, 6.013734, 6.072000 +2.266667, 10.275655, 6.013734, 6.072000 +2.283333, 10.409294, 6.013734, 6.072000 +2.300000, 10.542932, 6.013734, 6.072000 +2.316667, 10.676571, 6.013734, 6.072000 +2.333333, 10.810209, 6.013734, 6.072000 +2.350000, 10.943848, 6.013734, 6.072000 +2.366667, 11.077486, 6.013734, 6.072000 +2.383333, 11.211125, 6.013734, 6.072000 +2.400000, 11.344763, 6.013734, 6.072000 +2.416667, 11.478402, 6.013734, 6.072000 +2.433333, 11.612040, 6.013734, 6.072000 +2.450000, 11.745679, 6.013734, 6.072000 +2.466667, 11.879318, 6.013734, 6.072000 +2.483333, 12.012956, 6.013734, 6.072000 +2.500000, 12.146595, 6.013734, 6.072000 +2.516667, 12.280233, 6.013734, 6.072000 +2.533333, 12.413872, 6.013734, 6.072000 +2.550000, 12.547510, 6.013734, 6.072000 +2.566667, 12.681149, 6.013734, 6.072000 +2.583333, 12.814787, 6.013734, 6.072000 +2.600000, 12.948426, 6.013734, 6.072000 +2.616667, 13.082064, 6.013734, 6.072000 +2.633333, 13.215703, 6.013734, 6.072000 +2.650000, 13.349341, 6.013734, 6.072000 +2.666667, 13.482980, 6.013734, 6.072000 +2.683333, 13.616618, 6.013734, 6.072000 +2.700000, 13.750257, 6.013734, 6.072000 +2.716667, 13.883896, 6.013734, 6.072000 +2.733333, 14.017534, 6.013734, 6.072000 +2.750000, 14.151173, 6.013734, 6.072000 +2.766667, 14.284811, 6.013734, 6.072000 +2.783333, 14.418450, 6.013734, 6.072000 +2.800000, 14.552088, 6.013734, 6.072000 +2.816667, 14.685727, 6.013734, 6.072000 +2.833333, 14.819365, 6.013734, 6.072000 +2.850000, 14.953004, 6.013734, 6.072000 +2.866667, 15.086642, 6.013734, 6.072000 +2.883333, 15.220281, 6.013734, 6.072000 +2.900000, 15.353919, 6.013734, 6.072000 +2.916667, 15.487558, 6.013734, 6.072000 +2.933333, 15.621196, 6.013734, 6.072000 +2.950000, 15.754835, 6.013734, 6.072000 +2.966667, 15.888474, 6.013734, 6.072000 +2.983333, 16.022112, 6.013734, 6.072000 +3.000000, 16.155751, 6.013734, 6.072000 +3.016667, 16.289389, 6.013734, 6.072000 +3.033333, 16.423028, 6.013734, 6.072000 +3.050000, 16.556666, 6.013734, 6.072000 +3.066667, 16.690305, 6.013734, 6.072000 +3.083333, 16.823943, 6.013734, 6.072000 +3.100000, 16.957582, 6.013734, 6.072000 +3.116667, 17.091220, 6.013734, 6.072000 +3.133333, 17.224859, 6.013734, 6.072000 +3.150000, 17.358497, 6.013734, 6.072000 +3.166667, 17.492136, 6.013734, 6.072000 +3.183333, 17.625774, 6.013734, 6.072000 +3.200000, 17.759413, 6.013734, 6.072000 +3.216667, 17.893052, 6.013734, 6.072000 +3.233333, 18.026690, 6.013734, 6.072000 +3.250000, 18.160329, 6.013734, 6.072000 +3.266667, 18.293967, 6.013734, 6.072000 +3.283333, 18.427606, 6.013734, 6.072000 +3.300000, 18.561244, 6.013734, 6.072000 +3.316667, 18.694883, 6.013734, 6.072000 +3.333333, 18.828521, 6.013734, 6.072000 +3.350000, 18.962160, 6.013734, 6.072000 +3.366667, 19.095798, 6.013734, 6.072000 +3.383333, 19.229437, 6.013734, 6.072000 +3.400000, 19.363075, 6.013734, 6.072000 +3.416667, 19.496714, 6.013734, 6.072000 +3.433333, 19.630352, 6.013734, 6.072000 +3.450000, 19.763991, 6.013734, 6.072000 +3.466667, 19.897630, 6.013734, 6.072000 +3.483333, 20.031268, 6.013734, 6.072000 +3.500000, 20.164907, 6.013734, 6.072000 +3.516667, 20.298545, 6.013734, 6.072000 +3.533333, 20.432184, 6.013734, 6.072000 +3.550000, 20.565822, 6.013734, 6.072000 +3.566667, 20.699461, 6.013734, 6.072000 +3.583333, 20.833099, 6.013734, 6.072000 +3.600000, 20.966738, 6.013734, 6.072000 +3.616667, 21.100376, 6.013734, 6.072000 +3.633333, 21.234015, 6.013734, 6.072000 +3.650000, 21.367653, 6.013734, 6.072000 +3.666667, 21.501292, 6.013734, 6.072000 +3.683333, 21.634930, 6.013734, 6.072000 +3.700000, 21.768569, 6.013734, 6.072000 +3.716667, 21.902208, 6.013734, 6.072000 +3.733333, 22.035846, 6.013734, 6.072000 +3.750000, 22.169485, 6.013734, 6.072000 +3.766667, 22.303123, 6.013734, 6.072000 +3.783333, 22.436762, 6.013734, 6.072000 +3.800000, 22.570400, 6.013734, 6.072000 +3.816667, 22.704039, 6.013734, 6.072000 +3.833333, 22.837677, 6.013734, 6.072000 +3.850000, 22.971316, 6.013734, 6.072000 +3.866667, 23.104954, 6.013734, 6.072000 +3.883333, 23.238593, 6.013734, 6.072000 +3.900000, 23.372231, 6.013734, 6.072000 +3.916667, 23.505870, 6.013734, 6.072000 +3.933333, 23.639508, 6.013734, 6.072000 +3.950000, 23.773147, 6.013734, 6.072000 +3.966667, 23.906786, 6.013734, 6.072000 +3.983333, 24.040424, 6.013734, 6.072000 +4.000000, 24.174063, 6.013734, 6.072000 diff --git a/unittests/test_charging_models/original_dxfc_models/L2_7200_bev250_ld2_300kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_11520_bev250_ld2_300kW.csv similarity index 100% rename from unittests/test_charging_models/original_dxfc_models/L2_7200_bev250_ld2_300kW.csv rename to unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_11520_bev250_ld2_300kW.csv diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_11520_bev275_ld1_150kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_11520_bev275_ld1_150kW.csv new file mode 100644 index 0000000..8662074 --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_11520_bev275_ld1_150kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.154536, 7.695883, 7.770982 +1.016667, 0.330159, 8.746038, 8.832000 +1.033333, 0.505782, 8.746038, 8.832000 +1.050000, 0.681406, 8.746038, 8.832000 +1.066667, 0.857029, 8.746038, 8.832000 +1.083333, 1.032652, 8.746038, 8.832000 +1.100000, 1.208275, 8.746038, 8.832000 +1.116667, 1.383899, 8.746038, 8.832000 +1.133333, 1.559522, 8.746038, 8.832000 +1.150000, 1.735145, 8.746038, 8.832000 +1.166667, 1.910768, 8.746038, 8.832000 +1.183333, 2.086392, 8.746038, 8.832000 +1.200000, 2.262015, 8.746038, 8.832000 +1.216667, 2.437638, 8.746038, 8.832000 +1.233333, 2.613261, 8.746038, 8.832000 +1.250000, 2.788885, 8.746038, 8.832000 +1.266667, 2.964508, 8.746038, 8.832000 +1.283333, 3.140131, 8.746038, 8.832000 +1.300000, 3.315754, 8.746038, 8.832000 +1.316667, 3.491378, 8.746038, 8.832000 +1.333333, 3.667001, 8.746038, 8.832000 +1.350000, 3.842624, 8.746038, 8.832000 +1.366667, 4.018247, 8.746038, 8.832000 +1.383333, 4.193871, 8.746038, 8.832000 +1.400000, 4.369494, 8.746038, 8.832000 +1.416667, 4.545117, 8.746038, 8.832000 +1.433333, 4.720740, 8.746038, 8.832000 +1.450000, 4.896364, 8.746038, 8.832000 +1.466667, 5.071987, 8.746038, 8.832000 +1.483333, 5.247610, 8.746038, 8.832000 +1.500000, 5.423233, 8.746038, 8.832000 +1.516667, 5.598857, 8.746038, 8.832000 +1.533333, 5.774480, 8.746038, 8.832000 +1.550000, 5.950103, 8.746038, 8.832000 +1.566667, 6.125726, 8.746038, 8.832000 +1.583333, 6.301350, 8.746038, 8.832000 +1.600000, 6.476973, 8.746038, 8.832000 +1.616667, 6.652596, 8.746038, 8.832000 +1.633333, 6.828219, 8.746038, 8.832000 +1.650000, 7.003843, 8.746038, 8.832000 +1.666667, 7.179466, 8.746038, 8.832000 +1.683333, 7.355089, 8.746038, 8.832000 +1.700000, 7.530712, 8.746038, 8.832000 +1.716667, 7.706336, 8.746038, 8.832000 +1.733333, 7.881959, 8.746038, 8.832000 +1.750000, 8.057582, 8.746038, 8.832000 +1.766667, 8.233205, 8.746038, 8.832000 +1.783333, 8.408829, 8.746038, 8.832000 +1.800000, 8.584452, 8.746038, 8.832000 +1.816667, 8.760075, 8.746038, 8.832000 +1.833333, 8.935698, 8.746038, 8.832000 +1.850000, 9.111322, 8.746038, 8.832000 +1.866667, 9.286945, 8.746038, 8.832000 +1.883333, 9.462568, 8.746038, 8.832000 +1.900000, 9.638191, 8.746038, 8.832000 +1.916667, 9.813815, 8.746038, 8.832000 +1.933333, 9.989438, 8.746038, 8.832000 +1.950000, 10.165061, 8.746038, 8.832000 +1.966667, 10.340684, 8.746038, 8.832000 +1.983333, 10.516308, 8.746038, 8.832000 +2.000000, 10.691931, 8.746038, 8.832000 +2.016667, 10.867554, 8.746038, 8.832000 +2.033333, 11.043177, 8.746038, 8.832000 +2.050000, 11.218801, 8.746038, 8.832000 +2.066667, 11.394424, 8.746038, 8.832000 +2.083333, 11.570047, 8.746038, 8.832000 +2.100000, 11.745670, 8.746038, 8.832000 +2.116667, 11.921294, 8.746038, 8.832000 +2.133333, 12.096917, 8.746038, 8.832000 +2.150000, 12.272540, 8.746038, 8.832000 +2.166667, 12.448164, 8.746038, 8.832000 +2.183333, 12.623787, 8.746038, 8.832000 +2.200000, 12.799410, 8.746038, 8.832000 +2.216667, 12.975033, 8.746038, 8.832000 +2.233333, 13.150657, 8.746038, 8.832000 +2.250000, 13.326280, 8.746038, 8.832000 +2.266667, 13.501903, 8.746038, 8.832000 +2.283333, 13.677526, 8.746038, 8.832000 +2.300000, 13.853150, 8.746038, 8.832000 +2.316667, 14.028773, 8.746038, 8.832000 +2.333333, 14.204396, 8.746038, 8.832000 +2.350000, 14.380019, 8.746038, 8.832000 +2.366667, 14.555643, 8.746038, 8.832000 +2.383333, 14.731266, 8.746038, 8.832000 +2.400000, 14.906889, 8.746038, 8.832000 +2.416667, 15.082512, 8.746038, 8.832000 +2.433333, 15.258136, 8.746038, 8.832000 +2.450000, 15.433759, 8.746038, 8.832000 +2.466667, 15.609382, 8.746038, 8.832000 +2.483333, 15.785005, 8.746038, 8.832000 +2.500000, 15.960629, 8.746038, 8.832000 +2.516667, 16.136252, 8.746038, 8.832000 +2.533333, 16.311875, 8.746038, 8.832000 +2.550000, 16.487498, 8.746038, 8.832000 +2.566667, 16.663122, 8.746038, 8.832000 +2.583333, 16.838745, 8.746038, 8.832000 +2.600000, 17.014368, 8.746038, 8.832000 +2.616667, 17.189991, 8.746038, 8.832000 +2.633333, 17.365615, 8.746038, 8.832000 +2.650000, 17.541238, 8.746038, 8.832000 +2.666667, 17.716861, 8.746038, 8.832000 +2.683333, 17.892484, 8.746038, 8.832000 +2.700000, 18.068108, 8.746038, 8.832000 +2.716667, 18.243731, 8.746038, 8.832000 +2.733333, 18.419354, 8.746038, 8.832000 +2.750000, 18.594977, 8.746038, 8.832000 +2.766667, 18.770601, 8.746038, 8.832000 +2.783333, 18.946224, 8.746038, 8.832000 +2.800000, 19.121847, 8.746038, 8.832000 +2.816667, 19.297470, 8.746038, 8.832000 +2.833333, 19.473094, 8.746038, 8.832000 +2.850000, 19.648717, 8.746038, 8.832000 +2.866667, 19.824340, 8.746038, 8.832000 +2.883333, 19.999963, 8.746038, 8.832000 +2.900000, 20.175587, 8.746038, 8.832000 +2.916667, 20.351210, 8.746038, 8.832000 +2.933333, 20.526833, 8.746038, 8.832000 +2.950000, 20.702456, 8.746038, 8.832000 +2.966667, 20.878080, 8.746038, 8.832000 +2.983333, 21.053703, 8.746038, 8.832000 +3.000000, 21.229326, 8.746038, 8.832000 +3.016667, 21.404949, 8.746038, 8.832000 +3.033333, 21.580573, 8.746038, 8.832000 +3.050000, 21.756196, 8.746038, 8.832000 +3.066667, 21.931819, 8.746038, 8.832000 +3.083333, 22.107442, 8.746038, 8.832000 +3.100000, 22.283066, 8.746038, 8.832000 +3.116667, 22.458689, 8.746038, 8.832000 +3.133333, 22.634312, 8.746038, 8.832000 +3.150000, 22.809935, 8.746038, 8.832000 +3.166667, 22.985559, 8.746038, 8.832000 +3.183333, 23.161182, 8.746038, 8.832000 +3.200000, 23.336805, 8.746038, 8.832000 +3.216667, 23.512428, 8.746038, 8.832000 +3.233333, 23.688052, 8.746038, 8.832000 +3.250000, 23.863675, 8.746038, 8.832000 +3.266667, 24.039298, 8.746038, 8.832000 +3.283333, 24.214921, 8.746038, 8.832000 +3.300000, 24.390545, 8.746038, 8.832000 +3.316667, 24.566168, 8.746038, 8.832000 +3.333333, 24.741791, 8.746038, 8.832000 +3.350000, 24.917414, 8.746038, 8.832000 +3.366667, 25.093038, 8.746038, 8.832000 +3.383333, 25.268661, 8.746038, 8.832000 +3.400000, 25.444284, 8.746038, 8.832000 +3.416667, 25.619907, 8.746038, 8.832000 +3.433333, 25.795531, 8.746038, 8.832000 +3.450000, 25.971154, 8.746038, 8.832000 +3.466667, 26.146777, 8.746038, 8.832000 +3.483333, 26.322401, 8.746038, 8.832000 +3.500000, 26.498024, 8.746038, 8.832000 +3.516667, 26.673647, 8.746038, 8.832000 +3.533333, 26.849270, 8.746038, 8.832000 +3.550000, 27.024894, 8.746038, 8.832000 +3.566667, 27.200517, 8.746038, 8.832000 +3.583333, 27.376140, 8.746038, 8.832000 +3.600000, 27.551763, 8.746038, 8.832000 +3.616667, 27.727387, 8.746038, 8.832000 +3.633333, 27.903010, 8.746038, 8.832000 +3.650000, 28.078633, 8.746038, 8.832000 +3.666667, 28.254256, 8.746038, 8.832000 +3.683333, 28.429880, 8.746038, 8.832000 +3.700000, 28.605503, 8.746038, 8.832000 +3.716667, 28.781126, 8.746038, 8.832000 +3.733333, 28.956749, 8.746038, 8.832000 +3.750000, 29.132373, 8.746038, 8.832000 +3.766667, 29.307996, 8.746038, 8.832000 +3.783333, 29.483619, 8.746038, 8.832000 +3.800000, 29.659242, 8.746038, 8.832000 +3.816667, 29.834866, 8.746038, 8.832000 +3.833333, 30.010489, 8.746038, 8.832000 +3.850000, 30.186112, 8.746038, 8.832000 +3.866667, 30.361735, 8.746038, 8.832000 +3.883333, 30.537359, 8.746038, 8.832000 +3.900000, 30.712982, 8.746038, 8.832000 +3.916667, 30.888605, 8.746038, 8.832000 +3.933333, 31.064228, 8.746038, 8.832000 +3.950000, 31.239852, 8.746038, 8.832000 +3.966667, 31.415475, 8.746038, 8.832000 +3.983333, 31.591098, 8.746038, 8.832000 +4.000000, 31.766721, 8.746038, 8.832000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_11520_bev300_300kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_11520_bev300_300kW.csv new file mode 100644 index 0000000..e9b79da --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_11520_bev300_300kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.156285, 9.142660, 9.231932 +1.016667, 0.335377, 10.476905, 10.580000 +1.033333, 0.514470, 10.476905, 10.580000 +1.050000, 0.693562, 10.476905, 10.580000 +1.066667, 0.872654, 10.476905, 10.580000 +1.083333, 1.051747, 10.476905, 10.580000 +1.100000, 1.230839, 10.476905, 10.580000 +1.116667, 1.409932, 10.476905, 10.580000 +1.133333, 1.589024, 10.476905, 10.580000 +1.150000, 1.768116, 10.476905, 10.580000 +1.166667, 1.947209, 10.476905, 10.580000 +1.183333, 2.126301, 10.476905, 10.580000 +1.200000, 2.305393, 10.476905, 10.580000 +1.216667, 2.484486, 10.476905, 10.580000 +1.233333, 2.663578, 10.476905, 10.580000 +1.250000, 2.842671, 10.476905, 10.580000 +1.266667, 3.021763, 10.476905, 10.580000 +1.283333, 3.200855, 10.476905, 10.580000 +1.300000, 3.379948, 10.476905, 10.580000 +1.316667, 3.559040, 10.476905, 10.580000 +1.333333, 3.738133, 10.476905, 10.580000 +1.350000, 3.917225, 10.476905, 10.580000 +1.366667, 4.096317, 10.476905, 10.580000 +1.383333, 4.275410, 10.476905, 10.580000 +1.400000, 4.454502, 10.476905, 10.580000 +1.416667, 4.633595, 10.476905, 10.580000 +1.433333, 4.812687, 10.476905, 10.580000 +1.450000, 4.991779, 10.476905, 10.580000 +1.466667, 5.170872, 10.476905, 10.580000 +1.483333, 5.349964, 10.476905, 10.580000 +1.500000, 5.529056, 10.476905, 10.580000 +1.516667, 5.708149, 10.476905, 10.580000 +1.533333, 5.887241, 10.476905, 10.580000 +1.550000, 6.066334, 10.476905, 10.580000 +1.566667, 6.245426, 10.476905, 10.580000 +1.583333, 6.424518, 10.476905, 10.580000 +1.600000, 6.603611, 10.476905, 10.580000 +1.616667, 6.782703, 10.476905, 10.580000 +1.633333, 6.961796, 10.476905, 10.580000 +1.650000, 7.140888, 10.476905, 10.580000 +1.666667, 7.319980, 10.476905, 10.580000 +1.683333, 7.499073, 10.476905, 10.580000 +1.700000, 7.678165, 10.476905, 10.580000 +1.716667, 7.857258, 10.476905, 10.580000 +1.733333, 8.036350, 10.476905, 10.580000 +1.750000, 8.215442, 10.476905, 10.580000 +1.766667, 8.394535, 10.476905, 10.580000 +1.783333, 8.573627, 10.476905, 10.580000 +1.800000, 8.752719, 10.476905, 10.580000 +1.816667, 8.931812, 10.476905, 10.580000 +1.833333, 9.110904, 10.476905, 10.580000 +1.850000, 9.289997, 10.476905, 10.580000 +1.866667, 9.469089, 10.476905, 10.580000 +1.883333, 9.648181, 10.476905, 10.580000 +1.900000, 9.827274, 10.476905, 10.580000 +1.916667, 10.006366, 10.476905, 10.580000 +1.933333, 10.185459, 10.476905, 10.580000 +1.950000, 10.364551, 10.476905, 10.580000 +1.966667, 10.543643, 10.476905, 10.580000 +1.983333, 10.722736, 10.476905, 10.580000 +2.000000, 10.901828, 10.476905, 10.580000 +2.016667, 11.080921, 10.476905, 10.580000 +2.033333, 11.260013, 10.476905, 10.580000 +2.050000, 11.439105, 10.476905, 10.580000 +2.066667, 11.618198, 10.476905, 10.580000 +2.083333, 11.797290, 10.476905, 10.580000 +2.100000, 11.976382, 10.476905, 10.580000 +2.116667, 12.155475, 10.476905, 10.580000 +2.133333, 12.334567, 10.476905, 10.580000 +2.150000, 12.513660, 10.476905, 10.580000 +2.166667, 12.692752, 10.476905, 10.580000 +2.183333, 12.871844, 10.476905, 10.580000 +2.200000, 13.050937, 10.476905, 10.580000 +2.216667, 13.230029, 10.476905, 10.580000 +2.233333, 13.409122, 10.476905, 10.580000 +2.250000, 13.588214, 10.476905, 10.580000 +2.266667, 13.767306, 10.476905, 10.580000 +2.283333, 13.946399, 10.476905, 10.580000 +2.300000, 14.125491, 10.476905, 10.580000 +2.316667, 14.304584, 10.476905, 10.580000 +2.333333, 14.483676, 10.476905, 10.580000 +2.350000, 14.662768, 10.476905, 10.580000 +2.366667, 14.841861, 10.476905, 10.580000 +2.383333, 15.020953, 10.476905, 10.580000 +2.400000, 15.200045, 10.476905, 10.580000 +2.416667, 15.379138, 10.476905, 10.580000 +2.433333, 15.558230, 10.476905, 10.580000 +2.450000, 15.737323, 10.476905, 10.580000 +2.466667, 15.916415, 10.476905, 10.580000 +2.483333, 16.095507, 10.476905, 10.580000 +2.500000, 16.274600, 10.476905, 10.580000 +2.516667, 16.453692, 10.476905, 10.580000 +2.533333, 16.632785, 10.476905, 10.580000 +2.550000, 16.811877, 10.476905, 10.580000 +2.566667, 16.990969, 10.476905, 10.580000 +2.583333, 17.170062, 10.476905, 10.580000 +2.600000, 17.349154, 10.476905, 10.580000 +2.616667, 17.528247, 10.476905, 10.580000 +2.633333, 17.707339, 10.476905, 10.580000 +2.650000, 17.886431, 10.476905, 10.580000 +2.666667, 18.065524, 10.476905, 10.580000 +2.683333, 18.244616, 10.476905, 10.580000 +2.700000, 18.423708, 10.476905, 10.580000 +2.716667, 18.602801, 10.476905, 10.580000 +2.733333, 18.781893, 10.476905, 10.580000 +2.750000, 18.960986, 10.476905, 10.580000 +2.766667, 19.140078, 10.476905, 10.580000 +2.783333, 19.319170, 10.476905, 10.580000 +2.800000, 19.498263, 10.476905, 10.580000 +2.816667, 19.677355, 10.476905, 10.580000 +2.833333, 19.856448, 10.476905, 10.580000 +2.850000, 20.035540, 10.476905, 10.580000 +2.866667, 20.214632, 10.476905, 10.580000 +2.883333, 20.393725, 10.476905, 10.580000 +2.900000, 20.572817, 10.476905, 10.580000 +2.916667, 20.751910, 10.476905, 10.580000 +2.933333, 20.931002, 10.476905, 10.580000 +2.950000, 21.110094, 10.476905, 10.580000 +2.966667, 21.289187, 10.476905, 10.580000 +2.983333, 21.468279, 10.476905, 10.580000 +3.000000, 21.647371, 10.476905, 10.580000 +3.016667, 21.826464, 10.476905, 10.580000 +3.033333, 22.005556, 10.476905, 10.580000 +3.050000, 22.184649, 10.476905, 10.580000 +3.066667, 22.363741, 10.476905, 10.580000 +3.083333, 22.542833, 10.476905, 10.580000 +3.100000, 22.721926, 10.476905, 10.580000 +3.116667, 22.901018, 10.476905, 10.580000 +3.133333, 23.080111, 10.476905, 10.580000 +3.150000, 23.259203, 10.476905, 10.580000 +3.166667, 23.438295, 10.476905, 10.580000 +3.183333, 23.617388, 10.476905, 10.580000 +3.200000, 23.796480, 10.476905, 10.580000 +3.216667, 23.975573, 10.476905, 10.580000 +3.233333, 24.154665, 10.476905, 10.580000 +3.250000, 24.333757, 10.476905, 10.580000 +3.266667, 24.512850, 10.476905, 10.580000 +3.283333, 24.691942, 10.476905, 10.580000 +3.300000, 24.871034, 10.476905, 10.580000 +3.316667, 25.050127, 10.476905, 10.580000 +3.333333, 25.229219, 10.476905, 10.580000 +3.350000, 25.408312, 10.476905, 10.580000 +3.366667, 25.587404, 10.476905, 10.580000 +3.383333, 25.766496, 10.476905, 10.580000 +3.400000, 25.945589, 10.476905, 10.580000 +3.416667, 26.124681, 10.476905, 10.580000 +3.433333, 26.303774, 10.476905, 10.580000 +3.450000, 26.482866, 10.476905, 10.580000 +3.466667, 26.661958, 10.476905, 10.580000 +3.483333, 26.841051, 10.476905, 10.580000 +3.500000, 27.020143, 10.476905, 10.580000 +3.516667, 27.199236, 10.476905, 10.580000 +3.533333, 27.378328, 10.476905, 10.580000 +3.550000, 27.557420, 10.476905, 10.580000 +3.566667, 27.736513, 10.476905, 10.580000 +3.583333, 27.915605, 10.476905, 10.580000 +3.600000, 28.094697, 10.476905, 10.580000 +3.616667, 28.273790, 10.476905, 10.580000 +3.633333, 28.452882, 10.476905, 10.580000 +3.650000, 28.631975, 10.476905, 10.580000 +3.666667, 28.811067, 10.476905, 10.580000 +3.683333, 28.990159, 10.476905, 10.580000 +3.700000, 29.169252, 10.476905, 10.580000 +3.716667, 29.348344, 10.476905, 10.580000 +3.733333, 29.527437, 10.476905, 10.580000 +3.750000, 29.706529, 10.476905, 10.580000 +3.766667, 29.885621, 10.476905, 10.580000 +3.783333, 30.064714, 10.476905, 10.580000 +3.800000, 30.243806, 10.476905, 10.580000 +3.816667, 30.422899, 10.476905, 10.580000 +3.833333, 30.601991, 10.476905, 10.580000 +3.850000, 30.781083, 10.476905, 10.580000 +3.866667, 30.960176, 10.476905, 10.580000 +3.883333, 31.139268, 10.476905, 10.580000 +3.900000, 31.318360, 10.476905, 10.580000 +3.916667, 31.497453, 10.476905, 10.580000 +3.933333, 31.676545, 10.476905, 10.580000 +3.950000, 31.855638, 10.476905, 10.580000 +3.966667, 32.034730, 10.476905, 10.580000 +3.983333, 32.213822, 10.476905, 10.580000 +4.000000, 32.392915, 10.476905, 10.580000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_11520_bev300_400kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_11520_bev300_400kW.csv new file mode 100644 index 0000000..cff4bbb --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_11520_bev300_400kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.155713, 9.109203, 9.231932 +1.016667, 0.334144, 10.438204, 10.580000 +1.033333, 0.512575, 10.438204, 10.580000 +1.050000, 0.691005, 10.438204, 10.580000 +1.066667, 0.869436, 10.438204, 10.580000 +1.083333, 1.047867, 10.438204, 10.580000 +1.100000, 1.226298, 10.438204, 10.580000 +1.116667, 1.404729, 10.438204, 10.580000 +1.133333, 1.583160, 10.438204, 10.580000 +1.150000, 1.761590, 10.438204, 10.580000 +1.166667, 1.940021, 10.438204, 10.580000 +1.183333, 2.118452, 10.438204, 10.580000 +1.200000, 2.296883, 10.438204, 10.580000 +1.216667, 2.475314, 10.438204, 10.580000 +1.233333, 2.653745, 10.438204, 10.580000 +1.250000, 2.832176, 10.438204, 10.580000 +1.266667, 3.010606, 10.438204, 10.580000 +1.283333, 3.189037, 10.438204, 10.580000 +1.300000, 3.367468, 10.438204, 10.580000 +1.316667, 3.545899, 10.438204, 10.580000 +1.333333, 3.724330, 10.438204, 10.580000 +1.350000, 3.902761, 10.438204, 10.580000 +1.366667, 4.081191, 10.438204, 10.580000 +1.383333, 4.259622, 10.438204, 10.580000 +1.400000, 4.438053, 10.438204, 10.580000 +1.416667, 4.616484, 10.438204, 10.580000 +1.433333, 4.794915, 10.438204, 10.580000 +1.450000, 4.973346, 10.438204, 10.580000 +1.466667, 5.151776, 10.438204, 10.580000 +1.483333, 5.330207, 10.438204, 10.580000 +1.500000, 5.508638, 10.438204, 10.580000 +1.516667, 5.687069, 10.438204, 10.580000 +1.533333, 5.865500, 10.438204, 10.580000 +1.550000, 6.043931, 10.438204, 10.580000 +1.566667, 6.222362, 10.438204, 10.580000 +1.583333, 6.400792, 10.438204, 10.580000 +1.600000, 6.579223, 10.438204, 10.580000 +1.616667, 6.757654, 10.438204, 10.580000 +1.633333, 6.936085, 10.438204, 10.580000 +1.650000, 7.114516, 10.438204, 10.580000 +1.666667, 7.292947, 10.438204, 10.580000 +1.683333, 7.471377, 10.438204, 10.580000 +1.700000, 7.649808, 10.438204, 10.580000 +1.716667, 7.828239, 10.438204, 10.580000 +1.733333, 8.006670, 10.438204, 10.580000 +1.750000, 8.185101, 10.438204, 10.580000 +1.766667, 8.363532, 10.438204, 10.580000 +1.783333, 8.541962, 10.438204, 10.580000 +1.800000, 8.720393, 10.438204, 10.580000 +1.816667, 8.898824, 10.438204, 10.580000 +1.833333, 9.077255, 10.438204, 10.580000 +1.850000, 9.255686, 10.438204, 10.580000 +1.866667, 9.434117, 10.438204, 10.580000 +1.883333, 9.612548, 10.438204, 10.580000 +1.900000, 9.790978, 10.438204, 10.580000 +1.916667, 9.969409, 10.438204, 10.580000 +1.933333, 10.147840, 10.438204, 10.580000 +1.950000, 10.326271, 10.438204, 10.580000 +1.966667, 10.504702, 10.438204, 10.580000 +1.983333, 10.683133, 10.438204, 10.580000 +2.000000, 10.861563, 10.438204, 10.580000 +2.016667, 11.039994, 10.438204, 10.580000 +2.033333, 11.218425, 10.438204, 10.580000 +2.050000, 11.396856, 10.438204, 10.580000 +2.066667, 11.575287, 10.438204, 10.580000 +2.083333, 11.753718, 10.438204, 10.580000 +2.100000, 11.932148, 10.438204, 10.580000 +2.116667, 12.110579, 10.438204, 10.580000 +2.133333, 12.289010, 10.438204, 10.580000 +2.150000, 12.467441, 10.438204, 10.580000 +2.166667, 12.645872, 10.438204, 10.580000 +2.183333, 12.824303, 10.438204, 10.580000 +2.200000, 13.002734, 10.438204, 10.580000 +2.216667, 13.181164, 10.438204, 10.580000 +2.233333, 13.359595, 10.438204, 10.580000 +2.250000, 13.538026, 10.438204, 10.580000 +2.266667, 13.716457, 10.438204, 10.580000 +2.283333, 13.894888, 10.438204, 10.580000 +2.300000, 14.073319, 10.438204, 10.580000 +2.316667, 14.251749, 10.438204, 10.580000 +2.333333, 14.430180, 10.438204, 10.580000 +2.350000, 14.608611, 10.438204, 10.580000 +2.366667, 14.787042, 10.438204, 10.580000 +2.383333, 14.965473, 10.438204, 10.580000 +2.400000, 15.143904, 10.438204, 10.580000 +2.416667, 15.322334, 10.438204, 10.580000 +2.433333, 15.500765, 10.438204, 10.580000 +2.450000, 15.679196, 10.438204, 10.580000 +2.466667, 15.857627, 10.438204, 10.580000 +2.483333, 16.036058, 10.438204, 10.580000 +2.500000, 16.214489, 10.438204, 10.580000 +2.516667, 16.392920, 10.438204, 10.580000 +2.533333, 16.571350, 10.438204, 10.580000 +2.550000, 16.749781, 10.438204, 10.580000 +2.566667, 16.928212, 10.438204, 10.580000 +2.583333, 17.106643, 10.438204, 10.580000 +2.600000, 17.285074, 10.438204, 10.580000 +2.616667, 17.463505, 10.438204, 10.580000 +2.633333, 17.641935, 10.438204, 10.580000 +2.650000, 17.820366, 10.438204, 10.580000 +2.666667, 17.998797, 10.438204, 10.580000 +2.683333, 18.177228, 10.438204, 10.580000 +2.700000, 18.355659, 10.438204, 10.580000 +2.716667, 18.534090, 10.438204, 10.580000 +2.733333, 18.712520, 10.438204, 10.580000 +2.750000, 18.890951, 10.438204, 10.580000 +2.766667, 19.069382, 10.438204, 10.580000 +2.783333, 19.247813, 10.438204, 10.580000 +2.800000, 19.426244, 10.438204, 10.580000 +2.816667, 19.604675, 10.438204, 10.580000 +2.833333, 19.783106, 10.438204, 10.580000 +2.850000, 19.961536, 10.438204, 10.580000 +2.866667, 20.139967, 10.438204, 10.580000 +2.883333, 20.318398, 10.438204, 10.580000 +2.900000, 20.496829, 10.438204, 10.580000 +2.916667, 20.675260, 10.438204, 10.580000 +2.933333, 20.853691, 10.438204, 10.580000 +2.950000, 21.032121, 10.438204, 10.580000 +2.966667, 21.210552, 10.438204, 10.580000 +2.983333, 21.388983, 10.438204, 10.580000 +3.000000, 21.567414, 10.438204, 10.580000 +3.016667, 21.745845, 10.438204, 10.580000 +3.033333, 21.924276, 10.438204, 10.580000 +3.050000, 22.102707, 10.438204, 10.580000 +3.066667, 22.281137, 10.438204, 10.580000 +3.083333, 22.459568, 10.438204, 10.580000 +3.100000, 22.637999, 10.438204, 10.580000 +3.116667, 22.816430, 10.438204, 10.580000 +3.133333, 22.994861, 10.438204, 10.580000 +3.150000, 23.173292, 10.438204, 10.580000 +3.166667, 23.351722, 10.438204, 10.580000 +3.183333, 23.530153, 10.438204, 10.580000 +3.200000, 23.708584, 10.438204, 10.580000 +3.216667, 23.887015, 10.438204, 10.580000 +3.233333, 24.065446, 10.438204, 10.580000 +3.250000, 24.243877, 10.438204, 10.580000 +3.266667, 24.422307, 10.438204, 10.580000 +3.283333, 24.600738, 10.438204, 10.580000 +3.300000, 24.779169, 10.438204, 10.580000 +3.316667, 24.957600, 10.438204, 10.580000 +3.333333, 25.136031, 10.438204, 10.580000 +3.350000, 25.314462, 10.438204, 10.580000 +3.366667, 25.492893, 10.438204, 10.580000 +3.383333, 25.671323, 10.438204, 10.580000 +3.400000, 25.849754, 10.438204, 10.580000 +3.416667, 26.028185, 10.438204, 10.580000 +3.433333, 26.206616, 10.438204, 10.580000 +3.450000, 26.385047, 10.438204, 10.580000 +3.466667, 26.563478, 10.438204, 10.580000 +3.483333, 26.741908, 10.438204, 10.580000 +3.500000, 26.920339, 10.438204, 10.580000 +3.516667, 27.098770, 10.438204, 10.580000 +3.533333, 27.277201, 10.438204, 10.580000 +3.550000, 27.455632, 10.438204, 10.580000 +3.566667, 27.634063, 10.438204, 10.580000 +3.583333, 27.812493, 10.438204, 10.580000 +3.600000, 27.990924, 10.438204, 10.580000 +3.616667, 28.169355, 10.438204, 10.580000 +3.633333, 28.347786, 10.438204, 10.580000 +3.650000, 28.526217, 10.438204, 10.580000 +3.666667, 28.704648, 10.438204, 10.580000 +3.683333, 28.883079, 10.438204, 10.580000 +3.700000, 29.061509, 10.438204, 10.580000 +3.716667, 29.239940, 10.438204, 10.580000 +3.733333, 29.418371, 10.438204, 10.580000 +3.750000, 29.596802, 10.438204, 10.580000 +3.766667, 29.775233, 10.438204, 10.580000 +3.783333, 29.953664, 10.438204, 10.580000 +3.800000, 30.132094, 10.438204, 10.580000 +3.816667, 30.310525, 10.438204, 10.580000 +3.833333, 30.488956, 10.438204, 10.580000 +3.850000, 30.667387, 10.438204, 10.580000 +3.866667, 30.845818, 10.438204, 10.580000 +3.883333, 31.024249, 10.438204, 10.580000 +3.900000, 31.202679, 10.438204, 10.580000 +3.916667, 31.381110, 10.438204, 10.580000 +3.933333, 31.559541, 10.438204, 10.580000 +3.950000, 31.737972, 10.438204, 10.580000 +3.966667, 31.916403, 10.438204, 10.580000 +3.983333, 32.094834, 10.438204, 10.580000 +4.000000, 32.273265, 10.438204, 10.580000 diff --git a/unittests/test_charging_models/original_dxfc_models/L2_7200_bev300_575kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_11520_bev300_575kW.csv similarity index 100% rename from unittests/test_charging_models/original_dxfc_models/L2_7200_bev300_575kW.csv rename to unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_11520_bev300_575kW.csv diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_11520_phev20.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_11520_phev20.csv new file mode 100644 index 0000000..ac64bef --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_11520_phev20.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.898032, 2.694096, 2.727091 +1.016667, 1.891008, 2.978929, 3.016365 +1.033333, 2.883985, 2.978929, 3.016365 +1.050000, 3.876961, 2.978929, 3.016365 +1.066667, 4.869937, 2.978929, 3.016365 +1.083333, 5.862914, 2.978929, 3.016365 +1.100000, 6.855890, 2.978929, 3.016365 +1.116667, 7.848866, 2.978929, 3.016365 +1.133333, 8.841843, 2.978929, 3.016365 +1.150000, 9.834819, 2.978929, 3.016365 +1.166667, 10.827795, 2.978929, 3.016365 +1.183333, 11.820772, 2.978929, 3.016365 +1.200000, 12.813748, 2.978929, 3.016365 +1.216667, 13.806724, 2.978929, 3.016365 +1.233333, 14.799701, 2.978929, 3.016365 +1.250000, 15.792677, 2.978929, 3.016365 +1.266667, 16.785653, 2.978929, 3.016365 +1.283333, 17.778630, 2.978929, 3.016365 +1.300000, 18.771606, 2.978929, 3.016365 +1.316667, 19.764582, 2.978929, 3.016365 +1.333333, 20.757559, 2.978929, 3.016365 +1.350000, 21.750535, 2.978929, 3.016365 +1.366667, 22.743511, 2.978929, 3.016365 +1.383333, 23.736488, 2.978929, 3.016365 +1.400000, 24.729464, 2.978929, 3.016365 +1.416667, 25.722440, 2.978929, 3.016365 +1.433333, 26.715417, 2.978929, 3.016365 +1.450000, 27.708393, 2.978929, 3.016365 +1.466667, 28.701369, 2.978929, 3.016365 +1.483333, 29.694346, 2.978929, 3.016365 +1.500000, 30.687322, 2.978929, 3.016365 +1.516667, 31.680298, 2.978929, 3.016365 +1.533333, 32.673275, 2.978929, 3.016365 +1.550000, 33.666251, 2.978929, 3.016365 +1.566667, 34.659227, 2.978929, 3.016365 +1.583333, 35.652204, 2.978929, 3.016365 +1.600000, 36.645180, 2.978929, 3.016365 +1.616667, 37.638156, 2.978929, 3.016365 +1.633333, 38.631133, 2.978929, 3.016365 +1.650000, 39.624109, 2.978929, 3.016365 +1.666667, 40.617085, 2.978929, 3.016365 +1.683333, 41.610062, 2.978929, 3.016365 +1.700000, 42.603038, 2.978929, 3.016365 +1.716667, 43.596014, 2.978929, 3.016365 +1.733333, 44.588991, 2.978929, 3.016365 +1.750000, 45.581967, 2.978929, 3.016365 +1.766667, 46.574943, 2.978929, 3.016365 +1.783333, 47.567920, 2.978929, 3.016365 +1.800000, 48.560896, 2.978929, 3.016365 +1.816667, 49.553872, 2.978929, 3.016365 +1.833333, 50.546849, 2.978929, 3.016365 +1.850000, 51.539825, 2.978929, 3.016365 +1.866667, 52.532801, 2.978929, 3.016365 +1.883333, 53.525778, 2.978929, 3.016365 +1.900000, 54.518754, 2.978929, 3.016365 +1.916667, 55.511730, 2.978929, 3.016365 +1.933333, 56.504707, 2.978929, 3.016365 +1.950000, 57.497683, 2.978929, 3.016365 +1.966667, 58.490659, 2.978929, 3.016365 +1.983333, 59.483636, 2.978929, 3.016365 +2.000000, 60.476612, 2.978929, 3.016365 +2.016667, 61.469588, 2.978929, 3.016365 +2.033333, 62.462565, 2.978929, 3.016365 +2.050000, 63.455541, 2.978929, 3.016365 +2.066667, 64.448517, 2.978929, 3.016365 +2.083333, 65.441494, 2.978929, 3.016365 +2.100000, 66.434470, 2.978929, 3.016365 +2.116667, 67.427446, 2.978929, 3.016365 +2.133333, 68.420423, 2.978929, 3.016365 +2.150000, 69.413399, 2.978929, 3.016365 +2.166667, 70.406375, 2.978929, 3.016365 +2.183333, 71.399352, 2.978929, 3.016365 +2.200000, 72.392328, 2.978929, 3.016365 +2.216667, 73.385305, 2.978929, 3.016365 +2.233333, 74.378281, 2.978929, 3.016365 +2.250000, 75.371257, 2.978929, 3.016365 +2.266667, 76.364234, 2.978929, 3.016365 +2.283333, 77.357210, 2.978929, 3.016365 +2.300000, 78.350186, 2.978929, 3.016365 +2.316667, 79.343163, 2.978929, 3.016365 +2.333333, 80.336139, 2.978929, 3.016365 +2.350000, 81.329115, 2.978929, 3.016365 +2.366667, 82.322092, 2.978929, 3.016365 +2.383333, 83.315068, 2.978929, 3.016365 +2.400000, 84.308044, 2.978929, 3.016365 +2.416667, 85.301021, 2.978929, 3.016365 +2.433333, 86.293997, 2.978929, 3.016365 +2.450000, 87.286973, 2.978929, 3.016365 +2.466667, 88.279950, 2.978929, 3.016365 +2.483333, 89.272926, 2.978929, 3.016365 +2.500000, 90.265902, 2.978929, 3.016365 +2.516667, 91.258879, 2.978929, 3.016365 +2.533333, 92.251855, 2.978929, 3.016365 +2.550000, 93.244831, 2.978929, 3.016365 +2.566667, 94.237808, 2.978929, 3.016365 +2.583333, 95.230784, 2.978929, 3.016365 +2.600000, 96.200447, 2.908988, 2.945317 +2.616667, 97.014284, 2.441512, 2.470723 +2.633333, 97.678106, 1.991465, 2.014288 +2.650000, 98.219377, 1.623813, 1.641756 +2.666667, 98.660664, 1.323863, 1.338049 +2.683333, 99.020400, 1.079206, 1.090476 +2.700000, 99.313629, 0.879688, 0.888679 +2.716667, 99.552631, 0.717005, 0.724204 +2.733333, 99.747422, 0.584375, 0.590156 +2.750000, 99.800407, 0.158954, 0.160452 +2.766667, 99.800495, 0.000265, 0.000267 +2.783333, 99.800495, 0.000000, 0.000000 +2.800000, 99.800495, 0.000000, 0.000000 +2.816667, 99.800495, 0.000000, 0.000000 +2.833333, 99.800495, 0.000000, 0.000000 +2.850000, 99.800495, 0.000000, 0.000000 +2.866667, 99.800495, 0.000000, 0.000000 +2.883333, 99.800495, 0.000000, 0.000000 +2.900000, 99.800495, 0.000000, 0.000000 +2.916667, 99.800495, 0.000000, 0.000000 +2.933333, 99.800495, 0.000000, 0.000000 +2.950000, 99.800495, 0.000000, 0.000000 +2.966667, 99.800495, 0.000000, 0.000000 +2.983333, 99.800495, 0.000000, 0.000000 +3.000000, 99.800495, 0.000000, 0.000000 +3.016667, 99.800495, 0.000000, 0.000000 +3.033333, 99.800495, 0.000000, 0.000000 +3.050000, 99.800495, 0.000000, 0.000000 +3.066667, 99.800495, 0.000000, 0.000000 +3.083333, 99.800495, 0.000000, 0.000000 +3.100000, 99.800495, 0.000000, 0.000000 +3.116667, 99.800495, 0.000000, 0.000000 +3.133333, 99.800495, 0.000000, 0.000000 +3.150000, 99.800495, 0.000000, 0.000000 +3.166667, 99.800495, 0.000000, 0.000000 +3.183333, 99.800495, 0.000000, 0.000000 +3.200000, 99.800495, 0.000000, 0.000000 +3.216667, 99.800495, 0.000000, 0.000000 +3.233333, 99.800495, 0.000000, 0.000000 +3.250000, 99.800495, 0.000000, 0.000000 +3.266667, 99.800495, 0.000000, 0.000000 +3.283333, 99.800495, 0.000000, 0.000000 +3.300000, 99.800495, 0.000000, 0.000000 +3.316667, 99.800495, 0.000000, 0.000000 +3.333333, 99.800495, 0.000000, 0.000000 +3.350000, 99.800495, 0.000000, 0.000000 +3.366667, 99.800495, 0.000000, 0.000000 +3.383333, 99.800495, 0.000000, 0.000000 +3.400000, 99.800495, 0.000000, 0.000000 +3.416667, 99.800495, 0.000000, 0.000000 +3.433333, 99.800495, 0.000000, 0.000000 +3.450000, 99.800495, 0.000000, 0.000000 +3.466667, 99.800495, 0.000000, 0.000000 +3.483333, 99.800495, 0.000000, 0.000000 +3.500000, 99.800495, 0.000000, 0.000000 +3.516667, 99.800495, 0.000000, 0.000000 +3.533333, 99.800495, 0.000000, 0.000000 +3.550000, 99.800495, 0.000000, 0.000000 +3.566667, 99.800495, 0.000000, 0.000000 +3.583333, 99.800495, 0.000000, 0.000000 +3.600000, 99.800495, 0.000000, 0.000000 +3.616667, 99.800495, 0.000000, 0.000000 +3.633333, 99.800495, 0.000000, 0.000000 +3.650000, 99.800495, 0.000000, 0.000000 +3.666667, 99.800495, 0.000000, 0.000000 +3.683333, 99.800495, 0.000000, 0.000000 +3.700000, 99.800495, 0.000000, 0.000000 +3.716667, 99.800495, 0.000000, 0.000000 +3.733333, 99.800495, 0.000000, 0.000000 +3.750000, 99.800495, 0.000000, 0.000000 +3.766667, 99.800495, 0.000000, 0.000000 +3.783333, 99.800495, 0.000000, 0.000000 +3.800000, 99.800495, 0.000000, 0.000000 +3.816667, 99.800495, 0.000000, 0.000000 +3.833333, 99.800495, 0.000000, 0.000000 +3.850000, 99.800495, 0.000000, 0.000000 +3.866667, 99.800495, 0.000000, 0.000000 +3.883333, 99.800495, 0.000000, 0.000000 +3.900000, 99.800495, 0.000000, 0.000000 +3.916667, 99.800495, 0.000000, 0.000000 +3.933333, 99.800495, 0.000000, 0.000000 +3.950000, 99.800495, 0.000000, 0.000000 +3.966667, 99.800495, 0.000000, 0.000000 +3.983333, 99.800495, 0.000000, 0.000000 +4.000000, 99.800495, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_11520_phev50.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_11520_phev50.csv new file mode 100644 index 0000000..5a74324 --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_11520_phev50.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.281209, 2.699607, 2.727091 +1.016667, 0.592217, 2.985672, 3.016365 +1.033333, 0.903224, 2.985672, 3.016365 +1.050000, 1.214231, 2.985672, 3.016365 +1.066667, 1.525239, 2.985672, 3.016365 +1.083333, 1.836246, 2.985672, 3.016365 +1.100000, 2.147254, 2.985672, 3.016365 +1.116667, 2.458261, 2.985672, 3.016365 +1.133333, 2.769269, 2.985672, 3.016365 +1.150000, 3.080276, 2.985672, 3.016365 +1.166667, 3.391284, 2.985672, 3.016365 +1.183333, 3.702291, 2.985672, 3.016365 +1.200000, 4.013299, 2.985672, 3.016365 +1.216667, 4.324306, 2.985672, 3.016365 +1.233333, 4.635314, 2.985672, 3.016365 +1.250000, 4.946321, 2.985672, 3.016365 +1.266667, 5.257329, 2.985672, 3.016365 +1.283333, 5.568336, 2.985672, 3.016365 +1.300000, 5.879344, 2.985672, 3.016365 +1.316667, 6.190351, 2.985672, 3.016365 +1.333333, 6.501359, 2.985672, 3.016365 +1.350000, 6.812366, 2.985672, 3.016365 +1.366667, 7.123373, 2.985672, 3.016365 +1.383333, 7.434381, 2.985672, 3.016365 +1.400000, 7.745388, 2.985672, 3.016365 +1.416667, 8.056396, 2.985672, 3.016365 +1.433333, 8.367403, 2.985672, 3.016365 +1.450000, 8.678411, 2.985672, 3.016365 +1.466667, 8.989418, 2.985672, 3.016365 +1.483333, 9.300426, 2.985672, 3.016365 +1.500000, 9.611433, 2.985672, 3.016365 +1.516667, 9.922441, 2.985672, 3.016365 +1.533333, 10.233448, 2.985672, 3.016365 +1.550000, 10.544456, 2.985672, 3.016365 +1.566667, 10.855463, 2.985672, 3.016365 +1.583333, 11.166471, 2.985672, 3.016365 +1.600000, 11.477478, 2.985672, 3.016365 +1.616667, 11.788486, 2.985672, 3.016365 +1.633333, 12.099493, 2.985672, 3.016365 +1.650000, 12.410500, 2.985672, 3.016365 +1.666667, 12.721508, 2.985672, 3.016365 +1.683333, 13.032515, 2.985672, 3.016365 +1.700000, 13.343523, 2.985672, 3.016365 +1.716667, 13.654530, 2.985672, 3.016365 +1.733333, 13.965538, 2.985672, 3.016365 +1.750000, 14.276545, 2.985672, 3.016365 +1.766667, 14.587553, 2.985672, 3.016365 +1.783333, 14.898560, 2.985672, 3.016365 +1.800000, 15.209568, 2.985672, 3.016365 +1.816667, 15.520575, 2.985672, 3.016365 +1.833333, 15.831583, 2.985672, 3.016365 +1.850000, 16.142590, 2.985672, 3.016365 +1.866667, 16.453598, 2.985672, 3.016365 +1.883333, 16.764605, 2.985672, 3.016365 +1.900000, 17.075613, 2.985672, 3.016365 +1.916667, 17.386620, 2.985672, 3.016365 +1.933333, 17.697628, 2.985672, 3.016365 +1.950000, 18.008635, 2.985672, 3.016365 +1.966667, 18.319642, 2.985672, 3.016365 +1.983333, 18.630650, 2.985672, 3.016365 +2.000000, 18.941657, 2.985672, 3.016365 +2.016667, 19.252665, 2.985672, 3.016365 +2.033333, 19.563672, 2.985672, 3.016365 +2.050000, 19.874680, 2.985672, 3.016365 +2.066667, 20.185687, 2.985672, 3.016365 +2.083333, 20.496695, 2.985672, 3.016365 +2.100000, 20.807702, 2.985672, 3.016365 +2.116667, 21.118710, 2.985672, 3.016365 +2.133333, 21.429717, 2.985672, 3.016365 +2.150000, 21.740725, 2.985672, 3.016365 +2.166667, 22.051732, 2.985672, 3.016365 +2.183333, 22.362740, 2.985672, 3.016365 +2.200000, 22.673747, 2.985672, 3.016365 +2.216667, 22.984755, 2.985672, 3.016365 +2.233333, 23.295762, 2.985672, 3.016365 +2.250000, 23.606769, 2.985672, 3.016365 +2.266667, 23.917777, 2.985672, 3.016365 +2.283333, 24.228784, 2.985672, 3.016365 +2.300000, 24.539792, 2.985672, 3.016365 +2.316667, 24.850799, 2.985672, 3.016365 +2.333333, 25.161807, 2.985672, 3.016365 +2.350000, 25.472814, 2.985672, 3.016365 +2.366667, 25.783822, 2.985672, 3.016365 +2.383333, 26.094829, 2.985672, 3.016365 +2.400000, 26.405837, 2.985672, 3.016365 +2.416667, 26.716844, 2.985672, 3.016365 +2.433333, 27.027852, 2.985672, 3.016365 +2.450000, 27.338859, 2.985672, 3.016365 +2.466667, 27.649867, 2.985672, 3.016365 +2.483333, 27.960874, 2.985672, 3.016365 +2.500000, 28.271882, 2.985672, 3.016365 +2.516667, 28.582889, 2.985672, 3.016365 +2.533333, 28.893896, 2.985672, 3.016365 +2.550000, 29.204904, 2.985672, 3.016365 +2.566667, 29.515911, 2.985672, 3.016365 +2.583333, 29.826919, 2.985672, 3.016365 +2.600000, 30.137926, 2.985672, 3.016365 +2.616667, 30.448934, 2.985672, 3.016365 +2.633333, 30.759941, 2.985672, 3.016365 +2.650000, 31.070949, 2.985672, 3.016365 +2.666667, 31.381956, 2.985672, 3.016365 +2.683333, 31.692964, 2.985672, 3.016365 +2.700000, 32.003971, 2.985672, 3.016365 +2.716667, 32.314979, 2.985672, 3.016365 +2.733333, 32.625986, 2.985672, 3.016365 +2.750000, 32.936994, 2.985672, 3.016365 +2.766667, 33.248001, 2.985672, 3.016365 +2.783333, 33.559009, 2.985672, 3.016365 +2.800000, 33.870016, 2.985672, 3.016365 +2.816667, 34.181024, 2.985672, 3.016365 +2.833333, 34.492031, 2.985672, 3.016365 +2.850000, 34.803038, 2.985672, 3.016365 +2.866667, 35.114046, 2.985672, 3.016365 +2.883333, 35.425053, 2.985672, 3.016365 +2.900000, 35.736061, 2.985672, 3.016365 +2.916667, 36.047068, 2.985672, 3.016365 +2.933333, 36.358076, 2.985672, 3.016365 +2.950000, 36.669083, 2.985672, 3.016365 +2.966667, 36.980091, 2.985672, 3.016365 +2.983333, 37.291098, 2.985672, 3.016365 +3.000000, 37.602106, 2.985672, 3.016365 +3.016667, 37.913113, 2.985672, 3.016365 +3.033333, 38.224121, 2.985672, 3.016365 +3.050000, 38.535128, 2.985672, 3.016365 +3.066667, 38.846136, 2.985672, 3.016365 +3.083333, 39.157143, 2.985672, 3.016365 +3.100000, 39.468151, 2.985672, 3.016365 +3.116667, 39.779158, 2.985672, 3.016365 +3.133333, 40.090165, 2.985672, 3.016365 +3.150000, 40.401173, 2.985672, 3.016365 +3.166667, 40.712180, 2.985672, 3.016365 +3.183333, 41.023188, 2.985672, 3.016365 +3.200000, 41.334195, 2.985672, 3.016365 +3.216667, 41.645203, 2.985672, 3.016365 +3.233333, 41.956210, 2.985672, 3.016365 +3.250000, 42.267218, 2.985672, 3.016365 +3.266667, 42.578225, 2.985672, 3.016365 +3.283333, 42.889233, 2.985672, 3.016365 +3.300000, 43.200240, 2.985672, 3.016365 +3.316667, 43.511248, 2.985672, 3.016365 +3.333333, 43.822255, 2.985672, 3.016365 +3.350000, 44.133263, 2.985672, 3.016365 +3.366667, 44.444270, 2.985672, 3.016365 +3.383333, 44.755278, 2.985672, 3.016365 +3.400000, 45.066285, 2.985672, 3.016365 +3.416667, 45.377293, 2.985672, 3.016365 +3.433333, 45.688300, 2.985672, 3.016365 +3.450000, 45.999307, 2.985672, 3.016365 +3.466667, 46.310315, 2.985672, 3.016365 +3.483333, 46.621322, 2.985672, 3.016365 +3.500000, 46.932330, 2.985672, 3.016365 +3.516667, 47.243337, 2.985672, 3.016365 +3.533333, 47.554345, 2.985672, 3.016365 +3.550000, 47.865352, 2.985672, 3.016365 +3.566667, 48.176360, 2.985672, 3.016365 +3.583333, 48.487367, 2.985672, 3.016365 +3.600000, 48.798375, 2.985672, 3.016365 +3.616667, 49.109382, 2.985672, 3.016365 +3.633333, 49.420390, 2.985672, 3.016365 +3.650000, 49.731397, 2.985672, 3.016365 +3.666667, 50.042405, 2.985672, 3.016365 +3.683333, 50.353412, 2.985672, 3.016365 +3.700000, 50.664420, 2.985672, 3.016365 +3.716667, 50.975427, 2.985672, 3.016365 +3.733333, 51.286434, 2.985672, 3.016365 +3.750000, 51.597442, 2.985672, 3.016365 +3.766667, 51.908449, 2.985672, 3.016365 +3.783333, 52.219457, 2.985672, 3.016365 +3.800000, 52.530464, 2.985672, 3.016365 +3.816667, 52.841472, 2.985672, 3.016365 +3.833333, 53.152479, 2.985672, 3.016365 +3.850000, 53.463487, 2.985672, 3.016365 +3.866667, 53.774494, 2.985672, 3.016365 +3.883333, 54.085502, 2.985672, 3.016365 +3.900000, 54.396509, 2.985672, 3.016365 +3.916667, 54.707517, 2.985672, 3.016365 +3.933333, 55.018524, 2.985672, 3.016365 +3.950000, 55.329532, 2.985672, 3.016365 +3.966667, 55.640539, 2.985672, 3.016365 +3.983333, 55.951547, 2.985672, 3.016365 +4.000000, 56.262554, 2.985672, 3.016365 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_11520_phev_SUV.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_11520_phev_SUV.csv new file mode 100644 index 0000000..ee2cef5 --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_11520_phev_SUV.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.539375, 7.686100, 7.770982 +1.016667, 1.152246, 8.733401, 8.832000 +1.033333, 1.765116, 8.733401, 8.832000 +1.050000, 2.377986, 8.733401, 8.832000 +1.066667, 2.990857, 8.733401, 8.832000 +1.083333, 3.603727, 8.733401, 8.832000 +1.100000, 4.216597, 8.733401, 8.832000 +1.116667, 4.829467, 8.733401, 8.832000 +1.133333, 5.442338, 8.733401, 8.832000 +1.150000, 6.055208, 8.733401, 8.832000 +1.166667, 6.668078, 8.733401, 8.832000 +1.183333, 7.280948, 8.733401, 8.832000 +1.200000, 7.893819, 8.733401, 8.832000 +1.216667, 8.506689, 8.733401, 8.832000 +1.233333, 9.119559, 8.733401, 8.832000 +1.250000, 9.732430, 8.733401, 8.832000 +1.266667, 10.345300, 8.733401, 8.832000 +1.283333, 10.958170, 8.733401, 8.832000 +1.300000, 11.571040, 8.733401, 8.832000 +1.316667, 12.183911, 8.733401, 8.832000 +1.333333, 12.796781, 8.733401, 8.832000 +1.350000, 13.409651, 8.733401, 8.832000 +1.366667, 14.022521, 8.733401, 8.832000 +1.383333, 14.635392, 8.733401, 8.832000 +1.400000, 15.248262, 8.733401, 8.832000 +1.416667, 15.861132, 8.733401, 8.832000 +1.433333, 16.474003, 8.733401, 8.832000 +1.450000, 17.086873, 8.733401, 8.832000 +1.466667, 17.699743, 8.733401, 8.832000 +1.483333, 18.312613, 8.733401, 8.832000 +1.500000, 18.925484, 8.733401, 8.832000 +1.516667, 19.538354, 8.733401, 8.832000 +1.533333, 20.151224, 8.733401, 8.832000 +1.550000, 20.764095, 8.733401, 8.832000 +1.566667, 21.376965, 8.733401, 8.832000 +1.583333, 21.989835, 8.733401, 8.832000 +1.600000, 22.602705, 8.733401, 8.832000 +1.616667, 23.215576, 8.733401, 8.832000 +1.633333, 23.828446, 8.733401, 8.832000 +1.650000, 24.441316, 8.733401, 8.832000 +1.666667, 25.054186, 8.733401, 8.832000 +1.683333, 25.667057, 8.733401, 8.832000 +1.700000, 26.279927, 8.733401, 8.832000 +1.716667, 26.892797, 8.733401, 8.832000 +1.733333, 27.505668, 8.733401, 8.832000 +1.750000, 28.118538, 8.733401, 8.832000 +1.766667, 28.731408, 8.733401, 8.832000 +1.783333, 29.344278, 8.733401, 8.832000 +1.800000, 29.957149, 8.733401, 8.832000 +1.816667, 30.570019, 8.733401, 8.832000 +1.833333, 31.182889, 8.733401, 8.832000 +1.850000, 31.795759, 8.733401, 8.832000 +1.866667, 32.408630, 8.733401, 8.832000 +1.883333, 33.021500, 8.733401, 8.832000 +1.900000, 33.634370, 8.733401, 8.832000 +1.916667, 34.247241, 8.733401, 8.832000 +1.933333, 34.860111, 8.733401, 8.832000 +1.950000, 35.472981, 8.733401, 8.832000 +1.966667, 36.085851, 8.733401, 8.832000 +1.983333, 36.698722, 8.733401, 8.832000 +2.000000, 37.311592, 8.733401, 8.832000 +2.016667, 37.924462, 8.733401, 8.832000 +2.033333, 38.537333, 8.733401, 8.832000 +2.050000, 39.150203, 8.733401, 8.832000 +2.066667, 39.763073, 8.733401, 8.832000 +2.083333, 40.375943, 8.733401, 8.832000 +2.100000, 40.988814, 8.733401, 8.832000 +2.116667, 41.601684, 8.733401, 8.832000 +2.133333, 42.214554, 8.733401, 8.832000 +2.150000, 42.827424, 8.733401, 8.832000 +2.166667, 43.440295, 8.733401, 8.832000 +2.183333, 44.053165, 8.733401, 8.832000 +2.200000, 44.666035, 8.733401, 8.832000 +2.216667, 45.278906, 8.733401, 8.832000 +2.233333, 45.891776, 8.733401, 8.832000 +2.250000, 46.504646, 8.733401, 8.832000 +2.266667, 47.117516, 8.733401, 8.832000 +2.283333, 47.730387, 8.733401, 8.832000 +2.300000, 48.343257, 8.733401, 8.832000 +2.316667, 48.956127, 8.733401, 8.832000 +2.333333, 49.568997, 8.733401, 8.832000 +2.350000, 50.181868, 8.733401, 8.832000 +2.366667, 50.794738, 8.733401, 8.832000 +2.383333, 51.407608, 8.733401, 8.832000 +2.400000, 52.020479, 8.733401, 8.832000 +2.416667, 52.633349, 8.733401, 8.832000 +2.433333, 53.246219, 8.733401, 8.832000 +2.450000, 53.859089, 8.733401, 8.832000 +2.466667, 54.471960, 8.733401, 8.832000 +2.483333, 55.084830, 8.733401, 8.832000 +2.500000, 55.697700, 8.733401, 8.832000 +2.516667, 56.310571, 8.733401, 8.832000 +2.533333, 56.923441, 8.733401, 8.832000 +2.550000, 57.536311, 8.733401, 8.832000 +2.566667, 58.149181, 8.733401, 8.832000 +2.583333, 58.762052, 8.733401, 8.832000 +2.600000, 59.374922, 8.733401, 8.832000 +2.616667, 59.987792, 8.733401, 8.832000 +2.633333, 60.600662, 8.733401, 8.832000 +2.650000, 61.213533, 8.733401, 8.832000 +2.666667, 61.826403, 8.733401, 8.832000 +2.683333, 62.439273, 8.733401, 8.832000 +2.700000, 63.052144, 8.733401, 8.832000 +2.716667, 63.665014, 8.733401, 8.832000 +2.733333, 64.277884, 8.733401, 8.832000 +2.750000, 64.890754, 8.733401, 8.832000 +2.766667, 65.503625, 8.733401, 8.832000 +2.783333, 66.116495, 8.733401, 8.832000 +2.800000, 66.729365, 8.733401, 8.832000 +2.816667, 67.342235, 8.733401, 8.832000 +2.833333, 67.955106, 8.733401, 8.832000 +2.850000, 68.567976, 8.733401, 8.832000 +2.866667, 69.180846, 8.733401, 8.832000 +2.883333, 69.793717, 8.733401, 8.832000 +2.900000, 70.406587, 8.733401, 8.832000 +2.916667, 71.019457, 8.733401, 8.832000 +2.933333, 71.632327, 8.733401, 8.832000 +2.950000, 72.245198, 8.733401, 8.832000 +2.966667, 72.858068, 8.733401, 8.832000 +2.983333, 73.470938, 8.733401, 8.832000 +3.000000, 74.083809, 8.733401, 8.832000 +3.016667, 74.696679, 8.733401, 8.832000 +3.033333, 75.309549, 8.733401, 8.832000 +3.050000, 75.922419, 8.733401, 8.832000 +3.066667, 76.535290, 8.733401, 8.832000 +3.083333, 77.148160, 8.733401, 8.832000 +3.100000, 77.761030, 8.733401, 8.832000 +3.116667, 78.373900, 8.733401, 8.832000 +3.133333, 78.986771, 8.733401, 8.832000 +3.150000, 79.599641, 8.733401, 8.832000 +3.166667, 80.212511, 8.733401, 8.832000 +3.183333, 80.825382, 8.733401, 8.832000 +3.200000, 81.438252, 8.733401, 8.832000 +3.216667, 82.051122, 8.733401, 8.832000 +3.233333, 82.663992, 8.733401, 8.832000 +3.250000, 83.276863, 8.733401, 8.832000 +3.266667, 83.889733, 8.733401, 8.832000 +3.283333, 84.502603, 8.733401, 8.832000 +3.300000, 85.115473, 8.733401, 8.832000 +3.316667, 85.728344, 8.733401, 8.832000 +3.333333, 86.341214, 8.733401, 8.832000 +3.350000, 86.954084, 8.733401, 8.832000 +3.366667, 87.566955, 8.733401, 8.832000 +3.383333, 88.179825, 8.733401, 8.832000 +3.400000, 88.792695, 8.733401, 8.832000 +3.416667, 89.405565, 8.733401, 8.832000 +3.433333, 90.018436, 8.733401, 8.832000 +3.450000, 90.631306, 8.733401, 8.832000 +3.466667, 91.244176, 8.733401, 8.832000 +3.483333, 91.857047, 8.733401, 8.832000 +3.500000, 92.469917, 8.733401, 8.832000 +3.516667, 93.082787, 8.733401, 8.832000 +3.533333, 93.695657, 8.733401, 8.832000 +3.550000, 94.308528, 8.733401, 8.832000 +3.566667, 94.921398, 8.733401, 8.832000 +3.583333, 95.534268, 8.733401, 8.832000 +3.600000, 96.147138, 8.733401, 8.832000 +3.616667, 96.760009, 8.733401, 8.832000 +3.633333, 97.372879, 8.733401, 8.832000 +3.650000, 97.962686, 8.404745, 8.498984 +3.666667, 98.451688, 6.968290, 7.044070 +3.683333, 98.850306, 5.680300, 5.740356 +3.700000, 99.175156, 4.629109, 4.676911 +3.716667, 99.439882, 3.772342, 3.810540 +3.733333, 99.655606, 3.074078, 3.104703 +3.750000, 99.800321, 2.062187, 2.082243 +3.766667, 99.800587, 0.003787, 0.003822 +3.783333, 99.800587, 0.000000, 0.000000 +3.800000, 99.800587, 0.000000, 0.000000 +3.816667, 99.800587, 0.000000, 0.000000 +3.833333, 99.800587, 0.000000, 0.000000 +3.850000, 99.800587, 0.000000, 0.000000 +3.866667, 99.800587, 0.000000, 0.000000 +3.883333, 99.800587, 0.000000, 0.000000 +3.900000, 99.800587, 0.000000, 0.000000 +3.916667, 99.800587, 0.000000, 0.000000 +3.933333, 99.800587, 0.000000, 0.000000 +3.950000, 99.800587, 0.000000, 0.000000 +3.966667, 99.800587, 0.000000, 0.000000 +3.983333, 99.800587, 0.000000, 0.000000 +4.000000, 99.800587, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_17280_bev150_150kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_17280_bev150_150kW.csv new file mode 100644 index 0000000..4b23e41 --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_17280_bev150_150kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.284910, 7.692571, 7.770982 +1.016667, 0.608679, 8.741761, 8.832000 +1.033333, 0.932448, 8.741761, 8.832000 +1.050000, 1.256217, 8.741761, 8.832000 +1.066667, 1.579986, 8.741761, 8.832000 +1.083333, 1.903755, 8.741761, 8.832000 +1.100000, 2.227524, 8.741761, 8.832000 +1.116667, 2.551292, 8.741761, 8.832000 +1.133333, 2.875061, 8.741761, 8.832000 +1.150000, 3.198830, 8.741761, 8.832000 +1.166667, 3.522599, 8.741761, 8.832000 +1.183333, 3.846368, 8.741761, 8.832000 +1.200000, 4.170137, 8.741761, 8.832000 +1.216667, 4.493906, 8.741761, 8.832000 +1.233333, 4.817675, 8.741761, 8.832000 +1.250000, 5.141444, 8.741761, 8.832000 +1.266667, 5.465213, 8.741761, 8.832000 +1.283333, 5.788982, 8.741761, 8.832000 +1.300000, 6.112750, 8.741761, 8.832000 +1.316667, 6.436519, 8.741761, 8.832000 +1.333333, 6.760288, 8.741761, 8.832000 +1.350000, 7.084057, 8.741761, 8.832000 +1.366667, 7.407826, 8.741761, 8.832000 +1.383333, 7.731595, 8.741761, 8.832000 +1.400000, 8.055364, 8.741761, 8.832000 +1.416667, 8.379133, 8.741761, 8.832000 +1.433333, 8.702902, 8.741761, 8.832000 +1.450000, 9.026671, 8.741761, 8.832000 +1.466667, 9.350440, 8.741761, 8.832000 +1.483333, 9.674209, 8.741761, 8.832000 +1.500000, 9.997977, 8.741761, 8.832000 +1.516667, 10.321746, 8.741761, 8.832000 +1.533333, 10.645515, 8.741761, 8.832000 +1.550000, 10.969284, 8.741761, 8.832000 +1.566667, 11.293053, 8.741761, 8.832000 +1.583333, 11.616822, 8.741761, 8.832000 +1.600000, 11.940591, 8.741761, 8.832000 +1.616667, 12.264360, 8.741761, 8.832000 +1.633333, 12.588129, 8.741761, 8.832000 +1.650000, 12.911898, 8.741761, 8.832000 +1.666667, 13.235667, 8.741761, 8.832000 +1.683333, 13.559435, 8.741761, 8.832000 +1.700000, 13.883204, 8.741761, 8.832000 +1.716667, 14.206973, 8.741761, 8.832000 +1.733333, 14.530742, 8.741761, 8.832000 +1.750000, 14.854511, 8.741761, 8.832000 +1.766667, 15.178280, 8.741761, 8.832000 +1.783333, 15.502049, 8.741761, 8.832000 +1.800000, 15.825818, 8.741761, 8.832000 +1.816667, 16.149587, 8.741761, 8.832000 +1.833333, 16.473356, 8.741761, 8.832000 +1.850000, 16.797125, 8.741761, 8.832000 +1.866667, 17.120894, 8.741761, 8.832000 +1.883333, 17.444662, 8.741761, 8.832000 +1.900000, 17.768431, 8.741761, 8.832000 +1.916667, 18.092200, 8.741761, 8.832000 +1.933333, 18.415969, 8.741761, 8.832000 +1.950000, 18.739738, 8.741761, 8.832000 +1.966667, 19.063507, 8.741761, 8.832000 +1.983333, 19.387276, 8.741761, 8.832000 +2.000000, 19.711045, 8.741761, 8.832000 +2.016667, 20.034814, 8.741761, 8.832000 +2.033333, 20.358583, 8.741761, 8.832000 +2.050000, 20.682352, 8.741761, 8.832000 +2.066667, 21.006120, 8.741761, 8.832000 +2.083333, 21.329889, 8.741761, 8.832000 +2.100000, 21.653658, 8.741761, 8.832000 +2.116667, 21.977427, 8.741761, 8.832000 +2.133333, 22.301196, 8.741761, 8.832000 +2.150000, 22.624965, 8.741761, 8.832000 +2.166667, 22.948734, 8.741761, 8.832000 +2.183333, 23.272503, 8.741761, 8.832000 +2.200000, 23.596272, 8.741761, 8.832000 +2.216667, 23.920041, 8.741761, 8.832000 +2.233333, 24.243810, 8.741761, 8.832000 +2.250000, 24.567579, 8.741761, 8.832000 +2.266667, 24.891347, 8.741761, 8.832000 +2.283333, 25.215116, 8.741761, 8.832000 +2.300000, 25.538885, 8.741761, 8.832000 +2.316667, 25.862654, 8.741761, 8.832000 +2.333333, 26.186423, 8.741761, 8.832000 +2.350000, 26.510192, 8.741761, 8.832000 +2.366667, 26.833961, 8.741761, 8.832000 +2.383333, 27.157730, 8.741761, 8.832000 +2.400000, 27.481499, 8.741761, 8.832000 +2.416667, 27.805268, 8.741761, 8.832000 +2.433333, 28.129037, 8.741761, 8.832000 +2.450000, 28.452805, 8.741761, 8.832000 +2.466667, 28.776574, 8.741761, 8.832000 +2.483333, 29.100343, 8.741761, 8.832000 +2.500000, 29.424112, 8.741761, 8.832000 +2.516667, 29.747881, 8.741761, 8.832000 +2.533333, 30.071650, 8.741761, 8.832000 +2.550000, 30.395419, 8.741761, 8.832000 +2.566667, 30.719188, 8.741761, 8.832000 +2.583333, 31.042957, 8.741761, 8.832000 +2.600000, 31.366726, 8.741761, 8.832000 +2.616667, 31.690495, 8.741761, 8.832000 +2.633333, 32.014263, 8.741761, 8.832000 +2.650000, 32.338032, 8.741761, 8.832000 +2.666667, 32.661801, 8.741761, 8.832000 +2.683333, 32.985570, 8.741761, 8.832000 +2.700000, 33.309339, 8.741761, 8.832000 +2.716667, 33.633108, 8.741761, 8.832000 +2.733333, 33.956877, 8.741761, 8.832000 +2.750000, 34.280646, 8.741761, 8.832000 +2.766667, 34.604415, 8.741761, 8.832000 +2.783333, 34.928184, 8.741761, 8.832000 +2.800000, 35.251953, 8.741761, 8.832000 +2.816667, 35.575722, 8.741761, 8.832000 +2.833333, 35.899490, 8.741761, 8.832000 +2.850000, 36.223259, 8.741761, 8.832000 +2.866667, 36.547028, 8.741761, 8.832000 +2.883333, 36.870797, 8.741761, 8.832000 +2.900000, 37.194566, 8.741761, 8.832000 +2.916667, 37.518335, 8.741761, 8.832000 +2.933333, 37.842104, 8.741761, 8.832000 +2.950000, 38.165873, 8.741761, 8.832000 +2.966667, 38.489642, 8.741761, 8.832000 +2.983333, 38.813411, 8.741761, 8.832000 +3.000000, 39.137180, 8.741761, 8.832000 +3.016667, 39.460948, 8.741761, 8.832000 +3.033333, 39.784717, 8.741761, 8.832000 +3.050000, 40.108486, 8.741761, 8.832000 +3.066667, 40.432255, 8.741761, 8.832000 +3.083333, 40.756024, 8.741761, 8.832000 +3.100000, 41.079793, 8.741761, 8.832000 +3.116667, 41.403562, 8.741761, 8.832000 +3.133333, 41.727331, 8.741761, 8.832000 +3.150000, 42.051100, 8.741761, 8.832000 +3.166667, 42.374869, 8.741761, 8.832000 +3.183333, 42.698638, 8.741761, 8.832000 +3.200000, 43.022407, 8.741761, 8.832000 +3.216667, 43.346175, 8.741761, 8.832000 +3.233333, 43.669944, 8.741761, 8.832000 +3.250000, 43.993713, 8.741761, 8.832000 +3.266667, 44.317482, 8.741761, 8.832000 +3.283333, 44.641251, 8.741761, 8.832000 +3.300000, 44.965020, 8.741761, 8.832000 +3.316667, 45.288789, 8.741761, 8.832000 +3.333333, 45.612558, 8.741761, 8.832000 +3.350000, 45.936327, 8.741761, 8.832000 +3.366667, 46.260096, 8.741761, 8.832000 +3.383333, 46.583865, 8.741761, 8.832000 +3.400000, 46.907633, 8.741761, 8.832000 +3.416667, 47.231402, 8.741761, 8.832000 +3.433333, 47.555171, 8.741761, 8.832000 +3.450000, 47.878940, 8.741761, 8.832000 +3.466667, 48.202709, 8.741761, 8.832000 +3.483333, 48.526478, 8.741761, 8.832000 +3.500000, 48.850247, 8.741761, 8.832000 +3.516667, 49.174016, 8.741761, 8.832000 +3.533333, 49.497785, 8.741761, 8.832000 +3.550000, 49.821554, 8.741761, 8.832000 +3.566667, 50.145323, 8.741761, 8.832000 +3.583333, 50.469092, 8.741761, 8.832000 +3.600000, 50.792860, 8.741761, 8.832000 +3.616667, 51.116629, 8.741761, 8.832000 +3.633333, 51.440398, 8.741761, 8.832000 +3.650000, 51.764167, 8.741761, 8.832000 +3.666667, 52.087936, 8.741761, 8.832000 +3.683333, 52.411705, 8.741761, 8.832000 +3.700000, 52.735474, 8.741761, 8.832000 +3.716667, 53.059243, 8.741761, 8.832000 +3.733333, 53.383012, 8.741761, 8.832000 +3.750000, 53.706781, 8.741761, 8.832000 +3.766667, 54.030550, 8.741761, 8.832000 +3.783333, 54.354318, 8.741761, 8.832000 +3.800000, 54.678087, 8.741761, 8.832000 +3.816667, 55.001856, 8.741761, 8.832000 +3.833333, 55.325625, 8.741761, 8.832000 +3.850000, 55.649394, 8.741761, 8.832000 +3.866667, 55.973163, 8.741761, 8.832000 +3.883333, 56.296932, 8.741761, 8.832000 +3.900000, 56.620701, 8.741761, 8.832000 +3.916667, 56.944470, 8.741761, 8.832000 +3.933333, 57.268239, 8.741761, 8.832000 +3.950000, 57.592008, 8.741761, 8.832000 +3.966667, 57.915777, 8.741761, 8.832000 +3.983333, 58.239545, 8.741761, 8.832000 +4.000000, 58.563314, 8.741761, 8.832000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_17280_bev150_ld1_50kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_17280_bev150_ld1_50kW.csv new file mode 100644 index 0000000..7fb388e --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_17280_bev150_ld1_50kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.198492, 5.359295, 5.412378 +1.016667, 0.421158, 6.011968, 6.072000 +1.033333, 0.643823, 6.011968, 6.072000 +1.050000, 0.866489, 6.011968, 6.072000 +1.066667, 1.089154, 6.011968, 6.072000 +1.083333, 1.311820, 6.011968, 6.072000 +1.100000, 1.534485, 6.011968, 6.072000 +1.116667, 1.757151, 6.011968, 6.072000 +1.133333, 1.979816, 6.011968, 6.072000 +1.150000, 2.202482, 6.011968, 6.072000 +1.166667, 2.425147, 6.011968, 6.072000 +1.183333, 2.647813, 6.011968, 6.072000 +1.200000, 2.870478, 6.011968, 6.072000 +1.216667, 3.093144, 6.011968, 6.072000 +1.233333, 3.315809, 6.011968, 6.072000 +1.250000, 3.538474, 6.011968, 6.072000 +1.266667, 3.761140, 6.011968, 6.072000 +1.283333, 3.983805, 6.011968, 6.072000 +1.300000, 4.206471, 6.011968, 6.072000 +1.316667, 4.429136, 6.011968, 6.072000 +1.333333, 4.651802, 6.011968, 6.072000 +1.350000, 4.874467, 6.011968, 6.072000 +1.366667, 5.097133, 6.011968, 6.072000 +1.383333, 5.319798, 6.011968, 6.072000 +1.400000, 5.542464, 6.011968, 6.072000 +1.416667, 5.765129, 6.011968, 6.072000 +1.433333, 5.987795, 6.011968, 6.072000 +1.450000, 6.210460, 6.011968, 6.072000 +1.466667, 6.433126, 6.011968, 6.072000 +1.483333, 6.655791, 6.011968, 6.072000 +1.500000, 6.878456, 6.011968, 6.072000 +1.516667, 7.101122, 6.011968, 6.072000 +1.533333, 7.323787, 6.011968, 6.072000 +1.550000, 7.546453, 6.011968, 6.072000 +1.566667, 7.769118, 6.011968, 6.072000 +1.583333, 7.991784, 6.011968, 6.072000 +1.600000, 8.214449, 6.011968, 6.072000 +1.616667, 8.437115, 6.011968, 6.072000 +1.633333, 8.659780, 6.011968, 6.072000 +1.650000, 8.882446, 6.011968, 6.072000 +1.666667, 9.105111, 6.011968, 6.072000 +1.683333, 9.327777, 6.011968, 6.072000 +1.700000, 9.550442, 6.011968, 6.072000 +1.716667, 9.773108, 6.011968, 6.072000 +1.733333, 9.995773, 6.011968, 6.072000 +1.750000, 10.218439, 6.011968, 6.072000 +1.766667, 10.441104, 6.011968, 6.072000 +1.783333, 10.663769, 6.011968, 6.072000 +1.800000, 10.886435, 6.011968, 6.072000 +1.816667, 11.109100, 6.011968, 6.072000 +1.833333, 11.331766, 6.011968, 6.072000 +1.850000, 11.554431, 6.011968, 6.072000 +1.866667, 11.777097, 6.011968, 6.072000 +1.883333, 11.999762, 6.011968, 6.072000 +1.900000, 12.222428, 6.011968, 6.072000 +1.916667, 12.445093, 6.011968, 6.072000 +1.933333, 12.667759, 6.011968, 6.072000 +1.950000, 12.890424, 6.011968, 6.072000 +1.966667, 13.113090, 6.011968, 6.072000 +1.983333, 13.335755, 6.011968, 6.072000 +2.000000, 13.558421, 6.011968, 6.072000 +2.016667, 13.781086, 6.011968, 6.072000 +2.033333, 14.003751, 6.011968, 6.072000 +2.050000, 14.226417, 6.011968, 6.072000 +2.066667, 14.449082, 6.011968, 6.072000 +2.083333, 14.671748, 6.011968, 6.072000 +2.100000, 14.894413, 6.011968, 6.072000 +2.116667, 15.117079, 6.011968, 6.072000 +2.133333, 15.339744, 6.011968, 6.072000 +2.150000, 15.562410, 6.011968, 6.072000 +2.166667, 15.785075, 6.011968, 6.072000 +2.183333, 16.007741, 6.011968, 6.072000 +2.200000, 16.230406, 6.011968, 6.072000 +2.216667, 16.453072, 6.011968, 6.072000 +2.233333, 16.675737, 6.011968, 6.072000 +2.250000, 16.898403, 6.011968, 6.072000 +2.266667, 17.121068, 6.011968, 6.072000 +2.283333, 17.343733, 6.011968, 6.072000 +2.300000, 17.566399, 6.011968, 6.072000 +2.316667, 17.789064, 6.011968, 6.072000 +2.333333, 18.011730, 6.011968, 6.072000 +2.350000, 18.234395, 6.011968, 6.072000 +2.366667, 18.457061, 6.011968, 6.072000 +2.383333, 18.679726, 6.011968, 6.072000 +2.400000, 18.902392, 6.011968, 6.072000 +2.416667, 19.125057, 6.011968, 6.072000 +2.433333, 19.347723, 6.011968, 6.072000 +2.450000, 19.570388, 6.011968, 6.072000 +2.466667, 19.793054, 6.011968, 6.072000 +2.483333, 20.015719, 6.011968, 6.072000 +2.500000, 20.238385, 6.011968, 6.072000 +2.516667, 20.461050, 6.011968, 6.072000 +2.533333, 20.683716, 6.011968, 6.072000 +2.550000, 20.906381, 6.011968, 6.072000 +2.566667, 21.129046, 6.011968, 6.072000 +2.583333, 21.351712, 6.011968, 6.072000 +2.600000, 21.574377, 6.011968, 6.072000 +2.616667, 21.797043, 6.011968, 6.072000 +2.633333, 22.019708, 6.011968, 6.072000 +2.650000, 22.242374, 6.011968, 6.072000 +2.666667, 22.465039, 6.011968, 6.072000 +2.683333, 22.687705, 6.011968, 6.072000 +2.700000, 22.910370, 6.011968, 6.072000 +2.716667, 23.133036, 6.011968, 6.072000 +2.733333, 23.355701, 6.011968, 6.072000 +2.750000, 23.578367, 6.011968, 6.072000 +2.766667, 23.801032, 6.011968, 6.072000 +2.783333, 24.023698, 6.011968, 6.072000 +2.800000, 24.246363, 6.011968, 6.072000 +2.816667, 24.469028, 6.011968, 6.072000 +2.833333, 24.691694, 6.011968, 6.072000 +2.850000, 24.914359, 6.011968, 6.072000 +2.866667, 25.137025, 6.011968, 6.072000 +2.883333, 25.359690, 6.011968, 6.072000 +2.900000, 25.582356, 6.011968, 6.072000 +2.916667, 25.805021, 6.011968, 6.072000 +2.933333, 26.027687, 6.011968, 6.072000 +2.950000, 26.250352, 6.011968, 6.072000 +2.966667, 26.473018, 6.011968, 6.072000 +2.983333, 26.695683, 6.011968, 6.072000 +3.000000, 26.918349, 6.011968, 6.072000 +3.016667, 27.141014, 6.011968, 6.072000 +3.033333, 27.363680, 6.011968, 6.072000 +3.050000, 27.586345, 6.011968, 6.072000 +3.066667, 27.809011, 6.011968, 6.072000 +3.083333, 28.031676, 6.011968, 6.072000 +3.100000, 28.254341, 6.011968, 6.072000 +3.116667, 28.477007, 6.011968, 6.072000 +3.133333, 28.699672, 6.011968, 6.072000 +3.150000, 28.922338, 6.011968, 6.072000 +3.166667, 29.145003, 6.011968, 6.072000 +3.183333, 29.367669, 6.011968, 6.072000 +3.200000, 29.590334, 6.011968, 6.072000 +3.216667, 29.813000, 6.011968, 6.072000 +3.233333, 30.035665, 6.011968, 6.072000 +3.250000, 30.258331, 6.011968, 6.072000 +3.266667, 30.480996, 6.011968, 6.072000 +3.283333, 30.703662, 6.011968, 6.072000 +3.300000, 30.926327, 6.011968, 6.072000 +3.316667, 31.148993, 6.011968, 6.072000 +3.333333, 31.371658, 6.011968, 6.072000 +3.350000, 31.594323, 6.011968, 6.072000 +3.366667, 31.816989, 6.011968, 6.072000 +3.383333, 32.039654, 6.011968, 6.072000 +3.400000, 32.262320, 6.011968, 6.072000 +3.416667, 32.484985, 6.011968, 6.072000 +3.433333, 32.707651, 6.011968, 6.072000 +3.450000, 32.930316, 6.011968, 6.072000 +3.466667, 33.152982, 6.011968, 6.072000 +3.483333, 33.375647, 6.011968, 6.072000 +3.500000, 33.598313, 6.011968, 6.072000 +3.516667, 33.820978, 6.011968, 6.072000 +3.533333, 34.043644, 6.011968, 6.072000 +3.550000, 34.266309, 6.011968, 6.072000 +3.566667, 34.488975, 6.011968, 6.072000 +3.583333, 34.711640, 6.011968, 6.072000 +3.600000, 34.934306, 6.011968, 6.072000 +3.616667, 35.156971, 6.011968, 6.072000 +3.633333, 35.379636, 6.011968, 6.072000 +3.650000, 35.602302, 6.011968, 6.072000 +3.666667, 35.824967, 6.011968, 6.072000 +3.683333, 36.047633, 6.011968, 6.072000 +3.700000, 36.270298, 6.011968, 6.072000 +3.716667, 36.492964, 6.011968, 6.072000 +3.733333, 36.715629, 6.011968, 6.072000 +3.750000, 36.938295, 6.011968, 6.072000 +3.766667, 37.160960, 6.011968, 6.072000 +3.783333, 37.383626, 6.011968, 6.072000 +3.800000, 37.606291, 6.011968, 6.072000 +3.816667, 37.828957, 6.011968, 6.072000 +3.833333, 38.051622, 6.011968, 6.072000 +3.850000, 38.274288, 6.011968, 6.072000 +3.866667, 38.496953, 6.011968, 6.072000 +3.883333, 38.719618, 6.011968, 6.072000 +3.900000, 38.942284, 6.011968, 6.072000 +3.916667, 39.164949, 6.011968, 6.072000 +3.933333, 39.387615, 6.011968, 6.072000 +3.950000, 39.610280, 6.011968, 6.072000 +3.966667, 39.832946, 6.011968, 6.072000 +3.983333, 40.055611, 6.011968, 6.072000 +4.000000, 40.278277, 6.011968, 6.072000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_17280_bev200_ld4_150kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_17280_bev200_ld4_150kW.csv new file mode 100644 index 0000000..5708a5d --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_17280_bev200_ld4_150kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.135024, 7.696378, 7.770982 +1.016667, 0.288475, 8.746678, 8.832000 +1.033333, 0.441925, 8.746678, 8.832000 +1.050000, 0.595376, 8.746678, 8.832000 +1.066667, 0.748826, 8.746678, 8.832000 +1.083333, 0.902277, 8.746678, 8.832000 +1.100000, 1.055727, 8.746678, 8.832000 +1.116667, 1.209178, 8.746678, 8.832000 +1.133333, 1.362628, 8.746678, 8.832000 +1.150000, 1.516079, 8.746678, 8.832000 +1.166667, 1.669529, 8.746678, 8.832000 +1.183333, 1.822980, 8.746678, 8.832000 +1.200000, 1.976430, 8.746678, 8.832000 +1.216667, 2.129881, 8.746678, 8.832000 +1.233333, 2.283331, 8.746678, 8.832000 +1.250000, 2.436781, 8.746678, 8.832000 +1.266667, 2.590232, 8.746678, 8.832000 +1.283333, 2.743682, 8.746678, 8.832000 +1.300000, 2.897133, 8.746678, 8.832000 +1.316667, 3.050583, 8.746678, 8.832000 +1.333333, 3.204034, 8.746678, 8.832000 +1.350000, 3.357484, 8.746678, 8.832000 +1.366667, 3.510935, 8.746678, 8.832000 +1.383333, 3.664385, 8.746678, 8.832000 +1.400000, 3.817836, 8.746678, 8.832000 +1.416667, 3.971286, 8.746678, 8.832000 +1.433333, 4.124737, 8.746678, 8.832000 +1.450000, 4.278187, 8.746678, 8.832000 +1.466667, 4.431638, 8.746678, 8.832000 +1.483333, 4.585088, 8.746678, 8.832000 +1.500000, 4.738539, 8.746678, 8.832000 +1.516667, 4.891989, 8.746678, 8.832000 +1.533333, 5.045440, 8.746678, 8.832000 +1.550000, 5.198890, 8.746678, 8.832000 +1.566667, 5.352341, 8.746678, 8.832000 +1.583333, 5.505791, 8.746678, 8.832000 +1.600000, 5.659242, 8.746678, 8.832000 +1.616667, 5.812692, 8.746678, 8.832000 +1.633333, 5.966143, 8.746678, 8.832000 +1.650000, 6.119593, 8.746678, 8.832000 +1.666667, 6.273044, 8.746678, 8.832000 +1.683333, 6.426494, 8.746678, 8.832000 +1.700000, 6.579945, 8.746678, 8.832000 +1.716667, 6.733395, 8.746678, 8.832000 +1.733333, 6.886846, 8.746678, 8.832000 +1.750000, 7.040296, 8.746678, 8.832000 +1.766667, 7.193747, 8.746678, 8.832000 +1.783333, 7.347197, 8.746678, 8.832000 +1.800000, 7.500648, 8.746678, 8.832000 +1.816667, 7.654098, 8.746678, 8.832000 +1.833333, 7.807549, 8.746678, 8.832000 +1.850000, 7.960999, 8.746678, 8.832000 +1.866667, 8.114450, 8.746678, 8.832000 +1.883333, 8.267900, 8.746678, 8.832000 +1.900000, 8.421351, 8.746678, 8.832000 +1.916667, 8.574801, 8.746678, 8.832000 +1.933333, 8.728252, 8.746678, 8.832000 +1.950000, 8.881702, 8.746678, 8.832000 +1.966667, 9.035152, 8.746678, 8.832000 +1.983333, 9.188603, 8.746678, 8.832000 +2.000000, 9.342053, 8.746678, 8.832000 +2.016667, 9.495504, 8.746678, 8.832000 +2.033333, 9.648954, 8.746678, 8.832000 +2.050000, 9.802405, 8.746678, 8.832000 +2.066667, 9.955855, 8.746678, 8.832000 +2.083333, 10.109306, 8.746678, 8.832000 +2.100000, 10.262756, 8.746678, 8.832000 +2.116667, 10.416207, 8.746678, 8.832000 +2.133333, 10.569657, 8.746678, 8.832000 +2.150000, 10.723108, 8.746678, 8.832000 +2.166667, 10.876558, 8.746678, 8.832000 +2.183333, 11.030009, 8.746678, 8.832000 +2.200000, 11.183459, 8.746678, 8.832000 +2.216667, 11.336910, 8.746678, 8.832000 +2.233333, 11.490360, 8.746678, 8.832000 +2.250000, 11.643811, 8.746678, 8.832000 +2.266667, 11.797261, 8.746678, 8.832000 +2.283333, 11.950712, 8.746678, 8.832000 +2.300000, 12.104162, 8.746678, 8.832000 +2.316667, 12.257613, 8.746678, 8.832000 +2.333333, 12.411063, 8.746678, 8.832000 +2.350000, 12.564514, 8.746678, 8.832000 +2.366667, 12.717964, 8.746678, 8.832000 +2.383333, 12.871415, 8.746678, 8.832000 +2.400000, 13.024865, 8.746678, 8.832000 +2.416667, 13.178316, 8.746678, 8.832000 +2.433333, 13.331766, 8.746678, 8.832000 +2.450000, 13.485217, 8.746678, 8.832000 +2.466667, 13.638667, 8.746678, 8.832000 +2.483333, 13.792118, 8.746678, 8.832000 +2.500000, 13.945568, 8.746678, 8.832000 +2.516667, 14.099019, 8.746678, 8.832000 +2.533333, 14.252469, 8.746678, 8.832000 +2.550000, 14.405920, 8.746678, 8.832000 +2.566667, 14.559370, 8.746678, 8.832000 +2.583333, 14.712821, 8.746678, 8.832000 +2.600000, 14.866271, 8.746678, 8.832000 +2.616667, 15.019722, 8.746678, 8.832000 +2.633333, 15.173172, 8.746678, 8.832000 +2.650000, 15.326623, 8.746678, 8.832000 +2.666667, 15.480073, 8.746678, 8.832000 +2.683333, 15.633523, 8.746678, 8.832000 +2.700000, 15.786974, 8.746678, 8.832000 +2.716667, 15.940424, 8.746678, 8.832000 +2.733333, 16.093875, 8.746678, 8.832000 +2.750000, 16.247325, 8.746678, 8.832000 +2.766667, 16.400776, 8.746678, 8.832000 +2.783333, 16.554226, 8.746678, 8.832000 +2.800000, 16.707677, 8.746678, 8.832000 +2.816667, 16.861127, 8.746678, 8.832000 +2.833333, 17.014578, 8.746678, 8.832000 +2.850000, 17.168028, 8.746678, 8.832000 +2.866667, 17.321479, 8.746678, 8.832000 +2.883333, 17.474929, 8.746678, 8.832000 +2.900000, 17.628380, 8.746678, 8.832000 +2.916667, 17.781830, 8.746678, 8.832000 +2.933333, 17.935281, 8.746678, 8.832000 +2.950000, 18.088731, 8.746678, 8.832000 +2.966667, 18.242182, 8.746678, 8.832000 +2.983333, 18.395632, 8.746678, 8.832000 +3.000000, 18.549083, 8.746678, 8.832000 +3.016667, 18.702533, 8.746678, 8.832000 +3.033333, 18.855984, 8.746678, 8.832000 +3.050000, 19.009434, 8.746678, 8.832000 +3.066667, 19.162885, 8.746678, 8.832000 +3.083333, 19.316335, 8.746678, 8.832000 +3.100000, 19.469786, 8.746678, 8.832000 +3.116667, 19.623236, 8.746678, 8.832000 +3.133333, 19.776687, 8.746678, 8.832000 +3.150000, 19.930137, 8.746678, 8.832000 +3.166667, 20.083588, 8.746678, 8.832000 +3.183333, 20.237038, 8.746678, 8.832000 +3.200000, 20.390489, 8.746678, 8.832000 +3.216667, 20.543939, 8.746678, 8.832000 +3.233333, 20.697390, 8.746678, 8.832000 +3.250000, 20.850840, 8.746678, 8.832000 +3.266667, 21.004291, 8.746678, 8.832000 +3.283333, 21.157741, 8.746678, 8.832000 +3.300000, 21.311192, 8.746678, 8.832000 +3.316667, 21.464642, 8.746678, 8.832000 +3.333333, 21.618093, 8.746678, 8.832000 +3.350000, 21.771543, 8.746678, 8.832000 +3.366667, 21.924994, 8.746678, 8.832000 +3.383333, 22.078444, 8.746678, 8.832000 +3.400000, 22.231894, 8.746678, 8.832000 +3.416667, 22.385345, 8.746678, 8.832000 +3.433333, 22.538795, 8.746678, 8.832000 +3.450000, 22.692246, 8.746678, 8.832000 +3.466667, 22.845696, 8.746678, 8.832000 +3.483333, 22.999147, 8.746678, 8.832000 +3.500000, 23.152597, 8.746678, 8.832000 +3.516667, 23.306048, 8.746678, 8.832000 +3.533333, 23.459498, 8.746678, 8.832000 +3.550000, 23.612949, 8.746678, 8.832000 +3.566667, 23.766399, 8.746678, 8.832000 +3.583333, 23.919850, 8.746678, 8.832000 +3.600000, 24.073300, 8.746678, 8.832000 +3.616667, 24.226751, 8.746678, 8.832000 +3.633333, 24.380201, 8.746678, 8.832000 +3.650000, 24.533652, 8.746678, 8.832000 +3.666667, 24.687102, 8.746678, 8.832000 +3.683333, 24.840553, 8.746678, 8.832000 +3.700000, 24.994003, 8.746678, 8.832000 +3.716667, 25.147454, 8.746678, 8.832000 +3.733333, 25.300904, 8.746678, 8.832000 +3.750000, 25.454355, 8.746678, 8.832000 +3.766667, 25.607805, 8.746678, 8.832000 +3.783333, 25.761256, 8.746678, 8.832000 +3.800000, 25.914706, 8.746678, 8.832000 +3.816667, 26.068157, 8.746678, 8.832000 +3.833333, 26.221607, 8.746678, 8.832000 +3.850000, 26.375058, 8.746678, 8.832000 +3.866667, 26.528508, 8.746678, 8.832000 +3.883333, 26.681959, 8.746678, 8.832000 +3.900000, 26.835409, 8.746678, 8.832000 +3.916667, 26.988860, 8.746678, 8.832000 +3.933333, 27.142310, 8.746678, 8.832000 +3.950000, 27.295761, 8.746678, 8.832000 +3.966667, 27.449211, 8.746678, 8.832000 +3.983333, 27.602662, 8.746678, 8.832000 +4.000000, 27.756112, 8.746678, 8.832000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_17280_bev250_350kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_17280_bev250_350kW.csv new file mode 100644 index 0000000..d43538c --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_17280_bev250_350kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.128276, 9.143505, 9.231932 +1.016667, 0.275274, 10.478014, 10.580000 +1.033333, 0.422272, 10.478014, 10.580000 +1.050000, 0.569270, 10.478014, 10.580000 +1.066667, 0.716268, 10.478014, 10.580000 +1.083333, 0.863266, 10.478014, 10.580000 +1.100000, 1.010264, 10.478014, 10.580000 +1.116667, 1.157262, 10.478014, 10.580000 +1.133333, 1.304260, 10.478014, 10.580000 +1.150000, 1.451257, 10.478014, 10.580000 +1.166667, 1.598255, 10.478014, 10.580000 +1.183333, 1.745253, 10.478014, 10.580000 +1.200000, 1.892251, 10.478014, 10.580000 +1.216667, 2.039249, 10.478014, 10.580000 +1.233333, 2.186247, 10.478014, 10.580000 +1.250000, 2.333245, 10.478014, 10.580000 +1.266667, 2.480243, 10.478014, 10.580000 +1.283333, 2.627241, 10.478014, 10.580000 +1.300000, 2.774239, 10.478014, 10.580000 +1.316667, 2.921237, 10.478014, 10.580000 +1.333333, 3.068235, 10.478014, 10.580000 +1.350000, 3.215233, 10.478014, 10.580000 +1.366667, 3.362231, 10.478014, 10.580000 +1.383333, 3.509229, 10.478014, 10.580000 +1.400000, 3.656227, 10.478014, 10.580000 +1.416667, 3.803225, 10.478014, 10.580000 +1.433333, 3.950223, 10.478014, 10.580000 +1.450000, 4.097221, 10.478014, 10.580000 +1.466667, 4.244219, 10.478014, 10.580000 +1.483333, 4.391217, 10.478014, 10.580000 +1.500000, 4.538215, 10.478014, 10.580000 +1.516667, 4.685212, 10.478014, 10.580000 +1.533333, 4.832210, 10.478014, 10.580000 +1.550000, 4.979208, 10.478014, 10.580000 +1.566667, 5.126206, 10.478014, 10.580000 +1.583333, 5.273204, 10.478014, 10.580000 +1.600000, 5.420202, 10.478014, 10.580000 +1.616667, 5.567200, 10.478014, 10.580000 +1.633333, 5.714198, 10.478014, 10.580000 +1.650000, 5.861196, 10.478014, 10.580000 +1.666667, 6.008194, 10.478014, 10.580000 +1.683333, 6.155192, 10.478014, 10.580000 +1.700000, 6.302190, 10.478014, 10.580000 +1.716667, 6.449188, 10.478014, 10.580000 +1.733333, 6.596186, 10.478014, 10.580000 +1.750000, 6.743184, 10.478014, 10.580000 +1.766667, 6.890182, 10.478014, 10.580000 +1.783333, 7.037180, 10.478014, 10.580000 +1.800000, 7.184178, 10.478014, 10.580000 +1.816667, 7.331176, 10.478014, 10.580000 +1.833333, 7.478174, 10.478014, 10.580000 +1.850000, 7.625172, 10.478014, 10.580000 +1.866667, 7.772170, 10.478014, 10.580000 +1.883333, 7.919167, 10.478014, 10.580000 +1.900000, 8.066165, 10.478014, 10.580000 +1.916667, 8.213163, 10.478014, 10.580000 +1.933333, 8.360161, 10.478014, 10.580000 +1.950000, 8.507159, 10.478014, 10.580000 +1.966667, 8.654157, 10.478014, 10.580000 +1.983333, 8.801155, 10.478014, 10.580000 +2.000000, 8.948153, 10.478014, 10.580000 +2.016667, 9.095151, 10.478014, 10.580000 +2.033333, 9.242149, 10.478014, 10.580000 +2.050000, 9.389147, 10.478014, 10.580000 +2.066667, 9.536145, 10.478014, 10.580000 +2.083333, 9.683143, 10.478014, 10.580000 +2.100000, 9.830141, 10.478014, 10.580000 +2.116667, 9.977139, 10.478014, 10.580000 +2.133333, 10.124137, 10.478014, 10.580000 +2.150000, 10.271135, 10.478014, 10.580000 +2.166667, 10.418133, 10.478014, 10.580000 +2.183333, 10.565131, 10.478014, 10.580000 +2.200000, 10.712129, 10.478014, 10.580000 +2.216667, 10.859127, 10.478014, 10.580000 +2.233333, 11.006124, 10.478014, 10.580000 +2.250000, 11.153122, 10.478014, 10.580000 +2.266667, 11.300120, 10.478014, 10.580000 +2.283333, 11.447118, 10.478014, 10.580000 +2.300000, 11.594116, 10.478014, 10.580000 +2.316667, 11.741114, 10.478014, 10.580000 +2.333333, 11.888112, 10.478014, 10.580000 +2.350000, 12.035110, 10.478014, 10.580000 +2.366667, 12.182108, 10.478014, 10.580000 +2.383333, 12.329106, 10.478014, 10.580000 +2.400000, 12.476104, 10.478014, 10.580000 +2.416667, 12.623102, 10.478014, 10.580000 +2.433333, 12.770100, 10.478014, 10.580000 +2.450000, 12.917098, 10.478014, 10.580000 +2.466667, 13.064096, 10.478014, 10.580000 +2.483333, 13.211094, 10.478014, 10.580000 +2.500000, 13.358092, 10.478014, 10.580000 +2.516667, 13.505090, 10.478014, 10.580000 +2.533333, 13.652088, 10.478014, 10.580000 +2.550000, 13.799086, 10.478014, 10.580000 +2.566667, 13.946084, 10.478014, 10.580000 +2.583333, 14.093082, 10.478014, 10.580000 +2.600000, 14.240079, 10.478014, 10.580000 +2.616667, 14.387077, 10.478014, 10.580000 +2.633333, 14.534075, 10.478014, 10.580000 +2.650000, 14.681073, 10.478014, 10.580000 +2.666667, 14.828071, 10.478014, 10.580000 +2.683333, 14.975069, 10.478014, 10.580000 +2.700000, 15.122067, 10.478014, 10.580000 +2.716667, 15.269065, 10.478014, 10.580000 +2.733333, 15.416063, 10.478014, 10.580000 +2.750000, 15.563061, 10.478014, 10.580000 +2.766667, 15.710059, 10.478014, 10.580000 +2.783333, 15.857057, 10.478014, 10.580000 +2.800000, 16.004055, 10.478014, 10.580000 +2.816667, 16.151053, 10.478014, 10.580000 +2.833333, 16.298051, 10.478014, 10.580000 +2.850000, 16.445049, 10.478014, 10.580000 +2.866667, 16.592047, 10.478014, 10.580000 +2.883333, 16.739045, 10.478014, 10.580000 +2.900000, 16.886043, 10.478014, 10.580000 +2.916667, 17.033041, 10.478014, 10.580000 +2.933333, 17.180039, 10.478014, 10.580000 +2.950000, 17.327037, 10.478014, 10.580000 +2.966667, 17.474034, 10.478014, 10.580000 +2.983333, 17.621032, 10.478014, 10.580000 +3.000000, 17.768030, 10.478014, 10.580000 +3.016667, 17.915028, 10.478014, 10.580000 +3.033333, 18.062026, 10.478014, 10.580000 +3.050000, 18.209024, 10.478014, 10.580000 +3.066667, 18.356022, 10.478014, 10.580000 +3.083333, 18.503020, 10.478014, 10.580000 +3.100000, 18.650018, 10.478014, 10.580000 +3.116667, 18.797016, 10.478014, 10.580000 +3.133333, 18.944014, 10.478014, 10.580000 +3.150000, 19.091012, 10.478014, 10.580000 +3.166667, 19.238010, 10.478014, 10.580000 +3.183333, 19.385008, 10.478014, 10.580000 +3.200000, 19.532006, 10.478014, 10.580000 +3.216667, 19.679004, 10.478014, 10.580000 +3.233333, 19.826002, 10.478014, 10.580000 +3.250000, 19.973000, 10.478014, 10.580000 +3.266667, 20.119998, 10.478014, 10.580000 +3.283333, 20.266996, 10.478014, 10.580000 +3.300000, 20.413994, 10.478014, 10.580000 +3.316667, 20.560992, 10.478014, 10.580000 +3.333333, 20.707989, 10.478014, 10.580000 +3.350000, 20.854987, 10.478014, 10.580000 +3.366667, 21.001985, 10.478014, 10.580000 +3.383333, 21.148983, 10.478014, 10.580000 +3.400000, 21.295981, 10.478014, 10.580000 +3.416667, 21.442979, 10.478014, 10.580000 +3.433333, 21.589977, 10.478014, 10.580000 +3.450000, 21.736975, 10.478014, 10.580000 +3.466667, 21.883973, 10.478014, 10.580000 +3.483333, 22.030971, 10.478014, 10.580000 +3.500000, 22.177969, 10.478014, 10.580000 +3.516667, 22.324967, 10.478014, 10.580000 +3.533333, 22.471965, 10.478014, 10.580000 +3.550000, 22.618963, 10.478014, 10.580000 +3.566667, 22.765961, 10.478014, 10.580000 +3.583333, 22.912959, 10.478014, 10.580000 +3.600000, 23.059957, 10.478014, 10.580000 +3.616667, 23.206955, 10.478014, 10.580000 +3.633333, 23.353953, 10.478014, 10.580000 +3.650000, 23.500951, 10.478014, 10.580000 +3.666667, 23.647949, 10.478014, 10.580000 +3.683333, 23.794947, 10.478014, 10.580000 +3.700000, 23.941944, 10.478014, 10.580000 +3.716667, 24.088942, 10.478014, 10.580000 +3.733333, 24.235940, 10.478014, 10.580000 +3.750000, 24.382938, 10.478014, 10.580000 +3.766667, 24.529936, 10.478014, 10.580000 +3.783333, 24.676934, 10.478014, 10.580000 +3.800000, 24.823932, 10.478014, 10.580000 +3.816667, 24.970930, 10.478014, 10.580000 +3.833333, 25.117928, 10.478014, 10.580000 +3.850000, 25.264926, 10.478014, 10.580000 +3.866667, 25.411924, 10.478014, 10.580000 +3.883333, 25.558922, 10.478014, 10.580000 +3.900000, 25.705920, 10.478014, 10.580000 +3.916667, 25.852918, 10.478014, 10.580000 +3.933333, 25.999916, 10.478014, 10.580000 +3.950000, 26.146914, 10.478014, 10.580000 +3.966667, 26.293912, 10.478014, 10.580000 +3.983333, 26.440910, 10.478014, 10.580000 +4.000000, 26.587908, 10.478014, 10.580000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_17280_bev250_400kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_17280_bev250_400kW.csv new file mode 100644 index 0000000..d46a87e --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_17280_bev250_400kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.173494, 9.108420, 9.231932 +1.016667, 0.372297, 10.437176, 10.580000 +1.033333, 0.571100, 10.437176, 10.580000 +1.050000, 0.769904, 10.437176, 10.580000 +1.066667, 0.968707, 10.437176, 10.580000 +1.083333, 1.167511, 10.437176, 10.580000 +1.100000, 1.366314, 10.437176, 10.580000 +1.116667, 1.565117, 10.437176, 10.580000 +1.133333, 1.763921, 10.437176, 10.580000 +1.150000, 1.962724, 10.437176, 10.580000 +1.166667, 2.161527, 10.437176, 10.580000 +1.183333, 2.360331, 10.437176, 10.580000 +1.200000, 2.559134, 10.437176, 10.580000 +1.216667, 2.757937, 10.437176, 10.580000 +1.233333, 2.956741, 10.437176, 10.580000 +1.250000, 3.155544, 10.437176, 10.580000 +1.266667, 3.354347, 10.437176, 10.580000 +1.283333, 3.553151, 10.437176, 10.580000 +1.300000, 3.751954, 10.437176, 10.580000 +1.316667, 3.950757, 10.437176, 10.580000 +1.333333, 4.149561, 10.437176, 10.580000 +1.350000, 4.348364, 10.437176, 10.580000 +1.366667, 4.547168, 10.437176, 10.580000 +1.383333, 4.745971, 10.437176, 10.580000 +1.400000, 4.944774, 10.437176, 10.580000 +1.416667, 5.143578, 10.437176, 10.580000 +1.433333, 5.342381, 10.437176, 10.580000 +1.450000, 5.541184, 10.437176, 10.580000 +1.466667, 5.739988, 10.437176, 10.580000 +1.483333, 5.938791, 10.437176, 10.580000 +1.500000, 6.137594, 10.437176, 10.580000 +1.516667, 6.336398, 10.437176, 10.580000 +1.533333, 6.535201, 10.437176, 10.580000 +1.550000, 6.734004, 10.437176, 10.580000 +1.566667, 6.932808, 10.437176, 10.580000 +1.583333, 7.131611, 10.437176, 10.580000 +1.600000, 7.330415, 10.437176, 10.580000 +1.616667, 7.529218, 10.437176, 10.580000 +1.633333, 7.728021, 10.437176, 10.580000 +1.650000, 7.926825, 10.437176, 10.580000 +1.666667, 8.125628, 10.437176, 10.580000 +1.683333, 8.324431, 10.437176, 10.580000 +1.700000, 8.523235, 10.437176, 10.580000 +1.716667, 8.722038, 10.437176, 10.580000 +1.733333, 8.920841, 10.437176, 10.580000 +1.750000, 9.119645, 10.437176, 10.580000 +1.766667, 9.318448, 10.437176, 10.580000 +1.783333, 9.517251, 10.437176, 10.580000 +1.800000, 9.716055, 10.437176, 10.580000 +1.816667, 9.914858, 10.437176, 10.580000 +1.833333, 10.113662, 10.437176, 10.580000 +1.850000, 10.312465, 10.437176, 10.580000 +1.866667, 10.511268, 10.437176, 10.580000 +1.883333, 10.710072, 10.437176, 10.580000 +1.900000, 10.908875, 10.437176, 10.580000 +1.916667, 11.107678, 10.437176, 10.580000 +1.933333, 11.306482, 10.437176, 10.580000 +1.950000, 11.505285, 10.437176, 10.580000 +1.966667, 11.704088, 10.437176, 10.580000 +1.983333, 11.902892, 10.437176, 10.580000 +2.000000, 12.101695, 10.437176, 10.580000 +2.016667, 12.300498, 10.437176, 10.580000 +2.033333, 12.499302, 10.437176, 10.580000 +2.050000, 12.698105, 10.437176, 10.580000 +2.066667, 12.896909, 10.437176, 10.580000 +2.083333, 13.095712, 10.437176, 10.580000 +2.100000, 13.294515, 10.437176, 10.580000 +2.116667, 13.493319, 10.437176, 10.580000 +2.133333, 13.692122, 10.437176, 10.580000 +2.150000, 13.890925, 10.437176, 10.580000 +2.166667, 14.089729, 10.437176, 10.580000 +2.183333, 14.288532, 10.437176, 10.580000 +2.200000, 14.487335, 10.437176, 10.580000 +2.216667, 14.686139, 10.437176, 10.580000 +2.233333, 14.884942, 10.437176, 10.580000 +2.250000, 15.083745, 10.437176, 10.580000 +2.266667, 15.282549, 10.437176, 10.580000 +2.283333, 15.481352, 10.437176, 10.580000 +2.300000, 15.680156, 10.437176, 10.580000 +2.316667, 15.878959, 10.437176, 10.580000 +2.333333, 16.077762, 10.437176, 10.580000 +2.350000, 16.276566, 10.437176, 10.580000 +2.366667, 16.475369, 10.437176, 10.580000 +2.383333, 16.674172, 10.437176, 10.580000 +2.400000, 16.872976, 10.437176, 10.580000 +2.416667, 17.071779, 10.437176, 10.580000 +2.433333, 17.270582, 10.437176, 10.580000 +2.450000, 17.469386, 10.437176, 10.580000 +2.466667, 17.668189, 10.437176, 10.580000 +2.483333, 17.866992, 10.437176, 10.580000 +2.500000, 18.065796, 10.437176, 10.580000 +2.516667, 18.264599, 10.437176, 10.580000 +2.533333, 18.463403, 10.437176, 10.580000 +2.550000, 18.662206, 10.437176, 10.580000 +2.566667, 18.861009, 10.437176, 10.580000 +2.583333, 19.059813, 10.437176, 10.580000 +2.600000, 19.258616, 10.437176, 10.580000 +2.616667, 19.457419, 10.437176, 10.580000 +2.633333, 19.656223, 10.437176, 10.580000 +2.650000, 19.855026, 10.437176, 10.580000 +2.666667, 20.053829, 10.437176, 10.580000 +2.683333, 20.252633, 10.437176, 10.580000 +2.700000, 20.451436, 10.437176, 10.580000 +2.716667, 20.650239, 10.437176, 10.580000 +2.733333, 20.849043, 10.437176, 10.580000 +2.750000, 21.047846, 10.437176, 10.580000 +2.766667, 21.246650, 10.437176, 10.580000 +2.783333, 21.445453, 10.437176, 10.580000 +2.800000, 21.644256, 10.437176, 10.580000 +2.816667, 21.843060, 10.437176, 10.580000 +2.833333, 22.041863, 10.437176, 10.580000 +2.850000, 22.240666, 10.437176, 10.580000 +2.866667, 22.439470, 10.437176, 10.580000 +2.883333, 22.638273, 10.437176, 10.580000 +2.900000, 22.837076, 10.437176, 10.580000 +2.916667, 23.035880, 10.437176, 10.580000 +2.933333, 23.234683, 10.437176, 10.580000 +2.950000, 23.433486, 10.437176, 10.580000 +2.966667, 23.632290, 10.437176, 10.580000 +2.983333, 23.831093, 10.437176, 10.580000 +3.000000, 24.029897, 10.437176, 10.580000 +3.016667, 24.228700, 10.437176, 10.580000 +3.033333, 24.427503, 10.437176, 10.580000 +3.050000, 24.626307, 10.437176, 10.580000 +3.066667, 24.825110, 10.437176, 10.580000 +3.083333, 25.023913, 10.437176, 10.580000 +3.100000, 25.222717, 10.437176, 10.580000 +3.116667, 25.421520, 10.437176, 10.580000 +3.133333, 25.620323, 10.437176, 10.580000 +3.150000, 25.819127, 10.437176, 10.580000 +3.166667, 26.017930, 10.437176, 10.580000 +3.183333, 26.216733, 10.437176, 10.580000 +3.200000, 26.415537, 10.437176, 10.580000 +3.216667, 26.614340, 10.437176, 10.580000 +3.233333, 26.813144, 10.437176, 10.580000 +3.250000, 27.011947, 10.437176, 10.580000 +3.266667, 27.210750, 10.437176, 10.580000 +3.283333, 27.409554, 10.437176, 10.580000 +3.300000, 27.608357, 10.437176, 10.580000 +3.316667, 27.807160, 10.437176, 10.580000 +3.333333, 28.005964, 10.437176, 10.580000 +3.350000, 28.204767, 10.437176, 10.580000 +3.366667, 28.403570, 10.437176, 10.580000 +3.383333, 28.602374, 10.437176, 10.580000 +3.400000, 28.801177, 10.437176, 10.580000 +3.416667, 28.999980, 10.437176, 10.580000 +3.433333, 29.198784, 10.437176, 10.580000 +3.450000, 29.397587, 10.437176, 10.580000 +3.466667, 29.596391, 10.437176, 10.580000 +3.483333, 29.795194, 10.437176, 10.580000 +3.500000, 29.993997, 10.437176, 10.580000 +3.516667, 30.192801, 10.437176, 10.580000 +3.533333, 30.391604, 10.437176, 10.580000 +3.550000, 30.590407, 10.437176, 10.580000 +3.566667, 30.789211, 10.437176, 10.580000 +3.583333, 30.988014, 10.437176, 10.580000 +3.600000, 31.186817, 10.437176, 10.580000 +3.616667, 31.385621, 10.437176, 10.580000 +3.633333, 31.584424, 10.437176, 10.580000 +3.650000, 31.783227, 10.437176, 10.580000 +3.666667, 31.982031, 10.437176, 10.580000 +3.683333, 32.180834, 10.437176, 10.580000 +3.700000, 32.379637, 10.437176, 10.580000 +3.716667, 32.578441, 10.437176, 10.580000 +3.733333, 32.777244, 10.437176, 10.580000 +3.750000, 32.976048, 10.437176, 10.580000 +3.766667, 33.174851, 10.437176, 10.580000 +3.783333, 33.373654, 10.437176, 10.580000 +3.800000, 33.572458, 10.437176, 10.580000 +3.816667, 33.771261, 10.437176, 10.580000 +3.833333, 33.970064, 10.437176, 10.580000 +3.850000, 34.168868, 10.437176, 10.580000 +3.866667, 34.367671, 10.437176, 10.580000 +3.883333, 34.566474, 10.437176, 10.580000 +3.900000, 34.765278, 10.437176, 10.580000 +3.916667, 34.964081, 10.437176, 10.580000 +3.933333, 35.162884, 10.437176, 10.580000 +3.950000, 35.361688, 10.437176, 10.580000 +3.966667, 35.560491, 10.437176, 10.580000 +3.983333, 35.759295, 10.437176, 10.580000 +4.000000, 35.958098, 10.437176, 10.580000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_17280_bev250_ld1_75kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_17280_bev250_ld1_75kW.csv new file mode 100644 index 0000000..a18d99c --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_17280_bev250_ld1_75kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.119127, 5.360699, 5.412378 +1.016667, 0.252765, 6.013734, 6.072000 +1.033333, 0.386404, 6.013734, 6.072000 +1.050000, 0.520042, 6.013734, 6.072000 +1.066667, 0.653681, 6.013734, 6.072000 +1.083333, 0.787319, 6.013734, 6.072000 +1.100000, 0.920958, 6.013734, 6.072000 +1.116667, 1.054596, 6.013734, 6.072000 +1.133333, 1.188235, 6.013734, 6.072000 +1.150000, 1.321873, 6.013734, 6.072000 +1.166667, 1.455512, 6.013734, 6.072000 +1.183333, 1.589151, 6.013734, 6.072000 +1.200000, 1.722789, 6.013734, 6.072000 +1.216667, 1.856428, 6.013734, 6.072000 +1.233333, 1.990066, 6.013734, 6.072000 +1.250000, 2.123705, 6.013734, 6.072000 +1.266667, 2.257343, 6.013734, 6.072000 +1.283333, 2.390982, 6.013734, 6.072000 +1.300000, 2.524620, 6.013734, 6.072000 +1.316667, 2.658259, 6.013734, 6.072000 +1.333333, 2.791897, 6.013734, 6.072000 +1.350000, 2.925536, 6.013734, 6.072000 +1.366667, 3.059174, 6.013734, 6.072000 +1.383333, 3.192813, 6.013734, 6.072000 +1.400000, 3.326451, 6.013734, 6.072000 +1.416667, 3.460090, 6.013734, 6.072000 +1.433333, 3.593729, 6.013734, 6.072000 +1.450000, 3.727367, 6.013734, 6.072000 +1.466667, 3.861006, 6.013734, 6.072000 +1.483333, 3.994644, 6.013734, 6.072000 +1.500000, 4.128283, 6.013734, 6.072000 +1.516667, 4.261921, 6.013734, 6.072000 +1.533333, 4.395560, 6.013734, 6.072000 +1.550000, 4.529198, 6.013734, 6.072000 +1.566667, 4.662837, 6.013734, 6.072000 +1.583333, 4.796475, 6.013734, 6.072000 +1.600000, 4.930114, 6.013734, 6.072000 +1.616667, 5.063752, 6.013734, 6.072000 +1.633333, 5.197391, 6.013734, 6.072000 +1.650000, 5.331029, 6.013734, 6.072000 +1.666667, 5.464668, 6.013734, 6.072000 +1.683333, 5.598307, 6.013734, 6.072000 +1.700000, 5.731945, 6.013734, 6.072000 +1.716667, 5.865584, 6.013734, 6.072000 +1.733333, 5.999222, 6.013734, 6.072000 +1.750000, 6.132861, 6.013734, 6.072000 +1.766667, 6.266499, 6.013734, 6.072000 +1.783333, 6.400138, 6.013734, 6.072000 +1.800000, 6.533776, 6.013734, 6.072000 +1.816667, 6.667415, 6.013734, 6.072000 +1.833333, 6.801053, 6.013734, 6.072000 +1.850000, 6.934692, 6.013734, 6.072000 +1.866667, 7.068330, 6.013734, 6.072000 +1.883333, 7.201969, 6.013734, 6.072000 +1.900000, 7.335607, 6.013734, 6.072000 +1.916667, 7.469246, 6.013734, 6.072000 +1.933333, 7.602884, 6.013734, 6.072000 +1.950000, 7.736523, 6.013734, 6.072000 +1.966667, 7.870162, 6.013734, 6.072000 +1.983333, 8.003800, 6.013734, 6.072000 +2.000000, 8.137439, 6.013734, 6.072000 +2.016667, 8.271077, 6.013734, 6.072000 +2.033333, 8.404716, 6.013734, 6.072000 +2.050000, 8.538354, 6.013734, 6.072000 +2.066667, 8.671993, 6.013734, 6.072000 +2.083333, 8.805631, 6.013734, 6.072000 +2.100000, 8.939270, 6.013734, 6.072000 +2.116667, 9.072908, 6.013734, 6.072000 +2.133333, 9.206547, 6.013734, 6.072000 +2.150000, 9.340185, 6.013734, 6.072000 +2.166667, 9.473824, 6.013734, 6.072000 +2.183333, 9.607462, 6.013734, 6.072000 +2.200000, 9.741101, 6.013734, 6.072000 +2.216667, 9.874740, 6.013734, 6.072000 +2.233333, 10.008378, 6.013734, 6.072000 +2.250000, 10.142017, 6.013734, 6.072000 +2.266667, 10.275655, 6.013734, 6.072000 +2.283333, 10.409294, 6.013734, 6.072000 +2.300000, 10.542932, 6.013734, 6.072000 +2.316667, 10.676571, 6.013734, 6.072000 +2.333333, 10.810209, 6.013734, 6.072000 +2.350000, 10.943848, 6.013734, 6.072000 +2.366667, 11.077486, 6.013734, 6.072000 +2.383333, 11.211125, 6.013734, 6.072000 +2.400000, 11.344763, 6.013734, 6.072000 +2.416667, 11.478402, 6.013734, 6.072000 +2.433333, 11.612040, 6.013734, 6.072000 +2.450000, 11.745679, 6.013734, 6.072000 +2.466667, 11.879318, 6.013734, 6.072000 +2.483333, 12.012956, 6.013734, 6.072000 +2.500000, 12.146595, 6.013734, 6.072000 +2.516667, 12.280233, 6.013734, 6.072000 +2.533333, 12.413872, 6.013734, 6.072000 +2.550000, 12.547510, 6.013734, 6.072000 +2.566667, 12.681149, 6.013734, 6.072000 +2.583333, 12.814787, 6.013734, 6.072000 +2.600000, 12.948426, 6.013734, 6.072000 +2.616667, 13.082064, 6.013734, 6.072000 +2.633333, 13.215703, 6.013734, 6.072000 +2.650000, 13.349341, 6.013734, 6.072000 +2.666667, 13.482980, 6.013734, 6.072000 +2.683333, 13.616618, 6.013734, 6.072000 +2.700000, 13.750257, 6.013734, 6.072000 +2.716667, 13.883896, 6.013734, 6.072000 +2.733333, 14.017534, 6.013734, 6.072000 +2.750000, 14.151173, 6.013734, 6.072000 +2.766667, 14.284811, 6.013734, 6.072000 +2.783333, 14.418450, 6.013734, 6.072000 +2.800000, 14.552088, 6.013734, 6.072000 +2.816667, 14.685727, 6.013734, 6.072000 +2.833333, 14.819365, 6.013734, 6.072000 +2.850000, 14.953004, 6.013734, 6.072000 +2.866667, 15.086642, 6.013734, 6.072000 +2.883333, 15.220281, 6.013734, 6.072000 +2.900000, 15.353919, 6.013734, 6.072000 +2.916667, 15.487558, 6.013734, 6.072000 +2.933333, 15.621196, 6.013734, 6.072000 +2.950000, 15.754835, 6.013734, 6.072000 +2.966667, 15.888474, 6.013734, 6.072000 +2.983333, 16.022112, 6.013734, 6.072000 +3.000000, 16.155751, 6.013734, 6.072000 +3.016667, 16.289389, 6.013734, 6.072000 +3.033333, 16.423028, 6.013734, 6.072000 +3.050000, 16.556666, 6.013734, 6.072000 +3.066667, 16.690305, 6.013734, 6.072000 +3.083333, 16.823943, 6.013734, 6.072000 +3.100000, 16.957582, 6.013734, 6.072000 +3.116667, 17.091220, 6.013734, 6.072000 +3.133333, 17.224859, 6.013734, 6.072000 +3.150000, 17.358497, 6.013734, 6.072000 +3.166667, 17.492136, 6.013734, 6.072000 +3.183333, 17.625774, 6.013734, 6.072000 +3.200000, 17.759413, 6.013734, 6.072000 +3.216667, 17.893052, 6.013734, 6.072000 +3.233333, 18.026690, 6.013734, 6.072000 +3.250000, 18.160329, 6.013734, 6.072000 +3.266667, 18.293967, 6.013734, 6.072000 +3.283333, 18.427606, 6.013734, 6.072000 +3.300000, 18.561244, 6.013734, 6.072000 +3.316667, 18.694883, 6.013734, 6.072000 +3.333333, 18.828521, 6.013734, 6.072000 +3.350000, 18.962160, 6.013734, 6.072000 +3.366667, 19.095798, 6.013734, 6.072000 +3.383333, 19.229437, 6.013734, 6.072000 +3.400000, 19.363075, 6.013734, 6.072000 +3.416667, 19.496714, 6.013734, 6.072000 +3.433333, 19.630352, 6.013734, 6.072000 +3.450000, 19.763991, 6.013734, 6.072000 +3.466667, 19.897630, 6.013734, 6.072000 +3.483333, 20.031268, 6.013734, 6.072000 +3.500000, 20.164907, 6.013734, 6.072000 +3.516667, 20.298545, 6.013734, 6.072000 +3.533333, 20.432184, 6.013734, 6.072000 +3.550000, 20.565822, 6.013734, 6.072000 +3.566667, 20.699461, 6.013734, 6.072000 +3.583333, 20.833099, 6.013734, 6.072000 +3.600000, 20.966738, 6.013734, 6.072000 +3.616667, 21.100376, 6.013734, 6.072000 +3.633333, 21.234015, 6.013734, 6.072000 +3.650000, 21.367653, 6.013734, 6.072000 +3.666667, 21.501292, 6.013734, 6.072000 +3.683333, 21.634930, 6.013734, 6.072000 +3.700000, 21.768569, 6.013734, 6.072000 +3.716667, 21.902208, 6.013734, 6.072000 +3.733333, 22.035846, 6.013734, 6.072000 +3.750000, 22.169485, 6.013734, 6.072000 +3.766667, 22.303123, 6.013734, 6.072000 +3.783333, 22.436762, 6.013734, 6.072000 +3.800000, 22.570400, 6.013734, 6.072000 +3.816667, 22.704039, 6.013734, 6.072000 +3.833333, 22.837677, 6.013734, 6.072000 +3.850000, 22.971316, 6.013734, 6.072000 +3.866667, 23.104954, 6.013734, 6.072000 +3.883333, 23.238593, 6.013734, 6.072000 +3.900000, 23.372231, 6.013734, 6.072000 +3.916667, 23.505870, 6.013734, 6.072000 +3.933333, 23.639508, 6.013734, 6.072000 +3.950000, 23.773147, 6.013734, 6.072000 +3.966667, 23.906786, 6.013734, 6.072000 +3.983333, 24.040424, 6.013734, 6.072000 +4.000000, 24.174063, 6.013734, 6.072000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_17280_bev250_ld2_300kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_17280_bev250_ld2_300kW.csv new file mode 100644 index 0000000..542a53b --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_17280_bev250_ld2_300kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.173147, 9.142152, 9.231932 +1.016667, 0.371560, 10.476237, 10.580000 +1.033333, 0.569974, 10.476237, 10.580000 +1.050000, 0.768388, 10.476237, 10.580000 +1.066667, 0.966801, 10.476237, 10.580000 +1.083333, 1.165215, 10.476237, 10.580000 +1.100000, 1.363628, 10.476237, 10.580000 +1.116667, 1.562042, 10.476237, 10.580000 +1.133333, 1.760455, 10.476237, 10.580000 +1.150000, 1.958869, 10.476237, 10.580000 +1.166667, 2.157283, 10.476237, 10.580000 +1.183333, 2.355696, 10.476237, 10.580000 +1.200000, 2.554110, 10.476237, 10.580000 +1.216667, 2.752523, 10.476237, 10.580000 +1.233333, 2.950937, 10.476237, 10.580000 +1.250000, 3.149350, 10.476237, 10.580000 +1.266667, 3.347764, 10.476237, 10.580000 +1.283333, 3.546178, 10.476237, 10.580000 +1.300000, 3.744591, 10.476237, 10.580000 +1.316667, 3.943005, 10.476237, 10.580000 +1.333333, 4.141418, 10.476237, 10.580000 +1.350000, 4.339832, 10.476237, 10.580000 +1.366667, 4.538245, 10.476237, 10.580000 +1.383333, 4.736659, 10.476237, 10.580000 +1.400000, 4.935073, 10.476237, 10.580000 +1.416667, 5.133486, 10.476237, 10.580000 +1.433333, 5.331900, 10.476237, 10.580000 +1.450000, 5.530313, 10.476237, 10.580000 +1.466667, 5.728727, 10.476237, 10.580000 +1.483333, 5.927140, 10.476237, 10.580000 +1.500000, 6.125554, 10.476237, 10.580000 +1.516667, 6.323968, 10.476237, 10.580000 +1.533333, 6.522381, 10.476237, 10.580000 +1.550000, 6.720795, 10.476237, 10.580000 +1.566667, 6.919208, 10.476237, 10.580000 +1.583333, 7.117622, 10.476237, 10.580000 +1.600000, 7.316036, 10.476237, 10.580000 +1.616667, 7.514449, 10.476237, 10.580000 +1.633333, 7.712863, 10.476237, 10.580000 +1.650000, 7.911276, 10.476237, 10.580000 +1.666667, 8.109690, 10.476237, 10.580000 +1.683333, 8.308103, 10.476237, 10.580000 +1.700000, 8.506517, 10.476237, 10.580000 +1.716667, 8.704931, 10.476237, 10.580000 +1.733333, 8.903344, 10.476237, 10.580000 +1.750000, 9.101758, 10.476237, 10.580000 +1.766667, 9.300171, 10.476237, 10.580000 +1.783333, 9.498585, 10.476237, 10.580000 +1.800000, 9.696998, 10.476237, 10.580000 +1.816667, 9.895412, 10.476237, 10.580000 +1.833333, 10.093826, 10.476237, 10.580000 +1.850000, 10.292239, 10.476237, 10.580000 +1.866667, 10.490653, 10.476237, 10.580000 +1.883333, 10.689066, 10.476237, 10.580000 +1.900000, 10.887480, 10.476237, 10.580000 +1.916667, 11.085893, 10.476237, 10.580000 +1.933333, 11.284307, 10.476237, 10.580000 +1.950000, 11.482721, 10.476237, 10.580000 +1.966667, 11.681134, 10.476237, 10.580000 +1.983333, 11.879548, 10.476237, 10.580000 +2.000000, 12.077961, 10.476237, 10.580000 +2.016667, 12.276375, 10.476237, 10.580000 +2.033333, 12.474788, 10.476237, 10.580000 +2.050000, 12.673202, 10.476237, 10.580000 +2.066667, 12.871616, 10.476237, 10.580000 +2.083333, 13.070029, 10.476237, 10.580000 +2.100000, 13.268443, 10.476237, 10.580000 +2.116667, 13.466856, 10.476237, 10.580000 +2.133333, 13.665270, 10.476237, 10.580000 +2.150000, 13.863683, 10.476237, 10.580000 +2.166667, 14.062097, 10.476237, 10.580000 +2.183333, 14.260511, 10.476237, 10.580000 +2.200000, 14.458924, 10.476237, 10.580000 +2.216667, 14.657338, 10.476237, 10.580000 +2.233333, 14.855751, 10.476237, 10.580000 +2.250000, 15.054165, 10.476237, 10.580000 +2.266667, 15.252579, 10.476237, 10.580000 +2.283333, 15.450992, 10.476237, 10.580000 +2.300000, 15.649406, 10.476237, 10.580000 +2.316667, 15.847819, 10.476237, 10.580000 +2.333333, 16.046233, 10.476237, 10.580000 +2.350000, 16.244646, 10.476237, 10.580000 +2.366667, 16.443060, 10.476237, 10.580000 +2.383333, 16.641474, 10.476237, 10.580000 +2.400000, 16.839887, 10.476237, 10.580000 +2.416667, 17.038301, 10.476237, 10.580000 +2.433333, 17.236714, 10.476237, 10.580000 +2.450000, 17.435128, 10.476237, 10.580000 +2.466667, 17.633541, 10.476237, 10.580000 +2.483333, 17.831955, 10.476237, 10.580000 +2.500000, 18.030369, 10.476237, 10.580000 +2.516667, 18.228782, 10.476237, 10.580000 +2.533333, 18.427196, 10.476237, 10.580000 +2.550000, 18.625609, 10.476237, 10.580000 +2.566667, 18.824023, 10.476237, 10.580000 +2.583333, 19.022436, 10.476237, 10.580000 +2.600000, 19.220850, 10.476237, 10.580000 +2.616667, 19.419264, 10.476237, 10.580000 +2.633333, 19.617677, 10.476237, 10.580000 +2.650000, 19.816091, 10.476237, 10.580000 +2.666667, 20.014504, 10.476237, 10.580000 +2.683333, 20.212918, 10.476237, 10.580000 +2.700000, 20.411331, 10.476237, 10.580000 +2.716667, 20.609745, 10.476237, 10.580000 +2.733333, 20.808159, 10.476237, 10.580000 +2.750000, 21.006572, 10.476237, 10.580000 +2.766667, 21.204986, 10.476237, 10.580000 +2.783333, 21.403399, 10.476237, 10.580000 +2.800000, 21.601813, 10.476237, 10.580000 +2.816667, 21.800227, 10.476237, 10.580000 +2.833333, 21.998640, 10.476237, 10.580000 +2.850000, 22.197054, 10.476237, 10.580000 +2.866667, 22.395467, 10.476237, 10.580000 +2.883333, 22.593881, 10.476237, 10.580000 +2.900000, 22.792294, 10.476237, 10.580000 +2.916667, 22.990708, 10.476237, 10.580000 +2.933333, 23.189122, 10.476237, 10.580000 +2.950000, 23.387535, 10.476237, 10.580000 +2.966667, 23.585949, 10.476237, 10.580000 +2.983333, 23.784362, 10.476237, 10.580000 +3.000000, 23.982776, 10.476237, 10.580000 +3.016667, 24.181189, 10.476237, 10.580000 +3.033333, 24.379603, 10.476237, 10.580000 +3.050000, 24.578017, 10.476237, 10.580000 +3.066667, 24.776430, 10.476237, 10.580000 +3.083333, 24.974844, 10.476237, 10.580000 +3.100000, 25.173257, 10.476237, 10.580000 +3.116667, 25.371671, 10.476237, 10.580000 +3.133333, 25.570084, 10.476237, 10.580000 +3.150000, 25.768498, 10.476237, 10.580000 +3.166667, 25.966912, 10.476237, 10.580000 +3.183333, 26.165325, 10.476237, 10.580000 +3.200000, 26.363739, 10.476237, 10.580000 +3.216667, 26.562152, 10.476237, 10.580000 +3.233333, 26.760566, 10.476237, 10.580000 +3.250000, 26.958979, 10.476237, 10.580000 +3.266667, 27.157393, 10.476237, 10.580000 +3.283333, 27.355807, 10.476237, 10.580000 +3.300000, 27.554220, 10.476237, 10.580000 +3.316667, 27.752634, 10.476237, 10.580000 +3.333333, 27.951047, 10.476237, 10.580000 +3.350000, 28.149461, 10.476237, 10.580000 +3.366667, 28.347874, 10.476237, 10.580000 +3.383333, 28.546288, 10.476237, 10.580000 +3.400000, 28.744702, 10.476237, 10.580000 +3.416667, 28.943115, 10.476237, 10.580000 +3.433333, 29.141529, 10.476237, 10.580000 +3.450000, 29.339942, 10.476237, 10.580000 +3.466667, 29.538356, 10.476237, 10.580000 +3.483333, 29.736770, 10.476237, 10.580000 +3.500000, 29.935183, 10.476237, 10.580000 +3.516667, 30.133597, 10.476237, 10.580000 +3.533333, 30.332010, 10.476237, 10.580000 +3.550000, 30.530424, 10.476237, 10.580000 +3.566667, 30.728837, 10.476237, 10.580000 +3.583333, 30.927251, 10.476237, 10.580000 +3.600000, 31.125665, 10.476237, 10.580000 +3.616667, 31.324078, 10.476237, 10.580000 +3.633333, 31.522492, 10.476237, 10.580000 +3.650000, 31.720905, 10.476237, 10.580000 +3.666667, 31.919319, 10.476237, 10.580000 +3.683333, 32.117732, 10.476237, 10.580000 +3.700000, 32.316146, 10.476237, 10.580000 +3.716667, 32.514560, 10.476237, 10.580000 +3.733333, 32.712973, 10.476237, 10.580000 +3.750000, 32.911387, 10.476237, 10.580000 +3.766667, 33.109800, 10.476237, 10.580000 +3.783333, 33.308214, 10.476237, 10.580000 +3.800000, 33.506627, 10.476237, 10.580000 +3.816667, 33.705041, 10.476237, 10.580000 +3.833333, 33.903455, 10.476237, 10.580000 +3.850000, 34.101868, 10.476237, 10.580000 +3.866667, 34.300282, 10.476237, 10.580000 +3.883333, 34.498695, 10.476237, 10.580000 +3.900000, 34.697109, 10.476237, 10.580000 +3.916667, 34.895522, 10.476237, 10.580000 +3.933333, 35.093936, 10.476237, 10.580000 +3.950000, 35.292350, 10.476237, 10.580000 +3.966667, 35.490763, 10.476237, 10.580000 +3.983333, 35.689177, 10.476237, 10.580000 +4.000000, 35.887590, 10.476237, 10.580000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_17280_bev275_ld1_150kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_17280_bev275_ld1_150kW.csv new file mode 100644 index 0000000..8662074 --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_17280_bev275_ld1_150kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.154536, 7.695883, 7.770982 +1.016667, 0.330159, 8.746038, 8.832000 +1.033333, 0.505782, 8.746038, 8.832000 +1.050000, 0.681406, 8.746038, 8.832000 +1.066667, 0.857029, 8.746038, 8.832000 +1.083333, 1.032652, 8.746038, 8.832000 +1.100000, 1.208275, 8.746038, 8.832000 +1.116667, 1.383899, 8.746038, 8.832000 +1.133333, 1.559522, 8.746038, 8.832000 +1.150000, 1.735145, 8.746038, 8.832000 +1.166667, 1.910768, 8.746038, 8.832000 +1.183333, 2.086392, 8.746038, 8.832000 +1.200000, 2.262015, 8.746038, 8.832000 +1.216667, 2.437638, 8.746038, 8.832000 +1.233333, 2.613261, 8.746038, 8.832000 +1.250000, 2.788885, 8.746038, 8.832000 +1.266667, 2.964508, 8.746038, 8.832000 +1.283333, 3.140131, 8.746038, 8.832000 +1.300000, 3.315754, 8.746038, 8.832000 +1.316667, 3.491378, 8.746038, 8.832000 +1.333333, 3.667001, 8.746038, 8.832000 +1.350000, 3.842624, 8.746038, 8.832000 +1.366667, 4.018247, 8.746038, 8.832000 +1.383333, 4.193871, 8.746038, 8.832000 +1.400000, 4.369494, 8.746038, 8.832000 +1.416667, 4.545117, 8.746038, 8.832000 +1.433333, 4.720740, 8.746038, 8.832000 +1.450000, 4.896364, 8.746038, 8.832000 +1.466667, 5.071987, 8.746038, 8.832000 +1.483333, 5.247610, 8.746038, 8.832000 +1.500000, 5.423233, 8.746038, 8.832000 +1.516667, 5.598857, 8.746038, 8.832000 +1.533333, 5.774480, 8.746038, 8.832000 +1.550000, 5.950103, 8.746038, 8.832000 +1.566667, 6.125726, 8.746038, 8.832000 +1.583333, 6.301350, 8.746038, 8.832000 +1.600000, 6.476973, 8.746038, 8.832000 +1.616667, 6.652596, 8.746038, 8.832000 +1.633333, 6.828219, 8.746038, 8.832000 +1.650000, 7.003843, 8.746038, 8.832000 +1.666667, 7.179466, 8.746038, 8.832000 +1.683333, 7.355089, 8.746038, 8.832000 +1.700000, 7.530712, 8.746038, 8.832000 +1.716667, 7.706336, 8.746038, 8.832000 +1.733333, 7.881959, 8.746038, 8.832000 +1.750000, 8.057582, 8.746038, 8.832000 +1.766667, 8.233205, 8.746038, 8.832000 +1.783333, 8.408829, 8.746038, 8.832000 +1.800000, 8.584452, 8.746038, 8.832000 +1.816667, 8.760075, 8.746038, 8.832000 +1.833333, 8.935698, 8.746038, 8.832000 +1.850000, 9.111322, 8.746038, 8.832000 +1.866667, 9.286945, 8.746038, 8.832000 +1.883333, 9.462568, 8.746038, 8.832000 +1.900000, 9.638191, 8.746038, 8.832000 +1.916667, 9.813815, 8.746038, 8.832000 +1.933333, 9.989438, 8.746038, 8.832000 +1.950000, 10.165061, 8.746038, 8.832000 +1.966667, 10.340684, 8.746038, 8.832000 +1.983333, 10.516308, 8.746038, 8.832000 +2.000000, 10.691931, 8.746038, 8.832000 +2.016667, 10.867554, 8.746038, 8.832000 +2.033333, 11.043177, 8.746038, 8.832000 +2.050000, 11.218801, 8.746038, 8.832000 +2.066667, 11.394424, 8.746038, 8.832000 +2.083333, 11.570047, 8.746038, 8.832000 +2.100000, 11.745670, 8.746038, 8.832000 +2.116667, 11.921294, 8.746038, 8.832000 +2.133333, 12.096917, 8.746038, 8.832000 +2.150000, 12.272540, 8.746038, 8.832000 +2.166667, 12.448164, 8.746038, 8.832000 +2.183333, 12.623787, 8.746038, 8.832000 +2.200000, 12.799410, 8.746038, 8.832000 +2.216667, 12.975033, 8.746038, 8.832000 +2.233333, 13.150657, 8.746038, 8.832000 +2.250000, 13.326280, 8.746038, 8.832000 +2.266667, 13.501903, 8.746038, 8.832000 +2.283333, 13.677526, 8.746038, 8.832000 +2.300000, 13.853150, 8.746038, 8.832000 +2.316667, 14.028773, 8.746038, 8.832000 +2.333333, 14.204396, 8.746038, 8.832000 +2.350000, 14.380019, 8.746038, 8.832000 +2.366667, 14.555643, 8.746038, 8.832000 +2.383333, 14.731266, 8.746038, 8.832000 +2.400000, 14.906889, 8.746038, 8.832000 +2.416667, 15.082512, 8.746038, 8.832000 +2.433333, 15.258136, 8.746038, 8.832000 +2.450000, 15.433759, 8.746038, 8.832000 +2.466667, 15.609382, 8.746038, 8.832000 +2.483333, 15.785005, 8.746038, 8.832000 +2.500000, 15.960629, 8.746038, 8.832000 +2.516667, 16.136252, 8.746038, 8.832000 +2.533333, 16.311875, 8.746038, 8.832000 +2.550000, 16.487498, 8.746038, 8.832000 +2.566667, 16.663122, 8.746038, 8.832000 +2.583333, 16.838745, 8.746038, 8.832000 +2.600000, 17.014368, 8.746038, 8.832000 +2.616667, 17.189991, 8.746038, 8.832000 +2.633333, 17.365615, 8.746038, 8.832000 +2.650000, 17.541238, 8.746038, 8.832000 +2.666667, 17.716861, 8.746038, 8.832000 +2.683333, 17.892484, 8.746038, 8.832000 +2.700000, 18.068108, 8.746038, 8.832000 +2.716667, 18.243731, 8.746038, 8.832000 +2.733333, 18.419354, 8.746038, 8.832000 +2.750000, 18.594977, 8.746038, 8.832000 +2.766667, 18.770601, 8.746038, 8.832000 +2.783333, 18.946224, 8.746038, 8.832000 +2.800000, 19.121847, 8.746038, 8.832000 +2.816667, 19.297470, 8.746038, 8.832000 +2.833333, 19.473094, 8.746038, 8.832000 +2.850000, 19.648717, 8.746038, 8.832000 +2.866667, 19.824340, 8.746038, 8.832000 +2.883333, 19.999963, 8.746038, 8.832000 +2.900000, 20.175587, 8.746038, 8.832000 +2.916667, 20.351210, 8.746038, 8.832000 +2.933333, 20.526833, 8.746038, 8.832000 +2.950000, 20.702456, 8.746038, 8.832000 +2.966667, 20.878080, 8.746038, 8.832000 +2.983333, 21.053703, 8.746038, 8.832000 +3.000000, 21.229326, 8.746038, 8.832000 +3.016667, 21.404949, 8.746038, 8.832000 +3.033333, 21.580573, 8.746038, 8.832000 +3.050000, 21.756196, 8.746038, 8.832000 +3.066667, 21.931819, 8.746038, 8.832000 +3.083333, 22.107442, 8.746038, 8.832000 +3.100000, 22.283066, 8.746038, 8.832000 +3.116667, 22.458689, 8.746038, 8.832000 +3.133333, 22.634312, 8.746038, 8.832000 +3.150000, 22.809935, 8.746038, 8.832000 +3.166667, 22.985559, 8.746038, 8.832000 +3.183333, 23.161182, 8.746038, 8.832000 +3.200000, 23.336805, 8.746038, 8.832000 +3.216667, 23.512428, 8.746038, 8.832000 +3.233333, 23.688052, 8.746038, 8.832000 +3.250000, 23.863675, 8.746038, 8.832000 +3.266667, 24.039298, 8.746038, 8.832000 +3.283333, 24.214921, 8.746038, 8.832000 +3.300000, 24.390545, 8.746038, 8.832000 +3.316667, 24.566168, 8.746038, 8.832000 +3.333333, 24.741791, 8.746038, 8.832000 +3.350000, 24.917414, 8.746038, 8.832000 +3.366667, 25.093038, 8.746038, 8.832000 +3.383333, 25.268661, 8.746038, 8.832000 +3.400000, 25.444284, 8.746038, 8.832000 +3.416667, 25.619907, 8.746038, 8.832000 +3.433333, 25.795531, 8.746038, 8.832000 +3.450000, 25.971154, 8.746038, 8.832000 +3.466667, 26.146777, 8.746038, 8.832000 +3.483333, 26.322401, 8.746038, 8.832000 +3.500000, 26.498024, 8.746038, 8.832000 +3.516667, 26.673647, 8.746038, 8.832000 +3.533333, 26.849270, 8.746038, 8.832000 +3.550000, 27.024894, 8.746038, 8.832000 +3.566667, 27.200517, 8.746038, 8.832000 +3.583333, 27.376140, 8.746038, 8.832000 +3.600000, 27.551763, 8.746038, 8.832000 +3.616667, 27.727387, 8.746038, 8.832000 +3.633333, 27.903010, 8.746038, 8.832000 +3.650000, 28.078633, 8.746038, 8.832000 +3.666667, 28.254256, 8.746038, 8.832000 +3.683333, 28.429880, 8.746038, 8.832000 +3.700000, 28.605503, 8.746038, 8.832000 +3.716667, 28.781126, 8.746038, 8.832000 +3.733333, 28.956749, 8.746038, 8.832000 +3.750000, 29.132373, 8.746038, 8.832000 +3.766667, 29.307996, 8.746038, 8.832000 +3.783333, 29.483619, 8.746038, 8.832000 +3.800000, 29.659242, 8.746038, 8.832000 +3.816667, 29.834866, 8.746038, 8.832000 +3.833333, 30.010489, 8.746038, 8.832000 +3.850000, 30.186112, 8.746038, 8.832000 +3.866667, 30.361735, 8.746038, 8.832000 +3.883333, 30.537359, 8.746038, 8.832000 +3.900000, 30.712982, 8.746038, 8.832000 +3.916667, 30.888605, 8.746038, 8.832000 +3.933333, 31.064228, 8.746038, 8.832000 +3.950000, 31.239852, 8.746038, 8.832000 +3.966667, 31.415475, 8.746038, 8.832000 +3.983333, 31.591098, 8.746038, 8.832000 +4.000000, 31.766721, 8.746038, 8.832000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_17280_bev300_300kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_17280_bev300_300kW.csv new file mode 100644 index 0000000..e9b79da --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_17280_bev300_300kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.156285, 9.142660, 9.231932 +1.016667, 0.335377, 10.476905, 10.580000 +1.033333, 0.514470, 10.476905, 10.580000 +1.050000, 0.693562, 10.476905, 10.580000 +1.066667, 0.872654, 10.476905, 10.580000 +1.083333, 1.051747, 10.476905, 10.580000 +1.100000, 1.230839, 10.476905, 10.580000 +1.116667, 1.409932, 10.476905, 10.580000 +1.133333, 1.589024, 10.476905, 10.580000 +1.150000, 1.768116, 10.476905, 10.580000 +1.166667, 1.947209, 10.476905, 10.580000 +1.183333, 2.126301, 10.476905, 10.580000 +1.200000, 2.305393, 10.476905, 10.580000 +1.216667, 2.484486, 10.476905, 10.580000 +1.233333, 2.663578, 10.476905, 10.580000 +1.250000, 2.842671, 10.476905, 10.580000 +1.266667, 3.021763, 10.476905, 10.580000 +1.283333, 3.200855, 10.476905, 10.580000 +1.300000, 3.379948, 10.476905, 10.580000 +1.316667, 3.559040, 10.476905, 10.580000 +1.333333, 3.738133, 10.476905, 10.580000 +1.350000, 3.917225, 10.476905, 10.580000 +1.366667, 4.096317, 10.476905, 10.580000 +1.383333, 4.275410, 10.476905, 10.580000 +1.400000, 4.454502, 10.476905, 10.580000 +1.416667, 4.633595, 10.476905, 10.580000 +1.433333, 4.812687, 10.476905, 10.580000 +1.450000, 4.991779, 10.476905, 10.580000 +1.466667, 5.170872, 10.476905, 10.580000 +1.483333, 5.349964, 10.476905, 10.580000 +1.500000, 5.529056, 10.476905, 10.580000 +1.516667, 5.708149, 10.476905, 10.580000 +1.533333, 5.887241, 10.476905, 10.580000 +1.550000, 6.066334, 10.476905, 10.580000 +1.566667, 6.245426, 10.476905, 10.580000 +1.583333, 6.424518, 10.476905, 10.580000 +1.600000, 6.603611, 10.476905, 10.580000 +1.616667, 6.782703, 10.476905, 10.580000 +1.633333, 6.961796, 10.476905, 10.580000 +1.650000, 7.140888, 10.476905, 10.580000 +1.666667, 7.319980, 10.476905, 10.580000 +1.683333, 7.499073, 10.476905, 10.580000 +1.700000, 7.678165, 10.476905, 10.580000 +1.716667, 7.857258, 10.476905, 10.580000 +1.733333, 8.036350, 10.476905, 10.580000 +1.750000, 8.215442, 10.476905, 10.580000 +1.766667, 8.394535, 10.476905, 10.580000 +1.783333, 8.573627, 10.476905, 10.580000 +1.800000, 8.752719, 10.476905, 10.580000 +1.816667, 8.931812, 10.476905, 10.580000 +1.833333, 9.110904, 10.476905, 10.580000 +1.850000, 9.289997, 10.476905, 10.580000 +1.866667, 9.469089, 10.476905, 10.580000 +1.883333, 9.648181, 10.476905, 10.580000 +1.900000, 9.827274, 10.476905, 10.580000 +1.916667, 10.006366, 10.476905, 10.580000 +1.933333, 10.185459, 10.476905, 10.580000 +1.950000, 10.364551, 10.476905, 10.580000 +1.966667, 10.543643, 10.476905, 10.580000 +1.983333, 10.722736, 10.476905, 10.580000 +2.000000, 10.901828, 10.476905, 10.580000 +2.016667, 11.080921, 10.476905, 10.580000 +2.033333, 11.260013, 10.476905, 10.580000 +2.050000, 11.439105, 10.476905, 10.580000 +2.066667, 11.618198, 10.476905, 10.580000 +2.083333, 11.797290, 10.476905, 10.580000 +2.100000, 11.976382, 10.476905, 10.580000 +2.116667, 12.155475, 10.476905, 10.580000 +2.133333, 12.334567, 10.476905, 10.580000 +2.150000, 12.513660, 10.476905, 10.580000 +2.166667, 12.692752, 10.476905, 10.580000 +2.183333, 12.871844, 10.476905, 10.580000 +2.200000, 13.050937, 10.476905, 10.580000 +2.216667, 13.230029, 10.476905, 10.580000 +2.233333, 13.409122, 10.476905, 10.580000 +2.250000, 13.588214, 10.476905, 10.580000 +2.266667, 13.767306, 10.476905, 10.580000 +2.283333, 13.946399, 10.476905, 10.580000 +2.300000, 14.125491, 10.476905, 10.580000 +2.316667, 14.304584, 10.476905, 10.580000 +2.333333, 14.483676, 10.476905, 10.580000 +2.350000, 14.662768, 10.476905, 10.580000 +2.366667, 14.841861, 10.476905, 10.580000 +2.383333, 15.020953, 10.476905, 10.580000 +2.400000, 15.200045, 10.476905, 10.580000 +2.416667, 15.379138, 10.476905, 10.580000 +2.433333, 15.558230, 10.476905, 10.580000 +2.450000, 15.737323, 10.476905, 10.580000 +2.466667, 15.916415, 10.476905, 10.580000 +2.483333, 16.095507, 10.476905, 10.580000 +2.500000, 16.274600, 10.476905, 10.580000 +2.516667, 16.453692, 10.476905, 10.580000 +2.533333, 16.632785, 10.476905, 10.580000 +2.550000, 16.811877, 10.476905, 10.580000 +2.566667, 16.990969, 10.476905, 10.580000 +2.583333, 17.170062, 10.476905, 10.580000 +2.600000, 17.349154, 10.476905, 10.580000 +2.616667, 17.528247, 10.476905, 10.580000 +2.633333, 17.707339, 10.476905, 10.580000 +2.650000, 17.886431, 10.476905, 10.580000 +2.666667, 18.065524, 10.476905, 10.580000 +2.683333, 18.244616, 10.476905, 10.580000 +2.700000, 18.423708, 10.476905, 10.580000 +2.716667, 18.602801, 10.476905, 10.580000 +2.733333, 18.781893, 10.476905, 10.580000 +2.750000, 18.960986, 10.476905, 10.580000 +2.766667, 19.140078, 10.476905, 10.580000 +2.783333, 19.319170, 10.476905, 10.580000 +2.800000, 19.498263, 10.476905, 10.580000 +2.816667, 19.677355, 10.476905, 10.580000 +2.833333, 19.856448, 10.476905, 10.580000 +2.850000, 20.035540, 10.476905, 10.580000 +2.866667, 20.214632, 10.476905, 10.580000 +2.883333, 20.393725, 10.476905, 10.580000 +2.900000, 20.572817, 10.476905, 10.580000 +2.916667, 20.751910, 10.476905, 10.580000 +2.933333, 20.931002, 10.476905, 10.580000 +2.950000, 21.110094, 10.476905, 10.580000 +2.966667, 21.289187, 10.476905, 10.580000 +2.983333, 21.468279, 10.476905, 10.580000 +3.000000, 21.647371, 10.476905, 10.580000 +3.016667, 21.826464, 10.476905, 10.580000 +3.033333, 22.005556, 10.476905, 10.580000 +3.050000, 22.184649, 10.476905, 10.580000 +3.066667, 22.363741, 10.476905, 10.580000 +3.083333, 22.542833, 10.476905, 10.580000 +3.100000, 22.721926, 10.476905, 10.580000 +3.116667, 22.901018, 10.476905, 10.580000 +3.133333, 23.080111, 10.476905, 10.580000 +3.150000, 23.259203, 10.476905, 10.580000 +3.166667, 23.438295, 10.476905, 10.580000 +3.183333, 23.617388, 10.476905, 10.580000 +3.200000, 23.796480, 10.476905, 10.580000 +3.216667, 23.975573, 10.476905, 10.580000 +3.233333, 24.154665, 10.476905, 10.580000 +3.250000, 24.333757, 10.476905, 10.580000 +3.266667, 24.512850, 10.476905, 10.580000 +3.283333, 24.691942, 10.476905, 10.580000 +3.300000, 24.871034, 10.476905, 10.580000 +3.316667, 25.050127, 10.476905, 10.580000 +3.333333, 25.229219, 10.476905, 10.580000 +3.350000, 25.408312, 10.476905, 10.580000 +3.366667, 25.587404, 10.476905, 10.580000 +3.383333, 25.766496, 10.476905, 10.580000 +3.400000, 25.945589, 10.476905, 10.580000 +3.416667, 26.124681, 10.476905, 10.580000 +3.433333, 26.303774, 10.476905, 10.580000 +3.450000, 26.482866, 10.476905, 10.580000 +3.466667, 26.661958, 10.476905, 10.580000 +3.483333, 26.841051, 10.476905, 10.580000 +3.500000, 27.020143, 10.476905, 10.580000 +3.516667, 27.199236, 10.476905, 10.580000 +3.533333, 27.378328, 10.476905, 10.580000 +3.550000, 27.557420, 10.476905, 10.580000 +3.566667, 27.736513, 10.476905, 10.580000 +3.583333, 27.915605, 10.476905, 10.580000 +3.600000, 28.094697, 10.476905, 10.580000 +3.616667, 28.273790, 10.476905, 10.580000 +3.633333, 28.452882, 10.476905, 10.580000 +3.650000, 28.631975, 10.476905, 10.580000 +3.666667, 28.811067, 10.476905, 10.580000 +3.683333, 28.990159, 10.476905, 10.580000 +3.700000, 29.169252, 10.476905, 10.580000 +3.716667, 29.348344, 10.476905, 10.580000 +3.733333, 29.527437, 10.476905, 10.580000 +3.750000, 29.706529, 10.476905, 10.580000 +3.766667, 29.885621, 10.476905, 10.580000 +3.783333, 30.064714, 10.476905, 10.580000 +3.800000, 30.243806, 10.476905, 10.580000 +3.816667, 30.422899, 10.476905, 10.580000 +3.833333, 30.601991, 10.476905, 10.580000 +3.850000, 30.781083, 10.476905, 10.580000 +3.866667, 30.960176, 10.476905, 10.580000 +3.883333, 31.139268, 10.476905, 10.580000 +3.900000, 31.318360, 10.476905, 10.580000 +3.916667, 31.497453, 10.476905, 10.580000 +3.933333, 31.676545, 10.476905, 10.580000 +3.950000, 31.855638, 10.476905, 10.580000 +3.966667, 32.034730, 10.476905, 10.580000 +3.983333, 32.213822, 10.476905, 10.580000 +4.000000, 32.392915, 10.476905, 10.580000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_17280_bev300_400kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_17280_bev300_400kW.csv new file mode 100644 index 0000000..cff4bbb --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_17280_bev300_400kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.155713, 9.109203, 9.231932 +1.016667, 0.334144, 10.438204, 10.580000 +1.033333, 0.512575, 10.438204, 10.580000 +1.050000, 0.691005, 10.438204, 10.580000 +1.066667, 0.869436, 10.438204, 10.580000 +1.083333, 1.047867, 10.438204, 10.580000 +1.100000, 1.226298, 10.438204, 10.580000 +1.116667, 1.404729, 10.438204, 10.580000 +1.133333, 1.583160, 10.438204, 10.580000 +1.150000, 1.761590, 10.438204, 10.580000 +1.166667, 1.940021, 10.438204, 10.580000 +1.183333, 2.118452, 10.438204, 10.580000 +1.200000, 2.296883, 10.438204, 10.580000 +1.216667, 2.475314, 10.438204, 10.580000 +1.233333, 2.653745, 10.438204, 10.580000 +1.250000, 2.832176, 10.438204, 10.580000 +1.266667, 3.010606, 10.438204, 10.580000 +1.283333, 3.189037, 10.438204, 10.580000 +1.300000, 3.367468, 10.438204, 10.580000 +1.316667, 3.545899, 10.438204, 10.580000 +1.333333, 3.724330, 10.438204, 10.580000 +1.350000, 3.902761, 10.438204, 10.580000 +1.366667, 4.081191, 10.438204, 10.580000 +1.383333, 4.259622, 10.438204, 10.580000 +1.400000, 4.438053, 10.438204, 10.580000 +1.416667, 4.616484, 10.438204, 10.580000 +1.433333, 4.794915, 10.438204, 10.580000 +1.450000, 4.973346, 10.438204, 10.580000 +1.466667, 5.151776, 10.438204, 10.580000 +1.483333, 5.330207, 10.438204, 10.580000 +1.500000, 5.508638, 10.438204, 10.580000 +1.516667, 5.687069, 10.438204, 10.580000 +1.533333, 5.865500, 10.438204, 10.580000 +1.550000, 6.043931, 10.438204, 10.580000 +1.566667, 6.222362, 10.438204, 10.580000 +1.583333, 6.400792, 10.438204, 10.580000 +1.600000, 6.579223, 10.438204, 10.580000 +1.616667, 6.757654, 10.438204, 10.580000 +1.633333, 6.936085, 10.438204, 10.580000 +1.650000, 7.114516, 10.438204, 10.580000 +1.666667, 7.292947, 10.438204, 10.580000 +1.683333, 7.471377, 10.438204, 10.580000 +1.700000, 7.649808, 10.438204, 10.580000 +1.716667, 7.828239, 10.438204, 10.580000 +1.733333, 8.006670, 10.438204, 10.580000 +1.750000, 8.185101, 10.438204, 10.580000 +1.766667, 8.363532, 10.438204, 10.580000 +1.783333, 8.541962, 10.438204, 10.580000 +1.800000, 8.720393, 10.438204, 10.580000 +1.816667, 8.898824, 10.438204, 10.580000 +1.833333, 9.077255, 10.438204, 10.580000 +1.850000, 9.255686, 10.438204, 10.580000 +1.866667, 9.434117, 10.438204, 10.580000 +1.883333, 9.612548, 10.438204, 10.580000 +1.900000, 9.790978, 10.438204, 10.580000 +1.916667, 9.969409, 10.438204, 10.580000 +1.933333, 10.147840, 10.438204, 10.580000 +1.950000, 10.326271, 10.438204, 10.580000 +1.966667, 10.504702, 10.438204, 10.580000 +1.983333, 10.683133, 10.438204, 10.580000 +2.000000, 10.861563, 10.438204, 10.580000 +2.016667, 11.039994, 10.438204, 10.580000 +2.033333, 11.218425, 10.438204, 10.580000 +2.050000, 11.396856, 10.438204, 10.580000 +2.066667, 11.575287, 10.438204, 10.580000 +2.083333, 11.753718, 10.438204, 10.580000 +2.100000, 11.932148, 10.438204, 10.580000 +2.116667, 12.110579, 10.438204, 10.580000 +2.133333, 12.289010, 10.438204, 10.580000 +2.150000, 12.467441, 10.438204, 10.580000 +2.166667, 12.645872, 10.438204, 10.580000 +2.183333, 12.824303, 10.438204, 10.580000 +2.200000, 13.002734, 10.438204, 10.580000 +2.216667, 13.181164, 10.438204, 10.580000 +2.233333, 13.359595, 10.438204, 10.580000 +2.250000, 13.538026, 10.438204, 10.580000 +2.266667, 13.716457, 10.438204, 10.580000 +2.283333, 13.894888, 10.438204, 10.580000 +2.300000, 14.073319, 10.438204, 10.580000 +2.316667, 14.251749, 10.438204, 10.580000 +2.333333, 14.430180, 10.438204, 10.580000 +2.350000, 14.608611, 10.438204, 10.580000 +2.366667, 14.787042, 10.438204, 10.580000 +2.383333, 14.965473, 10.438204, 10.580000 +2.400000, 15.143904, 10.438204, 10.580000 +2.416667, 15.322334, 10.438204, 10.580000 +2.433333, 15.500765, 10.438204, 10.580000 +2.450000, 15.679196, 10.438204, 10.580000 +2.466667, 15.857627, 10.438204, 10.580000 +2.483333, 16.036058, 10.438204, 10.580000 +2.500000, 16.214489, 10.438204, 10.580000 +2.516667, 16.392920, 10.438204, 10.580000 +2.533333, 16.571350, 10.438204, 10.580000 +2.550000, 16.749781, 10.438204, 10.580000 +2.566667, 16.928212, 10.438204, 10.580000 +2.583333, 17.106643, 10.438204, 10.580000 +2.600000, 17.285074, 10.438204, 10.580000 +2.616667, 17.463505, 10.438204, 10.580000 +2.633333, 17.641935, 10.438204, 10.580000 +2.650000, 17.820366, 10.438204, 10.580000 +2.666667, 17.998797, 10.438204, 10.580000 +2.683333, 18.177228, 10.438204, 10.580000 +2.700000, 18.355659, 10.438204, 10.580000 +2.716667, 18.534090, 10.438204, 10.580000 +2.733333, 18.712520, 10.438204, 10.580000 +2.750000, 18.890951, 10.438204, 10.580000 +2.766667, 19.069382, 10.438204, 10.580000 +2.783333, 19.247813, 10.438204, 10.580000 +2.800000, 19.426244, 10.438204, 10.580000 +2.816667, 19.604675, 10.438204, 10.580000 +2.833333, 19.783106, 10.438204, 10.580000 +2.850000, 19.961536, 10.438204, 10.580000 +2.866667, 20.139967, 10.438204, 10.580000 +2.883333, 20.318398, 10.438204, 10.580000 +2.900000, 20.496829, 10.438204, 10.580000 +2.916667, 20.675260, 10.438204, 10.580000 +2.933333, 20.853691, 10.438204, 10.580000 +2.950000, 21.032121, 10.438204, 10.580000 +2.966667, 21.210552, 10.438204, 10.580000 +2.983333, 21.388983, 10.438204, 10.580000 +3.000000, 21.567414, 10.438204, 10.580000 +3.016667, 21.745845, 10.438204, 10.580000 +3.033333, 21.924276, 10.438204, 10.580000 +3.050000, 22.102707, 10.438204, 10.580000 +3.066667, 22.281137, 10.438204, 10.580000 +3.083333, 22.459568, 10.438204, 10.580000 +3.100000, 22.637999, 10.438204, 10.580000 +3.116667, 22.816430, 10.438204, 10.580000 +3.133333, 22.994861, 10.438204, 10.580000 +3.150000, 23.173292, 10.438204, 10.580000 +3.166667, 23.351722, 10.438204, 10.580000 +3.183333, 23.530153, 10.438204, 10.580000 +3.200000, 23.708584, 10.438204, 10.580000 +3.216667, 23.887015, 10.438204, 10.580000 +3.233333, 24.065446, 10.438204, 10.580000 +3.250000, 24.243877, 10.438204, 10.580000 +3.266667, 24.422307, 10.438204, 10.580000 +3.283333, 24.600738, 10.438204, 10.580000 +3.300000, 24.779169, 10.438204, 10.580000 +3.316667, 24.957600, 10.438204, 10.580000 +3.333333, 25.136031, 10.438204, 10.580000 +3.350000, 25.314462, 10.438204, 10.580000 +3.366667, 25.492893, 10.438204, 10.580000 +3.383333, 25.671323, 10.438204, 10.580000 +3.400000, 25.849754, 10.438204, 10.580000 +3.416667, 26.028185, 10.438204, 10.580000 +3.433333, 26.206616, 10.438204, 10.580000 +3.450000, 26.385047, 10.438204, 10.580000 +3.466667, 26.563478, 10.438204, 10.580000 +3.483333, 26.741908, 10.438204, 10.580000 +3.500000, 26.920339, 10.438204, 10.580000 +3.516667, 27.098770, 10.438204, 10.580000 +3.533333, 27.277201, 10.438204, 10.580000 +3.550000, 27.455632, 10.438204, 10.580000 +3.566667, 27.634063, 10.438204, 10.580000 +3.583333, 27.812493, 10.438204, 10.580000 +3.600000, 27.990924, 10.438204, 10.580000 +3.616667, 28.169355, 10.438204, 10.580000 +3.633333, 28.347786, 10.438204, 10.580000 +3.650000, 28.526217, 10.438204, 10.580000 +3.666667, 28.704648, 10.438204, 10.580000 +3.683333, 28.883079, 10.438204, 10.580000 +3.700000, 29.061509, 10.438204, 10.580000 +3.716667, 29.239940, 10.438204, 10.580000 +3.733333, 29.418371, 10.438204, 10.580000 +3.750000, 29.596802, 10.438204, 10.580000 +3.766667, 29.775233, 10.438204, 10.580000 +3.783333, 29.953664, 10.438204, 10.580000 +3.800000, 30.132094, 10.438204, 10.580000 +3.816667, 30.310525, 10.438204, 10.580000 +3.833333, 30.488956, 10.438204, 10.580000 +3.850000, 30.667387, 10.438204, 10.580000 +3.866667, 30.845818, 10.438204, 10.580000 +3.883333, 31.024249, 10.438204, 10.580000 +3.900000, 31.202679, 10.438204, 10.580000 +3.916667, 31.381110, 10.438204, 10.580000 +3.933333, 31.559541, 10.438204, 10.580000 +3.950000, 31.737972, 10.438204, 10.580000 +3.966667, 31.916403, 10.438204, 10.580000 +3.983333, 32.094834, 10.438204, 10.580000 +4.000000, 32.273265, 10.438204, 10.580000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_17280_bev300_575kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_17280_bev300_575kW.csv new file mode 100644 index 0000000..6571484 --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_17280_bev300_575kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.106566, 9.111366, 9.231932 +1.016667, 0.228683, 10.441045, 10.580000 +1.033333, 0.350801, 10.441045, 10.580000 +1.050000, 0.472918, 10.441045, 10.580000 +1.066667, 0.595036, 10.441045, 10.580000 +1.083333, 0.717153, 10.441045, 10.580000 +1.100000, 0.839271, 10.441045, 10.580000 +1.116667, 0.961388, 10.441045, 10.580000 +1.133333, 1.083506, 10.441045, 10.580000 +1.150000, 1.205623, 10.441045, 10.580000 +1.166667, 1.327741, 10.441045, 10.580000 +1.183333, 1.449858, 10.441045, 10.580000 +1.200000, 1.571976, 10.441045, 10.580000 +1.216667, 1.694093, 10.441045, 10.580000 +1.233333, 1.816210, 10.441045, 10.580000 +1.250000, 1.938328, 10.441045, 10.580000 +1.266667, 2.060445, 10.441045, 10.580000 +1.283333, 2.182563, 10.441045, 10.580000 +1.300000, 2.304680, 10.441045, 10.580000 +1.316667, 2.426798, 10.441045, 10.580000 +1.333333, 2.548915, 10.441045, 10.580000 +1.350000, 2.671033, 10.441045, 10.580000 +1.366667, 2.793150, 10.441045, 10.580000 +1.383333, 2.915268, 10.441045, 10.580000 +1.400000, 3.037385, 10.441045, 10.580000 +1.416667, 3.159503, 10.441045, 10.580000 +1.433333, 3.281620, 10.441045, 10.580000 +1.450000, 3.403738, 10.441045, 10.580000 +1.466667, 3.525855, 10.441045, 10.580000 +1.483333, 3.647973, 10.441045, 10.580000 +1.500000, 3.770090, 10.441045, 10.580000 +1.516667, 3.892208, 10.441045, 10.580000 +1.533333, 4.014325, 10.441045, 10.580000 +1.550000, 4.136443, 10.441045, 10.580000 +1.566667, 4.258560, 10.441045, 10.580000 +1.583333, 4.380678, 10.441045, 10.580000 +1.600000, 4.502795, 10.441045, 10.580000 +1.616667, 4.624913, 10.441045, 10.580000 +1.633333, 4.747030, 10.441045, 10.580000 +1.650000, 4.869148, 10.441045, 10.580000 +1.666667, 4.991265, 10.441045, 10.580000 +1.683333, 5.113383, 10.441045, 10.580000 +1.700000, 5.235500, 10.441045, 10.580000 +1.716667, 5.357618, 10.441045, 10.580000 +1.733333, 5.479735, 10.441045, 10.580000 +1.750000, 5.601853, 10.441045, 10.580000 +1.766667, 5.723970, 10.441045, 10.580000 +1.783333, 5.846087, 10.441045, 10.580000 +1.800000, 5.968205, 10.441045, 10.580000 +1.816667, 6.090322, 10.441045, 10.580000 +1.833333, 6.212440, 10.441045, 10.580000 +1.850000, 6.334557, 10.441045, 10.580000 +1.866667, 6.456675, 10.441045, 10.580000 +1.883333, 6.578792, 10.441045, 10.580000 +1.900000, 6.700910, 10.441045, 10.580000 +1.916667, 6.823027, 10.441045, 10.580000 +1.933333, 6.945145, 10.441045, 10.580000 +1.950000, 7.067262, 10.441045, 10.580000 +1.966667, 7.189380, 10.441045, 10.580000 +1.983333, 7.311497, 10.441045, 10.580000 +2.000000, 7.433615, 10.441045, 10.580000 +2.016667, 7.555732, 10.441045, 10.580000 +2.033333, 7.677850, 10.441045, 10.580000 +2.050000, 7.799967, 10.441045, 10.580000 +2.066667, 7.922085, 10.441045, 10.580000 +2.083333, 8.044202, 10.441045, 10.580000 +2.100000, 8.166320, 10.441045, 10.580000 +2.116667, 8.288437, 10.441045, 10.580000 +2.133333, 8.410555, 10.441045, 10.580000 +2.150000, 8.532672, 10.441045, 10.580000 +2.166667, 8.654790, 10.441045, 10.580000 +2.183333, 8.776907, 10.441045, 10.580000 +2.200000, 8.899025, 10.441045, 10.580000 +2.216667, 9.021142, 10.441045, 10.580000 +2.233333, 9.143260, 10.441045, 10.580000 +2.250000, 9.265377, 10.441045, 10.580000 +2.266667, 9.387495, 10.441045, 10.580000 +2.283333, 9.509612, 10.441045, 10.580000 +2.300000, 9.631730, 10.441045, 10.580000 +2.316667, 9.753847, 10.441045, 10.580000 +2.333333, 9.875965, 10.441045, 10.580000 +2.350000, 9.998082, 10.441045, 10.580000 +2.366667, 10.120199, 10.441045, 10.580000 +2.383333, 10.242317, 10.441045, 10.580000 +2.400000, 10.364434, 10.441045, 10.580000 +2.416667, 10.486552, 10.441045, 10.580000 +2.433333, 10.608669, 10.441045, 10.580000 +2.450000, 10.730787, 10.441045, 10.580000 +2.466667, 10.852904, 10.441045, 10.580000 +2.483333, 10.975022, 10.441045, 10.580000 +2.500000, 11.097139, 10.441045, 10.580000 +2.516667, 11.219257, 10.441045, 10.580000 +2.533333, 11.341374, 10.441045, 10.580000 +2.550000, 11.463492, 10.441045, 10.580000 +2.566667, 11.585609, 10.441045, 10.580000 +2.583333, 11.707727, 10.441045, 10.580000 +2.600000, 11.829844, 10.441045, 10.580000 +2.616667, 11.951962, 10.441045, 10.580000 +2.633333, 12.074079, 10.441045, 10.580000 +2.650000, 12.196197, 10.441045, 10.580000 +2.666667, 12.318314, 10.441045, 10.580000 +2.683333, 12.440432, 10.441045, 10.580000 +2.700000, 12.562549, 10.441045, 10.580000 +2.716667, 12.684667, 10.441045, 10.580000 +2.733333, 12.806784, 10.441045, 10.580000 +2.750000, 12.928902, 10.441045, 10.580000 +2.766667, 13.051019, 10.441045, 10.580000 +2.783333, 13.173137, 10.441045, 10.580000 +2.800000, 13.295254, 10.441045, 10.580000 +2.816667, 13.417372, 10.441045, 10.580000 +2.833333, 13.539489, 10.441045, 10.580000 +2.850000, 13.661607, 10.441045, 10.580000 +2.866667, 13.783724, 10.441045, 10.580000 +2.883333, 13.905842, 10.441045, 10.580000 +2.900000, 14.027959, 10.441045, 10.580000 +2.916667, 14.150076, 10.441045, 10.580000 +2.933333, 14.272194, 10.441045, 10.580000 +2.950000, 14.394311, 10.441045, 10.580000 +2.966667, 14.516429, 10.441045, 10.580000 +2.983333, 14.638546, 10.441045, 10.580000 +3.000000, 14.760664, 10.441045, 10.580000 +3.016667, 14.882781, 10.441045, 10.580000 +3.033333, 15.004899, 10.441045, 10.580000 +3.050000, 15.127016, 10.441045, 10.580000 +3.066667, 15.249134, 10.441045, 10.580000 +3.083333, 15.371251, 10.441045, 10.580000 +3.100000, 15.493369, 10.441045, 10.580000 +3.116667, 15.615486, 10.441045, 10.580000 +3.133333, 15.737604, 10.441045, 10.580000 +3.150000, 15.859721, 10.441045, 10.580000 +3.166667, 15.981839, 10.441045, 10.580000 +3.183333, 16.103956, 10.441045, 10.580000 +3.200000, 16.226074, 10.441045, 10.580000 +3.216667, 16.348191, 10.441045, 10.580000 +3.233333, 16.470309, 10.441045, 10.580000 +3.250000, 16.592426, 10.441045, 10.580000 +3.266667, 16.714544, 10.441045, 10.580000 +3.283333, 16.836661, 10.441045, 10.580000 +3.300000, 16.958779, 10.441045, 10.580000 +3.316667, 17.080896, 10.441045, 10.580000 +3.333333, 17.203014, 10.441045, 10.580000 +3.350000, 17.325131, 10.441045, 10.580000 +3.366667, 17.447249, 10.441045, 10.580000 +3.383333, 17.569366, 10.441045, 10.580000 +3.400000, 17.691484, 10.441045, 10.580000 +3.416667, 17.813601, 10.441045, 10.580000 +3.433333, 17.935719, 10.441045, 10.580000 +3.450000, 18.057836, 10.441045, 10.580000 +3.466667, 18.179954, 10.441045, 10.580000 +3.483333, 18.302071, 10.441045, 10.580000 +3.500000, 18.424188, 10.441045, 10.580000 +3.516667, 18.546306, 10.441045, 10.580000 +3.533333, 18.668423, 10.441045, 10.580000 +3.550000, 18.790541, 10.441045, 10.580000 +3.566667, 18.912658, 10.441045, 10.580000 +3.583333, 19.034776, 10.441045, 10.580000 +3.600000, 19.156893, 10.441045, 10.580000 +3.616667, 19.279011, 10.441045, 10.580000 +3.633333, 19.401128, 10.441045, 10.580000 +3.650000, 19.523246, 10.441045, 10.580000 +3.666667, 19.645363, 10.441045, 10.580000 +3.683333, 19.767481, 10.441045, 10.580000 +3.700000, 19.889598, 10.441045, 10.580000 +3.716667, 20.011716, 10.441045, 10.580000 +3.733333, 20.133833, 10.441045, 10.580000 +3.750000, 20.255951, 10.441045, 10.580000 +3.766667, 20.378068, 10.441045, 10.580000 +3.783333, 20.500186, 10.441045, 10.580000 +3.800000, 20.622303, 10.441045, 10.580000 +3.816667, 20.744421, 10.441045, 10.580000 +3.833333, 20.866538, 10.441045, 10.580000 +3.850000, 20.988656, 10.441045, 10.580000 +3.866667, 21.110773, 10.441045, 10.580000 +3.883333, 21.232891, 10.441045, 10.580000 +3.900000, 21.355008, 10.441045, 10.580000 +3.916667, 21.477126, 10.441045, 10.580000 +3.933333, 21.599243, 10.441045, 10.580000 +3.950000, 21.721361, 10.441045, 10.580000 +3.966667, 21.843478, 10.441045, 10.580000 +3.983333, 21.965596, 10.441045, 10.580000 +4.000000, 22.087713, 10.441045, 10.580000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_17280_phev20.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_17280_phev20.csv new file mode 100644 index 0000000..ac64bef --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_17280_phev20.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.898032, 2.694096, 2.727091 +1.016667, 1.891008, 2.978929, 3.016365 +1.033333, 2.883985, 2.978929, 3.016365 +1.050000, 3.876961, 2.978929, 3.016365 +1.066667, 4.869937, 2.978929, 3.016365 +1.083333, 5.862914, 2.978929, 3.016365 +1.100000, 6.855890, 2.978929, 3.016365 +1.116667, 7.848866, 2.978929, 3.016365 +1.133333, 8.841843, 2.978929, 3.016365 +1.150000, 9.834819, 2.978929, 3.016365 +1.166667, 10.827795, 2.978929, 3.016365 +1.183333, 11.820772, 2.978929, 3.016365 +1.200000, 12.813748, 2.978929, 3.016365 +1.216667, 13.806724, 2.978929, 3.016365 +1.233333, 14.799701, 2.978929, 3.016365 +1.250000, 15.792677, 2.978929, 3.016365 +1.266667, 16.785653, 2.978929, 3.016365 +1.283333, 17.778630, 2.978929, 3.016365 +1.300000, 18.771606, 2.978929, 3.016365 +1.316667, 19.764582, 2.978929, 3.016365 +1.333333, 20.757559, 2.978929, 3.016365 +1.350000, 21.750535, 2.978929, 3.016365 +1.366667, 22.743511, 2.978929, 3.016365 +1.383333, 23.736488, 2.978929, 3.016365 +1.400000, 24.729464, 2.978929, 3.016365 +1.416667, 25.722440, 2.978929, 3.016365 +1.433333, 26.715417, 2.978929, 3.016365 +1.450000, 27.708393, 2.978929, 3.016365 +1.466667, 28.701369, 2.978929, 3.016365 +1.483333, 29.694346, 2.978929, 3.016365 +1.500000, 30.687322, 2.978929, 3.016365 +1.516667, 31.680298, 2.978929, 3.016365 +1.533333, 32.673275, 2.978929, 3.016365 +1.550000, 33.666251, 2.978929, 3.016365 +1.566667, 34.659227, 2.978929, 3.016365 +1.583333, 35.652204, 2.978929, 3.016365 +1.600000, 36.645180, 2.978929, 3.016365 +1.616667, 37.638156, 2.978929, 3.016365 +1.633333, 38.631133, 2.978929, 3.016365 +1.650000, 39.624109, 2.978929, 3.016365 +1.666667, 40.617085, 2.978929, 3.016365 +1.683333, 41.610062, 2.978929, 3.016365 +1.700000, 42.603038, 2.978929, 3.016365 +1.716667, 43.596014, 2.978929, 3.016365 +1.733333, 44.588991, 2.978929, 3.016365 +1.750000, 45.581967, 2.978929, 3.016365 +1.766667, 46.574943, 2.978929, 3.016365 +1.783333, 47.567920, 2.978929, 3.016365 +1.800000, 48.560896, 2.978929, 3.016365 +1.816667, 49.553872, 2.978929, 3.016365 +1.833333, 50.546849, 2.978929, 3.016365 +1.850000, 51.539825, 2.978929, 3.016365 +1.866667, 52.532801, 2.978929, 3.016365 +1.883333, 53.525778, 2.978929, 3.016365 +1.900000, 54.518754, 2.978929, 3.016365 +1.916667, 55.511730, 2.978929, 3.016365 +1.933333, 56.504707, 2.978929, 3.016365 +1.950000, 57.497683, 2.978929, 3.016365 +1.966667, 58.490659, 2.978929, 3.016365 +1.983333, 59.483636, 2.978929, 3.016365 +2.000000, 60.476612, 2.978929, 3.016365 +2.016667, 61.469588, 2.978929, 3.016365 +2.033333, 62.462565, 2.978929, 3.016365 +2.050000, 63.455541, 2.978929, 3.016365 +2.066667, 64.448517, 2.978929, 3.016365 +2.083333, 65.441494, 2.978929, 3.016365 +2.100000, 66.434470, 2.978929, 3.016365 +2.116667, 67.427446, 2.978929, 3.016365 +2.133333, 68.420423, 2.978929, 3.016365 +2.150000, 69.413399, 2.978929, 3.016365 +2.166667, 70.406375, 2.978929, 3.016365 +2.183333, 71.399352, 2.978929, 3.016365 +2.200000, 72.392328, 2.978929, 3.016365 +2.216667, 73.385305, 2.978929, 3.016365 +2.233333, 74.378281, 2.978929, 3.016365 +2.250000, 75.371257, 2.978929, 3.016365 +2.266667, 76.364234, 2.978929, 3.016365 +2.283333, 77.357210, 2.978929, 3.016365 +2.300000, 78.350186, 2.978929, 3.016365 +2.316667, 79.343163, 2.978929, 3.016365 +2.333333, 80.336139, 2.978929, 3.016365 +2.350000, 81.329115, 2.978929, 3.016365 +2.366667, 82.322092, 2.978929, 3.016365 +2.383333, 83.315068, 2.978929, 3.016365 +2.400000, 84.308044, 2.978929, 3.016365 +2.416667, 85.301021, 2.978929, 3.016365 +2.433333, 86.293997, 2.978929, 3.016365 +2.450000, 87.286973, 2.978929, 3.016365 +2.466667, 88.279950, 2.978929, 3.016365 +2.483333, 89.272926, 2.978929, 3.016365 +2.500000, 90.265902, 2.978929, 3.016365 +2.516667, 91.258879, 2.978929, 3.016365 +2.533333, 92.251855, 2.978929, 3.016365 +2.550000, 93.244831, 2.978929, 3.016365 +2.566667, 94.237808, 2.978929, 3.016365 +2.583333, 95.230784, 2.978929, 3.016365 +2.600000, 96.200447, 2.908988, 2.945317 +2.616667, 97.014284, 2.441512, 2.470723 +2.633333, 97.678106, 1.991465, 2.014288 +2.650000, 98.219377, 1.623813, 1.641756 +2.666667, 98.660664, 1.323863, 1.338049 +2.683333, 99.020400, 1.079206, 1.090476 +2.700000, 99.313629, 0.879688, 0.888679 +2.716667, 99.552631, 0.717005, 0.724204 +2.733333, 99.747422, 0.584375, 0.590156 +2.750000, 99.800407, 0.158954, 0.160452 +2.766667, 99.800495, 0.000265, 0.000267 +2.783333, 99.800495, 0.000000, 0.000000 +2.800000, 99.800495, 0.000000, 0.000000 +2.816667, 99.800495, 0.000000, 0.000000 +2.833333, 99.800495, 0.000000, 0.000000 +2.850000, 99.800495, 0.000000, 0.000000 +2.866667, 99.800495, 0.000000, 0.000000 +2.883333, 99.800495, 0.000000, 0.000000 +2.900000, 99.800495, 0.000000, 0.000000 +2.916667, 99.800495, 0.000000, 0.000000 +2.933333, 99.800495, 0.000000, 0.000000 +2.950000, 99.800495, 0.000000, 0.000000 +2.966667, 99.800495, 0.000000, 0.000000 +2.983333, 99.800495, 0.000000, 0.000000 +3.000000, 99.800495, 0.000000, 0.000000 +3.016667, 99.800495, 0.000000, 0.000000 +3.033333, 99.800495, 0.000000, 0.000000 +3.050000, 99.800495, 0.000000, 0.000000 +3.066667, 99.800495, 0.000000, 0.000000 +3.083333, 99.800495, 0.000000, 0.000000 +3.100000, 99.800495, 0.000000, 0.000000 +3.116667, 99.800495, 0.000000, 0.000000 +3.133333, 99.800495, 0.000000, 0.000000 +3.150000, 99.800495, 0.000000, 0.000000 +3.166667, 99.800495, 0.000000, 0.000000 +3.183333, 99.800495, 0.000000, 0.000000 +3.200000, 99.800495, 0.000000, 0.000000 +3.216667, 99.800495, 0.000000, 0.000000 +3.233333, 99.800495, 0.000000, 0.000000 +3.250000, 99.800495, 0.000000, 0.000000 +3.266667, 99.800495, 0.000000, 0.000000 +3.283333, 99.800495, 0.000000, 0.000000 +3.300000, 99.800495, 0.000000, 0.000000 +3.316667, 99.800495, 0.000000, 0.000000 +3.333333, 99.800495, 0.000000, 0.000000 +3.350000, 99.800495, 0.000000, 0.000000 +3.366667, 99.800495, 0.000000, 0.000000 +3.383333, 99.800495, 0.000000, 0.000000 +3.400000, 99.800495, 0.000000, 0.000000 +3.416667, 99.800495, 0.000000, 0.000000 +3.433333, 99.800495, 0.000000, 0.000000 +3.450000, 99.800495, 0.000000, 0.000000 +3.466667, 99.800495, 0.000000, 0.000000 +3.483333, 99.800495, 0.000000, 0.000000 +3.500000, 99.800495, 0.000000, 0.000000 +3.516667, 99.800495, 0.000000, 0.000000 +3.533333, 99.800495, 0.000000, 0.000000 +3.550000, 99.800495, 0.000000, 0.000000 +3.566667, 99.800495, 0.000000, 0.000000 +3.583333, 99.800495, 0.000000, 0.000000 +3.600000, 99.800495, 0.000000, 0.000000 +3.616667, 99.800495, 0.000000, 0.000000 +3.633333, 99.800495, 0.000000, 0.000000 +3.650000, 99.800495, 0.000000, 0.000000 +3.666667, 99.800495, 0.000000, 0.000000 +3.683333, 99.800495, 0.000000, 0.000000 +3.700000, 99.800495, 0.000000, 0.000000 +3.716667, 99.800495, 0.000000, 0.000000 +3.733333, 99.800495, 0.000000, 0.000000 +3.750000, 99.800495, 0.000000, 0.000000 +3.766667, 99.800495, 0.000000, 0.000000 +3.783333, 99.800495, 0.000000, 0.000000 +3.800000, 99.800495, 0.000000, 0.000000 +3.816667, 99.800495, 0.000000, 0.000000 +3.833333, 99.800495, 0.000000, 0.000000 +3.850000, 99.800495, 0.000000, 0.000000 +3.866667, 99.800495, 0.000000, 0.000000 +3.883333, 99.800495, 0.000000, 0.000000 +3.900000, 99.800495, 0.000000, 0.000000 +3.916667, 99.800495, 0.000000, 0.000000 +3.933333, 99.800495, 0.000000, 0.000000 +3.950000, 99.800495, 0.000000, 0.000000 +3.966667, 99.800495, 0.000000, 0.000000 +3.983333, 99.800495, 0.000000, 0.000000 +4.000000, 99.800495, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_17280_phev50.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_17280_phev50.csv new file mode 100644 index 0000000..5a74324 --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_17280_phev50.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.281209, 2.699607, 2.727091 +1.016667, 0.592217, 2.985672, 3.016365 +1.033333, 0.903224, 2.985672, 3.016365 +1.050000, 1.214231, 2.985672, 3.016365 +1.066667, 1.525239, 2.985672, 3.016365 +1.083333, 1.836246, 2.985672, 3.016365 +1.100000, 2.147254, 2.985672, 3.016365 +1.116667, 2.458261, 2.985672, 3.016365 +1.133333, 2.769269, 2.985672, 3.016365 +1.150000, 3.080276, 2.985672, 3.016365 +1.166667, 3.391284, 2.985672, 3.016365 +1.183333, 3.702291, 2.985672, 3.016365 +1.200000, 4.013299, 2.985672, 3.016365 +1.216667, 4.324306, 2.985672, 3.016365 +1.233333, 4.635314, 2.985672, 3.016365 +1.250000, 4.946321, 2.985672, 3.016365 +1.266667, 5.257329, 2.985672, 3.016365 +1.283333, 5.568336, 2.985672, 3.016365 +1.300000, 5.879344, 2.985672, 3.016365 +1.316667, 6.190351, 2.985672, 3.016365 +1.333333, 6.501359, 2.985672, 3.016365 +1.350000, 6.812366, 2.985672, 3.016365 +1.366667, 7.123373, 2.985672, 3.016365 +1.383333, 7.434381, 2.985672, 3.016365 +1.400000, 7.745388, 2.985672, 3.016365 +1.416667, 8.056396, 2.985672, 3.016365 +1.433333, 8.367403, 2.985672, 3.016365 +1.450000, 8.678411, 2.985672, 3.016365 +1.466667, 8.989418, 2.985672, 3.016365 +1.483333, 9.300426, 2.985672, 3.016365 +1.500000, 9.611433, 2.985672, 3.016365 +1.516667, 9.922441, 2.985672, 3.016365 +1.533333, 10.233448, 2.985672, 3.016365 +1.550000, 10.544456, 2.985672, 3.016365 +1.566667, 10.855463, 2.985672, 3.016365 +1.583333, 11.166471, 2.985672, 3.016365 +1.600000, 11.477478, 2.985672, 3.016365 +1.616667, 11.788486, 2.985672, 3.016365 +1.633333, 12.099493, 2.985672, 3.016365 +1.650000, 12.410500, 2.985672, 3.016365 +1.666667, 12.721508, 2.985672, 3.016365 +1.683333, 13.032515, 2.985672, 3.016365 +1.700000, 13.343523, 2.985672, 3.016365 +1.716667, 13.654530, 2.985672, 3.016365 +1.733333, 13.965538, 2.985672, 3.016365 +1.750000, 14.276545, 2.985672, 3.016365 +1.766667, 14.587553, 2.985672, 3.016365 +1.783333, 14.898560, 2.985672, 3.016365 +1.800000, 15.209568, 2.985672, 3.016365 +1.816667, 15.520575, 2.985672, 3.016365 +1.833333, 15.831583, 2.985672, 3.016365 +1.850000, 16.142590, 2.985672, 3.016365 +1.866667, 16.453598, 2.985672, 3.016365 +1.883333, 16.764605, 2.985672, 3.016365 +1.900000, 17.075613, 2.985672, 3.016365 +1.916667, 17.386620, 2.985672, 3.016365 +1.933333, 17.697628, 2.985672, 3.016365 +1.950000, 18.008635, 2.985672, 3.016365 +1.966667, 18.319642, 2.985672, 3.016365 +1.983333, 18.630650, 2.985672, 3.016365 +2.000000, 18.941657, 2.985672, 3.016365 +2.016667, 19.252665, 2.985672, 3.016365 +2.033333, 19.563672, 2.985672, 3.016365 +2.050000, 19.874680, 2.985672, 3.016365 +2.066667, 20.185687, 2.985672, 3.016365 +2.083333, 20.496695, 2.985672, 3.016365 +2.100000, 20.807702, 2.985672, 3.016365 +2.116667, 21.118710, 2.985672, 3.016365 +2.133333, 21.429717, 2.985672, 3.016365 +2.150000, 21.740725, 2.985672, 3.016365 +2.166667, 22.051732, 2.985672, 3.016365 +2.183333, 22.362740, 2.985672, 3.016365 +2.200000, 22.673747, 2.985672, 3.016365 +2.216667, 22.984755, 2.985672, 3.016365 +2.233333, 23.295762, 2.985672, 3.016365 +2.250000, 23.606769, 2.985672, 3.016365 +2.266667, 23.917777, 2.985672, 3.016365 +2.283333, 24.228784, 2.985672, 3.016365 +2.300000, 24.539792, 2.985672, 3.016365 +2.316667, 24.850799, 2.985672, 3.016365 +2.333333, 25.161807, 2.985672, 3.016365 +2.350000, 25.472814, 2.985672, 3.016365 +2.366667, 25.783822, 2.985672, 3.016365 +2.383333, 26.094829, 2.985672, 3.016365 +2.400000, 26.405837, 2.985672, 3.016365 +2.416667, 26.716844, 2.985672, 3.016365 +2.433333, 27.027852, 2.985672, 3.016365 +2.450000, 27.338859, 2.985672, 3.016365 +2.466667, 27.649867, 2.985672, 3.016365 +2.483333, 27.960874, 2.985672, 3.016365 +2.500000, 28.271882, 2.985672, 3.016365 +2.516667, 28.582889, 2.985672, 3.016365 +2.533333, 28.893896, 2.985672, 3.016365 +2.550000, 29.204904, 2.985672, 3.016365 +2.566667, 29.515911, 2.985672, 3.016365 +2.583333, 29.826919, 2.985672, 3.016365 +2.600000, 30.137926, 2.985672, 3.016365 +2.616667, 30.448934, 2.985672, 3.016365 +2.633333, 30.759941, 2.985672, 3.016365 +2.650000, 31.070949, 2.985672, 3.016365 +2.666667, 31.381956, 2.985672, 3.016365 +2.683333, 31.692964, 2.985672, 3.016365 +2.700000, 32.003971, 2.985672, 3.016365 +2.716667, 32.314979, 2.985672, 3.016365 +2.733333, 32.625986, 2.985672, 3.016365 +2.750000, 32.936994, 2.985672, 3.016365 +2.766667, 33.248001, 2.985672, 3.016365 +2.783333, 33.559009, 2.985672, 3.016365 +2.800000, 33.870016, 2.985672, 3.016365 +2.816667, 34.181024, 2.985672, 3.016365 +2.833333, 34.492031, 2.985672, 3.016365 +2.850000, 34.803038, 2.985672, 3.016365 +2.866667, 35.114046, 2.985672, 3.016365 +2.883333, 35.425053, 2.985672, 3.016365 +2.900000, 35.736061, 2.985672, 3.016365 +2.916667, 36.047068, 2.985672, 3.016365 +2.933333, 36.358076, 2.985672, 3.016365 +2.950000, 36.669083, 2.985672, 3.016365 +2.966667, 36.980091, 2.985672, 3.016365 +2.983333, 37.291098, 2.985672, 3.016365 +3.000000, 37.602106, 2.985672, 3.016365 +3.016667, 37.913113, 2.985672, 3.016365 +3.033333, 38.224121, 2.985672, 3.016365 +3.050000, 38.535128, 2.985672, 3.016365 +3.066667, 38.846136, 2.985672, 3.016365 +3.083333, 39.157143, 2.985672, 3.016365 +3.100000, 39.468151, 2.985672, 3.016365 +3.116667, 39.779158, 2.985672, 3.016365 +3.133333, 40.090165, 2.985672, 3.016365 +3.150000, 40.401173, 2.985672, 3.016365 +3.166667, 40.712180, 2.985672, 3.016365 +3.183333, 41.023188, 2.985672, 3.016365 +3.200000, 41.334195, 2.985672, 3.016365 +3.216667, 41.645203, 2.985672, 3.016365 +3.233333, 41.956210, 2.985672, 3.016365 +3.250000, 42.267218, 2.985672, 3.016365 +3.266667, 42.578225, 2.985672, 3.016365 +3.283333, 42.889233, 2.985672, 3.016365 +3.300000, 43.200240, 2.985672, 3.016365 +3.316667, 43.511248, 2.985672, 3.016365 +3.333333, 43.822255, 2.985672, 3.016365 +3.350000, 44.133263, 2.985672, 3.016365 +3.366667, 44.444270, 2.985672, 3.016365 +3.383333, 44.755278, 2.985672, 3.016365 +3.400000, 45.066285, 2.985672, 3.016365 +3.416667, 45.377293, 2.985672, 3.016365 +3.433333, 45.688300, 2.985672, 3.016365 +3.450000, 45.999307, 2.985672, 3.016365 +3.466667, 46.310315, 2.985672, 3.016365 +3.483333, 46.621322, 2.985672, 3.016365 +3.500000, 46.932330, 2.985672, 3.016365 +3.516667, 47.243337, 2.985672, 3.016365 +3.533333, 47.554345, 2.985672, 3.016365 +3.550000, 47.865352, 2.985672, 3.016365 +3.566667, 48.176360, 2.985672, 3.016365 +3.583333, 48.487367, 2.985672, 3.016365 +3.600000, 48.798375, 2.985672, 3.016365 +3.616667, 49.109382, 2.985672, 3.016365 +3.633333, 49.420390, 2.985672, 3.016365 +3.650000, 49.731397, 2.985672, 3.016365 +3.666667, 50.042405, 2.985672, 3.016365 +3.683333, 50.353412, 2.985672, 3.016365 +3.700000, 50.664420, 2.985672, 3.016365 +3.716667, 50.975427, 2.985672, 3.016365 +3.733333, 51.286434, 2.985672, 3.016365 +3.750000, 51.597442, 2.985672, 3.016365 +3.766667, 51.908449, 2.985672, 3.016365 +3.783333, 52.219457, 2.985672, 3.016365 +3.800000, 52.530464, 2.985672, 3.016365 +3.816667, 52.841472, 2.985672, 3.016365 +3.833333, 53.152479, 2.985672, 3.016365 +3.850000, 53.463487, 2.985672, 3.016365 +3.866667, 53.774494, 2.985672, 3.016365 +3.883333, 54.085502, 2.985672, 3.016365 +3.900000, 54.396509, 2.985672, 3.016365 +3.916667, 54.707517, 2.985672, 3.016365 +3.933333, 55.018524, 2.985672, 3.016365 +3.950000, 55.329532, 2.985672, 3.016365 +3.966667, 55.640539, 2.985672, 3.016365 +3.983333, 55.951547, 2.985672, 3.016365 +4.000000, 56.262554, 2.985672, 3.016365 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_17280_phev_SUV.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_17280_phev_SUV.csv new file mode 100644 index 0000000..ee2cef5 --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_17280_phev_SUV.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.539375, 7.686100, 7.770982 +1.016667, 1.152246, 8.733401, 8.832000 +1.033333, 1.765116, 8.733401, 8.832000 +1.050000, 2.377986, 8.733401, 8.832000 +1.066667, 2.990857, 8.733401, 8.832000 +1.083333, 3.603727, 8.733401, 8.832000 +1.100000, 4.216597, 8.733401, 8.832000 +1.116667, 4.829467, 8.733401, 8.832000 +1.133333, 5.442338, 8.733401, 8.832000 +1.150000, 6.055208, 8.733401, 8.832000 +1.166667, 6.668078, 8.733401, 8.832000 +1.183333, 7.280948, 8.733401, 8.832000 +1.200000, 7.893819, 8.733401, 8.832000 +1.216667, 8.506689, 8.733401, 8.832000 +1.233333, 9.119559, 8.733401, 8.832000 +1.250000, 9.732430, 8.733401, 8.832000 +1.266667, 10.345300, 8.733401, 8.832000 +1.283333, 10.958170, 8.733401, 8.832000 +1.300000, 11.571040, 8.733401, 8.832000 +1.316667, 12.183911, 8.733401, 8.832000 +1.333333, 12.796781, 8.733401, 8.832000 +1.350000, 13.409651, 8.733401, 8.832000 +1.366667, 14.022521, 8.733401, 8.832000 +1.383333, 14.635392, 8.733401, 8.832000 +1.400000, 15.248262, 8.733401, 8.832000 +1.416667, 15.861132, 8.733401, 8.832000 +1.433333, 16.474003, 8.733401, 8.832000 +1.450000, 17.086873, 8.733401, 8.832000 +1.466667, 17.699743, 8.733401, 8.832000 +1.483333, 18.312613, 8.733401, 8.832000 +1.500000, 18.925484, 8.733401, 8.832000 +1.516667, 19.538354, 8.733401, 8.832000 +1.533333, 20.151224, 8.733401, 8.832000 +1.550000, 20.764095, 8.733401, 8.832000 +1.566667, 21.376965, 8.733401, 8.832000 +1.583333, 21.989835, 8.733401, 8.832000 +1.600000, 22.602705, 8.733401, 8.832000 +1.616667, 23.215576, 8.733401, 8.832000 +1.633333, 23.828446, 8.733401, 8.832000 +1.650000, 24.441316, 8.733401, 8.832000 +1.666667, 25.054186, 8.733401, 8.832000 +1.683333, 25.667057, 8.733401, 8.832000 +1.700000, 26.279927, 8.733401, 8.832000 +1.716667, 26.892797, 8.733401, 8.832000 +1.733333, 27.505668, 8.733401, 8.832000 +1.750000, 28.118538, 8.733401, 8.832000 +1.766667, 28.731408, 8.733401, 8.832000 +1.783333, 29.344278, 8.733401, 8.832000 +1.800000, 29.957149, 8.733401, 8.832000 +1.816667, 30.570019, 8.733401, 8.832000 +1.833333, 31.182889, 8.733401, 8.832000 +1.850000, 31.795759, 8.733401, 8.832000 +1.866667, 32.408630, 8.733401, 8.832000 +1.883333, 33.021500, 8.733401, 8.832000 +1.900000, 33.634370, 8.733401, 8.832000 +1.916667, 34.247241, 8.733401, 8.832000 +1.933333, 34.860111, 8.733401, 8.832000 +1.950000, 35.472981, 8.733401, 8.832000 +1.966667, 36.085851, 8.733401, 8.832000 +1.983333, 36.698722, 8.733401, 8.832000 +2.000000, 37.311592, 8.733401, 8.832000 +2.016667, 37.924462, 8.733401, 8.832000 +2.033333, 38.537333, 8.733401, 8.832000 +2.050000, 39.150203, 8.733401, 8.832000 +2.066667, 39.763073, 8.733401, 8.832000 +2.083333, 40.375943, 8.733401, 8.832000 +2.100000, 40.988814, 8.733401, 8.832000 +2.116667, 41.601684, 8.733401, 8.832000 +2.133333, 42.214554, 8.733401, 8.832000 +2.150000, 42.827424, 8.733401, 8.832000 +2.166667, 43.440295, 8.733401, 8.832000 +2.183333, 44.053165, 8.733401, 8.832000 +2.200000, 44.666035, 8.733401, 8.832000 +2.216667, 45.278906, 8.733401, 8.832000 +2.233333, 45.891776, 8.733401, 8.832000 +2.250000, 46.504646, 8.733401, 8.832000 +2.266667, 47.117516, 8.733401, 8.832000 +2.283333, 47.730387, 8.733401, 8.832000 +2.300000, 48.343257, 8.733401, 8.832000 +2.316667, 48.956127, 8.733401, 8.832000 +2.333333, 49.568997, 8.733401, 8.832000 +2.350000, 50.181868, 8.733401, 8.832000 +2.366667, 50.794738, 8.733401, 8.832000 +2.383333, 51.407608, 8.733401, 8.832000 +2.400000, 52.020479, 8.733401, 8.832000 +2.416667, 52.633349, 8.733401, 8.832000 +2.433333, 53.246219, 8.733401, 8.832000 +2.450000, 53.859089, 8.733401, 8.832000 +2.466667, 54.471960, 8.733401, 8.832000 +2.483333, 55.084830, 8.733401, 8.832000 +2.500000, 55.697700, 8.733401, 8.832000 +2.516667, 56.310571, 8.733401, 8.832000 +2.533333, 56.923441, 8.733401, 8.832000 +2.550000, 57.536311, 8.733401, 8.832000 +2.566667, 58.149181, 8.733401, 8.832000 +2.583333, 58.762052, 8.733401, 8.832000 +2.600000, 59.374922, 8.733401, 8.832000 +2.616667, 59.987792, 8.733401, 8.832000 +2.633333, 60.600662, 8.733401, 8.832000 +2.650000, 61.213533, 8.733401, 8.832000 +2.666667, 61.826403, 8.733401, 8.832000 +2.683333, 62.439273, 8.733401, 8.832000 +2.700000, 63.052144, 8.733401, 8.832000 +2.716667, 63.665014, 8.733401, 8.832000 +2.733333, 64.277884, 8.733401, 8.832000 +2.750000, 64.890754, 8.733401, 8.832000 +2.766667, 65.503625, 8.733401, 8.832000 +2.783333, 66.116495, 8.733401, 8.832000 +2.800000, 66.729365, 8.733401, 8.832000 +2.816667, 67.342235, 8.733401, 8.832000 +2.833333, 67.955106, 8.733401, 8.832000 +2.850000, 68.567976, 8.733401, 8.832000 +2.866667, 69.180846, 8.733401, 8.832000 +2.883333, 69.793717, 8.733401, 8.832000 +2.900000, 70.406587, 8.733401, 8.832000 +2.916667, 71.019457, 8.733401, 8.832000 +2.933333, 71.632327, 8.733401, 8.832000 +2.950000, 72.245198, 8.733401, 8.832000 +2.966667, 72.858068, 8.733401, 8.832000 +2.983333, 73.470938, 8.733401, 8.832000 +3.000000, 74.083809, 8.733401, 8.832000 +3.016667, 74.696679, 8.733401, 8.832000 +3.033333, 75.309549, 8.733401, 8.832000 +3.050000, 75.922419, 8.733401, 8.832000 +3.066667, 76.535290, 8.733401, 8.832000 +3.083333, 77.148160, 8.733401, 8.832000 +3.100000, 77.761030, 8.733401, 8.832000 +3.116667, 78.373900, 8.733401, 8.832000 +3.133333, 78.986771, 8.733401, 8.832000 +3.150000, 79.599641, 8.733401, 8.832000 +3.166667, 80.212511, 8.733401, 8.832000 +3.183333, 80.825382, 8.733401, 8.832000 +3.200000, 81.438252, 8.733401, 8.832000 +3.216667, 82.051122, 8.733401, 8.832000 +3.233333, 82.663992, 8.733401, 8.832000 +3.250000, 83.276863, 8.733401, 8.832000 +3.266667, 83.889733, 8.733401, 8.832000 +3.283333, 84.502603, 8.733401, 8.832000 +3.300000, 85.115473, 8.733401, 8.832000 +3.316667, 85.728344, 8.733401, 8.832000 +3.333333, 86.341214, 8.733401, 8.832000 +3.350000, 86.954084, 8.733401, 8.832000 +3.366667, 87.566955, 8.733401, 8.832000 +3.383333, 88.179825, 8.733401, 8.832000 +3.400000, 88.792695, 8.733401, 8.832000 +3.416667, 89.405565, 8.733401, 8.832000 +3.433333, 90.018436, 8.733401, 8.832000 +3.450000, 90.631306, 8.733401, 8.832000 +3.466667, 91.244176, 8.733401, 8.832000 +3.483333, 91.857047, 8.733401, 8.832000 +3.500000, 92.469917, 8.733401, 8.832000 +3.516667, 93.082787, 8.733401, 8.832000 +3.533333, 93.695657, 8.733401, 8.832000 +3.550000, 94.308528, 8.733401, 8.832000 +3.566667, 94.921398, 8.733401, 8.832000 +3.583333, 95.534268, 8.733401, 8.832000 +3.600000, 96.147138, 8.733401, 8.832000 +3.616667, 96.760009, 8.733401, 8.832000 +3.633333, 97.372879, 8.733401, 8.832000 +3.650000, 97.962686, 8.404745, 8.498984 +3.666667, 98.451688, 6.968290, 7.044070 +3.683333, 98.850306, 5.680300, 5.740356 +3.700000, 99.175156, 4.629109, 4.676911 +3.716667, 99.439882, 3.772342, 3.810540 +3.733333, 99.655606, 3.074078, 3.104703 +3.750000, 99.800321, 2.062187, 2.082243 +3.766667, 99.800587, 0.003787, 0.003822 +3.783333, 99.800587, 0.000000, 0.000000 +3.800000, 99.800587, 0.000000, 0.000000 +3.816667, 99.800587, 0.000000, 0.000000 +3.833333, 99.800587, 0.000000, 0.000000 +3.850000, 99.800587, 0.000000, 0.000000 +3.866667, 99.800587, 0.000000, 0.000000 +3.883333, 99.800587, 0.000000, 0.000000 +3.900000, 99.800587, 0.000000, 0.000000 +3.916667, 99.800587, 0.000000, 0.000000 +3.933333, 99.800587, 0.000000, 0.000000 +3.950000, 99.800587, 0.000000, 0.000000 +3.966667, 99.800587, 0.000000, 0.000000 +3.983333, 99.800587, 0.000000, 0.000000 +4.000000, 99.800587, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_3600_bev150_150kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_3600_bev150_150kW.csv new file mode 100644 index 0000000..4b23e41 --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_3600_bev150_150kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.284910, 7.692571, 7.770982 +1.016667, 0.608679, 8.741761, 8.832000 +1.033333, 0.932448, 8.741761, 8.832000 +1.050000, 1.256217, 8.741761, 8.832000 +1.066667, 1.579986, 8.741761, 8.832000 +1.083333, 1.903755, 8.741761, 8.832000 +1.100000, 2.227524, 8.741761, 8.832000 +1.116667, 2.551292, 8.741761, 8.832000 +1.133333, 2.875061, 8.741761, 8.832000 +1.150000, 3.198830, 8.741761, 8.832000 +1.166667, 3.522599, 8.741761, 8.832000 +1.183333, 3.846368, 8.741761, 8.832000 +1.200000, 4.170137, 8.741761, 8.832000 +1.216667, 4.493906, 8.741761, 8.832000 +1.233333, 4.817675, 8.741761, 8.832000 +1.250000, 5.141444, 8.741761, 8.832000 +1.266667, 5.465213, 8.741761, 8.832000 +1.283333, 5.788982, 8.741761, 8.832000 +1.300000, 6.112750, 8.741761, 8.832000 +1.316667, 6.436519, 8.741761, 8.832000 +1.333333, 6.760288, 8.741761, 8.832000 +1.350000, 7.084057, 8.741761, 8.832000 +1.366667, 7.407826, 8.741761, 8.832000 +1.383333, 7.731595, 8.741761, 8.832000 +1.400000, 8.055364, 8.741761, 8.832000 +1.416667, 8.379133, 8.741761, 8.832000 +1.433333, 8.702902, 8.741761, 8.832000 +1.450000, 9.026671, 8.741761, 8.832000 +1.466667, 9.350440, 8.741761, 8.832000 +1.483333, 9.674209, 8.741761, 8.832000 +1.500000, 9.997977, 8.741761, 8.832000 +1.516667, 10.321746, 8.741761, 8.832000 +1.533333, 10.645515, 8.741761, 8.832000 +1.550000, 10.969284, 8.741761, 8.832000 +1.566667, 11.293053, 8.741761, 8.832000 +1.583333, 11.616822, 8.741761, 8.832000 +1.600000, 11.940591, 8.741761, 8.832000 +1.616667, 12.264360, 8.741761, 8.832000 +1.633333, 12.588129, 8.741761, 8.832000 +1.650000, 12.911898, 8.741761, 8.832000 +1.666667, 13.235667, 8.741761, 8.832000 +1.683333, 13.559435, 8.741761, 8.832000 +1.700000, 13.883204, 8.741761, 8.832000 +1.716667, 14.206973, 8.741761, 8.832000 +1.733333, 14.530742, 8.741761, 8.832000 +1.750000, 14.854511, 8.741761, 8.832000 +1.766667, 15.178280, 8.741761, 8.832000 +1.783333, 15.502049, 8.741761, 8.832000 +1.800000, 15.825818, 8.741761, 8.832000 +1.816667, 16.149587, 8.741761, 8.832000 +1.833333, 16.473356, 8.741761, 8.832000 +1.850000, 16.797125, 8.741761, 8.832000 +1.866667, 17.120894, 8.741761, 8.832000 +1.883333, 17.444662, 8.741761, 8.832000 +1.900000, 17.768431, 8.741761, 8.832000 +1.916667, 18.092200, 8.741761, 8.832000 +1.933333, 18.415969, 8.741761, 8.832000 +1.950000, 18.739738, 8.741761, 8.832000 +1.966667, 19.063507, 8.741761, 8.832000 +1.983333, 19.387276, 8.741761, 8.832000 +2.000000, 19.711045, 8.741761, 8.832000 +2.016667, 20.034814, 8.741761, 8.832000 +2.033333, 20.358583, 8.741761, 8.832000 +2.050000, 20.682352, 8.741761, 8.832000 +2.066667, 21.006120, 8.741761, 8.832000 +2.083333, 21.329889, 8.741761, 8.832000 +2.100000, 21.653658, 8.741761, 8.832000 +2.116667, 21.977427, 8.741761, 8.832000 +2.133333, 22.301196, 8.741761, 8.832000 +2.150000, 22.624965, 8.741761, 8.832000 +2.166667, 22.948734, 8.741761, 8.832000 +2.183333, 23.272503, 8.741761, 8.832000 +2.200000, 23.596272, 8.741761, 8.832000 +2.216667, 23.920041, 8.741761, 8.832000 +2.233333, 24.243810, 8.741761, 8.832000 +2.250000, 24.567579, 8.741761, 8.832000 +2.266667, 24.891347, 8.741761, 8.832000 +2.283333, 25.215116, 8.741761, 8.832000 +2.300000, 25.538885, 8.741761, 8.832000 +2.316667, 25.862654, 8.741761, 8.832000 +2.333333, 26.186423, 8.741761, 8.832000 +2.350000, 26.510192, 8.741761, 8.832000 +2.366667, 26.833961, 8.741761, 8.832000 +2.383333, 27.157730, 8.741761, 8.832000 +2.400000, 27.481499, 8.741761, 8.832000 +2.416667, 27.805268, 8.741761, 8.832000 +2.433333, 28.129037, 8.741761, 8.832000 +2.450000, 28.452805, 8.741761, 8.832000 +2.466667, 28.776574, 8.741761, 8.832000 +2.483333, 29.100343, 8.741761, 8.832000 +2.500000, 29.424112, 8.741761, 8.832000 +2.516667, 29.747881, 8.741761, 8.832000 +2.533333, 30.071650, 8.741761, 8.832000 +2.550000, 30.395419, 8.741761, 8.832000 +2.566667, 30.719188, 8.741761, 8.832000 +2.583333, 31.042957, 8.741761, 8.832000 +2.600000, 31.366726, 8.741761, 8.832000 +2.616667, 31.690495, 8.741761, 8.832000 +2.633333, 32.014263, 8.741761, 8.832000 +2.650000, 32.338032, 8.741761, 8.832000 +2.666667, 32.661801, 8.741761, 8.832000 +2.683333, 32.985570, 8.741761, 8.832000 +2.700000, 33.309339, 8.741761, 8.832000 +2.716667, 33.633108, 8.741761, 8.832000 +2.733333, 33.956877, 8.741761, 8.832000 +2.750000, 34.280646, 8.741761, 8.832000 +2.766667, 34.604415, 8.741761, 8.832000 +2.783333, 34.928184, 8.741761, 8.832000 +2.800000, 35.251953, 8.741761, 8.832000 +2.816667, 35.575722, 8.741761, 8.832000 +2.833333, 35.899490, 8.741761, 8.832000 +2.850000, 36.223259, 8.741761, 8.832000 +2.866667, 36.547028, 8.741761, 8.832000 +2.883333, 36.870797, 8.741761, 8.832000 +2.900000, 37.194566, 8.741761, 8.832000 +2.916667, 37.518335, 8.741761, 8.832000 +2.933333, 37.842104, 8.741761, 8.832000 +2.950000, 38.165873, 8.741761, 8.832000 +2.966667, 38.489642, 8.741761, 8.832000 +2.983333, 38.813411, 8.741761, 8.832000 +3.000000, 39.137180, 8.741761, 8.832000 +3.016667, 39.460948, 8.741761, 8.832000 +3.033333, 39.784717, 8.741761, 8.832000 +3.050000, 40.108486, 8.741761, 8.832000 +3.066667, 40.432255, 8.741761, 8.832000 +3.083333, 40.756024, 8.741761, 8.832000 +3.100000, 41.079793, 8.741761, 8.832000 +3.116667, 41.403562, 8.741761, 8.832000 +3.133333, 41.727331, 8.741761, 8.832000 +3.150000, 42.051100, 8.741761, 8.832000 +3.166667, 42.374869, 8.741761, 8.832000 +3.183333, 42.698638, 8.741761, 8.832000 +3.200000, 43.022407, 8.741761, 8.832000 +3.216667, 43.346175, 8.741761, 8.832000 +3.233333, 43.669944, 8.741761, 8.832000 +3.250000, 43.993713, 8.741761, 8.832000 +3.266667, 44.317482, 8.741761, 8.832000 +3.283333, 44.641251, 8.741761, 8.832000 +3.300000, 44.965020, 8.741761, 8.832000 +3.316667, 45.288789, 8.741761, 8.832000 +3.333333, 45.612558, 8.741761, 8.832000 +3.350000, 45.936327, 8.741761, 8.832000 +3.366667, 46.260096, 8.741761, 8.832000 +3.383333, 46.583865, 8.741761, 8.832000 +3.400000, 46.907633, 8.741761, 8.832000 +3.416667, 47.231402, 8.741761, 8.832000 +3.433333, 47.555171, 8.741761, 8.832000 +3.450000, 47.878940, 8.741761, 8.832000 +3.466667, 48.202709, 8.741761, 8.832000 +3.483333, 48.526478, 8.741761, 8.832000 +3.500000, 48.850247, 8.741761, 8.832000 +3.516667, 49.174016, 8.741761, 8.832000 +3.533333, 49.497785, 8.741761, 8.832000 +3.550000, 49.821554, 8.741761, 8.832000 +3.566667, 50.145323, 8.741761, 8.832000 +3.583333, 50.469092, 8.741761, 8.832000 +3.600000, 50.792860, 8.741761, 8.832000 +3.616667, 51.116629, 8.741761, 8.832000 +3.633333, 51.440398, 8.741761, 8.832000 +3.650000, 51.764167, 8.741761, 8.832000 +3.666667, 52.087936, 8.741761, 8.832000 +3.683333, 52.411705, 8.741761, 8.832000 +3.700000, 52.735474, 8.741761, 8.832000 +3.716667, 53.059243, 8.741761, 8.832000 +3.733333, 53.383012, 8.741761, 8.832000 +3.750000, 53.706781, 8.741761, 8.832000 +3.766667, 54.030550, 8.741761, 8.832000 +3.783333, 54.354318, 8.741761, 8.832000 +3.800000, 54.678087, 8.741761, 8.832000 +3.816667, 55.001856, 8.741761, 8.832000 +3.833333, 55.325625, 8.741761, 8.832000 +3.850000, 55.649394, 8.741761, 8.832000 +3.866667, 55.973163, 8.741761, 8.832000 +3.883333, 56.296932, 8.741761, 8.832000 +3.900000, 56.620701, 8.741761, 8.832000 +3.916667, 56.944470, 8.741761, 8.832000 +3.933333, 57.268239, 8.741761, 8.832000 +3.950000, 57.592008, 8.741761, 8.832000 +3.966667, 57.915777, 8.741761, 8.832000 +3.983333, 58.239545, 8.741761, 8.832000 +4.000000, 58.563314, 8.741761, 8.832000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_3600_bev150_ld1_50kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_3600_bev150_ld1_50kW.csv new file mode 100644 index 0000000..7fb388e --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_3600_bev150_ld1_50kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.198492, 5.359295, 5.412378 +1.016667, 0.421158, 6.011968, 6.072000 +1.033333, 0.643823, 6.011968, 6.072000 +1.050000, 0.866489, 6.011968, 6.072000 +1.066667, 1.089154, 6.011968, 6.072000 +1.083333, 1.311820, 6.011968, 6.072000 +1.100000, 1.534485, 6.011968, 6.072000 +1.116667, 1.757151, 6.011968, 6.072000 +1.133333, 1.979816, 6.011968, 6.072000 +1.150000, 2.202482, 6.011968, 6.072000 +1.166667, 2.425147, 6.011968, 6.072000 +1.183333, 2.647813, 6.011968, 6.072000 +1.200000, 2.870478, 6.011968, 6.072000 +1.216667, 3.093144, 6.011968, 6.072000 +1.233333, 3.315809, 6.011968, 6.072000 +1.250000, 3.538474, 6.011968, 6.072000 +1.266667, 3.761140, 6.011968, 6.072000 +1.283333, 3.983805, 6.011968, 6.072000 +1.300000, 4.206471, 6.011968, 6.072000 +1.316667, 4.429136, 6.011968, 6.072000 +1.333333, 4.651802, 6.011968, 6.072000 +1.350000, 4.874467, 6.011968, 6.072000 +1.366667, 5.097133, 6.011968, 6.072000 +1.383333, 5.319798, 6.011968, 6.072000 +1.400000, 5.542464, 6.011968, 6.072000 +1.416667, 5.765129, 6.011968, 6.072000 +1.433333, 5.987795, 6.011968, 6.072000 +1.450000, 6.210460, 6.011968, 6.072000 +1.466667, 6.433126, 6.011968, 6.072000 +1.483333, 6.655791, 6.011968, 6.072000 +1.500000, 6.878456, 6.011968, 6.072000 +1.516667, 7.101122, 6.011968, 6.072000 +1.533333, 7.323787, 6.011968, 6.072000 +1.550000, 7.546453, 6.011968, 6.072000 +1.566667, 7.769118, 6.011968, 6.072000 +1.583333, 7.991784, 6.011968, 6.072000 +1.600000, 8.214449, 6.011968, 6.072000 +1.616667, 8.437115, 6.011968, 6.072000 +1.633333, 8.659780, 6.011968, 6.072000 +1.650000, 8.882446, 6.011968, 6.072000 +1.666667, 9.105111, 6.011968, 6.072000 +1.683333, 9.327777, 6.011968, 6.072000 +1.700000, 9.550442, 6.011968, 6.072000 +1.716667, 9.773108, 6.011968, 6.072000 +1.733333, 9.995773, 6.011968, 6.072000 +1.750000, 10.218439, 6.011968, 6.072000 +1.766667, 10.441104, 6.011968, 6.072000 +1.783333, 10.663769, 6.011968, 6.072000 +1.800000, 10.886435, 6.011968, 6.072000 +1.816667, 11.109100, 6.011968, 6.072000 +1.833333, 11.331766, 6.011968, 6.072000 +1.850000, 11.554431, 6.011968, 6.072000 +1.866667, 11.777097, 6.011968, 6.072000 +1.883333, 11.999762, 6.011968, 6.072000 +1.900000, 12.222428, 6.011968, 6.072000 +1.916667, 12.445093, 6.011968, 6.072000 +1.933333, 12.667759, 6.011968, 6.072000 +1.950000, 12.890424, 6.011968, 6.072000 +1.966667, 13.113090, 6.011968, 6.072000 +1.983333, 13.335755, 6.011968, 6.072000 +2.000000, 13.558421, 6.011968, 6.072000 +2.016667, 13.781086, 6.011968, 6.072000 +2.033333, 14.003751, 6.011968, 6.072000 +2.050000, 14.226417, 6.011968, 6.072000 +2.066667, 14.449082, 6.011968, 6.072000 +2.083333, 14.671748, 6.011968, 6.072000 +2.100000, 14.894413, 6.011968, 6.072000 +2.116667, 15.117079, 6.011968, 6.072000 +2.133333, 15.339744, 6.011968, 6.072000 +2.150000, 15.562410, 6.011968, 6.072000 +2.166667, 15.785075, 6.011968, 6.072000 +2.183333, 16.007741, 6.011968, 6.072000 +2.200000, 16.230406, 6.011968, 6.072000 +2.216667, 16.453072, 6.011968, 6.072000 +2.233333, 16.675737, 6.011968, 6.072000 +2.250000, 16.898403, 6.011968, 6.072000 +2.266667, 17.121068, 6.011968, 6.072000 +2.283333, 17.343733, 6.011968, 6.072000 +2.300000, 17.566399, 6.011968, 6.072000 +2.316667, 17.789064, 6.011968, 6.072000 +2.333333, 18.011730, 6.011968, 6.072000 +2.350000, 18.234395, 6.011968, 6.072000 +2.366667, 18.457061, 6.011968, 6.072000 +2.383333, 18.679726, 6.011968, 6.072000 +2.400000, 18.902392, 6.011968, 6.072000 +2.416667, 19.125057, 6.011968, 6.072000 +2.433333, 19.347723, 6.011968, 6.072000 +2.450000, 19.570388, 6.011968, 6.072000 +2.466667, 19.793054, 6.011968, 6.072000 +2.483333, 20.015719, 6.011968, 6.072000 +2.500000, 20.238385, 6.011968, 6.072000 +2.516667, 20.461050, 6.011968, 6.072000 +2.533333, 20.683716, 6.011968, 6.072000 +2.550000, 20.906381, 6.011968, 6.072000 +2.566667, 21.129046, 6.011968, 6.072000 +2.583333, 21.351712, 6.011968, 6.072000 +2.600000, 21.574377, 6.011968, 6.072000 +2.616667, 21.797043, 6.011968, 6.072000 +2.633333, 22.019708, 6.011968, 6.072000 +2.650000, 22.242374, 6.011968, 6.072000 +2.666667, 22.465039, 6.011968, 6.072000 +2.683333, 22.687705, 6.011968, 6.072000 +2.700000, 22.910370, 6.011968, 6.072000 +2.716667, 23.133036, 6.011968, 6.072000 +2.733333, 23.355701, 6.011968, 6.072000 +2.750000, 23.578367, 6.011968, 6.072000 +2.766667, 23.801032, 6.011968, 6.072000 +2.783333, 24.023698, 6.011968, 6.072000 +2.800000, 24.246363, 6.011968, 6.072000 +2.816667, 24.469028, 6.011968, 6.072000 +2.833333, 24.691694, 6.011968, 6.072000 +2.850000, 24.914359, 6.011968, 6.072000 +2.866667, 25.137025, 6.011968, 6.072000 +2.883333, 25.359690, 6.011968, 6.072000 +2.900000, 25.582356, 6.011968, 6.072000 +2.916667, 25.805021, 6.011968, 6.072000 +2.933333, 26.027687, 6.011968, 6.072000 +2.950000, 26.250352, 6.011968, 6.072000 +2.966667, 26.473018, 6.011968, 6.072000 +2.983333, 26.695683, 6.011968, 6.072000 +3.000000, 26.918349, 6.011968, 6.072000 +3.016667, 27.141014, 6.011968, 6.072000 +3.033333, 27.363680, 6.011968, 6.072000 +3.050000, 27.586345, 6.011968, 6.072000 +3.066667, 27.809011, 6.011968, 6.072000 +3.083333, 28.031676, 6.011968, 6.072000 +3.100000, 28.254341, 6.011968, 6.072000 +3.116667, 28.477007, 6.011968, 6.072000 +3.133333, 28.699672, 6.011968, 6.072000 +3.150000, 28.922338, 6.011968, 6.072000 +3.166667, 29.145003, 6.011968, 6.072000 +3.183333, 29.367669, 6.011968, 6.072000 +3.200000, 29.590334, 6.011968, 6.072000 +3.216667, 29.813000, 6.011968, 6.072000 +3.233333, 30.035665, 6.011968, 6.072000 +3.250000, 30.258331, 6.011968, 6.072000 +3.266667, 30.480996, 6.011968, 6.072000 +3.283333, 30.703662, 6.011968, 6.072000 +3.300000, 30.926327, 6.011968, 6.072000 +3.316667, 31.148993, 6.011968, 6.072000 +3.333333, 31.371658, 6.011968, 6.072000 +3.350000, 31.594323, 6.011968, 6.072000 +3.366667, 31.816989, 6.011968, 6.072000 +3.383333, 32.039654, 6.011968, 6.072000 +3.400000, 32.262320, 6.011968, 6.072000 +3.416667, 32.484985, 6.011968, 6.072000 +3.433333, 32.707651, 6.011968, 6.072000 +3.450000, 32.930316, 6.011968, 6.072000 +3.466667, 33.152982, 6.011968, 6.072000 +3.483333, 33.375647, 6.011968, 6.072000 +3.500000, 33.598313, 6.011968, 6.072000 +3.516667, 33.820978, 6.011968, 6.072000 +3.533333, 34.043644, 6.011968, 6.072000 +3.550000, 34.266309, 6.011968, 6.072000 +3.566667, 34.488975, 6.011968, 6.072000 +3.583333, 34.711640, 6.011968, 6.072000 +3.600000, 34.934306, 6.011968, 6.072000 +3.616667, 35.156971, 6.011968, 6.072000 +3.633333, 35.379636, 6.011968, 6.072000 +3.650000, 35.602302, 6.011968, 6.072000 +3.666667, 35.824967, 6.011968, 6.072000 +3.683333, 36.047633, 6.011968, 6.072000 +3.700000, 36.270298, 6.011968, 6.072000 +3.716667, 36.492964, 6.011968, 6.072000 +3.733333, 36.715629, 6.011968, 6.072000 +3.750000, 36.938295, 6.011968, 6.072000 +3.766667, 37.160960, 6.011968, 6.072000 +3.783333, 37.383626, 6.011968, 6.072000 +3.800000, 37.606291, 6.011968, 6.072000 +3.816667, 37.828957, 6.011968, 6.072000 +3.833333, 38.051622, 6.011968, 6.072000 +3.850000, 38.274288, 6.011968, 6.072000 +3.866667, 38.496953, 6.011968, 6.072000 +3.883333, 38.719618, 6.011968, 6.072000 +3.900000, 38.942284, 6.011968, 6.072000 +3.916667, 39.164949, 6.011968, 6.072000 +3.933333, 39.387615, 6.011968, 6.072000 +3.950000, 39.610280, 6.011968, 6.072000 +3.966667, 39.832946, 6.011968, 6.072000 +3.983333, 40.055611, 6.011968, 6.072000 +4.000000, 40.278277, 6.011968, 6.072000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_3600_bev200_ld4_150kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_3600_bev200_ld4_150kW.csv new file mode 100644 index 0000000..5708a5d --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_3600_bev200_ld4_150kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.135024, 7.696378, 7.770982 +1.016667, 0.288475, 8.746678, 8.832000 +1.033333, 0.441925, 8.746678, 8.832000 +1.050000, 0.595376, 8.746678, 8.832000 +1.066667, 0.748826, 8.746678, 8.832000 +1.083333, 0.902277, 8.746678, 8.832000 +1.100000, 1.055727, 8.746678, 8.832000 +1.116667, 1.209178, 8.746678, 8.832000 +1.133333, 1.362628, 8.746678, 8.832000 +1.150000, 1.516079, 8.746678, 8.832000 +1.166667, 1.669529, 8.746678, 8.832000 +1.183333, 1.822980, 8.746678, 8.832000 +1.200000, 1.976430, 8.746678, 8.832000 +1.216667, 2.129881, 8.746678, 8.832000 +1.233333, 2.283331, 8.746678, 8.832000 +1.250000, 2.436781, 8.746678, 8.832000 +1.266667, 2.590232, 8.746678, 8.832000 +1.283333, 2.743682, 8.746678, 8.832000 +1.300000, 2.897133, 8.746678, 8.832000 +1.316667, 3.050583, 8.746678, 8.832000 +1.333333, 3.204034, 8.746678, 8.832000 +1.350000, 3.357484, 8.746678, 8.832000 +1.366667, 3.510935, 8.746678, 8.832000 +1.383333, 3.664385, 8.746678, 8.832000 +1.400000, 3.817836, 8.746678, 8.832000 +1.416667, 3.971286, 8.746678, 8.832000 +1.433333, 4.124737, 8.746678, 8.832000 +1.450000, 4.278187, 8.746678, 8.832000 +1.466667, 4.431638, 8.746678, 8.832000 +1.483333, 4.585088, 8.746678, 8.832000 +1.500000, 4.738539, 8.746678, 8.832000 +1.516667, 4.891989, 8.746678, 8.832000 +1.533333, 5.045440, 8.746678, 8.832000 +1.550000, 5.198890, 8.746678, 8.832000 +1.566667, 5.352341, 8.746678, 8.832000 +1.583333, 5.505791, 8.746678, 8.832000 +1.600000, 5.659242, 8.746678, 8.832000 +1.616667, 5.812692, 8.746678, 8.832000 +1.633333, 5.966143, 8.746678, 8.832000 +1.650000, 6.119593, 8.746678, 8.832000 +1.666667, 6.273044, 8.746678, 8.832000 +1.683333, 6.426494, 8.746678, 8.832000 +1.700000, 6.579945, 8.746678, 8.832000 +1.716667, 6.733395, 8.746678, 8.832000 +1.733333, 6.886846, 8.746678, 8.832000 +1.750000, 7.040296, 8.746678, 8.832000 +1.766667, 7.193747, 8.746678, 8.832000 +1.783333, 7.347197, 8.746678, 8.832000 +1.800000, 7.500648, 8.746678, 8.832000 +1.816667, 7.654098, 8.746678, 8.832000 +1.833333, 7.807549, 8.746678, 8.832000 +1.850000, 7.960999, 8.746678, 8.832000 +1.866667, 8.114450, 8.746678, 8.832000 +1.883333, 8.267900, 8.746678, 8.832000 +1.900000, 8.421351, 8.746678, 8.832000 +1.916667, 8.574801, 8.746678, 8.832000 +1.933333, 8.728252, 8.746678, 8.832000 +1.950000, 8.881702, 8.746678, 8.832000 +1.966667, 9.035152, 8.746678, 8.832000 +1.983333, 9.188603, 8.746678, 8.832000 +2.000000, 9.342053, 8.746678, 8.832000 +2.016667, 9.495504, 8.746678, 8.832000 +2.033333, 9.648954, 8.746678, 8.832000 +2.050000, 9.802405, 8.746678, 8.832000 +2.066667, 9.955855, 8.746678, 8.832000 +2.083333, 10.109306, 8.746678, 8.832000 +2.100000, 10.262756, 8.746678, 8.832000 +2.116667, 10.416207, 8.746678, 8.832000 +2.133333, 10.569657, 8.746678, 8.832000 +2.150000, 10.723108, 8.746678, 8.832000 +2.166667, 10.876558, 8.746678, 8.832000 +2.183333, 11.030009, 8.746678, 8.832000 +2.200000, 11.183459, 8.746678, 8.832000 +2.216667, 11.336910, 8.746678, 8.832000 +2.233333, 11.490360, 8.746678, 8.832000 +2.250000, 11.643811, 8.746678, 8.832000 +2.266667, 11.797261, 8.746678, 8.832000 +2.283333, 11.950712, 8.746678, 8.832000 +2.300000, 12.104162, 8.746678, 8.832000 +2.316667, 12.257613, 8.746678, 8.832000 +2.333333, 12.411063, 8.746678, 8.832000 +2.350000, 12.564514, 8.746678, 8.832000 +2.366667, 12.717964, 8.746678, 8.832000 +2.383333, 12.871415, 8.746678, 8.832000 +2.400000, 13.024865, 8.746678, 8.832000 +2.416667, 13.178316, 8.746678, 8.832000 +2.433333, 13.331766, 8.746678, 8.832000 +2.450000, 13.485217, 8.746678, 8.832000 +2.466667, 13.638667, 8.746678, 8.832000 +2.483333, 13.792118, 8.746678, 8.832000 +2.500000, 13.945568, 8.746678, 8.832000 +2.516667, 14.099019, 8.746678, 8.832000 +2.533333, 14.252469, 8.746678, 8.832000 +2.550000, 14.405920, 8.746678, 8.832000 +2.566667, 14.559370, 8.746678, 8.832000 +2.583333, 14.712821, 8.746678, 8.832000 +2.600000, 14.866271, 8.746678, 8.832000 +2.616667, 15.019722, 8.746678, 8.832000 +2.633333, 15.173172, 8.746678, 8.832000 +2.650000, 15.326623, 8.746678, 8.832000 +2.666667, 15.480073, 8.746678, 8.832000 +2.683333, 15.633523, 8.746678, 8.832000 +2.700000, 15.786974, 8.746678, 8.832000 +2.716667, 15.940424, 8.746678, 8.832000 +2.733333, 16.093875, 8.746678, 8.832000 +2.750000, 16.247325, 8.746678, 8.832000 +2.766667, 16.400776, 8.746678, 8.832000 +2.783333, 16.554226, 8.746678, 8.832000 +2.800000, 16.707677, 8.746678, 8.832000 +2.816667, 16.861127, 8.746678, 8.832000 +2.833333, 17.014578, 8.746678, 8.832000 +2.850000, 17.168028, 8.746678, 8.832000 +2.866667, 17.321479, 8.746678, 8.832000 +2.883333, 17.474929, 8.746678, 8.832000 +2.900000, 17.628380, 8.746678, 8.832000 +2.916667, 17.781830, 8.746678, 8.832000 +2.933333, 17.935281, 8.746678, 8.832000 +2.950000, 18.088731, 8.746678, 8.832000 +2.966667, 18.242182, 8.746678, 8.832000 +2.983333, 18.395632, 8.746678, 8.832000 +3.000000, 18.549083, 8.746678, 8.832000 +3.016667, 18.702533, 8.746678, 8.832000 +3.033333, 18.855984, 8.746678, 8.832000 +3.050000, 19.009434, 8.746678, 8.832000 +3.066667, 19.162885, 8.746678, 8.832000 +3.083333, 19.316335, 8.746678, 8.832000 +3.100000, 19.469786, 8.746678, 8.832000 +3.116667, 19.623236, 8.746678, 8.832000 +3.133333, 19.776687, 8.746678, 8.832000 +3.150000, 19.930137, 8.746678, 8.832000 +3.166667, 20.083588, 8.746678, 8.832000 +3.183333, 20.237038, 8.746678, 8.832000 +3.200000, 20.390489, 8.746678, 8.832000 +3.216667, 20.543939, 8.746678, 8.832000 +3.233333, 20.697390, 8.746678, 8.832000 +3.250000, 20.850840, 8.746678, 8.832000 +3.266667, 21.004291, 8.746678, 8.832000 +3.283333, 21.157741, 8.746678, 8.832000 +3.300000, 21.311192, 8.746678, 8.832000 +3.316667, 21.464642, 8.746678, 8.832000 +3.333333, 21.618093, 8.746678, 8.832000 +3.350000, 21.771543, 8.746678, 8.832000 +3.366667, 21.924994, 8.746678, 8.832000 +3.383333, 22.078444, 8.746678, 8.832000 +3.400000, 22.231894, 8.746678, 8.832000 +3.416667, 22.385345, 8.746678, 8.832000 +3.433333, 22.538795, 8.746678, 8.832000 +3.450000, 22.692246, 8.746678, 8.832000 +3.466667, 22.845696, 8.746678, 8.832000 +3.483333, 22.999147, 8.746678, 8.832000 +3.500000, 23.152597, 8.746678, 8.832000 +3.516667, 23.306048, 8.746678, 8.832000 +3.533333, 23.459498, 8.746678, 8.832000 +3.550000, 23.612949, 8.746678, 8.832000 +3.566667, 23.766399, 8.746678, 8.832000 +3.583333, 23.919850, 8.746678, 8.832000 +3.600000, 24.073300, 8.746678, 8.832000 +3.616667, 24.226751, 8.746678, 8.832000 +3.633333, 24.380201, 8.746678, 8.832000 +3.650000, 24.533652, 8.746678, 8.832000 +3.666667, 24.687102, 8.746678, 8.832000 +3.683333, 24.840553, 8.746678, 8.832000 +3.700000, 24.994003, 8.746678, 8.832000 +3.716667, 25.147454, 8.746678, 8.832000 +3.733333, 25.300904, 8.746678, 8.832000 +3.750000, 25.454355, 8.746678, 8.832000 +3.766667, 25.607805, 8.746678, 8.832000 +3.783333, 25.761256, 8.746678, 8.832000 +3.800000, 25.914706, 8.746678, 8.832000 +3.816667, 26.068157, 8.746678, 8.832000 +3.833333, 26.221607, 8.746678, 8.832000 +3.850000, 26.375058, 8.746678, 8.832000 +3.866667, 26.528508, 8.746678, 8.832000 +3.883333, 26.681959, 8.746678, 8.832000 +3.900000, 26.835409, 8.746678, 8.832000 +3.916667, 26.988860, 8.746678, 8.832000 +3.933333, 27.142310, 8.746678, 8.832000 +3.950000, 27.295761, 8.746678, 8.832000 +3.966667, 27.449211, 8.746678, 8.832000 +3.983333, 27.602662, 8.746678, 8.832000 +4.000000, 27.756112, 8.746678, 8.832000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_3600_bev250_350kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_3600_bev250_350kW.csv new file mode 100644 index 0000000..d43538c --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_3600_bev250_350kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.128276, 9.143505, 9.231932 +1.016667, 0.275274, 10.478014, 10.580000 +1.033333, 0.422272, 10.478014, 10.580000 +1.050000, 0.569270, 10.478014, 10.580000 +1.066667, 0.716268, 10.478014, 10.580000 +1.083333, 0.863266, 10.478014, 10.580000 +1.100000, 1.010264, 10.478014, 10.580000 +1.116667, 1.157262, 10.478014, 10.580000 +1.133333, 1.304260, 10.478014, 10.580000 +1.150000, 1.451257, 10.478014, 10.580000 +1.166667, 1.598255, 10.478014, 10.580000 +1.183333, 1.745253, 10.478014, 10.580000 +1.200000, 1.892251, 10.478014, 10.580000 +1.216667, 2.039249, 10.478014, 10.580000 +1.233333, 2.186247, 10.478014, 10.580000 +1.250000, 2.333245, 10.478014, 10.580000 +1.266667, 2.480243, 10.478014, 10.580000 +1.283333, 2.627241, 10.478014, 10.580000 +1.300000, 2.774239, 10.478014, 10.580000 +1.316667, 2.921237, 10.478014, 10.580000 +1.333333, 3.068235, 10.478014, 10.580000 +1.350000, 3.215233, 10.478014, 10.580000 +1.366667, 3.362231, 10.478014, 10.580000 +1.383333, 3.509229, 10.478014, 10.580000 +1.400000, 3.656227, 10.478014, 10.580000 +1.416667, 3.803225, 10.478014, 10.580000 +1.433333, 3.950223, 10.478014, 10.580000 +1.450000, 4.097221, 10.478014, 10.580000 +1.466667, 4.244219, 10.478014, 10.580000 +1.483333, 4.391217, 10.478014, 10.580000 +1.500000, 4.538215, 10.478014, 10.580000 +1.516667, 4.685212, 10.478014, 10.580000 +1.533333, 4.832210, 10.478014, 10.580000 +1.550000, 4.979208, 10.478014, 10.580000 +1.566667, 5.126206, 10.478014, 10.580000 +1.583333, 5.273204, 10.478014, 10.580000 +1.600000, 5.420202, 10.478014, 10.580000 +1.616667, 5.567200, 10.478014, 10.580000 +1.633333, 5.714198, 10.478014, 10.580000 +1.650000, 5.861196, 10.478014, 10.580000 +1.666667, 6.008194, 10.478014, 10.580000 +1.683333, 6.155192, 10.478014, 10.580000 +1.700000, 6.302190, 10.478014, 10.580000 +1.716667, 6.449188, 10.478014, 10.580000 +1.733333, 6.596186, 10.478014, 10.580000 +1.750000, 6.743184, 10.478014, 10.580000 +1.766667, 6.890182, 10.478014, 10.580000 +1.783333, 7.037180, 10.478014, 10.580000 +1.800000, 7.184178, 10.478014, 10.580000 +1.816667, 7.331176, 10.478014, 10.580000 +1.833333, 7.478174, 10.478014, 10.580000 +1.850000, 7.625172, 10.478014, 10.580000 +1.866667, 7.772170, 10.478014, 10.580000 +1.883333, 7.919167, 10.478014, 10.580000 +1.900000, 8.066165, 10.478014, 10.580000 +1.916667, 8.213163, 10.478014, 10.580000 +1.933333, 8.360161, 10.478014, 10.580000 +1.950000, 8.507159, 10.478014, 10.580000 +1.966667, 8.654157, 10.478014, 10.580000 +1.983333, 8.801155, 10.478014, 10.580000 +2.000000, 8.948153, 10.478014, 10.580000 +2.016667, 9.095151, 10.478014, 10.580000 +2.033333, 9.242149, 10.478014, 10.580000 +2.050000, 9.389147, 10.478014, 10.580000 +2.066667, 9.536145, 10.478014, 10.580000 +2.083333, 9.683143, 10.478014, 10.580000 +2.100000, 9.830141, 10.478014, 10.580000 +2.116667, 9.977139, 10.478014, 10.580000 +2.133333, 10.124137, 10.478014, 10.580000 +2.150000, 10.271135, 10.478014, 10.580000 +2.166667, 10.418133, 10.478014, 10.580000 +2.183333, 10.565131, 10.478014, 10.580000 +2.200000, 10.712129, 10.478014, 10.580000 +2.216667, 10.859127, 10.478014, 10.580000 +2.233333, 11.006124, 10.478014, 10.580000 +2.250000, 11.153122, 10.478014, 10.580000 +2.266667, 11.300120, 10.478014, 10.580000 +2.283333, 11.447118, 10.478014, 10.580000 +2.300000, 11.594116, 10.478014, 10.580000 +2.316667, 11.741114, 10.478014, 10.580000 +2.333333, 11.888112, 10.478014, 10.580000 +2.350000, 12.035110, 10.478014, 10.580000 +2.366667, 12.182108, 10.478014, 10.580000 +2.383333, 12.329106, 10.478014, 10.580000 +2.400000, 12.476104, 10.478014, 10.580000 +2.416667, 12.623102, 10.478014, 10.580000 +2.433333, 12.770100, 10.478014, 10.580000 +2.450000, 12.917098, 10.478014, 10.580000 +2.466667, 13.064096, 10.478014, 10.580000 +2.483333, 13.211094, 10.478014, 10.580000 +2.500000, 13.358092, 10.478014, 10.580000 +2.516667, 13.505090, 10.478014, 10.580000 +2.533333, 13.652088, 10.478014, 10.580000 +2.550000, 13.799086, 10.478014, 10.580000 +2.566667, 13.946084, 10.478014, 10.580000 +2.583333, 14.093082, 10.478014, 10.580000 +2.600000, 14.240079, 10.478014, 10.580000 +2.616667, 14.387077, 10.478014, 10.580000 +2.633333, 14.534075, 10.478014, 10.580000 +2.650000, 14.681073, 10.478014, 10.580000 +2.666667, 14.828071, 10.478014, 10.580000 +2.683333, 14.975069, 10.478014, 10.580000 +2.700000, 15.122067, 10.478014, 10.580000 +2.716667, 15.269065, 10.478014, 10.580000 +2.733333, 15.416063, 10.478014, 10.580000 +2.750000, 15.563061, 10.478014, 10.580000 +2.766667, 15.710059, 10.478014, 10.580000 +2.783333, 15.857057, 10.478014, 10.580000 +2.800000, 16.004055, 10.478014, 10.580000 +2.816667, 16.151053, 10.478014, 10.580000 +2.833333, 16.298051, 10.478014, 10.580000 +2.850000, 16.445049, 10.478014, 10.580000 +2.866667, 16.592047, 10.478014, 10.580000 +2.883333, 16.739045, 10.478014, 10.580000 +2.900000, 16.886043, 10.478014, 10.580000 +2.916667, 17.033041, 10.478014, 10.580000 +2.933333, 17.180039, 10.478014, 10.580000 +2.950000, 17.327037, 10.478014, 10.580000 +2.966667, 17.474034, 10.478014, 10.580000 +2.983333, 17.621032, 10.478014, 10.580000 +3.000000, 17.768030, 10.478014, 10.580000 +3.016667, 17.915028, 10.478014, 10.580000 +3.033333, 18.062026, 10.478014, 10.580000 +3.050000, 18.209024, 10.478014, 10.580000 +3.066667, 18.356022, 10.478014, 10.580000 +3.083333, 18.503020, 10.478014, 10.580000 +3.100000, 18.650018, 10.478014, 10.580000 +3.116667, 18.797016, 10.478014, 10.580000 +3.133333, 18.944014, 10.478014, 10.580000 +3.150000, 19.091012, 10.478014, 10.580000 +3.166667, 19.238010, 10.478014, 10.580000 +3.183333, 19.385008, 10.478014, 10.580000 +3.200000, 19.532006, 10.478014, 10.580000 +3.216667, 19.679004, 10.478014, 10.580000 +3.233333, 19.826002, 10.478014, 10.580000 +3.250000, 19.973000, 10.478014, 10.580000 +3.266667, 20.119998, 10.478014, 10.580000 +3.283333, 20.266996, 10.478014, 10.580000 +3.300000, 20.413994, 10.478014, 10.580000 +3.316667, 20.560992, 10.478014, 10.580000 +3.333333, 20.707989, 10.478014, 10.580000 +3.350000, 20.854987, 10.478014, 10.580000 +3.366667, 21.001985, 10.478014, 10.580000 +3.383333, 21.148983, 10.478014, 10.580000 +3.400000, 21.295981, 10.478014, 10.580000 +3.416667, 21.442979, 10.478014, 10.580000 +3.433333, 21.589977, 10.478014, 10.580000 +3.450000, 21.736975, 10.478014, 10.580000 +3.466667, 21.883973, 10.478014, 10.580000 +3.483333, 22.030971, 10.478014, 10.580000 +3.500000, 22.177969, 10.478014, 10.580000 +3.516667, 22.324967, 10.478014, 10.580000 +3.533333, 22.471965, 10.478014, 10.580000 +3.550000, 22.618963, 10.478014, 10.580000 +3.566667, 22.765961, 10.478014, 10.580000 +3.583333, 22.912959, 10.478014, 10.580000 +3.600000, 23.059957, 10.478014, 10.580000 +3.616667, 23.206955, 10.478014, 10.580000 +3.633333, 23.353953, 10.478014, 10.580000 +3.650000, 23.500951, 10.478014, 10.580000 +3.666667, 23.647949, 10.478014, 10.580000 +3.683333, 23.794947, 10.478014, 10.580000 +3.700000, 23.941944, 10.478014, 10.580000 +3.716667, 24.088942, 10.478014, 10.580000 +3.733333, 24.235940, 10.478014, 10.580000 +3.750000, 24.382938, 10.478014, 10.580000 +3.766667, 24.529936, 10.478014, 10.580000 +3.783333, 24.676934, 10.478014, 10.580000 +3.800000, 24.823932, 10.478014, 10.580000 +3.816667, 24.970930, 10.478014, 10.580000 +3.833333, 25.117928, 10.478014, 10.580000 +3.850000, 25.264926, 10.478014, 10.580000 +3.866667, 25.411924, 10.478014, 10.580000 +3.883333, 25.558922, 10.478014, 10.580000 +3.900000, 25.705920, 10.478014, 10.580000 +3.916667, 25.852918, 10.478014, 10.580000 +3.933333, 25.999916, 10.478014, 10.580000 +3.950000, 26.146914, 10.478014, 10.580000 +3.966667, 26.293912, 10.478014, 10.580000 +3.983333, 26.440910, 10.478014, 10.580000 +4.000000, 26.587908, 10.478014, 10.580000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_3600_bev250_400kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_3600_bev250_400kW.csv new file mode 100644 index 0000000..d46a87e --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_3600_bev250_400kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.173494, 9.108420, 9.231932 +1.016667, 0.372297, 10.437176, 10.580000 +1.033333, 0.571100, 10.437176, 10.580000 +1.050000, 0.769904, 10.437176, 10.580000 +1.066667, 0.968707, 10.437176, 10.580000 +1.083333, 1.167511, 10.437176, 10.580000 +1.100000, 1.366314, 10.437176, 10.580000 +1.116667, 1.565117, 10.437176, 10.580000 +1.133333, 1.763921, 10.437176, 10.580000 +1.150000, 1.962724, 10.437176, 10.580000 +1.166667, 2.161527, 10.437176, 10.580000 +1.183333, 2.360331, 10.437176, 10.580000 +1.200000, 2.559134, 10.437176, 10.580000 +1.216667, 2.757937, 10.437176, 10.580000 +1.233333, 2.956741, 10.437176, 10.580000 +1.250000, 3.155544, 10.437176, 10.580000 +1.266667, 3.354347, 10.437176, 10.580000 +1.283333, 3.553151, 10.437176, 10.580000 +1.300000, 3.751954, 10.437176, 10.580000 +1.316667, 3.950757, 10.437176, 10.580000 +1.333333, 4.149561, 10.437176, 10.580000 +1.350000, 4.348364, 10.437176, 10.580000 +1.366667, 4.547168, 10.437176, 10.580000 +1.383333, 4.745971, 10.437176, 10.580000 +1.400000, 4.944774, 10.437176, 10.580000 +1.416667, 5.143578, 10.437176, 10.580000 +1.433333, 5.342381, 10.437176, 10.580000 +1.450000, 5.541184, 10.437176, 10.580000 +1.466667, 5.739988, 10.437176, 10.580000 +1.483333, 5.938791, 10.437176, 10.580000 +1.500000, 6.137594, 10.437176, 10.580000 +1.516667, 6.336398, 10.437176, 10.580000 +1.533333, 6.535201, 10.437176, 10.580000 +1.550000, 6.734004, 10.437176, 10.580000 +1.566667, 6.932808, 10.437176, 10.580000 +1.583333, 7.131611, 10.437176, 10.580000 +1.600000, 7.330415, 10.437176, 10.580000 +1.616667, 7.529218, 10.437176, 10.580000 +1.633333, 7.728021, 10.437176, 10.580000 +1.650000, 7.926825, 10.437176, 10.580000 +1.666667, 8.125628, 10.437176, 10.580000 +1.683333, 8.324431, 10.437176, 10.580000 +1.700000, 8.523235, 10.437176, 10.580000 +1.716667, 8.722038, 10.437176, 10.580000 +1.733333, 8.920841, 10.437176, 10.580000 +1.750000, 9.119645, 10.437176, 10.580000 +1.766667, 9.318448, 10.437176, 10.580000 +1.783333, 9.517251, 10.437176, 10.580000 +1.800000, 9.716055, 10.437176, 10.580000 +1.816667, 9.914858, 10.437176, 10.580000 +1.833333, 10.113662, 10.437176, 10.580000 +1.850000, 10.312465, 10.437176, 10.580000 +1.866667, 10.511268, 10.437176, 10.580000 +1.883333, 10.710072, 10.437176, 10.580000 +1.900000, 10.908875, 10.437176, 10.580000 +1.916667, 11.107678, 10.437176, 10.580000 +1.933333, 11.306482, 10.437176, 10.580000 +1.950000, 11.505285, 10.437176, 10.580000 +1.966667, 11.704088, 10.437176, 10.580000 +1.983333, 11.902892, 10.437176, 10.580000 +2.000000, 12.101695, 10.437176, 10.580000 +2.016667, 12.300498, 10.437176, 10.580000 +2.033333, 12.499302, 10.437176, 10.580000 +2.050000, 12.698105, 10.437176, 10.580000 +2.066667, 12.896909, 10.437176, 10.580000 +2.083333, 13.095712, 10.437176, 10.580000 +2.100000, 13.294515, 10.437176, 10.580000 +2.116667, 13.493319, 10.437176, 10.580000 +2.133333, 13.692122, 10.437176, 10.580000 +2.150000, 13.890925, 10.437176, 10.580000 +2.166667, 14.089729, 10.437176, 10.580000 +2.183333, 14.288532, 10.437176, 10.580000 +2.200000, 14.487335, 10.437176, 10.580000 +2.216667, 14.686139, 10.437176, 10.580000 +2.233333, 14.884942, 10.437176, 10.580000 +2.250000, 15.083745, 10.437176, 10.580000 +2.266667, 15.282549, 10.437176, 10.580000 +2.283333, 15.481352, 10.437176, 10.580000 +2.300000, 15.680156, 10.437176, 10.580000 +2.316667, 15.878959, 10.437176, 10.580000 +2.333333, 16.077762, 10.437176, 10.580000 +2.350000, 16.276566, 10.437176, 10.580000 +2.366667, 16.475369, 10.437176, 10.580000 +2.383333, 16.674172, 10.437176, 10.580000 +2.400000, 16.872976, 10.437176, 10.580000 +2.416667, 17.071779, 10.437176, 10.580000 +2.433333, 17.270582, 10.437176, 10.580000 +2.450000, 17.469386, 10.437176, 10.580000 +2.466667, 17.668189, 10.437176, 10.580000 +2.483333, 17.866992, 10.437176, 10.580000 +2.500000, 18.065796, 10.437176, 10.580000 +2.516667, 18.264599, 10.437176, 10.580000 +2.533333, 18.463403, 10.437176, 10.580000 +2.550000, 18.662206, 10.437176, 10.580000 +2.566667, 18.861009, 10.437176, 10.580000 +2.583333, 19.059813, 10.437176, 10.580000 +2.600000, 19.258616, 10.437176, 10.580000 +2.616667, 19.457419, 10.437176, 10.580000 +2.633333, 19.656223, 10.437176, 10.580000 +2.650000, 19.855026, 10.437176, 10.580000 +2.666667, 20.053829, 10.437176, 10.580000 +2.683333, 20.252633, 10.437176, 10.580000 +2.700000, 20.451436, 10.437176, 10.580000 +2.716667, 20.650239, 10.437176, 10.580000 +2.733333, 20.849043, 10.437176, 10.580000 +2.750000, 21.047846, 10.437176, 10.580000 +2.766667, 21.246650, 10.437176, 10.580000 +2.783333, 21.445453, 10.437176, 10.580000 +2.800000, 21.644256, 10.437176, 10.580000 +2.816667, 21.843060, 10.437176, 10.580000 +2.833333, 22.041863, 10.437176, 10.580000 +2.850000, 22.240666, 10.437176, 10.580000 +2.866667, 22.439470, 10.437176, 10.580000 +2.883333, 22.638273, 10.437176, 10.580000 +2.900000, 22.837076, 10.437176, 10.580000 +2.916667, 23.035880, 10.437176, 10.580000 +2.933333, 23.234683, 10.437176, 10.580000 +2.950000, 23.433486, 10.437176, 10.580000 +2.966667, 23.632290, 10.437176, 10.580000 +2.983333, 23.831093, 10.437176, 10.580000 +3.000000, 24.029897, 10.437176, 10.580000 +3.016667, 24.228700, 10.437176, 10.580000 +3.033333, 24.427503, 10.437176, 10.580000 +3.050000, 24.626307, 10.437176, 10.580000 +3.066667, 24.825110, 10.437176, 10.580000 +3.083333, 25.023913, 10.437176, 10.580000 +3.100000, 25.222717, 10.437176, 10.580000 +3.116667, 25.421520, 10.437176, 10.580000 +3.133333, 25.620323, 10.437176, 10.580000 +3.150000, 25.819127, 10.437176, 10.580000 +3.166667, 26.017930, 10.437176, 10.580000 +3.183333, 26.216733, 10.437176, 10.580000 +3.200000, 26.415537, 10.437176, 10.580000 +3.216667, 26.614340, 10.437176, 10.580000 +3.233333, 26.813144, 10.437176, 10.580000 +3.250000, 27.011947, 10.437176, 10.580000 +3.266667, 27.210750, 10.437176, 10.580000 +3.283333, 27.409554, 10.437176, 10.580000 +3.300000, 27.608357, 10.437176, 10.580000 +3.316667, 27.807160, 10.437176, 10.580000 +3.333333, 28.005964, 10.437176, 10.580000 +3.350000, 28.204767, 10.437176, 10.580000 +3.366667, 28.403570, 10.437176, 10.580000 +3.383333, 28.602374, 10.437176, 10.580000 +3.400000, 28.801177, 10.437176, 10.580000 +3.416667, 28.999980, 10.437176, 10.580000 +3.433333, 29.198784, 10.437176, 10.580000 +3.450000, 29.397587, 10.437176, 10.580000 +3.466667, 29.596391, 10.437176, 10.580000 +3.483333, 29.795194, 10.437176, 10.580000 +3.500000, 29.993997, 10.437176, 10.580000 +3.516667, 30.192801, 10.437176, 10.580000 +3.533333, 30.391604, 10.437176, 10.580000 +3.550000, 30.590407, 10.437176, 10.580000 +3.566667, 30.789211, 10.437176, 10.580000 +3.583333, 30.988014, 10.437176, 10.580000 +3.600000, 31.186817, 10.437176, 10.580000 +3.616667, 31.385621, 10.437176, 10.580000 +3.633333, 31.584424, 10.437176, 10.580000 +3.650000, 31.783227, 10.437176, 10.580000 +3.666667, 31.982031, 10.437176, 10.580000 +3.683333, 32.180834, 10.437176, 10.580000 +3.700000, 32.379637, 10.437176, 10.580000 +3.716667, 32.578441, 10.437176, 10.580000 +3.733333, 32.777244, 10.437176, 10.580000 +3.750000, 32.976048, 10.437176, 10.580000 +3.766667, 33.174851, 10.437176, 10.580000 +3.783333, 33.373654, 10.437176, 10.580000 +3.800000, 33.572458, 10.437176, 10.580000 +3.816667, 33.771261, 10.437176, 10.580000 +3.833333, 33.970064, 10.437176, 10.580000 +3.850000, 34.168868, 10.437176, 10.580000 +3.866667, 34.367671, 10.437176, 10.580000 +3.883333, 34.566474, 10.437176, 10.580000 +3.900000, 34.765278, 10.437176, 10.580000 +3.916667, 34.964081, 10.437176, 10.580000 +3.933333, 35.162884, 10.437176, 10.580000 +3.950000, 35.361688, 10.437176, 10.580000 +3.966667, 35.560491, 10.437176, 10.580000 +3.983333, 35.759295, 10.437176, 10.580000 +4.000000, 35.958098, 10.437176, 10.580000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_3600_bev250_ld1_75kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_3600_bev250_ld1_75kW.csv new file mode 100644 index 0000000..a18d99c --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_3600_bev250_ld1_75kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.119127, 5.360699, 5.412378 +1.016667, 0.252765, 6.013734, 6.072000 +1.033333, 0.386404, 6.013734, 6.072000 +1.050000, 0.520042, 6.013734, 6.072000 +1.066667, 0.653681, 6.013734, 6.072000 +1.083333, 0.787319, 6.013734, 6.072000 +1.100000, 0.920958, 6.013734, 6.072000 +1.116667, 1.054596, 6.013734, 6.072000 +1.133333, 1.188235, 6.013734, 6.072000 +1.150000, 1.321873, 6.013734, 6.072000 +1.166667, 1.455512, 6.013734, 6.072000 +1.183333, 1.589151, 6.013734, 6.072000 +1.200000, 1.722789, 6.013734, 6.072000 +1.216667, 1.856428, 6.013734, 6.072000 +1.233333, 1.990066, 6.013734, 6.072000 +1.250000, 2.123705, 6.013734, 6.072000 +1.266667, 2.257343, 6.013734, 6.072000 +1.283333, 2.390982, 6.013734, 6.072000 +1.300000, 2.524620, 6.013734, 6.072000 +1.316667, 2.658259, 6.013734, 6.072000 +1.333333, 2.791897, 6.013734, 6.072000 +1.350000, 2.925536, 6.013734, 6.072000 +1.366667, 3.059174, 6.013734, 6.072000 +1.383333, 3.192813, 6.013734, 6.072000 +1.400000, 3.326451, 6.013734, 6.072000 +1.416667, 3.460090, 6.013734, 6.072000 +1.433333, 3.593729, 6.013734, 6.072000 +1.450000, 3.727367, 6.013734, 6.072000 +1.466667, 3.861006, 6.013734, 6.072000 +1.483333, 3.994644, 6.013734, 6.072000 +1.500000, 4.128283, 6.013734, 6.072000 +1.516667, 4.261921, 6.013734, 6.072000 +1.533333, 4.395560, 6.013734, 6.072000 +1.550000, 4.529198, 6.013734, 6.072000 +1.566667, 4.662837, 6.013734, 6.072000 +1.583333, 4.796475, 6.013734, 6.072000 +1.600000, 4.930114, 6.013734, 6.072000 +1.616667, 5.063752, 6.013734, 6.072000 +1.633333, 5.197391, 6.013734, 6.072000 +1.650000, 5.331029, 6.013734, 6.072000 +1.666667, 5.464668, 6.013734, 6.072000 +1.683333, 5.598307, 6.013734, 6.072000 +1.700000, 5.731945, 6.013734, 6.072000 +1.716667, 5.865584, 6.013734, 6.072000 +1.733333, 5.999222, 6.013734, 6.072000 +1.750000, 6.132861, 6.013734, 6.072000 +1.766667, 6.266499, 6.013734, 6.072000 +1.783333, 6.400138, 6.013734, 6.072000 +1.800000, 6.533776, 6.013734, 6.072000 +1.816667, 6.667415, 6.013734, 6.072000 +1.833333, 6.801053, 6.013734, 6.072000 +1.850000, 6.934692, 6.013734, 6.072000 +1.866667, 7.068330, 6.013734, 6.072000 +1.883333, 7.201969, 6.013734, 6.072000 +1.900000, 7.335607, 6.013734, 6.072000 +1.916667, 7.469246, 6.013734, 6.072000 +1.933333, 7.602884, 6.013734, 6.072000 +1.950000, 7.736523, 6.013734, 6.072000 +1.966667, 7.870162, 6.013734, 6.072000 +1.983333, 8.003800, 6.013734, 6.072000 +2.000000, 8.137439, 6.013734, 6.072000 +2.016667, 8.271077, 6.013734, 6.072000 +2.033333, 8.404716, 6.013734, 6.072000 +2.050000, 8.538354, 6.013734, 6.072000 +2.066667, 8.671993, 6.013734, 6.072000 +2.083333, 8.805631, 6.013734, 6.072000 +2.100000, 8.939270, 6.013734, 6.072000 +2.116667, 9.072908, 6.013734, 6.072000 +2.133333, 9.206547, 6.013734, 6.072000 +2.150000, 9.340185, 6.013734, 6.072000 +2.166667, 9.473824, 6.013734, 6.072000 +2.183333, 9.607462, 6.013734, 6.072000 +2.200000, 9.741101, 6.013734, 6.072000 +2.216667, 9.874740, 6.013734, 6.072000 +2.233333, 10.008378, 6.013734, 6.072000 +2.250000, 10.142017, 6.013734, 6.072000 +2.266667, 10.275655, 6.013734, 6.072000 +2.283333, 10.409294, 6.013734, 6.072000 +2.300000, 10.542932, 6.013734, 6.072000 +2.316667, 10.676571, 6.013734, 6.072000 +2.333333, 10.810209, 6.013734, 6.072000 +2.350000, 10.943848, 6.013734, 6.072000 +2.366667, 11.077486, 6.013734, 6.072000 +2.383333, 11.211125, 6.013734, 6.072000 +2.400000, 11.344763, 6.013734, 6.072000 +2.416667, 11.478402, 6.013734, 6.072000 +2.433333, 11.612040, 6.013734, 6.072000 +2.450000, 11.745679, 6.013734, 6.072000 +2.466667, 11.879318, 6.013734, 6.072000 +2.483333, 12.012956, 6.013734, 6.072000 +2.500000, 12.146595, 6.013734, 6.072000 +2.516667, 12.280233, 6.013734, 6.072000 +2.533333, 12.413872, 6.013734, 6.072000 +2.550000, 12.547510, 6.013734, 6.072000 +2.566667, 12.681149, 6.013734, 6.072000 +2.583333, 12.814787, 6.013734, 6.072000 +2.600000, 12.948426, 6.013734, 6.072000 +2.616667, 13.082064, 6.013734, 6.072000 +2.633333, 13.215703, 6.013734, 6.072000 +2.650000, 13.349341, 6.013734, 6.072000 +2.666667, 13.482980, 6.013734, 6.072000 +2.683333, 13.616618, 6.013734, 6.072000 +2.700000, 13.750257, 6.013734, 6.072000 +2.716667, 13.883896, 6.013734, 6.072000 +2.733333, 14.017534, 6.013734, 6.072000 +2.750000, 14.151173, 6.013734, 6.072000 +2.766667, 14.284811, 6.013734, 6.072000 +2.783333, 14.418450, 6.013734, 6.072000 +2.800000, 14.552088, 6.013734, 6.072000 +2.816667, 14.685727, 6.013734, 6.072000 +2.833333, 14.819365, 6.013734, 6.072000 +2.850000, 14.953004, 6.013734, 6.072000 +2.866667, 15.086642, 6.013734, 6.072000 +2.883333, 15.220281, 6.013734, 6.072000 +2.900000, 15.353919, 6.013734, 6.072000 +2.916667, 15.487558, 6.013734, 6.072000 +2.933333, 15.621196, 6.013734, 6.072000 +2.950000, 15.754835, 6.013734, 6.072000 +2.966667, 15.888474, 6.013734, 6.072000 +2.983333, 16.022112, 6.013734, 6.072000 +3.000000, 16.155751, 6.013734, 6.072000 +3.016667, 16.289389, 6.013734, 6.072000 +3.033333, 16.423028, 6.013734, 6.072000 +3.050000, 16.556666, 6.013734, 6.072000 +3.066667, 16.690305, 6.013734, 6.072000 +3.083333, 16.823943, 6.013734, 6.072000 +3.100000, 16.957582, 6.013734, 6.072000 +3.116667, 17.091220, 6.013734, 6.072000 +3.133333, 17.224859, 6.013734, 6.072000 +3.150000, 17.358497, 6.013734, 6.072000 +3.166667, 17.492136, 6.013734, 6.072000 +3.183333, 17.625774, 6.013734, 6.072000 +3.200000, 17.759413, 6.013734, 6.072000 +3.216667, 17.893052, 6.013734, 6.072000 +3.233333, 18.026690, 6.013734, 6.072000 +3.250000, 18.160329, 6.013734, 6.072000 +3.266667, 18.293967, 6.013734, 6.072000 +3.283333, 18.427606, 6.013734, 6.072000 +3.300000, 18.561244, 6.013734, 6.072000 +3.316667, 18.694883, 6.013734, 6.072000 +3.333333, 18.828521, 6.013734, 6.072000 +3.350000, 18.962160, 6.013734, 6.072000 +3.366667, 19.095798, 6.013734, 6.072000 +3.383333, 19.229437, 6.013734, 6.072000 +3.400000, 19.363075, 6.013734, 6.072000 +3.416667, 19.496714, 6.013734, 6.072000 +3.433333, 19.630352, 6.013734, 6.072000 +3.450000, 19.763991, 6.013734, 6.072000 +3.466667, 19.897630, 6.013734, 6.072000 +3.483333, 20.031268, 6.013734, 6.072000 +3.500000, 20.164907, 6.013734, 6.072000 +3.516667, 20.298545, 6.013734, 6.072000 +3.533333, 20.432184, 6.013734, 6.072000 +3.550000, 20.565822, 6.013734, 6.072000 +3.566667, 20.699461, 6.013734, 6.072000 +3.583333, 20.833099, 6.013734, 6.072000 +3.600000, 20.966738, 6.013734, 6.072000 +3.616667, 21.100376, 6.013734, 6.072000 +3.633333, 21.234015, 6.013734, 6.072000 +3.650000, 21.367653, 6.013734, 6.072000 +3.666667, 21.501292, 6.013734, 6.072000 +3.683333, 21.634930, 6.013734, 6.072000 +3.700000, 21.768569, 6.013734, 6.072000 +3.716667, 21.902208, 6.013734, 6.072000 +3.733333, 22.035846, 6.013734, 6.072000 +3.750000, 22.169485, 6.013734, 6.072000 +3.766667, 22.303123, 6.013734, 6.072000 +3.783333, 22.436762, 6.013734, 6.072000 +3.800000, 22.570400, 6.013734, 6.072000 +3.816667, 22.704039, 6.013734, 6.072000 +3.833333, 22.837677, 6.013734, 6.072000 +3.850000, 22.971316, 6.013734, 6.072000 +3.866667, 23.104954, 6.013734, 6.072000 +3.883333, 23.238593, 6.013734, 6.072000 +3.900000, 23.372231, 6.013734, 6.072000 +3.916667, 23.505870, 6.013734, 6.072000 +3.933333, 23.639508, 6.013734, 6.072000 +3.950000, 23.773147, 6.013734, 6.072000 +3.966667, 23.906786, 6.013734, 6.072000 +3.983333, 24.040424, 6.013734, 6.072000 +4.000000, 24.174063, 6.013734, 6.072000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_3600_bev250_ld2_300kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_3600_bev250_ld2_300kW.csv new file mode 100644 index 0000000..542a53b --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_3600_bev250_ld2_300kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.173147, 9.142152, 9.231932 +1.016667, 0.371560, 10.476237, 10.580000 +1.033333, 0.569974, 10.476237, 10.580000 +1.050000, 0.768388, 10.476237, 10.580000 +1.066667, 0.966801, 10.476237, 10.580000 +1.083333, 1.165215, 10.476237, 10.580000 +1.100000, 1.363628, 10.476237, 10.580000 +1.116667, 1.562042, 10.476237, 10.580000 +1.133333, 1.760455, 10.476237, 10.580000 +1.150000, 1.958869, 10.476237, 10.580000 +1.166667, 2.157283, 10.476237, 10.580000 +1.183333, 2.355696, 10.476237, 10.580000 +1.200000, 2.554110, 10.476237, 10.580000 +1.216667, 2.752523, 10.476237, 10.580000 +1.233333, 2.950937, 10.476237, 10.580000 +1.250000, 3.149350, 10.476237, 10.580000 +1.266667, 3.347764, 10.476237, 10.580000 +1.283333, 3.546178, 10.476237, 10.580000 +1.300000, 3.744591, 10.476237, 10.580000 +1.316667, 3.943005, 10.476237, 10.580000 +1.333333, 4.141418, 10.476237, 10.580000 +1.350000, 4.339832, 10.476237, 10.580000 +1.366667, 4.538245, 10.476237, 10.580000 +1.383333, 4.736659, 10.476237, 10.580000 +1.400000, 4.935073, 10.476237, 10.580000 +1.416667, 5.133486, 10.476237, 10.580000 +1.433333, 5.331900, 10.476237, 10.580000 +1.450000, 5.530313, 10.476237, 10.580000 +1.466667, 5.728727, 10.476237, 10.580000 +1.483333, 5.927140, 10.476237, 10.580000 +1.500000, 6.125554, 10.476237, 10.580000 +1.516667, 6.323968, 10.476237, 10.580000 +1.533333, 6.522381, 10.476237, 10.580000 +1.550000, 6.720795, 10.476237, 10.580000 +1.566667, 6.919208, 10.476237, 10.580000 +1.583333, 7.117622, 10.476237, 10.580000 +1.600000, 7.316036, 10.476237, 10.580000 +1.616667, 7.514449, 10.476237, 10.580000 +1.633333, 7.712863, 10.476237, 10.580000 +1.650000, 7.911276, 10.476237, 10.580000 +1.666667, 8.109690, 10.476237, 10.580000 +1.683333, 8.308103, 10.476237, 10.580000 +1.700000, 8.506517, 10.476237, 10.580000 +1.716667, 8.704931, 10.476237, 10.580000 +1.733333, 8.903344, 10.476237, 10.580000 +1.750000, 9.101758, 10.476237, 10.580000 +1.766667, 9.300171, 10.476237, 10.580000 +1.783333, 9.498585, 10.476237, 10.580000 +1.800000, 9.696998, 10.476237, 10.580000 +1.816667, 9.895412, 10.476237, 10.580000 +1.833333, 10.093826, 10.476237, 10.580000 +1.850000, 10.292239, 10.476237, 10.580000 +1.866667, 10.490653, 10.476237, 10.580000 +1.883333, 10.689066, 10.476237, 10.580000 +1.900000, 10.887480, 10.476237, 10.580000 +1.916667, 11.085893, 10.476237, 10.580000 +1.933333, 11.284307, 10.476237, 10.580000 +1.950000, 11.482721, 10.476237, 10.580000 +1.966667, 11.681134, 10.476237, 10.580000 +1.983333, 11.879548, 10.476237, 10.580000 +2.000000, 12.077961, 10.476237, 10.580000 +2.016667, 12.276375, 10.476237, 10.580000 +2.033333, 12.474788, 10.476237, 10.580000 +2.050000, 12.673202, 10.476237, 10.580000 +2.066667, 12.871616, 10.476237, 10.580000 +2.083333, 13.070029, 10.476237, 10.580000 +2.100000, 13.268443, 10.476237, 10.580000 +2.116667, 13.466856, 10.476237, 10.580000 +2.133333, 13.665270, 10.476237, 10.580000 +2.150000, 13.863683, 10.476237, 10.580000 +2.166667, 14.062097, 10.476237, 10.580000 +2.183333, 14.260511, 10.476237, 10.580000 +2.200000, 14.458924, 10.476237, 10.580000 +2.216667, 14.657338, 10.476237, 10.580000 +2.233333, 14.855751, 10.476237, 10.580000 +2.250000, 15.054165, 10.476237, 10.580000 +2.266667, 15.252579, 10.476237, 10.580000 +2.283333, 15.450992, 10.476237, 10.580000 +2.300000, 15.649406, 10.476237, 10.580000 +2.316667, 15.847819, 10.476237, 10.580000 +2.333333, 16.046233, 10.476237, 10.580000 +2.350000, 16.244646, 10.476237, 10.580000 +2.366667, 16.443060, 10.476237, 10.580000 +2.383333, 16.641474, 10.476237, 10.580000 +2.400000, 16.839887, 10.476237, 10.580000 +2.416667, 17.038301, 10.476237, 10.580000 +2.433333, 17.236714, 10.476237, 10.580000 +2.450000, 17.435128, 10.476237, 10.580000 +2.466667, 17.633541, 10.476237, 10.580000 +2.483333, 17.831955, 10.476237, 10.580000 +2.500000, 18.030369, 10.476237, 10.580000 +2.516667, 18.228782, 10.476237, 10.580000 +2.533333, 18.427196, 10.476237, 10.580000 +2.550000, 18.625609, 10.476237, 10.580000 +2.566667, 18.824023, 10.476237, 10.580000 +2.583333, 19.022436, 10.476237, 10.580000 +2.600000, 19.220850, 10.476237, 10.580000 +2.616667, 19.419264, 10.476237, 10.580000 +2.633333, 19.617677, 10.476237, 10.580000 +2.650000, 19.816091, 10.476237, 10.580000 +2.666667, 20.014504, 10.476237, 10.580000 +2.683333, 20.212918, 10.476237, 10.580000 +2.700000, 20.411331, 10.476237, 10.580000 +2.716667, 20.609745, 10.476237, 10.580000 +2.733333, 20.808159, 10.476237, 10.580000 +2.750000, 21.006572, 10.476237, 10.580000 +2.766667, 21.204986, 10.476237, 10.580000 +2.783333, 21.403399, 10.476237, 10.580000 +2.800000, 21.601813, 10.476237, 10.580000 +2.816667, 21.800227, 10.476237, 10.580000 +2.833333, 21.998640, 10.476237, 10.580000 +2.850000, 22.197054, 10.476237, 10.580000 +2.866667, 22.395467, 10.476237, 10.580000 +2.883333, 22.593881, 10.476237, 10.580000 +2.900000, 22.792294, 10.476237, 10.580000 +2.916667, 22.990708, 10.476237, 10.580000 +2.933333, 23.189122, 10.476237, 10.580000 +2.950000, 23.387535, 10.476237, 10.580000 +2.966667, 23.585949, 10.476237, 10.580000 +2.983333, 23.784362, 10.476237, 10.580000 +3.000000, 23.982776, 10.476237, 10.580000 +3.016667, 24.181189, 10.476237, 10.580000 +3.033333, 24.379603, 10.476237, 10.580000 +3.050000, 24.578017, 10.476237, 10.580000 +3.066667, 24.776430, 10.476237, 10.580000 +3.083333, 24.974844, 10.476237, 10.580000 +3.100000, 25.173257, 10.476237, 10.580000 +3.116667, 25.371671, 10.476237, 10.580000 +3.133333, 25.570084, 10.476237, 10.580000 +3.150000, 25.768498, 10.476237, 10.580000 +3.166667, 25.966912, 10.476237, 10.580000 +3.183333, 26.165325, 10.476237, 10.580000 +3.200000, 26.363739, 10.476237, 10.580000 +3.216667, 26.562152, 10.476237, 10.580000 +3.233333, 26.760566, 10.476237, 10.580000 +3.250000, 26.958979, 10.476237, 10.580000 +3.266667, 27.157393, 10.476237, 10.580000 +3.283333, 27.355807, 10.476237, 10.580000 +3.300000, 27.554220, 10.476237, 10.580000 +3.316667, 27.752634, 10.476237, 10.580000 +3.333333, 27.951047, 10.476237, 10.580000 +3.350000, 28.149461, 10.476237, 10.580000 +3.366667, 28.347874, 10.476237, 10.580000 +3.383333, 28.546288, 10.476237, 10.580000 +3.400000, 28.744702, 10.476237, 10.580000 +3.416667, 28.943115, 10.476237, 10.580000 +3.433333, 29.141529, 10.476237, 10.580000 +3.450000, 29.339942, 10.476237, 10.580000 +3.466667, 29.538356, 10.476237, 10.580000 +3.483333, 29.736770, 10.476237, 10.580000 +3.500000, 29.935183, 10.476237, 10.580000 +3.516667, 30.133597, 10.476237, 10.580000 +3.533333, 30.332010, 10.476237, 10.580000 +3.550000, 30.530424, 10.476237, 10.580000 +3.566667, 30.728837, 10.476237, 10.580000 +3.583333, 30.927251, 10.476237, 10.580000 +3.600000, 31.125665, 10.476237, 10.580000 +3.616667, 31.324078, 10.476237, 10.580000 +3.633333, 31.522492, 10.476237, 10.580000 +3.650000, 31.720905, 10.476237, 10.580000 +3.666667, 31.919319, 10.476237, 10.580000 +3.683333, 32.117732, 10.476237, 10.580000 +3.700000, 32.316146, 10.476237, 10.580000 +3.716667, 32.514560, 10.476237, 10.580000 +3.733333, 32.712973, 10.476237, 10.580000 +3.750000, 32.911387, 10.476237, 10.580000 +3.766667, 33.109800, 10.476237, 10.580000 +3.783333, 33.308214, 10.476237, 10.580000 +3.800000, 33.506627, 10.476237, 10.580000 +3.816667, 33.705041, 10.476237, 10.580000 +3.833333, 33.903455, 10.476237, 10.580000 +3.850000, 34.101868, 10.476237, 10.580000 +3.866667, 34.300282, 10.476237, 10.580000 +3.883333, 34.498695, 10.476237, 10.580000 +3.900000, 34.697109, 10.476237, 10.580000 +3.916667, 34.895522, 10.476237, 10.580000 +3.933333, 35.093936, 10.476237, 10.580000 +3.950000, 35.292350, 10.476237, 10.580000 +3.966667, 35.490763, 10.476237, 10.580000 +3.983333, 35.689177, 10.476237, 10.580000 +4.000000, 35.887590, 10.476237, 10.580000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_3600_bev275_ld1_150kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_3600_bev275_ld1_150kW.csv new file mode 100644 index 0000000..8662074 --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_3600_bev275_ld1_150kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.154536, 7.695883, 7.770982 +1.016667, 0.330159, 8.746038, 8.832000 +1.033333, 0.505782, 8.746038, 8.832000 +1.050000, 0.681406, 8.746038, 8.832000 +1.066667, 0.857029, 8.746038, 8.832000 +1.083333, 1.032652, 8.746038, 8.832000 +1.100000, 1.208275, 8.746038, 8.832000 +1.116667, 1.383899, 8.746038, 8.832000 +1.133333, 1.559522, 8.746038, 8.832000 +1.150000, 1.735145, 8.746038, 8.832000 +1.166667, 1.910768, 8.746038, 8.832000 +1.183333, 2.086392, 8.746038, 8.832000 +1.200000, 2.262015, 8.746038, 8.832000 +1.216667, 2.437638, 8.746038, 8.832000 +1.233333, 2.613261, 8.746038, 8.832000 +1.250000, 2.788885, 8.746038, 8.832000 +1.266667, 2.964508, 8.746038, 8.832000 +1.283333, 3.140131, 8.746038, 8.832000 +1.300000, 3.315754, 8.746038, 8.832000 +1.316667, 3.491378, 8.746038, 8.832000 +1.333333, 3.667001, 8.746038, 8.832000 +1.350000, 3.842624, 8.746038, 8.832000 +1.366667, 4.018247, 8.746038, 8.832000 +1.383333, 4.193871, 8.746038, 8.832000 +1.400000, 4.369494, 8.746038, 8.832000 +1.416667, 4.545117, 8.746038, 8.832000 +1.433333, 4.720740, 8.746038, 8.832000 +1.450000, 4.896364, 8.746038, 8.832000 +1.466667, 5.071987, 8.746038, 8.832000 +1.483333, 5.247610, 8.746038, 8.832000 +1.500000, 5.423233, 8.746038, 8.832000 +1.516667, 5.598857, 8.746038, 8.832000 +1.533333, 5.774480, 8.746038, 8.832000 +1.550000, 5.950103, 8.746038, 8.832000 +1.566667, 6.125726, 8.746038, 8.832000 +1.583333, 6.301350, 8.746038, 8.832000 +1.600000, 6.476973, 8.746038, 8.832000 +1.616667, 6.652596, 8.746038, 8.832000 +1.633333, 6.828219, 8.746038, 8.832000 +1.650000, 7.003843, 8.746038, 8.832000 +1.666667, 7.179466, 8.746038, 8.832000 +1.683333, 7.355089, 8.746038, 8.832000 +1.700000, 7.530712, 8.746038, 8.832000 +1.716667, 7.706336, 8.746038, 8.832000 +1.733333, 7.881959, 8.746038, 8.832000 +1.750000, 8.057582, 8.746038, 8.832000 +1.766667, 8.233205, 8.746038, 8.832000 +1.783333, 8.408829, 8.746038, 8.832000 +1.800000, 8.584452, 8.746038, 8.832000 +1.816667, 8.760075, 8.746038, 8.832000 +1.833333, 8.935698, 8.746038, 8.832000 +1.850000, 9.111322, 8.746038, 8.832000 +1.866667, 9.286945, 8.746038, 8.832000 +1.883333, 9.462568, 8.746038, 8.832000 +1.900000, 9.638191, 8.746038, 8.832000 +1.916667, 9.813815, 8.746038, 8.832000 +1.933333, 9.989438, 8.746038, 8.832000 +1.950000, 10.165061, 8.746038, 8.832000 +1.966667, 10.340684, 8.746038, 8.832000 +1.983333, 10.516308, 8.746038, 8.832000 +2.000000, 10.691931, 8.746038, 8.832000 +2.016667, 10.867554, 8.746038, 8.832000 +2.033333, 11.043177, 8.746038, 8.832000 +2.050000, 11.218801, 8.746038, 8.832000 +2.066667, 11.394424, 8.746038, 8.832000 +2.083333, 11.570047, 8.746038, 8.832000 +2.100000, 11.745670, 8.746038, 8.832000 +2.116667, 11.921294, 8.746038, 8.832000 +2.133333, 12.096917, 8.746038, 8.832000 +2.150000, 12.272540, 8.746038, 8.832000 +2.166667, 12.448164, 8.746038, 8.832000 +2.183333, 12.623787, 8.746038, 8.832000 +2.200000, 12.799410, 8.746038, 8.832000 +2.216667, 12.975033, 8.746038, 8.832000 +2.233333, 13.150657, 8.746038, 8.832000 +2.250000, 13.326280, 8.746038, 8.832000 +2.266667, 13.501903, 8.746038, 8.832000 +2.283333, 13.677526, 8.746038, 8.832000 +2.300000, 13.853150, 8.746038, 8.832000 +2.316667, 14.028773, 8.746038, 8.832000 +2.333333, 14.204396, 8.746038, 8.832000 +2.350000, 14.380019, 8.746038, 8.832000 +2.366667, 14.555643, 8.746038, 8.832000 +2.383333, 14.731266, 8.746038, 8.832000 +2.400000, 14.906889, 8.746038, 8.832000 +2.416667, 15.082512, 8.746038, 8.832000 +2.433333, 15.258136, 8.746038, 8.832000 +2.450000, 15.433759, 8.746038, 8.832000 +2.466667, 15.609382, 8.746038, 8.832000 +2.483333, 15.785005, 8.746038, 8.832000 +2.500000, 15.960629, 8.746038, 8.832000 +2.516667, 16.136252, 8.746038, 8.832000 +2.533333, 16.311875, 8.746038, 8.832000 +2.550000, 16.487498, 8.746038, 8.832000 +2.566667, 16.663122, 8.746038, 8.832000 +2.583333, 16.838745, 8.746038, 8.832000 +2.600000, 17.014368, 8.746038, 8.832000 +2.616667, 17.189991, 8.746038, 8.832000 +2.633333, 17.365615, 8.746038, 8.832000 +2.650000, 17.541238, 8.746038, 8.832000 +2.666667, 17.716861, 8.746038, 8.832000 +2.683333, 17.892484, 8.746038, 8.832000 +2.700000, 18.068108, 8.746038, 8.832000 +2.716667, 18.243731, 8.746038, 8.832000 +2.733333, 18.419354, 8.746038, 8.832000 +2.750000, 18.594977, 8.746038, 8.832000 +2.766667, 18.770601, 8.746038, 8.832000 +2.783333, 18.946224, 8.746038, 8.832000 +2.800000, 19.121847, 8.746038, 8.832000 +2.816667, 19.297470, 8.746038, 8.832000 +2.833333, 19.473094, 8.746038, 8.832000 +2.850000, 19.648717, 8.746038, 8.832000 +2.866667, 19.824340, 8.746038, 8.832000 +2.883333, 19.999963, 8.746038, 8.832000 +2.900000, 20.175587, 8.746038, 8.832000 +2.916667, 20.351210, 8.746038, 8.832000 +2.933333, 20.526833, 8.746038, 8.832000 +2.950000, 20.702456, 8.746038, 8.832000 +2.966667, 20.878080, 8.746038, 8.832000 +2.983333, 21.053703, 8.746038, 8.832000 +3.000000, 21.229326, 8.746038, 8.832000 +3.016667, 21.404949, 8.746038, 8.832000 +3.033333, 21.580573, 8.746038, 8.832000 +3.050000, 21.756196, 8.746038, 8.832000 +3.066667, 21.931819, 8.746038, 8.832000 +3.083333, 22.107442, 8.746038, 8.832000 +3.100000, 22.283066, 8.746038, 8.832000 +3.116667, 22.458689, 8.746038, 8.832000 +3.133333, 22.634312, 8.746038, 8.832000 +3.150000, 22.809935, 8.746038, 8.832000 +3.166667, 22.985559, 8.746038, 8.832000 +3.183333, 23.161182, 8.746038, 8.832000 +3.200000, 23.336805, 8.746038, 8.832000 +3.216667, 23.512428, 8.746038, 8.832000 +3.233333, 23.688052, 8.746038, 8.832000 +3.250000, 23.863675, 8.746038, 8.832000 +3.266667, 24.039298, 8.746038, 8.832000 +3.283333, 24.214921, 8.746038, 8.832000 +3.300000, 24.390545, 8.746038, 8.832000 +3.316667, 24.566168, 8.746038, 8.832000 +3.333333, 24.741791, 8.746038, 8.832000 +3.350000, 24.917414, 8.746038, 8.832000 +3.366667, 25.093038, 8.746038, 8.832000 +3.383333, 25.268661, 8.746038, 8.832000 +3.400000, 25.444284, 8.746038, 8.832000 +3.416667, 25.619907, 8.746038, 8.832000 +3.433333, 25.795531, 8.746038, 8.832000 +3.450000, 25.971154, 8.746038, 8.832000 +3.466667, 26.146777, 8.746038, 8.832000 +3.483333, 26.322401, 8.746038, 8.832000 +3.500000, 26.498024, 8.746038, 8.832000 +3.516667, 26.673647, 8.746038, 8.832000 +3.533333, 26.849270, 8.746038, 8.832000 +3.550000, 27.024894, 8.746038, 8.832000 +3.566667, 27.200517, 8.746038, 8.832000 +3.583333, 27.376140, 8.746038, 8.832000 +3.600000, 27.551763, 8.746038, 8.832000 +3.616667, 27.727387, 8.746038, 8.832000 +3.633333, 27.903010, 8.746038, 8.832000 +3.650000, 28.078633, 8.746038, 8.832000 +3.666667, 28.254256, 8.746038, 8.832000 +3.683333, 28.429880, 8.746038, 8.832000 +3.700000, 28.605503, 8.746038, 8.832000 +3.716667, 28.781126, 8.746038, 8.832000 +3.733333, 28.956749, 8.746038, 8.832000 +3.750000, 29.132373, 8.746038, 8.832000 +3.766667, 29.307996, 8.746038, 8.832000 +3.783333, 29.483619, 8.746038, 8.832000 +3.800000, 29.659242, 8.746038, 8.832000 +3.816667, 29.834866, 8.746038, 8.832000 +3.833333, 30.010489, 8.746038, 8.832000 +3.850000, 30.186112, 8.746038, 8.832000 +3.866667, 30.361735, 8.746038, 8.832000 +3.883333, 30.537359, 8.746038, 8.832000 +3.900000, 30.712982, 8.746038, 8.832000 +3.916667, 30.888605, 8.746038, 8.832000 +3.933333, 31.064228, 8.746038, 8.832000 +3.950000, 31.239852, 8.746038, 8.832000 +3.966667, 31.415475, 8.746038, 8.832000 +3.983333, 31.591098, 8.746038, 8.832000 +4.000000, 31.766721, 8.746038, 8.832000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_3600_bev300_300kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_3600_bev300_300kW.csv new file mode 100644 index 0000000..e9b79da --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_3600_bev300_300kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.156285, 9.142660, 9.231932 +1.016667, 0.335377, 10.476905, 10.580000 +1.033333, 0.514470, 10.476905, 10.580000 +1.050000, 0.693562, 10.476905, 10.580000 +1.066667, 0.872654, 10.476905, 10.580000 +1.083333, 1.051747, 10.476905, 10.580000 +1.100000, 1.230839, 10.476905, 10.580000 +1.116667, 1.409932, 10.476905, 10.580000 +1.133333, 1.589024, 10.476905, 10.580000 +1.150000, 1.768116, 10.476905, 10.580000 +1.166667, 1.947209, 10.476905, 10.580000 +1.183333, 2.126301, 10.476905, 10.580000 +1.200000, 2.305393, 10.476905, 10.580000 +1.216667, 2.484486, 10.476905, 10.580000 +1.233333, 2.663578, 10.476905, 10.580000 +1.250000, 2.842671, 10.476905, 10.580000 +1.266667, 3.021763, 10.476905, 10.580000 +1.283333, 3.200855, 10.476905, 10.580000 +1.300000, 3.379948, 10.476905, 10.580000 +1.316667, 3.559040, 10.476905, 10.580000 +1.333333, 3.738133, 10.476905, 10.580000 +1.350000, 3.917225, 10.476905, 10.580000 +1.366667, 4.096317, 10.476905, 10.580000 +1.383333, 4.275410, 10.476905, 10.580000 +1.400000, 4.454502, 10.476905, 10.580000 +1.416667, 4.633595, 10.476905, 10.580000 +1.433333, 4.812687, 10.476905, 10.580000 +1.450000, 4.991779, 10.476905, 10.580000 +1.466667, 5.170872, 10.476905, 10.580000 +1.483333, 5.349964, 10.476905, 10.580000 +1.500000, 5.529056, 10.476905, 10.580000 +1.516667, 5.708149, 10.476905, 10.580000 +1.533333, 5.887241, 10.476905, 10.580000 +1.550000, 6.066334, 10.476905, 10.580000 +1.566667, 6.245426, 10.476905, 10.580000 +1.583333, 6.424518, 10.476905, 10.580000 +1.600000, 6.603611, 10.476905, 10.580000 +1.616667, 6.782703, 10.476905, 10.580000 +1.633333, 6.961796, 10.476905, 10.580000 +1.650000, 7.140888, 10.476905, 10.580000 +1.666667, 7.319980, 10.476905, 10.580000 +1.683333, 7.499073, 10.476905, 10.580000 +1.700000, 7.678165, 10.476905, 10.580000 +1.716667, 7.857258, 10.476905, 10.580000 +1.733333, 8.036350, 10.476905, 10.580000 +1.750000, 8.215442, 10.476905, 10.580000 +1.766667, 8.394535, 10.476905, 10.580000 +1.783333, 8.573627, 10.476905, 10.580000 +1.800000, 8.752719, 10.476905, 10.580000 +1.816667, 8.931812, 10.476905, 10.580000 +1.833333, 9.110904, 10.476905, 10.580000 +1.850000, 9.289997, 10.476905, 10.580000 +1.866667, 9.469089, 10.476905, 10.580000 +1.883333, 9.648181, 10.476905, 10.580000 +1.900000, 9.827274, 10.476905, 10.580000 +1.916667, 10.006366, 10.476905, 10.580000 +1.933333, 10.185459, 10.476905, 10.580000 +1.950000, 10.364551, 10.476905, 10.580000 +1.966667, 10.543643, 10.476905, 10.580000 +1.983333, 10.722736, 10.476905, 10.580000 +2.000000, 10.901828, 10.476905, 10.580000 +2.016667, 11.080921, 10.476905, 10.580000 +2.033333, 11.260013, 10.476905, 10.580000 +2.050000, 11.439105, 10.476905, 10.580000 +2.066667, 11.618198, 10.476905, 10.580000 +2.083333, 11.797290, 10.476905, 10.580000 +2.100000, 11.976382, 10.476905, 10.580000 +2.116667, 12.155475, 10.476905, 10.580000 +2.133333, 12.334567, 10.476905, 10.580000 +2.150000, 12.513660, 10.476905, 10.580000 +2.166667, 12.692752, 10.476905, 10.580000 +2.183333, 12.871844, 10.476905, 10.580000 +2.200000, 13.050937, 10.476905, 10.580000 +2.216667, 13.230029, 10.476905, 10.580000 +2.233333, 13.409122, 10.476905, 10.580000 +2.250000, 13.588214, 10.476905, 10.580000 +2.266667, 13.767306, 10.476905, 10.580000 +2.283333, 13.946399, 10.476905, 10.580000 +2.300000, 14.125491, 10.476905, 10.580000 +2.316667, 14.304584, 10.476905, 10.580000 +2.333333, 14.483676, 10.476905, 10.580000 +2.350000, 14.662768, 10.476905, 10.580000 +2.366667, 14.841861, 10.476905, 10.580000 +2.383333, 15.020953, 10.476905, 10.580000 +2.400000, 15.200045, 10.476905, 10.580000 +2.416667, 15.379138, 10.476905, 10.580000 +2.433333, 15.558230, 10.476905, 10.580000 +2.450000, 15.737323, 10.476905, 10.580000 +2.466667, 15.916415, 10.476905, 10.580000 +2.483333, 16.095507, 10.476905, 10.580000 +2.500000, 16.274600, 10.476905, 10.580000 +2.516667, 16.453692, 10.476905, 10.580000 +2.533333, 16.632785, 10.476905, 10.580000 +2.550000, 16.811877, 10.476905, 10.580000 +2.566667, 16.990969, 10.476905, 10.580000 +2.583333, 17.170062, 10.476905, 10.580000 +2.600000, 17.349154, 10.476905, 10.580000 +2.616667, 17.528247, 10.476905, 10.580000 +2.633333, 17.707339, 10.476905, 10.580000 +2.650000, 17.886431, 10.476905, 10.580000 +2.666667, 18.065524, 10.476905, 10.580000 +2.683333, 18.244616, 10.476905, 10.580000 +2.700000, 18.423708, 10.476905, 10.580000 +2.716667, 18.602801, 10.476905, 10.580000 +2.733333, 18.781893, 10.476905, 10.580000 +2.750000, 18.960986, 10.476905, 10.580000 +2.766667, 19.140078, 10.476905, 10.580000 +2.783333, 19.319170, 10.476905, 10.580000 +2.800000, 19.498263, 10.476905, 10.580000 +2.816667, 19.677355, 10.476905, 10.580000 +2.833333, 19.856448, 10.476905, 10.580000 +2.850000, 20.035540, 10.476905, 10.580000 +2.866667, 20.214632, 10.476905, 10.580000 +2.883333, 20.393725, 10.476905, 10.580000 +2.900000, 20.572817, 10.476905, 10.580000 +2.916667, 20.751910, 10.476905, 10.580000 +2.933333, 20.931002, 10.476905, 10.580000 +2.950000, 21.110094, 10.476905, 10.580000 +2.966667, 21.289187, 10.476905, 10.580000 +2.983333, 21.468279, 10.476905, 10.580000 +3.000000, 21.647371, 10.476905, 10.580000 +3.016667, 21.826464, 10.476905, 10.580000 +3.033333, 22.005556, 10.476905, 10.580000 +3.050000, 22.184649, 10.476905, 10.580000 +3.066667, 22.363741, 10.476905, 10.580000 +3.083333, 22.542833, 10.476905, 10.580000 +3.100000, 22.721926, 10.476905, 10.580000 +3.116667, 22.901018, 10.476905, 10.580000 +3.133333, 23.080111, 10.476905, 10.580000 +3.150000, 23.259203, 10.476905, 10.580000 +3.166667, 23.438295, 10.476905, 10.580000 +3.183333, 23.617388, 10.476905, 10.580000 +3.200000, 23.796480, 10.476905, 10.580000 +3.216667, 23.975573, 10.476905, 10.580000 +3.233333, 24.154665, 10.476905, 10.580000 +3.250000, 24.333757, 10.476905, 10.580000 +3.266667, 24.512850, 10.476905, 10.580000 +3.283333, 24.691942, 10.476905, 10.580000 +3.300000, 24.871034, 10.476905, 10.580000 +3.316667, 25.050127, 10.476905, 10.580000 +3.333333, 25.229219, 10.476905, 10.580000 +3.350000, 25.408312, 10.476905, 10.580000 +3.366667, 25.587404, 10.476905, 10.580000 +3.383333, 25.766496, 10.476905, 10.580000 +3.400000, 25.945589, 10.476905, 10.580000 +3.416667, 26.124681, 10.476905, 10.580000 +3.433333, 26.303774, 10.476905, 10.580000 +3.450000, 26.482866, 10.476905, 10.580000 +3.466667, 26.661958, 10.476905, 10.580000 +3.483333, 26.841051, 10.476905, 10.580000 +3.500000, 27.020143, 10.476905, 10.580000 +3.516667, 27.199236, 10.476905, 10.580000 +3.533333, 27.378328, 10.476905, 10.580000 +3.550000, 27.557420, 10.476905, 10.580000 +3.566667, 27.736513, 10.476905, 10.580000 +3.583333, 27.915605, 10.476905, 10.580000 +3.600000, 28.094697, 10.476905, 10.580000 +3.616667, 28.273790, 10.476905, 10.580000 +3.633333, 28.452882, 10.476905, 10.580000 +3.650000, 28.631975, 10.476905, 10.580000 +3.666667, 28.811067, 10.476905, 10.580000 +3.683333, 28.990159, 10.476905, 10.580000 +3.700000, 29.169252, 10.476905, 10.580000 +3.716667, 29.348344, 10.476905, 10.580000 +3.733333, 29.527437, 10.476905, 10.580000 +3.750000, 29.706529, 10.476905, 10.580000 +3.766667, 29.885621, 10.476905, 10.580000 +3.783333, 30.064714, 10.476905, 10.580000 +3.800000, 30.243806, 10.476905, 10.580000 +3.816667, 30.422899, 10.476905, 10.580000 +3.833333, 30.601991, 10.476905, 10.580000 +3.850000, 30.781083, 10.476905, 10.580000 +3.866667, 30.960176, 10.476905, 10.580000 +3.883333, 31.139268, 10.476905, 10.580000 +3.900000, 31.318360, 10.476905, 10.580000 +3.916667, 31.497453, 10.476905, 10.580000 +3.933333, 31.676545, 10.476905, 10.580000 +3.950000, 31.855638, 10.476905, 10.580000 +3.966667, 32.034730, 10.476905, 10.580000 +3.983333, 32.213822, 10.476905, 10.580000 +4.000000, 32.392915, 10.476905, 10.580000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_3600_bev300_400kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_3600_bev300_400kW.csv new file mode 100644 index 0000000..cff4bbb --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_3600_bev300_400kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.155713, 9.109203, 9.231932 +1.016667, 0.334144, 10.438204, 10.580000 +1.033333, 0.512575, 10.438204, 10.580000 +1.050000, 0.691005, 10.438204, 10.580000 +1.066667, 0.869436, 10.438204, 10.580000 +1.083333, 1.047867, 10.438204, 10.580000 +1.100000, 1.226298, 10.438204, 10.580000 +1.116667, 1.404729, 10.438204, 10.580000 +1.133333, 1.583160, 10.438204, 10.580000 +1.150000, 1.761590, 10.438204, 10.580000 +1.166667, 1.940021, 10.438204, 10.580000 +1.183333, 2.118452, 10.438204, 10.580000 +1.200000, 2.296883, 10.438204, 10.580000 +1.216667, 2.475314, 10.438204, 10.580000 +1.233333, 2.653745, 10.438204, 10.580000 +1.250000, 2.832176, 10.438204, 10.580000 +1.266667, 3.010606, 10.438204, 10.580000 +1.283333, 3.189037, 10.438204, 10.580000 +1.300000, 3.367468, 10.438204, 10.580000 +1.316667, 3.545899, 10.438204, 10.580000 +1.333333, 3.724330, 10.438204, 10.580000 +1.350000, 3.902761, 10.438204, 10.580000 +1.366667, 4.081191, 10.438204, 10.580000 +1.383333, 4.259622, 10.438204, 10.580000 +1.400000, 4.438053, 10.438204, 10.580000 +1.416667, 4.616484, 10.438204, 10.580000 +1.433333, 4.794915, 10.438204, 10.580000 +1.450000, 4.973346, 10.438204, 10.580000 +1.466667, 5.151776, 10.438204, 10.580000 +1.483333, 5.330207, 10.438204, 10.580000 +1.500000, 5.508638, 10.438204, 10.580000 +1.516667, 5.687069, 10.438204, 10.580000 +1.533333, 5.865500, 10.438204, 10.580000 +1.550000, 6.043931, 10.438204, 10.580000 +1.566667, 6.222362, 10.438204, 10.580000 +1.583333, 6.400792, 10.438204, 10.580000 +1.600000, 6.579223, 10.438204, 10.580000 +1.616667, 6.757654, 10.438204, 10.580000 +1.633333, 6.936085, 10.438204, 10.580000 +1.650000, 7.114516, 10.438204, 10.580000 +1.666667, 7.292947, 10.438204, 10.580000 +1.683333, 7.471377, 10.438204, 10.580000 +1.700000, 7.649808, 10.438204, 10.580000 +1.716667, 7.828239, 10.438204, 10.580000 +1.733333, 8.006670, 10.438204, 10.580000 +1.750000, 8.185101, 10.438204, 10.580000 +1.766667, 8.363532, 10.438204, 10.580000 +1.783333, 8.541962, 10.438204, 10.580000 +1.800000, 8.720393, 10.438204, 10.580000 +1.816667, 8.898824, 10.438204, 10.580000 +1.833333, 9.077255, 10.438204, 10.580000 +1.850000, 9.255686, 10.438204, 10.580000 +1.866667, 9.434117, 10.438204, 10.580000 +1.883333, 9.612548, 10.438204, 10.580000 +1.900000, 9.790978, 10.438204, 10.580000 +1.916667, 9.969409, 10.438204, 10.580000 +1.933333, 10.147840, 10.438204, 10.580000 +1.950000, 10.326271, 10.438204, 10.580000 +1.966667, 10.504702, 10.438204, 10.580000 +1.983333, 10.683133, 10.438204, 10.580000 +2.000000, 10.861563, 10.438204, 10.580000 +2.016667, 11.039994, 10.438204, 10.580000 +2.033333, 11.218425, 10.438204, 10.580000 +2.050000, 11.396856, 10.438204, 10.580000 +2.066667, 11.575287, 10.438204, 10.580000 +2.083333, 11.753718, 10.438204, 10.580000 +2.100000, 11.932148, 10.438204, 10.580000 +2.116667, 12.110579, 10.438204, 10.580000 +2.133333, 12.289010, 10.438204, 10.580000 +2.150000, 12.467441, 10.438204, 10.580000 +2.166667, 12.645872, 10.438204, 10.580000 +2.183333, 12.824303, 10.438204, 10.580000 +2.200000, 13.002734, 10.438204, 10.580000 +2.216667, 13.181164, 10.438204, 10.580000 +2.233333, 13.359595, 10.438204, 10.580000 +2.250000, 13.538026, 10.438204, 10.580000 +2.266667, 13.716457, 10.438204, 10.580000 +2.283333, 13.894888, 10.438204, 10.580000 +2.300000, 14.073319, 10.438204, 10.580000 +2.316667, 14.251749, 10.438204, 10.580000 +2.333333, 14.430180, 10.438204, 10.580000 +2.350000, 14.608611, 10.438204, 10.580000 +2.366667, 14.787042, 10.438204, 10.580000 +2.383333, 14.965473, 10.438204, 10.580000 +2.400000, 15.143904, 10.438204, 10.580000 +2.416667, 15.322334, 10.438204, 10.580000 +2.433333, 15.500765, 10.438204, 10.580000 +2.450000, 15.679196, 10.438204, 10.580000 +2.466667, 15.857627, 10.438204, 10.580000 +2.483333, 16.036058, 10.438204, 10.580000 +2.500000, 16.214489, 10.438204, 10.580000 +2.516667, 16.392920, 10.438204, 10.580000 +2.533333, 16.571350, 10.438204, 10.580000 +2.550000, 16.749781, 10.438204, 10.580000 +2.566667, 16.928212, 10.438204, 10.580000 +2.583333, 17.106643, 10.438204, 10.580000 +2.600000, 17.285074, 10.438204, 10.580000 +2.616667, 17.463505, 10.438204, 10.580000 +2.633333, 17.641935, 10.438204, 10.580000 +2.650000, 17.820366, 10.438204, 10.580000 +2.666667, 17.998797, 10.438204, 10.580000 +2.683333, 18.177228, 10.438204, 10.580000 +2.700000, 18.355659, 10.438204, 10.580000 +2.716667, 18.534090, 10.438204, 10.580000 +2.733333, 18.712520, 10.438204, 10.580000 +2.750000, 18.890951, 10.438204, 10.580000 +2.766667, 19.069382, 10.438204, 10.580000 +2.783333, 19.247813, 10.438204, 10.580000 +2.800000, 19.426244, 10.438204, 10.580000 +2.816667, 19.604675, 10.438204, 10.580000 +2.833333, 19.783106, 10.438204, 10.580000 +2.850000, 19.961536, 10.438204, 10.580000 +2.866667, 20.139967, 10.438204, 10.580000 +2.883333, 20.318398, 10.438204, 10.580000 +2.900000, 20.496829, 10.438204, 10.580000 +2.916667, 20.675260, 10.438204, 10.580000 +2.933333, 20.853691, 10.438204, 10.580000 +2.950000, 21.032121, 10.438204, 10.580000 +2.966667, 21.210552, 10.438204, 10.580000 +2.983333, 21.388983, 10.438204, 10.580000 +3.000000, 21.567414, 10.438204, 10.580000 +3.016667, 21.745845, 10.438204, 10.580000 +3.033333, 21.924276, 10.438204, 10.580000 +3.050000, 22.102707, 10.438204, 10.580000 +3.066667, 22.281137, 10.438204, 10.580000 +3.083333, 22.459568, 10.438204, 10.580000 +3.100000, 22.637999, 10.438204, 10.580000 +3.116667, 22.816430, 10.438204, 10.580000 +3.133333, 22.994861, 10.438204, 10.580000 +3.150000, 23.173292, 10.438204, 10.580000 +3.166667, 23.351722, 10.438204, 10.580000 +3.183333, 23.530153, 10.438204, 10.580000 +3.200000, 23.708584, 10.438204, 10.580000 +3.216667, 23.887015, 10.438204, 10.580000 +3.233333, 24.065446, 10.438204, 10.580000 +3.250000, 24.243877, 10.438204, 10.580000 +3.266667, 24.422307, 10.438204, 10.580000 +3.283333, 24.600738, 10.438204, 10.580000 +3.300000, 24.779169, 10.438204, 10.580000 +3.316667, 24.957600, 10.438204, 10.580000 +3.333333, 25.136031, 10.438204, 10.580000 +3.350000, 25.314462, 10.438204, 10.580000 +3.366667, 25.492893, 10.438204, 10.580000 +3.383333, 25.671323, 10.438204, 10.580000 +3.400000, 25.849754, 10.438204, 10.580000 +3.416667, 26.028185, 10.438204, 10.580000 +3.433333, 26.206616, 10.438204, 10.580000 +3.450000, 26.385047, 10.438204, 10.580000 +3.466667, 26.563478, 10.438204, 10.580000 +3.483333, 26.741908, 10.438204, 10.580000 +3.500000, 26.920339, 10.438204, 10.580000 +3.516667, 27.098770, 10.438204, 10.580000 +3.533333, 27.277201, 10.438204, 10.580000 +3.550000, 27.455632, 10.438204, 10.580000 +3.566667, 27.634063, 10.438204, 10.580000 +3.583333, 27.812493, 10.438204, 10.580000 +3.600000, 27.990924, 10.438204, 10.580000 +3.616667, 28.169355, 10.438204, 10.580000 +3.633333, 28.347786, 10.438204, 10.580000 +3.650000, 28.526217, 10.438204, 10.580000 +3.666667, 28.704648, 10.438204, 10.580000 +3.683333, 28.883079, 10.438204, 10.580000 +3.700000, 29.061509, 10.438204, 10.580000 +3.716667, 29.239940, 10.438204, 10.580000 +3.733333, 29.418371, 10.438204, 10.580000 +3.750000, 29.596802, 10.438204, 10.580000 +3.766667, 29.775233, 10.438204, 10.580000 +3.783333, 29.953664, 10.438204, 10.580000 +3.800000, 30.132094, 10.438204, 10.580000 +3.816667, 30.310525, 10.438204, 10.580000 +3.833333, 30.488956, 10.438204, 10.580000 +3.850000, 30.667387, 10.438204, 10.580000 +3.866667, 30.845818, 10.438204, 10.580000 +3.883333, 31.024249, 10.438204, 10.580000 +3.900000, 31.202679, 10.438204, 10.580000 +3.916667, 31.381110, 10.438204, 10.580000 +3.933333, 31.559541, 10.438204, 10.580000 +3.950000, 31.737972, 10.438204, 10.580000 +3.966667, 31.916403, 10.438204, 10.580000 +3.983333, 32.094834, 10.438204, 10.580000 +4.000000, 32.273265, 10.438204, 10.580000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_3600_bev300_575kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_3600_bev300_575kW.csv new file mode 100644 index 0000000..6571484 --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_3600_bev300_575kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.106566, 9.111366, 9.231932 +1.016667, 0.228683, 10.441045, 10.580000 +1.033333, 0.350801, 10.441045, 10.580000 +1.050000, 0.472918, 10.441045, 10.580000 +1.066667, 0.595036, 10.441045, 10.580000 +1.083333, 0.717153, 10.441045, 10.580000 +1.100000, 0.839271, 10.441045, 10.580000 +1.116667, 0.961388, 10.441045, 10.580000 +1.133333, 1.083506, 10.441045, 10.580000 +1.150000, 1.205623, 10.441045, 10.580000 +1.166667, 1.327741, 10.441045, 10.580000 +1.183333, 1.449858, 10.441045, 10.580000 +1.200000, 1.571976, 10.441045, 10.580000 +1.216667, 1.694093, 10.441045, 10.580000 +1.233333, 1.816210, 10.441045, 10.580000 +1.250000, 1.938328, 10.441045, 10.580000 +1.266667, 2.060445, 10.441045, 10.580000 +1.283333, 2.182563, 10.441045, 10.580000 +1.300000, 2.304680, 10.441045, 10.580000 +1.316667, 2.426798, 10.441045, 10.580000 +1.333333, 2.548915, 10.441045, 10.580000 +1.350000, 2.671033, 10.441045, 10.580000 +1.366667, 2.793150, 10.441045, 10.580000 +1.383333, 2.915268, 10.441045, 10.580000 +1.400000, 3.037385, 10.441045, 10.580000 +1.416667, 3.159503, 10.441045, 10.580000 +1.433333, 3.281620, 10.441045, 10.580000 +1.450000, 3.403738, 10.441045, 10.580000 +1.466667, 3.525855, 10.441045, 10.580000 +1.483333, 3.647973, 10.441045, 10.580000 +1.500000, 3.770090, 10.441045, 10.580000 +1.516667, 3.892208, 10.441045, 10.580000 +1.533333, 4.014325, 10.441045, 10.580000 +1.550000, 4.136443, 10.441045, 10.580000 +1.566667, 4.258560, 10.441045, 10.580000 +1.583333, 4.380678, 10.441045, 10.580000 +1.600000, 4.502795, 10.441045, 10.580000 +1.616667, 4.624913, 10.441045, 10.580000 +1.633333, 4.747030, 10.441045, 10.580000 +1.650000, 4.869148, 10.441045, 10.580000 +1.666667, 4.991265, 10.441045, 10.580000 +1.683333, 5.113383, 10.441045, 10.580000 +1.700000, 5.235500, 10.441045, 10.580000 +1.716667, 5.357618, 10.441045, 10.580000 +1.733333, 5.479735, 10.441045, 10.580000 +1.750000, 5.601853, 10.441045, 10.580000 +1.766667, 5.723970, 10.441045, 10.580000 +1.783333, 5.846087, 10.441045, 10.580000 +1.800000, 5.968205, 10.441045, 10.580000 +1.816667, 6.090322, 10.441045, 10.580000 +1.833333, 6.212440, 10.441045, 10.580000 +1.850000, 6.334557, 10.441045, 10.580000 +1.866667, 6.456675, 10.441045, 10.580000 +1.883333, 6.578792, 10.441045, 10.580000 +1.900000, 6.700910, 10.441045, 10.580000 +1.916667, 6.823027, 10.441045, 10.580000 +1.933333, 6.945145, 10.441045, 10.580000 +1.950000, 7.067262, 10.441045, 10.580000 +1.966667, 7.189380, 10.441045, 10.580000 +1.983333, 7.311497, 10.441045, 10.580000 +2.000000, 7.433615, 10.441045, 10.580000 +2.016667, 7.555732, 10.441045, 10.580000 +2.033333, 7.677850, 10.441045, 10.580000 +2.050000, 7.799967, 10.441045, 10.580000 +2.066667, 7.922085, 10.441045, 10.580000 +2.083333, 8.044202, 10.441045, 10.580000 +2.100000, 8.166320, 10.441045, 10.580000 +2.116667, 8.288437, 10.441045, 10.580000 +2.133333, 8.410555, 10.441045, 10.580000 +2.150000, 8.532672, 10.441045, 10.580000 +2.166667, 8.654790, 10.441045, 10.580000 +2.183333, 8.776907, 10.441045, 10.580000 +2.200000, 8.899025, 10.441045, 10.580000 +2.216667, 9.021142, 10.441045, 10.580000 +2.233333, 9.143260, 10.441045, 10.580000 +2.250000, 9.265377, 10.441045, 10.580000 +2.266667, 9.387495, 10.441045, 10.580000 +2.283333, 9.509612, 10.441045, 10.580000 +2.300000, 9.631730, 10.441045, 10.580000 +2.316667, 9.753847, 10.441045, 10.580000 +2.333333, 9.875965, 10.441045, 10.580000 +2.350000, 9.998082, 10.441045, 10.580000 +2.366667, 10.120199, 10.441045, 10.580000 +2.383333, 10.242317, 10.441045, 10.580000 +2.400000, 10.364434, 10.441045, 10.580000 +2.416667, 10.486552, 10.441045, 10.580000 +2.433333, 10.608669, 10.441045, 10.580000 +2.450000, 10.730787, 10.441045, 10.580000 +2.466667, 10.852904, 10.441045, 10.580000 +2.483333, 10.975022, 10.441045, 10.580000 +2.500000, 11.097139, 10.441045, 10.580000 +2.516667, 11.219257, 10.441045, 10.580000 +2.533333, 11.341374, 10.441045, 10.580000 +2.550000, 11.463492, 10.441045, 10.580000 +2.566667, 11.585609, 10.441045, 10.580000 +2.583333, 11.707727, 10.441045, 10.580000 +2.600000, 11.829844, 10.441045, 10.580000 +2.616667, 11.951962, 10.441045, 10.580000 +2.633333, 12.074079, 10.441045, 10.580000 +2.650000, 12.196197, 10.441045, 10.580000 +2.666667, 12.318314, 10.441045, 10.580000 +2.683333, 12.440432, 10.441045, 10.580000 +2.700000, 12.562549, 10.441045, 10.580000 +2.716667, 12.684667, 10.441045, 10.580000 +2.733333, 12.806784, 10.441045, 10.580000 +2.750000, 12.928902, 10.441045, 10.580000 +2.766667, 13.051019, 10.441045, 10.580000 +2.783333, 13.173137, 10.441045, 10.580000 +2.800000, 13.295254, 10.441045, 10.580000 +2.816667, 13.417372, 10.441045, 10.580000 +2.833333, 13.539489, 10.441045, 10.580000 +2.850000, 13.661607, 10.441045, 10.580000 +2.866667, 13.783724, 10.441045, 10.580000 +2.883333, 13.905842, 10.441045, 10.580000 +2.900000, 14.027959, 10.441045, 10.580000 +2.916667, 14.150076, 10.441045, 10.580000 +2.933333, 14.272194, 10.441045, 10.580000 +2.950000, 14.394311, 10.441045, 10.580000 +2.966667, 14.516429, 10.441045, 10.580000 +2.983333, 14.638546, 10.441045, 10.580000 +3.000000, 14.760664, 10.441045, 10.580000 +3.016667, 14.882781, 10.441045, 10.580000 +3.033333, 15.004899, 10.441045, 10.580000 +3.050000, 15.127016, 10.441045, 10.580000 +3.066667, 15.249134, 10.441045, 10.580000 +3.083333, 15.371251, 10.441045, 10.580000 +3.100000, 15.493369, 10.441045, 10.580000 +3.116667, 15.615486, 10.441045, 10.580000 +3.133333, 15.737604, 10.441045, 10.580000 +3.150000, 15.859721, 10.441045, 10.580000 +3.166667, 15.981839, 10.441045, 10.580000 +3.183333, 16.103956, 10.441045, 10.580000 +3.200000, 16.226074, 10.441045, 10.580000 +3.216667, 16.348191, 10.441045, 10.580000 +3.233333, 16.470309, 10.441045, 10.580000 +3.250000, 16.592426, 10.441045, 10.580000 +3.266667, 16.714544, 10.441045, 10.580000 +3.283333, 16.836661, 10.441045, 10.580000 +3.300000, 16.958779, 10.441045, 10.580000 +3.316667, 17.080896, 10.441045, 10.580000 +3.333333, 17.203014, 10.441045, 10.580000 +3.350000, 17.325131, 10.441045, 10.580000 +3.366667, 17.447249, 10.441045, 10.580000 +3.383333, 17.569366, 10.441045, 10.580000 +3.400000, 17.691484, 10.441045, 10.580000 +3.416667, 17.813601, 10.441045, 10.580000 +3.433333, 17.935719, 10.441045, 10.580000 +3.450000, 18.057836, 10.441045, 10.580000 +3.466667, 18.179954, 10.441045, 10.580000 +3.483333, 18.302071, 10.441045, 10.580000 +3.500000, 18.424188, 10.441045, 10.580000 +3.516667, 18.546306, 10.441045, 10.580000 +3.533333, 18.668423, 10.441045, 10.580000 +3.550000, 18.790541, 10.441045, 10.580000 +3.566667, 18.912658, 10.441045, 10.580000 +3.583333, 19.034776, 10.441045, 10.580000 +3.600000, 19.156893, 10.441045, 10.580000 +3.616667, 19.279011, 10.441045, 10.580000 +3.633333, 19.401128, 10.441045, 10.580000 +3.650000, 19.523246, 10.441045, 10.580000 +3.666667, 19.645363, 10.441045, 10.580000 +3.683333, 19.767481, 10.441045, 10.580000 +3.700000, 19.889598, 10.441045, 10.580000 +3.716667, 20.011716, 10.441045, 10.580000 +3.733333, 20.133833, 10.441045, 10.580000 +3.750000, 20.255951, 10.441045, 10.580000 +3.766667, 20.378068, 10.441045, 10.580000 +3.783333, 20.500186, 10.441045, 10.580000 +3.800000, 20.622303, 10.441045, 10.580000 +3.816667, 20.744421, 10.441045, 10.580000 +3.833333, 20.866538, 10.441045, 10.580000 +3.850000, 20.988656, 10.441045, 10.580000 +3.866667, 21.110773, 10.441045, 10.580000 +3.883333, 21.232891, 10.441045, 10.580000 +3.900000, 21.355008, 10.441045, 10.580000 +3.916667, 21.477126, 10.441045, 10.580000 +3.933333, 21.599243, 10.441045, 10.580000 +3.950000, 21.721361, 10.441045, 10.580000 +3.966667, 21.843478, 10.441045, 10.580000 +3.983333, 21.965596, 10.441045, 10.580000 +4.000000, 22.087713, 10.441045, 10.580000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_3600_phev20.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_3600_phev20.csv new file mode 100644 index 0000000..ac64bef --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_3600_phev20.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.898032, 2.694096, 2.727091 +1.016667, 1.891008, 2.978929, 3.016365 +1.033333, 2.883985, 2.978929, 3.016365 +1.050000, 3.876961, 2.978929, 3.016365 +1.066667, 4.869937, 2.978929, 3.016365 +1.083333, 5.862914, 2.978929, 3.016365 +1.100000, 6.855890, 2.978929, 3.016365 +1.116667, 7.848866, 2.978929, 3.016365 +1.133333, 8.841843, 2.978929, 3.016365 +1.150000, 9.834819, 2.978929, 3.016365 +1.166667, 10.827795, 2.978929, 3.016365 +1.183333, 11.820772, 2.978929, 3.016365 +1.200000, 12.813748, 2.978929, 3.016365 +1.216667, 13.806724, 2.978929, 3.016365 +1.233333, 14.799701, 2.978929, 3.016365 +1.250000, 15.792677, 2.978929, 3.016365 +1.266667, 16.785653, 2.978929, 3.016365 +1.283333, 17.778630, 2.978929, 3.016365 +1.300000, 18.771606, 2.978929, 3.016365 +1.316667, 19.764582, 2.978929, 3.016365 +1.333333, 20.757559, 2.978929, 3.016365 +1.350000, 21.750535, 2.978929, 3.016365 +1.366667, 22.743511, 2.978929, 3.016365 +1.383333, 23.736488, 2.978929, 3.016365 +1.400000, 24.729464, 2.978929, 3.016365 +1.416667, 25.722440, 2.978929, 3.016365 +1.433333, 26.715417, 2.978929, 3.016365 +1.450000, 27.708393, 2.978929, 3.016365 +1.466667, 28.701369, 2.978929, 3.016365 +1.483333, 29.694346, 2.978929, 3.016365 +1.500000, 30.687322, 2.978929, 3.016365 +1.516667, 31.680298, 2.978929, 3.016365 +1.533333, 32.673275, 2.978929, 3.016365 +1.550000, 33.666251, 2.978929, 3.016365 +1.566667, 34.659227, 2.978929, 3.016365 +1.583333, 35.652204, 2.978929, 3.016365 +1.600000, 36.645180, 2.978929, 3.016365 +1.616667, 37.638156, 2.978929, 3.016365 +1.633333, 38.631133, 2.978929, 3.016365 +1.650000, 39.624109, 2.978929, 3.016365 +1.666667, 40.617085, 2.978929, 3.016365 +1.683333, 41.610062, 2.978929, 3.016365 +1.700000, 42.603038, 2.978929, 3.016365 +1.716667, 43.596014, 2.978929, 3.016365 +1.733333, 44.588991, 2.978929, 3.016365 +1.750000, 45.581967, 2.978929, 3.016365 +1.766667, 46.574943, 2.978929, 3.016365 +1.783333, 47.567920, 2.978929, 3.016365 +1.800000, 48.560896, 2.978929, 3.016365 +1.816667, 49.553872, 2.978929, 3.016365 +1.833333, 50.546849, 2.978929, 3.016365 +1.850000, 51.539825, 2.978929, 3.016365 +1.866667, 52.532801, 2.978929, 3.016365 +1.883333, 53.525778, 2.978929, 3.016365 +1.900000, 54.518754, 2.978929, 3.016365 +1.916667, 55.511730, 2.978929, 3.016365 +1.933333, 56.504707, 2.978929, 3.016365 +1.950000, 57.497683, 2.978929, 3.016365 +1.966667, 58.490659, 2.978929, 3.016365 +1.983333, 59.483636, 2.978929, 3.016365 +2.000000, 60.476612, 2.978929, 3.016365 +2.016667, 61.469588, 2.978929, 3.016365 +2.033333, 62.462565, 2.978929, 3.016365 +2.050000, 63.455541, 2.978929, 3.016365 +2.066667, 64.448517, 2.978929, 3.016365 +2.083333, 65.441494, 2.978929, 3.016365 +2.100000, 66.434470, 2.978929, 3.016365 +2.116667, 67.427446, 2.978929, 3.016365 +2.133333, 68.420423, 2.978929, 3.016365 +2.150000, 69.413399, 2.978929, 3.016365 +2.166667, 70.406375, 2.978929, 3.016365 +2.183333, 71.399352, 2.978929, 3.016365 +2.200000, 72.392328, 2.978929, 3.016365 +2.216667, 73.385305, 2.978929, 3.016365 +2.233333, 74.378281, 2.978929, 3.016365 +2.250000, 75.371257, 2.978929, 3.016365 +2.266667, 76.364234, 2.978929, 3.016365 +2.283333, 77.357210, 2.978929, 3.016365 +2.300000, 78.350186, 2.978929, 3.016365 +2.316667, 79.343163, 2.978929, 3.016365 +2.333333, 80.336139, 2.978929, 3.016365 +2.350000, 81.329115, 2.978929, 3.016365 +2.366667, 82.322092, 2.978929, 3.016365 +2.383333, 83.315068, 2.978929, 3.016365 +2.400000, 84.308044, 2.978929, 3.016365 +2.416667, 85.301021, 2.978929, 3.016365 +2.433333, 86.293997, 2.978929, 3.016365 +2.450000, 87.286973, 2.978929, 3.016365 +2.466667, 88.279950, 2.978929, 3.016365 +2.483333, 89.272926, 2.978929, 3.016365 +2.500000, 90.265902, 2.978929, 3.016365 +2.516667, 91.258879, 2.978929, 3.016365 +2.533333, 92.251855, 2.978929, 3.016365 +2.550000, 93.244831, 2.978929, 3.016365 +2.566667, 94.237808, 2.978929, 3.016365 +2.583333, 95.230784, 2.978929, 3.016365 +2.600000, 96.200447, 2.908988, 2.945317 +2.616667, 97.014284, 2.441512, 2.470723 +2.633333, 97.678106, 1.991465, 2.014288 +2.650000, 98.219377, 1.623813, 1.641756 +2.666667, 98.660664, 1.323863, 1.338049 +2.683333, 99.020400, 1.079206, 1.090476 +2.700000, 99.313629, 0.879688, 0.888679 +2.716667, 99.552631, 0.717005, 0.724204 +2.733333, 99.747422, 0.584375, 0.590156 +2.750000, 99.800407, 0.158954, 0.160452 +2.766667, 99.800495, 0.000265, 0.000267 +2.783333, 99.800495, 0.000000, 0.000000 +2.800000, 99.800495, 0.000000, 0.000000 +2.816667, 99.800495, 0.000000, 0.000000 +2.833333, 99.800495, 0.000000, 0.000000 +2.850000, 99.800495, 0.000000, 0.000000 +2.866667, 99.800495, 0.000000, 0.000000 +2.883333, 99.800495, 0.000000, 0.000000 +2.900000, 99.800495, 0.000000, 0.000000 +2.916667, 99.800495, 0.000000, 0.000000 +2.933333, 99.800495, 0.000000, 0.000000 +2.950000, 99.800495, 0.000000, 0.000000 +2.966667, 99.800495, 0.000000, 0.000000 +2.983333, 99.800495, 0.000000, 0.000000 +3.000000, 99.800495, 0.000000, 0.000000 +3.016667, 99.800495, 0.000000, 0.000000 +3.033333, 99.800495, 0.000000, 0.000000 +3.050000, 99.800495, 0.000000, 0.000000 +3.066667, 99.800495, 0.000000, 0.000000 +3.083333, 99.800495, 0.000000, 0.000000 +3.100000, 99.800495, 0.000000, 0.000000 +3.116667, 99.800495, 0.000000, 0.000000 +3.133333, 99.800495, 0.000000, 0.000000 +3.150000, 99.800495, 0.000000, 0.000000 +3.166667, 99.800495, 0.000000, 0.000000 +3.183333, 99.800495, 0.000000, 0.000000 +3.200000, 99.800495, 0.000000, 0.000000 +3.216667, 99.800495, 0.000000, 0.000000 +3.233333, 99.800495, 0.000000, 0.000000 +3.250000, 99.800495, 0.000000, 0.000000 +3.266667, 99.800495, 0.000000, 0.000000 +3.283333, 99.800495, 0.000000, 0.000000 +3.300000, 99.800495, 0.000000, 0.000000 +3.316667, 99.800495, 0.000000, 0.000000 +3.333333, 99.800495, 0.000000, 0.000000 +3.350000, 99.800495, 0.000000, 0.000000 +3.366667, 99.800495, 0.000000, 0.000000 +3.383333, 99.800495, 0.000000, 0.000000 +3.400000, 99.800495, 0.000000, 0.000000 +3.416667, 99.800495, 0.000000, 0.000000 +3.433333, 99.800495, 0.000000, 0.000000 +3.450000, 99.800495, 0.000000, 0.000000 +3.466667, 99.800495, 0.000000, 0.000000 +3.483333, 99.800495, 0.000000, 0.000000 +3.500000, 99.800495, 0.000000, 0.000000 +3.516667, 99.800495, 0.000000, 0.000000 +3.533333, 99.800495, 0.000000, 0.000000 +3.550000, 99.800495, 0.000000, 0.000000 +3.566667, 99.800495, 0.000000, 0.000000 +3.583333, 99.800495, 0.000000, 0.000000 +3.600000, 99.800495, 0.000000, 0.000000 +3.616667, 99.800495, 0.000000, 0.000000 +3.633333, 99.800495, 0.000000, 0.000000 +3.650000, 99.800495, 0.000000, 0.000000 +3.666667, 99.800495, 0.000000, 0.000000 +3.683333, 99.800495, 0.000000, 0.000000 +3.700000, 99.800495, 0.000000, 0.000000 +3.716667, 99.800495, 0.000000, 0.000000 +3.733333, 99.800495, 0.000000, 0.000000 +3.750000, 99.800495, 0.000000, 0.000000 +3.766667, 99.800495, 0.000000, 0.000000 +3.783333, 99.800495, 0.000000, 0.000000 +3.800000, 99.800495, 0.000000, 0.000000 +3.816667, 99.800495, 0.000000, 0.000000 +3.833333, 99.800495, 0.000000, 0.000000 +3.850000, 99.800495, 0.000000, 0.000000 +3.866667, 99.800495, 0.000000, 0.000000 +3.883333, 99.800495, 0.000000, 0.000000 +3.900000, 99.800495, 0.000000, 0.000000 +3.916667, 99.800495, 0.000000, 0.000000 +3.933333, 99.800495, 0.000000, 0.000000 +3.950000, 99.800495, 0.000000, 0.000000 +3.966667, 99.800495, 0.000000, 0.000000 +3.983333, 99.800495, 0.000000, 0.000000 +4.000000, 99.800495, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_3600_phev50.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_3600_phev50.csv new file mode 100644 index 0000000..5a74324 --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_3600_phev50.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.281209, 2.699607, 2.727091 +1.016667, 0.592217, 2.985672, 3.016365 +1.033333, 0.903224, 2.985672, 3.016365 +1.050000, 1.214231, 2.985672, 3.016365 +1.066667, 1.525239, 2.985672, 3.016365 +1.083333, 1.836246, 2.985672, 3.016365 +1.100000, 2.147254, 2.985672, 3.016365 +1.116667, 2.458261, 2.985672, 3.016365 +1.133333, 2.769269, 2.985672, 3.016365 +1.150000, 3.080276, 2.985672, 3.016365 +1.166667, 3.391284, 2.985672, 3.016365 +1.183333, 3.702291, 2.985672, 3.016365 +1.200000, 4.013299, 2.985672, 3.016365 +1.216667, 4.324306, 2.985672, 3.016365 +1.233333, 4.635314, 2.985672, 3.016365 +1.250000, 4.946321, 2.985672, 3.016365 +1.266667, 5.257329, 2.985672, 3.016365 +1.283333, 5.568336, 2.985672, 3.016365 +1.300000, 5.879344, 2.985672, 3.016365 +1.316667, 6.190351, 2.985672, 3.016365 +1.333333, 6.501359, 2.985672, 3.016365 +1.350000, 6.812366, 2.985672, 3.016365 +1.366667, 7.123373, 2.985672, 3.016365 +1.383333, 7.434381, 2.985672, 3.016365 +1.400000, 7.745388, 2.985672, 3.016365 +1.416667, 8.056396, 2.985672, 3.016365 +1.433333, 8.367403, 2.985672, 3.016365 +1.450000, 8.678411, 2.985672, 3.016365 +1.466667, 8.989418, 2.985672, 3.016365 +1.483333, 9.300426, 2.985672, 3.016365 +1.500000, 9.611433, 2.985672, 3.016365 +1.516667, 9.922441, 2.985672, 3.016365 +1.533333, 10.233448, 2.985672, 3.016365 +1.550000, 10.544456, 2.985672, 3.016365 +1.566667, 10.855463, 2.985672, 3.016365 +1.583333, 11.166471, 2.985672, 3.016365 +1.600000, 11.477478, 2.985672, 3.016365 +1.616667, 11.788486, 2.985672, 3.016365 +1.633333, 12.099493, 2.985672, 3.016365 +1.650000, 12.410500, 2.985672, 3.016365 +1.666667, 12.721508, 2.985672, 3.016365 +1.683333, 13.032515, 2.985672, 3.016365 +1.700000, 13.343523, 2.985672, 3.016365 +1.716667, 13.654530, 2.985672, 3.016365 +1.733333, 13.965538, 2.985672, 3.016365 +1.750000, 14.276545, 2.985672, 3.016365 +1.766667, 14.587553, 2.985672, 3.016365 +1.783333, 14.898560, 2.985672, 3.016365 +1.800000, 15.209568, 2.985672, 3.016365 +1.816667, 15.520575, 2.985672, 3.016365 +1.833333, 15.831583, 2.985672, 3.016365 +1.850000, 16.142590, 2.985672, 3.016365 +1.866667, 16.453598, 2.985672, 3.016365 +1.883333, 16.764605, 2.985672, 3.016365 +1.900000, 17.075613, 2.985672, 3.016365 +1.916667, 17.386620, 2.985672, 3.016365 +1.933333, 17.697628, 2.985672, 3.016365 +1.950000, 18.008635, 2.985672, 3.016365 +1.966667, 18.319642, 2.985672, 3.016365 +1.983333, 18.630650, 2.985672, 3.016365 +2.000000, 18.941657, 2.985672, 3.016365 +2.016667, 19.252665, 2.985672, 3.016365 +2.033333, 19.563672, 2.985672, 3.016365 +2.050000, 19.874680, 2.985672, 3.016365 +2.066667, 20.185687, 2.985672, 3.016365 +2.083333, 20.496695, 2.985672, 3.016365 +2.100000, 20.807702, 2.985672, 3.016365 +2.116667, 21.118710, 2.985672, 3.016365 +2.133333, 21.429717, 2.985672, 3.016365 +2.150000, 21.740725, 2.985672, 3.016365 +2.166667, 22.051732, 2.985672, 3.016365 +2.183333, 22.362740, 2.985672, 3.016365 +2.200000, 22.673747, 2.985672, 3.016365 +2.216667, 22.984755, 2.985672, 3.016365 +2.233333, 23.295762, 2.985672, 3.016365 +2.250000, 23.606769, 2.985672, 3.016365 +2.266667, 23.917777, 2.985672, 3.016365 +2.283333, 24.228784, 2.985672, 3.016365 +2.300000, 24.539792, 2.985672, 3.016365 +2.316667, 24.850799, 2.985672, 3.016365 +2.333333, 25.161807, 2.985672, 3.016365 +2.350000, 25.472814, 2.985672, 3.016365 +2.366667, 25.783822, 2.985672, 3.016365 +2.383333, 26.094829, 2.985672, 3.016365 +2.400000, 26.405837, 2.985672, 3.016365 +2.416667, 26.716844, 2.985672, 3.016365 +2.433333, 27.027852, 2.985672, 3.016365 +2.450000, 27.338859, 2.985672, 3.016365 +2.466667, 27.649867, 2.985672, 3.016365 +2.483333, 27.960874, 2.985672, 3.016365 +2.500000, 28.271882, 2.985672, 3.016365 +2.516667, 28.582889, 2.985672, 3.016365 +2.533333, 28.893896, 2.985672, 3.016365 +2.550000, 29.204904, 2.985672, 3.016365 +2.566667, 29.515911, 2.985672, 3.016365 +2.583333, 29.826919, 2.985672, 3.016365 +2.600000, 30.137926, 2.985672, 3.016365 +2.616667, 30.448934, 2.985672, 3.016365 +2.633333, 30.759941, 2.985672, 3.016365 +2.650000, 31.070949, 2.985672, 3.016365 +2.666667, 31.381956, 2.985672, 3.016365 +2.683333, 31.692964, 2.985672, 3.016365 +2.700000, 32.003971, 2.985672, 3.016365 +2.716667, 32.314979, 2.985672, 3.016365 +2.733333, 32.625986, 2.985672, 3.016365 +2.750000, 32.936994, 2.985672, 3.016365 +2.766667, 33.248001, 2.985672, 3.016365 +2.783333, 33.559009, 2.985672, 3.016365 +2.800000, 33.870016, 2.985672, 3.016365 +2.816667, 34.181024, 2.985672, 3.016365 +2.833333, 34.492031, 2.985672, 3.016365 +2.850000, 34.803038, 2.985672, 3.016365 +2.866667, 35.114046, 2.985672, 3.016365 +2.883333, 35.425053, 2.985672, 3.016365 +2.900000, 35.736061, 2.985672, 3.016365 +2.916667, 36.047068, 2.985672, 3.016365 +2.933333, 36.358076, 2.985672, 3.016365 +2.950000, 36.669083, 2.985672, 3.016365 +2.966667, 36.980091, 2.985672, 3.016365 +2.983333, 37.291098, 2.985672, 3.016365 +3.000000, 37.602106, 2.985672, 3.016365 +3.016667, 37.913113, 2.985672, 3.016365 +3.033333, 38.224121, 2.985672, 3.016365 +3.050000, 38.535128, 2.985672, 3.016365 +3.066667, 38.846136, 2.985672, 3.016365 +3.083333, 39.157143, 2.985672, 3.016365 +3.100000, 39.468151, 2.985672, 3.016365 +3.116667, 39.779158, 2.985672, 3.016365 +3.133333, 40.090165, 2.985672, 3.016365 +3.150000, 40.401173, 2.985672, 3.016365 +3.166667, 40.712180, 2.985672, 3.016365 +3.183333, 41.023188, 2.985672, 3.016365 +3.200000, 41.334195, 2.985672, 3.016365 +3.216667, 41.645203, 2.985672, 3.016365 +3.233333, 41.956210, 2.985672, 3.016365 +3.250000, 42.267218, 2.985672, 3.016365 +3.266667, 42.578225, 2.985672, 3.016365 +3.283333, 42.889233, 2.985672, 3.016365 +3.300000, 43.200240, 2.985672, 3.016365 +3.316667, 43.511248, 2.985672, 3.016365 +3.333333, 43.822255, 2.985672, 3.016365 +3.350000, 44.133263, 2.985672, 3.016365 +3.366667, 44.444270, 2.985672, 3.016365 +3.383333, 44.755278, 2.985672, 3.016365 +3.400000, 45.066285, 2.985672, 3.016365 +3.416667, 45.377293, 2.985672, 3.016365 +3.433333, 45.688300, 2.985672, 3.016365 +3.450000, 45.999307, 2.985672, 3.016365 +3.466667, 46.310315, 2.985672, 3.016365 +3.483333, 46.621322, 2.985672, 3.016365 +3.500000, 46.932330, 2.985672, 3.016365 +3.516667, 47.243337, 2.985672, 3.016365 +3.533333, 47.554345, 2.985672, 3.016365 +3.550000, 47.865352, 2.985672, 3.016365 +3.566667, 48.176360, 2.985672, 3.016365 +3.583333, 48.487367, 2.985672, 3.016365 +3.600000, 48.798375, 2.985672, 3.016365 +3.616667, 49.109382, 2.985672, 3.016365 +3.633333, 49.420390, 2.985672, 3.016365 +3.650000, 49.731397, 2.985672, 3.016365 +3.666667, 50.042405, 2.985672, 3.016365 +3.683333, 50.353412, 2.985672, 3.016365 +3.700000, 50.664420, 2.985672, 3.016365 +3.716667, 50.975427, 2.985672, 3.016365 +3.733333, 51.286434, 2.985672, 3.016365 +3.750000, 51.597442, 2.985672, 3.016365 +3.766667, 51.908449, 2.985672, 3.016365 +3.783333, 52.219457, 2.985672, 3.016365 +3.800000, 52.530464, 2.985672, 3.016365 +3.816667, 52.841472, 2.985672, 3.016365 +3.833333, 53.152479, 2.985672, 3.016365 +3.850000, 53.463487, 2.985672, 3.016365 +3.866667, 53.774494, 2.985672, 3.016365 +3.883333, 54.085502, 2.985672, 3.016365 +3.900000, 54.396509, 2.985672, 3.016365 +3.916667, 54.707517, 2.985672, 3.016365 +3.933333, 55.018524, 2.985672, 3.016365 +3.950000, 55.329532, 2.985672, 3.016365 +3.966667, 55.640539, 2.985672, 3.016365 +3.983333, 55.951547, 2.985672, 3.016365 +4.000000, 56.262554, 2.985672, 3.016365 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_3600_phev_SUV.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_3600_phev_SUV.csv new file mode 100644 index 0000000..ee2cef5 --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_3600_phev_SUV.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.539375, 7.686100, 7.770982 +1.016667, 1.152246, 8.733401, 8.832000 +1.033333, 1.765116, 8.733401, 8.832000 +1.050000, 2.377986, 8.733401, 8.832000 +1.066667, 2.990857, 8.733401, 8.832000 +1.083333, 3.603727, 8.733401, 8.832000 +1.100000, 4.216597, 8.733401, 8.832000 +1.116667, 4.829467, 8.733401, 8.832000 +1.133333, 5.442338, 8.733401, 8.832000 +1.150000, 6.055208, 8.733401, 8.832000 +1.166667, 6.668078, 8.733401, 8.832000 +1.183333, 7.280948, 8.733401, 8.832000 +1.200000, 7.893819, 8.733401, 8.832000 +1.216667, 8.506689, 8.733401, 8.832000 +1.233333, 9.119559, 8.733401, 8.832000 +1.250000, 9.732430, 8.733401, 8.832000 +1.266667, 10.345300, 8.733401, 8.832000 +1.283333, 10.958170, 8.733401, 8.832000 +1.300000, 11.571040, 8.733401, 8.832000 +1.316667, 12.183911, 8.733401, 8.832000 +1.333333, 12.796781, 8.733401, 8.832000 +1.350000, 13.409651, 8.733401, 8.832000 +1.366667, 14.022521, 8.733401, 8.832000 +1.383333, 14.635392, 8.733401, 8.832000 +1.400000, 15.248262, 8.733401, 8.832000 +1.416667, 15.861132, 8.733401, 8.832000 +1.433333, 16.474003, 8.733401, 8.832000 +1.450000, 17.086873, 8.733401, 8.832000 +1.466667, 17.699743, 8.733401, 8.832000 +1.483333, 18.312613, 8.733401, 8.832000 +1.500000, 18.925484, 8.733401, 8.832000 +1.516667, 19.538354, 8.733401, 8.832000 +1.533333, 20.151224, 8.733401, 8.832000 +1.550000, 20.764095, 8.733401, 8.832000 +1.566667, 21.376965, 8.733401, 8.832000 +1.583333, 21.989835, 8.733401, 8.832000 +1.600000, 22.602705, 8.733401, 8.832000 +1.616667, 23.215576, 8.733401, 8.832000 +1.633333, 23.828446, 8.733401, 8.832000 +1.650000, 24.441316, 8.733401, 8.832000 +1.666667, 25.054186, 8.733401, 8.832000 +1.683333, 25.667057, 8.733401, 8.832000 +1.700000, 26.279927, 8.733401, 8.832000 +1.716667, 26.892797, 8.733401, 8.832000 +1.733333, 27.505668, 8.733401, 8.832000 +1.750000, 28.118538, 8.733401, 8.832000 +1.766667, 28.731408, 8.733401, 8.832000 +1.783333, 29.344278, 8.733401, 8.832000 +1.800000, 29.957149, 8.733401, 8.832000 +1.816667, 30.570019, 8.733401, 8.832000 +1.833333, 31.182889, 8.733401, 8.832000 +1.850000, 31.795759, 8.733401, 8.832000 +1.866667, 32.408630, 8.733401, 8.832000 +1.883333, 33.021500, 8.733401, 8.832000 +1.900000, 33.634370, 8.733401, 8.832000 +1.916667, 34.247241, 8.733401, 8.832000 +1.933333, 34.860111, 8.733401, 8.832000 +1.950000, 35.472981, 8.733401, 8.832000 +1.966667, 36.085851, 8.733401, 8.832000 +1.983333, 36.698722, 8.733401, 8.832000 +2.000000, 37.311592, 8.733401, 8.832000 +2.016667, 37.924462, 8.733401, 8.832000 +2.033333, 38.537333, 8.733401, 8.832000 +2.050000, 39.150203, 8.733401, 8.832000 +2.066667, 39.763073, 8.733401, 8.832000 +2.083333, 40.375943, 8.733401, 8.832000 +2.100000, 40.988814, 8.733401, 8.832000 +2.116667, 41.601684, 8.733401, 8.832000 +2.133333, 42.214554, 8.733401, 8.832000 +2.150000, 42.827424, 8.733401, 8.832000 +2.166667, 43.440295, 8.733401, 8.832000 +2.183333, 44.053165, 8.733401, 8.832000 +2.200000, 44.666035, 8.733401, 8.832000 +2.216667, 45.278906, 8.733401, 8.832000 +2.233333, 45.891776, 8.733401, 8.832000 +2.250000, 46.504646, 8.733401, 8.832000 +2.266667, 47.117516, 8.733401, 8.832000 +2.283333, 47.730387, 8.733401, 8.832000 +2.300000, 48.343257, 8.733401, 8.832000 +2.316667, 48.956127, 8.733401, 8.832000 +2.333333, 49.568997, 8.733401, 8.832000 +2.350000, 50.181868, 8.733401, 8.832000 +2.366667, 50.794738, 8.733401, 8.832000 +2.383333, 51.407608, 8.733401, 8.832000 +2.400000, 52.020479, 8.733401, 8.832000 +2.416667, 52.633349, 8.733401, 8.832000 +2.433333, 53.246219, 8.733401, 8.832000 +2.450000, 53.859089, 8.733401, 8.832000 +2.466667, 54.471960, 8.733401, 8.832000 +2.483333, 55.084830, 8.733401, 8.832000 +2.500000, 55.697700, 8.733401, 8.832000 +2.516667, 56.310571, 8.733401, 8.832000 +2.533333, 56.923441, 8.733401, 8.832000 +2.550000, 57.536311, 8.733401, 8.832000 +2.566667, 58.149181, 8.733401, 8.832000 +2.583333, 58.762052, 8.733401, 8.832000 +2.600000, 59.374922, 8.733401, 8.832000 +2.616667, 59.987792, 8.733401, 8.832000 +2.633333, 60.600662, 8.733401, 8.832000 +2.650000, 61.213533, 8.733401, 8.832000 +2.666667, 61.826403, 8.733401, 8.832000 +2.683333, 62.439273, 8.733401, 8.832000 +2.700000, 63.052144, 8.733401, 8.832000 +2.716667, 63.665014, 8.733401, 8.832000 +2.733333, 64.277884, 8.733401, 8.832000 +2.750000, 64.890754, 8.733401, 8.832000 +2.766667, 65.503625, 8.733401, 8.832000 +2.783333, 66.116495, 8.733401, 8.832000 +2.800000, 66.729365, 8.733401, 8.832000 +2.816667, 67.342235, 8.733401, 8.832000 +2.833333, 67.955106, 8.733401, 8.832000 +2.850000, 68.567976, 8.733401, 8.832000 +2.866667, 69.180846, 8.733401, 8.832000 +2.883333, 69.793717, 8.733401, 8.832000 +2.900000, 70.406587, 8.733401, 8.832000 +2.916667, 71.019457, 8.733401, 8.832000 +2.933333, 71.632327, 8.733401, 8.832000 +2.950000, 72.245198, 8.733401, 8.832000 +2.966667, 72.858068, 8.733401, 8.832000 +2.983333, 73.470938, 8.733401, 8.832000 +3.000000, 74.083809, 8.733401, 8.832000 +3.016667, 74.696679, 8.733401, 8.832000 +3.033333, 75.309549, 8.733401, 8.832000 +3.050000, 75.922419, 8.733401, 8.832000 +3.066667, 76.535290, 8.733401, 8.832000 +3.083333, 77.148160, 8.733401, 8.832000 +3.100000, 77.761030, 8.733401, 8.832000 +3.116667, 78.373900, 8.733401, 8.832000 +3.133333, 78.986771, 8.733401, 8.832000 +3.150000, 79.599641, 8.733401, 8.832000 +3.166667, 80.212511, 8.733401, 8.832000 +3.183333, 80.825382, 8.733401, 8.832000 +3.200000, 81.438252, 8.733401, 8.832000 +3.216667, 82.051122, 8.733401, 8.832000 +3.233333, 82.663992, 8.733401, 8.832000 +3.250000, 83.276863, 8.733401, 8.832000 +3.266667, 83.889733, 8.733401, 8.832000 +3.283333, 84.502603, 8.733401, 8.832000 +3.300000, 85.115473, 8.733401, 8.832000 +3.316667, 85.728344, 8.733401, 8.832000 +3.333333, 86.341214, 8.733401, 8.832000 +3.350000, 86.954084, 8.733401, 8.832000 +3.366667, 87.566955, 8.733401, 8.832000 +3.383333, 88.179825, 8.733401, 8.832000 +3.400000, 88.792695, 8.733401, 8.832000 +3.416667, 89.405565, 8.733401, 8.832000 +3.433333, 90.018436, 8.733401, 8.832000 +3.450000, 90.631306, 8.733401, 8.832000 +3.466667, 91.244176, 8.733401, 8.832000 +3.483333, 91.857047, 8.733401, 8.832000 +3.500000, 92.469917, 8.733401, 8.832000 +3.516667, 93.082787, 8.733401, 8.832000 +3.533333, 93.695657, 8.733401, 8.832000 +3.550000, 94.308528, 8.733401, 8.832000 +3.566667, 94.921398, 8.733401, 8.832000 +3.583333, 95.534268, 8.733401, 8.832000 +3.600000, 96.147138, 8.733401, 8.832000 +3.616667, 96.760009, 8.733401, 8.832000 +3.633333, 97.372879, 8.733401, 8.832000 +3.650000, 97.962686, 8.404745, 8.498984 +3.666667, 98.451688, 6.968290, 7.044070 +3.683333, 98.850306, 5.680300, 5.740356 +3.700000, 99.175156, 4.629109, 4.676911 +3.716667, 99.439882, 3.772342, 3.810540 +3.733333, 99.655606, 3.074078, 3.104703 +3.750000, 99.800321, 2.062187, 2.082243 +3.766667, 99.800587, 0.003787, 0.003822 +3.783333, 99.800587, 0.000000, 0.000000 +3.800000, 99.800587, 0.000000, 0.000000 +3.816667, 99.800587, 0.000000, 0.000000 +3.833333, 99.800587, 0.000000, 0.000000 +3.850000, 99.800587, 0.000000, 0.000000 +3.866667, 99.800587, 0.000000, 0.000000 +3.883333, 99.800587, 0.000000, 0.000000 +3.900000, 99.800587, 0.000000, 0.000000 +3.916667, 99.800587, 0.000000, 0.000000 +3.933333, 99.800587, 0.000000, 0.000000 +3.950000, 99.800587, 0.000000, 0.000000 +3.966667, 99.800587, 0.000000, 0.000000 +3.983333, 99.800587, 0.000000, 0.000000 +4.000000, 99.800587, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_7200_bev150_150kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_7200_bev150_150kW.csv new file mode 100644 index 0000000..4b23e41 --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_7200_bev150_150kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.284910, 7.692571, 7.770982 +1.016667, 0.608679, 8.741761, 8.832000 +1.033333, 0.932448, 8.741761, 8.832000 +1.050000, 1.256217, 8.741761, 8.832000 +1.066667, 1.579986, 8.741761, 8.832000 +1.083333, 1.903755, 8.741761, 8.832000 +1.100000, 2.227524, 8.741761, 8.832000 +1.116667, 2.551292, 8.741761, 8.832000 +1.133333, 2.875061, 8.741761, 8.832000 +1.150000, 3.198830, 8.741761, 8.832000 +1.166667, 3.522599, 8.741761, 8.832000 +1.183333, 3.846368, 8.741761, 8.832000 +1.200000, 4.170137, 8.741761, 8.832000 +1.216667, 4.493906, 8.741761, 8.832000 +1.233333, 4.817675, 8.741761, 8.832000 +1.250000, 5.141444, 8.741761, 8.832000 +1.266667, 5.465213, 8.741761, 8.832000 +1.283333, 5.788982, 8.741761, 8.832000 +1.300000, 6.112750, 8.741761, 8.832000 +1.316667, 6.436519, 8.741761, 8.832000 +1.333333, 6.760288, 8.741761, 8.832000 +1.350000, 7.084057, 8.741761, 8.832000 +1.366667, 7.407826, 8.741761, 8.832000 +1.383333, 7.731595, 8.741761, 8.832000 +1.400000, 8.055364, 8.741761, 8.832000 +1.416667, 8.379133, 8.741761, 8.832000 +1.433333, 8.702902, 8.741761, 8.832000 +1.450000, 9.026671, 8.741761, 8.832000 +1.466667, 9.350440, 8.741761, 8.832000 +1.483333, 9.674209, 8.741761, 8.832000 +1.500000, 9.997977, 8.741761, 8.832000 +1.516667, 10.321746, 8.741761, 8.832000 +1.533333, 10.645515, 8.741761, 8.832000 +1.550000, 10.969284, 8.741761, 8.832000 +1.566667, 11.293053, 8.741761, 8.832000 +1.583333, 11.616822, 8.741761, 8.832000 +1.600000, 11.940591, 8.741761, 8.832000 +1.616667, 12.264360, 8.741761, 8.832000 +1.633333, 12.588129, 8.741761, 8.832000 +1.650000, 12.911898, 8.741761, 8.832000 +1.666667, 13.235667, 8.741761, 8.832000 +1.683333, 13.559435, 8.741761, 8.832000 +1.700000, 13.883204, 8.741761, 8.832000 +1.716667, 14.206973, 8.741761, 8.832000 +1.733333, 14.530742, 8.741761, 8.832000 +1.750000, 14.854511, 8.741761, 8.832000 +1.766667, 15.178280, 8.741761, 8.832000 +1.783333, 15.502049, 8.741761, 8.832000 +1.800000, 15.825818, 8.741761, 8.832000 +1.816667, 16.149587, 8.741761, 8.832000 +1.833333, 16.473356, 8.741761, 8.832000 +1.850000, 16.797125, 8.741761, 8.832000 +1.866667, 17.120894, 8.741761, 8.832000 +1.883333, 17.444662, 8.741761, 8.832000 +1.900000, 17.768431, 8.741761, 8.832000 +1.916667, 18.092200, 8.741761, 8.832000 +1.933333, 18.415969, 8.741761, 8.832000 +1.950000, 18.739738, 8.741761, 8.832000 +1.966667, 19.063507, 8.741761, 8.832000 +1.983333, 19.387276, 8.741761, 8.832000 +2.000000, 19.711045, 8.741761, 8.832000 +2.016667, 20.034814, 8.741761, 8.832000 +2.033333, 20.358583, 8.741761, 8.832000 +2.050000, 20.682352, 8.741761, 8.832000 +2.066667, 21.006120, 8.741761, 8.832000 +2.083333, 21.329889, 8.741761, 8.832000 +2.100000, 21.653658, 8.741761, 8.832000 +2.116667, 21.977427, 8.741761, 8.832000 +2.133333, 22.301196, 8.741761, 8.832000 +2.150000, 22.624965, 8.741761, 8.832000 +2.166667, 22.948734, 8.741761, 8.832000 +2.183333, 23.272503, 8.741761, 8.832000 +2.200000, 23.596272, 8.741761, 8.832000 +2.216667, 23.920041, 8.741761, 8.832000 +2.233333, 24.243810, 8.741761, 8.832000 +2.250000, 24.567579, 8.741761, 8.832000 +2.266667, 24.891347, 8.741761, 8.832000 +2.283333, 25.215116, 8.741761, 8.832000 +2.300000, 25.538885, 8.741761, 8.832000 +2.316667, 25.862654, 8.741761, 8.832000 +2.333333, 26.186423, 8.741761, 8.832000 +2.350000, 26.510192, 8.741761, 8.832000 +2.366667, 26.833961, 8.741761, 8.832000 +2.383333, 27.157730, 8.741761, 8.832000 +2.400000, 27.481499, 8.741761, 8.832000 +2.416667, 27.805268, 8.741761, 8.832000 +2.433333, 28.129037, 8.741761, 8.832000 +2.450000, 28.452805, 8.741761, 8.832000 +2.466667, 28.776574, 8.741761, 8.832000 +2.483333, 29.100343, 8.741761, 8.832000 +2.500000, 29.424112, 8.741761, 8.832000 +2.516667, 29.747881, 8.741761, 8.832000 +2.533333, 30.071650, 8.741761, 8.832000 +2.550000, 30.395419, 8.741761, 8.832000 +2.566667, 30.719188, 8.741761, 8.832000 +2.583333, 31.042957, 8.741761, 8.832000 +2.600000, 31.366726, 8.741761, 8.832000 +2.616667, 31.690495, 8.741761, 8.832000 +2.633333, 32.014263, 8.741761, 8.832000 +2.650000, 32.338032, 8.741761, 8.832000 +2.666667, 32.661801, 8.741761, 8.832000 +2.683333, 32.985570, 8.741761, 8.832000 +2.700000, 33.309339, 8.741761, 8.832000 +2.716667, 33.633108, 8.741761, 8.832000 +2.733333, 33.956877, 8.741761, 8.832000 +2.750000, 34.280646, 8.741761, 8.832000 +2.766667, 34.604415, 8.741761, 8.832000 +2.783333, 34.928184, 8.741761, 8.832000 +2.800000, 35.251953, 8.741761, 8.832000 +2.816667, 35.575722, 8.741761, 8.832000 +2.833333, 35.899490, 8.741761, 8.832000 +2.850000, 36.223259, 8.741761, 8.832000 +2.866667, 36.547028, 8.741761, 8.832000 +2.883333, 36.870797, 8.741761, 8.832000 +2.900000, 37.194566, 8.741761, 8.832000 +2.916667, 37.518335, 8.741761, 8.832000 +2.933333, 37.842104, 8.741761, 8.832000 +2.950000, 38.165873, 8.741761, 8.832000 +2.966667, 38.489642, 8.741761, 8.832000 +2.983333, 38.813411, 8.741761, 8.832000 +3.000000, 39.137180, 8.741761, 8.832000 +3.016667, 39.460948, 8.741761, 8.832000 +3.033333, 39.784717, 8.741761, 8.832000 +3.050000, 40.108486, 8.741761, 8.832000 +3.066667, 40.432255, 8.741761, 8.832000 +3.083333, 40.756024, 8.741761, 8.832000 +3.100000, 41.079793, 8.741761, 8.832000 +3.116667, 41.403562, 8.741761, 8.832000 +3.133333, 41.727331, 8.741761, 8.832000 +3.150000, 42.051100, 8.741761, 8.832000 +3.166667, 42.374869, 8.741761, 8.832000 +3.183333, 42.698638, 8.741761, 8.832000 +3.200000, 43.022407, 8.741761, 8.832000 +3.216667, 43.346175, 8.741761, 8.832000 +3.233333, 43.669944, 8.741761, 8.832000 +3.250000, 43.993713, 8.741761, 8.832000 +3.266667, 44.317482, 8.741761, 8.832000 +3.283333, 44.641251, 8.741761, 8.832000 +3.300000, 44.965020, 8.741761, 8.832000 +3.316667, 45.288789, 8.741761, 8.832000 +3.333333, 45.612558, 8.741761, 8.832000 +3.350000, 45.936327, 8.741761, 8.832000 +3.366667, 46.260096, 8.741761, 8.832000 +3.383333, 46.583865, 8.741761, 8.832000 +3.400000, 46.907633, 8.741761, 8.832000 +3.416667, 47.231402, 8.741761, 8.832000 +3.433333, 47.555171, 8.741761, 8.832000 +3.450000, 47.878940, 8.741761, 8.832000 +3.466667, 48.202709, 8.741761, 8.832000 +3.483333, 48.526478, 8.741761, 8.832000 +3.500000, 48.850247, 8.741761, 8.832000 +3.516667, 49.174016, 8.741761, 8.832000 +3.533333, 49.497785, 8.741761, 8.832000 +3.550000, 49.821554, 8.741761, 8.832000 +3.566667, 50.145323, 8.741761, 8.832000 +3.583333, 50.469092, 8.741761, 8.832000 +3.600000, 50.792860, 8.741761, 8.832000 +3.616667, 51.116629, 8.741761, 8.832000 +3.633333, 51.440398, 8.741761, 8.832000 +3.650000, 51.764167, 8.741761, 8.832000 +3.666667, 52.087936, 8.741761, 8.832000 +3.683333, 52.411705, 8.741761, 8.832000 +3.700000, 52.735474, 8.741761, 8.832000 +3.716667, 53.059243, 8.741761, 8.832000 +3.733333, 53.383012, 8.741761, 8.832000 +3.750000, 53.706781, 8.741761, 8.832000 +3.766667, 54.030550, 8.741761, 8.832000 +3.783333, 54.354318, 8.741761, 8.832000 +3.800000, 54.678087, 8.741761, 8.832000 +3.816667, 55.001856, 8.741761, 8.832000 +3.833333, 55.325625, 8.741761, 8.832000 +3.850000, 55.649394, 8.741761, 8.832000 +3.866667, 55.973163, 8.741761, 8.832000 +3.883333, 56.296932, 8.741761, 8.832000 +3.900000, 56.620701, 8.741761, 8.832000 +3.916667, 56.944470, 8.741761, 8.832000 +3.933333, 57.268239, 8.741761, 8.832000 +3.950000, 57.592008, 8.741761, 8.832000 +3.966667, 57.915777, 8.741761, 8.832000 +3.983333, 58.239545, 8.741761, 8.832000 +4.000000, 58.563314, 8.741761, 8.832000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_7200_bev150_ld1_50kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_7200_bev150_ld1_50kW.csv new file mode 100644 index 0000000..7fb388e --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_7200_bev150_ld1_50kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.198492, 5.359295, 5.412378 +1.016667, 0.421158, 6.011968, 6.072000 +1.033333, 0.643823, 6.011968, 6.072000 +1.050000, 0.866489, 6.011968, 6.072000 +1.066667, 1.089154, 6.011968, 6.072000 +1.083333, 1.311820, 6.011968, 6.072000 +1.100000, 1.534485, 6.011968, 6.072000 +1.116667, 1.757151, 6.011968, 6.072000 +1.133333, 1.979816, 6.011968, 6.072000 +1.150000, 2.202482, 6.011968, 6.072000 +1.166667, 2.425147, 6.011968, 6.072000 +1.183333, 2.647813, 6.011968, 6.072000 +1.200000, 2.870478, 6.011968, 6.072000 +1.216667, 3.093144, 6.011968, 6.072000 +1.233333, 3.315809, 6.011968, 6.072000 +1.250000, 3.538474, 6.011968, 6.072000 +1.266667, 3.761140, 6.011968, 6.072000 +1.283333, 3.983805, 6.011968, 6.072000 +1.300000, 4.206471, 6.011968, 6.072000 +1.316667, 4.429136, 6.011968, 6.072000 +1.333333, 4.651802, 6.011968, 6.072000 +1.350000, 4.874467, 6.011968, 6.072000 +1.366667, 5.097133, 6.011968, 6.072000 +1.383333, 5.319798, 6.011968, 6.072000 +1.400000, 5.542464, 6.011968, 6.072000 +1.416667, 5.765129, 6.011968, 6.072000 +1.433333, 5.987795, 6.011968, 6.072000 +1.450000, 6.210460, 6.011968, 6.072000 +1.466667, 6.433126, 6.011968, 6.072000 +1.483333, 6.655791, 6.011968, 6.072000 +1.500000, 6.878456, 6.011968, 6.072000 +1.516667, 7.101122, 6.011968, 6.072000 +1.533333, 7.323787, 6.011968, 6.072000 +1.550000, 7.546453, 6.011968, 6.072000 +1.566667, 7.769118, 6.011968, 6.072000 +1.583333, 7.991784, 6.011968, 6.072000 +1.600000, 8.214449, 6.011968, 6.072000 +1.616667, 8.437115, 6.011968, 6.072000 +1.633333, 8.659780, 6.011968, 6.072000 +1.650000, 8.882446, 6.011968, 6.072000 +1.666667, 9.105111, 6.011968, 6.072000 +1.683333, 9.327777, 6.011968, 6.072000 +1.700000, 9.550442, 6.011968, 6.072000 +1.716667, 9.773108, 6.011968, 6.072000 +1.733333, 9.995773, 6.011968, 6.072000 +1.750000, 10.218439, 6.011968, 6.072000 +1.766667, 10.441104, 6.011968, 6.072000 +1.783333, 10.663769, 6.011968, 6.072000 +1.800000, 10.886435, 6.011968, 6.072000 +1.816667, 11.109100, 6.011968, 6.072000 +1.833333, 11.331766, 6.011968, 6.072000 +1.850000, 11.554431, 6.011968, 6.072000 +1.866667, 11.777097, 6.011968, 6.072000 +1.883333, 11.999762, 6.011968, 6.072000 +1.900000, 12.222428, 6.011968, 6.072000 +1.916667, 12.445093, 6.011968, 6.072000 +1.933333, 12.667759, 6.011968, 6.072000 +1.950000, 12.890424, 6.011968, 6.072000 +1.966667, 13.113090, 6.011968, 6.072000 +1.983333, 13.335755, 6.011968, 6.072000 +2.000000, 13.558421, 6.011968, 6.072000 +2.016667, 13.781086, 6.011968, 6.072000 +2.033333, 14.003751, 6.011968, 6.072000 +2.050000, 14.226417, 6.011968, 6.072000 +2.066667, 14.449082, 6.011968, 6.072000 +2.083333, 14.671748, 6.011968, 6.072000 +2.100000, 14.894413, 6.011968, 6.072000 +2.116667, 15.117079, 6.011968, 6.072000 +2.133333, 15.339744, 6.011968, 6.072000 +2.150000, 15.562410, 6.011968, 6.072000 +2.166667, 15.785075, 6.011968, 6.072000 +2.183333, 16.007741, 6.011968, 6.072000 +2.200000, 16.230406, 6.011968, 6.072000 +2.216667, 16.453072, 6.011968, 6.072000 +2.233333, 16.675737, 6.011968, 6.072000 +2.250000, 16.898403, 6.011968, 6.072000 +2.266667, 17.121068, 6.011968, 6.072000 +2.283333, 17.343733, 6.011968, 6.072000 +2.300000, 17.566399, 6.011968, 6.072000 +2.316667, 17.789064, 6.011968, 6.072000 +2.333333, 18.011730, 6.011968, 6.072000 +2.350000, 18.234395, 6.011968, 6.072000 +2.366667, 18.457061, 6.011968, 6.072000 +2.383333, 18.679726, 6.011968, 6.072000 +2.400000, 18.902392, 6.011968, 6.072000 +2.416667, 19.125057, 6.011968, 6.072000 +2.433333, 19.347723, 6.011968, 6.072000 +2.450000, 19.570388, 6.011968, 6.072000 +2.466667, 19.793054, 6.011968, 6.072000 +2.483333, 20.015719, 6.011968, 6.072000 +2.500000, 20.238385, 6.011968, 6.072000 +2.516667, 20.461050, 6.011968, 6.072000 +2.533333, 20.683716, 6.011968, 6.072000 +2.550000, 20.906381, 6.011968, 6.072000 +2.566667, 21.129046, 6.011968, 6.072000 +2.583333, 21.351712, 6.011968, 6.072000 +2.600000, 21.574377, 6.011968, 6.072000 +2.616667, 21.797043, 6.011968, 6.072000 +2.633333, 22.019708, 6.011968, 6.072000 +2.650000, 22.242374, 6.011968, 6.072000 +2.666667, 22.465039, 6.011968, 6.072000 +2.683333, 22.687705, 6.011968, 6.072000 +2.700000, 22.910370, 6.011968, 6.072000 +2.716667, 23.133036, 6.011968, 6.072000 +2.733333, 23.355701, 6.011968, 6.072000 +2.750000, 23.578367, 6.011968, 6.072000 +2.766667, 23.801032, 6.011968, 6.072000 +2.783333, 24.023698, 6.011968, 6.072000 +2.800000, 24.246363, 6.011968, 6.072000 +2.816667, 24.469028, 6.011968, 6.072000 +2.833333, 24.691694, 6.011968, 6.072000 +2.850000, 24.914359, 6.011968, 6.072000 +2.866667, 25.137025, 6.011968, 6.072000 +2.883333, 25.359690, 6.011968, 6.072000 +2.900000, 25.582356, 6.011968, 6.072000 +2.916667, 25.805021, 6.011968, 6.072000 +2.933333, 26.027687, 6.011968, 6.072000 +2.950000, 26.250352, 6.011968, 6.072000 +2.966667, 26.473018, 6.011968, 6.072000 +2.983333, 26.695683, 6.011968, 6.072000 +3.000000, 26.918349, 6.011968, 6.072000 +3.016667, 27.141014, 6.011968, 6.072000 +3.033333, 27.363680, 6.011968, 6.072000 +3.050000, 27.586345, 6.011968, 6.072000 +3.066667, 27.809011, 6.011968, 6.072000 +3.083333, 28.031676, 6.011968, 6.072000 +3.100000, 28.254341, 6.011968, 6.072000 +3.116667, 28.477007, 6.011968, 6.072000 +3.133333, 28.699672, 6.011968, 6.072000 +3.150000, 28.922338, 6.011968, 6.072000 +3.166667, 29.145003, 6.011968, 6.072000 +3.183333, 29.367669, 6.011968, 6.072000 +3.200000, 29.590334, 6.011968, 6.072000 +3.216667, 29.813000, 6.011968, 6.072000 +3.233333, 30.035665, 6.011968, 6.072000 +3.250000, 30.258331, 6.011968, 6.072000 +3.266667, 30.480996, 6.011968, 6.072000 +3.283333, 30.703662, 6.011968, 6.072000 +3.300000, 30.926327, 6.011968, 6.072000 +3.316667, 31.148993, 6.011968, 6.072000 +3.333333, 31.371658, 6.011968, 6.072000 +3.350000, 31.594323, 6.011968, 6.072000 +3.366667, 31.816989, 6.011968, 6.072000 +3.383333, 32.039654, 6.011968, 6.072000 +3.400000, 32.262320, 6.011968, 6.072000 +3.416667, 32.484985, 6.011968, 6.072000 +3.433333, 32.707651, 6.011968, 6.072000 +3.450000, 32.930316, 6.011968, 6.072000 +3.466667, 33.152982, 6.011968, 6.072000 +3.483333, 33.375647, 6.011968, 6.072000 +3.500000, 33.598313, 6.011968, 6.072000 +3.516667, 33.820978, 6.011968, 6.072000 +3.533333, 34.043644, 6.011968, 6.072000 +3.550000, 34.266309, 6.011968, 6.072000 +3.566667, 34.488975, 6.011968, 6.072000 +3.583333, 34.711640, 6.011968, 6.072000 +3.600000, 34.934306, 6.011968, 6.072000 +3.616667, 35.156971, 6.011968, 6.072000 +3.633333, 35.379636, 6.011968, 6.072000 +3.650000, 35.602302, 6.011968, 6.072000 +3.666667, 35.824967, 6.011968, 6.072000 +3.683333, 36.047633, 6.011968, 6.072000 +3.700000, 36.270298, 6.011968, 6.072000 +3.716667, 36.492964, 6.011968, 6.072000 +3.733333, 36.715629, 6.011968, 6.072000 +3.750000, 36.938295, 6.011968, 6.072000 +3.766667, 37.160960, 6.011968, 6.072000 +3.783333, 37.383626, 6.011968, 6.072000 +3.800000, 37.606291, 6.011968, 6.072000 +3.816667, 37.828957, 6.011968, 6.072000 +3.833333, 38.051622, 6.011968, 6.072000 +3.850000, 38.274288, 6.011968, 6.072000 +3.866667, 38.496953, 6.011968, 6.072000 +3.883333, 38.719618, 6.011968, 6.072000 +3.900000, 38.942284, 6.011968, 6.072000 +3.916667, 39.164949, 6.011968, 6.072000 +3.933333, 39.387615, 6.011968, 6.072000 +3.950000, 39.610280, 6.011968, 6.072000 +3.966667, 39.832946, 6.011968, 6.072000 +3.983333, 40.055611, 6.011968, 6.072000 +4.000000, 40.278277, 6.011968, 6.072000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_7200_bev200_ld4_150kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_7200_bev200_ld4_150kW.csv new file mode 100644 index 0000000..5708a5d --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_7200_bev200_ld4_150kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.135024, 7.696378, 7.770982 +1.016667, 0.288475, 8.746678, 8.832000 +1.033333, 0.441925, 8.746678, 8.832000 +1.050000, 0.595376, 8.746678, 8.832000 +1.066667, 0.748826, 8.746678, 8.832000 +1.083333, 0.902277, 8.746678, 8.832000 +1.100000, 1.055727, 8.746678, 8.832000 +1.116667, 1.209178, 8.746678, 8.832000 +1.133333, 1.362628, 8.746678, 8.832000 +1.150000, 1.516079, 8.746678, 8.832000 +1.166667, 1.669529, 8.746678, 8.832000 +1.183333, 1.822980, 8.746678, 8.832000 +1.200000, 1.976430, 8.746678, 8.832000 +1.216667, 2.129881, 8.746678, 8.832000 +1.233333, 2.283331, 8.746678, 8.832000 +1.250000, 2.436781, 8.746678, 8.832000 +1.266667, 2.590232, 8.746678, 8.832000 +1.283333, 2.743682, 8.746678, 8.832000 +1.300000, 2.897133, 8.746678, 8.832000 +1.316667, 3.050583, 8.746678, 8.832000 +1.333333, 3.204034, 8.746678, 8.832000 +1.350000, 3.357484, 8.746678, 8.832000 +1.366667, 3.510935, 8.746678, 8.832000 +1.383333, 3.664385, 8.746678, 8.832000 +1.400000, 3.817836, 8.746678, 8.832000 +1.416667, 3.971286, 8.746678, 8.832000 +1.433333, 4.124737, 8.746678, 8.832000 +1.450000, 4.278187, 8.746678, 8.832000 +1.466667, 4.431638, 8.746678, 8.832000 +1.483333, 4.585088, 8.746678, 8.832000 +1.500000, 4.738539, 8.746678, 8.832000 +1.516667, 4.891989, 8.746678, 8.832000 +1.533333, 5.045440, 8.746678, 8.832000 +1.550000, 5.198890, 8.746678, 8.832000 +1.566667, 5.352341, 8.746678, 8.832000 +1.583333, 5.505791, 8.746678, 8.832000 +1.600000, 5.659242, 8.746678, 8.832000 +1.616667, 5.812692, 8.746678, 8.832000 +1.633333, 5.966143, 8.746678, 8.832000 +1.650000, 6.119593, 8.746678, 8.832000 +1.666667, 6.273044, 8.746678, 8.832000 +1.683333, 6.426494, 8.746678, 8.832000 +1.700000, 6.579945, 8.746678, 8.832000 +1.716667, 6.733395, 8.746678, 8.832000 +1.733333, 6.886846, 8.746678, 8.832000 +1.750000, 7.040296, 8.746678, 8.832000 +1.766667, 7.193747, 8.746678, 8.832000 +1.783333, 7.347197, 8.746678, 8.832000 +1.800000, 7.500648, 8.746678, 8.832000 +1.816667, 7.654098, 8.746678, 8.832000 +1.833333, 7.807549, 8.746678, 8.832000 +1.850000, 7.960999, 8.746678, 8.832000 +1.866667, 8.114450, 8.746678, 8.832000 +1.883333, 8.267900, 8.746678, 8.832000 +1.900000, 8.421351, 8.746678, 8.832000 +1.916667, 8.574801, 8.746678, 8.832000 +1.933333, 8.728252, 8.746678, 8.832000 +1.950000, 8.881702, 8.746678, 8.832000 +1.966667, 9.035152, 8.746678, 8.832000 +1.983333, 9.188603, 8.746678, 8.832000 +2.000000, 9.342053, 8.746678, 8.832000 +2.016667, 9.495504, 8.746678, 8.832000 +2.033333, 9.648954, 8.746678, 8.832000 +2.050000, 9.802405, 8.746678, 8.832000 +2.066667, 9.955855, 8.746678, 8.832000 +2.083333, 10.109306, 8.746678, 8.832000 +2.100000, 10.262756, 8.746678, 8.832000 +2.116667, 10.416207, 8.746678, 8.832000 +2.133333, 10.569657, 8.746678, 8.832000 +2.150000, 10.723108, 8.746678, 8.832000 +2.166667, 10.876558, 8.746678, 8.832000 +2.183333, 11.030009, 8.746678, 8.832000 +2.200000, 11.183459, 8.746678, 8.832000 +2.216667, 11.336910, 8.746678, 8.832000 +2.233333, 11.490360, 8.746678, 8.832000 +2.250000, 11.643811, 8.746678, 8.832000 +2.266667, 11.797261, 8.746678, 8.832000 +2.283333, 11.950712, 8.746678, 8.832000 +2.300000, 12.104162, 8.746678, 8.832000 +2.316667, 12.257613, 8.746678, 8.832000 +2.333333, 12.411063, 8.746678, 8.832000 +2.350000, 12.564514, 8.746678, 8.832000 +2.366667, 12.717964, 8.746678, 8.832000 +2.383333, 12.871415, 8.746678, 8.832000 +2.400000, 13.024865, 8.746678, 8.832000 +2.416667, 13.178316, 8.746678, 8.832000 +2.433333, 13.331766, 8.746678, 8.832000 +2.450000, 13.485217, 8.746678, 8.832000 +2.466667, 13.638667, 8.746678, 8.832000 +2.483333, 13.792118, 8.746678, 8.832000 +2.500000, 13.945568, 8.746678, 8.832000 +2.516667, 14.099019, 8.746678, 8.832000 +2.533333, 14.252469, 8.746678, 8.832000 +2.550000, 14.405920, 8.746678, 8.832000 +2.566667, 14.559370, 8.746678, 8.832000 +2.583333, 14.712821, 8.746678, 8.832000 +2.600000, 14.866271, 8.746678, 8.832000 +2.616667, 15.019722, 8.746678, 8.832000 +2.633333, 15.173172, 8.746678, 8.832000 +2.650000, 15.326623, 8.746678, 8.832000 +2.666667, 15.480073, 8.746678, 8.832000 +2.683333, 15.633523, 8.746678, 8.832000 +2.700000, 15.786974, 8.746678, 8.832000 +2.716667, 15.940424, 8.746678, 8.832000 +2.733333, 16.093875, 8.746678, 8.832000 +2.750000, 16.247325, 8.746678, 8.832000 +2.766667, 16.400776, 8.746678, 8.832000 +2.783333, 16.554226, 8.746678, 8.832000 +2.800000, 16.707677, 8.746678, 8.832000 +2.816667, 16.861127, 8.746678, 8.832000 +2.833333, 17.014578, 8.746678, 8.832000 +2.850000, 17.168028, 8.746678, 8.832000 +2.866667, 17.321479, 8.746678, 8.832000 +2.883333, 17.474929, 8.746678, 8.832000 +2.900000, 17.628380, 8.746678, 8.832000 +2.916667, 17.781830, 8.746678, 8.832000 +2.933333, 17.935281, 8.746678, 8.832000 +2.950000, 18.088731, 8.746678, 8.832000 +2.966667, 18.242182, 8.746678, 8.832000 +2.983333, 18.395632, 8.746678, 8.832000 +3.000000, 18.549083, 8.746678, 8.832000 +3.016667, 18.702533, 8.746678, 8.832000 +3.033333, 18.855984, 8.746678, 8.832000 +3.050000, 19.009434, 8.746678, 8.832000 +3.066667, 19.162885, 8.746678, 8.832000 +3.083333, 19.316335, 8.746678, 8.832000 +3.100000, 19.469786, 8.746678, 8.832000 +3.116667, 19.623236, 8.746678, 8.832000 +3.133333, 19.776687, 8.746678, 8.832000 +3.150000, 19.930137, 8.746678, 8.832000 +3.166667, 20.083588, 8.746678, 8.832000 +3.183333, 20.237038, 8.746678, 8.832000 +3.200000, 20.390489, 8.746678, 8.832000 +3.216667, 20.543939, 8.746678, 8.832000 +3.233333, 20.697390, 8.746678, 8.832000 +3.250000, 20.850840, 8.746678, 8.832000 +3.266667, 21.004291, 8.746678, 8.832000 +3.283333, 21.157741, 8.746678, 8.832000 +3.300000, 21.311192, 8.746678, 8.832000 +3.316667, 21.464642, 8.746678, 8.832000 +3.333333, 21.618093, 8.746678, 8.832000 +3.350000, 21.771543, 8.746678, 8.832000 +3.366667, 21.924994, 8.746678, 8.832000 +3.383333, 22.078444, 8.746678, 8.832000 +3.400000, 22.231894, 8.746678, 8.832000 +3.416667, 22.385345, 8.746678, 8.832000 +3.433333, 22.538795, 8.746678, 8.832000 +3.450000, 22.692246, 8.746678, 8.832000 +3.466667, 22.845696, 8.746678, 8.832000 +3.483333, 22.999147, 8.746678, 8.832000 +3.500000, 23.152597, 8.746678, 8.832000 +3.516667, 23.306048, 8.746678, 8.832000 +3.533333, 23.459498, 8.746678, 8.832000 +3.550000, 23.612949, 8.746678, 8.832000 +3.566667, 23.766399, 8.746678, 8.832000 +3.583333, 23.919850, 8.746678, 8.832000 +3.600000, 24.073300, 8.746678, 8.832000 +3.616667, 24.226751, 8.746678, 8.832000 +3.633333, 24.380201, 8.746678, 8.832000 +3.650000, 24.533652, 8.746678, 8.832000 +3.666667, 24.687102, 8.746678, 8.832000 +3.683333, 24.840553, 8.746678, 8.832000 +3.700000, 24.994003, 8.746678, 8.832000 +3.716667, 25.147454, 8.746678, 8.832000 +3.733333, 25.300904, 8.746678, 8.832000 +3.750000, 25.454355, 8.746678, 8.832000 +3.766667, 25.607805, 8.746678, 8.832000 +3.783333, 25.761256, 8.746678, 8.832000 +3.800000, 25.914706, 8.746678, 8.832000 +3.816667, 26.068157, 8.746678, 8.832000 +3.833333, 26.221607, 8.746678, 8.832000 +3.850000, 26.375058, 8.746678, 8.832000 +3.866667, 26.528508, 8.746678, 8.832000 +3.883333, 26.681959, 8.746678, 8.832000 +3.900000, 26.835409, 8.746678, 8.832000 +3.916667, 26.988860, 8.746678, 8.832000 +3.933333, 27.142310, 8.746678, 8.832000 +3.950000, 27.295761, 8.746678, 8.832000 +3.966667, 27.449211, 8.746678, 8.832000 +3.983333, 27.602662, 8.746678, 8.832000 +4.000000, 27.756112, 8.746678, 8.832000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_7200_bev250_350kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_7200_bev250_350kW.csv new file mode 100644 index 0000000..d43538c --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_7200_bev250_350kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.128276, 9.143505, 9.231932 +1.016667, 0.275274, 10.478014, 10.580000 +1.033333, 0.422272, 10.478014, 10.580000 +1.050000, 0.569270, 10.478014, 10.580000 +1.066667, 0.716268, 10.478014, 10.580000 +1.083333, 0.863266, 10.478014, 10.580000 +1.100000, 1.010264, 10.478014, 10.580000 +1.116667, 1.157262, 10.478014, 10.580000 +1.133333, 1.304260, 10.478014, 10.580000 +1.150000, 1.451257, 10.478014, 10.580000 +1.166667, 1.598255, 10.478014, 10.580000 +1.183333, 1.745253, 10.478014, 10.580000 +1.200000, 1.892251, 10.478014, 10.580000 +1.216667, 2.039249, 10.478014, 10.580000 +1.233333, 2.186247, 10.478014, 10.580000 +1.250000, 2.333245, 10.478014, 10.580000 +1.266667, 2.480243, 10.478014, 10.580000 +1.283333, 2.627241, 10.478014, 10.580000 +1.300000, 2.774239, 10.478014, 10.580000 +1.316667, 2.921237, 10.478014, 10.580000 +1.333333, 3.068235, 10.478014, 10.580000 +1.350000, 3.215233, 10.478014, 10.580000 +1.366667, 3.362231, 10.478014, 10.580000 +1.383333, 3.509229, 10.478014, 10.580000 +1.400000, 3.656227, 10.478014, 10.580000 +1.416667, 3.803225, 10.478014, 10.580000 +1.433333, 3.950223, 10.478014, 10.580000 +1.450000, 4.097221, 10.478014, 10.580000 +1.466667, 4.244219, 10.478014, 10.580000 +1.483333, 4.391217, 10.478014, 10.580000 +1.500000, 4.538215, 10.478014, 10.580000 +1.516667, 4.685212, 10.478014, 10.580000 +1.533333, 4.832210, 10.478014, 10.580000 +1.550000, 4.979208, 10.478014, 10.580000 +1.566667, 5.126206, 10.478014, 10.580000 +1.583333, 5.273204, 10.478014, 10.580000 +1.600000, 5.420202, 10.478014, 10.580000 +1.616667, 5.567200, 10.478014, 10.580000 +1.633333, 5.714198, 10.478014, 10.580000 +1.650000, 5.861196, 10.478014, 10.580000 +1.666667, 6.008194, 10.478014, 10.580000 +1.683333, 6.155192, 10.478014, 10.580000 +1.700000, 6.302190, 10.478014, 10.580000 +1.716667, 6.449188, 10.478014, 10.580000 +1.733333, 6.596186, 10.478014, 10.580000 +1.750000, 6.743184, 10.478014, 10.580000 +1.766667, 6.890182, 10.478014, 10.580000 +1.783333, 7.037180, 10.478014, 10.580000 +1.800000, 7.184178, 10.478014, 10.580000 +1.816667, 7.331176, 10.478014, 10.580000 +1.833333, 7.478174, 10.478014, 10.580000 +1.850000, 7.625172, 10.478014, 10.580000 +1.866667, 7.772170, 10.478014, 10.580000 +1.883333, 7.919167, 10.478014, 10.580000 +1.900000, 8.066165, 10.478014, 10.580000 +1.916667, 8.213163, 10.478014, 10.580000 +1.933333, 8.360161, 10.478014, 10.580000 +1.950000, 8.507159, 10.478014, 10.580000 +1.966667, 8.654157, 10.478014, 10.580000 +1.983333, 8.801155, 10.478014, 10.580000 +2.000000, 8.948153, 10.478014, 10.580000 +2.016667, 9.095151, 10.478014, 10.580000 +2.033333, 9.242149, 10.478014, 10.580000 +2.050000, 9.389147, 10.478014, 10.580000 +2.066667, 9.536145, 10.478014, 10.580000 +2.083333, 9.683143, 10.478014, 10.580000 +2.100000, 9.830141, 10.478014, 10.580000 +2.116667, 9.977139, 10.478014, 10.580000 +2.133333, 10.124137, 10.478014, 10.580000 +2.150000, 10.271135, 10.478014, 10.580000 +2.166667, 10.418133, 10.478014, 10.580000 +2.183333, 10.565131, 10.478014, 10.580000 +2.200000, 10.712129, 10.478014, 10.580000 +2.216667, 10.859127, 10.478014, 10.580000 +2.233333, 11.006124, 10.478014, 10.580000 +2.250000, 11.153122, 10.478014, 10.580000 +2.266667, 11.300120, 10.478014, 10.580000 +2.283333, 11.447118, 10.478014, 10.580000 +2.300000, 11.594116, 10.478014, 10.580000 +2.316667, 11.741114, 10.478014, 10.580000 +2.333333, 11.888112, 10.478014, 10.580000 +2.350000, 12.035110, 10.478014, 10.580000 +2.366667, 12.182108, 10.478014, 10.580000 +2.383333, 12.329106, 10.478014, 10.580000 +2.400000, 12.476104, 10.478014, 10.580000 +2.416667, 12.623102, 10.478014, 10.580000 +2.433333, 12.770100, 10.478014, 10.580000 +2.450000, 12.917098, 10.478014, 10.580000 +2.466667, 13.064096, 10.478014, 10.580000 +2.483333, 13.211094, 10.478014, 10.580000 +2.500000, 13.358092, 10.478014, 10.580000 +2.516667, 13.505090, 10.478014, 10.580000 +2.533333, 13.652088, 10.478014, 10.580000 +2.550000, 13.799086, 10.478014, 10.580000 +2.566667, 13.946084, 10.478014, 10.580000 +2.583333, 14.093082, 10.478014, 10.580000 +2.600000, 14.240079, 10.478014, 10.580000 +2.616667, 14.387077, 10.478014, 10.580000 +2.633333, 14.534075, 10.478014, 10.580000 +2.650000, 14.681073, 10.478014, 10.580000 +2.666667, 14.828071, 10.478014, 10.580000 +2.683333, 14.975069, 10.478014, 10.580000 +2.700000, 15.122067, 10.478014, 10.580000 +2.716667, 15.269065, 10.478014, 10.580000 +2.733333, 15.416063, 10.478014, 10.580000 +2.750000, 15.563061, 10.478014, 10.580000 +2.766667, 15.710059, 10.478014, 10.580000 +2.783333, 15.857057, 10.478014, 10.580000 +2.800000, 16.004055, 10.478014, 10.580000 +2.816667, 16.151053, 10.478014, 10.580000 +2.833333, 16.298051, 10.478014, 10.580000 +2.850000, 16.445049, 10.478014, 10.580000 +2.866667, 16.592047, 10.478014, 10.580000 +2.883333, 16.739045, 10.478014, 10.580000 +2.900000, 16.886043, 10.478014, 10.580000 +2.916667, 17.033041, 10.478014, 10.580000 +2.933333, 17.180039, 10.478014, 10.580000 +2.950000, 17.327037, 10.478014, 10.580000 +2.966667, 17.474034, 10.478014, 10.580000 +2.983333, 17.621032, 10.478014, 10.580000 +3.000000, 17.768030, 10.478014, 10.580000 +3.016667, 17.915028, 10.478014, 10.580000 +3.033333, 18.062026, 10.478014, 10.580000 +3.050000, 18.209024, 10.478014, 10.580000 +3.066667, 18.356022, 10.478014, 10.580000 +3.083333, 18.503020, 10.478014, 10.580000 +3.100000, 18.650018, 10.478014, 10.580000 +3.116667, 18.797016, 10.478014, 10.580000 +3.133333, 18.944014, 10.478014, 10.580000 +3.150000, 19.091012, 10.478014, 10.580000 +3.166667, 19.238010, 10.478014, 10.580000 +3.183333, 19.385008, 10.478014, 10.580000 +3.200000, 19.532006, 10.478014, 10.580000 +3.216667, 19.679004, 10.478014, 10.580000 +3.233333, 19.826002, 10.478014, 10.580000 +3.250000, 19.973000, 10.478014, 10.580000 +3.266667, 20.119998, 10.478014, 10.580000 +3.283333, 20.266996, 10.478014, 10.580000 +3.300000, 20.413994, 10.478014, 10.580000 +3.316667, 20.560992, 10.478014, 10.580000 +3.333333, 20.707989, 10.478014, 10.580000 +3.350000, 20.854987, 10.478014, 10.580000 +3.366667, 21.001985, 10.478014, 10.580000 +3.383333, 21.148983, 10.478014, 10.580000 +3.400000, 21.295981, 10.478014, 10.580000 +3.416667, 21.442979, 10.478014, 10.580000 +3.433333, 21.589977, 10.478014, 10.580000 +3.450000, 21.736975, 10.478014, 10.580000 +3.466667, 21.883973, 10.478014, 10.580000 +3.483333, 22.030971, 10.478014, 10.580000 +3.500000, 22.177969, 10.478014, 10.580000 +3.516667, 22.324967, 10.478014, 10.580000 +3.533333, 22.471965, 10.478014, 10.580000 +3.550000, 22.618963, 10.478014, 10.580000 +3.566667, 22.765961, 10.478014, 10.580000 +3.583333, 22.912959, 10.478014, 10.580000 +3.600000, 23.059957, 10.478014, 10.580000 +3.616667, 23.206955, 10.478014, 10.580000 +3.633333, 23.353953, 10.478014, 10.580000 +3.650000, 23.500951, 10.478014, 10.580000 +3.666667, 23.647949, 10.478014, 10.580000 +3.683333, 23.794947, 10.478014, 10.580000 +3.700000, 23.941944, 10.478014, 10.580000 +3.716667, 24.088942, 10.478014, 10.580000 +3.733333, 24.235940, 10.478014, 10.580000 +3.750000, 24.382938, 10.478014, 10.580000 +3.766667, 24.529936, 10.478014, 10.580000 +3.783333, 24.676934, 10.478014, 10.580000 +3.800000, 24.823932, 10.478014, 10.580000 +3.816667, 24.970930, 10.478014, 10.580000 +3.833333, 25.117928, 10.478014, 10.580000 +3.850000, 25.264926, 10.478014, 10.580000 +3.866667, 25.411924, 10.478014, 10.580000 +3.883333, 25.558922, 10.478014, 10.580000 +3.900000, 25.705920, 10.478014, 10.580000 +3.916667, 25.852918, 10.478014, 10.580000 +3.933333, 25.999916, 10.478014, 10.580000 +3.950000, 26.146914, 10.478014, 10.580000 +3.966667, 26.293912, 10.478014, 10.580000 +3.983333, 26.440910, 10.478014, 10.580000 +4.000000, 26.587908, 10.478014, 10.580000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_7200_bev250_400kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_7200_bev250_400kW.csv new file mode 100644 index 0000000..d46a87e --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_7200_bev250_400kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.173494, 9.108420, 9.231932 +1.016667, 0.372297, 10.437176, 10.580000 +1.033333, 0.571100, 10.437176, 10.580000 +1.050000, 0.769904, 10.437176, 10.580000 +1.066667, 0.968707, 10.437176, 10.580000 +1.083333, 1.167511, 10.437176, 10.580000 +1.100000, 1.366314, 10.437176, 10.580000 +1.116667, 1.565117, 10.437176, 10.580000 +1.133333, 1.763921, 10.437176, 10.580000 +1.150000, 1.962724, 10.437176, 10.580000 +1.166667, 2.161527, 10.437176, 10.580000 +1.183333, 2.360331, 10.437176, 10.580000 +1.200000, 2.559134, 10.437176, 10.580000 +1.216667, 2.757937, 10.437176, 10.580000 +1.233333, 2.956741, 10.437176, 10.580000 +1.250000, 3.155544, 10.437176, 10.580000 +1.266667, 3.354347, 10.437176, 10.580000 +1.283333, 3.553151, 10.437176, 10.580000 +1.300000, 3.751954, 10.437176, 10.580000 +1.316667, 3.950757, 10.437176, 10.580000 +1.333333, 4.149561, 10.437176, 10.580000 +1.350000, 4.348364, 10.437176, 10.580000 +1.366667, 4.547168, 10.437176, 10.580000 +1.383333, 4.745971, 10.437176, 10.580000 +1.400000, 4.944774, 10.437176, 10.580000 +1.416667, 5.143578, 10.437176, 10.580000 +1.433333, 5.342381, 10.437176, 10.580000 +1.450000, 5.541184, 10.437176, 10.580000 +1.466667, 5.739988, 10.437176, 10.580000 +1.483333, 5.938791, 10.437176, 10.580000 +1.500000, 6.137594, 10.437176, 10.580000 +1.516667, 6.336398, 10.437176, 10.580000 +1.533333, 6.535201, 10.437176, 10.580000 +1.550000, 6.734004, 10.437176, 10.580000 +1.566667, 6.932808, 10.437176, 10.580000 +1.583333, 7.131611, 10.437176, 10.580000 +1.600000, 7.330415, 10.437176, 10.580000 +1.616667, 7.529218, 10.437176, 10.580000 +1.633333, 7.728021, 10.437176, 10.580000 +1.650000, 7.926825, 10.437176, 10.580000 +1.666667, 8.125628, 10.437176, 10.580000 +1.683333, 8.324431, 10.437176, 10.580000 +1.700000, 8.523235, 10.437176, 10.580000 +1.716667, 8.722038, 10.437176, 10.580000 +1.733333, 8.920841, 10.437176, 10.580000 +1.750000, 9.119645, 10.437176, 10.580000 +1.766667, 9.318448, 10.437176, 10.580000 +1.783333, 9.517251, 10.437176, 10.580000 +1.800000, 9.716055, 10.437176, 10.580000 +1.816667, 9.914858, 10.437176, 10.580000 +1.833333, 10.113662, 10.437176, 10.580000 +1.850000, 10.312465, 10.437176, 10.580000 +1.866667, 10.511268, 10.437176, 10.580000 +1.883333, 10.710072, 10.437176, 10.580000 +1.900000, 10.908875, 10.437176, 10.580000 +1.916667, 11.107678, 10.437176, 10.580000 +1.933333, 11.306482, 10.437176, 10.580000 +1.950000, 11.505285, 10.437176, 10.580000 +1.966667, 11.704088, 10.437176, 10.580000 +1.983333, 11.902892, 10.437176, 10.580000 +2.000000, 12.101695, 10.437176, 10.580000 +2.016667, 12.300498, 10.437176, 10.580000 +2.033333, 12.499302, 10.437176, 10.580000 +2.050000, 12.698105, 10.437176, 10.580000 +2.066667, 12.896909, 10.437176, 10.580000 +2.083333, 13.095712, 10.437176, 10.580000 +2.100000, 13.294515, 10.437176, 10.580000 +2.116667, 13.493319, 10.437176, 10.580000 +2.133333, 13.692122, 10.437176, 10.580000 +2.150000, 13.890925, 10.437176, 10.580000 +2.166667, 14.089729, 10.437176, 10.580000 +2.183333, 14.288532, 10.437176, 10.580000 +2.200000, 14.487335, 10.437176, 10.580000 +2.216667, 14.686139, 10.437176, 10.580000 +2.233333, 14.884942, 10.437176, 10.580000 +2.250000, 15.083745, 10.437176, 10.580000 +2.266667, 15.282549, 10.437176, 10.580000 +2.283333, 15.481352, 10.437176, 10.580000 +2.300000, 15.680156, 10.437176, 10.580000 +2.316667, 15.878959, 10.437176, 10.580000 +2.333333, 16.077762, 10.437176, 10.580000 +2.350000, 16.276566, 10.437176, 10.580000 +2.366667, 16.475369, 10.437176, 10.580000 +2.383333, 16.674172, 10.437176, 10.580000 +2.400000, 16.872976, 10.437176, 10.580000 +2.416667, 17.071779, 10.437176, 10.580000 +2.433333, 17.270582, 10.437176, 10.580000 +2.450000, 17.469386, 10.437176, 10.580000 +2.466667, 17.668189, 10.437176, 10.580000 +2.483333, 17.866992, 10.437176, 10.580000 +2.500000, 18.065796, 10.437176, 10.580000 +2.516667, 18.264599, 10.437176, 10.580000 +2.533333, 18.463403, 10.437176, 10.580000 +2.550000, 18.662206, 10.437176, 10.580000 +2.566667, 18.861009, 10.437176, 10.580000 +2.583333, 19.059813, 10.437176, 10.580000 +2.600000, 19.258616, 10.437176, 10.580000 +2.616667, 19.457419, 10.437176, 10.580000 +2.633333, 19.656223, 10.437176, 10.580000 +2.650000, 19.855026, 10.437176, 10.580000 +2.666667, 20.053829, 10.437176, 10.580000 +2.683333, 20.252633, 10.437176, 10.580000 +2.700000, 20.451436, 10.437176, 10.580000 +2.716667, 20.650239, 10.437176, 10.580000 +2.733333, 20.849043, 10.437176, 10.580000 +2.750000, 21.047846, 10.437176, 10.580000 +2.766667, 21.246650, 10.437176, 10.580000 +2.783333, 21.445453, 10.437176, 10.580000 +2.800000, 21.644256, 10.437176, 10.580000 +2.816667, 21.843060, 10.437176, 10.580000 +2.833333, 22.041863, 10.437176, 10.580000 +2.850000, 22.240666, 10.437176, 10.580000 +2.866667, 22.439470, 10.437176, 10.580000 +2.883333, 22.638273, 10.437176, 10.580000 +2.900000, 22.837076, 10.437176, 10.580000 +2.916667, 23.035880, 10.437176, 10.580000 +2.933333, 23.234683, 10.437176, 10.580000 +2.950000, 23.433486, 10.437176, 10.580000 +2.966667, 23.632290, 10.437176, 10.580000 +2.983333, 23.831093, 10.437176, 10.580000 +3.000000, 24.029897, 10.437176, 10.580000 +3.016667, 24.228700, 10.437176, 10.580000 +3.033333, 24.427503, 10.437176, 10.580000 +3.050000, 24.626307, 10.437176, 10.580000 +3.066667, 24.825110, 10.437176, 10.580000 +3.083333, 25.023913, 10.437176, 10.580000 +3.100000, 25.222717, 10.437176, 10.580000 +3.116667, 25.421520, 10.437176, 10.580000 +3.133333, 25.620323, 10.437176, 10.580000 +3.150000, 25.819127, 10.437176, 10.580000 +3.166667, 26.017930, 10.437176, 10.580000 +3.183333, 26.216733, 10.437176, 10.580000 +3.200000, 26.415537, 10.437176, 10.580000 +3.216667, 26.614340, 10.437176, 10.580000 +3.233333, 26.813144, 10.437176, 10.580000 +3.250000, 27.011947, 10.437176, 10.580000 +3.266667, 27.210750, 10.437176, 10.580000 +3.283333, 27.409554, 10.437176, 10.580000 +3.300000, 27.608357, 10.437176, 10.580000 +3.316667, 27.807160, 10.437176, 10.580000 +3.333333, 28.005964, 10.437176, 10.580000 +3.350000, 28.204767, 10.437176, 10.580000 +3.366667, 28.403570, 10.437176, 10.580000 +3.383333, 28.602374, 10.437176, 10.580000 +3.400000, 28.801177, 10.437176, 10.580000 +3.416667, 28.999980, 10.437176, 10.580000 +3.433333, 29.198784, 10.437176, 10.580000 +3.450000, 29.397587, 10.437176, 10.580000 +3.466667, 29.596391, 10.437176, 10.580000 +3.483333, 29.795194, 10.437176, 10.580000 +3.500000, 29.993997, 10.437176, 10.580000 +3.516667, 30.192801, 10.437176, 10.580000 +3.533333, 30.391604, 10.437176, 10.580000 +3.550000, 30.590407, 10.437176, 10.580000 +3.566667, 30.789211, 10.437176, 10.580000 +3.583333, 30.988014, 10.437176, 10.580000 +3.600000, 31.186817, 10.437176, 10.580000 +3.616667, 31.385621, 10.437176, 10.580000 +3.633333, 31.584424, 10.437176, 10.580000 +3.650000, 31.783227, 10.437176, 10.580000 +3.666667, 31.982031, 10.437176, 10.580000 +3.683333, 32.180834, 10.437176, 10.580000 +3.700000, 32.379637, 10.437176, 10.580000 +3.716667, 32.578441, 10.437176, 10.580000 +3.733333, 32.777244, 10.437176, 10.580000 +3.750000, 32.976048, 10.437176, 10.580000 +3.766667, 33.174851, 10.437176, 10.580000 +3.783333, 33.373654, 10.437176, 10.580000 +3.800000, 33.572458, 10.437176, 10.580000 +3.816667, 33.771261, 10.437176, 10.580000 +3.833333, 33.970064, 10.437176, 10.580000 +3.850000, 34.168868, 10.437176, 10.580000 +3.866667, 34.367671, 10.437176, 10.580000 +3.883333, 34.566474, 10.437176, 10.580000 +3.900000, 34.765278, 10.437176, 10.580000 +3.916667, 34.964081, 10.437176, 10.580000 +3.933333, 35.162884, 10.437176, 10.580000 +3.950000, 35.361688, 10.437176, 10.580000 +3.966667, 35.560491, 10.437176, 10.580000 +3.983333, 35.759295, 10.437176, 10.580000 +4.000000, 35.958098, 10.437176, 10.580000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_7200_bev250_ld1_75kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_7200_bev250_ld1_75kW.csv new file mode 100644 index 0000000..a18d99c --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_7200_bev250_ld1_75kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.119127, 5.360699, 5.412378 +1.016667, 0.252765, 6.013734, 6.072000 +1.033333, 0.386404, 6.013734, 6.072000 +1.050000, 0.520042, 6.013734, 6.072000 +1.066667, 0.653681, 6.013734, 6.072000 +1.083333, 0.787319, 6.013734, 6.072000 +1.100000, 0.920958, 6.013734, 6.072000 +1.116667, 1.054596, 6.013734, 6.072000 +1.133333, 1.188235, 6.013734, 6.072000 +1.150000, 1.321873, 6.013734, 6.072000 +1.166667, 1.455512, 6.013734, 6.072000 +1.183333, 1.589151, 6.013734, 6.072000 +1.200000, 1.722789, 6.013734, 6.072000 +1.216667, 1.856428, 6.013734, 6.072000 +1.233333, 1.990066, 6.013734, 6.072000 +1.250000, 2.123705, 6.013734, 6.072000 +1.266667, 2.257343, 6.013734, 6.072000 +1.283333, 2.390982, 6.013734, 6.072000 +1.300000, 2.524620, 6.013734, 6.072000 +1.316667, 2.658259, 6.013734, 6.072000 +1.333333, 2.791897, 6.013734, 6.072000 +1.350000, 2.925536, 6.013734, 6.072000 +1.366667, 3.059174, 6.013734, 6.072000 +1.383333, 3.192813, 6.013734, 6.072000 +1.400000, 3.326451, 6.013734, 6.072000 +1.416667, 3.460090, 6.013734, 6.072000 +1.433333, 3.593729, 6.013734, 6.072000 +1.450000, 3.727367, 6.013734, 6.072000 +1.466667, 3.861006, 6.013734, 6.072000 +1.483333, 3.994644, 6.013734, 6.072000 +1.500000, 4.128283, 6.013734, 6.072000 +1.516667, 4.261921, 6.013734, 6.072000 +1.533333, 4.395560, 6.013734, 6.072000 +1.550000, 4.529198, 6.013734, 6.072000 +1.566667, 4.662837, 6.013734, 6.072000 +1.583333, 4.796475, 6.013734, 6.072000 +1.600000, 4.930114, 6.013734, 6.072000 +1.616667, 5.063752, 6.013734, 6.072000 +1.633333, 5.197391, 6.013734, 6.072000 +1.650000, 5.331029, 6.013734, 6.072000 +1.666667, 5.464668, 6.013734, 6.072000 +1.683333, 5.598307, 6.013734, 6.072000 +1.700000, 5.731945, 6.013734, 6.072000 +1.716667, 5.865584, 6.013734, 6.072000 +1.733333, 5.999222, 6.013734, 6.072000 +1.750000, 6.132861, 6.013734, 6.072000 +1.766667, 6.266499, 6.013734, 6.072000 +1.783333, 6.400138, 6.013734, 6.072000 +1.800000, 6.533776, 6.013734, 6.072000 +1.816667, 6.667415, 6.013734, 6.072000 +1.833333, 6.801053, 6.013734, 6.072000 +1.850000, 6.934692, 6.013734, 6.072000 +1.866667, 7.068330, 6.013734, 6.072000 +1.883333, 7.201969, 6.013734, 6.072000 +1.900000, 7.335607, 6.013734, 6.072000 +1.916667, 7.469246, 6.013734, 6.072000 +1.933333, 7.602884, 6.013734, 6.072000 +1.950000, 7.736523, 6.013734, 6.072000 +1.966667, 7.870162, 6.013734, 6.072000 +1.983333, 8.003800, 6.013734, 6.072000 +2.000000, 8.137439, 6.013734, 6.072000 +2.016667, 8.271077, 6.013734, 6.072000 +2.033333, 8.404716, 6.013734, 6.072000 +2.050000, 8.538354, 6.013734, 6.072000 +2.066667, 8.671993, 6.013734, 6.072000 +2.083333, 8.805631, 6.013734, 6.072000 +2.100000, 8.939270, 6.013734, 6.072000 +2.116667, 9.072908, 6.013734, 6.072000 +2.133333, 9.206547, 6.013734, 6.072000 +2.150000, 9.340185, 6.013734, 6.072000 +2.166667, 9.473824, 6.013734, 6.072000 +2.183333, 9.607462, 6.013734, 6.072000 +2.200000, 9.741101, 6.013734, 6.072000 +2.216667, 9.874740, 6.013734, 6.072000 +2.233333, 10.008378, 6.013734, 6.072000 +2.250000, 10.142017, 6.013734, 6.072000 +2.266667, 10.275655, 6.013734, 6.072000 +2.283333, 10.409294, 6.013734, 6.072000 +2.300000, 10.542932, 6.013734, 6.072000 +2.316667, 10.676571, 6.013734, 6.072000 +2.333333, 10.810209, 6.013734, 6.072000 +2.350000, 10.943848, 6.013734, 6.072000 +2.366667, 11.077486, 6.013734, 6.072000 +2.383333, 11.211125, 6.013734, 6.072000 +2.400000, 11.344763, 6.013734, 6.072000 +2.416667, 11.478402, 6.013734, 6.072000 +2.433333, 11.612040, 6.013734, 6.072000 +2.450000, 11.745679, 6.013734, 6.072000 +2.466667, 11.879318, 6.013734, 6.072000 +2.483333, 12.012956, 6.013734, 6.072000 +2.500000, 12.146595, 6.013734, 6.072000 +2.516667, 12.280233, 6.013734, 6.072000 +2.533333, 12.413872, 6.013734, 6.072000 +2.550000, 12.547510, 6.013734, 6.072000 +2.566667, 12.681149, 6.013734, 6.072000 +2.583333, 12.814787, 6.013734, 6.072000 +2.600000, 12.948426, 6.013734, 6.072000 +2.616667, 13.082064, 6.013734, 6.072000 +2.633333, 13.215703, 6.013734, 6.072000 +2.650000, 13.349341, 6.013734, 6.072000 +2.666667, 13.482980, 6.013734, 6.072000 +2.683333, 13.616618, 6.013734, 6.072000 +2.700000, 13.750257, 6.013734, 6.072000 +2.716667, 13.883896, 6.013734, 6.072000 +2.733333, 14.017534, 6.013734, 6.072000 +2.750000, 14.151173, 6.013734, 6.072000 +2.766667, 14.284811, 6.013734, 6.072000 +2.783333, 14.418450, 6.013734, 6.072000 +2.800000, 14.552088, 6.013734, 6.072000 +2.816667, 14.685727, 6.013734, 6.072000 +2.833333, 14.819365, 6.013734, 6.072000 +2.850000, 14.953004, 6.013734, 6.072000 +2.866667, 15.086642, 6.013734, 6.072000 +2.883333, 15.220281, 6.013734, 6.072000 +2.900000, 15.353919, 6.013734, 6.072000 +2.916667, 15.487558, 6.013734, 6.072000 +2.933333, 15.621196, 6.013734, 6.072000 +2.950000, 15.754835, 6.013734, 6.072000 +2.966667, 15.888474, 6.013734, 6.072000 +2.983333, 16.022112, 6.013734, 6.072000 +3.000000, 16.155751, 6.013734, 6.072000 +3.016667, 16.289389, 6.013734, 6.072000 +3.033333, 16.423028, 6.013734, 6.072000 +3.050000, 16.556666, 6.013734, 6.072000 +3.066667, 16.690305, 6.013734, 6.072000 +3.083333, 16.823943, 6.013734, 6.072000 +3.100000, 16.957582, 6.013734, 6.072000 +3.116667, 17.091220, 6.013734, 6.072000 +3.133333, 17.224859, 6.013734, 6.072000 +3.150000, 17.358497, 6.013734, 6.072000 +3.166667, 17.492136, 6.013734, 6.072000 +3.183333, 17.625774, 6.013734, 6.072000 +3.200000, 17.759413, 6.013734, 6.072000 +3.216667, 17.893052, 6.013734, 6.072000 +3.233333, 18.026690, 6.013734, 6.072000 +3.250000, 18.160329, 6.013734, 6.072000 +3.266667, 18.293967, 6.013734, 6.072000 +3.283333, 18.427606, 6.013734, 6.072000 +3.300000, 18.561244, 6.013734, 6.072000 +3.316667, 18.694883, 6.013734, 6.072000 +3.333333, 18.828521, 6.013734, 6.072000 +3.350000, 18.962160, 6.013734, 6.072000 +3.366667, 19.095798, 6.013734, 6.072000 +3.383333, 19.229437, 6.013734, 6.072000 +3.400000, 19.363075, 6.013734, 6.072000 +3.416667, 19.496714, 6.013734, 6.072000 +3.433333, 19.630352, 6.013734, 6.072000 +3.450000, 19.763991, 6.013734, 6.072000 +3.466667, 19.897630, 6.013734, 6.072000 +3.483333, 20.031268, 6.013734, 6.072000 +3.500000, 20.164907, 6.013734, 6.072000 +3.516667, 20.298545, 6.013734, 6.072000 +3.533333, 20.432184, 6.013734, 6.072000 +3.550000, 20.565822, 6.013734, 6.072000 +3.566667, 20.699461, 6.013734, 6.072000 +3.583333, 20.833099, 6.013734, 6.072000 +3.600000, 20.966738, 6.013734, 6.072000 +3.616667, 21.100376, 6.013734, 6.072000 +3.633333, 21.234015, 6.013734, 6.072000 +3.650000, 21.367653, 6.013734, 6.072000 +3.666667, 21.501292, 6.013734, 6.072000 +3.683333, 21.634930, 6.013734, 6.072000 +3.700000, 21.768569, 6.013734, 6.072000 +3.716667, 21.902208, 6.013734, 6.072000 +3.733333, 22.035846, 6.013734, 6.072000 +3.750000, 22.169485, 6.013734, 6.072000 +3.766667, 22.303123, 6.013734, 6.072000 +3.783333, 22.436762, 6.013734, 6.072000 +3.800000, 22.570400, 6.013734, 6.072000 +3.816667, 22.704039, 6.013734, 6.072000 +3.833333, 22.837677, 6.013734, 6.072000 +3.850000, 22.971316, 6.013734, 6.072000 +3.866667, 23.104954, 6.013734, 6.072000 +3.883333, 23.238593, 6.013734, 6.072000 +3.900000, 23.372231, 6.013734, 6.072000 +3.916667, 23.505870, 6.013734, 6.072000 +3.933333, 23.639508, 6.013734, 6.072000 +3.950000, 23.773147, 6.013734, 6.072000 +3.966667, 23.906786, 6.013734, 6.072000 +3.983333, 24.040424, 6.013734, 6.072000 +4.000000, 24.174063, 6.013734, 6.072000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_7200_bev250_ld2_300kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_7200_bev250_ld2_300kW.csv new file mode 100644 index 0000000..542a53b --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_7200_bev250_ld2_300kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.173147, 9.142152, 9.231932 +1.016667, 0.371560, 10.476237, 10.580000 +1.033333, 0.569974, 10.476237, 10.580000 +1.050000, 0.768388, 10.476237, 10.580000 +1.066667, 0.966801, 10.476237, 10.580000 +1.083333, 1.165215, 10.476237, 10.580000 +1.100000, 1.363628, 10.476237, 10.580000 +1.116667, 1.562042, 10.476237, 10.580000 +1.133333, 1.760455, 10.476237, 10.580000 +1.150000, 1.958869, 10.476237, 10.580000 +1.166667, 2.157283, 10.476237, 10.580000 +1.183333, 2.355696, 10.476237, 10.580000 +1.200000, 2.554110, 10.476237, 10.580000 +1.216667, 2.752523, 10.476237, 10.580000 +1.233333, 2.950937, 10.476237, 10.580000 +1.250000, 3.149350, 10.476237, 10.580000 +1.266667, 3.347764, 10.476237, 10.580000 +1.283333, 3.546178, 10.476237, 10.580000 +1.300000, 3.744591, 10.476237, 10.580000 +1.316667, 3.943005, 10.476237, 10.580000 +1.333333, 4.141418, 10.476237, 10.580000 +1.350000, 4.339832, 10.476237, 10.580000 +1.366667, 4.538245, 10.476237, 10.580000 +1.383333, 4.736659, 10.476237, 10.580000 +1.400000, 4.935073, 10.476237, 10.580000 +1.416667, 5.133486, 10.476237, 10.580000 +1.433333, 5.331900, 10.476237, 10.580000 +1.450000, 5.530313, 10.476237, 10.580000 +1.466667, 5.728727, 10.476237, 10.580000 +1.483333, 5.927140, 10.476237, 10.580000 +1.500000, 6.125554, 10.476237, 10.580000 +1.516667, 6.323968, 10.476237, 10.580000 +1.533333, 6.522381, 10.476237, 10.580000 +1.550000, 6.720795, 10.476237, 10.580000 +1.566667, 6.919208, 10.476237, 10.580000 +1.583333, 7.117622, 10.476237, 10.580000 +1.600000, 7.316036, 10.476237, 10.580000 +1.616667, 7.514449, 10.476237, 10.580000 +1.633333, 7.712863, 10.476237, 10.580000 +1.650000, 7.911276, 10.476237, 10.580000 +1.666667, 8.109690, 10.476237, 10.580000 +1.683333, 8.308103, 10.476237, 10.580000 +1.700000, 8.506517, 10.476237, 10.580000 +1.716667, 8.704931, 10.476237, 10.580000 +1.733333, 8.903344, 10.476237, 10.580000 +1.750000, 9.101758, 10.476237, 10.580000 +1.766667, 9.300171, 10.476237, 10.580000 +1.783333, 9.498585, 10.476237, 10.580000 +1.800000, 9.696998, 10.476237, 10.580000 +1.816667, 9.895412, 10.476237, 10.580000 +1.833333, 10.093826, 10.476237, 10.580000 +1.850000, 10.292239, 10.476237, 10.580000 +1.866667, 10.490653, 10.476237, 10.580000 +1.883333, 10.689066, 10.476237, 10.580000 +1.900000, 10.887480, 10.476237, 10.580000 +1.916667, 11.085893, 10.476237, 10.580000 +1.933333, 11.284307, 10.476237, 10.580000 +1.950000, 11.482721, 10.476237, 10.580000 +1.966667, 11.681134, 10.476237, 10.580000 +1.983333, 11.879548, 10.476237, 10.580000 +2.000000, 12.077961, 10.476237, 10.580000 +2.016667, 12.276375, 10.476237, 10.580000 +2.033333, 12.474788, 10.476237, 10.580000 +2.050000, 12.673202, 10.476237, 10.580000 +2.066667, 12.871616, 10.476237, 10.580000 +2.083333, 13.070029, 10.476237, 10.580000 +2.100000, 13.268443, 10.476237, 10.580000 +2.116667, 13.466856, 10.476237, 10.580000 +2.133333, 13.665270, 10.476237, 10.580000 +2.150000, 13.863683, 10.476237, 10.580000 +2.166667, 14.062097, 10.476237, 10.580000 +2.183333, 14.260511, 10.476237, 10.580000 +2.200000, 14.458924, 10.476237, 10.580000 +2.216667, 14.657338, 10.476237, 10.580000 +2.233333, 14.855751, 10.476237, 10.580000 +2.250000, 15.054165, 10.476237, 10.580000 +2.266667, 15.252579, 10.476237, 10.580000 +2.283333, 15.450992, 10.476237, 10.580000 +2.300000, 15.649406, 10.476237, 10.580000 +2.316667, 15.847819, 10.476237, 10.580000 +2.333333, 16.046233, 10.476237, 10.580000 +2.350000, 16.244646, 10.476237, 10.580000 +2.366667, 16.443060, 10.476237, 10.580000 +2.383333, 16.641474, 10.476237, 10.580000 +2.400000, 16.839887, 10.476237, 10.580000 +2.416667, 17.038301, 10.476237, 10.580000 +2.433333, 17.236714, 10.476237, 10.580000 +2.450000, 17.435128, 10.476237, 10.580000 +2.466667, 17.633541, 10.476237, 10.580000 +2.483333, 17.831955, 10.476237, 10.580000 +2.500000, 18.030369, 10.476237, 10.580000 +2.516667, 18.228782, 10.476237, 10.580000 +2.533333, 18.427196, 10.476237, 10.580000 +2.550000, 18.625609, 10.476237, 10.580000 +2.566667, 18.824023, 10.476237, 10.580000 +2.583333, 19.022436, 10.476237, 10.580000 +2.600000, 19.220850, 10.476237, 10.580000 +2.616667, 19.419264, 10.476237, 10.580000 +2.633333, 19.617677, 10.476237, 10.580000 +2.650000, 19.816091, 10.476237, 10.580000 +2.666667, 20.014504, 10.476237, 10.580000 +2.683333, 20.212918, 10.476237, 10.580000 +2.700000, 20.411331, 10.476237, 10.580000 +2.716667, 20.609745, 10.476237, 10.580000 +2.733333, 20.808159, 10.476237, 10.580000 +2.750000, 21.006572, 10.476237, 10.580000 +2.766667, 21.204986, 10.476237, 10.580000 +2.783333, 21.403399, 10.476237, 10.580000 +2.800000, 21.601813, 10.476237, 10.580000 +2.816667, 21.800227, 10.476237, 10.580000 +2.833333, 21.998640, 10.476237, 10.580000 +2.850000, 22.197054, 10.476237, 10.580000 +2.866667, 22.395467, 10.476237, 10.580000 +2.883333, 22.593881, 10.476237, 10.580000 +2.900000, 22.792294, 10.476237, 10.580000 +2.916667, 22.990708, 10.476237, 10.580000 +2.933333, 23.189122, 10.476237, 10.580000 +2.950000, 23.387535, 10.476237, 10.580000 +2.966667, 23.585949, 10.476237, 10.580000 +2.983333, 23.784362, 10.476237, 10.580000 +3.000000, 23.982776, 10.476237, 10.580000 +3.016667, 24.181189, 10.476237, 10.580000 +3.033333, 24.379603, 10.476237, 10.580000 +3.050000, 24.578017, 10.476237, 10.580000 +3.066667, 24.776430, 10.476237, 10.580000 +3.083333, 24.974844, 10.476237, 10.580000 +3.100000, 25.173257, 10.476237, 10.580000 +3.116667, 25.371671, 10.476237, 10.580000 +3.133333, 25.570084, 10.476237, 10.580000 +3.150000, 25.768498, 10.476237, 10.580000 +3.166667, 25.966912, 10.476237, 10.580000 +3.183333, 26.165325, 10.476237, 10.580000 +3.200000, 26.363739, 10.476237, 10.580000 +3.216667, 26.562152, 10.476237, 10.580000 +3.233333, 26.760566, 10.476237, 10.580000 +3.250000, 26.958979, 10.476237, 10.580000 +3.266667, 27.157393, 10.476237, 10.580000 +3.283333, 27.355807, 10.476237, 10.580000 +3.300000, 27.554220, 10.476237, 10.580000 +3.316667, 27.752634, 10.476237, 10.580000 +3.333333, 27.951047, 10.476237, 10.580000 +3.350000, 28.149461, 10.476237, 10.580000 +3.366667, 28.347874, 10.476237, 10.580000 +3.383333, 28.546288, 10.476237, 10.580000 +3.400000, 28.744702, 10.476237, 10.580000 +3.416667, 28.943115, 10.476237, 10.580000 +3.433333, 29.141529, 10.476237, 10.580000 +3.450000, 29.339942, 10.476237, 10.580000 +3.466667, 29.538356, 10.476237, 10.580000 +3.483333, 29.736770, 10.476237, 10.580000 +3.500000, 29.935183, 10.476237, 10.580000 +3.516667, 30.133597, 10.476237, 10.580000 +3.533333, 30.332010, 10.476237, 10.580000 +3.550000, 30.530424, 10.476237, 10.580000 +3.566667, 30.728837, 10.476237, 10.580000 +3.583333, 30.927251, 10.476237, 10.580000 +3.600000, 31.125665, 10.476237, 10.580000 +3.616667, 31.324078, 10.476237, 10.580000 +3.633333, 31.522492, 10.476237, 10.580000 +3.650000, 31.720905, 10.476237, 10.580000 +3.666667, 31.919319, 10.476237, 10.580000 +3.683333, 32.117732, 10.476237, 10.580000 +3.700000, 32.316146, 10.476237, 10.580000 +3.716667, 32.514560, 10.476237, 10.580000 +3.733333, 32.712973, 10.476237, 10.580000 +3.750000, 32.911387, 10.476237, 10.580000 +3.766667, 33.109800, 10.476237, 10.580000 +3.783333, 33.308214, 10.476237, 10.580000 +3.800000, 33.506627, 10.476237, 10.580000 +3.816667, 33.705041, 10.476237, 10.580000 +3.833333, 33.903455, 10.476237, 10.580000 +3.850000, 34.101868, 10.476237, 10.580000 +3.866667, 34.300282, 10.476237, 10.580000 +3.883333, 34.498695, 10.476237, 10.580000 +3.900000, 34.697109, 10.476237, 10.580000 +3.916667, 34.895522, 10.476237, 10.580000 +3.933333, 35.093936, 10.476237, 10.580000 +3.950000, 35.292350, 10.476237, 10.580000 +3.966667, 35.490763, 10.476237, 10.580000 +3.983333, 35.689177, 10.476237, 10.580000 +4.000000, 35.887590, 10.476237, 10.580000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_7200_bev275_ld1_150kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_7200_bev275_ld1_150kW.csv new file mode 100644 index 0000000..8662074 --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_7200_bev275_ld1_150kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.154536, 7.695883, 7.770982 +1.016667, 0.330159, 8.746038, 8.832000 +1.033333, 0.505782, 8.746038, 8.832000 +1.050000, 0.681406, 8.746038, 8.832000 +1.066667, 0.857029, 8.746038, 8.832000 +1.083333, 1.032652, 8.746038, 8.832000 +1.100000, 1.208275, 8.746038, 8.832000 +1.116667, 1.383899, 8.746038, 8.832000 +1.133333, 1.559522, 8.746038, 8.832000 +1.150000, 1.735145, 8.746038, 8.832000 +1.166667, 1.910768, 8.746038, 8.832000 +1.183333, 2.086392, 8.746038, 8.832000 +1.200000, 2.262015, 8.746038, 8.832000 +1.216667, 2.437638, 8.746038, 8.832000 +1.233333, 2.613261, 8.746038, 8.832000 +1.250000, 2.788885, 8.746038, 8.832000 +1.266667, 2.964508, 8.746038, 8.832000 +1.283333, 3.140131, 8.746038, 8.832000 +1.300000, 3.315754, 8.746038, 8.832000 +1.316667, 3.491378, 8.746038, 8.832000 +1.333333, 3.667001, 8.746038, 8.832000 +1.350000, 3.842624, 8.746038, 8.832000 +1.366667, 4.018247, 8.746038, 8.832000 +1.383333, 4.193871, 8.746038, 8.832000 +1.400000, 4.369494, 8.746038, 8.832000 +1.416667, 4.545117, 8.746038, 8.832000 +1.433333, 4.720740, 8.746038, 8.832000 +1.450000, 4.896364, 8.746038, 8.832000 +1.466667, 5.071987, 8.746038, 8.832000 +1.483333, 5.247610, 8.746038, 8.832000 +1.500000, 5.423233, 8.746038, 8.832000 +1.516667, 5.598857, 8.746038, 8.832000 +1.533333, 5.774480, 8.746038, 8.832000 +1.550000, 5.950103, 8.746038, 8.832000 +1.566667, 6.125726, 8.746038, 8.832000 +1.583333, 6.301350, 8.746038, 8.832000 +1.600000, 6.476973, 8.746038, 8.832000 +1.616667, 6.652596, 8.746038, 8.832000 +1.633333, 6.828219, 8.746038, 8.832000 +1.650000, 7.003843, 8.746038, 8.832000 +1.666667, 7.179466, 8.746038, 8.832000 +1.683333, 7.355089, 8.746038, 8.832000 +1.700000, 7.530712, 8.746038, 8.832000 +1.716667, 7.706336, 8.746038, 8.832000 +1.733333, 7.881959, 8.746038, 8.832000 +1.750000, 8.057582, 8.746038, 8.832000 +1.766667, 8.233205, 8.746038, 8.832000 +1.783333, 8.408829, 8.746038, 8.832000 +1.800000, 8.584452, 8.746038, 8.832000 +1.816667, 8.760075, 8.746038, 8.832000 +1.833333, 8.935698, 8.746038, 8.832000 +1.850000, 9.111322, 8.746038, 8.832000 +1.866667, 9.286945, 8.746038, 8.832000 +1.883333, 9.462568, 8.746038, 8.832000 +1.900000, 9.638191, 8.746038, 8.832000 +1.916667, 9.813815, 8.746038, 8.832000 +1.933333, 9.989438, 8.746038, 8.832000 +1.950000, 10.165061, 8.746038, 8.832000 +1.966667, 10.340684, 8.746038, 8.832000 +1.983333, 10.516308, 8.746038, 8.832000 +2.000000, 10.691931, 8.746038, 8.832000 +2.016667, 10.867554, 8.746038, 8.832000 +2.033333, 11.043177, 8.746038, 8.832000 +2.050000, 11.218801, 8.746038, 8.832000 +2.066667, 11.394424, 8.746038, 8.832000 +2.083333, 11.570047, 8.746038, 8.832000 +2.100000, 11.745670, 8.746038, 8.832000 +2.116667, 11.921294, 8.746038, 8.832000 +2.133333, 12.096917, 8.746038, 8.832000 +2.150000, 12.272540, 8.746038, 8.832000 +2.166667, 12.448164, 8.746038, 8.832000 +2.183333, 12.623787, 8.746038, 8.832000 +2.200000, 12.799410, 8.746038, 8.832000 +2.216667, 12.975033, 8.746038, 8.832000 +2.233333, 13.150657, 8.746038, 8.832000 +2.250000, 13.326280, 8.746038, 8.832000 +2.266667, 13.501903, 8.746038, 8.832000 +2.283333, 13.677526, 8.746038, 8.832000 +2.300000, 13.853150, 8.746038, 8.832000 +2.316667, 14.028773, 8.746038, 8.832000 +2.333333, 14.204396, 8.746038, 8.832000 +2.350000, 14.380019, 8.746038, 8.832000 +2.366667, 14.555643, 8.746038, 8.832000 +2.383333, 14.731266, 8.746038, 8.832000 +2.400000, 14.906889, 8.746038, 8.832000 +2.416667, 15.082512, 8.746038, 8.832000 +2.433333, 15.258136, 8.746038, 8.832000 +2.450000, 15.433759, 8.746038, 8.832000 +2.466667, 15.609382, 8.746038, 8.832000 +2.483333, 15.785005, 8.746038, 8.832000 +2.500000, 15.960629, 8.746038, 8.832000 +2.516667, 16.136252, 8.746038, 8.832000 +2.533333, 16.311875, 8.746038, 8.832000 +2.550000, 16.487498, 8.746038, 8.832000 +2.566667, 16.663122, 8.746038, 8.832000 +2.583333, 16.838745, 8.746038, 8.832000 +2.600000, 17.014368, 8.746038, 8.832000 +2.616667, 17.189991, 8.746038, 8.832000 +2.633333, 17.365615, 8.746038, 8.832000 +2.650000, 17.541238, 8.746038, 8.832000 +2.666667, 17.716861, 8.746038, 8.832000 +2.683333, 17.892484, 8.746038, 8.832000 +2.700000, 18.068108, 8.746038, 8.832000 +2.716667, 18.243731, 8.746038, 8.832000 +2.733333, 18.419354, 8.746038, 8.832000 +2.750000, 18.594977, 8.746038, 8.832000 +2.766667, 18.770601, 8.746038, 8.832000 +2.783333, 18.946224, 8.746038, 8.832000 +2.800000, 19.121847, 8.746038, 8.832000 +2.816667, 19.297470, 8.746038, 8.832000 +2.833333, 19.473094, 8.746038, 8.832000 +2.850000, 19.648717, 8.746038, 8.832000 +2.866667, 19.824340, 8.746038, 8.832000 +2.883333, 19.999963, 8.746038, 8.832000 +2.900000, 20.175587, 8.746038, 8.832000 +2.916667, 20.351210, 8.746038, 8.832000 +2.933333, 20.526833, 8.746038, 8.832000 +2.950000, 20.702456, 8.746038, 8.832000 +2.966667, 20.878080, 8.746038, 8.832000 +2.983333, 21.053703, 8.746038, 8.832000 +3.000000, 21.229326, 8.746038, 8.832000 +3.016667, 21.404949, 8.746038, 8.832000 +3.033333, 21.580573, 8.746038, 8.832000 +3.050000, 21.756196, 8.746038, 8.832000 +3.066667, 21.931819, 8.746038, 8.832000 +3.083333, 22.107442, 8.746038, 8.832000 +3.100000, 22.283066, 8.746038, 8.832000 +3.116667, 22.458689, 8.746038, 8.832000 +3.133333, 22.634312, 8.746038, 8.832000 +3.150000, 22.809935, 8.746038, 8.832000 +3.166667, 22.985559, 8.746038, 8.832000 +3.183333, 23.161182, 8.746038, 8.832000 +3.200000, 23.336805, 8.746038, 8.832000 +3.216667, 23.512428, 8.746038, 8.832000 +3.233333, 23.688052, 8.746038, 8.832000 +3.250000, 23.863675, 8.746038, 8.832000 +3.266667, 24.039298, 8.746038, 8.832000 +3.283333, 24.214921, 8.746038, 8.832000 +3.300000, 24.390545, 8.746038, 8.832000 +3.316667, 24.566168, 8.746038, 8.832000 +3.333333, 24.741791, 8.746038, 8.832000 +3.350000, 24.917414, 8.746038, 8.832000 +3.366667, 25.093038, 8.746038, 8.832000 +3.383333, 25.268661, 8.746038, 8.832000 +3.400000, 25.444284, 8.746038, 8.832000 +3.416667, 25.619907, 8.746038, 8.832000 +3.433333, 25.795531, 8.746038, 8.832000 +3.450000, 25.971154, 8.746038, 8.832000 +3.466667, 26.146777, 8.746038, 8.832000 +3.483333, 26.322401, 8.746038, 8.832000 +3.500000, 26.498024, 8.746038, 8.832000 +3.516667, 26.673647, 8.746038, 8.832000 +3.533333, 26.849270, 8.746038, 8.832000 +3.550000, 27.024894, 8.746038, 8.832000 +3.566667, 27.200517, 8.746038, 8.832000 +3.583333, 27.376140, 8.746038, 8.832000 +3.600000, 27.551763, 8.746038, 8.832000 +3.616667, 27.727387, 8.746038, 8.832000 +3.633333, 27.903010, 8.746038, 8.832000 +3.650000, 28.078633, 8.746038, 8.832000 +3.666667, 28.254256, 8.746038, 8.832000 +3.683333, 28.429880, 8.746038, 8.832000 +3.700000, 28.605503, 8.746038, 8.832000 +3.716667, 28.781126, 8.746038, 8.832000 +3.733333, 28.956749, 8.746038, 8.832000 +3.750000, 29.132373, 8.746038, 8.832000 +3.766667, 29.307996, 8.746038, 8.832000 +3.783333, 29.483619, 8.746038, 8.832000 +3.800000, 29.659242, 8.746038, 8.832000 +3.816667, 29.834866, 8.746038, 8.832000 +3.833333, 30.010489, 8.746038, 8.832000 +3.850000, 30.186112, 8.746038, 8.832000 +3.866667, 30.361735, 8.746038, 8.832000 +3.883333, 30.537359, 8.746038, 8.832000 +3.900000, 30.712982, 8.746038, 8.832000 +3.916667, 30.888605, 8.746038, 8.832000 +3.933333, 31.064228, 8.746038, 8.832000 +3.950000, 31.239852, 8.746038, 8.832000 +3.966667, 31.415475, 8.746038, 8.832000 +3.983333, 31.591098, 8.746038, 8.832000 +4.000000, 31.766721, 8.746038, 8.832000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_7200_bev300_300kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_7200_bev300_300kW.csv new file mode 100644 index 0000000..e9b79da --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_7200_bev300_300kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.156285, 9.142660, 9.231932 +1.016667, 0.335377, 10.476905, 10.580000 +1.033333, 0.514470, 10.476905, 10.580000 +1.050000, 0.693562, 10.476905, 10.580000 +1.066667, 0.872654, 10.476905, 10.580000 +1.083333, 1.051747, 10.476905, 10.580000 +1.100000, 1.230839, 10.476905, 10.580000 +1.116667, 1.409932, 10.476905, 10.580000 +1.133333, 1.589024, 10.476905, 10.580000 +1.150000, 1.768116, 10.476905, 10.580000 +1.166667, 1.947209, 10.476905, 10.580000 +1.183333, 2.126301, 10.476905, 10.580000 +1.200000, 2.305393, 10.476905, 10.580000 +1.216667, 2.484486, 10.476905, 10.580000 +1.233333, 2.663578, 10.476905, 10.580000 +1.250000, 2.842671, 10.476905, 10.580000 +1.266667, 3.021763, 10.476905, 10.580000 +1.283333, 3.200855, 10.476905, 10.580000 +1.300000, 3.379948, 10.476905, 10.580000 +1.316667, 3.559040, 10.476905, 10.580000 +1.333333, 3.738133, 10.476905, 10.580000 +1.350000, 3.917225, 10.476905, 10.580000 +1.366667, 4.096317, 10.476905, 10.580000 +1.383333, 4.275410, 10.476905, 10.580000 +1.400000, 4.454502, 10.476905, 10.580000 +1.416667, 4.633595, 10.476905, 10.580000 +1.433333, 4.812687, 10.476905, 10.580000 +1.450000, 4.991779, 10.476905, 10.580000 +1.466667, 5.170872, 10.476905, 10.580000 +1.483333, 5.349964, 10.476905, 10.580000 +1.500000, 5.529056, 10.476905, 10.580000 +1.516667, 5.708149, 10.476905, 10.580000 +1.533333, 5.887241, 10.476905, 10.580000 +1.550000, 6.066334, 10.476905, 10.580000 +1.566667, 6.245426, 10.476905, 10.580000 +1.583333, 6.424518, 10.476905, 10.580000 +1.600000, 6.603611, 10.476905, 10.580000 +1.616667, 6.782703, 10.476905, 10.580000 +1.633333, 6.961796, 10.476905, 10.580000 +1.650000, 7.140888, 10.476905, 10.580000 +1.666667, 7.319980, 10.476905, 10.580000 +1.683333, 7.499073, 10.476905, 10.580000 +1.700000, 7.678165, 10.476905, 10.580000 +1.716667, 7.857258, 10.476905, 10.580000 +1.733333, 8.036350, 10.476905, 10.580000 +1.750000, 8.215442, 10.476905, 10.580000 +1.766667, 8.394535, 10.476905, 10.580000 +1.783333, 8.573627, 10.476905, 10.580000 +1.800000, 8.752719, 10.476905, 10.580000 +1.816667, 8.931812, 10.476905, 10.580000 +1.833333, 9.110904, 10.476905, 10.580000 +1.850000, 9.289997, 10.476905, 10.580000 +1.866667, 9.469089, 10.476905, 10.580000 +1.883333, 9.648181, 10.476905, 10.580000 +1.900000, 9.827274, 10.476905, 10.580000 +1.916667, 10.006366, 10.476905, 10.580000 +1.933333, 10.185459, 10.476905, 10.580000 +1.950000, 10.364551, 10.476905, 10.580000 +1.966667, 10.543643, 10.476905, 10.580000 +1.983333, 10.722736, 10.476905, 10.580000 +2.000000, 10.901828, 10.476905, 10.580000 +2.016667, 11.080921, 10.476905, 10.580000 +2.033333, 11.260013, 10.476905, 10.580000 +2.050000, 11.439105, 10.476905, 10.580000 +2.066667, 11.618198, 10.476905, 10.580000 +2.083333, 11.797290, 10.476905, 10.580000 +2.100000, 11.976382, 10.476905, 10.580000 +2.116667, 12.155475, 10.476905, 10.580000 +2.133333, 12.334567, 10.476905, 10.580000 +2.150000, 12.513660, 10.476905, 10.580000 +2.166667, 12.692752, 10.476905, 10.580000 +2.183333, 12.871844, 10.476905, 10.580000 +2.200000, 13.050937, 10.476905, 10.580000 +2.216667, 13.230029, 10.476905, 10.580000 +2.233333, 13.409122, 10.476905, 10.580000 +2.250000, 13.588214, 10.476905, 10.580000 +2.266667, 13.767306, 10.476905, 10.580000 +2.283333, 13.946399, 10.476905, 10.580000 +2.300000, 14.125491, 10.476905, 10.580000 +2.316667, 14.304584, 10.476905, 10.580000 +2.333333, 14.483676, 10.476905, 10.580000 +2.350000, 14.662768, 10.476905, 10.580000 +2.366667, 14.841861, 10.476905, 10.580000 +2.383333, 15.020953, 10.476905, 10.580000 +2.400000, 15.200045, 10.476905, 10.580000 +2.416667, 15.379138, 10.476905, 10.580000 +2.433333, 15.558230, 10.476905, 10.580000 +2.450000, 15.737323, 10.476905, 10.580000 +2.466667, 15.916415, 10.476905, 10.580000 +2.483333, 16.095507, 10.476905, 10.580000 +2.500000, 16.274600, 10.476905, 10.580000 +2.516667, 16.453692, 10.476905, 10.580000 +2.533333, 16.632785, 10.476905, 10.580000 +2.550000, 16.811877, 10.476905, 10.580000 +2.566667, 16.990969, 10.476905, 10.580000 +2.583333, 17.170062, 10.476905, 10.580000 +2.600000, 17.349154, 10.476905, 10.580000 +2.616667, 17.528247, 10.476905, 10.580000 +2.633333, 17.707339, 10.476905, 10.580000 +2.650000, 17.886431, 10.476905, 10.580000 +2.666667, 18.065524, 10.476905, 10.580000 +2.683333, 18.244616, 10.476905, 10.580000 +2.700000, 18.423708, 10.476905, 10.580000 +2.716667, 18.602801, 10.476905, 10.580000 +2.733333, 18.781893, 10.476905, 10.580000 +2.750000, 18.960986, 10.476905, 10.580000 +2.766667, 19.140078, 10.476905, 10.580000 +2.783333, 19.319170, 10.476905, 10.580000 +2.800000, 19.498263, 10.476905, 10.580000 +2.816667, 19.677355, 10.476905, 10.580000 +2.833333, 19.856448, 10.476905, 10.580000 +2.850000, 20.035540, 10.476905, 10.580000 +2.866667, 20.214632, 10.476905, 10.580000 +2.883333, 20.393725, 10.476905, 10.580000 +2.900000, 20.572817, 10.476905, 10.580000 +2.916667, 20.751910, 10.476905, 10.580000 +2.933333, 20.931002, 10.476905, 10.580000 +2.950000, 21.110094, 10.476905, 10.580000 +2.966667, 21.289187, 10.476905, 10.580000 +2.983333, 21.468279, 10.476905, 10.580000 +3.000000, 21.647371, 10.476905, 10.580000 +3.016667, 21.826464, 10.476905, 10.580000 +3.033333, 22.005556, 10.476905, 10.580000 +3.050000, 22.184649, 10.476905, 10.580000 +3.066667, 22.363741, 10.476905, 10.580000 +3.083333, 22.542833, 10.476905, 10.580000 +3.100000, 22.721926, 10.476905, 10.580000 +3.116667, 22.901018, 10.476905, 10.580000 +3.133333, 23.080111, 10.476905, 10.580000 +3.150000, 23.259203, 10.476905, 10.580000 +3.166667, 23.438295, 10.476905, 10.580000 +3.183333, 23.617388, 10.476905, 10.580000 +3.200000, 23.796480, 10.476905, 10.580000 +3.216667, 23.975573, 10.476905, 10.580000 +3.233333, 24.154665, 10.476905, 10.580000 +3.250000, 24.333757, 10.476905, 10.580000 +3.266667, 24.512850, 10.476905, 10.580000 +3.283333, 24.691942, 10.476905, 10.580000 +3.300000, 24.871034, 10.476905, 10.580000 +3.316667, 25.050127, 10.476905, 10.580000 +3.333333, 25.229219, 10.476905, 10.580000 +3.350000, 25.408312, 10.476905, 10.580000 +3.366667, 25.587404, 10.476905, 10.580000 +3.383333, 25.766496, 10.476905, 10.580000 +3.400000, 25.945589, 10.476905, 10.580000 +3.416667, 26.124681, 10.476905, 10.580000 +3.433333, 26.303774, 10.476905, 10.580000 +3.450000, 26.482866, 10.476905, 10.580000 +3.466667, 26.661958, 10.476905, 10.580000 +3.483333, 26.841051, 10.476905, 10.580000 +3.500000, 27.020143, 10.476905, 10.580000 +3.516667, 27.199236, 10.476905, 10.580000 +3.533333, 27.378328, 10.476905, 10.580000 +3.550000, 27.557420, 10.476905, 10.580000 +3.566667, 27.736513, 10.476905, 10.580000 +3.583333, 27.915605, 10.476905, 10.580000 +3.600000, 28.094697, 10.476905, 10.580000 +3.616667, 28.273790, 10.476905, 10.580000 +3.633333, 28.452882, 10.476905, 10.580000 +3.650000, 28.631975, 10.476905, 10.580000 +3.666667, 28.811067, 10.476905, 10.580000 +3.683333, 28.990159, 10.476905, 10.580000 +3.700000, 29.169252, 10.476905, 10.580000 +3.716667, 29.348344, 10.476905, 10.580000 +3.733333, 29.527437, 10.476905, 10.580000 +3.750000, 29.706529, 10.476905, 10.580000 +3.766667, 29.885621, 10.476905, 10.580000 +3.783333, 30.064714, 10.476905, 10.580000 +3.800000, 30.243806, 10.476905, 10.580000 +3.816667, 30.422899, 10.476905, 10.580000 +3.833333, 30.601991, 10.476905, 10.580000 +3.850000, 30.781083, 10.476905, 10.580000 +3.866667, 30.960176, 10.476905, 10.580000 +3.883333, 31.139268, 10.476905, 10.580000 +3.900000, 31.318360, 10.476905, 10.580000 +3.916667, 31.497453, 10.476905, 10.580000 +3.933333, 31.676545, 10.476905, 10.580000 +3.950000, 31.855638, 10.476905, 10.580000 +3.966667, 32.034730, 10.476905, 10.580000 +3.983333, 32.213822, 10.476905, 10.580000 +4.000000, 32.392915, 10.476905, 10.580000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_7200_bev300_400kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_7200_bev300_400kW.csv new file mode 100644 index 0000000..cff4bbb --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_7200_bev300_400kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.155713, 9.109203, 9.231932 +1.016667, 0.334144, 10.438204, 10.580000 +1.033333, 0.512575, 10.438204, 10.580000 +1.050000, 0.691005, 10.438204, 10.580000 +1.066667, 0.869436, 10.438204, 10.580000 +1.083333, 1.047867, 10.438204, 10.580000 +1.100000, 1.226298, 10.438204, 10.580000 +1.116667, 1.404729, 10.438204, 10.580000 +1.133333, 1.583160, 10.438204, 10.580000 +1.150000, 1.761590, 10.438204, 10.580000 +1.166667, 1.940021, 10.438204, 10.580000 +1.183333, 2.118452, 10.438204, 10.580000 +1.200000, 2.296883, 10.438204, 10.580000 +1.216667, 2.475314, 10.438204, 10.580000 +1.233333, 2.653745, 10.438204, 10.580000 +1.250000, 2.832176, 10.438204, 10.580000 +1.266667, 3.010606, 10.438204, 10.580000 +1.283333, 3.189037, 10.438204, 10.580000 +1.300000, 3.367468, 10.438204, 10.580000 +1.316667, 3.545899, 10.438204, 10.580000 +1.333333, 3.724330, 10.438204, 10.580000 +1.350000, 3.902761, 10.438204, 10.580000 +1.366667, 4.081191, 10.438204, 10.580000 +1.383333, 4.259622, 10.438204, 10.580000 +1.400000, 4.438053, 10.438204, 10.580000 +1.416667, 4.616484, 10.438204, 10.580000 +1.433333, 4.794915, 10.438204, 10.580000 +1.450000, 4.973346, 10.438204, 10.580000 +1.466667, 5.151776, 10.438204, 10.580000 +1.483333, 5.330207, 10.438204, 10.580000 +1.500000, 5.508638, 10.438204, 10.580000 +1.516667, 5.687069, 10.438204, 10.580000 +1.533333, 5.865500, 10.438204, 10.580000 +1.550000, 6.043931, 10.438204, 10.580000 +1.566667, 6.222362, 10.438204, 10.580000 +1.583333, 6.400792, 10.438204, 10.580000 +1.600000, 6.579223, 10.438204, 10.580000 +1.616667, 6.757654, 10.438204, 10.580000 +1.633333, 6.936085, 10.438204, 10.580000 +1.650000, 7.114516, 10.438204, 10.580000 +1.666667, 7.292947, 10.438204, 10.580000 +1.683333, 7.471377, 10.438204, 10.580000 +1.700000, 7.649808, 10.438204, 10.580000 +1.716667, 7.828239, 10.438204, 10.580000 +1.733333, 8.006670, 10.438204, 10.580000 +1.750000, 8.185101, 10.438204, 10.580000 +1.766667, 8.363532, 10.438204, 10.580000 +1.783333, 8.541962, 10.438204, 10.580000 +1.800000, 8.720393, 10.438204, 10.580000 +1.816667, 8.898824, 10.438204, 10.580000 +1.833333, 9.077255, 10.438204, 10.580000 +1.850000, 9.255686, 10.438204, 10.580000 +1.866667, 9.434117, 10.438204, 10.580000 +1.883333, 9.612548, 10.438204, 10.580000 +1.900000, 9.790978, 10.438204, 10.580000 +1.916667, 9.969409, 10.438204, 10.580000 +1.933333, 10.147840, 10.438204, 10.580000 +1.950000, 10.326271, 10.438204, 10.580000 +1.966667, 10.504702, 10.438204, 10.580000 +1.983333, 10.683133, 10.438204, 10.580000 +2.000000, 10.861563, 10.438204, 10.580000 +2.016667, 11.039994, 10.438204, 10.580000 +2.033333, 11.218425, 10.438204, 10.580000 +2.050000, 11.396856, 10.438204, 10.580000 +2.066667, 11.575287, 10.438204, 10.580000 +2.083333, 11.753718, 10.438204, 10.580000 +2.100000, 11.932148, 10.438204, 10.580000 +2.116667, 12.110579, 10.438204, 10.580000 +2.133333, 12.289010, 10.438204, 10.580000 +2.150000, 12.467441, 10.438204, 10.580000 +2.166667, 12.645872, 10.438204, 10.580000 +2.183333, 12.824303, 10.438204, 10.580000 +2.200000, 13.002734, 10.438204, 10.580000 +2.216667, 13.181164, 10.438204, 10.580000 +2.233333, 13.359595, 10.438204, 10.580000 +2.250000, 13.538026, 10.438204, 10.580000 +2.266667, 13.716457, 10.438204, 10.580000 +2.283333, 13.894888, 10.438204, 10.580000 +2.300000, 14.073319, 10.438204, 10.580000 +2.316667, 14.251749, 10.438204, 10.580000 +2.333333, 14.430180, 10.438204, 10.580000 +2.350000, 14.608611, 10.438204, 10.580000 +2.366667, 14.787042, 10.438204, 10.580000 +2.383333, 14.965473, 10.438204, 10.580000 +2.400000, 15.143904, 10.438204, 10.580000 +2.416667, 15.322334, 10.438204, 10.580000 +2.433333, 15.500765, 10.438204, 10.580000 +2.450000, 15.679196, 10.438204, 10.580000 +2.466667, 15.857627, 10.438204, 10.580000 +2.483333, 16.036058, 10.438204, 10.580000 +2.500000, 16.214489, 10.438204, 10.580000 +2.516667, 16.392920, 10.438204, 10.580000 +2.533333, 16.571350, 10.438204, 10.580000 +2.550000, 16.749781, 10.438204, 10.580000 +2.566667, 16.928212, 10.438204, 10.580000 +2.583333, 17.106643, 10.438204, 10.580000 +2.600000, 17.285074, 10.438204, 10.580000 +2.616667, 17.463505, 10.438204, 10.580000 +2.633333, 17.641935, 10.438204, 10.580000 +2.650000, 17.820366, 10.438204, 10.580000 +2.666667, 17.998797, 10.438204, 10.580000 +2.683333, 18.177228, 10.438204, 10.580000 +2.700000, 18.355659, 10.438204, 10.580000 +2.716667, 18.534090, 10.438204, 10.580000 +2.733333, 18.712520, 10.438204, 10.580000 +2.750000, 18.890951, 10.438204, 10.580000 +2.766667, 19.069382, 10.438204, 10.580000 +2.783333, 19.247813, 10.438204, 10.580000 +2.800000, 19.426244, 10.438204, 10.580000 +2.816667, 19.604675, 10.438204, 10.580000 +2.833333, 19.783106, 10.438204, 10.580000 +2.850000, 19.961536, 10.438204, 10.580000 +2.866667, 20.139967, 10.438204, 10.580000 +2.883333, 20.318398, 10.438204, 10.580000 +2.900000, 20.496829, 10.438204, 10.580000 +2.916667, 20.675260, 10.438204, 10.580000 +2.933333, 20.853691, 10.438204, 10.580000 +2.950000, 21.032121, 10.438204, 10.580000 +2.966667, 21.210552, 10.438204, 10.580000 +2.983333, 21.388983, 10.438204, 10.580000 +3.000000, 21.567414, 10.438204, 10.580000 +3.016667, 21.745845, 10.438204, 10.580000 +3.033333, 21.924276, 10.438204, 10.580000 +3.050000, 22.102707, 10.438204, 10.580000 +3.066667, 22.281137, 10.438204, 10.580000 +3.083333, 22.459568, 10.438204, 10.580000 +3.100000, 22.637999, 10.438204, 10.580000 +3.116667, 22.816430, 10.438204, 10.580000 +3.133333, 22.994861, 10.438204, 10.580000 +3.150000, 23.173292, 10.438204, 10.580000 +3.166667, 23.351722, 10.438204, 10.580000 +3.183333, 23.530153, 10.438204, 10.580000 +3.200000, 23.708584, 10.438204, 10.580000 +3.216667, 23.887015, 10.438204, 10.580000 +3.233333, 24.065446, 10.438204, 10.580000 +3.250000, 24.243877, 10.438204, 10.580000 +3.266667, 24.422307, 10.438204, 10.580000 +3.283333, 24.600738, 10.438204, 10.580000 +3.300000, 24.779169, 10.438204, 10.580000 +3.316667, 24.957600, 10.438204, 10.580000 +3.333333, 25.136031, 10.438204, 10.580000 +3.350000, 25.314462, 10.438204, 10.580000 +3.366667, 25.492893, 10.438204, 10.580000 +3.383333, 25.671323, 10.438204, 10.580000 +3.400000, 25.849754, 10.438204, 10.580000 +3.416667, 26.028185, 10.438204, 10.580000 +3.433333, 26.206616, 10.438204, 10.580000 +3.450000, 26.385047, 10.438204, 10.580000 +3.466667, 26.563478, 10.438204, 10.580000 +3.483333, 26.741908, 10.438204, 10.580000 +3.500000, 26.920339, 10.438204, 10.580000 +3.516667, 27.098770, 10.438204, 10.580000 +3.533333, 27.277201, 10.438204, 10.580000 +3.550000, 27.455632, 10.438204, 10.580000 +3.566667, 27.634063, 10.438204, 10.580000 +3.583333, 27.812493, 10.438204, 10.580000 +3.600000, 27.990924, 10.438204, 10.580000 +3.616667, 28.169355, 10.438204, 10.580000 +3.633333, 28.347786, 10.438204, 10.580000 +3.650000, 28.526217, 10.438204, 10.580000 +3.666667, 28.704648, 10.438204, 10.580000 +3.683333, 28.883079, 10.438204, 10.580000 +3.700000, 29.061509, 10.438204, 10.580000 +3.716667, 29.239940, 10.438204, 10.580000 +3.733333, 29.418371, 10.438204, 10.580000 +3.750000, 29.596802, 10.438204, 10.580000 +3.766667, 29.775233, 10.438204, 10.580000 +3.783333, 29.953664, 10.438204, 10.580000 +3.800000, 30.132094, 10.438204, 10.580000 +3.816667, 30.310525, 10.438204, 10.580000 +3.833333, 30.488956, 10.438204, 10.580000 +3.850000, 30.667387, 10.438204, 10.580000 +3.866667, 30.845818, 10.438204, 10.580000 +3.883333, 31.024249, 10.438204, 10.580000 +3.900000, 31.202679, 10.438204, 10.580000 +3.916667, 31.381110, 10.438204, 10.580000 +3.933333, 31.559541, 10.438204, 10.580000 +3.950000, 31.737972, 10.438204, 10.580000 +3.966667, 31.916403, 10.438204, 10.580000 +3.983333, 32.094834, 10.438204, 10.580000 +4.000000, 32.273265, 10.438204, 10.580000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_7200_bev300_575kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_7200_bev300_575kW.csv new file mode 100644 index 0000000..6571484 --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_7200_bev300_575kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.106566, 9.111366, 9.231932 +1.016667, 0.228683, 10.441045, 10.580000 +1.033333, 0.350801, 10.441045, 10.580000 +1.050000, 0.472918, 10.441045, 10.580000 +1.066667, 0.595036, 10.441045, 10.580000 +1.083333, 0.717153, 10.441045, 10.580000 +1.100000, 0.839271, 10.441045, 10.580000 +1.116667, 0.961388, 10.441045, 10.580000 +1.133333, 1.083506, 10.441045, 10.580000 +1.150000, 1.205623, 10.441045, 10.580000 +1.166667, 1.327741, 10.441045, 10.580000 +1.183333, 1.449858, 10.441045, 10.580000 +1.200000, 1.571976, 10.441045, 10.580000 +1.216667, 1.694093, 10.441045, 10.580000 +1.233333, 1.816210, 10.441045, 10.580000 +1.250000, 1.938328, 10.441045, 10.580000 +1.266667, 2.060445, 10.441045, 10.580000 +1.283333, 2.182563, 10.441045, 10.580000 +1.300000, 2.304680, 10.441045, 10.580000 +1.316667, 2.426798, 10.441045, 10.580000 +1.333333, 2.548915, 10.441045, 10.580000 +1.350000, 2.671033, 10.441045, 10.580000 +1.366667, 2.793150, 10.441045, 10.580000 +1.383333, 2.915268, 10.441045, 10.580000 +1.400000, 3.037385, 10.441045, 10.580000 +1.416667, 3.159503, 10.441045, 10.580000 +1.433333, 3.281620, 10.441045, 10.580000 +1.450000, 3.403738, 10.441045, 10.580000 +1.466667, 3.525855, 10.441045, 10.580000 +1.483333, 3.647973, 10.441045, 10.580000 +1.500000, 3.770090, 10.441045, 10.580000 +1.516667, 3.892208, 10.441045, 10.580000 +1.533333, 4.014325, 10.441045, 10.580000 +1.550000, 4.136443, 10.441045, 10.580000 +1.566667, 4.258560, 10.441045, 10.580000 +1.583333, 4.380678, 10.441045, 10.580000 +1.600000, 4.502795, 10.441045, 10.580000 +1.616667, 4.624913, 10.441045, 10.580000 +1.633333, 4.747030, 10.441045, 10.580000 +1.650000, 4.869148, 10.441045, 10.580000 +1.666667, 4.991265, 10.441045, 10.580000 +1.683333, 5.113383, 10.441045, 10.580000 +1.700000, 5.235500, 10.441045, 10.580000 +1.716667, 5.357618, 10.441045, 10.580000 +1.733333, 5.479735, 10.441045, 10.580000 +1.750000, 5.601853, 10.441045, 10.580000 +1.766667, 5.723970, 10.441045, 10.580000 +1.783333, 5.846087, 10.441045, 10.580000 +1.800000, 5.968205, 10.441045, 10.580000 +1.816667, 6.090322, 10.441045, 10.580000 +1.833333, 6.212440, 10.441045, 10.580000 +1.850000, 6.334557, 10.441045, 10.580000 +1.866667, 6.456675, 10.441045, 10.580000 +1.883333, 6.578792, 10.441045, 10.580000 +1.900000, 6.700910, 10.441045, 10.580000 +1.916667, 6.823027, 10.441045, 10.580000 +1.933333, 6.945145, 10.441045, 10.580000 +1.950000, 7.067262, 10.441045, 10.580000 +1.966667, 7.189380, 10.441045, 10.580000 +1.983333, 7.311497, 10.441045, 10.580000 +2.000000, 7.433615, 10.441045, 10.580000 +2.016667, 7.555732, 10.441045, 10.580000 +2.033333, 7.677850, 10.441045, 10.580000 +2.050000, 7.799967, 10.441045, 10.580000 +2.066667, 7.922085, 10.441045, 10.580000 +2.083333, 8.044202, 10.441045, 10.580000 +2.100000, 8.166320, 10.441045, 10.580000 +2.116667, 8.288437, 10.441045, 10.580000 +2.133333, 8.410555, 10.441045, 10.580000 +2.150000, 8.532672, 10.441045, 10.580000 +2.166667, 8.654790, 10.441045, 10.580000 +2.183333, 8.776907, 10.441045, 10.580000 +2.200000, 8.899025, 10.441045, 10.580000 +2.216667, 9.021142, 10.441045, 10.580000 +2.233333, 9.143260, 10.441045, 10.580000 +2.250000, 9.265377, 10.441045, 10.580000 +2.266667, 9.387495, 10.441045, 10.580000 +2.283333, 9.509612, 10.441045, 10.580000 +2.300000, 9.631730, 10.441045, 10.580000 +2.316667, 9.753847, 10.441045, 10.580000 +2.333333, 9.875965, 10.441045, 10.580000 +2.350000, 9.998082, 10.441045, 10.580000 +2.366667, 10.120199, 10.441045, 10.580000 +2.383333, 10.242317, 10.441045, 10.580000 +2.400000, 10.364434, 10.441045, 10.580000 +2.416667, 10.486552, 10.441045, 10.580000 +2.433333, 10.608669, 10.441045, 10.580000 +2.450000, 10.730787, 10.441045, 10.580000 +2.466667, 10.852904, 10.441045, 10.580000 +2.483333, 10.975022, 10.441045, 10.580000 +2.500000, 11.097139, 10.441045, 10.580000 +2.516667, 11.219257, 10.441045, 10.580000 +2.533333, 11.341374, 10.441045, 10.580000 +2.550000, 11.463492, 10.441045, 10.580000 +2.566667, 11.585609, 10.441045, 10.580000 +2.583333, 11.707727, 10.441045, 10.580000 +2.600000, 11.829844, 10.441045, 10.580000 +2.616667, 11.951962, 10.441045, 10.580000 +2.633333, 12.074079, 10.441045, 10.580000 +2.650000, 12.196197, 10.441045, 10.580000 +2.666667, 12.318314, 10.441045, 10.580000 +2.683333, 12.440432, 10.441045, 10.580000 +2.700000, 12.562549, 10.441045, 10.580000 +2.716667, 12.684667, 10.441045, 10.580000 +2.733333, 12.806784, 10.441045, 10.580000 +2.750000, 12.928902, 10.441045, 10.580000 +2.766667, 13.051019, 10.441045, 10.580000 +2.783333, 13.173137, 10.441045, 10.580000 +2.800000, 13.295254, 10.441045, 10.580000 +2.816667, 13.417372, 10.441045, 10.580000 +2.833333, 13.539489, 10.441045, 10.580000 +2.850000, 13.661607, 10.441045, 10.580000 +2.866667, 13.783724, 10.441045, 10.580000 +2.883333, 13.905842, 10.441045, 10.580000 +2.900000, 14.027959, 10.441045, 10.580000 +2.916667, 14.150076, 10.441045, 10.580000 +2.933333, 14.272194, 10.441045, 10.580000 +2.950000, 14.394311, 10.441045, 10.580000 +2.966667, 14.516429, 10.441045, 10.580000 +2.983333, 14.638546, 10.441045, 10.580000 +3.000000, 14.760664, 10.441045, 10.580000 +3.016667, 14.882781, 10.441045, 10.580000 +3.033333, 15.004899, 10.441045, 10.580000 +3.050000, 15.127016, 10.441045, 10.580000 +3.066667, 15.249134, 10.441045, 10.580000 +3.083333, 15.371251, 10.441045, 10.580000 +3.100000, 15.493369, 10.441045, 10.580000 +3.116667, 15.615486, 10.441045, 10.580000 +3.133333, 15.737604, 10.441045, 10.580000 +3.150000, 15.859721, 10.441045, 10.580000 +3.166667, 15.981839, 10.441045, 10.580000 +3.183333, 16.103956, 10.441045, 10.580000 +3.200000, 16.226074, 10.441045, 10.580000 +3.216667, 16.348191, 10.441045, 10.580000 +3.233333, 16.470309, 10.441045, 10.580000 +3.250000, 16.592426, 10.441045, 10.580000 +3.266667, 16.714544, 10.441045, 10.580000 +3.283333, 16.836661, 10.441045, 10.580000 +3.300000, 16.958779, 10.441045, 10.580000 +3.316667, 17.080896, 10.441045, 10.580000 +3.333333, 17.203014, 10.441045, 10.580000 +3.350000, 17.325131, 10.441045, 10.580000 +3.366667, 17.447249, 10.441045, 10.580000 +3.383333, 17.569366, 10.441045, 10.580000 +3.400000, 17.691484, 10.441045, 10.580000 +3.416667, 17.813601, 10.441045, 10.580000 +3.433333, 17.935719, 10.441045, 10.580000 +3.450000, 18.057836, 10.441045, 10.580000 +3.466667, 18.179954, 10.441045, 10.580000 +3.483333, 18.302071, 10.441045, 10.580000 +3.500000, 18.424188, 10.441045, 10.580000 +3.516667, 18.546306, 10.441045, 10.580000 +3.533333, 18.668423, 10.441045, 10.580000 +3.550000, 18.790541, 10.441045, 10.580000 +3.566667, 18.912658, 10.441045, 10.580000 +3.583333, 19.034776, 10.441045, 10.580000 +3.600000, 19.156893, 10.441045, 10.580000 +3.616667, 19.279011, 10.441045, 10.580000 +3.633333, 19.401128, 10.441045, 10.580000 +3.650000, 19.523246, 10.441045, 10.580000 +3.666667, 19.645363, 10.441045, 10.580000 +3.683333, 19.767481, 10.441045, 10.580000 +3.700000, 19.889598, 10.441045, 10.580000 +3.716667, 20.011716, 10.441045, 10.580000 +3.733333, 20.133833, 10.441045, 10.580000 +3.750000, 20.255951, 10.441045, 10.580000 +3.766667, 20.378068, 10.441045, 10.580000 +3.783333, 20.500186, 10.441045, 10.580000 +3.800000, 20.622303, 10.441045, 10.580000 +3.816667, 20.744421, 10.441045, 10.580000 +3.833333, 20.866538, 10.441045, 10.580000 +3.850000, 20.988656, 10.441045, 10.580000 +3.866667, 21.110773, 10.441045, 10.580000 +3.883333, 21.232891, 10.441045, 10.580000 +3.900000, 21.355008, 10.441045, 10.580000 +3.916667, 21.477126, 10.441045, 10.580000 +3.933333, 21.599243, 10.441045, 10.580000 +3.950000, 21.721361, 10.441045, 10.580000 +3.966667, 21.843478, 10.441045, 10.580000 +3.983333, 21.965596, 10.441045, 10.580000 +4.000000, 22.087713, 10.441045, 10.580000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_7200_phev20.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_7200_phev20.csv new file mode 100644 index 0000000..ac64bef --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_7200_phev20.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.898032, 2.694096, 2.727091 +1.016667, 1.891008, 2.978929, 3.016365 +1.033333, 2.883985, 2.978929, 3.016365 +1.050000, 3.876961, 2.978929, 3.016365 +1.066667, 4.869937, 2.978929, 3.016365 +1.083333, 5.862914, 2.978929, 3.016365 +1.100000, 6.855890, 2.978929, 3.016365 +1.116667, 7.848866, 2.978929, 3.016365 +1.133333, 8.841843, 2.978929, 3.016365 +1.150000, 9.834819, 2.978929, 3.016365 +1.166667, 10.827795, 2.978929, 3.016365 +1.183333, 11.820772, 2.978929, 3.016365 +1.200000, 12.813748, 2.978929, 3.016365 +1.216667, 13.806724, 2.978929, 3.016365 +1.233333, 14.799701, 2.978929, 3.016365 +1.250000, 15.792677, 2.978929, 3.016365 +1.266667, 16.785653, 2.978929, 3.016365 +1.283333, 17.778630, 2.978929, 3.016365 +1.300000, 18.771606, 2.978929, 3.016365 +1.316667, 19.764582, 2.978929, 3.016365 +1.333333, 20.757559, 2.978929, 3.016365 +1.350000, 21.750535, 2.978929, 3.016365 +1.366667, 22.743511, 2.978929, 3.016365 +1.383333, 23.736488, 2.978929, 3.016365 +1.400000, 24.729464, 2.978929, 3.016365 +1.416667, 25.722440, 2.978929, 3.016365 +1.433333, 26.715417, 2.978929, 3.016365 +1.450000, 27.708393, 2.978929, 3.016365 +1.466667, 28.701369, 2.978929, 3.016365 +1.483333, 29.694346, 2.978929, 3.016365 +1.500000, 30.687322, 2.978929, 3.016365 +1.516667, 31.680298, 2.978929, 3.016365 +1.533333, 32.673275, 2.978929, 3.016365 +1.550000, 33.666251, 2.978929, 3.016365 +1.566667, 34.659227, 2.978929, 3.016365 +1.583333, 35.652204, 2.978929, 3.016365 +1.600000, 36.645180, 2.978929, 3.016365 +1.616667, 37.638156, 2.978929, 3.016365 +1.633333, 38.631133, 2.978929, 3.016365 +1.650000, 39.624109, 2.978929, 3.016365 +1.666667, 40.617085, 2.978929, 3.016365 +1.683333, 41.610062, 2.978929, 3.016365 +1.700000, 42.603038, 2.978929, 3.016365 +1.716667, 43.596014, 2.978929, 3.016365 +1.733333, 44.588991, 2.978929, 3.016365 +1.750000, 45.581967, 2.978929, 3.016365 +1.766667, 46.574943, 2.978929, 3.016365 +1.783333, 47.567920, 2.978929, 3.016365 +1.800000, 48.560896, 2.978929, 3.016365 +1.816667, 49.553872, 2.978929, 3.016365 +1.833333, 50.546849, 2.978929, 3.016365 +1.850000, 51.539825, 2.978929, 3.016365 +1.866667, 52.532801, 2.978929, 3.016365 +1.883333, 53.525778, 2.978929, 3.016365 +1.900000, 54.518754, 2.978929, 3.016365 +1.916667, 55.511730, 2.978929, 3.016365 +1.933333, 56.504707, 2.978929, 3.016365 +1.950000, 57.497683, 2.978929, 3.016365 +1.966667, 58.490659, 2.978929, 3.016365 +1.983333, 59.483636, 2.978929, 3.016365 +2.000000, 60.476612, 2.978929, 3.016365 +2.016667, 61.469588, 2.978929, 3.016365 +2.033333, 62.462565, 2.978929, 3.016365 +2.050000, 63.455541, 2.978929, 3.016365 +2.066667, 64.448517, 2.978929, 3.016365 +2.083333, 65.441494, 2.978929, 3.016365 +2.100000, 66.434470, 2.978929, 3.016365 +2.116667, 67.427446, 2.978929, 3.016365 +2.133333, 68.420423, 2.978929, 3.016365 +2.150000, 69.413399, 2.978929, 3.016365 +2.166667, 70.406375, 2.978929, 3.016365 +2.183333, 71.399352, 2.978929, 3.016365 +2.200000, 72.392328, 2.978929, 3.016365 +2.216667, 73.385305, 2.978929, 3.016365 +2.233333, 74.378281, 2.978929, 3.016365 +2.250000, 75.371257, 2.978929, 3.016365 +2.266667, 76.364234, 2.978929, 3.016365 +2.283333, 77.357210, 2.978929, 3.016365 +2.300000, 78.350186, 2.978929, 3.016365 +2.316667, 79.343163, 2.978929, 3.016365 +2.333333, 80.336139, 2.978929, 3.016365 +2.350000, 81.329115, 2.978929, 3.016365 +2.366667, 82.322092, 2.978929, 3.016365 +2.383333, 83.315068, 2.978929, 3.016365 +2.400000, 84.308044, 2.978929, 3.016365 +2.416667, 85.301021, 2.978929, 3.016365 +2.433333, 86.293997, 2.978929, 3.016365 +2.450000, 87.286973, 2.978929, 3.016365 +2.466667, 88.279950, 2.978929, 3.016365 +2.483333, 89.272926, 2.978929, 3.016365 +2.500000, 90.265902, 2.978929, 3.016365 +2.516667, 91.258879, 2.978929, 3.016365 +2.533333, 92.251855, 2.978929, 3.016365 +2.550000, 93.244831, 2.978929, 3.016365 +2.566667, 94.237808, 2.978929, 3.016365 +2.583333, 95.230784, 2.978929, 3.016365 +2.600000, 96.200447, 2.908988, 2.945317 +2.616667, 97.014284, 2.441512, 2.470723 +2.633333, 97.678106, 1.991465, 2.014288 +2.650000, 98.219377, 1.623813, 1.641756 +2.666667, 98.660664, 1.323863, 1.338049 +2.683333, 99.020400, 1.079206, 1.090476 +2.700000, 99.313629, 0.879688, 0.888679 +2.716667, 99.552631, 0.717005, 0.724204 +2.733333, 99.747422, 0.584375, 0.590156 +2.750000, 99.800407, 0.158954, 0.160452 +2.766667, 99.800495, 0.000265, 0.000267 +2.783333, 99.800495, 0.000000, 0.000000 +2.800000, 99.800495, 0.000000, 0.000000 +2.816667, 99.800495, 0.000000, 0.000000 +2.833333, 99.800495, 0.000000, 0.000000 +2.850000, 99.800495, 0.000000, 0.000000 +2.866667, 99.800495, 0.000000, 0.000000 +2.883333, 99.800495, 0.000000, 0.000000 +2.900000, 99.800495, 0.000000, 0.000000 +2.916667, 99.800495, 0.000000, 0.000000 +2.933333, 99.800495, 0.000000, 0.000000 +2.950000, 99.800495, 0.000000, 0.000000 +2.966667, 99.800495, 0.000000, 0.000000 +2.983333, 99.800495, 0.000000, 0.000000 +3.000000, 99.800495, 0.000000, 0.000000 +3.016667, 99.800495, 0.000000, 0.000000 +3.033333, 99.800495, 0.000000, 0.000000 +3.050000, 99.800495, 0.000000, 0.000000 +3.066667, 99.800495, 0.000000, 0.000000 +3.083333, 99.800495, 0.000000, 0.000000 +3.100000, 99.800495, 0.000000, 0.000000 +3.116667, 99.800495, 0.000000, 0.000000 +3.133333, 99.800495, 0.000000, 0.000000 +3.150000, 99.800495, 0.000000, 0.000000 +3.166667, 99.800495, 0.000000, 0.000000 +3.183333, 99.800495, 0.000000, 0.000000 +3.200000, 99.800495, 0.000000, 0.000000 +3.216667, 99.800495, 0.000000, 0.000000 +3.233333, 99.800495, 0.000000, 0.000000 +3.250000, 99.800495, 0.000000, 0.000000 +3.266667, 99.800495, 0.000000, 0.000000 +3.283333, 99.800495, 0.000000, 0.000000 +3.300000, 99.800495, 0.000000, 0.000000 +3.316667, 99.800495, 0.000000, 0.000000 +3.333333, 99.800495, 0.000000, 0.000000 +3.350000, 99.800495, 0.000000, 0.000000 +3.366667, 99.800495, 0.000000, 0.000000 +3.383333, 99.800495, 0.000000, 0.000000 +3.400000, 99.800495, 0.000000, 0.000000 +3.416667, 99.800495, 0.000000, 0.000000 +3.433333, 99.800495, 0.000000, 0.000000 +3.450000, 99.800495, 0.000000, 0.000000 +3.466667, 99.800495, 0.000000, 0.000000 +3.483333, 99.800495, 0.000000, 0.000000 +3.500000, 99.800495, 0.000000, 0.000000 +3.516667, 99.800495, 0.000000, 0.000000 +3.533333, 99.800495, 0.000000, 0.000000 +3.550000, 99.800495, 0.000000, 0.000000 +3.566667, 99.800495, 0.000000, 0.000000 +3.583333, 99.800495, 0.000000, 0.000000 +3.600000, 99.800495, 0.000000, 0.000000 +3.616667, 99.800495, 0.000000, 0.000000 +3.633333, 99.800495, 0.000000, 0.000000 +3.650000, 99.800495, 0.000000, 0.000000 +3.666667, 99.800495, 0.000000, 0.000000 +3.683333, 99.800495, 0.000000, 0.000000 +3.700000, 99.800495, 0.000000, 0.000000 +3.716667, 99.800495, 0.000000, 0.000000 +3.733333, 99.800495, 0.000000, 0.000000 +3.750000, 99.800495, 0.000000, 0.000000 +3.766667, 99.800495, 0.000000, 0.000000 +3.783333, 99.800495, 0.000000, 0.000000 +3.800000, 99.800495, 0.000000, 0.000000 +3.816667, 99.800495, 0.000000, 0.000000 +3.833333, 99.800495, 0.000000, 0.000000 +3.850000, 99.800495, 0.000000, 0.000000 +3.866667, 99.800495, 0.000000, 0.000000 +3.883333, 99.800495, 0.000000, 0.000000 +3.900000, 99.800495, 0.000000, 0.000000 +3.916667, 99.800495, 0.000000, 0.000000 +3.933333, 99.800495, 0.000000, 0.000000 +3.950000, 99.800495, 0.000000, 0.000000 +3.966667, 99.800495, 0.000000, 0.000000 +3.983333, 99.800495, 0.000000, 0.000000 +4.000000, 99.800495, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_7200_phev50.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_7200_phev50.csv new file mode 100644 index 0000000..5a74324 --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_7200_phev50.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.281209, 2.699607, 2.727091 +1.016667, 0.592217, 2.985672, 3.016365 +1.033333, 0.903224, 2.985672, 3.016365 +1.050000, 1.214231, 2.985672, 3.016365 +1.066667, 1.525239, 2.985672, 3.016365 +1.083333, 1.836246, 2.985672, 3.016365 +1.100000, 2.147254, 2.985672, 3.016365 +1.116667, 2.458261, 2.985672, 3.016365 +1.133333, 2.769269, 2.985672, 3.016365 +1.150000, 3.080276, 2.985672, 3.016365 +1.166667, 3.391284, 2.985672, 3.016365 +1.183333, 3.702291, 2.985672, 3.016365 +1.200000, 4.013299, 2.985672, 3.016365 +1.216667, 4.324306, 2.985672, 3.016365 +1.233333, 4.635314, 2.985672, 3.016365 +1.250000, 4.946321, 2.985672, 3.016365 +1.266667, 5.257329, 2.985672, 3.016365 +1.283333, 5.568336, 2.985672, 3.016365 +1.300000, 5.879344, 2.985672, 3.016365 +1.316667, 6.190351, 2.985672, 3.016365 +1.333333, 6.501359, 2.985672, 3.016365 +1.350000, 6.812366, 2.985672, 3.016365 +1.366667, 7.123373, 2.985672, 3.016365 +1.383333, 7.434381, 2.985672, 3.016365 +1.400000, 7.745388, 2.985672, 3.016365 +1.416667, 8.056396, 2.985672, 3.016365 +1.433333, 8.367403, 2.985672, 3.016365 +1.450000, 8.678411, 2.985672, 3.016365 +1.466667, 8.989418, 2.985672, 3.016365 +1.483333, 9.300426, 2.985672, 3.016365 +1.500000, 9.611433, 2.985672, 3.016365 +1.516667, 9.922441, 2.985672, 3.016365 +1.533333, 10.233448, 2.985672, 3.016365 +1.550000, 10.544456, 2.985672, 3.016365 +1.566667, 10.855463, 2.985672, 3.016365 +1.583333, 11.166471, 2.985672, 3.016365 +1.600000, 11.477478, 2.985672, 3.016365 +1.616667, 11.788486, 2.985672, 3.016365 +1.633333, 12.099493, 2.985672, 3.016365 +1.650000, 12.410500, 2.985672, 3.016365 +1.666667, 12.721508, 2.985672, 3.016365 +1.683333, 13.032515, 2.985672, 3.016365 +1.700000, 13.343523, 2.985672, 3.016365 +1.716667, 13.654530, 2.985672, 3.016365 +1.733333, 13.965538, 2.985672, 3.016365 +1.750000, 14.276545, 2.985672, 3.016365 +1.766667, 14.587553, 2.985672, 3.016365 +1.783333, 14.898560, 2.985672, 3.016365 +1.800000, 15.209568, 2.985672, 3.016365 +1.816667, 15.520575, 2.985672, 3.016365 +1.833333, 15.831583, 2.985672, 3.016365 +1.850000, 16.142590, 2.985672, 3.016365 +1.866667, 16.453598, 2.985672, 3.016365 +1.883333, 16.764605, 2.985672, 3.016365 +1.900000, 17.075613, 2.985672, 3.016365 +1.916667, 17.386620, 2.985672, 3.016365 +1.933333, 17.697628, 2.985672, 3.016365 +1.950000, 18.008635, 2.985672, 3.016365 +1.966667, 18.319642, 2.985672, 3.016365 +1.983333, 18.630650, 2.985672, 3.016365 +2.000000, 18.941657, 2.985672, 3.016365 +2.016667, 19.252665, 2.985672, 3.016365 +2.033333, 19.563672, 2.985672, 3.016365 +2.050000, 19.874680, 2.985672, 3.016365 +2.066667, 20.185687, 2.985672, 3.016365 +2.083333, 20.496695, 2.985672, 3.016365 +2.100000, 20.807702, 2.985672, 3.016365 +2.116667, 21.118710, 2.985672, 3.016365 +2.133333, 21.429717, 2.985672, 3.016365 +2.150000, 21.740725, 2.985672, 3.016365 +2.166667, 22.051732, 2.985672, 3.016365 +2.183333, 22.362740, 2.985672, 3.016365 +2.200000, 22.673747, 2.985672, 3.016365 +2.216667, 22.984755, 2.985672, 3.016365 +2.233333, 23.295762, 2.985672, 3.016365 +2.250000, 23.606769, 2.985672, 3.016365 +2.266667, 23.917777, 2.985672, 3.016365 +2.283333, 24.228784, 2.985672, 3.016365 +2.300000, 24.539792, 2.985672, 3.016365 +2.316667, 24.850799, 2.985672, 3.016365 +2.333333, 25.161807, 2.985672, 3.016365 +2.350000, 25.472814, 2.985672, 3.016365 +2.366667, 25.783822, 2.985672, 3.016365 +2.383333, 26.094829, 2.985672, 3.016365 +2.400000, 26.405837, 2.985672, 3.016365 +2.416667, 26.716844, 2.985672, 3.016365 +2.433333, 27.027852, 2.985672, 3.016365 +2.450000, 27.338859, 2.985672, 3.016365 +2.466667, 27.649867, 2.985672, 3.016365 +2.483333, 27.960874, 2.985672, 3.016365 +2.500000, 28.271882, 2.985672, 3.016365 +2.516667, 28.582889, 2.985672, 3.016365 +2.533333, 28.893896, 2.985672, 3.016365 +2.550000, 29.204904, 2.985672, 3.016365 +2.566667, 29.515911, 2.985672, 3.016365 +2.583333, 29.826919, 2.985672, 3.016365 +2.600000, 30.137926, 2.985672, 3.016365 +2.616667, 30.448934, 2.985672, 3.016365 +2.633333, 30.759941, 2.985672, 3.016365 +2.650000, 31.070949, 2.985672, 3.016365 +2.666667, 31.381956, 2.985672, 3.016365 +2.683333, 31.692964, 2.985672, 3.016365 +2.700000, 32.003971, 2.985672, 3.016365 +2.716667, 32.314979, 2.985672, 3.016365 +2.733333, 32.625986, 2.985672, 3.016365 +2.750000, 32.936994, 2.985672, 3.016365 +2.766667, 33.248001, 2.985672, 3.016365 +2.783333, 33.559009, 2.985672, 3.016365 +2.800000, 33.870016, 2.985672, 3.016365 +2.816667, 34.181024, 2.985672, 3.016365 +2.833333, 34.492031, 2.985672, 3.016365 +2.850000, 34.803038, 2.985672, 3.016365 +2.866667, 35.114046, 2.985672, 3.016365 +2.883333, 35.425053, 2.985672, 3.016365 +2.900000, 35.736061, 2.985672, 3.016365 +2.916667, 36.047068, 2.985672, 3.016365 +2.933333, 36.358076, 2.985672, 3.016365 +2.950000, 36.669083, 2.985672, 3.016365 +2.966667, 36.980091, 2.985672, 3.016365 +2.983333, 37.291098, 2.985672, 3.016365 +3.000000, 37.602106, 2.985672, 3.016365 +3.016667, 37.913113, 2.985672, 3.016365 +3.033333, 38.224121, 2.985672, 3.016365 +3.050000, 38.535128, 2.985672, 3.016365 +3.066667, 38.846136, 2.985672, 3.016365 +3.083333, 39.157143, 2.985672, 3.016365 +3.100000, 39.468151, 2.985672, 3.016365 +3.116667, 39.779158, 2.985672, 3.016365 +3.133333, 40.090165, 2.985672, 3.016365 +3.150000, 40.401173, 2.985672, 3.016365 +3.166667, 40.712180, 2.985672, 3.016365 +3.183333, 41.023188, 2.985672, 3.016365 +3.200000, 41.334195, 2.985672, 3.016365 +3.216667, 41.645203, 2.985672, 3.016365 +3.233333, 41.956210, 2.985672, 3.016365 +3.250000, 42.267218, 2.985672, 3.016365 +3.266667, 42.578225, 2.985672, 3.016365 +3.283333, 42.889233, 2.985672, 3.016365 +3.300000, 43.200240, 2.985672, 3.016365 +3.316667, 43.511248, 2.985672, 3.016365 +3.333333, 43.822255, 2.985672, 3.016365 +3.350000, 44.133263, 2.985672, 3.016365 +3.366667, 44.444270, 2.985672, 3.016365 +3.383333, 44.755278, 2.985672, 3.016365 +3.400000, 45.066285, 2.985672, 3.016365 +3.416667, 45.377293, 2.985672, 3.016365 +3.433333, 45.688300, 2.985672, 3.016365 +3.450000, 45.999307, 2.985672, 3.016365 +3.466667, 46.310315, 2.985672, 3.016365 +3.483333, 46.621322, 2.985672, 3.016365 +3.500000, 46.932330, 2.985672, 3.016365 +3.516667, 47.243337, 2.985672, 3.016365 +3.533333, 47.554345, 2.985672, 3.016365 +3.550000, 47.865352, 2.985672, 3.016365 +3.566667, 48.176360, 2.985672, 3.016365 +3.583333, 48.487367, 2.985672, 3.016365 +3.600000, 48.798375, 2.985672, 3.016365 +3.616667, 49.109382, 2.985672, 3.016365 +3.633333, 49.420390, 2.985672, 3.016365 +3.650000, 49.731397, 2.985672, 3.016365 +3.666667, 50.042405, 2.985672, 3.016365 +3.683333, 50.353412, 2.985672, 3.016365 +3.700000, 50.664420, 2.985672, 3.016365 +3.716667, 50.975427, 2.985672, 3.016365 +3.733333, 51.286434, 2.985672, 3.016365 +3.750000, 51.597442, 2.985672, 3.016365 +3.766667, 51.908449, 2.985672, 3.016365 +3.783333, 52.219457, 2.985672, 3.016365 +3.800000, 52.530464, 2.985672, 3.016365 +3.816667, 52.841472, 2.985672, 3.016365 +3.833333, 53.152479, 2.985672, 3.016365 +3.850000, 53.463487, 2.985672, 3.016365 +3.866667, 53.774494, 2.985672, 3.016365 +3.883333, 54.085502, 2.985672, 3.016365 +3.900000, 54.396509, 2.985672, 3.016365 +3.916667, 54.707517, 2.985672, 3.016365 +3.933333, 55.018524, 2.985672, 3.016365 +3.950000, 55.329532, 2.985672, 3.016365 +3.966667, 55.640539, 2.985672, 3.016365 +3.983333, 55.951547, 2.985672, 3.016365 +4.000000, 56.262554, 2.985672, 3.016365 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_7200_phev_SUV.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_7200_phev_SUV.csv new file mode 100644 index 0000000..ee2cef5 --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_7200_phev_SUV.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.539375, 7.686100, 7.770982 +1.016667, 1.152246, 8.733401, 8.832000 +1.033333, 1.765116, 8.733401, 8.832000 +1.050000, 2.377986, 8.733401, 8.832000 +1.066667, 2.990857, 8.733401, 8.832000 +1.083333, 3.603727, 8.733401, 8.832000 +1.100000, 4.216597, 8.733401, 8.832000 +1.116667, 4.829467, 8.733401, 8.832000 +1.133333, 5.442338, 8.733401, 8.832000 +1.150000, 6.055208, 8.733401, 8.832000 +1.166667, 6.668078, 8.733401, 8.832000 +1.183333, 7.280948, 8.733401, 8.832000 +1.200000, 7.893819, 8.733401, 8.832000 +1.216667, 8.506689, 8.733401, 8.832000 +1.233333, 9.119559, 8.733401, 8.832000 +1.250000, 9.732430, 8.733401, 8.832000 +1.266667, 10.345300, 8.733401, 8.832000 +1.283333, 10.958170, 8.733401, 8.832000 +1.300000, 11.571040, 8.733401, 8.832000 +1.316667, 12.183911, 8.733401, 8.832000 +1.333333, 12.796781, 8.733401, 8.832000 +1.350000, 13.409651, 8.733401, 8.832000 +1.366667, 14.022521, 8.733401, 8.832000 +1.383333, 14.635392, 8.733401, 8.832000 +1.400000, 15.248262, 8.733401, 8.832000 +1.416667, 15.861132, 8.733401, 8.832000 +1.433333, 16.474003, 8.733401, 8.832000 +1.450000, 17.086873, 8.733401, 8.832000 +1.466667, 17.699743, 8.733401, 8.832000 +1.483333, 18.312613, 8.733401, 8.832000 +1.500000, 18.925484, 8.733401, 8.832000 +1.516667, 19.538354, 8.733401, 8.832000 +1.533333, 20.151224, 8.733401, 8.832000 +1.550000, 20.764095, 8.733401, 8.832000 +1.566667, 21.376965, 8.733401, 8.832000 +1.583333, 21.989835, 8.733401, 8.832000 +1.600000, 22.602705, 8.733401, 8.832000 +1.616667, 23.215576, 8.733401, 8.832000 +1.633333, 23.828446, 8.733401, 8.832000 +1.650000, 24.441316, 8.733401, 8.832000 +1.666667, 25.054186, 8.733401, 8.832000 +1.683333, 25.667057, 8.733401, 8.832000 +1.700000, 26.279927, 8.733401, 8.832000 +1.716667, 26.892797, 8.733401, 8.832000 +1.733333, 27.505668, 8.733401, 8.832000 +1.750000, 28.118538, 8.733401, 8.832000 +1.766667, 28.731408, 8.733401, 8.832000 +1.783333, 29.344278, 8.733401, 8.832000 +1.800000, 29.957149, 8.733401, 8.832000 +1.816667, 30.570019, 8.733401, 8.832000 +1.833333, 31.182889, 8.733401, 8.832000 +1.850000, 31.795759, 8.733401, 8.832000 +1.866667, 32.408630, 8.733401, 8.832000 +1.883333, 33.021500, 8.733401, 8.832000 +1.900000, 33.634370, 8.733401, 8.832000 +1.916667, 34.247241, 8.733401, 8.832000 +1.933333, 34.860111, 8.733401, 8.832000 +1.950000, 35.472981, 8.733401, 8.832000 +1.966667, 36.085851, 8.733401, 8.832000 +1.983333, 36.698722, 8.733401, 8.832000 +2.000000, 37.311592, 8.733401, 8.832000 +2.016667, 37.924462, 8.733401, 8.832000 +2.033333, 38.537333, 8.733401, 8.832000 +2.050000, 39.150203, 8.733401, 8.832000 +2.066667, 39.763073, 8.733401, 8.832000 +2.083333, 40.375943, 8.733401, 8.832000 +2.100000, 40.988814, 8.733401, 8.832000 +2.116667, 41.601684, 8.733401, 8.832000 +2.133333, 42.214554, 8.733401, 8.832000 +2.150000, 42.827424, 8.733401, 8.832000 +2.166667, 43.440295, 8.733401, 8.832000 +2.183333, 44.053165, 8.733401, 8.832000 +2.200000, 44.666035, 8.733401, 8.832000 +2.216667, 45.278906, 8.733401, 8.832000 +2.233333, 45.891776, 8.733401, 8.832000 +2.250000, 46.504646, 8.733401, 8.832000 +2.266667, 47.117516, 8.733401, 8.832000 +2.283333, 47.730387, 8.733401, 8.832000 +2.300000, 48.343257, 8.733401, 8.832000 +2.316667, 48.956127, 8.733401, 8.832000 +2.333333, 49.568997, 8.733401, 8.832000 +2.350000, 50.181868, 8.733401, 8.832000 +2.366667, 50.794738, 8.733401, 8.832000 +2.383333, 51.407608, 8.733401, 8.832000 +2.400000, 52.020479, 8.733401, 8.832000 +2.416667, 52.633349, 8.733401, 8.832000 +2.433333, 53.246219, 8.733401, 8.832000 +2.450000, 53.859089, 8.733401, 8.832000 +2.466667, 54.471960, 8.733401, 8.832000 +2.483333, 55.084830, 8.733401, 8.832000 +2.500000, 55.697700, 8.733401, 8.832000 +2.516667, 56.310571, 8.733401, 8.832000 +2.533333, 56.923441, 8.733401, 8.832000 +2.550000, 57.536311, 8.733401, 8.832000 +2.566667, 58.149181, 8.733401, 8.832000 +2.583333, 58.762052, 8.733401, 8.832000 +2.600000, 59.374922, 8.733401, 8.832000 +2.616667, 59.987792, 8.733401, 8.832000 +2.633333, 60.600662, 8.733401, 8.832000 +2.650000, 61.213533, 8.733401, 8.832000 +2.666667, 61.826403, 8.733401, 8.832000 +2.683333, 62.439273, 8.733401, 8.832000 +2.700000, 63.052144, 8.733401, 8.832000 +2.716667, 63.665014, 8.733401, 8.832000 +2.733333, 64.277884, 8.733401, 8.832000 +2.750000, 64.890754, 8.733401, 8.832000 +2.766667, 65.503625, 8.733401, 8.832000 +2.783333, 66.116495, 8.733401, 8.832000 +2.800000, 66.729365, 8.733401, 8.832000 +2.816667, 67.342235, 8.733401, 8.832000 +2.833333, 67.955106, 8.733401, 8.832000 +2.850000, 68.567976, 8.733401, 8.832000 +2.866667, 69.180846, 8.733401, 8.832000 +2.883333, 69.793717, 8.733401, 8.832000 +2.900000, 70.406587, 8.733401, 8.832000 +2.916667, 71.019457, 8.733401, 8.832000 +2.933333, 71.632327, 8.733401, 8.832000 +2.950000, 72.245198, 8.733401, 8.832000 +2.966667, 72.858068, 8.733401, 8.832000 +2.983333, 73.470938, 8.733401, 8.832000 +3.000000, 74.083809, 8.733401, 8.832000 +3.016667, 74.696679, 8.733401, 8.832000 +3.033333, 75.309549, 8.733401, 8.832000 +3.050000, 75.922419, 8.733401, 8.832000 +3.066667, 76.535290, 8.733401, 8.832000 +3.083333, 77.148160, 8.733401, 8.832000 +3.100000, 77.761030, 8.733401, 8.832000 +3.116667, 78.373900, 8.733401, 8.832000 +3.133333, 78.986771, 8.733401, 8.832000 +3.150000, 79.599641, 8.733401, 8.832000 +3.166667, 80.212511, 8.733401, 8.832000 +3.183333, 80.825382, 8.733401, 8.832000 +3.200000, 81.438252, 8.733401, 8.832000 +3.216667, 82.051122, 8.733401, 8.832000 +3.233333, 82.663992, 8.733401, 8.832000 +3.250000, 83.276863, 8.733401, 8.832000 +3.266667, 83.889733, 8.733401, 8.832000 +3.283333, 84.502603, 8.733401, 8.832000 +3.300000, 85.115473, 8.733401, 8.832000 +3.316667, 85.728344, 8.733401, 8.832000 +3.333333, 86.341214, 8.733401, 8.832000 +3.350000, 86.954084, 8.733401, 8.832000 +3.366667, 87.566955, 8.733401, 8.832000 +3.383333, 88.179825, 8.733401, 8.832000 +3.400000, 88.792695, 8.733401, 8.832000 +3.416667, 89.405565, 8.733401, 8.832000 +3.433333, 90.018436, 8.733401, 8.832000 +3.450000, 90.631306, 8.733401, 8.832000 +3.466667, 91.244176, 8.733401, 8.832000 +3.483333, 91.857047, 8.733401, 8.832000 +3.500000, 92.469917, 8.733401, 8.832000 +3.516667, 93.082787, 8.733401, 8.832000 +3.533333, 93.695657, 8.733401, 8.832000 +3.550000, 94.308528, 8.733401, 8.832000 +3.566667, 94.921398, 8.733401, 8.832000 +3.583333, 95.534268, 8.733401, 8.832000 +3.600000, 96.147138, 8.733401, 8.832000 +3.616667, 96.760009, 8.733401, 8.832000 +3.633333, 97.372879, 8.733401, 8.832000 +3.650000, 97.962686, 8.404745, 8.498984 +3.666667, 98.451688, 6.968290, 7.044070 +3.683333, 98.850306, 5.680300, 5.740356 +3.700000, 99.175156, 4.629109, 4.676911 +3.716667, 99.439882, 3.772342, 3.810540 +3.733333, 99.655606, 3.074078, 3.104703 +3.750000, 99.800321, 2.062187, 2.082243 +3.766667, 99.800587, 0.003787, 0.003822 +3.783333, 99.800587, 0.000000, 0.000000 +3.800000, 99.800587, 0.000000, 0.000000 +3.816667, 99.800587, 0.000000, 0.000000 +3.833333, 99.800587, 0.000000, 0.000000 +3.850000, 99.800587, 0.000000, 0.000000 +3.866667, 99.800587, 0.000000, 0.000000 +3.883333, 99.800587, 0.000000, 0.000000 +3.900000, 99.800587, 0.000000, 0.000000 +3.916667, 99.800587, 0.000000, 0.000000 +3.933333, 99.800587, 0.000000, 0.000000 +3.950000, 99.800587, 0.000000, 0.000000 +3.966667, 99.800587, 0.000000, 0.000000 +3.983333, 99.800587, 0.000000, 0.000000 +4.000000, 99.800587, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_9600_bev150_150kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_9600_bev150_150kW.csv new file mode 100644 index 0000000..4b23e41 --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_9600_bev150_150kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.284910, 7.692571, 7.770982 +1.016667, 0.608679, 8.741761, 8.832000 +1.033333, 0.932448, 8.741761, 8.832000 +1.050000, 1.256217, 8.741761, 8.832000 +1.066667, 1.579986, 8.741761, 8.832000 +1.083333, 1.903755, 8.741761, 8.832000 +1.100000, 2.227524, 8.741761, 8.832000 +1.116667, 2.551292, 8.741761, 8.832000 +1.133333, 2.875061, 8.741761, 8.832000 +1.150000, 3.198830, 8.741761, 8.832000 +1.166667, 3.522599, 8.741761, 8.832000 +1.183333, 3.846368, 8.741761, 8.832000 +1.200000, 4.170137, 8.741761, 8.832000 +1.216667, 4.493906, 8.741761, 8.832000 +1.233333, 4.817675, 8.741761, 8.832000 +1.250000, 5.141444, 8.741761, 8.832000 +1.266667, 5.465213, 8.741761, 8.832000 +1.283333, 5.788982, 8.741761, 8.832000 +1.300000, 6.112750, 8.741761, 8.832000 +1.316667, 6.436519, 8.741761, 8.832000 +1.333333, 6.760288, 8.741761, 8.832000 +1.350000, 7.084057, 8.741761, 8.832000 +1.366667, 7.407826, 8.741761, 8.832000 +1.383333, 7.731595, 8.741761, 8.832000 +1.400000, 8.055364, 8.741761, 8.832000 +1.416667, 8.379133, 8.741761, 8.832000 +1.433333, 8.702902, 8.741761, 8.832000 +1.450000, 9.026671, 8.741761, 8.832000 +1.466667, 9.350440, 8.741761, 8.832000 +1.483333, 9.674209, 8.741761, 8.832000 +1.500000, 9.997977, 8.741761, 8.832000 +1.516667, 10.321746, 8.741761, 8.832000 +1.533333, 10.645515, 8.741761, 8.832000 +1.550000, 10.969284, 8.741761, 8.832000 +1.566667, 11.293053, 8.741761, 8.832000 +1.583333, 11.616822, 8.741761, 8.832000 +1.600000, 11.940591, 8.741761, 8.832000 +1.616667, 12.264360, 8.741761, 8.832000 +1.633333, 12.588129, 8.741761, 8.832000 +1.650000, 12.911898, 8.741761, 8.832000 +1.666667, 13.235667, 8.741761, 8.832000 +1.683333, 13.559435, 8.741761, 8.832000 +1.700000, 13.883204, 8.741761, 8.832000 +1.716667, 14.206973, 8.741761, 8.832000 +1.733333, 14.530742, 8.741761, 8.832000 +1.750000, 14.854511, 8.741761, 8.832000 +1.766667, 15.178280, 8.741761, 8.832000 +1.783333, 15.502049, 8.741761, 8.832000 +1.800000, 15.825818, 8.741761, 8.832000 +1.816667, 16.149587, 8.741761, 8.832000 +1.833333, 16.473356, 8.741761, 8.832000 +1.850000, 16.797125, 8.741761, 8.832000 +1.866667, 17.120894, 8.741761, 8.832000 +1.883333, 17.444662, 8.741761, 8.832000 +1.900000, 17.768431, 8.741761, 8.832000 +1.916667, 18.092200, 8.741761, 8.832000 +1.933333, 18.415969, 8.741761, 8.832000 +1.950000, 18.739738, 8.741761, 8.832000 +1.966667, 19.063507, 8.741761, 8.832000 +1.983333, 19.387276, 8.741761, 8.832000 +2.000000, 19.711045, 8.741761, 8.832000 +2.016667, 20.034814, 8.741761, 8.832000 +2.033333, 20.358583, 8.741761, 8.832000 +2.050000, 20.682352, 8.741761, 8.832000 +2.066667, 21.006120, 8.741761, 8.832000 +2.083333, 21.329889, 8.741761, 8.832000 +2.100000, 21.653658, 8.741761, 8.832000 +2.116667, 21.977427, 8.741761, 8.832000 +2.133333, 22.301196, 8.741761, 8.832000 +2.150000, 22.624965, 8.741761, 8.832000 +2.166667, 22.948734, 8.741761, 8.832000 +2.183333, 23.272503, 8.741761, 8.832000 +2.200000, 23.596272, 8.741761, 8.832000 +2.216667, 23.920041, 8.741761, 8.832000 +2.233333, 24.243810, 8.741761, 8.832000 +2.250000, 24.567579, 8.741761, 8.832000 +2.266667, 24.891347, 8.741761, 8.832000 +2.283333, 25.215116, 8.741761, 8.832000 +2.300000, 25.538885, 8.741761, 8.832000 +2.316667, 25.862654, 8.741761, 8.832000 +2.333333, 26.186423, 8.741761, 8.832000 +2.350000, 26.510192, 8.741761, 8.832000 +2.366667, 26.833961, 8.741761, 8.832000 +2.383333, 27.157730, 8.741761, 8.832000 +2.400000, 27.481499, 8.741761, 8.832000 +2.416667, 27.805268, 8.741761, 8.832000 +2.433333, 28.129037, 8.741761, 8.832000 +2.450000, 28.452805, 8.741761, 8.832000 +2.466667, 28.776574, 8.741761, 8.832000 +2.483333, 29.100343, 8.741761, 8.832000 +2.500000, 29.424112, 8.741761, 8.832000 +2.516667, 29.747881, 8.741761, 8.832000 +2.533333, 30.071650, 8.741761, 8.832000 +2.550000, 30.395419, 8.741761, 8.832000 +2.566667, 30.719188, 8.741761, 8.832000 +2.583333, 31.042957, 8.741761, 8.832000 +2.600000, 31.366726, 8.741761, 8.832000 +2.616667, 31.690495, 8.741761, 8.832000 +2.633333, 32.014263, 8.741761, 8.832000 +2.650000, 32.338032, 8.741761, 8.832000 +2.666667, 32.661801, 8.741761, 8.832000 +2.683333, 32.985570, 8.741761, 8.832000 +2.700000, 33.309339, 8.741761, 8.832000 +2.716667, 33.633108, 8.741761, 8.832000 +2.733333, 33.956877, 8.741761, 8.832000 +2.750000, 34.280646, 8.741761, 8.832000 +2.766667, 34.604415, 8.741761, 8.832000 +2.783333, 34.928184, 8.741761, 8.832000 +2.800000, 35.251953, 8.741761, 8.832000 +2.816667, 35.575722, 8.741761, 8.832000 +2.833333, 35.899490, 8.741761, 8.832000 +2.850000, 36.223259, 8.741761, 8.832000 +2.866667, 36.547028, 8.741761, 8.832000 +2.883333, 36.870797, 8.741761, 8.832000 +2.900000, 37.194566, 8.741761, 8.832000 +2.916667, 37.518335, 8.741761, 8.832000 +2.933333, 37.842104, 8.741761, 8.832000 +2.950000, 38.165873, 8.741761, 8.832000 +2.966667, 38.489642, 8.741761, 8.832000 +2.983333, 38.813411, 8.741761, 8.832000 +3.000000, 39.137180, 8.741761, 8.832000 +3.016667, 39.460948, 8.741761, 8.832000 +3.033333, 39.784717, 8.741761, 8.832000 +3.050000, 40.108486, 8.741761, 8.832000 +3.066667, 40.432255, 8.741761, 8.832000 +3.083333, 40.756024, 8.741761, 8.832000 +3.100000, 41.079793, 8.741761, 8.832000 +3.116667, 41.403562, 8.741761, 8.832000 +3.133333, 41.727331, 8.741761, 8.832000 +3.150000, 42.051100, 8.741761, 8.832000 +3.166667, 42.374869, 8.741761, 8.832000 +3.183333, 42.698638, 8.741761, 8.832000 +3.200000, 43.022407, 8.741761, 8.832000 +3.216667, 43.346175, 8.741761, 8.832000 +3.233333, 43.669944, 8.741761, 8.832000 +3.250000, 43.993713, 8.741761, 8.832000 +3.266667, 44.317482, 8.741761, 8.832000 +3.283333, 44.641251, 8.741761, 8.832000 +3.300000, 44.965020, 8.741761, 8.832000 +3.316667, 45.288789, 8.741761, 8.832000 +3.333333, 45.612558, 8.741761, 8.832000 +3.350000, 45.936327, 8.741761, 8.832000 +3.366667, 46.260096, 8.741761, 8.832000 +3.383333, 46.583865, 8.741761, 8.832000 +3.400000, 46.907633, 8.741761, 8.832000 +3.416667, 47.231402, 8.741761, 8.832000 +3.433333, 47.555171, 8.741761, 8.832000 +3.450000, 47.878940, 8.741761, 8.832000 +3.466667, 48.202709, 8.741761, 8.832000 +3.483333, 48.526478, 8.741761, 8.832000 +3.500000, 48.850247, 8.741761, 8.832000 +3.516667, 49.174016, 8.741761, 8.832000 +3.533333, 49.497785, 8.741761, 8.832000 +3.550000, 49.821554, 8.741761, 8.832000 +3.566667, 50.145323, 8.741761, 8.832000 +3.583333, 50.469092, 8.741761, 8.832000 +3.600000, 50.792860, 8.741761, 8.832000 +3.616667, 51.116629, 8.741761, 8.832000 +3.633333, 51.440398, 8.741761, 8.832000 +3.650000, 51.764167, 8.741761, 8.832000 +3.666667, 52.087936, 8.741761, 8.832000 +3.683333, 52.411705, 8.741761, 8.832000 +3.700000, 52.735474, 8.741761, 8.832000 +3.716667, 53.059243, 8.741761, 8.832000 +3.733333, 53.383012, 8.741761, 8.832000 +3.750000, 53.706781, 8.741761, 8.832000 +3.766667, 54.030550, 8.741761, 8.832000 +3.783333, 54.354318, 8.741761, 8.832000 +3.800000, 54.678087, 8.741761, 8.832000 +3.816667, 55.001856, 8.741761, 8.832000 +3.833333, 55.325625, 8.741761, 8.832000 +3.850000, 55.649394, 8.741761, 8.832000 +3.866667, 55.973163, 8.741761, 8.832000 +3.883333, 56.296932, 8.741761, 8.832000 +3.900000, 56.620701, 8.741761, 8.832000 +3.916667, 56.944470, 8.741761, 8.832000 +3.933333, 57.268239, 8.741761, 8.832000 +3.950000, 57.592008, 8.741761, 8.832000 +3.966667, 57.915777, 8.741761, 8.832000 +3.983333, 58.239545, 8.741761, 8.832000 +4.000000, 58.563314, 8.741761, 8.832000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_9600_bev150_ld1_50kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_9600_bev150_ld1_50kW.csv new file mode 100644 index 0000000..7fb388e --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_9600_bev150_ld1_50kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.198492, 5.359295, 5.412378 +1.016667, 0.421158, 6.011968, 6.072000 +1.033333, 0.643823, 6.011968, 6.072000 +1.050000, 0.866489, 6.011968, 6.072000 +1.066667, 1.089154, 6.011968, 6.072000 +1.083333, 1.311820, 6.011968, 6.072000 +1.100000, 1.534485, 6.011968, 6.072000 +1.116667, 1.757151, 6.011968, 6.072000 +1.133333, 1.979816, 6.011968, 6.072000 +1.150000, 2.202482, 6.011968, 6.072000 +1.166667, 2.425147, 6.011968, 6.072000 +1.183333, 2.647813, 6.011968, 6.072000 +1.200000, 2.870478, 6.011968, 6.072000 +1.216667, 3.093144, 6.011968, 6.072000 +1.233333, 3.315809, 6.011968, 6.072000 +1.250000, 3.538474, 6.011968, 6.072000 +1.266667, 3.761140, 6.011968, 6.072000 +1.283333, 3.983805, 6.011968, 6.072000 +1.300000, 4.206471, 6.011968, 6.072000 +1.316667, 4.429136, 6.011968, 6.072000 +1.333333, 4.651802, 6.011968, 6.072000 +1.350000, 4.874467, 6.011968, 6.072000 +1.366667, 5.097133, 6.011968, 6.072000 +1.383333, 5.319798, 6.011968, 6.072000 +1.400000, 5.542464, 6.011968, 6.072000 +1.416667, 5.765129, 6.011968, 6.072000 +1.433333, 5.987795, 6.011968, 6.072000 +1.450000, 6.210460, 6.011968, 6.072000 +1.466667, 6.433126, 6.011968, 6.072000 +1.483333, 6.655791, 6.011968, 6.072000 +1.500000, 6.878456, 6.011968, 6.072000 +1.516667, 7.101122, 6.011968, 6.072000 +1.533333, 7.323787, 6.011968, 6.072000 +1.550000, 7.546453, 6.011968, 6.072000 +1.566667, 7.769118, 6.011968, 6.072000 +1.583333, 7.991784, 6.011968, 6.072000 +1.600000, 8.214449, 6.011968, 6.072000 +1.616667, 8.437115, 6.011968, 6.072000 +1.633333, 8.659780, 6.011968, 6.072000 +1.650000, 8.882446, 6.011968, 6.072000 +1.666667, 9.105111, 6.011968, 6.072000 +1.683333, 9.327777, 6.011968, 6.072000 +1.700000, 9.550442, 6.011968, 6.072000 +1.716667, 9.773108, 6.011968, 6.072000 +1.733333, 9.995773, 6.011968, 6.072000 +1.750000, 10.218439, 6.011968, 6.072000 +1.766667, 10.441104, 6.011968, 6.072000 +1.783333, 10.663769, 6.011968, 6.072000 +1.800000, 10.886435, 6.011968, 6.072000 +1.816667, 11.109100, 6.011968, 6.072000 +1.833333, 11.331766, 6.011968, 6.072000 +1.850000, 11.554431, 6.011968, 6.072000 +1.866667, 11.777097, 6.011968, 6.072000 +1.883333, 11.999762, 6.011968, 6.072000 +1.900000, 12.222428, 6.011968, 6.072000 +1.916667, 12.445093, 6.011968, 6.072000 +1.933333, 12.667759, 6.011968, 6.072000 +1.950000, 12.890424, 6.011968, 6.072000 +1.966667, 13.113090, 6.011968, 6.072000 +1.983333, 13.335755, 6.011968, 6.072000 +2.000000, 13.558421, 6.011968, 6.072000 +2.016667, 13.781086, 6.011968, 6.072000 +2.033333, 14.003751, 6.011968, 6.072000 +2.050000, 14.226417, 6.011968, 6.072000 +2.066667, 14.449082, 6.011968, 6.072000 +2.083333, 14.671748, 6.011968, 6.072000 +2.100000, 14.894413, 6.011968, 6.072000 +2.116667, 15.117079, 6.011968, 6.072000 +2.133333, 15.339744, 6.011968, 6.072000 +2.150000, 15.562410, 6.011968, 6.072000 +2.166667, 15.785075, 6.011968, 6.072000 +2.183333, 16.007741, 6.011968, 6.072000 +2.200000, 16.230406, 6.011968, 6.072000 +2.216667, 16.453072, 6.011968, 6.072000 +2.233333, 16.675737, 6.011968, 6.072000 +2.250000, 16.898403, 6.011968, 6.072000 +2.266667, 17.121068, 6.011968, 6.072000 +2.283333, 17.343733, 6.011968, 6.072000 +2.300000, 17.566399, 6.011968, 6.072000 +2.316667, 17.789064, 6.011968, 6.072000 +2.333333, 18.011730, 6.011968, 6.072000 +2.350000, 18.234395, 6.011968, 6.072000 +2.366667, 18.457061, 6.011968, 6.072000 +2.383333, 18.679726, 6.011968, 6.072000 +2.400000, 18.902392, 6.011968, 6.072000 +2.416667, 19.125057, 6.011968, 6.072000 +2.433333, 19.347723, 6.011968, 6.072000 +2.450000, 19.570388, 6.011968, 6.072000 +2.466667, 19.793054, 6.011968, 6.072000 +2.483333, 20.015719, 6.011968, 6.072000 +2.500000, 20.238385, 6.011968, 6.072000 +2.516667, 20.461050, 6.011968, 6.072000 +2.533333, 20.683716, 6.011968, 6.072000 +2.550000, 20.906381, 6.011968, 6.072000 +2.566667, 21.129046, 6.011968, 6.072000 +2.583333, 21.351712, 6.011968, 6.072000 +2.600000, 21.574377, 6.011968, 6.072000 +2.616667, 21.797043, 6.011968, 6.072000 +2.633333, 22.019708, 6.011968, 6.072000 +2.650000, 22.242374, 6.011968, 6.072000 +2.666667, 22.465039, 6.011968, 6.072000 +2.683333, 22.687705, 6.011968, 6.072000 +2.700000, 22.910370, 6.011968, 6.072000 +2.716667, 23.133036, 6.011968, 6.072000 +2.733333, 23.355701, 6.011968, 6.072000 +2.750000, 23.578367, 6.011968, 6.072000 +2.766667, 23.801032, 6.011968, 6.072000 +2.783333, 24.023698, 6.011968, 6.072000 +2.800000, 24.246363, 6.011968, 6.072000 +2.816667, 24.469028, 6.011968, 6.072000 +2.833333, 24.691694, 6.011968, 6.072000 +2.850000, 24.914359, 6.011968, 6.072000 +2.866667, 25.137025, 6.011968, 6.072000 +2.883333, 25.359690, 6.011968, 6.072000 +2.900000, 25.582356, 6.011968, 6.072000 +2.916667, 25.805021, 6.011968, 6.072000 +2.933333, 26.027687, 6.011968, 6.072000 +2.950000, 26.250352, 6.011968, 6.072000 +2.966667, 26.473018, 6.011968, 6.072000 +2.983333, 26.695683, 6.011968, 6.072000 +3.000000, 26.918349, 6.011968, 6.072000 +3.016667, 27.141014, 6.011968, 6.072000 +3.033333, 27.363680, 6.011968, 6.072000 +3.050000, 27.586345, 6.011968, 6.072000 +3.066667, 27.809011, 6.011968, 6.072000 +3.083333, 28.031676, 6.011968, 6.072000 +3.100000, 28.254341, 6.011968, 6.072000 +3.116667, 28.477007, 6.011968, 6.072000 +3.133333, 28.699672, 6.011968, 6.072000 +3.150000, 28.922338, 6.011968, 6.072000 +3.166667, 29.145003, 6.011968, 6.072000 +3.183333, 29.367669, 6.011968, 6.072000 +3.200000, 29.590334, 6.011968, 6.072000 +3.216667, 29.813000, 6.011968, 6.072000 +3.233333, 30.035665, 6.011968, 6.072000 +3.250000, 30.258331, 6.011968, 6.072000 +3.266667, 30.480996, 6.011968, 6.072000 +3.283333, 30.703662, 6.011968, 6.072000 +3.300000, 30.926327, 6.011968, 6.072000 +3.316667, 31.148993, 6.011968, 6.072000 +3.333333, 31.371658, 6.011968, 6.072000 +3.350000, 31.594323, 6.011968, 6.072000 +3.366667, 31.816989, 6.011968, 6.072000 +3.383333, 32.039654, 6.011968, 6.072000 +3.400000, 32.262320, 6.011968, 6.072000 +3.416667, 32.484985, 6.011968, 6.072000 +3.433333, 32.707651, 6.011968, 6.072000 +3.450000, 32.930316, 6.011968, 6.072000 +3.466667, 33.152982, 6.011968, 6.072000 +3.483333, 33.375647, 6.011968, 6.072000 +3.500000, 33.598313, 6.011968, 6.072000 +3.516667, 33.820978, 6.011968, 6.072000 +3.533333, 34.043644, 6.011968, 6.072000 +3.550000, 34.266309, 6.011968, 6.072000 +3.566667, 34.488975, 6.011968, 6.072000 +3.583333, 34.711640, 6.011968, 6.072000 +3.600000, 34.934306, 6.011968, 6.072000 +3.616667, 35.156971, 6.011968, 6.072000 +3.633333, 35.379636, 6.011968, 6.072000 +3.650000, 35.602302, 6.011968, 6.072000 +3.666667, 35.824967, 6.011968, 6.072000 +3.683333, 36.047633, 6.011968, 6.072000 +3.700000, 36.270298, 6.011968, 6.072000 +3.716667, 36.492964, 6.011968, 6.072000 +3.733333, 36.715629, 6.011968, 6.072000 +3.750000, 36.938295, 6.011968, 6.072000 +3.766667, 37.160960, 6.011968, 6.072000 +3.783333, 37.383626, 6.011968, 6.072000 +3.800000, 37.606291, 6.011968, 6.072000 +3.816667, 37.828957, 6.011968, 6.072000 +3.833333, 38.051622, 6.011968, 6.072000 +3.850000, 38.274288, 6.011968, 6.072000 +3.866667, 38.496953, 6.011968, 6.072000 +3.883333, 38.719618, 6.011968, 6.072000 +3.900000, 38.942284, 6.011968, 6.072000 +3.916667, 39.164949, 6.011968, 6.072000 +3.933333, 39.387615, 6.011968, 6.072000 +3.950000, 39.610280, 6.011968, 6.072000 +3.966667, 39.832946, 6.011968, 6.072000 +3.983333, 40.055611, 6.011968, 6.072000 +4.000000, 40.278277, 6.011968, 6.072000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_9600_bev200_ld4_150kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_9600_bev200_ld4_150kW.csv new file mode 100644 index 0000000..5708a5d --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_9600_bev200_ld4_150kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.135024, 7.696378, 7.770982 +1.016667, 0.288475, 8.746678, 8.832000 +1.033333, 0.441925, 8.746678, 8.832000 +1.050000, 0.595376, 8.746678, 8.832000 +1.066667, 0.748826, 8.746678, 8.832000 +1.083333, 0.902277, 8.746678, 8.832000 +1.100000, 1.055727, 8.746678, 8.832000 +1.116667, 1.209178, 8.746678, 8.832000 +1.133333, 1.362628, 8.746678, 8.832000 +1.150000, 1.516079, 8.746678, 8.832000 +1.166667, 1.669529, 8.746678, 8.832000 +1.183333, 1.822980, 8.746678, 8.832000 +1.200000, 1.976430, 8.746678, 8.832000 +1.216667, 2.129881, 8.746678, 8.832000 +1.233333, 2.283331, 8.746678, 8.832000 +1.250000, 2.436781, 8.746678, 8.832000 +1.266667, 2.590232, 8.746678, 8.832000 +1.283333, 2.743682, 8.746678, 8.832000 +1.300000, 2.897133, 8.746678, 8.832000 +1.316667, 3.050583, 8.746678, 8.832000 +1.333333, 3.204034, 8.746678, 8.832000 +1.350000, 3.357484, 8.746678, 8.832000 +1.366667, 3.510935, 8.746678, 8.832000 +1.383333, 3.664385, 8.746678, 8.832000 +1.400000, 3.817836, 8.746678, 8.832000 +1.416667, 3.971286, 8.746678, 8.832000 +1.433333, 4.124737, 8.746678, 8.832000 +1.450000, 4.278187, 8.746678, 8.832000 +1.466667, 4.431638, 8.746678, 8.832000 +1.483333, 4.585088, 8.746678, 8.832000 +1.500000, 4.738539, 8.746678, 8.832000 +1.516667, 4.891989, 8.746678, 8.832000 +1.533333, 5.045440, 8.746678, 8.832000 +1.550000, 5.198890, 8.746678, 8.832000 +1.566667, 5.352341, 8.746678, 8.832000 +1.583333, 5.505791, 8.746678, 8.832000 +1.600000, 5.659242, 8.746678, 8.832000 +1.616667, 5.812692, 8.746678, 8.832000 +1.633333, 5.966143, 8.746678, 8.832000 +1.650000, 6.119593, 8.746678, 8.832000 +1.666667, 6.273044, 8.746678, 8.832000 +1.683333, 6.426494, 8.746678, 8.832000 +1.700000, 6.579945, 8.746678, 8.832000 +1.716667, 6.733395, 8.746678, 8.832000 +1.733333, 6.886846, 8.746678, 8.832000 +1.750000, 7.040296, 8.746678, 8.832000 +1.766667, 7.193747, 8.746678, 8.832000 +1.783333, 7.347197, 8.746678, 8.832000 +1.800000, 7.500648, 8.746678, 8.832000 +1.816667, 7.654098, 8.746678, 8.832000 +1.833333, 7.807549, 8.746678, 8.832000 +1.850000, 7.960999, 8.746678, 8.832000 +1.866667, 8.114450, 8.746678, 8.832000 +1.883333, 8.267900, 8.746678, 8.832000 +1.900000, 8.421351, 8.746678, 8.832000 +1.916667, 8.574801, 8.746678, 8.832000 +1.933333, 8.728252, 8.746678, 8.832000 +1.950000, 8.881702, 8.746678, 8.832000 +1.966667, 9.035152, 8.746678, 8.832000 +1.983333, 9.188603, 8.746678, 8.832000 +2.000000, 9.342053, 8.746678, 8.832000 +2.016667, 9.495504, 8.746678, 8.832000 +2.033333, 9.648954, 8.746678, 8.832000 +2.050000, 9.802405, 8.746678, 8.832000 +2.066667, 9.955855, 8.746678, 8.832000 +2.083333, 10.109306, 8.746678, 8.832000 +2.100000, 10.262756, 8.746678, 8.832000 +2.116667, 10.416207, 8.746678, 8.832000 +2.133333, 10.569657, 8.746678, 8.832000 +2.150000, 10.723108, 8.746678, 8.832000 +2.166667, 10.876558, 8.746678, 8.832000 +2.183333, 11.030009, 8.746678, 8.832000 +2.200000, 11.183459, 8.746678, 8.832000 +2.216667, 11.336910, 8.746678, 8.832000 +2.233333, 11.490360, 8.746678, 8.832000 +2.250000, 11.643811, 8.746678, 8.832000 +2.266667, 11.797261, 8.746678, 8.832000 +2.283333, 11.950712, 8.746678, 8.832000 +2.300000, 12.104162, 8.746678, 8.832000 +2.316667, 12.257613, 8.746678, 8.832000 +2.333333, 12.411063, 8.746678, 8.832000 +2.350000, 12.564514, 8.746678, 8.832000 +2.366667, 12.717964, 8.746678, 8.832000 +2.383333, 12.871415, 8.746678, 8.832000 +2.400000, 13.024865, 8.746678, 8.832000 +2.416667, 13.178316, 8.746678, 8.832000 +2.433333, 13.331766, 8.746678, 8.832000 +2.450000, 13.485217, 8.746678, 8.832000 +2.466667, 13.638667, 8.746678, 8.832000 +2.483333, 13.792118, 8.746678, 8.832000 +2.500000, 13.945568, 8.746678, 8.832000 +2.516667, 14.099019, 8.746678, 8.832000 +2.533333, 14.252469, 8.746678, 8.832000 +2.550000, 14.405920, 8.746678, 8.832000 +2.566667, 14.559370, 8.746678, 8.832000 +2.583333, 14.712821, 8.746678, 8.832000 +2.600000, 14.866271, 8.746678, 8.832000 +2.616667, 15.019722, 8.746678, 8.832000 +2.633333, 15.173172, 8.746678, 8.832000 +2.650000, 15.326623, 8.746678, 8.832000 +2.666667, 15.480073, 8.746678, 8.832000 +2.683333, 15.633523, 8.746678, 8.832000 +2.700000, 15.786974, 8.746678, 8.832000 +2.716667, 15.940424, 8.746678, 8.832000 +2.733333, 16.093875, 8.746678, 8.832000 +2.750000, 16.247325, 8.746678, 8.832000 +2.766667, 16.400776, 8.746678, 8.832000 +2.783333, 16.554226, 8.746678, 8.832000 +2.800000, 16.707677, 8.746678, 8.832000 +2.816667, 16.861127, 8.746678, 8.832000 +2.833333, 17.014578, 8.746678, 8.832000 +2.850000, 17.168028, 8.746678, 8.832000 +2.866667, 17.321479, 8.746678, 8.832000 +2.883333, 17.474929, 8.746678, 8.832000 +2.900000, 17.628380, 8.746678, 8.832000 +2.916667, 17.781830, 8.746678, 8.832000 +2.933333, 17.935281, 8.746678, 8.832000 +2.950000, 18.088731, 8.746678, 8.832000 +2.966667, 18.242182, 8.746678, 8.832000 +2.983333, 18.395632, 8.746678, 8.832000 +3.000000, 18.549083, 8.746678, 8.832000 +3.016667, 18.702533, 8.746678, 8.832000 +3.033333, 18.855984, 8.746678, 8.832000 +3.050000, 19.009434, 8.746678, 8.832000 +3.066667, 19.162885, 8.746678, 8.832000 +3.083333, 19.316335, 8.746678, 8.832000 +3.100000, 19.469786, 8.746678, 8.832000 +3.116667, 19.623236, 8.746678, 8.832000 +3.133333, 19.776687, 8.746678, 8.832000 +3.150000, 19.930137, 8.746678, 8.832000 +3.166667, 20.083588, 8.746678, 8.832000 +3.183333, 20.237038, 8.746678, 8.832000 +3.200000, 20.390489, 8.746678, 8.832000 +3.216667, 20.543939, 8.746678, 8.832000 +3.233333, 20.697390, 8.746678, 8.832000 +3.250000, 20.850840, 8.746678, 8.832000 +3.266667, 21.004291, 8.746678, 8.832000 +3.283333, 21.157741, 8.746678, 8.832000 +3.300000, 21.311192, 8.746678, 8.832000 +3.316667, 21.464642, 8.746678, 8.832000 +3.333333, 21.618093, 8.746678, 8.832000 +3.350000, 21.771543, 8.746678, 8.832000 +3.366667, 21.924994, 8.746678, 8.832000 +3.383333, 22.078444, 8.746678, 8.832000 +3.400000, 22.231894, 8.746678, 8.832000 +3.416667, 22.385345, 8.746678, 8.832000 +3.433333, 22.538795, 8.746678, 8.832000 +3.450000, 22.692246, 8.746678, 8.832000 +3.466667, 22.845696, 8.746678, 8.832000 +3.483333, 22.999147, 8.746678, 8.832000 +3.500000, 23.152597, 8.746678, 8.832000 +3.516667, 23.306048, 8.746678, 8.832000 +3.533333, 23.459498, 8.746678, 8.832000 +3.550000, 23.612949, 8.746678, 8.832000 +3.566667, 23.766399, 8.746678, 8.832000 +3.583333, 23.919850, 8.746678, 8.832000 +3.600000, 24.073300, 8.746678, 8.832000 +3.616667, 24.226751, 8.746678, 8.832000 +3.633333, 24.380201, 8.746678, 8.832000 +3.650000, 24.533652, 8.746678, 8.832000 +3.666667, 24.687102, 8.746678, 8.832000 +3.683333, 24.840553, 8.746678, 8.832000 +3.700000, 24.994003, 8.746678, 8.832000 +3.716667, 25.147454, 8.746678, 8.832000 +3.733333, 25.300904, 8.746678, 8.832000 +3.750000, 25.454355, 8.746678, 8.832000 +3.766667, 25.607805, 8.746678, 8.832000 +3.783333, 25.761256, 8.746678, 8.832000 +3.800000, 25.914706, 8.746678, 8.832000 +3.816667, 26.068157, 8.746678, 8.832000 +3.833333, 26.221607, 8.746678, 8.832000 +3.850000, 26.375058, 8.746678, 8.832000 +3.866667, 26.528508, 8.746678, 8.832000 +3.883333, 26.681959, 8.746678, 8.832000 +3.900000, 26.835409, 8.746678, 8.832000 +3.916667, 26.988860, 8.746678, 8.832000 +3.933333, 27.142310, 8.746678, 8.832000 +3.950000, 27.295761, 8.746678, 8.832000 +3.966667, 27.449211, 8.746678, 8.832000 +3.983333, 27.602662, 8.746678, 8.832000 +4.000000, 27.756112, 8.746678, 8.832000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_9600_bev250_350kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_9600_bev250_350kW.csv new file mode 100644 index 0000000..d43538c --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_9600_bev250_350kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.128276, 9.143505, 9.231932 +1.016667, 0.275274, 10.478014, 10.580000 +1.033333, 0.422272, 10.478014, 10.580000 +1.050000, 0.569270, 10.478014, 10.580000 +1.066667, 0.716268, 10.478014, 10.580000 +1.083333, 0.863266, 10.478014, 10.580000 +1.100000, 1.010264, 10.478014, 10.580000 +1.116667, 1.157262, 10.478014, 10.580000 +1.133333, 1.304260, 10.478014, 10.580000 +1.150000, 1.451257, 10.478014, 10.580000 +1.166667, 1.598255, 10.478014, 10.580000 +1.183333, 1.745253, 10.478014, 10.580000 +1.200000, 1.892251, 10.478014, 10.580000 +1.216667, 2.039249, 10.478014, 10.580000 +1.233333, 2.186247, 10.478014, 10.580000 +1.250000, 2.333245, 10.478014, 10.580000 +1.266667, 2.480243, 10.478014, 10.580000 +1.283333, 2.627241, 10.478014, 10.580000 +1.300000, 2.774239, 10.478014, 10.580000 +1.316667, 2.921237, 10.478014, 10.580000 +1.333333, 3.068235, 10.478014, 10.580000 +1.350000, 3.215233, 10.478014, 10.580000 +1.366667, 3.362231, 10.478014, 10.580000 +1.383333, 3.509229, 10.478014, 10.580000 +1.400000, 3.656227, 10.478014, 10.580000 +1.416667, 3.803225, 10.478014, 10.580000 +1.433333, 3.950223, 10.478014, 10.580000 +1.450000, 4.097221, 10.478014, 10.580000 +1.466667, 4.244219, 10.478014, 10.580000 +1.483333, 4.391217, 10.478014, 10.580000 +1.500000, 4.538215, 10.478014, 10.580000 +1.516667, 4.685212, 10.478014, 10.580000 +1.533333, 4.832210, 10.478014, 10.580000 +1.550000, 4.979208, 10.478014, 10.580000 +1.566667, 5.126206, 10.478014, 10.580000 +1.583333, 5.273204, 10.478014, 10.580000 +1.600000, 5.420202, 10.478014, 10.580000 +1.616667, 5.567200, 10.478014, 10.580000 +1.633333, 5.714198, 10.478014, 10.580000 +1.650000, 5.861196, 10.478014, 10.580000 +1.666667, 6.008194, 10.478014, 10.580000 +1.683333, 6.155192, 10.478014, 10.580000 +1.700000, 6.302190, 10.478014, 10.580000 +1.716667, 6.449188, 10.478014, 10.580000 +1.733333, 6.596186, 10.478014, 10.580000 +1.750000, 6.743184, 10.478014, 10.580000 +1.766667, 6.890182, 10.478014, 10.580000 +1.783333, 7.037180, 10.478014, 10.580000 +1.800000, 7.184178, 10.478014, 10.580000 +1.816667, 7.331176, 10.478014, 10.580000 +1.833333, 7.478174, 10.478014, 10.580000 +1.850000, 7.625172, 10.478014, 10.580000 +1.866667, 7.772170, 10.478014, 10.580000 +1.883333, 7.919167, 10.478014, 10.580000 +1.900000, 8.066165, 10.478014, 10.580000 +1.916667, 8.213163, 10.478014, 10.580000 +1.933333, 8.360161, 10.478014, 10.580000 +1.950000, 8.507159, 10.478014, 10.580000 +1.966667, 8.654157, 10.478014, 10.580000 +1.983333, 8.801155, 10.478014, 10.580000 +2.000000, 8.948153, 10.478014, 10.580000 +2.016667, 9.095151, 10.478014, 10.580000 +2.033333, 9.242149, 10.478014, 10.580000 +2.050000, 9.389147, 10.478014, 10.580000 +2.066667, 9.536145, 10.478014, 10.580000 +2.083333, 9.683143, 10.478014, 10.580000 +2.100000, 9.830141, 10.478014, 10.580000 +2.116667, 9.977139, 10.478014, 10.580000 +2.133333, 10.124137, 10.478014, 10.580000 +2.150000, 10.271135, 10.478014, 10.580000 +2.166667, 10.418133, 10.478014, 10.580000 +2.183333, 10.565131, 10.478014, 10.580000 +2.200000, 10.712129, 10.478014, 10.580000 +2.216667, 10.859127, 10.478014, 10.580000 +2.233333, 11.006124, 10.478014, 10.580000 +2.250000, 11.153122, 10.478014, 10.580000 +2.266667, 11.300120, 10.478014, 10.580000 +2.283333, 11.447118, 10.478014, 10.580000 +2.300000, 11.594116, 10.478014, 10.580000 +2.316667, 11.741114, 10.478014, 10.580000 +2.333333, 11.888112, 10.478014, 10.580000 +2.350000, 12.035110, 10.478014, 10.580000 +2.366667, 12.182108, 10.478014, 10.580000 +2.383333, 12.329106, 10.478014, 10.580000 +2.400000, 12.476104, 10.478014, 10.580000 +2.416667, 12.623102, 10.478014, 10.580000 +2.433333, 12.770100, 10.478014, 10.580000 +2.450000, 12.917098, 10.478014, 10.580000 +2.466667, 13.064096, 10.478014, 10.580000 +2.483333, 13.211094, 10.478014, 10.580000 +2.500000, 13.358092, 10.478014, 10.580000 +2.516667, 13.505090, 10.478014, 10.580000 +2.533333, 13.652088, 10.478014, 10.580000 +2.550000, 13.799086, 10.478014, 10.580000 +2.566667, 13.946084, 10.478014, 10.580000 +2.583333, 14.093082, 10.478014, 10.580000 +2.600000, 14.240079, 10.478014, 10.580000 +2.616667, 14.387077, 10.478014, 10.580000 +2.633333, 14.534075, 10.478014, 10.580000 +2.650000, 14.681073, 10.478014, 10.580000 +2.666667, 14.828071, 10.478014, 10.580000 +2.683333, 14.975069, 10.478014, 10.580000 +2.700000, 15.122067, 10.478014, 10.580000 +2.716667, 15.269065, 10.478014, 10.580000 +2.733333, 15.416063, 10.478014, 10.580000 +2.750000, 15.563061, 10.478014, 10.580000 +2.766667, 15.710059, 10.478014, 10.580000 +2.783333, 15.857057, 10.478014, 10.580000 +2.800000, 16.004055, 10.478014, 10.580000 +2.816667, 16.151053, 10.478014, 10.580000 +2.833333, 16.298051, 10.478014, 10.580000 +2.850000, 16.445049, 10.478014, 10.580000 +2.866667, 16.592047, 10.478014, 10.580000 +2.883333, 16.739045, 10.478014, 10.580000 +2.900000, 16.886043, 10.478014, 10.580000 +2.916667, 17.033041, 10.478014, 10.580000 +2.933333, 17.180039, 10.478014, 10.580000 +2.950000, 17.327037, 10.478014, 10.580000 +2.966667, 17.474034, 10.478014, 10.580000 +2.983333, 17.621032, 10.478014, 10.580000 +3.000000, 17.768030, 10.478014, 10.580000 +3.016667, 17.915028, 10.478014, 10.580000 +3.033333, 18.062026, 10.478014, 10.580000 +3.050000, 18.209024, 10.478014, 10.580000 +3.066667, 18.356022, 10.478014, 10.580000 +3.083333, 18.503020, 10.478014, 10.580000 +3.100000, 18.650018, 10.478014, 10.580000 +3.116667, 18.797016, 10.478014, 10.580000 +3.133333, 18.944014, 10.478014, 10.580000 +3.150000, 19.091012, 10.478014, 10.580000 +3.166667, 19.238010, 10.478014, 10.580000 +3.183333, 19.385008, 10.478014, 10.580000 +3.200000, 19.532006, 10.478014, 10.580000 +3.216667, 19.679004, 10.478014, 10.580000 +3.233333, 19.826002, 10.478014, 10.580000 +3.250000, 19.973000, 10.478014, 10.580000 +3.266667, 20.119998, 10.478014, 10.580000 +3.283333, 20.266996, 10.478014, 10.580000 +3.300000, 20.413994, 10.478014, 10.580000 +3.316667, 20.560992, 10.478014, 10.580000 +3.333333, 20.707989, 10.478014, 10.580000 +3.350000, 20.854987, 10.478014, 10.580000 +3.366667, 21.001985, 10.478014, 10.580000 +3.383333, 21.148983, 10.478014, 10.580000 +3.400000, 21.295981, 10.478014, 10.580000 +3.416667, 21.442979, 10.478014, 10.580000 +3.433333, 21.589977, 10.478014, 10.580000 +3.450000, 21.736975, 10.478014, 10.580000 +3.466667, 21.883973, 10.478014, 10.580000 +3.483333, 22.030971, 10.478014, 10.580000 +3.500000, 22.177969, 10.478014, 10.580000 +3.516667, 22.324967, 10.478014, 10.580000 +3.533333, 22.471965, 10.478014, 10.580000 +3.550000, 22.618963, 10.478014, 10.580000 +3.566667, 22.765961, 10.478014, 10.580000 +3.583333, 22.912959, 10.478014, 10.580000 +3.600000, 23.059957, 10.478014, 10.580000 +3.616667, 23.206955, 10.478014, 10.580000 +3.633333, 23.353953, 10.478014, 10.580000 +3.650000, 23.500951, 10.478014, 10.580000 +3.666667, 23.647949, 10.478014, 10.580000 +3.683333, 23.794947, 10.478014, 10.580000 +3.700000, 23.941944, 10.478014, 10.580000 +3.716667, 24.088942, 10.478014, 10.580000 +3.733333, 24.235940, 10.478014, 10.580000 +3.750000, 24.382938, 10.478014, 10.580000 +3.766667, 24.529936, 10.478014, 10.580000 +3.783333, 24.676934, 10.478014, 10.580000 +3.800000, 24.823932, 10.478014, 10.580000 +3.816667, 24.970930, 10.478014, 10.580000 +3.833333, 25.117928, 10.478014, 10.580000 +3.850000, 25.264926, 10.478014, 10.580000 +3.866667, 25.411924, 10.478014, 10.580000 +3.883333, 25.558922, 10.478014, 10.580000 +3.900000, 25.705920, 10.478014, 10.580000 +3.916667, 25.852918, 10.478014, 10.580000 +3.933333, 25.999916, 10.478014, 10.580000 +3.950000, 26.146914, 10.478014, 10.580000 +3.966667, 26.293912, 10.478014, 10.580000 +3.983333, 26.440910, 10.478014, 10.580000 +4.000000, 26.587908, 10.478014, 10.580000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_9600_bev250_400kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_9600_bev250_400kW.csv new file mode 100644 index 0000000..d46a87e --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_9600_bev250_400kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.173494, 9.108420, 9.231932 +1.016667, 0.372297, 10.437176, 10.580000 +1.033333, 0.571100, 10.437176, 10.580000 +1.050000, 0.769904, 10.437176, 10.580000 +1.066667, 0.968707, 10.437176, 10.580000 +1.083333, 1.167511, 10.437176, 10.580000 +1.100000, 1.366314, 10.437176, 10.580000 +1.116667, 1.565117, 10.437176, 10.580000 +1.133333, 1.763921, 10.437176, 10.580000 +1.150000, 1.962724, 10.437176, 10.580000 +1.166667, 2.161527, 10.437176, 10.580000 +1.183333, 2.360331, 10.437176, 10.580000 +1.200000, 2.559134, 10.437176, 10.580000 +1.216667, 2.757937, 10.437176, 10.580000 +1.233333, 2.956741, 10.437176, 10.580000 +1.250000, 3.155544, 10.437176, 10.580000 +1.266667, 3.354347, 10.437176, 10.580000 +1.283333, 3.553151, 10.437176, 10.580000 +1.300000, 3.751954, 10.437176, 10.580000 +1.316667, 3.950757, 10.437176, 10.580000 +1.333333, 4.149561, 10.437176, 10.580000 +1.350000, 4.348364, 10.437176, 10.580000 +1.366667, 4.547168, 10.437176, 10.580000 +1.383333, 4.745971, 10.437176, 10.580000 +1.400000, 4.944774, 10.437176, 10.580000 +1.416667, 5.143578, 10.437176, 10.580000 +1.433333, 5.342381, 10.437176, 10.580000 +1.450000, 5.541184, 10.437176, 10.580000 +1.466667, 5.739988, 10.437176, 10.580000 +1.483333, 5.938791, 10.437176, 10.580000 +1.500000, 6.137594, 10.437176, 10.580000 +1.516667, 6.336398, 10.437176, 10.580000 +1.533333, 6.535201, 10.437176, 10.580000 +1.550000, 6.734004, 10.437176, 10.580000 +1.566667, 6.932808, 10.437176, 10.580000 +1.583333, 7.131611, 10.437176, 10.580000 +1.600000, 7.330415, 10.437176, 10.580000 +1.616667, 7.529218, 10.437176, 10.580000 +1.633333, 7.728021, 10.437176, 10.580000 +1.650000, 7.926825, 10.437176, 10.580000 +1.666667, 8.125628, 10.437176, 10.580000 +1.683333, 8.324431, 10.437176, 10.580000 +1.700000, 8.523235, 10.437176, 10.580000 +1.716667, 8.722038, 10.437176, 10.580000 +1.733333, 8.920841, 10.437176, 10.580000 +1.750000, 9.119645, 10.437176, 10.580000 +1.766667, 9.318448, 10.437176, 10.580000 +1.783333, 9.517251, 10.437176, 10.580000 +1.800000, 9.716055, 10.437176, 10.580000 +1.816667, 9.914858, 10.437176, 10.580000 +1.833333, 10.113662, 10.437176, 10.580000 +1.850000, 10.312465, 10.437176, 10.580000 +1.866667, 10.511268, 10.437176, 10.580000 +1.883333, 10.710072, 10.437176, 10.580000 +1.900000, 10.908875, 10.437176, 10.580000 +1.916667, 11.107678, 10.437176, 10.580000 +1.933333, 11.306482, 10.437176, 10.580000 +1.950000, 11.505285, 10.437176, 10.580000 +1.966667, 11.704088, 10.437176, 10.580000 +1.983333, 11.902892, 10.437176, 10.580000 +2.000000, 12.101695, 10.437176, 10.580000 +2.016667, 12.300498, 10.437176, 10.580000 +2.033333, 12.499302, 10.437176, 10.580000 +2.050000, 12.698105, 10.437176, 10.580000 +2.066667, 12.896909, 10.437176, 10.580000 +2.083333, 13.095712, 10.437176, 10.580000 +2.100000, 13.294515, 10.437176, 10.580000 +2.116667, 13.493319, 10.437176, 10.580000 +2.133333, 13.692122, 10.437176, 10.580000 +2.150000, 13.890925, 10.437176, 10.580000 +2.166667, 14.089729, 10.437176, 10.580000 +2.183333, 14.288532, 10.437176, 10.580000 +2.200000, 14.487335, 10.437176, 10.580000 +2.216667, 14.686139, 10.437176, 10.580000 +2.233333, 14.884942, 10.437176, 10.580000 +2.250000, 15.083745, 10.437176, 10.580000 +2.266667, 15.282549, 10.437176, 10.580000 +2.283333, 15.481352, 10.437176, 10.580000 +2.300000, 15.680156, 10.437176, 10.580000 +2.316667, 15.878959, 10.437176, 10.580000 +2.333333, 16.077762, 10.437176, 10.580000 +2.350000, 16.276566, 10.437176, 10.580000 +2.366667, 16.475369, 10.437176, 10.580000 +2.383333, 16.674172, 10.437176, 10.580000 +2.400000, 16.872976, 10.437176, 10.580000 +2.416667, 17.071779, 10.437176, 10.580000 +2.433333, 17.270582, 10.437176, 10.580000 +2.450000, 17.469386, 10.437176, 10.580000 +2.466667, 17.668189, 10.437176, 10.580000 +2.483333, 17.866992, 10.437176, 10.580000 +2.500000, 18.065796, 10.437176, 10.580000 +2.516667, 18.264599, 10.437176, 10.580000 +2.533333, 18.463403, 10.437176, 10.580000 +2.550000, 18.662206, 10.437176, 10.580000 +2.566667, 18.861009, 10.437176, 10.580000 +2.583333, 19.059813, 10.437176, 10.580000 +2.600000, 19.258616, 10.437176, 10.580000 +2.616667, 19.457419, 10.437176, 10.580000 +2.633333, 19.656223, 10.437176, 10.580000 +2.650000, 19.855026, 10.437176, 10.580000 +2.666667, 20.053829, 10.437176, 10.580000 +2.683333, 20.252633, 10.437176, 10.580000 +2.700000, 20.451436, 10.437176, 10.580000 +2.716667, 20.650239, 10.437176, 10.580000 +2.733333, 20.849043, 10.437176, 10.580000 +2.750000, 21.047846, 10.437176, 10.580000 +2.766667, 21.246650, 10.437176, 10.580000 +2.783333, 21.445453, 10.437176, 10.580000 +2.800000, 21.644256, 10.437176, 10.580000 +2.816667, 21.843060, 10.437176, 10.580000 +2.833333, 22.041863, 10.437176, 10.580000 +2.850000, 22.240666, 10.437176, 10.580000 +2.866667, 22.439470, 10.437176, 10.580000 +2.883333, 22.638273, 10.437176, 10.580000 +2.900000, 22.837076, 10.437176, 10.580000 +2.916667, 23.035880, 10.437176, 10.580000 +2.933333, 23.234683, 10.437176, 10.580000 +2.950000, 23.433486, 10.437176, 10.580000 +2.966667, 23.632290, 10.437176, 10.580000 +2.983333, 23.831093, 10.437176, 10.580000 +3.000000, 24.029897, 10.437176, 10.580000 +3.016667, 24.228700, 10.437176, 10.580000 +3.033333, 24.427503, 10.437176, 10.580000 +3.050000, 24.626307, 10.437176, 10.580000 +3.066667, 24.825110, 10.437176, 10.580000 +3.083333, 25.023913, 10.437176, 10.580000 +3.100000, 25.222717, 10.437176, 10.580000 +3.116667, 25.421520, 10.437176, 10.580000 +3.133333, 25.620323, 10.437176, 10.580000 +3.150000, 25.819127, 10.437176, 10.580000 +3.166667, 26.017930, 10.437176, 10.580000 +3.183333, 26.216733, 10.437176, 10.580000 +3.200000, 26.415537, 10.437176, 10.580000 +3.216667, 26.614340, 10.437176, 10.580000 +3.233333, 26.813144, 10.437176, 10.580000 +3.250000, 27.011947, 10.437176, 10.580000 +3.266667, 27.210750, 10.437176, 10.580000 +3.283333, 27.409554, 10.437176, 10.580000 +3.300000, 27.608357, 10.437176, 10.580000 +3.316667, 27.807160, 10.437176, 10.580000 +3.333333, 28.005964, 10.437176, 10.580000 +3.350000, 28.204767, 10.437176, 10.580000 +3.366667, 28.403570, 10.437176, 10.580000 +3.383333, 28.602374, 10.437176, 10.580000 +3.400000, 28.801177, 10.437176, 10.580000 +3.416667, 28.999980, 10.437176, 10.580000 +3.433333, 29.198784, 10.437176, 10.580000 +3.450000, 29.397587, 10.437176, 10.580000 +3.466667, 29.596391, 10.437176, 10.580000 +3.483333, 29.795194, 10.437176, 10.580000 +3.500000, 29.993997, 10.437176, 10.580000 +3.516667, 30.192801, 10.437176, 10.580000 +3.533333, 30.391604, 10.437176, 10.580000 +3.550000, 30.590407, 10.437176, 10.580000 +3.566667, 30.789211, 10.437176, 10.580000 +3.583333, 30.988014, 10.437176, 10.580000 +3.600000, 31.186817, 10.437176, 10.580000 +3.616667, 31.385621, 10.437176, 10.580000 +3.633333, 31.584424, 10.437176, 10.580000 +3.650000, 31.783227, 10.437176, 10.580000 +3.666667, 31.982031, 10.437176, 10.580000 +3.683333, 32.180834, 10.437176, 10.580000 +3.700000, 32.379637, 10.437176, 10.580000 +3.716667, 32.578441, 10.437176, 10.580000 +3.733333, 32.777244, 10.437176, 10.580000 +3.750000, 32.976048, 10.437176, 10.580000 +3.766667, 33.174851, 10.437176, 10.580000 +3.783333, 33.373654, 10.437176, 10.580000 +3.800000, 33.572458, 10.437176, 10.580000 +3.816667, 33.771261, 10.437176, 10.580000 +3.833333, 33.970064, 10.437176, 10.580000 +3.850000, 34.168868, 10.437176, 10.580000 +3.866667, 34.367671, 10.437176, 10.580000 +3.883333, 34.566474, 10.437176, 10.580000 +3.900000, 34.765278, 10.437176, 10.580000 +3.916667, 34.964081, 10.437176, 10.580000 +3.933333, 35.162884, 10.437176, 10.580000 +3.950000, 35.361688, 10.437176, 10.580000 +3.966667, 35.560491, 10.437176, 10.580000 +3.983333, 35.759295, 10.437176, 10.580000 +4.000000, 35.958098, 10.437176, 10.580000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_9600_bev250_ld1_75kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_9600_bev250_ld1_75kW.csv new file mode 100644 index 0000000..a18d99c --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_9600_bev250_ld1_75kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.119127, 5.360699, 5.412378 +1.016667, 0.252765, 6.013734, 6.072000 +1.033333, 0.386404, 6.013734, 6.072000 +1.050000, 0.520042, 6.013734, 6.072000 +1.066667, 0.653681, 6.013734, 6.072000 +1.083333, 0.787319, 6.013734, 6.072000 +1.100000, 0.920958, 6.013734, 6.072000 +1.116667, 1.054596, 6.013734, 6.072000 +1.133333, 1.188235, 6.013734, 6.072000 +1.150000, 1.321873, 6.013734, 6.072000 +1.166667, 1.455512, 6.013734, 6.072000 +1.183333, 1.589151, 6.013734, 6.072000 +1.200000, 1.722789, 6.013734, 6.072000 +1.216667, 1.856428, 6.013734, 6.072000 +1.233333, 1.990066, 6.013734, 6.072000 +1.250000, 2.123705, 6.013734, 6.072000 +1.266667, 2.257343, 6.013734, 6.072000 +1.283333, 2.390982, 6.013734, 6.072000 +1.300000, 2.524620, 6.013734, 6.072000 +1.316667, 2.658259, 6.013734, 6.072000 +1.333333, 2.791897, 6.013734, 6.072000 +1.350000, 2.925536, 6.013734, 6.072000 +1.366667, 3.059174, 6.013734, 6.072000 +1.383333, 3.192813, 6.013734, 6.072000 +1.400000, 3.326451, 6.013734, 6.072000 +1.416667, 3.460090, 6.013734, 6.072000 +1.433333, 3.593729, 6.013734, 6.072000 +1.450000, 3.727367, 6.013734, 6.072000 +1.466667, 3.861006, 6.013734, 6.072000 +1.483333, 3.994644, 6.013734, 6.072000 +1.500000, 4.128283, 6.013734, 6.072000 +1.516667, 4.261921, 6.013734, 6.072000 +1.533333, 4.395560, 6.013734, 6.072000 +1.550000, 4.529198, 6.013734, 6.072000 +1.566667, 4.662837, 6.013734, 6.072000 +1.583333, 4.796475, 6.013734, 6.072000 +1.600000, 4.930114, 6.013734, 6.072000 +1.616667, 5.063752, 6.013734, 6.072000 +1.633333, 5.197391, 6.013734, 6.072000 +1.650000, 5.331029, 6.013734, 6.072000 +1.666667, 5.464668, 6.013734, 6.072000 +1.683333, 5.598307, 6.013734, 6.072000 +1.700000, 5.731945, 6.013734, 6.072000 +1.716667, 5.865584, 6.013734, 6.072000 +1.733333, 5.999222, 6.013734, 6.072000 +1.750000, 6.132861, 6.013734, 6.072000 +1.766667, 6.266499, 6.013734, 6.072000 +1.783333, 6.400138, 6.013734, 6.072000 +1.800000, 6.533776, 6.013734, 6.072000 +1.816667, 6.667415, 6.013734, 6.072000 +1.833333, 6.801053, 6.013734, 6.072000 +1.850000, 6.934692, 6.013734, 6.072000 +1.866667, 7.068330, 6.013734, 6.072000 +1.883333, 7.201969, 6.013734, 6.072000 +1.900000, 7.335607, 6.013734, 6.072000 +1.916667, 7.469246, 6.013734, 6.072000 +1.933333, 7.602884, 6.013734, 6.072000 +1.950000, 7.736523, 6.013734, 6.072000 +1.966667, 7.870162, 6.013734, 6.072000 +1.983333, 8.003800, 6.013734, 6.072000 +2.000000, 8.137439, 6.013734, 6.072000 +2.016667, 8.271077, 6.013734, 6.072000 +2.033333, 8.404716, 6.013734, 6.072000 +2.050000, 8.538354, 6.013734, 6.072000 +2.066667, 8.671993, 6.013734, 6.072000 +2.083333, 8.805631, 6.013734, 6.072000 +2.100000, 8.939270, 6.013734, 6.072000 +2.116667, 9.072908, 6.013734, 6.072000 +2.133333, 9.206547, 6.013734, 6.072000 +2.150000, 9.340185, 6.013734, 6.072000 +2.166667, 9.473824, 6.013734, 6.072000 +2.183333, 9.607462, 6.013734, 6.072000 +2.200000, 9.741101, 6.013734, 6.072000 +2.216667, 9.874740, 6.013734, 6.072000 +2.233333, 10.008378, 6.013734, 6.072000 +2.250000, 10.142017, 6.013734, 6.072000 +2.266667, 10.275655, 6.013734, 6.072000 +2.283333, 10.409294, 6.013734, 6.072000 +2.300000, 10.542932, 6.013734, 6.072000 +2.316667, 10.676571, 6.013734, 6.072000 +2.333333, 10.810209, 6.013734, 6.072000 +2.350000, 10.943848, 6.013734, 6.072000 +2.366667, 11.077486, 6.013734, 6.072000 +2.383333, 11.211125, 6.013734, 6.072000 +2.400000, 11.344763, 6.013734, 6.072000 +2.416667, 11.478402, 6.013734, 6.072000 +2.433333, 11.612040, 6.013734, 6.072000 +2.450000, 11.745679, 6.013734, 6.072000 +2.466667, 11.879318, 6.013734, 6.072000 +2.483333, 12.012956, 6.013734, 6.072000 +2.500000, 12.146595, 6.013734, 6.072000 +2.516667, 12.280233, 6.013734, 6.072000 +2.533333, 12.413872, 6.013734, 6.072000 +2.550000, 12.547510, 6.013734, 6.072000 +2.566667, 12.681149, 6.013734, 6.072000 +2.583333, 12.814787, 6.013734, 6.072000 +2.600000, 12.948426, 6.013734, 6.072000 +2.616667, 13.082064, 6.013734, 6.072000 +2.633333, 13.215703, 6.013734, 6.072000 +2.650000, 13.349341, 6.013734, 6.072000 +2.666667, 13.482980, 6.013734, 6.072000 +2.683333, 13.616618, 6.013734, 6.072000 +2.700000, 13.750257, 6.013734, 6.072000 +2.716667, 13.883896, 6.013734, 6.072000 +2.733333, 14.017534, 6.013734, 6.072000 +2.750000, 14.151173, 6.013734, 6.072000 +2.766667, 14.284811, 6.013734, 6.072000 +2.783333, 14.418450, 6.013734, 6.072000 +2.800000, 14.552088, 6.013734, 6.072000 +2.816667, 14.685727, 6.013734, 6.072000 +2.833333, 14.819365, 6.013734, 6.072000 +2.850000, 14.953004, 6.013734, 6.072000 +2.866667, 15.086642, 6.013734, 6.072000 +2.883333, 15.220281, 6.013734, 6.072000 +2.900000, 15.353919, 6.013734, 6.072000 +2.916667, 15.487558, 6.013734, 6.072000 +2.933333, 15.621196, 6.013734, 6.072000 +2.950000, 15.754835, 6.013734, 6.072000 +2.966667, 15.888474, 6.013734, 6.072000 +2.983333, 16.022112, 6.013734, 6.072000 +3.000000, 16.155751, 6.013734, 6.072000 +3.016667, 16.289389, 6.013734, 6.072000 +3.033333, 16.423028, 6.013734, 6.072000 +3.050000, 16.556666, 6.013734, 6.072000 +3.066667, 16.690305, 6.013734, 6.072000 +3.083333, 16.823943, 6.013734, 6.072000 +3.100000, 16.957582, 6.013734, 6.072000 +3.116667, 17.091220, 6.013734, 6.072000 +3.133333, 17.224859, 6.013734, 6.072000 +3.150000, 17.358497, 6.013734, 6.072000 +3.166667, 17.492136, 6.013734, 6.072000 +3.183333, 17.625774, 6.013734, 6.072000 +3.200000, 17.759413, 6.013734, 6.072000 +3.216667, 17.893052, 6.013734, 6.072000 +3.233333, 18.026690, 6.013734, 6.072000 +3.250000, 18.160329, 6.013734, 6.072000 +3.266667, 18.293967, 6.013734, 6.072000 +3.283333, 18.427606, 6.013734, 6.072000 +3.300000, 18.561244, 6.013734, 6.072000 +3.316667, 18.694883, 6.013734, 6.072000 +3.333333, 18.828521, 6.013734, 6.072000 +3.350000, 18.962160, 6.013734, 6.072000 +3.366667, 19.095798, 6.013734, 6.072000 +3.383333, 19.229437, 6.013734, 6.072000 +3.400000, 19.363075, 6.013734, 6.072000 +3.416667, 19.496714, 6.013734, 6.072000 +3.433333, 19.630352, 6.013734, 6.072000 +3.450000, 19.763991, 6.013734, 6.072000 +3.466667, 19.897630, 6.013734, 6.072000 +3.483333, 20.031268, 6.013734, 6.072000 +3.500000, 20.164907, 6.013734, 6.072000 +3.516667, 20.298545, 6.013734, 6.072000 +3.533333, 20.432184, 6.013734, 6.072000 +3.550000, 20.565822, 6.013734, 6.072000 +3.566667, 20.699461, 6.013734, 6.072000 +3.583333, 20.833099, 6.013734, 6.072000 +3.600000, 20.966738, 6.013734, 6.072000 +3.616667, 21.100376, 6.013734, 6.072000 +3.633333, 21.234015, 6.013734, 6.072000 +3.650000, 21.367653, 6.013734, 6.072000 +3.666667, 21.501292, 6.013734, 6.072000 +3.683333, 21.634930, 6.013734, 6.072000 +3.700000, 21.768569, 6.013734, 6.072000 +3.716667, 21.902208, 6.013734, 6.072000 +3.733333, 22.035846, 6.013734, 6.072000 +3.750000, 22.169485, 6.013734, 6.072000 +3.766667, 22.303123, 6.013734, 6.072000 +3.783333, 22.436762, 6.013734, 6.072000 +3.800000, 22.570400, 6.013734, 6.072000 +3.816667, 22.704039, 6.013734, 6.072000 +3.833333, 22.837677, 6.013734, 6.072000 +3.850000, 22.971316, 6.013734, 6.072000 +3.866667, 23.104954, 6.013734, 6.072000 +3.883333, 23.238593, 6.013734, 6.072000 +3.900000, 23.372231, 6.013734, 6.072000 +3.916667, 23.505870, 6.013734, 6.072000 +3.933333, 23.639508, 6.013734, 6.072000 +3.950000, 23.773147, 6.013734, 6.072000 +3.966667, 23.906786, 6.013734, 6.072000 +3.983333, 24.040424, 6.013734, 6.072000 +4.000000, 24.174063, 6.013734, 6.072000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_9600_bev250_ld2_300kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_9600_bev250_ld2_300kW.csv new file mode 100644 index 0000000..542a53b --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_9600_bev250_ld2_300kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.173147, 9.142152, 9.231932 +1.016667, 0.371560, 10.476237, 10.580000 +1.033333, 0.569974, 10.476237, 10.580000 +1.050000, 0.768388, 10.476237, 10.580000 +1.066667, 0.966801, 10.476237, 10.580000 +1.083333, 1.165215, 10.476237, 10.580000 +1.100000, 1.363628, 10.476237, 10.580000 +1.116667, 1.562042, 10.476237, 10.580000 +1.133333, 1.760455, 10.476237, 10.580000 +1.150000, 1.958869, 10.476237, 10.580000 +1.166667, 2.157283, 10.476237, 10.580000 +1.183333, 2.355696, 10.476237, 10.580000 +1.200000, 2.554110, 10.476237, 10.580000 +1.216667, 2.752523, 10.476237, 10.580000 +1.233333, 2.950937, 10.476237, 10.580000 +1.250000, 3.149350, 10.476237, 10.580000 +1.266667, 3.347764, 10.476237, 10.580000 +1.283333, 3.546178, 10.476237, 10.580000 +1.300000, 3.744591, 10.476237, 10.580000 +1.316667, 3.943005, 10.476237, 10.580000 +1.333333, 4.141418, 10.476237, 10.580000 +1.350000, 4.339832, 10.476237, 10.580000 +1.366667, 4.538245, 10.476237, 10.580000 +1.383333, 4.736659, 10.476237, 10.580000 +1.400000, 4.935073, 10.476237, 10.580000 +1.416667, 5.133486, 10.476237, 10.580000 +1.433333, 5.331900, 10.476237, 10.580000 +1.450000, 5.530313, 10.476237, 10.580000 +1.466667, 5.728727, 10.476237, 10.580000 +1.483333, 5.927140, 10.476237, 10.580000 +1.500000, 6.125554, 10.476237, 10.580000 +1.516667, 6.323968, 10.476237, 10.580000 +1.533333, 6.522381, 10.476237, 10.580000 +1.550000, 6.720795, 10.476237, 10.580000 +1.566667, 6.919208, 10.476237, 10.580000 +1.583333, 7.117622, 10.476237, 10.580000 +1.600000, 7.316036, 10.476237, 10.580000 +1.616667, 7.514449, 10.476237, 10.580000 +1.633333, 7.712863, 10.476237, 10.580000 +1.650000, 7.911276, 10.476237, 10.580000 +1.666667, 8.109690, 10.476237, 10.580000 +1.683333, 8.308103, 10.476237, 10.580000 +1.700000, 8.506517, 10.476237, 10.580000 +1.716667, 8.704931, 10.476237, 10.580000 +1.733333, 8.903344, 10.476237, 10.580000 +1.750000, 9.101758, 10.476237, 10.580000 +1.766667, 9.300171, 10.476237, 10.580000 +1.783333, 9.498585, 10.476237, 10.580000 +1.800000, 9.696998, 10.476237, 10.580000 +1.816667, 9.895412, 10.476237, 10.580000 +1.833333, 10.093826, 10.476237, 10.580000 +1.850000, 10.292239, 10.476237, 10.580000 +1.866667, 10.490653, 10.476237, 10.580000 +1.883333, 10.689066, 10.476237, 10.580000 +1.900000, 10.887480, 10.476237, 10.580000 +1.916667, 11.085893, 10.476237, 10.580000 +1.933333, 11.284307, 10.476237, 10.580000 +1.950000, 11.482721, 10.476237, 10.580000 +1.966667, 11.681134, 10.476237, 10.580000 +1.983333, 11.879548, 10.476237, 10.580000 +2.000000, 12.077961, 10.476237, 10.580000 +2.016667, 12.276375, 10.476237, 10.580000 +2.033333, 12.474788, 10.476237, 10.580000 +2.050000, 12.673202, 10.476237, 10.580000 +2.066667, 12.871616, 10.476237, 10.580000 +2.083333, 13.070029, 10.476237, 10.580000 +2.100000, 13.268443, 10.476237, 10.580000 +2.116667, 13.466856, 10.476237, 10.580000 +2.133333, 13.665270, 10.476237, 10.580000 +2.150000, 13.863683, 10.476237, 10.580000 +2.166667, 14.062097, 10.476237, 10.580000 +2.183333, 14.260511, 10.476237, 10.580000 +2.200000, 14.458924, 10.476237, 10.580000 +2.216667, 14.657338, 10.476237, 10.580000 +2.233333, 14.855751, 10.476237, 10.580000 +2.250000, 15.054165, 10.476237, 10.580000 +2.266667, 15.252579, 10.476237, 10.580000 +2.283333, 15.450992, 10.476237, 10.580000 +2.300000, 15.649406, 10.476237, 10.580000 +2.316667, 15.847819, 10.476237, 10.580000 +2.333333, 16.046233, 10.476237, 10.580000 +2.350000, 16.244646, 10.476237, 10.580000 +2.366667, 16.443060, 10.476237, 10.580000 +2.383333, 16.641474, 10.476237, 10.580000 +2.400000, 16.839887, 10.476237, 10.580000 +2.416667, 17.038301, 10.476237, 10.580000 +2.433333, 17.236714, 10.476237, 10.580000 +2.450000, 17.435128, 10.476237, 10.580000 +2.466667, 17.633541, 10.476237, 10.580000 +2.483333, 17.831955, 10.476237, 10.580000 +2.500000, 18.030369, 10.476237, 10.580000 +2.516667, 18.228782, 10.476237, 10.580000 +2.533333, 18.427196, 10.476237, 10.580000 +2.550000, 18.625609, 10.476237, 10.580000 +2.566667, 18.824023, 10.476237, 10.580000 +2.583333, 19.022436, 10.476237, 10.580000 +2.600000, 19.220850, 10.476237, 10.580000 +2.616667, 19.419264, 10.476237, 10.580000 +2.633333, 19.617677, 10.476237, 10.580000 +2.650000, 19.816091, 10.476237, 10.580000 +2.666667, 20.014504, 10.476237, 10.580000 +2.683333, 20.212918, 10.476237, 10.580000 +2.700000, 20.411331, 10.476237, 10.580000 +2.716667, 20.609745, 10.476237, 10.580000 +2.733333, 20.808159, 10.476237, 10.580000 +2.750000, 21.006572, 10.476237, 10.580000 +2.766667, 21.204986, 10.476237, 10.580000 +2.783333, 21.403399, 10.476237, 10.580000 +2.800000, 21.601813, 10.476237, 10.580000 +2.816667, 21.800227, 10.476237, 10.580000 +2.833333, 21.998640, 10.476237, 10.580000 +2.850000, 22.197054, 10.476237, 10.580000 +2.866667, 22.395467, 10.476237, 10.580000 +2.883333, 22.593881, 10.476237, 10.580000 +2.900000, 22.792294, 10.476237, 10.580000 +2.916667, 22.990708, 10.476237, 10.580000 +2.933333, 23.189122, 10.476237, 10.580000 +2.950000, 23.387535, 10.476237, 10.580000 +2.966667, 23.585949, 10.476237, 10.580000 +2.983333, 23.784362, 10.476237, 10.580000 +3.000000, 23.982776, 10.476237, 10.580000 +3.016667, 24.181189, 10.476237, 10.580000 +3.033333, 24.379603, 10.476237, 10.580000 +3.050000, 24.578017, 10.476237, 10.580000 +3.066667, 24.776430, 10.476237, 10.580000 +3.083333, 24.974844, 10.476237, 10.580000 +3.100000, 25.173257, 10.476237, 10.580000 +3.116667, 25.371671, 10.476237, 10.580000 +3.133333, 25.570084, 10.476237, 10.580000 +3.150000, 25.768498, 10.476237, 10.580000 +3.166667, 25.966912, 10.476237, 10.580000 +3.183333, 26.165325, 10.476237, 10.580000 +3.200000, 26.363739, 10.476237, 10.580000 +3.216667, 26.562152, 10.476237, 10.580000 +3.233333, 26.760566, 10.476237, 10.580000 +3.250000, 26.958979, 10.476237, 10.580000 +3.266667, 27.157393, 10.476237, 10.580000 +3.283333, 27.355807, 10.476237, 10.580000 +3.300000, 27.554220, 10.476237, 10.580000 +3.316667, 27.752634, 10.476237, 10.580000 +3.333333, 27.951047, 10.476237, 10.580000 +3.350000, 28.149461, 10.476237, 10.580000 +3.366667, 28.347874, 10.476237, 10.580000 +3.383333, 28.546288, 10.476237, 10.580000 +3.400000, 28.744702, 10.476237, 10.580000 +3.416667, 28.943115, 10.476237, 10.580000 +3.433333, 29.141529, 10.476237, 10.580000 +3.450000, 29.339942, 10.476237, 10.580000 +3.466667, 29.538356, 10.476237, 10.580000 +3.483333, 29.736770, 10.476237, 10.580000 +3.500000, 29.935183, 10.476237, 10.580000 +3.516667, 30.133597, 10.476237, 10.580000 +3.533333, 30.332010, 10.476237, 10.580000 +3.550000, 30.530424, 10.476237, 10.580000 +3.566667, 30.728837, 10.476237, 10.580000 +3.583333, 30.927251, 10.476237, 10.580000 +3.600000, 31.125665, 10.476237, 10.580000 +3.616667, 31.324078, 10.476237, 10.580000 +3.633333, 31.522492, 10.476237, 10.580000 +3.650000, 31.720905, 10.476237, 10.580000 +3.666667, 31.919319, 10.476237, 10.580000 +3.683333, 32.117732, 10.476237, 10.580000 +3.700000, 32.316146, 10.476237, 10.580000 +3.716667, 32.514560, 10.476237, 10.580000 +3.733333, 32.712973, 10.476237, 10.580000 +3.750000, 32.911387, 10.476237, 10.580000 +3.766667, 33.109800, 10.476237, 10.580000 +3.783333, 33.308214, 10.476237, 10.580000 +3.800000, 33.506627, 10.476237, 10.580000 +3.816667, 33.705041, 10.476237, 10.580000 +3.833333, 33.903455, 10.476237, 10.580000 +3.850000, 34.101868, 10.476237, 10.580000 +3.866667, 34.300282, 10.476237, 10.580000 +3.883333, 34.498695, 10.476237, 10.580000 +3.900000, 34.697109, 10.476237, 10.580000 +3.916667, 34.895522, 10.476237, 10.580000 +3.933333, 35.093936, 10.476237, 10.580000 +3.950000, 35.292350, 10.476237, 10.580000 +3.966667, 35.490763, 10.476237, 10.580000 +3.983333, 35.689177, 10.476237, 10.580000 +4.000000, 35.887590, 10.476237, 10.580000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_9600_bev275_ld1_150kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_9600_bev275_ld1_150kW.csv new file mode 100644 index 0000000..8662074 --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_9600_bev275_ld1_150kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.154536, 7.695883, 7.770982 +1.016667, 0.330159, 8.746038, 8.832000 +1.033333, 0.505782, 8.746038, 8.832000 +1.050000, 0.681406, 8.746038, 8.832000 +1.066667, 0.857029, 8.746038, 8.832000 +1.083333, 1.032652, 8.746038, 8.832000 +1.100000, 1.208275, 8.746038, 8.832000 +1.116667, 1.383899, 8.746038, 8.832000 +1.133333, 1.559522, 8.746038, 8.832000 +1.150000, 1.735145, 8.746038, 8.832000 +1.166667, 1.910768, 8.746038, 8.832000 +1.183333, 2.086392, 8.746038, 8.832000 +1.200000, 2.262015, 8.746038, 8.832000 +1.216667, 2.437638, 8.746038, 8.832000 +1.233333, 2.613261, 8.746038, 8.832000 +1.250000, 2.788885, 8.746038, 8.832000 +1.266667, 2.964508, 8.746038, 8.832000 +1.283333, 3.140131, 8.746038, 8.832000 +1.300000, 3.315754, 8.746038, 8.832000 +1.316667, 3.491378, 8.746038, 8.832000 +1.333333, 3.667001, 8.746038, 8.832000 +1.350000, 3.842624, 8.746038, 8.832000 +1.366667, 4.018247, 8.746038, 8.832000 +1.383333, 4.193871, 8.746038, 8.832000 +1.400000, 4.369494, 8.746038, 8.832000 +1.416667, 4.545117, 8.746038, 8.832000 +1.433333, 4.720740, 8.746038, 8.832000 +1.450000, 4.896364, 8.746038, 8.832000 +1.466667, 5.071987, 8.746038, 8.832000 +1.483333, 5.247610, 8.746038, 8.832000 +1.500000, 5.423233, 8.746038, 8.832000 +1.516667, 5.598857, 8.746038, 8.832000 +1.533333, 5.774480, 8.746038, 8.832000 +1.550000, 5.950103, 8.746038, 8.832000 +1.566667, 6.125726, 8.746038, 8.832000 +1.583333, 6.301350, 8.746038, 8.832000 +1.600000, 6.476973, 8.746038, 8.832000 +1.616667, 6.652596, 8.746038, 8.832000 +1.633333, 6.828219, 8.746038, 8.832000 +1.650000, 7.003843, 8.746038, 8.832000 +1.666667, 7.179466, 8.746038, 8.832000 +1.683333, 7.355089, 8.746038, 8.832000 +1.700000, 7.530712, 8.746038, 8.832000 +1.716667, 7.706336, 8.746038, 8.832000 +1.733333, 7.881959, 8.746038, 8.832000 +1.750000, 8.057582, 8.746038, 8.832000 +1.766667, 8.233205, 8.746038, 8.832000 +1.783333, 8.408829, 8.746038, 8.832000 +1.800000, 8.584452, 8.746038, 8.832000 +1.816667, 8.760075, 8.746038, 8.832000 +1.833333, 8.935698, 8.746038, 8.832000 +1.850000, 9.111322, 8.746038, 8.832000 +1.866667, 9.286945, 8.746038, 8.832000 +1.883333, 9.462568, 8.746038, 8.832000 +1.900000, 9.638191, 8.746038, 8.832000 +1.916667, 9.813815, 8.746038, 8.832000 +1.933333, 9.989438, 8.746038, 8.832000 +1.950000, 10.165061, 8.746038, 8.832000 +1.966667, 10.340684, 8.746038, 8.832000 +1.983333, 10.516308, 8.746038, 8.832000 +2.000000, 10.691931, 8.746038, 8.832000 +2.016667, 10.867554, 8.746038, 8.832000 +2.033333, 11.043177, 8.746038, 8.832000 +2.050000, 11.218801, 8.746038, 8.832000 +2.066667, 11.394424, 8.746038, 8.832000 +2.083333, 11.570047, 8.746038, 8.832000 +2.100000, 11.745670, 8.746038, 8.832000 +2.116667, 11.921294, 8.746038, 8.832000 +2.133333, 12.096917, 8.746038, 8.832000 +2.150000, 12.272540, 8.746038, 8.832000 +2.166667, 12.448164, 8.746038, 8.832000 +2.183333, 12.623787, 8.746038, 8.832000 +2.200000, 12.799410, 8.746038, 8.832000 +2.216667, 12.975033, 8.746038, 8.832000 +2.233333, 13.150657, 8.746038, 8.832000 +2.250000, 13.326280, 8.746038, 8.832000 +2.266667, 13.501903, 8.746038, 8.832000 +2.283333, 13.677526, 8.746038, 8.832000 +2.300000, 13.853150, 8.746038, 8.832000 +2.316667, 14.028773, 8.746038, 8.832000 +2.333333, 14.204396, 8.746038, 8.832000 +2.350000, 14.380019, 8.746038, 8.832000 +2.366667, 14.555643, 8.746038, 8.832000 +2.383333, 14.731266, 8.746038, 8.832000 +2.400000, 14.906889, 8.746038, 8.832000 +2.416667, 15.082512, 8.746038, 8.832000 +2.433333, 15.258136, 8.746038, 8.832000 +2.450000, 15.433759, 8.746038, 8.832000 +2.466667, 15.609382, 8.746038, 8.832000 +2.483333, 15.785005, 8.746038, 8.832000 +2.500000, 15.960629, 8.746038, 8.832000 +2.516667, 16.136252, 8.746038, 8.832000 +2.533333, 16.311875, 8.746038, 8.832000 +2.550000, 16.487498, 8.746038, 8.832000 +2.566667, 16.663122, 8.746038, 8.832000 +2.583333, 16.838745, 8.746038, 8.832000 +2.600000, 17.014368, 8.746038, 8.832000 +2.616667, 17.189991, 8.746038, 8.832000 +2.633333, 17.365615, 8.746038, 8.832000 +2.650000, 17.541238, 8.746038, 8.832000 +2.666667, 17.716861, 8.746038, 8.832000 +2.683333, 17.892484, 8.746038, 8.832000 +2.700000, 18.068108, 8.746038, 8.832000 +2.716667, 18.243731, 8.746038, 8.832000 +2.733333, 18.419354, 8.746038, 8.832000 +2.750000, 18.594977, 8.746038, 8.832000 +2.766667, 18.770601, 8.746038, 8.832000 +2.783333, 18.946224, 8.746038, 8.832000 +2.800000, 19.121847, 8.746038, 8.832000 +2.816667, 19.297470, 8.746038, 8.832000 +2.833333, 19.473094, 8.746038, 8.832000 +2.850000, 19.648717, 8.746038, 8.832000 +2.866667, 19.824340, 8.746038, 8.832000 +2.883333, 19.999963, 8.746038, 8.832000 +2.900000, 20.175587, 8.746038, 8.832000 +2.916667, 20.351210, 8.746038, 8.832000 +2.933333, 20.526833, 8.746038, 8.832000 +2.950000, 20.702456, 8.746038, 8.832000 +2.966667, 20.878080, 8.746038, 8.832000 +2.983333, 21.053703, 8.746038, 8.832000 +3.000000, 21.229326, 8.746038, 8.832000 +3.016667, 21.404949, 8.746038, 8.832000 +3.033333, 21.580573, 8.746038, 8.832000 +3.050000, 21.756196, 8.746038, 8.832000 +3.066667, 21.931819, 8.746038, 8.832000 +3.083333, 22.107442, 8.746038, 8.832000 +3.100000, 22.283066, 8.746038, 8.832000 +3.116667, 22.458689, 8.746038, 8.832000 +3.133333, 22.634312, 8.746038, 8.832000 +3.150000, 22.809935, 8.746038, 8.832000 +3.166667, 22.985559, 8.746038, 8.832000 +3.183333, 23.161182, 8.746038, 8.832000 +3.200000, 23.336805, 8.746038, 8.832000 +3.216667, 23.512428, 8.746038, 8.832000 +3.233333, 23.688052, 8.746038, 8.832000 +3.250000, 23.863675, 8.746038, 8.832000 +3.266667, 24.039298, 8.746038, 8.832000 +3.283333, 24.214921, 8.746038, 8.832000 +3.300000, 24.390545, 8.746038, 8.832000 +3.316667, 24.566168, 8.746038, 8.832000 +3.333333, 24.741791, 8.746038, 8.832000 +3.350000, 24.917414, 8.746038, 8.832000 +3.366667, 25.093038, 8.746038, 8.832000 +3.383333, 25.268661, 8.746038, 8.832000 +3.400000, 25.444284, 8.746038, 8.832000 +3.416667, 25.619907, 8.746038, 8.832000 +3.433333, 25.795531, 8.746038, 8.832000 +3.450000, 25.971154, 8.746038, 8.832000 +3.466667, 26.146777, 8.746038, 8.832000 +3.483333, 26.322401, 8.746038, 8.832000 +3.500000, 26.498024, 8.746038, 8.832000 +3.516667, 26.673647, 8.746038, 8.832000 +3.533333, 26.849270, 8.746038, 8.832000 +3.550000, 27.024894, 8.746038, 8.832000 +3.566667, 27.200517, 8.746038, 8.832000 +3.583333, 27.376140, 8.746038, 8.832000 +3.600000, 27.551763, 8.746038, 8.832000 +3.616667, 27.727387, 8.746038, 8.832000 +3.633333, 27.903010, 8.746038, 8.832000 +3.650000, 28.078633, 8.746038, 8.832000 +3.666667, 28.254256, 8.746038, 8.832000 +3.683333, 28.429880, 8.746038, 8.832000 +3.700000, 28.605503, 8.746038, 8.832000 +3.716667, 28.781126, 8.746038, 8.832000 +3.733333, 28.956749, 8.746038, 8.832000 +3.750000, 29.132373, 8.746038, 8.832000 +3.766667, 29.307996, 8.746038, 8.832000 +3.783333, 29.483619, 8.746038, 8.832000 +3.800000, 29.659242, 8.746038, 8.832000 +3.816667, 29.834866, 8.746038, 8.832000 +3.833333, 30.010489, 8.746038, 8.832000 +3.850000, 30.186112, 8.746038, 8.832000 +3.866667, 30.361735, 8.746038, 8.832000 +3.883333, 30.537359, 8.746038, 8.832000 +3.900000, 30.712982, 8.746038, 8.832000 +3.916667, 30.888605, 8.746038, 8.832000 +3.933333, 31.064228, 8.746038, 8.832000 +3.950000, 31.239852, 8.746038, 8.832000 +3.966667, 31.415475, 8.746038, 8.832000 +3.983333, 31.591098, 8.746038, 8.832000 +4.000000, 31.766721, 8.746038, 8.832000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_9600_bev300_300kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_9600_bev300_300kW.csv new file mode 100644 index 0000000..e9b79da --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_9600_bev300_300kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.156285, 9.142660, 9.231932 +1.016667, 0.335377, 10.476905, 10.580000 +1.033333, 0.514470, 10.476905, 10.580000 +1.050000, 0.693562, 10.476905, 10.580000 +1.066667, 0.872654, 10.476905, 10.580000 +1.083333, 1.051747, 10.476905, 10.580000 +1.100000, 1.230839, 10.476905, 10.580000 +1.116667, 1.409932, 10.476905, 10.580000 +1.133333, 1.589024, 10.476905, 10.580000 +1.150000, 1.768116, 10.476905, 10.580000 +1.166667, 1.947209, 10.476905, 10.580000 +1.183333, 2.126301, 10.476905, 10.580000 +1.200000, 2.305393, 10.476905, 10.580000 +1.216667, 2.484486, 10.476905, 10.580000 +1.233333, 2.663578, 10.476905, 10.580000 +1.250000, 2.842671, 10.476905, 10.580000 +1.266667, 3.021763, 10.476905, 10.580000 +1.283333, 3.200855, 10.476905, 10.580000 +1.300000, 3.379948, 10.476905, 10.580000 +1.316667, 3.559040, 10.476905, 10.580000 +1.333333, 3.738133, 10.476905, 10.580000 +1.350000, 3.917225, 10.476905, 10.580000 +1.366667, 4.096317, 10.476905, 10.580000 +1.383333, 4.275410, 10.476905, 10.580000 +1.400000, 4.454502, 10.476905, 10.580000 +1.416667, 4.633595, 10.476905, 10.580000 +1.433333, 4.812687, 10.476905, 10.580000 +1.450000, 4.991779, 10.476905, 10.580000 +1.466667, 5.170872, 10.476905, 10.580000 +1.483333, 5.349964, 10.476905, 10.580000 +1.500000, 5.529056, 10.476905, 10.580000 +1.516667, 5.708149, 10.476905, 10.580000 +1.533333, 5.887241, 10.476905, 10.580000 +1.550000, 6.066334, 10.476905, 10.580000 +1.566667, 6.245426, 10.476905, 10.580000 +1.583333, 6.424518, 10.476905, 10.580000 +1.600000, 6.603611, 10.476905, 10.580000 +1.616667, 6.782703, 10.476905, 10.580000 +1.633333, 6.961796, 10.476905, 10.580000 +1.650000, 7.140888, 10.476905, 10.580000 +1.666667, 7.319980, 10.476905, 10.580000 +1.683333, 7.499073, 10.476905, 10.580000 +1.700000, 7.678165, 10.476905, 10.580000 +1.716667, 7.857258, 10.476905, 10.580000 +1.733333, 8.036350, 10.476905, 10.580000 +1.750000, 8.215442, 10.476905, 10.580000 +1.766667, 8.394535, 10.476905, 10.580000 +1.783333, 8.573627, 10.476905, 10.580000 +1.800000, 8.752719, 10.476905, 10.580000 +1.816667, 8.931812, 10.476905, 10.580000 +1.833333, 9.110904, 10.476905, 10.580000 +1.850000, 9.289997, 10.476905, 10.580000 +1.866667, 9.469089, 10.476905, 10.580000 +1.883333, 9.648181, 10.476905, 10.580000 +1.900000, 9.827274, 10.476905, 10.580000 +1.916667, 10.006366, 10.476905, 10.580000 +1.933333, 10.185459, 10.476905, 10.580000 +1.950000, 10.364551, 10.476905, 10.580000 +1.966667, 10.543643, 10.476905, 10.580000 +1.983333, 10.722736, 10.476905, 10.580000 +2.000000, 10.901828, 10.476905, 10.580000 +2.016667, 11.080921, 10.476905, 10.580000 +2.033333, 11.260013, 10.476905, 10.580000 +2.050000, 11.439105, 10.476905, 10.580000 +2.066667, 11.618198, 10.476905, 10.580000 +2.083333, 11.797290, 10.476905, 10.580000 +2.100000, 11.976382, 10.476905, 10.580000 +2.116667, 12.155475, 10.476905, 10.580000 +2.133333, 12.334567, 10.476905, 10.580000 +2.150000, 12.513660, 10.476905, 10.580000 +2.166667, 12.692752, 10.476905, 10.580000 +2.183333, 12.871844, 10.476905, 10.580000 +2.200000, 13.050937, 10.476905, 10.580000 +2.216667, 13.230029, 10.476905, 10.580000 +2.233333, 13.409122, 10.476905, 10.580000 +2.250000, 13.588214, 10.476905, 10.580000 +2.266667, 13.767306, 10.476905, 10.580000 +2.283333, 13.946399, 10.476905, 10.580000 +2.300000, 14.125491, 10.476905, 10.580000 +2.316667, 14.304584, 10.476905, 10.580000 +2.333333, 14.483676, 10.476905, 10.580000 +2.350000, 14.662768, 10.476905, 10.580000 +2.366667, 14.841861, 10.476905, 10.580000 +2.383333, 15.020953, 10.476905, 10.580000 +2.400000, 15.200045, 10.476905, 10.580000 +2.416667, 15.379138, 10.476905, 10.580000 +2.433333, 15.558230, 10.476905, 10.580000 +2.450000, 15.737323, 10.476905, 10.580000 +2.466667, 15.916415, 10.476905, 10.580000 +2.483333, 16.095507, 10.476905, 10.580000 +2.500000, 16.274600, 10.476905, 10.580000 +2.516667, 16.453692, 10.476905, 10.580000 +2.533333, 16.632785, 10.476905, 10.580000 +2.550000, 16.811877, 10.476905, 10.580000 +2.566667, 16.990969, 10.476905, 10.580000 +2.583333, 17.170062, 10.476905, 10.580000 +2.600000, 17.349154, 10.476905, 10.580000 +2.616667, 17.528247, 10.476905, 10.580000 +2.633333, 17.707339, 10.476905, 10.580000 +2.650000, 17.886431, 10.476905, 10.580000 +2.666667, 18.065524, 10.476905, 10.580000 +2.683333, 18.244616, 10.476905, 10.580000 +2.700000, 18.423708, 10.476905, 10.580000 +2.716667, 18.602801, 10.476905, 10.580000 +2.733333, 18.781893, 10.476905, 10.580000 +2.750000, 18.960986, 10.476905, 10.580000 +2.766667, 19.140078, 10.476905, 10.580000 +2.783333, 19.319170, 10.476905, 10.580000 +2.800000, 19.498263, 10.476905, 10.580000 +2.816667, 19.677355, 10.476905, 10.580000 +2.833333, 19.856448, 10.476905, 10.580000 +2.850000, 20.035540, 10.476905, 10.580000 +2.866667, 20.214632, 10.476905, 10.580000 +2.883333, 20.393725, 10.476905, 10.580000 +2.900000, 20.572817, 10.476905, 10.580000 +2.916667, 20.751910, 10.476905, 10.580000 +2.933333, 20.931002, 10.476905, 10.580000 +2.950000, 21.110094, 10.476905, 10.580000 +2.966667, 21.289187, 10.476905, 10.580000 +2.983333, 21.468279, 10.476905, 10.580000 +3.000000, 21.647371, 10.476905, 10.580000 +3.016667, 21.826464, 10.476905, 10.580000 +3.033333, 22.005556, 10.476905, 10.580000 +3.050000, 22.184649, 10.476905, 10.580000 +3.066667, 22.363741, 10.476905, 10.580000 +3.083333, 22.542833, 10.476905, 10.580000 +3.100000, 22.721926, 10.476905, 10.580000 +3.116667, 22.901018, 10.476905, 10.580000 +3.133333, 23.080111, 10.476905, 10.580000 +3.150000, 23.259203, 10.476905, 10.580000 +3.166667, 23.438295, 10.476905, 10.580000 +3.183333, 23.617388, 10.476905, 10.580000 +3.200000, 23.796480, 10.476905, 10.580000 +3.216667, 23.975573, 10.476905, 10.580000 +3.233333, 24.154665, 10.476905, 10.580000 +3.250000, 24.333757, 10.476905, 10.580000 +3.266667, 24.512850, 10.476905, 10.580000 +3.283333, 24.691942, 10.476905, 10.580000 +3.300000, 24.871034, 10.476905, 10.580000 +3.316667, 25.050127, 10.476905, 10.580000 +3.333333, 25.229219, 10.476905, 10.580000 +3.350000, 25.408312, 10.476905, 10.580000 +3.366667, 25.587404, 10.476905, 10.580000 +3.383333, 25.766496, 10.476905, 10.580000 +3.400000, 25.945589, 10.476905, 10.580000 +3.416667, 26.124681, 10.476905, 10.580000 +3.433333, 26.303774, 10.476905, 10.580000 +3.450000, 26.482866, 10.476905, 10.580000 +3.466667, 26.661958, 10.476905, 10.580000 +3.483333, 26.841051, 10.476905, 10.580000 +3.500000, 27.020143, 10.476905, 10.580000 +3.516667, 27.199236, 10.476905, 10.580000 +3.533333, 27.378328, 10.476905, 10.580000 +3.550000, 27.557420, 10.476905, 10.580000 +3.566667, 27.736513, 10.476905, 10.580000 +3.583333, 27.915605, 10.476905, 10.580000 +3.600000, 28.094697, 10.476905, 10.580000 +3.616667, 28.273790, 10.476905, 10.580000 +3.633333, 28.452882, 10.476905, 10.580000 +3.650000, 28.631975, 10.476905, 10.580000 +3.666667, 28.811067, 10.476905, 10.580000 +3.683333, 28.990159, 10.476905, 10.580000 +3.700000, 29.169252, 10.476905, 10.580000 +3.716667, 29.348344, 10.476905, 10.580000 +3.733333, 29.527437, 10.476905, 10.580000 +3.750000, 29.706529, 10.476905, 10.580000 +3.766667, 29.885621, 10.476905, 10.580000 +3.783333, 30.064714, 10.476905, 10.580000 +3.800000, 30.243806, 10.476905, 10.580000 +3.816667, 30.422899, 10.476905, 10.580000 +3.833333, 30.601991, 10.476905, 10.580000 +3.850000, 30.781083, 10.476905, 10.580000 +3.866667, 30.960176, 10.476905, 10.580000 +3.883333, 31.139268, 10.476905, 10.580000 +3.900000, 31.318360, 10.476905, 10.580000 +3.916667, 31.497453, 10.476905, 10.580000 +3.933333, 31.676545, 10.476905, 10.580000 +3.950000, 31.855638, 10.476905, 10.580000 +3.966667, 32.034730, 10.476905, 10.580000 +3.983333, 32.213822, 10.476905, 10.580000 +4.000000, 32.392915, 10.476905, 10.580000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_9600_bev300_400kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_9600_bev300_400kW.csv new file mode 100644 index 0000000..cff4bbb --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_9600_bev300_400kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.155713, 9.109203, 9.231932 +1.016667, 0.334144, 10.438204, 10.580000 +1.033333, 0.512575, 10.438204, 10.580000 +1.050000, 0.691005, 10.438204, 10.580000 +1.066667, 0.869436, 10.438204, 10.580000 +1.083333, 1.047867, 10.438204, 10.580000 +1.100000, 1.226298, 10.438204, 10.580000 +1.116667, 1.404729, 10.438204, 10.580000 +1.133333, 1.583160, 10.438204, 10.580000 +1.150000, 1.761590, 10.438204, 10.580000 +1.166667, 1.940021, 10.438204, 10.580000 +1.183333, 2.118452, 10.438204, 10.580000 +1.200000, 2.296883, 10.438204, 10.580000 +1.216667, 2.475314, 10.438204, 10.580000 +1.233333, 2.653745, 10.438204, 10.580000 +1.250000, 2.832176, 10.438204, 10.580000 +1.266667, 3.010606, 10.438204, 10.580000 +1.283333, 3.189037, 10.438204, 10.580000 +1.300000, 3.367468, 10.438204, 10.580000 +1.316667, 3.545899, 10.438204, 10.580000 +1.333333, 3.724330, 10.438204, 10.580000 +1.350000, 3.902761, 10.438204, 10.580000 +1.366667, 4.081191, 10.438204, 10.580000 +1.383333, 4.259622, 10.438204, 10.580000 +1.400000, 4.438053, 10.438204, 10.580000 +1.416667, 4.616484, 10.438204, 10.580000 +1.433333, 4.794915, 10.438204, 10.580000 +1.450000, 4.973346, 10.438204, 10.580000 +1.466667, 5.151776, 10.438204, 10.580000 +1.483333, 5.330207, 10.438204, 10.580000 +1.500000, 5.508638, 10.438204, 10.580000 +1.516667, 5.687069, 10.438204, 10.580000 +1.533333, 5.865500, 10.438204, 10.580000 +1.550000, 6.043931, 10.438204, 10.580000 +1.566667, 6.222362, 10.438204, 10.580000 +1.583333, 6.400792, 10.438204, 10.580000 +1.600000, 6.579223, 10.438204, 10.580000 +1.616667, 6.757654, 10.438204, 10.580000 +1.633333, 6.936085, 10.438204, 10.580000 +1.650000, 7.114516, 10.438204, 10.580000 +1.666667, 7.292947, 10.438204, 10.580000 +1.683333, 7.471377, 10.438204, 10.580000 +1.700000, 7.649808, 10.438204, 10.580000 +1.716667, 7.828239, 10.438204, 10.580000 +1.733333, 8.006670, 10.438204, 10.580000 +1.750000, 8.185101, 10.438204, 10.580000 +1.766667, 8.363532, 10.438204, 10.580000 +1.783333, 8.541962, 10.438204, 10.580000 +1.800000, 8.720393, 10.438204, 10.580000 +1.816667, 8.898824, 10.438204, 10.580000 +1.833333, 9.077255, 10.438204, 10.580000 +1.850000, 9.255686, 10.438204, 10.580000 +1.866667, 9.434117, 10.438204, 10.580000 +1.883333, 9.612548, 10.438204, 10.580000 +1.900000, 9.790978, 10.438204, 10.580000 +1.916667, 9.969409, 10.438204, 10.580000 +1.933333, 10.147840, 10.438204, 10.580000 +1.950000, 10.326271, 10.438204, 10.580000 +1.966667, 10.504702, 10.438204, 10.580000 +1.983333, 10.683133, 10.438204, 10.580000 +2.000000, 10.861563, 10.438204, 10.580000 +2.016667, 11.039994, 10.438204, 10.580000 +2.033333, 11.218425, 10.438204, 10.580000 +2.050000, 11.396856, 10.438204, 10.580000 +2.066667, 11.575287, 10.438204, 10.580000 +2.083333, 11.753718, 10.438204, 10.580000 +2.100000, 11.932148, 10.438204, 10.580000 +2.116667, 12.110579, 10.438204, 10.580000 +2.133333, 12.289010, 10.438204, 10.580000 +2.150000, 12.467441, 10.438204, 10.580000 +2.166667, 12.645872, 10.438204, 10.580000 +2.183333, 12.824303, 10.438204, 10.580000 +2.200000, 13.002734, 10.438204, 10.580000 +2.216667, 13.181164, 10.438204, 10.580000 +2.233333, 13.359595, 10.438204, 10.580000 +2.250000, 13.538026, 10.438204, 10.580000 +2.266667, 13.716457, 10.438204, 10.580000 +2.283333, 13.894888, 10.438204, 10.580000 +2.300000, 14.073319, 10.438204, 10.580000 +2.316667, 14.251749, 10.438204, 10.580000 +2.333333, 14.430180, 10.438204, 10.580000 +2.350000, 14.608611, 10.438204, 10.580000 +2.366667, 14.787042, 10.438204, 10.580000 +2.383333, 14.965473, 10.438204, 10.580000 +2.400000, 15.143904, 10.438204, 10.580000 +2.416667, 15.322334, 10.438204, 10.580000 +2.433333, 15.500765, 10.438204, 10.580000 +2.450000, 15.679196, 10.438204, 10.580000 +2.466667, 15.857627, 10.438204, 10.580000 +2.483333, 16.036058, 10.438204, 10.580000 +2.500000, 16.214489, 10.438204, 10.580000 +2.516667, 16.392920, 10.438204, 10.580000 +2.533333, 16.571350, 10.438204, 10.580000 +2.550000, 16.749781, 10.438204, 10.580000 +2.566667, 16.928212, 10.438204, 10.580000 +2.583333, 17.106643, 10.438204, 10.580000 +2.600000, 17.285074, 10.438204, 10.580000 +2.616667, 17.463505, 10.438204, 10.580000 +2.633333, 17.641935, 10.438204, 10.580000 +2.650000, 17.820366, 10.438204, 10.580000 +2.666667, 17.998797, 10.438204, 10.580000 +2.683333, 18.177228, 10.438204, 10.580000 +2.700000, 18.355659, 10.438204, 10.580000 +2.716667, 18.534090, 10.438204, 10.580000 +2.733333, 18.712520, 10.438204, 10.580000 +2.750000, 18.890951, 10.438204, 10.580000 +2.766667, 19.069382, 10.438204, 10.580000 +2.783333, 19.247813, 10.438204, 10.580000 +2.800000, 19.426244, 10.438204, 10.580000 +2.816667, 19.604675, 10.438204, 10.580000 +2.833333, 19.783106, 10.438204, 10.580000 +2.850000, 19.961536, 10.438204, 10.580000 +2.866667, 20.139967, 10.438204, 10.580000 +2.883333, 20.318398, 10.438204, 10.580000 +2.900000, 20.496829, 10.438204, 10.580000 +2.916667, 20.675260, 10.438204, 10.580000 +2.933333, 20.853691, 10.438204, 10.580000 +2.950000, 21.032121, 10.438204, 10.580000 +2.966667, 21.210552, 10.438204, 10.580000 +2.983333, 21.388983, 10.438204, 10.580000 +3.000000, 21.567414, 10.438204, 10.580000 +3.016667, 21.745845, 10.438204, 10.580000 +3.033333, 21.924276, 10.438204, 10.580000 +3.050000, 22.102707, 10.438204, 10.580000 +3.066667, 22.281137, 10.438204, 10.580000 +3.083333, 22.459568, 10.438204, 10.580000 +3.100000, 22.637999, 10.438204, 10.580000 +3.116667, 22.816430, 10.438204, 10.580000 +3.133333, 22.994861, 10.438204, 10.580000 +3.150000, 23.173292, 10.438204, 10.580000 +3.166667, 23.351722, 10.438204, 10.580000 +3.183333, 23.530153, 10.438204, 10.580000 +3.200000, 23.708584, 10.438204, 10.580000 +3.216667, 23.887015, 10.438204, 10.580000 +3.233333, 24.065446, 10.438204, 10.580000 +3.250000, 24.243877, 10.438204, 10.580000 +3.266667, 24.422307, 10.438204, 10.580000 +3.283333, 24.600738, 10.438204, 10.580000 +3.300000, 24.779169, 10.438204, 10.580000 +3.316667, 24.957600, 10.438204, 10.580000 +3.333333, 25.136031, 10.438204, 10.580000 +3.350000, 25.314462, 10.438204, 10.580000 +3.366667, 25.492893, 10.438204, 10.580000 +3.383333, 25.671323, 10.438204, 10.580000 +3.400000, 25.849754, 10.438204, 10.580000 +3.416667, 26.028185, 10.438204, 10.580000 +3.433333, 26.206616, 10.438204, 10.580000 +3.450000, 26.385047, 10.438204, 10.580000 +3.466667, 26.563478, 10.438204, 10.580000 +3.483333, 26.741908, 10.438204, 10.580000 +3.500000, 26.920339, 10.438204, 10.580000 +3.516667, 27.098770, 10.438204, 10.580000 +3.533333, 27.277201, 10.438204, 10.580000 +3.550000, 27.455632, 10.438204, 10.580000 +3.566667, 27.634063, 10.438204, 10.580000 +3.583333, 27.812493, 10.438204, 10.580000 +3.600000, 27.990924, 10.438204, 10.580000 +3.616667, 28.169355, 10.438204, 10.580000 +3.633333, 28.347786, 10.438204, 10.580000 +3.650000, 28.526217, 10.438204, 10.580000 +3.666667, 28.704648, 10.438204, 10.580000 +3.683333, 28.883079, 10.438204, 10.580000 +3.700000, 29.061509, 10.438204, 10.580000 +3.716667, 29.239940, 10.438204, 10.580000 +3.733333, 29.418371, 10.438204, 10.580000 +3.750000, 29.596802, 10.438204, 10.580000 +3.766667, 29.775233, 10.438204, 10.580000 +3.783333, 29.953664, 10.438204, 10.580000 +3.800000, 30.132094, 10.438204, 10.580000 +3.816667, 30.310525, 10.438204, 10.580000 +3.833333, 30.488956, 10.438204, 10.580000 +3.850000, 30.667387, 10.438204, 10.580000 +3.866667, 30.845818, 10.438204, 10.580000 +3.883333, 31.024249, 10.438204, 10.580000 +3.900000, 31.202679, 10.438204, 10.580000 +3.916667, 31.381110, 10.438204, 10.580000 +3.933333, 31.559541, 10.438204, 10.580000 +3.950000, 31.737972, 10.438204, 10.580000 +3.966667, 31.916403, 10.438204, 10.580000 +3.983333, 32.094834, 10.438204, 10.580000 +4.000000, 32.273265, 10.438204, 10.580000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_9600_bev300_575kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_9600_bev300_575kW.csv new file mode 100644 index 0000000..6571484 --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_9600_bev300_575kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.106566, 9.111366, 9.231932 +1.016667, 0.228683, 10.441045, 10.580000 +1.033333, 0.350801, 10.441045, 10.580000 +1.050000, 0.472918, 10.441045, 10.580000 +1.066667, 0.595036, 10.441045, 10.580000 +1.083333, 0.717153, 10.441045, 10.580000 +1.100000, 0.839271, 10.441045, 10.580000 +1.116667, 0.961388, 10.441045, 10.580000 +1.133333, 1.083506, 10.441045, 10.580000 +1.150000, 1.205623, 10.441045, 10.580000 +1.166667, 1.327741, 10.441045, 10.580000 +1.183333, 1.449858, 10.441045, 10.580000 +1.200000, 1.571976, 10.441045, 10.580000 +1.216667, 1.694093, 10.441045, 10.580000 +1.233333, 1.816210, 10.441045, 10.580000 +1.250000, 1.938328, 10.441045, 10.580000 +1.266667, 2.060445, 10.441045, 10.580000 +1.283333, 2.182563, 10.441045, 10.580000 +1.300000, 2.304680, 10.441045, 10.580000 +1.316667, 2.426798, 10.441045, 10.580000 +1.333333, 2.548915, 10.441045, 10.580000 +1.350000, 2.671033, 10.441045, 10.580000 +1.366667, 2.793150, 10.441045, 10.580000 +1.383333, 2.915268, 10.441045, 10.580000 +1.400000, 3.037385, 10.441045, 10.580000 +1.416667, 3.159503, 10.441045, 10.580000 +1.433333, 3.281620, 10.441045, 10.580000 +1.450000, 3.403738, 10.441045, 10.580000 +1.466667, 3.525855, 10.441045, 10.580000 +1.483333, 3.647973, 10.441045, 10.580000 +1.500000, 3.770090, 10.441045, 10.580000 +1.516667, 3.892208, 10.441045, 10.580000 +1.533333, 4.014325, 10.441045, 10.580000 +1.550000, 4.136443, 10.441045, 10.580000 +1.566667, 4.258560, 10.441045, 10.580000 +1.583333, 4.380678, 10.441045, 10.580000 +1.600000, 4.502795, 10.441045, 10.580000 +1.616667, 4.624913, 10.441045, 10.580000 +1.633333, 4.747030, 10.441045, 10.580000 +1.650000, 4.869148, 10.441045, 10.580000 +1.666667, 4.991265, 10.441045, 10.580000 +1.683333, 5.113383, 10.441045, 10.580000 +1.700000, 5.235500, 10.441045, 10.580000 +1.716667, 5.357618, 10.441045, 10.580000 +1.733333, 5.479735, 10.441045, 10.580000 +1.750000, 5.601853, 10.441045, 10.580000 +1.766667, 5.723970, 10.441045, 10.580000 +1.783333, 5.846087, 10.441045, 10.580000 +1.800000, 5.968205, 10.441045, 10.580000 +1.816667, 6.090322, 10.441045, 10.580000 +1.833333, 6.212440, 10.441045, 10.580000 +1.850000, 6.334557, 10.441045, 10.580000 +1.866667, 6.456675, 10.441045, 10.580000 +1.883333, 6.578792, 10.441045, 10.580000 +1.900000, 6.700910, 10.441045, 10.580000 +1.916667, 6.823027, 10.441045, 10.580000 +1.933333, 6.945145, 10.441045, 10.580000 +1.950000, 7.067262, 10.441045, 10.580000 +1.966667, 7.189380, 10.441045, 10.580000 +1.983333, 7.311497, 10.441045, 10.580000 +2.000000, 7.433615, 10.441045, 10.580000 +2.016667, 7.555732, 10.441045, 10.580000 +2.033333, 7.677850, 10.441045, 10.580000 +2.050000, 7.799967, 10.441045, 10.580000 +2.066667, 7.922085, 10.441045, 10.580000 +2.083333, 8.044202, 10.441045, 10.580000 +2.100000, 8.166320, 10.441045, 10.580000 +2.116667, 8.288437, 10.441045, 10.580000 +2.133333, 8.410555, 10.441045, 10.580000 +2.150000, 8.532672, 10.441045, 10.580000 +2.166667, 8.654790, 10.441045, 10.580000 +2.183333, 8.776907, 10.441045, 10.580000 +2.200000, 8.899025, 10.441045, 10.580000 +2.216667, 9.021142, 10.441045, 10.580000 +2.233333, 9.143260, 10.441045, 10.580000 +2.250000, 9.265377, 10.441045, 10.580000 +2.266667, 9.387495, 10.441045, 10.580000 +2.283333, 9.509612, 10.441045, 10.580000 +2.300000, 9.631730, 10.441045, 10.580000 +2.316667, 9.753847, 10.441045, 10.580000 +2.333333, 9.875965, 10.441045, 10.580000 +2.350000, 9.998082, 10.441045, 10.580000 +2.366667, 10.120199, 10.441045, 10.580000 +2.383333, 10.242317, 10.441045, 10.580000 +2.400000, 10.364434, 10.441045, 10.580000 +2.416667, 10.486552, 10.441045, 10.580000 +2.433333, 10.608669, 10.441045, 10.580000 +2.450000, 10.730787, 10.441045, 10.580000 +2.466667, 10.852904, 10.441045, 10.580000 +2.483333, 10.975022, 10.441045, 10.580000 +2.500000, 11.097139, 10.441045, 10.580000 +2.516667, 11.219257, 10.441045, 10.580000 +2.533333, 11.341374, 10.441045, 10.580000 +2.550000, 11.463492, 10.441045, 10.580000 +2.566667, 11.585609, 10.441045, 10.580000 +2.583333, 11.707727, 10.441045, 10.580000 +2.600000, 11.829844, 10.441045, 10.580000 +2.616667, 11.951962, 10.441045, 10.580000 +2.633333, 12.074079, 10.441045, 10.580000 +2.650000, 12.196197, 10.441045, 10.580000 +2.666667, 12.318314, 10.441045, 10.580000 +2.683333, 12.440432, 10.441045, 10.580000 +2.700000, 12.562549, 10.441045, 10.580000 +2.716667, 12.684667, 10.441045, 10.580000 +2.733333, 12.806784, 10.441045, 10.580000 +2.750000, 12.928902, 10.441045, 10.580000 +2.766667, 13.051019, 10.441045, 10.580000 +2.783333, 13.173137, 10.441045, 10.580000 +2.800000, 13.295254, 10.441045, 10.580000 +2.816667, 13.417372, 10.441045, 10.580000 +2.833333, 13.539489, 10.441045, 10.580000 +2.850000, 13.661607, 10.441045, 10.580000 +2.866667, 13.783724, 10.441045, 10.580000 +2.883333, 13.905842, 10.441045, 10.580000 +2.900000, 14.027959, 10.441045, 10.580000 +2.916667, 14.150076, 10.441045, 10.580000 +2.933333, 14.272194, 10.441045, 10.580000 +2.950000, 14.394311, 10.441045, 10.580000 +2.966667, 14.516429, 10.441045, 10.580000 +2.983333, 14.638546, 10.441045, 10.580000 +3.000000, 14.760664, 10.441045, 10.580000 +3.016667, 14.882781, 10.441045, 10.580000 +3.033333, 15.004899, 10.441045, 10.580000 +3.050000, 15.127016, 10.441045, 10.580000 +3.066667, 15.249134, 10.441045, 10.580000 +3.083333, 15.371251, 10.441045, 10.580000 +3.100000, 15.493369, 10.441045, 10.580000 +3.116667, 15.615486, 10.441045, 10.580000 +3.133333, 15.737604, 10.441045, 10.580000 +3.150000, 15.859721, 10.441045, 10.580000 +3.166667, 15.981839, 10.441045, 10.580000 +3.183333, 16.103956, 10.441045, 10.580000 +3.200000, 16.226074, 10.441045, 10.580000 +3.216667, 16.348191, 10.441045, 10.580000 +3.233333, 16.470309, 10.441045, 10.580000 +3.250000, 16.592426, 10.441045, 10.580000 +3.266667, 16.714544, 10.441045, 10.580000 +3.283333, 16.836661, 10.441045, 10.580000 +3.300000, 16.958779, 10.441045, 10.580000 +3.316667, 17.080896, 10.441045, 10.580000 +3.333333, 17.203014, 10.441045, 10.580000 +3.350000, 17.325131, 10.441045, 10.580000 +3.366667, 17.447249, 10.441045, 10.580000 +3.383333, 17.569366, 10.441045, 10.580000 +3.400000, 17.691484, 10.441045, 10.580000 +3.416667, 17.813601, 10.441045, 10.580000 +3.433333, 17.935719, 10.441045, 10.580000 +3.450000, 18.057836, 10.441045, 10.580000 +3.466667, 18.179954, 10.441045, 10.580000 +3.483333, 18.302071, 10.441045, 10.580000 +3.500000, 18.424188, 10.441045, 10.580000 +3.516667, 18.546306, 10.441045, 10.580000 +3.533333, 18.668423, 10.441045, 10.580000 +3.550000, 18.790541, 10.441045, 10.580000 +3.566667, 18.912658, 10.441045, 10.580000 +3.583333, 19.034776, 10.441045, 10.580000 +3.600000, 19.156893, 10.441045, 10.580000 +3.616667, 19.279011, 10.441045, 10.580000 +3.633333, 19.401128, 10.441045, 10.580000 +3.650000, 19.523246, 10.441045, 10.580000 +3.666667, 19.645363, 10.441045, 10.580000 +3.683333, 19.767481, 10.441045, 10.580000 +3.700000, 19.889598, 10.441045, 10.580000 +3.716667, 20.011716, 10.441045, 10.580000 +3.733333, 20.133833, 10.441045, 10.580000 +3.750000, 20.255951, 10.441045, 10.580000 +3.766667, 20.378068, 10.441045, 10.580000 +3.783333, 20.500186, 10.441045, 10.580000 +3.800000, 20.622303, 10.441045, 10.580000 +3.816667, 20.744421, 10.441045, 10.580000 +3.833333, 20.866538, 10.441045, 10.580000 +3.850000, 20.988656, 10.441045, 10.580000 +3.866667, 21.110773, 10.441045, 10.580000 +3.883333, 21.232891, 10.441045, 10.580000 +3.900000, 21.355008, 10.441045, 10.580000 +3.916667, 21.477126, 10.441045, 10.580000 +3.933333, 21.599243, 10.441045, 10.580000 +3.950000, 21.721361, 10.441045, 10.580000 +3.966667, 21.843478, 10.441045, 10.580000 +3.983333, 21.965596, 10.441045, 10.580000 +4.000000, 22.087713, 10.441045, 10.580000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_9600_phev20.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_9600_phev20.csv new file mode 100644 index 0000000..ac64bef --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_9600_phev20.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.898032, 2.694096, 2.727091 +1.016667, 1.891008, 2.978929, 3.016365 +1.033333, 2.883985, 2.978929, 3.016365 +1.050000, 3.876961, 2.978929, 3.016365 +1.066667, 4.869937, 2.978929, 3.016365 +1.083333, 5.862914, 2.978929, 3.016365 +1.100000, 6.855890, 2.978929, 3.016365 +1.116667, 7.848866, 2.978929, 3.016365 +1.133333, 8.841843, 2.978929, 3.016365 +1.150000, 9.834819, 2.978929, 3.016365 +1.166667, 10.827795, 2.978929, 3.016365 +1.183333, 11.820772, 2.978929, 3.016365 +1.200000, 12.813748, 2.978929, 3.016365 +1.216667, 13.806724, 2.978929, 3.016365 +1.233333, 14.799701, 2.978929, 3.016365 +1.250000, 15.792677, 2.978929, 3.016365 +1.266667, 16.785653, 2.978929, 3.016365 +1.283333, 17.778630, 2.978929, 3.016365 +1.300000, 18.771606, 2.978929, 3.016365 +1.316667, 19.764582, 2.978929, 3.016365 +1.333333, 20.757559, 2.978929, 3.016365 +1.350000, 21.750535, 2.978929, 3.016365 +1.366667, 22.743511, 2.978929, 3.016365 +1.383333, 23.736488, 2.978929, 3.016365 +1.400000, 24.729464, 2.978929, 3.016365 +1.416667, 25.722440, 2.978929, 3.016365 +1.433333, 26.715417, 2.978929, 3.016365 +1.450000, 27.708393, 2.978929, 3.016365 +1.466667, 28.701369, 2.978929, 3.016365 +1.483333, 29.694346, 2.978929, 3.016365 +1.500000, 30.687322, 2.978929, 3.016365 +1.516667, 31.680298, 2.978929, 3.016365 +1.533333, 32.673275, 2.978929, 3.016365 +1.550000, 33.666251, 2.978929, 3.016365 +1.566667, 34.659227, 2.978929, 3.016365 +1.583333, 35.652204, 2.978929, 3.016365 +1.600000, 36.645180, 2.978929, 3.016365 +1.616667, 37.638156, 2.978929, 3.016365 +1.633333, 38.631133, 2.978929, 3.016365 +1.650000, 39.624109, 2.978929, 3.016365 +1.666667, 40.617085, 2.978929, 3.016365 +1.683333, 41.610062, 2.978929, 3.016365 +1.700000, 42.603038, 2.978929, 3.016365 +1.716667, 43.596014, 2.978929, 3.016365 +1.733333, 44.588991, 2.978929, 3.016365 +1.750000, 45.581967, 2.978929, 3.016365 +1.766667, 46.574943, 2.978929, 3.016365 +1.783333, 47.567920, 2.978929, 3.016365 +1.800000, 48.560896, 2.978929, 3.016365 +1.816667, 49.553872, 2.978929, 3.016365 +1.833333, 50.546849, 2.978929, 3.016365 +1.850000, 51.539825, 2.978929, 3.016365 +1.866667, 52.532801, 2.978929, 3.016365 +1.883333, 53.525778, 2.978929, 3.016365 +1.900000, 54.518754, 2.978929, 3.016365 +1.916667, 55.511730, 2.978929, 3.016365 +1.933333, 56.504707, 2.978929, 3.016365 +1.950000, 57.497683, 2.978929, 3.016365 +1.966667, 58.490659, 2.978929, 3.016365 +1.983333, 59.483636, 2.978929, 3.016365 +2.000000, 60.476612, 2.978929, 3.016365 +2.016667, 61.469588, 2.978929, 3.016365 +2.033333, 62.462565, 2.978929, 3.016365 +2.050000, 63.455541, 2.978929, 3.016365 +2.066667, 64.448517, 2.978929, 3.016365 +2.083333, 65.441494, 2.978929, 3.016365 +2.100000, 66.434470, 2.978929, 3.016365 +2.116667, 67.427446, 2.978929, 3.016365 +2.133333, 68.420423, 2.978929, 3.016365 +2.150000, 69.413399, 2.978929, 3.016365 +2.166667, 70.406375, 2.978929, 3.016365 +2.183333, 71.399352, 2.978929, 3.016365 +2.200000, 72.392328, 2.978929, 3.016365 +2.216667, 73.385305, 2.978929, 3.016365 +2.233333, 74.378281, 2.978929, 3.016365 +2.250000, 75.371257, 2.978929, 3.016365 +2.266667, 76.364234, 2.978929, 3.016365 +2.283333, 77.357210, 2.978929, 3.016365 +2.300000, 78.350186, 2.978929, 3.016365 +2.316667, 79.343163, 2.978929, 3.016365 +2.333333, 80.336139, 2.978929, 3.016365 +2.350000, 81.329115, 2.978929, 3.016365 +2.366667, 82.322092, 2.978929, 3.016365 +2.383333, 83.315068, 2.978929, 3.016365 +2.400000, 84.308044, 2.978929, 3.016365 +2.416667, 85.301021, 2.978929, 3.016365 +2.433333, 86.293997, 2.978929, 3.016365 +2.450000, 87.286973, 2.978929, 3.016365 +2.466667, 88.279950, 2.978929, 3.016365 +2.483333, 89.272926, 2.978929, 3.016365 +2.500000, 90.265902, 2.978929, 3.016365 +2.516667, 91.258879, 2.978929, 3.016365 +2.533333, 92.251855, 2.978929, 3.016365 +2.550000, 93.244831, 2.978929, 3.016365 +2.566667, 94.237808, 2.978929, 3.016365 +2.583333, 95.230784, 2.978929, 3.016365 +2.600000, 96.200447, 2.908988, 2.945317 +2.616667, 97.014284, 2.441512, 2.470723 +2.633333, 97.678106, 1.991465, 2.014288 +2.650000, 98.219377, 1.623813, 1.641756 +2.666667, 98.660664, 1.323863, 1.338049 +2.683333, 99.020400, 1.079206, 1.090476 +2.700000, 99.313629, 0.879688, 0.888679 +2.716667, 99.552631, 0.717005, 0.724204 +2.733333, 99.747422, 0.584375, 0.590156 +2.750000, 99.800407, 0.158954, 0.160452 +2.766667, 99.800495, 0.000265, 0.000267 +2.783333, 99.800495, 0.000000, 0.000000 +2.800000, 99.800495, 0.000000, 0.000000 +2.816667, 99.800495, 0.000000, 0.000000 +2.833333, 99.800495, 0.000000, 0.000000 +2.850000, 99.800495, 0.000000, 0.000000 +2.866667, 99.800495, 0.000000, 0.000000 +2.883333, 99.800495, 0.000000, 0.000000 +2.900000, 99.800495, 0.000000, 0.000000 +2.916667, 99.800495, 0.000000, 0.000000 +2.933333, 99.800495, 0.000000, 0.000000 +2.950000, 99.800495, 0.000000, 0.000000 +2.966667, 99.800495, 0.000000, 0.000000 +2.983333, 99.800495, 0.000000, 0.000000 +3.000000, 99.800495, 0.000000, 0.000000 +3.016667, 99.800495, 0.000000, 0.000000 +3.033333, 99.800495, 0.000000, 0.000000 +3.050000, 99.800495, 0.000000, 0.000000 +3.066667, 99.800495, 0.000000, 0.000000 +3.083333, 99.800495, 0.000000, 0.000000 +3.100000, 99.800495, 0.000000, 0.000000 +3.116667, 99.800495, 0.000000, 0.000000 +3.133333, 99.800495, 0.000000, 0.000000 +3.150000, 99.800495, 0.000000, 0.000000 +3.166667, 99.800495, 0.000000, 0.000000 +3.183333, 99.800495, 0.000000, 0.000000 +3.200000, 99.800495, 0.000000, 0.000000 +3.216667, 99.800495, 0.000000, 0.000000 +3.233333, 99.800495, 0.000000, 0.000000 +3.250000, 99.800495, 0.000000, 0.000000 +3.266667, 99.800495, 0.000000, 0.000000 +3.283333, 99.800495, 0.000000, 0.000000 +3.300000, 99.800495, 0.000000, 0.000000 +3.316667, 99.800495, 0.000000, 0.000000 +3.333333, 99.800495, 0.000000, 0.000000 +3.350000, 99.800495, 0.000000, 0.000000 +3.366667, 99.800495, 0.000000, 0.000000 +3.383333, 99.800495, 0.000000, 0.000000 +3.400000, 99.800495, 0.000000, 0.000000 +3.416667, 99.800495, 0.000000, 0.000000 +3.433333, 99.800495, 0.000000, 0.000000 +3.450000, 99.800495, 0.000000, 0.000000 +3.466667, 99.800495, 0.000000, 0.000000 +3.483333, 99.800495, 0.000000, 0.000000 +3.500000, 99.800495, 0.000000, 0.000000 +3.516667, 99.800495, 0.000000, 0.000000 +3.533333, 99.800495, 0.000000, 0.000000 +3.550000, 99.800495, 0.000000, 0.000000 +3.566667, 99.800495, 0.000000, 0.000000 +3.583333, 99.800495, 0.000000, 0.000000 +3.600000, 99.800495, 0.000000, 0.000000 +3.616667, 99.800495, 0.000000, 0.000000 +3.633333, 99.800495, 0.000000, 0.000000 +3.650000, 99.800495, 0.000000, 0.000000 +3.666667, 99.800495, 0.000000, 0.000000 +3.683333, 99.800495, 0.000000, 0.000000 +3.700000, 99.800495, 0.000000, 0.000000 +3.716667, 99.800495, 0.000000, 0.000000 +3.733333, 99.800495, 0.000000, 0.000000 +3.750000, 99.800495, 0.000000, 0.000000 +3.766667, 99.800495, 0.000000, 0.000000 +3.783333, 99.800495, 0.000000, 0.000000 +3.800000, 99.800495, 0.000000, 0.000000 +3.816667, 99.800495, 0.000000, 0.000000 +3.833333, 99.800495, 0.000000, 0.000000 +3.850000, 99.800495, 0.000000, 0.000000 +3.866667, 99.800495, 0.000000, 0.000000 +3.883333, 99.800495, 0.000000, 0.000000 +3.900000, 99.800495, 0.000000, 0.000000 +3.916667, 99.800495, 0.000000, 0.000000 +3.933333, 99.800495, 0.000000, 0.000000 +3.950000, 99.800495, 0.000000, 0.000000 +3.966667, 99.800495, 0.000000, 0.000000 +3.983333, 99.800495, 0.000000, 0.000000 +4.000000, 99.800495, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_9600_phev50.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_9600_phev50.csv new file mode 100644 index 0000000..5a74324 --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_9600_phev50.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.281209, 2.699607, 2.727091 +1.016667, 0.592217, 2.985672, 3.016365 +1.033333, 0.903224, 2.985672, 3.016365 +1.050000, 1.214231, 2.985672, 3.016365 +1.066667, 1.525239, 2.985672, 3.016365 +1.083333, 1.836246, 2.985672, 3.016365 +1.100000, 2.147254, 2.985672, 3.016365 +1.116667, 2.458261, 2.985672, 3.016365 +1.133333, 2.769269, 2.985672, 3.016365 +1.150000, 3.080276, 2.985672, 3.016365 +1.166667, 3.391284, 2.985672, 3.016365 +1.183333, 3.702291, 2.985672, 3.016365 +1.200000, 4.013299, 2.985672, 3.016365 +1.216667, 4.324306, 2.985672, 3.016365 +1.233333, 4.635314, 2.985672, 3.016365 +1.250000, 4.946321, 2.985672, 3.016365 +1.266667, 5.257329, 2.985672, 3.016365 +1.283333, 5.568336, 2.985672, 3.016365 +1.300000, 5.879344, 2.985672, 3.016365 +1.316667, 6.190351, 2.985672, 3.016365 +1.333333, 6.501359, 2.985672, 3.016365 +1.350000, 6.812366, 2.985672, 3.016365 +1.366667, 7.123373, 2.985672, 3.016365 +1.383333, 7.434381, 2.985672, 3.016365 +1.400000, 7.745388, 2.985672, 3.016365 +1.416667, 8.056396, 2.985672, 3.016365 +1.433333, 8.367403, 2.985672, 3.016365 +1.450000, 8.678411, 2.985672, 3.016365 +1.466667, 8.989418, 2.985672, 3.016365 +1.483333, 9.300426, 2.985672, 3.016365 +1.500000, 9.611433, 2.985672, 3.016365 +1.516667, 9.922441, 2.985672, 3.016365 +1.533333, 10.233448, 2.985672, 3.016365 +1.550000, 10.544456, 2.985672, 3.016365 +1.566667, 10.855463, 2.985672, 3.016365 +1.583333, 11.166471, 2.985672, 3.016365 +1.600000, 11.477478, 2.985672, 3.016365 +1.616667, 11.788486, 2.985672, 3.016365 +1.633333, 12.099493, 2.985672, 3.016365 +1.650000, 12.410500, 2.985672, 3.016365 +1.666667, 12.721508, 2.985672, 3.016365 +1.683333, 13.032515, 2.985672, 3.016365 +1.700000, 13.343523, 2.985672, 3.016365 +1.716667, 13.654530, 2.985672, 3.016365 +1.733333, 13.965538, 2.985672, 3.016365 +1.750000, 14.276545, 2.985672, 3.016365 +1.766667, 14.587553, 2.985672, 3.016365 +1.783333, 14.898560, 2.985672, 3.016365 +1.800000, 15.209568, 2.985672, 3.016365 +1.816667, 15.520575, 2.985672, 3.016365 +1.833333, 15.831583, 2.985672, 3.016365 +1.850000, 16.142590, 2.985672, 3.016365 +1.866667, 16.453598, 2.985672, 3.016365 +1.883333, 16.764605, 2.985672, 3.016365 +1.900000, 17.075613, 2.985672, 3.016365 +1.916667, 17.386620, 2.985672, 3.016365 +1.933333, 17.697628, 2.985672, 3.016365 +1.950000, 18.008635, 2.985672, 3.016365 +1.966667, 18.319642, 2.985672, 3.016365 +1.983333, 18.630650, 2.985672, 3.016365 +2.000000, 18.941657, 2.985672, 3.016365 +2.016667, 19.252665, 2.985672, 3.016365 +2.033333, 19.563672, 2.985672, 3.016365 +2.050000, 19.874680, 2.985672, 3.016365 +2.066667, 20.185687, 2.985672, 3.016365 +2.083333, 20.496695, 2.985672, 3.016365 +2.100000, 20.807702, 2.985672, 3.016365 +2.116667, 21.118710, 2.985672, 3.016365 +2.133333, 21.429717, 2.985672, 3.016365 +2.150000, 21.740725, 2.985672, 3.016365 +2.166667, 22.051732, 2.985672, 3.016365 +2.183333, 22.362740, 2.985672, 3.016365 +2.200000, 22.673747, 2.985672, 3.016365 +2.216667, 22.984755, 2.985672, 3.016365 +2.233333, 23.295762, 2.985672, 3.016365 +2.250000, 23.606769, 2.985672, 3.016365 +2.266667, 23.917777, 2.985672, 3.016365 +2.283333, 24.228784, 2.985672, 3.016365 +2.300000, 24.539792, 2.985672, 3.016365 +2.316667, 24.850799, 2.985672, 3.016365 +2.333333, 25.161807, 2.985672, 3.016365 +2.350000, 25.472814, 2.985672, 3.016365 +2.366667, 25.783822, 2.985672, 3.016365 +2.383333, 26.094829, 2.985672, 3.016365 +2.400000, 26.405837, 2.985672, 3.016365 +2.416667, 26.716844, 2.985672, 3.016365 +2.433333, 27.027852, 2.985672, 3.016365 +2.450000, 27.338859, 2.985672, 3.016365 +2.466667, 27.649867, 2.985672, 3.016365 +2.483333, 27.960874, 2.985672, 3.016365 +2.500000, 28.271882, 2.985672, 3.016365 +2.516667, 28.582889, 2.985672, 3.016365 +2.533333, 28.893896, 2.985672, 3.016365 +2.550000, 29.204904, 2.985672, 3.016365 +2.566667, 29.515911, 2.985672, 3.016365 +2.583333, 29.826919, 2.985672, 3.016365 +2.600000, 30.137926, 2.985672, 3.016365 +2.616667, 30.448934, 2.985672, 3.016365 +2.633333, 30.759941, 2.985672, 3.016365 +2.650000, 31.070949, 2.985672, 3.016365 +2.666667, 31.381956, 2.985672, 3.016365 +2.683333, 31.692964, 2.985672, 3.016365 +2.700000, 32.003971, 2.985672, 3.016365 +2.716667, 32.314979, 2.985672, 3.016365 +2.733333, 32.625986, 2.985672, 3.016365 +2.750000, 32.936994, 2.985672, 3.016365 +2.766667, 33.248001, 2.985672, 3.016365 +2.783333, 33.559009, 2.985672, 3.016365 +2.800000, 33.870016, 2.985672, 3.016365 +2.816667, 34.181024, 2.985672, 3.016365 +2.833333, 34.492031, 2.985672, 3.016365 +2.850000, 34.803038, 2.985672, 3.016365 +2.866667, 35.114046, 2.985672, 3.016365 +2.883333, 35.425053, 2.985672, 3.016365 +2.900000, 35.736061, 2.985672, 3.016365 +2.916667, 36.047068, 2.985672, 3.016365 +2.933333, 36.358076, 2.985672, 3.016365 +2.950000, 36.669083, 2.985672, 3.016365 +2.966667, 36.980091, 2.985672, 3.016365 +2.983333, 37.291098, 2.985672, 3.016365 +3.000000, 37.602106, 2.985672, 3.016365 +3.016667, 37.913113, 2.985672, 3.016365 +3.033333, 38.224121, 2.985672, 3.016365 +3.050000, 38.535128, 2.985672, 3.016365 +3.066667, 38.846136, 2.985672, 3.016365 +3.083333, 39.157143, 2.985672, 3.016365 +3.100000, 39.468151, 2.985672, 3.016365 +3.116667, 39.779158, 2.985672, 3.016365 +3.133333, 40.090165, 2.985672, 3.016365 +3.150000, 40.401173, 2.985672, 3.016365 +3.166667, 40.712180, 2.985672, 3.016365 +3.183333, 41.023188, 2.985672, 3.016365 +3.200000, 41.334195, 2.985672, 3.016365 +3.216667, 41.645203, 2.985672, 3.016365 +3.233333, 41.956210, 2.985672, 3.016365 +3.250000, 42.267218, 2.985672, 3.016365 +3.266667, 42.578225, 2.985672, 3.016365 +3.283333, 42.889233, 2.985672, 3.016365 +3.300000, 43.200240, 2.985672, 3.016365 +3.316667, 43.511248, 2.985672, 3.016365 +3.333333, 43.822255, 2.985672, 3.016365 +3.350000, 44.133263, 2.985672, 3.016365 +3.366667, 44.444270, 2.985672, 3.016365 +3.383333, 44.755278, 2.985672, 3.016365 +3.400000, 45.066285, 2.985672, 3.016365 +3.416667, 45.377293, 2.985672, 3.016365 +3.433333, 45.688300, 2.985672, 3.016365 +3.450000, 45.999307, 2.985672, 3.016365 +3.466667, 46.310315, 2.985672, 3.016365 +3.483333, 46.621322, 2.985672, 3.016365 +3.500000, 46.932330, 2.985672, 3.016365 +3.516667, 47.243337, 2.985672, 3.016365 +3.533333, 47.554345, 2.985672, 3.016365 +3.550000, 47.865352, 2.985672, 3.016365 +3.566667, 48.176360, 2.985672, 3.016365 +3.583333, 48.487367, 2.985672, 3.016365 +3.600000, 48.798375, 2.985672, 3.016365 +3.616667, 49.109382, 2.985672, 3.016365 +3.633333, 49.420390, 2.985672, 3.016365 +3.650000, 49.731397, 2.985672, 3.016365 +3.666667, 50.042405, 2.985672, 3.016365 +3.683333, 50.353412, 2.985672, 3.016365 +3.700000, 50.664420, 2.985672, 3.016365 +3.716667, 50.975427, 2.985672, 3.016365 +3.733333, 51.286434, 2.985672, 3.016365 +3.750000, 51.597442, 2.985672, 3.016365 +3.766667, 51.908449, 2.985672, 3.016365 +3.783333, 52.219457, 2.985672, 3.016365 +3.800000, 52.530464, 2.985672, 3.016365 +3.816667, 52.841472, 2.985672, 3.016365 +3.833333, 53.152479, 2.985672, 3.016365 +3.850000, 53.463487, 2.985672, 3.016365 +3.866667, 53.774494, 2.985672, 3.016365 +3.883333, 54.085502, 2.985672, 3.016365 +3.900000, 54.396509, 2.985672, 3.016365 +3.916667, 54.707517, 2.985672, 3.016365 +3.933333, 55.018524, 2.985672, 3.016365 +3.950000, 55.329532, 2.985672, 3.016365 +3.966667, 55.640539, 2.985672, 3.016365 +3.983333, 55.951547, 2.985672, 3.016365 +4.000000, 56.262554, 2.985672, 3.016365 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_9600_phev_SUV.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_9600_phev_SUV.csv new file mode 100644 index 0000000..ee2cef5 --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/L2_9600_phev_SUV.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.539375, 7.686100, 7.770982 +1.016667, 1.152246, 8.733401, 8.832000 +1.033333, 1.765116, 8.733401, 8.832000 +1.050000, 2.377986, 8.733401, 8.832000 +1.066667, 2.990857, 8.733401, 8.832000 +1.083333, 3.603727, 8.733401, 8.832000 +1.100000, 4.216597, 8.733401, 8.832000 +1.116667, 4.829467, 8.733401, 8.832000 +1.133333, 5.442338, 8.733401, 8.832000 +1.150000, 6.055208, 8.733401, 8.832000 +1.166667, 6.668078, 8.733401, 8.832000 +1.183333, 7.280948, 8.733401, 8.832000 +1.200000, 7.893819, 8.733401, 8.832000 +1.216667, 8.506689, 8.733401, 8.832000 +1.233333, 9.119559, 8.733401, 8.832000 +1.250000, 9.732430, 8.733401, 8.832000 +1.266667, 10.345300, 8.733401, 8.832000 +1.283333, 10.958170, 8.733401, 8.832000 +1.300000, 11.571040, 8.733401, 8.832000 +1.316667, 12.183911, 8.733401, 8.832000 +1.333333, 12.796781, 8.733401, 8.832000 +1.350000, 13.409651, 8.733401, 8.832000 +1.366667, 14.022521, 8.733401, 8.832000 +1.383333, 14.635392, 8.733401, 8.832000 +1.400000, 15.248262, 8.733401, 8.832000 +1.416667, 15.861132, 8.733401, 8.832000 +1.433333, 16.474003, 8.733401, 8.832000 +1.450000, 17.086873, 8.733401, 8.832000 +1.466667, 17.699743, 8.733401, 8.832000 +1.483333, 18.312613, 8.733401, 8.832000 +1.500000, 18.925484, 8.733401, 8.832000 +1.516667, 19.538354, 8.733401, 8.832000 +1.533333, 20.151224, 8.733401, 8.832000 +1.550000, 20.764095, 8.733401, 8.832000 +1.566667, 21.376965, 8.733401, 8.832000 +1.583333, 21.989835, 8.733401, 8.832000 +1.600000, 22.602705, 8.733401, 8.832000 +1.616667, 23.215576, 8.733401, 8.832000 +1.633333, 23.828446, 8.733401, 8.832000 +1.650000, 24.441316, 8.733401, 8.832000 +1.666667, 25.054186, 8.733401, 8.832000 +1.683333, 25.667057, 8.733401, 8.832000 +1.700000, 26.279927, 8.733401, 8.832000 +1.716667, 26.892797, 8.733401, 8.832000 +1.733333, 27.505668, 8.733401, 8.832000 +1.750000, 28.118538, 8.733401, 8.832000 +1.766667, 28.731408, 8.733401, 8.832000 +1.783333, 29.344278, 8.733401, 8.832000 +1.800000, 29.957149, 8.733401, 8.832000 +1.816667, 30.570019, 8.733401, 8.832000 +1.833333, 31.182889, 8.733401, 8.832000 +1.850000, 31.795759, 8.733401, 8.832000 +1.866667, 32.408630, 8.733401, 8.832000 +1.883333, 33.021500, 8.733401, 8.832000 +1.900000, 33.634370, 8.733401, 8.832000 +1.916667, 34.247241, 8.733401, 8.832000 +1.933333, 34.860111, 8.733401, 8.832000 +1.950000, 35.472981, 8.733401, 8.832000 +1.966667, 36.085851, 8.733401, 8.832000 +1.983333, 36.698722, 8.733401, 8.832000 +2.000000, 37.311592, 8.733401, 8.832000 +2.016667, 37.924462, 8.733401, 8.832000 +2.033333, 38.537333, 8.733401, 8.832000 +2.050000, 39.150203, 8.733401, 8.832000 +2.066667, 39.763073, 8.733401, 8.832000 +2.083333, 40.375943, 8.733401, 8.832000 +2.100000, 40.988814, 8.733401, 8.832000 +2.116667, 41.601684, 8.733401, 8.832000 +2.133333, 42.214554, 8.733401, 8.832000 +2.150000, 42.827424, 8.733401, 8.832000 +2.166667, 43.440295, 8.733401, 8.832000 +2.183333, 44.053165, 8.733401, 8.832000 +2.200000, 44.666035, 8.733401, 8.832000 +2.216667, 45.278906, 8.733401, 8.832000 +2.233333, 45.891776, 8.733401, 8.832000 +2.250000, 46.504646, 8.733401, 8.832000 +2.266667, 47.117516, 8.733401, 8.832000 +2.283333, 47.730387, 8.733401, 8.832000 +2.300000, 48.343257, 8.733401, 8.832000 +2.316667, 48.956127, 8.733401, 8.832000 +2.333333, 49.568997, 8.733401, 8.832000 +2.350000, 50.181868, 8.733401, 8.832000 +2.366667, 50.794738, 8.733401, 8.832000 +2.383333, 51.407608, 8.733401, 8.832000 +2.400000, 52.020479, 8.733401, 8.832000 +2.416667, 52.633349, 8.733401, 8.832000 +2.433333, 53.246219, 8.733401, 8.832000 +2.450000, 53.859089, 8.733401, 8.832000 +2.466667, 54.471960, 8.733401, 8.832000 +2.483333, 55.084830, 8.733401, 8.832000 +2.500000, 55.697700, 8.733401, 8.832000 +2.516667, 56.310571, 8.733401, 8.832000 +2.533333, 56.923441, 8.733401, 8.832000 +2.550000, 57.536311, 8.733401, 8.832000 +2.566667, 58.149181, 8.733401, 8.832000 +2.583333, 58.762052, 8.733401, 8.832000 +2.600000, 59.374922, 8.733401, 8.832000 +2.616667, 59.987792, 8.733401, 8.832000 +2.633333, 60.600662, 8.733401, 8.832000 +2.650000, 61.213533, 8.733401, 8.832000 +2.666667, 61.826403, 8.733401, 8.832000 +2.683333, 62.439273, 8.733401, 8.832000 +2.700000, 63.052144, 8.733401, 8.832000 +2.716667, 63.665014, 8.733401, 8.832000 +2.733333, 64.277884, 8.733401, 8.832000 +2.750000, 64.890754, 8.733401, 8.832000 +2.766667, 65.503625, 8.733401, 8.832000 +2.783333, 66.116495, 8.733401, 8.832000 +2.800000, 66.729365, 8.733401, 8.832000 +2.816667, 67.342235, 8.733401, 8.832000 +2.833333, 67.955106, 8.733401, 8.832000 +2.850000, 68.567976, 8.733401, 8.832000 +2.866667, 69.180846, 8.733401, 8.832000 +2.883333, 69.793717, 8.733401, 8.832000 +2.900000, 70.406587, 8.733401, 8.832000 +2.916667, 71.019457, 8.733401, 8.832000 +2.933333, 71.632327, 8.733401, 8.832000 +2.950000, 72.245198, 8.733401, 8.832000 +2.966667, 72.858068, 8.733401, 8.832000 +2.983333, 73.470938, 8.733401, 8.832000 +3.000000, 74.083809, 8.733401, 8.832000 +3.016667, 74.696679, 8.733401, 8.832000 +3.033333, 75.309549, 8.733401, 8.832000 +3.050000, 75.922419, 8.733401, 8.832000 +3.066667, 76.535290, 8.733401, 8.832000 +3.083333, 77.148160, 8.733401, 8.832000 +3.100000, 77.761030, 8.733401, 8.832000 +3.116667, 78.373900, 8.733401, 8.832000 +3.133333, 78.986771, 8.733401, 8.832000 +3.150000, 79.599641, 8.733401, 8.832000 +3.166667, 80.212511, 8.733401, 8.832000 +3.183333, 80.825382, 8.733401, 8.832000 +3.200000, 81.438252, 8.733401, 8.832000 +3.216667, 82.051122, 8.733401, 8.832000 +3.233333, 82.663992, 8.733401, 8.832000 +3.250000, 83.276863, 8.733401, 8.832000 +3.266667, 83.889733, 8.733401, 8.832000 +3.283333, 84.502603, 8.733401, 8.832000 +3.300000, 85.115473, 8.733401, 8.832000 +3.316667, 85.728344, 8.733401, 8.832000 +3.333333, 86.341214, 8.733401, 8.832000 +3.350000, 86.954084, 8.733401, 8.832000 +3.366667, 87.566955, 8.733401, 8.832000 +3.383333, 88.179825, 8.733401, 8.832000 +3.400000, 88.792695, 8.733401, 8.832000 +3.416667, 89.405565, 8.733401, 8.832000 +3.433333, 90.018436, 8.733401, 8.832000 +3.450000, 90.631306, 8.733401, 8.832000 +3.466667, 91.244176, 8.733401, 8.832000 +3.483333, 91.857047, 8.733401, 8.832000 +3.500000, 92.469917, 8.733401, 8.832000 +3.516667, 93.082787, 8.733401, 8.832000 +3.533333, 93.695657, 8.733401, 8.832000 +3.550000, 94.308528, 8.733401, 8.832000 +3.566667, 94.921398, 8.733401, 8.832000 +3.583333, 95.534268, 8.733401, 8.832000 +3.600000, 96.147138, 8.733401, 8.832000 +3.616667, 96.760009, 8.733401, 8.832000 +3.633333, 97.372879, 8.733401, 8.832000 +3.650000, 97.962686, 8.404745, 8.498984 +3.666667, 98.451688, 6.968290, 7.044070 +3.683333, 98.850306, 5.680300, 5.740356 +3.700000, 99.175156, 4.629109, 4.676911 +3.716667, 99.439882, 3.772342, 3.810540 +3.733333, 99.655606, 3.074078, 3.104703 +3.750000, 99.800321, 2.062187, 2.082243 +3.766667, 99.800587, 0.003787, 0.003822 +3.783333, 99.800587, 0.000000, 0.000000 +3.800000, 99.800587, 0.000000, 0.000000 +3.816667, 99.800587, 0.000000, 0.000000 +3.833333, 99.800587, 0.000000, 0.000000 +3.850000, 99.800587, 0.000000, 0.000000 +3.866667, 99.800587, 0.000000, 0.000000 +3.883333, 99.800587, 0.000000, 0.000000 +3.900000, 99.800587, 0.000000, 0.000000 +3.916667, 99.800587, 0.000000, 0.000000 +3.933333, 99.800587, 0.000000, 0.000000 +3.950000, 99.800587, 0.000000, 0.000000 +3.966667, 99.800587, 0.000000, 0.000000 +3.983333, 99.800587, 0.000000, 0.000000 +4.000000, 99.800587, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/dcfc_50_bev150_150kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/dcfc_50_bev150_150kW.csv new file mode 100644 index 0000000..976bd8c --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/dcfc_50_bev150_150kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 2.247462, 60.681462, 61.702621 +1.016667, 5.575798, 89.865089, 91.712548 +1.033333, 9.026912, 93.180078, 95.135492 +1.050000, 12.569172, 95.641015, 97.678447 +1.066667, 16.138372, 96.368386, 98.430366 +1.083333, 19.730929, 96.999048, 99.082425 +1.100000, 23.346985, 97.633527, 99.738539 +1.116667, 26.986691, 98.272053, 100.398943 +1.133333, 30.650197, 98.914648, 101.063667 +1.150000, 34.337654, 99.561338, 101.732736 +1.166667, 38.049215, 100.212148, 102.406180 +1.183333, 41.785033, 100.867101, 103.084025 +1.200000, 45.545264, 101.526224, 103.766300 +1.216667, 49.330061, 102.189541, 104.453033 +1.233333, 53.139583, 102.857077, 105.144253 +1.250000, 56.973985, 103.528857, 105.839987 +1.266667, 60.833426, 104.204908, 106.540265 +1.283333, 64.718065, 104.885254, 107.245115 +1.300000, 68.628062, 105.569922, 107.954567 +1.316667, 72.563578, 106.258937, 108.668649 +1.333333, 76.524775, 106.952325, 109.387392 +1.350000, 80.466758, 106.433516, 108.849600 +1.366667, 83.825431, 90.684186, 92.558050 +1.383333, 86.537762, 73.232934, 74.582299 +1.400000, 88.724078, 59.030545, 60.011563 +1.416667, 90.485367, 47.554787, 48.276108 +1.433333, 91.903596, 38.292199, 38.828421 +1.450000, 93.045242, 30.824428, 31.227248 +1.466667, 94.005891, 25.937530, 26.260661 +1.483333, 94.847420, 22.721278, 22.995235 +1.500000, 95.584710, 19.906840, 20.139892 +1.516667, 96.230622, 17.439610, 17.638431 +1.533333, 96.796440, 15.277080, 15.447147 +1.550000, 97.292065, 13.381874, 13.527699 +1.566667, 97.726181, 11.721140, 11.846456 +1.583333, 98.106404, 10.266018, 10.373928 +1.600000, 98.439410, 8.991167, 9.084259 +1.616667, 98.731052, 7.874342, 7.954782 +1.633333, 98.986460, 6.896020, 6.965633 +1.650000, 99.210130, 6.039077, 6.099400 +1.666667, 99.406000, 5.288493, 5.340829 +1.683333, 99.577522, 4.631098, 4.676553 +1.700000, 99.727720, 4.055346, 4.094861 +1.716667, 99.800185, 1.956550, 1.975108 +1.733333, 99.800246, 0.001635, 0.001650 +1.750000, 99.800246, 0.000000, 0.000000 +1.766667, 99.800246, 0.000000, 0.000000 +1.783333, 99.800246, 0.000000, 0.000000 +1.800000, 99.800246, 0.000000, 0.000000 +1.816667, 99.800246, 0.000000, 0.000000 +1.833333, 99.800246, 0.000000, 0.000000 +1.850000, 99.800246, 0.000000, 0.000000 +1.866667, 99.800246, 0.000000, 0.000000 +1.883333, 99.800246, 0.000000, 0.000000 +1.900000, 99.800246, 0.000000, 0.000000 +1.916667, 99.800246, 0.000000, 0.000000 +1.933333, 99.800246, 0.000000, 0.000000 +1.950000, 99.800246, 0.000000, 0.000000 +1.966667, 99.800246, 0.000000, 0.000000 +1.983333, 99.800246, 0.000000, 0.000000 +2.000000, 99.800246, 0.000000, 0.000000 +2.016667, 99.800246, 0.000000, 0.000000 +2.033333, 99.800246, 0.000000, 0.000000 +2.050000, 99.800246, 0.000000, 0.000000 +2.066667, 99.800246, 0.000000, 0.000000 +2.083333, 99.800246, 0.000000, 0.000000 +2.100000, 99.800246, 0.000000, 0.000000 +2.116667, 99.800246, 0.000000, 0.000000 +2.133333, 99.800246, 0.000000, 0.000000 +2.150000, 99.800246, 0.000000, 0.000000 +2.166667, 99.800246, 0.000000, 0.000000 +2.183333, 99.800246, 0.000000, 0.000000 +2.200000, 99.800246, 0.000000, 0.000000 +2.216667, 99.800246, 0.000000, 0.000000 +2.233333, 99.800246, 0.000000, 0.000000 +2.250000, 99.800246, 0.000000, 0.000000 +2.266667, 99.800246, 0.000000, 0.000000 +2.283333, 99.800246, 0.000000, 0.000000 +2.300000, 99.800246, 0.000000, 0.000000 +2.316667, 99.800246, 0.000000, 0.000000 +2.333333, 99.800246, 0.000000, 0.000000 +2.350000, 99.800246, 0.000000, 0.000000 +2.366667, 99.800246, 0.000000, 0.000000 +2.383333, 99.800246, 0.000000, 0.000000 +2.400000, 99.800246, 0.000000, 0.000000 +2.416667, 99.800246, 0.000000, 0.000000 +2.433333, 99.800246, 0.000000, 0.000000 +2.450000, 99.800246, 0.000000, 0.000000 +2.466667, 99.800246, 0.000000, 0.000000 +2.483333, 99.800246, 0.000000, 0.000000 +2.500000, 99.800246, 0.000000, 0.000000 +2.516667, 99.800246, 0.000000, 0.000000 +2.533333, 99.800246, 0.000000, 0.000000 +2.550000, 99.800246, 0.000000, 0.000000 +2.566667, 99.800246, 0.000000, 0.000000 +2.583333, 99.800246, 0.000000, 0.000000 +2.600000, 99.800246, 0.000000, 0.000000 +2.616667, 99.800246, 0.000000, 0.000000 +2.633333, 99.800246, 0.000000, 0.000000 +2.650000, 99.800246, 0.000000, 0.000000 +2.666667, 99.800246, 0.000000, 0.000000 +2.683333, 99.800246, 0.000000, 0.000000 +2.700000, 99.800246, 0.000000, 0.000000 +2.716667, 99.800246, 0.000000, 0.000000 +2.733333, 99.800246, 0.000000, 0.000000 +2.750000, 99.800246, 0.000000, 0.000000 +2.766667, 99.800246, 0.000000, 0.000000 +2.783333, 99.800246, 0.000000, 0.000000 +2.800000, 99.800246, 0.000000, 0.000000 +2.816667, 99.800246, 0.000000, 0.000000 +2.833333, 99.800246, 0.000000, 0.000000 +2.850000, 99.800246, 0.000000, 0.000000 +2.866667, 99.800246, 0.000000, 0.000000 +2.883333, 99.800246, 0.000000, 0.000000 +2.900000, 99.800246, 0.000000, 0.000000 +2.916667, 99.800246, 0.000000, 0.000000 +2.933333, 99.800246, 0.000000, 0.000000 +2.950000, 99.800246, 0.000000, 0.000000 +2.966667, 99.800246, 0.000000, 0.000000 +2.983333, 99.800246, 0.000000, 0.000000 +3.000000, 99.800246, 0.000000, 0.000000 +3.016667, 99.800246, 0.000000, 0.000000 +3.033333, 99.800246, 0.000000, 0.000000 +3.050000, 99.800246, 0.000000, 0.000000 +3.066667, 99.800246, 0.000000, 0.000000 +3.083333, 99.800246, 0.000000, 0.000000 +3.100000, 99.800246, 0.000000, 0.000000 +3.116667, 99.800246, 0.000000, 0.000000 +3.133333, 99.800246, 0.000000, 0.000000 +3.150000, 99.800246, 0.000000, 0.000000 +3.166667, 99.800246, 0.000000, 0.000000 +3.183333, 99.800246, 0.000000, 0.000000 +3.200000, 99.800246, 0.000000, 0.000000 +3.216667, 99.800246, 0.000000, 0.000000 +3.233333, 99.800246, 0.000000, 0.000000 +3.250000, 99.800246, 0.000000, 0.000000 +3.266667, 99.800246, 0.000000, 0.000000 +3.283333, 99.800246, 0.000000, 0.000000 +3.300000, 99.800246, 0.000000, 0.000000 +3.316667, 99.800246, 0.000000, 0.000000 +3.333333, 99.800246, 0.000000, 0.000000 +3.350000, 99.800246, 0.000000, 0.000000 +3.366667, 99.800246, 0.000000, 0.000000 +3.383333, 99.800246, 0.000000, 0.000000 +3.400000, 99.800246, 0.000000, 0.000000 +3.416667, 99.800246, 0.000000, 0.000000 +3.433333, 99.800246, 0.000000, 0.000000 +3.450000, 99.800246, 0.000000, 0.000000 +3.466667, 99.800246, 0.000000, 0.000000 +3.483333, 99.800246, 0.000000, 0.000000 +3.500000, 99.800246, 0.000000, 0.000000 +3.516667, 99.800246, 0.000000, 0.000000 +3.533333, 99.800246, 0.000000, 0.000000 +3.550000, 99.800246, 0.000000, 0.000000 +3.566667, 99.800246, 0.000000, 0.000000 +3.583333, 99.800246, 0.000000, 0.000000 +3.600000, 99.800246, 0.000000, 0.000000 +3.616667, 99.800246, 0.000000, 0.000000 +3.633333, 99.800246, 0.000000, 0.000000 +3.650000, 99.800246, 0.000000, 0.000000 +3.666667, 99.800246, 0.000000, 0.000000 +3.683333, 99.800246, 0.000000, 0.000000 +3.700000, 99.800246, 0.000000, 0.000000 +3.716667, 99.800246, 0.000000, 0.000000 +3.733333, 99.800246, 0.000000, 0.000000 +3.750000, 99.800246, 0.000000, 0.000000 +3.766667, 99.800246, 0.000000, 0.000000 +3.783333, 99.800246, 0.000000, 0.000000 +3.800000, 99.800246, 0.000000, 0.000000 +3.816667, 99.800246, 0.000000, 0.000000 +3.833333, 99.800246, 0.000000, 0.000000 +3.850000, 99.800246, 0.000000, 0.000000 +3.866667, 99.800246, 0.000000, 0.000000 +3.883333, 99.800246, 0.000000, 0.000000 +3.900000, 99.800246, 0.000000, 0.000000 +3.916667, 99.800246, 0.000000, 0.000000 +3.933333, 99.800246, 0.000000, 0.000000 +3.950000, 99.800246, 0.000000, 0.000000 +3.966667, 99.800246, 0.000000, 0.000000 +3.983333, 99.800246, 0.000000, 0.000000 +4.000000, 99.800246, 0.000000, 0.000000 diff --git a/unittests/test_charging_models/original_dxfc_models/dcfc_50_bev150_ld1_50kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/dcfc_50_bev150_ld1_50kW.csv similarity index 100% rename from unittests/test_charging_models/original_dxfc_models/dcfc_50_bev150_ld1_50kW.csv rename to unittests/test_charging_models_DirectXFC/original_dxfc_models/dcfc_50_bev150_ld1_50kW.csv diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/dcfc_50_bev200_ld4_150kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/dcfc_50_bev200_ld4_150kW.csv new file mode 100644 index 0000000..cbac2fb --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/dcfc_50_bev200_ld4_150kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 1.071267, 61.062222, 61.845697 +1.016667, 2.610444, 87.733081, 88.997618 +1.033333, 4.229939, 92.311214, 93.666908 +1.050000, 5.893292, 94.811136, 96.217673 +1.066667, 7.577242, 95.985167, 97.415841 +1.083333, 9.281973, 97.169640, 98.624835 +1.100000, 11.005059, 98.215925, 99.692921 +1.116667, 12.734916, 98.601825, 100.086894 +1.133333, 14.470164, 98.909162, 100.400674 +1.150000, 16.210819, 99.217297, 100.715280 +1.166667, 17.956896, 99.526380, 101.030866 +1.183333, 19.708412, 99.836415, 101.347436 +1.200000, 21.465384, 100.147404, 101.664991 +1.216667, 23.227828, 100.459350, 101.983535 +1.233333, 24.995763, 100.772257, 102.303072 +1.250000, 26.769204, 101.086126, 102.623604 +1.266667, 28.548168, 101.400962, 102.945134 +1.283333, 30.332672, 101.716766, 103.267666 +1.300000, 32.122735, 102.033541, 103.591202 +1.316667, 33.918371, 102.351292, 103.915746 +1.333333, 35.719600, 102.670020, 104.241300 +1.350000, 37.526437, 102.989728, 104.567868 +1.366667, 39.338900, 103.310420, 104.895453 +1.383333, 41.157007, 103.632097, 105.224058 +1.400000, 42.980775, 103.954765, 105.553687 +1.416667, 44.810221, 104.278424, 105.884341 +1.433333, 46.645363, 104.603079, 106.216025 +1.450000, 48.486218, 104.928732, 106.548742 +1.466667, 50.332804, 105.255386, 106.882494 +1.483333, 52.185138, 105.583044, 107.217286 +1.500000, 54.043238, 105.911710, 107.553119 +1.516667, 55.907122, 106.241385, 107.889998 +1.533333, 57.776807, 106.572074, 108.227926 +1.550000, 59.652312, 106.903779, 108.566905 +1.566667, 61.533655, 107.236504, 108.906940 +1.583333, 63.420852, 107.570251, 109.248032 +1.600000, 65.313922, 107.905023, 109.590186 +1.616667, 67.212884, 108.240824, 109.933406 +1.633333, 69.117755, 108.577656, 110.277693 +1.650000, 71.028554, 108.915523, 110.623051 +1.666667, 72.945298, 109.254428, 110.969484 +1.683333, 74.868007, 109.594374, 111.316995 +1.700000, 76.796697, 109.935363, 111.665588 +1.716667, 78.731389, 110.277400, 112.015265 +1.733333, 80.672099, 110.620486, 112.366030 +1.750000, 82.618847, 110.964627, 112.717886 +1.766667, 84.571651, 111.309823, 113.070836 +1.783333, 86.530529, 111.656079, 113.424885 +1.800000, 88.495501, 112.003398, 113.780035 +1.816667, 90.388175, 107.882388, 109.567052 +1.833333, 92.000063, 91.877636, 93.224589 +1.850000, 93.358658, 77.439923, 78.508708 +1.866667, 94.503336, 65.246658, 66.099982 +1.883333, 95.467609, 54.963525, 55.648934 +1.900000, 96.279787, 46.294164, 46.847781 +1.916667, 96.963775, 38.987338, 39.436795 +1.933333, 97.539746, 32.830327, 33.196917 +1.950000, 98.024714, 27.643205, 27.943453 +1.966667, 98.433029, 23.273905, 23.520730 +1.983333, 98.776783, 19.593992, 19.797564 +2.000000, 99.066170, 16.495053, 16.663435 +2.016667, 99.309777, 13.885619, 14.025243 +2.033333, 99.514839, 11.688549, 11.804579 +2.050000, 99.687450, 9.838804, 9.935408 +2.066667, 99.800169, 6.424989, 6.486792 +2.083333, 99.800265, 0.005442, 0.005492 +2.100000, 99.800265, 0.000000, 0.000000 +2.116667, 99.800265, 0.000000, 0.000000 +2.133333, 99.800265, 0.000000, 0.000000 +2.150000, 99.800265, 0.000000, 0.000000 +2.166667, 99.800265, 0.000000, 0.000000 +2.183333, 99.800265, 0.000000, 0.000000 +2.200000, 99.800265, 0.000000, 0.000000 +2.216667, 99.800265, 0.000000, 0.000000 +2.233333, 99.800265, 0.000000, 0.000000 +2.250000, 99.800265, 0.000000, 0.000000 +2.266667, 99.800265, 0.000000, 0.000000 +2.283333, 99.800265, 0.000000, 0.000000 +2.300000, 99.800265, 0.000000, 0.000000 +2.316667, 99.800265, 0.000000, 0.000000 +2.333333, 99.800265, 0.000000, 0.000000 +2.350000, 99.800265, 0.000000, 0.000000 +2.366667, 99.800265, 0.000000, 0.000000 +2.383333, 99.800265, 0.000000, 0.000000 +2.400000, 99.800265, 0.000000, 0.000000 +2.416667, 99.800265, 0.000000, 0.000000 +2.433333, 99.800265, 0.000000, 0.000000 +2.450000, 99.800265, 0.000000, 0.000000 +2.466667, 99.800265, 0.000000, 0.000000 +2.483333, 99.800265, 0.000000, 0.000000 +2.500000, 99.800265, 0.000000, 0.000000 +2.516667, 99.800265, 0.000000, 0.000000 +2.533333, 99.800265, 0.000000, 0.000000 +2.550000, 99.800265, 0.000000, 0.000000 +2.566667, 99.800265, 0.000000, 0.000000 +2.583333, 99.800265, 0.000000, 0.000000 +2.600000, 99.800265, 0.000000, 0.000000 +2.616667, 99.800265, 0.000000, 0.000000 +2.633333, 99.800265, 0.000000, 0.000000 +2.650000, 99.800265, 0.000000, 0.000000 +2.666667, 99.800265, 0.000000, 0.000000 +2.683333, 99.800265, 0.000000, 0.000000 +2.700000, 99.800265, 0.000000, 0.000000 +2.716667, 99.800265, 0.000000, 0.000000 +2.733333, 99.800265, 0.000000, 0.000000 +2.750000, 99.800265, 0.000000, 0.000000 +2.766667, 99.800265, 0.000000, 0.000000 +2.783333, 99.800265, 0.000000, 0.000000 +2.800000, 99.800265, 0.000000, 0.000000 +2.816667, 99.800265, 0.000000, 0.000000 +2.833333, 99.800265, 0.000000, 0.000000 +2.850000, 99.800265, 0.000000, 0.000000 +2.866667, 99.800265, 0.000000, 0.000000 +2.883333, 99.800265, 0.000000, 0.000000 +2.900000, 99.800265, 0.000000, 0.000000 +2.916667, 99.800265, 0.000000, 0.000000 +2.933333, 99.800265, 0.000000, 0.000000 +2.950000, 99.800265, 0.000000, 0.000000 +2.966667, 99.800265, 0.000000, 0.000000 +2.983333, 99.800265, 0.000000, 0.000000 +3.000000, 99.800265, 0.000000, 0.000000 +3.016667, 99.800265, 0.000000, 0.000000 +3.033333, 99.800265, 0.000000, 0.000000 +3.050000, 99.800265, 0.000000, 0.000000 +3.066667, 99.800265, 0.000000, 0.000000 +3.083333, 99.800265, 0.000000, 0.000000 +3.100000, 99.800265, 0.000000, 0.000000 +3.116667, 99.800265, 0.000000, 0.000000 +3.133333, 99.800265, 0.000000, 0.000000 +3.150000, 99.800265, 0.000000, 0.000000 +3.166667, 99.800265, 0.000000, 0.000000 +3.183333, 99.800265, 0.000000, 0.000000 +3.200000, 99.800265, 0.000000, 0.000000 +3.216667, 99.800265, 0.000000, 0.000000 +3.233333, 99.800265, 0.000000, 0.000000 +3.250000, 99.800265, 0.000000, 0.000000 +3.266667, 99.800265, 0.000000, 0.000000 +3.283333, 99.800265, 0.000000, 0.000000 +3.300000, 99.800265, 0.000000, 0.000000 +3.316667, 99.800265, 0.000000, 0.000000 +3.333333, 99.800265, 0.000000, 0.000000 +3.350000, 99.800265, 0.000000, 0.000000 +3.366667, 99.800265, 0.000000, 0.000000 +3.383333, 99.800265, 0.000000, 0.000000 +3.400000, 99.800265, 0.000000, 0.000000 +3.416667, 99.800265, 0.000000, 0.000000 +3.433333, 99.800265, 0.000000, 0.000000 +3.450000, 99.800265, 0.000000, 0.000000 +3.466667, 99.800265, 0.000000, 0.000000 +3.483333, 99.800265, 0.000000, 0.000000 +3.500000, 99.800265, 0.000000, 0.000000 +3.516667, 99.800265, 0.000000, 0.000000 +3.533333, 99.800265, 0.000000, 0.000000 +3.550000, 99.800265, 0.000000, 0.000000 +3.566667, 99.800265, 0.000000, 0.000000 +3.583333, 99.800265, 0.000000, 0.000000 +3.600000, 99.800265, 0.000000, 0.000000 +3.616667, 99.800265, 0.000000, 0.000000 +3.633333, 99.800265, 0.000000, 0.000000 +3.650000, 99.800265, 0.000000, 0.000000 +3.666667, 99.800265, 0.000000, 0.000000 +3.683333, 99.800265, 0.000000, 0.000000 +3.700000, 99.800265, 0.000000, 0.000000 +3.716667, 99.800265, 0.000000, 0.000000 +3.733333, 99.800265, 0.000000, 0.000000 +3.750000, 99.800265, 0.000000, 0.000000 +3.766667, 99.800265, 0.000000, 0.000000 +3.783333, 99.800265, 0.000000, 0.000000 +3.800000, 99.800265, 0.000000, 0.000000 +3.816667, 99.800265, 0.000000, 0.000000 +3.833333, 99.800265, 0.000000, 0.000000 +3.850000, 99.800265, 0.000000, 0.000000 +3.866667, 99.800265, 0.000000, 0.000000 +3.883333, 99.800265, 0.000000, 0.000000 +3.900000, 99.800265, 0.000000, 0.000000 +3.916667, 99.800265, 0.000000, 0.000000 +3.933333, 99.800265, 0.000000, 0.000000 +3.950000, 99.800265, 0.000000, 0.000000 +3.966667, 99.800265, 0.000000, 0.000000 +3.983333, 99.800265, 0.000000, 0.000000 +4.000000, 99.800265, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/dcfc_50_bev250_350kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/dcfc_50_bev250_350kW.csv new file mode 100644 index 0000000..2794fa5 --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/dcfc_50_bev250_350kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.860376, 61.327633, 62.070966 +1.016667, 2.088216, 87.520429, 88.689638 +1.033333, 3.368012, 91.223811, 92.458515 +1.050000, 4.696257, 94.677309, 95.974272 +1.066667, 6.042671, 95.972396, 97.293000 +1.083333, 7.402515, 96.929715, 98.267898 +1.100000, 8.775911, 97.895660, 99.251670 +1.116667, 10.162922, 98.866123, 100.240133 +1.133333, 11.557451, 99.402020, 100.786008 +1.150000, 12.955499, 99.652890, 101.041559 +1.166667, 14.357068, 99.903835, 101.297192 +1.183333, 15.762167, 100.155406, 101.553468 +1.200000, 17.170803, 100.407604, 101.810390 +1.216667, 18.582986, 100.660432, 102.067959 +1.233333, 19.998726, 100.913889, 102.326177 +1.250000, 21.418029, 101.167979, 102.585044 +1.266667, 22.840907, 101.422703, 102.844564 +1.283333, 24.267367, 101.678062, 103.104737 +1.300000, 25.697418, 101.934058, 103.365565 +1.316667, 27.131070, 102.190692, 103.627049 +1.333333, 28.568331, 102.447966, 103.889192 +1.350000, 30.009210, 102.705881, 104.151995 +1.366667, 31.453717, 102.964439, 104.415459 +1.383333, 32.901860, 103.223642, 104.679587 +1.400000, 34.353649, 103.483491, 104.944380 +1.416667, 35.809092, 103.743988, 105.209839 +1.433333, 37.268198, 104.005134, 105.475966 +1.450000, 38.730978, 104.266931, 105.742764 +1.466667, 40.197440, 104.529380, 106.010233 +1.483333, 41.667592, 104.792484, 106.278375 +1.500000, 43.141445, 105.056243, 106.547192 +1.516667, 44.619008, 105.320660, 106.816685 +1.533333, 46.100289, 105.585735, 107.086857 +1.550000, 47.585299, 105.851471, 107.357709 +1.566667, 49.074045, 106.117869, 107.629243 +1.583333, 50.566539, 106.384931, 107.901460 +1.600000, 52.062788, 106.652658, 108.174362 +1.616667, 53.562803, 106.921052, 108.447950 +1.633333, 55.066593, 107.190115, 108.722228 +1.650000, 56.574166, 107.459848, 108.997195 +1.666667, 58.085533, 107.730252, 109.272854 +1.683333, 59.600704, 108.001331, 109.549207 +1.700000, 61.119686, 108.273084, 109.826256 +1.716667, 62.642491, 108.545514, 110.104001 +1.733333, 64.169127, 108.818623, 110.382445 +1.750000, 65.699604, 109.092411, 110.661590 +1.766667, 67.233932, 109.366882, 110.941437 +1.783333, 68.772120, 109.642036, 111.221989 +1.800000, 70.314177, 109.917875, 111.503246 +1.816667, 71.860115, 110.194400, 111.785210 +1.833333, 73.409941, 110.471614, 112.067885 +1.850000, 74.963666, 110.749519, 112.351270 +1.866667, 76.521299, 111.028115, 112.635368 +1.883333, 78.082851, 111.307404, 112.920180 +1.900000, 79.648331, 111.587389, 113.205709 +1.916667, 81.217748, 111.868070, 113.491957 +1.933333, 82.791113, 112.149450, 113.778924 +1.950000, 84.368435, 112.431530, 114.066613 +1.966667, 85.949725, 112.714312, 114.355026 +1.983333, 87.534991, 112.997798, 114.644164 +2.000000, 89.124245, 113.281989, 114.934029 +2.016667, 90.717495, 113.566887, 115.224623 +2.033333, 92.260011, 109.950512, 111.536524 +2.050000, 93.577235, 93.891756, 95.174456 +2.066667, 94.687256, 79.122312, 80.147854 +2.083333, 95.622315, 66.650970, 67.475571 +2.100000, 96.409882, 56.137813, 56.804505 +2.116667, 97.073149, 47.277613, 47.819357 +2.133333, 97.631679, 39.812041, 40.254264 +2.150000, 98.101975, 33.522680, 33.885143 +2.166667, 98.497948, 28.224999, 28.523166 +2.183333, 98.831326, 23.763185, 24.009250 +2.200000, 99.111990, 20.005747, 20.209384 +2.216667, 99.348267, 16.841764, 17.010702 +2.233333, 99.547168, 14.177701, 14.318149 +2.250000, 99.714602, 11.934708, 12.051685 +2.266667, 99.800298, 6.108383, 6.166591 +2.283333, 99.800370, 0.005158, 0.005206 +2.300000, 99.800370, 0.000000, 0.000000 +2.316667, 99.800370, 0.000000, 0.000000 +2.333333, 99.800370, 0.000000, 0.000000 +2.350000, 99.800370, 0.000000, 0.000000 +2.366667, 99.800370, 0.000000, 0.000000 +2.383333, 99.800370, 0.000000, 0.000000 +2.400000, 99.800370, 0.000000, 0.000000 +2.416667, 99.800370, 0.000000, 0.000000 +2.433333, 99.800370, 0.000000, 0.000000 +2.450000, 99.800370, 0.000000, 0.000000 +2.466667, 99.800370, 0.000000, 0.000000 +2.483333, 99.800370, 0.000000, 0.000000 +2.500000, 99.800370, 0.000000, 0.000000 +2.516667, 99.800370, 0.000000, 0.000000 +2.533333, 99.800370, 0.000000, 0.000000 +2.550000, 99.800370, 0.000000, 0.000000 +2.566667, 99.800370, 0.000000, 0.000000 +2.583333, 99.800370, 0.000000, 0.000000 +2.600000, 99.800370, 0.000000, 0.000000 +2.616667, 99.800370, 0.000000, 0.000000 +2.633333, 99.800370, 0.000000, 0.000000 +2.650000, 99.800370, 0.000000, 0.000000 +2.666667, 99.800370, 0.000000, 0.000000 +2.683333, 99.800370, 0.000000, 0.000000 +2.700000, 99.800370, 0.000000, 0.000000 +2.716667, 99.800370, 0.000000, 0.000000 +2.733333, 99.800370, 0.000000, 0.000000 +2.750000, 99.800370, 0.000000, 0.000000 +2.766667, 99.800370, 0.000000, 0.000000 +2.783333, 99.800370, 0.000000, 0.000000 +2.800000, 99.800370, 0.000000, 0.000000 +2.816667, 99.800370, 0.000000, 0.000000 +2.833333, 99.800370, 0.000000, 0.000000 +2.850000, 99.800370, 0.000000, 0.000000 +2.866667, 99.800370, 0.000000, 0.000000 +2.883333, 99.800370, 0.000000, 0.000000 +2.900000, 99.800370, 0.000000, 0.000000 +2.916667, 99.800370, 0.000000, 0.000000 +2.933333, 99.800370, 0.000000, 0.000000 +2.950000, 99.800370, 0.000000, 0.000000 +2.966667, 99.800370, 0.000000, 0.000000 +2.983333, 99.800370, 0.000000, 0.000000 +3.000000, 99.800370, 0.000000, 0.000000 +3.016667, 99.800370, 0.000000, 0.000000 +3.033333, 99.800370, 0.000000, 0.000000 +3.050000, 99.800370, 0.000000, 0.000000 +3.066667, 99.800370, 0.000000, 0.000000 +3.083333, 99.800370, 0.000000, 0.000000 +3.100000, 99.800370, 0.000000, 0.000000 +3.116667, 99.800370, 0.000000, 0.000000 +3.133333, 99.800370, 0.000000, 0.000000 +3.150000, 99.800370, 0.000000, 0.000000 +3.166667, 99.800370, 0.000000, 0.000000 +3.183333, 99.800370, 0.000000, 0.000000 +3.200000, 99.800370, 0.000000, 0.000000 +3.216667, 99.800370, 0.000000, 0.000000 +3.233333, 99.800370, 0.000000, 0.000000 +3.250000, 99.800370, 0.000000, 0.000000 +3.266667, 99.800370, 0.000000, 0.000000 +3.283333, 99.800370, 0.000000, 0.000000 +3.300000, 99.800370, 0.000000, 0.000000 +3.316667, 99.800370, 0.000000, 0.000000 +3.333333, 99.800370, 0.000000, 0.000000 +3.350000, 99.800370, 0.000000, 0.000000 +3.366667, 99.800370, 0.000000, 0.000000 +3.383333, 99.800370, 0.000000, 0.000000 +3.400000, 99.800370, 0.000000, 0.000000 +3.416667, 99.800370, 0.000000, 0.000000 +3.433333, 99.800370, 0.000000, 0.000000 +3.450000, 99.800370, 0.000000, 0.000000 +3.466667, 99.800370, 0.000000, 0.000000 +3.483333, 99.800370, 0.000000, 0.000000 +3.500000, 99.800370, 0.000000, 0.000000 +3.516667, 99.800370, 0.000000, 0.000000 +3.533333, 99.800370, 0.000000, 0.000000 +3.550000, 99.800370, 0.000000, 0.000000 +3.566667, 99.800370, 0.000000, 0.000000 +3.583333, 99.800370, 0.000000, 0.000000 +3.600000, 99.800370, 0.000000, 0.000000 +3.616667, 99.800370, 0.000000, 0.000000 +3.633333, 99.800370, 0.000000, 0.000000 +3.650000, 99.800370, 0.000000, 0.000000 +3.666667, 99.800370, 0.000000, 0.000000 +3.683333, 99.800370, 0.000000, 0.000000 +3.700000, 99.800370, 0.000000, 0.000000 +3.716667, 99.800370, 0.000000, 0.000000 +3.733333, 99.800370, 0.000000, 0.000000 +3.750000, 99.800370, 0.000000, 0.000000 +3.766667, 99.800370, 0.000000, 0.000000 +3.783333, 99.800370, 0.000000, 0.000000 +3.800000, 99.800370, 0.000000, 0.000000 +3.816667, 99.800370, 0.000000, 0.000000 +3.833333, 99.800370, 0.000000, 0.000000 +3.850000, 99.800370, 0.000000, 0.000000 +3.866667, 99.800370, 0.000000, 0.000000 +3.883333, 99.800370, 0.000000, 0.000000 +3.900000, 99.800370, 0.000000, 0.000000 +3.916667, 99.800370, 0.000000, 0.000000 +3.933333, 99.800370, 0.000000, 0.000000 +3.950000, 99.800370, 0.000000, 0.000000 +3.966667, 99.800370, 0.000000, 0.000000 +3.983333, 99.800370, 0.000000, 0.000000 +4.000000, 99.800370, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/dcfc_50_bev250_400kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/dcfc_50_bev250_400kW.csv new file mode 100644 index 0000000..922bcc1 --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/dcfc_50_bev250_400kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 1.131707, 59.414631, 60.501836 +1.016667, 2.765700, 85.784618, 87.570506 +1.033333, 4.420765, 86.890927, 88.709079 +1.050000, 6.081115, 87.168364, 88.994645 +1.066667, 7.746732, 87.444908, 89.279306 +1.083333, 9.417634, 87.722315, 89.564871 +1.100000, 11.093835, 88.000587, 89.851341 +1.116667, 12.775354, 88.279727, 90.138720 +1.133333, 14.462206, 88.559738, 90.427011 +1.150000, 16.154408, 88.840622, 90.716216 +1.166667, 17.851978, 89.122381, 91.006338 +1.183333, 19.554930, 89.405019, 91.297381 +1.200000, 21.263283, 89.688538, 91.589346 +1.216667, 22.977054, 89.972941, 91.882237 +1.233333, 24.696258, 90.258230, 92.176057 +1.250000, 26.420913, 90.544408, 92.470809 +1.266667, 28.151037, 90.831478, 92.766495 +1.283333, 29.886645, 91.119443, 93.063118 +1.300000, 31.627756, 91.408304, 93.360682 +1.316667, 33.374386, 91.698065, 93.659189 +1.333333, 35.126552, 91.988729, 93.958643 +1.350000, 36.884272, 92.280298, 94.259045 +1.366667, 38.647563, 92.572775, 94.560400 +1.383333, 40.416442, 92.866162, 94.862710 +1.400000, 42.190927, 93.160463, 95.165978 +1.416667, 43.971035, 93.455679, 95.470207 +1.433333, 45.756784, 93.751815, 95.775400 +1.450000, 47.548191, 94.048872, 96.081560 +1.466667, 49.345274, 94.346854, 96.388690 +1.483333, 51.148929, 94.691882, 96.744333 +1.500000, 52.962364, 95.205328, 97.273619 +1.516667, 54.785926, 95.736999, 97.821745 +1.533333, 56.619671, 96.271615, 98.372965 +1.550000, 58.463655, 96.809162, 98.927262 +1.566667, 60.317926, 97.349233, 99.484220 +1.583333, 62.182188, 97.873740, 100.025182 +1.600000, 64.056301, 98.390966, 100.558686 +1.616667, 65.938765, 98.829355, 101.010914 +1.633333, 67.828229, 99.196867, 101.390057 +1.650000, 69.724717, 99.565579, 101.770465 +1.666667, 71.628252, 99.935635, 102.152286 +1.683333, 73.538863, 100.307041, 102.535527 +1.700000, 75.456573, 100.679800, 102.920192 +1.716667, 77.381410, 101.053918, 103.306286 +1.733333, 79.313398, 101.429400, 103.693815 +1.750000, 81.253561, 101.858535, 104.136753 +1.766667, 83.205430, 102.473136, 104.771186 +1.783333, 85.169385, 103.107648, 105.426250 +1.800000, 87.145501, 103.746044, 106.085405 +1.816667, 89.133849, 104.388314, 106.748640 +1.833333, 91.138212, 105.229051, 107.616944 +1.850000, 93.176119, 106.990112, 109.436201 +1.866667, 95.249856, 108.871176, 111.380102 +1.883333, 96.944426, 88.964946, 90.844229 +1.900000, 98.070361, 59.111583, 60.191539 +1.916667, 98.811044, 38.885853, 39.521802 +1.933333, 99.298343, 25.583168, 25.969530 +1.950000, 99.618998, 16.834415, 17.074846 +1.966667, 99.800575, 9.532768, 9.662411 +1.983333, 99.800729, 0.008132, 0.008235 +2.000000, 99.800729, 0.000000, 0.000000 +2.016667, 99.800729, 0.000000, 0.000000 +2.033333, 99.800729, 0.000000, 0.000000 +2.050000, 99.800729, 0.000000, 0.000000 +2.066667, 99.800729, 0.000000, 0.000000 +2.083333, 99.800729, 0.000000, 0.000000 +2.100000, 99.800729, 0.000000, 0.000000 +2.116667, 99.800729, 0.000000, 0.000000 +2.133333, 99.800729, 0.000000, 0.000000 +2.150000, 99.800729, 0.000000, 0.000000 +2.166667, 99.800729, 0.000000, 0.000000 +2.183333, 99.800729, 0.000000, 0.000000 +2.200000, 99.800729, 0.000000, 0.000000 +2.216667, 99.800729, 0.000000, 0.000000 +2.233333, 99.800729, 0.000000, 0.000000 +2.250000, 99.800729, 0.000000, 0.000000 +2.266667, 99.800729, 0.000000, 0.000000 +2.283333, 99.800729, 0.000000, 0.000000 +2.300000, 99.800729, 0.000000, 0.000000 +2.316667, 99.800729, 0.000000, 0.000000 +2.333333, 99.800729, 0.000000, 0.000000 +2.350000, 99.800729, 0.000000, 0.000000 +2.366667, 99.800729, 0.000000, 0.000000 +2.383333, 99.800729, 0.000000, 0.000000 +2.400000, 99.800729, 0.000000, 0.000000 +2.416667, 99.800729, 0.000000, 0.000000 +2.433333, 99.800729, 0.000000, 0.000000 +2.450000, 99.800729, 0.000000, 0.000000 +2.466667, 99.800729, 0.000000, 0.000000 +2.483333, 99.800729, 0.000000, 0.000000 +2.500000, 99.800729, 0.000000, 0.000000 +2.516667, 99.800729, 0.000000, 0.000000 +2.533333, 99.800729, 0.000000, 0.000000 +2.550000, 99.800729, 0.000000, 0.000000 +2.566667, 99.800729, 0.000000, 0.000000 +2.583333, 99.800729, 0.000000, 0.000000 +2.600000, 99.800729, 0.000000, 0.000000 +2.616667, 99.800729, 0.000000, 0.000000 +2.633333, 99.800729, 0.000000, 0.000000 +2.650000, 99.800729, 0.000000, 0.000000 +2.666667, 99.800729, 0.000000, 0.000000 +2.683333, 99.800729, 0.000000, 0.000000 +2.700000, 99.800729, 0.000000, 0.000000 +2.716667, 99.800729, 0.000000, 0.000000 +2.733333, 99.800729, 0.000000, 0.000000 +2.750000, 99.800729, 0.000000, 0.000000 +2.766667, 99.800729, 0.000000, 0.000000 +2.783333, 99.800729, 0.000000, 0.000000 +2.800000, 99.800729, 0.000000, 0.000000 +2.816667, 99.800729, 0.000000, 0.000000 +2.833333, 99.800729, 0.000000, 0.000000 +2.850000, 99.800729, 0.000000, 0.000000 +2.866667, 99.800729, 0.000000, 0.000000 +2.883333, 99.800729, 0.000000, 0.000000 +2.900000, 99.800729, 0.000000, 0.000000 +2.916667, 99.800729, 0.000000, 0.000000 +2.933333, 99.800729, 0.000000, 0.000000 +2.950000, 99.800729, 0.000000, 0.000000 +2.966667, 99.800729, 0.000000, 0.000000 +2.983333, 99.800729, 0.000000, 0.000000 +3.000000, 99.800729, 0.000000, 0.000000 +3.016667, 99.800729, 0.000000, 0.000000 +3.033333, 99.800729, 0.000000, 0.000000 +3.050000, 99.800729, 0.000000, 0.000000 +3.066667, 99.800729, 0.000000, 0.000000 +3.083333, 99.800729, 0.000000, 0.000000 +3.100000, 99.800729, 0.000000, 0.000000 +3.116667, 99.800729, 0.000000, 0.000000 +3.133333, 99.800729, 0.000000, 0.000000 +3.150000, 99.800729, 0.000000, 0.000000 +3.166667, 99.800729, 0.000000, 0.000000 +3.183333, 99.800729, 0.000000, 0.000000 +3.200000, 99.800729, 0.000000, 0.000000 +3.216667, 99.800729, 0.000000, 0.000000 +3.233333, 99.800729, 0.000000, 0.000000 +3.250000, 99.800729, 0.000000, 0.000000 +3.266667, 99.800729, 0.000000, 0.000000 +3.283333, 99.800729, 0.000000, 0.000000 +3.300000, 99.800729, 0.000000, 0.000000 +3.316667, 99.800729, 0.000000, 0.000000 +3.333333, 99.800729, 0.000000, 0.000000 +3.350000, 99.800729, 0.000000, 0.000000 +3.366667, 99.800729, 0.000000, 0.000000 +3.383333, 99.800729, 0.000000, 0.000000 +3.400000, 99.800729, 0.000000, 0.000000 +3.416667, 99.800729, 0.000000, 0.000000 +3.433333, 99.800729, 0.000000, 0.000000 +3.450000, 99.800729, 0.000000, 0.000000 +3.466667, 99.800729, 0.000000, 0.000000 +3.483333, 99.800729, 0.000000, 0.000000 +3.500000, 99.800729, 0.000000, 0.000000 +3.516667, 99.800729, 0.000000, 0.000000 +3.533333, 99.800729, 0.000000, 0.000000 +3.550000, 99.800729, 0.000000, 0.000000 +3.566667, 99.800729, 0.000000, 0.000000 +3.583333, 99.800729, 0.000000, 0.000000 +3.600000, 99.800729, 0.000000, 0.000000 +3.616667, 99.800729, 0.000000, 0.000000 +3.633333, 99.800729, 0.000000, 0.000000 +3.650000, 99.800729, 0.000000, 0.000000 +3.666667, 99.800729, 0.000000, 0.000000 +3.683333, 99.800729, 0.000000, 0.000000 +3.700000, 99.800729, 0.000000, 0.000000 +3.716667, 99.800729, 0.000000, 0.000000 +3.733333, 99.800729, 0.000000, 0.000000 +3.750000, 99.800729, 0.000000, 0.000000 +3.766667, 99.800729, 0.000000, 0.000000 +3.783333, 99.800729, 0.000000, 0.000000 +3.800000, 99.800729, 0.000000, 0.000000 +3.816667, 99.800729, 0.000000, 0.000000 +3.833333, 99.800729, 0.000000, 0.000000 +3.850000, 99.800729, 0.000000, 0.000000 +3.866667, 99.800729, 0.000000, 0.000000 +3.883333, 99.800729, 0.000000, 0.000000 +3.900000, 99.800729, 0.000000, 0.000000 +3.916667, 99.800729, 0.000000, 0.000000 +3.933333, 99.800729, 0.000000, 0.000000 +3.950000, 99.800729, 0.000000, 0.000000 +3.966667, 99.800729, 0.000000, 0.000000 +3.983333, 99.800729, 0.000000, 0.000000 +4.000000, 99.800729, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/dcfc_50_bev250_ld1_75kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/dcfc_50_bev250_ld1_75kW.csv new file mode 100644 index 0000000..4b4f93a --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/dcfc_50_bev250_ld1_75kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.672992, 30.284619, 30.632632 +1.016667, 1.636869, 43.374507, 43.915341 +1.033333, 2.633006, 44.826138, 45.389943 +1.050000, 3.662506, 46.327517, 46.915413 +1.066667, 4.720334, 47.602226, 48.210843 +1.083333, 5.787954, 48.042915, 48.658753 +1.100000, 6.864021, 48.423022, 49.045110 +1.116667, 7.948598, 48.805968, 49.434377 +1.133333, 9.041752, 49.191921, 49.826723 +1.150000, 10.143495, 49.578444, 50.219670 +1.166667, 11.249907, 49.788549, 50.433276 +1.183333, 12.358537, 49.888338, 50.534730 +1.200000, 13.469384, 49.988112, 50.636171 +1.216667, 14.582452, 50.088084, 50.737815 +1.233333, 15.697747, 50.188255, 50.839663 +1.250000, 16.815272, 50.288625, 50.941713 +1.266667, 17.935032, 50.389194, 51.043968 +1.283333, 19.057031, 50.489963, 51.146428 +1.300000, 20.181274, 50.590931, 51.249092 +1.316667, 21.307765, 50.692100, 51.351962 +1.333333, 22.436509, 50.793470, 51.455037 +1.350000, 23.567510, 50.895041, 51.558319 +1.366667, 24.700772, 50.996813, 51.661807 +1.383333, 25.836301, 51.098788, 51.765502 +1.400000, 26.974100, 51.200965, 51.869404 +1.416667, 28.114174, 51.303344, 51.973514 +1.433333, 29.256528, 51.405927, 52.077833 +1.450000, 30.401166, 51.508713, 52.182359 +1.466667, 31.548093, 51.611703, 52.287095 +1.483333, 32.697313, 51.714898, 52.392041 +1.500000, 33.848831, 51.818297, 52.497196 +1.516667, 35.002651, 51.921902, 52.602561 +1.533333, 36.158778, 52.025712, 52.708137 +1.550000, 37.317216, 52.129728, 52.813924 +1.566667, 38.477971, 52.233950, 52.919923 +1.583333, 39.641046, 52.338379, 53.026133 +1.600000, 40.806446, 52.443015, 53.132556 +1.616667, 41.974176, 52.547859, 53.239192 +1.633333, 43.144241, 52.652911, 53.346040 +1.650000, 44.316645, 52.758171, 53.453103 +1.666667, 45.491392, 52.863639, 53.560379 +1.683333, 46.668488, 52.969317, 53.667870 +1.700000, 47.847937, 53.075205, 53.775576 +1.716667, 49.029744, 53.181303, 53.883497 +1.733333, 50.213913, 53.287611, 53.991634 +1.750000, 51.400449, 53.394130, 54.099987 +1.766667, 52.589357, 53.500860, 54.208556 +1.783333, 53.780642, 53.607801, 54.317343 +1.800000, 54.974307, 53.714955, 54.426347 +1.816667, 56.170359, 53.822321, 54.535569 +1.833333, 57.368801, 53.929900, 54.645009 +1.850000, 58.569639, 54.037693, 54.754668 +1.866667, 59.772877, 54.145699, 54.864546 +1.883333, 60.978519, 54.253919, 54.974644 +1.900000, 62.186572, 54.362354, 55.084961 +1.916667, 63.397038, 54.471004, 55.195500 +1.933333, 64.609924, 54.579869, 55.306259 +1.950000, 65.825234, 54.688950, 55.417239 +1.966667, 67.042973, 54.798247, 55.528442 +1.983333, 68.263146, 54.907761, 55.639866 +2.000000, 69.485757, 55.017492, 55.751514 +2.016667, 70.710811, 55.127440, 55.863384 +2.033333, 71.938313, 55.237607, 55.975478 +2.050000, 73.168269, 55.347991, 56.087796 +2.066667, 74.400682, 55.458595, 56.200338 +2.083333, 75.635558, 55.569417, 56.313106 +2.100000, 76.872901, 55.680460, 56.426098 +2.116667, 78.112717, 55.791722, 56.539317 +2.133333, 79.355011, 55.903205, 56.652762 +2.150000, 80.599786, 56.014909, 56.766433 +2.166667, 81.847049, 56.126834, 56.880331 +2.183333, 83.096805, 56.238980, 56.994457 +2.200000, 84.349057, 56.351349, 57.108812 +2.216667, 85.603811, 56.463941, 57.223394 +2.233333, 86.861072, 56.576756, 57.338206 +2.250000, 88.120845, 56.689794, 57.453247 +2.266667, 89.383136, 56.803056, 57.568517 +2.283333, 90.647948, 56.916543, 57.684018 +2.300000, 91.915287, 57.030254, 57.799750 +2.316667, 93.185157, 57.144190, 57.915713 +2.333333, 94.356406, 52.706183, 53.400224 +2.350000, 95.344481, 44.463384, 45.021418 +2.366667, 96.176542, 37.442753, 37.893020 +2.383333, 96.877154, 31.527528, 31.892745 +2.400000, 97.467037, 26.544719, 26.842359 +2.416667, 97.963658, 22.347957, 22.591561 +2.433333, 98.381740, 18.813673, 19.013810 +2.450000, 98.733686, 15.837595, 16.002574 +2.466667, 99.029948, 13.331776, 13.468173 +2.483333, 99.279327, 11.222059, 11.335116 +2.500000, 99.489237, 9.445939, 9.539860 +2.516667, 99.665920, 7.950743, 8.028917 +2.533333, 99.800139, 6.039874, 6.098405 +2.550000, 99.800253, 0.005113, 0.005160 +2.566667, 99.800253, 0.000000, 0.000000 +2.583333, 99.800253, 0.000000, 0.000000 +2.600000, 99.800253, 0.000000, 0.000000 +2.616667, 99.800253, 0.000000, 0.000000 +2.633333, 99.800253, 0.000000, 0.000000 +2.650000, 99.800253, 0.000000, 0.000000 +2.666667, 99.800253, 0.000000, 0.000000 +2.683333, 99.800253, 0.000000, 0.000000 +2.700000, 99.800253, 0.000000, 0.000000 +2.716667, 99.800253, 0.000000, 0.000000 +2.733333, 99.800253, 0.000000, 0.000000 +2.750000, 99.800253, 0.000000, 0.000000 +2.766667, 99.800253, 0.000000, 0.000000 +2.783333, 99.800253, 0.000000, 0.000000 +2.800000, 99.800253, 0.000000, 0.000000 +2.816667, 99.800253, 0.000000, 0.000000 +2.833333, 99.800253, 0.000000, 0.000000 +2.850000, 99.800253, 0.000000, 0.000000 +2.866667, 99.800253, 0.000000, 0.000000 +2.883333, 99.800253, 0.000000, 0.000000 +2.900000, 99.800253, 0.000000, 0.000000 +2.916667, 99.800253, 0.000000, 0.000000 +2.933333, 99.800253, 0.000000, 0.000000 +2.950000, 99.800253, 0.000000, 0.000000 +2.966667, 99.800253, 0.000000, 0.000000 +2.983333, 99.800253, 0.000000, 0.000000 +3.000000, 99.800253, 0.000000, 0.000000 +3.016667, 99.800253, 0.000000, 0.000000 +3.033333, 99.800253, 0.000000, 0.000000 +3.050000, 99.800253, 0.000000, 0.000000 +3.066667, 99.800253, 0.000000, 0.000000 +3.083333, 99.800253, 0.000000, 0.000000 +3.100000, 99.800253, 0.000000, 0.000000 +3.116667, 99.800253, 0.000000, 0.000000 +3.133333, 99.800253, 0.000000, 0.000000 +3.150000, 99.800253, 0.000000, 0.000000 +3.166667, 99.800253, 0.000000, 0.000000 +3.183333, 99.800253, 0.000000, 0.000000 +3.200000, 99.800253, 0.000000, 0.000000 +3.216667, 99.800253, 0.000000, 0.000000 +3.233333, 99.800253, 0.000000, 0.000000 +3.250000, 99.800253, 0.000000, 0.000000 +3.266667, 99.800253, 0.000000, 0.000000 +3.283333, 99.800253, 0.000000, 0.000000 +3.300000, 99.800253, 0.000000, 0.000000 +3.316667, 99.800253, 0.000000, 0.000000 +3.333333, 99.800253, 0.000000, 0.000000 +3.350000, 99.800253, 0.000000, 0.000000 +3.366667, 99.800253, 0.000000, 0.000000 +3.383333, 99.800253, 0.000000, 0.000000 +3.400000, 99.800253, 0.000000, 0.000000 +3.416667, 99.800253, 0.000000, 0.000000 +3.433333, 99.800253, 0.000000, 0.000000 +3.450000, 99.800253, 0.000000, 0.000000 +3.466667, 99.800253, 0.000000, 0.000000 +3.483333, 99.800253, 0.000000, 0.000000 +3.500000, 99.800253, 0.000000, 0.000000 +3.516667, 99.800253, 0.000000, 0.000000 +3.533333, 99.800253, 0.000000, 0.000000 +3.550000, 99.800253, 0.000000, 0.000000 +3.566667, 99.800253, 0.000000, 0.000000 +3.583333, 99.800253, 0.000000, 0.000000 +3.600000, 99.800253, 0.000000, 0.000000 +3.616667, 99.800253, 0.000000, 0.000000 +3.633333, 99.800253, 0.000000, 0.000000 +3.650000, 99.800253, 0.000000, 0.000000 +3.666667, 99.800253, 0.000000, 0.000000 +3.683333, 99.800253, 0.000000, 0.000000 +3.700000, 99.800253, 0.000000, 0.000000 +3.716667, 99.800253, 0.000000, 0.000000 +3.733333, 99.800253, 0.000000, 0.000000 +3.750000, 99.800253, 0.000000, 0.000000 +3.766667, 99.800253, 0.000000, 0.000000 +3.783333, 99.800253, 0.000000, 0.000000 +3.800000, 99.800253, 0.000000, 0.000000 +3.816667, 99.800253, 0.000000, 0.000000 +3.833333, 99.800253, 0.000000, 0.000000 +3.850000, 99.800253, 0.000000, 0.000000 +3.866667, 99.800253, 0.000000, 0.000000 +3.883333, 99.800253, 0.000000, 0.000000 +3.900000, 99.800253, 0.000000, 0.000000 +3.916667, 99.800253, 0.000000, 0.000000 +3.933333, 99.800253, 0.000000, 0.000000 +3.950000, 99.800253, 0.000000, 0.000000 +3.966667, 99.800253, 0.000000, 0.000000 +3.983333, 99.800253, 0.000000, 0.000000 +4.000000, 99.800253, 0.000000, 0.000000 diff --git a/unittests/test_charging_models/original_dxfc_models/dcfc_50_bev250_ld2_300kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/dcfc_50_bev250_ld2_300kW.csv similarity index 100% rename from unittests/test_charging_models/original_dxfc_models/dcfc_50_bev250_ld2_300kW.csv rename to unittests/test_charging_models_DirectXFC/original_dxfc_models/dcfc_50_bev250_ld2_300kW.csv diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/dcfc_50_bev275_ld1_150kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/dcfc_50_bev275_ld1_150kW.csv new file mode 100644 index 0000000..06a9beb --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/dcfc_50_bev275_ld1_150kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 1.234207, 61.463522, 62.285952 +1.016667, 3.019984, 88.931692, 90.288040 +1.033333, 4.902991, 93.773729, 95.234985 +1.050000, 6.824384, 95.685383, 97.188952 +1.066667, 8.774029, 97.092313, 98.627347 +1.083333, 10.750745, 98.440464, 100.005907 +1.100000, 12.738800, 99.005154, 100.583408 +1.116667, 14.734000, 99.360966, 100.947316 +1.133333, 16.736362, 99.717625, 101.312107 +1.150000, 18.745912, 100.075546, 101.678207 +1.166667, 20.762673, 100.434735, 102.045622 +1.183333, 22.786673, 100.795195, 102.414355 +1.200000, 24.817937, 101.156932, 102.784412 +1.216667, 26.856490, 101.519948, 103.155797 +1.233333, 28.902358, 101.884249, 103.528514 +1.250000, 30.955568, 102.249839, 103.902569 +1.266667, 33.016145, 102.616723, 104.277966 +1.283333, 35.084115, 102.984905, 104.654710 +1.300000, 37.159504, 103.354389, 105.032806 +1.316667, 39.242339, 103.725181, 105.412258 +1.333333, 41.332646, 104.097283, 105.793071 +1.350000, 43.430451, 104.470702, 106.175251 +1.366667, 45.535781, 104.845441, 106.558801 +1.383333, 47.648663, 105.221504, 106.943728 +1.400000, 49.769123, 105.598898, 107.330035 +1.416667, 51.897188, 105.977625, 107.717727 +1.433333, 54.032884, 106.357691, 108.106810 +1.450000, 56.176240, 106.739101, 108.497288 +1.466667, 58.327281, 107.121858, 108.889166 +1.483333, 60.486035, 107.505967, 109.282450 +1.500000, 62.652530, 107.891434, 109.677143 +1.516667, 64.826792, 108.278262, 110.073252 +1.533333, 67.008850, 108.666457, 110.470781 +1.550000, 69.198730, 109.056023, 110.869736 +1.566667, 71.396460, 109.446964, 111.270120 +1.583333, 73.602068, 109.839286, 111.671940 +1.600000, 75.815582, 110.232994, 112.075200 +1.616667, 78.037030, 110.628091, 112.479905 +1.633333, 80.266439, 111.024583, 112.886061 +1.650000, 82.503838, 111.422474, 113.293672 +1.666667, 84.749255, 111.821769, 113.702745 +1.683333, 87.002718, 112.222474, 114.113283 +1.700000, 89.082637, 103.579967, 105.263650 +1.716667, 90.766223, 83.842548, 85.092130 +1.733333, 92.123168, 67.575888, 68.508157 +1.750000, 93.218403, 54.542708, 55.246942 +1.766667, 94.152463, 46.516173, 47.091510 +1.783333, 94.971310, 40.778607, 41.267179 +1.800000, 95.689265, 35.754149, 36.170408 +1.816667, 96.318712, 31.346455, 31.702093 +1.833333, 96.870526, 27.480348, 27.784975 +1.850000, 97.354255, 24.089695, 24.351247 +1.866667, 97.778278, 21.116345, 21.341397 +1.883333, 98.149948, 18.509181, 18.703208 +1.900000, 98.475717, 16.223294, 16.390872 +1.916667, 98.761244, 14.219237, 14.364204 +1.933333, 99.011493, 12.462374, 12.587963 +1.950000, 99.230816, 10.922300, 11.031243 +1.966667, 99.423031, 9.572329, 9.666941 +1.983333, 99.591486, 8.389045, 8.471298 +2.000000, 99.739115, 7.351905, 7.423479 +2.016667, 99.800271, 3.045557, 3.074331 +2.033333, 99.800322, 0.002548, 0.002572 +2.050000, 99.800322, 0.000000, 0.000000 +2.066667, 99.800322, 0.000000, 0.000000 +2.083333, 99.800322, 0.000000, 0.000000 +2.100000, 99.800322, 0.000000, 0.000000 +2.116667, 99.800322, 0.000000, 0.000000 +2.133333, 99.800322, 0.000000, 0.000000 +2.150000, 99.800322, 0.000000, 0.000000 +2.166667, 99.800322, 0.000000, 0.000000 +2.183333, 99.800322, 0.000000, 0.000000 +2.200000, 99.800322, 0.000000, 0.000000 +2.216667, 99.800322, 0.000000, 0.000000 +2.233333, 99.800322, 0.000000, 0.000000 +2.250000, 99.800322, 0.000000, 0.000000 +2.266667, 99.800322, 0.000000, 0.000000 +2.283333, 99.800322, 0.000000, 0.000000 +2.300000, 99.800322, 0.000000, 0.000000 +2.316667, 99.800322, 0.000000, 0.000000 +2.333333, 99.800322, 0.000000, 0.000000 +2.350000, 99.800322, 0.000000, 0.000000 +2.366667, 99.800322, 0.000000, 0.000000 +2.383333, 99.800322, 0.000000, 0.000000 +2.400000, 99.800322, 0.000000, 0.000000 +2.416667, 99.800322, 0.000000, 0.000000 +2.433333, 99.800322, 0.000000, 0.000000 +2.450000, 99.800322, 0.000000, 0.000000 +2.466667, 99.800322, 0.000000, 0.000000 +2.483333, 99.800322, 0.000000, 0.000000 +2.500000, 99.800322, 0.000000, 0.000000 +2.516667, 99.800322, 0.000000, 0.000000 +2.533333, 99.800322, 0.000000, 0.000000 +2.550000, 99.800322, 0.000000, 0.000000 +2.566667, 99.800322, 0.000000, 0.000000 +2.583333, 99.800322, 0.000000, 0.000000 +2.600000, 99.800322, 0.000000, 0.000000 +2.616667, 99.800322, 0.000000, 0.000000 +2.633333, 99.800322, 0.000000, 0.000000 +2.650000, 99.800322, 0.000000, 0.000000 +2.666667, 99.800322, 0.000000, 0.000000 +2.683333, 99.800322, 0.000000, 0.000000 +2.700000, 99.800322, 0.000000, 0.000000 +2.716667, 99.800322, 0.000000, 0.000000 +2.733333, 99.800322, 0.000000, 0.000000 +2.750000, 99.800322, 0.000000, 0.000000 +2.766667, 99.800322, 0.000000, 0.000000 +2.783333, 99.800322, 0.000000, 0.000000 +2.800000, 99.800322, 0.000000, 0.000000 +2.816667, 99.800322, 0.000000, 0.000000 +2.833333, 99.800322, 0.000000, 0.000000 +2.850000, 99.800322, 0.000000, 0.000000 +2.866667, 99.800322, 0.000000, 0.000000 +2.883333, 99.800322, 0.000000, 0.000000 +2.900000, 99.800322, 0.000000, 0.000000 +2.916667, 99.800322, 0.000000, 0.000000 +2.933333, 99.800322, 0.000000, 0.000000 +2.950000, 99.800322, 0.000000, 0.000000 +2.966667, 99.800322, 0.000000, 0.000000 +2.983333, 99.800322, 0.000000, 0.000000 +3.000000, 99.800322, 0.000000, 0.000000 +3.016667, 99.800322, 0.000000, 0.000000 +3.033333, 99.800322, 0.000000, 0.000000 +3.050000, 99.800322, 0.000000, 0.000000 +3.066667, 99.800322, 0.000000, 0.000000 +3.083333, 99.800322, 0.000000, 0.000000 +3.100000, 99.800322, 0.000000, 0.000000 +3.116667, 99.800322, 0.000000, 0.000000 +3.133333, 99.800322, 0.000000, 0.000000 +3.150000, 99.800322, 0.000000, 0.000000 +3.166667, 99.800322, 0.000000, 0.000000 +3.183333, 99.800322, 0.000000, 0.000000 +3.200000, 99.800322, 0.000000, 0.000000 +3.216667, 99.800322, 0.000000, 0.000000 +3.233333, 99.800322, 0.000000, 0.000000 +3.250000, 99.800322, 0.000000, 0.000000 +3.266667, 99.800322, 0.000000, 0.000000 +3.283333, 99.800322, 0.000000, 0.000000 +3.300000, 99.800322, 0.000000, 0.000000 +3.316667, 99.800322, 0.000000, 0.000000 +3.333333, 99.800322, 0.000000, 0.000000 +3.350000, 99.800322, 0.000000, 0.000000 +3.366667, 99.800322, 0.000000, 0.000000 +3.383333, 99.800322, 0.000000, 0.000000 +3.400000, 99.800322, 0.000000, 0.000000 +3.416667, 99.800322, 0.000000, 0.000000 +3.433333, 99.800322, 0.000000, 0.000000 +3.450000, 99.800322, 0.000000, 0.000000 +3.466667, 99.800322, 0.000000, 0.000000 +3.483333, 99.800322, 0.000000, 0.000000 +3.500000, 99.800322, 0.000000, 0.000000 +3.516667, 99.800322, 0.000000, 0.000000 +3.533333, 99.800322, 0.000000, 0.000000 +3.550000, 99.800322, 0.000000, 0.000000 +3.566667, 99.800322, 0.000000, 0.000000 +3.583333, 99.800322, 0.000000, 0.000000 +3.600000, 99.800322, 0.000000, 0.000000 +3.616667, 99.800322, 0.000000, 0.000000 +3.633333, 99.800322, 0.000000, 0.000000 +3.650000, 99.800322, 0.000000, 0.000000 +3.666667, 99.800322, 0.000000, 0.000000 +3.683333, 99.800322, 0.000000, 0.000000 +3.700000, 99.800322, 0.000000, 0.000000 +3.716667, 99.800322, 0.000000, 0.000000 +3.733333, 99.800322, 0.000000, 0.000000 +3.750000, 99.800322, 0.000000, 0.000000 +3.766667, 99.800322, 0.000000, 0.000000 +3.783333, 99.800322, 0.000000, 0.000000 +3.800000, 99.800322, 0.000000, 0.000000 +3.816667, 99.800322, 0.000000, 0.000000 +3.833333, 99.800322, 0.000000, 0.000000 +3.850000, 99.800322, 0.000000, 0.000000 +3.866667, 99.800322, 0.000000, 0.000000 +3.883333, 99.800322, 0.000000, 0.000000 +3.900000, 99.800322, 0.000000, 0.000000 +3.916667, 99.800322, 0.000000, 0.000000 +3.933333, 99.800322, 0.000000, 0.000000 +3.950000, 99.800322, 0.000000, 0.000000 +3.966667, 99.800322, 0.000000, 0.000000 +3.983333, 99.800322, 0.000000, 0.000000 +4.000000, 99.800322, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/dcfc_50_bev300_300kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/dcfc_50_bev300_300kW.csv new file mode 100644 index 0000000..338e37f --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/dcfc_50_bev300_300kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 1.048798, 61.354700, 62.137280 +1.016667, 2.554879, 88.105736, 89.365753 +1.033333, 4.138304, 92.630345, 93.979379 +1.050000, 5.766689, 95.260515, 96.662400 +1.066667, 7.414839, 96.416799, 97.842175 +1.083333, 9.082917, 97.582538, 99.031757 +1.100000, 10.769590, 98.670376, 100.141987 +1.116667, 12.463685, 99.104535, 100.585122 +1.133333, 14.162955, 99.407324, 100.894185 +1.150000, 15.867413, 99.710776, 101.203934 +1.166667, 17.577073, 100.015143, 101.514629 +1.183333, 19.291952, 100.320429, 101.826272 +1.200000, 21.012066, 100.626636, 102.138866 +1.216667, 22.737429, 100.933766, 102.452415 +1.233333, 24.468059, 101.241823, 102.766920 +1.250000, 26.203970, 101.550809, 103.082386 +1.266667, 27.945179, 101.860728, 103.398814 +1.283333, 29.691702, 102.171580, 103.716208 +1.300000, 31.443554, 102.483371, 104.034570 +1.316667, 33.200753, 102.796101, 104.353904 +1.333333, 34.963313, 103.109774, 104.674213 +1.350000, 36.731251, 103.424394, 104.995498 +1.366667, 38.504584, 103.739961, 105.317764 +1.383333, 40.283327, 104.056480, 105.641014 +1.400000, 42.067497, 104.373953, 105.965249 +1.416667, 43.857111, 104.692383, 106.290474 +1.433333, 45.652184, 105.011773, 106.616691 +1.450000, 47.452733, 105.332125, 106.943903 +1.466667, 49.258775, 105.653443, 107.272114 +1.483333, 51.070326, 105.975728, 107.601325 +1.500000, 52.887402, 106.298985, 107.931541 +1.516667, 54.710021, 106.623216, 108.262764 +1.533333, 56.538200, 106.948423, 108.594997 +1.550000, 58.371954, 107.274611, 108.928244 +1.566667, 60.211300, 107.601780, 109.262507 +1.583333, 62.056256, 107.929935, 109.597789 +1.600000, 63.906839, 108.259078, 109.934094 +1.616667, 65.763065, 108.589213, 110.271425 +1.633333, 67.624951, 108.920341, 110.609784 +1.650000, 69.492514, 109.252467, 110.949175 +1.666667, 71.365772, 109.585592, 111.289600 +1.683333, 73.244742, 109.919721, 111.631064 +1.700000, 75.129440, 110.254855, 111.973569 +1.716667, 77.019885, 110.590998, 112.317118 +1.733333, 78.916093, 110.928152, 112.661714 +1.750000, 80.818081, 111.266321, 113.007361 +1.766667, 82.725867, 111.605508, 113.354062 +1.783333, 84.639469, 111.945716, 113.701820 +1.800000, 86.558904, 112.286947, 114.050637 +1.816667, 88.484190, 112.629204, 114.400518 +1.833333, 90.364516, 109.999054, 111.712141 +1.850000, 91.979953, 94.503087, 95.889669 +1.866667, 93.341745, 79.664849, 80.765204 +1.883333, 94.489111, 67.120907, 67.999352 +1.900000, 95.455643, 56.542113, 57.247638 +1.916667, 96.269721, 47.623569, 48.193388 +1.933333, 96.955307, 40.106778, 40.569355 +1.950000, 97.532621, 33.772884, 34.150150 +1.966667, 98.018720, 28.436770, 28.745745 +1.983333, 98.427985, 23.941989, 24.195975 +2.000000, 98.772539, 20.156408, 20.365877 +2.016667, 99.062598, 16.968493, 17.141746 +2.033333, 99.306772, 14.284146, 14.427804 +2.050000, 99.512310, 12.024005, 12.143384 +2.066667, 99.685322, 10.121165, 10.220554 +2.083333, 99.800164, 6.718265, 6.782936 +2.100000, 99.800261, 0.005695, 0.005748 +2.116667, 99.800261, 0.000000, 0.000000 +2.133333, 99.800261, 0.000000, 0.000000 +2.150000, 99.800261, 0.000000, 0.000000 +2.166667, 99.800261, 0.000000, 0.000000 +2.183333, 99.800261, 0.000000, 0.000000 +2.200000, 99.800261, 0.000000, 0.000000 +2.216667, 99.800261, 0.000000, 0.000000 +2.233333, 99.800261, 0.000000, 0.000000 +2.250000, 99.800261, 0.000000, 0.000000 +2.266667, 99.800261, 0.000000, 0.000000 +2.283333, 99.800261, 0.000000, 0.000000 +2.300000, 99.800261, 0.000000, 0.000000 +2.316667, 99.800261, 0.000000, 0.000000 +2.333333, 99.800261, 0.000000, 0.000000 +2.350000, 99.800261, 0.000000, 0.000000 +2.366667, 99.800261, 0.000000, 0.000000 +2.383333, 99.800261, 0.000000, 0.000000 +2.400000, 99.800261, 0.000000, 0.000000 +2.416667, 99.800261, 0.000000, 0.000000 +2.433333, 99.800261, 0.000000, 0.000000 +2.450000, 99.800261, 0.000000, 0.000000 +2.466667, 99.800261, 0.000000, 0.000000 +2.483333, 99.800261, 0.000000, 0.000000 +2.500000, 99.800261, 0.000000, 0.000000 +2.516667, 99.800261, 0.000000, 0.000000 +2.533333, 99.800261, 0.000000, 0.000000 +2.550000, 99.800261, 0.000000, 0.000000 +2.566667, 99.800261, 0.000000, 0.000000 +2.583333, 99.800261, 0.000000, 0.000000 +2.600000, 99.800261, 0.000000, 0.000000 +2.616667, 99.800261, 0.000000, 0.000000 +2.633333, 99.800261, 0.000000, 0.000000 +2.650000, 99.800261, 0.000000, 0.000000 +2.666667, 99.800261, 0.000000, 0.000000 +2.683333, 99.800261, 0.000000, 0.000000 +2.700000, 99.800261, 0.000000, 0.000000 +2.716667, 99.800261, 0.000000, 0.000000 +2.733333, 99.800261, 0.000000, 0.000000 +2.750000, 99.800261, 0.000000, 0.000000 +2.766667, 99.800261, 0.000000, 0.000000 +2.783333, 99.800261, 0.000000, 0.000000 +2.800000, 99.800261, 0.000000, 0.000000 +2.816667, 99.800261, 0.000000, 0.000000 +2.833333, 99.800261, 0.000000, 0.000000 +2.850000, 99.800261, 0.000000, 0.000000 +2.866667, 99.800261, 0.000000, 0.000000 +2.883333, 99.800261, 0.000000, 0.000000 +2.900000, 99.800261, 0.000000, 0.000000 +2.916667, 99.800261, 0.000000, 0.000000 +2.933333, 99.800261, 0.000000, 0.000000 +2.950000, 99.800261, 0.000000, 0.000000 +2.966667, 99.800261, 0.000000, 0.000000 +2.983333, 99.800261, 0.000000, 0.000000 +3.000000, 99.800261, 0.000000, 0.000000 +3.016667, 99.800261, 0.000000, 0.000000 +3.033333, 99.800261, 0.000000, 0.000000 +3.050000, 99.800261, 0.000000, 0.000000 +3.066667, 99.800261, 0.000000, 0.000000 +3.083333, 99.800261, 0.000000, 0.000000 +3.100000, 99.800261, 0.000000, 0.000000 +3.116667, 99.800261, 0.000000, 0.000000 +3.133333, 99.800261, 0.000000, 0.000000 +3.150000, 99.800261, 0.000000, 0.000000 +3.166667, 99.800261, 0.000000, 0.000000 +3.183333, 99.800261, 0.000000, 0.000000 +3.200000, 99.800261, 0.000000, 0.000000 +3.216667, 99.800261, 0.000000, 0.000000 +3.233333, 99.800261, 0.000000, 0.000000 +3.250000, 99.800261, 0.000000, 0.000000 +3.266667, 99.800261, 0.000000, 0.000000 +3.283333, 99.800261, 0.000000, 0.000000 +3.300000, 99.800261, 0.000000, 0.000000 +3.316667, 99.800261, 0.000000, 0.000000 +3.333333, 99.800261, 0.000000, 0.000000 +3.350000, 99.800261, 0.000000, 0.000000 +3.366667, 99.800261, 0.000000, 0.000000 +3.383333, 99.800261, 0.000000, 0.000000 +3.400000, 99.800261, 0.000000, 0.000000 +3.416667, 99.800261, 0.000000, 0.000000 +3.433333, 99.800261, 0.000000, 0.000000 +3.450000, 99.800261, 0.000000, 0.000000 +3.466667, 99.800261, 0.000000, 0.000000 +3.483333, 99.800261, 0.000000, 0.000000 +3.500000, 99.800261, 0.000000, 0.000000 +3.516667, 99.800261, 0.000000, 0.000000 +3.533333, 99.800261, 0.000000, 0.000000 +3.550000, 99.800261, 0.000000, 0.000000 +3.566667, 99.800261, 0.000000, 0.000000 +3.583333, 99.800261, 0.000000, 0.000000 +3.600000, 99.800261, 0.000000, 0.000000 +3.616667, 99.800261, 0.000000, 0.000000 +3.633333, 99.800261, 0.000000, 0.000000 +3.650000, 99.800261, 0.000000, 0.000000 +3.666667, 99.800261, 0.000000, 0.000000 +3.683333, 99.800261, 0.000000, 0.000000 +3.700000, 99.800261, 0.000000, 0.000000 +3.716667, 99.800261, 0.000000, 0.000000 +3.733333, 99.800261, 0.000000, 0.000000 +3.750000, 99.800261, 0.000000, 0.000000 +3.766667, 99.800261, 0.000000, 0.000000 +3.783333, 99.800261, 0.000000, 0.000000 +3.800000, 99.800261, 0.000000, 0.000000 +3.816667, 99.800261, 0.000000, 0.000000 +3.833333, 99.800261, 0.000000, 0.000000 +3.850000, 99.800261, 0.000000, 0.000000 +3.866667, 99.800261, 0.000000, 0.000000 +3.883333, 99.800261, 0.000000, 0.000000 +3.900000, 99.800261, 0.000000, 0.000000 +3.916667, 99.800261, 0.000000, 0.000000 +3.933333, 99.800261, 0.000000, 0.000000 +3.950000, 99.800261, 0.000000, 0.000000 +3.966667, 99.800261, 0.000000, 0.000000 +3.983333, 99.800261, 0.000000, 0.000000 +4.000000, 99.800261, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/dcfc_50_bev300_400kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/dcfc_50_bev300_400kW.csv new file mode 100644 index 0000000..f524361 --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/dcfc_50_bev300_400kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 1.003202, 58.687325, 59.723624 +1.016667, 2.456892, 85.040859, 86.734101 +1.033333, 3.938263, 86.660198, 88.397736 +1.050000, 5.424006, 86.915969, 88.660546 +1.066667, 6.914080, 87.169344, 88.920904 +1.083333, 8.408498, 87.423447, 89.182022 +1.100000, 9.907272, 87.678279, 89.443900 +1.116667, 11.410415, 87.933843, 89.706542 +1.133333, 12.917939, 88.190141, 89.969950 +1.150000, 14.429856, 88.447175, 90.234125 +1.166667, 15.946180, 88.704946, 90.499071 +1.183333, 17.466923, 88.963457, 90.764788 +1.200000, 18.992097, 89.222711, 91.031280 +1.216667, 20.521716, 89.482708, 91.298548 +1.233333, 22.055792, 89.743452, 91.566595 +1.250000, 23.594338, 90.004943, 91.835423 +1.266667, 25.137367, 90.267185, 92.105035 +1.283333, 26.684892, 90.530179, 92.375431 +1.300000, 28.236925, 90.793928, 92.646616 +1.316667, 29.793479, 91.058433, 92.918591 +1.333333, 31.354568, 91.323697, 93.191358 +1.350000, 32.920204, 91.589721, 93.464920 +1.366667, 34.490401, 91.856508, 93.739278 +1.383333, 36.065171, 92.124061, 94.014436 +1.400000, 37.644528, 92.392380, 94.290395 +1.416667, 39.228485, 92.661468, 94.567158 +1.433333, 40.817054, 92.931328, 94.844727 +1.450000, 42.410250, 93.201961, 95.123104 +1.466667, 44.008086, 93.473370, 95.402292 +1.483333, 45.610574, 93.745557, 95.682293 +1.500000, 47.217728, 94.018523, 95.963109 +1.516667, 48.829562, 94.292272, 96.244743 +1.533333, 50.446216, 94.574263, 96.534870 +1.550000, 52.070058, 94.994791, 96.967558 +1.566667, 53.702011, 95.469249, 97.455773 +1.583333, 55.342116, 95.946141, 97.946530 +1.600000, 56.990413, 96.425375, 98.439740 +1.616667, 58.646943, 96.906964, 98.935412 +1.633333, 60.311745, 97.390918, 99.433560 +1.650000, 61.984860, 97.877248, 99.934196 +1.666667, 63.666330, 98.365967, 100.437331 +1.683333, 65.355293, 98.804354, 100.888686 +1.700000, 67.049931, 99.136356, 101.230532 +1.716667, 68.750205, 99.466027, 101.569996 +1.733333, 70.456133, 99.796769, 101.910583 +1.750000, 72.167733, 100.128592, 102.252302 +1.766667, 73.885024, 100.461500, 102.595157 +1.783333, 75.608024, 100.795495, 102.939152 +1.800000, 77.336751, 101.130581, 103.284291 +1.816667, 79.071226, 101.466763, 103.630577 +1.833333, 80.811811, 101.824197, 103.998776 +1.850000, 82.560911, 102.322386, 104.512007 +1.866667, 84.319029, 102.849917, 105.055514 +1.883333, 86.086212, 103.380175, 105.601879 +1.900000, 87.862504, 103.913117, 106.151060 +1.916667, 89.647953, 104.448758, 106.703072 +1.933333, 91.449729, 105.403858, 107.687490 +1.950000, 93.282674, 107.227312, 109.567360 +1.966667, 95.147795, 109.109547, 111.508446 +1.983333, 96.943384, 105.041958, 107.314462 +2.000000, 98.163873, 71.398644, 72.736809 +2.016667, 98.929857, 44.810062, 45.548513 +2.033333, 99.408903, 28.024199, 28.446286 +2.050000, 99.708747, 17.540852, 17.789579 +2.066667, 99.801201, 5.408532, 5.479727 +2.083333, 99.801278, 0.004516, 0.004573 +2.100000, 99.801278, 0.000000, 0.000000 +2.116667, 99.801278, 0.000000, 0.000000 +2.133333, 99.801278, 0.000000, 0.000000 +2.150000, 99.801278, 0.000000, 0.000000 +2.166667, 99.801278, 0.000000, 0.000000 +2.183333, 99.801278, 0.000000, 0.000000 +2.200000, 99.801278, 0.000000, 0.000000 +2.216667, 99.801278, 0.000000, 0.000000 +2.233333, 99.801278, 0.000000, 0.000000 +2.250000, 99.801278, 0.000000, 0.000000 +2.266667, 99.801278, 0.000000, 0.000000 +2.283333, 99.801278, 0.000000, 0.000000 +2.300000, 99.801278, 0.000000, 0.000000 +2.316667, 99.801278, 0.000000, 0.000000 +2.333333, 99.801278, 0.000000, 0.000000 +2.350000, 99.801278, 0.000000, 0.000000 +2.366667, 99.801278, 0.000000, 0.000000 +2.383333, 99.801278, 0.000000, 0.000000 +2.400000, 99.801278, 0.000000, 0.000000 +2.416667, 99.801278, 0.000000, 0.000000 +2.433333, 99.801278, 0.000000, 0.000000 +2.450000, 99.801278, 0.000000, 0.000000 +2.466667, 99.801278, 0.000000, 0.000000 +2.483333, 99.801278, 0.000000, 0.000000 +2.500000, 99.801278, 0.000000, 0.000000 +2.516667, 99.801278, 0.000000, 0.000000 +2.533333, 99.801278, 0.000000, 0.000000 +2.550000, 99.801278, 0.000000, 0.000000 +2.566667, 99.801278, 0.000000, 0.000000 +2.583333, 99.801278, 0.000000, 0.000000 +2.600000, 99.801278, 0.000000, 0.000000 +2.616667, 99.801278, 0.000000, 0.000000 +2.633333, 99.801278, 0.000000, 0.000000 +2.650000, 99.801278, 0.000000, 0.000000 +2.666667, 99.801278, 0.000000, 0.000000 +2.683333, 99.801278, 0.000000, 0.000000 +2.700000, 99.801278, 0.000000, 0.000000 +2.716667, 99.801278, 0.000000, 0.000000 +2.733333, 99.801278, 0.000000, 0.000000 +2.750000, 99.801278, 0.000000, 0.000000 +2.766667, 99.801278, 0.000000, 0.000000 +2.783333, 99.801278, 0.000000, 0.000000 +2.800000, 99.801278, 0.000000, 0.000000 +2.816667, 99.801278, 0.000000, 0.000000 +2.833333, 99.801278, 0.000000, 0.000000 +2.850000, 99.801278, 0.000000, 0.000000 +2.866667, 99.801278, 0.000000, 0.000000 +2.883333, 99.801278, 0.000000, 0.000000 +2.900000, 99.801278, 0.000000, 0.000000 +2.916667, 99.801278, 0.000000, 0.000000 +2.933333, 99.801278, 0.000000, 0.000000 +2.950000, 99.801278, 0.000000, 0.000000 +2.966667, 99.801278, 0.000000, 0.000000 +2.983333, 99.801278, 0.000000, 0.000000 +3.000000, 99.801278, 0.000000, 0.000000 +3.016667, 99.801278, 0.000000, 0.000000 +3.033333, 99.801278, 0.000000, 0.000000 +3.050000, 99.801278, 0.000000, 0.000000 +3.066667, 99.801278, 0.000000, 0.000000 +3.083333, 99.801278, 0.000000, 0.000000 +3.100000, 99.801278, 0.000000, 0.000000 +3.116667, 99.801278, 0.000000, 0.000000 +3.133333, 99.801278, 0.000000, 0.000000 +3.150000, 99.801278, 0.000000, 0.000000 +3.166667, 99.801278, 0.000000, 0.000000 +3.183333, 99.801278, 0.000000, 0.000000 +3.200000, 99.801278, 0.000000, 0.000000 +3.216667, 99.801278, 0.000000, 0.000000 +3.233333, 99.801278, 0.000000, 0.000000 +3.250000, 99.801278, 0.000000, 0.000000 +3.266667, 99.801278, 0.000000, 0.000000 +3.283333, 99.801278, 0.000000, 0.000000 +3.300000, 99.801278, 0.000000, 0.000000 +3.316667, 99.801278, 0.000000, 0.000000 +3.333333, 99.801278, 0.000000, 0.000000 +3.350000, 99.801278, 0.000000, 0.000000 +3.366667, 99.801278, 0.000000, 0.000000 +3.383333, 99.801278, 0.000000, 0.000000 +3.400000, 99.801278, 0.000000, 0.000000 +3.416667, 99.801278, 0.000000, 0.000000 +3.433333, 99.801278, 0.000000, 0.000000 +3.450000, 99.801278, 0.000000, 0.000000 +3.466667, 99.801278, 0.000000, 0.000000 +3.483333, 99.801278, 0.000000, 0.000000 +3.500000, 99.801278, 0.000000, 0.000000 +3.516667, 99.801278, 0.000000, 0.000000 +3.533333, 99.801278, 0.000000, 0.000000 +3.550000, 99.801278, 0.000000, 0.000000 +3.566667, 99.801278, 0.000000, 0.000000 +3.583333, 99.801278, 0.000000, 0.000000 +3.600000, 99.801278, 0.000000, 0.000000 +3.616667, 99.801278, 0.000000, 0.000000 +3.633333, 99.801278, 0.000000, 0.000000 +3.650000, 99.801278, 0.000000, 0.000000 +3.666667, 99.801278, 0.000000, 0.000000 +3.683333, 99.801278, 0.000000, 0.000000 +3.700000, 99.801278, 0.000000, 0.000000 +3.716667, 99.801278, 0.000000, 0.000000 +3.733333, 99.801278, 0.000000, 0.000000 +3.750000, 99.801278, 0.000000, 0.000000 +3.766667, 99.801278, 0.000000, 0.000000 +3.783333, 99.801278, 0.000000, 0.000000 +3.800000, 99.801278, 0.000000, 0.000000 +3.816667, 99.801278, 0.000000, 0.000000 +3.833333, 99.801278, 0.000000, 0.000000 +3.850000, 99.801278, 0.000000, 0.000000 +3.866667, 99.801278, 0.000000, 0.000000 +3.883333, 99.801278, 0.000000, 0.000000 +3.900000, 99.801278, 0.000000, 0.000000 +3.916667, 99.801278, 0.000000, 0.000000 +3.933333, 99.801278, 0.000000, 0.000000 +3.950000, 99.801278, 0.000000, 0.000000 +3.966667, 99.801278, 0.000000, 0.000000 +3.983333, 99.801278, 0.000000, 0.000000 +4.000000, 99.801278, 0.000000, 0.000000 diff --git a/unittests/test_charging_models/original_dxfc_models/dcfc_50_bev300_575kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/dcfc_50_bev300_575kW.csv similarity index 100% rename from unittests/test_charging_models/original_dxfc_models/dcfc_50_bev300_575kW.csv rename to unittests/test_charging_models_DirectXFC/original_dxfc_models/dcfc_50_bev300_575kW.csv diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_150_bev150_150kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_150_bev150_150kW.csv new file mode 100644 index 0000000..b6a05e8 --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_150_bev150_150kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 3.108154, 83.920152, 85.581255 +1.016667, 7.759652, 125.590452, 128.755345 +1.033333, 12.602894, 130.767536, 134.151784 +1.050000, 17.509087, 132.467211, 135.925062 +1.066667, 22.458963, 133.646647, 137.156035 +1.083333, 27.452845, 134.834828, 138.396519 +1.100000, 32.491112, 136.033197, 139.648028 +1.116667, 37.574143, 137.241835, 140.910659 +1.133333, 42.702322, 138.460823, 142.184507 +1.150000, 47.876034, 139.690242, 143.469666 +1.166667, 53.095670, 140.930175, 144.766236 +1.183333, 58.361622, 142.180703, 146.074311 +1.200000, 63.674286, 143.441911, 147.393992 +1.216667, 69.034059, 144.713882, 148.725377 +1.233333, 74.308697, 142.415216, 146.319663 +1.250000, 78.744238, 119.759619, 122.686144 +1.266667, 82.356172, 97.522215, 99.623423 +1.283333, 85.292292, 79.275235, 80.797185 +1.300000, 87.677273, 64.394506, 65.508513 +1.316667, 89.613414, 52.275781, 53.099855 +1.333333, 91.184422, 42.417230, 43.033192 +1.350000, 92.458660, 34.404421, 34.869435 +1.366667, 93.501314, 28.151649, 28.510141 +1.383333, 94.405356, 24.409143, 24.708583 +1.400000, 95.197412, 21.385508, 21.639804 +1.416667, 95.891331, 18.735811, 18.952426 +1.433333, 96.499226, 16.413163, 16.598191 +1.450000, 97.031725, 14.377489, 14.535938 +1.466667, 97.498153, 12.593556, 12.729560 +1.483333, 97.906687, 11.030405, 11.147393 +1.500000, 98.264496, 9.660843, 9.761668 +1.516667, 98.577866, 8.460997, 8.548045 +1.533333, 98.852307, 7.409913, 7.485184 +1.550000, 99.092648, 6.489206, 6.554386 +1.566667, 99.303120, 5.682750, 5.739264 +1.583333, 99.487432, 4.976403, 5.025458 +1.600000, 99.648830, 4.357764, 4.400389 +1.616667, 99.790162, 3.815963, 3.853033 +1.633333, 99.800376, 0.275780, 0.278339 +1.650000, 99.800385, 0.000221, 0.000223 +1.666667, 99.800385, 0.000000, 0.000000 +1.683333, 99.800385, 0.000000, 0.000000 +1.700000, 99.800385, 0.000000, 0.000000 +1.716667, 99.800385, 0.000000, 0.000000 +1.733333, 99.800385, 0.000000, 0.000000 +1.750000, 99.800385, 0.000000, 0.000000 +1.766667, 99.800385, 0.000000, 0.000000 +1.783333, 99.800385, 0.000000, 0.000000 +1.800000, 99.800385, 0.000000, 0.000000 +1.816667, 99.800385, 0.000000, 0.000000 +1.833333, 99.800385, 0.000000, 0.000000 +1.850000, 99.800385, 0.000000, 0.000000 +1.866667, 99.800385, 0.000000, 0.000000 +1.883333, 99.800385, 0.000000, 0.000000 +1.900000, 99.800385, 0.000000, 0.000000 +1.916667, 99.800385, 0.000000, 0.000000 +1.933333, 99.800385, 0.000000, 0.000000 +1.950000, 99.800385, 0.000000, 0.000000 +1.966667, 99.800385, 0.000000, 0.000000 +1.983333, 99.800385, 0.000000, 0.000000 +2.000000, 99.800385, 0.000000, 0.000000 +2.016667, 99.800385, 0.000000, 0.000000 +2.033333, 99.800385, 0.000000, 0.000000 +2.050000, 99.800385, 0.000000, 0.000000 +2.066667, 99.800385, 0.000000, 0.000000 +2.083333, 99.800385, 0.000000, 0.000000 +2.100000, 99.800385, 0.000000, 0.000000 +2.116667, 99.800385, 0.000000, 0.000000 +2.133333, 99.800385, 0.000000, 0.000000 +2.150000, 99.800385, 0.000000, 0.000000 +2.166667, 99.800385, 0.000000, 0.000000 +2.183333, 99.800385, 0.000000, 0.000000 +2.200000, 99.800385, 0.000000, 0.000000 +2.216667, 99.800385, 0.000000, 0.000000 +2.233333, 99.800385, 0.000000, 0.000000 +2.250000, 99.800385, 0.000000, 0.000000 +2.266667, 99.800385, 0.000000, 0.000000 +2.283333, 99.800385, 0.000000, 0.000000 +2.300000, 99.800385, 0.000000, 0.000000 +2.316667, 99.800385, 0.000000, 0.000000 +2.333333, 99.800385, 0.000000, 0.000000 +2.350000, 99.800385, 0.000000, 0.000000 +2.366667, 99.800385, 0.000000, 0.000000 +2.383333, 99.800385, 0.000000, 0.000000 +2.400000, 99.800385, 0.000000, 0.000000 +2.416667, 99.800385, 0.000000, 0.000000 +2.433333, 99.800385, 0.000000, 0.000000 +2.450000, 99.800385, 0.000000, 0.000000 +2.466667, 99.800385, 0.000000, 0.000000 +2.483333, 99.800385, 0.000000, 0.000000 +2.500000, 99.800385, 0.000000, 0.000000 +2.516667, 99.800385, 0.000000, 0.000000 +2.533333, 99.800385, 0.000000, 0.000000 +2.550000, 99.800385, 0.000000, 0.000000 +2.566667, 99.800385, 0.000000, 0.000000 +2.583333, 99.800385, 0.000000, 0.000000 +2.600000, 99.800385, 0.000000, 0.000000 +2.616667, 99.800385, 0.000000, 0.000000 +2.633333, 99.800385, 0.000000, 0.000000 +2.650000, 99.800385, 0.000000, 0.000000 +2.666667, 99.800385, 0.000000, 0.000000 +2.683333, 99.800385, 0.000000, 0.000000 +2.700000, 99.800385, 0.000000, 0.000000 +2.716667, 99.800385, 0.000000, 0.000000 +2.733333, 99.800385, 0.000000, 0.000000 +2.750000, 99.800385, 0.000000, 0.000000 +2.766667, 99.800385, 0.000000, 0.000000 +2.783333, 99.800385, 0.000000, 0.000000 +2.800000, 99.800385, 0.000000, 0.000000 +2.816667, 99.800385, 0.000000, 0.000000 +2.833333, 99.800385, 0.000000, 0.000000 +2.850000, 99.800385, 0.000000, 0.000000 +2.866667, 99.800385, 0.000000, 0.000000 +2.883333, 99.800385, 0.000000, 0.000000 +2.900000, 99.800385, 0.000000, 0.000000 +2.916667, 99.800385, 0.000000, 0.000000 +2.933333, 99.800385, 0.000000, 0.000000 +2.950000, 99.800385, 0.000000, 0.000000 +2.966667, 99.800385, 0.000000, 0.000000 +2.983333, 99.800385, 0.000000, 0.000000 +3.000000, 99.800385, 0.000000, 0.000000 +3.016667, 99.800385, 0.000000, 0.000000 +3.033333, 99.800385, 0.000000, 0.000000 +3.050000, 99.800385, 0.000000, 0.000000 +3.066667, 99.800385, 0.000000, 0.000000 +3.083333, 99.800385, 0.000000, 0.000000 +3.100000, 99.800385, 0.000000, 0.000000 +3.116667, 99.800385, 0.000000, 0.000000 +3.133333, 99.800385, 0.000000, 0.000000 +3.150000, 99.800385, 0.000000, 0.000000 +3.166667, 99.800385, 0.000000, 0.000000 +3.183333, 99.800385, 0.000000, 0.000000 +3.200000, 99.800385, 0.000000, 0.000000 +3.216667, 99.800385, 0.000000, 0.000000 +3.233333, 99.800385, 0.000000, 0.000000 +3.250000, 99.800385, 0.000000, 0.000000 +3.266667, 99.800385, 0.000000, 0.000000 +3.283333, 99.800385, 0.000000, 0.000000 +3.300000, 99.800385, 0.000000, 0.000000 +3.316667, 99.800385, 0.000000, 0.000000 +3.333333, 99.800385, 0.000000, 0.000000 +3.350000, 99.800385, 0.000000, 0.000000 +3.366667, 99.800385, 0.000000, 0.000000 +3.383333, 99.800385, 0.000000, 0.000000 +3.400000, 99.800385, 0.000000, 0.000000 +3.416667, 99.800385, 0.000000, 0.000000 +3.433333, 99.800385, 0.000000, 0.000000 +3.450000, 99.800385, 0.000000, 0.000000 +3.466667, 99.800385, 0.000000, 0.000000 +3.483333, 99.800385, 0.000000, 0.000000 +3.500000, 99.800385, 0.000000, 0.000000 +3.516667, 99.800385, 0.000000, 0.000000 +3.533333, 99.800385, 0.000000, 0.000000 +3.550000, 99.800385, 0.000000, 0.000000 +3.566667, 99.800385, 0.000000, 0.000000 +3.583333, 99.800385, 0.000000, 0.000000 +3.600000, 99.800385, 0.000000, 0.000000 +3.616667, 99.800385, 0.000000, 0.000000 +3.633333, 99.800385, 0.000000, 0.000000 +3.650000, 99.800385, 0.000000, 0.000000 +3.666667, 99.800385, 0.000000, 0.000000 +3.683333, 99.800385, 0.000000, 0.000000 +3.700000, 99.800385, 0.000000, 0.000000 +3.716667, 99.800385, 0.000000, 0.000000 +3.733333, 99.800385, 0.000000, 0.000000 +3.750000, 99.800385, 0.000000, 0.000000 +3.766667, 99.800385, 0.000000, 0.000000 +3.783333, 99.800385, 0.000000, 0.000000 +3.800000, 99.800385, 0.000000, 0.000000 +3.816667, 99.800385, 0.000000, 0.000000 +3.833333, 99.800385, 0.000000, 0.000000 +3.850000, 99.800385, 0.000000, 0.000000 +3.866667, 99.800385, 0.000000, 0.000000 +3.883333, 99.800385, 0.000000, 0.000000 +3.900000, 99.800385, 0.000000, 0.000000 +3.916667, 99.800385, 0.000000, 0.000000 +3.933333, 99.800385, 0.000000, 0.000000 +3.950000, 99.800385, 0.000000, 0.000000 +3.966667, 99.800385, 0.000000, 0.000000 +3.983333, 99.800385, 0.000000, 0.000000 +4.000000, 99.800385, 0.000000, 0.000000 diff --git a/unittests/test_charging_models/original_dxfc_models/xfc_350_bev150_ld1_50kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_150_bev150_ld1_50kW.csv similarity index 100% rename from unittests/test_charging_models/original_dxfc_models/xfc_350_bev150_ld1_50kW.csv rename to unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_150_bev150_ld1_50kW.csv diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_150_bev200_ld4_150kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_150_bev200_ld4_150kW.csv new file mode 100644 index 0000000..afae2e0 --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_150_bev200_ld4_150kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 1.407904, 80.250503, 81.371477 +1.016667, 3.490110, 118.685747, 120.615901 +1.033333, 5.676035, 124.597749, 126.668250 +1.050000, 7.904342, 127.013491, 129.142565 +1.066667, 10.173393, 129.335932, 131.521988 +1.083333, 12.465584, 130.654882, 132.873593 +1.100000, 14.767361, 131.201275, 133.433575 +1.116667, 17.078732, 131.748129, 133.994067 +1.133333, 19.399736, 132.297226, 134.556895 +1.150000, 21.730412, 132.848576, 135.122069 +1.166667, 24.070802, 133.402187, 135.689598 +1.183333, 26.420943, 133.958068, 136.259492 +1.200000, 28.780877, 134.516229, 136.831760 +1.216667, 31.150643, 135.076677, 137.406413 +1.233333, 33.530282, 135.639423, 137.983460 +1.250000, 35.919835, 136.204475, 138.562911 +1.266667, 38.319341, 136.771843, 139.144776 +1.283333, 40.728841, 137.341535, 139.729064 +1.300000, 43.148377, 137.913562, 140.315786 +1.316667, 45.577990, 138.487931, 140.904952 +1.333333, 48.017721, 139.064653, 141.496571 +1.350000, 50.467611, 139.643736, 142.090654 +1.366667, 52.927702, 140.225190, 142.687211 +1.383333, 55.398036, 140.809025, 143.286252 +1.400000, 57.878654, 141.395249, 143.887787 +1.416667, 60.369599, 141.983873, 144.491825 +1.433333, 62.870914, 142.574905, 145.098379 +1.450000, 65.382639, 143.168356, 145.707457 +1.466667, 67.904819, 143.764234, 146.319070 +1.483333, 70.437495, 144.362550, 146.933229 +1.500000, 72.980711, 144.963312, 147.549944 +1.516667, 75.534510, 145.566531, 148.169225 +1.533333, 78.098935, 146.172216, 148.791083 +1.550000, 80.674029, 146.780377, 149.415528 +1.566667, 83.259836, 147.391024, 150.042572 +1.583333, 85.855641, 147.960875, 150.627765 +1.600000, 88.172600, 132.066662, 134.320561 +1.616667, 90.043245, 106.626776, 108.283826 +1.633333, 91.548999, 85.827940, 87.055286 +1.650000, 92.760652, 69.064224, 69.983095 +1.666667, 93.759141, 56.913886, 57.630175 +1.683333, 94.631392, 49.718286, 50.322890 +1.700000, 95.395565, 43.557908, 44.071779 +1.716667, 96.065015, 38.158619, 38.596662 +1.733333, 96.651442, 33.426316, 33.800731 +1.750000, 97.165111, 29.279139, 29.599967 +1.766667, 97.615026, 25.645150, 25.920689 +1.783333, 98.009081, 22.461161, 22.698296 +1.800000, 98.354198, 19.671689, 19.876158 +1.816667, 98.656445, 17.228037, 17.404640 +1.833333, 98.921137, 15.087473, 15.240243 +1.850000, 99.152936, 13.212514, 13.344849 +1.866667, 99.355923, 11.570287, 11.685063 +1.883333, 99.533677, 10.131968, 10.231624 +1.900000, 99.689331, 8.872287, 8.958900 +1.916667, 99.800114, 6.314609, 6.375309 +1.933333, 99.800206, 0.005261, 0.005310 +1.950000, 99.800206, 0.000000, 0.000000 +1.966667, 99.800206, 0.000000, 0.000000 +1.983333, 99.800206, 0.000000, 0.000000 +2.000000, 99.800206, 0.000000, 0.000000 +2.016667, 99.800206, 0.000000, 0.000000 +2.033333, 99.800206, 0.000000, 0.000000 +2.050000, 99.800206, 0.000000, 0.000000 +2.066667, 99.800206, 0.000000, 0.000000 +2.083333, 99.800206, 0.000000, 0.000000 +2.100000, 99.800206, 0.000000, 0.000000 +2.116667, 99.800206, 0.000000, 0.000000 +2.133333, 99.800206, 0.000000, 0.000000 +2.150000, 99.800206, 0.000000, 0.000000 +2.166667, 99.800206, 0.000000, 0.000000 +2.183333, 99.800206, 0.000000, 0.000000 +2.200000, 99.800206, 0.000000, 0.000000 +2.216667, 99.800206, 0.000000, 0.000000 +2.233333, 99.800206, 0.000000, 0.000000 +2.250000, 99.800206, 0.000000, 0.000000 +2.266667, 99.800206, 0.000000, 0.000000 +2.283333, 99.800206, 0.000000, 0.000000 +2.300000, 99.800206, 0.000000, 0.000000 +2.316667, 99.800206, 0.000000, 0.000000 +2.333333, 99.800206, 0.000000, 0.000000 +2.350000, 99.800206, 0.000000, 0.000000 +2.366667, 99.800206, 0.000000, 0.000000 +2.383333, 99.800206, 0.000000, 0.000000 +2.400000, 99.800206, 0.000000, 0.000000 +2.416667, 99.800206, 0.000000, 0.000000 +2.433333, 99.800206, 0.000000, 0.000000 +2.450000, 99.800206, 0.000000, 0.000000 +2.466667, 99.800206, 0.000000, 0.000000 +2.483333, 99.800206, 0.000000, 0.000000 +2.500000, 99.800206, 0.000000, 0.000000 +2.516667, 99.800206, 0.000000, 0.000000 +2.533333, 99.800206, 0.000000, 0.000000 +2.550000, 99.800206, 0.000000, 0.000000 +2.566667, 99.800206, 0.000000, 0.000000 +2.583333, 99.800206, 0.000000, 0.000000 +2.600000, 99.800206, 0.000000, 0.000000 +2.616667, 99.800206, 0.000000, 0.000000 +2.633333, 99.800206, 0.000000, 0.000000 +2.650000, 99.800206, 0.000000, 0.000000 +2.666667, 99.800206, 0.000000, 0.000000 +2.683333, 99.800206, 0.000000, 0.000000 +2.700000, 99.800206, 0.000000, 0.000000 +2.716667, 99.800206, 0.000000, 0.000000 +2.733333, 99.800206, 0.000000, 0.000000 +2.750000, 99.800206, 0.000000, 0.000000 +2.766667, 99.800206, 0.000000, 0.000000 +2.783333, 99.800206, 0.000000, 0.000000 +2.800000, 99.800206, 0.000000, 0.000000 +2.816667, 99.800206, 0.000000, 0.000000 +2.833333, 99.800206, 0.000000, 0.000000 +2.850000, 99.800206, 0.000000, 0.000000 +2.866667, 99.800206, 0.000000, 0.000000 +2.883333, 99.800206, 0.000000, 0.000000 +2.900000, 99.800206, 0.000000, 0.000000 +2.916667, 99.800206, 0.000000, 0.000000 +2.933333, 99.800206, 0.000000, 0.000000 +2.950000, 99.800206, 0.000000, 0.000000 +2.966667, 99.800206, 0.000000, 0.000000 +2.983333, 99.800206, 0.000000, 0.000000 +3.000000, 99.800206, 0.000000, 0.000000 +3.016667, 99.800206, 0.000000, 0.000000 +3.033333, 99.800206, 0.000000, 0.000000 +3.050000, 99.800206, 0.000000, 0.000000 +3.066667, 99.800206, 0.000000, 0.000000 +3.083333, 99.800206, 0.000000, 0.000000 +3.100000, 99.800206, 0.000000, 0.000000 +3.116667, 99.800206, 0.000000, 0.000000 +3.133333, 99.800206, 0.000000, 0.000000 +3.150000, 99.800206, 0.000000, 0.000000 +3.166667, 99.800206, 0.000000, 0.000000 +3.183333, 99.800206, 0.000000, 0.000000 +3.200000, 99.800206, 0.000000, 0.000000 +3.216667, 99.800206, 0.000000, 0.000000 +3.233333, 99.800206, 0.000000, 0.000000 +3.250000, 99.800206, 0.000000, 0.000000 +3.266667, 99.800206, 0.000000, 0.000000 +3.283333, 99.800206, 0.000000, 0.000000 +3.300000, 99.800206, 0.000000, 0.000000 +3.316667, 99.800206, 0.000000, 0.000000 +3.333333, 99.800206, 0.000000, 0.000000 +3.350000, 99.800206, 0.000000, 0.000000 +3.366667, 99.800206, 0.000000, 0.000000 +3.383333, 99.800206, 0.000000, 0.000000 +3.400000, 99.800206, 0.000000, 0.000000 +3.416667, 99.800206, 0.000000, 0.000000 +3.433333, 99.800206, 0.000000, 0.000000 +3.450000, 99.800206, 0.000000, 0.000000 +3.466667, 99.800206, 0.000000, 0.000000 +3.483333, 99.800206, 0.000000, 0.000000 +3.500000, 99.800206, 0.000000, 0.000000 +3.516667, 99.800206, 0.000000, 0.000000 +3.533333, 99.800206, 0.000000, 0.000000 +3.550000, 99.800206, 0.000000, 0.000000 +3.566667, 99.800206, 0.000000, 0.000000 +3.583333, 99.800206, 0.000000, 0.000000 +3.600000, 99.800206, 0.000000, 0.000000 +3.616667, 99.800206, 0.000000, 0.000000 +3.633333, 99.800206, 0.000000, 0.000000 +3.650000, 99.800206, 0.000000, 0.000000 +3.666667, 99.800206, 0.000000, 0.000000 +3.683333, 99.800206, 0.000000, 0.000000 +3.700000, 99.800206, 0.000000, 0.000000 +3.716667, 99.800206, 0.000000, 0.000000 +3.733333, 99.800206, 0.000000, 0.000000 +3.750000, 99.800206, 0.000000, 0.000000 +3.766667, 99.800206, 0.000000, 0.000000 +3.783333, 99.800206, 0.000000, 0.000000 +3.800000, 99.800206, 0.000000, 0.000000 +3.816667, 99.800206, 0.000000, 0.000000 +3.833333, 99.800206, 0.000000, 0.000000 +3.850000, 99.800206, 0.000000, 0.000000 +3.866667, 99.800206, 0.000000, 0.000000 +3.883333, 99.800206, 0.000000, 0.000000 +3.900000, 99.800206, 0.000000, 0.000000 +3.916667, 99.800206, 0.000000, 0.000000 +3.933333, 99.800206, 0.000000, 0.000000 +3.950000, 99.800206, 0.000000, 0.000000 +3.966667, 99.800206, 0.000000, 0.000000 +3.983333, 99.800206, 0.000000, 0.000000 +4.000000, 99.800206, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_150_bev250_350kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_150_bev250_350kW.csv new file mode 100644 index 0000000..9846fd6 --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_150_bev250_350kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 1.160427, 82.715237, 83.801420 +1.016667, 2.857622, 120.976062, 122.784678 +1.033333, 4.647875, 127.609256, 129.557442 +1.050000, 6.478587, 130.493118, 132.503312 +1.066667, 8.334125, 132.262747, 134.311387 +1.083333, 10.214648, 134.043695, 136.131335 +1.100000, 12.109061, 135.033728, 137.143181 +1.116667, 14.009958, 135.495982, 137.615652 +1.133333, 15.917347, 135.958652, 138.088569 +1.150000, 17.831248, 136.422883, 138.563102 +1.166667, 19.751684, 136.888677, 139.039254 +1.183333, 21.678677, 137.356041, 139.517033 +1.200000, 23.612248, 137.824980, 139.996442 +1.216667, 25.552421, 138.295500, 140.477489 +1.233333, 27.499217, 138.767604, 140.960177 +1.250000, 29.452658, 139.241298, 141.444513 +1.266667, 31.412767, 139.716588, 141.930503 +1.283333, 33.379567, 140.193479, 142.418151 +1.300000, 35.353079, 140.671976, 142.907464 +1.316667, 37.333328, 141.152085, 143.398447 +1.333333, 39.320334, 141.633809, 143.891105 +1.350000, 41.314121, 142.117156, 144.385445 +1.366667, 43.314712, 142.602130, 144.881472 +1.383333, 45.322130, 143.088736, 145.379191 +1.400000, 47.336397, 143.576980, 145.878609 +1.416667, 49.357537, 144.066868, 146.379731 +1.433333, 51.385573, 144.558404, 146.882562 +1.450000, 53.420528, 145.051593, 147.387110 +1.466667, 55.462426, 145.546443, 147.893378 +1.483333, 57.511289, 146.042957, 148.401374 +1.500000, 59.567141, 146.541141, 148.911102 +1.516667, 61.630006, 147.041001, 149.422569 +1.533333, 63.699907, 147.542542, 149.935781 +1.550000, 65.776868, 148.045769, 150.450744 +1.566667, 67.860912, 148.550689, 150.967462 +1.583333, 69.952064, 149.057307, 151.485943 +1.600000, 72.050347, 149.565627, 152.006192 +1.616667, 74.155786, 150.075657, 152.528215 +1.633333, 76.268403, 150.587401, 153.052019 +1.650000, 78.388225, 151.100864, 153.577608 +1.666667, 80.515274, 151.616054, 154.104990 +1.683333, 82.649575, 152.132974, 154.634169 +1.700000, 84.791152, 152.651631, 155.165153 +1.716667, 86.940030, 153.172031, 155.697947 +1.733333, 89.049603, 150.370363, 152.829863 +1.750000, 90.871054, 129.833034, 131.828963 +1.766667, 92.407053, 109.486007, 111.062898 +1.783333, 93.701373, 92.259113, 93.512361 +1.800000, 94.791835, 77.728110, 78.730453 +1.816667, 95.710402, 65.475504, 66.281928 +1.833333, 96.484070, 55.147062, 55.799413 +1.850000, 97.135624, 46.442740, 46.973092 +1.866667, 97.684286, 39.108653, 39.541770 +1.883333, 98.146270, 32.930164, 33.285304 +1.900000, 98.535242, 27.725944, 28.018191 +1.916667, 98.862724, 23.342897, 23.584150 +1.933333, 99.138423, 19.651828, 19.851537 +1.950000, 99.370518, 16.543757, 16.709474 +1.966667, 99.565899, 13.926789, 14.064588 +1.983333, 99.730370, 11.723461, 11.838251 +2.000000, 99.800374, 4.989852, 5.037141 +2.016667, 99.800432, 0.004138, 0.004177 +2.033333, 99.800432, 0.000000, 0.000000 +2.050000, 99.800432, 0.000000, 0.000000 +2.066667, 99.800432, 0.000000, 0.000000 +2.083333, 99.800432, 0.000000, 0.000000 +2.100000, 99.800432, 0.000000, 0.000000 +2.116667, 99.800432, 0.000000, 0.000000 +2.133333, 99.800432, 0.000000, 0.000000 +2.150000, 99.800432, 0.000000, 0.000000 +2.166667, 99.800432, 0.000000, 0.000000 +2.183333, 99.800432, 0.000000, 0.000000 +2.200000, 99.800432, 0.000000, 0.000000 +2.216667, 99.800432, 0.000000, 0.000000 +2.233333, 99.800432, 0.000000, 0.000000 +2.250000, 99.800432, 0.000000, 0.000000 +2.266667, 99.800432, 0.000000, 0.000000 +2.283333, 99.800432, 0.000000, 0.000000 +2.300000, 99.800432, 0.000000, 0.000000 +2.316667, 99.800432, 0.000000, 0.000000 +2.333333, 99.800432, 0.000000, 0.000000 +2.350000, 99.800432, 0.000000, 0.000000 +2.366667, 99.800432, 0.000000, 0.000000 +2.383333, 99.800432, 0.000000, 0.000000 +2.400000, 99.800432, 0.000000, 0.000000 +2.416667, 99.800432, 0.000000, 0.000000 +2.433333, 99.800432, 0.000000, 0.000000 +2.450000, 99.800432, 0.000000, 0.000000 +2.466667, 99.800432, 0.000000, 0.000000 +2.483333, 99.800432, 0.000000, 0.000000 +2.500000, 99.800432, 0.000000, 0.000000 +2.516667, 99.800432, 0.000000, 0.000000 +2.533333, 99.800432, 0.000000, 0.000000 +2.550000, 99.800432, 0.000000, 0.000000 +2.566667, 99.800432, 0.000000, 0.000000 +2.583333, 99.800432, 0.000000, 0.000000 +2.600000, 99.800432, 0.000000, 0.000000 +2.616667, 99.800432, 0.000000, 0.000000 +2.633333, 99.800432, 0.000000, 0.000000 +2.650000, 99.800432, 0.000000, 0.000000 +2.666667, 99.800432, 0.000000, 0.000000 +2.683333, 99.800432, 0.000000, 0.000000 +2.700000, 99.800432, 0.000000, 0.000000 +2.716667, 99.800432, 0.000000, 0.000000 +2.733333, 99.800432, 0.000000, 0.000000 +2.750000, 99.800432, 0.000000, 0.000000 +2.766667, 99.800432, 0.000000, 0.000000 +2.783333, 99.800432, 0.000000, 0.000000 +2.800000, 99.800432, 0.000000, 0.000000 +2.816667, 99.800432, 0.000000, 0.000000 +2.833333, 99.800432, 0.000000, 0.000000 +2.850000, 99.800432, 0.000000, 0.000000 +2.866667, 99.800432, 0.000000, 0.000000 +2.883333, 99.800432, 0.000000, 0.000000 +2.900000, 99.800432, 0.000000, 0.000000 +2.916667, 99.800432, 0.000000, 0.000000 +2.933333, 99.800432, 0.000000, 0.000000 +2.950000, 99.800432, 0.000000, 0.000000 +2.966667, 99.800432, 0.000000, 0.000000 +2.983333, 99.800432, 0.000000, 0.000000 +3.000000, 99.800432, 0.000000, 0.000000 +3.016667, 99.800432, 0.000000, 0.000000 +3.033333, 99.800432, 0.000000, 0.000000 +3.050000, 99.800432, 0.000000, 0.000000 +3.066667, 99.800432, 0.000000, 0.000000 +3.083333, 99.800432, 0.000000, 0.000000 +3.100000, 99.800432, 0.000000, 0.000000 +3.116667, 99.800432, 0.000000, 0.000000 +3.133333, 99.800432, 0.000000, 0.000000 +3.150000, 99.800432, 0.000000, 0.000000 +3.166667, 99.800432, 0.000000, 0.000000 +3.183333, 99.800432, 0.000000, 0.000000 +3.200000, 99.800432, 0.000000, 0.000000 +3.216667, 99.800432, 0.000000, 0.000000 +3.233333, 99.800432, 0.000000, 0.000000 +3.250000, 99.800432, 0.000000, 0.000000 +3.266667, 99.800432, 0.000000, 0.000000 +3.283333, 99.800432, 0.000000, 0.000000 +3.300000, 99.800432, 0.000000, 0.000000 +3.316667, 99.800432, 0.000000, 0.000000 +3.333333, 99.800432, 0.000000, 0.000000 +3.350000, 99.800432, 0.000000, 0.000000 +3.366667, 99.800432, 0.000000, 0.000000 +3.383333, 99.800432, 0.000000, 0.000000 +3.400000, 99.800432, 0.000000, 0.000000 +3.416667, 99.800432, 0.000000, 0.000000 +3.433333, 99.800432, 0.000000, 0.000000 +3.450000, 99.800432, 0.000000, 0.000000 +3.466667, 99.800432, 0.000000, 0.000000 +3.483333, 99.800432, 0.000000, 0.000000 +3.500000, 99.800432, 0.000000, 0.000000 +3.516667, 99.800432, 0.000000, 0.000000 +3.533333, 99.800432, 0.000000, 0.000000 +3.550000, 99.800432, 0.000000, 0.000000 +3.566667, 99.800432, 0.000000, 0.000000 +3.583333, 99.800432, 0.000000, 0.000000 +3.600000, 99.800432, 0.000000, 0.000000 +3.616667, 99.800432, 0.000000, 0.000000 +3.633333, 99.800432, 0.000000, 0.000000 +3.650000, 99.800432, 0.000000, 0.000000 +3.666667, 99.800432, 0.000000, 0.000000 +3.683333, 99.800432, 0.000000, 0.000000 +3.700000, 99.800432, 0.000000, 0.000000 +3.716667, 99.800432, 0.000000, 0.000000 +3.733333, 99.800432, 0.000000, 0.000000 +3.750000, 99.800432, 0.000000, 0.000000 +3.766667, 99.800432, 0.000000, 0.000000 +3.783333, 99.800432, 0.000000, 0.000000 +3.800000, 99.800432, 0.000000, 0.000000 +3.816667, 99.800432, 0.000000, 0.000000 +3.833333, 99.800432, 0.000000, 0.000000 +3.850000, 99.800432, 0.000000, 0.000000 +3.866667, 99.800432, 0.000000, 0.000000 +3.883333, 99.800432, 0.000000, 0.000000 +3.900000, 99.800432, 0.000000, 0.000000 +3.916667, 99.800432, 0.000000, 0.000000 +3.933333, 99.800432, 0.000000, 0.000000 +3.950000, 99.800432, 0.000000, 0.000000 +3.966667, 99.800432, 0.000000, 0.000000 +3.983333, 99.800432, 0.000000, 0.000000 +4.000000, 99.800432, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_150_bev250_400kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_150_bev250_400kW.csv new file mode 100644 index 0000000..5ef8e05 --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_150_bev250_400kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 1.581276, 83.017006, 84.723225 +1.016667, 3.858311, 119.544342, 122.423081 +1.033333, 6.146929, 120.152415, 123.052904 +1.050000, 8.444756, 120.635911, 123.553746 +1.066667, 10.751824, 121.121062, 124.056350 +1.083333, 13.068169, 121.608118, 124.560975 +1.100000, 15.393827, 122.097087, 125.067629 +1.116667, 17.728837, 122.587976, 125.576320 +1.133333, 20.073233, 123.080792, 126.087057 +1.150000, 22.427052, 123.575541, 126.599846 +1.166667, 24.790333, 124.072232, 127.114697 +1.183333, 27.163112, 124.570872, 127.631616 +1.200000, 29.545425, 125.071467, 128.150613 +1.216667, 31.937311, 125.574025, 128.671696 +1.233333, 34.338808, 126.078554, 129.194872 +1.250000, 36.749952, 126.585060, 129.720151 +1.266667, 39.170781, 127.093552, 130.247539 +1.283333, 41.601334, 127.604035, 130.777046 +1.300000, 44.041649, 128.116519, 131.308679 +1.316667, 46.491763, 128.631010, 131.842448 +1.333333, 48.951716, 129.147515, 132.378360 +1.350000, 51.423057, 129.745376, 132.998751 +1.366667, 53.912671, 130.704761, 133.994440 +1.383333, 56.421540, 131.715623, 135.043752 +1.400000, 58.949811, 132.734205, 136.101285 +1.416667, 61.496894, 133.721870, 137.126919 +1.433333, 64.059742, 134.549507, 137.986522 +1.450000, 66.636876, 135.299543, 138.765646 +1.466667, 69.227273, 135.995845, 139.489054 +1.483333, 71.830997, 136.695512, 140.216055 +1.500000, 74.448115, 137.398683, 140.946796 +1.516667, 77.078693, 138.105374, 141.681296 +1.533333, 79.722800, 138.815602, 142.419573 +1.550000, 82.386088, 139.822613, 143.466528 +1.566667, 85.077031, 141.274511, 144.976376 +1.583333, 87.796006, 142.746218, 146.507257 +1.600000, 90.543650, 144.251290, 148.073296 +1.616667, 93.332287, 146.403460, 150.313440 +1.633333, 95.672136, 122.842057, 125.839635 +1.650000, 97.233606, 81.977148, 83.653820 +1.666667, 98.260669, 53.920841, 54.879382 +1.683333, 98.936239, 35.467404, 36.036013 +1.700000, 99.380719, 23.335232, 23.682722 +1.716667, 99.673209, 15.355705, 15.572892 +1.733333, 99.800759, 6.696393, 6.785690 +1.750000, 99.800865, 0.005553, 0.005624 +1.766667, 99.800865, 0.000000, 0.000000 +1.783333, 99.800865, 0.000000, 0.000000 +1.800000, 99.800865, 0.000000, 0.000000 +1.816667, 99.800865, 0.000000, 0.000000 +1.833333, 99.800865, 0.000000, 0.000000 +1.850000, 99.800865, 0.000000, 0.000000 +1.866667, 99.800865, 0.000000, 0.000000 +1.883333, 99.800865, 0.000000, 0.000000 +1.900000, 99.800865, 0.000000, 0.000000 +1.916667, 99.800865, 0.000000, 0.000000 +1.933333, 99.800865, 0.000000, 0.000000 +1.950000, 99.800865, 0.000000, 0.000000 +1.966667, 99.800865, 0.000000, 0.000000 +1.983333, 99.800865, 0.000000, 0.000000 +2.000000, 99.800865, 0.000000, 0.000000 +2.016667, 99.800865, 0.000000, 0.000000 +2.033333, 99.800865, 0.000000, 0.000000 +2.050000, 99.800865, 0.000000, 0.000000 +2.066667, 99.800865, 0.000000, 0.000000 +2.083333, 99.800865, 0.000000, 0.000000 +2.100000, 99.800865, 0.000000, 0.000000 +2.116667, 99.800865, 0.000000, 0.000000 +2.133333, 99.800865, 0.000000, 0.000000 +2.150000, 99.800865, 0.000000, 0.000000 +2.166667, 99.800865, 0.000000, 0.000000 +2.183333, 99.800865, 0.000000, 0.000000 +2.200000, 99.800865, 0.000000, 0.000000 +2.216667, 99.800865, 0.000000, 0.000000 +2.233333, 99.800865, 0.000000, 0.000000 +2.250000, 99.800865, 0.000000, 0.000000 +2.266667, 99.800865, 0.000000, 0.000000 +2.283333, 99.800865, 0.000000, 0.000000 +2.300000, 99.800865, 0.000000, 0.000000 +2.316667, 99.800865, 0.000000, 0.000000 +2.333333, 99.800865, 0.000000, 0.000000 +2.350000, 99.800865, 0.000000, 0.000000 +2.366667, 99.800865, 0.000000, 0.000000 +2.383333, 99.800865, 0.000000, 0.000000 +2.400000, 99.800865, 0.000000, 0.000000 +2.416667, 99.800865, 0.000000, 0.000000 +2.433333, 99.800865, 0.000000, 0.000000 +2.450000, 99.800865, 0.000000, 0.000000 +2.466667, 99.800865, 0.000000, 0.000000 +2.483333, 99.800865, 0.000000, 0.000000 +2.500000, 99.800865, 0.000000, 0.000000 +2.516667, 99.800865, 0.000000, 0.000000 +2.533333, 99.800865, 0.000000, 0.000000 +2.550000, 99.800865, 0.000000, 0.000000 +2.566667, 99.800865, 0.000000, 0.000000 +2.583333, 99.800865, 0.000000, 0.000000 +2.600000, 99.800865, 0.000000, 0.000000 +2.616667, 99.800865, 0.000000, 0.000000 +2.633333, 99.800865, 0.000000, 0.000000 +2.650000, 99.800865, 0.000000, 0.000000 +2.666667, 99.800865, 0.000000, 0.000000 +2.683333, 99.800865, 0.000000, 0.000000 +2.700000, 99.800865, 0.000000, 0.000000 +2.716667, 99.800865, 0.000000, 0.000000 +2.733333, 99.800865, 0.000000, 0.000000 +2.750000, 99.800865, 0.000000, 0.000000 +2.766667, 99.800865, 0.000000, 0.000000 +2.783333, 99.800865, 0.000000, 0.000000 +2.800000, 99.800865, 0.000000, 0.000000 +2.816667, 99.800865, 0.000000, 0.000000 +2.833333, 99.800865, 0.000000, 0.000000 +2.850000, 99.800865, 0.000000, 0.000000 +2.866667, 99.800865, 0.000000, 0.000000 +2.883333, 99.800865, 0.000000, 0.000000 +2.900000, 99.800865, 0.000000, 0.000000 +2.916667, 99.800865, 0.000000, 0.000000 +2.933333, 99.800865, 0.000000, 0.000000 +2.950000, 99.800865, 0.000000, 0.000000 +2.966667, 99.800865, 0.000000, 0.000000 +2.983333, 99.800865, 0.000000, 0.000000 +3.000000, 99.800865, 0.000000, 0.000000 +3.016667, 99.800865, 0.000000, 0.000000 +3.033333, 99.800865, 0.000000, 0.000000 +3.050000, 99.800865, 0.000000, 0.000000 +3.066667, 99.800865, 0.000000, 0.000000 +3.083333, 99.800865, 0.000000, 0.000000 +3.100000, 99.800865, 0.000000, 0.000000 +3.116667, 99.800865, 0.000000, 0.000000 +3.133333, 99.800865, 0.000000, 0.000000 +3.150000, 99.800865, 0.000000, 0.000000 +3.166667, 99.800865, 0.000000, 0.000000 +3.183333, 99.800865, 0.000000, 0.000000 +3.200000, 99.800865, 0.000000, 0.000000 +3.216667, 99.800865, 0.000000, 0.000000 +3.233333, 99.800865, 0.000000, 0.000000 +3.250000, 99.800865, 0.000000, 0.000000 +3.266667, 99.800865, 0.000000, 0.000000 +3.283333, 99.800865, 0.000000, 0.000000 +3.300000, 99.800865, 0.000000, 0.000000 +3.316667, 99.800865, 0.000000, 0.000000 +3.333333, 99.800865, 0.000000, 0.000000 +3.350000, 99.800865, 0.000000, 0.000000 +3.366667, 99.800865, 0.000000, 0.000000 +3.383333, 99.800865, 0.000000, 0.000000 +3.400000, 99.800865, 0.000000, 0.000000 +3.416667, 99.800865, 0.000000, 0.000000 +3.433333, 99.800865, 0.000000, 0.000000 +3.450000, 99.800865, 0.000000, 0.000000 +3.466667, 99.800865, 0.000000, 0.000000 +3.483333, 99.800865, 0.000000, 0.000000 +3.500000, 99.800865, 0.000000, 0.000000 +3.516667, 99.800865, 0.000000, 0.000000 +3.533333, 99.800865, 0.000000, 0.000000 +3.550000, 99.800865, 0.000000, 0.000000 +3.566667, 99.800865, 0.000000, 0.000000 +3.583333, 99.800865, 0.000000, 0.000000 +3.600000, 99.800865, 0.000000, 0.000000 +3.616667, 99.800865, 0.000000, 0.000000 +3.633333, 99.800865, 0.000000, 0.000000 +3.650000, 99.800865, 0.000000, 0.000000 +3.666667, 99.800865, 0.000000, 0.000000 +3.683333, 99.800865, 0.000000, 0.000000 +3.700000, 99.800865, 0.000000, 0.000000 +3.716667, 99.800865, 0.000000, 0.000000 +3.733333, 99.800865, 0.000000, 0.000000 +3.750000, 99.800865, 0.000000, 0.000000 +3.766667, 99.800865, 0.000000, 0.000000 +3.783333, 99.800865, 0.000000, 0.000000 +3.800000, 99.800865, 0.000000, 0.000000 +3.816667, 99.800865, 0.000000, 0.000000 +3.833333, 99.800865, 0.000000, 0.000000 +3.850000, 99.800865, 0.000000, 0.000000 +3.866667, 99.800865, 0.000000, 0.000000 +3.883333, 99.800865, 0.000000, 0.000000 +3.900000, 99.800865, 0.000000, 0.000000 +3.916667, 99.800865, 0.000000, 0.000000 +3.933333, 99.800865, 0.000000, 0.000000 +3.950000, 99.800865, 0.000000, 0.000000 +3.966667, 99.800865, 0.000000, 0.000000 +3.983333, 99.800865, 0.000000, 0.000000 +4.000000, 99.800865, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_150_bev250_ld1_75kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_150_bev250_ld1_75kW.csv new file mode 100644 index 0000000..132aaa9 --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_150_bev250_ld1_75kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.867965, 39.058405, 39.532816 +1.016667, 2.138799, 57.187565, 57.959860 +1.033333, 3.465240, 59.689828, 60.507141 +1.050000, 4.841409, 61.927609, 62.785986 +1.066667, 6.235350, 62.727357, 63.600594 +1.083333, 7.643666, 63.374222, 64.259549 +1.100000, 9.066494, 64.027246, 64.924844 +1.116667, 10.503310, 64.656712, 65.566198 +1.133333, 11.946216, 64.930783, 65.845464 +1.150000, 13.392884, 65.100048, 66.017944 +1.166667, 14.843318, 65.269536, 66.190654 +1.183333, 16.297528, 65.439461, 66.363815 +1.200000, 17.755524, 65.609824, 66.537426 +1.216667, 19.217316, 65.780626, 66.711490 +1.233333, 20.682913, 65.951869, 66.886006 +1.250000, 22.152325, 66.123553, 67.060977 +1.266667, 23.625563, 66.295679, 67.236403 +1.283333, 25.102635, 66.468249, 67.412286 +1.300000, 26.583552, 66.641264, 67.588626 +1.316667, 28.068324, 66.814724, 67.765426 +1.333333, 29.556960, 66.988632, 67.942686 +1.350000, 31.049471, 67.162987, 68.120407 +1.366667, 32.545866, 67.337792, 68.298591 +1.383333, 34.046156, 67.513048, 68.477238 +1.400000, 35.550351, 67.688754, 68.656351 +1.416667, 37.058460, 67.864914, 68.835930 +1.433333, 38.570494, 68.041527, 69.015976 +1.450000, 40.086462, 68.218595, 69.196490 +1.466667, 41.606376, 68.396120, 69.377474 +1.483333, 43.130245, 68.574101, 69.558930 +1.500000, 44.658079, 68.752541, 69.740857 +1.516667, 46.189889, 68.931440, 69.923258 +1.533333, 47.725685, 69.110800, 70.106133 +1.550000, 49.265476, 69.290622, 70.289485 +1.566667, 50.809274, 69.470908, 70.473313 +1.583333, 52.357089, 69.651657, 70.657620 +1.600000, 53.908930, 69.832871, 70.842406 +1.616667, 55.464809, 70.014552, 71.027673 +1.633333, 57.024736, 70.196701, 71.213421 +1.650000, 58.588721, 70.379319, 71.399654 +1.666667, 60.156774, 70.562407, 71.586370 +1.683333, 61.728907, 70.745966, 71.773573 +1.700000, 63.305129, 70.929997, 71.961262 +1.716667, 64.885452, 71.114502, 72.149439 +1.733333, 66.469884, 71.299482, 72.338106 +1.750000, 68.058439, 71.484938, 72.527264 +1.766667, 69.651125, 71.670872, 72.716914 +1.783333, 71.247953, 71.857283, 72.907057 +1.800000, 72.848935, 72.044174, 73.097695 +1.816667, 74.454080, 72.231546, 73.288828 +1.833333, 76.063400, 72.419401, 73.480459 +1.850000, 77.676906, 72.607738, 73.672587 +1.866667, 79.294607, 72.796560, 73.865216 +1.883333, 80.916515, 72.985867, 74.058345 +1.900000, 82.542641, 73.175662, 74.251977 +1.916667, 84.172995, 73.365944, 74.446112 +1.933333, 85.807589, 73.556716, 74.640752 +1.950000, 87.446433, 73.747978, 74.835898 +1.966667, 89.089538, 73.939733, 75.031552 +1.983333, 90.736915, 74.131980, 75.227714 +2.000000, 92.289962, 69.887103, 70.897707 +2.016667, 93.603989, 59.131220, 59.938400 +2.033333, 94.710821, 49.807419, 50.452462 +2.050000, 95.642948, 41.945722, 42.464257 +2.066667, 96.427864, 35.321225, 35.740385 +2.083333, 97.088760, 29.740325, 30.080877 +2.100000, 97.645191, 25.039386, 25.317342 +2.116667, 98.113640, 21.080203, 21.308001 +2.133333, 98.507998, 17.746117, 17.933490 +2.150000, 98.839969, 14.938704, 15.093322 +2.166667, 99.119413, 12.574959, 12.702907 +2.183333, 99.354633, 10.584902, 10.691040 +2.200000, 99.552623, 8.909552, 8.997785 +2.216667, 99.719272, 7.499208, 7.572691 +2.233333, 99.800422, 3.651762, 3.686505 +2.250000, 99.800490, 0.003029, 0.003057 +2.266667, 99.800490, 0.000000, 0.000000 +2.283333, 99.800490, 0.000000, 0.000000 +2.300000, 99.800490, 0.000000, 0.000000 +2.316667, 99.800490, 0.000000, 0.000000 +2.333333, 99.800490, 0.000000, 0.000000 +2.350000, 99.800490, 0.000000, 0.000000 +2.366667, 99.800490, 0.000000, 0.000000 +2.383333, 99.800490, 0.000000, 0.000000 +2.400000, 99.800490, 0.000000, 0.000000 +2.416667, 99.800490, 0.000000, 0.000000 +2.433333, 99.800490, 0.000000, 0.000000 +2.450000, 99.800490, 0.000000, 0.000000 +2.466667, 99.800490, 0.000000, 0.000000 +2.483333, 99.800490, 0.000000, 0.000000 +2.500000, 99.800490, 0.000000, 0.000000 +2.516667, 99.800490, 0.000000, 0.000000 +2.533333, 99.800490, 0.000000, 0.000000 +2.550000, 99.800490, 0.000000, 0.000000 +2.566667, 99.800490, 0.000000, 0.000000 +2.583333, 99.800490, 0.000000, 0.000000 +2.600000, 99.800490, 0.000000, 0.000000 +2.616667, 99.800490, 0.000000, 0.000000 +2.633333, 99.800490, 0.000000, 0.000000 +2.650000, 99.800490, 0.000000, 0.000000 +2.666667, 99.800490, 0.000000, 0.000000 +2.683333, 99.800490, 0.000000, 0.000000 +2.700000, 99.800490, 0.000000, 0.000000 +2.716667, 99.800490, 0.000000, 0.000000 +2.733333, 99.800490, 0.000000, 0.000000 +2.750000, 99.800490, 0.000000, 0.000000 +2.766667, 99.800490, 0.000000, 0.000000 +2.783333, 99.800490, 0.000000, 0.000000 +2.800000, 99.800490, 0.000000, 0.000000 +2.816667, 99.800490, 0.000000, 0.000000 +2.833333, 99.800490, 0.000000, 0.000000 +2.850000, 99.800490, 0.000000, 0.000000 +2.866667, 99.800490, 0.000000, 0.000000 +2.883333, 99.800490, 0.000000, 0.000000 +2.900000, 99.800490, 0.000000, 0.000000 +2.916667, 99.800490, 0.000000, 0.000000 +2.933333, 99.800490, 0.000000, 0.000000 +2.950000, 99.800490, 0.000000, 0.000000 +2.966667, 99.800490, 0.000000, 0.000000 +2.983333, 99.800490, 0.000000, 0.000000 +3.000000, 99.800490, 0.000000, 0.000000 +3.016667, 99.800490, 0.000000, 0.000000 +3.033333, 99.800490, 0.000000, 0.000000 +3.050000, 99.800490, 0.000000, 0.000000 +3.066667, 99.800490, 0.000000, 0.000000 +3.083333, 99.800490, 0.000000, 0.000000 +3.100000, 99.800490, 0.000000, 0.000000 +3.116667, 99.800490, 0.000000, 0.000000 +3.133333, 99.800490, 0.000000, 0.000000 +3.150000, 99.800490, 0.000000, 0.000000 +3.166667, 99.800490, 0.000000, 0.000000 +3.183333, 99.800490, 0.000000, 0.000000 +3.200000, 99.800490, 0.000000, 0.000000 +3.216667, 99.800490, 0.000000, 0.000000 +3.233333, 99.800490, 0.000000, 0.000000 +3.250000, 99.800490, 0.000000, 0.000000 +3.266667, 99.800490, 0.000000, 0.000000 +3.283333, 99.800490, 0.000000, 0.000000 +3.300000, 99.800490, 0.000000, 0.000000 +3.316667, 99.800490, 0.000000, 0.000000 +3.333333, 99.800490, 0.000000, 0.000000 +3.350000, 99.800490, 0.000000, 0.000000 +3.366667, 99.800490, 0.000000, 0.000000 +3.383333, 99.800490, 0.000000, 0.000000 +3.400000, 99.800490, 0.000000, 0.000000 +3.416667, 99.800490, 0.000000, 0.000000 +3.433333, 99.800490, 0.000000, 0.000000 +3.450000, 99.800490, 0.000000, 0.000000 +3.466667, 99.800490, 0.000000, 0.000000 +3.483333, 99.800490, 0.000000, 0.000000 +3.500000, 99.800490, 0.000000, 0.000000 +3.516667, 99.800490, 0.000000, 0.000000 +3.533333, 99.800490, 0.000000, 0.000000 +3.550000, 99.800490, 0.000000, 0.000000 +3.566667, 99.800490, 0.000000, 0.000000 +3.583333, 99.800490, 0.000000, 0.000000 +3.600000, 99.800490, 0.000000, 0.000000 +3.616667, 99.800490, 0.000000, 0.000000 +3.633333, 99.800490, 0.000000, 0.000000 +3.650000, 99.800490, 0.000000, 0.000000 +3.666667, 99.800490, 0.000000, 0.000000 +3.683333, 99.800490, 0.000000, 0.000000 +3.700000, 99.800490, 0.000000, 0.000000 +3.716667, 99.800490, 0.000000, 0.000000 +3.733333, 99.800490, 0.000000, 0.000000 +3.750000, 99.800490, 0.000000, 0.000000 +3.766667, 99.800490, 0.000000, 0.000000 +3.783333, 99.800490, 0.000000, 0.000000 +3.800000, 99.800490, 0.000000, 0.000000 +3.816667, 99.800490, 0.000000, 0.000000 +3.833333, 99.800490, 0.000000, 0.000000 +3.850000, 99.800490, 0.000000, 0.000000 +3.866667, 99.800490, 0.000000, 0.000000 +3.883333, 99.800490, 0.000000, 0.000000 +3.900000, 99.800490, 0.000000, 0.000000 +3.916667, 99.800490, 0.000000, 0.000000 +3.933333, 99.800490, 0.000000, 0.000000 +3.950000, 99.800490, 0.000000, 0.000000 +3.966667, 99.800490, 0.000000, 0.000000 +3.983333, 99.800490, 0.000000, 0.000000 +4.000000, 99.800490, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_150_bev250_ld2_300kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_150_bev250_ld2_300kW.csv new file mode 100644 index 0000000..e4fad9f --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_150_bev250_ld2_300kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 1.534529, 81.023113, 82.189658 +1.016667, 3.817439, 120.537690, 122.580763 +1.033333, 6.203646, 125.991698, 128.171848 +1.050000, 8.640027, 128.640905, 130.889057 +1.066667, 11.123105, 131.106551, 133.418825 +1.083333, 13.623616, 132.026956, 134.363374 +1.100000, 16.135529, 132.629006, 134.981276 +1.116667, 18.658882, 133.233057, 135.601282 +1.133333, 21.193727, 133.839812, 136.224110 +1.150000, 23.740115, 134.449282, 136.849775 +1.166667, 26.298098, 135.061479, 137.478290 +1.183333, 28.867727, 135.676415, 138.109665 +1.200000, 31.449054, 136.294102, 138.743916 +1.216667, 34.042133, 136.914551, 139.381054 +1.233333, 36.647015, 137.537774, 140.021092 +1.250000, 39.263753, 138.163783, 140.664043 +1.266667, 41.892401, 138.792590, 141.309921 +1.283333, 44.533011, 139.424208, 141.958738 +1.300000, 47.185637, 140.058648, 142.610507 +1.316667, 49.850332, 140.695923, 143.265242 +1.333333, 52.527151, 141.336044, 143.922957 +1.350000, 55.216148, 141.979024, 144.583663 +1.366667, 57.917377, 142.624875, 145.247375 +1.383333, 60.630892, 143.273609, 145.914106 +1.400000, 63.356749, 143.925240, 146.583870 +1.416667, 66.095002, 144.579779, 147.256680 +1.433333, 68.845707, 145.237238, 147.932549 +1.450000, 71.608920, 145.897631, 148.611492 +1.466667, 74.384696, 146.560969, 149.293521 +1.483333, 77.173091, 147.227266, 149.978652 +1.500000, 79.974162, 147.896534, 150.666897 +1.516667, 82.787965, 148.568786, 151.358270 +1.533333, 85.575201, 147.166076, 149.915729 +1.550000, 87.936498, 124.676502, 126.823238 +1.566667, 89.843097, 100.668411, 102.245203 +1.583333, 91.379845, 81.140276, 82.309119 +1.600000, 92.618080, 65.378842, 66.254553 +1.616667, 93.631935, 53.531518, 54.208010 +1.633333, 94.515225, 46.637706, 47.206581 +1.650000, 95.289643, 40.889300, 41.373095 +1.666667, 95.968588, 35.848267, 36.260929 +1.683333, 96.563787, 31.426531, 31.779470 +1.700000, 97.085540, 27.548519, 27.851129 +1.716667, 97.542883, 24.147760, 24.407810 +1.733333, 97.943751, 21.165821, 21.389762 +1.750000, 98.295103, 18.551352, 18.744562 +1.766667, 98.603043, 16.259246, 16.426228 +1.783333, 98.872927, 14.249891, 14.394428 +1.800000, 99.109452, 12.488513, 12.613794 +1.816667, 99.316736, 10.944587, 11.053313 +1.833333, 99.498390, 9.591331, 9.685793 +1.850000, 99.657580, 8.405243, 8.487395 +1.866667, 99.797082, 7.365710, 7.437218 +1.883333, 99.800559, 0.183585, 0.185284 +1.900000, 99.800562, 0.000128, 0.000130 +1.916667, 99.800562, 0.000000, 0.000000 +1.933333, 99.800562, 0.000000, 0.000000 +1.950000, 99.800562, 0.000000, 0.000000 +1.966667, 99.800562, 0.000000, 0.000000 +1.983333, 99.800562, 0.000000, 0.000000 +2.000000, 99.800562, 0.000000, 0.000000 +2.016667, 99.800562, 0.000000, 0.000000 +2.033333, 99.800562, 0.000000, 0.000000 +2.050000, 99.800562, 0.000000, 0.000000 +2.066667, 99.800562, 0.000000, 0.000000 +2.083333, 99.800562, 0.000000, 0.000000 +2.100000, 99.800562, 0.000000, 0.000000 +2.116667, 99.800562, 0.000000, 0.000000 +2.133333, 99.800562, 0.000000, 0.000000 +2.150000, 99.800562, 0.000000, 0.000000 +2.166667, 99.800562, 0.000000, 0.000000 +2.183333, 99.800562, 0.000000, 0.000000 +2.200000, 99.800562, 0.000000, 0.000000 +2.216667, 99.800562, 0.000000, 0.000000 +2.233333, 99.800562, 0.000000, 0.000000 +2.250000, 99.800562, 0.000000, 0.000000 +2.266667, 99.800562, 0.000000, 0.000000 +2.283333, 99.800562, 0.000000, 0.000000 +2.300000, 99.800562, 0.000000, 0.000000 +2.316667, 99.800562, 0.000000, 0.000000 +2.333333, 99.800562, 0.000000, 0.000000 +2.350000, 99.800562, 0.000000, 0.000000 +2.366667, 99.800562, 0.000000, 0.000000 +2.383333, 99.800562, 0.000000, 0.000000 +2.400000, 99.800562, 0.000000, 0.000000 +2.416667, 99.800562, 0.000000, 0.000000 +2.433333, 99.800562, 0.000000, 0.000000 +2.450000, 99.800562, 0.000000, 0.000000 +2.466667, 99.800562, 0.000000, 0.000000 +2.483333, 99.800562, 0.000000, 0.000000 +2.500000, 99.800562, 0.000000, 0.000000 +2.516667, 99.800562, 0.000000, 0.000000 +2.533333, 99.800562, 0.000000, 0.000000 +2.550000, 99.800562, 0.000000, 0.000000 +2.566667, 99.800562, 0.000000, 0.000000 +2.583333, 99.800562, 0.000000, 0.000000 +2.600000, 99.800562, 0.000000, 0.000000 +2.616667, 99.800562, 0.000000, 0.000000 +2.633333, 99.800562, 0.000000, 0.000000 +2.650000, 99.800562, 0.000000, 0.000000 +2.666667, 99.800562, 0.000000, 0.000000 +2.683333, 99.800562, 0.000000, 0.000000 +2.700000, 99.800562, 0.000000, 0.000000 +2.716667, 99.800562, 0.000000, 0.000000 +2.733333, 99.800562, 0.000000, 0.000000 +2.750000, 99.800562, 0.000000, 0.000000 +2.766667, 99.800562, 0.000000, 0.000000 +2.783333, 99.800562, 0.000000, 0.000000 +2.800000, 99.800562, 0.000000, 0.000000 +2.816667, 99.800562, 0.000000, 0.000000 +2.833333, 99.800562, 0.000000, 0.000000 +2.850000, 99.800562, 0.000000, 0.000000 +2.866667, 99.800562, 0.000000, 0.000000 +2.883333, 99.800562, 0.000000, 0.000000 +2.900000, 99.800562, 0.000000, 0.000000 +2.916667, 99.800562, 0.000000, 0.000000 +2.933333, 99.800562, 0.000000, 0.000000 +2.950000, 99.800562, 0.000000, 0.000000 +2.966667, 99.800562, 0.000000, 0.000000 +2.983333, 99.800562, 0.000000, 0.000000 +3.000000, 99.800562, 0.000000, 0.000000 +3.016667, 99.800562, 0.000000, 0.000000 +3.033333, 99.800562, 0.000000, 0.000000 +3.050000, 99.800562, 0.000000, 0.000000 +3.066667, 99.800562, 0.000000, 0.000000 +3.083333, 99.800562, 0.000000, 0.000000 +3.100000, 99.800562, 0.000000, 0.000000 +3.116667, 99.800562, 0.000000, 0.000000 +3.133333, 99.800562, 0.000000, 0.000000 +3.150000, 99.800562, 0.000000, 0.000000 +3.166667, 99.800562, 0.000000, 0.000000 +3.183333, 99.800562, 0.000000, 0.000000 +3.200000, 99.800562, 0.000000, 0.000000 +3.216667, 99.800562, 0.000000, 0.000000 +3.233333, 99.800562, 0.000000, 0.000000 +3.250000, 99.800562, 0.000000, 0.000000 +3.266667, 99.800562, 0.000000, 0.000000 +3.283333, 99.800562, 0.000000, 0.000000 +3.300000, 99.800562, 0.000000, 0.000000 +3.316667, 99.800562, 0.000000, 0.000000 +3.333333, 99.800562, 0.000000, 0.000000 +3.350000, 99.800562, 0.000000, 0.000000 +3.366667, 99.800562, 0.000000, 0.000000 +3.383333, 99.800562, 0.000000, 0.000000 +3.400000, 99.800562, 0.000000, 0.000000 +3.416667, 99.800562, 0.000000, 0.000000 +3.433333, 99.800562, 0.000000, 0.000000 +3.450000, 99.800562, 0.000000, 0.000000 +3.466667, 99.800562, 0.000000, 0.000000 +3.483333, 99.800562, 0.000000, 0.000000 +3.500000, 99.800562, 0.000000, 0.000000 +3.516667, 99.800562, 0.000000, 0.000000 +3.533333, 99.800562, 0.000000, 0.000000 +3.550000, 99.800562, 0.000000, 0.000000 +3.566667, 99.800562, 0.000000, 0.000000 +3.583333, 99.800562, 0.000000, 0.000000 +3.600000, 99.800562, 0.000000, 0.000000 +3.616667, 99.800562, 0.000000, 0.000000 +3.633333, 99.800562, 0.000000, 0.000000 +3.650000, 99.800562, 0.000000, 0.000000 +3.666667, 99.800562, 0.000000, 0.000000 +3.683333, 99.800562, 0.000000, 0.000000 +3.700000, 99.800562, 0.000000, 0.000000 +3.716667, 99.800562, 0.000000, 0.000000 +3.733333, 99.800562, 0.000000, 0.000000 +3.750000, 99.800562, 0.000000, 0.000000 +3.766667, 99.800562, 0.000000, 0.000000 +3.783333, 99.800562, 0.000000, 0.000000 +3.800000, 99.800562, 0.000000, 0.000000 +3.816667, 99.800562, 0.000000, 0.000000 +3.833333, 99.800562, 0.000000, 0.000000 +3.850000, 99.800562, 0.000000, 0.000000 +3.866667, 99.800562, 0.000000, 0.000000 +3.883333, 99.800562, 0.000000, 0.000000 +3.900000, 99.800562, 0.000000, 0.000000 +3.916667, 99.800562, 0.000000, 0.000000 +3.933333, 99.800562, 0.000000, 0.000000 +3.950000, 99.800562, 0.000000, 0.000000 +3.966667, 99.800562, 0.000000, 0.000000 +3.983333, 99.800562, 0.000000, 0.000000 +4.000000, 99.800562, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_150_bev275_ld1_150kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_150_bev275_ld1_150kW.csv new file mode 100644 index 0000000..5b69aba --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_150_bev275_ld1_150kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 1.612499, 80.302465, 81.479890 +1.016667, 4.016498, 119.719155, 121.798077 +1.033333, 6.523180, 124.832732, 127.044485 +1.050000, 9.086025, 127.629691, 129.915650 +1.066667, 11.696536, 130.003446, 132.353247 +1.083333, 14.322422, 130.769126, 133.139689 +1.100000, 16.960881, 131.395259, 133.782861 +1.116667, 19.611966, 132.024038, 134.428807 +1.133333, 22.275737, 132.655771, 135.077843 +1.150000, 24.952252, 133.290472, 135.729986 +1.166667, 27.641573, 133.928154, 136.385248 +1.183333, 30.343758, 134.568831, 137.043645 +1.200000, 33.058869, 135.212515, 137.705192 +1.216667, 35.786965, 135.859221, 138.369902 +1.233333, 38.528109, 136.508962, 139.037792 +1.250000, 41.282361, 137.161752, 139.708876 +1.266667, 44.049783, 137.817604, 140.383169 +1.283333, 46.830436, 138.476533, 141.060686 +1.300000, 49.624383, 139.138553, 141.741442 +1.316667, 52.431686, 139.803676, 142.425452 +1.333333, 55.252407, 140.471917, 143.112732 +1.350000, 58.086610, 141.143291, 143.803297 +1.366667, 60.934357, 141.817811, 144.497162 +1.383333, 63.795712, 142.495491, 145.194344 +1.400000, 66.670739, 143.176346, 145.894856 +1.416667, 69.559502, 143.860390, 146.598715 +1.433333, 72.462065, 144.547637, 147.305937 +1.450000, 75.378493, 145.238101, 148.016538 +1.466667, 78.308850, 145.931797, 148.730532 +1.483333, 81.253202, 146.628740, 149.447937 +1.500000, 84.209052, 147.201318, 150.037377 +1.516667, 86.830730, 130.559542, 132.924413 +1.533333, 88.950653, 105.572203, 107.302709 +1.550000, 90.659895, 85.120204, 86.396255 +1.566667, 92.037486, 68.604071, 69.555320 +1.583333, 93.148332, 55.320111, 56.037296 +1.600000, 94.091060, 46.947846, 47.529893 +1.616667, 94.917471, 41.155265, 41.649395 +1.633333, 95.642061, 36.084597, 36.505507 +1.650000, 96.277328, 31.636320, 31.995864 +1.666667, 96.834248, 27.734581, 28.042501 +1.683333, 97.322454, 24.312651, 24.576987 +1.700000, 97.750402, 21.311851, 21.539266 +1.716667, 98.125515, 18.680602, 18.876641 +1.733333, 98.454302, 16.373586, 16.542881 +1.750000, 98.742474, 14.350995, 14.497432 +1.766667, 98.995042, 12.577877, 12.704728 +1.783333, 99.216399, 11.023548, 11.133575 +1.800000, 99.410396, 9.661077, 9.756624 +1.816667, 99.580413, 8.466834, 8.549893 +1.833333, 99.729411, 7.420085, 7.492357 +1.850000, 99.800234, 3.526991, 3.560426 +1.866667, 99.800292, 0.002931, 0.002958 +1.883333, 99.800292, 0.000000, 0.000000 +1.900000, 99.800292, 0.000000, 0.000000 +1.916667, 99.800292, 0.000000, 0.000000 +1.933333, 99.800292, 0.000000, 0.000000 +1.950000, 99.800292, 0.000000, 0.000000 +1.966667, 99.800292, 0.000000, 0.000000 +1.983333, 99.800292, 0.000000, 0.000000 +2.000000, 99.800292, 0.000000, 0.000000 +2.016667, 99.800292, 0.000000, 0.000000 +2.033333, 99.800292, 0.000000, 0.000000 +2.050000, 99.800292, 0.000000, 0.000000 +2.066667, 99.800292, 0.000000, 0.000000 +2.083333, 99.800292, 0.000000, 0.000000 +2.100000, 99.800292, 0.000000, 0.000000 +2.116667, 99.800292, 0.000000, 0.000000 +2.133333, 99.800292, 0.000000, 0.000000 +2.150000, 99.800292, 0.000000, 0.000000 +2.166667, 99.800292, 0.000000, 0.000000 +2.183333, 99.800292, 0.000000, 0.000000 +2.200000, 99.800292, 0.000000, 0.000000 +2.216667, 99.800292, 0.000000, 0.000000 +2.233333, 99.800292, 0.000000, 0.000000 +2.250000, 99.800292, 0.000000, 0.000000 +2.266667, 99.800292, 0.000000, 0.000000 +2.283333, 99.800292, 0.000000, 0.000000 +2.300000, 99.800292, 0.000000, 0.000000 +2.316667, 99.800292, 0.000000, 0.000000 +2.333333, 99.800292, 0.000000, 0.000000 +2.350000, 99.800292, 0.000000, 0.000000 +2.366667, 99.800292, 0.000000, 0.000000 +2.383333, 99.800292, 0.000000, 0.000000 +2.400000, 99.800292, 0.000000, 0.000000 +2.416667, 99.800292, 0.000000, 0.000000 +2.433333, 99.800292, 0.000000, 0.000000 +2.450000, 99.800292, 0.000000, 0.000000 +2.466667, 99.800292, 0.000000, 0.000000 +2.483333, 99.800292, 0.000000, 0.000000 +2.500000, 99.800292, 0.000000, 0.000000 +2.516667, 99.800292, 0.000000, 0.000000 +2.533333, 99.800292, 0.000000, 0.000000 +2.550000, 99.800292, 0.000000, 0.000000 +2.566667, 99.800292, 0.000000, 0.000000 +2.583333, 99.800292, 0.000000, 0.000000 +2.600000, 99.800292, 0.000000, 0.000000 +2.616667, 99.800292, 0.000000, 0.000000 +2.633333, 99.800292, 0.000000, 0.000000 +2.650000, 99.800292, 0.000000, 0.000000 +2.666667, 99.800292, 0.000000, 0.000000 +2.683333, 99.800292, 0.000000, 0.000000 +2.700000, 99.800292, 0.000000, 0.000000 +2.716667, 99.800292, 0.000000, 0.000000 +2.733333, 99.800292, 0.000000, 0.000000 +2.750000, 99.800292, 0.000000, 0.000000 +2.766667, 99.800292, 0.000000, 0.000000 +2.783333, 99.800292, 0.000000, 0.000000 +2.800000, 99.800292, 0.000000, 0.000000 +2.816667, 99.800292, 0.000000, 0.000000 +2.833333, 99.800292, 0.000000, 0.000000 +2.850000, 99.800292, 0.000000, 0.000000 +2.866667, 99.800292, 0.000000, 0.000000 +2.883333, 99.800292, 0.000000, 0.000000 +2.900000, 99.800292, 0.000000, 0.000000 +2.916667, 99.800292, 0.000000, 0.000000 +2.933333, 99.800292, 0.000000, 0.000000 +2.950000, 99.800292, 0.000000, 0.000000 +2.966667, 99.800292, 0.000000, 0.000000 +2.983333, 99.800292, 0.000000, 0.000000 +3.000000, 99.800292, 0.000000, 0.000000 +3.016667, 99.800292, 0.000000, 0.000000 +3.033333, 99.800292, 0.000000, 0.000000 +3.050000, 99.800292, 0.000000, 0.000000 +3.066667, 99.800292, 0.000000, 0.000000 +3.083333, 99.800292, 0.000000, 0.000000 +3.100000, 99.800292, 0.000000, 0.000000 +3.116667, 99.800292, 0.000000, 0.000000 +3.133333, 99.800292, 0.000000, 0.000000 +3.150000, 99.800292, 0.000000, 0.000000 +3.166667, 99.800292, 0.000000, 0.000000 +3.183333, 99.800292, 0.000000, 0.000000 +3.200000, 99.800292, 0.000000, 0.000000 +3.216667, 99.800292, 0.000000, 0.000000 +3.233333, 99.800292, 0.000000, 0.000000 +3.250000, 99.800292, 0.000000, 0.000000 +3.266667, 99.800292, 0.000000, 0.000000 +3.283333, 99.800292, 0.000000, 0.000000 +3.300000, 99.800292, 0.000000, 0.000000 +3.316667, 99.800292, 0.000000, 0.000000 +3.333333, 99.800292, 0.000000, 0.000000 +3.350000, 99.800292, 0.000000, 0.000000 +3.366667, 99.800292, 0.000000, 0.000000 +3.383333, 99.800292, 0.000000, 0.000000 +3.400000, 99.800292, 0.000000, 0.000000 +3.416667, 99.800292, 0.000000, 0.000000 +3.433333, 99.800292, 0.000000, 0.000000 +3.450000, 99.800292, 0.000000, 0.000000 +3.466667, 99.800292, 0.000000, 0.000000 +3.483333, 99.800292, 0.000000, 0.000000 +3.500000, 99.800292, 0.000000, 0.000000 +3.516667, 99.800292, 0.000000, 0.000000 +3.533333, 99.800292, 0.000000, 0.000000 +3.550000, 99.800292, 0.000000, 0.000000 +3.566667, 99.800292, 0.000000, 0.000000 +3.583333, 99.800292, 0.000000, 0.000000 +3.600000, 99.800292, 0.000000, 0.000000 +3.616667, 99.800292, 0.000000, 0.000000 +3.633333, 99.800292, 0.000000, 0.000000 +3.650000, 99.800292, 0.000000, 0.000000 +3.666667, 99.800292, 0.000000, 0.000000 +3.683333, 99.800292, 0.000000, 0.000000 +3.700000, 99.800292, 0.000000, 0.000000 +3.716667, 99.800292, 0.000000, 0.000000 +3.733333, 99.800292, 0.000000, 0.000000 +3.750000, 99.800292, 0.000000, 0.000000 +3.766667, 99.800292, 0.000000, 0.000000 +3.783333, 99.800292, 0.000000, 0.000000 +3.800000, 99.800292, 0.000000, 0.000000 +3.816667, 99.800292, 0.000000, 0.000000 +3.833333, 99.800292, 0.000000, 0.000000 +3.850000, 99.800292, 0.000000, 0.000000 +3.866667, 99.800292, 0.000000, 0.000000 +3.883333, 99.800292, 0.000000, 0.000000 +3.900000, 99.800292, 0.000000, 0.000000 +3.916667, 99.800292, 0.000000, 0.000000 +3.933333, 99.800292, 0.000000, 0.000000 +3.950000, 99.800292, 0.000000, 0.000000 +3.966667, 99.800292, 0.000000, 0.000000 +3.983333, 99.800292, 0.000000, 0.000000 +4.000000, 99.800292, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_150_bev300_300kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_150_bev300_300kW.csv new file mode 100644 index 0000000..e2a4fe7 --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_150_bev300_300kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 1.399249, 81.856044, 82.997045 +1.016667, 3.470194, 121.150332, 123.115904 +1.033333, 5.644880, 127.219100, 129.328267 +1.050000, 7.861640, 129.680452, 131.849103 +1.066667, 10.118678, 132.036764, 134.263036 +1.083333, 12.399275, 133.414869, 135.675147 +1.100000, 14.689361, 133.970034, 136.244075 +1.116667, 16.988943, 134.525550, 136.813399 +1.133333, 19.298059, 135.083334, 137.385084 +1.150000, 21.616750, 135.643393, 137.959139 +1.166667, 23.945053, 136.205738, 138.535575 +1.183333, 26.283008, 136.770377, 139.114399 +1.200000, 28.630655, 137.337320, 139.695624 +1.216667, 30.988032, 137.906575, 140.279257 +1.233333, 33.355180, 138.478151, 140.865310 +1.250000, 35.732138, 139.052059, 141.453791 +1.266667, 38.118947, 139.628306, 142.044711 +1.283333, 40.515646, 140.206902, 142.638081 +1.300000, 42.922276, 140.787856, 143.233908 +1.316667, 45.338877, 141.371179, 143.832205 +1.333333, 47.765491, 141.956878, 144.432980 +1.350000, 50.202157, 142.544963, 145.036244 +1.366667, 52.648917, 143.135444, 145.642008 +1.383333, 55.105811, 143.728331, 146.250280 +1.400000, 57.572882, 144.323632, 146.861072 +1.416667, 60.050170, 144.921356, 147.474394 +1.433333, 62.537717, 145.521515, 148.090256 +1.450000, 65.035565, 146.124117, 148.708668 +1.466667, 67.543756, 146.729171, 149.329640 +1.483333, 70.062332, 147.336688, 149.953184 +1.500000, 72.591335, 147.946676, 150.579310 +1.516667, 75.130808, 148.559147, 151.208028 +1.533333, 77.680792, 149.174108, 151.839348 +1.550000, 80.241332, 149.791572, 152.473282 +1.566667, 82.812470, 150.411546, 153.109839 +1.583333, 85.394248, 151.034040, 153.749031 +1.600000, 87.794287, 140.402295, 142.838472 +1.616667, 89.738644, 113.744869, 115.541129 +1.633333, 91.303925, 91.568907, 92.896843 +1.650000, 92.563515, 73.686021, 74.678319 +1.666667, 93.591177, 60.118260, 60.880788 +1.683333, 94.484274, 52.246157, 52.885165 +1.700000, 95.266685, 45.771023, 46.313806 +1.716667, 95.952118, 40.097847, 40.560301 +1.733333, 96.552552, 35.125389, 35.520484 +1.750000, 97.078495, 30.767671, 31.106074 +1.766667, 97.539164, 26.949133, 27.239652 +1.783333, 97.942641, 23.603401, 23.853339 +1.800000, 98.296012, 20.672192, 20.887630 +1.816667, 98.605488, 18.104345, 18.290369 +1.833333, 98.876513, 15.854970, 16.015847 +1.850000, 99.113858, 13.884686, 14.024010 +1.866667, 99.321703, 12.158953, 12.279765 +1.883333, 99.503712, 10.647487, 10.752364 +1.900000, 99.663092, 9.323737, 9.414872 +1.916667, 99.800047, 8.011906, 8.089621 +1.933333, 99.800161, 0.006681, 0.006743 +1.950000, 99.800161, 0.000000, 0.000000 +1.966667, 99.800161, 0.000000, 0.000000 +1.983333, 99.800161, 0.000000, 0.000000 +2.000000, 99.800161, 0.000000, 0.000000 +2.016667, 99.800161, 0.000000, 0.000000 +2.033333, 99.800161, 0.000000, 0.000000 +2.050000, 99.800161, 0.000000, 0.000000 +2.066667, 99.800161, 0.000000, 0.000000 +2.083333, 99.800161, 0.000000, 0.000000 +2.100000, 99.800161, 0.000000, 0.000000 +2.116667, 99.800161, 0.000000, 0.000000 +2.133333, 99.800161, 0.000000, 0.000000 +2.150000, 99.800161, 0.000000, 0.000000 +2.166667, 99.800161, 0.000000, 0.000000 +2.183333, 99.800161, 0.000000, 0.000000 +2.200000, 99.800161, 0.000000, 0.000000 +2.216667, 99.800161, 0.000000, 0.000000 +2.233333, 99.800161, 0.000000, 0.000000 +2.250000, 99.800161, 0.000000, 0.000000 +2.266667, 99.800161, 0.000000, 0.000000 +2.283333, 99.800161, 0.000000, 0.000000 +2.300000, 99.800161, 0.000000, 0.000000 +2.316667, 99.800161, 0.000000, 0.000000 +2.333333, 99.800161, 0.000000, 0.000000 +2.350000, 99.800161, 0.000000, 0.000000 +2.366667, 99.800161, 0.000000, 0.000000 +2.383333, 99.800161, 0.000000, 0.000000 +2.400000, 99.800161, 0.000000, 0.000000 +2.416667, 99.800161, 0.000000, 0.000000 +2.433333, 99.800161, 0.000000, 0.000000 +2.450000, 99.800161, 0.000000, 0.000000 +2.466667, 99.800161, 0.000000, 0.000000 +2.483333, 99.800161, 0.000000, 0.000000 +2.500000, 99.800161, 0.000000, 0.000000 +2.516667, 99.800161, 0.000000, 0.000000 +2.533333, 99.800161, 0.000000, 0.000000 +2.550000, 99.800161, 0.000000, 0.000000 +2.566667, 99.800161, 0.000000, 0.000000 +2.583333, 99.800161, 0.000000, 0.000000 +2.600000, 99.800161, 0.000000, 0.000000 +2.616667, 99.800161, 0.000000, 0.000000 +2.633333, 99.800161, 0.000000, 0.000000 +2.650000, 99.800161, 0.000000, 0.000000 +2.666667, 99.800161, 0.000000, 0.000000 +2.683333, 99.800161, 0.000000, 0.000000 +2.700000, 99.800161, 0.000000, 0.000000 +2.716667, 99.800161, 0.000000, 0.000000 +2.733333, 99.800161, 0.000000, 0.000000 +2.750000, 99.800161, 0.000000, 0.000000 +2.766667, 99.800161, 0.000000, 0.000000 +2.783333, 99.800161, 0.000000, 0.000000 +2.800000, 99.800161, 0.000000, 0.000000 +2.816667, 99.800161, 0.000000, 0.000000 +2.833333, 99.800161, 0.000000, 0.000000 +2.850000, 99.800161, 0.000000, 0.000000 +2.866667, 99.800161, 0.000000, 0.000000 +2.883333, 99.800161, 0.000000, 0.000000 +2.900000, 99.800161, 0.000000, 0.000000 +2.916667, 99.800161, 0.000000, 0.000000 +2.933333, 99.800161, 0.000000, 0.000000 +2.950000, 99.800161, 0.000000, 0.000000 +2.966667, 99.800161, 0.000000, 0.000000 +2.983333, 99.800161, 0.000000, 0.000000 +3.000000, 99.800161, 0.000000, 0.000000 +3.016667, 99.800161, 0.000000, 0.000000 +3.033333, 99.800161, 0.000000, 0.000000 +3.050000, 99.800161, 0.000000, 0.000000 +3.066667, 99.800161, 0.000000, 0.000000 +3.083333, 99.800161, 0.000000, 0.000000 +3.100000, 99.800161, 0.000000, 0.000000 +3.116667, 99.800161, 0.000000, 0.000000 +3.133333, 99.800161, 0.000000, 0.000000 +3.150000, 99.800161, 0.000000, 0.000000 +3.166667, 99.800161, 0.000000, 0.000000 +3.183333, 99.800161, 0.000000, 0.000000 +3.200000, 99.800161, 0.000000, 0.000000 +3.216667, 99.800161, 0.000000, 0.000000 +3.233333, 99.800161, 0.000000, 0.000000 +3.250000, 99.800161, 0.000000, 0.000000 +3.266667, 99.800161, 0.000000, 0.000000 +3.283333, 99.800161, 0.000000, 0.000000 +3.300000, 99.800161, 0.000000, 0.000000 +3.316667, 99.800161, 0.000000, 0.000000 +3.333333, 99.800161, 0.000000, 0.000000 +3.350000, 99.800161, 0.000000, 0.000000 +3.366667, 99.800161, 0.000000, 0.000000 +3.383333, 99.800161, 0.000000, 0.000000 +3.400000, 99.800161, 0.000000, 0.000000 +3.416667, 99.800161, 0.000000, 0.000000 +3.433333, 99.800161, 0.000000, 0.000000 +3.450000, 99.800161, 0.000000, 0.000000 +3.466667, 99.800161, 0.000000, 0.000000 +3.483333, 99.800161, 0.000000, 0.000000 +3.500000, 99.800161, 0.000000, 0.000000 +3.516667, 99.800161, 0.000000, 0.000000 +3.533333, 99.800161, 0.000000, 0.000000 +3.550000, 99.800161, 0.000000, 0.000000 +3.566667, 99.800161, 0.000000, 0.000000 +3.583333, 99.800161, 0.000000, 0.000000 +3.600000, 99.800161, 0.000000, 0.000000 +3.616667, 99.800161, 0.000000, 0.000000 +3.633333, 99.800161, 0.000000, 0.000000 +3.650000, 99.800161, 0.000000, 0.000000 +3.666667, 99.800161, 0.000000, 0.000000 +3.683333, 99.800161, 0.000000, 0.000000 +3.700000, 99.800161, 0.000000, 0.000000 +3.716667, 99.800161, 0.000000, 0.000000 +3.733333, 99.800161, 0.000000, 0.000000 +3.750000, 99.800161, 0.000000, 0.000000 +3.766667, 99.800161, 0.000000, 0.000000 +3.783333, 99.800161, 0.000000, 0.000000 +3.800000, 99.800161, 0.000000, 0.000000 +3.816667, 99.800161, 0.000000, 0.000000 +3.833333, 99.800161, 0.000000, 0.000000 +3.850000, 99.800161, 0.000000, 0.000000 +3.866667, 99.800161, 0.000000, 0.000000 +3.883333, 99.800161, 0.000000, 0.000000 +3.900000, 99.800161, 0.000000, 0.000000 +3.916667, 99.800161, 0.000000, 0.000000 +3.933333, 99.800161, 0.000000, 0.000000 +3.950000, 99.800161, 0.000000, 0.000000 +3.966667, 99.800161, 0.000000, 0.000000 +3.983333, 99.800161, 0.000000, 0.000000 +4.000000, 99.800161, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_150_bev300_400kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_150_bev300_400kW.csv new file mode 100644 index 0000000..8e4234f --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_150_bev300_400kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 1.406038, 82.253252, 83.871310 +1.016667, 3.442095, 119.109288, 121.831334 +1.033333, 5.491283, 119.877541, 122.625145 +1.050000, 7.548070, 120.321989, 123.084427 +1.066667, 9.612469, 120.767390, 123.544729 +1.083333, 11.684511, 121.214405, 124.006734 +1.100000, 13.764221, 121.663040, 124.470450 +1.116667, 15.851627, 122.113301, 124.935882 +1.133333, 17.946759, 122.565193, 125.403036 +1.150000, 20.049643, 123.018722, 125.871918 +1.166667, 22.160308, 123.473894, 126.342536 +1.183333, 24.278782, 123.930714, 126.814895 +1.200000, 26.405093, 124.389188, 127.289002 +1.216667, 28.539269, 124.849322, 127.764862 +1.233333, 30.681340, 125.311121, 128.242483 +1.250000, 32.831333, 125.774591, 128.721870 +1.266667, 34.989277, 126.239738, 129.203030 +1.283333, 37.155201, 126.706568, 129.685969 +1.300000, 39.329134, 127.175087, 130.170694 +1.316667, 41.511105, 127.645300, 130.657212 +1.333333, 43.701143, 128.117213, 131.145528 +1.350000, 45.899277, 128.590832, 131.635650 +1.366667, 48.105536, 129.066164, 132.127583 +1.383333, 50.320024, 129.547544, 132.625818 +1.400000, 52.547221, 130.291057, 133.395445 +1.416667, 54.789837, 131.193001, 134.329199 +1.433333, 57.047980, 132.101388, 135.269770 +1.450000, 59.321757, 133.015920, 136.216853 +1.466667, 61.610618, 133.898403, 137.130888 +1.483333, 63.912780, 134.676442, 137.936859 +1.500000, 66.226971, 135.380220, 138.665997 +1.516667, 68.551831, 136.004274, 139.312613 +1.533333, 70.887401, 136.630850, 139.961911 +1.550000, 73.233730, 137.260244, 140.614200 +1.566667, 75.590866, 137.892468, 141.269494 +1.583333, 77.958858, 138.527535, 141.927806 +1.600000, 80.337855, 139.171320, 142.595230 +1.616667, 82.734140, 140.182646, 143.643840 +1.633333, 85.151566, 141.419445, 144.926483 +1.650000, 87.590325, 142.667414, 146.220989 +1.666667, 90.050605, 143.926377, 147.527182 +1.683333, 92.543505, 145.834645, 149.507581 +1.700000, 95.000404, 143.728570, 147.321935 +1.716667, 96.786236, 104.471191, 106.726192 +1.733333, 97.967148, 69.083376, 70.364481 +1.750000, 98.743484, 45.415604, 46.166365 +1.766667, 99.254034, 29.867174, 30.321658 +1.783333, 99.589902, 19.648280, 19.930367 +1.800000, 99.800517, 12.321017, 12.490333 +1.816667, 99.800693, 0.010262, 0.010392 +1.833333, 99.800693, 0.000000, 0.000000 +1.850000, 99.800693, 0.000000, 0.000000 +1.866667, 99.800693, 0.000000, 0.000000 +1.883333, 99.800693, 0.000000, 0.000000 +1.900000, 99.800693, 0.000000, 0.000000 +1.916667, 99.800693, 0.000000, 0.000000 +1.933333, 99.800693, 0.000000, 0.000000 +1.950000, 99.800693, 0.000000, 0.000000 +1.966667, 99.800693, 0.000000, 0.000000 +1.983333, 99.800693, 0.000000, 0.000000 +2.000000, 99.800693, 0.000000, 0.000000 +2.016667, 99.800693, 0.000000, 0.000000 +2.033333, 99.800693, 0.000000, 0.000000 +2.050000, 99.800693, 0.000000, 0.000000 +2.066667, 99.800693, 0.000000, 0.000000 +2.083333, 99.800693, 0.000000, 0.000000 +2.100000, 99.800693, 0.000000, 0.000000 +2.116667, 99.800693, 0.000000, 0.000000 +2.133333, 99.800693, 0.000000, 0.000000 +2.150000, 99.800693, 0.000000, 0.000000 +2.166667, 99.800693, 0.000000, 0.000000 +2.183333, 99.800693, 0.000000, 0.000000 +2.200000, 99.800693, 0.000000, 0.000000 +2.216667, 99.800693, 0.000000, 0.000000 +2.233333, 99.800693, 0.000000, 0.000000 +2.250000, 99.800693, 0.000000, 0.000000 +2.266667, 99.800693, 0.000000, 0.000000 +2.283333, 99.800693, 0.000000, 0.000000 +2.300000, 99.800693, 0.000000, 0.000000 +2.316667, 99.800693, 0.000000, 0.000000 +2.333333, 99.800693, 0.000000, 0.000000 +2.350000, 99.800693, 0.000000, 0.000000 +2.366667, 99.800693, 0.000000, 0.000000 +2.383333, 99.800693, 0.000000, 0.000000 +2.400000, 99.800693, 0.000000, 0.000000 +2.416667, 99.800693, 0.000000, 0.000000 +2.433333, 99.800693, 0.000000, 0.000000 +2.450000, 99.800693, 0.000000, 0.000000 +2.466667, 99.800693, 0.000000, 0.000000 +2.483333, 99.800693, 0.000000, 0.000000 +2.500000, 99.800693, 0.000000, 0.000000 +2.516667, 99.800693, 0.000000, 0.000000 +2.533333, 99.800693, 0.000000, 0.000000 +2.550000, 99.800693, 0.000000, 0.000000 +2.566667, 99.800693, 0.000000, 0.000000 +2.583333, 99.800693, 0.000000, 0.000000 +2.600000, 99.800693, 0.000000, 0.000000 +2.616667, 99.800693, 0.000000, 0.000000 +2.633333, 99.800693, 0.000000, 0.000000 +2.650000, 99.800693, 0.000000, 0.000000 +2.666667, 99.800693, 0.000000, 0.000000 +2.683333, 99.800693, 0.000000, 0.000000 +2.700000, 99.800693, 0.000000, 0.000000 +2.716667, 99.800693, 0.000000, 0.000000 +2.733333, 99.800693, 0.000000, 0.000000 +2.750000, 99.800693, 0.000000, 0.000000 +2.766667, 99.800693, 0.000000, 0.000000 +2.783333, 99.800693, 0.000000, 0.000000 +2.800000, 99.800693, 0.000000, 0.000000 +2.816667, 99.800693, 0.000000, 0.000000 +2.833333, 99.800693, 0.000000, 0.000000 +2.850000, 99.800693, 0.000000, 0.000000 +2.866667, 99.800693, 0.000000, 0.000000 +2.883333, 99.800693, 0.000000, 0.000000 +2.900000, 99.800693, 0.000000, 0.000000 +2.916667, 99.800693, 0.000000, 0.000000 +2.933333, 99.800693, 0.000000, 0.000000 +2.950000, 99.800693, 0.000000, 0.000000 +2.966667, 99.800693, 0.000000, 0.000000 +2.983333, 99.800693, 0.000000, 0.000000 +3.000000, 99.800693, 0.000000, 0.000000 +3.016667, 99.800693, 0.000000, 0.000000 +3.033333, 99.800693, 0.000000, 0.000000 +3.050000, 99.800693, 0.000000, 0.000000 +3.066667, 99.800693, 0.000000, 0.000000 +3.083333, 99.800693, 0.000000, 0.000000 +3.100000, 99.800693, 0.000000, 0.000000 +3.116667, 99.800693, 0.000000, 0.000000 +3.133333, 99.800693, 0.000000, 0.000000 +3.150000, 99.800693, 0.000000, 0.000000 +3.166667, 99.800693, 0.000000, 0.000000 +3.183333, 99.800693, 0.000000, 0.000000 +3.200000, 99.800693, 0.000000, 0.000000 +3.216667, 99.800693, 0.000000, 0.000000 +3.233333, 99.800693, 0.000000, 0.000000 +3.250000, 99.800693, 0.000000, 0.000000 +3.266667, 99.800693, 0.000000, 0.000000 +3.283333, 99.800693, 0.000000, 0.000000 +3.300000, 99.800693, 0.000000, 0.000000 +3.316667, 99.800693, 0.000000, 0.000000 +3.333333, 99.800693, 0.000000, 0.000000 +3.350000, 99.800693, 0.000000, 0.000000 +3.366667, 99.800693, 0.000000, 0.000000 +3.383333, 99.800693, 0.000000, 0.000000 +3.400000, 99.800693, 0.000000, 0.000000 +3.416667, 99.800693, 0.000000, 0.000000 +3.433333, 99.800693, 0.000000, 0.000000 +3.450000, 99.800693, 0.000000, 0.000000 +3.466667, 99.800693, 0.000000, 0.000000 +3.483333, 99.800693, 0.000000, 0.000000 +3.500000, 99.800693, 0.000000, 0.000000 +3.516667, 99.800693, 0.000000, 0.000000 +3.533333, 99.800693, 0.000000, 0.000000 +3.550000, 99.800693, 0.000000, 0.000000 +3.566667, 99.800693, 0.000000, 0.000000 +3.583333, 99.800693, 0.000000, 0.000000 +3.600000, 99.800693, 0.000000, 0.000000 +3.616667, 99.800693, 0.000000, 0.000000 +3.633333, 99.800693, 0.000000, 0.000000 +3.650000, 99.800693, 0.000000, 0.000000 +3.666667, 99.800693, 0.000000, 0.000000 +3.683333, 99.800693, 0.000000, 0.000000 +3.700000, 99.800693, 0.000000, 0.000000 +3.716667, 99.800693, 0.000000, 0.000000 +3.733333, 99.800693, 0.000000, 0.000000 +3.750000, 99.800693, 0.000000, 0.000000 +3.766667, 99.800693, 0.000000, 0.000000 +3.783333, 99.800693, 0.000000, 0.000000 +3.800000, 99.800693, 0.000000, 0.000000 +3.816667, 99.800693, 0.000000, 0.000000 +3.833333, 99.800693, 0.000000, 0.000000 +3.850000, 99.800693, 0.000000, 0.000000 +3.866667, 99.800693, 0.000000, 0.000000 +3.883333, 99.800693, 0.000000, 0.000000 +3.900000, 99.800693, 0.000000, 0.000000 +3.916667, 99.800693, 0.000000, 0.000000 +3.933333, 99.800693, 0.000000, 0.000000 +3.950000, 99.800693, 0.000000, 0.000000 +3.966667, 99.800693, 0.000000, 0.000000 +3.983333, 99.800693, 0.000000, 0.000000 +4.000000, 99.800693, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_150_bev300_575kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_150_bev300_575kW.csv new file mode 100644 index 0000000..2797aac --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_150_bev300_575kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.919279, 78.598380, 79.953452 +1.016667, 2.267036, 115.233172, 117.466314 +1.033333, 3.646049, 117.905676, 120.209090 +1.050000, 5.028883, 118.232238, 120.544297 +1.066667, 6.415472, 118.553383, 120.873956 +1.083333, 7.805827, 118.875389, 121.204511 +1.100000, 9.199959, 119.198258, 121.535964 +1.116667, 10.597877, 119.521991, 121.868317 +1.133333, 11.999592, 119.846591, 122.201573 +1.150000, 13.405113, 120.172061, 122.535733 +1.166667, 14.814451, 120.498402, 122.870801 +1.183333, 16.227616, 120.825617, 123.206780 +1.200000, 17.644618, 121.153708, 123.543670 +1.216667, 19.065468, 121.482677, 123.881475 +1.233333, 20.490176, 121.812527, 124.220197 +1.250000, 21.918752, 122.143260, 124.559840 +1.266667, 23.351207, 122.474878, 124.900404 +1.283333, 24.787551, 122.807383, 125.241893 +1.300000, 26.227794, 123.140779, 125.584309 +1.316667, 27.671947, 123.475066, 125.927654 +1.333333, 29.120020, 123.810248, 126.271932 +1.350000, 30.572023, 124.146327, 126.617144 +1.366667, 32.027969, 124.483305, 126.963293 +1.383333, 33.487865, 124.821184, 127.310382 +1.400000, 34.951725, 125.159967, 127.658412 +1.416667, 36.419557, 125.499656, 128.007388 +1.433333, 37.891373, 125.840254, 128.357310 +1.450000, 39.367183, 126.181762, 128.708182 +1.466667, 40.846998, 126.524184, 129.060007 +1.483333, 42.330829, 126.867521, 129.412786 +1.500000, 43.818686, 127.211776, 129.766522 +1.516667, 45.310580, 127.556952, 130.121218 +1.533333, 46.806522, 127.903050, 130.476877 +1.550000, 48.306523, 128.250073, 130.833500 +1.566667, 49.810593, 128.598024, 131.191091 +1.583333, 51.319859, 129.042190, 131.647585 +1.600000, 52.836123, 129.640589, 132.262629 +1.616667, 54.359445, 130.244014, 132.882882 +1.633333, 55.889856, 130.850209, 133.506026 +1.650000, 57.427391, 131.459182, 134.132070 +1.666667, 58.972080, 132.070946, 134.761028 +1.683333, 60.523957, 132.685512, 135.392912 +1.700000, 62.083056, 133.302894, 136.027737 +1.716667, 63.649408, 133.923104, 136.665515 +1.733333, 65.222313, 134.483435, 137.241757 +1.750000, 66.800157, 134.905667, 137.676004 +1.766667, 68.382891, 135.323726, 138.105981 +1.783333, 69.970529, 135.743051, 138.537280 +1.800000, 71.563086, 136.163654, 138.969915 +1.816667, 73.160578, 136.585540, 139.403890 +1.833333, 74.763019, 137.008712, 139.839211 +1.850000, 76.370425, 137.433174, 140.275879 +1.866667, 77.982810, 137.858930, 140.713901 +1.883333, 79.600190, 138.285984, 141.153280 +1.900000, 81.223362, 138.781230, 141.662846 +1.916667, 82.854246, 139.440538, 142.341264 +1.933333, 84.492965, 140.110484, 143.030682 +1.950000, 86.139557, 140.783612, 143.723427 +1.966667, 87.794059, 141.459920, 144.419501 +1.983333, 89.456508, 142.139424, 145.118919 +2.000000, 91.131290, 143.193893, 146.204400 +2.016667, 92.832403, 145.445124, 148.522288 +2.033333, 94.561331, 147.823370, 150.971614 +2.050000, 96.318526, 150.240107, 153.461276 +2.066667, 97.764901, 123.665076, 126.122819 +2.083333, 98.683075, 78.503872, 79.856884 +2.100000, 99.255608, 48.951611, 49.711470 +2.116667, 99.613195, 30.573675, 31.015882 +2.133333, 99.801110, 16.066771, 16.285774 +2.150000, 99.801266, 0.013337, 0.013507 +2.166667, 99.801266, 0.000000, 0.000000 +2.183333, 99.801266, 0.000000, 0.000000 +2.200000, 99.801266, 0.000000, 0.000000 +2.216667, 99.801266, 0.000000, 0.000000 +2.233333, 99.801266, 0.000000, 0.000000 +2.250000, 99.801266, 0.000000, 0.000000 +2.266667, 99.801266, 0.000000, 0.000000 +2.283333, 99.801266, 0.000000, 0.000000 +2.300000, 99.801266, 0.000000, 0.000000 +2.316667, 99.801266, 0.000000, 0.000000 +2.333333, 99.801266, 0.000000, 0.000000 +2.350000, 99.801266, 0.000000, 0.000000 +2.366667, 99.801266, 0.000000, 0.000000 +2.383333, 99.801266, 0.000000, 0.000000 +2.400000, 99.801266, 0.000000, 0.000000 +2.416667, 99.801266, 0.000000, 0.000000 +2.433333, 99.801266, 0.000000, 0.000000 +2.450000, 99.801266, 0.000000, 0.000000 +2.466667, 99.801266, 0.000000, 0.000000 +2.483333, 99.801266, 0.000000, 0.000000 +2.500000, 99.801266, 0.000000, 0.000000 +2.516667, 99.801266, 0.000000, 0.000000 +2.533333, 99.801266, 0.000000, 0.000000 +2.550000, 99.801266, 0.000000, 0.000000 +2.566667, 99.801266, 0.000000, 0.000000 +2.583333, 99.801266, 0.000000, 0.000000 +2.600000, 99.801266, 0.000000, 0.000000 +2.616667, 99.801266, 0.000000, 0.000000 +2.633333, 99.801266, 0.000000, 0.000000 +2.650000, 99.801266, 0.000000, 0.000000 +2.666667, 99.801266, 0.000000, 0.000000 +2.683333, 99.801266, 0.000000, 0.000000 +2.700000, 99.801266, 0.000000, 0.000000 +2.716667, 99.801266, 0.000000, 0.000000 +2.733333, 99.801266, 0.000000, 0.000000 +2.750000, 99.801266, 0.000000, 0.000000 +2.766667, 99.801266, 0.000000, 0.000000 +2.783333, 99.801266, 0.000000, 0.000000 +2.800000, 99.801266, 0.000000, 0.000000 +2.816667, 99.801266, 0.000000, 0.000000 +2.833333, 99.801266, 0.000000, 0.000000 +2.850000, 99.801266, 0.000000, 0.000000 +2.866667, 99.801266, 0.000000, 0.000000 +2.883333, 99.801266, 0.000000, 0.000000 +2.900000, 99.801266, 0.000000, 0.000000 +2.916667, 99.801266, 0.000000, 0.000000 +2.933333, 99.801266, 0.000000, 0.000000 +2.950000, 99.801266, 0.000000, 0.000000 +2.966667, 99.801266, 0.000000, 0.000000 +2.983333, 99.801266, 0.000000, 0.000000 +3.000000, 99.801266, 0.000000, 0.000000 +3.016667, 99.801266, 0.000000, 0.000000 +3.033333, 99.801266, 0.000000, 0.000000 +3.050000, 99.801266, 0.000000, 0.000000 +3.066667, 99.801266, 0.000000, 0.000000 +3.083333, 99.801266, 0.000000, 0.000000 +3.100000, 99.801266, 0.000000, 0.000000 +3.116667, 99.801266, 0.000000, 0.000000 +3.133333, 99.801266, 0.000000, 0.000000 +3.150000, 99.801266, 0.000000, 0.000000 +3.166667, 99.801266, 0.000000, 0.000000 +3.183333, 99.801266, 0.000000, 0.000000 +3.200000, 99.801266, 0.000000, 0.000000 +3.216667, 99.801266, 0.000000, 0.000000 +3.233333, 99.801266, 0.000000, 0.000000 +3.250000, 99.801266, 0.000000, 0.000000 +3.266667, 99.801266, 0.000000, 0.000000 +3.283333, 99.801266, 0.000000, 0.000000 +3.300000, 99.801266, 0.000000, 0.000000 +3.316667, 99.801266, 0.000000, 0.000000 +3.333333, 99.801266, 0.000000, 0.000000 +3.350000, 99.801266, 0.000000, 0.000000 +3.366667, 99.801266, 0.000000, 0.000000 +3.383333, 99.801266, 0.000000, 0.000000 +3.400000, 99.801266, 0.000000, 0.000000 +3.416667, 99.801266, 0.000000, 0.000000 +3.433333, 99.801266, 0.000000, 0.000000 +3.450000, 99.801266, 0.000000, 0.000000 +3.466667, 99.801266, 0.000000, 0.000000 +3.483333, 99.801266, 0.000000, 0.000000 +3.500000, 99.801266, 0.000000, 0.000000 +3.516667, 99.801266, 0.000000, 0.000000 +3.533333, 99.801266, 0.000000, 0.000000 +3.550000, 99.801266, 0.000000, 0.000000 +3.566667, 99.801266, 0.000000, 0.000000 +3.583333, 99.801266, 0.000000, 0.000000 +3.600000, 99.801266, 0.000000, 0.000000 +3.616667, 99.801266, 0.000000, 0.000000 +3.633333, 99.801266, 0.000000, 0.000000 +3.650000, 99.801266, 0.000000, 0.000000 +3.666667, 99.801266, 0.000000, 0.000000 +3.683333, 99.801266, 0.000000, 0.000000 +3.700000, 99.801266, 0.000000, 0.000000 +3.716667, 99.801266, 0.000000, 0.000000 +3.733333, 99.801266, 0.000000, 0.000000 +3.750000, 99.801266, 0.000000, 0.000000 +3.766667, 99.801266, 0.000000, 0.000000 +3.783333, 99.801266, 0.000000, 0.000000 +3.800000, 99.801266, 0.000000, 0.000000 +3.816667, 99.801266, 0.000000, 0.000000 +3.833333, 99.801266, 0.000000, 0.000000 +3.850000, 99.801266, 0.000000, 0.000000 +3.866667, 99.801266, 0.000000, 0.000000 +3.883333, 99.801266, 0.000000, 0.000000 +3.900000, 99.801266, 0.000000, 0.000000 +3.916667, 99.801266, 0.000000, 0.000000 +3.933333, 99.801266, 0.000000, 0.000000 +3.950000, 99.801266, 0.000000, 0.000000 +3.966667, 99.801266, 0.000000, 0.000000 +3.983333, 99.801266, 0.000000, 0.000000 +4.000000, 99.801266, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_350_bev150_150kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_350_bev150_150kW.csv new file mode 100644 index 0000000..b6a05e8 --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_350_bev150_150kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 3.108154, 83.920152, 85.581255 +1.016667, 7.759652, 125.590452, 128.755345 +1.033333, 12.602894, 130.767536, 134.151784 +1.050000, 17.509087, 132.467211, 135.925062 +1.066667, 22.458963, 133.646647, 137.156035 +1.083333, 27.452845, 134.834828, 138.396519 +1.100000, 32.491112, 136.033197, 139.648028 +1.116667, 37.574143, 137.241835, 140.910659 +1.133333, 42.702322, 138.460823, 142.184507 +1.150000, 47.876034, 139.690242, 143.469666 +1.166667, 53.095670, 140.930175, 144.766236 +1.183333, 58.361622, 142.180703, 146.074311 +1.200000, 63.674286, 143.441911, 147.393992 +1.216667, 69.034059, 144.713882, 148.725377 +1.233333, 74.308697, 142.415216, 146.319663 +1.250000, 78.744238, 119.759619, 122.686144 +1.266667, 82.356172, 97.522215, 99.623423 +1.283333, 85.292292, 79.275235, 80.797185 +1.300000, 87.677273, 64.394506, 65.508513 +1.316667, 89.613414, 52.275781, 53.099855 +1.333333, 91.184422, 42.417230, 43.033192 +1.350000, 92.458660, 34.404421, 34.869435 +1.366667, 93.501314, 28.151649, 28.510141 +1.383333, 94.405356, 24.409143, 24.708583 +1.400000, 95.197412, 21.385508, 21.639804 +1.416667, 95.891331, 18.735811, 18.952426 +1.433333, 96.499226, 16.413163, 16.598191 +1.450000, 97.031725, 14.377489, 14.535938 +1.466667, 97.498153, 12.593556, 12.729560 +1.483333, 97.906687, 11.030405, 11.147393 +1.500000, 98.264496, 9.660843, 9.761668 +1.516667, 98.577866, 8.460997, 8.548045 +1.533333, 98.852307, 7.409913, 7.485184 +1.550000, 99.092648, 6.489206, 6.554386 +1.566667, 99.303120, 5.682750, 5.739264 +1.583333, 99.487432, 4.976403, 5.025458 +1.600000, 99.648830, 4.357764, 4.400389 +1.616667, 99.790162, 3.815963, 3.853033 +1.633333, 99.800376, 0.275780, 0.278339 +1.650000, 99.800385, 0.000221, 0.000223 +1.666667, 99.800385, 0.000000, 0.000000 +1.683333, 99.800385, 0.000000, 0.000000 +1.700000, 99.800385, 0.000000, 0.000000 +1.716667, 99.800385, 0.000000, 0.000000 +1.733333, 99.800385, 0.000000, 0.000000 +1.750000, 99.800385, 0.000000, 0.000000 +1.766667, 99.800385, 0.000000, 0.000000 +1.783333, 99.800385, 0.000000, 0.000000 +1.800000, 99.800385, 0.000000, 0.000000 +1.816667, 99.800385, 0.000000, 0.000000 +1.833333, 99.800385, 0.000000, 0.000000 +1.850000, 99.800385, 0.000000, 0.000000 +1.866667, 99.800385, 0.000000, 0.000000 +1.883333, 99.800385, 0.000000, 0.000000 +1.900000, 99.800385, 0.000000, 0.000000 +1.916667, 99.800385, 0.000000, 0.000000 +1.933333, 99.800385, 0.000000, 0.000000 +1.950000, 99.800385, 0.000000, 0.000000 +1.966667, 99.800385, 0.000000, 0.000000 +1.983333, 99.800385, 0.000000, 0.000000 +2.000000, 99.800385, 0.000000, 0.000000 +2.016667, 99.800385, 0.000000, 0.000000 +2.033333, 99.800385, 0.000000, 0.000000 +2.050000, 99.800385, 0.000000, 0.000000 +2.066667, 99.800385, 0.000000, 0.000000 +2.083333, 99.800385, 0.000000, 0.000000 +2.100000, 99.800385, 0.000000, 0.000000 +2.116667, 99.800385, 0.000000, 0.000000 +2.133333, 99.800385, 0.000000, 0.000000 +2.150000, 99.800385, 0.000000, 0.000000 +2.166667, 99.800385, 0.000000, 0.000000 +2.183333, 99.800385, 0.000000, 0.000000 +2.200000, 99.800385, 0.000000, 0.000000 +2.216667, 99.800385, 0.000000, 0.000000 +2.233333, 99.800385, 0.000000, 0.000000 +2.250000, 99.800385, 0.000000, 0.000000 +2.266667, 99.800385, 0.000000, 0.000000 +2.283333, 99.800385, 0.000000, 0.000000 +2.300000, 99.800385, 0.000000, 0.000000 +2.316667, 99.800385, 0.000000, 0.000000 +2.333333, 99.800385, 0.000000, 0.000000 +2.350000, 99.800385, 0.000000, 0.000000 +2.366667, 99.800385, 0.000000, 0.000000 +2.383333, 99.800385, 0.000000, 0.000000 +2.400000, 99.800385, 0.000000, 0.000000 +2.416667, 99.800385, 0.000000, 0.000000 +2.433333, 99.800385, 0.000000, 0.000000 +2.450000, 99.800385, 0.000000, 0.000000 +2.466667, 99.800385, 0.000000, 0.000000 +2.483333, 99.800385, 0.000000, 0.000000 +2.500000, 99.800385, 0.000000, 0.000000 +2.516667, 99.800385, 0.000000, 0.000000 +2.533333, 99.800385, 0.000000, 0.000000 +2.550000, 99.800385, 0.000000, 0.000000 +2.566667, 99.800385, 0.000000, 0.000000 +2.583333, 99.800385, 0.000000, 0.000000 +2.600000, 99.800385, 0.000000, 0.000000 +2.616667, 99.800385, 0.000000, 0.000000 +2.633333, 99.800385, 0.000000, 0.000000 +2.650000, 99.800385, 0.000000, 0.000000 +2.666667, 99.800385, 0.000000, 0.000000 +2.683333, 99.800385, 0.000000, 0.000000 +2.700000, 99.800385, 0.000000, 0.000000 +2.716667, 99.800385, 0.000000, 0.000000 +2.733333, 99.800385, 0.000000, 0.000000 +2.750000, 99.800385, 0.000000, 0.000000 +2.766667, 99.800385, 0.000000, 0.000000 +2.783333, 99.800385, 0.000000, 0.000000 +2.800000, 99.800385, 0.000000, 0.000000 +2.816667, 99.800385, 0.000000, 0.000000 +2.833333, 99.800385, 0.000000, 0.000000 +2.850000, 99.800385, 0.000000, 0.000000 +2.866667, 99.800385, 0.000000, 0.000000 +2.883333, 99.800385, 0.000000, 0.000000 +2.900000, 99.800385, 0.000000, 0.000000 +2.916667, 99.800385, 0.000000, 0.000000 +2.933333, 99.800385, 0.000000, 0.000000 +2.950000, 99.800385, 0.000000, 0.000000 +2.966667, 99.800385, 0.000000, 0.000000 +2.983333, 99.800385, 0.000000, 0.000000 +3.000000, 99.800385, 0.000000, 0.000000 +3.016667, 99.800385, 0.000000, 0.000000 +3.033333, 99.800385, 0.000000, 0.000000 +3.050000, 99.800385, 0.000000, 0.000000 +3.066667, 99.800385, 0.000000, 0.000000 +3.083333, 99.800385, 0.000000, 0.000000 +3.100000, 99.800385, 0.000000, 0.000000 +3.116667, 99.800385, 0.000000, 0.000000 +3.133333, 99.800385, 0.000000, 0.000000 +3.150000, 99.800385, 0.000000, 0.000000 +3.166667, 99.800385, 0.000000, 0.000000 +3.183333, 99.800385, 0.000000, 0.000000 +3.200000, 99.800385, 0.000000, 0.000000 +3.216667, 99.800385, 0.000000, 0.000000 +3.233333, 99.800385, 0.000000, 0.000000 +3.250000, 99.800385, 0.000000, 0.000000 +3.266667, 99.800385, 0.000000, 0.000000 +3.283333, 99.800385, 0.000000, 0.000000 +3.300000, 99.800385, 0.000000, 0.000000 +3.316667, 99.800385, 0.000000, 0.000000 +3.333333, 99.800385, 0.000000, 0.000000 +3.350000, 99.800385, 0.000000, 0.000000 +3.366667, 99.800385, 0.000000, 0.000000 +3.383333, 99.800385, 0.000000, 0.000000 +3.400000, 99.800385, 0.000000, 0.000000 +3.416667, 99.800385, 0.000000, 0.000000 +3.433333, 99.800385, 0.000000, 0.000000 +3.450000, 99.800385, 0.000000, 0.000000 +3.466667, 99.800385, 0.000000, 0.000000 +3.483333, 99.800385, 0.000000, 0.000000 +3.500000, 99.800385, 0.000000, 0.000000 +3.516667, 99.800385, 0.000000, 0.000000 +3.533333, 99.800385, 0.000000, 0.000000 +3.550000, 99.800385, 0.000000, 0.000000 +3.566667, 99.800385, 0.000000, 0.000000 +3.583333, 99.800385, 0.000000, 0.000000 +3.600000, 99.800385, 0.000000, 0.000000 +3.616667, 99.800385, 0.000000, 0.000000 +3.633333, 99.800385, 0.000000, 0.000000 +3.650000, 99.800385, 0.000000, 0.000000 +3.666667, 99.800385, 0.000000, 0.000000 +3.683333, 99.800385, 0.000000, 0.000000 +3.700000, 99.800385, 0.000000, 0.000000 +3.716667, 99.800385, 0.000000, 0.000000 +3.733333, 99.800385, 0.000000, 0.000000 +3.750000, 99.800385, 0.000000, 0.000000 +3.766667, 99.800385, 0.000000, 0.000000 +3.783333, 99.800385, 0.000000, 0.000000 +3.800000, 99.800385, 0.000000, 0.000000 +3.816667, 99.800385, 0.000000, 0.000000 +3.833333, 99.800385, 0.000000, 0.000000 +3.850000, 99.800385, 0.000000, 0.000000 +3.866667, 99.800385, 0.000000, 0.000000 +3.883333, 99.800385, 0.000000, 0.000000 +3.900000, 99.800385, 0.000000, 0.000000 +3.916667, 99.800385, 0.000000, 0.000000 +3.933333, 99.800385, 0.000000, 0.000000 +3.950000, 99.800385, 0.000000, 0.000000 +3.966667, 99.800385, 0.000000, 0.000000 +3.983333, 99.800385, 0.000000, 0.000000 +4.000000, 99.800385, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_350_bev150_ld1_50kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_350_bev150_ld1_50kW.csv new file mode 100644 index 0000000..e776440 --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_350_bev150_ld1_50kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.994041, 26.839094, 27.176475 +1.016667, 2.424467, 38.621519, 39.163948 +1.033333, 3.925016, 40.514819, 41.093469 +1.050000, 5.473405, 41.806512, 42.410395 +1.066667, 7.039795, 42.292529, 42.906017 +1.083333, 8.624229, 42.779704, 43.402878 +1.100000, 10.226775, 43.268745, 43.901705 +1.116667, 11.839072, 43.532013, 44.170265 +1.133333, 13.456069, 43.658920, 44.299730 +1.150000, 15.077769, 43.785920, 44.429293 +1.166667, 16.704187, 43.913285, 44.559234 +1.183333, 18.335336, 44.041017, 44.689552 +1.200000, 19.971229, 44.169116, 44.820250 +1.216667, 21.611881, 44.297583, 44.951327 +1.233333, 23.257304, 44.426420, 45.082786 +1.250000, 24.907512, 44.555628, 45.214627 +1.266667, 26.562520, 44.685207, 45.346852 +1.283333, 28.222340, 44.815159, 45.479461 +1.300000, 29.886988, 44.945485, 45.612455 +1.316667, 31.556476, 45.076185, 45.745837 +1.333333, 33.230819, 45.207261, 45.879606 +1.350000, 34.910031, 45.338714, 46.013765 +1.366667, 36.594125, 45.470545, 46.148313 +1.383333, 38.283116, 45.602755, 46.283253 +1.400000, 39.977018, 45.735345, 46.418585 +1.416667, 41.675844, 45.868316, 46.554310 +1.433333, 43.379610, 46.001669, 46.690430 +1.450000, 45.088328, 46.135405, 46.826946 +1.466667, 46.802015, 46.269526, 46.963859 +1.483333, 48.520682, 46.404032, 47.101169 +1.500000, 50.244346, 46.538924, 47.238879 +1.516667, 51.973021, 46.674204, 47.376989 +1.533333, 53.706720, 46.809873, 47.515501 +1.550000, 55.445458, 46.945931, 47.654415 +1.566667, 57.189250, 47.082380, 47.793733 +1.583333, 58.938110, 47.219221, 47.933456 +1.600000, 60.692052, 47.356456, 48.073585 +1.616667, 62.451093, 47.494084, 48.214121 +1.633333, 64.215245, 47.632107, 48.355066 +1.650000, 65.984523, 47.770527, 48.496420 +1.666667, 67.758944, 47.909344, 48.638185 +1.683333, 69.538520, 48.048560, 48.780362 +1.700000, 71.323267, 48.188175, 48.922952 +1.716667, 73.113200, 48.328192, 49.065956 +1.733333, 74.908334, 48.468610, 49.209376 +1.750000, 76.708683, 48.609431, 49.353213 +1.766667, 78.514263, 48.750656, 49.497468 +1.783333, 80.325088, 48.892287, 49.642141 +1.800000, 82.141175, 49.034324, 49.787235 +1.816667, 83.962536, 49.176769, 49.932750 +1.833333, 85.789189, 49.319622, 50.078689 +1.850000, 87.621148, 49.462885, 50.225051 +1.866667, 89.458428, 49.606559, 50.371838 +1.883333, 91.207885, 47.235352, 47.949927 +1.900000, 92.691269, 40.051362, 40.621062 +1.916667, 93.941252, 33.749548, 34.202943 +1.933333, 94.994269, 28.431444, 28.794493 +1.950000, 95.881218, 23.947641, 24.240043 +1.966667, 96.628194, 20.168342, 20.405112 +1.983333, 97.257217, 16.983622, 17.176283 +2.000000, 97.786864, 14.300479, 14.457943 +2.016667, 98.232802, 12.040303, 12.169507 +2.033333, 98.608234, 10.136687, 10.243075 +2.050000, 98.924293, 8.533575, 8.621446 +2.066667, 99.190354, 7.183665, 7.256437 +2.083333, 99.414320, 6.047061, 6.107470 +2.100000, 99.602843, 5.090126, 5.140374 +2.116667, 99.761528, 4.284507, 4.326376 +2.133333, 99.800528, 1.053006, 1.062876 +2.150000, 99.800561, 0.000866, 0.000874 +2.166667, 99.800561, 0.000000, 0.000000 +2.183333, 99.800561, 0.000000, 0.000000 +2.200000, 99.800561, 0.000000, 0.000000 +2.216667, 99.800561, 0.000000, 0.000000 +2.233333, 99.800561, 0.000000, 0.000000 +2.250000, 99.800561, 0.000000, 0.000000 +2.266667, 99.800561, 0.000000, 0.000000 +2.283333, 99.800561, 0.000000, 0.000000 +2.300000, 99.800561, 0.000000, 0.000000 +2.316667, 99.800561, 0.000000, 0.000000 +2.333333, 99.800561, 0.000000, 0.000000 +2.350000, 99.800561, 0.000000, 0.000000 +2.366667, 99.800561, 0.000000, 0.000000 +2.383333, 99.800561, 0.000000, 0.000000 +2.400000, 99.800561, 0.000000, 0.000000 +2.416667, 99.800561, 0.000000, 0.000000 +2.433333, 99.800561, 0.000000, 0.000000 +2.450000, 99.800561, 0.000000, 0.000000 +2.466667, 99.800561, 0.000000, 0.000000 +2.483333, 99.800561, 0.000000, 0.000000 +2.500000, 99.800561, 0.000000, 0.000000 +2.516667, 99.800561, 0.000000, 0.000000 +2.533333, 99.800561, 0.000000, 0.000000 +2.550000, 99.800561, 0.000000, 0.000000 +2.566667, 99.800561, 0.000000, 0.000000 +2.583333, 99.800561, 0.000000, 0.000000 +2.600000, 99.800561, 0.000000, 0.000000 +2.616667, 99.800561, 0.000000, 0.000000 +2.633333, 99.800561, 0.000000, 0.000000 +2.650000, 99.800561, 0.000000, 0.000000 +2.666667, 99.800561, 0.000000, 0.000000 +2.683333, 99.800561, 0.000000, 0.000000 +2.700000, 99.800561, 0.000000, 0.000000 +2.716667, 99.800561, 0.000000, 0.000000 +2.733333, 99.800561, 0.000000, 0.000000 +2.750000, 99.800561, 0.000000, 0.000000 +2.766667, 99.800561, 0.000000, 0.000000 +2.783333, 99.800561, 0.000000, 0.000000 +2.800000, 99.800561, 0.000000, 0.000000 +2.816667, 99.800561, 0.000000, 0.000000 +2.833333, 99.800561, 0.000000, 0.000000 +2.850000, 99.800561, 0.000000, 0.000000 +2.866667, 99.800561, 0.000000, 0.000000 +2.883333, 99.800561, 0.000000, 0.000000 +2.900000, 99.800561, 0.000000, 0.000000 +2.916667, 99.800561, 0.000000, 0.000000 +2.933333, 99.800561, 0.000000, 0.000000 +2.950000, 99.800561, 0.000000, 0.000000 +2.966667, 99.800561, 0.000000, 0.000000 +2.983333, 99.800561, 0.000000, 0.000000 +3.000000, 99.800561, 0.000000, 0.000000 +3.016667, 99.800561, 0.000000, 0.000000 +3.033333, 99.800561, 0.000000, 0.000000 +3.050000, 99.800561, 0.000000, 0.000000 +3.066667, 99.800561, 0.000000, 0.000000 +3.083333, 99.800561, 0.000000, 0.000000 +3.100000, 99.800561, 0.000000, 0.000000 +3.116667, 99.800561, 0.000000, 0.000000 +3.133333, 99.800561, 0.000000, 0.000000 +3.150000, 99.800561, 0.000000, 0.000000 +3.166667, 99.800561, 0.000000, 0.000000 +3.183333, 99.800561, 0.000000, 0.000000 +3.200000, 99.800561, 0.000000, 0.000000 +3.216667, 99.800561, 0.000000, 0.000000 +3.233333, 99.800561, 0.000000, 0.000000 +3.250000, 99.800561, 0.000000, 0.000000 +3.266667, 99.800561, 0.000000, 0.000000 +3.283333, 99.800561, 0.000000, 0.000000 +3.300000, 99.800561, 0.000000, 0.000000 +3.316667, 99.800561, 0.000000, 0.000000 +3.333333, 99.800561, 0.000000, 0.000000 +3.350000, 99.800561, 0.000000, 0.000000 +3.366667, 99.800561, 0.000000, 0.000000 +3.383333, 99.800561, 0.000000, 0.000000 +3.400000, 99.800561, 0.000000, 0.000000 +3.416667, 99.800561, 0.000000, 0.000000 +3.433333, 99.800561, 0.000000, 0.000000 +3.450000, 99.800561, 0.000000, 0.000000 +3.466667, 99.800561, 0.000000, 0.000000 +3.483333, 99.800561, 0.000000, 0.000000 +3.500000, 99.800561, 0.000000, 0.000000 +3.516667, 99.800561, 0.000000, 0.000000 +3.533333, 99.800561, 0.000000, 0.000000 +3.550000, 99.800561, 0.000000, 0.000000 +3.566667, 99.800561, 0.000000, 0.000000 +3.583333, 99.800561, 0.000000, 0.000000 +3.600000, 99.800561, 0.000000, 0.000000 +3.616667, 99.800561, 0.000000, 0.000000 +3.633333, 99.800561, 0.000000, 0.000000 +3.650000, 99.800561, 0.000000, 0.000000 +3.666667, 99.800561, 0.000000, 0.000000 +3.683333, 99.800561, 0.000000, 0.000000 +3.700000, 99.800561, 0.000000, 0.000000 +3.716667, 99.800561, 0.000000, 0.000000 +3.733333, 99.800561, 0.000000, 0.000000 +3.750000, 99.800561, 0.000000, 0.000000 +3.766667, 99.800561, 0.000000, 0.000000 +3.783333, 99.800561, 0.000000, 0.000000 +3.800000, 99.800561, 0.000000, 0.000000 +3.816667, 99.800561, 0.000000, 0.000000 +3.833333, 99.800561, 0.000000, 0.000000 +3.850000, 99.800561, 0.000000, 0.000000 +3.866667, 99.800561, 0.000000, 0.000000 +3.883333, 99.800561, 0.000000, 0.000000 +3.900000, 99.800561, 0.000000, 0.000000 +3.916667, 99.800561, 0.000000, 0.000000 +3.933333, 99.800561, 0.000000, 0.000000 +3.950000, 99.800561, 0.000000, 0.000000 +3.966667, 99.800561, 0.000000, 0.000000 +3.983333, 99.800561, 0.000000, 0.000000 +4.000000, 99.800561, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_350_bev200_ld4_150kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_350_bev200_ld4_150kW.csv new file mode 100644 index 0000000..afae2e0 --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_350_bev200_ld4_150kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 1.407904, 80.250503, 81.371477 +1.016667, 3.490110, 118.685747, 120.615901 +1.033333, 5.676035, 124.597749, 126.668250 +1.050000, 7.904342, 127.013491, 129.142565 +1.066667, 10.173393, 129.335932, 131.521988 +1.083333, 12.465584, 130.654882, 132.873593 +1.100000, 14.767361, 131.201275, 133.433575 +1.116667, 17.078732, 131.748129, 133.994067 +1.133333, 19.399736, 132.297226, 134.556895 +1.150000, 21.730412, 132.848576, 135.122069 +1.166667, 24.070802, 133.402187, 135.689598 +1.183333, 26.420943, 133.958068, 136.259492 +1.200000, 28.780877, 134.516229, 136.831760 +1.216667, 31.150643, 135.076677, 137.406413 +1.233333, 33.530282, 135.639423, 137.983460 +1.250000, 35.919835, 136.204475, 138.562911 +1.266667, 38.319341, 136.771843, 139.144776 +1.283333, 40.728841, 137.341535, 139.729064 +1.300000, 43.148377, 137.913562, 140.315786 +1.316667, 45.577990, 138.487931, 140.904952 +1.333333, 48.017721, 139.064653, 141.496571 +1.350000, 50.467611, 139.643736, 142.090654 +1.366667, 52.927702, 140.225190, 142.687211 +1.383333, 55.398036, 140.809025, 143.286252 +1.400000, 57.878654, 141.395249, 143.887787 +1.416667, 60.369599, 141.983873, 144.491825 +1.433333, 62.870914, 142.574905, 145.098379 +1.450000, 65.382639, 143.168356, 145.707457 +1.466667, 67.904819, 143.764234, 146.319070 +1.483333, 70.437495, 144.362550, 146.933229 +1.500000, 72.980711, 144.963312, 147.549944 +1.516667, 75.534510, 145.566531, 148.169225 +1.533333, 78.098935, 146.172216, 148.791083 +1.550000, 80.674029, 146.780377, 149.415528 +1.566667, 83.259836, 147.391024, 150.042572 +1.583333, 85.855641, 147.960875, 150.627765 +1.600000, 88.172600, 132.066662, 134.320561 +1.616667, 90.043245, 106.626776, 108.283826 +1.633333, 91.548999, 85.827940, 87.055286 +1.650000, 92.760652, 69.064224, 69.983095 +1.666667, 93.759141, 56.913886, 57.630175 +1.683333, 94.631392, 49.718286, 50.322890 +1.700000, 95.395565, 43.557908, 44.071779 +1.716667, 96.065015, 38.158619, 38.596662 +1.733333, 96.651442, 33.426316, 33.800731 +1.750000, 97.165111, 29.279139, 29.599967 +1.766667, 97.615026, 25.645150, 25.920689 +1.783333, 98.009081, 22.461161, 22.698296 +1.800000, 98.354198, 19.671689, 19.876158 +1.816667, 98.656445, 17.228037, 17.404640 +1.833333, 98.921137, 15.087473, 15.240243 +1.850000, 99.152936, 13.212514, 13.344849 +1.866667, 99.355923, 11.570287, 11.685063 +1.883333, 99.533677, 10.131968, 10.231624 +1.900000, 99.689331, 8.872287, 8.958900 +1.916667, 99.800114, 6.314609, 6.375309 +1.933333, 99.800206, 0.005261, 0.005310 +1.950000, 99.800206, 0.000000, 0.000000 +1.966667, 99.800206, 0.000000, 0.000000 +1.983333, 99.800206, 0.000000, 0.000000 +2.000000, 99.800206, 0.000000, 0.000000 +2.016667, 99.800206, 0.000000, 0.000000 +2.033333, 99.800206, 0.000000, 0.000000 +2.050000, 99.800206, 0.000000, 0.000000 +2.066667, 99.800206, 0.000000, 0.000000 +2.083333, 99.800206, 0.000000, 0.000000 +2.100000, 99.800206, 0.000000, 0.000000 +2.116667, 99.800206, 0.000000, 0.000000 +2.133333, 99.800206, 0.000000, 0.000000 +2.150000, 99.800206, 0.000000, 0.000000 +2.166667, 99.800206, 0.000000, 0.000000 +2.183333, 99.800206, 0.000000, 0.000000 +2.200000, 99.800206, 0.000000, 0.000000 +2.216667, 99.800206, 0.000000, 0.000000 +2.233333, 99.800206, 0.000000, 0.000000 +2.250000, 99.800206, 0.000000, 0.000000 +2.266667, 99.800206, 0.000000, 0.000000 +2.283333, 99.800206, 0.000000, 0.000000 +2.300000, 99.800206, 0.000000, 0.000000 +2.316667, 99.800206, 0.000000, 0.000000 +2.333333, 99.800206, 0.000000, 0.000000 +2.350000, 99.800206, 0.000000, 0.000000 +2.366667, 99.800206, 0.000000, 0.000000 +2.383333, 99.800206, 0.000000, 0.000000 +2.400000, 99.800206, 0.000000, 0.000000 +2.416667, 99.800206, 0.000000, 0.000000 +2.433333, 99.800206, 0.000000, 0.000000 +2.450000, 99.800206, 0.000000, 0.000000 +2.466667, 99.800206, 0.000000, 0.000000 +2.483333, 99.800206, 0.000000, 0.000000 +2.500000, 99.800206, 0.000000, 0.000000 +2.516667, 99.800206, 0.000000, 0.000000 +2.533333, 99.800206, 0.000000, 0.000000 +2.550000, 99.800206, 0.000000, 0.000000 +2.566667, 99.800206, 0.000000, 0.000000 +2.583333, 99.800206, 0.000000, 0.000000 +2.600000, 99.800206, 0.000000, 0.000000 +2.616667, 99.800206, 0.000000, 0.000000 +2.633333, 99.800206, 0.000000, 0.000000 +2.650000, 99.800206, 0.000000, 0.000000 +2.666667, 99.800206, 0.000000, 0.000000 +2.683333, 99.800206, 0.000000, 0.000000 +2.700000, 99.800206, 0.000000, 0.000000 +2.716667, 99.800206, 0.000000, 0.000000 +2.733333, 99.800206, 0.000000, 0.000000 +2.750000, 99.800206, 0.000000, 0.000000 +2.766667, 99.800206, 0.000000, 0.000000 +2.783333, 99.800206, 0.000000, 0.000000 +2.800000, 99.800206, 0.000000, 0.000000 +2.816667, 99.800206, 0.000000, 0.000000 +2.833333, 99.800206, 0.000000, 0.000000 +2.850000, 99.800206, 0.000000, 0.000000 +2.866667, 99.800206, 0.000000, 0.000000 +2.883333, 99.800206, 0.000000, 0.000000 +2.900000, 99.800206, 0.000000, 0.000000 +2.916667, 99.800206, 0.000000, 0.000000 +2.933333, 99.800206, 0.000000, 0.000000 +2.950000, 99.800206, 0.000000, 0.000000 +2.966667, 99.800206, 0.000000, 0.000000 +2.983333, 99.800206, 0.000000, 0.000000 +3.000000, 99.800206, 0.000000, 0.000000 +3.016667, 99.800206, 0.000000, 0.000000 +3.033333, 99.800206, 0.000000, 0.000000 +3.050000, 99.800206, 0.000000, 0.000000 +3.066667, 99.800206, 0.000000, 0.000000 +3.083333, 99.800206, 0.000000, 0.000000 +3.100000, 99.800206, 0.000000, 0.000000 +3.116667, 99.800206, 0.000000, 0.000000 +3.133333, 99.800206, 0.000000, 0.000000 +3.150000, 99.800206, 0.000000, 0.000000 +3.166667, 99.800206, 0.000000, 0.000000 +3.183333, 99.800206, 0.000000, 0.000000 +3.200000, 99.800206, 0.000000, 0.000000 +3.216667, 99.800206, 0.000000, 0.000000 +3.233333, 99.800206, 0.000000, 0.000000 +3.250000, 99.800206, 0.000000, 0.000000 +3.266667, 99.800206, 0.000000, 0.000000 +3.283333, 99.800206, 0.000000, 0.000000 +3.300000, 99.800206, 0.000000, 0.000000 +3.316667, 99.800206, 0.000000, 0.000000 +3.333333, 99.800206, 0.000000, 0.000000 +3.350000, 99.800206, 0.000000, 0.000000 +3.366667, 99.800206, 0.000000, 0.000000 +3.383333, 99.800206, 0.000000, 0.000000 +3.400000, 99.800206, 0.000000, 0.000000 +3.416667, 99.800206, 0.000000, 0.000000 +3.433333, 99.800206, 0.000000, 0.000000 +3.450000, 99.800206, 0.000000, 0.000000 +3.466667, 99.800206, 0.000000, 0.000000 +3.483333, 99.800206, 0.000000, 0.000000 +3.500000, 99.800206, 0.000000, 0.000000 +3.516667, 99.800206, 0.000000, 0.000000 +3.533333, 99.800206, 0.000000, 0.000000 +3.550000, 99.800206, 0.000000, 0.000000 +3.566667, 99.800206, 0.000000, 0.000000 +3.583333, 99.800206, 0.000000, 0.000000 +3.600000, 99.800206, 0.000000, 0.000000 +3.616667, 99.800206, 0.000000, 0.000000 +3.633333, 99.800206, 0.000000, 0.000000 +3.650000, 99.800206, 0.000000, 0.000000 +3.666667, 99.800206, 0.000000, 0.000000 +3.683333, 99.800206, 0.000000, 0.000000 +3.700000, 99.800206, 0.000000, 0.000000 +3.716667, 99.800206, 0.000000, 0.000000 +3.733333, 99.800206, 0.000000, 0.000000 +3.750000, 99.800206, 0.000000, 0.000000 +3.766667, 99.800206, 0.000000, 0.000000 +3.783333, 99.800206, 0.000000, 0.000000 +3.800000, 99.800206, 0.000000, 0.000000 +3.816667, 99.800206, 0.000000, 0.000000 +3.833333, 99.800206, 0.000000, 0.000000 +3.850000, 99.800206, 0.000000, 0.000000 +3.866667, 99.800206, 0.000000, 0.000000 +3.883333, 99.800206, 0.000000, 0.000000 +3.900000, 99.800206, 0.000000, 0.000000 +3.916667, 99.800206, 0.000000, 0.000000 +3.933333, 99.800206, 0.000000, 0.000000 +3.950000, 99.800206, 0.000000, 0.000000 +3.966667, 99.800206, 0.000000, 0.000000 +3.983333, 99.800206, 0.000000, 0.000000 +4.000000, 99.800206, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_350_bev250_350kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_350_bev250_350kW.csv new file mode 100644 index 0000000..2f5ac99 --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_350_bev250_350kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 2.519432, 179.585089, 182.774802 +1.016667, 6.584843, 289.782548, 296.486232 +1.033333, 10.819609, 301.854119, 309.016797 +1.050000, 15.133785, 307.514431, 314.897427 +1.066667, 19.482187, 309.954097, 317.433059 +1.083333, 23.864878, 312.398189, 319.973900 +1.100000, 28.282119, 314.860959, 322.534773 +1.116667, 32.734175, 317.342539, 325.115832 +1.133333, 37.221311, 319.843063, 327.717232 +1.150000, 41.743795, 322.362667, 330.339126 +1.166667, 46.301897, 324.901485, 332.981672 +1.183333, 50.895887, 327.459654, 335.645026 +1.200000, 55.526040, 330.037311, 338.329348 +1.216667, 60.192631, 332.634594, 341.034797 +1.233333, 64.895937, 335.251642, 343.761535 +1.250000, 69.636237, 337.888595, 346.509722 +1.266667, 74.413813, 340.545592, 349.279522 +1.283333, 78.821861, 314.205644, 321.853293 +1.300000, 82.428084, 257.051597, 262.584894 +1.316667, 85.356550, 208.741054, 212.743003 +1.333333, 87.733136, 169.403042, 172.328786 +1.350000, 89.661044, 137.421327, 139.583775 +1.366667, 91.224462, 111.440448, 113.055858 +1.383333, 92.491963, 90.347416, 91.566502 +1.400000, 93.529794, 73.976624, 74.917463 +1.416667, 94.430232, 64.183183, 64.969774 +1.433333, 95.219082, 56.229274, 56.897294 +1.450000, 95.910187, 49.261916, 49.830997 +1.466667, 96.515615, 43.154940, 43.641075 +1.483333, 97.045957, 37.802782, 38.219119 +1.500000, 97.510501, 33.112676, 33.470069 +1.516667, 97.917391, 29.003132, 29.310579 +1.533333, 98.273769, 25.402596, 25.667588 +1.550000, 98.585893, 22.248259, 22.477059 +1.566667, 98.859252, 19.485010, 19.682871 +1.583333, 99.098653, 17.064498, 17.235847 +1.600000, 99.308310, 14.944320, 15.092898 +1.616667, 99.491914, 13.087294, 13.216273 +1.633333, 99.652700, 11.460820, 11.572898 +1.650000, 99.793501, 10.036323, 10.133803 +1.666667, 99.800657, 0.510048, 0.514776 +1.683333, 99.800662, 0.000386, 0.000390 +1.700000, 99.800662, 0.000000, 0.000000 +1.716667, 99.800662, 0.000000, 0.000000 +1.733333, 99.800662, 0.000000, 0.000000 +1.750000, 99.800662, 0.000000, 0.000000 +1.766667, 99.800662, 0.000000, 0.000000 +1.783333, 99.800662, 0.000000, 0.000000 +1.800000, 99.800662, 0.000000, 0.000000 +1.816667, 99.800662, 0.000000, 0.000000 +1.833333, 99.800662, 0.000000, 0.000000 +1.850000, 99.800662, 0.000000, 0.000000 +1.866667, 99.800662, 0.000000, 0.000000 +1.883333, 99.800662, 0.000000, 0.000000 +1.900000, 99.800662, 0.000000, 0.000000 +1.916667, 99.800662, 0.000000, 0.000000 +1.933333, 99.800662, 0.000000, 0.000000 +1.950000, 99.800662, 0.000000, 0.000000 +1.966667, 99.800662, 0.000000, 0.000000 +1.983333, 99.800662, 0.000000, 0.000000 +2.000000, 99.800662, 0.000000, 0.000000 +2.016667, 99.800662, 0.000000, 0.000000 +2.033333, 99.800662, 0.000000, 0.000000 +2.050000, 99.800662, 0.000000, 0.000000 +2.066667, 99.800662, 0.000000, 0.000000 +2.083333, 99.800662, 0.000000, 0.000000 +2.100000, 99.800662, 0.000000, 0.000000 +2.116667, 99.800662, 0.000000, 0.000000 +2.133333, 99.800662, 0.000000, 0.000000 +2.150000, 99.800662, 0.000000, 0.000000 +2.166667, 99.800662, 0.000000, 0.000000 +2.183333, 99.800662, 0.000000, 0.000000 +2.200000, 99.800662, 0.000000, 0.000000 +2.216667, 99.800662, 0.000000, 0.000000 +2.233333, 99.800662, 0.000000, 0.000000 +2.250000, 99.800662, 0.000000, 0.000000 +2.266667, 99.800662, 0.000000, 0.000000 +2.283333, 99.800662, 0.000000, 0.000000 +2.300000, 99.800662, 0.000000, 0.000000 +2.316667, 99.800662, 0.000000, 0.000000 +2.333333, 99.800662, 0.000000, 0.000000 +2.350000, 99.800662, 0.000000, 0.000000 +2.366667, 99.800662, 0.000000, 0.000000 +2.383333, 99.800662, 0.000000, 0.000000 +2.400000, 99.800662, 0.000000, 0.000000 +2.416667, 99.800662, 0.000000, 0.000000 +2.433333, 99.800662, 0.000000, 0.000000 +2.450000, 99.800662, 0.000000, 0.000000 +2.466667, 99.800662, 0.000000, 0.000000 +2.483333, 99.800662, 0.000000, 0.000000 +2.500000, 99.800662, 0.000000, 0.000000 +2.516667, 99.800662, 0.000000, 0.000000 +2.533333, 99.800662, 0.000000, 0.000000 +2.550000, 99.800662, 0.000000, 0.000000 +2.566667, 99.800662, 0.000000, 0.000000 +2.583333, 99.800662, 0.000000, 0.000000 +2.600000, 99.800662, 0.000000, 0.000000 +2.616667, 99.800662, 0.000000, 0.000000 +2.633333, 99.800662, 0.000000, 0.000000 +2.650000, 99.800662, 0.000000, 0.000000 +2.666667, 99.800662, 0.000000, 0.000000 +2.683333, 99.800662, 0.000000, 0.000000 +2.700000, 99.800662, 0.000000, 0.000000 +2.716667, 99.800662, 0.000000, 0.000000 +2.733333, 99.800662, 0.000000, 0.000000 +2.750000, 99.800662, 0.000000, 0.000000 +2.766667, 99.800662, 0.000000, 0.000000 +2.783333, 99.800662, 0.000000, 0.000000 +2.800000, 99.800662, 0.000000, 0.000000 +2.816667, 99.800662, 0.000000, 0.000000 +2.833333, 99.800662, 0.000000, 0.000000 +2.850000, 99.800662, 0.000000, 0.000000 +2.866667, 99.800662, 0.000000, 0.000000 +2.883333, 99.800662, 0.000000, 0.000000 +2.900000, 99.800662, 0.000000, 0.000000 +2.916667, 99.800662, 0.000000, 0.000000 +2.933333, 99.800662, 0.000000, 0.000000 +2.950000, 99.800662, 0.000000, 0.000000 +2.966667, 99.800662, 0.000000, 0.000000 +2.983333, 99.800662, 0.000000, 0.000000 +3.000000, 99.800662, 0.000000, 0.000000 +3.016667, 99.800662, 0.000000, 0.000000 +3.033333, 99.800662, 0.000000, 0.000000 +3.050000, 99.800662, 0.000000, 0.000000 +3.066667, 99.800662, 0.000000, 0.000000 +3.083333, 99.800662, 0.000000, 0.000000 +3.100000, 99.800662, 0.000000, 0.000000 +3.116667, 99.800662, 0.000000, 0.000000 +3.133333, 99.800662, 0.000000, 0.000000 +3.150000, 99.800662, 0.000000, 0.000000 +3.166667, 99.800662, 0.000000, 0.000000 +3.183333, 99.800662, 0.000000, 0.000000 +3.200000, 99.800662, 0.000000, 0.000000 +3.216667, 99.800662, 0.000000, 0.000000 +3.233333, 99.800662, 0.000000, 0.000000 +3.250000, 99.800662, 0.000000, 0.000000 +3.266667, 99.800662, 0.000000, 0.000000 +3.283333, 99.800662, 0.000000, 0.000000 +3.300000, 99.800662, 0.000000, 0.000000 +3.316667, 99.800662, 0.000000, 0.000000 +3.333333, 99.800662, 0.000000, 0.000000 +3.350000, 99.800662, 0.000000, 0.000000 +3.366667, 99.800662, 0.000000, 0.000000 +3.383333, 99.800662, 0.000000, 0.000000 +3.400000, 99.800662, 0.000000, 0.000000 +3.416667, 99.800662, 0.000000, 0.000000 +3.433333, 99.800662, 0.000000, 0.000000 +3.450000, 99.800662, 0.000000, 0.000000 +3.466667, 99.800662, 0.000000, 0.000000 +3.483333, 99.800662, 0.000000, 0.000000 +3.500000, 99.800662, 0.000000, 0.000000 +3.516667, 99.800662, 0.000000, 0.000000 +3.533333, 99.800662, 0.000000, 0.000000 +3.550000, 99.800662, 0.000000, 0.000000 +3.566667, 99.800662, 0.000000, 0.000000 +3.583333, 99.800662, 0.000000, 0.000000 +3.600000, 99.800662, 0.000000, 0.000000 +3.616667, 99.800662, 0.000000, 0.000000 +3.633333, 99.800662, 0.000000, 0.000000 +3.650000, 99.800662, 0.000000, 0.000000 +3.666667, 99.800662, 0.000000, 0.000000 +3.683333, 99.800662, 0.000000, 0.000000 +3.700000, 99.800662, 0.000000, 0.000000 +3.716667, 99.800662, 0.000000, 0.000000 +3.733333, 99.800662, 0.000000, 0.000000 +3.750000, 99.800662, 0.000000, 0.000000 +3.766667, 99.800662, 0.000000, 0.000000 +3.783333, 99.800662, 0.000000, 0.000000 +3.800000, 99.800662, 0.000000, 0.000000 +3.816667, 99.800662, 0.000000, 0.000000 +3.833333, 99.800662, 0.000000, 0.000000 +3.850000, 99.800662, 0.000000, 0.000000 +3.866667, 99.800662, 0.000000, 0.000000 +3.883333, 99.800662, 0.000000, 0.000000 +3.900000, 99.800662, 0.000000, 0.000000 +3.916667, 99.800662, 0.000000, 0.000000 +3.933333, 99.800662, 0.000000, 0.000000 +3.950000, 99.800662, 0.000000, 0.000000 +3.966667, 99.800662, 0.000000, 0.000000 +3.983333, 99.800662, 0.000000, 0.000000 +4.000000, 99.800662, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_350_bev250_400kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_350_bev250_400kW.csv new file mode 100644 index 0000000..9c06132 --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_350_bev250_400kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 3.918017, 205.695896, 212.401856 +1.016667, 10.058553, 322.378115, 336.760495 +1.033333, 16.254633, 325.294241, 339.906757 +1.050000, 22.506623, 328.229472, 343.075565 +1.066667, 28.814992, 331.189357, 346.272957 +1.083333, 35.180212, 334.174070, 349.499172 +1.100000, 41.602761, 337.183782, 352.754453 +1.116667, 48.083116, 340.218668, 356.039043 +1.133333, 54.645154, 344.506994, 360.683771 +1.150000, 61.355994, 352.319092, 369.155911 +1.166667, 68.185216, 358.534152, 375.906057 +1.183333, 75.115929, 363.862425, 381.700137 +1.200000, 82.155019, 369.552225, 387.894582 +1.216667, 89.109975, 365.135171, 383.085117 +1.233333, 93.859607, 249.355715, 258.589432 +1.250000, 96.636242, 145.773351, 149.657477 +1.266667, 98.217390, 83.010260, 84.716287 +1.283333, 99.123194, 47.554675, 48.371355 +1.300000, 99.644701, 27.379139, 27.797242 +1.316667, 99.802953, 8.308242, 8.420282 +1.333333, 99.803083, 0.006803, 0.006890 +1.350000, 99.803083, 0.000000, 0.000000 +1.366667, 99.803083, 0.000000, 0.000000 +1.383333, 99.803083, 0.000000, 0.000000 +1.400000, 99.803083, 0.000000, 0.000000 +1.416667, 99.803083, 0.000000, 0.000000 +1.433333, 99.803083, 0.000000, 0.000000 +1.450000, 99.803083, 0.000000, 0.000000 +1.466667, 99.803083, 0.000000, 0.000000 +1.483333, 99.803083, 0.000000, 0.000000 +1.500000, 99.803083, 0.000000, 0.000000 +1.516667, 99.803083, 0.000000, 0.000000 +1.533333, 99.803083, 0.000000, 0.000000 +1.550000, 99.803083, 0.000000, 0.000000 +1.566667, 99.803083, 0.000000, 0.000000 +1.583333, 99.803083, 0.000000, 0.000000 +1.600000, 99.803083, 0.000000, 0.000000 +1.616667, 99.803083, 0.000000, 0.000000 +1.633333, 99.803083, 0.000000, 0.000000 +1.650000, 99.803083, 0.000000, 0.000000 +1.666667, 99.803083, 0.000000, 0.000000 +1.683333, 99.803083, 0.000000, 0.000000 +1.700000, 99.803083, 0.000000, 0.000000 +1.716667, 99.803083, 0.000000, 0.000000 +1.733333, 99.803083, 0.000000, 0.000000 +1.750000, 99.803083, 0.000000, 0.000000 +1.766667, 99.803083, 0.000000, 0.000000 +1.783333, 99.803083, 0.000000, 0.000000 +1.800000, 99.803083, 0.000000, 0.000000 +1.816667, 99.803083, 0.000000, 0.000000 +1.833333, 99.803083, 0.000000, 0.000000 +1.850000, 99.803083, 0.000000, 0.000000 +1.866667, 99.803083, 0.000000, 0.000000 +1.883333, 99.803083, 0.000000, 0.000000 +1.900000, 99.803083, 0.000000, 0.000000 +1.916667, 99.803083, 0.000000, 0.000000 +1.933333, 99.803083, 0.000000, 0.000000 +1.950000, 99.803083, 0.000000, 0.000000 +1.966667, 99.803083, 0.000000, 0.000000 +1.983333, 99.803083, 0.000000, 0.000000 +2.000000, 99.803083, 0.000000, 0.000000 +2.016667, 99.803083, 0.000000, 0.000000 +2.033333, 99.803083, 0.000000, 0.000000 +2.050000, 99.803083, 0.000000, 0.000000 +2.066667, 99.803083, 0.000000, 0.000000 +2.083333, 99.803083, 0.000000, 0.000000 +2.100000, 99.803083, 0.000000, 0.000000 +2.116667, 99.803083, 0.000000, 0.000000 +2.133333, 99.803083, 0.000000, 0.000000 +2.150000, 99.803083, 0.000000, 0.000000 +2.166667, 99.803083, 0.000000, 0.000000 +2.183333, 99.803083, 0.000000, 0.000000 +2.200000, 99.803083, 0.000000, 0.000000 +2.216667, 99.803083, 0.000000, 0.000000 +2.233333, 99.803083, 0.000000, 0.000000 +2.250000, 99.803083, 0.000000, 0.000000 +2.266667, 99.803083, 0.000000, 0.000000 +2.283333, 99.803083, 0.000000, 0.000000 +2.300000, 99.803083, 0.000000, 0.000000 +2.316667, 99.803083, 0.000000, 0.000000 +2.333333, 99.803083, 0.000000, 0.000000 +2.350000, 99.803083, 0.000000, 0.000000 +2.366667, 99.803083, 0.000000, 0.000000 +2.383333, 99.803083, 0.000000, 0.000000 +2.400000, 99.803083, 0.000000, 0.000000 +2.416667, 99.803083, 0.000000, 0.000000 +2.433333, 99.803083, 0.000000, 0.000000 +2.450000, 99.803083, 0.000000, 0.000000 +2.466667, 99.803083, 0.000000, 0.000000 +2.483333, 99.803083, 0.000000, 0.000000 +2.500000, 99.803083, 0.000000, 0.000000 +2.516667, 99.803083, 0.000000, 0.000000 +2.533333, 99.803083, 0.000000, 0.000000 +2.550000, 99.803083, 0.000000, 0.000000 +2.566667, 99.803083, 0.000000, 0.000000 +2.583333, 99.803083, 0.000000, 0.000000 +2.600000, 99.803083, 0.000000, 0.000000 +2.616667, 99.803083, 0.000000, 0.000000 +2.633333, 99.803083, 0.000000, 0.000000 +2.650000, 99.803083, 0.000000, 0.000000 +2.666667, 99.803083, 0.000000, 0.000000 +2.683333, 99.803083, 0.000000, 0.000000 +2.700000, 99.803083, 0.000000, 0.000000 +2.716667, 99.803083, 0.000000, 0.000000 +2.733333, 99.803083, 0.000000, 0.000000 +2.750000, 99.803083, 0.000000, 0.000000 +2.766667, 99.803083, 0.000000, 0.000000 +2.783333, 99.803083, 0.000000, 0.000000 +2.800000, 99.803083, 0.000000, 0.000000 +2.816667, 99.803083, 0.000000, 0.000000 +2.833333, 99.803083, 0.000000, 0.000000 +2.850000, 99.803083, 0.000000, 0.000000 +2.866667, 99.803083, 0.000000, 0.000000 +2.883333, 99.803083, 0.000000, 0.000000 +2.900000, 99.803083, 0.000000, 0.000000 +2.916667, 99.803083, 0.000000, 0.000000 +2.933333, 99.803083, 0.000000, 0.000000 +2.950000, 99.803083, 0.000000, 0.000000 +2.966667, 99.803083, 0.000000, 0.000000 +2.983333, 99.803083, 0.000000, 0.000000 +3.000000, 99.803083, 0.000000, 0.000000 +3.016667, 99.803083, 0.000000, 0.000000 +3.033333, 99.803083, 0.000000, 0.000000 +3.050000, 99.803083, 0.000000, 0.000000 +3.066667, 99.803083, 0.000000, 0.000000 +3.083333, 99.803083, 0.000000, 0.000000 +3.100000, 99.803083, 0.000000, 0.000000 +3.116667, 99.803083, 0.000000, 0.000000 +3.133333, 99.803083, 0.000000, 0.000000 +3.150000, 99.803083, 0.000000, 0.000000 +3.166667, 99.803083, 0.000000, 0.000000 +3.183333, 99.803083, 0.000000, 0.000000 +3.200000, 99.803083, 0.000000, 0.000000 +3.216667, 99.803083, 0.000000, 0.000000 +3.233333, 99.803083, 0.000000, 0.000000 +3.250000, 99.803083, 0.000000, 0.000000 +3.266667, 99.803083, 0.000000, 0.000000 +3.283333, 99.803083, 0.000000, 0.000000 +3.300000, 99.803083, 0.000000, 0.000000 +3.316667, 99.803083, 0.000000, 0.000000 +3.333333, 99.803083, 0.000000, 0.000000 +3.350000, 99.803083, 0.000000, 0.000000 +3.366667, 99.803083, 0.000000, 0.000000 +3.383333, 99.803083, 0.000000, 0.000000 +3.400000, 99.803083, 0.000000, 0.000000 +3.416667, 99.803083, 0.000000, 0.000000 +3.433333, 99.803083, 0.000000, 0.000000 +3.450000, 99.803083, 0.000000, 0.000000 +3.466667, 99.803083, 0.000000, 0.000000 +3.483333, 99.803083, 0.000000, 0.000000 +3.500000, 99.803083, 0.000000, 0.000000 +3.516667, 99.803083, 0.000000, 0.000000 +3.533333, 99.803083, 0.000000, 0.000000 +3.550000, 99.803083, 0.000000, 0.000000 +3.566667, 99.803083, 0.000000, 0.000000 +3.583333, 99.803083, 0.000000, 0.000000 +3.600000, 99.803083, 0.000000, 0.000000 +3.616667, 99.803083, 0.000000, 0.000000 +3.633333, 99.803083, 0.000000, 0.000000 +3.650000, 99.803083, 0.000000, 0.000000 +3.666667, 99.803083, 0.000000, 0.000000 +3.683333, 99.803083, 0.000000, 0.000000 +3.700000, 99.803083, 0.000000, 0.000000 +3.716667, 99.803083, 0.000000, 0.000000 +3.733333, 99.803083, 0.000000, 0.000000 +3.750000, 99.803083, 0.000000, 0.000000 +3.766667, 99.803083, 0.000000, 0.000000 +3.783333, 99.803083, 0.000000, 0.000000 +3.800000, 99.803083, 0.000000, 0.000000 +3.816667, 99.803083, 0.000000, 0.000000 +3.833333, 99.803083, 0.000000, 0.000000 +3.850000, 99.803083, 0.000000, 0.000000 +3.866667, 99.803083, 0.000000, 0.000000 +3.883333, 99.803083, 0.000000, 0.000000 +3.900000, 99.803083, 0.000000, 0.000000 +3.916667, 99.803083, 0.000000, 0.000000 +3.933333, 99.803083, 0.000000, 0.000000 +3.950000, 99.803083, 0.000000, 0.000000 +3.966667, 99.803083, 0.000000, 0.000000 +3.983333, 99.803083, 0.000000, 0.000000 +4.000000, 99.803083, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_350_bev250_ld1_75kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_350_bev250_ld1_75kW.csv new file mode 100644 index 0000000..132aaa9 --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_350_bev250_ld1_75kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.867965, 39.058405, 39.532816 +1.016667, 2.138799, 57.187565, 57.959860 +1.033333, 3.465240, 59.689828, 60.507141 +1.050000, 4.841409, 61.927609, 62.785986 +1.066667, 6.235350, 62.727357, 63.600594 +1.083333, 7.643666, 63.374222, 64.259549 +1.100000, 9.066494, 64.027246, 64.924844 +1.116667, 10.503310, 64.656712, 65.566198 +1.133333, 11.946216, 64.930783, 65.845464 +1.150000, 13.392884, 65.100048, 66.017944 +1.166667, 14.843318, 65.269536, 66.190654 +1.183333, 16.297528, 65.439461, 66.363815 +1.200000, 17.755524, 65.609824, 66.537426 +1.216667, 19.217316, 65.780626, 66.711490 +1.233333, 20.682913, 65.951869, 66.886006 +1.250000, 22.152325, 66.123553, 67.060977 +1.266667, 23.625563, 66.295679, 67.236403 +1.283333, 25.102635, 66.468249, 67.412286 +1.300000, 26.583552, 66.641264, 67.588626 +1.316667, 28.068324, 66.814724, 67.765426 +1.333333, 29.556960, 66.988632, 67.942686 +1.350000, 31.049471, 67.162987, 68.120407 +1.366667, 32.545866, 67.337792, 68.298591 +1.383333, 34.046156, 67.513048, 68.477238 +1.400000, 35.550351, 67.688754, 68.656351 +1.416667, 37.058460, 67.864914, 68.835930 +1.433333, 38.570494, 68.041527, 69.015976 +1.450000, 40.086462, 68.218595, 69.196490 +1.466667, 41.606376, 68.396120, 69.377474 +1.483333, 43.130245, 68.574101, 69.558930 +1.500000, 44.658079, 68.752541, 69.740857 +1.516667, 46.189889, 68.931440, 69.923258 +1.533333, 47.725685, 69.110800, 70.106133 +1.550000, 49.265476, 69.290622, 70.289485 +1.566667, 50.809274, 69.470908, 70.473313 +1.583333, 52.357089, 69.651657, 70.657620 +1.600000, 53.908930, 69.832871, 70.842406 +1.616667, 55.464809, 70.014552, 71.027673 +1.633333, 57.024736, 70.196701, 71.213421 +1.650000, 58.588721, 70.379319, 71.399654 +1.666667, 60.156774, 70.562407, 71.586370 +1.683333, 61.728907, 70.745966, 71.773573 +1.700000, 63.305129, 70.929997, 71.961262 +1.716667, 64.885452, 71.114502, 72.149439 +1.733333, 66.469884, 71.299482, 72.338106 +1.750000, 68.058439, 71.484938, 72.527264 +1.766667, 69.651125, 71.670872, 72.716914 +1.783333, 71.247953, 71.857283, 72.907057 +1.800000, 72.848935, 72.044174, 73.097695 +1.816667, 74.454080, 72.231546, 73.288828 +1.833333, 76.063400, 72.419401, 73.480459 +1.850000, 77.676906, 72.607738, 73.672587 +1.866667, 79.294607, 72.796560, 73.865216 +1.883333, 80.916515, 72.985867, 74.058345 +1.900000, 82.542641, 73.175662, 74.251977 +1.916667, 84.172995, 73.365944, 74.446112 +1.933333, 85.807589, 73.556716, 74.640752 +1.950000, 87.446433, 73.747978, 74.835898 +1.966667, 89.089538, 73.939733, 75.031552 +1.983333, 90.736915, 74.131980, 75.227714 +2.000000, 92.289962, 69.887103, 70.897707 +2.016667, 93.603989, 59.131220, 59.938400 +2.033333, 94.710821, 49.807419, 50.452462 +2.050000, 95.642948, 41.945722, 42.464257 +2.066667, 96.427864, 35.321225, 35.740385 +2.083333, 97.088760, 29.740325, 30.080877 +2.100000, 97.645191, 25.039386, 25.317342 +2.116667, 98.113640, 21.080203, 21.308001 +2.133333, 98.507998, 17.746117, 17.933490 +2.150000, 98.839969, 14.938704, 15.093322 +2.166667, 99.119413, 12.574959, 12.702907 +2.183333, 99.354633, 10.584902, 10.691040 +2.200000, 99.552623, 8.909552, 8.997785 +2.216667, 99.719272, 7.499208, 7.572691 +2.233333, 99.800422, 3.651762, 3.686505 +2.250000, 99.800490, 0.003029, 0.003057 +2.266667, 99.800490, 0.000000, 0.000000 +2.283333, 99.800490, 0.000000, 0.000000 +2.300000, 99.800490, 0.000000, 0.000000 +2.316667, 99.800490, 0.000000, 0.000000 +2.333333, 99.800490, 0.000000, 0.000000 +2.350000, 99.800490, 0.000000, 0.000000 +2.366667, 99.800490, 0.000000, 0.000000 +2.383333, 99.800490, 0.000000, 0.000000 +2.400000, 99.800490, 0.000000, 0.000000 +2.416667, 99.800490, 0.000000, 0.000000 +2.433333, 99.800490, 0.000000, 0.000000 +2.450000, 99.800490, 0.000000, 0.000000 +2.466667, 99.800490, 0.000000, 0.000000 +2.483333, 99.800490, 0.000000, 0.000000 +2.500000, 99.800490, 0.000000, 0.000000 +2.516667, 99.800490, 0.000000, 0.000000 +2.533333, 99.800490, 0.000000, 0.000000 +2.550000, 99.800490, 0.000000, 0.000000 +2.566667, 99.800490, 0.000000, 0.000000 +2.583333, 99.800490, 0.000000, 0.000000 +2.600000, 99.800490, 0.000000, 0.000000 +2.616667, 99.800490, 0.000000, 0.000000 +2.633333, 99.800490, 0.000000, 0.000000 +2.650000, 99.800490, 0.000000, 0.000000 +2.666667, 99.800490, 0.000000, 0.000000 +2.683333, 99.800490, 0.000000, 0.000000 +2.700000, 99.800490, 0.000000, 0.000000 +2.716667, 99.800490, 0.000000, 0.000000 +2.733333, 99.800490, 0.000000, 0.000000 +2.750000, 99.800490, 0.000000, 0.000000 +2.766667, 99.800490, 0.000000, 0.000000 +2.783333, 99.800490, 0.000000, 0.000000 +2.800000, 99.800490, 0.000000, 0.000000 +2.816667, 99.800490, 0.000000, 0.000000 +2.833333, 99.800490, 0.000000, 0.000000 +2.850000, 99.800490, 0.000000, 0.000000 +2.866667, 99.800490, 0.000000, 0.000000 +2.883333, 99.800490, 0.000000, 0.000000 +2.900000, 99.800490, 0.000000, 0.000000 +2.916667, 99.800490, 0.000000, 0.000000 +2.933333, 99.800490, 0.000000, 0.000000 +2.950000, 99.800490, 0.000000, 0.000000 +2.966667, 99.800490, 0.000000, 0.000000 +2.983333, 99.800490, 0.000000, 0.000000 +3.000000, 99.800490, 0.000000, 0.000000 +3.016667, 99.800490, 0.000000, 0.000000 +3.033333, 99.800490, 0.000000, 0.000000 +3.050000, 99.800490, 0.000000, 0.000000 +3.066667, 99.800490, 0.000000, 0.000000 +3.083333, 99.800490, 0.000000, 0.000000 +3.100000, 99.800490, 0.000000, 0.000000 +3.116667, 99.800490, 0.000000, 0.000000 +3.133333, 99.800490, 0.000000, 0.000000 +3.150000, 99.800490, 0.000000, 0.000000 +3.166667, 99.800490, 0.000000, 0.000000 +3.183333, 99.800490, 0.000000, 0.000000 +3.200000, 99.800490, 0.000000, 0.000000 +3.216667, 99.800490, 0.000000, 0.000000 +3.233333, 99.800490, 0.000000, 0.000000 +3.250000, 99.800490, 0.000000, 0.000000 +3.266667, 99.800490, 0.000000, 0.000000 +3.283333, 99.800490, 0.000000, 0.000000 +3.300000, 99.800490, 0.000000, 0.000000 +3.316667, 99.800490, 0.000000, 0.000000 +3.333333, 99.800490, 0.000000, 0.000000 +3.350000, 99.800490, 0.000000, 0.000000 +3.366667, 99.800490, 0.000000, 0.000000 +3.383333, 99.800490, 0.000000, 0.000000 +3.400000, 99.800490, 0.000000, 0.000000 +3.416667, 99.800490, 0.000000, 0.000000 +3.433333, 99.800490, 0.000000, 0.000000 +3.450000, 99.800490, 0.000000, 0.000000 +3.466667, 99.800490, 0.000000, 0.000000 +3.483333, 99.800490, 0.000000, 0.000000 +3.500000, 99.800490, 0.000000, 0.000000 +3.516667, 99.800490, 0.000000, 0.000000 +3.533333, 99.800490, 0.000000, 0.000000 +3.550000, 99.800490, 0.000000, 0.000000 +3.566667, 99.800490, 0.000000, 0.000000 +3.583333, 99.800490, 0.000000, 0.000000 +3.600000, 99.800490, 0.000000, 0.000000 +3.616667, 99.800490, 0.000000, 0.000000 +3.633333, 99.800490, 0.000000, 0.000000 +3.650000, 99.800490, 0.000000, 0.000000 +3.666667, 99.800490, 0.000000, 0.000000 +3.683333, 99.800490, 0.000000, 0.000000 +3.700000, 99.800490, 0.000000, 0.000000 +3.716667, 99.800490, 0.000000, 0.000000 +3.733333, 99.800490, 0.000000, 0.000000 +3.750000, 99.800490, 0.000000, 0.000000 +3.766667, 99.800490, 0.000000, 0.000000 +3.783333, 99.800490, 0.000000, 0.000000 +3.800000, 99.800490, 0.000000, 0.000000 +3.816667, 99.800490, 0.000000, 0.000000 +3.833333, 99.800490, 0.000000, 0.000000 +3.850000, 99.800490, 0.000000, 0.000000 +3.866667, 99.800490, 0.000000, 0.000000 +3.883333, 99.800490, 0.000000, 0.000000 +3.900000, 99.800490, 0.000000, 0.000000 +3.916667, 99.800490, 0.000000, 0.000000 +3.933333, 99.800490, 0.000000, 0.000000 +3.950000, 99.800490, 0.000000, 0.000000 +3.966667, 99.800490, 0.000000, 0.000000 +3.983333, 99.800490, 0.000000, 0.000000 +4.000000, 99.800490, 0.000000, 0.000000 diff --git a/unittests/test_charging_models/original_dxfc_models/xfc_350_bev250_ld2_300kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_350_bev250_ld2_300kW.csv similarity index 100% rename from unittests/test_charging_models/original_dxfc_models/xfc_350_bev250_ld2_300kW.csv rename to unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_350_bev250_ld2_300kW.csv diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_350_bev275_ld1_150kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_350_bev275_ld1_150kW.csv new file mode 100644 index 0000000..5b69aba --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_350_bev275_ld1_150kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 1.612499, 80.302465, 81.479890 +1.016667, 4.016498, 119.719155, 121.798077 +1.033333, 6.523180, 124.832732, 127.044485 +1.050000, 9.086025, 127.629691, 129.915650 +1.066667, 11.696536, 130.003446, 132.353247 +1.083333, 14.322422, 130.769126, 133.139689 +1.100000, 16.960881, 131.395259, 133.782861 +1.116667, 19.611966, 132.024038, 134.428807 +1.133333, 22.275737, 132.655771, 135.077843 +1.150000, 24.952252, 133.290472, 135.729986 +1.166667, 27.641573, 133.928154, 136.385248 +1.183333, 30.343758, 134.568831, 137.043645 +1.200000, 33.058869, 135.212515, 137.705192 +1.216667, 35.786965, 135.859221, 138.369902 +1.233333, 38.528109, 136.508962, 139.037792 +1.250000, 41.282361, 137.161752, 139.708876 +1.266667, 44.049783, 137.817604, 140.383169 +1.283333, 46.830436, 138.476533, 141.060686 +1.300000, 49.624383, 139.138553, 141.741442 +1.316667, 52.431686, 139.803676, 142.425452 +1.333333, 55.252407, 140.471917, 143.112732 +1.350000, 58.086610, 141.143291, 143.803297 +1.366667, 60.934357, 141.817811, 144.497162 +1.383333, 63.795712, 142.495491, 145.194344 +1.400000, 66.670739, 143.176346, 145.894856 +1.416667, 69.559502, 143.860390, 146.598715 +1.433333, 72.462065, 144.547637, 147.305937 +1.450000, 75.378493, 145.238101, 148.016538 +1.466667, 78.308850, 145.931797, 148.730532 +1.483333, 81.253202, 146.628740, 149.447937 +1.500000, 84.209052, 147.201318, 150.037377 +1.516667, 86.830730, 130.559542, 132.924413 +1.533333, 88.950653, 105.572203, 107.302709 +1.550000, 90.659895, 85.120204, 86.396255 +1.566667, 92.037486, 68.604071, 69.555320 +1.583333, 93.148332, 55.320111, 56.037296 +1.600000, 94.091060, 46.947846, 47.529893 +1.616667, 94.917471, 41.155265, 41.649395 +1.633333, 95.642061, 36.084597, 36.505507 +1.650000, 96.277328, 31.636320, 31.995864 +1.666667, 96.834248, 27.734581, 28.042501 +1.683333, 97.322454, 24.312651, 24.576987 +1.700000, 97.750402, 21.311851, 21.539266 +1.716667, 98.125515, 18.680602, 18.876641 +1.733333, 98.454302, 16.373586, 16.542881 +1.750000, 98.742474, 14.350995, 14.497432 +1.766667, 98.995042, 12.577877, 12.704728 +1.783333, 99.216399, 11.023548, 11.133575 +1.800000, 99.410396, 9.661077, 9.756624 +1.816667, 99.580413, 8.466834, 8.549893 +1.833333, 99.729411, 7.420085, 7.492357 +1.850000, 99.800234, 3.526991, 3.560426 +1.866667, 99.800292, 0.002931, 0.002958 +1.883333, 99.800292, 0.000000, 0.000000 +1.900000, 99.800292, 0.000000, 0.000000 +1.916667, 99.800292, 0.000000, 0.000000 +1.933333, 99.800292, 0.000000, 0.000000 +1.950000, 99.800292, 0.000000, 0.000000 +1.966667, 99.800292, 0.000000, 0.000000 +1.983333, 99.800292, 0.000000, 0.000000 +2.000000, 99.800292, 0.000000, 0.000000 +2.016667, 99.800292, 0.000000, 0.000000 +2.033333, 99.800292, 0.000000, 0.000000 +2.050000, 99.800292, 0.000000, 0.000000 +2.066667, 99.800292, 0.000000, 0.000000 +2.083333, 99.800292, 0.000000, 0.000000 +2.100000, 99.800292, 0.000000, 0.000000 +2.116667, 99.800292, 0.000000, 0.000000 +2.133333, 99.800292, 0.000000, 0.000000 +2.150000, 99.800292, 0.000000, 0.000000 +2.166667, 99.800292, 0.000000, 0.000000 +2.183333, 99.800292, 0.000000, 0.000000 +2.200000, 99.800292, 0.000000, 0.000000 +2.216667, 99.800292, 0.000000, 0.000000 +2.233333, 99.800292, 0.000000, 0.000000 +2.250000, 99.800292, 0.000000, 0.000000 +2.266667, 99.800292, 0.000000, 0.000000 +2.283333, 99.800292, 0.000000, 0.000000 +2.300000, 99.800292, 0.000000, 0.000000 +2.316667, 99.800292, 0.000000, 0.000000 +2.333333, 99.800292, 0.000000, 0.000000 +2.350000, 99.800292, 0.000000, 0.000000 +2.366667, 99.800292, 0.000000, 0.000000 +2.383333, 99.800292, 0.000000, 0.000000 +2.400000, 99.800292, 0.000000, 0.000000 +2.416667, 99.800292, 0.000000, 0.000000 +2.433333, 99.800292, 0.000000, 0.000000 +2.450000, 99.800292, 0.000000, 0.000000 +2.466667, 99.800292, 0.000000, 0.000000 +2.483333, 99.800292, 0.000000, 0.000000 +2.500000, 99.800292, 0.000000, 0.000000 +2.516667, 99.800292, 0.000000, 0.000000 +2.533333, 99.800292, 0.000000, 0.000000 +2.550000, 99.800292, 0.000000, 0.000000 +2.566667, 99.800292, 0.000000, 0.000000 +2.583333, 99.800292, 0.000000, 0.000000 +2.600000, 99.800292, 0.000000, 0.000000 +2.616667, 99.800292, 0.000000, 0.000000 +2.633333, 99.800292, 0.000000, 0.000000 +2.650000, 99.800292, 0.000000, 0.000000 +2.666667, 99.800292, 0.000000, 0.000000 +2.683333, 99.800292, 0.000000, 0.000000 +2.700000, 99.800292, 0.000000, 0.000000 +2.716667, 99.800292, 0.000000, 0.000000 +2.733333, 99.800292, 0.000000, 0.000000 +2.750000, 99.800292, 0.000000, 0.000000 +2.766667, 99.800292, 0.000000, 0.000000 +2.783333, 99.800292, 0.000000, 0.000000 +2.800000, 99.800292, 0.000000, 0.000000 +2.816667, 99.800292, 0.000000, 0.000000 +2.833333, 99.800292, 0.000000, 0.000000 +2.850000, 99.800292, 0.000000, 0.000000 +2.866667, 99.800292, 0.000000, 0.000000 +2.883333, 99.800292, 0.000000, 0.000000 +2.900000, 99.800292, 0.000000, 0.000000 +2.916667, 99.800292, 0.000000, 0.000000 +2.933333, 99.800292, 0.000000, 0.000000 +2.950000, 99.800292, 0.000000, 0.000000 +2.966667, 99.800292, 0.000000, 0.000000 +2.983333, 99.800292, 0.000000, 0.000000 +3.000000, 99.800292, 0.000000, 0.000000 +3.016667, 99.800292, 0.000000, 0.000000 +3.033333, 99.800292, 0.000000, 0.000000 +3.050000, 99.800292, 0.000000, 0.000000 +3.066667, 99.800292, 0.000000, 0.000000 +3.083333, 99.800292, 0.000000, 0.000000 +3.100000, 99.800292, 0.000000, 0.000000 +3.116667, 99.800292, 0.000000, 0.000000 +3.133333, 99.800292, 0.000000, 0.000000 +3.150000, 99.800292, 0.000000, 0.000000 +3.166667, 99.800292, 0.000000, 0.000000 +3.183333, 99.800292, 0.000000, 0.000000 +3.200000, 99.800292, 0.000000, 0.000000 +3.216667, 99.800292, 0.000000, 0.000000 +3.233333, 99.800292, 0.000000, 0.000000 +3.250000, 99.800292, 0.000000, 0.000000 +3.266667, 99.800292, 0.000000, 0.000000 +3.283333, 99.800292, 0.000000, 0.000000 +3.300000, 99.800292, 0.000000, 0.000000 +3.316667, 99.800292, 0.000000, 0.000000 +3.333333, 99.800292, 0.000000, 0.000000 +3.350000, 99.800292, 0.000000, 0.000000 +3.366667, 99.800292, 0.000000, 0.000000 +3.383333, 99.800292, 0.000000, 0.000000 +3.400000, 99.800292, 0.000000, 0.000000 +3.416667, 99.800292, 0.000000, 0.000000 +3.433333, 99.800292, 0.000000, 0.000000 +3.450000, 99.800292, 0.000000, 0.000000 +3.466667, 99.800292, 0.000000, 0.000000 +3.483333, 99.800292, 0.000000, 0.000000 +3.500000, 99.800292, 0.000000, 0.000000 +3.516667, 99.800292, 0.000000, 0.000000 +3.533333, 99.800292, 0.000000, 0.000000 +3.550000, 99.800292, 0.000000, 0.000000 +3.566667, 99.800292, 0.000000, 0.000000 +3.583333, 99.800292, 0.000000, 0.000000 +3.600000, 99.800292, 0.000000, 0.000000 +3.616667, 99.800292, 0.000000, 0.000000 +3.633333, 99.800292, 0.000000, 0.000000 +3.650000, 99.800292, 0.000000, 0.000000 +3.666667, 99.800292, 0.000000, 0.000000 +3.683333, 99.800292, 0.000000, 0.000000 +3.700000, 99.800292, 0.000000, 0.000000 +3.716667, 99.800292, 0.000000, 0.000000 +3.733333, 99.800292, 0.000000, 0.000000 +3.750000, 99.800292, 0.000000, 0.000000 +3.766667, 99.800292, 0.000000, 0.000000 +3.783333, 99.800292, 0.000000, 0.000000 +3.800000, 99.800292, 0.000000, 0.000000 +3.816667, 99.800292, 0.000000, 0.000000 +3.833333, 99.800292, 0.000000, 0.000000 +3.850000, 99.800292, 0.000000, 0.000000 +3.866667, 99.800292, 0.000000, 0.000000 +3.883333, 99.800292, 0.000000, 0.000000 +3.900000, 99.800292, 0.000000, 0.000000 +3.916667, 99.800292, 0.000000, 0.000000 +3.933333, 99.800292, 0.000000, 0.000000 +3.950000, 99.800292, 0.000000, 0.000000 +3.966667, 99.800292, 0.000000, 0.000000 +3.983333, 99.800292, 0.000000, 0.000000 +4.000000, 99.800292, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_350_bev300_300kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_350_bev300_300kW.csv new file mode 100644 index 0000000..9925426 --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_350_bev300_300kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 2.691966, 157.479985, 160.370604 +1.016667, 6.952908, 249.265161, 255.202931 +1.033333, 11.392038, 259.689069, 266.038292 +1.050000, 15.904373, 263.971631, 270.493811 +1.066667, 20.453964, 266.151061, 272.762137 +1.083333, 25.040968, 268.339739, 275.040683 +1.100000, 29.665683, 270.545831, 277.337965 +1.116667, 34.328409, 272.769468, 279.654131 +1.133333, 39.029448, 275.010777, 281.989331 +1.150000, 43.769104, 277.269889, 284.343715 +1.166667, 48.547685, 279.546937, 286.717438 +1.183333, 53.365497, 281.842051, 289.110651 +1.200000, 58.222854, 284.155364, 291.523510 +1.216667, 63.120068, 286.487010, 293.956170 +1.233333, 68.057455, 288.837123, 296.408789 +1.250000, 73.035332, 291.205838, 298.881523 +1.266667, 77.691382, 272.378919, 279.247286 +1.283333, 81.507591, 223.248213, 228.217685 +1.300000, 84.608222, 181.386924, 184.972541 +1.316667, 87.125404, 147.255123, 149.869466 +1.333333, 89.167906, 119.486417, 121.413382 +1.350000, 90.824582, 96.915537, 98.351094 +1.366667, 92.167882, 78.583045, 79.663539 +1.383333, 93.259282, 63.846861, 64.670400 +1.400000, 94.193603, 54.657799, 55.333885 +1.416667, 95.012028, 47.877891, 48.451452 +1.433333, 95.729031, 41.944660, 42.432856 +1.450000, 96.357134, 36.744018, 37.160727 +1.466667, 96.907324, 32.186131, 32.542749 +1.483333, 97.389240, 28.192043, 28.497964 +1.500000, 97.811332, 24.692381, 24.955386 +1.516667, 98.181011, 21.626225, 21.852783 +1.533333, 98.504773, 18.940092, 19.135607 +1.550000, 98.788312, 16.587050, 16.756048 +1.566667, 99.036619, 14.525921, 14.672211 +1.583333, 99.254064, 12.720589, 12.847389 +1.600000, 99.444481, 11.139383, 11.249418 +1.616667, 99.611226, 9.754537, 9.850123 +1.633333, 99.757238, 8.541710, 8.624821 +1.650000, 99.800382, 2.523939, 2.547633 +1.666667, 99.800418, 0.002085, 0.002105 +1.683333, 99.800418, 0.000000, 0.000000 +1.700000, 99.800418, 0.000000, 0.000000 +1.716667, 99.800418, 0.000000, 0.000000 +1.733333, 99.800418, 0.000000, 0.000000 +1.750000, 99.800418, 0.000000, 0.000000 +1.766667, 99.800418, 0.000000, 0.000000 +1.783333, 99.800418, 0.000000, 0.000000 +1.800000, 99.800418, 0.000000, 0.000000 +1.816667, 99.800418, 0.000000, 0.000000 +1.833333, 99.800418, 0.000000, 0.000000 +1.850000, 99.800418, 0.000000, 0.000000 +1.866667, 99.800418, 0.000000, 0.000000 +1.883333, 99.800418, 0.000000, 0.000000 +1.900000, 99.800418, 0.000000, 0.000000 +1.916667, 99.800418, 0.000000, 0.000000 +1.933333, 99.800418, 0.000000, 0.000000 +1.950000, 99.800418, 0.000000, 0.000000 +1.966667, 99.800418, 0.000000, 0.000000 +1.983333, 99.800418, 0.000000, 0.000000 +2.000000, 99.800418, 0.000000, 0.000000 +2.016667, 99.800418, 0.000000, 0.000000 +2.033333, 99.800418, 0.000000, 0.000000 +2.050000, 99.800418, 0.000000, 0.000000 +2.066667, 99.800418, 0.000000, 0.000000 +2.083333, 99.800418, 0.000000, 0.000000 +2.100000, 99.800418, 0.000000, 0.000000 +2.116667, 99.800418, 0.000000, 0.000000 +2.133333, 99.800418, 0.000000, 0.000000 +2.150000, 99.800418, 0.000000, 0.000000 +2.166667, 99.800418, 0.000000, 0.000000 +2.183333, 99.800418, 0.000000, 0.000000 +2.200000, 99.800418, 0.000000, 0.000000 +2.216667, 99.800418, 0.000000, 0.000000 +2.233333, 99.800418, 0.000000, 0.000000 +2.250000, 99.800418, 0.000000, 0.000000 +2.266667, 99.800418, 0.000000, 0.000000 +2.283333, 99.800418, 0.000000, 0.000000 +2.300000, 99.800418, 0.000000, 0.000000 +2.316667, 99.800418, 0.000000, 0.000000 +2.333333, 99.800418, 0.000000, 0.000000 +2.350000, 99.800418, 0.000000, 0.000000 +2.366667, 99.800418, 0.000000, 0.000000 +2.383333, 99.800418, 0.000000, 0.000000 +2.400000, 99.800418, 0.000000, 0.000000 +2.416667, 99.800418, 0.000000, 0.000000 +2.433333, 99.800418, 0.000000, 0.000000 +2.450000, 99.800418, 0.000000, 0.000000 +2.466667, 99.800418, 0.000000, 0.000000 +2.483333, 99.800418, 0.000000, 0.000000 +2.500000, 99.800418, 0.000000, 0.000000 +2.516667, 99.800418, 0.000000, 0.000000 +2.533333, 99.800418, 0.000000, 0.000000 +2.550000, 99.800418, 0.000000, 0.000000 +2.566667, 99.800418, 0.000000, 0.000000 +2.583333, 99.800418, 0.000000, 0.000000 +2.600000, 99.800418, 0.000000, 0.000000 +2.616667, 99.800418, 0.000000, 0.000000 +2.633333, 99.800418, 0.000000, 0.000000 +2.650000, 99.800418, 0.000000, 0.000000 +2.666667, 99.800418, 0.000000, 0.000000 +2.683333, 99.800418, 0.000000, 0.000000 +2.700000, 99.800418, 0.000000, 0.000000 +2.716667, 99.800418, 0.000000, 0.000000 +2.733333, 99.800418, 0.000000, 0.000000 +2.750000, 99.800418, 0.000000, 0.000000 +2.766667, 99.800418, 0.000000, 0.000000 +2.783333, 99.800418, 0.000000, 0.000000 +2.800000, 99.800418, 0.000000, 0.000000 +2.816667, 99.800418, 0.000000, 0.000000 +2.833333, 99.800418, 0.000000, 0.000000 +2.850000, 99.800418, 0.000000, 0.000000 +2.866667, 99.800418, 0.000000, 0.000000 +2.883333, 99.800418, 0.000000, 0.000000 +2.900000, 99.800418, 0.000000, 0.000000 +2.916667, 99.800418, 0.000000, 0.000000 +2.933333, 99.800418, 0.000000, 0.000000 +2.950000, 99.800418, 0.000000, 0.000000 +2.966667, 99.800418, 0.000000, 0.000000 +2.983333, 99.800418, 0.000000, 0.000000 +3.000000, 99.800418, 0.000000, 0.000000 +3.016667, 99.800418, 0.000000, 0.000000 +3.033333, 99.800418, 0.000000, 0.000000 +3.050000, 99.800418, 0.000000, 0.000000 +3.066667, 99.800418, 0.000000, 0.000000 +3.083333, 99.800418, 0.000000, 0.000000 +3.100000, 99.800418, 0.000000, 0.000000 +3.116667, 99.800418, 0.000000, 0.000000 +3.133333, 99.800418, 0.000000, 0.000000 +3.150000, 99.800418, 0.000000, 0.000000 +3.166667, 99.800418, 0.000000, 0.000000 +3.183333, 99.800418, 0.000000, 0.000000 +3.200000, 99.800418, 0.000000, 0.000000 +3.216667, 99.800418, 0.000000, 0.000000 +3.233333, 99.800418, 0.000000, 0.000000 +3.250000, 99.800418, 0.000000, 0.000000 +3.266667, 99.800418, 0.000000, 0.000000 +3.283333, 99.800418, 0.000000, 0.000000 +3.300000, 99.800418, 0.000000, 0.000000 +3.316667, 99.800418, 0.000000, 0.000000 +3.333333, 99.800418, 0.000000, 0.000000 +3.350000, 99.800418, 0.000000, 0.000000 +3.366667, 99.800418, 0.000000, 0.000000 +3.383333, 99.800418, 0.000000, 0.000000 +3.400000, 99.800418, 0.000000, 0.000000 +3.416667, 99.800418, 0.000000, 0.000000 +3.433333, 99.800418, 0.000000, 0.000000 +3.450000, 99.800418, 0.000000, 0.000000 +3.466667, 99.800418, 0.000000, 0.000000 +3.483333, 99.800418, 0.000000, 0.000000 +3.500000, 99.800418, 0.000000, 0.000000 +3.516667, 99.800418, 0.000000, 0.000000 +3.533333, 99.800418, 0.000000, 0.000000 +3.550000, 99.800418, 0.000000, 0.000000 +3.566667, 99.800418, 0.000000, 0.000000 +3.583333, 99.800418, 0.000000, 0.000000 +3.600000, 99.800418, 0.000000, 0.000000 +3.616667, 99.800418, 0.000000, 0.000000 +3.633333, 99.800418, 0.000000, 0.000000 +3.650000, 99.800418, 0.000000, 0.000000 +3.666667, 99.800418, 0.000000, 0.000000 +3.683333, 99.800418, 0.000000, 0.000000 +3.700000, 99.800418, 0.000000, 0.000000 +3.716667, 99.800418, 0.000000, 0.000000 +3.733333, 99.800418, 0.000000, 0.000000 +3.750000, 99.800418, 0.000000, 0.000000 +3.766667, 99.800418, 0.000000, 0.000000 +3.783333, 99.800418, 0.000000, 0.000000 +3.800000, 99.800418, 0.000000, 0.000000 +3.816667, 99.800418, 0.000000, 0.000000 +3.833333, 99.800418, 0.000000, 0.000000 +3.850000, 99.800418, 0.000000, 0.000000 +3.866667, 99.800418, 0.000000, 0.000000 +3.883333, 99.800418, 0.000000, 0.000000 +3.900000, 99.800418, 0.000000, 0.000000 +3.916667, 99.800418, 0.000000, 0.000000 +3.933333, 99.800418, 0.000000, 0.000000 +3.950000, 99.800418, 0.000000, 0.000000 +3.966667, 99.800418, 0.000000, 0.000000 +3.983333, 99.800418, 0.000000, 0.000000 +4.000000, 99.800418, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_350_bev300_400kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_350_bev300_400kW.csv new file mode 100644 index 0000000..f87b729 --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_350_bev300_400kW.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 3.508495, 205.246967, 211.496367 +1.016667, 9.012195, 321.966428, 335.203616 +1.033333, 14.559434, 324.513485, 337.932550 +1.050000, 20.150406, 327.071887, 340.674929 +1.066667, 25.785436, 329.649230, 343.438924 +1.083333, 31.464848, 332.245636, 346.224694 +1.100000, 37.188972, 334.861224, 349.032399 +1.116667, 42.958136, 337.496116, 351.862203 +1.133333, 48.772674, 340.150433, 354.714267 +1.150000, 54.659102, 344.356070, 359.236103 +1.166667, 60.674596, 351.906408, 367.362994 +1.183333, 66.792803, 357.915119, 373.838715 +1.200000, 72.994419, 362.794519, 379.102707 +1.216667, 79.280388, 367.729205, 384.431234 +1.233333, 85.686030, 374.730020, 391.999260 +1.250000, 91.586098, 345.153983, 360.094406 +1.266667, 95.332840, 219.184417, 226.132260 +1.283333, 97.479493, 125.579214, 128.519778 +1.300000, 98.701521, 71.488602, 72.829002 +1.316667, 99.402254, 40.992900, 41.655198 +1.333333, 99.802249, 23.399683, 23.743008 +1.350000, 99.802581, 0.019460, 0.019708 +1.366667, 99.802581, 0.000000, 0.000000 +1.383333, 99.802581, 0.000000, 0.000000 +1.400000, 99.802581, 0.000000, 0.000000 +1.416667, 99.802581, 0.000000, 0.000000 +1.433333, 99.802581, 0.000000, 0.000000 +1.450000, 99.802581, 0.000000, 0.000000 +1.466667, 99.802581, 0.000000, 0.000000 +1.483333, 99.802581, 0.000000, 0.000000 +1.500000, 99.802581, 0.000000, 0.000000 +1.516667, 99.802581, 0.000000, 0.000000 +1.533333, 99.802581, 0.000000, 0.000000 +1.550000, 99.802581, 0.000000, 0.000000 +1.566667, 99.802581, 0.000000, 0.000000 +1.583333, 99.802581, 0.000000, 0.000000 +1.600000, 99.802581, 0.000000, 0.000000 +1.616667, 99.802581, 0.000000, 0.000000 +1.633333, 99.802581, 0.000000, 0.000000 +1.650000, 99.802581, 0.000000, 0.000000 +1.666667, 99.802581, 0.000000, 0.000000 +1.683333, 99.802581, 0.000000, 0.000000 +1.700000, 99.802581, 0.000000, 0.000000 +1.716667, 99.802581, 0.000000, 0.000000 +1.733333, 99.802581, 0.000000, 0.000000 +1.750000, 99.802581, 0.000000, 0.000000 +1.766667, 99.802581, 0.000000, 0.000000 +1.783333, 99.802581, 0.000000, 0.000000 +1.800000, 99.802581, 0.000000, 0.000000 +1.816667, 99.802581, 0.000000, 0.000000 +1.833333, 99.802581, 0.000000, 0.000000 +1.850000, 99.802581, 0.000000, 0.000000 +1.866667, 99.802581, 0.000000, 0.000000 +1.883333, 99.802581, 0.000000, 0.000000 +1.900000, 99.802581, 0.000000, 0.000000 +1.916667, 99.802581, 0.000000, 0.000000 +1.933333, 99.802581, 0.000000, 0.000000 +1.950000, 99.802581, 0.000000, 0.000000 +1.966667, 99.802581, 0.000000, 0.000000 +1.983333, 99.802581, 0.000000, 0.000000 +2.000000, 99.802581, 0.000000, 0.000000 +2.016667, 99.802581, 0.000000, 0.000000 +2.033333, 99.802581, 0.000000, 0.000000 +2.050000, 99.802581, 0.000000, 0.000000 +2.066667, 99.802581, 0.000000, 0.000000 +2.083333, 99.802581, 0.000000, 0.000000 +2.100000, 99.802581, 0.000000, 0.000000 +2.116667, 99.802581, 0.000000, 0.000000 +2.133333, 99.802581, 0.000000, 0.000000 +2.150000, 99.802581, 0.000000, 0.000000 +2.166667, 99.802581, 0.000000, 0.000000 +2.183333, 99.802581, 0.000000, 0.000000 +2.200000, 99.802581, 0.000000, 0.000000 +2.216667, 99.802581, 0.000000, 0.000000 +2.233333, 99.802581, 0.000000, 0.000000 +2.250000, 99.802581, 0.000000, 0.000000 +2.266667, 99.802581, 0.000000, 0.000000 +2.283333, 99.802581, 0.000000, 0.000000 +2.300000, 99.802581, 0.000000, 0.000000 +2.316667, 99.802581, 0.000000, 0.000000 +2.333333, 99.802581, 0.000000, 0.000000 +2.350000, 99.802581, 0.000000, 0.000000 +2.366667, 99.802581, 0.000000, 0.000000 +2.383333, 99.802581, 0.000000, 0.000000 +2.400000, 99.802581, 0.000000, 0.000000 +2.416667, 99.802581, 0.000000, 0.000000 +2.433333, 99.802581, 0.000000, 0.000000 +2.450000, 99.802581, 0.000000, 0.000000 +2.466667, 99.802581, 0.000000, 0.000000 +2.483333, 99.802581, 0.000000, 0.000000 +2.500000, 99.802581, 0.000000, 0.000000 +2.516667, 99.802581, 0.000000, 0.000000 +2.533333, 99.802581, 0.000000, 0.000000 +2.550000, 99.802581, 0.000000, 0.000000 +2.566667, 99.802581, 0.000000, 0.000000 +2.583333, 99.802581, 0.000000, 0.000000 +2.600000, 99.802581, 0.000000, 0.000000 +2.616667, 99.802581, 0.000000, 0.000000 +2.633333, 99.802581, 0.000000, 0.000000 +2.650000, 99.802581, 0.000000, 0.000000 +2.666667, 99.802581, 0.000000, 0.000000 +2.683333, 99.802581, 0.000000, 0.000000 +2.700000, 99.802581, 0.000000, 0.000000 +2.716667, 99.802581, 0.000000, 0.000000 +2.733333, 99.802581, 0.000000, 0.000000 +2.750000, 99.802581, 0.000000, 0.000000 +2.766667, 99.802581, 0.000000, 0.000000 +2.783333, 99.802581, 0.000000, 0.000000 +2.800000, 99.802581, 0.000000, 0.000000 +2.816667, 99.802581, 0.000000, 0.000000 +2.833333, 99.802581, 0.000000, 0.000000 +2.850000, 99.802581, 0.000000, 0.000000 +2.866667, 99.802581, 0.000000, 0.000000 +2.883333, 99.802581, 0.000000, 0.000000 +2.900000, 99.802581, 0.000000, 0.000000 +2.916667, 99.802581, 0.000000, 0.000000 +2.933333, 99.802581, 0.000000, 0.000000 +2.950000, 99.802581, 0.000000, 0.000000 +2.966667, 99.802581, 0.000000, 0.000000 +2.983333, 99.802581, 0.000000, 0.000000 +3.000000, 99.802581, 0.000000, 0.000000 +3.016667, 99.802581, 0.000000, 0.000000 +3.033333, 99.802581, 0.000000, 0.000000 +3.050000, 99.802581, 0.000000, 0.000000 +3.066667, 99.802581, 0.000000, 0.000000 +3.083333, 99.802581, 0.000000, 0.000000 +3.100000, 99.802581, 0.000000, 0.000000 +3.116667, 99.802581, 0.000000, 0.000000 +3.133333, 99.802581, 0.000000, 0.000000 +3.150000, 99.802581, 0.000000, 0.000000 +3.166667, 99.802581, 0.000000, 0.000000 +3.183333, 99.802581, 0.000000, 0.000000 +3.200000, 99.802581, 0.000000, 0.000000 +3.216667, 99.802581, 0.000000, 0.000000 +3.233333, 99.802581, 0.000000, 0.000000 +3.250000, 99.802581, 0.000000, 0.000000 +3.266667, 99.802581, 0.000000, 0.000000 +3.283333, 99.802581, 0.000000, 0.000000 +3.300000, 99.802581, 0.000000, 0.000000 +3.316667, 99.802581, 0.000000, 0.000000 +3.333333, 99.802581, 0.000000, 0.000000 +3.350000, 99.802581, 0.000000, 0.000000 +3.366667, 99.802581, 0.000000, 0.000000 +3.383333, 99.802581, 0.000000, 0.000000 +3.400000, 99.802581, 0.000000, 0.000000 +3.416667, 99.802581, 0.000000, 0.000000 +3.433333, 99.802581, 0.000000, 0.000000 +3.450000, 99.802581, 0.000000, 0.000000 +3.466667, 99.802581, 0.000000, 0.000000 +3.483333, 99.802581, 0.000000, 0.000000 +3.500000, 99.802581, 0.000000, 0.000000 +3.516667, 99.802581, 0.000000, 0.000000 +3.533333, 99.802581, 0.000000, 0.000000 +3.550000, 99.802581, 0.000000, 0.000000 +3.566667, 99.802581, 0.000000, 0.000000 +3.583333, 99.802581, 0.000000, 0.000000 +3.600000, 99.802581, 0.000000, 0.000000 +3.616667, 99.802581, 0.000000, 0.000000 +3.633333, 99.802581, 0.000000, 0.000000 +3.650000, 99.802581, 0.000000, 0.000000 +3.666667, 99.802581, 0.000000, 0.000000 +3.683333, 99.802581, 0.000000, 0.000000 +3.700000, 99.802581, 0.000000, 0.000000 +3.716667, 99.802581, 0.000000, 0.000000 +3.733333, 99.802581, 0.000000, 0.000000 +3.750000, 99.802581, 0.000000, 0.000000 +3.766667, 99.802581, 0.000000, 0.000000 +3.783333, 99.802581, 0.000000, 0.000000 +3.800000, 99.802581, 0.000000, 0.000000 +3.816667, 99.802581, 0.000000, 0.000000 +3.833333, 99.802581, 0.000000, 0.000000 +3.850000, 99.802581, 0.000000, 0.000000 +3.866667, 99.802581, 0.000000, 0.000000 +3.883333, 99.802581, 0.000000, 0.000000 +3.900000, 99.802581, 0.000000, 0.000000 +3.916667, 99.802581, 0.000000, 0.000000 +3.933333, 99.802581, 0.000000, 0.000000 +3.950000, 99.802581, 0.000000, 0.000000 +3.966667, 99.802581, 0.000000, 0.000000 +3.983333, 99.802581, 0.000000, 0.000000 +4.000000, 99.802581, 0.000000, 0.000000 diff --git a/unittests/test_charging_models/original_dxfc_models/xfc_350_bev300_575kW.csv b/unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_350_bev300_575kW.csv similarity index 100% rename from unittests/test_charging_models/original_dxfc_models/xfc_350_bev300_575kW.csv rename to unittests/test_charging_models_DirectXFC/original_dxfc_models/xfc_350_bev300_575kW.csv diff --git a/unittests/test_charging_models_DirectXFC/outputs/tmp.txt.txt b/unittests/test_charging_models_DirectXFC/outputs/tmp.txt.txt new file mode 100644 index 0000000..e69de29 diff --git a/unittests/test_charging_models_DirectXFC/validate.py b/unittests/test_charging_models_DirectXFC/validate.py new file mode 100644 index 0000000..13c8432 --- /dev/null +++ b/unittests/test_charging_models_DirectXFC/validate.py @@ -0,0 +1,54 @@ +# -*- coding: utf-8 -*- +""" +Created on Sat May 20 22:27:35 2023 + +@author: CEBOM +""" + +import glob +import pandas as pd +import numpy as np +import matplotlib.pyplot as plt +import os + +files = glob.glob("original_dxfc_models/*.csv") + +error = False + +for original_file in files: + equivalent_file = "outputs/" + os.path.split(original_file)[1] + + original_df = pd.read_csv(original_file) + new_df = pd.read_csv(equivalent_file) + + tolerance = 1 + bool_array = np.isclose(original_df, new_df, rtol=tolerance, atol=tolerance) + count_false = np.count_nonzero(bool_array == False) + count_true = np.count_nonzero(bool_array == True) + + error_rate = (count_false/(count_true+count_false))*100 + + #equal = np.allclose(original_df, new_df, atol=tolerance) + + # Check if the DataFrames are equal + if error_rate < 0.3: # error rate below 0.3% + print("{} The DataFrames are equal within the tolerance.".format(os.path.split(original_file)[1].split(".")[0])) + else: + print("{} The DataFrames are not equal within the tolerance.".format(os.path.split(original_file)[1].split(".")[0])) + + fig = plt.figure(figsize=(8, 6)) + plt.plot(original_df["simulation_time_hrs"], original_df[" soc_t1"], label = "original") + plt.plot(new_df["simulation_time_hrs"], new_df[" soc_t1"], label = "new") + + plt.plot(original_df["simulation_time_hrs"], original_df[" P2_kW"], label = "original") + plt.plot(new_df["simulation_time_hrs"], new_df[" P2_kW"], label = "new") + + plt.title(os.path.split(original_file)[1].split(".")[0]) + plt.legend() + plt.show() + + fig.savefig(os.path.split(original_file)[1].split(".")[0]) + error = True + +if(error == True): + exit(1) From 6f24c27c33118730d5b6c083dbc7ee613a51ab77 Mon Sep 17 00:00:00 2001 From: Manoj Kumar Cebol Sundarrajan Date: Mon, 29 May 2023 20:53:33 -0600 Subject: [PATCH 25/52] Unit test for the eMosaic project charging models --- unittests/CMakeLists.txt | 3 +- .../CMakeLists.txt | 18 +- .../outputs/{tmp.txt.txt => tmp.txt} | 0 .../test_charging_models_eMosaic/.gitignore | 4 + .../CMakeLists.txt | 13 ++ .../inputs/EVSE_inputs.csv | 9 + .../inputs/EV_inputs.csv | 7 + .../test_charging_models_eMosaic/main.cpp | 122 ++++++++++++ .../L2_17280W_hd_300kWh.csv | 183 ++++++++++++++++++ .../L2_17280W_hd_400kWh.csv | 183 ++++++++++++++++++ .../L2_17280W_hd_600kWh.csv | 183 ++++++++++++++++++ .../L2_17280W_ld_100kWh.csv | 183 ++++++++++++++++++ .../L2_17280W_ld_50kWh.csv | 183 ++++++++++++++++++ .../L2_17280W_md_200kWh.csv | 183 ++++++++++++++++++ .../L2_7200W_hd_300kWh.csv | 183 ++++++++++++++++++ .../L2_7200W_hd_400kWh.csv | 183 ++++++++++++++++++ .../L2_7200W_hd_600kWh.csv | 183 ++++++++++++++++++ .../L2_7200W_ld_100kWh.csv | 183 ++++++++++++++++++ .../L2_7200W_ld_50kWh.csv | 183 ++++++++++++++++++ .../L2_7200W_md_200kWh.csv | 183 ++++++++++++++++++ .../xfc_150kW_hd_300kWh.csv | 183 ++++++++++++++++++ .../xfc_150kW_hd_400kWh.csv | 183 ++++++++++++++++++ .../xfc_150kW_hd_600kWh.csv | 183 ++++++++++++++++++ .../xfc_150kW_ld_100kWh.csv | 183 ++++++++++++++++++ .../xfc_150kW_ld_50kWh.csv | 183 ++++++++++++++++++ .../xfc_150kW_md_200kWh.csv | 183 ++++++++++++++++++ .../xfc_180kW_hd_300kWh.csv | 183 ++++++++++++++++++ .../xfc_180kW_hd_400kWh.csv | 183 ++++++++++++++++++ .../xfc_180kW_hd_600kWh.csv | 183 ++++++++++++++++++ .../xfc_180kW_ld_100kWh.csv | 183 ++++++++++++++++++ .../xfc_180kW_ld_50kWh.csv | 183 ++++++++++++++++++ .../xfc_180kW_md_200kWh.csv | 183 ++++++++++++++++++ .../xfc_20kW_hd_300kWh.csv | 183 ++++++++++++++++++ .../xfc_20kW_hd_400kWh.csv | 183 ++++++++++++++++++ .../xfc_20kW_hd_600kWh.csv | 183 ++++++++++++++++++ .../xfc_20kW_ld_100kWh.csv | 183 ++++++++++++++++++ .../xfc_20kW_ld_50kWh.csv | 183 ++++++++++++++++++ .../xfc_20kW_md_200kWh.csv | 183 ++++++++++++++++++ .../xfc_450kW_hd_300kWh.csv | 183 ++++++++++++++++++ .../xfc_450kW_hd_400kWh.csv | 183 ++++++++++++++++++ .../xfc_450kW_hd_600kWh.csv | 183 ++++++++++++++++++ .../xfc_450kW_ld_100kWh.csv | 183 ++++++++++++++++++ .../xfc_450kW_ld_50kWh.csv | 183 ++++++++++++++++++ .../xfc_450kW_md_200kWh.csv | 183 ++++++++++++++++++ .../xfc_50kW_hd_300kWh.csv | 183 ++++++++++++++++++ .../xfc_50kW_hd_400kWh.csv | 183 ++++++++++++++++++ .../xfc_50kW_hd_600kWh.csv | 183 ++++++++++++++++++ .../xfc_50kW_ld_100kWh.csv | 183 ++++++++++++++++++ .../xfc_50kW_ld_50kWh.csv | 183 ++++++++++++++++++ .../xfc_50kW_md_200kWh.csv | 183 ++++++++++++++++++ .../xfc_90kW_hd_300kWh.csv | 183 ++++++++++++++++++ .../xfc_90kW_hd_400kWh.csv | 183 ++++++++++++++++++ .../xfc_90kW_hd_600kWh.csv | 183 ++++++++++++++++++ .../xfc_90kW_ld_100kWh.csv | 183 ++++++++++++++++++ .../xfc_90kW_ld_50kWh.csv | 183 ++++++++++++++++++ .../xfc_90kW_md_200kWh.csv | 183 ++++++++++++++++++ .../outputs/tmp.txt | 0 .../test_charging_models_eMosaic/validate.py | 54 ++++++ 58 files changed, 9004 insertions(+), 10 deletions(-) rename unittests/test_charging_models_DirectXFC/outputs/{tmp.txt.txt => tmp.txt} (100%) create mode 100644 unittests/test_charging_models_eMosaic/.gitignore create mode 100644 unittests/test_charging_models_eMosaic/CMakeLists.txt create mode 100644 unittests/test_charging_models_eMosaic/inputs/EVSE_inputs.csv create mode 100644 unittests/test_charging_models_eMosaic/inputs/EV_inputs.csv create mode 100644 unittests/test_charging_models_eMosaic/main.cpp create mode 100644 unittests/test_charging_models_eMosaic/original_eMosaic_models/L2_17280W_hd_300kWh.csv create mode 100644 unittests/test_charging_models_eMosaic/original_eMosaic_models/L2_17280W_hd_400kWh.csv create mode 100644 unittests/test_charging_models_eMosaic/original_eMosaic_models/L2_17280W_hd_600kWh.csv create mode 100644 unittests/test_charging_models_eMosaic/original_eMosaic_models/L2_17280W_ld_100kWh.csv create mode 100644 unittests/test_charging_models_eMosaic/original_eMosaic_models/L2_17280W_ld_50kWh.csv create mode 100644 unittests/test_charging_models_eMosaic/original_eMosaic_models/L2_17280W_md_200kWh.csv create mode 100644 unittests/test_charging_models_eMosaic/original_eMosaic_models/L2_7200W_hd_300kWh.csv create mode 100644 unittests/test_charging_models_eMosaic/original_eMosaic_models/L2_7200W_hd_400kWh.csv create mode 100644 unittests/test_charging_models_eMosaic/original_eMosaic_models/L2_7200W_hd_600kWh.csv create mode 100644 unittests/test_charging_models_eMosaic/original_eMosaic_models/L2_7200W_ld_100kWh.csv create mode 100644 unittests/test_charging_models_eMosaic/original_eMosaic_models/L2_7200W_ld_50kWh.csv create mode 100644 unittests/test_charging_models_eMosaic/original_eMosaic_models/L2_7200W_md_200kWh.csv create mode 100644 unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_150kW_hd_300kWh.csv create mode 100644 unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_150kW_hd_400kWh.csv create mode 100644 unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_150kW_hd_600kWh.csv create mode 100644 unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_150kW_ld_100kWh.csv create mode 100644 unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_150kW_ld_50kWh.csv create mode 100644 unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_150kW_md_200kWh.csv create mode 100644 unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_180kW_hd_300kWh.csv create mode 100644 unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_180kW_hd_400kWh.csv create mode 100644 unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_180kW_hd_600kWh.csv create mode 100644 unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_180kW_ld_100kWh.csv create mode 100644 unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_180kW_ld_50kWh.csv create mode 100644 unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_180kW_md_200kWh.csv create mode 100644 unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_20kW_hd_300kWh.csv create mode 100644 unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_20kW_hd_400kWh.csv create mode 100644 unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_20kW_hd_600kWh.csv create mode 100644 unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_20kW_ld_100kWh.csv create mode 100644 unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_20kW_ld_50kWh.csv create mode 100644 unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_20kW_md_200kWh.csv create mode 100644 unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_450kW_hd_300kWh.csv create mode 100644 unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_450kW_hd_400kWh.csv create mode 100644 unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_450kW_hd_600kWh.csv create mode 100644 unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_450kW_ld_100kWh.csv create mode 100644 unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_450kW_ld_50kWh.csv create mode 100644 unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_450kW_md_200kWh.csv create mode 100644 unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_50kW_hd_300kWh.csv create mode 100644 unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_50kW_hd_400kWh.csv create mode 100644 unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_50kW_hd_600kWh.csv create mode 100644 unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_50kW_ld_100kWh.csv create mode 100644 unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_50kW_ld_50kWh.csv create mode 100644 unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_50kW_md_200kWh.csv create mode 100644 unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_90kW_hd_300kWh.csv create mode 100644 unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_90kW_hd_400kWh.csv create mode 100644 unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_90kW_hd_600kWh.csv create mode 100644 unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_90kW_ld_100kWh.csv create mode 100644 unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_90kW_ld_50kWh.csv create mode 100644 unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_90kW_md_200kWh.csv create mode 100644 unittests/test_charging_models_eMosaic/outputs/tmp.txt create mode 100644 unittests/test_charging_models_eMosaic/validate.py diff --git a/unittests/CMakeLists.txt b/unittests/CMakeLists.txt index 0bab090..5aaef1c 100644 --- a/unittests/CMakeLists.txt +++ b/unittests/CMakeLists.txt @@ -1,3 +1,4 @@ enable_testing() -add_subdirectory(test_charging_models_DirectXFC) \ No newline at end of file +add_subdirectory(test_charging_models_DirectXFC) +add_subdirectory(test_charging_models_eMosaic) \ No newline at end of file diff --git a/unittests/test_charging_models_DirectXFC/CMakeLists.txt b/unittests/test_charging_models_DirectXFC/CMakeLists.txt index 3086116..a8456c0 100644 --- a/unittests/test_charging_models_DirectXFC/CMakeLists.txt +++ b/unittests/test_charging_models_DirectXFC/CMakeLists.txt @@ -1,13 +1,13 @@ -add_executable(test_charging_models main.cpp ) -target_link_libraries(test_charging_models Charging_models Load_inputs factory Base) -target_compile_features(test_charging_models PUBLIC cxx_std_17) -target_include_directories(test_charging_models PUBLIC ${PROJECT_SOURCE_DIR}/source/base) -target_include_directories(test_charging_models PUBLIC ${PROJECT_SOURCE_DIR}/source/charging_models) -target_include_directories(test_charging_models PUBLIC ${PROJECT_SOURCE_DIR}/source/factory) -target_include_directories(test_charging_models PUBLIC ${PROJECT_SOURCE_DIR}/source/load_inputs) +add_executable(test_charging_models_DirectXFC main.cpp ) +target_link_libraries(test_charging_models_DirectXFC Charging_models Load_inputs factory Base) +target_compile_features(test_charging_models_DirectXFC PUBLIC cxx_std_17) +target_include_directories(test_charging_models_DirectXFC PUBLIC ${PROJECT_SOURCE_DIR}/source/base) +target_include_directories(test_charging_models_DirectXFC PUBLIC ${PROJECT_SOURCE_DIR}/source/charging_models) +target_include_directories(test_charging_models_DirectXFC PUBLIC ${PROJECT_SOURCE_DIR}/source/factory) +target_include_directories(test_charging_models_DirectXFC PUBLIC ${PROJECT_SOURCE_DIR}/source/load_inputs) message("CMAKE_CURRENT_SOURCE_DIR = ${CMAKE_CURRENT_SOURCE_DIR}") -add_test(NAME "test_charging_models" COMMAND "test_charging_models" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} ) -add_test(NAME "test_charging_models_py" COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/validate.py WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} ) \ No newline at end of file +add_test(NAME "test_charging_models_DirectXFC" COMMAND "test_charging_models_DirectXFC" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} ) +add_test(NAME "test_charging_models_DirectXFC_py" COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/validate.py WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} ) \ No newline at end of file diff --git a/unittests/test_charging_models_DirectXFC/outputs/tmp.txt.txt b/unittests/test_charging_models_DirectXFC/outputs/tmp.txt similarity index 100% rename from unittests/test_charging_models_DirectXFC/outputs/tmp.txt.txt rename to unittests/test_charging_models_DirectXFC/outputs/tmp.txt diff --git a/unittests/test_charging_models_eMosaic/.gitignore b/unittests/test_charging_models_eMosaic/.gitignore new file mode 100644 index 0000000..8a7e573 --- /dev/null +++ b/unittests/test_charging_models_eMosaic/.gitignore @@ -0,0 +1,4 @@ +/*.csv +*.png +*.jpg +outputs/*.csv \ No newline at end of file diff --git a/unittests/test_charging_models_eMosaic/CMakeLists.txt b/unittests/test_charging_models_eMosaic/CMakeLists.txt new file mode 100644 index 0000000..645e567 --- /dev/null +++ b/unittests/test_charging_models_eMosaic/CMakeLists.txt @@ -0,0 +1,13 @@ + +add_executable(test_charging_models_eMosaic main.cpp ) +target_link_libraries(test_charging_models_eMosaic Charging_models Load_inputs factory Base) +target_compile_features(test_charging_models_eMosaic PUBLIC cxx_std_17) +target_include_directories(test_charging_models_eMosaic PUBLIC ${PROJECT_SOURCE_DIR}/source/base) +target_include_directories(test_charging_models_eMosaic PUBLIC ${PROJECT_SOURCE_DIR}/source/charging_models) +target_include_directories(test_charging_models_eMosaic PUBLIC ${PROJECT_SOURCE_DIR}/source/factory) +target_include_directories(test_charging_models_eMosaic PUBLIC ${PROJECT_SOURCE_DIR}/source/load_inputs) + +message("CMAKE_CURRENT_SOURCE_DIR = ${CMAKE_CURRENT_SOURCE_DIR}") + +add_test(NAME "test_charging_models_eMosaic" COMMAND "test_charging_models_eMosaic" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} ) +add_test(NAME "test_charging_models_eMosaic_py" COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/validate.py WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} ) \ No newline at end of file diff --git a/unittests/test_charging_models_eMosaic/inputs/EVSE_inputs.csv b/unittests/test_charging_models_eMosaic/inputs/EVSE_inputs.csv new file mode 100644 index 0000000..40c163f --- /dev/null +++ b/unittests/test_charging_models_eMosaic/inputs/EVSE_inputs.csv @@ -0,0 +1,9 @@ +EVSE_type,EVSE_level,EVSE_phase_connection,AC/DC_power_limit_kW,AC/DC_voltage_limits_V,AC/DC_current_limit_A,standby_real_power_kW,standby_reactive_power_kVAR +L2_7200W,L2,1,7.2,240,30,0,0 +L2_17280W,L2,1,17.28,240,71,0,0 +xfc_20kW,DCFC,3,19.5,325,60,0.1,-0.59 +xfc_50kW,DCFC,3,50,625,80,0.1,-0.59 +xfc_90kW,DCFC,3,90,600,150,0.1,-0.59 +xfc_150kW,DCFC,3,150,750,200,0.17,-0.445 +xfc_180kW,DCFC,3,180,600,300,0.17,-0.445 +xfc_450kW,DCFC,3,450,750,600,0.17,-0.445 diff --git a/unittests/test_charging_models_eMosaic/inputs/EV_inputs.csv b/unittests/test_charging_models_eMosaic/inputs/EV_inputs.csv new file mode 100644 index 0000000..9f822fa --- /dev/null +++ b/unittests/test_charging_models_eMosaic/inputs/EV_inputs.csv @@ -0,0 +1,7 @@ +EV_type,battery_chemistry,usable_battery_size_kWh,range_miles,efficiency_Wh/Mile,AC_charge_rate_kW,DCFC_capable,max_c_rate,pack_voltage_at_peak_power_V +ld_50kWh,NMC,50,200,250,15.8976,TRUE,2.9,1000 +ld_100kWh,NMC,100,300,333,15.8976,TRUE,2.9,1000 +md_200kWh,NMC,200,250,800,15.8976,TRUE,2.9,1000 +hd_300kWh,NMC,300,150,2000,15.8976,TRUE,2.9,1500 +hd_400kWh,NMC,400,200,2000,15.8976,TRUE,2.9,1500 +hd_600kWh,NMC,600,300,2000,15.8976,TRUE,2.9,1500 diff --git a/unittests/test_charging_models_eMosaic/main.cpp b/unittests/test_charging_models_eMosaic/main.cpp new file mode 100644 index 0000000..dc759e8 --- /dev/null +++ b/unittests/test_charging_models_eMosaic/main.cpp @@ -0,0 +1,122 @@ +#include + +#include "load_EV_EVSE_inventory.h" +#include "factory_charging_transitions.h" +#include "factory_EV_charge_model.h" +#include "factory_SOC_vs_P2.h" + +#include + + +int main() +{ + load_EV_EVSE_inventory load_inventory{ "./inputs" }; + const EV_EVSE_inventory& inventory = load_inventory.get_EV_EVSE_inventory(); + + EV_ramping_map custom_EV_ramping; + EV_EVSE_ramping_map custom_EV_EVSE_ramping; + bool model_stochastic_battery_degregation = false; + + factory_EV_charge_model charge_model_factory{ inventory, custom_EV_ramping, custom_EV_EVSE_ramping, model_stochastic_battery_degregation }; + + std::vector EV_EVSE_pair = inventory.get_all_compatible_pev_SE_combinations(); + + /* + std::vector > EV_EVSE_pair; + + EV_EVSE_pair.push_back(std::make_pair("L2_7200", "bev150_ld1_50kW")); + EV_EVSE_pair.push_back(std::make_pair("dcfc_50", "bev150_ld1_50kW")); + EV_EVSE_pair.push_back(std::make_pair("xfc_350", "bev150_ld1_50kW")); + + EV_EVSE_pair.push_back(std::make_pair("L2_7200", "bev250_ld2_300kW")); + EV_EVSE_pair.push_back(std::make_pair("dcfc_50", "bev250_ld2_300kW")); + EV_EVSE_pair.push_back(std::make_pair("xfc_350", "bev250_ld2_300kW")); + + EV_EVSE_pair.push_back(std::make_pair("L2_7200", "bev300_575kW")); + EV_EVSE_pair.push_back(std::make_pair("dcfc_50", "bev300_575kW")); + EV_EVSE_pair.push_back(std::make_pair("xfc_350", "bev300_575kW")); + */ + + // Build charge event + + bool charge_has_completed; + battery_state bat_state; + double soc_t1; + double P1_kW; + double P2_kW; + + control_strategy_enums cs; + cs.inverter_model_supports_Qsetpoint = false; + cs.ES_control_strategy = L2_control_strategies_enum::NA; + cs.VS_control_strategy = L2_control_strategies_enum::NA; + cs.ext_control_strategy = ""; + + stop_charging_criteria scc; + + int charge_event_id = 1; + int SE_group_id = 1; + SE_id_type SE_id = 1; + vehicle_id_type vehicle_id = 1; + double arrival_unix_time = 1*3600; + double departure_unix_time = 4*3600; + double arrival_SOC = 0; + double departure_SOC = 100; + stop_charging_criteria stop_charge = scc; + control_strategy_enums control_enums = cs; + + std::string filename, header, data, seperator, new_line; + std::ofstream file_handle; + + for (pev_SE_pair elem : EV_EVSE_pair) + { + EVSE_type supply_equipment_type = elem.se_type; + EV_type vehicle_type = elem.ev_type; + + charge_event_data event(charge_event_id, SE_group_id, SE_id, vehicle_id, vehicle_type, arrival_unix_time, departure_unix_time, arrival_SOC, departure_SOC, scc, cs); + + vehicle_charge_model* model = charge_model_factory.alloc_get_EV_charge_model(event, supply_equipment_type, 1000000); + model->set_target_P2_kW(10000000); + + filename = "outputs/" + supply_equipment_type + "_" + vehicle_type + ".csv"; + + file_handle = std::ofstream(filename); + + seperator = ", "; + new_line = "\n"; + + header = "simulation_time_hrs, soc_t1, P1_kW, P2_kW"; + header += new_line; + + data = ""; + + double simulation_timestep_sec = 60; + double simulation_start_unix_time = arrival_unix_time - simulation_timestep_sec; + double simulation_end_unix_time = departure_unix_time; + + double previous_unix_time = simulation_start_unix_time - simulation_timestep_sec; + double current_unix_time = simulation_start_unix_time; + + while (current_unix_time <= simulation_end_unix_time) + { + model->get_next(previous_unix_time, current_unix_time, 1.0, charge_has_completed, bat_state); + + soc_t1 = bat_state.soc_t1; + P1_kW = bat_state.P1_kW; + P2_kW = bat_state.P2_kW; + + data += std::to_string(current_unix_time / 3600.0) + seperator; + data += std::to_string(soc_t1) + seperator; + data += std::to_string(P1_kW) + seperator; + data += std::to_string(P2_kW) + new_line; + + previous_unix_time = current_unix_time; + current_unix_time += simulation_timestep_sec; + } + + file_handle << header; + file_handle << data; + file_handle.close(); + } + + return 0; +} \ No newline at end of file diff --git a/unittests/test_charging_models_eMosaic/original_eMosaic_models/L2_17280W_hd_300kWh.csv b/unittests/test_charging_models_eMosaic/original_eMosaic_models/L2_17280W_hd_300kWh.csv new file mode 100644 index 0000000..799cb74 --- /dev/null +++ b/unittests/test_charging_models_eMosaic/original_eMosaic_models/L2_17280W_hd_300kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.074403, 13.392625, 13.519743 +1.016667, 0.161889, 15.747445, 15.897600 +1.033333, 0.249375, 15.747445, 15.897600 +1.050000, 0.336861, 15.747445, 15.897600 +1.066667, 0.424347, 15.747445, 15.897600 +1.083333, 0.511833, 15.747445, 15.897600 +1.100000, 0.599318, 15.747445, 15.897600 +1.116667, 0.686804, 15.747445, 15.897600 +1.133333, 0.774290, 15.747445, 15.897600 +1.150000, 0.861776, 15.747445, 15.897600 +1.166667, 0.949262, 15.747445, 15.897600 +1.183333, 1.036747, 15.747445, 15.897600 +1.200000, 1.124233, 15.747445, 15.897600 +1.216667, 1.211719, 15.747445, 15.897600 +1.233333, 1.299205, 15.747445, 15.897600 +1.250000, 1.386691, 15.747445, 15.897600 +1.266667, 1.474176, 15.747445, 15.897600 +1.283333, 1.561662, 15.747445, 15.897600 +1.300000, 1.649148, 15.747445, 15.897600 +1.316667, 1.736634, 15.747445, 15.897600 +1.333333, 1.824120, 15.747445, 15.897600 +1.350000, 1.911605, 15.747445, 15.897600 +1.366667, 1.999091, 15.747445, 15.897600 +1.383333, 2.086577, 15.747445, 15.897600 +1.400000, 2.174063, 15.747445, 15.897600 +1.416667, 2.261549, 15.747445, 15.897600 +1.433333, 2.349034, 15.747445, 15.897600 +1.450000, 2.436520, 15.747445, 15.897600 +1.466667, 2.524006, 15.747445, 15.897600 +1.483333, 2.611492, 15.747445, 15.897600 +1.500000, 2.698978, 15.747445, 15.897600 +1.516667, 2.786464, 15.747445, 15.897600 +1.533333, 2.873949, 15.747445, 15.897600 +1.550000, 2.961435, 15.747445, 15.897600 +1.566667, 3.048921, 15.747445, 15.897600 +1.583333, 3.136407, 15.747445, 15.897600 +1.600000, 3.223893, 15.747445, 15.897600 +1.616667, 3.311378, 15.747445, 15.897600 +1.633333, 3.398864, 15.747445, 15.897600 +1.650000, 3.486350, 15.747445, 15.897600 +1.666667, 3.573836, 15.747445, 15.897600 +1.683333, 3.661322, 15.747445, 15.897600 +1.700000, 3.748807, 15.747445, 15.897600 +1.716667, 3.836293, 15.747445, 15.897600 +1.733333, 3.923779, 15.747445, 15.897600 +1.750000, 4.011265, 15.747445, 15.897600 +1.766667, 4.098751, 15.747445, 15.897600 +1.783333, 4.186236, 15.747445, 15.897600 +1.800000, 4.273722, 15.747445, 15.897600 +1.816667, 4.361208, 15.747445, 15.897600 +1.833333, 4.448694, 15.747445, 15.897600 +1.850000, 4.536180, 15.747445, 15.897600 +1.866667, 4.623665, 15.747445, 15.897600 +1.883333, 4.711151, 15.747445, 15.897600 +1.900000, 4.798637, 15.747445, 15.897600 +1.916667, 4.886123, 15.747445, 15.897600 +1.933333, 4.973609, 15.747445, 15.897600 +1.950000, 5.061095, 15.747445, 15.897600 +1.966667, 5.148580, 15.747445, 15.897600 +1.983333, 5.236066, 15.747445, 15.897600 +2.000000, 5.323552, 15.747445, 15.897600 +2.016667, 5.411038, 15.747445, 15.897600 +2.033333, 5.498524, 15.747445, 15.897600 +2.050000, 5.586009, 15.747445, 15.897600 +2.066667, 5.673495, 15.747445, 15.897600 +2.083333, 5.760981, 15.747445, 15.897600 +2.100000, 5.848467, 15.747445, 15.897600 +2.116667, 5.935953, 15.747445, 15.897600 +2.133333, 6.023438, 15.747445, 15.897600 +2.150000, 6.110924, 15.747445, 15.897600 +2.166667, 6.198410, 15.747445, 15.897600 +2.183333, 6.285896, 15.747445, 15.897600 +2.200000, 6.373382, 15.747445, 15.897600 +2.216667, 6.460867, 15.747445, 15.897600 +2.233333, 6.548353, 15.747445, 15.897600 +2.250000, 6.635839, 15.747445, 15.897600 +2.266667, 6.723325, 15.747445, 15.897600 +2.283333, 6.810811, 15.747445, 15.897600 +2.300000, 6.898296, 15.747445, 15.897600 +2.316667, 6.985782, 15.747445, 15.897600 +2.333333, 7.073268, 15.747445, 15.897600 +2.350000, 7.160754, 15.747445, 15.897600 +2.366667, 7.248240, 15.747445, 15.897600 +2.383333, 7.335726, 15.747445, 15.897600 +2.400000, 7.423211, 15.747445, 15.897600 +2.416667, 7.510697, 15.747445, 15.897600 +2.433333, 7.598183, 15.747445, 15.897600 +2.450000, 7.685669, 15.747445, 15.897600 +2.466667, 7.773155, 15.747445, 15.897600 +2.483333, 7.860640, 15.747445, 15.897600 +2.500000, 7.948126, 15.747445, 15.897600 +2.516667, 8.035612, 15.747445, 15.897600 +2.533333, 8.123098, 15.747445, 15.897600 +2.550000, 8.210584, 15.747445, 15.897600 +2.566667, 8.298069, 15.747445, 15.897600 +2.583333, 8.385555, 15.747445, 15.897600 +2.600000, 8.473041, 15.747445, 15.897600 +2.616667, 8.560527, 15.747445, 15.897600 +2.633333, 8.648013, 15.747445, 15.897600 +2.650000, 8.735498, 15.747445, 15.897600 +2.666667, 8.822984, 15.747445, 15.897600 +2.683333, 8.910470, 15.747445, 15.897600 +2.700000, 8.997956, 15.747445, 15.897600 +2.716667, 9.085442, 15.747445, 15.897600 +2.733333, 9.172927, 15.747445, 15.897600 +2.750000, 9.260413, 15.747445, 15.897600 +2.766667, 9.347899, 15.747445, 15.897600 +2.783333, 9.435385, 15.747445, 15.897600 +2.800000, 9.522871, 15.747445, 15.897600 +2.816667, 9.610357, 15.747445, 15.897600 +2.833333, 9.697842, 15.747445, 15.897600 +2.850000, 9.785328, 15.747445, 15.897600 +2.866667, 9.872814, 15.747445, 15.897600 +2.883333, 9.960300, 15.747445, 15.897600 +2.900000, 10.047786, 15.747445, 15.897600 +2.916667, 10.135271, 15.747445, 15.897600 +2.933333, 10.222757, 15.747445, 15.897600 +2.950000, 10.310243, 15.747445, 15.897600 +2.966667, 10.397729, 15.747445, 15.897600 +2.983333, 10.485215, 15.747445, 15.897600 +3.000000, 10.572700, 15.747445, 15.897600 +3.016667, 10.660186, 15.747445, 15.897600 +3.033333, 10.747672, 15.747445, 15.897600 +3.050000, 10.835158, 15.747445, 15.897600 +3.066667, 10.922644, 15.747445, 15.897600 +3.083333, 11.010129, 15.747445, 15.897600 +3.100000, 11.097615, 15.747445, 15.897600 +3.116667, 11.185101, 15.747445, 15.897600 +3.133333, 11.272587, 15.747445, 15.897600 +3.150000, 11.360073, 15.747445, 15.897600 +3.166667, 11.447558, 15.747445, 15.897600 +3.183333, 11.535044, 15.747445, 15.897600 +3.200000, 11.622530, 15.747445, 15.897600 +3.216667, 11.710016, 15.747445, 15.897600 +3.233333, 11.797502, 15.747445, 15.897600 +3.250000, 11.884988, 15.747445, 15.897600 +3.266667, 11.972473, 15.747445, 15.897600 +3.283333, 12.059959, 15.747445, 15.897600 +3.300000, 12.147445, 15.747445, 15.897600 +3.316667, 12.234931, 15.747445, 15.897600 +3.333333, 12.322417, 15.747445, 15.897600 +3.350000, 12.409902, 15.747445, 15.897600 +3.366667, 12.497388, 15.747445, 15.897600 +3.383333, 12.584874, 15.747445, 15.897600 +3.400000, 12.672360, 15.747445, 15.897600 +3.416667, 12.759846, 15.747445, 15.897600 +3.433333, 12.847331, 15.747445, 15.897600 +3.450000, 12.934817, 15.747445, 15.897600 +3.466667, 13.022303, 15.747445, 15.897600 +3.483333, 13.109789, 15.747445, 15.897600 +3.500000, 13.197275, 15.747445, 15.897600 +3.516667, 13.284760, 15.747445, 15.897600 +3.533333, 13.372246, 15.747445, 15.897600 +3.550000, 13.459732, 15.747445, 15.897600 +3.566667, 13.547218, 15.747445, 15.897600 +3.583333, 13.634704, 15.747445, 15.897600 +3.600000, 13.722189, 15.747445, 15.897600 +3.616667, 13.809675, 15.747445, 15.897600 +3.633333, 13.897161, 15.747445, 15.897600 +3.650000, 13.984647, 15.747445, 15.897600 +3.666667, 14.072133, 15.747445, 15.897600 +3.683333, 14.159619, 15.747445, 15.897600 +3.700000, 14.247104, 15.747445, 15.897600 +3.716667, 14.334590, 15.747445, 15.897600 +3.733333, 14.422076, 15.747445, 15.897600 +3.750000, 14.509562, 15.747445, 15.897600 +3.766667, 14.597048, 15.747445, 15.897600 +3.783333, 14.684533, 15.747445, 15.897600 +3.800000, 14.772019, 15.747445, 15.897600 +3.816667, 14.859505, 15.747445, 15.897600 +3.833333, 14.946991, 15.747445, 15.897600 +3.850000, 15.034477, 15.747445, 15.897600 +3.866667, 15.121962, 15.747445, 15.897600 +3.883333, 15.209448, 15.747445, 15.897600 +3.900000, 15.296934, 15.747445, 15.897600 +3.916667, 15.384420, 15.747445, 15.897600 +3.933333, 15.471906, 15.747445, 15.897600 +3.950000, 15.559391, 15.747445, 15.897600 +3.966667, 15.646877, 15.747445, 15.897600 +3.983333, 15.734363, 15.747445, 15.897600 +4.000000, 15.821849, 15.747445, 15.897600 diff --git a/unittests/test_charging_models_eMosaic/original_eMosaic_models/L2_17280W_hd_400kWh.csv b/unittests/test_charging_models_eMosaic/original_eMosaic_models/L2_17280W_hd_400kWh.csv new file mode 100644 index 0000000..b8dc6e6 --- /dev/null +++ b/unittests/test_charging_models_eMosaic/original_eMosaic_models/L2_17280W_hd_400kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.055806, 13.393446, 13.519743 +1.016667, 0.121425, 15.748581, 15.897600 +1.033333, 0.187044, 15.748581, 15.897600 +1.050000, 0.252663, 15.748581, 15.897600 +1.066667, 0.318282, 15.748581, 15.897600 +1.083333, 0.383901, 15.748581, 15.897600 +1.100000, 0.449521, 15.748581, 15.897600 +1.116667, 0.515140, 15.748581, 15.897600 +1.133333, 0.580759, 15.748581, 15.897600 +1.150000, 0.646378, 15.748581, 15.897600 +1.166667, 0.711997, 15.748581, 15.897600 +1.183333, 0.777616, 15.748581, 15.897600 +1.200000, 0.843235, 15.748581, 15.897600 +1.216667, 0.908854, 15.748581, 15.897600 +1.233333, 0.974473, 15.748581, 15.897600 +1.250000, 1.040092, 15.748581, 15.897600 +1.266667, 1.105711, 15.748581, 15.897600 +1.283333, 1.171330, 15.748581, 15.897600 +1.300000, 1.236950, 15.748581, 15.897600 +1.316667, 1.302569, 15.748581, 15.897600 +1.333333, 1.368188, 15.748581, 15.897600 +1.350000, 1.433807, 15.748581, 15.897600 +1.366667, 1.499426, 15.748581, 15.897600 +1.383333, 1.565045, 15.748581, 15.897600 +1.400000, 1.630664, 15.748581, 15.897600 +1.416667, 1.696283, 15.748581, 15.897600 +1.433333, 1.761902, 15.748581, 15.897600 +1.450000, 1.827521, 15.748581, 15.897600 +1.466667, 1.893140, 15.748581, 15.897600 +1.483333, 1.958760, 15.748581, 15.897600 +1.500000, 2.024379, 15.748581, 15.897600 +1.516667, 2.089998, 15.748581, 15.897600 +1.533333, 2.155617, 15.748581, 15.897600 +1.550000, 2.221236, 15.748581, 15.897600 +1.566667, 2.286855, 15.748581, 15.897600 +1.583333, 2.352474, 15.748581, 15.897600 +1.600000, 2.418093, 15.748581, 15.897600 +1.616667, 2.483712, 15.748581, 15.897600 +1.633333, 2.549331, 15.748581, 15.897600 +1.650000, 2.614950, 15.748581, 15.897600 +1.666667, 2.680569, 15.748581, 15.897600 +1.683333, 2.746189, 15.748581, 15.897600 +1.700000, 2.811808, 15.748581, 15.897600 +1.716667, 2.877427, 15.748581, 15.897600 +1.733333, 2.943046, 15.748581, 15.897600 +1.750000, 3.008665, 15.748581, 15.897600 +1.766667, 3.074284, 15.748581, 15.897600 +1.783333, 3.139903, 15.748581, 15.897600 +1.800000, 3.205522, 15.748581, 15.897600 +1.816667, 3.271141, 15.748581, 15.897600 +1.833333, 3.336760, 15.748581, 15.897600 +1.850000, 3.402379, 15.748581, 15.897600 +1.866667, 3.467998, 15.748581, 15.897600 +1.883333, 3.533618, 15.748581, 15.897600 +1.900000, 3.599237, 15.748581, 15.897600 +1.916667, 3.664856, 15.748581, 15.897600 +1.933333, 3.730475, 15.748581, 15.897600 +1.950000, 3.796094, 15.748581, 15.897600 +1.966667, 3.861713, 15.748581, 15.897600 +1.983333, 3.927332, 15.748581, 15.897600 +2.000000, 3.992951, 15.748581, 15.897600 +2.016667, 4.058570, 15.748581, 15.897600 +2.033333, 4.124189, 15.748581, 15.897600 +2.050000, 4.189808, 15.748581, 15.897600 +2.066667, 4.255428, 15.748581, 15.897600 +2.083333, 4.321047, 15.748581, 15.897600 +2.100000, 4.386666, 15.748581, 15.897600 +2.116667, 4.452285, 15.748581, 15.897600 +2.133333, 4.517904, 15.748581, 15.897600 +2.150000, 4.583523, 15.748581, 15.897600 +2.166667, 4.649142, 15.748581, 15.897600 +2.183333, 4.714761, 15.748581, 15.897600 +2.200000, 4.780380, 15.748581, 15.897600 +2.216667, 4.845999, 15.748581, 15.897600 +2.233333, 4.911618, 15.748581, 15.897600 +2.250000, 4.977237, 15.748581, 15.897600 +2.266667, 5.042857, 15.748581, 15.897600 +2.283333, 5.108476, 15.748581, 15.897600 +2.300000, 5.174095, 15.748581, 15.897600 +2.316667, 5.239714, 15.748581, 15.897600 +2.333333, 5.305333, 15.748581, 15.897600 +2.350000, 5.370952, 15.748581, 15.897600 +2.366667, 5.436571, 15.748581, 15.897600 +2.383333, 5.502190, 15.748581, 15.897600 +2.400000, 5.567809, 15.748581, 15.897600 +2.416667, 5.633428, 15.748581, 15.897600 +2.433333, 5.699047, 15.748581, 15.897600 +2.450000, 5.764666, 15.748581, 15.897600 +2.466667, 5.830286, 15.748581, 15.897600 +2.483333, 5.895905, 15.748581, 15.897600 +2.500000, 5.961524, 15.748581, 15.897600 +2.516667, 6.027143, 15.748581, 15.897600 +2.533333, 6.092762, 15.748581, 15.897600 +2.550000, 6.158381, 15.748581, 15.897600 +2.566667, 6.224000, 15.748581, 15.897600 +2.583333, 6.289619, 15.748581, 15.897600 +2.600000, 6.355238, 15.748581, 15.897600 +2.616667, 6.420857, 15.748581, 15.897600 +2.633333, 6.486476, 15.748581, 15.897600 +2.650000, 6.552095, 15.748581, 15.897600 +2.666667, 6.617715, 15.748581, 15.897600 +2.683333, 6.683334, 15.748581, 15.897600 +2.700000, 6.748953, 15.748581, 15.897600 +2.716667, 6.814572, 15.748581, 15.897600 +2.733333, 6.880191, 15.748581, 15.897600 +2.750000, 6.945810, 15.748581, 15.897600 +2.766667, 7.011429, 15.748581, 15.897600 +2.783333, 7.077048, 15.748581, 15.897600 +2.800000, 7.142667, 15.748581, 15.897600 +2.816667, 7.208286, 15.748581, 15.897600 +2.833333, 7.273905, 15.748581, 15.897600 +2.850000, 7.339525, 15.748581, 15.897600 +2.866667, 7.405144, 15.748581, 15.897600 +2.883333, 7.470763, 15.748581, 15.897600 +2.900000, 7.536382, 15.748581, 15.897600 +2.916667, 7.602001, 15.748581, 15.897600 +2.933333, 7.667620, 15.748581, 15.897600 +2.950000, 7.733239, 15.748581, 15.897600 +2.966667, 7.798858, 15.748581, 15.897600 +2.983333, 7.864477, 15.748581, 15.897600 +3.000000, 7.930096, 15.748581, 15.897600 +3.016667, 7.995715, 15.748581, 15.897600 +3.033333, 8.061334, 15.748581, 15.897600 +3.050000, 8.126954, 15.748581, 15.897600 +3.066667, 8.192573, 15.748581, 15.897600 +3.083333, 8.258192, 15.748581, 15.897600 +3.100000, 8.323811, 15.748581, 15.897600 +3.116667, 8.389430, 15.748581, 15.897600 +3.133333, 8.455049, 15.748581, 15.897600 +3.150000, 8.520668, 15.748581, 15.897600 +3.166667, 8.586287, 15.748581, 15.897600 +3.183333, 8.651906, 15.748581, 15.897600 +3.200000, 8.717525, 15.748581, 15.897600 +3.216667, 8.783144, 15.748581, 15.897600 +3.233333, 8.848763, 15.748581, 15.897600 +3.250000, 8.914383, 15.748581, 15.897600 +3.266667, 8.980002, 15.748581, 15.897600 +3.283333, 9.045621, 15.748581, 15.897600 +3.300000, 9.111240, 15.748581, 15.897600 +3.316667, 9.176859, 15.748581, 15.897600 +3.333333, 9.242478, 15.748581, 15.897600 +3.350000, 9.308097, 15.748581, 15.897600 +3.366667, 9.373716, 15.748581, 15.897600 +3.383333, 9.439335, 15.748581, 15.897600 +3.400000, 9.504954, 15.748581, 15.897600 +3.416667, 9.570573, 15.748581, 15.897600 +3.433333, 9.636193, 15.748581, 15.897600 +3.450000, 9.701812, 15.748581, 15.897600 +3.466667, 9.767431, 15.748581, 15.897600 +3.483333, 9.833050, 15.748581, 15.897600 +3.500000, 9.898669, 15.748581, 15.897600 +3.516667, 9.964288, 15.748581, 15.897600 +3.533333, 10.029907, 15.748581, 15.897600 +3.550000, 10.095526, 15.748581, 15.897600 +3.566667, 10.161145, 15.748581, 15.897600 +3.583333, 10.226764, 15.748581, 15.897600 +3.600000, 10.292383, 15.748581, 15.897600 +3.616667, 10.358002, 15.748581, 15.897600 +3.633333, 10.423622, 15.748581, 15.897600 +3.650000, 10.489241, 15.748581, 15.897600 +3.666667, 10.554860, 15.748581, 15.897600 +3.683333, 10.620479, 15.748581, 15.897600 +3.700000, 10.686098, 15.748581, 15.897600 +3.716667, 10.751717, 15.748581, 15.897600 +3.733333, 10.817336, 15.748581, 15.897600 +3.750000, 10.882955, 15.748581, 15.897600 +3.766667, 10.948574, 15.748581, 15.897600 +3.783333, 11.014193, 15.748581, 15.897600 +3.800000, 11.079812, 15.748581, 15.897600 +3.816667, 11.145431, 15.748581, 15.897600 +3.833333, 11.211051, 15.748581, 15.897600 +3.850000, 11.276670, 15.748581, 15.897600 +3.866667, 11.342289, 15.748581, 15.897600 +3.883333, 11.407908, 15.748581, 15.897600 +3.900000, 11.473527, 15.748581, 15.897600 +3.916667, 11.539146, 15.748581, 15.897600 +3.933333, 11.604765, 15.748581, 15.897600 +3.950000, 11.670384, 15.748581, 15.897600 +3.966667, 11.736003, 15.748581, 15.897600 +3.983333, 11.801622, 15.748581, 15.897600 +4.000000, 11.867241, 15.748581, 15.897600 diff --git a/unittests/test_charging_models_eMosaic/original_eMosaic_models/L2_17280W_hd_600kWh.csv b/unittests/test_charging_models_eMosaic/original_eMosaic_models/L2_17280W_hd_600kWh.csv new file mode 100644 index 0000000..f075ffb --- /dev/null +++ b/unittests/test_charging_models_eMosaic/original_eMosaic_models/L2_17280W_hd_600kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.037206, 13.394267, 13.519743 +1.016667, 0.080956, 15.749716, 15.897600 +1.033333, 0.124705, 15.749716, 15.897600 +1.050000, 0.168454, 15.749716, 15.897600 +1.066667, 0.212203, 15.749716, 15.897600 +1.083333, 0.255952, 15.749716, 15.897600 +1.100000, 0.299702, 15.749716, 15.897600 +1.116667, 0.343451, 15.749716, 15.897600 +1.133333, 0.387200, 15.749716, 15.897600 +1.150000, 0.430949, 15.749716, 15.897600 +1.166667, 0.474698, 15.749716, 15.897600 +1.183333, 0.518448, 15.749716, 15.897600 +1.200000, 0.562197, 15.749716, 15.897600 +1.216667, 0.605946, 15.749716, 15.897600 +1.233333, 0.649695, 15.749716, 15.897600 +1.250000, 0.693444, 15.749716, 15.897600 +1.266667, 0.737194, 15.749716, 15.897600 +1.283333, 0.780943, 15.749716, 15.897600 +1.300000, 0.824692, 15.749716, 15.897600 +1.316667, 0.868441, 15.749716, 15.897600 +1.333333, 0.912191, 15.749716, 15.897600 +1.350000, 0.955940, 15.749716, 15.897600 +1.366667, 0.999689, 15.749716, 15.897600 +1.383333, 1.043438, 15.749716, 15.897600 +1.400000, 1.087187, 15.749716, 15.897600 +1.416667, 1.130937, 15.749716, 15.897600 +1.433333, 1.174686, 15.749716, 15.897600 +1.450000, 1.218435, 15.749716, 15.897600 +1.466667, 1.262184, 15.749716, 15.897600 +1.483333, 1.305933, 15.749716, 15.897600 +1.500000, 1.349683, 15.749716, 15.897600 +1.516667, 1.393432, 15.749716, 15.897600 +1.533333, 1.437181, 15.749716, 15.897600 +1.550000, 1.480930, 15.749716, 15.897600 +1.566667, 1.524679, 15.749716, 15.897600 +1.583333, 1.568429, 15.749716, 15.897600 +1.600000, 1.612178, 15.749716, 15.897600 +1.616667, 1.655927, 15.749716, 15.897600 +1.633333, 1.699676, 15.749716, 15.897600 +1.650000, 1.743425, 15.749716, 15.897600 +1.666667, 1.787175, 15.749716, 15.897600 +1.683333, 1.830924, 15.749716, 15.897600 +1.700000, 1.874673, 15.749716, 15.897600 +1.716667, 1.918422, 15.749716, 15.897600 +1.733333, 1.962172, 15.749716, 15.897600 +1.750000, 2.005921, 15.749716, 15.897600 +1.766667, 2.049670, 15.749716, 15.897600 +1.783333, 2.093419, 15.749716, 15.897600 +1.800000, 2.137168, 15.749716, 15.897600 +1.816667, 2.180918, 15.749716, 15.897600 +1.833333, 2.224667, 15.749716, 15.897600 +1.850000, 2.268416, 15.749716, 15.897600 +1.866667, 2.312165, 15.749716, 15.897600 +1.883333, 2.355914, 15.749716, 15.897600 +1.900000, 2.399664, 15.749716, 15.897600 +1.916667, 2.443413, 15.749716, 15.897600 +1.933333, 2.487162, 15.749716, 15.897600 +1.950000, 2.530911, 15.749716, 15.897600 +1.966667, 2.574660, 15.749716, 15.897600 +1.983333, 2.618410, 15.749716, 15.897600 +2.000000, 2.662159, 15.749716, 15.897600 +2.016667, 2.705908, 15.749716, 15.897600 +2.033333, 2.749657, 15.749716, 15.897600 +2.050000, 2.793407, 15.749716, 15.897600 +2.066667, 2.837156, 15.749716, 15.897600 +2.083333, 2.880905, 15.749716, 15.897600 +2.100000, 2.924654, 15.749716, 15.897600 +2.116667, 2.968403, 15.749716, 15.897600 +2.133333, 3.012153, 15.749716, 15.897600 +2.150000, 3.055902, 15.749716, 15.897600 +2.166667, 3.099651, 15.749716, 15.897600 +2.183333, 3.143400, 15.749716, 15.897600 +2.200000, 3.187149, 15.749716, 15.897600 +2.216667, 3.230899, 15.749716, 15.897600 +2.233333, 3.274648, 15.749716, 15.897600 +2.250000, 3.318397, 15.749716, 15.897600 +2.266667, 3.362146, 15.749716, 15.897600 +2.283333, 3.405895, 15.749716, 15.897600 +2.300000, 3.449645, 15.749716, 15.897600 +2.316667, 3.493394, 15.749716, 15.897600 +2.333333, 3.537143, 15.749716, 15.897600 +2.350000, 3.580892, 15.749716, 15.897600 +2.366667, 3.624642, 15.749716, 15.897600 +2.383333, 3.668391, 15.749716, 15.897600 +2.400000, 3.712140, 15.749716, 15.897600 +2.416667, 3.755889, 15.749716, 15.897600 +2.433333, 3.799638, 15.749716, 15.897600 +2.450000, 3.843388, 15.749716, 15.897600 +2.466667, 3.887137, 15.749716, 15.897600 +2.483333, 3.930886, 15.749716, 15.897600 +2.500000, 3.974635, 15.749716, 15.897600 +2.516667, 4.018384, 15.749716, 15.897600 +2.533333, 4.062134, 15.749716, 15.897600 +2.550000, 4.105883, 15.749716, 15.897600 +2.566667, 4.149632, 15.749716, 15.897600 +2.583333, 4.193381, 15.749716, 15.897600 +2.600000, 4.237130, 15.749716, 15.897600 +2.616667, 4.280880, 15.749716, 15.897600 +2.633333, 4.324629, 15.749716, 15.897600 +2.650000, 4.368378, 15.749716, 15.897600 +2.666667, 4.412127, 15.749716, 15.897600 +2.683333, 4.455877, 15.749716, 15.897600 +2.700000, 4.499626, 15.749716, 15.897600 +2.716667, 4.543375, 15.749716, 15.897600 +2.733333, 4.587124, 15.749716, 15.897600 +2.750000, 4.630873, 15.749716, 15.897600 +2.766667, 4.674623, 15.749716, 15.897600 +2.783333, 4.718372, 15.749716, 15.897600 +2.800000, 4.762121, 15.749716, 15.897600 +2.816667, 4.805870, 15.749716, 15.897600 +2.833333, 4.849619, 15.749716, 15.897600 +2.850000, 4.893369, 15.749716, 15.897600 +2.866667, 4.937118, 15.749716, 15.897600 +2.883333, 4.980867, 15.749716, 15.897600 +2.900000, 5.024616, 15.749716, 15.897600 +2.916667, 5.068365, 15.749716, 15.897600 +2.933333, 5.112115, 15.749716, 15.897600 +2.950000, 5.155864, 15.749716, 15.897600 +2.966667, 5.199613, 15.749716, 15.897600 +2.983333, 5.243362, 15.749716, 15.897600 +3.000000, 5.287112, 15.749716, 15.897600 +3.016667, 5.330861, 15.749716, 15.897600 +3.033333, 5.374610, 15.749716, 15.897600 +3.050000, 5.418359, 15.749716, 15.897600 +3.066667, 5.462108, 15.749716, 15.897600 +3.083333, 5.505858, 15.749716, 15.897600 +3.100000, 5.549607, 15.749716, 15.897600 +3.116667, 5.593356, 15.749716, 15.897600 +3.133333, 5.637105, 15.749716, 15.897600 +3.150000, 5.680854, 15.749716, 15.897600 +3.166667, 5.724604, 15.749716, 15.897600 +3.183333, 5.768353, 15.749716, 15.897600 +3.200000, 5.812102, 15.749716, 15.897600 +3.216667, 5.855851, 15.749716, 15.897600 +3.233333, 5.899600, 15.749716, 15.897600 +3.250000, 5.943350, 15.749716, 15.897600 +3.266667, 5.987099, 15.749716, 15.897600 +3.283333, 6.030848, 15.749716, 15.897600 +3.300000, 6.074597, 15.749716, 15.897600 +3.316667, 6.118347, 15.749716, 15.897600 +3.333333, 6.162096, 15.749716, 15.897600 +3.350000, 6.205845, 15.749716, 15.897600 +3.366667, 6.249594, 15.749716, 15.897600 +3.383333, 6.293343, 15.749716, 15.897600 +3.400000, 6.337093, 15.749716, 15.897600 +3.416667, 6.380842, 15.749716, 15.897600 +3.433333, 6.424591, 15.749716, 15.897600 +3.450000, 6.468340, 15.749716, 15.897600 +3.466667, 6.512089, 15.749716, 15.897600 +3.483333, 6.555839, 15.749716, 15.897600 +3.500000, 6.599588, 15.749716, 15.897600 +3.516667, 6.643337, 15.749716, 15.897600 +3.533333, 6.687086, 15.749716, 15.897600 +3.550000, 6.730835, 15.749716, 15.897600 +3.566667, 6.774585, 15.749716, 15.897600 +3.583333, 6.818334, 15.749716, 15.897600 +3.600000, 6.862083, 15.749716, 15.897600 +3.616667, 6.905832, 15.749716, 15.897600 +3.633333, 6.949582, 15.749716, 15.897600 +3.650000, 6.993331, 15.749716, 15.897600 +3.666667, 7.037080, 15.749716, 15.897600 +3.683333, 7.080829, 15.749716, 15.897600 +3.700000, 7.124578, 15.749716, 15.897600 +3.716667, 7.168328, 15.749716, 15.897600 +3.733333, 7.212077, 15.749716, 15.897600 +3.750000, 7.255826, 15.749716, 15.897600 +3.766667, 7.299575, 15.749716, 15.897600 +3.783333, 7.343324, 15.749716, 15.897600 +3.800000, 7.387074, 15.749716, 15.897600 +3.816667, 7.430823, 15.749716, 15.897600 +3.833333, 7.474572, 15.749716, 15.897600 +3.850000, 7.518321, 15.749716, 15.897600 +3.866667, 7.562070, 15.749716, 15.897600 +3.883333, 7.605820, 15.749716, 15.897600 +3.900000, 7.649569, 15.749716, 15.897600 +3.916667, 7.693318, 15.749716, 15.897600 +3.933333, 7.737067, 15.749716, 15.897600 +3.950000, 7.780817, 15.749716, 15.897600 +3.966667, 7.824566, 15.749716, 15.897600 +3.983333, 7.868315, 15.749716, 15.897600 +4.000000, 7.912064, 15.749716, 15.897600 diff --git a/unittests/test_charging_models_eMosaic/original_eMosaic_models/L2_17280W_ld_100kWh.csv b/unittests/test_charging_models_eMosaic/original_eMosaic_models/L2_17280W_ld_100kWh.csv new file mode 100644 index 0000000..f5cc5c9 --- /dev/null +++ b/unittests/test_charging_models_eMosaic/original_eMosaic_models/L2_17280W_ld_100kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.223101, 13.386057, 13.519743 +1.016667, 0.485407, 15.738364, 15.897600 +1.033333, 0.747713, 15.738364, 15.897600 +1.050000, 1.010019, 15.738364, 15.897600 +1.066667, 1.272325, 15.738364, 15.897600 +1.083333, 1.534631, 15.738364, 15.897600 +1.100000, 1.796937, 15.738364, 15.897600 +1.116667, 2.059243, 15.738364, 15.897600 +1.133333, 2.321550, 15.738364, 15.897600 +1.150000, 2.583856, 15.738364, 15.897600 +1.166667, 2.846162, 15.738364, 15.897600 +1.183333, 3.108468, 15.738364, 15.897600 +1.200000, 3.370774, 15.738364, 15.897600 +1.216667, 3.633080, 15.738364, 15.897600 +1.233333, 3.895386, 15.738364, 15.897600 +1.250000, 4.157692, 15.738364, 15.897600 +1.266667, 4.419998, 15.738364, 15.897600 +1.283333, 4.682304, 15.738364, 15.897600 +1.300000, 4.944610, 15.738364, 15.897600 +1.316667, 5.206916, 15.738364, 15.897600 +1.333333, 5.469222, 15.738364, 15.897600 +1.350000, 5.731528, 15.738364, 15.897600 +1.366667, 5.993835, 15.738364, 15.897600 +1.383333, 6.256141, 15.738364, 15.897600 +1.400000, 6.518447, 15.738364, 15.897600 +1.416667, 6.780753, 15.738364, 15.897600 +1.433333, 7.043059, 15.738364, 15.897600 +1.450000, 7.305365, 15.738364, 15.897600 +1.466667, 7.567671, 15.738364, 15.897600 +1.483333, 7.829977, 15.738364, 15.897600 +1.500000, 8.092283, 15.738364, 15.897600 +1.516667, 8.354589, 15.738364, 15.897600 +1.533333, 8.616895, 15.738364, 15.897600 +1.550000, 8.879201, 15.738364, 15.897600 +1.566667, 9.141507, 15.738364, 15.897600 +1.583333, 9.403813, 15.738364, 15.897600 +1.600000, 9.666120, 15.738364, 15.897600 +1.616667, 9.928426, 15.738364, 15.897600 +1.633333, 10.190732, 15.738364, 15.897600 +1.650000, 10.453038, 15.738364, 15.897600 +1.666667, 10.715344, 15.738364, 15.897600 +1.683333, 10.977650, 15.738364, 15.897600 +1.700000, 11.239956, 15.738364, 15.897600 +1.716667, 11.502262, 15.738364, 15.897600 +1.733333, 11.764568, 15.738364, 15.897600 +1.750000, 12.026874, 15.738364, 15.897600 +1.766667, 12.289180, 15.738364, 15.897600 +1.783333, 12.551486, 15.738364, 15.897600 +1.800000, 12.813792, 15.738364, 15.897600 +1.816667, 13.076099, 15.738364, 15.897600 +1.833333, 13.338405, 15.738364, 15.897600 +1.850000, 13.600711, 15.738364, 15.897600 +1.866667, 13.863017, 15.738364, 15.897600 +1.883333, 14.125323, 15.738364, 15.897600 +1.900000, 14.387629, 15.738364, 15.897600 +1.916667, 14.649935, 15.738364, 15.897600 +1.933333, 14.912241, 15.738364, 15.897600 +1.950000, 15.174547, 15.738364, 15.897600 +1.966667, 15.436853, 15.738364, 15.897600 +1.983333, 15.699159, 15.738364, 15.897600 +2.000000, 15.961465, 15.738364, 15.897600 +2.016667, 16.223771, 15.738364, 15.897600 +2.033333, 16.486077, 15.738364, 15.897600 +2.050000, 16.748384, 15.738364, 15.897600 +2.066667, 17.010690, 15.738364, 15.897600 +2.083333, 17.272996, 15.738364, 15.897600 +2.100000, 17.535302, 15.738364, 15.897600 +2.116667, 17.797608, 15.738364, 15.897600 +2.133333, 18.059914, 15.738364, 15.897600 +2.150000, 18.322220, 15.738364, 15.897600 +2.166667, 18.584526, 15.738364, 15.897600 +2.183333, 18.846832, 15.738364, 15.897600 +2.200000, 19.109138, 15.738364, 15.897600 +2.216667, 19.371444, 15.738364, 15.897600 +2.233333, 19.633750, 15.738364, 15.897600 +2.250000, 19.896056, 15.738364, 15.897600 +2.266667, 20.158362, 15.738364, 15.897600 +2.283333, 20.420669, 15.738364, 15.897600 +2.300000, 20.682975, 15.738364, 15.897600 +2.316667, 20.945281, 15.738364, 15.897600 +2.333333, 21.207587, 15.738364, 15.897600 +2.350000, 21.469893, 15.738364, 15.897600 +2.366667, 21.732199, 15.738364, 15.897600 +2.383333, 21.994505, 15.738364, 15.897600 +2.400000, 22.256811, 15.738364, 15.897600 +2.416667, 22.519117, 15.738364, 15.897600 +2.433333, 22.781423, 15.738364, 15.897600 +2.450000, 23.043729, 15.738364, 15.897600 +2.466667, 23.306035, 15.738364, 15.897600 +2.483333, 23.568341, 15.738364, 15.897600 +2.500000, 23.830647, 15.738364, 15.897600 +2.516667, 24.092954, 15.738364, 15.897600 +2.533333, 24.355260, 15.738364, 15.897600 +2.550000, 24.617566, 15.738364, 15.897600 +2.566667, 24.879872, 15.738364, 15.897600 +2.583333, 25.142178, 15.738364, 15.897600 +2.600000, 25.404484, 15.738364, 15.897600 +2.616667, 25.666790, 15.738364, 15.897600 +2.633333, 25.929096, 15.738364, 15.897600 +2.650000, 26.191402, 15.738364, 15.897600 +2.666667, 26.453708, 15.738364, 15.897600 +2.683333, 26.716014, 15.738364, 15.897600 +2.700000, 26.978320, 15.738364, 15.897600 +2.716667, 27.240626, 15.738364, 15.897600 +2.733333, 27.502932, 15.738364, 15.897600 +2.750000, 27.765239, 15.738364, 15.897600 +2.766667, 28.027545, 15.738364, 15.897600 +2.783333, 28.289851, 15.738364, 15.897600 +2.800000, 28.552157, 15.738364, 15.897600 +2.816667, 28.814463, 15.738364, 15.897600 +2.833333, 29.076769, 15.738364, 15.897600 +2.850000, 29.339075, 15.738364, 15.897600 +2.866667, 29.601381, 15.738364, 15.897600 +2.883333, 29.863687, 15.738364, 15.897600 +2.900000, 30.125993, 15.738364, 15.897600 +2.916667, 30.388299, 15.738364, 15.897600 +2.933333, 30.650605, 15.738364, 15.897600 +2.950000, 30.912911, 15.738364, 15.897600 +2.966667, 31.175218, 15.738364, 15.897600 +2.983333, 31.437524, 15.738364, 15.897600 +3.000000, 31.699830, 15.738364, 15.897600 +3.016667, 31.962136, 15.738364, 15.897600 +3.033333, 32.224442, 15.738364, 15.897600 +3.050000, 32.486748, 15.738364, 15.897600 +3.066667, 32.749054, 15.738364, 15.897600 +3.083333, 33.011360, 15.738364, 15.897600 +3.100000, 33.273666, 15.738364, 15.897600 +3.116667, 33.535972, 15.738364, 15.897600 +3.133333, 33.798278, 15.738364, 15.897600 +3.150000, 34.060584, 15.738364, 15.897600 +3.166667, 34.322890, 15.738364, 15.897600 +3.183333, 34.585196, 15.738364, 15.897600 +3.200000, 34.847503, 15.738364, 15.897600 +3.216667, 35.109809, 15.738364, 15.897600 +3.233333, 35.372115, 15.738364, 15.897600 +3.250000, 35.634421, 15.738364, 15.897600 +3.266667, 35.896727, 15.738364, 15.897600 +3.283333, 36.159033, 15.738364, 15.897600 +3.300000, 36.421339, 15.738364, 15.897600 +3.316667, 36.683645, 15.738364, 15.897600 +3.333333, 36.945951, 15.738364, 15.897600 +3.350000, 37.208257, 15.738364, 15.897600 +3.366667, 37.470563, 15.738364, 15.897600 +3.383333, 37.732869, 15.738364, 15.897600 +3.400000, 37.995175, 15.738364, 15.897600 +3.416667, 38.257481, 15.738364, 15.897600 +3.433333, 38.519788, 15.738364, 15.897600 +3.450000, 38.782094, 15.738364, 15.897600 +3.466667, 39.044400, 15.738364, 15.897600 +3.483333, 39.306706, 15.738364, 15.897600 +3.500000, 39.569012, 15.738364, 15.897600 +3.516667, 39.831318, 15.738364, 15.897600 +3.533333, 40.093624, 15.738364, 15.897600 +3.550000, 40.355930, 15.738364, 15.897600 +3.566667, 40.618236, 15.738364, 15.897600 +3.583333, 40.880542, 15.738364, 15.897600 +3.600000, 41.142848, 15.738364, 15.897600 +3.616667, 41.405154, 15.738364, 15.897600 +3.633333, 41.667460, 15.738364, 15.897600 +3.650000, 41.929766, 15.738364, 15.897600 +3.666667, 42.192073, 15.738364, 15.897600 +3.683333, 42.454379, 15.738364, 15.897600 +3.700000, 42.716685, 15.738364, 15.897600 +3.716667, 42.978991, 15.738364, 15.897600 +3.733333, 43.241297, 15.738364, 15.897600 +3.750000, 43.503603, 15.738364, 15.897600 +3.766667, 43.765909, 15.738364, 15.897600 +3.783333, 44.028215, 15.738364, 15.897600 +3.800000, 44.290521, 15.738364, 15.897600 +3.816667, 44.552827, 15.738364, 15.897600 +3.833333, 44.815133, 15.738364, 15.897600 +3.850000, 45.077439, 15.738364, 15.897600 +3.866667, 45.339745, 15.738364, 15.897600 +3.883333, 45.602051, 15.738364, 15.897600 +3.900000, 45.864358, 15.738364, 15.897600 +3.916667, 46.126664, 15.738364, 15.897600 +3.933333, 46.388970, 15.738364, 15.897600 +3.950000, 46.651276, 15.738364, 15.897600 +3.966667, 46.913582, 15.738364, 15.897600 +3.983333, 47.175888, 15.738364, 15.897600 +4.000000, 47.438194, 15.738364, 15.897600 diff --git a/unittests/test_charging_models_eMosaic/original_eMosaic_models/L2_17280W_ld_50kWh.csv b/unittests/test_charging_models_eMosaic/original_eMosaic_models/L2_17280W_ld_50kWh.csv new file mode 100644 index 0000000..8eb98a7 --- /dev/null +++ b/unittests/test_charging_models_eMosaic/original_eMosaic_models/L2_17280W_ld_50kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.445874, 13.376206, 13.519743 +1.016667, 0.970032, 15.724743, 15.897600 +1.033333, 1.494190, 15.724743, 15.897600 +1.050000, 2.018348, 15.724743, 15.897600 +1.066667, 2.542506, 15.724743, 15.897600 +1.083333, 3.066664, 15.724743, 15.897600 +1.100000, 3.590822, 15.724743, 15.897600 +1.116667, 4.114980, 15.724743, 15.897600 +1.133333, 4.639138, 15.724743, 15.897600 +1.150000, 5.163296, 15.724743, 15.897600 +1.166667, 5.687454, 15.724743, 15.897600 +1.183333, 6.211613, 15.724743, 15.897600 +1.200000, 6.735771, 15.724743, 15.897600 +1.216667, 7.259929, 15.724743, 15.897600 +1.233333, 7.784087, 15.724743, 15.897600 +1.250000, 8.308245, 15.724743, 15.897600 +1.266667, 8.832403, 15.724743, 15.897600 +1.283333, 9.356561, 15.724743, 15.897600 +1.300000, 9.880719, 15.724743, 15.897600 +1.316667, 10.404877, 15.724743, 15.897600 +1.333333, 10.929035, 15.724743, 15.897600 +1.350000, 11.453193, 15.724743, 15.897600 +1.366667, 11.977352, 15.724743, 15.897600 +1.383333, 12.501510, 15.724743, 15.897600 +1.400000, 13.025668, 15.724743, 15.897600 +1.416667, 13.549826, 15.724743, 15.897600 +1.433333, 14.073984, 15.724743, 15.897600 +1.450000, 14.598142, 15.724743, 15.897600 +1.466667, 15.122300, 15.724743, 15.897600 +1.483333, 15.646458, 15.724743, 15.897600 +1.500000, 16.170616, 15.724743, 15.897600 +1.516667, 16.694774, 15.724743, 15.897600 +1.533333, 17.218932, 15.724743, 15.897600 +1.550000, 17.743091, 15.724743, 15.897600 +1.566667, 18.267249, 15.724743, 15.897600 +1.583333, 18.791407, 15.724743, 15.897600 +1.600000, 19.315565, 15.724743, 15.897600 +1.616667, 19.839723, 15.724743, 15.897600 +1.633333, 20.363881, 15.724743, 15.897600 +1.650000, 20.888039, 15.724743, 15.897600 +1.666667, 21.412197, 15.724743, 15.897600 +1.683333, 21.936355, 15.724743, 15.897600 +1.700000, 22.460513, 15.724743, 15.897600 +1.716667, 22.984671, 15.724743, 15.897600 +1.733333, 23.508830, 15.724743, 15.897600 +1.750000, 24.032988, 15.724743, 15.897600 +1.766667, 24.557146, 15.724743, 15.897600 +1.783333, 25.081304, 15.724743, 15.897600 +1.800000, 25.605462, 15.724743, 15.897600 +1.816667, 26.129620, 15.724743, 15.897600 +1.833333, 26.653778, 15.724743, 15.897600 +1.850000, 27.177936, 15.724743, 15.897600 +1.866667, 27.702094, 15.724743, 15.897600 +1.883333, 28.226252, 15.724743, 15.897600 +1.900000, 28.750410, 15.724743, 15.897600 +1.916667, 29.274569, 15.724743, 15.897600 +1.933333, 29.798727, 15.724743, 15.897600 +1.950000, 30.322885, 15.724743, 15.897600 +1.966667, 30.847043, 15.724743, 15.897600 +1.983333, 31.371201, 15.724743, 15.897600 +2.000000, 31.895359, 15.724743, 15.897600 +2.016667, 32.419517, 15.724743, 15.897600 +2.033333, 32.943675, 15.724743, 15.897600 +2.050000, 33.467833, 15.724743, 15.897600 +2.066667, 33.991991, 15.724743, 15.897600 +2.083333, 34.516150, 15.724743, 15.897600 +2.100000, 35.040308, 15.724743, 15.897600 +2.116667, 35.564466, 15.724743, 15.897600 +2.133333, 36.088624, 15.724743, 15.897600 +2.150000, 36.612782, 15.724743, 15.897600 +2.166667, 37.136940, 15.724743, 15.897600 +2.183333, 37.661098, 15.724743, 15.897600 +2.200000, 38.185256, 15.724743, 15.897600 +2.216667, 38.709414, 15.724743, 15.897600 +2.233333, 39.233572, 15.724743, 15.897600 +2.250000, 39.757730, 15.724743, 15.897600 +2.266667, 40.281889, 15.724743, 15.897600 +2.283333, 40.806047, 15.724743, 15.897600 +2.300000, 41.330205, 15.724743, 15.897600 +2.316667, 41.854363, 15.724743, 15.897600 +2.333333, 42.378521, 15.724743, 15.897600 +2.350000, 42.902679, 15.724743, 15.897600 +2.366667, 43.426837, 15.724743, 15.897600 +2.383333, 43.950995, 15.724743, 15.897600 +2.400000, 44.475153, 15.724743, 15.897600 +2.416667, 44.999311, 15.724743, 15.897600 +2.433333, 45.523469, 15.724743, 15.897600 +2.450000, 46.047628, 15.724743, 15.897600 +2.466667, 46.571786, 15.724743, 15.897600 +2.483333, 47.095944, 15.724743, 15.897600 +2.500000, 47.620102, 15.724743, 15.897600 +2.516667, 48.144260, 15.724743, 15.897600 +2.533333, 48.668418, 15.724743, 15.897600 +2.550000, 49.192576, 15.724743, 15.897600 +2.566667, 49.716734, 15.724743, 15.897600 +2.583333, 50.240892, 15.724743, 15.897600 +2.600000, 50.765050, 15.724743, 15.897600 +2.616667, 51.289208, 15.724743, 15.897600 +2.633333, 51.813367, 15.724743, 15.897600 +2.650000, 52.337525, 15.724743, 15.897600 +2.666667, 52.861683, 15.724743, 15.897600 +2.683333, 53.385841, 15.724743, 15.897600 +2.700000, 53.909999, 15.724743, 15.897600 +2.716667, 54.434157, 15.724743, 15.897600 +2.733333, 54.958315, 15.724743, 15.897600 +2.750000, 55.482473, 15.724743, 15.897600 +2.766667, 56.006631, 15.724743, 15.897600 +2.783333, 56.530789, 15.724743, 15.897600 +2.800000, 57.054947, 15.724743, 15.897600 +2.816667, 57.579106, 15.724743, 15.897600 +2.833333, 58.103264, 15.724743, 15.897600 +2.850000, 58.627422, 15.724743, 15.897600 +2.866667, 59.151580, 15.724743, 15.897600 +2.883333, 59.675738, 15.724743, 15.897600 +2.900000, 60.199896, 15.724743, 15.897600 +2.916667, 60.724054, 15.724743, 15.897600 +2.933333, 61.248212, 15.724743, 15.897600 +2.950000, 61.772370, 15.724743, 15.897600 +2.966667, 62.296528, 15.724743, 15.897600 +2.983333, 62.820686, 15.724743, 15.897600 +3.000000, 63.344845, 15.724743, 15.897600 +3.016667, 63.869003, 15.724743, 15.897600 +3.033333, 64.393161, 15.724743, 15.897600 +3.050000, 64.917319, 15.724743, 15.897600 +3.066667, 65.441477, 15.724743, 15.897600 +3.083333, 65.965635, 15.724743, 15.897600 +3.100000, 66.489793, 15.724743, 15.897600 +3.116667, 67.013951, 15.724743, 15.897600 +3.133333, 67.538109, 15.724743, 15.897600 +3.150000, 68.062267, 15.724743, 15.897600 +3.166667, 68.586425, 15.724743, 15.897600 +3.183333, 69.110584, 15.724743, 15.897600 +3.200000, 69.634742, 15.724743, 15.897600 +3.216667, 70.158900, 15.724743, 15.897600 +3.233333, 70.683058, 15.724743, 15.897600 +3.250000, 71.207216, 15.724743, 15.897600 +3.266667, 71.731374, 15.724743, 15.897600 +3.283333, 72.255532, 15.724743, 15.897600 +3.300000, 72.779690, 15.724743, 15.897600 +3.316667, 73.303848, 15.724743, 15.897600 +3.333333, 73.828006, 15.724743, 15.897600 +3.350000, 74.352164, 15.724743, 15.897600 +3.366667, 74.876323, 15.724743, 15.897600 +3.383333, 75.400481, 15.724743, 15.897600 +3.400000, 75.924639, 15.724743, 15.897600 +3.416667, 76.448797, 15.724743, 15.897600 +3.433333, 76.972955, 15.724743, 15.897600 +3.450000, 77.497113, 15.724743, 15.897600 +3.466667, 78.021271, 15.724743, 15.897600 +3.483333, 78.545429, 15.724743, 15.897600 +3.500000, 79.069587, 15.724743, 15.897600 +3.516667, 79.593745, 15.724743, 15.897600 +3.533333, 80.117904, 15.724743, 15.897600 +3.550000, 80.642062, 15.724743, 15.897600 +3.566667, 81.166220, 15.724743, 15.897600 +3.583333, 81.690378, 15.724743, 15.897600 +3.600000, 82.214536, 15.724743, 15.897600 +3.616667, 82.738694, 15.724743, 15.897600 +3.633333, 83.262852, 15.724743, 15.897600 +3.650000, 83.787010, 15.724743, 15.897600 +3.666667, 84.311168, 15.724743, 15.897600 +3.683333, 84.835326, 15.724743, 15.897600 +3.700000, 85.359484, 15.724743, 15.897600 +3.716667, 85.883643, 15.724743, 15.897600 +3.733333, 86.407801, 15.724743, 15.897600 +3.750000, 86.931959, 15.724743, 15.897600 +3.766667, 87.456117, 15.724743, 15.897600 +3.783333, 87.980275, 15.724743, 15.897600 +3.800000, 88.504433, 15.724743, 15.897600 +3.816667, 89.028591, 15.724743, 15.897600 +3.833333, 89.552749, 15.724743, 15.897600 +3.850000, 90.076907, 15.724743, 15.897600 +3.866667, 90.601065, 15.724743, 15.897600 +3.883333, 91.125223, 15.724743, 15.897600 +3.900000, 91.649382, 15.724743, 15.897600 +3.916667, 92.173540, 15.724743, 15.897600 +3.933333, 92.697698, 15.724743, 15.897600 +3.950000, 93.221856, 15.724743, 15.897600 +3.966667, 93.746014, 15.724743, 15.897600 +3.983333, 94.270172, 15.724743, 15.897600 +4.000000, 94.794330, 15.724743, 15.897600 diff --git a/unittests/test_charging_models_eMosaic/original_eMosaic_models/L2_17280W_md_200kWh.csv b/unittests/test_charging_models_eMosaic/original_eMosaic_models/L2_17280W_md_200kWh.csv new file mode 100644 index 0000000..5bfd392 --- /dev/null +++ b/unittests/test_charging_models_eMosaic/original_eMosaic_models/L2_17280W_md_200kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.111592, 13.390983, 13.519743 +1.016667, 0.242801, 15.745175, 15.897600 +1.033333, 0.374011, 15.745175, 15.897600 +1.050000, 0.505221, 15.745175, 15.897600 +1.066667, 0.636431, 15.745175, 15.897600 +1.083333, 0.767640, 15.745175, 15.897600 +1.100000, 0.898850, 15.745175, 15.897600 +1.116667, 1.030060, 15.745175, 15.897600 +1.133333, 1.161270, 15.745175, 15.897600 +1.150000, 1.292480, 15.745175, 15.897600 +1.166667, 1.423689, 15.745175, 15.897600 +1.183333, 1.554899, 15.745175, 15.897600 +1.200000, 1.686109, 15.745175, 15.897600 +1.216667, 1.817319, 15.745175, 15.897600 +1.233333, 1.948529, 15.745175, 15.897600 +1.250000, 2.079738, 15.745175, 15.897600 +1.266667, 2.210948, 15.745175, 15.897600 +1.283333, 2.342158, 15.745175, 15.897600 +1.300000, 2.473368, 15.745175, 15.897600 +1.316667, 2.604578, 15.745175, 15.897600 +1.333333, 2.735787, 15.745175, 15.897600 +1.350000, 2.866997, 15.745175, 15.897600 +1.366667, 2.998207, 15.745175, 15.897600 +1.383333, 3.129417, 15.745175, 15.897600 +1.400000, 3.260627, 15.745175, 15.897600 +1.416667, 3.391836, 15.745175, 15.897600 +1.433333, 3.523046, 15.745175, 15.897600 +1.450000, 3.654256, 15.745175, 15.897600 +1.466667, 3.785466, 15.745175, 15.897600 +1.483333, 3.916676, 15.745175, 15.897600 +1.500000, 4.047885, 15.745175, 15.897600 +1.516667, 4.179095, 15.745175, 15.897600 +1.533333, 4.310305, 15.745175, 15.897600 +1.550000, 4.441515, 15.745175, 15.897600 +1.566667, 4.572724, 15.745175, 15.897600 +1.583333, 4.703934, 15.745175, 15.897600 +1.600000, 4.835144, 15.745175, 15.897600 +1.616667, 4.966354, 15.745175, 15.897600 +1.633333, 5.097564, 15.745175, 15.897600 +1.650000, 5.228773, 15.745175, 15.897600 +1.666667, 5.359983, 15.745175, 15.897600 +1.683333, 5.491193, 15.745175, 15.897600 +1.700000, 5.622403, 15.745175, 15.897600 +1.716667, 5.753613, 15.745175, 15.897600 +1.733333, 5.884822, 15.745175, 15.897600 +1.750000, 6.016032, 15.745175, 15.897600 +1.766667, 6.147242, 15.745175, 15.897600 +1.783333, 6.278452, 15.745175, 15.897600 +1.800000, 6.409662, 15.745175, 15.897600 +1.816667, 6.540871, 15.745175, 15.897600 +1.833333, 6.672081, 15.745175, 15.897600 +1.850000, 6.803291, 15.745175, 15.897600 +1.866667, 6.934501, 15.745175, 15.897600 +1.883333, 7.065711, 15.745175, 15.897600 +1.900000, 7.196920, 15.745175, 15.897600 +1.916667, 7.328130, 15.745175, 15.897600 +1.933333, 7.459340, 15.745175, 15.897600 +1.950000, 7.590550, 15.745175, 15.897600 +1.966667, 7.721760, 15.745175, 15.897600 +1.983333, 7.852969, 15.745175, 15.897600 +2.000000, 7.984179, 15.745175, 15.897600 +2.016667, 8.115389, 15.745175, 15.897600 +2.033333, 8.246599, 15.745175, 15.897600 +2.050000, 8.377808, 15.745175, 15.897600 +2.066667, 8.509018, 15.745175, 15.897600 +2.083333, 8.640228, 15.745175, 15.897600 +2.100000, 8.771438, 15.745175, 15.897600 +2.116667, 8.902648, 15.745175, 15.897600 +2.133333, 9.033857, 15.745175, 15.897600 +2.150000, 9.165067, 15.745175, 15.897600 +2.166667, 9.296277, 15.745175, 15.897600 +2.183333, 9.427487, 15.745175, 15.897600 +2.200000, 9.558697, 15.745175, 15.897600 +2.216667, 9.689906, 15.745175, 15.897600 +2.233333, 9.821116, 15.745175, 15.897600 +2.250000, 9.952326, 15.745175, 15.897600 +2.266667, 10.083536, 15.745175, 15.897600 +2.283333, 10.214746, 15.745175, 15.897600 +2.300000, 10.345955, 15.745175, 15.897600 +2.316667, 10.477165, 15.745175, 15.897600 +2.333333, 10.608375, 15.745175, 15.897600 +2.350000, 10.739585, 15.745175, 15.897600 +2.366667, 10.870795, 15.745175, 15.897600 +2.383333, 11.002004, 15.745175, 15.897600 +2.400000, 11.133214, 15.745175, 15.897600 +2.416667, 11.264424, 15.745175, 15.897600 +2.433333, 11.395634, 15.745175, 15.897600 +2.450000, 11.526844, 15.745175, 15.897600 +2.466667, 11.658053, 15.745175, 15.897600 +2.483333, 11.789263, 15.745175, 15.897600 +2.500000, 11.920473, 15.745175, 15.897600 +2.516667, 12.051683, 15.745175, 15.897600 +2.533333, 12.182892, 15.745175, 15.897600 +2.550000, 12.314102, 15.745175, 15.897600 +2.566667, 12.445312, 15.745175, 15.897600 +2.583333, 12.576522, 15.745175, 15.897600 +2.600000, 12.707732, 15.745175, 15.897600 +2.616667, 12.838941, 15.745175, 15.897600 +2.633333, 12.970151, 15.745175, 15.897600 +2.650000, 13.101361, 15.745175, 15.897600 +2.666667, 13.232571, 15.745175, 15.897600 +2.683333, 13.363781, 15.745175, 15.897600 +2.700000, 13.494990, 15.745175, 15.897600 +2.716667, 13.626200, 15.745175, 15.897600 +2.733333, 13.757410, 15.745175, 15.897600 +2.750000, 13.888620, 15.745175, 15.897600 +2.766667, 14.019830, 15.745175, 15.897600 +2.783333, 14.151039, 15.745175, 15.897600 +2.800000, 14.282249, 15.745175, 15.897600 +2.816667, 14.413459, 15.745175, 15.897600 +2.833333, 14.544669, 15.745175, 15.897600 +2.850000, 14.675879, 15.745175, 15.897600 +2.866667, 14.807088, 15.745175, 15.897600 +2.883333, 14.938298, 15.745175, 15.897600 +2.900000, 15.069508, 15.745175, 15.897600 +2.916667, 15.200718, 15.745175, 15.897600 +2.933333, 15.331927, 15.745175, 15.897600 +2.950000, 15.463137, 15.745175, 15.897600 +2.966667, 15.594347, 15.745175, 15.897600 +2.983333, 15.725557, 15.745175, 15.897600 +3.000000, 15.856767, 15.745175, 15.897600 +3.016667, 15.987976, 15.745175, 15.897600 +3.033333, 16.119186, 15.745175, 15.897600 +3.050000, 16.250396, 15.745175, 15.897600 +3.066667, 16.381606, 15.745175, 15.897600 +3.083333, 16.512816, 15.745175, 15.897600 +3.100000, 16.644025, 15.745175, 15.897600 +3.116667, 16.775235, 15.745175, 15.897600 +3.133333, 16.906445, 15.745175, 15.897600 +3.150000, 17.037655, 15.745175, 15.897600 +3.166667, 17.168865, 15.745175, 15.897600 +3.183333, 17.300074, 15.745175, 15.897600 +3.200000, 17.431284, 15.745175, 15.897600 +3.216667, 17.562494, 15.745175, 15.897600 +3.233333, 17.693704, 15.745175, 15.897600 +3.250000, 17.824914, 15.745175, 15.897600 +3.266667, 17.956123, 15.745175, 15.897600 +3.283333, 18.087333, 15.745175, 15.897600 +3.300000, 18.218543, 15.745175, 15.897600 +3.316667, 18.349753, 15.745175, 15.897600 +3.333333, 18.480963, 15.745175, 15.897600 +3.350000, 18.612172, 15.745175, 15.897600 +3.366667, 18.743382, 15.745175, 15.897600 +3.383333, 18.874592, 15.745175, 15.897600 +3.400000, 19.005802, 15.745175, 15.897600 +3.416667, 19.137011, 15.745175, 15.897600 +3.433333, 19.268221, 15.745175, 15.897600 +3.450000, 19.399431, 15.745175, 15.897600 +3.466667, 19.530641, 15.745175, 15.897600 +3.483333, 19.661851, 15.745175, 15.897600 +3.500000, 19.793060, 15.745175, 15.897600 +3.516667, 19.924270, 15.745175, 15.897600 +3.533333, 20.055480, 15.745175, 15.897600 +3.550000, 20.186690, 15.745175, 15.897600 +3.566667, 20.317900, 15.745175, 15.897600 +3.583333, 20.449109, 15.745175, 15.897600 +3.600000, 20.580319, 15.745175, 15.897600 +3.616667, 20.711529, 15.745175, 15.897600 +3.633333, 20.842739, 15.745175, 15.897600 +3.650000, 20.973949, 15.745175, 15.897600 +3.666667, 21.105158, 15.745175, 15.897600 +3.683333, 21.236368, 15.745175, 15.897600 +3.700000, 21.367578, 15.745175, 15.897600 +3.716667, 21.498788, 15.745175, 15.897600 +3.733333, 21.629998, 15.745175, 15.897600 +3.750000, 21.761207, 15.745175, 15.897600 +3.766667, 21.892417, 15.745175, 15.897600 +3.783333, 22.023627, 15.745175, 15.897600 +3.800000, 22.154837, 15.745175, 15.897600 +3.816667, 22.286047, 15.745175, 15.897600 +3.833333, 22.417256, 15.745175, 15.897600 +3.850000, 22.548466, 15.745175, 15.897600 +3.866667, 22.679676, 15.745175, 15.897600 +3.883333, 22.810886, 15.745175, 15.897600 +3.900000, 22.942095, 15.745175, 15.897600 +3.916667, 23.073305, 15.745175, 15.897600 +3.933333, 23.204515, 15.745175, 15.897600 +3.950000, 23.335725, 15.745175, 15.897600 +3.966667, 23.466935, 15.745175, 15.897600 +3.983333, 23.598144, 15.745175, 15.897600 +4.000000, 23.729354, 15.745175, 15.897600 diff --git a/unittests/test_charging_models_eMosaic/original_eMosaic_models/L2_7200W_hd_300kWh.csv b/unittests/test_charging_models_eMosaic/original_eMosaic_models/L2_7200W_hd_300kWh.csv new file mode 100644 index 0000000..799cb74 --- /dev/null +++ b/unittests/test_charging_models_eMosaic/original_eMosaic_models/L2_7200W_hd_300kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.074403, 13.392625, 13.519743 +1.016667, 0.161889, 15.747445, 15.897600 +1.033333, 0.249375, 15.747445, 15.897600 +1.050000, 0.336861, 15.747445, 15.897600 +1.066667, 0.424347, 15.747445, 15.897600 +1.083333, 0.511833, 15.747445, 15.897600 +1.100000, 0.599318, 15.747445, 15.897600 +1.116667, 0.686804, 15.747445, 15.897600 +1.133333, 0.774290, 15.747445, 15.897600 +1.150000, 0.861776, 15.747445, 15.897600 +1.166667, 0.949262, 15.747445, 15.897600 +1.183333, 1.036747, 15.747445, 15.897600 +1.200000, 1.124233, 15.747445, 15.897600 +1.216667, 1.211719, 15.747445, 15.897600 +1.233333, 1.299205, 15.747445, 15.897600 +1.250000, 1.386691, 15.747445, 15.897600 +1.266667, 1.474176, 15.747445, 15.897600 +1.283333, 1.561662, 15.747445, 15.897600 +1.300000, 1.649148, 15.747445, 15.897600 +1.316667, 1.736634, 15.747445, 15.897600 +1.333333, 1.824120, 15.747445, 15.897600 +1.350000, 1.911605, 15.747445, 15.897600 +1.366667, 1.999091, 15.747445, 15.897600 +1.383333, 2.086577, 15.747445, 15.897600 +1.400000, 2.174063, 15.747445, 15.897600 +1.416667, 2.261549, 15.747445, 15.897600 +1.433333, 2.349034, 15.747445, 15.897600 +1.450000, 2.436520, 15.747445, 15.897600 +1.466667, 2.524006, 15.747445, 15.897600 +1.483333, 2.611492, 15.747445, 15.897600 +1.500000, 2.698978, 15.747445, 15.897600 +1.516667, 2.786464, 15.747445, 15.897600 +1.533333, 2.873949, 15.747445, 15.897600 +1.550000, 2.961435, 15.747445, 15.897600 +1.566667, 3.048921, 15.747445, 15.897600 +1.583333, 3.136407, 15.747445, 15.897600 +1.600000, 3.223893, 15.747445, 15.897600 +1.616667, 3.311378, 15.747445, 15.897600 +1.633333, 3.398864, 15.747445, 15.897600 +1.650000, 3.486350, 15.747445, 15.897600 +1.666667, 3.573836, 15.747445, 15.897600 +1.683333, 3.661322, 15.747445, 15.897600 +1.700000, 3.748807, 15.747445, 15.897600 +1.716667, 3.836293, 15.747445, 15.897600 +1.733333, 3.923779, 15.747445, 15.897600 +1.750000, 4.011265, 15.747445, 15.897600 +1.766667, 4.098751, 15.747445, 15.897600 +1.783333, 4.186236, 15.747445, 15.897600 +1.800000, 4.273722, 15.747445, 15.897600 +1.816667, 4.361208, 15.747445, 15.897600 +1.833333, 4.448694, 15.747445, 15.897600 +1.850000, 4.536180, 15.747445, 15.897600 +1.866667, 4.623665, 15.747445, 15.897600 +1.883333, 4.711151, 15.747445, 15.897600 +1.900000, 4.798637, 15.747445, 15.897600 +1.916667, 4.886123, 15.747445, 15.897600 +1.933333, 4.973609, 15.747445, 15.897600 +1.950000, 5.061095, 15.747445, 15.897600 +1.966667, 5.148580, 15.747445, 15.897600 +1.983333, 5.236066, 15.747445, 15.897600 +2.000000, 5.323552, 15.747445, 15.897600 +2.016667, 5.411038, 15.747445, 15.897600 +2.033333, 5.498524, 15.747445, 15.897600 +2.050000, 5.586009, 15.747445, 15.897600 +2.066667, 5.673495, 15.747445, 15.897600 +2.083333, 5.760981, 15.747445, 15.897600 +2.100000, 5.848467, 15.747445, 15.897600 +2.116667, 5.935953, 15.747445, 15.897600 +2.133333, 6.023438, 15.747445, 15.897600 +2.150000, 6.110924, 15.747445, 15.897600 +2.166667, 6.198410, 15.747445, 15.897600 +2.183333, 6.285896, 15.747445, 15.897600 +2.200000, 6.373382, 15.747445, 15.897600 +2.216667, 6.460867, 15.747445, 15.897600 +2.233333, 6.548353, 15.747445, 15.897600 +2.250000, 6.635839, 15.747445, 15.897600 +2.266667, 6.723325, 15.747445, 15.897600 +2.283333, 6.810811, 15.747445, 15.897600 +2.300000, 6.898296, 15.747445, 15.897600 +2.316667, 6.985782, 15.747445, 15.897600 +2.333333, 7.073268, 15.747445, 15.897600 +2.350000, 7.160754, 15.747445, 15.897600 +2.366667, 7.248240, 15.747445, 15.897600 +2.383333, 7.335726, 15.747445, 15.897600 +2.400000, 7.423211, 15.747445, 15.897600 +2.416667, 7.510697, 15.747445, 15.897600 +2.433333, 7.598183, 15.747445, 15.897600 +2.450000, 7.685669, 15.747445, 15.897600 +2.466667, 7.773155, 15.747445, 15.897600 +2.483333, 7.860640, 15.747445, 15.897600 +2.500000, 7.948126, 15.747445, 15.897600 +2.516667, 8.035612, 15.747445, 15.897600 +2.533333, 8.123098, 15.747445, 15.897600 +2.550000, 8.210584, 15.747445, 15.897600 +2.566667, 8.298069, 15.747445, 15.897600 +2.583333, 8.385555, 15.747445, 15.897600 +2.600000, 8.473041, 15.747445, 15.897600 +2.616667, 8.560527, 15.747445, 15.897600 +2.633333, 8.648013, 15.747445, 15.897600 +2.650000, 8.735498, 15.747445, 15.897600 +2.666667, 8.822984, 15.747445, 15.897600 +2.683333, 8.910470, 15.747445, 15.897600 +2.700000, 8.997956, 15.747445, 15.897600 +2.716667, 9.085442, 15.747445, 15.897600 +2.733333, 9.172927, 15.747445, 15.897600 +2.750000, 9.260413, 15.747445, 15.897600 +2.766667, 9.347899, 15.747445, 15.897600 +2.783333, 9.435385, 15.747445, 15.897600 +2.800000, 9.522871, 15.747445, 15.897600 +2.816667, 9.610357, 15.747445, 15.897600 +2.833333, 9.697842, 15.747445, 15.897600 +2.850000, 9.785328, 15.747445, 15.897600 +2.866667, 9.872814, 15.747445, 15.897600 +2.883333, 9.960300, 15.747445, 15.897600 +2.900000, 10.047786, 15.747445, 15.897600 +2.916667, 10.135271, 15.747445, 15.897600 +2.933333, 10.222757, 15.747445, 15.897600 +2.950000, 10.310243, 15.747445, 15.897600 +2.966667, 10.397729, 15.747445, 15.897600 +2.983333, 10.485215, 15.747445, 15.897600 +3.000000, 10.572700, 15.747445, 15.897600 +3.016667, 10.660186, 15.747445, 15.897600 +3.033333, 10.747672, 15.747445, 15.897600 +3.050000, 10.835158, 15.747445, 15.897600 +3.066667, 10.922644, 15.747445, 15.897600 +3.083333, 11.010129, 15.747445, 15.897600 +3.100000, 11.097615, 15.747445, 15.897600 +3.116667, 11.185101, 15.747445, 15.897600 +3.133333, 11.272587, 15.747445, 15.897600 +3.150000, 11.360073, 15.747445, 15.897600 +3.166667, 11.447558, 15.747445, 15.897600 +3.183333, 11.535044, 15.747445, 15.897600 +3.200000, 11.622530, 15.747445, 15.897600 +3.216667, 11.710016, 15.747445, 15.897600 +3.233333, 11.797502, 15.747445, 15.897600 +3.250000, 11.884988, 15.747445, 15.897600 +3.266667, 11.972473, 15.747445, 15.897600 +3.283333, 12.059959, 15.747445, 15.897600 +3.300000, 12.147445, 15.747445, 15.897600 +3.316667, 12.234931, 15.747445, 15.897600 +3.333333, 12.322417, 15.747445, 15.897600 +3.350000, 12.409902, 15.747445, 15.897600 +3.366667, 12.497388, 15.747445, 15.897600 +3.383333, 12.584874, 15.747445, 15.897600 +3.400000, 12.672360, 15.747445, 15.897600 +3.416667, 12.759846, 15.747445, 15.897600 +3.433333, 12.847331, 15.747445, 15.897600 +3.450000, 12.934817, 15.747445, 15.897600 +3.466667, 13.022303, 15.747445, 15.897600 +3.483333, 13.109789, 15.747445, 15.897600 +3.500000, 13.197275, 15.747445, 15.897600 +3.516667, 13.284760, 15.747445, 15.897600 +3.533333, 13.372246, 15.747445, 15.897600 +3.550000, 13.459732, 15.747445, 15.897600 +3.566667, 13.547218, 15.747445, 15.897600 +3.583333, 13.634704, 15.747445, 15.897600 +3.600000, 13.722189, 15.747445, 15.897600 +3.616667, 13.809675, 15.747445, 15.897600 +3.633333, 13.897161, 15.747445, 15.897600 +3.650000, 13.984647, 15.747445, 15.897600 +3.666667, 14.072133, 15.747445, 15.897600 +3.683333, 14.159619, 15.747445, 15.897600 +3.700000, 14.247104, 15.747445, 15.897600 +3.716667, 14.334590, 15.747445, 15.897600 +3.733333, 14.422076, 15.747445, 15.897600 +3.750000, 14.509562, 15.747445, 15.897600 +3.766667, 14.597048, 15.747445, 15.897600 +3.783333, 14.684533, 15.747445, 15.897600 +3.800000, 14.772019, 15.747445, 15.897600 +3.816667, 14.859505, 15.747445, 15.897600 +3.833333, 14.946991, 15.747445, 15.897600 +3.850000, 15.034477, 15.747445, 15.897600 +3.866667, 15.121962, 15.747445, 15.897600 +3.883333, 15.209448, 15.747445, 15.897600 +3.900000, 15.296934, 15.747445, 15.897600 +3.916667, 15.384420, 15.747445, 15.897600 +3.933333, 15.471906, 15.747445, 15.897600 +3.950000, 15.559391, 15.747445, 15.897600 +3.966667, 15.646877, 15.747445, 15.897600 +3.983333, 15.734363, 15.747445, 15.897600 +4.000000, 15.821849, 15.747445, 15.897600 diff --git a/unittests/test_charging_models_eMosaic/original_eMosaic_models/L2_7200W_hd_400kWh.csv b/unittests/test_charging_models_eMosaic/original_eMosaic_models/L2_7200W_hd_400kWh.csv new file mode 100644 index 0000000..b8dc6e6 --- /dev/null +++ b/unittests/test_charging_models_eMosaic/original_eMosaic_models/L2_7200W_hd_400kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.055806, 13.393446, 13.519743 +1.016667, 0.121425, 15.748581, 15.897600 +1.033333, 0.187044, 15.748581, 15.897600 +1.050000, 0.252663, 15.748581, 15.897600 +1.066667, 0.318282, 15.748581, 15.897600 +1.083333, 0.383901, 15.748581, 15.897600 +1.100000, 0.449521, 15.748581, 15.897600 +1.116667, 0.515140, 15.748581, 15.897600 +1.133333, 0.580759, 15.748581, 15.897600 +1.150000, 0.646378, 15.748581, 15.897600 +1.166667, 0.711997, 15.748581, 15.897600 +1.183333, 0.777616, 15.748581, 15.897600 +1.200000, 0.843235, 15.748581, 15.897600 +1.216667, 0.908854, 15.748581, 15.897600 +1.233333, 0.974473, 15.748581, 15.897600 +1.250000, 1.040092, 15.748581, 15.897600 +1.266667, 1.105711, 15.748581, 15.897600 +1.283333, 1.171330, 15.748581, 15.897600 +1.300000, 1.236950, 15.748581, 15.897600 +1.316667, 1.302569, 15.748581, 15.897600 +1.333333, 1.368188, 15.748581, 15.897600 +1.350000, 1.433807, 15.748581, 15.897600 +1.366667, 1.499426, 15.748581, 15.897600 +1.383333, 1.565045, 15.748581, 15.897600 +1.400000, 1.630664, 15.748581, 15.897600 +1.416667, 1.696283, 15.748581, 15.897600 +1.433333, 1.761902, 15.748581, 15.897600 +1.450000, 1.827521, 15.748581, 15.897600 +1.466667, 1.893140, 15.748581, 15.897600 +1.483333, 1.958760, 15.748581, 15.897600 +1.500000, 2.024379, 15.748581, 15.897600 +1.516667, 2.089998, 15.748581, 15.897600 +1.533333, 2.155617, 15.748581, 15.897600 +1.550000, 2.221236, 15.748581, 15.897600 +1.566667, 2.286855, 15.748581, 15.897600 +1.583333, 2.352474, 15.748581, 15.897600 +1.600000, 2.418093, 15.748581, 15.897600 +1.616667, 2.483712, 15.748581, 15.897600 +1.633333, 2.549331, 15.748581, 15.897600 +1.650000, 2.614950, 15.748581, 15.897600 +1.666667, 2.680569, 15.748581, 15.897600 +1.683333, 2.746189, 15.748581, 15.897600 +1.700000, 2.811808, 15.748581, 15.897600 +1.716667, 2.877427, 15.748581, 15.897600 +1.733333, 2.943046, 15.748581, 15.897600 +1.750000, 3.008665, 15.748581, 15.897600 +1.766667, 3.074284, 15.748581, 15.897600 +1.783333, 3.139903, 15.748581, 15.897600 +1.800000, 3.205522, 15.748581, 15.897600 +1.816667, 3.271141, 15.748581, 15.897600 +1.833333, 3.336760, 15.748581, 15.897600 +1.850000, 3.402379, 15.748581, 15.897600 +1.866667, 3.467998, 15.748581, 15.897600 +1.883333, 3.533618, 15.748581, 15.897600 +1.900000, 3.599237, 15.748581, 15.897600 +1.916667, 3.664856, 15.748581, 15.897600 +1.933333, 3.730475, 15.748581, 15.897600 +1.950000, 3.796094, 15.748581, 15.897600 +1.966667, 3.861713, 15.748581, 15.897600 +1.983333, 3.927332, 15.748581, 15.897600 +2.000000, 3.992951, 15.748581, 15.897600 +2.016667, 4.058570, 15.748581, 15.897600 +2.033333, 4.124189, 15.748581, 15.897600 +2.050000, 4.189808, 15.748581, 15.897600 +2.066667, 4.255428, 15.748581, 15.897600 +2.083333, 4.321047, 15.748581, 15.897600 +2.100000, 4.386666, 15.748581, 15.897600 +2.116667, 4.452285, 15.748581, 15.897600 +2.133333, 4.517904, 15.748581, 15.897600 +2.150000, 4.583523, 15.748581, 15.897600 +2.166667, 4.649142, 15.748581, 15.897600 +2.183333, 4.714761, 15.748581, 15.897600 +2.200000, 4.780380, 15.748581, 15.897600 +2.216667, 4.845999, 15.748581, 15.897600 +2.233333, 4.911618, 15.748581, 15.897600 +2.250000, 4.977237, 15.748581, 15.897600 +2.266667, 5.042857, 15.748581, 15.897600 +2.283333, 5.108476, 15.748581, 15.897600 +2.300000, 5.174095, 15.748581, 15.897600 +2.316667, 5.239714, 15.748581, 15.897600 +2.333333, 5.305333, 15.748581, 15.897600 +2.350000, 5.370952, 15.748581, 15.897600 +2.366667, 5.436571, 15.748581, 15.897600 +2.383333, 5.502190, 15.748581, 15.897600 +2.400000, 5.567809, 15.748581, 15.897600 +2.416667, 5.633428, 15.748581, 15.897600 +2.433333, 5.699047, 15.748581, 15.897600 +2.450000, 5.764666, 15.748581, 15.897600 +2.466667, 5.830286, 15.748581, 15.897600 +2.483333, 5.895905, 15.748581, 15.897600 +2.500000, 5.961524, 15.748581, 15.897600 +2.516667, 6.027143, 15.748581, 15.897600 +2.533333, 6.092762, 15.748581, 15.897600 +2.550000, 6.158381, 15.748581, 15.897600 +2.566667, 6.224000, 15.748581, 15.897600 +2.583333, 6.289619, 15.748581, 15.897600 +2.600000, 6.355238, 15.748581, 15.897600 +2.616667, 6.420857, 15.748581, 15.897600 +2.633333, 6.486476, 15.748581, 15.897600 +2.650000, 6.552095, 15.748581, 15.897600 +2.666667, 6.617715, 15.748581, 15.897600 +2.683333, 6.683334, 15.748581, 15.897600 +2.700000, 6.748953, 15.748581, 15.897600 +2.716667, 6.814572, 15.748581, 15.897600 +2.733333, 6.880191, 15.748581, 15.897600 +2.750000, 6.945810, 15.748581, 15.897600 +2.766667, 7.011429, 15.748581, 15.897600 +2.783333, 7.077048, 15.748581, 15.897600 +2.800000, 7.142667, 15.748581, 15.897600 +2.816667, 7.208286, 15.748581, 15.897600 +2.833333, 7.273905, 15.748581, 15.897600 +2.850000, 7.339525, 15.748581, 15.897600 +2.866667, 7.405144, 15.748581, 15.897600 +2.883333, 7.470763, 15.748581, 15.897600 +2.900000, 7.536382, 15.748581, 15.897600 +2.916667, 7.602001, 15.748581, 15.897600 +2.933333, 7.667620, 15.748581, 15.897600 +2.950000, 7.733239, 15.748581, 15.897600 +2.966667, 7.798858, 15.748581, 15.897600 +2.983333, 7.864477, 15.748581, 15.897600 +3.000000, 7.930096, 15.748581, 15.897600 +3.016667, 7.995715, 15.748581, 15.897600 +3.033333, 8.061334, 15.748581, 15.897600 +3.050000, 8.126954, 15.748581, 15.897600 +3.066667, 8.192573, 15.748581, 15.897600 +3.083333, 8.258192, 15.748581, 15.897600 +3.100000, 8.323811, 15.748581, 15.897600 +3.116667, 8.389430, 15.748581, 15.897600 +3.133333, 8.455049, 15.748581, 15.897600 +3.150000, 8.520668, 15.748581, 15.897600 +3.166667, 8.586287, 15.748581, 15.897600 +3.183333, 8.651906, 15.748581, 15.897600 +3.200000, 8.717525, 15.748581, 15.897600 +3.216667, 8.783144, 15.748581, 15.897600 +3.233333, 8.848763, 15.748581, 15.897600 +3.250000, 8.914383, 15.748581, 15.897600 +3.266667, 8.980002, 15.748581, 15.897600 +3.283333, 9.045621, 15.748581, 15.897600 +3.300000, 9.111240, 15.748581, 15.897600 +3.316667, 9.176859, 15.748581, 15.897600 +3.333333, 9.242478, 15.748581, 15.897600 +3.350000, 9.308097, 15.748581, 15.897600 +3.366667, 9.373716, 15.748581, 15.897600 +3.383333, 9.439335, 15.748581, 15.897600 +3.400000, 9.504954, 15.748581, 15.897600 +3.416667, 9.570573, 15.748581, 15.897600 +3.433333, 9.636193, 15.748581, 15.897600 +3.450000, 9.701812, 15.748581, 15.897600 +3.466667, 9.767431, 15.748581, 15.897600 +3.483333, 9.833050, 15.748581, 15.897600 +3.500000, 9.898669, 15.748581, 15.897600 +3.516667, 9.964288, 15.748581, 15.897600 +3.533333, 10.029907, 15.748581, 15.897600 +3.550000, 10.095526, 15.748581, 15.897600 +3.566667, 10.161145, 15.748581, 15.897600 +3.583333, 10.226764, 15.748581, 15.897600 +3.600000, 10.292383, 15.748581, 15.897600 +3.616667, 10.358002, 15.748581, 15.897600 +3.633333, 10.423622, 15.748581, 15.897600 +3.650000, 10.489241, 15.748581, 15.897600 +3.666667, 10.554860, 15.748581, 15.897600 +3.683333, 10.620479, 15.748581, 15.897600 +3.700000, 10.686098, 15.748581, 15.897600 +3.716667, 10.751717, 15.748581, 15.897600 +3.733333, 10.817336, 15.748581, 15.897600 +3.750000, 10.882955, 15.748581, 15.897600 +3.766667, 10.948574, 15.748581, 15.897600 +3.783333, 11.014193, 15.748581, 15.897600 +3.800000, 11.079812, 15.748581, 15.897600 +3.816667, 11.145431, 15.748581, 15.897600 +3.833333, 11.211051, 15.748581, 15.897600 +3.850000, 11.276670, 15.748581, 15.897600 +3.866667, 11.342289, 15.748581, 15.897600 +3.883333, 11.407908, 15.748581, 15.897600 +3.900000, 11.473527, 15.748581, 15.897600 +3.916667, 11.539146, 15.748581, 15.897600 +3.933333, 11.604765, 15.748581, 15.897600 +3.950000, 11.670384, 15.748581, 15.897600 +3.966667, 11.736003, 15.748581, 15.897600 +3.983333, 11.801622, 15.748581, 15.897600 +4.000000, 11.867241, 15.748581, 15.897600 diff --git a/unittests/test_charging_models_eMosaic/original_eMosaic_models/L2_7200W_hd_600kWh.csv b/unittests/test_charging_models_eMosaic/original_eMosaic_models/L2_7200W_hd_600kWh.csv new file mode 100644 index 0000000..f075ffb --- /dev/null +++ b/unittests/test_charging_models_eMosaic/original_eMosaic_models/L2_7200W_hd_600kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.037206, 13.394267, 13.519743 +1.016667, 0.080956, 15.749716, 15.897600 +1.033333, 0.124705, 15.749716, 15.897600 +1.050000, 0.168454, 15.749716, 15.897600 +1.066667, 0.212203, 15.749716, 15.897600 +1.083333, 0.255952, 15.749716, 15.897600 +1.100000, 0.299702, 15.749716, 15.897600 +1.116667, 0.343451, 15.749716, 15.897600 +1.133333, 0.387200, 15.749716, 15.897600 +1.150000, 0.430949, 15.749716, 15.897600 +1.166667, 0.474698, 15.749716, 15.897600 +1.183333, 0.518448, 15.749716, 15.897600 +1.200000, 0.562197, 15.749716, 15.897600 +1.216667, 0.605946, 15.749716, 15.897600 +1.233333, 0.649695, 15.749716, 15.897600 +1.250000, 0.693444, 15.749716, 15.897600 +1.266667, 0.737194, 15.749716, 15.897600 +1.283333, 0.780943, 15.749716, 15.897600 +1.300000, 0.824692, 15.749716, 15.897600 +1.316667, 0.868441, 15.749716, 15.897600 +1.333333, 0.912191, 15.749716, 15.897600 +1.350000, 0.955940, 15.749716, 15.897600 +1.366667, 0.999689, 15.749716, 15.897600 +1.383333, 1.043438, 15.749716, 15.897600 +1.400000, 1.087187, 15.749716, 15.897600 +1.416667, 1.130937, 15.749716, 15.897600 +1.433333, 1.174686, 15.749716, 15.897600 +1.450000, 1.218435, 15.749716, 15.897600 +1.466667, 1.262184, 15.749716, 15.897600 +1.483333, 1.305933, 15.749716, 15.897600 +1.500000, 1.349683, 15.749716, 15.897600 +1.516667, 1.393432, 15.749716, 15.897600 +1.533333, 1.437181, 15.749716, 15.897600 +1.550000, 1.480930, 15.749716, 15.897600 +1.566667, 1.524679, 15.749716, 15.897600 +1.583333, 1.568429, 15.749716, 15.897600 +1.600000, 1.612178, 15.749716, 15.897600 +1.616667, 1.655927, 15.749716, 15.897600 +1.633333, 1.699676, 15.749716, 15.897600 +1.650000, 1.743425, 15.749716, 15.897600 +1.666667, 1.787175, 15.749716, 15.897600 +1.683333, 1.830924, 15.749716, 15.897600 +1.700000, 1.874673, 15.749716, 15.897600 +1.716667, 1.918422, 15.749716, 15.897600 +1.733333, 1.962172, 15.749716, 15.897600 +1.750000, 2.005921, 15.749716, 15.897600 +1.766667, 2.049670, 15.749716, 15.897600 +1.783333, 2.093419, 15.749716, 15.897600 +1.800000, 2.137168, 15.749716, 15.897600 +1.816667, 2.180918, 15.749716, 15.897600 +1.833333, 2.224667, 15.749716, 15.897600 +1.850000, 2.268416, 15.749716, 15.897600 +1.866667, 2.312165, 15.749716, 15.897600 +1.883333, 2.355914, 15.749716, 15.897600 +1.900000, 2.399664, 15.749716, 15.897600 +1.916667, 2.443413, 15.749716, 15.897600 +1.933333, 2.487162, 15.749716, 15.897600 +1.950000, 2.530911, 15.749716, 15.897600 +1.966667, 2.574660, 15.749716, 15.897600 +1.983333, 2.618410, 15.749716, 15.897600 +2.000000, 2.662159, 15.749716, 15.897600 +2.016667, 2.705908, 15.749716, 15.897600 +2.033333, 2.749657, 15.749716, 15.897600 +2.050000, 2.793407, 15.749716, 15.897600 +2.066667, 2.837156, 15.749716, 15.897600 +2.083333, 2.880905, 15.749716, 15.897600 +2.100000, 2.924654, 15.749716, 15.897600 +2.116667, 2.968403, 15.749716, 15.897600 +2.133333, 3.012153, 15.749716, 15.897600 +2.150000, 3.055902, 15.749716, 15.897600 +2.166667, 3.099651, 15.749716, 15.897600 +2.183333, 3.143400, 15.749716, 15.897600 +2.200000, 3.187149, 15.749716, 15.897600 +2.216667, 3.230899, 15.749716, 15.897600 +2.233333, 3.274648, 15.749716, 15.897600 +2.250000, 3.318397, 15.749716, 15.897600 +2.266667, 3.362146, 15.749716, 15.897600 +2.283333, 3.405895, 15.749716, 15.897600 +2.300000, 3.449645, 15.749716, 15.897600 +2.316667, 3.493394, 15.749716, 15.897600 +2.333333, 3.537143, 15.749716, 15.897600 +2.350000, 3.580892, 15.749716, 15.897600 +2.366667, 3.624642, 15.749716, 15.897600 +2.383333, 3.668391, 15.749716, 15.897600 +2.400000, 3.712140, 15.749716, 15.897600 +2.416667, 3.755889, 15.749716, 15.897600 +2.433333, 3.799638, 15.749716, 15.897600 +2.450000, 3.843388, 15.749716, 15.897600 +2.466667, 3.887137, 15.749716, 15.897600 +2.483333, 3.930886, 15.749716, 15.897600 +2.500000, 3.974635, 15.749716, 15.897600 +2.516667, 4.018384, 15.749716, 15.897600 +2.533333, 4.062134, 15.749716, 15.897600 +2.550000, 4.105883, 15.749716, 15.897600 +2.566667, 4.149632, 15.749716, 15.897600 +2.583333, 4.193381, 15.749716, 15.897600 +2.600000, 4.237130, 15.749716, 15.897600 +2.616667, 4.280880, 15.749716, 15.897600 +2.633333, 4.324629, 15.749716, 15.897600 +2.650000, 4.368378, 15.749716, 15.897600 +2.666667, 4.412127, 15.749716, 15.897600 +2.683333, 4.455877, 15.749716, 15.897600 +2.700000, 4.499626, 15.749716, 15.897600 +2.716667, 4.543375, 15.749716, 15.897600 +2.733333, 4.587124, 15.749716, 15.897600 +2.750000, 4.630873, 15.749716, 15.897600 +2.766667, 4.674623, 15.749716, 15.897600 +2.783333, 4.718372, 15.749716, 15.897600 +2.800000, 4.762121, 15.749716, 15.897600 +2.816667, 4.805870, 15.749716, 15.897600 +2.833333, 4.849619, 15.749716, 15.897600 +2.850000, 4.893369, 15.749716, 15.897600 +2.866667, 4.937118, 15.749716, 15.897600 +2.883333, 4.980867, 15.749716, 15.897600 +2.900000, 5.024616, 15.749716, 15.897600 +2.916667, 5.068365, 15.749716, 15.897600 +2.933333, 5.112115, 15.749716, 15.897600 +2.950000, 5.155864, 15.749716, 15.897600 +2.966667, 5.199613, 15.749716, 15.897600 +2.983333, 5.243362, 15.749716, 15.897600 +3.000000, 5.287112, 15.749716, 15.897600 +3.016667, 5.330861, 15.749716, 15.897600 +3.033333, 5.374610, 15.749716, 15.897600 +3.050000, 5.418359, 15.749716, 15.897600 +3.066667, 5.462108, 15.749716, 15.897600 +3.083333, 5.505858, 15.749716, 15.897600 +3.100000, 5.549607, 15.749716, 15.897600 +3.116667, 5.593356, 15.749716, 15.897600 +3.133333, 5.637105, 15.749716, 15.897600 +3.150000, 5.680854, 15.749716, 15.897600 +3.166667, 5.724604, 15.749716, 15.897600 +3.183333, 5.768353, 15.749716, 15.897600 +3.200000, 5.812102, 15.749716, 15.897600 +3.216667, 5.855851, 15.749716, 15.897600 +3.233333, 5.899600, 15.749716, 15.897600 +3.250000, 5.943350, 15.749716, 15.897600 +3.266667, 5.987099, 15.749716, 15.897600 +3.283333, 6.030848, 15.749716, 15.897600 +3.300000, 6.074597, 15.749716, 15.897600 +3.316667, 6.118347, 15.749716, 15.897600 +3.333333, 6.162096, 15.749716, 15.897600 +3.350000, 6.205845, 15.749716, 15.897600 +3.366667, 6.249594, 15.749716, 15.897600 +3.383333, 6.293343, 15.749716, 15.897600 +3.400000, 6.337093, 15.749716, 15.897600 +3.416667, 6.380842, 15.749716, 15.897600 +3.433333, 6.424591, 15.749716, 15.897600 +3.450000, 6.468340, 15.749716, 15.897600 +3.466667, 6.512089, 15.749716, 15.897600 +3.483333, 6.555839, 15.749716, 15.897600 +3.500000, 6.599588, 15.749716, 15.897600 +3.516667, 6.643337, 15.749716, 15.897600 +3.533333, 6.687086, 15.749716, 15.897600 +3.550000, 6.730835, 15.749716, 15.897600 +3.566667, 6.774585, 15.749716, 15.897600 +3.583333, 6.818334, 15.749716, 15.897600 +3.600000, 6.862083, 15.749716, 15.897600 +3.616667, 6.905832, 15.749716, 15.897600 +3.633333, 6.949582, 15.749716, 15.897600 +3.650000, 6.993331, 15.749716, 15.897600 +3.666667, 7.037080, 15.749716, 15.897600 +3.683333, 7.080829, 15.749716, 15.897600 +3.700000, 7.124578, 15.749716, 15.897600 +3.716667, 7.168328, 15.749716, 15.897600 +3.733333, 7.212077, 15.749716, 15.897600 +3.750000, 7.255826, 15.749716, 15.897600 +3.766667, 7.299575, 15.749716, 15.897600 +3.783333, 7.343324, 15.749716, 15.897600 +3.800000, 7.387074, 15.749716, 15.897600 +3.816667, 7.430823, 15.749716, 15.897600 +3.833333, 7.474572, 15.749716, 15.897600 +3.850000, 7.518321, 15.749716, 15.897600 +3.866667, 7.562070, 15.749716, 15.897600 +3.883333, 7.605820, 15.749716, 15.897600 +3.900000, 7.649569, 15.749716, 15.897600 +3.916667, 7.693318, 15.749716, 15.897600 +3.933333, 7.737067, 15.749716, 15.897600 +3.950000, 7.780817, 15.749716, 15.897600 +3.966667, 7.824566, 15.749716, 15.897600 +3.983333, 7.868315, 15.749716, 15.897600 +4.000000, 7.912064, 15.749716, 15.897600 diff --git a/unittests/test_charging_models_eMosaic/original_eMosaic_models/L2_7200W_ld_100kWh.csv b/unittests/test_charging_models_eMosaic/original_eMosaic_models/L2_7200W_ld_100kWh.csv new file mode 100644 index 0000000..f5cc5c9 --- /dev/null +++ b/unittests/test_charging_models_eMosaic/original_eMosaic_models/L2_7200W_ld_100kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.223101, 13.386057, 13.519743 +1.016667, 0.485407, 15.738364, 15.897600 +1.033333, 0.747713, 15.738364, 15.897600 +1.050000, 1.010019, 15.738364, 15.897600 +1.066667, 1.272325, 15.738364, 15.897600 +1.083333, 1.534631, 15.738364, 15.897600 +1.100000, 1.796937, 15.738364, 15.897600 +1.116667, 2.059243, 15.738364, 15.897600 +1.133333, 2.321550, 15.738364, 15.897600 +1.150000, 2.583856, 15.738364, 15.897600 +1.166667, 2.846162, 15.738364, 15.897600 +1.183333, 3.108468, 15.738364, 15.897600 +1.200000, 3.370774, 15.738364, 15.897600 +1.216667, 3.633080, 15.738364, 15.897600 +1.233333, 3.895386, 15.738364, 15.897600 +1.250000, 4.157692, 15.738364, 15.897600 +1.266667, 4.419998, 15.738364, 15.897600 +1.283333, 4.682304, 15.738364, 15.897600 +1.300000, 4.944610, 15.738364, 15.897600 +1.316667, 5.206916, 15.738364, 15.897600 +1.333333, 5.469222, 15.738364, 15.897600 +1.350000, 5.731528, 15.738364, 15.897600 +1.366667, 5.993835, 15.738364, 15.897600 +1.383333, 6.256141, 15.738364, 15.897600 +1.400000, 6.518447, 15.738364, 15.897600 +1.416667, 6.780753, 15.738364, 15.897600 +1.433333, 7.043059, 15.738364, 15.897600 +1.450000, 7.305365, 15.738364, 15.897600 +1.466667, 7.567671, 15.738364, 15.897600 +1.483333, 7.829977, 15.738364, 15.897600 +1.500000, 8.092283, 15.738364, 15.897600 +1.516667, 8.354589, 15.738364, 15.897600 +1.533333, 8.616895, 15.738364, 15.897600 +1.550000, 8.879201, 15.738364, 15.897600 +1.566667, 9.141507, 15.738364, 15.897600 +1.583333, 9.403813, 15.738364, 15.897600 +1.600000, 9.666120, 15.738364, 15.897600 +1.616667, 9.928426, 15.738364, 15.897600 +1.633333, 10.190732, 15.738364, 15.897600 +1.650000, 10.453038, 15.738364, 15.897600 +1.666667, 10.715344, 15.738364, 15.897600 +1.683333, 10.977650, 15.738364, 15.897600 +1.700000, 11.239956, 15.738364, 15.897600 +1.716667, 11.502262, 15.738364, 15.897600 +1.733333, 11.764568, 15.738364, 15.897600 +1.750000, 12.026874, 15.738364, 15.897600 +1.766667, 12.289180, 15.738364, 15.897600 +1.783333, 12.551486, 15.738364, 15.897600 +1.800000, 12.813792, 15.738364, 15.897600 +1.816667, 13.076099, 15.738364, 15.897600 +1.833333, 13.338405, 15.738364, 15.897600 +1.850000, 13.600711, 15.738364, 15.897600 +1.866667, 13.863017, 15.738364, 15.897600 +1.883333, 14.125323, 15.738364, 15.897600 +1.900000, 14.387629, 15.738364, 15.897600 +1.916667, 14.649935, 15.738364, 15.897600 +1.933333, 14.912241, 15.738364, 15.897600 +1.950000, 15.174547, 15.738364, 15.897600 +1.966667, 15.436853, 15.738364, 15.897600 +1.983333, 15.699159, 15.738364, 15.897600 +2.000000, 15.961465, 15.738364, 15.897600 +2.016667, 16.223771, 15.738364, 15.897600 +2.033333, 16.486077, 15.738364, 15.897600 +2.050000, 16.748384, 15.738364, 15.897600 +2.066667, 17.010690, 15.738364, 15.897600 +2.083333, 17.272996, 15.738364, 15.897600 +2.100000, 17.535302, 15.738364, 15.897600 +2.116667, 17.797608, 15.738364, 15.897600 +2.133333, 18.059914, 15.738364, 15.897600 +2.150000, 18.322220, 15.738364, 15.897600 +2.166667, 18.584526, 15.738364, 15.897600 +2.183333, 18.846832, 15.738364, 15.897600 +2.200000, 19.109138, 15.738364, 15.897600 +2.216667, 19.371444, 15.738364, 15.897600 +2.233333, 19.633750, 15.738364, 15.897600 +2.250000, 19.896056, 15.738364, 15.897600 +2.266667, 20.158362, 15.738364, 15.897600 +2.283333, 20.420669, 15.738364, 15.897600 +2.300000, 20.682975, 15.738364, 15.897600 +2.316667, 20.945281, 15.738364, 15.897600 +2.333333, 21.207587, 15.738364, 15.897600 +2.350000, 21.469893, 15.738364, 15.897600 +2.366667, 21.732199, 15.738364, 15.897600 +2.383333, 21.994505, 15.738364, 15.897600 +2.400000, 22.256811, 15.738364, 15.897600 +2.416667, 22.519117, 15.738364, 15.897600 +2.433333, 22.781423, 15.738364, 15.897600 +2.450000, 23.043729, 15.738364, 15.897600 +2.466667, 23.306035, 15.738364, 15.897600 +2.483333, 23.568341, 15.738364, 15.897600 +2.500000, 23.830647, 15.738364, 15.897600 +2.516667, 24.092954, 15.738364, 15.897600 +2.533333, 24.355260, 15.738364, 15.897600 +2.550000, 24.617566, 15.738364, 15.897600 +2.566667, 24.879872, 15.738364, 15.897600 +2.583333, 25.142178, 15.738364, 15.897600 +2.600000, 25.404484, 15.738364, 15.897600 +2.616667, 25.666790, 15.738364, 15.897600 +2.633333, 25.929096, 15.738364, 15.897600 +2.650000, 26.191402, 15.738364, 15.897600 +2.666667, 26.453708, 15.738364, 15.897600 +2.683333, 26.716014, 15.738364, 15.897600 +2.700000, 26.978320, 15.738364, 15.897600 +2.716667, 27.240626, 15.738364, 15.897600 +2.733333, 27.502932, 15.738364, 15.897600 +2.750000, 27.765239, 15.738364, 15.897600 +2.766667, 28.027545, 15.738364, 15.897600 +2.783333, 28.289851, 15.738364, 15.897600 +2.800000, 28.552157, 15.738364, 15.897600 +2.816667, 28.814463, 15.738364, 15.897600 +2.833333, 29.076769, 15.738364, 15.897600 +2.850000, 29.339075, 15.738364, 15.897600 +2.866667, 29.601381, 15.738364, 15.897600 +2.883333, 29.863687, 15.738364, 15.897600 +2.900000, 30.125993, 15.738364, 15.897600 +2.916667, 30.388299, 15.738364, 15.897600 +2.933333, 30.650605, 15.738364, 15.897600 +2.950000, 30.912911, 15.738364, 15.897600 +2.966667, 31.175218, 15.738364, 15.897600 +2.983333, 31.437524, 15.738364, 15.897600 +3.000000, 31.699830, 15.738364, 15.897600 +3.016667, 31.962136, 15.738364, 15.897600 +3.033333, 32.224442, 15.738364, 15.897600 +3.050000, 32.486748, 15.738364, 15.897600 +3.066667, 32.749054, 15.738364, 15.897600 +3.083333, 33.011360, 15.738364, 15.897600 +3.100000, 33.273666, 15.738364, 15.897600 +3.116667, 33.535972, 15.738364, 15.897600 +3.133333, 33.798278, 15.738364, 15.897600 +3.150000, 34.060584, 15.738364, 15.897600 +3.166667, 34.322890, 15.738364, 15.897600 +3.183333, 34.585196, 15.738364, 15.897600 +3.200000, 34.847503, 15.738364, 15.897600 +3.216667, 35.109809, 15.738364, 15.897600 +3.233333, 35.372115, 15.738364, 15.897600 +3.250000, 35.634421, 15.738364, 15.897600 +3.266667, 35.896727, 15.738364, 15.897600 +3.283333, 36.159033, 15.738364, 15.897600 +3.300000, 36.421339, 15.738364, 15.897600 +3.316667, 36.683645, 15.738364, 15.897600 +3.333333, 36.945951, 15.738364, 15.897600 +3.350000, 37.208257, 15.738364, 15.897600 +3.366667, 37.470563, 15.738364, 15.897600 +3.383333, 37.732869, 15.738364, 15.897600 +3.400000, 37.995175, 15.738364, 15.897600 +3.416667, 38.257481, 15.738364, 15.897600 +3.433333, 38.519788, 15.738364, 15.897600 +3.450000, 38.782094, 15.738364, 15.897600 +3.466667, 39.044400, 15.738364, 15.897600 +3.483333, 39.306706, 15.738364, 15.897600 +3.500000, 39.569012, 15.738364, 15.897600 +3.516667, 39.831318, 15.738364, 15.897600 +3.533333, 40.093624, 15.738364, 15.897600 +3.550000, 40.355930, 15.738364, 15.897600 +3.566667, 40.618236, 15.738364, 15.897600 +3.583333, 40.880542, 15.738364, 15.897600 +3.600000, 41.142848, 15.738364, 15.897600 +3.616667, 41.405154, 15.738364, 15.897600 +3.633333, 41.667460, 15.738364, 15.897600 +3.650000, 41.929766, 15.738364, 15.897600 +3.666667, 42.192073, 15.738364, 15.897600 +3.683333, 42.454379, 15.738364, 15.897600 +3.700000, 42.716685, 15.738364, 15.897600 +3.716667, 42.978991, 15.738364, 15.897600 +3.733333, 43.241297, 15.738364, 15.897600 +3.750000, 43.503603, 15.738364, 15.897600 +3.766667, 43.765909, 15.738364, 15.897600 +3.783333, 44.028215, 15.738364, 15.897600 +3.800000, 44.290521, 15.738364, 15.897600 +3.816667, 44.552827, 15.738364, 15.897600 +3.833333, 44.815133, 15.738364, 15.897600 +3.850000, 45.077439, 15.738364, 15.897600 +3.866667, 45.339745, 15.738364, 15.897600 +3.883333, 45.602051, 15.738364, 15.897600 +3.900000, 45.864358, 15.738364, 15.897600 +3.916667, 46.126664, 15.738364, 15.897600 +3.933333, 46.388970, 15.738364, 15.897600 +3.950000, 46.651276, 15.738364, 15.897600 +3.966667, 46.913582, 15.738364, 15.897600 +3.983333, 47.175888, 15.738364, 15.897600 +4.000000, 47.438194, 15.738364, 15.897600 diff --git a/unittests/test_charging_models_eMosaic/original_eMosaic_models/L2_7200W_ld_50kWh.csv b/unittests/test_charging_models_eMosaic/original_eMosaic_models/L2_7200W_ld_50kWh.csv new file mode 100644 index 0000000..8eb98a7 --- /dev/null +++ b/unittests/test_charging_models_eMosaic/original_eMosaic_models/L2_7200W_ld_50kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.445874, 13.376206, 13.519743 +1.016667, 0.970032, 15.724743, 15.897600 +1.033333, 1.494190, 15.724743, 15.897600 +1.050000, 2.018348, 15.724743, 15.897600 +1.066667, 2.542506, 15.724743, 15.897600 +1.083333, 3.066664, 15.724743, 15.897600 +1.100000, 3.590822, 15.724743, 15.897600 +1.116667, 4.114980, 15.724743, 15.897600 +1.133333, 4.639138, 15.724743, 15.897600 +1.150000, 5.163296, 15.724743, 15.897600 +1.166667, 5.687454, 15.724743, 15.897600 +1.183333, 6.211613, 15.724743, 15.897600 +1.200000, 6.735771, 15.724743, 15.897600 +1.216667, 7.259929, 15.724743, 15.897600 +1.233333, 7.784087, 15.724743, 15.897600 +1.250000, 8.308245, 15.724743, 15.897600 +1.266667, 8.832403, 15.724743, 15.897600 +1.283333, 9.356561, 15.724743, 15.897600 +1.300000, 9.880719, 15.724743, 15.897600 +1.316667, 10.404877, 15.724743, 15.897600 +1.333333, 10.929035, 15.724743, 15.897600 +1.350000, 11.453193, 15.724743, 15.897600 +1.366667, 11.977352, 15.724743, 15.897600 +1.383333, 12.501510, 15.724743, 15.897600 +1.400000, 13.025668, 15.724743, 15.897600 +1.416667, 13.549826, 15.724743, 15.897600 +1.433333, 14.073984, 15.724743, 15.897600 +1.450000, 14.598142, 15.724743, 15.897600 +1.466667, 15.122300, 15.724743, 15.897600 +1.483333, 15.646458, 15.724743, 15.897600 +1.500000, 16.170616, 15.724743, 15.897600 +1.516667, 16.694774, 15.724743, 15.897600 +1.533333, 17.218932, 15.724743, 15.897600 +1.550000, 17.743091, 15.724743, 15.897600 +1.566667, 18.267249, 15.724743, 15.897600 +1.583333, 18.791407, 15.724743, 15.897600 +1.600000, 19.315565, 15.724743, 15.897600 +1.616667, 19.839723, 15.724743, 15.897600 +1.633333, 20.363881, 15.724743, 15.897600 +1.650000, 20.888039, 15.724743, 15.897600 +1.666667, 21.412197, 15.724743, 15.897600 +1.683333, 21.936355, 15.724743, 15.897600 +1.700000, 22.460513, 15.724743, 15.897600 +1.716667, 22.984671, 15.724743, 15.897600 +1.733333, 23.508830, 15.724743, 15.897600 +1.750000, 24.032988, 15.724743, 15.897600 +1.766667, 24.557146, 15.724743, 15.897600 +1.783333, 25.081304, 15.724743, 15.897600 +1.800000, 25.605462, 15.724743, 15.897600 +1.816667, 26.129620, 15.724743, 15.897600 +1.833333, 26.653778, 15.724743, 15.897600 +1.850000, 27.177936, 15.724743, 15.897600 +1.866667, 27.702094, 15.724743, 15.897600 +1.883333, 28.226252, 15.724743, 15.897600 +1.900000, 28.750410, 15.724743, 15.897600 +1.916667, 29.274569, 15.724743, 15.897600 +1.933333, 29.798727, 15.724743, 15.897600 +1.950000, 30.322885, 15.724743, 15.897600 +1.966667, 30.847043, 15.724743, 15.897600 +1.983333, 31.371201, 15.724743, 15.897600 +2.000000, 31.895359, 15.724743, 15.897600 +2.016667, 32.419517, 15.724743, 15.897600 +2.033333, 32.943675, 15.724743, 15.897600 +2.050000, 33.467833, 15.724743, 15.897600 +2.066667, 33.991991, 15.724743, 15.897600 +2.083333, 34.516150, 15.724743, 15.897600 +2.100000, 35.040308, 15.724743, 15.897600 +2.116667, 35.564466, 15.724743, 15.897600 +2.133333, 36.088624, 15.724743, 15.897600 +2.150000, 36.612782, 15.724743, 15.897600 +2.166667, 37.136940, 15.724743, 15.897600 +2.183333, 37.661098, 15.724743, 15.897600 +2.200000, 38.185256, 15.724743, 15.897600 +2.216667, 38.709414, 15.724743, 15.897600 +2.233333, 39.233572, 15.724743, 15.897600 +2.250000, 39.757730, 15.724743, 15.897600 +2.266667, 40.281889, 15.724743, 15.897600 +2.283333, 40.806047, 15.724743, 15.897600 +2.300000, 41.330205, 15.724743, 15.897600 +2.316667, 41.854363, 15.724743, 15.897600 +2.333333, 42.378521, 15.724743, 15.897600 +2.350000, 42.902679, 15.724743, 15.897600 +2.366667, 43.426837, 15.724743, 15.897600 +2.383333, 43.950995, 15.724743, 15.897600 +2.400000, 44.475153, 15.724743, 15.897600 +2.416667, 44.999311, 15.724743, 15.897600 +2.433333, 45.523469, 15.724743, 15.897600 +2.450000, 46.047628, 15.724743, 15.897600 +2.466667, 46.571786, 15.724743, 15.897600 +2.483333, 47.095944, 15.724743, 15.897600 +2.500000, 47.620102, 15.724743, 15.897600 +2.516667, 48.144260, 15.724743, 15.897600 +2.533333, 48.668418, 15.724743, 15.897600 +2.550000, 49.192576, 15.724743, 15.897600 +2.566667, 49.716734, 15.724743, 15.897600 +2.583333, 50.240892, 15.724743, 15.897600 +2.600000, 50.765050, 15.724743, 15.897600 +2.616667, 51.289208, 15.724743, 15.897600 +2.633333, 51.813367, 15.724743, 15.897600 +2.650000, 52.337525, 15.724743, 15.897600 +2.666667, 52.861683, 15.724743, 15.897600 +2.683333, 53.385841, 15.724743, 15.897600 +2.700000, 53.909999, 15.724743, 15.897600 +2.716667, 54.434157, 15.724743, 15.897600 +2.733333, 54.958315, 15.724743, 15.897600 +2.750000, 55.482473, 15.724743, 15.897600 +2.766667, 56.006631, 15.724743, 15.897600 +2.783333, 56.530789, 15.724743, 15.897600 +2.800000, 57.054947, 15.724743, 15.897600 +2.816667, 57.579106, 15.724743, 15.897600 +2.833333, 58.103264, 15.724743, 15.897600 +2.850000, 58.627422, 15.724743, 15.897600 +2.866667, 59.151580, 15.724743, 15.897600 +2.883333, 59.675738, 15.724743, 15.897600 +2.900000, 60.199896, 15.724743, 15.897600 +2.916667, 60.724054, 15.724743, 15.897600 +2.933333, 61.248212, 15.724743, 15.897600 +2.950000, 61.772370, 15.724743, 15.897600 +2.966667, 62.296528, 15.724743, 15.897600 +2.983333, 62.820686, 15.724743, 15.897600 +3.000000, 63.344845, 15.724743, 15.897600 +3.016667, 63.869003, 15.724743, 15.897600 +3.033333, 64.393161, 15.724743, 15.897600 +3.050000, 64.917319, 15.724743, 15.897600 +3.066667, 65.441477, 15.724743, 15.897600 +3.083333, 65.965635, 15.724743, 15.897600 +3.100000, 66.489793, 15.724743, 15.897600 +3.116667, 67.013951, 15.724743, 15.897600 +3.133333, 67.538109, 15.724743, 15.897600 +3.150000, 68.062267, 15.724743, 15.897600 +3.166667, 68.586425, 15.724743, 15.897600 +3.183333, 69.110584, 15.724743, 15.897600 +3.200000, 69.634742, 15.724743, 15.897600 +3.216667, 70.158900, 15.724743, 15.897600 +3.233333, 70.683058, 15.724743, 15.897600 +3.250000, 71.207216, 15.724743, 15.897600 +3.266667, 71.731374, 15.724743, 15.897600 +3.283333, 72.255532, 15.724743, 15.897600 +3.300000, 72.779690, 15.724743, 15.897600 +3.316667, 73.303848, 15.724743, 15.897600 +3.333333, 73.828006, 15.724743, 15.897600 +3.350000, 74.352164, 15.724743, 15.897600 +3.366667, 74.876323, 15.724743, 15.897600 +3.383333, 75.400481, 15.724743, 15.897600 +3.400000, 75.924639, 15.724743, 15.897600 +3.416667, 76.448797, 15.724743, 15.897600 +3.433333, 76.972955, 15.724743, 15.897600 +3.450000, 77.497113, 15.724743, 15.897600 +3.466667, 78.021271, 15.724743, 15.897600 +3.483333, 78.545429, 15.724743, 15.897600 +3.500000, 79.069587, 15.724743, 15.897600 +3.516667, 79.593745, 15.724743, 15.897600 +3.533333, 80.117904, 15.724743, 15.897600 +3.550000, 80.642062, 15.724743, 15.897600 +3.566667, 81.166220, 15.724743, 15.897600 +3.583333, 81.690378, 15.724743, 15.897600 +3.600000, 82.214536, 15.724743, 15.897600 +3.616667, 82.738694, 15.724743, 15.897600 +3.633333, 83.262852, 15.724743, 15.897600 +3.650000, 83.787010, 15.724743, 15.897600 +3.666667, 84.311168, 15.724743, 15.897600 +3.683333, 84.835326, 15.724743, 15.897600 +3.700000, 85.359484, 15.724743, 15.897600 +3.716667, 85.883643, 15.724743, 15.897600 +3.733333, 86.407801, 15.724743, 15.897600 +3.750000, 86.931959, 15.724743, 15.897600 +3.766667, 87.456117, 15.724743, 15.897600 +3.783333, 87.980275, 15.724743, 15.897600 +3.800000, 88.504433, 15.724743, 15.897600 +3.816667, 89.028591, 15.724743, 15.897600 +3.833333, 89.552749, 15.724743, 15.897600 +3.850000, 90.076907, 15.724743, 15.897600 +3.866667, 90.601065, 15.724743, 15.897600 +3.883333, 91.125223, 15.724743, 15.897600 +3.900000, 91.649382, 15.724743, 15.897600 +3.916667, 92.173540, 15.724743, 15.897600 +3.933333, 92.697698, 15.724743, 15.897600 +3.950000, 93.221856, 15.724743, 15.897600 +3.966667, 93.746014, 15.724743, 15.897600 +3.983333, 94.270172, 15.724743, 15.897600 +4.000000, 94.794330, 15.724743, 15.897600 diff --git a/unittests/test_charging_models_eMosaic/original_eMosaic_models/L2_7200W_md_200kWh.csv b/unittests/test_charging_models_eMosaic/original_eMosaic_models/L2_7200W_md_200kWh.csv new file mode 100644 index 0000000..5bfd392 --- /dev/null +++ b/unittests/test_charging_models_eMosaic/original_eMosaic_models/L2_7200W_md_200kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.111592, 13.390983, 13.519743 +1.016667, 0.242801, 15.745175, 15.897600 +1.033333, 0.374011, 15.745175, 15.897600 +1.050000, 0.505221, 15.745175, 15.897600 +1.066667, 0.636431, 15.745175, 15.897600 +1.083333, 0.767640, 15.745175, 15.897600 +1.100000, 0.898850, 15.745175, 15.897600 +1.116667, 1.030060, 15.745175, 15.897600 +1.133333, 1.161270, 15.745175, 15.897600 +1.150000, 1.292480, 15.745175, 15.897600 +1.166667, 1.423689, 15.745175, 15.897600 +1.183333, 1.554899, 15.745175, 15.897600 +1.200000, 1.686109, 15.745175, 15.897600 +1.216667, 1.817319, 15.745175, 15.897600 +1.233333, 1.948529, 15.745175, 15.897600 +1.250000, 2.079738, 15.745175, 15.897600 +1.266667, 2.210948, 15.745175, 15.897600 +1.283333, 2.342158, 15.745175, 15.897600 +1.300000, 2.473368, 15.745175, 15.897600 +1.316667, 2.604578, 15.745175, 15.897600 +1.333333, 2.735787, 15.745175, 15.897600 +1.350000, 2.866997, 15.745175, 15.897600 +1.366667, 2.998207, 15.745175, 15.897600 +1.383333, 3.129417, 15.745175, 15.897600 +1.400000, 3.260627, 15.745175, 15.897600 +1.416667, 3.391836, 15.745175, 15.897600 +1.433333, 3.523046, 15.745175, 15.897600 +1.450000, 3.654256, 15.745175, 15.897600 +1.466667, 3.785466, 15.745175, 15.897600 +1.483333, 3.916676, 15.745175, 15.897600 +1.500000, 4.047885, 15.745175, 15.897600 +1.516667, 4.179095, 15.745175, 15.897600 +1.533333, 4.310305, 15.745175, 15.897600 +1.550000, 4.441515, 15.745175, 15.897600 +1.566667, 4.572724, 15.745175, 15.897600 +1.583333, 4.703934, 15.745175, 15.897600 +1.600000, 4.835144, 15.745175, 15.897600 +1.616667, 4.966354, 15.745175, 15.897600 +1.633333, 5.097564, 15.745175, 15.897600 +1.650000, 5.228773, 15.745175, 15.897600 +1.666667, 5.359983, 15.745175, 15.897600 +1.683333, 5.491193, 15.745175, 15.897600 +1.700000, 5.622403, 15.745175, 15.897600 +1.716667, 5.753613, 15.745175, 15.897600 +1.733333, 5.884822, 15.745175, 15.897600 +1.750000, 6.016032, 15.745175, 15.897600 +1.766667, 6.147242, 15.745175, 15.897600 +1.783333, 6.278452, 15.745175, 15.897600 +1.800000, 6.409662, 15.745175, 15.897600 +1.816667, 6.540871, 15.745175, 15.897600 +1.833333, 6.672081, 15.745175, 15.897600 +1.850000, 6.803291, 15.745175, 15.897600 +1.866667, 6.934501, 15.745175, 15.897600 +1.883333, 7.065711, 15.745175, 15.897600 +1.900000, 7.196920, 15.745175, 15.897600 +1.916667, 7.328130, 15.745175, 15.897600 +1.933333, 7.459340, 15.745175, 15.897600 +1.950000, 7.590550, 15.745175, 15.897600 +1.966667, 7.721760, 15.745175, 15.897600 +1.983333, 7.852969, 15.745175, 15.897600 +2.000000, 7.984179, 15.745175, 15.897600 +2.016667, 8.115389, 15.745175, 15.897600 +2.033333, 8.246599, 15.745175, 15.897600 +2.050000, 8.377808, 15.745175, 15.897600 +2.066667, 8.509018, 15.745175, 15.897600 +2.083333, 8.640228, 15.745175, 15.897600 +2.100000, 8.771438, 15.745175, 15.897600 +2.116667, 8.902648, 15.745175, 15.897600 +2.133333, 9.033857, 15.745175, 15.897600 +2.150000, 9.165067, 15.745175, 15.897600 +2.166667, 9.296277, 15.745175, 15.897600 +2.183333, 9.427487, 15.745175, 15.897600 +2.200000, 9.558697, 15.745175, 15.897600 +2.216667, 9.689906, 15.745175, 15.897600 +2.233333, 9.821116, 15.745175, 15.897600 +2.250000, 9.952326, 15.745175, 15.897600 +2.266667, 10.083536, 15.745175, 15.897600 +2.283333, 10.214746, 15.745175, 15.897600 +2.300000, 10.345955, 15.745175, 15.897600 +2.316667, 10.477165, 15.745175, 15.897600 +2.333333, 10.608375, 15.745175, 15.897600 +2.350000, 10.739585, 15.745175, 15.897600 +2.366667, 10.870795, 15.745175, 15.897600 +2.383333, 11.002004, 15.745175, 15.897600 +2.400000, 11.133214, 15.745175, 15.897600 +2.416667, 11.264424, 15.745175, 15.897600 +2.433333, 11.395634, 15.745175, 15.897600 +2.450000, 11.526844, 15.745175, 15.897600 +2.466667, 11.658053, 15.745175, 15.897600 +2.483333, 11.789263, 15.745175, 15.897600 +2.500000, 11.920473, 15.745175, 15.897600 +2.516667, 12.051683, 15.745175, 15.897600 +2.533333, 12.182892, 15.745175, 15.897600 +2.550000, 12.314102, 15.745175, 15.897600 +2.566667, 12.445312, 15.745175, 15.897600 +2.583333, 12.576522, 15.745175, 15.897600 +2.600000, 12.707732, 15.745175, 15.897600 +2.616667, 12.838941, 15.745175, 15.897600 +2.633333, 12.970151, 15.745175, 15.897600 +2.650000, 13.101361, 15.745175, 15.897600 +2.666667, 13.232571, 15.745175, 15.897600 +2.683333, 13.363781, 15.745175, 15.897600 +2.700000, 13.494990, 15.745175, 15.897600 +2.716667, 13.626200, 15.745175, 15.897600 +2.733333, 13.757410, 15.745175, 15.897600 +2.750000, 13.888620, 15.745175, 15.897600 +2.766667, 14.019830, 15.745175, 15.897600 +2.783333, 14.151039, 15.745175, 15.897600 +2.800000, 14.282249, 15.745175, 15.897600 +2.816667, 14.413459, 15.745175, 15.897600 +2.833333, 14.544669, 15.745175, 15.897600 +2.850000, 14.675879, 15.745175, 15.897600 +2.866667, 14.807088, 15.745175, 15.897600 +2.883333, 14.938298, 15.745175, 15.897600 +2.900000, 15.069508, 15.745175, 15.897600 +2.916667, 15.200718, 15.745175, 15.897600 +2.933333, 15.331927, 15.745175, 15.897600 +2.950000, 15.463137, 15.745175, 15.897600 +2.966667, 15.594347, 15.745175, 15.897600 +2.983333, 15.725557, 15.745175, 15.897600 +3.000000, 15.856767, 15.745175, 15.897600 +3.016667, 15.987976, 15.745175, 15.897600 +3.033333, 16.119186, 15.745175, 15.897600 +3.050000, 16.250396, 15.745175, 15.897600 +3.066667, 16.381606, 15.745175, 15.897600 +3.083333, 16.512816, 15.745175, 15.897600 +3.100000, 16.644025, 15.745175, 15.897600 +3.116667, 16.775235, 15.745175, 15.897600 +3.133333, 16.906445, 15.745175, 15.897600 +3.150000, 17.037655, 15.745175, 15.897600 +3.166667, 17.168865, 15.745175, 15.897600 +3.183333, 17.300074, 15.745175, 15.897600 +3.200000, 17.431284, 15.745175, 15.897600 +3.216667, 17.562494, 15.745175, 15.897600 +3.233333, 17.693704, 15.745175, 15.897600 +3.250000, 17.824914, 15.745175, 15.897600 +3.266667, 17.956123, 15.745175, 15.897600 +3.283333, 18.087333, 15.745175, 15.897600 +3.300000, 18.218543, 15.745175, 15.897600 +3.316667, 18.349753, 15.745175, 15.897600 +3.333333, 18.480963, 15.745175, 15.897600 +3.350000, 18.612172, 15.745175, 15.897600 +3.366667, 18.743382, 15.745175, 15.897600 +3.383333, 18.874592, 15.745175, 15.897600 +3.400000, 19.005802, 15.745175, 15.897600 +3.416667, 19.137011, 15.745175, 15.897600 +3.433333, 19.268221, 15.745175, 15.897600 +3.450000, 19.399431, 15.745175, 15.897600 +3.466667, 19.530641, 15.745175, 15.897600 +3.483333, 19.661851, 15.745175, 15.897600 +3.500000, 19.793060, 15.745175, 15.897600 +3.516667, 19.924270, 15.745175, 15.897600 +3.533333, 20.055480, 15.745175, 15.897600 +3.550000, 20.186690, 15.745175, 15.897600 +3.566667, 20.317900, 15.745175, 15.897600 +3.583333, 20.449109, 15.745175, 15.897600 +3.600000, 20.580319, 15.745175, 15.897600 +3.616667, 20.711529, 15.745175, 15.897600 +3.633333, 20.842739, 15.745175, 15.897600 +3.650000, 20.973949, 15.745175, 15.897600 +3.666667, 21.105158, 15.745175, 15.897600 +3.683333, 21.236368, 15.745175, 15.897600 +3.700000, 21.367578, 15.745175, 15.897600 +3.716667, 21.498788, 15.745175, 15.897600 +3.733333, 21.629998, 15.745175, 15.897600 +3.750000, 21.761207, 15.745175, 15.897600 +3.766667, 21.892417, 15.745175, 15.897600 +3.783333, 22.023627, 15.745175, 15.897600 +3.800000, 22.154837, 15.745175, 15.897600 +3.816667, 22.286047, 15.745175, 15.897600 +3.833333, 22.417256, 15.745175, 15.897600 +3.850000, 22.548466, 15.745175, 15.897600 +3.866667, 22.679676, 15.745175, 15.897600 +3.883333, 22.810886, 15.745175, 15.897600 +3.900000, 22.942095, 15.745175, 15.897600 +3.916667, 23.073305, 15.745175, 15.897600 +3.933333, 23.204515, 15.745175, 15.897600 +3.950000, 23.335725, 15.745175, 15.897600 +3.966667, 23.466935, 15.745175, 15.897600 +3.983333, 23.598144, 15.745175, 15.897600 +4.000000, 23.729354, 15.745175, 15.897600 diff --git a/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_150kW_hd_300kWh.csv b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_150kW_hd_300kWh.csv new file mode 100644 index 0000000..08da227 --- /dev/null +++ b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_150kW_hd_300kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.835098, 150.317705, 152.126884 +1.016667, 2.107444, 229.022133, 232.116153 +1.033333, 3.435543, 239.057974, 242.332656 +1.050000, 4.814128, 248.145218, 251.586781 +1.066667, 6.210992, 251.435532, 254.938291 +1.083333, 7.622298, 254.035070, 257.586470 +1.100000, 9.048180, 256.658703, 260.259454 +1.116667, 10.488155, 259.195529, 262.844246 +1.133333, 11.934333, 260.312157, 263.982066 +1.150000, 13.384291, 260.992435, 264.675277 +1.166667, 14.838033, 261.673481, 265.369289 +1.183333, 16.295568, 262.356287, 266.065111 +1.200000, 17.756906, 263.040857, 266.762750 +1.216667, 19.222057, 263.727196, 267.462209 +1.233333, 20.691031, 264.415308, 268.163493 +1.250000, 22.163838, 265.105198, 268.866606 +1.266667, 23.640487, 265.796870, 269.571554 +1.283333, 25.120989, 266.490328, 270.278342 +1.300000, 26.605353, 267.185578, 270.986973 +1.316667, 28.093590, 267.882623, 271.697453 +1.333333, 29.585709, 268.581469, 272.409786 +1.350000, 31.081721, 269.282119, 273.123978 +1.366667, 32.581635, 269.984579, 273.840033 +1.383333, 34.085462, 270.688853, 274.557956 +1.400000, 35.593212, 271.394945, 275.277751 +1.416667, 37.104894, 272.102861, 275.999424 +1.433333, 38.620520, 272.812604, 276.722980 +1.450000, 40.140099, 273.524179, 277.448422 +1.466667, 41.663641, 274.237592, 278.175757 +1.483333, 43.191157, 274.952846, 278.904989 +1.500000, 44.722657, 275.669946, 279.636123 +1.516667, 46.258150, 276.388897, 280.369164 +1.533333, 47.797649, 277.109704, 281.104116 +1.550000, 49.341162, 277.832372, 281.840985 +1.566667, 50.888700, 278.556904, 282.579776 +1.583333, 52.440274, 279.283306, 283.320493 +1.600000, 53.995894, 280.011582, 284.063142 +1.616667, 55.555570, 280.741738, 284.807727 +1.633333, 57.119314, 281.473778, 285.554254 +1.650000, 58.687134, 282.207706, 286.302728 +1.666667, 60.259043, 282.943528, 287.053153 +1.683333, 61.835050, 283.681247, 287.805535 +1.700000, 63.415166, 284.420870, 288.559878 +1.716667, 64.999401, 285.162401, 289.316188 +1.733333, 66.587767, 285.905844, 290.074470 +1.750000, 68.180274, 286.651205, 290.834729 +1.766667, 69.776932, 287.398488, 291.596970 +1.783333, 71.377752, 288.147698, 292.361197 +1.800000, 72.982746, 288.898841, 293.127417 +1.816667, 74.591923, 289.651920, 293.895635 +1.833333, 76.205295, 290.406941, 294.665855 +1.850000, 77.822873, 291.163908, 295.438082 +1.866667, 79.444666, 291.922827, 296.212323 +1.883333, 81.070687, 292.683703, 296.988581 +1.900000, 82.700945, 293.446539, 297.766863 +1.916667, 84.335453, 294.211343, 298.547173 +1.933333, 85.974220, 294.978117, 299.329517 +1.950000, 87.617258, 295.746868, 300.113899 +1.966667, 89.264578, 296.517600, 300.900326 +1.983333, 90.916191, 297.290318, 301.688802 +2.000000, 92.444328, 275.064595, 279.018924 +2.016667, 93.735397, 232.392537, 235.546804 +2.033333, 94.822440, 195.667787, 198.188766 +2.050000, 95.737616, 164.731507, 166.758529 +2.066667, 96.508053, 138.678751, 140.317718 +2.083333, 97.156614, 116.740924, 118.072875 +2.100000, 97.702556, 98.269689, 99.357105 +2.116667, 98.162103, 82.718382, 83.609797 +2.133333, 98.548915, 69.626210, 70.359607 +2.150000, 98.874498, 58.604863, 59.210183 +2.166667, 99.148538, 49.327183, 49.828190 +2.183333, 99.379191, 41.517583, 41.933261 +2.200000, 99.573324, 34.943951, 35.289559 +2.216667, 99.736717, 29.410816, 29.698687 +2.233333, 99.800773, 11.529984, 11.639026 +2.250000, 99.800826, 0.009502, 0.009590 +2.266667, 99.800826, 0.000000, 0.000000 +2.283333, 99.800826, 0.000000, 0.000000 +2.300000, 99.800826, 0.000000, 0.000000 +2.316667, 99.800826, 0.000000, 0.000000 +2.333333, 99.800826, 0.000000, 0.000000 +2.350000, 99.800826, 0.000000, 0.000000 +2.366667, 99.800826, 0.000000, 0.000000 +2.383333, 99.800826, 0.000000, 0.000000 +2.400000, 99.800826, 0.000000, 0.000000 +2.416667, 99.800826, 0.000000, 0.000000 +2.433333, 99.800826, 0.000000, 0.000000 +2.450000, 99.800826, 0.000000, 0.000000 +2.466667, 99.800826, 0.000000, 0.000000 +2.483333, 99.800826, 0.000000, 0.000000 +2.500000, 99.800826, 0.000000, 0.000000 +2.516667, 99.800826, 0.000000, 0.000000 +2.533333, 99.800826, 0.000000, 0.000000 +2.550000, 99.800826, 0.000000, 0.000000 +2.566667, 99.800826, 0.000000, 0.000000 +2.583333, 99.800826, 0.000000, 0.000000 +2.600000, 99.800826, 0.000000, 0.000000 +2.616667, 99.800826, 0.000000, 0.000000 +2.633333, 99.800826, 0.000000, 0.000000 +2.650000, 99.800826, 0.000000, 0.000000 +2.666667, 99.800826, 0.000000, 0.000000 +2.683333, 99.800826, 0.000000, 0.000000 +2.700000, 99.800826, 0.000000, 0.000000 +2.716667, 99.800826, 0.000000, 0.000000 +2.733333, 99.800826, 0.000000, 0.000000 +2.750000, 99.800826, 0.000000, 0.000000 +2.766667, 99.800826, 0.000000, 0.000000 +2.783333, 99.800826, 0.000000, 0.000000 +2.800000, 99.800826, 0.000000, 0.000000 +2.816667, 99.800826, 0.000000, 0.000000 +2.833333, 99.800826, 0.000000, 0.000000 +2.850000, 99.800826, 0.000000, 0.000000 +2.866667, 99.800826, 0.000000, 0.000000 +2.883333, 99.800826, 0.000000, 0.000000 +2.900000, 99.800826, 0.000000, 0.000000 +2.916667, 99.800826, 0.000000, 0.000000 +2.933333, 99.800826, 0.000000, 0.000000 +2.950000, 99.800826, 0.000000, 0.000000 +2.966667, 99.800826, 0.000000, 0.000000 +2.983333, 99.800826, 0.000000, 0.000000 +3.000000, 99.800826, 0.000000, 0.000000 +3.016667, 99.800826, 0.000000, 0.000000 +3.033333, 99.800826, 0.000000, 0.000000 +3.050000, 99.800826, 0.000000, 0.000000 +3.066667, 99.800826, 0.000000, 0.000000 +3.083333, 99.800826, 0.000000, 0.000000 +3.100000, 99.800826, 0.000000, 0.000000 +3.116667, 99.800826, 0.000000, 0.000000 +3.133333, 99.800826, 0.000000, 0.000000 +3.150000, 99.800826, 0.000000, 0.000000 +3.166667, 99.800826, 0.000000, 0.000000 +3.183333, 99.800826, 0.000000, 0.000000 +3.200000, 99.800826, 0.000000, 0.000000 +3.216667, 99.800826, 0.000000, 0.000000 +3.233333, 99.800826, 0.000000, 0.000000 +3.250000, 99.800826, 0.000000, 0.000000 +3.266667, 99.800826, 0.000000, 0.000000 +3.283333, 99.800826, 0.000000, 0.000000 +3.300000, 99.800826, 0.000000, 0.000000 +3.316667, 99.800826, 0.000000, 0.000000 +3.333333, 99.800826, 0.000000, 0.000000 +3.350000, 99.800826, 0.000000, 0.000000 +3.366667, 99.800826, 0.000000, 0.000000 +3.383333, 99.800826, 0.000000, 0.000000 +3.400000, 99.800826, 0.000000, 0.000000 +3.416667, 99.800826, 0.000000, 0.000000 +3.433333, 99.800826, 0.000000, 0.000000 +3.450000, 99.800826, 0.000000, 0.000000 +3.466667, 99.800826, 0.000000, 0.000000 +3.483333, 99.800826, 0.000000, 0.000000 +3.500000, 99.800826, 0.000000, 0.000000 +3.516667, 99.800826, 0.000000, 0.000000 +3.533333, 99.800826, 0.000000, 0.000000 +3.550000, 99.800826, 0.000000, 0.000000 +3.566667, 99.800826, 0.000000, 0.000000 +3.583333, 99.800826, 0.000000, 0.000000 +3.600000, 99.800826, 0.000000, 0.000000 +3.616667, 99.800826, 0.000000, 0.000000 +3.633333, 99.800826, 0.000000, 0.000000 +3.650000, 99.800826, 0.000000, 0.000000 +3.666667, 99.800826, 0.000000, 0.000000 +3.683333, 99.800826, 0.000000, 0.000000 +3.700000, 99.800826, 0.000000, 0.000000 +3.716667, 99.800826, 0.000000, 0.000000 +3.733333, 99.800826, 0.000000, 0.000000 +3.750000, 99.800826, 0.000000, 0.000000 +3.766667, 99.800826, 0.000000, 0.000000 +3.783333, 99.800826, 0.000000, 0.000000 +3.800000, 99.800826, 0.000000, 0.000000 +3.816667, 99.800826, 0.000000, 0.000000 +3.833333, 99.800826, 0.000000, 0.000000 +3.850000, 99.800826, 0.000000, 0.000000 +3.866667, 99.800826, 0.000000, 0.000000 +3.883333, 99.800826, 0.000000, 0.000000 +3.900000, 99.800826, 0.000000, 0.000000 +3.916667, 99.800826, 0.000000, 0.000000 +3.933333, 99.800826, 0.000000, 0.000000 +3.950000, 99.800826, 0.000000, 0.000000 +3.966667, 99.800826, 0.000000, 0.000000 +3.983333, 99.800826, 0.000000, 0.000000 +4.000000, 99.800826, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_150kW_hd_400kWh.csv b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_150kW_hd_400kWh.csv new file mode 100644 index 0000000..99804d8 --- /dev/null +++ b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_150kW_hd_400kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.623753, 149.700676, 151.396231 +1.016667, 1.566974, 226.373155, 229.180044 +1.033333, 2.541116, 233.794025, 236.717267 +1.050000, 3.547241, 241.470085, 244.515318 +1.066667, 4.582388, 248.435129, 251.592494 +1.083333, 5.628121, 250.975895, 254.174506 +1.100000, 6.681971, 252.924133, 256.154494 +1.116667, 7.743994, 254.885508, 258.147943 +1.133333, 8.814252, 256.861984, 260.156849 +1.150000, 9.892809, 258.853676, 262.181333 +1.166667, 10.977193, 260.252134, 263.602883 +1.183333, 12.063743, 260.771947, 264.131293 +1.200000, 13.152424, 261.283398, 264.651210 +1.216667, 14.243240, 261.795829, 265.172132 +1.233333, 15.336195, 262.309258, 265.694075 +1.250000, 16.431294, 262.823686, 266.217042 +1.266667, 17.528540, 263.339116, 266.741034 +1.283333, 18.627938, 263.855549, 267.266054 +1.300000, 19.729492, 264.372988, 267.792103 +1.316667, 20.833207, 264.891434, 268.319184 +1.333333, 21.939085, 265.410889, 268.847299 +1.350000, 23.047133, 265.931355, 269.376450 +1.366667, 24.157353, 266.452834, 269.906638 +1.383333, 25.269750, 266.975328, 270.437865 +1.400000, 26.384329, 267.498839, 270.970135 +1.416667, 27.501093, 268.023369, 271.503448 +1.433333, 28.620046, 268.548920, 272.037807 +1.450000, 29.741194, 269.075494, 272.573213 +1.466667, 30.864541, 269.603092, 273.109670 +1.483333, 31.990089, 270.131718, 273.647178 +1.500000, 33.117845, 270.661371, 274.185740 +1.516667, 34.247812, 271.192056, 274.725359 +1.533333, 35.379994, 271.723773, 275.266035 +1.550000, 36.514397, 272.256525, 275.807771 +1.566667, 37.651023, 272.790313, 276.350570 +1.583333, 38.789878, 273.325140, 276.894432 +1.600000, 39.930965, 273.861007, 277.439361 +1.616667, 41.074290, 274.397917, 277.985358 +1.633333, 42.219856, 274.935872, 278.532426 +1.650000, 43.367668, 275.474873, 279.080566 +1.666667, 44.517730, 276.014923, 279.629781 +1.683333, 45.670047, 276.556023, 280.180073 +1.700000, 46.824623, 277.098176, 280.731443 +1.716667, 47.981462, 277.641383, 281.283894 +1.733333, 49.140569, 278.185647, 281.837428 +1.750000, 50.301948, 278.730970, 282.392047 +1.766667, 51.465603, 279.277353, 282.947754 +1.783333, 52.631540, 279.824799, 283.504550 +1.800000, 53.799762, 280.373310, 284.062437 +1.816667, 54.970274, 280.922888, 284.621418 +1.833333, 56.143080, 281.473534, 285.181494 +1.850000, 57.318186, 282.025251, 285.742668 +1.866667, 58.495594, 282.578041, 286.304943 +1.883333, 59.675310, 283.131906, 286.868319 +1.900000, 60.857339, 283.686848, 287.432799 +1.916667, 62.041684, 284.242869, 287.998386 +1.933333, 63.228351, 284.799972, 288.565082 +1.950000, 64.417343, 285.358157, 289.132888 +1.966667, 65.608666, 285.917428, 289.701807 +1.983333, 66.802323, 286.477786, 290.271841 +2.000000, 67.998320, 287.039234, 290.842992 +2.016667, 69.196661, 287.601773, 291.415262 +2.033333, 70.397350, 288.165405, 291.988655 +2.050000, 71.600392, 288.730134, 292.563170 +2.066667, 72.805792, 289.295960, 293.138812 +2.083333, 74.013554, 289.862886, 293.715582 +2.100000, 75.223683, 290.430914, 294.293482 +2.116667, 76.436183, 291.000046, 294.872514 +2.133333, 77.651059, 291.570284, 295.452681 +2.150000, 78.868316, 292.141631, 296.033985 +2.166667, 80.087958, 292.714088, 296.616428 +2.183333, 81.309990, 293.287658, 297.200013 +2.200000, 82.534416, 293.862342, 297.784740 +2.216667, 83.761242, 294.438143, 298.370614 +2.233333, 84.990471, 295.015063, 298.957636 +2.250000, 86.222109, 295.593104, 299.545807 +2.266667, 87.456160, 296.172269, 300.135132 +2.283333, 88.692629, 296.752559, 300.725611 +2.300000, 89.931521, 297.333976, 301.317246 +2.316667, 91.172840, 297.916523, 301.910041 +2.333333, 92.416591, 298.500202, 302.503998 +2.350000, 93.655781, 297.405652, 301.390183 +2.366667, 94.754383, 263.664522, 267.071849 +2.383333, 95.680923, 222.369686, 225.114450 +2.400000, 96.460763, 187.161478, 189.379346 +2.416667, 97.117113, 157.524103, 159.325483 +2.433333, 97.669525, 132.578733, 134.048671 +2.450000, 98.134453, 111.582918, 112.787401 +2.466667, 98.525752, 93.911573, 94.902184 +2.483333, 98.855079, 79.038464, 79.855829 +2.500000, 99.132248, 66.520607, 67.196940 +2.516667, 99.365519, 55.985110, 56.546128 +2.533333, 99.561845, 47.118095, 47.584455 +2.550000, 99.727075, 39.655366, 40.043753 +2.566667, 99.800840, 17.703647, 17.871646 +2.583333, 99.800901, 0.014607, 0.014742 +2.600000, 99.800901, 0.000000, 0.000000 +2.616667, 99.800901, 0.000000, 0.000000 +2.633333, 99.800901, 0.000000, 0.000000 +2.650000, 99.800901, 0.000000, 0.000000 +2.666667, 99.800901, 0.000000, 0.000000 +2.683333, 99.800901, 0.000000, 0.000000 +2.700000, 99.800901, 0.000000, 0.000000 +2.716667, 99.800901, 0.000000, 0.000000 +2.733333, 99.800901, 0.000000, 0.000000 +2.750000, 99.800901, 0.000000, 0.000000 +2.766667, 99.800901, 0.000000, 0.000000 +2.783333, 99.800901, 0.000000, 0.000000 +2.800000, 99.800901, 0.000000, 0.000000 +2.816667, 99.800901, 0.000000, 0.000000 +2.833333, 99.800901, 0.000000, 0.000000 +2.850000, 99.800901, 0.000000, 0.000000 +2.866667, 99.800901, 0.000000, 0.000000 +2.883333, 99.800901, 0.000000, 0.000000 +2.900000, 99.800901, 0.000000, 0.000000 +2.916667, 99.800901, 0.000000, 0.000000 +2.933333, 99.800901, 0.000000, 0.000000 +2.950000, 99.800901, 0.000000, 0.000000 +2.966667, 99.800901, 0.000000, 0.000000 +2.983333, 99.800901, 0.000000, 0.000000 +3.000000, 99.800901, 0.000000, 0.000000 +3.016667, 99.800901, 0.000000, 0.000000 +3.033333, 99.800901, 0.000000, 0.000000 +3.050000, 99.800901, 0.000000, 0.000000 +3.066667, 99.800901, 0.000000, 0.000000 +3.083333, 99.800901, 0.000000, 0.000000 +3.100000, 99.800901, 0.000000, 0.000000 +3.116667, 99.800901, 0.000000, 0.000000 +3.133333, 99.800901, 0.000000, 0.000000 +3.150000, 99.800901, 0.000000, 0.000000 +3.166667, 99.800901, 0.000000, 0.000000 +3.183333, 99.800901, 0.000000, 0.000000 +3.200000, 99.800901, 0.000000, 0.000000 +3.216667, 99.800901, 0.000000, 0.000000 +3.233333, 99.800901, 0.000000, 0.000000 +3.250000, 99.800901, 0.000000, 0.000000 +3.266667, 99.800901, 0.000000, 0.000000 +3.283333, 99.800901, 0.000000, 0.000000 +3.300000, 99.800901, 0.000000, 0.000000 +3.316667, 99.800901, 0.000000, 0.000000 +3.333333, 99.800901, 0.000000, 0.000000 +3.350000, 99.800901, 0.000000, 0.000000 +3.366667, 99.800901, 0.000000, 0.000000 +3.383333, 99.800901, 0.000000, 0.000000 +3.400000, 99.800901, 0.000000, 0.000000 +3.416667, 99.800901, 0.000000, 0.000000 +3.433333, 99.800901, 0.000000, 0.000000 +3.450000, 99.800901, 0.000000, 0.000000 +3.466667, 99.800901, 0.000000, 0.000000 +3.483333, 99.800901, 0.000000, 0.000000 +3.500000, 99.800901, 0.000000, 0.000000 +3.516667, 99.800901, 0.000000, 0.000000 +3.533333, 99.800901, 0.000000, 0.000000 +3.550000, 99.800901, 0.000000, 0.000000 +3.566667, 99.800901, 0.000000, 0.000000 +3.583333, 99.800901, 0.000000, 0.000000 +3.600000, 99.800901, 0.000000, 0.000000 +3.616667, 99.800901, 0.000000, 0.000000 +3.633333, 99.800901, 0.000000, 0.000000 +3.650000, 99.800901, 0.000000, 0.000000 +3.666667, 99.800901, 0.000000, 0.000000 +3.683333, 99.800901, 0.000000, 0.000000 +3.700000, 99.800901, 0.000000, 0.000000 +3.716667, 99.800901, 0.000000, 0.000000 +3.733333, 99.800901, 0.000000, 0.000000 +3.750000, 99.800901, 0.000000, 0.000000 +3.766667, 99.800901, 0.000000, 0.000000 +3.783333, 99.800901, 0.000000, 0.000000 +3.800000, 99.800901, 0.000000, 0.000000 +3.816667, 99.800901, 0.000000, 0.000000 +3.833333, 99.800901, 0.000000, 0.000000 +3.850000, 99.800901, 0.000000, 0.000000 +3.866667, 99.800901, 0.000000, 0.000000 +3.883333, 99.800901, 0.000000, 0.000000 +3.900000, 99.800901, 0.000000, 0.000000 +3.916667, 99.800901, 0.000000, 0.000000 +3.933333, 99.800901, 0.000000, 0.000000 +3.950000, 99.800901, 0.000000, 0.000000 +3.966667, 99.800901, 0.000000, 0.000000 +3.983333, 99.800901, 0.000000, 0.000000 +4.000000, 99.800901, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_150kW_hd_600kWh.csv b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_150kW_hd_600kWh.csv new file mode 100644 index 0000000..005189f --- /dev/null +++ b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_150kW_hd_600kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.414123, 149.084342, 150.668307 +1.016667, 1.035644, 223.747400, 226.279955 +1.033333, 1.670711, 228.624180, 231.222317 +1.050000, 2.319638, 233.613616, 236.279309 +1.066667, 2.982725, 238.711452, 241.446651 +1.083333, 3.660281, 243.920023, 246.726738 +1.100000, 4.351160, 248.716747, 251.589774 +1.116667, 5.047033, 250.514218, 253.412205 +1.133333, 5.746511, 251.812146, 254.728193 +1.150000, 6.449610, 253.115419, 256.049633 +1.166667, 7.156347, 254.425405, 257.377912 +1.183333, 7.866742, 255.742139, 258.713065 +1.200000, 8.580813, 257.065655, 260.055127 +1.216667, 9.298580, 258.395988, 261.404136 +1.233333, 10.020060, 259.732788, 262.759734 +1.250000, 10.743804, 260.548034, 263.586462 +1.266667, 11.468500, 260.890388, 263.933641 +1.283333, 12.194145, 261.232214, 264.280287 +1.300000, 12.920741, 261.574486, 264.627388 +1.316667, 13.648288, 261.917205, 264.974943 +1.333333, 14.376789, 262.260370, 265.322954 +1.350000, 15.106245, 262.603983, 265.671420 +1.366667, 15.836656, 262.948044, 266.020344 +1.383333, 16.568024, 263.292553, 266.369724 +1.400000, 17.300351, 263.637512, 266.719562 +1.416667, 18.033637, 263.982920, 267.069859 +1.433333, 18.767883, 264.328779, 267.420614 +1.450000, 19.503092, 264.675088, 267.771829 +1.466667, 20.239264, 265.021849, 268.123505 +1.483333, 20.976400, 265.369063, 268.475640 +1.500000, 21.714502, 265.716728, 268.828238 +1.516667, 22.453571, 266.064847, 269.181297 +1.533333, 23.193608, 266.413420, 269.534819 +1.550000, 23.934615, 266.762448, 269.888803 +1.566667, 24.676593, 267.111930, 270.243252 +1.583333, 25.419542, 267.461868, 270.598165 +1.600000, 26.163465, 267.812262, 270.953543 +1.616667, 26.908363, 268.163113, 271.309387 +1.633333, 27.654236, 268.514421, 271.665696 +1.650000, 28.401087, 268.866187, 272.022473 +1.666667, 29.148916, 269.218412, 272.379717 +1.683333, 29.897724, 269.571096, 272.737428 +1.700000, 30.647514, 269.924239, 273.095609 +1.716667, 31.398286, 270.277843, 273.454259 +1.733333, 32.150041, 270.631908, 273.813378 +1.750000, 32.902781, 270.986434, 274.172968 +1.766667, 33.656507, 271.341422, 274.533029 +1.783333, 34.411221, 271.696873, 274.893562 +1.800000, 35.166923, 272.052788, 275.254567 +1.816667, 35.923615, 272.409166, 275.616045 +1.833333, 36.681298, 272.766009, 275.977996 +1.850000, 37.439974, 273.123316, 276.340422 +1.866667, 38.199644, 273.481090, 276.703322 +1.883333, 38.960309, 273.839330, 277.066698 +1.900000, 39.721970, 274.198036, 277.430550 +1.916667, 40.484629, 274.557210, 277.794878 +1.933333, 41.248287, 274.916853, 278.159683 +1.950000, 42.012945, 275.276964, 278.524967 +1.966667, 42.778605, 275.637544, 278.890729 +1.983333, 43.545268, 275.998594, 279.256970 +2.000000, 44.312935, 276.360115, 279.623690 +2.016667, 45.081607, 276.722106, 279.990891 +2.033333, 45.851287, 277.084570, 280.358573 +2.050000, 46.621974, 277.447506, 280.726737 +2.066667, 47.393671, 277.810915, 281.095383 +2.083333, 48.166379, 278.174797, 281.464512 +2.100000, 48.940099, 278.539153, 281.834124 +2.116667, 49.714832, 278.903985, 282.204220 +2.133333, 50.490580, 279.269291, 282.574801 +2.150000, 51.267344, 279.635074, 282.945868 +2.166667, 52.045126, 280.001333, 283.317420 +2.183333, 52.823926, 280.368070, 283.689459 +2.200000, 53.603746, 280.735284, 284.061986 +2.216667, 54.384588, 281.102977, 284.435000 +2.233333, 55.166452, 281.471149, 284.808503 +2.250000, 55.949340, 281.839801, 285.182495 +2.266667, 56.733254, 282.208933, 285.556977 +2.283333, 57.518194, 282.578546, 285.931949 +2.300000, 58.304163, 282.948640, 286.307413 +2.316667, 59.091161, 283.319217, 286.683368 +2.333333, 59.879189, 283.690276, 287.059816 +2.350000, 60.668250, 284.061819, 287.436756 +2.366667, 61.458344, 284.433846, 287.814191 +2.383333, 62.249473, 284.806357, 288.192119 +2.400000, 63.041637, 285.179354, 288.570543 +2.416667, 63.834840, 285.552837, 288.949462 +2.433333, 64.629081, 285.926806, 289.328877 +2.450000, 65.424362, 286.301262, 289.708790 +2.466667, 66.220685, 286.676207, 290.089200 +2.483333, 67.018051, 287.051639, 290.470108 +2.500000, 67.816461, 287.427561, 290.851515 +2.516667, 68.615916, 287.803972, 291.233421 +2.533333, 69.416418, 288.180874, 291.615827 +2.550000, 70.217969, 288.558267, 291.998735 +2.566667, 71.020570, 288.936151, 292.382144 +2.583333, 71.824221, 289.314527, 292.766054 +2.600000, 72.628925, 289.693397, 293.150468 +2.616667, 73.434683, 290.072759, 293.535385 +2.633333, 74.241495, 290.452616, 293.920806 +2.650000, 75.049365, 290.832968, 294.306732 +2.666667, 75.858292, 291.213815, 294.693163 +2.683333, 76.668279, 291.595158, 295.080100 +2.700000, 77.479326, 291.976998, 295.467544 +2.716667, 78.291435, 292.359335, 295.855495 +2.733333, 79.104608, 292.742170, 296.243954 +2.750000, 79.918845, 293.125504, 296.632922 +2.766667, 80.734149, 293.509336, 297.022399 +2.783333, 81.550520, 293.893669, 297.412387 +2.800000, 82.367961, 294.278502, 297.802884 +2.816667, 83.186471, 294.663837, 298.193894 +2.833333, 84.006054, 295.049673, 298.585415 +2.850000, 84.826709, 295.436012, 298.977449 +2.866667, 85.648439, 295.822853, 299.369996 +2.883333, 86.471245, 296.210199, 299.763057 +2.900000, 87.295129, 296.598049, 300.156633 +2.916667, 88.120091, 296.986404, 300.550724 +2.933333, 88.946134, 297.375265, 300.945331 +2.950000, 89.773258, 297.764632, 301.340455 +2.966667, 90.601465, 298.154506, 301.736097 +2.983333, 91.430756, 298.544887, 302.132256 +3.000000, 92.261133, 298.935777, 302.528934 +3.016667, 93.092597, 299.327176, 302.926131 +3.033333, 93.925150, 299.719085, 303.323848 +3.050000, 94.758794, 300.111504, 303.722087 +3.066667, 95.593528, 300.504434, 304.120846 +3.083333, 96.383471, 284.379410, 287.758964 +3.100000, 97.052611, 240.890369, 243.655423 +3.116667, 97.615691, 202.708759, 204.963492 +3.133333, 98.089466, 170.559301, 172.405451 +3.150000, 98.488117, 143.514152, 145.031514 +3.166667, 98.823565, 120.761433, 122.012737 +3.183333, 99.105840, 101.618729, 102.653644 +3.200000, 99.343374, 85.512450, 86.370572 +3.216667, 99.543264, 71.960379, 72.673473 +3.233333, 99.711478, 60.557046, 61.150747 +3.250000, 99.800899, 32.191590, 32.498750 +3.266667, 99.800973, 0.026625, 0.026871 +3.283333, 99.800973, 0.000000, 0.000000 +3.300000, 99.800973, 0.000000, 0.000000 +3.316667, 99.800973, 0.000000, 0.000000 +3.333333, 99.800973, 0.000000, 0.000000 +3.350000, 99.800973, 0.000000, 0.000000 +3.366667, 99.800973, 0.000000, 0.000000 +3.383333, 99.800973, 0.000000, 0.000000 +3.400000, 99.800973, 0.000000, 0.000000 +3.416667, 99.800973, 0.000000, 0.000000 +3.433333, 99.800973, 0.000000, 0.000000 +3.450000, 99.800973, 0.000000, 0.000000 +3.466667, 99.800973, 0.000000, 0.000000 +3.483333, 99.800973, 0.000000, 0.000000 +3.500000, 99.800973, 0.000000, 0.000000 +3.516667, 99.800973, 0.000000, 0.000000 +3.533333, 99.800973, 0.000000, 0.000000 +3.550000, 99.800973, 0.000000, 0.000000 +3.566667, 99.800973, 0.000000, 0.000000 +3.583333, 99.800973, 0.000000, 0.000000 +3.600000, 99.800973, 0.000000, 0.000000 +3.616667, 99.800973, 0.000000, 0.000000 +3.633333, 99.800973, 0.000000, 0.000000 +3.650000, 99.800973, 0.000000, 0.000000 +3.666667, 99.800973, 0.000000, 0.000000 +3.683333, 99.800973, 0.000000, 0.000000 +3.700000, 99.800973, 0.000000, 0.000000 +3.716667, 99.800973, 0.000000, 0.000000 +3.733333, 99.800973, 0.000000, 0.000000 +3.750000, 99.800973, 0.000000, 0.000000 +3.766667, 99.800973, 0.000000, 0.000000 +3.783333, 99.800973, 0.000000, 0.000000 +3.800000, 99.800973, 0.000000, 0.000000 +3.816667, 99.800973, 0.000000, 0.000000 +3.833333, 99.800973, 0.000000, 0.000000 +3.850000, 99.800973, 0.000000, 0.000000 +3.866667, 99.800973, 0.000000, 0.000000 +3.883333, 99.800973, 0.000000, 0.000000 +3.900000, 99.800973, 0.000000, 0.000000 +3.916667, 99.800973, 0.000000, 0.000000 +3.933333, 99.800973, 0.000000, 0.000000 +3.950000, 99.800973, 0.000000, 0.000000 +3.966667, 99.800973, 0.000000, 0.000000 +3.983333, 99.800973, 0.000000, 0.000000 +4.000000, 99.800973, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_150kW_ld_100kWh.csv b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_150kW_ld_100kWh.csv new file mode 100644 index 0000000..24ca473 --- /dev/null +++ b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_150kW_ld_100kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 1.723524, 103.411430, 104.966710 +1.016667, 4.342638, 157.146842, 159.991912 +1.033333, 7.066518, 163.432826, 166.450692 +1.050000, 9.858502, 167.519001, 170.651674 +1.066667, 12.695115, 170.196782, 173.405751 +1.083333, 15.546632, 171.091027, 174.325663 +1.100000, 18.412974, 171.980535, 175.240794 +1.116667, 21.294217, 172.874567, 176.160674 +1.133333, 24.190436, 173.773154, 177.085335 +1.150000, 27.101708, 174.676319, 178.014802 +1.166667, 30.028109, 175.584084, 178.949100 +1.183333, 32.969717, 176.496471, 179.888252 +1.200000, 35.926609, 177.413503, 180.832285 +1.216667, 38.898862, 178.335203, 181.781222 +1.233333, 41.886556, 179.261593, 182.735089 +1.250000, 44.889767, 180.192696, 183.693911 +1.266667, 47.908576, 181.128535, 184.657713 +1.283333, 50.943062, 182.069134, 185.626520 +1.300000, 53.993304, 183.014514, 186.600357 +1.316667, 57.059382, 183.964701, 187.579251 +1.333333, 60.141377, 184.919716, 188.563227 +1.350000, 63.239370, 185.879583, 189.552311 +1.366667, 66.353442, 186.844326, 190.546529 +1.383333, 69.483675, 187.813969, 191.545906 +1.400000, 72.630151, 188.788535, 192.550469 +1.416667, 75.792952, 189.768048, 193.560245 +1.433333, 78.972160, 190.752532, 194.575260 +1.450000, 82.167861, 191.742011, 195.595540 +1.466667, 85.179183, 180.679346, 184.195090 +1.483333, 87.630373, 147.071417, 149.649144 +1.500000, 89.605177, 118.488223, 120.371700 +1.516667, 91.195155, 95.398677, 96.790152 +1.533333, 92.474899, 76.784611, 77.823869 +1.550000, 93.515540, 62.438497, 63.233185 +1.566667, 94.417194, 54.099227, 54.762457 +1.583333, 95.207184, 47.399417, 47.962717 +1.600000, 95.899352, 41.530050, 42.009960 +1.616667, 96.505767, 36.384921, 36.794913 +1.633333, 97.037021, 31.875257, 32.226409 +1.650000, 97.502405, 27.923030, 28.224488 +1.666667, 97.910067, 24.459687, 24.719034 +1.683333, 98.267150, 21.425024, 21.648573 +1.700000, 98.579920, 18.766186, 18.959216 +1.716667, 98.853867, 16.436788, 16.603728 +1.733333, 99.093802, 14.396133, 14.540714 +1.750000, 99.303944, 12.608522, 12.733898 +1.766667, 99.487988, 11.042649, 11.151494 +1.783333, 99.649173, 9.671065, 9.765653 +1.800000, 99.790334, 8.469704, 8.551977 +1.816667, 99.800568, 0.614031, 0.619728 +1.833333, 99.800576, 0.000483, 0.000488 +1.850000, 99.800576, 0.000000, 0.000000 +1.866667, 99.800576, 0.000000, 0.000000 +1.883333, 99.800576, 0.000000, 0.000000 +1.900000, 99.800576, 0.000000, 0.000000 +1.916667, 99.800576, 0.000000, 0.000000 +1.933333, 99.800576, 0.000000, 0.000000 +1.950000, 99.800576, 0.000000, 0.000000 +1.966667, 99.800576, 0.000000, 0.000000 +1.983333, 99.800576, 0.000000, 0.000000 +2.000000, 99.800576, 0.000000, 0.000000 +2.016667, 99.800576, 0.000000, 0.000000 +2.033333, 99.800576, 0.000000, 0.000000 +2.050000, 99.800576, 0.000000, 0.000000 +2.066667, 99.800576, 0.000000, 0.000000 +2.083333, 99.800576, 0.000000, 0.000000 +2.100000, 99.800576, 0.000000, 0.000000 +2.116667, 99.800576, 0.000000, 0.000000 +2.133333, 99.800576, 0.000000, 0.000000 +2.150000, 99.800576, 0.000000, 0.000000 +2.166667, 99.800576, 0.000000, 0.000000 +2.183333, 99.800576, 0.000000, 0.000000 +2.200000, 99.800576, 0.000000, 0.000000 +2.216667, 99.800576, 0.000000, 0.000000 +2.233333, 99.800576, 0.000000, 0.000000 +2.250000, 99.800576, 0.000000, 0.000000 +2.266667, 99.800576, 0.000000, 0.000000 +2.283333, 99.800576, 0.000000, 0.000000 +2.300000, 99.800576, 0.000000, 0.000000 +2.316667, 99.800576, 0.000000, 0.000000 +2.333333, 99.800576, 0.000000, 0.000000 +2.350000, 99.800576, 0.000000, 0.000000 +2.366667, 99.800576, 0.000000, 0.000000 +2.383333, 99.800576, 0.000000, 0.000000 +2.400000, 99.800576, 0.000000, 0.000000 +2.416667, 99.800576, 0.000000, 0.000000 +2.433333, 99.800576, 0.000000, 0.000000 +2.450000, 99.800576, 0.000000, 0.000000 +2.466667, 99.800576, 0.000000, 0.000000 +2.483333, 99.800576, 0.000000, 0.000000 +2.500000, 99.800576, 0.000000, 0.000000 +2.516667, 99.800576, 0.000000, 0.000000 +2.533333, 99.800576, 0.000000, 0.000000 +2.550000, 99.800576, 0.000000, 0.000000 +2.566667, 99.800576, 0.000000, 0.000000 +2.583333, 99.800576, 0.000000, 0.000000 +2.600000, 99.800576, 0.000000, 0.000000 +2.616667, 99.800576, 0.000000, 0.000000 +2.633333, 99.800576, 0.000000, 0.000000 +2.650000, 99.800576, 0.000000, 0.000000 +2.666667, 99.800576, 0.000000, 0.000000 +2.683333, 99.800576, 0.000000, 0.000000 +2.700000, 99.800576, 0.000000, 0.000000 +2.716667, 99.800576, 0.000000, 0.000000 +2.733333, 99.800576, 0.000000, 0.000000 +2.750000, 99.800576, 0.000000, 0.000000 +2.766667, 99.800576, 0.000000, 0.000000 +2.783333, 99.800576, 0.000000, 0.000000 +2.800000, 99.800576, 0.000000, 0.000000 +2.816667, 99.800576, 0.000000, 0.000000 +2.833333, 99.800576, 0.000000, 0.000000 +2.850000, 99.800576, 0.000000, 0.000000 +2.866667, 99.800576, 0.000000, 0.000000 +2.883333, 99.800576, 0.000000, 0.000000 +2.900000, 99.800576, 0.000000, 0.000000 +2.916667, 99.800576, 0.000000, 0.000000 +2.933333, 99.800576, 0.000000, 0.000000 +2.950000, 99.800576, 0.000000, 0.000000 +2.966667, 99.800576, 0.000000, 0.000000 +2.983333, 99.800576, 0.000000, 0.000000 +3.000000, 99.800576, 0.000000, 0.000000 +3.016667, 99.800576, 0.000000, 0.000000 +3.033333, 99.800576, 0.000000, 0.000000 +3.050000, 99.800576, 0.000000, 0.000000 +3.066667, 99.800576, 0.000000, 0.000000 +3.083333, 99.800576, 0.000000, 0.000000 +3.100000, 99.800576, 0.000000, 0.000000 +3.116667, 99.800576, 0.000000, 0.000000 +3.133333, 99.800576, 0.000000, 0.000000 +3.150000, 99.800576, 0.000000, 0.000000 +3.166667, 99.800576, 0.000000, 0.000000 +3.183333, 99.800576, 0.000000, 0.000000 +3.200000, 99.800576, 0.000000, 0.000000 +3.216667, 99.800576, 0.000000, 0.000000 +3.233333, 99.800576, 0.000000, 0.000000 +3.250000, 99.800576, 0.000000, 0.000000 +3.266667, 99.800576, 0.000000, 0.000000 +3.283333, 99.800576, 0.000000, 0.000000 +3.300000, 99.800576, 0.000000, 0.000000 +3.316667, 99.800576, 0.000000, 0.000000 +3.333333, 99.800576, 0.000000, 0.000000 +3.350000, 99.800576, 0.000000, 0.000000 +3.366667, 99.800576, 0.000000, 0.000000 +3.383333, 99.800576, 0.000000, 0.000000 +3.400000, 99.800576, 0.000000, 0.000000 +3.416667, 99.800576, 0.000000, 0.000000 +3.433333, 99.800576, 0.000000, 0.000000 +3.450000, 99.800576, 0.000000, 0.000000 +3.466667, 99.800576, 0.000000, 0.000000 +3.483333, 99.800576, 0.000000, 0.000000 +3.500000, 99.800576, 0.000000, 0.000000 +3.516667, 99.800576, 0.000000, 0.000000 +3.533333, 99.800576, 0.000000, 0.000000 +3.550000, 99.800576, 0.000000, 0.000000 +3.566667, 99.800576, 0.000000, 0.000000 +3.583333, 99.800576, 0.000000, 0.000000 +3.600000, 99.800576, 0.000000, 0.000000 +3.616667, 99.800576, 0.000000, 0.000000 +3.633333, 99.800576, 0.000000, 0.000000 +3.650000, 99.800576, 0.000000, 0.000000 +3.666667, 99.800576, 0.000000, 0.000000 +3.683333, 99.800576, 0.000000, 0.000000 +3.700000, 99.800576, 0.000000, 0.000000 +3.716667, 99.800576, 0.000000, 0.000000 +3.733333, 99.800576, 0.000000, 0.000000 +3.750000, 99.800576, 0.000000, 0.000000 +3.766667, 99.800576, 0.000000, 0.000000 +3.783333, 99.800576, 0.000000, 0.000000 +3.800000, 99.800576, 0.000000, 0.000000 +3.816667, 99.800576, 0.000000, 0.000000 +3.833333, 99.800576, 0.000000, 0.000000 +3.850000, 99.800576, 0.000000, 0.000000 +3.866667, 99.800576, 0.000000, 0.000000 +3.883333, 99.800576, 0.000000, 0.000000 +3.900000, 99.800576, 0.000000, 0.000000 +3.916667, 99.800576, 0.000000, 0.000000 +3.933333, 99.800576, 0.000000, 0.000000 +3.950000, 99.800576, 0.000000, 0.000000 +3.966667, 99.800576, 0.000000, 0.000000 +3.983333, 99.800576, 0.000000, 0.000000 +4.000000, 99.800576, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_150kW_ld_50kWh.csv b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_150kW_ld_50kWh.csv new file mode 100644 index 0000000..cb0fbc1 --- /dev/null +++ b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_150kW_ld_50kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 3.539523, 106.185693, 108.446743 +1.016667, 8.914655, 161.253967, 165.732814 +1.033333, 14.501086, 167.592915, 172.374666 +1.050000, 20.149390, 169.449135, 174.321474 +1.066667, 25.855008, 171.168530, 176.125544 +1.083333, 31.618483, 172.904264, 177.947505 +1.100000, 37.440379, 174.656869, 179.787938 +1.116667, 43.321262, 176.426494, 181.647022 +1.133333, 49.261705, 178.213288, 183.524938 +1.150000, 55.262285, 180.017402, 185.421868 +1.166667, 61.323585, 181.838988, 187.337997 +1.183333, 67.446191, 183.678199, 189.273511 +1.200000, 73.135726, 170.686050, 175.619229 +1.216667, 77.793213, 139.724612, 143.248650 +1.233333, 81.583485, 113.708137, 116.228943 +1.250000, 84.664902, 92.442512, 94.263740 +1.266667, 87.168127, 75.096745, 76.426397 +1.283333, 89.200400, 60.968188, 61.949295 +1.300000, 90.849504, 49.473140, 50.204685 +1.316667, 92.187146, 40.129247, 40.680244 +1.333333, 93.274607, 32.623833, 33.044204 +1.350000, 94.206790, 27.965501, 28.311217 +1.366667, 95.023453, 24.499894, 24.793249 +1.383333, 95.738941, 21.464635, 21.714354 +1.400000, 96.365739, 18.803942, 19.017113 +1.416667, 96.914804, 16.471933, 16.654378 +1.433333, 97.395746, 14.428269, 14.584787 +1.450000, 97.816996, 12.637497, 12.772067 +1.466667, 98.185945, 11.068479, 11.184406 +1.483333, 98.509074, 9.693873, 9.793920 +1.500000, 98.792064, 8.489682, 8.576163 +1.516667, 99.039892, 7.434848, 7.509712 +1.533333, 99.256922, 6.510900, 6.575792 +1.550000, 99.446977, 5.701638, 5.757952 +1.566667, 99.613405, 4.992859, 5.041779 +1.583333, 99.759142, 4.372110, 4.414647 +1.600000, 99.800286, 1.234310, 1.245889 +1.616667, 99.800320, 0.001022, 0.001031 +1.633333, 99.800320, 0.000000, 0.000000 +1.650000, 99.800320, 0.000000, 0.000000 +1.666667, 99.800320, 0.000000, 0.000000 +1.683333, 99.800320, 0.000000, 0.000000 +1.700000, 99.800320, 0.000000, 0.000000 +1.716667, 99.800320, 0.000000, 0.000000 +1.733333, 99.800320, 0.000000, 0.000000 +1.750000, 99.800320, 0.000000, 0.000000 +1.766667, 99.800320, 0.000000, 0.000000 +1.783333, 99.800320, 0.000000, 0.000000 +1.800000, 99.800320, 0.000000, 0.000000 +1.816667, 99.800320, 0.000000, 0.000000 +1.833333, 99.800320, 0.000000, 0.000000 +1.850000, 99.800320, 0.000000, 0.000000 +1.866667, 99.800320, 0.000000, 0.000000 +1.883333, 99.800320, 0.000000, 0.000000 +1.900000, 99.800320, 0.000000, 0.000000 +1.916667, 99.800320, 0.000000, 0.000000 +1.933333, 99.800320, 0.000000, 0.000000 +1.950000, 99.800320, 0.000000, 0.000000 +1.966667, 99.800320, 0.000000, 0.000000 +1.983333, 99.800320, 0.000000, 0.000000 +2.000000, 99.800320, 0.000000, 0.000000 +2.016667, 99.800320, 0.000000, 0.000000 +2.033333, 99.800320, 0.000000, 0.000000 +2.050000, 99.800320, 0.000000, 0.000000 +2.066667, 99.800320, 0.000000, 0.000000 +2.083333, 99.800320, 0.000000, 0.000000 +2.100000, 99.800320, 0.000000, 0.000000 +2.116667, 99.800320, 0.000000, 0.000000 +2.133333, 99.800320, 0.000000, 0.000000 +2.150000, 99.800320, 0.000000, 0.000000 +2.166667, 99.800320, 0.000000, 0.000000 +2.183333, 99.800320, 0.000000, 0.000000 +2.200000, 99.800320, 0.000000, 0.000000 +2.216667, 99.800320, 0.000000, 0.000000 +2.233333, 99.800320, 0.000000, 0.000000 +2.250000, 99.800320, 0.000000, 0.000000 +2.266667, 99.800320, 0.000000, 0.000000 +2.283333, 99.800320, 0.000000, 0.000000 +2.300000, 99.800320, 0.000000, 0.000000 +2.316667, 99.800320, 0.000000, 0.000000 +2.333333, 99.800320, 0.000000, 0.000000 +2.350000, 99.800320, 0.000000, 0.000000 +2.366667, 99.800320, 0.000000, 0.000000 +2.383333, 99.800320, 0.000000, 0.000000 +2.400000, 99.800320, 0.000000, 0.000000 +2.416667, 99.800320, 0.000000, 0.000000 +2.433333, 99.800320, 0.000000, 0.000000 +2.450000, 99.800320, 0.000000, 0.000000 +2.466667, 99.800320, 0.000000, 0.000000 +2.483333, 99.800320, 0.000000, 0.000000 +2.500000, 99.800320, 0.000000, 0.000000 +2.516667, 99.800320, 0.000000, 0.000000 +2.533333, 99.800320, 0.000000, 0.000000 +2.550000, 99.800320, 0.000000, 0.000000 +2.566667, 99.800320, 0.000000, 0.000000 +2.583333, 99.800320, 0.000000, 0.000000 +2.600000, 99.800320, 0.000000, 0.000000 +2.616667, 99.800320, 0.000000, 0.000000 +2.633333, 99.800320, 0.000000, 0.000000 +2.650000, 99.800320, 0.000000, 0.000000 +2.666667, 99.800320, 0.000000, 0.000000 +2.683333, 99.800320, 0.000000, 0.000000 +2.700000, 99.800320, 0.000000, 0.000000 +2.716667, 99.800320, 0.000000, 0.000000 +2.733333, 99.800320, 0.000000, 0.000000 +2.750000, 99.800320, 0.000000, 0.000000 +2.766667, 99.800320, 0.000000, 0.000000 +2.783333, 99.800320, 0.000000, 0.000000 +2.800000, 99.800320, 0.000000, 0.000000 +2.816667, 99.800320, 0.000000, 0.000000 +2.833333, 99.800320, 0.000000, 0.000000 +2.850000, 99.800320, 0.000000, 0.000000 +2.866667, 99.800320, 0.000000, 0.000000 +2.883333, 99.800320, 0.000000, 0.000000 +2.900000, 99.800320, 0.000000, 0.000000 +2.916667, 99.800320, 0.000000, 0.000000 +2.933333, 99.800320, 0.000000, 0.000000 +2.950000, 99.800320, 0.000000, 0.000000 +2.966667, 99.800320, 0.000000, 0.000000 +2.983333, 99.800320, 0.000000, 0.000000 +3.000000, 99.800320, 0.000000, 0.000000 +3.016667, 99.800320, 0.000000, 0.000000 +3.033333, 99.800320, 0.000000, 0.000000 +3.050000, 99.800320, 0.000000, 0.000000 +3.066667, 99.800320, 0.000000, 0.000000 +3.083333, 99.800320, 0.000000, 0.000000 +3.100000, 99.800320, 0.000000, 0.000000 +3.116667, 99.800320, 0.000000, 0.000000 +3.133333, 99.800320, 0.000000, 0.000000 +3.150000, 99.800320, 0.000000, 0.000000 +3.166667, 99.800320, 0.000000, 0.000000 +3.183333, 99.800320, 0.000000, 0.000000 +3.200000, 99.800320, 0.000000, 0.000000 +3.216667, 99.800320, 0.000000, 0.000000 +3.233333, 99.800320, 0.000000, 0.000000 +3.250000, 99.800320, 0.000000, 0.000000 +3.266667, 99.800320, 0.000000, 0.000000 +3.283333, 99.800320, 0.000000, 0.000000 +3.300000, 99.800320, 0.000000, 0.000000 +3.316667, 99.800320, 0.000000, 0.000000 +3.333333, 99.800320, 0.000000, 0.000000 +3.350000, 99.800320, 0.000000, 0.000000 +3.366667, 99.800320, 0.000000, 0.000000 +3.383333, 99.800320, 0.000000, 0.000000 +3.400000, 99.800320, 0.000000, 0.000000 +3.416667, 99.800320, 0.000000, 0.000000 +3.433333, 99.800320, 0.000000, 0.000000 +3.450000, 99.800320, 0.000000, 0.000000 +3.466667, 99.800320, 0.000000, 0.000000 +3.483333, 99.800320, 0.000000, 0.000000 +3.500000, 99.800320, 0.000000, 0.000000 +3.516667, 99.800320, 0.000000, 0.000000 +3.533333, 99.800320, 0.000000, 0.000000 +3.550000, 99.800320, 0.000000, 0.000000 +3.566667, 99.800320, 0.000000, 0.000000 +3.583333, 99.800320, 0.000000, 0.000000 +3.600000, 99.800320, 0.000000, 0.000000 +3.616667, 99.800320, 0.000000, 0.000000 +3.633333, 99.800320, 0.000000, 0.000000 +3.650000, 99.800320, 0.000000, 0.000000 +3.666667, 99.800320, 0.000000, 0.000000 +3.683333, 99.800320, 0.000000, 0.000000 +3.700000, 99.800320, 0.000000, 0.000000 +3.716667, 99.800320, 0.000000, 0.000000 +3.733333, 99.800320, 0.000000, 0.000000 +3.750000, 99.800320, 0.000000, 0.000000 +3.766667, 99.800320, 0.000000, 0.000000 +3.783333, 99.800320, 0.000000, 0.000000 +3.800000, 99.800320, 0.000000, 0.000000 +3.816667, 99.800320, 0.000000, 0.000000 +3.833333, 99.800320, 0.000000, 0.000000 +3.850000, 99.800320, 0.000000, 0.000000 +3.866667, 99.800320, 0.000000, 0.000000 +3.883333, 99.800320, 0.000000, 0.000000 +3.900000, 99.800320, 0.000000, 0.000000 +3.916667, 99.800320, 0.000000, 0.000000 +3.933333, 99.800320, 0.000000, 0.000000 +3.950000, 99.800320, 0.000000, 0.000000 +3.966667, 99.800320, 0.000000, 0.000000 +3.983333, 99.800320, 0.000000, 0.000000 +4.000000, 99.800320, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_150kW_md_200kWh.csv b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_150kW_md_200kWh.csv new file mode 100644 index 0000000..3c4b31a --- /dev/null +++ b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_150kW_md_200kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.866003, 103.920381, 105.181932 +1.016667, 2.139727, 152.846895, 154.912523 +1.033333, 3.469308, 159.549727, 161.736082 +1.050000, 4.848746, 165.532512, 167.828785 +1.066667, 6.245976, 167.667564, 170.003556 +1.083333, 7.657647, 169.400581, 171.769004 +1.100000, 9.083898, 171.150130, 173.551466 +1.116667, 10.524150, 172.830173, 175.263280 +1.133333, 11.970423, 173.552849, 175.999672 +1.150000, 13.420476, 174.006292, 176.461736 +1.166667, 14.874312, 174.460353, 176.924441 +1.183333, 16.331942, 174.915586, 177.388353 +1.200000, 17.793375, 175.371996, 177.853476 +1.216667, 19.258622, 175.829585, 178.319813 +1.233333, 20.727692, 176.288356, 178.787366 +1.250000, 22.200594, 176.748313, 179.256139 +1.266667, 23.677340, 177.209457, 179.726135 +1.283333, 25.157938, 177.671793, 180.197358 +1.300000, 26.642399, 178.135323, 180.669809 +1.316667, 28.130733, 178.600050, 181.143494 +1.333333, 29.622949, 179.065977, 181.618414 +1.350000, 31.119058, 179.533108, 182.094573 +1.366667, 32.619070, 180.001445, 182.571974 +1.383333, 34.122995, 180.470991, 183.050621 +1.400000, 35.630843, 180.941750, 183.530516 +1.416667, 37.142624, 181.413724, 184.011663 +1.433333, 38.658349, 181.886917, 184.494065 +1.450000, 40.178026, 182.361331, 184.977725 +1.466667, 41.701668, 182.836970, 185.462646 +1.483333, 43.229283, 183.313837, 185.948833 +1.500000, 44.760882, 183.791935, 186.436287 +1.516667, 46.296476, 184.271267, 186.925013 +1.533333, 47.836075, 184.751836, 187.415014 +1.550000, 49.379689, 185.233646, 187.906292 +1.566667, 50.927328, 185.716699, 188.398851 +1.583333, 52.479003, 186.200998, 188.892695 +1.600000, 54.034724, 186.686547, 189.387827 +1.616667, 55.594502, 187.173349, 189.884250 +1.633333, 57.158347, 187.661407, 190.381967 +1.650000, 58.726270, 188.150724, 190.880982 +1.666667, 60.298281, 188.641304, 191.381298 +1.683333, 61.874390, 189.133149, 191.882919 +1.700000, 63.454609, 189.626263, 192.385848 +1.716667, 65.038948, 190.120649, 192.890087 +1.733333, 66.627417, 190.616310, 193.395642 +1.750000, 68.220027, 191.113249, 193.902514 +1.766667, 69.816790, 191.611470, 194.410708 +1.783333, 71.417715, 192.110976, 194.920227 +1.800000, 73.022813, 192.611770, 195.431074 +1.816667, 74.632095, 193.113856, 195.943252 +1.833333, 76.245572, 193.617235, 196.456766 +1.850000, 77.863254, 194.121913, 196.971618 +1.866667, 79.485153, 194.627892, 197.487812 +1.883333, 81.111280, 195.135175, 198.005351 +1.900000, 82.741645, 195.643766, 198.524240 +1.916667, 84.376258, 196.153668, 199.044481 +1.933333, 86.015133, 196.664884, 199.566077 +1.950000, 87.658278, 197.177418, 200.089033 +1.966667, 89.305705, 197.691273, 200.613352 +1.983333, 90.957425, 198.206452, 201.139038 +2.000000, 92.478932, 182.580798, 185.201474 +2.016667, 93.763372, 154.132779, 156.221370 +2.033333, 94.845157, 129.814228, 131.484449 +2.050000, 95.756147, 109.318797, 110.662425 +2.066667, 96.523233, 92.050309, 93.137164 +2.083333, 97.169094, 77.503324, 78.386894 +2.100000, 97.712851, 65.250789, 65.972352 +2.116667, 98.170618, 54.932116, 55.523765 +2.133333, 98.555977, 46.242999, 46.729869 +2.150000, 98.880366, 38.926747, 39.328660 +2.166667, 99.153424, 32.766909, 33.099610 +2.183333, 99.383266, 27.581028, 27.857098 +2.200000, 99.576727, 23.215337, 23.444894 +2.216667, 99.739562, 19.540280, 19.731503 +2.233333, 99.800594, 7.323743, 7.392932 +2.250000, 99.800644, 0.006048, 0.006104 +2.266667, 99.800644, 0.000000, 0.000000 +2.283333, 99.800644, 0.000000, 0.000000 +2.300000, 99.800644, 0.000000, 0.000000 +2.316667, 99.800644, 0.000000, 0.000000 +2.333333, 99.800644, 0.000000, 0.000000 +2.350000, 99.800644, 0.000000, 0.000000 +2.366667, 99.800644, 0.000000, 0.000000 +2.383333, 99.800644, 0.000000, 0.000000 +2.400000, 99.800644, 0.000000, 0.000000 +2.416667, 99.800644, 0.000000, 0.000000 +2.433333, 99.800644, 0.000000, 0.000000 +2.450000, 99.800644, 0.000000, 0.000000 +2.466667, 99.800644, 0.000000, 0.000000 +2.483333, 99.800644, 0.000000, 0.000000 +2.500000, 99.800644, 0.000000, 0.000000 +2.516667, 99.800644, 0.000000, 0.000000 +2.533333, 99.800644, 0.000000, 0.000000 +2.550000, 99.800644, 0.000000, 0.000000 +2.566667, 99.800644, 0.000000, 0.000000 +2.583333, 99.800644, 0.000000, 0.000000 +2.600000, 99.800644, 0.000000, 0.000000 +2.616667, 99.800644, 0.000000, 0.000000 +2.633333, 99.800644, 0.000000, 0.000000 +2.650000, 99.800644, 0.000000, 0.000000 +2.666667, 99.800644, 0.000000, 0.000000 +2.683333, 99.800644, 0.000000, 0.000000 +2.700000, 99.800644, 0.000000, 0.000000 +2.716667, 99.800644, 0.000000, 0.000000 +2.733333, 99.800644, 0.000000, 0.000000 +2.750000, 99.800644, 0.000000, 0.000000 +2.766667, 99.800644, 0.000000, 0.000000 +2.783333, 99.800644, 0.000000, 0.000000 +2.800000, 99.800644, 0.000000, 0.000000 +2.816667, 99.800644, 0.000000, 0.000000 +2.833333, 99.800644, 0.000000, 0.000000 +2.850000, 99.800644, 0.000000, 0.000000 +2.866667, 99.800644, 0.000000, 0.000000 +2.883333, 99.800644, 0.000000, 0.000000 +2.900000, 99.800644, 0.000000, 0.000000 +2.916667, 99.800644, 0.000000, 0.000000 +2.933333, 99.800644, 0.000000, 0.000000 +2.950000, 99.800644, 0.000000, 0.000000 +2.966667, 99.800644, 0.000000, 0.000000 +2.983333, 99.800644, 0.000000, 0.000000 +3.000000, 99.800644, 0.000000, 0.000000 +3.016667, 99.800644, 0.000000, 0.000000 +3.033333, 99.800644, 0.000000, 0.000000 +3.050000, 99.800644, 0.000000, 0.000000 +3.066667, 99.800644, 0.000000, 0.000000 +3.083333, 99.800644, 0.000000, 0.000000 +3.100000, 99.800644, 0.000000, 0.000000 +3.116667, 99.800644, 0.000000, 0.000000 +3.133333, 99.800644, 0.000000, 0.000000 +3.150000, 99.800644, 0.000000, 0.000000 +3.166667, 99.800644, 0.000000, 0.000000 +3.183333, 99.800644, 0.000000, 0.000000 +3.200000, 99.800644, 0.000000, 0.000000 +3.216667, 99.800644, 0.000000, 0.000000 +3.233333, 99.800644, 0.000000, 0.000000 +3.250000, 99.800644, 0.000000, 0.000000 +3.266667, 99.800644, 0.000000, 0.000000 +3.283333, 99.800644, 0.000000, 0.000000 +3.300000, 99.800644, 0.000000, 0.000000 +3.316667, 99.800644, 0.000000, 0.000000 +3.333333, 99.800644, 0.000000, 0.000000 +3.350000, 99.800644, 0.000000, 0.000000 +3.366667, 99.800644, 0.000000, 0.000000 +3.383333, 99.800644, 0.000000, 0.000000 +3.400000, 99.800644, 0.000000, 0.000000 +3.416667, 99.800644, 0.000000, 0.000000 +3.433333, 99.800644, 0.000000, 0.000000 +3.450000, 99.800644, 0.000000, 0.000000 +3.466667, 99.800644, 0.000000, 0.000000 +3.483333, 99.800644, 0.000000, 0.000000 +3.500000, 99.800644, 0.000000, 0.000000 +3.516667, 99.800644, 0.000000, 0.000000 +3.533333, 99.800644, 0.000000, 0.000000 +3.550000, 99.800644, 0.000000, 0.000000 +3.566667, 99.800644, 0.000000, 0.000000 +3.583333, 99.800644, 0.000000, 0.000000 +3.600000, 99.800644, 0.000000, 0.000000 +3.616667, 99.800644, 0.000000, 0.000000 +3.633333, 99.800644, 0.000000, 0.000000 +3.650000, 99.800644, 0.000000, 0.000000 +3.666667, 99.800644, 0.000000, 0.000000 +3.683333, 99.800644, 0.000000, 0.000000 +3.700000, 99.800644, 0.000000, 0.000000 +3.716667, 99.800644, 0.000000, 0.000000 +3.733333, 99.800644, 0.000000, 0.000000 +3.750000, 99.800644, 0.000000, 0.000000 +3.766667, 99.800644, 0.000000, 0.000000 +3.783333, 99.800644, 0.000000, 0.000000 +3.800000, 99.800644, 0.000000, 0.000000 +3.816667, 99.800644, 0.000000, 0.000000 +3.833333, 99.800644, 0.000000, 0.000000 +3.850000, 99.800644, 0.000000, 0.000000 +3.866667, 99.800644, 0.000000, 0.000000 +3.883333, 99.800644, 0.000000, 0.000000 +3.900000, 99.800644, 0.000000, 0.000000 +3.916667, 99.800644, 0.000000, 0.000000 +3.933333, 99.800644, 0.000000, 0.000000 +3.950000, 99.800644, 0.000000, 0.000000 +3.966667, 99.800644, 0.000000, 0.000000 +3.983333, 99.800644, 0.000000, 0.000000 +4.000000, 99.800644, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_180kW_hd_300kWh.csv b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_180kW_hd_300kWh.csv new file mode 100644 index 0000000..ecb9e82 --- /dev/null +++ b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_180kW_hd_300kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 1.183050, 212.948946, 215.761571 +1.016667, 3.119157, 348.499283, 353.992978 +1.033333, 5.162303, 367.766380, 373.698180 +1.050000, 7.247320, 375.302978, 381.410034 +1.066667, 9.367078, 381.556506, 387.810642 +1.083333, 11.515390, 386.696066, 393.072210 +1.100000, 13.673349, 388.432585, 394.850182 +1.116667, 15.839736, 389.949702, 396.403611 +1.133333, 18.014581, 391.472067, 397.962502 +1.150000, 20.197916, 393.000288, 399.527480 +1.166667, 22.389773, 394.534386, 401.098566 +1.183333, 24.590187, 396.074383, 402.675785 +1.200000, 26.799188, 397.620301, 404.259161 +1.216667, 29.016811, 399.172163, 405.848716 +1.233333, 31.243089, 400.729989, 407.444475 +1.250000, 33.478055, 402.293803, 409.046461 +1.266667, 35.721741, 403.863626, 410.654699 +1.283333, 37.974183, 405.439481, 412.269212 +1.300000, 40.235413, 407.021391, 413.890025 +1.316667, 42.505465, 408.609378, 415.517161 +1.333333, 44.784373, 410.203465, 417.150646 +1.350000, 47.072171, 411.803674, 418.790503 +1.366667, 49.368894, 413.410028, 420.436756 +1.383333, 51.674575, 415.022549, 422.089431 +1.400000, 53.989248, 416.641262, 423.748553 +1.416667, 56.312949, 418.266188, 425.414145 +1.433333, 58.645712, 419.897351, 427.086233 +1.450000, 60.987572, 421.534774, 428.764841 +1.466667, 63.338564, 423.178480, 430.449995 +1.483333, 65.698722, 424.828493, 432.141720 +1.500000, 68.068082, 426.484836, 433.840041 +1.516667, 70.446680, 428.147532, 435.544983 +1.533333, 72.834550, 429.816605, 437.256572 +1.550000, 75.231728, 431.492078, 438.974832 +1.566667, 77.638250, 433.173976, 440.699791 +1.583333, 80.054152, 434.862322, 442.431473 +1.600000, 82.479469, 436.557139, 444.169904 +1.616667, 84.914238, 438.258453, 445.915110 +1.633333, 87.322485, 433.484383, 441.018157 +1.650000, 89.362723, 367.242836, 373.162543 +1.666667, 91.007880, 296.128231, 300.503026 +1.683333, 92.329566, 237.903513, 241.157218 +1.700000, 93.397622, 192.250065, 194.714701 +1.716667, 94.315656, 165.246180, 167.281124 +1.733333, 95.119491, 144.690332, 146.416579 +1.750000, 95.823580, 126.736001, 128.205596 +1.766667, 96.440270, 111.004113, 112.258751 +1.783333, 96.980385, 97.220765, 98.294676 +1.800000, 97.453416, 85.145615, 86.067027 +1.816667, 97.867682, 74.567730, 75.360020 +1.833333, 98.230471, 65.302045, 65.984654 +1.850000, 98.548172, 57.186230, 57.775393 +1.866667, 98.826383, 50.077929, 50.587259 +1.883333, 99.070007, 43.852333, 44.293284 +1.900000, 99.283340, 38.400030, 38.782277 +1.916667, 99.470146, 33.625121, 33.956865 +1.933333, 99.633722, 29.443567, 29.731777 +1.950000, 99.776954, 25.781725, 26.032344 +1.966667, 99.801075, 4.341837, 4.382322 +1.983333, 99.801094, 0.003458, 0.003490 +2.000000, 99.801094, 0.000000, 0.000000 +2.016667, 99.801094, 0.000000, 0.000000 +2.033333, 99.801094, 0.000000, 0.000000 +2.050000, 99.801094, 0.000000, 0.000000 +2.066667, 99.801094, 0.000000, 0.000000 +2.083333, 99.801094, 0.000000, 0.000000 +2.100000, 99.801094, 0.000000, 0.000000 +2.116667, 99.801094, 0.000000, 0.000000 +2.133333, 99.801094, 0.000000, 0.000000 +2.150000, 99.801094, 0.000000, 0.000000 +2.166667, 99.801094, 0.000000, 0.000000 +2.183333, 99.801094, 0.000000, 0.000000 +2.200000, 99.801094, 0.000000, 0.000000 +2.216667, 99.801094, 0.000000, 0.000000 +2.233333, 99.801094, 0.000000, 0.000000 +2.250000, 99.801094, 0.000000, 0.000000 +2.266667, 99.801094, 0.000000, 0.000000 +2.283333, 99.801094, 0.000000, 0.000000 +2.300000, 99.801094, 0.000000, 0.000000 +2.316667, 99.801094, 0.000000, 0.000000 +2.333333, 99.801094, 0.000000, 0.000000 +2.350000, 99.801094, 0.000000, 0.000000 +2.366667, 99.801094, 0.000000, 0.000000 +2.383333, 99.801094, 0.000000, 0.000000 +2.400000, 99.801094, 0.000000, 0.000000 +2.416667, 99.801094, 0.000000, 0.000000 +2.433333, 99.801094, 0.000000, 0.000000 +2.450000, 99.801094, 0.000000, 0.000000 +2.466667, 99.801094, 0.000000, 0.000000 +2.483333, 99.801094, 0.000000, 0.000000 +2.500000, 99.801094, 0.000000, 0.000000 +2.516667, 99.801094, 0.000000, 0.000000 +2.533333, 99.801094, 0.000000, 0.000000 +2.550000, 99.801094, 0.000000, 0.000000 +2.566667, 99.801094, 0.000000, 0.000000 +2.583333, 99.801094, 0.000000, 0.000000 +2.600000, 99.801094, 0.000000, 0.000000 +2.616667, 99.801094, 0.000000, 0.000000 +2.633333, 99.801094, 0.000000, 0.000000 +2.650000, 99.801094, 0.000000, 0.000000 +2.666667, 99.801094, 0.000000, 0.000000 +2.683333, 99.801094, 0.000000, 0.000000 +2.700000, 99.801094, 0.000000, 0.000000 +2.716667, 99.801094, 0.000000, 0.000000 +2.733333, 99.801094, 0.000000, 0.000000 +2.750000, 99.801094, 0.000000, 0.000000 +2.766667, 99.801094, 0.000000, 0.000000 +2.783333, 99.801094, 0.000000, 0.000000 +2.800000, 99.801094, 0.000000, 0.000000 +2.816667, 99.801094, 0.000000, 0.000000 +2.833333, 99.801094, 0.000000, 0.000000 +2.850000, 99.801094, 0.000000, 0.000000 +2.866667, 99.801094, 0.000000, 0.000000 +2.883333, 99.801094, 0.000000, 0.000000 +2.900000, 99.801094, 0.000000, 0.000000 +2.916667, 99.801094, 0.000000, 0.000000 +2.933333, 99.801094, 0.000000, 0.000000 +2.950000, 99.801094, 0.000000, 0.000000 +2.966667, 99.801094, 0.000000, 0.000000 +2.983333, 99.801094, 0.000000, 0.000000 +3.000000, 99.801094, 0.000000, 0.000000 +3.016667, 99.801094, 0.000000, 0.000000 +3.033333, 99.801094, 0.000000, 0.000000 +3.050000, 99.801094, 0.000000, 0.000000 +3.066667, 99.801094, 0.000000, 0.000000 +3.083333, 99.801094, 0.000000, 0.000000 +3.100000, 99.801094, 0.000000, 0.000000 +3.116667, 99.801094, 0.000000, 0.000000 +3.133333, 99.801094, 0.000000, 0.000000 +3.150000, 99.801094, 0.000000, 0.000000 +3.166667, 99.801094, 0.000000, 0.000000 +3.183333, 99.801094, 0.000000, 0.000000 +3.200000, 99.801094, 0.000000, 0.000000 +3.216667, 99.801094, 0.000000, 0.000000 +3.233333, 99.801094, 0.000000, 0.000000 +3.250000, 99.801094, 0.000000, 0.000000 +3.266667, 99.801094, 0.000000, 0.000000 +3.283333, 99.801094, 0.000000, 0.000000 +3.300000, 99.801094, 0.000000, 0.000000 +3.316667, 99.801094, 0.000000, 0.000000 +3.333333, 99.801094, 0.000000, 0.000000 +3.350000, 99.801094, 0.000000, 0.000000 +3.366667, 99.801094, 0.000000, 0.000000 +3.383333, 99.801094, 0.000000, 0.000000 +3.400000, 99.801094, 0.000000, 0.000000 +3.416667, 99.801094, 0.000000, 0.000000 +3.433333, 99.801094, 0.000000, 0.000000 +3.450000, 99.801094, 0.000000, 0.000000 +3.466667, 99.801094, 0.000000, 0.000000 +3.483333, 99.801094, 0.000000, 0.000000 +3.500000, 99.801094, 0.000000, 0.000000 +3.516667, 99.801094, 0.000000, 0.000000 +3.533333, 99.801094, 0.000000, 0.000000 +3.550000, 99.801094, 0.000000, 0.000000 +3.566667, 99.801094, 0.000000, 0.000000 +3.583333, 99.801094, 0.000000, 0.000000 +3.600000, 99.801094, 0.000000, 0.000000 +3.616667, 99.801094, 0.000000, 0.000000 +3.633333, 99.801094, 0.000000, 0.000000 +3.650000, 99.801094, 0.000000, 0.000000 +3.666667, 99.801094, 0.000000, 0.000000 +3.683333, 99.801094, 0.000000, 0.000000 +3.700000, 99.801094, 0.000000, 0.000000 +3.716667, 99.801094, 0.000000, 0.000000 +3.733333, 99.801094, 0.000000, 0.000000 +3.750000, 99.801094, 0.000000, 0.000000 +3.766667, 99.801094, 0.000000, 0.000000 +3.783333, 99.801094, 0.000000, 0.000000 +3.800000, 99.801094, 0.000000, 0.000000 +3.816667, 99.801094, 0.000000, 0.000000 +3.833333, 99.801094, 0.000000, 0.000000 +3.850000, 99.801094, 0.000000, 0.000000 +3.866667, 99.801094, 0.000000, 0.000000 +3.883333, 99.801094, 0.000000, 0.000000 +3.900000, 99.801094, 0.000000, 0.000000 +3.916667, 99.801094, 0.000000, 0.000000 +3.933333, 99.801094, 0.000000, 0.000000 +3.950000, 99.801094, 0.000000, 0.000000 +3.966667, 99.801094, 0.000000, 0.000000 +3.983333, 99.801094, 0.000000, 0.000000 +4.000000, 99.801094, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_180kW_hd_400kWh.csv b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_180kW_hd_400kWh.csv new file mode 100644 index 0000000..50ac6ee --- /dev/null +++ b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_180kW_hd_400kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.889003, 213.360719, 215.967337 +1.016667, 2.326093, 344.901554, 349.753390 +1.033333, 3.834015, 361.901393, 367.079273 +1.050000, 5.393620, 374.305165, 379.726145 +1.066667, 6.971913, 378.790375, 384.300342 +1.083333, 8.568537, 383.189562, 388.787368 +1.100000, 10.183610, 387.617518, 393.304297 +1.116667, 11.808941, 390.079624, 395.816118 +1.133333, 13.439055, 391.227377, 396.987106 +1.150000, 15.073950, 392.374664, 398.157656 +1.166667, 16.713638, 393.525279, 399.331639 +1.183333, 18.358135, 394.679230, 400.509064 +1.200000, 20.007454, 395.836528, 401.689942 +1.216667, 21.661609, 396.997181, 402.874282 +1.233333, 23.320614, 398.161199, 404.062096 +1.250000, 24.984483, 399.328593, 405.253391 +1.266667, 26.653231, 400.499370, 406.448180 +1.283333, 28.326870, 401.673541, 407.646471 +1.300000, 30.005417, 402.851116, 408.848276 +1.316667, 31.688884, 404.032104, 410.053603 +1.333333, 33.377286, 405.216514, 411.262464 +1.350000, 35.070637, 406.404357, 412.474869 +1.366667, 36.768953, 407.595642, 413.690828 +1.383333, 38.472246, 408.790379, 414.910351 +1.400000, 40.180532, 409.988578, 416.133449 +1.416667, 41.893824, 411.190248, 417.360131 +1.433333, 43.612138, 412.395400, 418.590409 +1.450000, 45.335489, 413.604042, 419.824292 +1.466667, 47.063889, 414.816186, 421.061792 +1.483333, 48.797355, 416.031841, 422.302919 +1.500000, 50.535901, 417.251016, 423.547682 +1.516667, 52.279542, 418.473722, 424.796093 +1.533333, 54.028292, 419.699969, 426.048163 +1.550000, 55.782166, 420.929766, 427.303901 +1.566667, 57.541179, 422.163125, 428.563319 +1.583333, 59.305346, 423.400054, 429.826427 +1.600000, 61.074681, 424.640564, 431.093236 +1.616667, 62.849201, 425.884665, 432.363756 +1.633333, 64.628919, 427.132367, 433.637998 +1.650000, 66.413851, 428.383681, 434.915974 +1.666667, 68.204012, 429.638616, 436.197693 +1.683333, 69.999417, 430.897183, 437.483167 +1.700000, 71.800081, 432.159392, 438.772407 +1.716667, 73.606019, 433.425253, 440.065423 +1.733333, 75.417248, 434.694777, 441.362227 +1.750000, 77.233781, 435.967974, 442.662828 +1.766667, 79.055634, 437.244854, 443.967239 +1.783333, 80.882824, 438.525427, 445.275471 +1.800000, 82.715364, 439.809705, 446.587534 +1.816667, 84.553271, 441.097697, 447.903439 +1.833333, 86.396560, 442.389414, 449.223198 +1.850000, 88.245247, 443.684867, 450.546821 +1.866667, 90.094423, 443.802077, 450.666583 +1.883333, 91.753716, 398.230483, 404.132796 +1.900000, 93.155297, 336.379271, 341.070758 +1.916667, 94.335030, 283.136003, 286.872486 +1.933333, 95.327980, 238.307909, 241.302686 +1.950000, 96.163706, 200.574441, 202.988918 +1.966667, 96.867097, 168.813746, 170.770867 +1.983333, 97.459101, 142.081011, 143.675146 +2.000000, 97.957354, 119.580681, 120.884827 +2.016667, 98.376700, 100.642948, 101.713998 +2.033333, 98.729633, 84.703917, 85.586546 +2.050000, 99.026670, 71.288887, 72.018426 +2.066667, 99.276663, 59.998265, 60.602844 +2.083333, 99.487061, 50.495690, 50.997849 +2.100000, 99.664136, 42.498041, 42.915946 +2.116667, 99.800205, 32.656408, 32.973075 +2.133333, 99.800318, 0.027249, 0.027501 +2.150000, 99.800318, 0.000000, 0.000000 +2.166667, 99.800318, 0.000000, 0.000000 +2.183333, 99.800318, 0.000000, 0.000000 +2.200000, 99.800318, 0.000000, 0.000000 +2.216667, 99.800318, 0.000000, 0.000000 +2.233333, 99.800318, 0.000000, 0.000000 +2.250000, 99.800318, 0.000000, 0.000000 +2.266667, 99.800318, 0.000000, 0.000000 +2.283333, 99.800318, 0.000000, 0.000000 +2.300000, 99.800318, 0.000000, 0.000000 +2.316667, 99.800318, 0.000000, 0.000000 +2.333333, 99.800318, 0.000000, 0.000000 +2.350000, 99.800318, 0.000000, 0.000000 +2.366667, 99.800318, 0.000000, 0.000000 +2.383333, 99.800318, 0.000000, 0.000000 +2.400000, 99.800318, 0.000000, 0.000000 +2.416667, 99.800318, 0.000000, 0.000000 +2.433333, 99.800318, 0.000000, 0.000000 +2.450000, 99.800318, 0.000000, 0.000000 +2.466667, 99.800318, 0.000000, 0.000000 +2.483333, 99.800318, 0.000000, 0.000000 +2.500000, 99.800318, 0.000000, 0.000000 +2.516667, 99.800318, 0.000000, 0.000000 +2.533333, 99.800318, 0.000000, 0.000000 +2.550000, 99.800318, 0.000000, 0.000000 +2.566667, 99.800318, 0.000000, 0.000000 +2.583333, 99.800318, 0.000000, 0.000000 +2.600000, 99.800318, 0.000000, 0.000000 +2.616667, 99.800318, 0.000000, 0.000000 +2.633333, 99.800318, 0.000000, 0.000000 +2.650000, 99.800318, 0.000000, 0.000000 +2.666667, 99.800318, 0.000000, 0.000000 +2.683333, 99.800318, 0.000000, 0.000000 +2.700000, 99.800318, 0.000000, 0.000000 +2.716667, 99.800318, 0.000000, 0.000000 +2.733333, 99.800318, 0.000000, 0.000000 +2.750000, 99.800318, 0.000000, 0.000000 +2.766667, 99.800318, 0.000000, 0.000000 +2.783333, 99.800318, 0.000000, 0.000000 +2.800000, 99.800318, 0.000000, 0.000000 +2.816667, 99.800318, 0.000000, 0.000000 +2.833333, 99.800318, 0.000000, 0.000000 +2.850000, 99.800318, 0.000000, 0.000000 +2.866667, 99.800318, 0.000000, 0.000000 +2.883333, 99.800318, 0.000000, 0.000000 +2.900000, 99.800318, 0.000000, 0.000000 +2.916667, 99.800318, 0.000000, 0.000000 +2.933333, 99.800318, 0.000000, 0.000000 +2.950000, 99.800318, 0.000000, 0.000000 +2.966667, 99.800318, 0.000000, 0.000000 +2.983333, 99.800318, 0.000000, 0.000000 +3.000000, 99.800318, 0.000000, 0.000000 +3.016667, 99.800318, 0.000000, 0.000000 +3.033333, 99.800318, 0.000000, 0.000000 +3.050000, 99.800318, 0.000000, 0.000000 +3.066667, 99.800318, 0.000000, 0.000000 +3.083333, 99.800318, 0.000000, 0.000000 +3.100000, 99.800318, 0.000000, 0.000000 +3.116667, 99.800318, 0.000000, 0.000000 +3.133333, 99.800318, 0.000000, 0.000000 +3.150000, 99.800318, 0.000000, 0.000000 +3.166667, 99.800318, 0.000000, 0.000000 +3.183333, 99.800318, 0.000000, 0.000000 +3.200000, 99.800318, 0.000000, 0.000000 +3.216667, 99.800318, 0.000000, 0.000000 +3.233333, 99.800318, 0.000000, 0.000000 +3.250000, 99.800318, 0.000000, 0.000000 +3.266667, 99.800318, 0.000000, 0.000000 +3.283333, 99.800318, 0.000000, 0.000000 +3.300000, 99.800318, 0.000000, 0.000000 +3.316667, 99.800318, 0.000000, 0.000000 +3.333333, 99.800318, 0.000000, 0.000000 +3.350000, 99.800318, 0.000000, 0.000000 +3.366667, 99.800318, 0.000000, 0.000000 +3.383333, 99.800318, 0.000000, 0.000000 +3.400000, 99.800318, 0.000000, 0.000000 +3.416667, 99.800318, 0.000000, 0.000000 +3.433333, 99.800318, 0.000000, 0.000000 +3.450000, 99.800318, 0.000000, 0.000000 +3.466667, 99.800318, 0.000000, 0.000000 +3.483333, 99.800318, 0.000000, 0.000000 +3.500000, 99.800318, 0.000000, 0.000000 +3.516667, 99.800318, 0.000000, 0.000000 +3.533333, 99.800318, 0.000000, 0.000000 +3.550000, 99.800318, 0.000000, 0.000000 +3.566667, 99.800318, 0.000000, 0.000000 +3.583333, 99.800318, 0.000000, 0.000000 +3.600000, 99.800318, 0.000000, 0.000000 +3.616667, 99.800318, 0.000000, 0.000000 +3.633333, 99.800318, 0.000000, 0.000000 +3.650000, 99.800318, 0.000000, 0.000000 +3.666667, 99.800318, 0.000000, 0.000000 +3.683333, 99.800318, 0.000000, 0.000000 +3.700000, 99.800318, 0.000000, 0.000000 +3.716667, 99.800318, 0.000000, 0.000000 +3.733333, 99.800318, 0.000000, 0.000000 +3.750000, 99.800318, 0.000000, 0.000000 +3.766667, 99.800318, 0.000000, 0.000000 +3.783333, 99.800318, 0.000000, 0.000000 +3.800000, 99.800318, 0.000000, 0.000000 +3.816667, 99.800318, 0.000000, 0.000000 +3.833333, 99.800318, 0.000000, 0.000000 +3.850000, 99.800318, 0.000000, 0.000000 +3.866667, 99.800318, 0.000000, 0.000000 +3.883333, 99.800318, 0.000000, 0.000000 +3.900000, 99.800318, 0.000000, 0.000000 +3.916667, 99.800318, 0.000000, 0.000000 +3.933333, 99.800318, 0.000000, 0.000000 +3.950000, 99.800318, 0.000000, 0.000000 +3.966667, 99.800318, 0.000000, 0.000000 +3.983333, 99.800318, 0.000000, 0.000000 +4.000000, 99.800318, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_180kW_hd_600kWh.csv b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_180kW_hd_600kWh.csv new file mode 100644 index 0000000..9b55cc8 --- /dev/null +++ b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_180kW_hd_600kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.589304, 212.149292, 214.527667 +1.016667, 1.531384, 339.148850, 343.352786 +1.033333, 2.504318, 350.256316, 354.634319 +1.050000, 3.509194, 361.755301, 366.315955 +1.066667, 4.543572, 372.376304, 377.107876 +1.083333, 5.588998, 376.353196, 381.149313 +1.100000, 6.642542, 379.276014, 384.119758 +1.116667, 7.704257, 382.217213, 387.109047 +1.133333, 8.774204, 385.181057, 390.121516 +1.150000, 9.852448, 388.167718, 393.157343 +1.166667, 10.936723, 390.339107, 395.364584 +1.183333, 12.023193, 391.129257, 396.167802 +1.200000, 13.111795, 391.896400, 396.947644 +1.216667, 14.202531, 392.664991, 397.728969 +1.233333, 15.295406, 393.435078, 398.511826 +1.250000, 16.390424, 394.206664, 399.296218 +1.266667, 17.487590, 394.979753, 400.082149 +1.283333, 18.586908, 395.754346, 400.869621 +1.300000, 19.688381, 396.530447, 401.658637 +1.316667, 20.792015, 397.308059, 402.449201 +1.333333, 21.897813, 398.087185, 403.241314 +1.350000, 23.005779, 398.867827, 404.034982 +1.366667, 24.115918, 399.649989, 404.830205 +1.383333, 25.228233, 400.433673, 405.626988 +1.400000, 26.342730, 401.218882, 406.425333 +1.416667, 27.459413, 402.005620, 407.225244 +1.433333, 28.578285, 402.793889, 408.026724 +1.450000, 29.699350, 403.583691, 408.829774 +1.466667, 30.822614, 404.375031, 409.634400 +1.483333, 31.948081, 405.167911, 410.440603 +1.500000, 33.075754, 405.962334, 411.248387 +1.516667, 34.205638, 406.758302, 412.057755 +1.533333, 35.337738, 407.555820, 412.868709 +1.550000, 36.472057, 408.354889, 413.681254 +1.566667, 37.608600, 409.155513, 414.495392 +1.583333, 38.747371, 409.957695, 415.311126 +1.600000, 39.888375, 410.761437, 416.128459 +1.616667, 41.031616, 411.566743, 416.947395 +1.633333, 42.177098, 412.373616, 417.767936 +1.650000, 43.324826, 413.182059, 418.590086 +1.666667, 44.474804, 413.992074, 419.413847 +1.683333, 45.627037, 414.803665, 420.239224 +1.700000, 46.781528, 415.616835, 421.066219 +1.716667, 47.938282, 416.431587, 421.894834 +1.733333, 49.097304, 417.247923, 422.725075 +1.750000, 50.258598, 418.065848, 423.556942 +1.766667, 51.422169, 418.885363, 424.390441 +1.783333, 52.588020, 419.706472, 425.225573 +1.800000, 53.756157, 420.529178, 426.062342 +1.816667, 54.926583, 421.353484, 426.900751 +1.833333, 56.099304, 422.179393, 427.740804 +1.850000, 57.274323, 423.006909, 428.582504 +1.866667, 58.451645, 423.836033, 429.425853 +1.883333, 59.631275, 424.666770, 430.270855 +1.900000, 60.813217, 425.499123, 431.117514 +1.916667, 61.997476, 426.333094, 431.965832 +1.933333, 63.184055, 427.168686, 432.815812 +1.950000, 64.372961, 428.005903, 433.667459 +1.966667, 65.564196, 428.844748, 434.520775 +1.983333, 66.757766, 429.685224, 435.375763 +2.000000, 67.953675, 430.527334, 436.232426 +2.016667, 69.151928, 431.371081, 437.090769 +2.033333, 70.352530, 432.216468, 437.950794 +2.050000, 71.555484, 433.063499, 438.812504 +2.066667, 72.760795, 433.912176, 439.675903 +2.083333, 73.968469, 434.762503, 440.540994 +2.100000, 75.178509, 435.614483, 441.407780 +2.116667, 76.390921, 436.468119, 442.276265 +2.133333, 77.605708, 437.323414, 443.146451 +2.150000, 78.822876, 438.180371, 444.018343 +2.166667, 80.042428, 439.038994, 444.891943 +2.183333, 81.264371, 439.899286, 445.767256 +2.200000, 82.488708, 440.761249, 446.644283 +2.216667, 83.715443, 441.624888, 447.523029 +2.233333, 84.944583, 442.490205, 448.403496 +2.250000, 86.176131, 443.357203, 449.285689 +2.266667, 87.410091, 444.225887, 450.169610 +2.283333, 88.646470, 445.096258, 451.055264 +2.300000, 89.885271, 445.968320, 451.942652 +2.316667, 91.126499, 446.842077, 452.831779 +2.333333, 92.370159, 447.717531, 453.722648 +2.350000, 93.611132, 446.750264, 452.738350 +2.366667, 94.717395, 398.254874, 403.411800 +2.383333, 95.651028, 336.107759, 340.264443 +2.400000, 96.436486, 282.764818, 286.120924 +2.416667, 97.097306, 237.895449, 240.619489 +2.433333, 97.653297, 200.156726, 202.378320 +2.450000, 98.121109, 168.412369, 170.231921 +2.466667, 98.514743, 141.708021, 143.203911 +2.483333, 98.845970, 119.241906, 120.475785 +2.500000, 99.124693, 100.340258, 101.360964 +2.516667, 99.359240, 84.436744, 85.283230 +2.533333, 99.556615, 71.055244, 71.758774 +2.550000, 99.722714, 59.795411, 60.381224 +2.566667, 99.801100, 28.219184, 28.487404 +2.583333, 99.801165, 0.023238, 0.023453 +2.600000, 99.801165, 0.000000, 0.000000 +2.616667, 99.801165, 0.000000, 0.000000 +2.633333, 99.801165, 0.000000, 0.000000 +2.650000, 99.801165, 0.000000, 0.000000 +2.666667, 99.801165, 0.000000, 0.000000 +2.683333, 99.801165, 0.000000, 0.000000 +2.700000, 99.801165, 0.000000, 0.000000 +2.716667, 99.801165, 0.000000, 0.000000 +2.733333, 99.801165, 0.000000, 0.000000 +2.750000, 99.801165, 0.000000, 0.000000 +2.766667, 99.801165, 0.000000, 0.000000 +2.783333, 99.801165, 0.000000, 0.000000 +2.800000, 99.801165, 0.000000, 0.000000 +2.816667, 99.801165, 0.000000, 0.000000 +2.833333, 99.801165, 0.000000, 0.000000 +2.850000, 99.801165, 0.000000, 0.000000 +2.866667, 99.801165, 0.000000, 0.000000 +2.883333, 99.801165, 0.000000, 0.000000 +2.900000, 99.801165, 0.000000, 0.000000 +2.916667, 99.801165, 0.000000, 0.000000 +2.933333, 99.801165, 0.000000, 0.000000 +2.950000, 99.801165, 0.000000, 0.000000 +2.966667, 99.801165, 0.000000, 0.000000 +2.983333, 99.801165, 0.000000, 0.000000 +3.000000, 99.801165, 0.000000, 0.000000 +3.016667, 99.801165, 0.000000, 0.000000 +3.033333, 99.801165, 0.000000, 0.000000 +3.050000, 99.801165, 0.000000, 0.000000 +3.066667, 99.801165, 0.000000, 0.000000 +3.083333, 99.801165, 0.000000, 0.000000 +3.100000, 99.801165, 0.000000, 0.000000 +3.116667, 99.801165, 0.000000, 0.000000 +3.133333, 99.801165, 0.000000, 0.000000 +3.150000, 99.801165, 0.000000, 0.000000 +3.166667, 99.801165, 0.000000, 0.000000 +3.183333, 99.801165, 0.000000, 0.000000 +3.200000, 99.801165, 0.000000, 0.000000 +3.216667, 99.801165, 0.000000, 0.000000 +3.233333, 99.801165, 0.000000, 0.000000 +3.250000, 99.801165, 0.000000, 0.000000 +3.266667, 99.801165, 0.000000, 0.000000 +3.283333, 99.801165, 0.000000, 0.000000 +3.300000, 99.801165, 0.000000, 0.000000 +3.316667, 99.801165, 0.000000, 0.000000 +3.333333, 99.801165, 0.000000, 0.000000 +3.350000, 99.801165, 0.000000, 0.000000 +3.366667, 99.801165, 0.000000, 0.000000 +3.383333, 99.801165, 0.000000, 0.000000 +3.400000, 99.801165, 0.000000, 0.000000 +3.416667, 99.801165, 0.000000, 0.000000 +3.433333, 99.801165, 0.000000, 0.000000 +3.450000, 99.801165, 0.000000, 0.000000 +3.466667, 99.801165, 0.000000, 0.000000 +3.483333, 99.801165, 0.000000, 0.000000 +3.500000, 99.801165, 0.000000, 0.000000 +3.516667, 99.801165, 0.000000, 0.000000 +3.533333, 99.801165, 0.000000, 0.000000 +3.550000, 99.801165, 0.000000, 0.000000 +3.566667, 99.801165, 0.000000, 0.000000 +3.583333, 99.801165, 0.000000, 0.000000 +3.600000, 99.801165, 0.000000, 0.000000 +3.616667, 99.801165, 0.000000, 0.000000 +3.633333, 99.801165, 0.000000, 0.000000 +3.650000, 99.801165, 0.000000, 0.000000 +3.666667, 99.801165, 0.000000, 0.000000 +3.683333, 99.801165, 0.000000, 0.000000 +3.700000, 99.801165, 0.000000, 0.000000 +3.716667, 99.801165, 0.000000, 0.000000 +3.733333, 99.801165, 0.000000, 0.000000 +3.750000, 99.801165, 0.000000, 0.000000 +3.766667, 99.801165, 0.000000, 0.000000 +3.783333, 99.801165, 0.000000, 0.000000 +3.800000, 99.801165, 0.000000, 0.000000 +3.816667, 99.801165, 0.000000, 0.000000 +3.833333, 99.801165, 0.000000, 0.000000 +3.850000, 99.801165, 0.000000, 0.000000 +3.866667, 99.801165, 0.000000, 0.000000 +3.883333, 99.801165, 0.000000, 0.000000 +3.900000, 99.801165, 0.000000, 0.000000 +3.916667, 99.801165, 0.000000, 0.000000 +3.933333, 99.801165, 0.000000, 0.000000 +3.950000, 99.801165, 0.000000, 0.000000 +3.966667, 99.801165, 0.000000, 0.000000 +3.983333, 99.801165, 0.000000, 0.000000 +4.000000, 99.801165, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_180kW_ld_100kWh.csv b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_180kW_ld_100kWh.csv new file mode 100644 index 0000000..3a1a7eb --- /dev/null +++ b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_180kW_ld_100kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 2.570825, 154.249480, 157.016457 +1.016667, 6.631905, 243.664798, 249.297911 +1.033333, 10.860769, 253.731853, 259.747370 +1.050000, 15.167594, 258.409516, 264.606878 +1.066667, 19.508503, 260.454547, 266.732241 +1.083333, 23.883583, 262.504774, 268.863513 +1.100000, 28.293093, 264.570643, 271.011560 +1.116667, 32.737298, 266.652264, 273.176510 +1.133333, 37.216460, 268.749750, 275.358491 +1.150000, 41.730847, 270.863214, 277.557633 +1.166667, 46.280727, 272.992768, 279.774067 +1.183333, 50.866369, 275.138527, 282.007924 +1.200000, 55.488046, 277.300605, 284.259338 +1.216667, 60.146031, 279.479118, 286.528440 +1.233333, 64.840601, 281.674182, 288.815367 +1.250000, 69.572032, 283.885913, 291.120253 +1.266667, 74.340606, 286.114429, 293.443235 +1.283333, 78.757574, 265.018082, 271.476866 +1.300000, 82.371289, 216.822858, 221.495859 +1.316667, 85.307125, 176.150185, 179.531796 +1.333333, 87.690608, 143.009000, 145.482280 +1.350000, 89.624763, 116.049296, 117.877908 +1.366667, 91.193713, 94.136985, 95.503336 +1.383333, 92.466035, 76.339300, 77.370615 +1.400000, 93.507162, 62.467665, 63.262827 +1.416667, 94.409848, 54.161155, 54.825332 +1.433333, 95.200748, 47.453977, 48.018070 +1.450000, 95.893713, 41.577882, 42.058455 +1.466667, 96.500827, 36.426848, 36.837398 +1.483333, 97.032694, 31.912003, 32.263625 +1.500000, 97.498614, 27.955232, 28.257088 +1.516667, 97.906746, 24.487905, 24.747589 +1.533333, 98.264242, 21.449748, 21.673585 +1.550000, 98.577372, 18.787847, 18.981123 +1.566667, 98.851635, 16.455764, 16.622915 +1.583333, 99.091848, 14.412757, 14.557518 +1.600000, 99.302232, 12.623084, 12.748615 +1.616667, 99.486489, 11.055405, 11.164383 +1.633333, 99.647860, 9.682237, 9.776941 +1.650000, 99.789185, 8.479490, 8.561863 +1.666667, 99.800561, 0.682607, 0.688943 +1.683333, 99.800570, 0.000541, 0.000546 +1.700000, 99.800570, 0.000000, 0.000000 +1.716667, 99.800570, 0.000000, 0.000000 +1.733333, 99.800570, 0.000000, 0.000000 +1.750000, 99.800570, 0.000000, 0.000000 +1.766667, 99.800570, 0.000000, 0.000000 +1.783333, 99.800570, 0.000000, 0.000000 +1.800000, 99.800570, 0.000000, 0.000000 +1.816667, 99.800570, 0.000000, 0.000000 +1.833333, 99.800570, 0.000000, 0.000000 +1.850000, 99.800570, 0.000000, 0.000000 +1.866667, 99.800570, 0.000000, 0.000000 +1.883333, 99.800570, 0.000000, 0.000000 +1.900000, 99.800570, 0.000000, 0.000000 +1.916667, 99.800570, 0.000000, 0.000000 +1.933333, 99.800570, 0.000000, 0.000000 +1.950000, 99.800570, 0.000000, 0.000000 +1.966667, 99.800570, 0.000000, 0.000000 +1.983333, 99.800570, 0.000000, 0.000000 +2.000000, 99.800570, 0.000000, 0.000000 +2.016667, 99.800570, 0.000000, 0.000000 +2.033333, 99.800570, 0.000000, 0.000000 +2.050000, 99.800570, 0.000000, 0.000000 +2.066667, 99.800570, 0.000000, 0.000000 +2.083333, 99.800570, 0.000000, 0.000000 +2.100000, 99.800570, 0.000000, 0.000000 +2.116667, 99.800570, 0.000000, 0.000000 +2.133333, 99.800570, 0.000000, 0.000000 +2.150000, 99.800570, 0.000000, 0.000000 +2.166667, 99.800570, 0.000000, 0.000000 +2.183333, 99.800570, 0.000000, 0.000000 +2.200000, 99.800570, 0.000000, 0.000000 +2.216667, 99.800570, 0.000000, 0.000000 +2.233333, 99.800570, 0.000000, 0.000000 +2.250000, 99.800570, 0.000000, 0.000000 +2.266667, 99.800570, 0.000000, 0.000000 +2.283333, 99.800570, 0.000000, 0.000000 +2.300000, 99.800570, 0.000000, 0.000000 +2.316667, 99.800570, 0.000000, 0.000000 +2.333333, 99.800570, 0.000000, 0.000000 +2.350000, 99.800570, 0.000000, 0.000000 +2.366667, 99.800570, 0.000000, 0.000000 +2.383333, 99.800570, 0.000000, 0.000000 +2.400000, 99.800570, 0.000000, 0.000000 +2.416667, 99.800570, 0.000000, 0.000000 +2.433333, 99.800570, 0.000000, 0.000000 +2.450000, 99.800570, 0.000000, 0.000000 +2.466667, 99.800570, 0.000000, 0.000000 +2.483333, 99.800570, 0.000000, 0.000000 +2.500000, 99.800570, 0.000000, 0.000000 +2.516667, 99.800570, 0.000000, 0.000000 +2.533333, 99.800570, 0.000000, 0.000000 +2.550000, 99.800570, 0.000000, 0.000000 +2.566667, 99.800570, 0.000000, 0.000000 +2.583333, 99.800570, 0.000000, 0.000000 +2.600000, 99.800570, 0.000000, 0.000000 +2.616667, 99.800570, 0.000000, 0.000000 +2.633333, 99.800570, 0.000000, 0.000000 +2.650000, 99.800570, 0.000000, 0.000000 +2.666667, 99.800570, 0.000000, 0.000000 +2.683333, 99.800570, 0.000000, 0.000000 +2.700000, 99.800570, 0.000000, 0.000000 +2.716667, 99.800570, 0.000000, 0.000000 +2.733333, 99.800570, 0.000000, 0.000000 +2.750000, 99.800570, 0.000000, 0.000000 +2.766667, 99.800570, 0.000000, 0.000000 +2.783333, 99.800570, 0.000000, 0.000000 +2.800000, 99.800570, 0.000000, 0.000000 +2.816667, 99.800570, 0.000000, 0.000000 +2.833333, 99.800570, 0.000000, 0.000000 +2.850000, 99.800570, 0.000000, 0.000000 +2.866667, 99.800570, 0.000000, 0.000000 +2.883333, 99.800570, 0.000000, 0.000000 +2.900000, 99.800570, 0.000000, 0.000000 +2.916667, 99.800570, 0.000000, 0.000000 +2.933333, 99.800570, 0.000000, 0.000000 +2.950000, 99.800570, 0.000000, 0.000000 +2.966667, 99.800570, 0.000000, 0.000000 +2.983333, 99.800570, 0.000000, 0.000000 +3.000000, 99.800570, 0.000000, 0.000000 +3.016667, 99.800570, 0.000000, 0.000000 +3.033333, 99.800570, 0.000000, 0.000000 +3.050000, 99.800570, 0.000000, 0.000000 +3.066667, 99.800570, 0.000000, 0.000000 +3.083333, 99.800570, 0.000000, 0.000000 +3.100000, 99.800570, 0.000000, 0.000000 +3.116667, 99.800570, 0.000000, 0.000000 +3.133333, 99.800570, 0.000000, 0.000000 +3.150000, 99.800570, 0.000000, 0.000000 +3.166667, 99.800570, 0.000000, 0.000000 +3.183333, 99.800570, 0.000000, 0.000000 +3.200000, 99.800570, 0.000000, 0.000000 +3.216667, 99.800570, 0.000000, 0.000000 +3.233333, 99.800570, 0.000000, 0.000000 +3.250000, 99.800570, 0.000000, 0.000000 +3.266667, 99.800570, 0.000000, 0.000000 +3.283333, 99.800570, 0.000000, 0.000000 +3.300000, 99.800570, 0.000000, 0.000000 +3.316667, 99.800570, 0.000000, 0.000000 +3.333333, 99.800570, 0.000000, 0.000000 +3.350000, 99.800570, 0.000000, 0.000000 +3.366667, 99.800570, 0.000000, 0.000000 +3.383333, 99.800570, 0.000000, 0.000000 +3.400000, 99.800570, 0.000000, 0.000000 +3.416667, 99.800570, 0.000000, 0.000000 +3.433333, 99.800570, 0.000000, 0.000000 +3.450000, 99.800570, 0.000000, 0.000000 +3.466667, 99.800570, 0.000000, 0.000000 +3.483333, 99.800570, 0.000000, 0.000000 +3.500000, 99.800570, 0.000000, 0.000000 +3.516667, 99.800570, 0.000000, 0.000000 +3.533333, 99.800570, 0.000000, 0.000000 +3.550000, 99.800570, 0.000000, 0.000000 +3.566667, 99.800570, 0.000000, 0.000000 +3.583333, 99.800570, 0.000000, 0.000000 +3.600000, 99.800570, 0.000000, 0.000000 +3.616667, 99.800570, 0.000000, 0.000000 +3.633333, 99.800570, 0.000000, 0.000000 +3.650000, 99.800570, 0.000000, 0.000000 +3.666667, 99.800570, 0.000000, 0.000000 +3.683333, 99.800570, 0.000000, 0.000000 +3.700000, 99.800570, 0.000000, 0.000000 +3.716667, 99.800570, 0.000000, 0.000000 +3.733333, 99.800570, 0.000000, 0.000000 +3.750000, 99.800570, 0.000000, 0.000000 +3.766667, 99.800570, 0.000000, 0.000000 +3.783333, 99.800570, 0.000000, 0.000000 +3.800000, 99.800570, 0.000000, 0.000000 +3.816667, 99.800570, 0.000000, 0.000000 +3.833333, 99.800570, 0.000000, 0.000000 +3.850000, 99.800570, 0.000000, 0.000000 +3.866667, 99.800570, 0.000000, 0.000000 +3.883333, 99.800570, 0.000000, 0.000000 +3.900000, 99.800570, 0.000000, 0.000000 +3.916667, 99.800570, 0.000000, 0.000000 +3.933333, 99.800570, 0.000000, 0.000000 +3.950000, 99.800570, 0.000000, 0.000000 +3.966667, 99.800570, 0.000000, 0.000000 +3.983333, 99.800570, 0.000000, 0.000000 +4.000000, 99.800570, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_180kW_ld_50kWh.csv b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_180kW_ld_50kWh.csv new file mode 100644 index 0000000..cb0fbc1 --- /dev/null +++ b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_180kW_ld_50kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 3.539523, 106.185693, 108.446743 +1.016667, 8.914655, 161.253967, 165.732814 +1.033333, 14.501086, 167.592915, 172.374666 +1.050000, 20.149390, 169.449135, 174.321474 +1.066667, 25.855008, 171.168530, 176.125544 +1.083333, 31.618483, 172.904264, 177.947505 +1.100000, 37.440379, 174.656869, 179.787938 +1.116667, 43.321262, 176.426494, 181.647022 +1.133333, 49.261705, 178.213288, 183.524938 +1.150000, 55.262285, 180.017402, 185.421868 +1.166667, 61.323585, 181.838988, 187.337997 +1.183333, 67.446191, 183.678199, 189.273511 +1.200000, 73.135726, 170.686050, 175.619229 +1.216667, 77.793213, 139.724612, 143.248650 +1.233333, 81.583485, 113.708137, 116.228943 +1.250000, 84.664902, 92.442512, 94.263740 +1.266667, 87.168127, 75.096745, 76.426397 +1.283333, 89.200400, 60.968188, 61.949295 +1.300000, 90.849504, 49.473140, 50.204685 +1.316667, 92.187146, 40.129247, 40.680244 +1.333333, 93.274607, 32.623833, 33.044204 +1.350000, 94.206790, 27.965501, 28.311217 +1.366667, 95.023453, 24.499894, 24.793249 +1.383333, 95.738941, 21.464635, 21.714354 +1.400000, 96.365739, 18.803942, 19.017113 +1.416667, 96.914804, 16.471933, 16.654378 +1.433333, 97.395746, 14.428269, 14.584787 +1.450000, 97.816996, 12.637497, 12.772067 +1.466667, 98.185945, 11.068479, 11.184406 +1.483333, 98.509074, 9.693873, 9.793920 +1.500000, 98.792064, 8.489682, 8.576163 +1.516667, 99.039892, 7.434848, 7.509712 +1.533333, 99.256922, 6.510900, 6.575792 +1.550000, 99.446977, 5.701638, 5.757952 +1.566667, 99.613405, 4.992859, 5.041779 +1.583333, 99.759142, 4.372110, 4.414647 +1.600000, 99.800286, 1.234310, 1.245889 +1.616667, 99.800320, 0.001022, 0.001031 +1.633333, 99.800320, 0.000000, 0.000000 +1.650000, 99.800320, 0.000000, 0.000000 +1.666667, 99.800320, 0.000000, 0.000000 +1.683333, 99.800320, 0.000000, 0.000000 +1.700000, 99.800320, 0.000000, 0.000000 +1.716667, 99.800320, 0.000000, 0.000000 +1.733333, 99.800320, 0.000000, 0.000000 +1.750000, 99.800320, 0.000000, 0.000000 +1.766667, 99.800320, 0.000000, 0.000000 +1.783333, 99.800320, 0.000000, 0.000000 +1.800000, 99.800320, 0.000000, 0.000000 +1.816667, 99.800320, 0.000000, 0.000000 +1.833333, 99.800320, 0.000000, 0.000000 +1.850000, 99.800320, 0.000000, 0.000000 +1.866667, 99.800320, 0.000000, 0.000000 +1.883333, 99.800320, 0.000000, 0.000000 +1.900000, 99.800320, 0.000000, 0.000000 +1.916667, 99.800320, 0.000000, 0.000000 +1.933333, 99.800320, 0.000000, 0.000000 +1.950000, 99.800320, 0.000000, 0.000000 +1.966667, 99.800320, 0.000000, 0.000000 +1.983333, 99.800320, 0.000000, 0.000000 +2.000000, 99.800320, 0.000000, 0.000000 +2.016667, 99.800320, 0.000000, 0.000000 +2.033333, 99.800320, 0.000000, 0.000000 +2.050000, 99.800320, 0.000000, 0.000000 +2.066667, 99.800320, 0.000000, 0.000000 +2.083333, 99.800320, 0.000000, 0.000000 +2.100000, 99.800320, 0.000000, 0.000000 +2.116667, 99.800320, 0.000000, 0.000000 +2.133333, 99.800320, 0.000000, 0.000000 +2.150000, 99.800320, 0.000000, 0.000000 +2.166667, 99.800320, 0.000000, 0.000000 +2.183333, 99.800320, 0.000000, 0.000000 +2.200000, 99.800320, 0.000000, 0.000000 +2.216667, 99.800320, 0.000000, 0.000000 +2.233333, 99.800320, 0.000000, 0.000000 +2.250000, 99.800320, 0.000000, 0.000000 +2.266667, 99.800320, 0.000000, 0.000000 +2.283333, 99.800320, 0.000000, 0.000000 +2.300000, 99.800320, 0.000000, 0.000000 +2.316667, 99.800320, 0.000000, 0.000000 +2.333333, 99.800320, 0.000000, 0.000000 +2.350000, 99.800320, 0.000000, 0.000000 +2.366667, 99.800320, 0.000000, 0.000000 +2.383333, 99.800320, 0.000000, 0.000000 +2.400000, 99.800320, 0.000000, 0.000000 +2.416667, 99.800320, 0.000000, 0.000000 +2.433333, 99.800320, 0.000000, 0.000000 +2.450000, 99.800320, 0.000000, 0.000000 +2.466667, 99.800320, 0.000000, 0.000000 +2.483333, 99.800320, 0.000000, 0.000000 +2.500000, 99.800320, 0.000000, 0.000000 +2.516667, 99.800320, 0.000000, 0.000000 +2.533333, 99.800320, 0.000000, 0.000000 +2.550000, 99.800320, 0.000000, 0.000000 +2.566667, 99.800320, 0.000000, 0.000000 +2.583333, 99.800320, 0.000000, 0.000000 +2.600000, 99.800320, 0.000000, 0.000000 +2.616667, 99.800320, 0.000000, 0.000000 +2.633333, 99.800320, 0.000000, 0.000000 +2.650000, 99.800320, 0.000000, 0.000000 +2.666667, 99.800320, 0.000000, 0.000000 +2.683333, 99.800320, 0.000000, 0.000000 +2.700000, 99.800320, 0.000000, 0.000000 +2.716667, 99.800320, 0.000000, 0.000000 +2.733333, 99.800320, 0.000000, 0.000000 +2.750000, 99.800320, 0.000000, 0.000000 +2.766667, 99.800320, 0.000000, 0.000000 +2.783333, 99.800320, 0.000000, 0.000000 +2.800000, 99.800320, 0.000000, 0.000000 +2.816667, 99.800320, 0.000000, 0.000000 +2.833333, 99.800320, 0.000000, 0.000000 +2.850000, 99.800320, 0.000000, 0.000000 +2.866667, 99.800320, 0.000000, 0.000000 +2.883333, 99.800320, 0.000000, 0.000000 +2.900000, 99.800320, 0.000000, 0.000000 +2.916667, 99.800320, 0.000000, 0.000000 +2.933333, 99.800320, 0.000000, 0.000000 +2.950000, 99.800320, 0.000000, 0.000000 +2.966667, 99.800320, 0.000000, 0.000000 +2.983333, 99.800320, 0.000000, 0.000000 +3.000000, 99.800320, 0.000000, 0.000000 +3.016667, 99.800320, 0.000000, 0.000000 +3.033333, 99.800320, 0.000000, 0.000000 +3.050000, 99.800320, 0.000000, 0.000000 +3.066667, 99.800320, 0.000000, 0.000000 +3.083333, 99.800320, 0.000000, 0.000000 +3.100000, 99.800320, 0.000000, 0.000000 +3.116667, 99.800320, 0.000000, 0.000000 +3.133333, 99.800320, 0.000000, 0.000000 +3.150000, 99.800320, 0.000000, 0.000000 +3.166667, 99.800320, 0.000000, 0.000000 +3.183333, 99.800320, 0.000000, 0.000000 +3.200000, 99.800320, 0.000000, 0.000000 +3.216667, 99.800320, 0.000000, 0.000000 +3.233333, 99.800320, 0.000000, 0.000000 +3.250000, 99.800320, 0.000000, 0.000000 +3.266667, 99.800320, 0.000000, 0.000000 +3.283333, 99.800320, 0.000000, 0.000000 +3.300000, 99.800320, 0.000000, 0.000000 +3.316667, 99.800320, 0.000000, 0.000000 +3.333333, 99.800320, 0.000000, 0.000000 +3.350000, 99.800320, 0.000000, 0.000000 +3.366667, 99.800320, 0.000000, 0.000000 +3.383333, 99.800320, 0.000000, 0.000000 +3.400000, 99.800320, 0.000000, 0.000000 +3.416667, 99.800320, 0.000000, 0.000000 +3.433333, 99.800320, 0.000000, 0.000000 +3.450000, 99.800320, 0.000000, 0.000000 +3.466667, 99.800320, 0.000000, 0.000000 +3.483333, 99.800320, 0.000000, 0.000000 +3.500000, 99.800320, 0.000000, 0.000000 +3.516667, 99.800320, 0.000000, 0.000000 +3.533333, 99.800320, 0.000000, 0.000000 +3.550000, 99.800320, 0.000000, 0.000000 +3.566667, 99.800320, 0.000000, 0.000000 +3.583333, 99.800320, 0.000000, 0.000000 +3.600000, 99.800320, 0.000000, 0.000000 +3.616667, 99.800320, 0.000000, 0.000000 +3.633333, 99.800320, 0.000000, 0.000000 +3.650000, 99.800320, 0.000000, 0.000000 +3.666667, 99.800320, 0.000000, 0.000000 +3.683333, 99.800320, 0.000000, 0.000000 +3.700000, 99.800320, 0.000000, 0.000000 +3.716667, 99.800320, 0.000000, 0.000000 +3.733333, 99.800320, 0.000000, 0.000000 +3.750000, 99.800320, 0.000000, 0.000000 +3.766667, 99.800320, 0.000000, 0.000000 +3.783333, 99.800320, 0.000000, 0.000000 +3.800000, 99.800320, 0.000000, 0.000000 +3.816667, 99.800320, 0.000000, 0.000000 +3.833333, 99.800320, 0.000000, 0.000000 +3.850000, 99.800320, 0.000000, 0.000000 +3.866667, 99.800320, 0.000000, 0.000000 +3.883333, 99.800320, 0.000000, 0.000000 +3.900000, 99.800320, 0.000000, 0.000000 +3.916667, 99.800320, 0.000000, 0.000000 +3.933333, 99.800320, 0.000000, 0.000000 +3.950000, 99.800320, 0.000000, 0.000000 +3.966667, 99.800320, 0.000000, 0.000000 +3.983333, 99.800320, 0.000000, 0.000000 +4.000000, 99.800320, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_180kW_md_200kWh.csv b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_180kW_md_200kWh.csv new file mode 100644 index 0000000..3ddc996 --- /dev/null +++ b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_180kW_md_200kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 1.252630, 150.315636, 152.336338 +1.016667, 3.193688, 232.926960, 236.602722 +1.033333, 5.239501, 245.497553, 249.459484 +1.050000, 7.325843, 250.361010, 254.436102 +1.066667, 9.446933, 254.530754, 258.703955 +1.083333, 11.595855, 257.870744, 262.123255 +1.100000, 13.754131, 258.993063, 263.272370 +1.116667, 15.920835, 260.004488, 264.308005 +1.133333, 18.095998, 261.019546, 265.347420 +1.150000, 20.279652, 262.038509, 266.390892 +1.166667, 22.471830, 263.061389, 267.438438 +1.183333, 24.672565, 264.088203, 268.490072 +1.200000, 26.881890, 265.118965, 269.545812 +1.216667, 29.099838, 266.153690, 270.605672 +1.233333, 31.326441, 267.192392, 271.669668 +1.250000, 33.561733, 268.235086, 272.737817 +1.266667, 35.805748, 269.281787, 273.810133 +1.283333, 38.058519, 270.332510, 274.886634 +1.300000, 40.320080, 271.387270, 275.967336 +1.316667, 42.590464, 272.446082, 277.052253 +1.333333, 44.869705, 273.508960, 278.141404 +1.350000, 47.157838, 274.575921, 279.234803 +1.366667, 49.454896, 275.646980, 280.332467 +1.383333, 51.760914, 276.722150, 281.434414 +1.400000, 54.075926, 277.801449, 282.540658 +1.416667, 56.399967, 278.884890, 283.651216 +1.433333, 58.733071, 279.972490, 284.766106 +1.450000, 61.075273, 281.064264, 285.885344 +1.466667, 63.426608, 282.160228, 287.008946 +1.483333, 65.787111, 283.260396, 288.136929 +1.500000, 68.156818, 284.364785, 289.269310 +1.516667, 70.535763, 285.473410, 290.406105 +1.533333, 72.923982, 286.586287, 291.547333 +1.550000, 75.321511, 287.703431, 292.693009 +1.566667, 77.728384, 288.824859, 293.843152 +1.583333, 80.144639, 289.950587, 294.997777 +1.600000, 82.570311, 291.080629, 296.156902 +1.616667, 85.005436, 292.215003, 297.320545 +1.633333, 87.406547, 288.133252, 293.133826 +1.650000, 89.427870, 242.558769, 246.452982 +1.666667, 91.057035, 195.499833, 198.377391 +1.683333, 92.366976, 157.192888, 159.336502 +1.700000, 93.427441, 127.255869, 128.884026 +1.716667, 94.341311, 109.664375, 111.013314 +1.733333, 95.141703, 96.046987, 97.191777 +1.750000, 95.842835, 84.135884, 85.110665 +1.766667, 96.456981, 73.697471, 74.529818 +1.783333, 96.994903, 64.550682, 65.263242 +1.800000, 97.466041, 56.536495, 57.147953 +1.816667, 97.878668, 49.515283, 50.041116 +1.833333, 98.240039, 43.364483, 43.817571 +1.850000, 98.556510, 37.976554, 38.367652 +1.866667, 98.833653, 33.257154, 33.595285 +1.883333, 99.076349, 29.123545, 29.416303 +1.900000, 99.288876, 25.503179, 25.756979 +1.916667, 99.474979, 22.332455, 22.552733 +1.933333, 99.637943, 19.555623, 19.747004 +1.950000, 99.780641, 17.123824, 17.290250 +1.966667, 99.800820, 2.421411, 2.443957 +1.983333, 99.800836, 0.001936, 0.001954 +2.000000, 99.800836, 0.000000, 0.000000 +2.016667, 99.800836, 0.000000, 0.000000 +2.033333, 99.800836, 0.000000, 0.000000 +2.050000, 99.800836, 0.000000, 0.000000 +2.066667, 99.800836, 0.000000, 0.000000 +2.083333, 99.800836, 0.000000, 0.000000 +2.100000, 99.800836, 0.000000, 0.000000 +2.116667, 99.800836, 0.000000, 0.000000 +2.133333, 99.800836, 0.000000, 0.000000 +2.150000, 99.800836, 0.000000, 0.000000 +2.166667, 99.800836, 0.000000, 0.000000 +2.183333, 99.800836, 0.000000, 0.000000 +2.200000, 99.800836, 0.000000, 0.000000 +2.216667, 99.800836, 0.000000, 0.000000 +2.233333, 99.800836, 0.000000, 0.000000 +2.250000, 99.800836, 0.000000, 0.000000 +2.266667, 99.800836, 0.000000, 0.000000 +2.283333, 99.800836, 0.000000, 0.000000 +2.300000, 99.800836, 0.000000, 0.000000 +2.316667, 99.800836, 0.000000, 0.000000 +2.333333, 99.800836, 0.000000, 0.000000 +2.350000, 99.800836, 0.000000, 0.000000 +2.366667, 99.800836, 0.000000, 0.000000 +2.383333, 99.800836, 0.000000, 0.000000 +2.400000, 99.800836, 0.000000, 0.000000 +2.416667, 99.800836, 0.000000, 0.000000 +2.433333, 99.800836, 0.000000, 0.000000 +2.450000, 99.800836, 0.000000, 0.000000 +2.466667, 99.800836, 0.000000, 0.000000 +2.483333, 99.800836, 0.000000, 0.000000 +2.500000, 99.800836, 0.000000, 0.000000 +2.516667, 99.800836, 0.000000, 0.000000 +2.533333, 99.800836, 0.000000, 0.000000 +2.550000, 99.800836, 0.000000, 0.000000 +2.566667, 99.800836, 0.000000, 0.000000 +2.583333, 99.800836, 0.000000, 0.000000 +2.600000, 99.800836, 0.000000, 0.000000 +2.616667, 99.800836, 0.000000, 0.000000 +2.633333, 99.800836, 0.000000, 0.000000 +2.650000, 99.800836, 0.000000, 0.000000 +2.666667, 99.800836, 0.000000, 0.000000 +2.683333, 99.800836, 0.000000, 0.000000 +2.700000, 99.800836, 0.000000, 0.000000 +2.716667, 99.800836, 0.000000, 0.000000 +2.733333, 99.800836, 0.000000, 0.000000 +2.750000, 99.800836, 0.000000, 0.000000 +2.766667, 99.800836, 0.000000, 0.000000 +2.783333, 99.800836, 0.000000, 0.000000 +2.800000, 99.800836, 0.000000, 0.000000 +2.816667, 99.800836, 0.000000, 0.000000 +2.833333, 99.800836, 0.000000, 0.000000 +2.850000, 99.800836, 0.000000, 0.000000 +2.866667, 99.800836, 0.000000, 0.000000 +2.883333, 99.800836, 0.000000, 0.000000 +2.900000, 99.800836, 0.000000, 0.000000 +2.916667, 99.800836, 0.000000, 0.000000 +2.933333, 99.800836, 0.000000, 0.000000 +2.950000, 99.800836, 0.000000, 0.000000 +2.966667, 99.800836, 0.000000, 0.000000 +2.983333, 99.800836, 0.000000, 0.000000 +3.000000, 99.800836, 0.000000, 0.000000 +3.016667, 99.800836, 0.000000, 0.000000 +3.033333, 99.800836, 0.000000, 0.000000 +3.050000, 99.800836, 0.000000, 0.000000 +3.066667, 99.800836, 0.000000, 0.000000 +3.083333, 99.800836, 0.000000, 0.000000 +3.100000, 99.800836, 0.000000, 0.000000 +3.116667, 99.800836, 0.000000, 0.000000 +3.133333, 99.800836, 0.000000, 0.000000 +3.150000, 99.800836, 0.000000, 0.000000 +3.166667, 99.800836, 0.000000, 0.000000 +3.183333, 99.800836, 0.000000, 0.000000 +3.200000, 99.800836, 0.000000, 0.000000 +3.216667, 99.800836, 0.000000, 0.000000 +3.233333, 99.800836, 0.000000, 0.000000 +3.250000, 99.800836, 0.000000, 0.000000 +3.266667, 99.800836, 0.000000, 0.000000 +3.283333, 99.800836, 0.000000, 0.000000 +3.300000, 99.800836, 0.000000, 0.000000 +3.316667, 99.800836, 0.000000, 0.000000 +3.333333, 99.800836, 0.000000, 0.000000 +3.350000, 99.800836, 0.000000, 0.000000 +3.366667, 99.800836, 0.000000, 0.000000 +3.383333, 99.800836, 0.000000, 0.000000 +3.400000, 99.800836, 0.000000, 0.000000 +3.416667, 99.800836, 0.000000, 0.000000 +3.433333, 99.800836, 0.000000, 0.000000 +3.450000, 99.800836, 0.000000, 0.000000 +3.466667, 99.800836, 0.000000, 0.000000 +3.483333, 99.800836, 0.000000, 0.000000 +3.500000, 99.800836, 0.000000, 0.000000 +3.516667, 99.800836, 0.000000, 0.000000 +3.533333, 99.800836, 0.000000, 0.000000 +3.550000, 99.800836, 0.000000, 0.000000 +3.566667, 99.800836, 0.000000, 0.000000 +3.583333, 99.800836, 0.000000, 0.000000 +3.600000, 99.800836, 0.000000, 0.000000 +3.616667, 99.800836, 0.000000, 0.000000 +3.633333, 99.800836, 0.000000, 0.000000 +3.650000, 99.800836, 0.000000, 0.000000 +3.666667, 99.800836, 0.000000, 0.000000 +3.683333, 99.800836, 0.000000, 0.000000 +3.700000, 99.800836, 0.000000, 0.000000 +3.716667, 99.800836, 0.000000, 0.000000 +3.733333, 99.800836, 0.000000, 0.000000 +3.750000, 99.800836, 0.000000, 0.000000 +3.766667, 99.800836, 0.000000, 0.000000 +3.783333, 99.800836, 0.000000, 0.000000 +3.800000, 99.800836, 0.000000, 0.000000 +3.816667, 99.800836, 0.000000, 0.000000 +3.833333, 99.800836, 0.000000, 0.000000 +3.850000, 99.800836, 0.000000, 0.000000 +3.866667, 99.800836, 0.000000, 0.000000 +3.883333, 99.800836, 0.000000, 0.000000 +3.900000, 99.800836, 0.000000, 0.000000 +3.916667, 99.800836, 0.000000, 0.000000 +3.933333, 99.800836, 0.000000, 0.000000 +3.950000, 99.800836, 0.000000, 0.000000 +3.966667, 99.800836, 0.000000, 0.000000 +3.983333, 99.800836, 0.000000, 0.000000 +4.000000, 99.800836, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_20kW_hd_300kWh.csv b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_20kW_hd_300kWh.csv new file mode 100644 index 0000000..ec57c32 --- /dev/null +++ b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_20kW_hd_300kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.266616, 47.990844, 48.477090 +1.016667, 0.636304, 66.543872, 67.240995 +1.033333, 1.010818, 67.412579, 68.119890 +1.050000, 1.390224, 68.293107, 69.010772 +1.066667, 1.774586, 69.185106, 69.913290 +1.083333, 2.163968, 70.088725, 70.827596 +1.100000, 2.558435, 71.004116, 71.753844 +1.116667, 2.958054, 71.931431, 72.692188 +1.133333, 3.362892, 72.870824, 73.642787 +1.150000, 3.773017, 73.822451, 74.605800 +1.166667, 4.188078, 74.710973, 75.504983 +1.183333, 4.605051, 75.055212, 75.853361 +1.200000, 5.023322, 75.288691, 76.089648 +1.216667, 5.442892, 75.522687, 76.326462 +1.233333, 5.863767, 75.757409, 76.564012 +1.250000, 6.285949, 75.992858, 76.802301 +1.266667, 6.709444, 76.229037, 77.041330 +1.283333, 7.134255, 76.465948, 77.281102 +1.300000, 7.560386, 76.703593, 77.521619 +1.316667, 7.987841, 76.941974, 77.762883 +1.333333, 8.416625, 77.181095, 78.004897 +1.350000, 8.846742, 77.420956, 78.247664 +1.366667, 9.278195, 77.661560, 78.491185 +1.383333, 9.710989, 77.902911, 78.735462 +1.400000, 10.145072, 78.134927, 78.970295 +1.416667, 10.579721, 78.236844, 79.073450 +1.433333, 11.014712, 78.298521, 79.135876 +1.450000, 11.450047, 78.360177, 79.198281 +1.466667, 11.885724, 78.421882, 79.260735 +1.483333, 12.321744, 78.483634, 79.323239 +1.500000, 12.758108, 78.545436, 79.385791 +1.516667, 13.194815, 78.607286, 79.448393 +1.533333, 13.631866, 78.669184, 79.511045 +1.550000, 14.069261, 78.731131, 79.573745 +1.566667, 14.507001, 78.793127, 79.636495 +1.583333, 14.945085, 78.855171, 79.699295 +1.600000, 15.383514, 78.917265, 79.762143 +1.616667, 15.822289, 78.979406, 79.825042 +1.633333, 16.261409, 79.041597, 79.887990 +1.650000, 16.700874, 79.103836, 79.950987 +1.666667, 17.140686, 79.166125, 80.014034 +1.683333, 17.580844, 79.228462, 80.077131 +1.700000, 18.021349, 79.290848, 80.140277 +1.716667, 18.462201, 79.353283, 80.203473 +1.733333, 18.903399, 79.415768, 80.266719 +1.750000, 19.344945, 79.478301, 80.330015 +1.766667, 19.786839, 79.540883, 80.393360 +1.783333, 20.229081, 79.603515, 80.456755 +1.800000, 20.671671, 79.666195, 80.520201 +1.816667, 21.114609, 79.728925, 80.583696 +1.833333, 21.557897, 79.791704, 80.647241 +1.850000, 22.001533, 79.854533, 80.710836 +1.866667, 22.445519, 79.917410, 80.774482 +1.883333, 22.889854, 79.980338, 80.838177 +1.900000, 23.334539, 80.043314, 80.901923 +1.916667, 23.779574, 80.106340, 80.965718 +1.933333, 24.224960, 80.169415, 81.029564 +1.950000, 24.670696, 80.232540, 81.093461 +1.966667, 25.116783, 80.295715, 81.157407 +1.983333, 25.563222, 80.358939, 81.221404 +2.000000, 26.010012, 80.422213, 81.285452 +2.016667, 26.457154, 80.485536, 81.349549 +2.033333, 26.904648, 80.548909, 81.413698 +2.050000, 27.352494, 80.612332, 81.477896 +2.066667, 27.800693, 80.675805, 81.542146 +2.083333, 28.249245, 80.739327, 81.606446 +2.100000, 28.698150, 80.802899, 81.670796 +2.116667, 29.147408, 80.866522, 81.735197 +2.133333, 29.597020, 80.930194, 81.799649 +2.150000, 30.046987, 80.993916, 81.864152 +2.166667, 30.497307, 81.057688, 81.928705 +2.183333, 30.947982, 81.121510, 81.993310 +2.200000, 31.399012, 81.185383, 82.057965 +2.216667, 31.850397, 81.249305, 82.122671 +2.233333, 32.302138, 81.313278, 82.187428 +2.250000, 32.754234, 81.377301, 82.252236 +2.266667, 33.206686, 81.441374, 82.317095 +2.283333, 33.659494, 81.505497, 82.382005 +2.300000, 34.112659, 81.569671, 82.446966 +2.316667, 34.566181, 81.633895, 82.511978 +2.333333, 35.020059, 81.698170, 82.577042 +2.350000, 35.474295, 81.762495, 82.642156 +2.366667, 35.928889, 81.826871, 82.707322 +2.383333, 36.383841, 81.891297, 82.772540 +2.400000, 36.839151, 81.955773, 82.837808 +2.416667, 37.294819, 82.020301, 82.903129 +2.433333, 37.750846, 82.084878, 82.968500 +2.450000, 38.207232, 82.149507, 83.033923 +2.466667, 38.663978, 82.214186, 83.099397 +2.483333, 39.121083, 82.278916, 83.164923 +2.500000, 39.578548, 82.343697, 83.230501 +2.516667, 40.036373, 82.408529, 83.296130 +2.533333, 40.494558, 82.473412, 83.361811 +2.550000, 40.953105, 82.538345, 83.427544 +2.566667, 41.412012, 82.603330, 83.493328 +2.583333, 41.871281, 82.668365, 83.559164 +2.600000, 42.330911, 82.733452, 83.625052 +2.616667, 42.790903, 82.798590, 83.690992 +2.633333, 43.251258, 82.863778, 83.756984 +2.650000, 43.711974, 82.929018, 83.823028 +2.666667, 44.173054, 82.994310, 83.889123 +2.683333, 44.634496, 83.059652, 83.955271 +2.700000, 45.096302, 83.125046, 84.021471 +2.716667, 45.558472, 83.190491, 84.087723 +2.733333, 46.021005, 83.255987, 84.154027 +2.750000, 46.483902, 83.321535, 84.220383 +2.766667, 46.947164, 83.387134, 84.286792 +2.783333, 47.410791, 83.452785, 84.353253 +2.800000, 47.874782, 83.518487, 84.419766 +2.816667, 48.339139, 83.584241, 84.486332 +2.833333, 48.803862, 83.650047, 84.552950 +2.850000, 49.268950, 83.715904, 84.619620 +2.866667, 49.734405, 83.781813, 84.686343 +2.883333, 50.200226, 83.847773, 84.753118 +2.900000, 50.666413, 83.913785, 84.819946 +2.916667, 51.132968, 83.979850, 84.886827 +2.933333, 51.599890, 84.045966, 84.953760 +2.950000, 52.067180, 84.112133, 85.020746 +2.966667, 52.534837, 84.178353, 85.087785 +2.983333, 53.002863, 84.244625, 85.154876 +3.000000, 53.471257, 84.310949, 85.222021 +3.016667, 53.940020, 84.377324, 85.289218 +3.033333, 54.409152, 84.443752, 85.356468 +3.050000, 54.878653, 84.510232, 85.423771 +3.066667, 55.348524, 84.576765, 85.491127 +3.083333, 55.818765, 84.643349, 85.558536 +3.100000, 56.289376, 84.709986, 85.625998 +3.116667, 56.760358, 84.776675, 85.693513 +3.133333, 57.231710, 84.843416, 85.761082 +3.150000, 57.703433, 84.910210, 85.828703 +3.166667, 58.175528, 84.977056, 85.896378 +3.183333, 58.647994, 85.043955, 85.964106 +3.200000, 59.120833, 85.110906, 86.031887 +3.216667, 59.594043, 85.177909, 86.099722 +3.233333, 60.067626, 85.244965, 86.167610 +3.250000, 60.541582, 85.312074, 86.235552 +3.266667, 61.015912, 85.379236, 86.303547 +3.283333, 61.490614, 85.446450, 86.371595 +3.300000, 61.965690, 85.513717, 86.439698 +3.316667, 62.441140, 85.581037, 86.507853 +3.333333, 62.916965, 85.648409, 86.576063 +3.350000, 63.393164, 85.715835, 86.644326 +3.366667, 63.869738, 85.783313, 86.712643 +3.383333, 64.346687, 85.850844, 86.781013 +3.400000, 64.824012, 85.918429, 86.849438 +3.416667, 65.301712, 85.986066, 86.917916 +3.433333, 65.779789, 86.053756, 86.986449 +3.450000, 66.258241, 86.121500, 87.055035 +3.466667, 66.737071, 86.189297, 87.123675 +3.483333, 67.216277, 86.257147, 87.192369 +3.500000, 67.695861, 86.325050, 87.261117 +3.516667, 68.175822, 86.393006, 87.329920 +3.533333, 68.656161, 86.461016, 87.398776 +3.550000, 69.136878, 86.529079, 87.467687 +3.566667, 69.617973, 86.597195, 87.536652 +3.583333, 70.099448, 86.665365, 87.605672 +3.600000, 70.581301, 86.733589, 87.674745 +3.616667, 71.063534, 86.801866, 87.743873 +3.633333, 71.546146, 86.870196, 87.813056 +3.650000, 72.029138, 86.938581, 87.882293 +3.666667, 72.512510, 87.007019, 87.951584 +3.683333, 72.996263, 87.075510, 88.020930 +3.700000, 73.480397, 87.144055, 88.090331 +3.716667, 73.964911, 87.212654, 88.159786 +3.733333, 74.449808, 87.281307, 88.229296 +3.750000, 74.935085, 87.350014, 88.298860 +3.766667, 75.420745, 87.418775, 88.368480 +3.783333, 75.906787, 87.487589, 88.438154 +3.800000, 76.393212, 87.556458, 88.507883 +3.816667, 76.880020, 87.625381, 88.577667 +3.833333, 77.367211, 87.694358, 88.647505 +3.850000, 77.854785, 87.763388, 88.717399 +3.866667, 78.342743, 87.832473, 88.787348 +3.883333, 78.831086, 87.901613, 88.857352 +3.900000, 79.319812, 87.970806, 88.927411 +3.916667, 79.808924, 88.040054, 88.997525 +3.933333, 80.298420, 88.109356, 89.067694 +3.950000, 80.788302, 88.178713, 89.137919 +3.966667, 81.278569, 88.248124, 89.208199 +3.983333, 81.769223, 88.317589, 89.278534 +4.000000, 82.260262, 88.387109, 89.348924 diff --git a/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_20kW_hd_400kWh.csv b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_20kW_hd_400kWh.csv new file mode 100644 index 0000000..568c518 --- /dev/null +++ b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_20kW_hd_400kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.199691, 47.925843, 48.400735 +1.016667, 0.475938, 66.299261, 66.973139 +1.033333, 0.754887, 66.947776, 67.628849 +1.050000, 1.036566, 67.602979, 68.291334 +1.066667, 1.321002, 68.264583, 68.960302 +1.083333, 1.608221, 68.932649, 69.635817 +1.100000, 1.898251, 69.607241, 70.317943 +1.116667, 2.191120, 70.288422, 71.006745 +1.133333, 2.486854, 70.976256, 71.702287 +1.150000, 2.785483, 71.670807, 72.404635 +1.166667, 3.087033, 72.372141, 73.113856 +1.183333, 3.391535, 73.080325, 73.830017 +1.200000, 3.699015, 73.795424, 74.553186 +1.216667, 4.009504, 74.517249, 75.283171 +1.233333, 4.321803, 74.951834, 75.722677 +1.250000, 4.634833, 75.127088, 75.899916 +1.266667, 4.948592, 75.302263, 76.077077 +1.283333, 5.263083, 75.477847, 76.254651 +1.300000, 5.578308, 75.653838, 76.432639 +1.316667, 5.894267, 75.830239, 76.611042 +1.333333, 6.210963, 76.007051, 76.789861 +1.350000, 6.528397, 76.184274, 76.969097 +1.366667, 6.846572, 76.361909, 77.148751 +1.383333, 7.165489, 76.539958, 77.328824 +1.400000, 7.485149, 76.718421, 77.509316 +1.416667, 7.805554, 76.897299, 77.690230 +1.433333, 8.126707, 77.076593, 77.871565 +1.450000, 8.448608, 77.256305, 78.053323 +1.466667, 8.771260, 77.436434, 78.235505 +1.483333, 9.094664, 77.616983, 78.418112 +1.500000, 9.418822, 77.797952, 78.601145 +1.516667, 9.743736, 77.979341, 78.784604 +1.533333, 10.069394, 78.158076, 78.965379 +1.550000, 10.395422, 78.246522, 79.054834 +1.566667, 10.721642, 78.292834, 79.101675 +1.583333, 11.048055, 78.339101, 79.148471 +1.600000, 11.374660, 78.385396, 79.195295 +1.616667, 11.701459, 78.431718, 79.242146 +1.633333, 12.028451, 78.478068, 79.289025 +1.650000, 12.355636, 78.524444, 79.335931 +1.666667, 12.683015, 78.570848, 79.382866 +1.683333, 13.010587, 78.617280, 79.429828 +1.700000, 13.338353, 78.663739, 79.476818 +1.716667, 13.666312, 78.710225, 79.523835 +1.733333, 13.994465, 78.756738, 79.570881 +1.750000, 14.322812, 78.803280, 79.617954 +1.766667, 14.651353, 78.849848, 79.665055 +1.783333, 14.980088, 78.896444, 79.712183 +1.800000, 15.309018, 78.943067, 79.759340 +1.816667, 15.638141, 78.989718, 79.806525 +1.833333, 15.967460, 79.036397, 79.853737 +1.850000, 16.296973, 79.083103, 79.900977 +1.866667, 16.626680, 79.129836, 79.948246 +1.883333, 16.956583, 79.176597, 79.995542 +1.900000, 17.286680, 79.223386, 80.042866 +1.916667, 17.616973, 79.270202, 80.090218 +1.933333, 17.947460, 79.317046, 80.137598 +1.950000, 18.278143, 79.363917, 80.185006 +1.966667, 18.609022, 79.410816, 80.232442 +1.983333, 18.940096, 79.457743, 80.279906 +2.000000, 19.271365, 79.504697, 80.327399 +2.016667, 19.602831, 79.551679, 80.374919 +2.033333, 19.934492, 79.598689, 80.422467 +2.050000, 20.266349, 79.645727, 80.470044 +2.066667, 20.598402, 79.692792, 80.517648 +2.083333, 20.930652, 79.739885, 80.565281 +2.100000, 21.263098, 79.787006, 80.612941 +2.116667, 21.595740, 79.834154, 80.660630 +2.133333, 21.928579, 79.881330, 80.708348 +2.150000, 22.261614, 79.928535, 80.756093 +2.166667, 22.594847, 79.975767, 80.803867 +2.183333, 22.928276, 80.023026, 80.851668 +2.200000, 23.261902, 80.070314, 80.899498 +2.216667, 23.595726, 80.117630, 80.947357 +2.233333, 23.929747, 80.164973, 80.995243 +2.250000, 24.263965, 80.212344, 81.043158 +2.266667, 24.598380, 80.259744, 81.091101 +2.283333, 24.932993, 80.307171, 81.139073 +2.300000, 25.267804, 80.354626, 81.187073 +2.316667, 25.602813, 80.402110, 81.235101 +2.333333, 25.938020, 80.449621, 81.283158 +2.350000, 26.273425, 80.497160, 81.331243 +2.366667, 26.609028, 80.544727, 81.379356 +2.383333, 26.944829, 80.592322, 81.427498 +2.400000, 27.280829, 80.639946, 81.475668 +2.416667, 27.617027, 80.687597, 81.523867 +2.433333, 27.953424, 80.735277, 81.572094 +2.450000, 28.290020, 80.782984, 81.620350 +2.466667, 28.626815, 80.830720, 81.668634 +2.483333, 28.963808, 80.878484, 81.716947 +2.500000, 29.301001, 80.926276, 81.765288 +2.516667, 29.638393, 80.974096, 81.813658 +2.533333, 29.975985, 81.021945, 81.862057 +2.550000, 30.313776, 81.069822, 81.910484 +2.566667, 30.651766, 81.117726, 81.958939 +2.583333, 30.989956, 81.165660, 82.007424 +2.600000, 31.328346, 81.213621, 82.055937 +2.616667, 31.666937, 81.261611, 82.104478 +2.633333, 32.005727, 81.309629, 82.153049 +2.650000, 32.344717, 81.357675, 82.201648 +2.666667, 32.683908, 81.405749, 82.250276 +2.683333, 33.023299, 81.453852, 82.298932 +2.700000, 33.362890, 81.501984, 82.347617 +2.716667, 33.702683, 81.550143, 82.396331 +2.733333, 34.042676, 81.598331, 82.445074 +2.750000, 34.382870, 81.646548, 82.493846 +2.766667, 34.723264, 81.694793, 82.542646 +2.783333, 35.063861, 81.743066, 82.591475 +2.800000, 35.404658, 81.791368, 82.640334 +2.816667, 35.745657, 81.839698, 82.689221 +2.833333, 36.086857, 81.888057, 82.738136 +2.850000, 36.428259, 81.936444, 82.787081 +2.866667, 36.769862, 81.984860, 82.836055 +2.883333, 37.111668, 82.033305, 82.885057 +2.900000, 37.453675, 82.081778, 82.934089 +2.916667, 37.795885, 82.130279, 82.983150 +2.933333, 38.138296, 82.178809, 83.032239 +2.950000, 38.480910, 82.227368, 83.081358 +2.966667, 38.823727, 82.275955, 83.130505 +2.983333, 39.166746, 82.324571, 83.179682 +3.000000, 39.509968, 82.373216, 83.228888 +3.016667, 39.853392, 82.421889, 83.278122 +3.033333, 40.197020, 82.470591, 83.327386 +3.050000, 40.540850, 82.519322, 83.376679 +3.066667, 40.884884, 82.568081, 83.426001 +3.083333, 41.229121, 82.616870, 83.475352 +3.100000, 41.573561, 82.665687, 83.524733 +3.116667, 41.918205, 82.714532, 83.574142 +3.133333, 42.263053, 82.763407, 83.623581 +3.150000, 42.608104, 82.812310, 83.673049 +3.166667, 42.953359, 82.861242, 83.722546 +3.183333, 43.298818, 82.910203, 83.772073 +3.200000, 43.644482, 82.959193, 83.821628 +3.216667, 43.990349, 83.008212, 83.871213 +3.233333, 44.336421, 83.057260, 83.920828 +3.250000, 44.682697, 83.106336, 83.970471 +3.266667, 45.029178, 83.155442, 84.020144 +3.283333, 45.375864, 83.204576, 84.069847 +3.300000, 45.722755, 83.253740, 84.119578 +3.316667, 46.069850, 83.302932, 84.169339 +3.333333, 46.417151, 83.352154, 84.219130 +3.350000, 46.764657, 83.401404, 84.268950 +3.366667, 47.112368, 83.450684, 84.318799 +3.383333, 47.460285, 83.499992, 84.368678 +3.400000, 47.808407, 83.549330, 84.418586 +3.416667, 48.156735, 83.598696, 84.468524 +3.433333, 48.505268, 83.648092, 84.518491 +3.450000, 48.854008, 83.697517, 84.568488 +3.466667, 49.202954, 83.746971, 84.618514 +3.483333, 49.552106, 83.796454, 84.668570 +3.500000, 49.901464, 83.845967, 84.718655 +3.516667, 50.251029, 83.895508, 84.768770 +3.533333, 50.600800, 83.945079, 84.818915 +3.550000, 50.950778, 83.994679, 84.869089 +3.566667, 51.300962, 84.044308, 84.919293 +3.583333, 51.651354, 84.093966, 84.969526 +3.600000, 52.001952, 84.143654, 85.019790 +3.616667, 52.352758, 84.193371, 85.070083 +3.633333, 52.703771, 84.243118, 85.120405 +3.650000, 53.054991, 84.292893, 85.170758 +3.666667, 53.406419, 84.342698, 85.221140 +3.683333, 53.758055, 84.392533, 85.271552 +3.700000, 54.109898, 84.442396, 85.321994 +3.716667, 54.461949, 84.492289, 85.372465 +3.733333, 54.814208, 84.542212, 85.422966 +3.750000, 55.166676, 84.592164, 85.473498 +3.766667, 55.519351, 84.642145, 85.524059 +3.783333, 55.872235, 84.692156, 85.574649 +3.800000, 56.225328, 84.742197, 85.625270 +3.816667, 56.578629, 84.792266, 85.675921 +3.833333, 56.932139, 84.842366, 85.726602 +3.850000, 57.285858, 84.892495, 85.777312 +3.866667, 57.639785, 84.942653, 85.828053 +3.883333, 57.993922, 84.992841, 85.878823 +3.900000, 58.348268, 85.043059, 85.929624 +3.916667, 58.702824, 85.093306, 85.980454 +3.933333, 59.057589, 85.143583, 86.031315 +3.950000, 59.412563, 85.193889, 86.082205 +3.966667, 59.767747, 85.244225, 86.133126 +3.983333, 60.123142, 85.294591, 86.184077 +4.000000, 60.478746, 85.344987, 86.235058 diff --git a/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_20kW_hd_600kWh.csv b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_20kW_hd_600kWh.csv new file mode 100644 index 0000000..634818b --- /dev/null +++ b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_20kW_hd_600kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.132947, 47.860886, 48.324491 +1.016667, 0.316434, 66.055410, 66.706378 +1.033333, 0.501117, 66.485746, 67.141220 +1.050000, 0.687003, 66.919106, 67.579121 +1.066667, 0.874101, 67.355287, 68.019876 +1.083333, 1.062419, 67.794307, 68.463503 +1.100000, 1.251964, 68.236185, 68.910022 +1.116667, 1.442744, 68.680940, 69.359452 +1.133333, 1.634768, 69.128590, 69.811811 +1.150000, 1.828043, 69.579154, 70.267118 +1.166667, 2.022579, 70.032651, 70.725393 +1.183333, 2.218382, 70.489099, 71.186654 +1.200000, 2.415461, 70.948519, 71.650922 +1.216667, 2.613824, 71.410929, 72.118216 +1.233333, 2.813481, 71.876349, 72.588555 +1.250000, 3.014439, 72.344798, 73.061960 +1.266667, 3.216706, 72.816297, 73.538451 +1.283333, 3.420292, 73.290864, 74.018046 +1.300000, 3.625205, 73.768520, 74.500767 +1.316667, 3.831453, 74.249284, 74.986635 +1.333333, 4.039027, 74.726675, 75.469097 +1.350000, 4.247264, 74.965387, 75.710346 +1.366667, 4.455825, 75.082173, 75.828374 +1.383333, 4.664711, 75.198922, 75.946365 +1.400000, 4.873922, 75.315853, 76.064539 +1.416667, 5.083458, 75.432966, 76.182898 +1.433333, 5.293320, 75.550260, 76.301440 +1.450000, 5.503508, 75.667736, 76.420167 +1.466667, 5.714023, 75.785395, 76.539078 +1.483333, 5.924865, 75.903236, 76.658174 +1.500000, 6.136036, 76.021261, 76.777456 +1.516667, 6.347534, 76.139468, 76.896922 +1.533333, 6.559361, 76.257860, 77.016575 +1.550000, 6.771518, 76.376435, 77.136414 +1.566667, 6.984005, 76.495194, 77.256439 +1.583333, 7.196822, 76.614137, 77.376650 +1.600000, 7.409970, 76.733266, 77.497049 +1.616667, 7.623449, 76.852579, 77.617635 +1.633333, 7.837261, 76.972077, 77.738408 +1.650000, 8.051404, 77.091762, 77.859369 +1.666667, 8.265881, 77.211631, 77.980518 +1.683333, 8.480691, 77.331687, 78.101856 +1.700000, 8.695836, 77.451930, 78.223382 +1.716667, 8.911314, 77.572359, 78.345097 +1.733333, 9.127128, 77.692975, 78.467001 +1.750000, 9.343278, 77.813778, 78.589095 +1.766667, 9.559763, 77.934769, 78.711379 +1.783333, 9.776585, 78.055948, 78.833853 +1.800000, 9.993744, 78.177315, 78.956517 +1.816667, 10.211122, 78.256130, 79.036175 +1.833333, 10.428587, 78.287099, 79.067475 +1.850000, 10.646137, 78.317961, 79.098667 +1.866667, 10.863772, 78.348835, 79.129871 +1.883333, 11.081494, 78.379721, 79.161088 +1.900000, 11.299301, 78.410619, 79.192316 +1.916667, 11.517194, 78.441530, 79.223558 +1.933333, 11.735173, 78.472452, 79.254811 +1.950000, 11.953238, 78.503387, 79.286077 +1.966667, 12.171389, 78.534334, 79.317355 +1.983333, 12.389626, 78.565294, 79.348645 +2.000000, 12.607949, 78.596265, 79.379948 +2.016667, 12.826358, 78.627249, 79.411263 +2.033333, 13.044853, 78.658244, 79.442591 +2.050000, 13.263434, 78.689252, 79.473930 +2.066667, 13.482102, 78.720273, 79.505283 +2.083333, 13.700855, 78.751305, 79.536647 +2.100000, 13.919695, 78.782350, 79.568024 +2.116667, 14.138621, 78.813407, 79.599413 +2.133333, 14.357634, 78.844476, 79.630815 +2.150000, 14.576732, 78.875557, 79.662229 +2.166667, 14.795918, 78.906650, 79.693655 +2.183333, 15.015189, 78.937756, 79.725094 +2.200000, 15.234547, 78.968874, 79.756545 +2.216667, 15.453992, 79.000005, 79.788009 +2.233333, 15.673523, 79.031147, 79.819485 +2.250000, 15.893140, 79.062302, 79.850973 +2.266667, 16.112844, 79.093469, 79.882474 +2.283333, 16.332635, 79.124648, 79.913987 +2.300000, 16.552512, 79.155840, 79.945513 +2.316667, 16.772476, 79.187044, 79.977051 +2.333333, 16.992527, 79.218260, 80.008601 +2.350000, 17.212664, 79.249488, 80.040164 +2.366667, 17.432889, 79.280729, 80.071739 +2.383333, 17.653200, 79.311982, 80.103327 +2.400000, 17.873598, 79.343247, 80.134928 +2.416667, 18.094082, 79.374525, 80.166540 +2.433333, 18.314654, 79.405815, 80.198165 +2.450000, 18.535313, 79.437117, 80.229803 +2.466667, 18.756058, 79.468432, 80.261453 +2.483333, 18.976891, 79.499759, 80.293116 +2.500000, 19.197811, 79.531098, 80.324791 +2.516667, 19.418818, 79.562450, 80.356478 +2.533333, 19.639912, 79.593814, 80.388179 +2.550000, 19.861093, 79.625190, 80.419891 +2.566667, 20.082361, 79.656578, 80.451616 +2.583333, 20.303716, 79.687979, 80.483354 +2.600000, 20.525159, 79.719393, 80.515104 +2.616667, 20.746689, 79.750819, 80.546866 +2.633333, 20.968307, 79.782257, 80.578641 +2.650000, 21.190011, 79.813707, 80.610429 +2.666667, 21.411803, 79.845170, 80.642229 +2.683333, 21.633683, 79.876645, 80.674042 +2.700000, 21.855650, 79.908133, 80.705867 +2.716667, 22.077705, 79.939633, 80.737705 +2.733333, 22.299847, 79.971145, 80.769555 +2.750000, 22.522076, 80.002670, 80.801418 +2.766667, 22.744394, 80.034207, 80.833294 +2.783333, 22.966798, 80.065757, 80.865182 +2.800000, 23.189291, 80.097319, 80.897082 +2.816667, 23.411871, 80.128893, 80.928995 +2.833333, 23.634539, 80.160480, 80.960921 +2.850000, 23.857295, 80.192079, 80.992860 +2.866667, 24.080139, 80.223691, 81.024810 +2.883333, 24.303070, 80.255315, 81.056774 +2.900000, 24.526089, 80.286952, 81.088750 +2.916667, 24.749197, 80.318601, 81.120739 +2.933333, 24.972392, 80.350263, 81.152740 +2.950000, 25.195675, 80.381937, 81.184754 +2.966667, 25.419046, 80.413623, 81.216781 +2.983333, 25.642505, 80.445322, 81.248820 +3.000000, 25.866053, 80.477034, 81.280872 +3.016667, 26.089688, 80.508758, 81.312936 +3.033333, 26.313412, 80.540494, 81.345013 +3.050000, 26.537223, 80.572243, 81.377103 +3.066667, 26.761123, 80.604004, 81.409205 +3.083333, 26.985112, 80.635778, 81.441320 +3.100000, 27.209188, 80.667565, 81.473448 +3.116667, 27.433353, 80.699364, 81.505588 +3.133333, 27.657606, 80.731175, 81.537742 +3.150000, 27.881948, 80.762999, 81.569907 +3.166667, 28.106378, 80.794836, 81.602086 +3.183333, 28.330897, 80.826685, 81.634277 +3.200000, 28.555504, 80.858546, 81.666480 +3.216667, 28.780199, 80.890420, 81.698697 +3.233333, 29.004984, 80.922307, 81.730926 +3.250000, 29.229856, 80.954206, 81.763168 +3.266667, 29.454818, 80.986118, 81.795423 +3.283333, 29.679868, 81.018042, 81.827690 +3.300000, 29.905007, 81.049979, 81.859970 +3.316667, 30.130234, 81.081928, 81.892263 +3.333333, 30.355551, 81.113890, 81.924568 +3.350000, 30.580956, 81.145865, 81.956886 +3.366667, 30.806450, 81.177852, 81.989217 +3.383333, 31.032033, 81.209852, 82.021561 +3.400000, 31.257705, 81.241864, 82.053917 +3.416667, 31.483466, 81.273889, 82.086286 +3.433333, 31.709315, 81.305927, 82.118668 +3.450000, 31.935254, 81.337977, 82.151063 +3.466667, 32.161282, 81.370040, 82.183471 +3.483333, 32.387399, 81.402115, 82.215891 +3.500000, 32.613605, 81.434203, 82.248324 +3.516667, 32.839900, 81.466304, 82.280770 +3.533333, 33.066285, 81.498417, 82.313228 +3.550000, 33.292759, 81.530543, 82.345700 +3.566667, 33.519322, 81.562682, 82.378184 +3.583333, 33.745974, 81.594833, 82.410681 +3.600000, 33.972716, 81.626997, 82.443191 +3.616667, 34.199547, 81.659174, 82.475713 +3.633333, 34.426467, 81.691363, 82.508249 +3.650000, 34.653477, 81.723565, 82.540797 +3.666667, 34.880576, 81.755779, 82.573358 +3.683333, 35.107765, 81.788007, 82.605932 +3.700000, 35.335044, 81.820247, 82.638519 +3.716667, 35.562412, 81.852499, 82.671119 +3.733333, 35.789870, 81.884765, 82.703731 +3.750000, 36.017417, 81.917043, 82.736356 +3.766667, 36.245054, 81.949333, 82.768995 +3.783333, 36.472781, 81.981637, 82.801646 +3.800000, 36.700597, 82.013953, 82.834310 +3.816667, 36.928504, 82.046282, 82.866986 +3.833333, 37.156500, 82.078623, 82.899676 +3.850000, 37.384586, 82.110978, 82.932379 +3.866667, 37.612762, 82.143345, 82.965094 +3.883333, 37.841028, 82.175724, 82.997823 +3.900000, 38.069384, 82.208117, 83.030564 +3.916667, 38.297829, 82.240522, 83.063318 +3.933333, 38.526365, 82.272940, 83.096085 +3.950000, 38.754991, 82.305371, 83.128865 +3.966667, 38.983708, 82.337815, 83.161658 +3.983333, 39.212514, 82.370271, 83.194464 +4.000000, 39.441410, 82.402740, 83.227283 diff --git a/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_20kW_ld_100kWh.csv b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_20kW_ld_100kWh.csv new file mode 100644 index 0000000..a8f002b --- /dev/null +++ b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_20kW_ld_100kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.541604, 32.496231, 32.855350 +1.016667, 1.292081, 45.028640, 45.557791 +1.033333, 2.062229, 46.208843, 46.754914 +1.050000, 2.852571, 47.420532, 47.984140 +1.066667, 3.663634, 48.663823, 49.245595 +1.083333, 4.493077, 49.766540, 50.364569 +1.100000, 5.329053, 50.158543, 50.762384 +1.116667, 6.170221, 50.470092, 51.078565 +1.133333, 7.016611, 50.783411, 51.396552 +1.150000, 7.868255, 51.098663, 51.716513 +1.166667, 8.725186, 51.415862, 52.038461 +1.183333, 9.587437, 51.735018, 52.362407 +1.200000, 10.454490, 52.023197, 52.654921 +1.216667, 11.323365, 52.132521, 52.765892 +1.233333, 12.193606, 52.214467, 52.849073 +1.250000, 13.065215, 52.296493, 52.932337 +1.266667, 13.938192, 52.378648, 53.015732 +1.283333, 14.812541, 52.460931, 53.099258 +1.300000, 15.688263, 52.543342, 53.182915 +1.316667, 16.565361, 52.625883, 53.266703 +1.333333, 17.443837, 52.708552, 53.350623 +1.350000, 18.323693, 52.791350, 53.434675 +1.366667, 19.204931, 52.874278, 53.518859 +1.383333, 20.087553, 52.957335, 53.603175 +1.400000, 20.971562, 53.040521, 53.687624 +1.416667, 21.856959, 53.123838, 53.772205 +1.433333, 22.743747, 53.207285, 53.856919 +1.450000, 23.631928, 53.290862, 53.941766 +1.466667, 24.521504, 53.374569, 54.026747 +1.483333, 25.412478, 53.458408, 54.111861 +1.500000, 26.304851, 53.542377, 54.197108 +1.516667, 27.198626, 53.626477, 54.282490 +1.533333, 28.093804, 53.710709, 54.368006 +1.550000, 28.990389, 53.795072, 54.453656 +1.566667, 29.888381, 53.879567, 54.539440 +1.583333, 30.787785, 53.964193, 54.625359 +1.600000, 31.688600, 54.048952, 54.711413 +1.616667, 32.590831, 54.133843, 54.797603 +1.633333, 33.494479, 54.218867, 54.883927 +1.650000, 34.399546, 54.304024, 54.970388 +1.666667, 35.306035, 54.389313, 55.056984 +1.683333, 36.213947, 54.474736, 55.143716 +1.700000, 37.123285, 54.560291, 55.230584 +1.716667, 38.034051, 54.645981, 55.317589 +1.733333, 38.946248, 54.731804, 55.404730 +1.750000, 39.859877, 54.817761, 55.492009 +1.766667, 40.774942, 54.903853, 55.579424 +1.783333, 41.691443, 54.990078, 55.666977 +1.800000, 42.609384, 55.076439, 55.754667 +1.816667, 43.528766, 55.162934, 55.842494 +1.833333, 44.449592, 55.249564, 55.930460 +1.850000, 45.371864, 55.336329, 56.018564 +1.866667, 46.295584, 55.423230, 56.106806 +1.883333, 47.220756, 55.510266, 56.195187 +1.900000, 48.147380, 55.597438, 56.283707 +1.916667, 49.075459, 55.684747, 56.372365 +1.933333, 50.004995, 55.772191, 56.461163 +1.950000, 50.935991, 55.859772, 56.550101 +1.966667, 51.868450, 55.947490, 56.639178 +1.983333, 52.802372, 56.035344, 56.728394 +2.000000, 53.737761, 56.123336, 56.817751 +2.016667, 54.674619, 56.211465, 56.907249 +2.033333, 55.612947, 56.299731, 56.996886 +2.050000, 56.552750, 56.388135, 57.086665 +2.066667, 57.494028, 56.476677, 57.176584 +2.083333, 58.436784, 56.565358, 57.266645 +2.100000, 59.381020, 56.654176, 57.356847 +2.116667, 60.326739, 56.743134, 57.447191 +2.133333, 61.273943, 56.832230, 57.537677 +2.150000, 62.222634, 56.921465, 57.628304 +2.166667, 63.172814, 57.010839, 57.719074 +2.183333, 64.124487, 57.100353, 57.809987 +2.200000, 65.077654, 57.190006, 57.901042 +2.216667, 66.032317, 57.279799, 57.992240 +2.233333, 66.988479, 57.369733, 58.083582 +2.250000, 67.946143, 57.459806, 58.175066 +2.266667, 68.905310, 57.550020, 58.266695 +2.283333, 69.865983, 57.640375, 58.358467 +2.300000, 70.828164, 57.730871, 58.450383 +2.316667, 71.791856, 57.821508, 58.542444 +2.333333, 72.757060, 57.912286, 58.634649 +2.350000, 73.723780, 58.003206, 58.726999 +2.366667, 74.692018, 58.094268, 58.819494 +2.383333, 75.661776, 58.185472, 58.912135 +2.400000, 76.633056, 58.276818, 59.004920 +2.416667, 77.605861, 58.368306, 59.097851 +2.433333, 78.580194, 58.459938, 59.190929 +2.450000, 79.556056, 58.551712, 59.284152 +2.466667, 80.533449, 58.643629, 59.377522 +2.483333, 81.512378, 58.735690, 59.471038 +2.500000, 82.492843, 58.827894, 59.564701 +2.516667, 83.474847, 58.920242, 59.658511 +2.533333, 84.458392, 59.012734, 59.752468 +2.550000, 85.443482, 59.105370, 59.846573 +2.566667, 86.430117, 59.198151, 59.940825 +2.583333, 87.418302, 59.291076, 60.035226 +2.600000, 88.408038, 59.384147, 60.129775 +2.616667, 89.399327, 59.477362, 60.224472 +2.633333, 90.392173, 59.570723, 60.319317 +2.650000, 91.386576, 59.664229, 60.414312 +2.666667, 92.382541, 59.757881, 60.509456 +2.683333, 93.380069, 59.851679, 60.604749 +2.700000, 94.379163, 59.945624, 60.700191 +2.716667, 95.349504, 58.220443, 58.947657 +2.733333, 96.179471, 49.798072, 50.396568 +2.750000, 96.878673, 41.952108, 42.437884 +2.766667, 97.467559, 35.333126, 35.729191 +2.783333, 97.963489, 29.755796, 30.080081 +2.800000, 98.381105, 25.056970, 25.323484 +2.816667, 98.732752, 21.098820, 21.318583 +2.833333, 99.028835, 17.764981, 17.946724 +2.850000, 99.278122, 14.957258, 15.107941 +2.866667, 99.488003, 12.592817, 12.718025 +2.883333, 99.664700, 10.601812, 10.706051 +2.900000, 99.800103, 8.124231, 8.202993 +2.916667, 99.800216, 0.006772, 0.006835 +2.933333, 99.800216, 0.000000, 0.000000 +2.950000, 99.800216, 0.000000, 0.000000 +2.966667, 99.800216, 0.000000, 0.000000 +2.983333, 99.800216, 0.000000, 0.000000 +3.000000, 99.800216, 0.000000, 0.000000 +3.016667, 99.800216, 0.000000, 0.000000 +3.033333, 99.800216, 0.000000, 0.000000 +3.050000, 99.800216, 0.000000, 0.000000 +3.066667, 99.800216, 0.000000, 0.000000 +3.083333, 99.800216, 0.000000, 0.000000 +3.100000, 99.800216, 0.000000, 0.000000 +3.116667, 99.800216, 0.000000, 0.000000 +3.133333, 99.800216, 0.000000, 0.000000 +3.150000, 99.800216, 0.000000, 0.000000 +3.166667, 99.800216, 0.000000, 0.000000 +3.183333, 99.800216, 0.000000, 0.000000 +3.200000, 99.800216, 0.000000, 0.000000 +3.216667, 99.800216, 0.000000, 0.000000 +3.233333, 99.800216, 0.000000, 0.000000 +3.250000, 99.800216, 0.000000, 0.000000 +3.266667, 99.800216, 0.000000, 0.000000 +3.283333, 99.800216, 0.000000, 0.000000 +3.300000, 99.800216, 0.000000, 0.000000 +3.316667, 99.800216, 0.000000, 0.000000 +3.333333, 99.800216, 0.000000, 0.000000 +3.350000, 99.800216, 0.000000, 0.000000 +3.366667, 99.800216, 0.000000, 0.000000 +3.383333, 99.800216, 0.000000, 0.000000 +3.400000, 99.800216, 0.000000, 0.000000 +3.416667, 99.800216, 0.000000, 0.000000 +3.433333, 99.800216, 0.000000, 0.000000 +3.450000, 99.800216, 0.000000, 0.000000 +3.466667, 99.800216, 0.000000, 0.000000 +3.483333, 99.800216, 0.000000, 0.000000 +3.500000, 99.800216, 0.000000, 0.000000 +3.516667, 99.800216, 0.000000, 0.000000 +3.533333, 99.800216, 0.000000, 0.000000 +3.550000, 99.800216, 0.000000, 0.000000 +3.566667, 99.800216, 0.000000, 0.000000 +3.583333, 99.800216, 0.000000, 0.000000 +3.600000, 99.800216, 0.000000, 0.000000 +3.616667, 99.800216, 0.000000, 0.000000 +3.633333, 99.800216, 0.000000, 0.000000 +3.650000, 99.800216, 0.000000, 0.000000 +3.666667, 99.800216, 0.000000, 0.000000 +3.683333, 99.800216, 0.000000, 0.000000 +3.700000, 99.800216, 0.000000, 0.000000 +3.716667, 99.800216, 0.000000, 0.000000 +3.733333, 99.800216, 0.000000, 0.000000 +3.750000, 99.800216, 0.000000, 0.000000 +3.766667, 99.800216, 0.000000, 0.000000 +3.783333, 99.800216, 0.000000, 0.000000 +3.800000, 99.800216, 0.000000, 0.000000 +3.816667, 99.800216, 0.000000, 0.000000 +3.833333, 99.800216, 0.000000, 0.000000 +3.850000, 99.800216, 0.000000, 0.000000 +3.866667, 99.800216, 0.000000, 0.000000 +3.883333, 99.800216, 0.000000, 0.000000 +3.900000, 99.800216, 0.000000, 0.000000 +3.916667, 99.800216, 0.000000, 0.000000 +3.933333, 99.800216, 0.000000, 0.000000 +3.950000, 99.800216, 0.000000, 0.000000 +3.966667, 99.800216, 0.000000, 0.000000 +3.983333, 99.800216, 0.000000, 0.000000 +4.000000, 99.800216, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_20kW_ld_50kWh.csv b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_20kW_ld_50kWh.csv new file mode 100644 index 0000000..6c95151 --- /dev/null +++ b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_20kW_ld_50kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 1.095073, 32.852178, 33.276334 +1.016667, 2.640966, 46.376802, 47.046309 +1.033333, 4.267627, 48.799828, 49.517697 +1.050000, 5.937222, 50.087861, 50.831985 +1.066667, 7.627546, 50.709721, 51.466656 +1.083333, 9.338801, 51.337640, 52.107602 +1.100000, 11.068216, 51.882460, 52.663798 +1.116667, 12.804228, 52.080339, 52.865825 +1.133333, 14.545668, 52.243210, 53.032118 +1.150000, 16.292552, 52.406521, 53.198866 +1.166667, 18.044897, 52.570338, 53.366136 +1.183333, 19.802719, 52.734660, 53.533929 +1.200000, 21.566035, 52.899490, 53.702246 +1.216667, 23.334863, 53.064828, 53.871089 +1.233333, 25.109218, 53.230678, 54.040460 +1.250000, 26.889120, 53.397039, 54.210360 +1.266667, 28.674584, 53.563914, 54.380791 +1.283333, 30.465627, 53.731305, 54.551755 +1.300000, 32.262267, 53.899212, 54.723253 +1.316667, 34.064522, 54.067637, 54.895287 +1.333333, 35.872408, 54.236583, 55.067859 +1.350000, 37.685943, 54.406049, 55.240970 +1.366667, 39.505144, 54.576039, 55.414621 +1.383333, 41.330030, 54.746554, 55.588815 +1.400000, 43.160616, 54.917594, 55.763554 +1.416667, 44.996921, 55.089162, 55.938838 +1.433333, 46.838963, 55.261260, 56.114670 +1.450000, 48.686760, 55.433889, 56.291051 +1.466667, 50.540328, 55.607050, 56.467984 +1.483333, 52.399686, 55.780745, 56.645469 +1.500000, 54.264852, 55.954976, 56.823508 +1.516667, 56.135844, 56.129744, 57.002103 +1.533333, 58.012679, 56.305051, 57.181257 +1.550000, 59.895375, 56.480899, 57.360969 +1.566667, 61.783951, 56.657289, 57.541243 +1.583333, 63.678426, 56.834223, 57.722080 +1.600000, 65.578816, 57.011702, 57.903482 +1.616667, 67.485140, 57.189728, 58.085450 +1.633333, 69.397417, 57.368303, 58.267986 +1.650000, 71.315664, 57.547429, 58.451093 +1.666667, 73.239901, 57.727106, 58.634771 +1.683333, 75.170146, 57.907337, 58.819022 +1.700000, 77.106417, 58.088123, 59.003849 +1.716667, 79.048732, 58.269467, 59.189253 +1.733333, 80.997111, 58.451369, 59.375235 +1.750000, 82.951572, 58.633831, 59.561799 +1.766667, 84.912134, 58.816856, 59.748944 +1.783333, 86.878815, 59.000444, 59.936674 +1.800000, 88.851635, 59.184598, 60.124989 +1.816667, 90.700941, 55.479183, 56.337332 +1.833333, 92.263089, 46.864424, 47.543555 +1.850000, 93.579734, 39.499339, 40.038881 +1.866667, 94.689188, 33.283637, 33.714978 +1.883333, 95.623875, 28.040614, 28.387495 +1.900000, 96.411197, 23.619648, 23.900135 +1.916667, 97.074296, 19.892973, 20.120911 +1.933333, 97.632708, 16.752351, 16.938425 +1.950000, 98.102914, 14.106185, 14.258703 +1.966667, 98.498815, 11.877030, 12.002496 +1.983333, 98.832130, 9.999452, 10.102993 +2.000000, 99.112737, 8.418203, 8.503889 +2.016667, 99.348958, 7.086656, 7.157740 +2.033333, 99.547808, 5.965481, 6.024576 +2.050000, 99.715192, 5.021513, 5.070730 +2.066667, 99.800206, 2.550441, 2.574739 +2.083333, 99.800277, 0.002121, 0.002141 +2.100000, 99.800277, 0.000000, 0.000000 +2.116667, 99.800277, 0.000000, 0.000000 +2.133333, 99.800277, 0.000000, 0.000000 +2.150000, 99.800277, 0.000000, 0.000000 +2.166667, 99.800277, 0.000000, 0.000000 +2.183333, 99.800277, 0.000000, 0.000000 +2.200000, 99.800277, 0.000000, 0.000000 +2.216667, 99.800277, 0.000000, 0.000000 +2.233333, 99.800277, 0.000000, 0.000000 +2.250000, 99.800277, 0.000000, 0.000000 +2.266667, 99.800277, 0.000000, 0.000000 +2.283333, 99.800277, 0.000000, 0.000000 +2.300000, 99.800277, 0.000000, 0.000000 +2.316667, 99.800277, 0.000000, 0.000000 +2.333333, 99.800277, 0.000000, 0.000000 +2.350000, 99.800277, 0.000000, 0.000000 +2.366667, 99.800277, 0.000000, 0.000000 +2.383333, 99.800277, 0.000000, 0.000000 +2.400000, 99.800277, 0.000000, 0.000000 +2.416667, 99.800277, 0.000000, 0.000000 +2.433333, 99.800277, 0.000000, 0.000000 +2.450000, 99.800277, 0.000000, 0.000000 +2.466667, 99.800277, 0.000000, 0.000000 +2.483333, 99.800277, 0.000000, 0.000000 +2.500000, 99.800277, 0.000000, 0.000000 +2.516667, 99.800277, 0.000000, 0.000000 +2.533333, 99.800277, 0.000000, 0.000000 +2.550000, 99.800277, 0.000000, 0.000000 +2.566667, 99.800277, 0.000000, 0.000000 +2.583333, 99.800277, 0.000000, 0.000000 +2.600000, 99.800277, 0.000000, 0.000000 +2.616667, 99.800277, 0.000000, 0.000000 +2.633333, 99.800277, 0.000000, 0.000000 +2.650000, 99.800277, 0.000000, 0.000000 +2.666667, 99.800277, 0.000000, 0.000000 +2.683333, 99.800277, 0.000000, 0.000000 +2.700000, 99.800277, 0.000000, 0.000000 +2.716667, 99.800277, 0.000000, 0.000000 +2.733333, 99.800277, 0.000000, 0.000000 +2.750000, 99.800277, 0.000000, 0.000000 +2.766667, 99.800277, 0.000000, 0.000000 +2.783333, 99.800277, 0.000000, 0.000000 +2.800000, 99.800277, 0.000000, 0.000000 +2.816667, 99.800277, 0.000000, 0.000000 +2.833333, 99.800277, 0.000000, 0.000000 +2.850000, 99.800277, 0.000000, 0.000000 +2.866667, 99.800277, 0.000000, 0.000000 +2.883333, 99.800277, 0.000000, 0.000000 +2.900000, 99.800277, 0.000000, 0.000000 +2.916667, 99.800277, 0.000000, 0.000000 +2.933333, 99.800277, 0.000000, 0.000000 +2.950000, 99.800277, 0.000000, 0.000000 +2.966667, 99.800277, 0.000000, 0.000000 +2.983333, 99.800277, 0.000000, 0.000000 +3.000000, 99.800277, 0.000000, 0.000000 +3.016667, 99.800277, 0.000000, 0.000000 +3.033333, 99.800277, 0.000000, 0.000000 +3.050000, 99.800277, 0.000000, 0.000000 +3.066667, 99.800277, 0.000000, 0.000000 +3.083333, 99.800277, 0.000000, 0.000000 +3.100000, 99.800277, 0.000000, 0.000000 +3.116667, 99.800277, 0.000000, 0.000000 +3.133333, 99.800277, 0.000000, 0.000000 +3.150000, 99.800277, 0.000000, 0.000000 +3.166667, 99.800277, 0.000000, 0.000000 +3.183333, 99.800277, 0.000000, 0.000000 +3.200000, 99.800277, 0.000000, 0.000000 +3.216667, 99.800277, 0.000000, 0.000000 +3.233333, 99.800277, 0.000000, 0.000000 +3.250000, 99.800277, 0.000000, 0.000000 +3.266667, 99.800277, 0.000000, 0.000000 +3.283333, 99.800277, 0.000000, 0.000000 +3.300000, 99.800277, 0.000000, 0.000000 +3.316667, 99.800277, 0.000000, 0.000000 +3.333333, 99.800277, 0.000000, 0.000000 +3.350000, 99.800277, 0.000000, 0.000000 +3.366667, 99.800277, 0.000000, 0.000000 +3.383333, 99.800277, 0.000000, 0.000000 +3.400000, 99.800277, 0.000000, 0.000000 +3.416667, 99.800277, 0.000000, 0.000000 +3.433333, 99.800277, 0.000000, 0.000000 +3.450000, 99.800277, 0.000000, 0.000000 +3.466667, 99.800277, 0.000000, 0.000000 +3.483333, 99.800277, 0.000000, 0.000000 +3.500000, 99.800277, 0.000000, 0.000000 +3.516667, 99.800277, 0.000000, 0.000000 +3.533333, 99.800277, 0.000000, 0.000000 +3.550000, 99.800277, 0.000000, 0.000000 +3.566667, 99.800277, 0.000000, 0.000000 +3.583333, 99.800277, 0.000000, 0.000000 +3.600000, 99.800277, 0.000000, 0.000000 +3.616667, 99.800277, 0.000000, 0.000000 +3.633333, 99.800277, 0.000000, 0.000000 +3.650000, 99.800277, 0.000000, 0.000000 +3.666667, 99.800277, 0.000000, 0.000000 +3.683333, 99.800277, 0.000000, 0.000000 +3.700000, 99.800277, 0.000000, 0.000000 +3.716667, 99.800277, 0.000000, 0.000000 +3.733333, 99.800277, 0.000000, 0.000000 +3.750000, 99.800277, 0.000000, 0.000000 +3.766667, 99.800277, 0.000000, 0.000000 +3.783333, 99.800277, 0.000000, 0.000000 +3.800000, 99.800277, 0.000000, 0.000000 +3.816667, 99.800277, 0.000000, 0.000000 +3.833333, 99.800277, 0.000000, 0.000000 +3.850000, 99.800277, 0.000000, 0.000000 +3.866667, 99.800277, 0.000000, 0.000000 +3.883333, 99.800277, 0.000000, 0.000000 +3.900000, 99.800277, 0.000000, 0.000000 +3.916667, 99.800277, 0.000000, 0.000000 +3.933333, 99.800277, 0.000000, 0.000000 +3.950000, 99.800277, 0.000000, 0.000000 +3.966667, 99.800277, 0.000000, 0.000000 +3.983333, 99.800277, 0.000000, 0.000000 +4.000000, 99.800277, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_20kW_md_200kWh.csv b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_20kW_md_200kWh.csv new file mode 100644 index 0000000..6de32d5 --- /dev/null +++ b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_20kW_md_200kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.269325, 32.318949, 32.646698 +1.016667, 0.639048, 44.366848, 44.831647 +1.033333, 1.013599, 44.946078, 45.417669 +1.050000, 1.393042, 45.533154, 46.011650 +1.066667, 1.777441, 46.127879, 46.613389 +1.083333, 2.166861, 46.730352, 47.222987 +1.100000, 2.561366, 47.340674, 47.840547 +1.116667, 2.961024, 47.958945, 48.466172 +1.133333, 3.365901, 48.585269, 49.099968 +1.150000, 3.776066, 49.219750, 49.742041 +1.166667, 4.191153, 49.810492, 50.339870 +1.183333, 4.608136, 50.037967, 50.570080 +1.200000, 5.026416, 50.193615, 50.727601 +1.216667, 5.445997, 50.349616, 50.885481 +1.233333, 5.866881, 50.506101, 51.043851 +1.250000, 6.289073, 50.663071, 51.202713 +1.266667, 6.712577, 50.820527, 51.362070 +1.283333, 7.137398, 50.978471, 51.521921 +1.300000, 7.563539, 51.136905, 51.682270 +1.316667, 7.991004, 51.295830, 51.843116 +1.333333, 8.419798, 51.455247, 52.004463 +1.350000, 8.849924, 51.615158, 52.166311 +1.366667, 9.281387, 51.775565, 52.328662 +1.383333, 9.714191, 51.936469, 52.491518 +1.400000, 10.148282, 52.090849, 52.647772 +1.416667, 10.582933, 52.158201, 52.715942 +1.433333, 11.017928, 52.199318, 52.757558 +1.450000, 11.453264, 52.240422, 52.799162 +1.466667, 11.888944, 52.281559, 52.840798 +1.483333, 12.324967, 52.322728, 52.882467 +1.500000, 12.761333, 52.363929, 52.924169 +1.516667, 13.198043, 52.405162, 52.965904 +1.533333, 13.635096, 52.446428, 53.007672 +1.550000, 14.072494, 52.487726, 53.049473 +1.566667, 14.510236, 52.529057, 53.091306 +1.583333, 14.948323, 52.570420, 53.133173 +1.600000, 15.386755, 52.611816, 53.175072 +1.616667, 15.825532, 52.653244, 53.217005 +1.633333, 16.264654, 52.694705, 53.258970 +1.650000, 16.704122, 52.736198, 53.300969 +1.666667, 17.143937, 52.777724, 53.343000 +1.683333, 17.584098, 52.819282, 53.385065 +1.700000, 18.024605, 52.860873, 53.427163 +1.716667, 18.465459, 52.902497, 53.469294 +1.733333, 18.906660, 52.944153, 53.511458 +1.750000, 19.348209, 52.985842, 53.553655 +1.766667, 19.790105, 53.027564, 53.595886 +1.783333, 20.232350, 53.069319, 53.638150 +1.800000, 20.674942, 53.111106, 53.680447 +1.816667, 21.117883, 53.152926, 53.722777 +1.833333, 21.561173, 53.194779, 53.765141 +1.850000, 22.004812, 53.236665, 53.807538 +1.866667, 22.448800, 53.278584, 53.849968 +1.883333, 22.893138, 53.320535, 53.892432 +1.900000, 23.337826, 53.362520, 53.934929 +1.916667, 23.782863, 53.404537, 53.977460 +1.933333, 24.228252, 53.446588, 54.020025 +1.950000, 24.673991, 53.488672, 54.062622 +1.966667, 25.120080, 53.530788, 54.105254 +1.983333, 25.566522, 53.572938, 54.147919 +2.000000, 26.013314, 53.615120, 54.190617 +2.016667, 26.460459, 53.657336, 54.233349 +2.033333, 26.907955, 53.699585, 54.276115 +2.050000, 27.355804, 53.741867, 54.318914 +2.066667, 27.804006, 53.784183, 54.361747 +2.083333, 28.252560, 53.826531, 54.404614 +2.100000, 28.701468, 53.868913, 54.447515 +2.116667, 29.150729, 53.911328, 54.490449 +2.133333, 29.600344, 53.953777, 54.533417 +2.150000, 30.050312, 53.996258, 54.576419 +2.166667, 30.500636, 54.038773, 54.619455 +2.183333, 30.951313, 54.081322, 54.662525 +2.200000, 31.402346, 54.123904, 54.705629 +2.216667, 31.853733, 54.166519, 54.748766 +2.233333, 32.305476, 54.209168, 54.791938 +2.250000, 32.757575, 54.251850, 54.835143 +2.266667, 33.210030, 54.294565, 54.878383 +2.283333, 33.662841, 54.337315, 54.921657 +2.300000, 34.116008, 54.380097, 54.964964 +2.316667, 34.569533, 54.422914, 55.008306 +2.333333, 35.023414, 54.465764, 55.051682 +2.350000, 35.477653, 54.508647, 55.095092 +2.366667, 35.932249, 54.551565, 55.138536 +2.383333, 36.387203, 54.594516, 55.182015 +2.400000, 36.842516, 54.637500, 55.225528 +2.416667, 37.298187, 54.680519, 55.269075 +2.433333, 37.754217, 54.723571, 55.312656 +2.450000, 38.210605, 54.766657, 55.356271 +2.466667, 38.667354, 54.809777, 55.399921 +2.483333, 39.124461, 54.852930, 55.443605 +2.500000, 39.581929, 54.896118, 55.487324 +2.516667, 40.039757, 54.939339, 55.531077 +2.533333, 40.497945, 54.982595, 55.574865 +2.550000, 40.956494, 55.025884, 55.618687 +2.566667, 41.415404, 55.069207, 55.662543 +2.583333, 41.874676, 55.112564, 55.706434 +2.600000, 42.334308, 55.155956, 55.750360 +2.616667, 42.794303, 55.199381, 55.794320 +2.633333, 43.254660, 55.242841, 55.838315 +2.650000, 43.715380, 55.286334, 55.882344 +2.666667, 44.176462, 55.329862, 55.926408 +2.683333, 44.637907, 55.373424, 55.970507 +2.700000, 45.099716, 55.417020, 56.014641 +2.716667, 45.561888, 55.460650, 56.058809 +2.733333, 46.024424, 55.504315, 56.103012 +2.750000, 46.487324, 55.548013, 56.147250 +2.766667, 46.950588, 55.591746, 56.191522 +2.783333, 47.414218, 55.635514, 56.235830 +2.800000, 47.878212, 55.679316, 56.280172 +2.816667, 48.342572, 55.723152, 56.324549 +2.833333, 48.807297, 55.767022, 56.368962 +2.850000, 49.272388, 55.810927, 56.413409 +2.866667, 49.737845, 55.854867, 56.457891 +2.883333, 50.203669, 55.898841, 56.502408 +2.900000, 50.669859, 55.942849, 56.546961 +2.916667, 51.136417, 55.986892, 56.591548 +2.933333, 51.603341, 56.030970, 56.636170 +2.950000, 52.070634, 56.075082, 56.680828 +2.966667, 52.538294, 56.119229, 56.725521 +2.983333, 53.006322, 56.163410, 56.770249 +3.000000, 53.474719, 56.207626, 56.815012 +3.016667, 53.943485, 56.251877, 56.859810 +3.033333, 54.412620, 56.296163, 56.904644 +3.050000, 54.882124, 56.340483, 56.949513 +3.066667, 55.351997, 56.384838, 56.994417 +3.083333, 55.822241, 56.429228, 57.039356 +3.100000, 56.292855, 56.473653, 57.084331 +3.116667, 56.763839, 56.518112, 57.129342 +3.133333, 57.235194, 56.562607, 57.174388 +3.150000, 57.706920, 56.607136, 57.219469 +3.166667, 58.179017, 56.651700, 57.264586 +3.183333, 58.651487, 56.696300, 57.309738 +3.200000, 59.124328, 56.740934, 57.354926 +3.216667, 59.597541, 56.785603, 57.400149 +3.233333, 60.071127, 56.830308, 57.445408 +3.250000, 60.545086, 56.875047, 57.490703 +3.266667, 61.019418, 56.919822, 57.536033 +3.283333, 61.494123, 56.964632, 57.581399 +3.300000, 61.969202, 57.009476, 57.626801 +3.316667, 62.444655, 57.054357, 57.672238 +3.333333, 62.920482, 57.099272, 57.717712 +3.350000, 63.396684, 57.144222, 57.763221 +3.366667, 63.873261, 57.189208, 57.808766 +3.383333, 64.350213, 57.234229, 57.854346 +3.400000, 64.827540, 57.279286, 57.899963 +3.416667, 65.305243, 57.324378, 57.945615 +3.433333, 65.783322, 57.369505, 57.991304 +3.450000, 66.261778, 57.414667, 58.037028 +3.466667, 66.740610, 57.459866, 58.082789 +3.483333, 67.219819, 57.505099, 58.128585 +3.500000, 67.699406, 57.550368, 58.174417 +3.516667, 68.179370, 57.595673, 58.220286 +3.533333, 68.659711, 57.641013, 58.266191 +3.550000, 69.140431, 57.686388, 58.312131 +3.566667, 69.621530, 57.731800, 58.358108 +3.583333, 70.103007, 57.777247, 58.404122 +3.600000, 70.584863, 57.822729, 58.450171 +3.616667, 71.067098, 57.868247, 58.496257 +3.633333, 71.549713, 57.913801, 58.542378 +3.650000, 72.032708, 57.959391, 58.588537 +3.666667, 72.516083, 58.005017, 58.634731 +3.683333, 72.999839, 58.050678, 58.680962 +3.700000, 73.483975, 58.096375, 58.727229 +3.716667, 73.968493, 58.142108, 58.773533 +3.733333, 74.453392, 58.187877, 58.819873 +3.750000, 74.938673, 58.233682, 58.866250 +3.766667, 75.424335, 58.279522, 58.912663 +3.783333, 75.910380, 58.325399, 58.959113 +3.800000, 76.396808, 58.371312, 59.005599 +3.816667, 76.883618, 58.417261, 59.052122 +3.833333, 77.370812, 58.463245, 59.098681 +3.850000, 77.858389, 58.509266, 59.145278 +3.866667, 78.346350, 58.555323, 59.191910 +3.883333, 78.834695, 58.601416, 59.238580 +3.900000, 79.323425, 58.647545, 59.285286 +3.916667, 79.812539, 58.693711, 59.332029 +3.933333, 80.302038, 58.739913, 59.378809 +3.950000, 80.791923, 58.786151, 59.425626 +3.966667, 81.282193, 58.832425, 59.472479 +3.983333, 81.772849, 58.878735, 59.519369 +4.000000, 82.263892, 58.925082, 59.566297 diff --git a/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_450kW_hd_300kWh.csv b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_450kW_hd_300kWh.csv new file mode 100644 index 0000000..0819547 --- /dev/null +++ b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_450kW_hd_300kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 1.978903, 356.202541, 361.869684 +1.016667, 5.999813, 723.763870, 740.393986 +1.033333, 10.203275, 756.623149, 774.493656 +1.050000, 14.503842, 774.101981, 792.649979 +1.066667, 18.838867, 780.304498, 799.095869 +1.083333, 23.208013, 786.446259, 805.480148 +1.100000, 27.611540, 792.634878, 811.914675 +1.116667, 32.049710, 798.870682, 818.399829 +1.133333, 36.522788, 805.154008, 824.935994 +1.150000, 41.031039, 811.485193, 831.523560 +1.166667, 45.574731, 817.864577, 838.162918 +1.183333, 50.154134, 824.292501, 844.854462 +1.200000, 54.769519, 830.769309, 851.598590 +1.216667, 59.421160, 837.295346, 858.395700 +1.233333, 64.109332, 843.870959, 865.246196 +1.250000, 68.834312, 850.496499, 872.150482 +1.266667, 73.596381, 857.172317, 879.108968 +1.283333, 78.131625, 816.343967, 836.580190 +1.300000, 81.892450, 676.948449, 691.886057 +1.316667, 84.941502, 548.829377, 559.580449 +1.333333, 87.409573, 444.252775, 452.064977 +1.350000, 89.407408, 359.610306, 365.354907 +1.366667, 91.024690, 291.110714, 295.383815 +1.383333, 92.333971, 235.670625, 238.883903 +1.400000, 93.399700, 191.831263, 194.289025 +1.416667, 94.317443, 165.193716, 167.227852 +1.433333, 95.121057, 144.650414, 146.376077 +1.450000, 95.824951, 126.701036, 128.170143 +1.466667, 96.441470, 110.973477, 112.227706 +1.483333, 96.981437, 97.193925, 98.267491 +1.500000, 97.454337, 85.122102, 86.043222 +1.516667, 97.868488, 74.547134, 75.339176 +1.533333, 98.231177, 65.284004, 65.966402 +1.550000, 98.548790, 57.170428, 57.759411 +1.566667, 98.826924, 50.064089, 50.573265 +1.583333, 99.070481, 43.840212, 44.281032 +1.600000, 99.283756, 38.389414, 38.771549 +1.616667, 99.470510, 33.615825, 33.947471 +1.633333, 99.634040, 29.435426, 29.723552 +1.650000, 99.777232, 25.774596, 26.025142 +1.666667, 99.801079, 4.292346, 4.332365 +1.683333, 99.801098, 0.003416, 0.003448 +1.700000, 99.801098, 0.000000, 0.000000 +1.716667, 99.801098, 0.000000, 0.000000 +1.733333, 99.801098, 0.000000, 0.000000 +1.750000, 99.801098, 0.000000, 0.000000 +1.766667, 99.801098, 0.000000, 0.000000 +1.783333, 99.801098, 0.000000, 0.000000 +1.800000, 99.801098, 0.000000, 0.000000 +1.816667, 99.801098, 0.000000, 0.000000 +1.833333, 99.801098, 0.000000, 0.000000 +1.850000, 99.801098, 0.000000, 0.000000 +1.866667, 99.801098, 0.000000, 0.000000 +1.883333, 99.801098, 0.000000, 0.000000 +1.900000, 99.801098, 0.000000, 0.000000 +1.916667, 99.801098, 0.000000, 0.000000 +1.933333, 99.801098, 0.000000, 0.000000 +1.950000, 99.801098, 0.000000, 0.000000 +1.966667, 99.801098, 0.000000, 0.000000 +1.983333, 99.801098, 0.000000, 0.000000 +2.000000, 99.801098, 0.000000, 0.000000 +2.016667, 99.801098, 0.000000, 0.000000 +2.033333, 99.801098, 0.000000, 0.000000 +2.050000, 99.801098, 0.000000, 0.000000 +2.066667, 99.801098, 0.000000, 0.000000 +2.083333, 99.801098, 0.000000, 0.000000 +2.100000, 99.801098, 0.000000, 0.000000 +2.116667, 99.801098, 0.000000, 0.000000 +2.133333, 99.801098, 0.000000, 0.000000 +2.150000, 99.801098, 0.000000, 0.000000 +2.166667, 99.801098, 0.000000, 0.000000 +2.183333, 99.801098, 0.000000, 0.000000 +2.200000, 99.801098, 0.000000, 0.000000 +2.216667, 99.801098, 0.000000, 0.000000 +2.233333, 99.801098, 0.000000, 0.000000 +2.250000, 99.801098, 0.000000, 0.000000 +2.266667, 99.801098, 0.000000, 0.000000 +2.283333, 99.801098, 0.000000, 0.000000 +2.300000, 99.801098, 0.000000, 0.000000 +2.316667, 99.801098, 0.000000, 0.000000 +2.333333, 99.801098, 0.000000, 0.000000 +2.350000, 99.801098, 0.000000, 0.000000 +2.366667, 99.801098, 0.000000, 0.000000 +2.383333, 99.801098, 0.000000, 0.000000 +2.400000, 99.801098, 0.000000, 0.000000 +2.416667, 99.801098, 0.000000, 0.000000 +2.433333, 99.801098, 0.000000, 0.000000 +2.450000, 99.801098, 0.000000, 0.000000 +2.466667, 99.801098, 0.000000, 0.000000 +2.483333, 99.801098, 0.000000, 0.000000 +2.500000, 99.801098, 0.000000, 0.000000 +2.516667, 99.801098, 0.000000, 0.000000 +2.533333, 99.801098, 0.000000, 0.000000 +2.550000, 99.801098, 0.000000, 0.000000 +2.566667, 99.801098, 0.000000, 0.000000 +2.583333, 99.801098, 0.000000, 0.000000 +2.600000, 99.801098, 0.000000, 0.000000 +2.616667, 99.801098, 0.000000, 0.000000 +2.633333, 99.801098, 0.000000, 0.000000 +2.650000, 99.801098, 0.000000, 0.000000 +2.666667, 99.801098, 0.000000, 0.000000 +2.683333, 99.801098, 0.000000, 0.000000 +2.700000, 99.801098, 0.000000, 0.000000 +2.716667, 99.801098, 0.000000, 0.000000 +2.733333, 99.801098, 0.000000, 0.000000 +2.750000, 99.801098, 0.000000, 0.000000 +2.766667, 99.801098, 0.000000, 0.000000 +2.783333, 99.801098, 0.000000, 0.000000 +2.800000, 99.801098, 0.000000, 0.000000 +2.816667, 99.801098, 0.000000, 0.000000 +2.833333, 99.801098, 0.000000, 0.000000 +2.850000, 99.801098, 0.000000, 0.000000 +2.866667, 99.801098, 0.000000, 0.000000 +2.883333, 99.801098, 0.000000, 0.000000 +2.900000, 99.801098, 0.000000, 0.000000 +2.916667, 99.801098, 0.000000, 0.000000 +2.933333, 99.801098, 0.000000, 0.000000 +2.950000, 99.801098, 0.000000, 0.000000 +2.966667, 99.801098, 0.000000, 0.000000 +2.983333, 99.801098, 0.000000, 0.000000 +3.000000, 99.801098, 0.000000, 0.000000 +3.016667, 99.801098, 0.000000, 0.000000 +3.033333, 99.801098, 0.000000, 0.000000 +3.050000, 99.801098, 0.000000, 0.000000 +3.066667, 99.801098, 0.000000, 0.000000 +3.083333, 99.801098, 0.000000, 0.000000 +3.100000, 99.801098, 0.000000, 0.000000 +3.116667, 99.801098, 0.000000, 0.000000 +3.133333, 99.801098, 0.000000, 0.000000 +3.150000, 99.801098, 0.000000, 0.000000 +3.166667, 99.801098, 0.000000, 0.000000 +3.183333, 99.801098, 0.000000, 0.000000 +3.200000, 99.801098, 0.000000, 0.000000 +3.216667, 99.801098, 0.000000, 0.000000 +3.233333, 99.801098, 0.000000, 0.000000 +3.250000, 99.801098, 0.000000, 0.000000 +3.266667, 99.801098, 0.000000, 0.000000 +3.283333, 99.801098, 0.000000, 0.000000 +3.300000, 99.801098, 0.000000, 0.000000 +3.316667, 99.801098, 0.000000, 0.000000 +3.333333, 99.801098, 0.000000, 0.000000 +3.350000, 99.801098, 0.000000, 0.000000 +3.366667, 99.801098, 0.000000, 0.000000 +3.383333, 99.801098, 0.000000, 0.000000 +3.400000, 99.801098, 0.000000, 0.000000 +3.416667, 99.801098, 0.000000, 0.000000 +3.433333, 99.801098, 0.000000, 0.000000 +3.450000, 99.801098, 0.000000, 0.000000 +3.466667, 99.801098, 0.000000, 0.000000 +3.483333, 99.801098, 0.000000, 0.000000 +3.500000, 99.801098, 0.000000, 0.000000 +3.516667, 99.801098, 0.000000, 0.000000 +3.533333, 99.801098, 0.000000, 0.000000 +3.550000, 99.801098, 0.000000, 0.000000 +3.566667, 99.801098, 0.000000, 0.000000 +3.583333, 99.801098, 0.000000, 0.000000 +3.600000, 99.801098, 0.000000, 0.000000 +3.616667, 99.801098, 0.000000, 0.000000 +3.633333, 99.801098, 0.000000, 0.000000 +3.650000, 99.801098, 0.000000, 0.000000 +3.666667, 99.801098, 0.000000, 0.000000 +3.683333, 99.801098, 0.000000, 0.000000 +3.700000, 99.801098, 0.000000, 0.000000 +3.716667, 99.801098, 0.000000, 0.000000 +3.733333, 99.801098, 0.000000, 0.000000 +3.750000, 99.801098, 0.000000, 0.000000 +3.766667, 99.801098, 0.000000, 0.000000 +3.783333, 99.801098, 0.000000, 0.000000 +3.800000, 99.801098, 0.000000, 0.000000 +3.816667, 99.801098, 0.000000, 0.000000 +3.833333, 99.801098, 0.000000, 0.000000 +3.850000, 99.801098, 0.000000, 0.000000 +3.866667, 99.801098, 0.000000, 0.000000 +3.883333, 99.801098, 0.000000, 0.000000 +3.900000, 99.801098, 0.000000, 0.000000 +3.916667, 99.801098, 0.000000, 0.000000 +3.933333, 99.801098, 0.000000, 0.000000 +3.950000, 99.801098, 0.000000, 0.000000 +3.966667, 99.801098, 0.000000, 0.000000 +3.983333, 99.801098, 0.000000, 0.000000 +4.000000, 99.801098, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_450kW_hd_400kWh.csv b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_450kW_hd_400kWh.csv new file mode 100644 index 0000000..9d3a575 --- /dev/null +++ b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_450kW_hd_400kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 1.456962, 349.670832, 354.613307 +1.016667, 4.375625, 700.479210, 713.884944 +1.033333, 7.426654, 732.246930, 746.595999 +1.050000, 10.566059, 753.457203, 768.452652 +1.066667, 13.748665, 763.825477, 779.141728 +1.083333, 16.950028, 768.327162, 783.783687 +1.100000, 20.170094, 772.815684, 788.412670 +1.116667, 23.408968, 777.329844, 793.068693 +1.133333, 26.666759, 781.869780, 797.751911 +1.150000, 29.943574, 786.435634, 802.462479 +1.166667, 33.239522, 791.027545, 807.200552 +1.183333, 36.554712, 795.645655, 811.966288 +1.200000, 39.889254, 800.290106, 816.759845 +1.216667, 43.243259, 804.961042, 821.581381 +1.233333, 46.616836, 809.658605, 826.431055 +1.250000, 50.010099, 814.382941, 831.309029 +1.266667, 53.423158, 819.134194, 836.215463 +1.283333, 56.856126, 823.912509, 841.150520 +1.300000, 60.309118, 828.718034, 846.114362 +1.316667, 63.782247, 833.550915, 851.107154 +1.333333, 67.275628, 838.411300, 856.129060 +1.350000, 70.789375, 843.299338, 861.180245 +1.366667, 74.323605, 848.215177, 866.260877 +1.383333, 77.878434, 853.158968, 871.371123 +1.400000, 81.450770, 857.360635, 875.714831 +1.416667, 84.630316, 763.091216, 778.384645 +1.433333, 87.214255, 620.145255, 631.297608 +1.450000, 89.287454, 497.567804, 505.644297 +1.466667, 90.950872, 399.220213, 405.142791 +1.483333, 92.285938, 320.415832, 324.812528 +1.500000, 93.362812, 258.449942, 261.770943 +1.516667, 94.285673, 221.486653, 224.217775 +1.533333, 95.093494, 193.877014, 196.192686 +1.550000, 95.801013, 169.804549, 171.775510 +1.566667, 96.420661, 148.715382, 150.397730 +1.583333, 96.963331, 130.240891, 131.680661 +1.600000, 97.438573, 114.057970, 115.293104 +1.616667, 97.854753, 99.883187, 100.945095 +1.633333, 98.219203, 87.467975, 88.382772 +1.650000, 98.538346, 76.594388, 77.383873 +1.666667, 98.817810, 67.071363, 67.753808 +1.683333, 99.062524, 58.731430, 59.322209 +1.700000, 99.276807, 51.427822, 51.939916 +1.716667, 99.464440, 45.031928, 45.476334 +1.733333, 99.628736, 39.431059, 39.817126 +1.750000, 99.772596, 34.526488, 34.862184 +1.766667, 99.801289, 6.886236, 6.950551 +1.783333, 99.801312, 0.005484, 0.005535 +1.800000, 99.801312, 0.000000, 0.000000 +1.816667, 99.801312, 0.000000, 0.000000 +1.833333, 99.801312, 0.000000, 0.000000 +1.850000, 99.801312, 0.000000, 0.000000 +1.866667, 99.801312, 0.000000, 0.000000 +1.883333, 99.801312, 0.000000, 0.000000 +1.900000, 99.801312, 0.000000, 0.000000 +1.916667, 99.801312, 0.000000, 0.000000 +1.933333, 99.801312, 0.000000, 0.000000 +1.950000, 99.801312, 0.000000, 0.000000 +1.966667, 99.801312, 0.000000, 0.000000 +1.983333, 99.801312, 0.000000, 0.000000 +2.000000, 99.801312, 0.000000, 0.000000 +2.016667, 99.801312, 0.000000, 0.000000 +2.033333, 99.801312, 0.000000, 0.000000 +2.050000, 99.801312, 0.000000, 0.000000 +2.066667, 99.801312, 0.000000, 0.000000 +2.083333, 99.801312, 0.000000, 0.000000 +2.100000, 99.801312, 0.000000, 0.000000 +2.116667, 99.801312, 0.000000, 0.000000 +2.133333, 99.801312, 0.000000, 0.000000 +2.150000, 99.801312, 0.000000, 0.000000 +2.166667, 99.801312, 0.000000, 0.000000 +2.183333, 99.801312, 0.000000, 0.000000 +2.200000, 99.801312, 0.000000, 0.000000 +2.216667, 99.801312, 0.000000, 0.000000 +2.233333, 99.801312, 0.000000, 0.000000 +2.250000, 99.801312, 0.000000, 0.000000 +2.266667, 99.801312, 0.000000, 0.000000 +2.283333, 99.801312, 0.000000, 0.000000 +2.300000, 99.801312, 0.000000, 0.000000 +2.316667, 99.801312, 0.000000, 0.000000 +2.333333, 99.801312, 0.000000, 0.000000 +2.350000, 99.801312, 0.000000, 0.000000 +2.366667, 99.801312, 0.000000, 0.000000 +2.383333, 99.801312, 0.000000, 0.000000 +2.400000, 99.801312, 0.000000, 0.000000 +2.416667, 99.801312, 0.000000, 0.000000 +2.433333, 99.801312, 0.000000, 0.000000 +2.450000, 99.801312, 0.000000, 0.000000 +2.466667, 99.801312, 0.000000, 0.000000 +2.483333, 99.801312, 0.000000, 0.000000 +2.500000, 99.801312, 0.000000, 0.000000 +2.516667, 99.801312, 0.000000, 0.000000 +2.533333, 99.801312, 0.000000, 0.000000 +2.550000, 99.801312, 0.000000, 0.000000 +2.566667, 99.801312, 0.000000, 0.000000 +2.583333, 99.801312, 0.000000, 0.000000 +2.600000, 99.801312, 0.000000, 0.000000 +2.616667, 99.801312, 0.000000, 0.000000 +2.633333, 99.801312, 0.000000, 0.000000 +2.650000, 99.801312, 0.000000, 0.000000 +2.666667, 99.801312, 0.000000, 0.000000 +2.683333, 99.801312, 0.000000, 0.000000 +2.700000, 99.801312, 0.000000, 0.000000 +2.716667, 99.801312, 0.000000, 0.000000 +2.733333, 99.801312, 0.000000, 0.000000 +2.750000, 99.801312, 0.000000, 0.000000 +2.766667, 99.801312, 0.000000, 0.000000 +2.783333, 99.801312, 0.000000, 0.000000 +2.800000, 99.801312, 0.000000, 0.000000 +2.816667, 99.801312, 0.000000, 0.000000 +2.833333, 99.801312, 0.000000, 0.000000 +2.850000, 99.801312, 0.000000, 0.000000 +2.866667, 99.801312, 0.000000, 0.000000 +2.883333, 99.801312, 0.000000, 0.000000 +2.900000, 99.801312, 0.000000, 0.000000 +2.916667, 99.801312, 0.000000, 0.000000 +2.933333, 99.801312, 0.000000, 0.000000 +2.950000, 99.801312, 0.000000, 0.000000 +2.966667, 99.801312, 0.000000, 0.000000 +2.983333, 99.801312, 0.000000, 0.000000 +3.000000, 99.801312, 0.000000, 0.000000 +3.016667, 99.801312, 0.000000, 0.000000 +3.033333, 99.801312, 0.000000, 0.000000 +3.050000, 99.801312, 0.000000, 0.000000 +3.066667, 99.801312, 0.000000, 0.000000 +3.083333, 99.801312, 0.000000, 0.000000 +3.100000, 99.801312, 0.000000, 0.000000 +3.116667, 99.801312, 0.000000, 0.000000 +3.133333, 99.801312, 0.000000, 0.000000 +3.150000, 99.801312, 0.000000, 0.000000 +3.166667, 99.801312, 0.000000, 0.000000 +3.183333, 99.801312, 0.000000, 0.000000 +3.200000, 99.801312, 0.000000, 0.000000 +3.216667, 99.801312, 0.000000, 0.000000 +3.233333, 99.801312, 0.000000, 0.000000 +3.250000, 99.801312, 0.000000, 0.000000 +3.266667, 99.801312, 0.000000, 0.000000 +3.283333, 99.801312, 0.000000, 0.000000 +3.300000, 99.801312, 0.000000, 0.000000 +3.316667, 99.801312, 0.000000, 0.000000 +3.333333, 99.801312, 0.000000, 0.000000 +3.350000, 99.801312, 0.000000, 0.000000 +3.366667, 99.801312, 0.000000, 0.000000 +3.383333, 99.801312, 0.000000, 0.000000 +3.400000, 99.801312, 0.000000, 0.000000 +3.416667, 99.801312, 0.000000, 0.000000 +3.433333, 99.801312, 0.000000, 0.000000 +3.450000, 99.801312, 0.000000, 0.000000 +3.466667, 99.801312, 0.000000, 0.000000 +3.483333, 99.801312, 0.000000, 0.000000 +3.500000, 99.801312, 0.000000, 0.000000 +3.516667, 99.801312, 0.000000, 0.000000 +3.533333, 99.801312, 0.000000, 0.000000 +3.550000, 99.801312, 0.000000, 0.000000 +3.566667, 99.801312, 0.000000, 0.000000 +3.583333, 99.801312, 0.000000, 0.000000 +3.600000, 99.801312, 0.000000, 0.000000 +3.616667, 99.801312, 0.000000, 0.000000 +3.633333, 99.801312, 0.000000, 0.000000 +3.650000, 99.801312, 0.000000, 0.000000 +3.666667, 99.801312, 0.000000, 0.000000 +3.683333, 99.801312, 0.000000, 0.000000 +3.700000, 99.801312, 0.000000, 0.000000 +3.716667, 99.801312, 0.000000, 0.000000 +3.733333, 99.801312, 0.000000, 0.000000 +3.750000, 99.801312, 0.000000, 0.000000 +3.766667, 99.801312, 0.000000, 0.000000 +3.783333, 99.801312, 0.000000, 0.000000 +3.800000, 99.801312, 0.000000, 0.000000 +3.816667, 99.801312, 0.000000, 0.000000 +3.833333, 99.801312, 0.000000, 0.000000 +3.850000, 99.801312, 0.000000, 0.000000 +3.866667, 99.801312, 0.000000, 0.000000 +3.883333, 99.801312, 0.000000, 0.000000 +3.900000, 99.801312, 0.000000, 0.000000 +3.916667, 99.801312, 0.000000, 0.000000 +3.933333, 99.801312, 0.000000, 0.000000 +3.950000, 99.801312, 0.000000, 0.000000 +3.966667, 99.801312, 0.000000, 0.000000 +3.983333, 99.801312, 0.000000, 0.000000 +4.000000, 99.801312, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_450kW_hd_600kWh.csv b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_450kW_hd_600kWh.csv new file mode 100644 index 0000000..0166e9e --- /dev/null +++ b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_450kW_hd_600kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.974113, 350.680825, 355.065527 +1.016667, 2.895314, 691.632075, 702.499701 +1.033333, 4.929654, 732.362447, 744.152881 +1.050000, 7.010644, 749.156633, 761.336852 +1.066667, 9.126391, 761.668746, 774.142895 +1.083333, 11.272622, 772.643141, 785.377580 +1.100000, 13.429623, 776.520321, 789.347274 +1.116667, 15.595054, 779.555282, 792.454854 +1.133333, 17.768939, 782.598677, 795.571249 +1.150000, 19.951311, 785.653778, 798.699810 +1.166667, 22.142202, 788.720628, 801.840584 +1.183333, 24.341644, 791.799271, 804.993618 +1.200000, 26.549671, 794.889751, 808.158959 +1.216667, 28.766316, 797.992111, 811.336654 +1.233333, 30.991611, 801.106397, 814.526750 +1.250000, 33.225591, 804.232653, 817.729296 +1.266667, 35.468288, 807.370923, 820.944339 +1.283333, 37.719736, 810.521251, 824.171928 +1.300000, 39.979968, 813.683684, 827.412110 +1.316667, 42.249019, 816.858265, 830.664933 +1.333333, 44.526922, 820.045040, 833.930447 +1.350000, 46.813711, 823.244054, 837.208700 +1.366667, 49.109420, 826.455353, 840.499742 +1.383333, 51.414084, 829.678983, 843.803620 +1.400000, 53.727737, 832.914988, 847.120385 +1.416667, 56.050413, 836.163416, 850.450086 +1.433333, 58.382147, 839.424312, 853.792772 +1.450000, 60.722974, 842.697722, 857.148493 +1.466667, 63.072929, 845.983694, 860.517301 +1.483333, 65.432046, 849.282273, 863.899243 +1.500000, 67.800362, 852.593506, 867.294372 +1.516667, 70.177910, 855.917441, 870.702737 +1.533333, 72.564727, 859.254124, 874.124390 +1.550000, 74.960848, 862.603602, 877.559381 +1.566667, 77.366309, 865.965923, 881.007762 +1.583333, 79.781146, 869.341135, 884.469583 +1.600000, 82.205394, 872.729285, 887.944897 +1.616667, 84.639089, 876.130421, 891.433754 +1.633333, 87.064639, 873.198013, 888.425700 +1.650000, 89.160663, 754.568662, 766.875648 +1.666667, 90.855783, 610.243062, 619.362007 +1.683333, 92.214133, 489.006044, 495.754643 +1.700000, 93.306433, 393.227893, 398.301205 +1.716667, 94.237399, 335.147749, 339.289552 +1.733333, 95.051755, 293.168177, 296.676223 +1.750000, 95.764871, 256.721842, 259.706493 +1.766667, 96.389325, 224.803545, 227.350266 +1.783333, 96.936132, 196.850535, 199.029379 +1.800000, 97.414941, 172.370938, 174.239600 +1.816667, 97.834201, 150.933717, 152.539923 +1.833333, 98.201315, 132.161191, 133.544594 +1.850000, 98.522767, 115.722459, 116.916142 +1.866667, 98.804232, 101.327635, 102.359312 +1.883333, 99.050684, 88.722780, 89.615757 +1.900000, 99.266477, 77.685461, 78.459407 +1.916667, 99.455424, 68.020849, 68.692424 +1.933333, 99.620864, 59.558307, 60.141666 +1.950000, 99.765721, 52.148388, 52.655593 +1.966667, 99.801664, 12.939721, 13.060885 +1.983333, 99.801693, 0.010294, 0.010389 +2.000000, 99.801693, 0.000000, 0.000000 +2.016667, 99.801693, 0.000000, 0.000000 +2.033333, 99.801693, 0.000000, 0.000000 +2.050000, 99.801693, 0.000000, 0.000000 +2.066667, 99.801693, 0.000000, 0.000000 +2.083333, 99.801693, 0.000000, 0.000000 +2.100000, 99.801693, 0.000000, 0.000000 +2.116667, 99.801693, 0.000000, 0.000000 +2.133333, 99.801693, 0.000000, 0.000000 +2.150000, 99.801693, 0.000000, 0.000000 +2.166667, 99.801693, 0.000000, 0.000000 +2.183333, 99.801693, 0.000000, 0.000000 +2.200000, 99.801693, 0.000000, 0.000000 +2.216667, 99.801693, 0.000000, 0.000000 +2.233333, 99.801693, 0.000000, 0.000000 +2.250000, 99.801693, 0.000000, 0.000000 +2.266667, 99.801693, 0.000000, 0.000000 +2.283333, 99.801693, 0.000000, 0.000000 +2.300000, 99.801693, 0.000000, 0.000000 +2.316667, 99.801693, 0.000000, 0.000000 +2.333333, 99.801693, 0.000000, 0.000000 +2.350000, 99.801693, 0.000000, 0.000000 +2.366667, 99.801693, 0.000000, 0.000000 +2.383333, 99.801693, 0.000000, 0.000000 +2.400000, 99.801693, 0.000000, 0.000000 +2.416667, 99.801693, 0.000000, 0.000000 +2.433333, 99.801693, 0.000000, 0.000000 +2.450000, 99.801693, 0.000000, 0.000000 +2.466667, 99.801693, 0.000000, 0.000000 +2.483333, 99.801693, 0.000000, 0.000000 +2.500000, 99.801693, 0.000000, 0.000000 +2.516667, 99.801693, 0.000000, 0.000000 +2.533333, 99.801693, 0.000000, 0.000000 +2.550000, 99.801693, 0.000000, 0.000000 +2.566667, 99.801693, 0.000000, 0.000000 +2.583333, 99.801693, 0.000000, 0.000000 +2.600000, 99.801693, 0.000000, 0.000000 +2.616667, 99.801693, 0.000000, 0.000000 +2.633333, 99.801693, 0.000000, 0.000000 +2.650000, 99.801693, 0.000000, 0.000000 +2.666667, 99.801693, 0.000000, 0.000000 +2.683333, 99.801693, 0.000000, 0.000000 +2.700000, 99.801693, 0.000000, 0.000000 +2.716667, 99.801693, 0.000000, 0.000000 +2.733333, 99.801693, 0.000000, 0.000000 +2.750000, 99.801693, 0.000000, 0.000000 +2.766667, 99.801693, 0.000000, 0.000000 +2.783333, 99.801693, 0.000000, 0.000000 +2.800000, 99.801693, 0.000000, 0.000000 +2.816667, 99.801693, 0.000000, 0.000000 +2.833333, 99.801693, 0.000000, 0.000000 +2.850000, 99.801693, 0.000000, 0.000000 +2.866667, 99.801693, 0.000000, 0.000000 +2.883333, 99.801693, 0.000000, 0.000000 +2.900000, 99.801693, 0.000000, 0.000000 +2.916667, 99.801693, 0.000000, 0.000000 +2.933333, 99.801693, 0.000000, 0.000000 +2.950000, 99.801693, 0.000000, 0.000000 +2.966667, 99.801693, 0.000000, 0.000000 +2.983333, 99.801693, 0.000000, 0.000000 +3.000000, 99.801693, 0.000000, 0.000000 +3.016667, 99.801693, 0.000000, 0.000000 +3.033333, 99.801693, 0.000000, 0.000000 +3.050000, 99.801693, 0.000000, 0.000000 +3.066667, 99.801693, 0.000000, 0.000000 +3.083333, 99.801693, 0.000000, 0.000000 +3.100000, 99.801693, 0.000000, 0.000000 +3.116667, 99.801693, 0.000000, 0.000000 +3.133333, 99.801693, 0.000000, 0.000000 +3.150000, 99.801693, 0.000000, 0.000000 +3.166667, 99.801693, 0.000000, 0.000000 +3.183333, 99.801693, 0.000000, 0.000000 +3.200000, 99.801693, 0.000000, 0.000000 +3.216667, 99.801693, 0.000000, 0.000000 +3.233333, 99.801693, 0.000000, 0.000000 +3.250000, 99.801693, 0.000000, 0.000000 +3.266667, 99.801693, 0.000000, 0.000000 +3.283333, 99.801693, 0.000000, 0.000000 +3.300000, 99.801693, 0.000000, 0.000000 +3.316667, 99.801693, 0.000000, 0.000000 +3.333333, 99.801693, 0.000000, 0.000000 +3.350000, 99.801693, 0.000000, 0.000000 +3.366667, 99.801693, 0.000000, 0.000000 +3.383333, 99.801693, 0.000000, 0.000000 +3.400000, 99.801693, 0.000000, 0.000000 +3.416667, 99.801693, 0.000000, 0.000000 +3.433333, 99.801693, 0.000000, 0.000000 +3.450000, 99.801693, 0.000000, 0.000000 +3.466667, 99.801693, 0.000000, 0.000000 +3.483333, 99.801693, 0.000000, 0.000000 +3.500000, 99.801693, 0.000000, 0.000000 +3.516667, 99.801693, 0.000000, 0.000000 +3.533333, 99.801693, 0.000000, 0.000000 +3.550000, 99.801693, 0.000000, 0.000000 +3.566667, 99.801693, 0.000000, 0.000000 +3.583333, 99.801693, 0.000000, 0.000000 +3.600000, 99.801693, 0.000000, 0.000000 +3.616667, 99.801693, 0.000000, 0.000000 +3.633333, 99.801693, 0.000000, 0.000000 +3.650000, 99.801693, 0.000000, 0.000000 +3.666667, 99.801693, 0.000000, 0.000000 +3.683333, 99.801693, 0.000000, 0.000000 +3.700000, 99.801693, 0.000000, 0.000000 +3.716667, 99.801693, 0.000000, 0.000000 +3.733333, 99.801693, 0.000000, 0.000000 +3.750000, 99.801693, 0.000000, 0.000000 +3.766667, 99.801693, 0.000000, 0.000000 +3.783333, 99.801693, 0.000000, 0.000000 +3.800000, 99.801693, 0.000000, 0.000000 +3.816667, 99.801693, 0.000000, 0.000000 +3.833333, 99.801693, 0.000000, 0.000000 +3.850000, 99.801693, 0.000000, 0.000000 +3.866667, 99.801693, 0.000000, 0.000000 +3.883333, 99.801693, 0.000000, 0.000000 +3.900000, 99.801693, 0.000000, 0.000000 +3.916667, 99.801693, 0.000000, 0.000000 +3.933333, 99.801693, 0.000000, 0.000000 +3.950000, 99.801693, 0.000000, 0.000000 +3.966667, 99.801693, 0.000000, 0.000000 +3.983333, 99.801693, 0.000000, 0.000000 +4.000000, 99.801693, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_450kW_ld_100kWh.csv b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_450kW_ld_100kWh.csv new file mode 100644 index 0000000..863092c --- /dev/null +++ b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_450kW_ld_100kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 3.277102, 196.626130, 200.633388 +1.016667, 8.631848, 321.284722, 330.185018 +1.033333, 14.206680, 334.489924, 344.019657 +1.050000, 19.846382, 338.382162, 348.101550 +1.066667, 25.543273, 341.813443, 351.701589 +1.083333, 31.297878, 345.276294, 355.336239 +1.100000, 37.110757, 348.772774, 359.007702 +1.116667, 42.982477, 352.303177, 362.716336 +1.133333, 48.913607, 355.867803, 366.462501 +1.150000, 54.904723, 359.466952, 370.246561 +1.166667, 60.956405, 363.100925, 374.068883 +1.183333, 67.069239, 366.770028, 377.929837 +1.200000, 72.814788, 344.732917, 354.765804 +1.216667, 77.538831, 283.442633, 290.658256 +1.233333, 81.381165, 230.540014, 235.692882 +1.250000, 84.503011, 187.310775, 191.027267 +1.266667, 87.037904, 152.093560, 154.803066 +1.283333, 89.095184, 123.436820, 125.433725 +1.300000, 90.764180, 100.139760, 101.627269 +1.316667, 92.117744, 81.213813, 82.333301 +1.333333, 93.216936, 65.951549, 66.803970 +1.350000, 94.155659, 56.323391, 57.020913 +1.366667, 94.978024, 49.341851, 49.933603 +1.383333, 95.698573, 43.232957, 43.736662 +1.400000, 96.329867, 37.877628, 38.307599 +1.416667, 96.882926, 33.183545, 33.551532 +1.433333, 97.367418, 29.069557, 29.385251 +1.450000, 97.791824, 25.464357, 25.735782 +1.466667, 98.163580, 22.305314, 22.539141 +1.483333, 98.489204, 19.537437, 19.739239 +1.500000, 98.774411, 17.112463, 17.286909 +1.516667, 99.024212, 14.988042, 15.139061 +1.533333, 99.242996, 13.127025, 13.257934 +1.550000, 99.434610, 11.496829, 11.610441 +1.566667, 99.602424, 10.068886, 10.167588 +1.583333, 99.749393, 8.818149, 8.903978 +1.600000, 99.800348, 3.057276, 3.086056 +1.616667, 99.800390, 0.002531, 0.002555 +1.633333, 99.800390, 0.000000, 0.000000 +1.650000, 99.800390, 0.000000, 0.000000 +1.666667, 99.800390, 0.000000, 0.000000 +1.683333, 99.800390, 0.000000, 0.000000 +1.700000, 99.800390, 0.000000, 0.000000 +1.716667, 99.800390, 0.000000, 0.000000 +1.733333, 99.800390, 0.000000, 0.000000 +1.750000, 99.800390, 0.000000, 0.000000 +1.766667, 99.800390, 0.000000, 0.000000 +1.783333, 99.800390, 0.000000, 0.000000 +1.800000, 99.800390, 0.000000, 0.000000 +1.816667, 99.800390, 0.000000, 0.000000 +1.833333, 99.800390, 0.000000, 0.000000 +1.850000, 99.800390, 0.000000, 0.000000 +1.866667, 99.800390, 0.000000, 0.000000 +1.883333, 99.800390, 0.000000, 0.000000 +1.900000, 99.800390, 0.000000, 0.000000 +1.916667, 99.800390, 0.000000, 0.000000 +1.933333, 99.800390, 0.000000, 0.000000 +1.950000, 99.800390, 0.000000, 0.000000 +1.966667, 99.800390, 0.000000, 0.000000 +1.983333, 99.800390, 0.000000, 0.000000 +2.000000, 99.800390, 0.000000, 0.000000 +2.016667, 99.800390, 0.000000, 0.000000 +2.033333, 99.800390, 0.000000, 0.000000 +2.050000, 99.800390, 0.000000, 0.000000 +2.066667, 99.800390, 0.000000, 0.000000 +2.083333, 99.800390, 0.000000, 0.000000 +2.100000, 99.800390, 0.000000, 0.000000 +2.116667, 99.800390, 0.000000, 0.000000 +2.133333, 99.800390, 0.000000, 0.000000 +2.150000, 99.800390, 0.000000, 0.000000 +2.166667, 99.800390, 0.000000, 0.000000 +2.183333, 99.800390, 0.000000, 0.000000 +2.200000, 99.800390, 0.000000, 0.000000 +2.216667, 99.800390, 0.000000, 0.000000 +2.233333, 99.800390, 0.000000, 0.000000 +2.250000, 99.800390, 0.000000, 0.000000 +2.266667, 99.800390, 0.000000, 0.000000 +2.283333, 99.800390, 0.000000, 0.000000 +2.300000, 99.800390, 0.000000, 0.000000 +2.316667, 99.800390, 0.000000, 0.000000 +2.333333, 99.800390, 0.000000, 0.000000 +2.350000, 99.800390, 0.000000, 0.000000 +2.366667, 99.800390, 0.000000, 0.000000 +2.383333, 99.800390, 0.000000, 0.000000 +2.400000, 99.800390, 0.000000, 0.000000 +2.416667, 99.800390, 0.000000, 0.000000 +2.433333, 99.800390, 0.000000, 0.000000 +2.450000, 99.800390, 0.000000, 0.000000 +2.466667, 99.800390, 0.000000, 0.000000 +2.483333, 99.800390, 0.000000, 0.000000 +2.500000, 99.800390, 0.000000, 0.000000 +2.516667, 99.800390, 0.000000, 0.000000 +2.533333, 99.800390, 0.000000, 0.000000 +2.550000, 99.800390, 0.000000, 0.000000 +2.566667, 99.800390, 0.000000, 0.000000 +2.583333, 99.800390, 0.000000, 0.000000 +2.600000, 99.800390, 0.000000, 0.000000 +2.616667, 99.800390, 0.000000, 0.000000 +2.633333, 99.800390, 0.000000, 0.000000 +2.650000, 99.800390, 0.000000, 0.000000 +2.666667, 99.800390, 0.000000, 0.000000 +2.683333, 99.800390, 0.000000, 0.000000 +2.700000, 99.800390, 0.000000, 0.000000 +2.716667, 99.800390, 0.000000, 0.000000 +2.733333, 99.800390, 0.000000, 0.000000 +2.750000, 99.800390, 0.000000, 0.000000 +2.766667, 99.800390, 0.000000, 0.000000 +2.783333, 99.800390, 0.000000, 0.000000 +2.800000, 99.800390, 0.000000, 0.000000 +2.816667, 99.800390, 0.000000, 0.000000 +2.833333, 99.800390, 0.000000, 0.000000 +2.850000, 99.800390, 0.000000, 0.000000 +2.866667, 99.800390, 0.000000, 0.000000 +2.883333, 99.800390, 0.000000, 0.000000 +2.900000, 99.800390, 0.000000, 0.000000 +2.916667, 99.800390, 0.000000, 0.000000 +2.933333, 99.800390, 0.000000, 0.000000 +2.950000, 99.800390, 0.000000, 0.000000 +2.966667, 99.800390, 0.000000, 0.000000 +2.983333, 99.800390, 0.000000, 0.000000 +3.000000, 99.800390, 0.000000, 0.000000 +3.016667, 99.800390, 0.000000, 0.000000 +3.033333, 99.800390, 0.000000, 0.000000 +3.050000, 99.800390, 0.000000, 0.000000 +3.066667, 99.800390, 0.000000, 0.000000 +3.083333, 99.800390, 0.000000, 0.000000 +3.100000, 99.800390, 0.000000, 0.000000 +3.116667, 99.800390, 0.000000, 0.000000 +3.133333, 99.800390, 0.000000, 0.000000 +3.150000, 99.800390, 0.000000, 0.000000 +3.166667, 99.800390, 0.000000, 0.000000 +3.183333, 99.800390, 0.000000, 0.000000 +3.200000, 99.800390, 0.000000, 0.000000 +3.216667, 99.800390, 0.000000, 0.000000 +3.233333, 99.800390, 0.000000, 0.000000 +3.250000, 99.800390, 0.000000, 0.000000 +3.266667, 99.800390, 0.000000, 0.000000 +3.283333, 99.800390, 0.000000, 0.000000 +3.300000, 99.800390, 0.000000, 0.000000 +3.316667, 99.800390, 0.000000, 0.000000 +3.333333, 99.800390, 0.000000, 0.000000 +3.350000, 99.800390, 0.000000, 0.000000 +3.366667, 99.800390, 0.000000, 0.000000 +3.383333, 99.800390, 0.000000, 0.000000 +3.400000, 99.800390, 0.000000, 0.000000 +3.416667, 99.800390, 0.000000, 0.000000 +3.433333, 99.800390, 0.000000, 0.000000 +3.450000, 99.800390, 0.000000, 0.000000 +3.466667, 99.800390, 0.000000, 0.000000 +3.483333, 99.800390, 0.000000, 0.000000 +3.500000, 99.800390, 0.000000, 0.000000 +3.516667, 99.800390, 0.000000, 0.000000 +3.533333, 99.800390, 0.000000, 0.000000 +3.550000, 99.800390, 0.000000, 0.000000 +3.566667, 99.800390, 0.000000, 0.000000 +3.583333, 99.800390, 0.000000, 0.000000 +3.600000, 99.800390, 0.000000, 0.000000 +3.616667, 99.800390, 0.000000, 0.000000 +3.633333, 99.800390, 0.000000, 0.000000 +3.650000, 99.800390, 0.000000, 0.000000 +3.666667, 99.800390, 0.000000, 0.000000 +3.683333, 99.800390, 0.000000, 0.000000 +3.700000, 99.800390, 0.000000, 0.000000 +3.716667, 99.800390, 0.000000, 0.000000 +3.733333, 99.800390, 0.000000, 0.000000 +3.750000, 99.800390, 0.000000, 0.000000 +3.766667, 99.800390, 0.000000, 0.000000 +3.783333, 99.800390, 0.000000, 0.000000 +3.800000, 99.800390, 0.000000, 0.000000 +3.816667, 99.800390, 0.000000, 0.000000 +3.833333, 99.800390, 0.000000, 0.000000 +3.850000, 99.800390, 0.000000, 0.000000 +3.866667, 99.800390, 0.000000, 0.000000 +3.883333, 99.800390, 0.000000, 0.000000 +3.900000, 99.800390, 0.000000, 0.000000 +3.916667, 99.800390, 0.000000, 0.000000 +3.933333, 99.800390, 0.000000, 0.000000 +3.950000, 99.800390, 0.000000, 0.000000 +3.966667, 99.800390, 0.000000, 0.000000 +3.983333, 99.800390, 0.000000, 0.000000 +4.000000, 99.800390, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_450kW_ld_50kWh.csv b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_450kW_ld_50kWh.csv new file mode 100644 index 0000000..cb0fbc1 --- /dev/null +++ b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_450kW_ld_50kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 3.539523, 106.185693, 108.446743 +1.016667, 8.914655, 161.253967, 165.732814 +1.033333, 14.501086, 167.592915, 172.374666 +1.050000, 20.149390, 169.449135, 174.321474 +1.066667, 25.855008, 171.168530, 176.125544 +1.083333, 31.618483, 172.904264, 177.947505 +1.100000, 37.440379, 174.656869, 179.787938 +1.116667, 43.321262, 176.426494, 181.647022 +1.133333, 49.261705, 178.213288, 183.524938 +1.150000, 55.262285, 180.017402, 185.421868 +1.166667, 61.323585, 181.838988, 187.337997 +1.183333, 67.446191, 183.678199, 189.273511 +1.200000, 73.135726, 170.686050, 175.619229 +1.216667, 77.793213, 139.724612, 143.248650 +1.233333, 81.583485, 113.708137, 116.228943 +1.250000, 84.664902, 92.442512, 94.263740 +1.266667, 87.168127, 75.096745, 76.426397 +1.283333, 89.200400, 60.968188, 61.949295 +1.300000, 90.849504, 49.473140, 50.204685 +1.316667, 92.187146, 40.129247, 40.680244 +1.333333, 93.274607, 32.623833, 33.044204 +1.350000, 94.206790, 27.965501, 28.311217 +1.366667, 95.023453, 24.499894, 24.793249 +1.383333, 95.738941, 21.464635, 21.714354 +1.400000, 96.365739, 18.803942, 19.017113 +1.416667, 96.914804, 16.471933, 16.654378 +1.433333, 97.395746, 14.428269, 14.584787 +1.450000, 97.816996, 12.637497, 12.772067 +1.466667, 98.185945, 11.068479, 11.184406 +1.483333, 98.509074, 9.693873, 9.793920 +1.500000, 98.792064, 8.489682, 8.576163 +1.516667, 99.039892, 7.434848, 7.509712 +1.533333, 99.256922, 6.510900, 6.575792 +1.550000, 99.446977, 5.701638, 5.757952 +1.566667, 99.613405, 4.992859, 5.041779 +1.583333, 99.759142, 4.372110, 4.414647 +1.600000, 99.800286, 1.234310, 1.245889 +1.616667, 99.800320, 0.001022, 0.001031 +1.633333, 99.800320, 0.000000, 0.000000 +1.650000, 99.800320, 0.000000, 0.000000 +1.666667, 99.800320, 0.000000, 0.000000 +1.683333, 99.800320, 0.000000, 0.000000 +1.700000, 99.800320, 0.000000, 0.000000 +1.716667, 99.800320, 0.000000, 0.000000 +1.733333, 99.800320, 0.000000, 0.000000 +1.750000, 99.800320, 0.000000, 0.000000 +1.766667, 99.800320, 0.000000, 0.000000 +1.783333, 99.800320, 0.000000, 0.000000 +1.800000, 99.800320, 0.000000, 0.000000 +1.816667, 99.800320, 0.000000, 0.000000 +1.833333, 99.800320, 0.000000, 0.000000 +1.850000, 99.800320, 0.000000, 0.000000 +1.866667, 99.800320, 0.000000, 0.000000 +1.883333, 99.800320, 0.000000, 0.000000 +1.900000, 99.800320, 0.000000, 0.000000 +1.916667, 99.800320, 0.000000, 0.000000 +1.933333, 99.800320, 0.000000, 0.000000 +1.950000, 99.800320, 0.000000, 0.000000 +1.966667, 99.800320, 0.000000, 0.000000 +1.983333, 99.800320, 0.000000, 0.000000 +2.000000, 99.800320, 0.000000, 0.000000 +2.016667, 99.800320, 0.000000, 0.000000 +2.033333, 99.800320, 0.000000, 0.000000 +2.050000, 99.800320, 0.000000, 0.000000 +2.066667, 99.800320, 0.000000, 0.000000 +2.083333, 99.800320, 0.000000, 0.000000 +2.100000, 99.800320, 0.000000, 0.000000 +2.116667, 99.800320, 0.000000, 0.000000 +2.133333, 99.800320, 0.000000, 0.000000 +2.150000, 99.800320, 0.000000, 0.000000 +2.166667, 99.800320, 0.000000, 0.000000 +2.183333, 99.800320, 0.000000, 0.000000 +2.200000, 99.800320, 0.000000, 0.000000 +2.216667, 99.800320, 0.000000, 0.000000 +2.233333, 99.800320, 0.000000, 0.000000 +2.250000, 99.800320, 0.000000, 0.000000 +2.266667, 99.800320, 0.000000, 0.000000 +2.283333, 99.800320, 0.000000, 0.000000 +2.300000, 99.800320, 0.000000, 0.000000 +2.316667, 99.800320, 0.000000, 0.000000 +2.333333, 99.800320, 0.000000, 0.000000 +2.350000, 99.800320, 0.000000, 0.000000 +2.366667, 99.800320, 0.000000, 0.000000 +2.383333, 99.800320, 0.000000, 0.000000 +2.400000, 99.800320, 0.000000, 0.000000 +2.416667, 99.800320, 0.000000, 0.000000 +2.433333, 99.800320, 0.000000, 0.000000 +2.450000, 99.800320, 0.000000, 0.000000 +2.466667, 99.800320, 0.000000, 0.000000 +2.483333, 99.800320, 0.000000, 0.000000 +2.500000, 99.800320, 0.000000, 0.000000 +2.516667, 99.800320, 0.000000, 0.000000 +2.533333, 99.800320, 0.000000, 0.000000 +2.550000, 99.800320, 0.000000, 0.000000 +2.566667, 99.800320, 0.000000, 0.000000 +2.583333, 99.800320, 0.000000, 0.000000 +2.600000, 99.800320, 0.000000, 0.000000 +2.616667, 99.800320, 0.000000, 0.000000 +2.633333, 99.800320, 0.000000, 0.000000 +2.650000, 99.800320, 0.000000, 0.000000 +2.666667, 99.800320, 0.000000, 0.000000 +2.683333, 99.800320, 0.000000, 0.000000 +2.700000, 99.800320, 0.000000, 0.000000 +2.716667, 99.800320, 0.000000, 0.000000 +2.733333, 99.800320, 0.000000, 0.000000 +2.750000, 99.800320, 0.000000, 0.000000 +2.766667, 99.800320, 0.000000, 0.000000 +2.783333, 99.800320, 0.000000, 0.000000 +2.800000, 99.800320, 0.000000, 0.000000 +2.816667, 99.800320, 0.000000, 0.000000 +2.833333, 99.800320, 0.000000, 0.000000 +2.850000, 99.800320, 0.000000, 0.000000 +2.866667, 99.800320, 0.000000, 0.000000 +2.883333, 99.800320, 0.000000, 0.000000 +2.900000, 99.800320, 0.000000, 0.000000 +2.916667, 99.800320, 0.000000, 0.000000 +2.933333, 99.800320, 0.000000, 0.000000 +2.950000, 99.800320, 0.000000, 0.000000 +2.966667, 99.800320, 0.000000, 0.000000 +2.983333, 99.800320, 0.000000, 0.000000 +3.000000, 99.800320, 0.000000, 0.000000 +3.016667, 99.800320, 0.000000, 0.000000 +3.033333, 99.800320, 0.000000, 0.000000 +3.050000, 99.800320, 0.000000, 0.000000 +3.066667, 99.800320, 0.000000, 0.000000 +3.083333, 99.800320, 0.000000, 0.000000 +3.100000, 99.800320, 0.000000, 0.000000 +3.116667, 99.800320, 0.000000, 0.000000 +3.133333, 99.800320, 0.000000, 0.000000 +3.150000, 99.800320, 0.000000, 0.000000 +3.166667, 99.800320, 0.000000, 0.000000 +3.183333, 99.800320, 0.000000, 0.000000 +3.200000, 99.800320, 0.000000, 0.000000 +3.216667, 99.800320, 0.000000, 0.000000 +3.233333, 99.800320, 0.000000, 0.000000 +3.250000, 99.800320, 0.000000, 0.000000 +3.266667, 99.800320, 0.000000, 0.000000 +3.283333, 99.800320, 0.000000, 0.000000 +3.300000, 99.800320, 0.000000, 0.000000 +3.316667, 99.800320, 0.000000, 0.000000 +3.333333, 99.800320, 0.000000, 0.000000 +3.350000, 99.800320, 0.000000, 0.000000 +3.366667, 99.800320, 0.000000, 0.000000 +3.383333, 99.800320, 0.000000, 0.000000 +3.400000, 99.800320, 0.000000, 0.000000 +3.416667, 99.800320, 0.000000, 0.000000 +3.433333, 99.800320, 0.000000, 0.000000 +3.450000, 99.800320, 0.000000, 0.000000 +3.466667, 99.800320, 0.000000, 0.000000 +3.483333, 99.800320, 0.000000, 0.000000 +3.500000, 99.800320, 0.000000, 0.000000 +3.516667, 99.800320, 0.000000, 0.000000 +3.533333, 99.800320, 0.000000, 0.000000 +3.550000, 99.800320, 0.000000, 0.000000 +3.566667, 99.800320, 0.000000, 0.000000 +3.583333, 99.800320, 0.000000, 0.000000 +3.600000, 99.800320, 0.000000, 0.000000 +3.616667, 99.800320, 0.000000, 0.000000 +3.633333, 99.800320, 0.000000, 0.000000 +3.650000, 99.800320, 0.000000, 0.000000 +3.666667, 99.800320, 0.000000, 0.000000 +3.683333, 99.800320, 0.000000, 0.000000 +3.700000, 99.800320, 0.000000, 0.000000 +3.716667, 99.800320, 0.000000, 0.000000 +3.733333, 99.800320, 0.000000, 0.000000 +3.750000, 99.800320, 0.000000, 0.000000 +3.766667, 99.800320, 0.000000, 0.000000 +3.783333, 99.800320, 0.000000, 0.000000 +3.800000, 99.800320, 0.000000, 0.000000 +3.816667, 99.800320, 0.000000, 0.000000 +3.833333, 99.800320, 0.000000, 0.000000 +3.850000, 99.800320, 0.000000, 0.000000 +3.866667, 99.800320, 0.000000, 0.000000 +3.883333, 99.800320, 0.000000, 0.000000 +3.900000, 99.800320, 0.000000, 0.000000 +3.916667, 99.800320, 0.000000, 0.000000 +3.933333, 99.800320, 0.000000, 0.000000 +3.950000, 99.800320, 0.000000, 0.000000 +3.966667, 99.800320, 0.000000, 0.000000 +3.983333, 99.800320, 0.000000, 0.000000 +4.000000, 99.800320, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_450kW_md_200kWh.csv b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_450kW_md_200kWh.csv new file mode 100644 index 0000000..b28ab2f --- /dev/null +++ b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_450kW_md_200kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 2.274978, 272.997370, 277.617160 +1.016667, 6.316926, 485.033809, 496.214379 +1.033333, 10.533304, 505.965360, 517.938635 +1.050000, 14.836746, 516.413030, 528.791861 +1.066667, 19.174416, 520.520329, 533.060404 +1.083333, 23.546227, 524.617305, 537.319235 +1.100000, 27.952439, 528.745536, 541.611584 +1.116667, 32.393317, 532.905242, 545.937704 +1.133333, 36.869122, 537.096648, 550.297854 +1.150000, 41.380122, 541.319978, 554.692292 +1.166667, 45.926584, 545.575460, 559.121280 +1.183333, 50.508778, 549.863321, 563.585080 +1.200000, 55.126976, 554.183790, 568.083958 +1.216667, 59.781452, 558.537097, 572.618180 +1.233333, 64.472481, 562.923475, 577.188014 +1.250000, 69.200341, 567.343157, 581.793731 +1.266667, 73.965311, 571.796376, 586.435603 +1.283333, 78.446722, 537.769375, 550.997764 +1.300000, 82.135489, 442.652023, 452.308135 +1.316667, 85.128199, 359.125169, 366.090061 +1.333333, 87.554074, 291.105010, 296.181911 +1.350000, 89.520040, 235.915917, 239.658897 +1.366667, 91.113024, 191.158065, 193.948227 +1.383333, 92.403618, 154.871355, 156.973177 +1.400000, 93.456774, 126.378651, 127.992470 +1.416667, 94.366969, 109.223457, 110.565622 +1.433333, 95.164179, 95.665233, 96.804450 +1.450000, 95.862524, 83.801316, 84.771437 +1.466667, 96.474226, 73.404287, 74.232722 +1.483333, 97.010008, 64.293790, 65.003053 +1.500000, 97.479270, 56.311424, 56.920094 +1.516667, 97.890254, 49.318106, 49.841575 +1.533333, 98.250185, 43.191757, 43.642832 +1.550000, 98.565396, 37.825255, 38.214637 +1.566667, 98.841434, 33.124632, 33.461294 +1.583333, 99.083163, 29.007475, 29.298973 +1.600000, 99.294843, 25.401523, 25.654239 +1.616667, 99.480204, 22.243426, 22.462771 +1.633333, 99.642518, 19.477655, 19.668231 +1.650000, 99.784648, 17.055545, 17.221275 +1.666667, 99.800860, 1.945497, 1.963586 +1.683333, 99.800873, 0.001536, 0.001550 +1.700000, 99.800873, 0.000000, 0.000000 +1.716667, 99.800873, 0.000000, 0.000000 +1.733333, 99.800873, 0.000000, 0.000000 +1.750000, 99.800873, 0.000000, 0.000000 +1.766667, 99.800873, 0.000000, 0.000000 +1.783333, 99.800873, 0.000000, 0.000000 +1.800000, 99.800873, 0.000000, 0.000000 +1.816667, 99.800873, 0.000000, 0.000000 +1.833333, 99.800873, 0.000000, 0.000000 +1.850000, 99.800873, 0.000000, 0.000000 +1.866667, 99.800873, 0.000000, 0.000000 +1.883333, 99.800873, 0.000000, 0.000000 +1.900000, 99.800873, 0.000000, 0.000000 +1.916667, 99.800873, 0.000000, 0.000000 +1.933333, 99.800873, 0.000000, 0.000000 +1.950000, 99.800873, 0.000000, 0.000000 +1.966667, 99.800873, 0.000000, 0.000000 +1.983333, 99.800873, 0.000000, 0.000000 +2.000000, 99.800873, 0.000000, 0.000000 +2.016667, 99.800873, 0.000000, 0.000000 +2.033333, 99.800873, 0.000000, 0.000000 +2.050000, 99.800873, 0.000000, 0.000000 +2.066667, 99.800873, 0.000000, 0.000000 +2.083333, 99.800873, 0.000000, 0.000000 +2.100000, 99.800873, 0.000000, 0.000000 +2.116667, 99.800873, 0.000000, 0.000000 +2.133333, 99.800873, 0.000000, 0.000000 +2.150000, 99.800873, 0.000000, 0.000000 +2.166667, 99.800873, 0.000000, 0.000000 +2.183333, 99.800873, 0.000000, 0.000000 +2.200000, 99.800873, 0.000000, 0.000000 +2.216667, 99.800873, 0.000000, 0.000000 +2.233333, 99.800873, 0.000000, 0.000000 +2.250000, 99.800873, 0.000000, 0.000000 +2.266667, 99.800873, 0.000000, 0.000000 +2.283333, 99.800873, 0.000000, 0.000000 +2.300000, 99.800873, 0.000000, 0.000000 +2.316667, 99.800873, 0.000000, 0.000000 +2.333333, 99.800873, 0.000000, 0.000000 +2.350000, 99.800873, 0.000000, 0.000000 +2.366667, 99.800873, 0.000000, 0.000000 +2.383333, 99.800873, 0.000000, 0.000000 +2.400000, 99.800873, 0.000000, 0.000000 +2.416667, 99.800873, 0.000000, 0.000000 +2.433333, 99.800873, 0.000000, 0.000000 +2.450000, 99.800873, 0.000000, 0.000000 +2.466667, 99.800873, 0.000000, 0.000000 +2.483333, 99.800873, 0.000000, 0.000000 +2.500000, 99.800873, 0.000000, 0.000000 +2.516667, 99.800873, 0.000000, 0.000000 +2.533333, 99.800873, 0.000000, 0.000000 +2.550000, 99.800873, 0.000000, 0.000000 +2.566667, 99.800873, 0.000000, 0.000000 +2.583333, 99.800873, 0.000000, 0.000000 +2.600000, 99.800873, 0.000000, 0.000000 +2.616667, 99.800873, 0.000000, 0.000000 +2.633333, 99.800873, 0.000000, 0.000000 +2.650000, 99.800873, 0.000000, 0.000000 +2.666667, 99.800873, 0.000000, 0.000000 +2.683333, 99.800873, 0.000000, 0.000000 +2.700000, 99.800873, 0.000000, 0.000000 +2.716667, 99.800873, 0.000000, 0.000000 +2.733333, 99.800873, 0.000000, 0.000000 +2.750000, 99.800873, 0.000000, 0.000000 +2.766667, 99.800873, 0.000000, 0.000000 +2.783333, 99.800873, 0.000000, 0.000000 +2.800000, 99.800873, 0.000000, 0.000000 +2.816667, 99.800873, 0.000000, 0.000000 +2.833333, 99.800873, 0.000000, 0.000000 +2.850000, 99.800873, 0.000000, 0.000000 +2.866667, 99.800873, 0.000000, 0.000000 +2.883333, 99.800873, 0.000000, 0.000000 +2.900000, 99.800873, 0.000000, 0.000000 +2.916667, 99.800873, 0.000000, 0.000000 +2.933333, 99.800873, 0.000000, 0.000000 +2.950000, 99.800873, 0.000000, 0.000000 +2.966667, 99.800873, 0.000000, 0.000000 +2.983333, 99.800873, 0.000000, 0.000000 +3.000000, 99.800873, 0.000000, 0.000000 +3.016667, 99.800873, 0.000000, 0.000000 +3.033333, 99.800873, 0.000000, 0.000000 +3.050000, 99.800873, 0.000000, 0.000000 +3.066667, 99.800873, 0.000000, 0.000000 +3.083333, 99.800873, 0.000000, 0.000000 +3.100000, 99.800873, 0.000000, 0.000000 +3.116667, 99.800873, 0.000000, 0.000000 +3.133333, 99.800873, 0.000000, 0.000000 +3.150000, 99.800873, 0.000000, 0.000000 +3.166667, 99.800873, 0.000000, 0.000000 +3.183333, 99.800873, 0.000000, 0.000000 +3.200000, 99.800873, 0.000000, 0.000000 +3.216667, 99.800873, 0.000000, 0.000000 +3.233333, 99.800873, 0.000000, 0.000000 +3.250000, 99.800873, 0.000000, 0.000000 +3.266667, 99.800873, 0.000000, 0.000000 +3.283333, 99.800873, 0.000000, 0.000000 +3.300000, 99.800873, 0.000000, 0.000000 +3.316667, 99.800873, 0.000000, 0.000000 +3.333333, 99.800873, 0.000000, 0.000000 +3.350000, 99.800873, 0.000000, 0.000000 +3.366667, 99.800873, 0.000000, 0.000000 +3.383333, 99.800873, 0.000000, 0.000000 +3.400000, 99.800873, 0.000000, 0.000000 +3.416667, 99.800873, 0.000000, 0.000000 +3.433333, 99.800873, 0.000000, 0.000000 +3.450000, 99.800873, 0.000000, 0.000000 +3.466667, 99.800873, 0.000000, 0.000000 +3.483333, 99.800873, 0.000000, 0.000000 +3.500000, 99.800873, 0.000000, 0.000000 +3.516667, 99.800873, 0.000000, 0.000000 +3.533333, 99.800873, 0.000000, 0.000000 +3.550000, 99.800873, 0.000000, 0.000000 +3.566667, 99.800873, 0.000000, 0.000000 +3.583333, 99.800873, 0.000000, 0.000000 +3.600000, 99.800873, 0.000000, 0.000000 +3.616667, 99.800873, 0.000000, 0.000000 +3.633333, 99.800873, 0.000000, 0.000000 +3.650000, 99.800873, 0.000000, 0.000000 +3.666667, 99.800873, 0.000000, 0.000000 +3.683333, 99.800873, 0.000000, 0.000000 +3.700000, 99.800873, 0.000000, 0.000000 +3.716667, 99.800873, 0.000000, 0.000000 +3.733333, 99.800873, 0.000000, 0.000000 +3.750000, 99.800873, 0.000000, 0.000000 +3.766667, 99.800873, 0.000000, 0.000000 +3.783333, 99.800873, 0.000000, 0.000000 +3.800000, 99.800873, 0.000000, 0.000000 +3.816667, 99.800873, 0.000000, 0.000000 +3.833333, 99.800873, 0.000000, 0.000000 +3.850000, 99.800873, 0.000000, 0.000000 +3.866667, 99.800873, 0.000000, 0.000000 +3.883333, 99.800873, 0.000000, 0.000000 +3.900000, 99.800873, 0.000000, 0.000000 +3.916667, 99.800873, 0.000000, 0.000000 +3.933333, 99.800873, 0.000000, 0.000000 +3.950000, 99.800873, 0.000000, 0.000000 +3.966667, 99.800873, 0.000000, 0.000000 +3.983333, 99.800873, 0.000000, 0.000000 +4.000000, 99.800873, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_50kW_hd_300kWh.csv b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_50kW_hd_300kWh.csv new file mode 100644 index 0000000..80dcbe3 --- /dev/null +++ b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_50kW_hd_300kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.352505, 63.450880, 64.111959 +1.016667, 0.847783, 89.150138, 90.121521 +1.033333, 1.351693, 90.703740, 91.694671 +1.050000, 1.864390, 92.285419, 93.296344 +1.066667, 2.386026, 93.894585, 94.925946 +1.083333, 2.916758, 95.531709, 96.583962 +1.100000, 3.456743, 97.197275, 98.270885 +1.116667, 4.006141, 98.891693, 99.987135 +1.133333, 4.561377, 99.942372, 101.051407 +1.150000, 5.118920, 100.357742, 101.472162 +1.166667, 5.678772, 100.773451, 101.893267 +1.183333, 6.240944, 101.190876, 102.316116 +1.200000, 6.805444, 101.610023, 102.740716 +1.216667, 7.372282, 102.030900, 103.167076 +1.233333, 7.941468, 102.453514, 103.595201 +1.250000, 8.513012, 102.877871, 104.025100 +1.266667, 9.086923, 103.303980, 104.456779 +1.283333, 9.663211, 103.731846, 104.890246 +1.300000, 10.241731, 104.133500, 105.297164 +1.316667, 10.821162, 104.297717, 105.463534 +1.333333, 11.401203, 104.407227, 105.574481 +1.350000, 11.981851, 104.516756, 105.685448 +1.366667, 12.563109, 104.626400, 105.796531 +1.383333, 13.144977, 104.736158, 105.907731 +1.400000, 13.727454, 104.846031, 106.019047 +1.416667, 14.310543, 104.956019, 106.130480 +1.433333, 14.894244, 105.066121, 106.242030 +1.450000, 15.478557, 105.176339, 106.353697 +1.466667, 16.063483, 105.286672, 106.465482 +1.483333, 16.649023, 105.397120, 106.577383 +1.500000, 17.235176, 105.507684, 106.689402 +1.516667, 17.821945, 105.618363, 106.801538 +1.533333, 18.409329, 105.729158, 106.913792 +1.550000, 18.997330, 105.840068, 107.026164 +1.566667, 19.585947, 105.951095, 107.138653 +1.583333, 20.175182, 106.062237, 107.251261 +1.600000, 20.765034, 106.173496, 107.363987 +1.616667, 21.355506, 106.284870, 107.476831 +1.633333, 21.946597, 106.396362, 107.589793 +1.650000, 22.538308, 106.507969, 107.702874 +1.666667, 23.130639, 106.619694, 107.816073 +1.683333, 23.723592, 106.731535, 107.929392 +1.700000, 24.317167, 106.843493, 108.042829 +1.716667, 24.911365, 106.955567, 108.156385 +1.733333, 25.506186, 107.067759, 108.270060 +1.750000, 26.101631, 107.180069, 108.383854 +1.766667, 26.697700, 107.292495, 108.497768 +1.783333, 27.294395, 107.405039, 108.611801 +1.800000, 27.891715, 107.517701, 108.725954 +1.816667, 28.489662, 107.630480, 108.840227 +1.833333, 29.088237, 107.743377, 108.954619 +1.850000, 29.687439, 107.856392, 109.069132 +1.866667, 30.287269, 107.969525, 109.183764 +1.883333, 30.887729, 108.082777, 109.298517 +1.900000, 31.488819, 108.196146, 109.413390 +1.916667, 32.090539, 108.309634, 109.528384 +1.933333, 32.692891, 108.423241, 109.643498 +1.950000, 33.295874, 108.536966, 109.758734 +1.966667, 33.899489, 108.650811, 109.874089 +1.983333, 34.503738, 108.764774, 109.989566 +2.000000, 35.108621, 108.878856, 110.105164 +2.016667, 35.714138, 108.993057, 110.220884 +2.033333, 36.320290, 109.107378, 110.336724 +2.050000, 36.927078, 109.221818, 110.452687 +2.066667, 37.534502, 109.336377, 110.568770 +2.083333, 38.142563, 109.451057, 110.684976 +2.100000, 38.751263, 109.565856, 110.801303 +2.116667, 39.360600, 109.680775, 110.917753 +2.133333, 39.970577, 109.795814, 111.034324 +2.150000, 40.581193, 109.910973, 111.151018 +2.166667, 41.192450, 110.026252, 111.267834 +2.183333, 41.804348, 110.141652, 111.384773 +2.200000, 42.416888, 110.257173, 111.501835 +2.216667, 43.030071, 110.372814, 111.619019 +2.233333, 43.643896, 110.488576, 111.736326 +2.250000, 44.258365, 110.604458, 111.853756 +2.266667, 44.873479, 110.720462, 111.971309 +2.283333, 45.489238, 110.836587, 112.088986 +2.300000, 46.105642, 110.952834, 112.206786 +2.316667, 46.722693, 111.069201, 112.324710 +2.333333, 47.340392, 111.185691, 112.442757 +2.350000, 47.958738, 111.302302, 112.560928 +2.366667, 48.577732, 111.419035, 112.679223 +2.383333, 49.197376, 111.535889, 112.797642 +2.400000, 49.817670, 111.652866, 112.916185 +2.416667, 50.438614, 111.769965, 113.034853 +2.433333, 51.060210, 111.887186, 113.153645 +2.450000, 51.682457, 112.004530, 113.272561 +2.466667, 52.305357, 112.121996, 113.391603 +2.483333, 52.928910, 112.239585, 113.510769 +2.500000, 53.553118, 112.357297, 113.630060 +2.516667, 54.177979, 112.475131, 113.749476 +2.533333, 54.803497, 112.593089, 113.869018 +2.550000, 55.429670, 112.711170, 113.988685 +2.566667, 56.056500, 112.829374, 114.108477 +2.583333, 56.683987, 112.947702, 114.228395 +2.600000, 57.312132, 113.066153, 114.348439 +2.616667, 57.940936, 113.184728, 114.468608 +2.633333, 58.570400, 113.303427, 114.588904 +2.650000, 59.200523, 113.422250, 114.709326 +2.666667, 59.831308, 113.541196, 114.829874 +2.683333, 60.462754, 113.660267, 114.950549 +2.700000, 61.094862, 113.779463, 115.071350 +2.716667, 61.727633, 113.898783, 115.192278 +2.733333, 62.361067, 114.018227, 115.313332 +2.750000, 62.995166, 114.137796, 115.434514 +2.766667, 63.629930, 114.257490, 115.555822 +2.783333, 64.265360, 114.377310, 115.677258 +2.800000, 64.901455, 114.497254, 115.798821 +2.816667, 65.538218, 114.617323, 115.920512 +2.833333, 66.175649, 114.737518, 116.042330 +2.850000, 66.813748, 114.857838, 116.164276 +2.866667, 67.452516, 114.978284, 116.286350 +2.883333, 68.091954, 115.098856, 116.408552 +2.900000, 68.732063, 115.219554, 116.530882 +2.916667, 69.372843, 115.340377, 116.653340 +2.933333, 70.014295, 115.461327, 116.775927 +2.950000, 70.656419, 115.582403, 116.898642 +2.966667, 71.299217, 115.703606, 117.021486 +2.983333, 71.942689, 115.824935, 117.144459 +3.000000, 72.586835, 115.946391, 117.267561 +3.016667, 73.231658, 116.067973, 117.390792 +3.033333, 73.877156, 116.189683, 117.514152 +3.050000, 74.523331, 116.311519, 117.637641 +3.066667, 75.170184, 116.433483, 117.761260 +3.083333, 75.817715, 116.555574, 117.885009 +3.100000, 76.465925, 116.677793, 118.008887 +3.116667, 77.114814, 116.800139, 118.132895 +3.133333, 77.764384, 116.922613, 118.257033 +3.150000, 78.414635, 117.045215, 118.381302 +3.166667, 79.065568, 117.167945, 118.505700 +3.183333, 79.717184, 117.290803, 118.630230 +3.200000, 80.369483, 117.413789, 118.754889 +3.216667, 81.022466, 117.536904, 118.879680 +3.233333, 81.676133, 117.660147, 119.004601 +3.250000, 82.330486, 117.783519, 119.129653 +3.266667, 82.985525, 117.907019, 119.254837 +3.283333, 83.641251, 118.030649, 119.380151 +3.300000, 84.297664, 118.154408, 119.505597 +3.316667, 84.954766, 118.278295, 119.631175 +3.333333, 85.612556, 118.402313, 119.756884 +3.350000, 86.271037, 118.526459, 119.882725 +3.366667, 86.930208, 118.650735, 120.008698 +3.383333, 87.590069, 118.775141, 120.134803 +3.400000, 88.250623, 118.899677, 120.261041 +3.416667, 88.911870, 119.024343, 120.387410 +3.433333, 89.573809, 119.149139, 120.513912 +3.450000, 90.236443, 119.274065, 120.640547 +3.466667, 90.899771, 119.399122, 120.767315 +3.483333, 91.563795, 119.524309, 120.894215 +3.500000, 92.228515, 119.649627, 121.021249 +3.516667, 92.893933, 119.775076, 121.148415 +3.533333, 93.560047, 119.900655, 121.275716 +3.550000, 94.226860, 120.026366, 121.403149 +3.566667, 94.894373, 120.152208, 121.530716 +3.583333, 95.562585, 120.278181, 121.658417 +3.600000, 96.231498, 120.404286, 121.786252 +3.616667, 96.896541, 119.707811, 121.080229 +3.633333, 97.483226, 105.603292, 106.786269 +3.650000, 97.977482, 88.966178, 89.935253 +3.666667, 98.393516, 74.886132, 75.682247 +3.683333, 98.743698, 63.032748, 63.688981 +3.700000, 99.038446, 53.054497, 53.597028 +3.716667, 99.286529, 44.655065, 45.104752 +3.733333, 99.495334, 37.584865, 37.958431 +3.750000, 99.671077, 31.633703, 31.944633 +3.766667, 99.800210, 23.243962, 23.468819 +3.783333, 99.800318, 0.019379, 0.019558 +3.800000, 99.800318, 0.000000, 0.000000 +3.816667, 99.800318, 0.000000, 0.000000 +3.833333, 99.800318, 0.000000, 0.000000 +3.850000, 99.800318, 0.000000, 0.000000 +3.866667, 99.800318, 0.000000, 0.000000 +3.883333, 99.800318, 0.000000, 0.000000 +3.900000, 99.800318, 0.000000, 0.000000 +3.916667, 99.800318, 0.000000, 0.000000 +3.933333, 99.800318, 0.000000, 0.000000 +3.950000, 99.800318, 0.000000, 0.000000 +3.966667, 99.800318, 0.000000, 0.000000 +3.983333, 99.800318, 0.000000, 0.000000 +4.000000, 99.800318, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_50kW_hd_400kWh.csv b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_50kW_hd_400kWh.csv new file mode 100644 index 0000000..d71de17 --- /dev/null +++ b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_50kW_hd_400kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.263907, 63.337675, 63.978843 +1.016667, 0.633560, 88.716630, 89.646027 +1.033333, 1.008038, 89.874723, 90.817701 +1.050000, 1.387407, 91.048643, 92.005426 +1.066667, 1.771731, 92.237857, 93.208664 +1.083333, 2.161075, 93.442563, 94.427617 +1.100000, 2.555504, 94.662963, 95.662490 +1.116667, 2.955085, 95.899259, 96.913491 +1.133333, 3.359883, 97.151658, 98.180830 +1.150000, 3.769968, 98.420368, 99.464719 +1.166667, 4.185002, 99.608222, 100.666826 +1.183333, 4.601966, 100.071296, 101.135466 +1.200000, 5.020227, 100.382611, 101.450527 +1.216667, 5.439788, 100.694599, 101.766272 +1.233333, 5.860653, 101.007554, 102.082998 +1.250000, 6.282825, 101.321479, 102.400708 +1.266667, 6.706310, 101.636377, 102.719406 +1.283333, 7.131111, 101.952251, 103.039095 +1.300000, 7.557233, 102.269104, 103.359777 +1.316667, 7.984678, 102.586939, 103.681455 +1.333333, 8.413452, 102.905758, 104.004133 +1.350000, 8.843559, 103.225566, 104.327814 +1.366667, 9.275002, 103.546365, 104.652501 +1.383333, 9.707786, 103.868157, 104.978197 +1.400000, 10.141861, 104.178094, 105.291896 +1.416667, 10.576508, 104.315182, 105.430649 +1.433333, 11.011497, 104.397420, 105.513886 +1.450000, 11.446829, 104.479628, 105.597092 +1.466667, 11.882504, 104.561900, 105.680364 +1.483333, 12.318521, 104.644237, 105.763702 +1.500000, 12.754882, 104.726638, 105.847105 +1.516667, 13.191587, 104.809104, 105.930574 +1.533333, 13.628635, 104.891635, 106.014108 +1.550000, 14.066028, 104.974231, 106.097709 +1.566667, 14.503765, 105.056891, 106.181375 +1.583333, 14.941847, 105.139616, 106.265107 +1.600000, 15.380273, 105.222407, 106.348905 +1.616667, 15.819045, 105.305262, 106.432769 +1.633333, 16.258163, 105.388183, 106.516698 +1.650000, 16.697626, 105.471168, 106.600695 +1.666667, 17.137435, 105.554219, 106.684757 +1.683333, 17.577591, 105.637335, 106.768885 +1.700000, 18.018093, 105.720516, 106.853080 +1.716667, 18.458942, 105.803762, 106.937341 +1.733333, 18.900138, 105.887074, 107.021668 +1.750000, 19.341682, 105.970451, 107.106062 +1.766667, 19.783573, 106.053894, 107.190522 +1.783333, 20.225812, 106.137402, 107.275048 +1.800000, 20.668399, 106.220975, 107.359642 +1.816667, 21.111335, 106.304615, 107.444301 +1.833333, 21.554620, 106.388320, 107.529028 +1.850000, 21.998254, 106.472090, 107.613821 +1.866667, 22.442237, 106.555927, 107.698681 +1.883333, 22.886569, 106.639829, 107.783608 +1.900000, 23.331252, 106.723797, 107.868601 +1.916667, 23.776284, 106.807832, 107.953662 +1.933333, 24.221667, 106.891932, 108.038789 +1.950000, 24.667401, 106.976098, 108.123984 +1.966667, 25.113486, 107.060330, 108.209246 +1.983333, 25.559922, 107.144628, 108.294574 +2.000000, 26.006709, 107.228993, 108.379970 +2.016667, 26.453849, 107.313423, 108.465434 +2.033333, 26.901340, 107.397920, 108.550964 +2.050000, 27.349184, 107.482484, 108.636562 +2.066667, 27.797380, 107.567113, 108.722227 +2.083333, 28.245929, 107.651809, 108.807960 +2.100000, 28.694831, 107.736572, 108.893760 +2.116667, 29.144087, 107.821401, 108.979628 +2.133333, 29.593697, 107.906297, 109.065563 +2.150000, 30.043660, 107.991259, 109.151566 +2.166667, 30.493978, 108.076288, 109.237637 +2.183333, 30.944651, 108.161384, 109.323775 +2.200000, 31.395678, 108.246547, 109.409982 +2.216667, 31.847060, 108.331776, 109.496256 +2.233333, 32.298798, 108.417073, 109.582598 +2.250000, 32.750892, 108.502436, 109.669008 +2.266667, 33.203341, 108.587867, 109.755486 +2.283333, 33.656147, 108.673364, 109.842033 +2.300000, 34.109309, 108.758929, 109.928647 +2.316667, 34.562828, 108.844560, 110.015330 +2.333333, 35.016704, 108.930259, 110.102080 +2.350000, 35.470938, 109.016026, 110.188900 +2.366667, 35.925529, 109.101859, 110.275787 +2.383333, 36.380478, 109.187760, 110.362743 +2.400000, 36.835785, 109.273728, 110.449767 +2.416667, 37.291451, 109.359764, 110.536860 +2.433333, 37.747475, 109.445868, 110.624022 +2.450000, 38.203858, 109.532038, 110.711252 +2.466667, 38.660601, 109.618277, 110.798551 +2.483333, 39.117704, 109.704583, 110.885918 +2.500000, 39.575166, 109.790957, 110.973354 +2.516667, 40.032989, 109.877399, 111.060860 +2.533333, 40.491172, 109.963909, 111.148434 +2.550000, 40.949715, 110.050487, 111.236077 +2.566667, 41.408620, 110.137132, 111.323788 +2.583333, 41.867886, 110.223846, 111.411570 +2.600000, 42.327514, 110.310627, 111.499420 +2.616667, 42.787503, 110.397477, 111.587339 +2.633333, 43.247855, 110.484395, 111.675328 +2.650000, 43.708569, 110.571381, 111.763385 +2.666667, 44.169646, 110.658435, 111.851512 +2.683333, 44.631085, 110.745558, 111.939709 +2.700000, 45.092889, 110.832749, 112.027975 +2.716667, 45.555055, 110.920009, 112.116310 +2.733333, 46.017586, 111.007337, 112.204715 +2.750000, 46.480481, 111.094733, 112.293190 +2.766667, 46.943740, 111.182199, 112.381734 +2.783333, 47.407364, 111.269732, 112.470348 +2.800000, 47.871352, 111.357335, 112.559032 +2.816667, 48.335707, 111.445006, 112.647786 +2.833333, 48.800426, 111.532746, 112.736609 +2.850000, 49.265512, 111.620555, 112.825502 +2.866667, 49.730964, 111.708433, 112.914466 +2.883333, 50.196782, 111.796380, 113.003499 +2.900000, 50.662967, 111.884396, 113.092603 +2.916667, 51.129519, 111.972481, 113.181776 +2.933333, 51.596438, 112.060635, 113.271020 +2.950000, 52.063725, 112.148858, 113.360334 +2.966667, 52.531380, 112.237151, 113.449718 +2.983333, 52.999403, 112.325513, 113.539173 +3.000000, 53.467795, 112.413944, 113.628698 +3.016667, 53.936555, 112.502444, 113.718294 +3.033333, 54.405684, 112.591014, 113.807960 +3.050000, 54.875183, 112.679654, 113.897697 +3.066667, 55.345051, 112.768363, 113.987505 +3.083333, 55.815289, 112.857142, 114.077383 +3.100000, 56.285897, 112.945990, 114.167332 +3.116667, 56.756876, 113.034908, 114.257351 +3.133333, 57.228225, 113.123896, 114.347442 +3.150000, 57.699946, 113.212954, 114.437604 +3.166667, 58.172038, 113.302082, 114.527836 +3.183333, 58.644502, 113.391279, 114.618140 +3.200000, 59.117337, 113.480547, 114.708514 +3.216667, 59.590545, 113.569885, 114.798960 +3.233333, 60.064126, 113.659292, 114.889477 +3.250000, 60.538079, 113.748770, 114.980065 +3.266667, 61.012405, 113.838318, 115.070725 +3.283333, 61.487105, 113.927937, 115.161456 +3.300000, 61.962178, 114.017626, 115.252258 +3.316667, 62.437626, 114.107385, 115.343132 +3.333333, 62.913447, 114.197214, 115.434077 +3.350000, 63.389644, 114.287114, 115.525094 +3.366667, 63.866215, 114.377085, 115.616183 +3.383333, 64.343161, 114.467126, 115.707343 +3.400000, 64.820483, 114.557238, 115.798575 +3.416667, 65.298181, 114.647421, 115.889879 +3.433333, 65.776254, 114.737674, 115.981255 +3.450000, 66.254704, 114.827998, 116.072703 +3.466667, 66.733531, 114.918393, 116.164223 +3.483333, 67.212735, 115.008859, 116.255814 +3.500000, 67.692315, 115.099396, 116.347478 +3.516667, 68.172274, 115.190004, 116.439214 +3.533333, 68.652610, 115.280683, 116.531023 +3.550000, 69.133324, 115.371434, 116.622903 +3.566667, 69.614417, 115.462255, 116.714856 +3.583333, 70.095888, 115.553148, 116.806881 +3.600000, 70.577739, 115.644112, 116.898979 +3.616667, 71.059969, 115.735148, 116.991149 +3.633333, 71.542578, 115.826254, 117.083392 +3.650000, 72.025567, 115.917433, 117.175707 +3.666667, 72.508937, 116.008683, 117.268095 +3.683333, 72.992687, 116.100004, 117.360556 +3.700000, 73.476818, 116.191398, 117.453089 +3.716667, 73.961330, 116.282862, 117.545696 +3.733333, 74.446223, 116.374399, 117.638375 +3.750000, 74.931498, 116.466008, 117.731127 +3.766667, 75.417155, 116.557688, 117.823953 +3.783333, 75.903194, 116.649440, 117.916851 +3.800000, 76.389616, 116.741265, 118.009822 +3.816667, 76.876421, 116.833161, 118.102867 +3.833333, 77.363609, 116.925130, 118.195985 +3.850000, 77.851181, 117.017170, 118.289176 +3.866667, 78.339136, 117.109283, 118.382441 +3.883333, 78.827476, 117.201468, 118.475778 +3.900000, 79.316199, 117.293726, 118.569190 +3.916667, 79.805308, 117.386055, 118.662675 +3.933333, 80.294802, 117.478458, 118.756233 +3.950000, 80.784680, 117.570933, 118.849866 +3.966667, 81.274945, 117.663480, 118.943571 +3.983333, 81.765595, 117.756100, 119.037351 +4.000000, 82.256632, 117.848792, 119.131205 diff --git a/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_50kW_hd_600kWh.csv b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_50kW_hd_600kWh.csv new file mode 100644 index 0000000..b6279ef --- /dev/null +++ b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_50kW_hd_600kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.175624, 63.224563, 63.845977 +1.016667, 0.420860, 88.284877, 89.173088 +1.033333, 0.668227, 89.052212, 89.948776 +1.050000, 0.917745, 89.826656, 90.731661 +1.066667, 1.169434, 90.607822, 91.521354 +1.083333, 1.423311, 91.395771, 92.317914 +1.100000, 1.679396, 92.190560, 93.121401 +1.116667, 1.937708, 92.992249, 93.931876 +1.133333, 2.198266, 93.800898, 94.749398 +1.150000, 2.461089, 94.616566, 95.574029 +1.166667, 2.726199, 95.439315, 96.405831 +1.183333, 2.993613, 96.269205, 97.244866 +1.200000, 3.263353, 97.106298, 98.091196 +1.216667, 3.535438, 97.950658, 98.944886 +1.233333, 3.809889, 98.802345, 99.805998 +1.250000, 4.086637, 99.629385, 100.642203 +1.266667, 4.364393, 99.992261, 101.009104 +1.283333, 4.642726, 100.199819, 101.218965 +1.300000, 4.921636, 100.407518, 101.428971 +1.316667, 5.201124, 100.615647, 101.639411 +1.333333, 5.481191, 100.824207, 101.850288 +1.350000, 5.761839, 101.033198, 102.061601 +1.366667, 6.043068, 101.242621, 102.273353 +1.383333, 6.324881, 101.452478, 102.485544 +1.400000, 6.607277, 101.662769, 102.698174 +1.416667, 6.890259, 101.873495, 102.911246 +1.433333, 7.173828, 102.084658, 103.124759 +1.450000, 7.457984, 102.296256, 103.338714 +1.466667, 7.742729, 102.508293, 103.553113 +1.483333, 8.028065, 102.720769, 103.767956 +1.500000, 8.313992, 102.933684, 103.983245 +1.516667, 8.600511, 103.147039, 104.198980 +1.533333, 8.887625, 103.360836, 104.415162 +1.550000, 9.175333, 103.575075, 104.631792 +1.566667, 9.463638, 103.789757, 104.848872 +1.583333, 9.752541, 104.004884, 105.066401 +1.600000, 10.042037, 104.218762, 105.282668 +1.616667, 10.331850, 104.332581, 105.397759 +1.633333, 10.621815, 104.387499, 105.453291 +1.650000, 10.911933, 104.442344, 105.508749 +1.666667, 11.202203, 104.497218, 105.564237 +1.683333, 11.492625, 104.552121, 105.619753 +1.700000, 11.783201, 104.607053, 105.675299 +1.716667, 12.073928, 104.662013, 105.730874 +1.733333, 12.364809, 104.717003, 105.786479 +1.750000, 12.655842, 104.772021, 105.842112 +1.766667, 12.947029, 104.827068, 105.897775 +1.783333, 13.238368, 104.882144, 105.953467 +1.800000, 13.529860, 104.937248, 106.009188 +1.816667, 13.821506, 104.992382, 106.064939 +1.833333, 14.113305, 105.047544, 106.120718 +1.850000, 14.405257, 105.102736, 106.176527 +1.866667, 14.697362, 105.157956, 106.232366 +1.883333, 14.989621, 105.213206, 106.288234 +1.900000, 15.282033, 105.268484, 106.344131 +1.916667, 15.574599, 105.323791, 106.400057 +1.933333, 15.867319, 105.379128, 106.456013 +1.950000, 16.160193, 105.434493, 106.511998 +1.966667, 16.453220, 105.489887, 106.568013 +1.983333, 16.746402, 105.545311, 106.624057 +2.000000, 17.039737, 105.600763, 106.680131 +2.016667, 17.333227, 105.656245, 106.736234 +2.033333, 17.626871, 105.711756, 106.792366 +2.050000, 17.920669, 105.767295, 106.848528 +2.066667, 18.214621, 105.822864, 106.904719 +2.083333, 18.508728, 105.878462, 106.960940 +2.100000, 18.802989, 105.934090, 107.017191 +2.116667, 19.097405, 105.989746, 107.073471 +2.133333, 19.391976, 106.045431, 107.129781 +2.150000, 19.686701, 106.101146, 107.186120 +2.166667, 19.981581, 106.156890, 107.242489 +2.183333, 20.276617, 106.212663, 107.298887 +2.200000, 20.571807, 106.268466, 107.355315 +2.216667, 20.867152, 106.324297, 107.411773 +2.233333, 21.162653, 106.380158, 107.468260 +2.250000, 21.458308, 106.436049, 107.524778 +2.266667, 21.754119, 106.491968, 107.581324 +2.283333, 22.050086, 106.547917, 107.637901 +2.300000, 22.346208, 106.603895, 107.694507 +2.316667, 22.642485, 106.659903, 107.751143 +2.333333, 22.938918, 106.715940, 107.807809 +2.350000, 23.235507, 106.772006, 107.864504 +2.366667, 23.532252, 106.828102, 107.921229 +2.383333, 23.829153, 106.884227, 107.977984 +2.400000, 24.126209, 106.940382, 108.034769 +2.416667, 24.423422, 106.996566, 108.091584 +2.433333, 24.720791, 107.052779, 108.148429 +2.450000, 25.018316, 107.109022, 108.205303 +2.466667, 25.315997, 107.165294, 108.262207 +2.483333, 25.613835, 107.221596, 108.319141 +2.500000, 25.911829, 107.277928, 108.376106 +2.516667, 26.209980, 107.334289, 108.433100 +2.533333, 26.508287, 107.390679, 108.490124 +2.550000, 26.806752, 107.447099, 108.547178 +2.566667, 27.105373, 107.503549, 108.604261 +2.583333, 27.404150, 107.560028, 108.661375 +2.600000, 27.703085, 107.616537, 108.718519 +2.616667, 28.002177, 107.673076, 108.775693 +2.633333, 28.301426, 107.729644, 108.832897 +2.650000, 28.600832, 107.786242, 108.890131 +2.666667, 28.900396, 107.842870, 108.947395 +2.683333, 29.200117, 107.899527, 109.004689 +2.700000, 29.499995, 107.956214, 109.062014 +2.716667, 29.800031, 108.012930, 109.119368 +2.733333, 30.100225, 108.069677, 109.176753 +2.750000, 30.400576, 108.126453, 109.234167 +2.766667, 30.701085, 108.183259, 109.291612 +2.783333, 31.001752, 108.240094, 109.349087 +2.800000, 31.302577, 108.296960, 109.406592 +2.816667, 31.603560, 108.353855, 109.464128 +2.833333, 31.904701, 108.410780, 109.521693 +2.850000, 32.206000, 108.467735, 109.579289 +2.866667, 32.507458, 108.524720, 109.636915 +2.883333, 32.809073, 108.581735, 109.694572 +2.900000, 33.110848, 108.638779, 109.752259 +2.916667, 33.412781, 108.695854, 109.809976 +2.933333, 33.714872, 108.752958, 109.867723 +2.950000, 34.017123, 108.810093, 109.925501 +2.966667, 34.319532, 108.867257, 109.983309 +2.983333, 34.622100, 108.924452, 110.041147 +3.000000, 34.924826, 108.981676, 110.099016 +3.016667, 35.227712, 109.038930, 110.156915 +3.033333, 35.530757, 109.096214, 110.214845 +3.050000, 35.833962, 109.153529, 110.272805 +3.066667, 36.137325, 109.210873, 110.330795 +3.083333, 36.440848, 109.268248, 110.388816 +3.100000, 36.744530, 109.325652, 110.446868 +3.116667, 37.048372, 109.383087, 110.504950 +3.133333, 37.352374, 109.440552, 110.563062 +3.150000, 37.656535, 109.498047, 110.621205 +3.166667, 37.960856, 109.555572, 110.679378 +3.183333, 38.265337, 109.613127, 110.737583 +3.200000, 38.569978, 109.670712, 110.795817 +3.216667, 38.874779, 109.728328, 110.854082 +3.233333, 39.179740, 109.785974, 110.912378 +3.250000, 39.484861, 109.843650, 110.970705 +3.266667, 39.790143, 109.901356, 111.029062 +3.283333, 40.095585, 109.959092, 111.087450 +3.300000, 40.401187, 110.016859, 111.145868 +3.316667, 40.706950, 110.074656, 111.204317 +3.333333, 41.012873, 110.132483, 111.262797 +3.350000, 41.318958, 110.190341, 111.321308 +3.366667, 41.625203, 110.248229, 111.379849 +3.383333, 41.931609, 110.306148, 111.438421 +3.400000, 42.238176, 110.364096, 111.497024 +3.416667, 42.544904, 110.422075, 111.555658 +3.433333, 42.851793, 110.480085, 111.614322 +3.450000, 43.158843, 110.538125, 111.673017 +3.466667, 43.466055, 110.596195, 111.731744 +3.483333, 43.773428, 110.654296, 111.790500 +3.500000, 44.080962, 110.712427, 111.849288 +3.516667, 44.388658, 110.770589, 111.908107 +3.533333, 44.696516, 110.828781, 111.966957 +3.550000, 45.004536, 110.887004, 112.025837 +3.566667, 45.312717, 110.945257, 112.084749 +3.583333, 45.621060, 111.003541, 112.143691 +3.600000, 45.929565, 111.061855, 112.202664 +3.616667, 46.238232, 111.120200, 112.261669 +3.633333, 46.547062, 111.178576, 112.320704 +3.650000, 46.856053, 111.236982, 112.379770 +3.666667, 47.165207, 111.295418, 112.438868 +3.683333, 47.474524, 111.353886, 112.497996 +3.700000, 47.784003, 111.412384, 112.557156 +3.716667, 48.093644, 111.470912, 112.616346 +3.733333, 48.403448, 111.529472, 112.675568 +3.750000, 48.713415, 111.588062, 112.734821 +3.766667, 49.023545, 111.646683, 112.794104 +3.783333, 49.333837, 111.705334, 112.853420 +3.800000, 49.644293, 111.764016, 112.912766 +3.816667, 49.954912, 111.822730, 112.972143 +3.833333, 50.265693, 111.881473, 113.031552 +3.850000, 50.576639, 111.940248, 113.090991 +3.866667, 50.887747, 111.999053, 113.150462 +3.883333, 51.199019, 112.057890, 113.209965 +3.900000, 51.510454, 112.116757, 113.269498 +3.916667, 51.822053, 112.175655, 113.329063 +3.933333, 52.133816, 112.234583, 113.388659 +3.950000, 52.445743, 112.293543, 113.448286 +3.966667, 52.757833, 112.352534, 113.507945 +3.983333, 53.070087, 112.411555, 113.567635 +4.000000, 53.382506, 112.470608, 113.627357 diff --git a/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_50kW_ld_100kWh.csv b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_50kW_ld_100kWh.csv new file mode 100644 index 0000000..5c0a62b --- /dev/null +++ b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_50kW_ld_100kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.719864, 43.191863, 43.694991 +1.016667, 1.730232, 60.622046, 61.387431 +1.033333, 2.775991, 62.745555, 63.545233 +1.050000, 3.858400, 64.944510, 65.780238 +1.066667, 4.967617, 66.553064, 67.415510 +1.083333, 6.086291, 67.120431, 67.992371 +1.100000, 7.214217, 67.675569, 68.556833 +1.116667, 8.351471, 68.235233, 69.125934 +1.133333, 9.498129, 68.799491, 69.699740 +1.150000, 10.653136, 69.300399, 70.209156 +1.166667, 11.811241, 69.486273, 70.398193 +1.183333, 12.971768, 69.631648, 70.546047 +1.200000, 14.134722, 69.777254, 70.694136 +1.216667, 15.300108, 69.923162, 70.842535 +1.233333, 16.467931, 70.069372, 70.991245 +1.250000, 17.638196, 70.215886, 71.140265 +1.266667, 18.810908, 70.362704, 71.289597 +1.283333, 19.986071, 70.509826, 71.439241 +1.300000, 21.163692, 70.657254, 71.589198 +1.316667, 22.343775, 70.804987, 71.739469 +1.333333, 23.526326, 70.953027, 71.890054 +1.350000, 24.711349, 71.101374, 72.040953 +1.366667, 25.898849, 71.250029, 72.192168 +1.383333, 27.088833, 71.398992, 72.343700 +1.400000, 28.281304, 71.548264, 72.495548 +1.416667, 29.476268, 71.697845, 72.647713 +1.433333, 30.673730, 71.847737, 72.800197 +1.450000, 31.873696, 71.997939, 72.953000 +1.466667, 33.076170, 72.148453, 73.106122 +1.483333, 34.281158, 72.299279, 73.259564 +1.500000, 35.488665, 72.450418, 73.413326 +1.516667, 36.698696, 72.601871, 73.567411 +1.533333, 37.911257, 72.753637, 73.721817 +1.550000, 39.126352, 72.905718, 73.876546 +1.566667, 40.343987, 73.058114, 74.031599 +1.583333, 41.564168, 73.210826, 74.186975 +1.600000, 42.786898, 73.363855, 74.342677 +1.616667, 44.012185, 73.517201, 74.498703 +1.633333, 45.240033, 73.670865, 74.655056 +1.650000, 46.470447, 73.824848, 74.811736 +1.666667, 47.703433, 73.979149, 74.968743 +1.683333, 48.938996, 74.133771, 75.126079 +1.700000, 50.177141, 74.288713, 75.283743 +1.716667, 51.417874, 74.443976, 75.441737 +1.733333, 52.661200, 74.599561, 75.600061 +1.750000, 53.907124, 74.755468, 75.758716 +1.766667, 55.155653, 74.911699, 75.917702 +1.783333, 56.406790, 75.068253, 76.077021 +1.800000, 57.660542, 75.225132, 76.236673 +1.816667, 58.916915, 75.382336, 76.396658 +1.833333, 60.175912, 75.539865, 76.556978 +1.850000, 61.437541, 75.697721, 76.717632 +1.866667, 62.701806, 75.855904, 76.878623 +1.883333, 63.968713, 76.014415, 77.039949 +1.900000, 65.238267, 76.173254, 77.201613 +1.916667, 66.510474, 76.332423, 77.363615 +1.933333, 67.785340, 76.491921, 77.525955 +1.950000, 69.062869, 76.651749, 77.688635 +1.966667, 70.343067, 76.811909, 77.851654 +1.983333, 71.625941, 76.972400, 78.015014 +2.000000, 72.911494, 77.133224, 78.178715 +2.016667, 74.199734, 77.294381, 78.342759 +2.033333, 75.490665, 77.455871, 78.507145 +2.050000, 76.784294, 77.617696, 78.671874 +2.066667, 78.080624, 77.779857, 78.836948 +2.083333, 79.379664, 77.942353, 79.002366 +2.100000, 80.681417, 78.105186, 79.168130 +2.116667, 81.985889, 78.268355, 79.334241 +2.133333, 83.293087, 78.431863, 79.500698 +2.150000, 84.603016, 78.595709, 79.667503 +2.166667, 85.915680, 78.759895, 79.834657 +2.183333, 87.231088, 78.924421, 80.002160 +2.200000, 88.549242, 79.089287, 80.170013 +2.216667, 89.870151, 79.254494, 80.338216 +2.233333, 91.193818, 79.420044, 80.506771 +2.250000, 92.520250, 79.585936, 80.675677 +2.266667, 93.788188, 76.076261, 77.102895 +2.283333, 94.864168, 64.558826, 65.388192 +2.300000, 95.770737, 54.394146, 55.061891 +2.316667, 96.534401, 45.819810, 46.360287 +2.333333, 97.177611, 38.592605, 39.032233 +2.350000, 97.719314, 32.502191, 32.861386 +2.366667, 98.175492, 27.370682, 27.665334 +2.383333, 98.559622, 23.047759, 23.290323 +2.400000, 98.883063, 19.406474, 19.606782 +2.416667, 99.155391, 16.339674, 16.505540 +2.433333, 99.384673, 13.756955, 13.894629 +2.450000, 99.577708, 11.582072, 11.696581 +2.466667, 99.740220, 9.750741, 9.846152 +2.483333, 99.800384, 3.609839, 3.643931 +2.500000, 99.800434, 0.002990, 0.003018 +2.516667, 99.800434, 0.000000, 0.000000 +2.533333, 99.800434, 0.000000, 0.000000 +2.550000, 99.800434, 0.000000, 0.000000 +2.566667, 99.800434, 0.000000, 0.000000 +2.583333, 99.800434, 0.000000, 0.000000 +2.600000, 99.800434, 0.000000, 0.000000 +2.616667, 99.800434, 0.000000, 0.000000 +2.633333, 99.800434, 0.000000, 0.000000 +2.650000, 99.800434, 0.000000, 0.000000 +2.666667, 99.800434, 0.000000, 0.000000 +2.683333, 99.800434, 0.000000, 0.000000 +2.700000, 99.800434, 0.000000, 0.000000 +2.716667, 99.800434, 0.000000, 0.000000 +2.733333, 99.800434, 0.000000, 0.000000 +2.750000, 99.800434, 0.000000, 0.000000 +2.766667, 99.800434, 0.000000, 0.000000 +2.783333, 99.800434, 0.000000, 0.000000 +2.800000, 99.800434, 0.000000, 0.000000 +2.816667, 99.800434, 0.000000, 0.000000 +2.833333, 99.800434, 0.000000, 0.000000 +2.850000, 99.800434, 0.000000, 0.000000 +2.866667, 99.800434, 0.000000, 0.000000 +2.883333, 99.800434, 0.000000, 0.000000 +2.900000, 99.800434, 0.000000, 0.000000 +2.916667, 99.800434, 0.000000, 0.000000 +2.933333, 99.800434, 0.000000, 0.000000 +2.950000, 99.800434, 0.000000, 0.000000 +2.966667, 99.800434, 0.000000, 0.000000 +2.983333, 99.800434, 0.000000, 0.000000 +3.000000, 99.800434, 0.000000, 0.000000 +3.016667, 99.800434, 0.000000, 0.000000 +3.033333, 99.800434, 0.000000, 0.000000 +3.050000, 99.800434, 0.000000, 0.000000 +3.066667, 99.800434, 0.000000, 0.000000 +3.083333, 99.800434, 0.000000, 0.000000 +3.100000, 99.800434, 0.000000, 0.000000 +3.116667, 99.800434, 0.000000, 0.000000 +3.133333, 99.800434, 0.000000, 0.000000 +3.150000, 99.800434, 0.000000, 0.000000 +3.166667, 99.800434, 0.000000, 0.000000 +3.183333, 99.800434, 0.000000, 0.000000 +3.200000, 99.800434, 0.000000, 0.000000 +3.216667, 99.800434, 0.000000, 0.000000 +3.233333, 99.800434, 0.000000, 0.000000 +3.250000, 99.800434, 0.000000, 0.000000 +3.266667, 99.800434, 0.000000, 0.000000 +3.283333, 99.800434, 0.000000, 0.000000 +3.300000, 99.800434, 0.000000, 0.000000 +3.316667, 99.800434, 0.000000, 0.000000 +3.333333, 99.800434, 0.000000, 0.000000 +3.350000, 99.800434, 0.000000, 0.000000 +3.366667, 99.800434, 0.000000, 0.000000 +3.383333, 99.800434, 0.000000, 0.000000 +3.400000, 99.800434, 0.000000, 0.000000 +3.416667, 99.800434, 0.000000, 0.000000 +3.433333, 99.800434, 0.000000, 0.000000 +3.450000, 99.800434, 0.000000, 0.000000 +3.466667, 99.800434, 0.000000, 0.000000 +3.483333, 99.800434, 0.000000, 0.000000 +3.500000, 99.800434, 0.000000, 0.000000 +3.516667, 99.800434, 0.000000, 0.000000 +3.533333, 99.800434, 0.000000, 0.000000 +3.550000, 99.800434, 0.000000, 0.000000 +3.566667, 99.800434, 0.000000, 0.000000 +3.583333, 99.800434, 0.000000, 0.000000 +3.600000, 99.800434, 0.000000, 0.000000 +3.616667, 99.800434, 0.000000, 0.000000 +3.633333, 99.800434, 0.000000, 0.000000 +3.650000, 99.800434, 0.000000, 0.000000 +3.666667, 99.800434, 0.000000, 0.000000 +3.683333, 99.800434, 0.000000, 0.000000 +3.700000, 99.800434, 0.000000, 0.000000 +3.716667, 99.800434, 0.000000, 0.000000 +3.733333, 99.800434, 0.000000, 0.000000 +3.750000, 99.800434, 0.000000, 0.000000 +3.766667, 99.800434, 0.000000, 0.000000 +3.783333, 99.800434, 0.000000, 0.000000 +3.800000, 99.800434, 0.000000, 0.000000 +3.816667, 99.800434, 0.000000, 0.000000 +3.833333, 99.800434, 0.000000, 0.000000 +3.850000, 99.800434, 0.000000, 0.000000 +3.866667, 99.800434, 0.000000, 0.000000 +3.883333, 99.800434, 0.000000, 0.000000 +3.900000, 99.800434, 0.000000, 0.000000 +3.916667, 99.800434, 0.000000, 0.000000 +3.933333, 99.800434, 0.000000, 0.000000 +3.950000, 99.800434, 0.000000, 0.000000 +3.966667, 99.800434, 0.000000, 0.000000 +3.983333, 99.800434, 0.000000, 0.000000 +4.000000, 99.800434, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_50kW_ld_50kWh.csv b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_50kW_ld_50kWh.csv new file mode 100644 index 0000000..77b45a7 --- /dev/null +++ b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_50kW_ld_50kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 1.442084, 43.262511, 43.871830 +1.016667, 3.524829, 62.482357, 63.498606 +1.033333, 5.709730, 65.547036, 66.636033 +1.050000, 7.936585, 66.805635, 67.925138 +1.066667, 10.204062, 68.024320, 69.173711 +1.083333, 12.494227, 68.704950, 69.871184 +1.100000, 14.793955, 68.991842, 70.165207 +1.116667, 17.103259, 69.279122, 70.459647 +1.133333, 19.422178, 69.567579, 70.755313 +1.150000, 21.750752, 69.857219, 71.052211 +1.166667, 24.089021, 70.148045, 71.350344 +1.183333, 26.437023, 70.440063, 71.649718 +1.200000, 28.794798, 70.733276, 71.950339 +1.216667, 31.162388, 71.027691, 72.252211 +1.233333, 33.539832, 71.323311, 72.555340 +1.250000, 35.927170, 71.620142, 72.859730 +1.266667, 38.324443, 71.918188, 73.165386 +1.283333, 40.731691, 72.217454, 73.472315 +1.300000, 43.148956, 72.517945, 73.780521 +1.316667, 45.576278, 72.819665, 74.090009 +1.333333, 48.013699, 73.122620, 74.400785 +1.350000, 50.461260, 73.426815, 74.712854 +1.366667, 52.919001, 73.732253, 75.026221 +1.383333, 55.386966, 74.038941, 75.340892 +1.400000, 57.865195, 74.346883, 75.656871 +1.416667, 60.353732, 74.656084, 75.974164 +1.433333, 62.852617, 74.966549, 76.292777 +1.450000, 65.361893, 75.278283, 76.612715 +1.466667, 67.881602, 75.591292, 76.933984 +1.483333, 70.411788, 75.905579, 77.256588 +1.500000, 72.952493, 76.221150, 77.580533 +1.516667, 75.503760, 76.538011, 77.905825 +1.533333, 78.065633, 76.856165, 78.232469 +1.550000, 80.638153, 77.175619, 78.560471 +1.566667, 83.221366, 77.496378, 78.889837 +1.583333, 85.815029, 77.809894, 79.211789 +1.600000, 88.139044, 69.720463, 70.912025 +1.616667, 90.014356, 56.259348, 57.134550 +1.633333, 91.524521, 45.304954, 45.953496 +1.650000, 92.740161, 36.469201, 36.954900 +1.666667, 93.741139, 30.029343, 30.407529 +1.683333, 94.615476, 26.230106, 26.549264 +1.700000, 95.381515, 22.981171, 23.252433 +1.716667, 96.052624, 20.133278, 20.364511 +1.733333, 96.640525, 17.637012, 17.834655 +1.750000, 97.155500, 15.449259, 15.618613 +1.766667, 97.606571, 13.532121, 13.677567 +1.783333, 98.001648, 11.852303, 11.977474 +1.800000, 98.347666, 10.380562, 10.488489 +1.816667, 98.650707, 9.091229, 9.184447 +1.833333, 98.916100, 7.961776, 8.042413 +1.850000, 99.148514, 6.972440, 7.042289 +1.866667, 99.352044, 6.105884, 6.166465 +1.883333, 99.530274, 5.346908, 5.399507 +1.900000, 99.686347, 4.682183, 4.727898 +1.916667, 99.800089, 3.412256, 3.445090 +1.933333, 99.800184, 0.002843, 0.002869 +1.950000, 99.800184, 0.000000, 0.000000 +1.966667, 99.800184, 0.000000, 0.000000 +1.983333, 99.800184, 0.000000, 0.000000 +2.000000, 99.800184, 0.000000, 0.000000 +2.016667, 99.800184, 0.000000, 0.000000 +2.033333, 99.800184, 0.000000, 0.000000 +2.050000, 99.800184, 0.000000, 0.000000 +2.066667, 99.800184, 0.000000, 0.000000 +2.083333, 99.800184, 0.000000, 0.000000 +2.100000, 99.800184, 0.000000, 0.000000 +2.116667, 99.800184, 0.000000, 0.000000 +2.133333, 99.800184, 0.000000, 0.000000 +2.150000, 99.800184, 0.000000, 0.000000 +2.166667, 99.800184, 0.000000, 0.000000 +2.183333, 99.800184, 0.000000, 0.000000 +2.200000, 99.800184, 0.000000, 0.000000 +2.216667, 99.800184, 0.000000, 0.000000 +2.233333, 99.800184, 0.000000, 0.000000 +2.250000, 99.800184, 0.000000, 0.000000 +2.266667, 99.800184, 0.000000, 0.000000 +2.283333, 99.800184, 0.000000, 0.000000 +2.300000, 99.800184, 0.000000, 0.000000 +2.316667, 99.800184, 0.000000, 0.000000 +2.333333, 99.800184, 0.000000, 0.000000 +2.350000, 99.800184, 0.000000, 0.000000 +2.366667, 99.800184, 0.000000, 0.000000 +2.383333, 99.800184, 0.000000, 0.000000 +2.400000, 99.800184, 0.000000, 0.000000 +2.416667, 99.800184, 0.000000, 0.000000 +2.433333, 99.800184, 0.000000, 0.000000 +2.450000, 99.800184, 0.000000, 0.000000 +2.466667, 99.800184, 0.000000, 0.000000 +2.483333, 99.800184, 0.000000, 0.000000 +2.500000, 99.800184, 0.000000, 0.000000 +2.516667, 99.800184, 0.000000, 0.000000 +2.533333, 99.800184, 0.000000, 0.000000 +2.550000, 99.800184, 0.000000, 0.000000 +2.566667, 99.800184, 0.000000, 0.000000 +2.583333, 99.800184, 0.000000, 0.000000 +2.600000, 99.800184, 0.000000, 0.000000 +2.616667, 99.800184, 0.000000, 0.000000 +2.633333, 99.800184, 0.000000, 0.000000 +2.650000, 99.800184, 0.000000, 0.000000 +2.666667, 99.800184, 0.000000, 0.000000 +2.683333, 99.800184, 0.000000, 0.000000 +2.700000, 99.800184, 0.000000, 0.000000 +2.716667, 99.800184, 0.000000, 0.000000 +2.733333, 99.800184, 0.000000, 0.000000 +2.750000, 99.800184, 0.000000, 0.000000 +2.766667, 99.800184, 0.000000, 0.000000 +2.783333, 99.800184, 0.000000, 0.000000 +2.800000, 99.800184, 0.000000, 0.000000 +2.816667, 99.800184, 0.000000, 0.000000 +2.833333, 99.800184, 0.000000, 0.000000 +2.850000, 99.800184, 0.000000, 0.000000 +2.866667, 99.800184, 0.000000, 0.000000 +2.883333, 99.800184, 0.000000, 0.000000 +2.900000, 99.800184, 0.000000, 0.000000 +2.916667, 99.800184, 0.000000, 0.000000 +2.933333, 99.800184, 0.000000, 0.000000 +2.950000, 99.800184, 0.000000, 0.000000 +2.966667, 99.800184, 0.000000, 0.000000 +2.983333, 99.800184, 0.000000, 0.000000 +3.000000, 99.800184, 0.000000, 0.000000 +3.016667, 99.800184, 0.000000, 0.000000 +3.033333, 99.800184, 0.000000, 0.000000 +3.050000, 99.800184, 0.000000, 0.000000 +3.066667, 99.800184, 0.000000, 0.000000 +3.083333, 99.800184, 0.000000, 0.000000 +3.100000, 99.800184, 0.000000, 0.000000 +3.116667, 99.800184, 0.000000, 0.000000 +3.133333, 99.800184, 0.000000, 0.000000 +3.150000, 99.800184, 0.000000, 0.000000 +3.166667, 99.800184, 0.000000, 0.000000 +3.183333, 99.800184, 0.000000, 0.000000 +3.200000, 99.800184, 0.000000, 0.000000 +3.216667, 99.800184, 0.000000, 0.000000 +3.233333, 99.800184, 0.000000, 0.000000 +3.250000, 99.800184, 0.000000, 0.000000 +3.266667, 99.800184, 0.000000, 0.000000 +3.283333, 99.800184, 0.000000, 0.000000 +3.300000, 99.800184, 0.000000, 0.000000 +3.316667, 99.800184, 0.000000, 0.000000 +3.333333, 99.800184, 0.000000, 0.000000 +3.350000, 99.800184, 0.000000, 0.000000 +3.366667, 99.800184, 0.000000, 0.000000 +3.383333, 99.800184, 0.000000, 0.000000 +3.400000, 99.800184, 0.000000, 0.000000 +3.416667, 99.800184, 0.000000, 0.000000 +3.433333, 99.800184, 0.000000, 0.000000 +3.450000, 99.800184, 0.000000, 0.000000 +3.466667, 99.800184, 0.000000, 0.000000 +3.483333, 99.800184, 0.000000, 0.000000 +3.500000, 99.800184, 0.000000, 0.000000 +3.516667, 99.800184, 0.000000, 0.000000 +3.533333, 99.800184, 0.000000, 0.000000 +3.550000, 99.800184, 0.000000, 0.000000 +3.566667, 99.800184, 0.000000, 0.000000 +3.583333, 99.800184, 0.000000, 0.000000 +3.600000, 99.800184, 0.000000, 0.000000 +3.616667, 99.800184, 0.000000, 0.000000 +3.633333, 99.800184, 0.000000, 0.000000 +3.650000, 99.800184, 0.000000, 0.000000 +3.666667, 99.800184, 0.000000, 0.000000 +3.683333, 99.800184, 0.000000, 0.000000 +3.700000, 99.800184, 0.000000, 0.000000 +3.716667, 99.800184, 0.000000, 0.000000 +3.733333, 99.800184, 0.000000, 0.000000 +3.750000, 99.800184, 0.000000, 0.000000 +3.766667, 99.800184, 0.000000, 0.000000 +3.783333, 99.800184, 0.000000, 0.000000 +3.800000, 99.800184, 0.000000, 0.000000 +3.816667, 99.800184, 0.000000, 0.000000 +3.833333, 99.800184, 0.000000, 0.000000 +3.850000, 99.800184, 0.000000, 0.000000 +3.866667, 99.800184, 0.000000, 0.000000 +3.883333, 99.800184, 0.000000, 0.000000 +3.900000, 99.800184, 0.000000, 0.000000 +3.916667, 99.800184, 0.000000, 0.000000 +3.933333, 99.800184, 0.000000, 0.000000 +3.950000, 99.800184, 0.000000, 0.000000 +3.966667, 99.800184, 0.000000, 0.000000 +3.983333, 99.800184, 0.000000, 0.000000 +4.000000, 99.800184, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_50kW_md_200kWh.csv b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_50kW_md_200kWh.csv new file mode 100644 index 0000000..5edaedb --- /dev/null +++ b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_50kW_md_200kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.357339, 42.880636, 43.328090 +1.016667, 0.852702, 59.443611, 60.091328 +1.033333, 1.356699, 60.479634, 61.140387 +1.050000, 1.869485, 61.534275, 62.208360 +1.066667, 2.391212, 62.607244, 63.294957 +1.083333, 2.922035, 63.698856, 64.400499 +1.100000, 3.462114, 64.809432, 65.525317 +1.116667, 4.011607, 65.939109, 66.669550 +1.133333, 4.566866, 66.631065, 67.370458 +1.150000, 5.124431, 66.907903, 67.650885 +1.166667, 5.684307, 67.185054, 67.931633 +1.183333, 6.246501, 67.463348, 68.213544 +1.200000, 6.811025, 67.742791, 68.496623 +1.216667, 7.377886, 68.023387, 68.780874 +1.233333, 7.947096, 68.305141, 69.066303 +1.250000, 8.518663, 68.588058, 69.352914 +1.266667, 9.092597, 68.872142, 69.640712 +1.283333, 9.668909, 69.157398, 69.929702 +1.300000, 10.247445, 69.424285, 70.200086 +1.316667, 10.826883, 69.532535, 70.309756 +1.333333, 11.406929, 69.605539, 70.383718 +1.350000, 11.987583, 69.678559, 70.457697 +1.366667, 12.568847, 69.751656, 70.531753 +1.383333, 13.150721, 69.824829, 70.605887 +1.400000, 13.733205, 69.898078, 70.680098 +1.416667, 14.316300, 69.971404, 70.754388 +1.433333, 14.900006, 70.044806, 70.828755 +1.450000, 15.484326, 70.118286, 70.903201 +1.466667, 16.069258, 70.191842, 70.977724 +1.483333, 16.654803, 70.265475, 71.052326 +1.500000, 17.240963, 70.339184, 71.127006 +1.516667, 17.827738, 70.412971, 71.201764 +1.533333, 18.415128, 70.486835, 71.276601 +1.550000, 19.003135, 70.560776, 71.351516 +1.566667, 19.591758, 70.634795, 71.426510 +1.583333, 20.180999, 70.708890, 71.501583 +1.600000, 20.770857, 70.783064, 71.576734 +1.616667, 21.361335, 70.857314, 71.651964 +1.633333, 21.952432, 70.931642, 71.727273 +1.650000, 22.544149, 71.006048, 71.802661 +1.666667, 23.136487, 71.080532, 71.878128 +1.683333, 23.729446, 71.155093, 71.953674 +1.700000, 24.323027, 71.229733, 72.029300 +1.716667, 24.917231, 71.304450, 72.105005 +1.733333, 25.512058, 71.379246, 72.180789 +1.750000, 26.107509, 71.454119, 72.256653 +1.766667, 26.703585, 71.529071, 72.332596 +1.783333, 27.300285, 71.604101, 72.408619 +1.800000, 27.897612, 71.679210, 72.484722 +1.816667, 28.495565, 71.754397, 72.560904 +1.833333, 29.094146, 71.829662, 72.637167 +1.850000, 29.693354, 71.905006, 72.713509 +1.866667, 30.293191, 71.980429, 72.789932 +1.883333, 30.893657, 72.055931, 72.866434 +1.900000, 31.494753, 72.131511, 72.943017 +1.916667, 32.096480, 72.207171, 73.019681 +1.933333, 32.698837, 72.282909, 73.096424 +1.950000, 33.301827, 72.358727, 73.173248 +1.966667, 33.905449, 72.434624, 73.250153 +1.983333, 34.509704, 72.510600, 73.327139 +2.000000, 35.114592, 72.586656, 73.404205 +2.016667, 35.720116, 72.662791, 73.481352 +2.033333, 36.326274, 72.739005, 73.558580 +2.050000, 36.933068, 72.815299, 73.635889 +2.066667, 37.540499, 72.891673, 73.713279 +2.083333, 38.148566, 72.968127, 73.790750 +2.100000, 38.757272, 73.044660, 73.868302 +2.116667, 39.366616, 73.121274, 73.945936 +2.133333, 39.976599, 73.197967, 74.023651 +2.150000, 40.587222, 73.274741, 74.101448 +2.166667, 41.198485, 73.351595, 74.179326 +2.183333, 41.810389, 73.428529, 74.257286 +2.200000, 42.422936, 73.505543, 74.335328 +2.216667, 43.036124, 73.582638, 74.413452 +2.233333, 43.649956, 73.659813, 74.491657 +2.250000, 44.264432, 73.737069, 74.569945 +2.266667, 44.879552, 73.814406, 74.648314 +2.283333, 45.495317, 73.891824, 74.726766 +2.300000, 46.111728, 73.969322, 74.805300 +2.316667, 46.728785, 74.046901, 74.883917 +2.333333, 47.346490, 74.124562, 74.962616 +2.350000, 47.964843, 74.202303, 75.041397 +2.366667, 48.583844, 74.280126, 75.120262 +2.383333, 49.203494, 74.358030, 75.199208 +2.400000, 49.823794, 74.436015, 75.278238 +2.416667, 50.444745, 74.514082, 75.357351 +2.433333, 51.066347, 74.592230, 75.436546 +2.450000, 51.688601, 74.670460, 75.515825 +2.466667, 52.311507, 74.748772, 75.595186 +2.483333, 52.935067, 74.827165, 75.674631 +2.500000, 53.559280, 74.905640, 75.754160 +2.516667, 54.184149, 74.984197, 75.833771 +2.533333, 54.809672, 75.062837, 75.913466 +2.550000, 55.435852, 75.141558, 75.993245 +2.566667, 56.062688, 75.220362, 76.073108 +2.583333, 56.690182, 75.299248, 76.153054 +2.600000, 57.318334, 75.378216, 76.233084 +2.616667, 57.947144, 75.457267, 76.313198 +2.633333, 58.576614, 75.536400, 76.393396 +2.650000, 59.206744, 75.615616, 76.473678 +2.666667, 59.837535, 75.694915, 76.554044 +2.683333, 60.468988, 75.774296, 76.634494 +2.700000, 61.101103, 75.853761, 76.715029 +2.716667, 61.733880, 75.933308, 76.795649 +2.733333, 62.367321, 76.012939, 76.876353 +2.750000, 63.001427, 76.092652, 76.957141 +2.766667, 63.636197, 76.172449, 77.038014 +2.783333, 64.271633, 76.252329, 77.118972 +2.800000, 64.907736, 76.332293, 77.200015 +2.816667, 65.544505, 76.412340, 77.281143 +2.833333, 66.181942, 76.492471, 77.362356 +2.850000, 66.820048, 76.572685, 77.443655 +2.866667, 67.458823, 76.652983, 77.525038 +2.883333, 68.098268, 76.733365, 77.606507 +2.900000, 68.738383, 76.813831, 77.688061 +2.916667, 69.379169, 76.894381, 77.769701 +2.933333, 70.020628, 76.975015, 77.851426 +2.950000, 70.662759, 77.055734, 77.933237 +2.966667, 71.305564, 77.136536, 78.015134 +2.983333, 71.949042, 77.217423, 78.097117 +3.000000, 72.593195, 77.298394, 78.179185 +3.016667, 73.238024, 77.379450, 78.261340 +3.033333, 73.883529, 77.460591, 78.343581 +3.050000, 74.529711, 77.541816, 78.425908 +3.066667, 75.176570, 77.623126, 78.508322 +3.083333, 75.824108, 77.704521, 78.590821 +3.100000, 76.472325, 77.786001, 78.673408 +3.116667, 77.121221, 77.867566, 78.756081 +3.133333, 77.770798, 77.949216, 78.838841 +3.150000, 78.421056, 78.030951, 78.921687 +3.166667, 79.071995, 78.112772, 79.004620 +3.183333, 79.723618, 78.194678, 79.087641 +3.200000, 80.375923, 78.276670, 79.170748 +3.216667, 81.028913, 78.358747, 79.253942 +3.233333, 81.682587, 78.440910, 79.337224 +3.250000, 82.336947, 78.523159, 79.420593 +3.266667, 82.991993, 78.605494, 79.504050 +3.283333, 83.647725, 78.687914, 79.587594 +3.300000, 84.304145, 78.770421, 79.671225 +3.316667, 84.961254, 78.853014, 79.754944 +3.333333, 85.619051, 78.935693, 79.838751 +3.350000, 86.277538, 79.018458, 79.922646 +3.366667, 86.936716, 79.101309, 80.006629 +3.383333, 87.596585, 79.184248, 80.090700 +3.400000, 88.257145, 79.267272, 80.174859 +3.416667, 88.918399, 79.350384, 80.259106 +3.433333, 89.580345, 79.433582, 80.343442 +3.450000, 90.242986, 79.516867, 80.427866 +3.466667, 90.906321, 79.600239, 80.512379 +3.483333, 91.570352, 79.683698, 80.596980 +3.500000, 92.235079, 79.767244, 80.681670 +3.516667, 92.900503, 79.850877, 80.766449 +3.533333, 93.566624, 79.934598, 80.851316 +3.550000, 94.233444, 80.018406, 80.936273 +3.566667, 94.900964, 80.102301, 81.021318 +3.583333, 95.569183, 80.186284, 81.106453 +3.600000, 96.238102, 80.270355, 81.191677 +3.616667, 96.902832, 79.767506, 80.681935 +3.633333, 97.488403, 70.268618, 71.055511 +3.650000, 97.981667, 59.191661, 59.836216 +3.666667, 98.396916, 49.829820, 50.359430 +3.683333, 98.746472, 41.946784, 42.383404 +3.700000, 99.040718, 35.309545, 35.670559 +3.716667, 99.288398, 29.721602, 30.020865 +3.733333, 99.496876, 25.017336, 25.265963 +3.750000, 99.672353, 21.057192, 21.264147 +3.766667, 99.800172, 15.338257, 15.486569 +3.783333, 99.800278, 0.012784, 0.012902 +3.800000, 99.800278, 0.000000, 0.000000 +3.816667, 99.800278, 0.000000, 0.000000 +3.833333, 99.800278, 0.000000, 0.000000 +3.850000, 99.800278, 0.000000, 0.000000 +3.866667, 99.800278, 0.000000, 0.000000 +3.883333, 99.800278, 0.000000, 0.000000 +3.900000, 99.800278, 0.000000, 0.000000 +3.916667, 99.800278, 0.000000, 0.000000 +3.933333, 99.800278, 0.000000, 0.000000 +3.950000, 99.800278, 0.000000, 0.000000 +3.966667, 99.800278, 0.000000, 0.000000 +3.983333, 99.800278, 0.000000, 0.000000 +4.000000, 99.800278, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_90kW_hd_300kWh.csv b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_90kW_hd_300kWh.csv new file mode 100644 index 0000000..fb9a2b5 --- /dev/null +++ b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_90kW_hd_300kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.640974, 115.375406, 116.688843 +1.016667, 1.584768, 169.882805, 171.989576 +1.033333, 2.559513, 175.454201, 177.648348 +1.050000, 3.566264, 181.215023, 183.500748 +1.066667, 4.601780, 186.392902, 188.762004 +1.083333, 5.647666, 188.259501, 190.658908 +1.100000, 6.701669, 189.720623, 192.143844 +1.116667, 7.763846, 191.191870, 193.639151 +1.133333, 8.834260, 192.674445, 195.146053 +1.150000, 9.912973, 194.168433, 196.664640 +1.166667, 10.997408, 195.198268, 197.711481 +1.183333, 12.083998, 195.586117, 198.105745 +1.200000, 13.172718, 195.969715, 198.495693 +1.216667, 14.263574, 196.354052, 198.886399 +1.233333, 15.356569, 196.739138, 199.277870 +1.250000, 16.451708, 197.124974, 199.670110 +1.266667, 17.548995, 197.511560, 200.063119 +1.283333, 18.648433, 197.898899, 200.456898 +1.300000, 19.750027, 198.286992, 200.851450 +1.316667, 20.853782, 198.675841, 201.246775 +1.333333, 21.959701, 199.065446, 201.642876 +1.350000, 23.067789, 199.455810, 202.039753 +1.366667, 24.178050, 199.846934, 202.437409 +1.383333, 25.290488, 200.238819, 202.835844 +1.400000, 26.405107, 200.631466, 203.235061 +1.416667, 27.521912, 201.024878, 203.635060 +1.433333, 28.640907, 201.419056, 204.035844 +1.450000, 29.762095, 201.814001, 204.437414 +1.466667, 30.885483, 202.209714, 204.839771 +1.483333, 32.011073, 202.606197, 205.242917 +1.500000, 33.138870, 203.003452, 205.646854 +1.516667, 34.268878, 203.401480, 206.051582 +1.533333, 35.401102, 203.800282, 206.457104 +1.550000, 36.535545, 204.199860, 206.863421 +1.566667, 37.672213, 204.600216, 207.270535 +1.583333, 38.811110, 205.001351, 207.678447 +1.600000, 39.952239, 205.403266, 208.087159 +1.616667, 41.095605, 205.805964, 208.496672 +1.633333, 42.241213, 206.209444, 208.906988 +1.650000, 43.389067, 206.613710, 209.318108 +1.666667, 44.539172, 207.018762, 209.730034 +1.683333, 45.691530, 207.424602, 210.142768 +1.700000, 46.846148, 207.831231, 210.556311 +1.716667, 48.003030, 208.238652, 210.970664 +1.733333, 49.162179, 208.646865, 211.385830 +1.750000, 50.323601, 209.055871, 211.801810 +1.766667, 51.487299, 209.465674, 212.218605 +1.783333, 52.653278, 209.876273, 212.636217 +1.800000, 53.821543, 210.287671, 213.054648 +1.816667, 54.992098, 210.699870, 213.473899 +1.833333, 56.164947, 211.112869, 213.893972 +1.850000, 57.340095, 211.526672, 214.314868 +1.866667, 58.517547, 211.941280, 214.736589 +1.883333, 59.697306, 212.356694, 215.159137 +1.900000, 60.879378, 212.772916, 215.582513 +1.916667, 62.063766, 213.189947, 216.006719 +1.933333, 63.250476, 213.607789, 216.431756 +1.950000, 64.439512, 214.026443, 216.857626 +1.966667, 65.630878, 214.445912, 217.284331 +1.983333, 66.824579, 214.866195, 217.711872 +2.000000, 68.020620, 215.287296, 218.140251 +2.016667, 69.219005, 215.709216, 218.569470 +2.033333, 70.419738, 216.131956, 218.999530 +2.050000, 71.622824, 216.555518, 219.430432 +2.066667, 72.828268, 216.979903, 219.862180 +2.083333, 74.036074, 217.405113, 220.294773 +2.100000, 75.246247, 217.831149, 220.728214 +2.116667, 76.458791, 218.258014, 221.162504 +2.133333, 77.673712, 218.685708, 221.597645 +2.150000, 78.891013, 219.114234, 222.033639 +2.166667, 80.110700, 219.543592, 222.470488 +2.183333, 81.332777, 219.973785, 222.908192 +2.200000, 82.557248, 220.404814, 223.346754 +2.216667, 83.784118, 220.836681, 223.786175 +2.233333, 85.013393, 221.269387, 224.226458 +2.250000, 86.245076, 221.702933, 224.667603 +2.266667, 87.479172, 222.137322, 225.109612 +2.283333, 88.715686, 222.572556, 225.552488 +2.300000, 89.954623, 223.008635, 225.996231 +2.316667, 91.195987, 223.445561, 226.440843 +2.333333, 92.439783, 223.883336, 226.886327 +2.350000, 93.677975, 222.874579, 225.859818 +2.366667, 94.772721, 197.054263, 199.598225 +2.383333, 95.695753, 166.145636, 168.194451 +2.400000, 96.472812, 139.870630, 141.526794 +2.416667, 97.126948, 117.744509, 119.090112 +2.433333, 97.677585, 99.114657, 100.212980 +2.450000, 98.141084, 83.429755, 84.329939 +2.466667, 98.531223, 70.225078, 70.965564 +2.483333, 98.859606, 59.108995, 59.720075 +2.500000, 99.136004, 49.751549, 50.257258 +2.516667, 99.368641, 41.874793, 42.294325 +2.533333, 99.564445, 35.244624, 35.593402 +2.550000, 99.729244, 29.663895, 29.954382 +2.566667, 99.800691, 12.860496, 12.982437 +2.583333, 99.800751, 0.010626, 0.010724 +2.600000, 99.800751, 0.000000, 0.000000 +2.616667, 99.800751, 0.000000, 0.000000 +2.633333, 99.800751, 0.000000, 0.000000 +2.650000, 99.800751, 0.000000, 0.000000 +2.666667, 99.800751, 0.000000, 0.000000 +2.683333, 99.800751, 0.000000, 0.000000 +2.700000, 99.800751, 0.000000, 0.000000 +2.716667, 99.800751, 0.000000, 0.000000 +2.733333, 99.800751, 0.000000, 0.000000 +2.750000, 99.800751, 0.000000, 0.000000 +2.766667, 99.800751, 0.000000, 0.000000 +2.783333, 99.800751, 0.000000, 0.000000 +2.800000, 99.800751, 0.000000, 0.000000 +2.816667, 99.800751, 0.000000, 0.000000 +2.833333, 99.800751, 0.000000, 0.000000 +2.850000, 99.800751, 0.000000, 0.000000 +2.866667, 99.800751, 0.000000, 0.000000 +2.883333, 99.800751, 0.000000, 0.000000 +2.900000, 99.800751, 0.000000, 0.000000 +2.916667, 99.800751, 0.000000, 0.000000 +2.933333, 99.800751, 0.000000, 0.000000 +2.950000, 99.800751, 0.000000, 0.000000 +2.966667, 99.800751, 0.000000, 0.000000 +2.983333, 99.800751, 0.000000, 0.000000 +3.000000, 99.800751, 0.000000, 0.000000 +3.016667, 99.800751, 0.000000, 0.000000 +3.033333, 99.800751, 0.000000, 0.000000 +3.050000, 99.800751, 0.000000, 0.000000 +3.066667, 99.800751, 0.000000, 0.000000 +3.083333, 99.800751, 0.000000, 0.000000 +3.100000, 99.800751, 0.000000, 0.000000 +3.116667, 99.800751, 0.000000, 0.000000 +3.133333, 99.800751, 0.000000, 0.000000 +3.150000, 99.800751, 0.000000, 0.000000 +3.166667, 99.800751, 0.000000, 0.000000 +3.183333, 99.800751, 0.000000, 0.000000 +3.200000, 99.800751, 0.000000, 0.000000 +3.216667, 99.800751, 0.000000, 0.000000 +3.233333, 99.800751, 0.000000, 0.000000 +3.250000, 99.800751, 0.000000, 0.000000 +3.266667, 99.800751, 0.000000, 0.000000 +3.283333, 99.800751, 0.000000, 0.000000 +3.300000, 99.800751, 0.000000, 0.000000 +3.316667, 99.800751, 0.000000, 0.000000 +3.333333, 99.800751, 0.000000, 0.000000 +3.350000, 99.800751, 0.000000, 0.000000 +3.366667, 99.800751, 0.000000, 0.000000 +3.383333, 99.800751, 0.000000, 0.000000 +3.400000, 99.800751, 0.000000, 0.000000 +3.416667, 99.800751, 0.000000, 0.000000 +3.433333, 99.800751, 0.000000, 0.000000 +3.450000, 99.800751, 0.000000, 0.000000 +3.466667, 99.800751, 0.000000, 0.000000 +3.483333, 99.800751, 0.000000, 0.000000 +3.500000, 99.800751, 0.000000, 0.000000 +3.516667, 99.800751, 0.000000, 0.000000 +3.533333, 99.800751, 0.000000, 0.000000 +3.550000, 99.800751, 0.000000, 0.000000 +3.566667, 99.800751, 0.000000, 0.000000 +3.583333, 99.800751, 0.000000, 0.000000 +3.600000, 99.800751, 0.000000, 0.000000 +3.616667, 99.800751, 0.000000, 0.000000 +3.633333, 99.800751, 0.000000, 0.000000 +3.650000, 99.800751, 0.000000, 0.000000 +3.666667, 99.800751, 0.000000, 0.000000 +3.683333, 99.800751, 0.000000, 0.000000 +3.700000, 99.800751, 0.000000, 0.000000 +3.716667, 99.800751, 0.000000, 0.000000 +3.733333, 99.800751, 0.000000, 0.000000 +3.750000, 99.800751, 0.000000, 0.000000 +3.766667, 99.800751, 0.000000, 0.000000 +3.783333, 99.800751, 0.000000, 0.000000 +3.800000, 99.800751, 0.000000, 0.000000 +3.816667, 99.800751, 0.000000, 0.000000 +3.833333, 99.800751, 0.000000, 0.000000 +3.850000, 99.800751, 0.000000, 0.000000 +3.866667, 99.800751, 0.000000, 0.000000 +3.883333, 99.800751, 0.000000, 0.000000 +3.900000, 99.800751, 0.000000, 0.000000 +3.916667, 99.800751, 0.000000, 0.000000 +3.933333, 99.800751, 0.000000, 0.000000 +3.950000, 99.800751, 0.000000, 0.000000 +3.966667, 99.800751, 0.000000, 0.000000 +3.983333, 99.800751, 0.000000, 0.000000 +4.000000, 99.800751, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_90kW_hd_400kWh.csv b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_90kW_hd_400kWh.csv new file mode 100644 index 0000000..4465cf5 --- /dev/null +++ b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_90kW_hd_400kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.479195, 115.006838, 116.253768 +1.016667, 1.180768, 168.377470, 170.328507 +1.033333, 1.899561, 172.510299, 174.519192 +1.050000, 2.636015, 176.749017, 178.817748 +1.066667, 3.390562, 181.091353, 183.221908 +1.083333, 4.163330, 185.464134, 187.657483 +1.100000, 4.945111, 187.627535, 189.852149 +1.116667, 5.731456, 188.722701, 190.963193 +1.133333, 6.522378, 189.821257, 192.077710 +1.150000, 7.317903, 190.926174, 193.198714 +1.166667, 8.118059, 192.037487, 194.326243 +1.183333, 8.922873, 193.155235, 195.460334 +1.200000, 9.732371, 194.279454, 196.601027 +1.216667, 10.545788, 195.220172, 197.555558 +1.233333, 11.360600, 195.554938, 197.895246 +1.250000, 12.176613, 195.843125, 198.187671 +1.266667, 12.993828, 196.131647, 198.480440 +1.283333, 13.812248, 196.420592, 198.773640 +1.300000, 14.631872, 196.709960, 199.067272 +1.316667, 15.452705, 196.999753, 199.361336 +1.333333, 16.274746, 197.289970, 199.655834 +1.350000, 17.097999, 197.580612, 199.950766 +1.366667, 17.922464, 197.871680, 200.246132 +1.383333, 18.748144, 198.163175, 200.541933 +1.400000, 19.575040, 198.455096, 200.838170 +1.416667, 20.403155, 198.747445, 201.134844 +1.433333, 21.232489, 199.040223, 201.431954 +1.450000, 22.063045, 199.333429, 201.729502 +1.466667, 22.894824, 199.627065, 202.027489 +1.483333, 23.727829, 199.921131, 202.325914 +1.500000, 24.562061, 200.215628, 202.624779 +1.516667, 25.397521, 200.510556, 202.924084 +1.533333, 26.234213, 200.805916, 203.223831 +1.550000, 27.072137, 201.101709, 203.524018 +1.566667, 27.911295, 201.397935, 203.824648 +1.583333, 28.751689, 201.694595, 204.125721 +1.600000, 29.593321, 201.991690, 204.427237 +1.616667, 30.436193, 202.289220, 204.729197 +1.633333, 31.280306, 202.587185, 205.031602 +1.650000, 32.125662, 202.885587, 205.334453 +1.666667, 32.972264, 203.184426, 205.637749 +1.683333, 33.820113, 203.483703, 205.941493 +1.700000, 34.669211, 203.783418, 206.245684 +1.716667, 35.519559, 204.083572, 206.550322 +1.733333, 36.371159, 204.384166, 206.855410 +1.750000, 37.224014, 204.685200, 207.160947 +1.766667, 38.078126, 204.986674, 207.466933 +1.783333, 38.933495, 205.288590, 207.773371 +1.800000, 39.790124, 205.590949, 208.080260 +1.816667, 40.648014, 205.893750, 208.387601 +1.833333, 41.507168, 206.196994, 208.695394 +1.850000, 42.367588, 206.500683, 209.003641 +1.866667, 43.229275, 206.804816, 209.312342 +1.883333, 44.092231, 207.109395, 209.621497 +1.900000, 44.956457, 207.414420, 209.931108 +1.916667, 45.821957, 207.719891, 210.241175 +1.933333, 46.688731, 208.025809, 210.551698 +1.950000, 47.556782, 208.332176, 210.862679 +1.966667, 48.426111, 208.638991, 211.174118 +1.983333, 49.296720, 208.946255, 211.486015 +2.000000, 50.168612, 209.253970, 211.798372 +2.016667, 51.041787, 209.562134, 212.111189 +2.033333, 51.916249, 209.870750, 212.424466 +2.050000, 52.791998, 210.179818, 212.738205 +2.066667, 53.669037, 210.489338, 213.052406 +2.083333, 54.547367, 210.799312, 213.367069 +2.100000, 55.426991, 211.109739, 213.682196 +2.116667, 56.307911, 211.420620, 213.997787 +2.133333, 57.190127, 211.731957, 214.313843 +2.150000, 58.073643, 212.043750, 214.630364 +2.166667, 58.958459, 212.355999, 214.947351 +2.183333, 59.844579, 212.668705, 215.264805 +2.200000, 60.732003, 212.981869, 215.582727 +2.216667, 61.620735, 213.295491, 215.901116 +2.233333, 62.510775, 213.609572, 216.219975 +2.250000, 63.402125, 213.924113, 216.539303 +2.266667, 64.294788, 214.239115, 216.859101 +2.283333, 65.188765, 214.554577, 217.179370 +2.300000, 66.084059, 214.870501, 217.500110 +2.316667, 66.980671, 215.186888, 217.821323 +2.333333, 67.878603, 215.503738, 218.143009 +2.350000, 68.777858, 215.821051, 218.465169 +2.366667, 69.678436, 216.138829, 218.787803 +2.383333, 70.580341, 216.457072, 219.110912 +2.400000, 71.483573, 216.775781, 219.434496 +2.416667, 72.388135, 217.094956, 219.758558 +2.433333, 73.294030, 217.414598, 220.083096 +2.450000, 74.201258, 217.734708, 220.408112 +2.466667, 75.109821, 218.055287, 220.733607 +2.483333, 76.019723, 218.376335, 221.059581 +2.500000, 76.930964, 218.697852, 221.386034 +2.516667, 77.843546, 219.019840, 221.712969 +2.533333, 78.757473, 219.342299, 222.040385 +2.550000, 79.672744, 219.665230, 222.368283 +2.566667, 80.589364, 219.988634, 222.696663 +2.583333, 81.507333, 220.312511, 223.025527 +2.600000, 82.426653, 220.636861, 223.354875 +2.616667, 83.347326, 220.961686, 223.684709 +2.633333, 84.269356, 221.286987, 224.015027 +2.650000, 85.192742, 221.612763, 224.345832 +2.666667, 86.117488, 221.939017, 224.677124 +2.683333, 87.043595, 222.265747, 225.008904 +2.700000, 87.971066, 222.592955, 225.341172 +2.716667, 88.899902, 222.920643, 225.673929 +2.733333, 89.830105, 223.248809, 226.007177 +2.750000, 90.761678, 223.577456, 226.340914 +2.766667, 91.694622, 223.906583, 226.675143 +2.783333, 92.628940, 224.236192, 227.009864 +2.800000, 93.564632, 224.566284, 227.345078 +2.816667, 94.501703, 224.896858, 227.680785 +2.833333, 95.432170, 223.312187, 226.071536 +2.850000, 96.250467, 196.391358, 198.743975 +2.866667, 96.940115, 165.515464, 167.426715 +2.883333, 97.520556, 139.305846, 140.863448 +2.900000, 98.009077, 117.244913, 118.519767 +2.916667, 98.420231, 98.677029, 99.724456 +2.933333, 98.766270, 83.049301, 83.912777 +2.950000, 99.057504, 69.896293, 70.610227 +2.966667, 99.302614, 58.826207, 59.418017 +2.983333, 99.508902, 49.509249, 50.000919 +3.000000, 99.682518, 41.667825, 42.077086 +3.016667, 99.800347, 28.278904, 28.551404 +3.033333, 99.800445, 0.023553, 0.023771 +3.050000, 99.800445, 0.000000, 0.000000 +3.066667, 99.800445, 0.000000, 0.000000 +3.083333, 99.800445, 0.000000, 0.000000 +3.100000, 99.800445, 0.000000, 0.000000 +3.116667, 99.800445, 0.000000, 0.000000 +3.133333, 99.800445, 0.000000, 0.000000 +3.150000, 99.800445, 0.000000, 0.000000 +3.166667, 99.800445, 0.000000, 0.000000 +3.183333, 99.800445, 0.000000, 0.000000 +3.200000, 99.800445, 0.000000, 0.000000 +3.216667, 99.800445, 0.000000, 0.000000 +3.233333, 99.800445, 0.000000, 0.000000 +3.250000, 99.800445, 0.000000, 0.000000 +3.266667, 99.800445, 0.000000, 0.000000 +3.283333, 99.800445, 0.000000, 0.000000 +3.300000, 99.800445, 0.000000, 0.000000 +3.316667, 99.800445, 0.000000, 0.000000 +3.333333, 99.800445, 0.000000, 0.000000 +3.350000, 99.800445, 0.000000, 0.000000 +3.366667, 99.800445, 0.000000, 0.000000 +3.383333, 99.800445, 0.000000, 0.000000 +3.400000, 99.800445, 0.000000, 0.000000 +3.416667, 99.800445, 0.000000, 0.000000 +3.433333, 99.800445, 0.000000, 0.000000 +3.450000, 99.800445, 0.000000, 0.000000 +3.466667, 99.800445, 0.000000, 0.000000 +3.483333, 99.800445, 0.000000, 0.000000 +3.500000, 99.800445, 0.000000, 0.000000 +3.516667, 99.800445, 0.000000, 0.000000 +3.533333, 99.800445, 0.000000, 0.000000 +3.550000, 99.800445, 0.000000, 0.000000 +3.566667, 99.800445, 0.000000, 0.000000 +3.583333, 99.800445, 0.000000, 0.000000 +3.600000, 99.800445, 0.000000, 0.000000 +3.616667, 99.800445, 0.000000, 0.000000 +3.633333, 99.800445, 0.000000, 0.000000 +3.650000, 99.800445, 0.000000, 0.000000 +3.666667, 99.800445, 0.000000, 0.000000 +3.683333, 99.800445, 0.000000, 0.000000 +3.700000, 99.800445, 0.000000, 0.000000 +3.716667, 99.800445, 0.000000, 0.000000 +3.733333, 99.800445, 0.000000, 0.000000 +3.750000, 99.800445, 0.000000, 0.000000 +3.766667, 99.800445, 0.000000, 0.000000 +3.783333, 99.800445, 0.000000, 0.000000 +3.800000, 99.800445, 0.000000, 0.000000 +3.816667, 99.800445, 0.000000, 0.000000 +3.833333, 99.800445, 0.000000, 0.000000 +3.850000, 99.800445, 0.000000, 0.000000 +3.866667, 99.800445, 0.000000, 0.000000 +3.883333, 99.800445, 0.000000, 0.000000 +3.900000, 99.800445, 0.000000, 0.000000 +3.916667, 99.800445, 0.000000, 0.000000 +3.933333, 99.800445, 0.000000, 0.000000 +3.950000, 99.800445, 0.000000, 0.000000 +3.966667, 99.800445, 0.000000, 0.000000 +3.983333, 99.800445, 0.000000, 0.000000 +4.000000, 99.800445, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_90kW_hd_600kWh.csv b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_90kW_hd_600kWh.csv new file mode 100644 index 0000000..596ae92 --- /dev/null +++ b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_90kW_hd_600kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.318441, 114.638701, 115.820054 +1.016667, 0.782004, 166.882672, 168.683325 +1.033333, 1.253136, 169.607517, 171.441866 +1.050000, 1.731967, 172.379350, 174.248116 +1.066667, 2.218624, 175.196333, 177.100225 +1.083333, 2.713233, 178.059199, 179.998939 +1.100000, 3.215924, 180.968689, 182.945019 +1.116667, 3.726828, 183.925557, 185.939235 +1.133333, 4.245366, 186.673910, 188.722447 +1.150000, 4.766826, 187.725605, 189.787519 +1.166667, 5.290314, 188.455422, 190.526631 +1.183333, 5.815834, 189.187337, 191.267878 +1.200000, 6.343395, 189.922086, 192.012004 +1.216667, 6.873006, 190.659678, 192.759020 +1.233333, 7.404673, 191.400124, 193.508938 +1.250000, 7.938404, 192.143436, 194.261767 +1.266667, 8.474209, 192.889624, 195.017520 +1.283333, 9.012094, 193.638699, 195.776208 +1.300000, 9.552068, 194.390673, 196.537843 +1.316667, 10.094116, 195.137077, 197.293846 +1.333333, 10.637235, 195.522799, 197.684532 +1.350000, 11.180889, 195.715494, 197.879708 +1.366667, 11.725078, 195.908018, 198.074712 +1.383333, 12.269802, 196.100732, 198.269909 +1.400000, 12.815062, 196.293634, 198.465297 +1.416667, 13.360859, 196.486725, 198.660878 +1.433333, 13.907192, 196.680006, 198.856650 +1.450000, 14.454063, 196.873476, 199.052616 +1.466667, 15.001471, 197.067136, 199.248774 +1.483333, 15.549419, 197.260985, 199.445125 +1.500000, 16.097905, 197.455025, 199.641670 +1.516667, 16.646930, 197.649255, 199.838407 +1.533333, 17.196496, 197.843675, 200.035339 +1.550000, 17.746603, 198.038285, 200.232464 +1.566667, 18.297250, 198.233087, 200.429782 +1.583333, 18.848439, 198.428079, 200.627295 +1.600000, 19.400170, 198.623262, 200.825003 +1.616667, 19.952444, 198.818637, 201.022904 +1.633333, 20.505262, 199.014203, 201.221001 +1.650000, 21.058623, 199.209961, 201.419292 +1.666667, 21.612528, 199.405910, 201.617778 +1.683333, 22.166978, 199.602052, 201.816459 +1.700000, 22.721974, 199.798386, 202.015336 +1.716667, 23.277515, 199.994912, 202.214409 +1.733333, 23.833603, 200.191631, 202.413677 +1.750000, 24.390238, 200.388543, 202.613142 +1.766667, 24.947420, 200.585647, 202.812802 +1.783333, 25.505151, 200.782945, 203.012659 +1.800000, 26.063430, 200.980436, 203.212713 +1.816667, 26.622258, 201.178121, 203.412963 +1.833333, 27.181635, 201.375999, 203.613410 +1.850000, 27.741563, 201.574071, 203.814055 +1.866667, 28.302042, 201.772338, 204.014896 +1.883333, 28.863072, 201.970798, 204.215936 +1.900000, 29.424654, 202.169453, 204.417173 +1.916667, 29.986788, 202.368303, 204.618608 +1.933333, 30.549475, 202.567348, 204.820241 +1.950000, 31.112716, 202.766588, 205.022072 +1.966667, 31.676510, 202.966023, 205.224102 +1.983333, 32.240859, 203.165653, 205.426331 +2.000000, 32.805763, 203.365479, 205.628758 +2.016667, 33.371223, 203.565501, 205.831385 +2.033333, 33.937239, 203.765718, 206.034211 +2.050000, 34.503812, 203.966132, 206.237236 +2.066667, 35.070941, 204.166743, 206.440462 +2.083333, 35.638629, 204.367550, 206.643887 +2.100000, 36.206875, 204.568553, 206.847512 +2.116667, 36.775680, 204.769754, 207.051337 +2.133333, 37.345044, 204.971152, 207.255363 +2.150000, 37.914968, 205.172747, 207.459589 +2.166667, 38.485453, 205.374539, 207.664017 +2.183333, 39.056499, 205.576530, 207.868645 +2.200000, 39.628107, 205.778718, 208.073475 +2.216667, 40.200276, 205.981104, 208.278506 +2.233333, 40.773009, 206.183689, 208.483739 +2.250000, 41.346305, 206.386472, 208.689173 +2.266667, 41.920164, 206.589454, 208.894810 +2.283333, 42.494588, 206.792634, 209.100649 +2.300000, 43.069577, 206.996014, 209.306690 +2.316667, 43.645132, 207.199593, 209.512934 +2.333333, 44.221252, 207.403371, 209.719381 +2.350000, 44.797939, 207.607350, 209.926031 +2.366667, 45.375193, 207.811527, 210.132884 +2.383333, 45.953015, 208.015905, 210.339941 +2.400000, 46.531406, 208.220484, 210.547201 +2.416667, 47.110365, 208.425262, 210.754665 +2.433333, 47.689893, 208.630241, 210.962333 +2.450000, 48.269992, 208.835421, 211.170205 +2.466667, 48.850660, 209.040802, 211.378282 +2.483333, 49.431900, 209.246385, 211.586563 +2.500000, 50.013712, 209.452168, 211.795049 +2.516667, 50.596096, 209.658154, 212.003741 +2.533333, 51.179052, 209.864341, 212.212637 +2.550000, 51.762582, 210.070730, 212.421739 +2.566667, 52.346686, 210.277321, 212.631046 +2.583333, 52.931364, 210.484114, 212.840560 +2.600000, 53.516617, 210.691111, 213.050279 +2.616667, 54.102446, 210.898310, 213.260205 +2.633333, 54.688850, 211.105712, 213.470337 +2.650000, 55.275832, 211.313317, 213.680676 +2.666667, 55.863390, 211.521125, 213.891221 +2.683333, 56.451527, 211.729137, 214.101974 +2.700000, 57.040242, 211.937353, 214.312934 +2.716667, 57.629536, 212.145773, 214.524101 +2.733333, 58.219409, 212.354396, 214.735476 +2.750000, 58.809862, 212.563225, 214.947059 +2.766667, 59.400896, 212.772257, 215.158850 +2.783333, 59.992512, 212.981495, 215.370849 +2.800000, 60.584709, 213.190938, 215.583057 +2.816667, 61.177488, 213.400585, 215.795474 +2.833333, 61.770850, 213.610438, 216.008099 +2.850000, 62.364796, 213.820497, 216.220933 +2.866667, 62.959326, 214.030761, 216.433977 +2.883333, 63.554441, 214.241231, 216.647230 +2.900000, 64.150140, 214.451908, 216.860693 +2.916667, 64.746426, 214.662791, 217.074366 +2.933333, 65.343298, 214.873880, 217.288249 +2.950000, 65.940757, 215.085176, 217.502342 +2.966667, 66.538803, 215.296679, 217.716646 +2.983333, 67.137437, 215.508389, 217.931160 +3.000000, 67.736660, 215.720307, 218.145886 +3.016667, 68.336473, 215.932432, 218.360822 +3.033333, 68.936875, 216.144765, 218.575970 +3.050000, 69.537867, 216.357305, 218.791330 +3.066667, 70.139451, 216.570054, 219.006901 +3.083333, 70.741626, 216.783012, 219.222684 +3.100000, 71.344393, 216.996178, 219.438679 +3.116667, 71.947753, 217.209552, 219.654887 +3.133333, 72.551706, 217.423136, 219.871308 +3.150000, 73.156253, 217.636929, 220.087941 +3.166667, 73.761395, 217.850931, 220.304787 +3.183333, 74.367131, 218.065143, 220.521847 +3.200000, 74.973463, 218.279564, 220.739119 +3.216667, 75.580392, 218.494196, 220.956606 +3.233333, 76.187917, 218.709037, 221.174306 +3.250000, 76.796039, 218.924090, 221.392221 +3.266667, 77.404760, 219.139352, 221.610350 +3.283333, 78.014078, 219.354826, 221.828693 +3.300000, 78.623997, 219.570510, 222.047251 +3.316667, 79.234514, 219.786406, 222.266023 +3.333333, 79.845632, 220.002513, 222.485011 +3.350000, 80.457351, 220.218832, 222.704215 +3.366667, 81.069672, 220.435363, 222.923633 +3.383333, 81.682594, 220.652106, 223.143268 +3.400000, 82.296120, 220.869060, 223.363118 +3.416667, 82.910248, 221.086228, 223.583185 +3.433333, 83.524980, 221.303608, 223.803468 +3.450000, 84.140317, 221.521201, 224.023967 +3.466667, 84.756259, 221.739007, 224.244684 +3.483333, 85.372806, 221.957026, 224.465617 +3.500000, 85.989959, 222.175259, 224.686768 +3.516667, 86.607720, 222.393705, 224.908136 +3.533333, 87.226087, 222.612365, 225.129722 +3.550000, 87.845063, 222.831240, 225.351525 +3.566667, 88.464647, 223.050329, 225.573547 +3.583333, 89.084841, 223.269632, 225.795787 +3.600000, 89.705644, 223.489150, 226.018245 +3.616667, 90.327057, 223.708883, 226.240922 +3.633333, 90.949082, 223.928831, 226.463819 +3.650000, 91.571718, 224.148994, 226.686934 +3.666667, 92.194966, 224.369373, 226.910268 +3.683333, 92.818827, 224.589968, 227.133823 +3.700000, 93.443302, 224.810779, 227.357597 +3.716667, 94.068390, 225.031806, 227.581591 +3.733333, 94.694093, 225.253049, 227.805805 +3.750000, 95.320411, 225.474509, 228.030239 +3.766667, 95.947345, 225.696186, 228.254895 +3.783333, 96.574895, 225.918080, 228.479771 +3.800000, 97.194690, 223.126231, 225.650465 +3.816667, 97.734742, 194.418500, 196.566027 +3.833333, 98.189636, 163.762137, 165.524372 +3.850000, 98.572405, 137.796672, 139.246271 +3.866667, 98.894492, 115.951207, 117.147496 +3.883333, 99.165524, 97.571574, 98.561612 +3.900000, 99.393599, 82.107161, 82.928521 +3.916667, 99.585530, 69.095048, 69.777916 +3.933333, 99.747047, 58.145978, 58.714744 +3.950000, 99.801605, 19.641167, 19.826297 +3.966667, 99.801650, 0.015911, 0.016058 +3.983333, 99.801650, 0.000000, 0.000000 +4.000000, 99.801650, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_90kW_ld_100kWh.csv b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_90kW_ld_100kWh.csv new file mode 100644 index 0000000..0c03c3f --- /dev/null +++ b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_90kW_ld_100kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 1.322097, 79.325809, 80.410825 +1.016667, 3.268010, 116.754763, 118.599175 +1.033333, 5.316240, 122.893823, 124.878144 +1.050000, 7.403784, 125.252635, 127.291870 +1.066667, 9.526101, 127.339037, 129.427380 +1.083333, 11.675510, 128.964544, 131.091495 +1.100000, 13.834018, 129.510493, 131.650480 +1.116667, 16.000955, 130.016217, 132.168310 +1.133333, 18.176352, 130.523806, 132.688080 +1.150000, 20.360241, 131.033347, 133.209879 +1.166667, 22.552655, 131.544848, 133.733714 +1.183333, 24.753627, 132.058316, 134.259595 +1.200000, 26.963190, 132.573759, 134.787528 +1.216667, 29.181376, 133.091182, 135.317522 +1.233333, 31.408220, 133.610595, 135.849584 +1.250000, 33.643753, 134.132004, 136.383723 +1.266667, 35.888010, 134.655417, 136.919946 +1.283333, 38.141024, 135.180841, 137.458261 +1.300000, 40.402829, 135.708283, 137.998677 +1.316667, 42.673458, 136.237752, 138.541201 +1.333333, 44.952945, 136.769255, 139.085842 +1.350000, 47.241325, 137.302799, 139.632608 +1.366667, 49.538632, 137.838392, 140.181506 +1.383333, 51.844899, 138.376041, 140.732546 +1.400000, 54.160162, 138.915755, 141.285735 +1.416667, 56.484454, 139.457540, 141.841081 +1.433333, 58.817811, 140.001405, 142.398594 +1.450000, 61.160267, 140.547357, 142.958280 +1.466667, 63.511857, 141.095404, 143.520149 +1.483333, 65.872616, 141.645554, 144.084209 +1.500000, 68.242580, 142.197814, 144.650468 +1.516667, 70.621783, 142.752193, 145.218935 +1.533333, 73.010261, 143.308698, 145.789618 +1.550000, 75.408050, 143.867337, 146.362526 +1.566667, 77.815186, 144.428118, 146.937667 +1.583333, 80.231703, 144.991049, 147.515049 +1.600000, 82.657639, 145.556138, 148.094682 +1.616667, 85.093029, 146.123393, 148.676574 +1.633333, 87.485603, 143.554441, 146.041633 +1.650000, 89.486907, 120.078259, 121.997873 +1.666667, 91.099940, 96.782006, 98.201235 +1.683333, 92.398272, 77.899894, 78.959143 +1.700000, 93.451331, 63.183523, 63.990338 +1.716667, 94.360953, 54.577349, 55.247904 +1.733333, 95.157906, 47.817150, 48.386533 +1.750000, 95.856177, 41.896265, 42.381264 +1.766667, 96.467942, 36.705926, 37.120194 +1.783333, 97.003885, 32.156599, 32.511355 +1.800000, 97.473378, 28.169583, 28.474090 +1.816667, 97.884641, 24.675733, 24.937667 +1.833333, 98.244879, 21.614321, 21.840073 +1.850000, 98.560413, 18.932034, 19.126945 +1.866667, 98.836781, 16.582082, 16.750632 +1.883333, 99.078838, 14.523414, 14.669376 +1.900000, 99.290838, 12.720017, 12.846580 +1.916667, 99.476510, 11.140313, 11.250180 +1.933333, 99.639121, 9.756609, 9.852080 +1.950000, 99.781531, 8.544630, 8.627667 +1.966667, 99.800517, 1.139144, 1.149746 +1.983333, 99.800532, 0.000924, 0.000932 +2.000000, 99.800532, 0.000000, 0.000000 +2.016667, 99.800532, 0.000000, 0.000000 +2.033333, 99.800532, 0.000000, 0.000000 +2.050000, 99.800532, 0.000000, 0.000000 +2.066667, 99.800532, 0.000000, 0.000000 +2.083333, 99.800532, 0.000000, 0.000000 +2.100000, 99.800532, 0.000000, 0.000000 +2.116667, 99.800532, 0.000000, 0.000000 +2.133333, 99.800532, 0.000000, 0.000000 +2.150000, 99.800532, 0.000000, 0.000000 +2.166667, 99.800532, 0.000000, 0.000000 +2.183333, 99.800532, 0.000000, 0.000000 +2.200000, 99.800532, 0.000000, 0.000000 +2.216667, 99.800532, 0.000000, 0.000000 +2.233333, 99.800532, 0.000000, 0.000000 +2.250000, 99.800532, 0.000000, 0.000000 +2.266667, 99.800532, 0.000000, 0.000000 +2.283333, 99.800532, 0.000000, 0.000000 +2.300000, 99.800532, 0.000000, 0.000000 +2.316667, 99.800532, 0.000000, 0.000000 +2.333333, 99.800532, 0.000000, 0.000000 +2.350000, 99.800532, 0.000000, 0.000000 +2.366667, 99.800532, 0.000000, 0.000000 +2.383333, 99.800532, 0.000000, 0.000000 +2.400000, 99.800532, 0.000000, 0.000000 +2.416667, 99.800532, 0.000000, 0.000000 +2.433333, 99.800532, 0.000000, 0.000000 +2.450000, 99.800532, 0.000000, 0.000000 +2.466667, 99.800532, 0.000000, 0.000000 +2.483333, 99.800532, 0.000000, 0.000000 +2.500000, 99.800532, 0.000000, 0.000000 +2.516667, 99.800532, 0.000000, 0.000000 +2.533333, 99.800532, 0.000000, 0.000000 +2.550000, 99.800532, 0.000000, 0.000000 +2.566667, 99.800532, 0.000000, 0.000000 +2.583333, 99.800532, 0.000000, 0.000000 +2.600000, 99.800532, 0.000000, 0.000000 +2.616667, 99.800532, 0.000000, 0.000000 +2.633333, 99.800532, 0.000000, 0.000000 +2.650000, 99.800532, 0.000000, 0.000000 +2.666667, 99.800532, 0.000000, 0.000000 +2.683333, 99.800532, 0.000000, 0.000000 +2.700000, 99.800532, 0.000000, 0.000000 +2.716667, 99.800532, 0.000000, 0.000000 +2.733333, 99.800532, 0.000000, 0.000000 +2.750000, 99.800532, 0.000000, 0.000000 +2.766667, 99.800532, 0.000000, 0.000000 +2.783333, 99.800532, 0.000000, 0.000000 +2.800000, 99.800532, 0.000000, 0.000000 +2.816667, 99.800532, 0.000000, 0.000000 +2.833333, 99.800532, 0.000000, 0.000000 +2.850000, 99.800532, 0.000000, 0.000000 +2.866667, 99.800532, 0.000000, 0.000000 +2.883333, 99.800532, 0.000000, 0.000000 +2.900000, 99.800532, 0.000000, 0.000000 +2.916667, 99.800532, 0.000000, 0.000000 +2.933333, 99.800532, 0.000000, 0.000000 +2.950000, 99.800532, 0.000000, 0.000000 +2.966667, 99.800532, 0.000000, 0.000000 +2.983333, 99.800532, 0.000000, 0.000000 +3.000000, 99.800532, 0.000000, 0.000000 +3.016667, 99.800532, 0.000000, 0.000000 +3.033333, 99.800532, 0.000000, 0.000000 +3.050000, 99.800532, 0.000000, 0.000000 +3.066667, 99.800532, 0.000000, 0.000000 +3.083333, 99.800532, 0.000000, 0.000000 +3.100000, 99.800532, 0.000000, 0.000000 +3.116667, 99.800532, 0.000000, 0.000000 +3.133333, 99.800532, 0.000000, 0.000000 +3.150000, 99.800532, 0.000000, 0.000000 +3.166667, 99.800532, 0.000000, 0.000000 +3.183333, 99.800532, 0.000000, 0.000000 +3.200000, 99.800532, 0.000000, 0.000000 +3.216667, 99.800532, 0.000000, 0.000000 +3.233333, 99.800532, 0.000000, 0.000000 +3.250000, 99.800532, 0.000000, 0.000000 +3.266667, 99.800532, 0.000000, 0.000000 +3.283333, 99.800532, 0.000000, 0.000000 +3.300000, 99.800532, 0.000000, 0.000000 +3.316667, 99.800532, 0.000000, 0.000000 +3.333333, 99.800532, 0.000000, 0.000000 +3.350000, 99.800532, 0.000000, 0.000000 +3.366667, 99.800532, 0.000000, 0.000000 +3.383333, 99.800532, 0.000000, 0.000000 +3.400000, 99.800532, 0.000000, 0.000000 +3.416667, 99.800532, 0.000000, 0.000000 +3.433333, 99.800532, 0.000000, 0.000000 +3.450000, 99.800532, 0.000000, 0.000000 +3.466667, 99.800532, 0.000000, 0.000000 +3.483333, 99.800532, 0.000000, 0.000000 +3.500000, 99.800532, 0.000000, 0.000000 +3.516667, 99.800532, 0.000000, 0.000000 +3.533333, 99.800532, 0.000000, 0.000000 +3.550000, 99.800532, 0.000000, 0.000000 +3.566667, 99.800532, 0.000000, 0.000000 +3.583333, 99.800532, 0.000000, 0.000000 +3.600000, 99.800532, 0.000000, 0.000000 +3.616667, 99.800532, 0.000000, 0.000000 +3.633333, 99.800532, 0.000000, 0.000000 +3.650000, 99.800532, 0.000000, 0.000000 +3.666667, 99.800532, 0.000000, 0.000000 +3.683333, 99.800532, 0.000000, 0.000000 +3.700000, 99.800532, 0.000000, 0.000000 +3.716667, 99.800532, 0.000000, 0.000000 +3.733333, 99.800532, 0.000000, 0.000000 +3.750000, 99.800532, 0.000000, 0.000000 +3.766667, 99.800532, 0.000000, 0.000000 +3.783333, 99.800532, 0.000000, 0.000000 +3.800000, 99.800532, 0.000000, 0.000000 +3.816667, 99.800532, 0.000000, 0.000000 +3.833333, 99.800532, 0.000000, 0.000000 +3.850000, 99.800532, 0.000000, 0.000000 +3.866667, 99.800532, 0.000000, 0.000000 +3.883333, 99.800532, 0.000000, 0.000000 +3.900000, 99.800532, 0.000000, 0.000000 +3.916667, 99.800532, 0.000000, 0.000000 +3.933333, 99.800532, 0.000000, 0.000000 +3.950000, 99.800532, 0.000000, 0.000000 +3.966667, 99.800532, 0.000000, 0.000000 +3.983333, 99.800532, 0.000000, 0.000000 +4.000000, 99.800532, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_90kW_ld_50kWh.csv b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_90kW_ld_50kWh.csv new file mode 100644 index 0000000..5b0a19e --- /dev/null +++ b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_90kW_ld_50kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 2.717977, 81.539301, 83.043304 +1.016667, 6.786784, 122.064220, 124.889448 +1.033333, 11.020561, 127.013298, 130.026746 +1.050000, 15.328111, 129.226519, 132.326052 +1.066667, 19.669684, 130.247195, 133.386827 +1.083333, 24.045429, 131.272350, 134.452511 +1.100000, 28.455607, 132.305325, 135.526582 +1.116667, 32.900479, 133.346175, 136.609103 +1.133333, 37.380311, 134.394958, 137.700140 +1.150000, 41.895369, 135.451728, 138.799756 +1.166667, 46.445920, 136.516544, 139.908018 +1.183333, 51.032236, 137.589461, 141.024991 +1.200000, 55.654587, 138.670537, 142.150742 +1.216667, 60.313248, 139.759829, 143.285336 +1.233333, 65.008495, 140.857397, 144.428842 +1.250000, 69.740604, 141.963297, 145.581327 +1.266667, 74.509857, 143.077590, 146.742859 +1.283333, 78.900360, 131.715071, 134.912814 +1.300000, 82.483760, 107.501994, 109.807522 +1.316667, 85.396426, 87.380006, 89.050469 +1.333333, 87.762139, 70.971385, 72.194478 +1.350000, 89.682492, 57.610579, 58.515648 +1.366667, 91.240594, 46.743078, 47.419810 +1.383333, 92.504301, 37.911198, 38.422260 +1.400000, 93.539889, 31.067648, 31.462533 +1.416667, 94.439168, 26.978367, 27.308892 +1.433333, 95.227048, 23.636406, 23.917136 +1.450000, 95.917304, 20.707663, 20.946823 +1.466667, 96.521985, 18.140449, 18.344754 +1.483333, 97.051667, 15.890454, 16.065426 +1.500000, 97.515625, 13.918725, 14.068925 +1.516667, 97.921993, 12.191036, 12.320245 +1.533333, 98.277904, 10.677326, 10.788692 +1.550000, 98.589610, 9.351204, 9.447358 +1.566667, 98.862594, 8.189508, 8.272658 +1.583333, 99.101658, 7.171915, 7.243922 +1.600000, 99.311011, 6.280600, 6.343036 +1.616667, 99.494342, 5.499931, 5.554129 +1.633333, 99.654882, 4.816201, 4.863296 +1.650000, 99.795462, 4.217397, 4.258356 +1.666667, 99.800414, 0.148547, 0.149922 +1.683333, 99.800417, 0.000113, 0.000114 +1.700000, 99.800417, 0.000000, 0.000000 +1.716667, 99.800417, 0.000000, 0.000000 +1.733333, 99.800417, 0.000000, 0.000000 +1.750000, 99.800417, 0.000000, 0.000000 +1.766667, 99.800417, 0.000000, 0.000000 +1.783333, 99.800417, 0.000000, 0.000000 +1.800000, 99.800417, 0.000000, 0.000000 +1.816667, 99.800417, 0.000000, 0.000000 +1.833333, 99.800417, 0.000000, 0.000000 +1.850000, 99.800417, 0.000000, 0.000000 +1.866667, 99.800417, 0.000000, 0.000000 +1.883333, 99.800417, 0.000000, 0.000000 +1.900000, 99.800417, 0.000000, 0.000000 +1.916667, 99.800417, 0.000000, 0.000000 +1.933333, 99.800417, 0.000000, 0.000000 +1.950000, 99.800417, 0.000000, 0.000000 +1.966667, 99.800417, 0.000000, 0.000000 +1.983333, 99.800417, 0.000000, 0.000000 +2.000000, 99.800417, 0.000000, 0.000000 +2.016667, 99.800417, 0.000000, 0.000000 +2.033333, 99.800417, 0.000000, 0.000000 +2.050000, 99.800417, 0.000000, 0.000000 +2.066667, 99.800417, 0.000000, 0.000000 +2.083333, 99.800417, 0.000000, 0.000000 +2.100000, 99.800417, 0.000000, 0.000000 +2.116667, 99.800417, 0.000000, 0.000000 +2.133333, 99.800417, 0.000000, 0.000000 +2.150000, 99.800417, 0.000000, 0.000000 +2.166667, 99.800417, 0.000000, 0.000000 +2.183333, 99.800417, 0.000000, 0.000000 +2.200000, 99.800417, 0.000000, 0.000000 +2.216667, 99.800417, 0.000000, 0.000000 +2.233333, 99.800417, 0.000000, 0.000000 +2.250000, 99.800417, 0.000000, 0.000000 +2.266667, 99.800417, 0.000000, 0.000000 +2.283333, 99.800417, 0.000000, 0.000000 +2.300000, 99.800417, 0.000000, 0.000000 +2.316667, 99.800417, 0.000000, 0.000000 +2.333333, 99.800417, 0.000000, 0.000000 +2.350000, 99.800417, 0.000000, 0.000000 +2.366667, 99.800417, 0.000000, 0.000000 +2.383333, 99.800417, 0.000000, 0.000000 +2.400000, 99.800417, 0.000000, 0.000000 +2.416667, 99.800417, 0.000000, 0.000000 +2.433333, 99.800417, 0.000000, 0.000000 +2.450000, 99.800417, 0.000000, 0.000000 +2.466667, 99.800417, 0.000000, 0.000000 +2.483333, 99.800417, 0.000000, 0.000000 +2.500000, 99.800417, 0.000000, 0.000000 +2.516667, 99.800417, 0.000000, 0.000000 +2.533333, 99.800417, 0.000000, 0.000000 +2.550000, 99.800417, 0.000000, 0.000000 +2.566667, 99.800417, 0.000000, 0.000000 +2.583333, 99.800417, 0.000000, 0.000000 +2.600000, 99.800417, 0.000000, 0.000000 +2.616667, 99.800417, 0.000000, 0.000000 +2.633333, 99.800417, 0.000000, 0.000000 +2.650000, 99.800417, 0.000000, 0.000000 +2.666667, 99.800417, 0.000000, 0.000000 +2.683333, 99.800417, 0.000000, 0.000000 +2.700000, 99.800417, 0.000000, 0.000000 +2.716667, 99.800417, 0.000000, 0.000000 +2.733333, 99.800417, 0.000000, 0.000000 +2.750000, 99.800417, 0.000000, 0.000000 +2.766667, 99.800417, 0.000000, 0.000000 +2.783333, 99.800417, 0.000000, 0.000000 +2.800000, 99.800417, 0.000000, 0.000000 +2.816667, 99.800417, 0.000000, 0.000000 +2.833333, 99.800417, 0.000000, 0.000000 +2.850000, 99.800417, 0.000000, 0.000000 +2.866667, 99.800417, 0.000000, 0.000000 +2.883333, 99.800417, 0.000000, 0.000000 +2.900000, 99.800417, 0.000000, 0.000000 +2.916667, 99.800417, 0.000000, 0.000000 +2.933333, 99.800417, 0.000000, 0.000000 +2.950000, 99.800417, 0.000000, 0.000000 +2.966667, 99.800417, 0.000000, 0.000000 +2.983333, 99.800417, 0.000000, 0.000000 +3.000000, 99.800417, 0.000000, 0.000000 +3.016667, 99.800417, 0.000000, 0.000000 +3.033333, 99.800417, 0.000000, 0.000000 +3.050000, 99.800417, 0.000000, 0.000000 +3.066667, 99.800417, 0.000000, 0.000000 +3.083333, 99.800417, 0.000000, 0.000000 +3.100000, 99.800417, 0.000000, 0.000000 +3.116667, 99.800417, 0.000000, 0.000000 +3.133333, 99.800417, 0.000000, 0.000000 +3.150000, 99.800417, 0.000000, 0.000000 +3.166667, 99.800417, 0.000000, 0.000000 +3.183333, 99.800417, 0.000000, 0.000000 +3.200000, 99.800417, 0.000000, 0.000000 +3.216667, 99.800417, 0.000000, 0.000000 +3.233333, 99.800417, 0.000000, 0.000000 +3.250000, 99.800417, 0.000000, 0.000000 +3.266667, 99.800417, 0.000000, 0.000000 +3.283333, 99.800417, 0.000000, 0.000000 +3.300000, 99.800417, 0.000000, 0.000000 +3.316667, 99.800417, 0.000000, 0.000000 +3.333333, 99.800417, 0.000000, 0.000000 +3.350000, 99.800417, 0.000000, 0.000000 +3.366667, 99.800417, 0.000000, 0.000000 +3.383333, 99.800417, 0.000000, 0.000000 +3.400000, 99.800417, 0.000000, 0.000000 +3.416667, 99.800417, 0.000000, 0.000000 +3.433333, 99.800417, 0.000000, 0.000000 +3.450000, 99.800417, 0.000000, 0.000000 +3.466667, 99.800417, 0.000000, 0.000000 +3.483333, 99.800417, 0.000000, 0.000000 +3.500000, 99.800417, 0.000000, 0.000000 +3.516667, 99.800417, 0.000000, 0.000000 +3.533333, 99.800417, 0.000000, 0.000000 +3.550000, 99.800417, 0.000000, 0.000000 +3.566667, 99.800417, 0.000000, 0.000000 +3.583333, 99.800417, 0.000000, 0.000000 +3.600000, 99.800417, 0.000000, 0.000000 +3.616667, 99.800417, 0.000000, 0.000000 +3.633333, 99.800417, 0.000000, 0.000000 +3.650000, 99.800417, 0.000000, 0.000000 +3.666667, 99.800417, 0.000000, 0.000000 +3.683333, 99.800417, 0.000000, 0.000000 +3.700000, 99.800417, 0.000000, 0.000000 +3.716667, 99.800417, 0.000000, 0.000000 +3.733333, 99.800417, 0.000000, 0.000000 +3.750000, 99.800417, 0.000000, 0.000000 +3.766667, 99.800417, 0.000000, 0.000000 +3.783333, 99.800417, 0.000000, 0.000000 +3.800000, 99.800417, 0.000000, 0.000000 +3.816667, 99.800417, 0.000000, 0.000000 +3.833333, 99.800417, 0.000000, 0.000000 +3.850000, 99.800417, 0.000000, 0.000000 +3.866667, 99.800417, 0.000000, 0.000000 +3.883333, 99.800417, 0.000000, 0.000000 +3.900000, 99.800417, 0.000000, 0.000000 +3.916667, 99.800417, 0.000000, 0.000000 +3.933333, 99.800417, 0.000000, 0.000000 +3.950000, 99.800417, 0.000000, 0.000000 +3.966667, 99.800417, 0.000000, 0.000000 +3.983333, 99.800417, 0.000000, 0.000000 +4.000000, 99.800417, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_90kW_md_200kWh.csv b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_90kW_md_200kWh.csv new file mode 100644 index 0000000..c6661b8 --- /dev/null +++ b/unittests/test_charging_models_eMosaic/original_eMosaic_models/xfc_90kW_md_200kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.658194, 78.983300, 79.887009 +1.016667, 1.602560, 113.323933, 114.729518 +1.033333, 2.577910, 117.041923, 118.505832 +1.050000, 3.585285, 120.884990, 122.410007 +1.066667, 4.621161, 124.305173, 125.885275 +1.083333, 5.667200, 125.524688, 127.124591 +1.100000, 6.721356, 126.498755, 128.114534 +1.116667, 7.783687, 127.479730, 129.111553 +1.133333, 8.854256, 128.468257, 130.116303 +1.150000, 9.933126, 129.464395, 131.128843 +1.166667, 11.017610, 130.138021, 131.813593 +1.183333, 12.104239, 130.395512, 132.075343 +1.200000, 13.192999, 130.651251, 132.335316 +1.216667, 14.283895, 130.907486, 132.595796 +1.233333, 15.376930, 131.164219, 132.856787 +1.250000, 16.472109, 131.421452, 133.118289 +1.266667, 17.569436, 131.679186, 133.380305 +1.283333, 18.668914, 131.937421, 133.642834 +1.300000, 19.770549, 132.196159, 133.905878 +1.316667, 20.874344, 132.455401, 134.169438 +1.333333, 21.980303, 132.715148, 134.433515 +1.350000, 23.088432, 132.975400, 134.698109 +1.366667, 24.198733, 133.236158, 134.963223 +1.383333, 25.311212, 133.497424, 135.228856 +1.400000, 26.425872, 133.759199, 135.495010 +1.416667, 27.542717, 134.021483, 135.761687 +1.433333, 28.661753, 134.284278, 136.028886 +1.450000, 29.782983, 134.547584, 136.296609 +1.466667, 30.906411, 134.811402, 136.564856 +1.483333, 32.032042, 135.075734, 136.833630 +1.500000, 33.159880, 135.340580, 137.102931 +1.516667, 34.289930, 135.605942, 137.372760 +1.533333, 35.422195, 135.871820, 137.643118 +1.550000, 36.556680, 136.138215, 137.914006 +1.566667, 37.693390, 136.405129, 138.185425 +1.583333, 38.832328, 136.672562, 138.457377 +1.600000, 39.973499, 136.940515, 138.729861 +1.616667, 41.116907, 137.208989, 139.002880 +1.633333, 42.262557, 137.477986, 139.276434 +1.650000, 43.410453, 137.747507, 139.550524 +1.666667, 44.560599, 138.017551, 139.825152 +1.683333, 45.713000, 138.288121, 140.100318 +1.700000, 46.867660, 138.559217, 140.376023 +1.716667, 48.024584, 138.830841, 140.652269 +1.733333, 49.183775, 139.102992, 140.929056 +1.750000, 50.345239, 139.375674, 141.206386 +1.766667, 51.508980, 139.648885, 141.484260 +1.783333, 52.675002, 139.922628, 141.762678 +1.800000, 53.843309, 140.196904, 142.041642 +1.816667, 55.013907, 140.471712, 142.321153 +1.833333, 56.186799, 140.747056, 142.601212 +1.850000, 57.361990, 141.022934, 142.881820 +1.866667, 58.539485, 141.299350, 143.162978 +1.883333, 59.719287, 141.576302, 143.444686 +1.900000, 60.901402, 141.853794, 143.726947 +1.916667, 62.085834, 142.131824, 144.009762 +1.933333, 63.272587, 142.410396, 144.293130 +1.950000, 64.461667, 142.689509, 144.577054 +1.966667, 65.653076, 142.969165, 144.861535 +1.983333, 66.846821, 143.249364, 145.146572 +2.000000, 68.042905, 143.530108, 145.432169 +2.016667, 69.241334, 143.811398, 145.718325 +2.033333, 70.442111, 144.093235, 146.005042 +2.050000, 71.645241, 144.375620, 146.292321 +2.066667, 72.850729, 144.658554, 146.580163 +2.083333, 74.058579, 144.942037, 146.868569 +2.100000, 75.268796, 145.226072, 147.157541 +2.116667, 76.481385, 145.510659, 147.447078 +2.133333, 77.696350, 145.795799, 147.737183 +2.150000, 78.913696, 146.081493, 148.027856 +2.166667, 80.133427, 146.367742, 148.319099 +2.183333, 81.355548, 146.654548, 148.610913 +2.200000, 82.580064, 146.941911, 148.903298 +2.216667, 83.806979, 147.229833, 149.196257 +2.233333, 85.036299, 147.518314, 149.489789 +2.250000, 86.268027, 147.807355, 149.783896 +2.266667, 87.502168, 148.096959, 150.078580 +2.283333, 88.738727, 148.387125, 150.373841 +2.300000, 89.977710, 148.677855, 150.669681 +2.316667, 91.219119, 148.969149, 150.966100 +2.333333, 92.462961, 149.261010, 151.263100 +2.350000, 93.700084, 148.454776, 150.442681 +2.366667, 94.790957, 130.904800, 132.593065 +2.383333, 95.710504, 110.345621, 111.705047 +2.400000, 96.484802, 92.915696, 94.015020 +2.416667, 97.136737, 78.232271, 79.125744 +2.433333, 97.685610, 65.864721, 66.594202 +2.450000, 98.147686, 55.449121, 56.047137 +2.466667, 98.536672, 46.678337, 47.170356 +2.483333, 98.864116, 39.293288, 39.699387 +2.500000, 99.139745, 33.075505, 33.411622 +2.516667, 99.371752, 27.840823, 28.119694 +2.533333, 99.567036, 23.434039, 23.665900 +2.550000, 99.731406, 19.724380, 19.917505 +2.566667, 99.800530, 8.294864, 8.373450 +2.583333, 99.800587, 0.006865, 0.006929 +2.600000, 99.800587, 0.000000, 0.000000 +2.616667, 99.800587, 0.000000, 0.000000 +2.633333, 99.800587, 0.000000, 0.000000 +2.650000, 99.800587, 0.000000, 0.000000 +2.666667, 99.800587, 0.000000, 0.000000 +2.683333, 99.800587, 0.000000, 0.000000 +2.700000, 99.800587, 0.000000, 0.000000 +2.716667, 99.800587, 0.000000, 0.000000 +2.733333, 99.800587, 0.000000, 0.000000 +2.750000, 99.800587, 0.000000, 0.000000 +2.766667, 99.800587, 0.000000, 0.000000 +2.783333, 99.800587, 0.000000, 0.000000 +2.800000, 99.800587, 0.000000, 0.000000 +2.816667, 99.800587, 0.000000, 0.000000 +2.833333, 99.800587, 0.000000, 0.000000 +2.850000, 99.800587, 0.000000, 0.000000 +2.866667, 99.800587, 0.000000, 0.000000 +2.883333, 99.800587, 0.000000, 0.000000 +2.900000, 99.800587, 0.000000, 0.000000 +2.916667, 99.800587, 0.000000, 0.000000 +2.933333, 99.800587, 0.000000, 0.000000 +2.950000, 99.800587, 0.000000, 0.000000 +2.966667, 99.800587, 0.000000, 0.000000 +2.983333, 99.800587, 0.000000, 0.000000 +3.000000, 99.800587, 0.000000, 0.000000 +3.016667, 99.800587, 0.000000, 0.000000 +3.033333, 99.800587, 0.000000, 0.000000 +3.050000, 99.800587, 0.000000, 0.000000 +3.066667, 99.800587, 0.000000, 0.000000 +3.083333, 99.800587, 0.000000, 0.000000 +3.100000, 99.800587, 0.000000, 0.000000 +3.116667, 99.800587, 0.000000, 0.000000 +3.133333, 99.800587, 0.000000, 0.000000 +3.150000, 99.800587, 0.000000, 0.000000 +3.166667, 99.800587, 0.000000, 0.000000 +3.183333, 99.800587, 0.000000, 0.000000 +3.200000, 99.800587, 0.000000, 0.000000 +3.216667, 99.800587, 0.000000, 0.000000 +3.233333, 99.800587, 0.000000, 0.000000 +3.250000, 99.800587, 0.000000, 0.000000 +3.266667, 99.800587, 0.000000, 0.000000 +3.283333, 99.800587, 0.000000, 0.000000 +3.300000, 99.800587, 0.000000, 0.000000 +3.316667, 99.800587, 0.000000, 0.000000 +3.333333, 99.800587, 0.000000, 0.000000 +3.350000, 99.800587, 0.000000, 0.000000 +3.366667, 99.800587, 0.000000, 0.000000 +3.383333, 99.800587, 0.000000, 0.000000 +3.400000, 99.800587, 0.000000, 0.000000 +3.416667, 99.800587, 0.000000, 0.000000 +3.433333, 99.800587, 0.000000, 0.000000 +3.450000, 99.800587, 0.000000, 0.000000 +3.466667, 99.800587, 0.000000, 0.000000 +3.483333, 99.800587, 0.000000, 0.000000 +3.500000, 99.800587, 0.000000, 0.000000 +3.516667, 99.800587, 0.000000, 0.000000 +3.533333, 99.800587, 0.000000, 0.000000 +3.550000, 99.800587, 0.000000, 0.000000 +3.566667, 99.800587, 0.000000, 0.000000 +3.583333, 99.800587, 0.000000, 0.000000 +3.600000, 99.800587, 0.000000, 0.000000 +3.616667, 99.800587, 0.000000, 0.000000 +3.633333, 99.800587, 0.000000, 0.000000 +3.650000, 99.800587, 0.000000, 0.000000 +3.666667, 99.800587, 0.000000, 0.000000 +3.683333, 99.800587, 0.000000, 0.000000 +3.700000, 99.800587, 0.000000, 0.000000 +3.716667, 99.800587, 0.000000, 0.000000 +3.733333, 99.800587, 0.000000, 0.000000 +3.750000, 99.800587, 0.000000, 0.000000 +3.766667, 99.800587, 0.000000, 0.000000 +3.783333, 99.800587, 0.000000, 0.000000 +3.800000, 99.800587, 0.000000, 0.000000 +3.816667, 99.800587, 0.000000, 0.000000 +3.833333, 99.800587, 0.000000, 0.000000 +3.850000, 99.800587, 0.000000, 0.000000 +3.866667, 99.800587, 0.000000, 0.000000 +3.883333, 99.800587, 0.000000, 0.000000 +3.900000, 99.800587, 0.000000, 0.000000 +3.916667, 99.800587, 0.000000, 0.000000 +3.933333, 99.800587, 0.000000, 0.000000 +3.950000, 99.800587, 0.000000, 0.000000 +3.966667, 99.800587, 0.000000, 0.000000 +3.983333, 99.800587, 0.000000, 0.000000 +4.000000, 99.800587, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_eMosaic/outputs/tmp.txt b/unittests/test_charging_models_eMosaic/outputs/tmp.txt new file mode 100644 index 0000000..e69de29 diff --git a/unittests/test_charging_models_eMosaic/validate.py b/unittests/test_charging_models_eMosaic/validate.py new file mode 100644 index 0000000..e45d572 --- /dev/null +++ b/unittests/test_charging_models_eMosaic/validate.py @@ -0,0 +1,54 @@ +# -*- coding: utf-8 -*- +""" +Created on Sat May 20 22:27:35 2023 + +@author: CEBOM +""" + +import glob +import pandas as pd +import numpy as np +import matplotlib.pyplot as plt +import os + +files = glob.glob("original_eMosaic_models/*.csv") + +error = False + +for original_file in files: + equivalent_file = "outputs/" + os.path.split(original_file)[1] + + original_df = pd.read_csv(original_file) + new_df = pd.read_csv(equivalent_file) + + tolerance = 1 + bool_array = np.isclose(original_df, new_df, rtol=tolerance, atol=tolerance) + count_false = np.count_nonzero(bool_array == False) + count_true = np.count_nonzero(bool_array == True) + + error_rate = (count_false/(count_true+count_false))*100 + + #equal = np.allclose(original_df, new_df, atol=tolerance) + + # Check if the DataFrames are equal + if error_rate < 0.3: # error rate below 0.3% + print("{} The DataFrames are equal within the tolerance.".format(os.path.split(original_file)[1].split(".")[0])) + else: + print("{} The DataFrames are not equal within the tolerance.".format(os.path.split(original_file)[1].split(".")[0])) + + fig = plt.figure(figsize=(8, 6)) + plt.plot(original_df["simulation_time_hrs"], original_df[" soc_t1"], label = "original") + plt.plot(new_df["simulation_time_hrs"], new_df[" soc_t1"], label = "new") + + plt.plot(original_df["simulation_time_hrs"], original_df[" P2_kW"], label = "original") + plt.plot(new_df["simulation_time_hrs"], new_df[" P2_kW"], label = "new") + + plt.title(os.path.split(original_file)[1].split(".")[0]) + plt.legend() + plt.show() + + fig.savefig(os.path.split(original_file)[1].split(".")[0]) + error = True + +if(error == True): + exit(1) From 0a2b73fd806e1a8e9053d89f8b8ade57f5f949e8 Mon Sep 17 00:00:00 2001 From: Manoj Kumar Cebol Sundarrajan Date: Mon, 29 May 2023 23:09:00 -0600 Subject: [PATCH 26/52] unit test for EVs at Risk charging models. Minor inconsistensies between original models and new models for very high power charging. --- unittests/CMakeLists.txt | 3 +- .../.gitignore | 4 + .../CMakeLists.txt | 13 ++ .../inputs/EVSE_inputs.csv | 10 + .../inputs/EV_inputs.csv | 9 + .../test_charging_models_EVs_at_Risk/main.cpp | 122 ++++++++++++ .../L2_17280_hd_1000kWh.csv | 183 ++++++++++++++++++ .../L2_17280_hd_300kWh.csv | 183 ++++++++++++++++++ .../L2_17280_hd_400kWh.csv | 183 ++++++++++++++++++ .../L2_17280_hd_600kWh.csv | 183 ++++++++++++++++++ .../L2_17280_hd_800kWh.csv | 183 ++++++++++++++++++ .../L2_17280_ld_100kWh.csv | 183 ++++++++++++++++++ .../L2_17280_ld_50kWh.csv | 183 ++++++++++++++++++ .../L2_17280_md_200kWh.csv | 183 ++++++++++++++++++ .../L2_7200_hd_1000kWh.csv | 183 ++++++++++++++++++ .../L2_7200_hd_300kWh.csv | 183 ++++++++++++++++++ .../L2_7200_hd_400kWh.csv | 183 ++++++++++++++++++ .../L2_7200_hd_600kWh.csv | 183 ++++++++++++++++++ .../L2_7200_hd_800kWh.csv | 183 ++++++++++++++++++ .../L2_7200_ld_100kWh.csv | 183 ++++++++++++++++++ .../L2_7200_ld_50kWh.csv | 183 ++++++++++++++++++ .../L2_7200_md_200kWh.csv | 183 ++++++++++++++++++ .../dwc_100kW_hd_1000kWh.csv | 183 ++++++++++++++++++ .../dwc_100kW_hd_300kWh.csv | 183 ++++++++++++++++++ .../dwc_100kW_hd_400kWh.csv | 183 ++++++++++++++++++ .../dwc_100kW_hd_600kWh.csv | 183 ++++++++++++++++++ .../dwc_100kW_hd_800kWh.csv | 183 ++++++++++++++++++ .../dwc_100kW_ld_100kWh.csv | 183 ++++++++++++++++++ .../dwc_100kW_ld_50kWh.csv | 183 ++++++++++++++++++ .../dwc_100kW_md_200kWh.csv | 183 ++++++++++++++++++ .../xfc_1000kW_hd_1000kWh.csv | 183 ++++++++++++++++++ .../xfc_1000kW_hd_300kWh.csv | 183 ++++++++++++++++++ .../xfc_1000kW_hd_400kWh.csv | 183 ++++++++++++++++++ .../xfc_1000kW_hd_600kWh.csv | 183 ++++++++++++++++++ .../xfc_1000kW_hd_800kWh.csv | 183 ++++++++++++++++++ .../xfc_1000kW_ld_100kWh.csv | 183 ++++++++++++++++++ .../xfc_1000kW_ld_50kWh.csv | 183 ++++++++++++++++++ .../xfc_1000kW_md_200kWh.csv | 183 ++++++++++++++++++ .../xfc_150_hd_1000kWh.csv | 183 ++++++++++++++++++ .../xfc_150_hd_300kWh.csv | 183 ++++++++++++++++++ .../xfc_150_hd_400kWh.csv | 183 ++++++++++++++++++ .../xfc_150_hd_600kWh.csv | 183 ++++++++++++++++++ .../xfc_150_hd_800kWh.csv | 183 ++++++++++++++++++ .../xfc_150_ld_100kWh.csv | 183 ++++++++++++++++++ .../xfc_150_ld_50kWh.csv | 183 ++++++++++++++++++ .../xfc_150_md_200kWh.csv | 183 ++++++++++++++++++ .../xfc_2000kW_hd_1000kWh.csv | 183 ++++++++++++++++++ .../xfc_2000kW_hd_300kWh.csv | 183 ++++++++++++++++++ .../xfc_2000kW_hd_400kWh.csv | 183 ++++++++++++++++++ .../xfc_2000kW_hd_600kWh.csv | 183 ++++++++++++++++++ .../xfc_2000kW_hd_800kWh.csv | 183 ++++++++++++++++++ .../xfc_2000kW_ld_100kWh.csv | 183 ++++++++++++++++++ .../xfc_2000kW_ld_50kWh.csv | 183 ++++++++++++++++++ .../xfc_2000kW_md_200kWh.csv | 183 ++++++++++++++++++ .../xfc_3000kW_hd_1000kWh.csv | 183 ++++++++++++++++++ .../xfc_3000kW_hd_300kWh.csv | 183 ++++++++++++++++++ .../xfc_3000kW_hd_400kWh.csv | 183 ++++++++++++++++++ .../xfc_3000kW_hd_600kWh.csv | 183 ++++++++++++++++++ .../xfc_3000kW_hd_800kWh.csv | 183 ++++++++++++++++++ .../xfc_3000kW_ld_100kWh.csv | 183 ++++++++++++++++++ .../xfc_3000kW_ld_50kWh.csv | 183 ++++++++++++++++++ .../xfc_3000kW_md_200kWh.csv | 183 ++++++++++++++++++ .../xfc_350_hd_1000kWh.csv | 183 ++++++++++++++++++ .../xfc_350_hd_300kWh.csv | 183 ++++++++++++++++++ .../xfc_350_hd_400kWh.csv | 183 ++++++++++++++++++ .../xfc_350_hd_600kWh.csv | 183 ++++++++++++++++++ .../xfc_350_hd_800kWh.csv | 183 ++++++++++++++++++ .../xfc_350_ld_100kWh.csv | 183 ++++++++++++++++++ .../xfc_350_ld_50kWh.csv | 183 ++++++++++++++++++ .../xfc_350_md_200kWh.csv | 183 ++++++++++++++++++ .../xfc_500kW_hd_1000kWh.csv | 183 ++++++++++++++++++ .../xfc_500kW_hd_300kWh.csv | 183 ++++++++++++++++++ .../xfc_500kW_hd_400kWh.csv | 183 ++++++++++++++++++ .../xfc_500kW_hd_600kWh.csv | 183 ++++++++++++++++++ .../xfc_500kW_hd_800kWh.csv | 183 ++++++++++++++++++ .../xfc_500kW_ld_100kWh.csv | 183 ++++++++++++++++++ .../xfc_500kW_ld_50kWh.csv | 183 ++++++++++++++++++ .../xfc_500kW_md_200kWh.csv | 183 ++++++++++++++++++ .../outputs/tmp.txt | 0 .../validate.py | 54 ++++++ 80 files changed, 13390 insertions(+), 1 deletion(-) create mode 100644 unittests/test_charging_models_EVs_at_Risk/.gitignore create mode 100644 unittests/test_charging_models_EVs_at_Risk/CMakeLists.txt create mode 100644 unittests/test_charging_models_EVs_at_Risk/inputs/EVSE_inputs.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/inputs/EV_inputs.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/main.cpp create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/L2_17280_hd_1000kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/L2_17280_hd_300kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/L2_17280_hd_400kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/L2_17280_hd_600kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/L2_17280_hd_800kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/L2_17280_ld_100kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/L2_17280_ld_50kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/L2_17280_md_200kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/L2_7200_hd_1000kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/L2_7200_hd_300kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/L2_7200_hd_400kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/L2_7200_hd_600kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/L2_7200_hd_800kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/L2_7200_ld_100kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/L2_7200_ld_50kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/L2_7200_md_200kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/dwc_100kW_hd_1000kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/dwc_100kW_hd_300kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/dwc_100kW_hd_400kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/dwc_100kW_hd_600kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/dwc_100kW_hd_800kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/dwc_100kW_ld_100kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/dwc_100kW_ld_50kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/dwc_100kW_md_200kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_1000kW_hd_1000kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_1000kW_hd_300kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_1000kW_hd_400kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_1000kW_hd_600kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_1000kW_hd_800kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_1000kW_ld_100kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_1000kW_ld_50kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_1000kW_md_200kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_150_hd_1000kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_150_hd_300kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_150_hd_400kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_150_hd_600kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_150_hd_800kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_150_ld_100kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_150_ld_50kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_150_md_200kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_2000kW_hd_1000kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_2000kW_hd_300kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_2000kW_hd_400kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_2000kW_hd_600kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_2000kW_hd_800kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_2000kW_ld_100kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_2000kW_ld_50kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_2000kW_md_200kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_3000kW_hd_1000kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_3000kW_hd_300kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_3000kW_hd_400kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_3000kW_hd_600kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_3000kW_hd_800kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_3000kW_ld_100kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_3000kW_ld_50kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_3000kW_md_200kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_350_hd_1000kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_350_hd_300kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_350_hd_400kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_350_hd_600kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_350_hd_800kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_350_ld_100kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_350_ld_50kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_350_md_200kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_500kW_hd_1000kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_500kW_hd_300kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_500kW_hd_400kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_500kW_hd_600kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_500kW_hd_800kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_500kW_ld_100kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_500kW_ld_50kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_500kW_md_200kWh.csv create mode 100644 unittests/test_charging_models_EVs_at_Risk/outputs/tmp.txt create mode 100644 unittests/test_charging_models_EVs_at_Risk/validate.py diff --git a/unittests/CMakeLists.txt b/unittests/CMakeLists.txt index 5aaef1c..122be0b 100644 --- a/unittests/CMakeLists.txt +++ b/unittests/CMakeLists.txt @@ -1,4 +1,5 @@ enable_testing() add_subdirectory(test_charging_models_DirectXFC) -add_subdirectory(test_charging_models_eMosaic) \ No newline at end of file +add_subdirectory(test_charging_models_eMosaic) +add_subdirectory(test_charging_models_EVs_at_Risk) \ No newline at end of file diff --git a/unittests/test_charging_models_EVs_at_Risk/.gitignore b/unittests/test_charging_models_EVs_at_Risk/.gitignore new file mode 100644 index 0000000..8a7e573 --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/.gitignore @@ -0,0 +1,4 @@ +/*.csv +*.png +*.jpg +outputs/*.csv \ No newline at end of file diff --git a/unittests/test_charging_models_EVs_at_Risk/CMakeLists.txt b/unittests/test_charging_models_EVs_at_Risk/CMakeLists.txt new file mode 100644 index 0000000..6bbcc3f --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/CMakeLists.txt @@ -0,0 +1,13 @@ + +add_executable(test_charging_models_EVs_at_Risk main.cpp ) +target_link_libraries(test_charging_models_EVs_at_Risk Charging_models Load_inputs factory Base) +target_compile_features(test_charging_models_EVs_at_Risk PUBLIC cxx_std_17) +target_include_directories(test_charging_models_EVs_at_Risk PUBLIC ${PROJECT_SOURCE_DIR}/source/base) +target_include_directories(test_charging_models_EVs_at_Risk PUBLIC ${PROJECT_SOURCE_DIR}/source/charging_models) +target_include_directories(test_charging_models_EVs_at_Risk PUBLIC ${PROJECT_SOURCE_DIR}/source/factory) +target_include_directories(test_charging_models_EVs_at_Risk PUBLIC ${PROJECT_SOURCE_DIR}/source/load_inputs) + +message("CMAKE_CURRENT_SOURCE_DIR = ${CMAKE_CURRENT_SOURCE_DIR}") + +add_test(NAME "test_charging_models_EVs_at_Risk" COMMAND "test_charging_models_EVs_at_Risk" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} ) +add_test(NAME "test_charging_models_EVs_at_Risk_py" COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/validate.py WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} ) \ No newline at end of file diff --git a/unittests/test_charging_models_EVs_at_Risk/inputs/EVSE_inputs.csv b/unittests/test_charging_models_EVs_at_Risk/inputs/EVSE_inputs.csv new file mode 100644 index 0000000..74b0963 --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/inputs/EVSE_inputs.csv @@ -0,0 +1,10 @@ +EVSE_type,EVSE_level,EVSE_phase_connection,AC/DC_power_limit_kW,AC/DC_voltage_limits_V,AC/DC_current_limit_A,standby_real_power_kW,standby_reactive_power_kVAR +L2_7200,L2,1,6.624,240,30,0,0 +L2_17280,L2,1,15.8976,240,71,0,0 +xfc_150,DCFC,3,150,882.3529412,170,0.17,-0.445 +xfc_350,DCFC,3,350,700,500,0.17,-0.445 +xfc_500kW,DCFC,3,500,1000,500,0.2,-0.03 +xfc_1000kW,DCFC,3,1000,1365.001365,732.6,0.2,-0.03 +xfc_2000kW,DCFC,3,2000,1363.636705,1466.6663,0.2,-0.03 +xfc_3000kW,DCFC,3,3000,1363.636364,2200,0.2,-0.03 +dwc_100kW,DCFC,3,100,800,125,0.2,-0.03 diff --git a/unittests/test_charging_models_EVs_at_Risk/inputs/EV_inputs.csv b/unittests/test_charging_models_EVs_at_Risk/inputs/EV_inputs.csv new file mode 100644 index 0000000..17fdaf7 --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/inputs/EV_inputs.csv @@ -0,0 +1,9 @@ +EV_type,battery_chemistry,usable_battery_size_kWh,range_miles,efficiency_Wh/Mile,AC_charge_rate_kW,DCFC_capable,max_c_rate,pack_voltage_at_peak_power_V +ld_50kWh,NMC,50,200,250,15.8976,TRUE,2.9,1000 +ld_100kWh,NMC,100,300,333,15.8976,TRUE,2.9,1000 +md_200kWh,NMC,200,250,800,15.8976,TRUE,2.9,1000 +hd_300kWh,NMC,300,150,2000,15.8976,TRUE,2.9,1500 +hd_400kWh,NMC,400,200,2000,15.8976,TRUE,2.9,1500 +hd_600kWh,NMC,600,300,2000,15.8976,TRUE,2.9,1500 +hd_800kWh,NMC,800,400,2000,15.8976,TRUE,2.9,1500 +hd_1000kWh,NMC,1000,500,2000,15.8976,TRUE,2.5,1500 diff --git a/unittests/test_charging_models_EVs_at_Risk/main.cpp b/unittests/test_charging_models_EVs_at_Risk/main.cpp new file mode 100644 index 0000000..dc759e8 --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/main.cpp @@ -0,0 +1,122 @@ +#include + +#include "load_EV_EVSE_inventory.h" +#include "factory_charging_transitions.h" +#include "factory_EV_charge_model.h" +#include "factory_SOC_vs_P2.h" + +#include + + +int main() +{ + load_EV_EVSE_inventory load_inventory{ "./inputs" }; + const EV_EVSE_inventory& inventory = load_inventory.get_EV_EVSE_inventory(); + + EV_ramping_map custom_EV_ramping; + EV_EVSE_ramping_map custom_EV_EVSE_ramping; + bool model_stochastic_battery_degregation = false; + + factory_EV_charge_model charge_model_factory{ inventory, custom_EV_ramping, custom_EV_EVSE_ramping, model_stochastic_battery_degregation }; + + std::vector EV_EVSE_pair = inventory.get_all_compatible_pev_SE_combinations(); + + /* + std::vector > EV_EVSE_pair; + + EV_EVSE_pair.push_back(std::make_pair("L2_7200", "bev150_ld1_50kW")); + EV_EVSE_pair.push_back(std::make_pair("dcfc_50", "bev150_ld1_50kW")); + EV_EVSE_pair.push_back(std::make_pair("xfc_350", "bev150_ld1_50kW")); + + EV_EVSE_pair.push_back(std::make_pair("L2_7200", "bev250_ld2_300kW")); + EV_EVSE_pair.push_back(std::make_pair("dcfc_50", "bev250_ld2_300kW")); + EV_EVSE_pair.push_back(std::make_pair("xfc_350", "bev250_ld2_300kW")); + + EV_EVSE_pair.push_back(std::make_pair("L2_7200", "bev300_575kW")); + EV_EVSE_pair.push_back(std::make_pair("dcfc_50", "bev300_575kW")); + EV_EVSE_pair.push_back(std::make_pair("xfc_350", "bev300_575kW")); + */ + + // Build charge event + + bool charge_has_completed; + battery_state bat_state; + double soc_t1; + double P1_kW; + double P2_kW; + + control_strategy_enums cs; + cs.inverter_model_supports_Qsetpoint = false; + cs.ES_control_strategy = L2_control_strategies_enum::NA; + cs.VS_control_strategy = L2_control_strategies_enum::NA; + cs.ext_control_strategy = ""; + + stop_charging_criteria scc; + + int charge_event_id = 1; + int SE_group_id = 1; + SE_id_type SE_id = 1; + vehicle_id_type vehicle_id = 1; + double arrival_unix_time = 1*3600; + double departure_unix_time = 4*3600; + double arrival_SOC = 0; + double departure_SOC = 100; + stop_charging_criteria stop_charge = scc; + control_strategy_enums control_enums = cs; + + std::string filename, header, data, seperator, new_line; + std::ofstream file_handle; + + for (pev_SE_pair elem : EV_EVSE_pair) + { + EVSE_type supply_equipment_type = elem.se_type; + EV_type vehicle_type = elem.ev_type; + + charge_event_data event(charge_event_id, SE_group_id, SE_id, vehicle_id, vehicle_type, arrival_unix_time, departure_unix_time, arrival_SOC, departure_SOC, scc, cs); + + vehicle_charge_model* model = charge_model_factory.alloc_get_EV_charge_model(event, supply_equipment_type, 1000000); + model->set_target_P2_kW(10000000); + + filename = "outputs/" + supply_equipment_type + "_" + vehicle_type + ".csv"; + + file_handle = std::ofstream(filename); + + seperator = ", "; + new_line = "\n"; + + header = "simulation_time_hrs, soc_t1, P1_kW, P2_kW"; + header += new_line; + + data = ""; + + double simulation_timestep_sec = 60; + double simulation_start_unix_time = arrival_unix_time - simulation_timestep_sec; + double simulation_end_unix_time = departure_unix_time; + + double previous_unix_time = simulation_start_unix_time - simulation_timestep_sec; + double current_unix_time = simulation_start_unix_time; + + while (current_unix_time <= simulation_end_unix_time) + { + model->get_next(previous_unix_time, current_unix_time, 1.0, charge_has_completed, bat_state); + + soc_t1 = bat_state.soc_t1; + P1_kW = bat_state.P1_kW; + P2_kW = bat_state.P2_kW; + + data += std::to_string(current_unix_time / 3600.0) + seperator; + data += std::to_string(soc_t1) + seperator; + data += std::to_string(P1_kW) + seperator; + data += std::to_string(P2_kW) + new_line; + + previous_unix_time = current_unix_time; + current_unix_time += simulation_timestep_sec; + } + + file_handle << header; + file_handle << data; + file_handle.close(); + } + + return 0; +} \ No newline at end of file diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/L2_17280_hd_1000kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/L2_17280_hd_1000kWh.csv new file mode 100644 index 0000000..575b6a6 --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/L2_17280_hd_1000kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.022325, 13.394924, 13.519743 +1.016667, 0.048576, 15.750624, 15.897600 +1.033333, 0.074827, 15.750624, 15.897600 +1.050000, 0.101078, 15.750624, 15.897600 +1.066667, 0.127329, 15.750624, 15.897600 +1.083333, 0.153580, 15.750624, 15.897600 +1.100000, 0.179831, 15.750624, 15.897600 +1.116667, 0.206082, 15.750624, 15.897600 +1.133333, 0.232333, 15.750624, 15.897600 +1.150000, 0.258584, 15.750624, 15.897600 +1.166667, 0.284835, 15.750624, 15.897600 +1.183333, 0.311086, 15.750624, 15.897600 +1.200000, 0.337337, 15.750624, 15.897600 +1.216667, 0.363588, 15.750624, 15.897600 +1.233333, 0.389839, 15.750624, 15.897600 +1.250000, 0.416090, 15.750624, 15.897600 +1.266667, 0.442342, 15.750624, 15.897600 +1.283333, 0.468593, 15.750624, 15.897600 +1.300000, 0.494844, 15.750624, 15.897600 +1.316667, 0.521095, 15.750624, 15.897600 +1.333333, 0.547346, 15.750624, 15.897600 +1.350000, 0.573597, 15.750624, 15.897600 +1.366667, 0.599848, 15.750624, 15.897600 +1.383333, 0.626099, 15.750624, 15.897600 +1.400000, 0.652350, 15.750624, 15.897600 +1.416667, 0.678601, 15.750624, 15.897600 +1.433333, 0.704852, 15.750624, 15.897600 +1.450000, 0.731103, 15.750624, 15.897600 +1.466667, 0.757354, 15.750624, 15.897600 +1.483333, 0.783605, 15.750624, 15.897600 +1.500000, 0.809856, 15.750624, 15.897600 +1.516667, 0.836107, 15.750624, 15.897600 +1.533333, 0.862358, 15.750624, 15.897600 +1.550000, 0.888609, 15.750624, 15.897600 +1.566667, 0.914860, 15.750624, 15.897600 +1.583333, 0.941111, 15.750624, 15.897600 +1.600000, 0.967362, 15.750624, 15.897600 +1.616667, 0.993613, 15.750624, 15.897600 +1.633333, 1.019864, 15.750624, 15.897600 +1.650000, 1.046115, 15.750624, 15.897600 +1.666667, 1.072366, 15.750624, 15.897600 +1.683333, 1.098617, 15.750624, 15.897600 +1.700000, 1.124869, 15.750624, 15.897600 +1.716667, 1.151120, 15.750624, 15.897600 +1.733333, 1.177371, 15.750624, 15.897600 +1.750000, 1.203622, 15.750624, 15.897600 +1.766667, 1.229873, 15.750624, 15.897600 +1.783333, 1.256124, 15.750624, 15.897600 +1.800000, 1.282375, 15.750624, 15.897600 +1.816667, 1.308626, 15.750624, 15.897600 +1.833333, 1.334877, 15.750624, 15.897600 +1.850000, 1.361128, 15.750624, 15.897600 +1.866667, 1.387379, 15.750624, 15.897600 +1.883333, 1.413630, 15.750624, 15.897600 +1.900000, 1.439881, 15.750624, 15.897600 +1.916667, 1.466132, 15.750624, 15.897600 +1.933333, 1.492383, 15.750624, 15.897600 +1.950000, 1.518634, 15.750624, 15.897600 +1.966667, 1.544885, 15.750624, 15.897600 +1.983333, 1.571136, 15.750624, 15.897600 +2.000000, 1.597387, 15.750624, 15.897600 +2.016667, 1.623638, 15.750624, 15.897600 +2.033333, 1.649889, 15.750624, 15.897600 +2.050000, 1.676140, 15.750624, 15.897600 +2.066667, 1.702391, 15.750624, 15.897600 +2.083333, 1.728642, 15.750624, 15.897600 +2.100000, 1.754893, 15.750624, 15.897600 +2.116667, 1.781145, 15.750624, 15.897600 +2.133333, 1.807396, 15.750624, 15.897600 +2.150000, 1.833647, 15.750624, 15.897600 +2.166667, 1.859898, 15.750624, 15.897600 +2.183333, 1.886149, 15.750624, 15.897600 +2.200000, 1.912400, 15.750624, 15.897600 +2.216667, 1.938651, 15.750624, 15.897600 +2.233333, 1.964902, 15.750624, 15.897600 +2.250000, 1.991153, 15.750624, 15.897600 +2.266667, 2.017404, 15.750624, 15.897600 +2.283333, 2.043655, 15.750624, 15.897600 +2.300000, 2.069906, 15.750624, 15.897600 +2.316667, 2.096157, 15.750624, 15.897600 +2.333333, 2.122408, 15.750624, 15.897600 +2.350000, 2.148659, 15.750624, 15.897600 +2.366667, 2.174910, 15.750624, 15.897600 +2.383333, 2.201161, 15.750624, 15.897600 +2.400000, 2.227412, 15.750624, 15.897600 +2.416667, 2.253663, 15.750624, 15.897600 +2.433333, 2.279914, 15.750624, 15.897600 +2.450000, 2.306165, 15.750624, 15.897600 +2.466667, 2.332416, 15.750624, 15.897600 +2.483333, 2.358667, 15.750624, 15.897600 +2.500000, 2.384918, 15.750624, 15.897600 +2.516667, 2.411169, 15.750624, 15.897600 +2.533333, 2.437421, 15.750624, 15.897600 +2.550000, 2.463672, 15.750624, 15.897600 +2.566667, 2.489923, 15.750624, 15.897600 +2.583333, 2.516174, 15.750624, 15.897600 +2.600000, 2.542425, 15.750624, 15.897600 +2.616667, 2.568676, 15.750624, 15.897600 +2.633333, 2.594927, 15.750624, 15.897600 +2.650000, 2.621178, 15.750624, 15.897600 +2.666667, 2.647429, 15.750624, 15.897600 +2.683333, 2.673680, 15.750624, 15.897600 +2.700000, 2.699931, 15.750624, 15.897600 +2.716667, 2.726182, 15.750624, 15.897600 +2.733333, 2.752433, 15.750624, 15.897600 +2.750000, 2.778684, 15.750624, 15.897600 +2.766667, 2.804935, 15.750624, 15.897600 +2.783333, 2.831186, 15.750624, 15.897600 +2.800000, 2.857437, 15.750624, 15.897600 +2.816667, 2.883688, 15.750624, 15.897600 +2.833333, 2.909939, 15.750624, 15.897600 +2.850000, 2.936190, 15.750624, 15.897600 +2.866667, 2.962441, 15.750624, 15.897600 +2.883333, 2.988692, 15.750624, 15.897600 +2.900000, 3.014943, 15.750624, 15.897600 +2.916667, 3.041194, 15.750624, 15.897600 +2.933333, 3.067445, 15.750624, 15.897600 +2.950000, 3.093697, 15.750624, 15.897600 +2.966667, 3.119948, 15.750624, 15.897600 +2.983333, 3.146199, 15.750624, 15.897600 +3.000000, 3.172450, 15.750624, 15.897600 +3.016667, 3.198701, 15.750624, 15.897600 +3.033333, 3.224952, 15.750624, 15.897600 +3.050000, 3.251203, 15.750624, 15.897600 +3.066667, 3.277454, 15.750624, 15.897600 +3.083333, 3.303705, 15.750624, 15.897600 +3.100000, 3.329956, 15.750624, 15.897600 +3.116667, 3.356207, 15.750624, 15.897600 +3.133333, 3.382458, 15.750624, 15.897600 +3.150000, 3.408709, 15.750624, 15.897600 +3.166667, 3.434960, 15.750624, 15.897600 +3.183333, 3.461211, 15.750624, 15.897600 +3.200000, 3.487462, 15.750624, 15.897600 +3.216667, 3.513713, 15.750624, 15.897600 +3.233333, 3.539964, 15.750624, 15.897600 +3.250000, 3.566215, 15.750624, 15.897600 +3.266667, 3.592466, 15.750624, 15.897600 +3.283333, 3.618717, 15.750624, 15.897600 +3.300000, 3.644968, 15.750624, 15.897600 +3.316667, 3.671219, 15.750624, 15.897600 +3.333333, 3.697470, 15.750624, 15.897600 +3.350000, 3.723721, 15.750624, 15.897600 +3.366667, 3.749972, 15.750624, 15.897600 +3.383333, 3.776224, 15.750624, 15.897600 +3.400000, 3.802475, 15.750624, 15.897600 +3.416667, 3.828726, 15.750624, 15.897600 +3.433333, 3.854977, 15.750624, 15.897600 +3.450000, 3.881228, 15.750624, 15.897600 +3.466667, 3.907479, 15.750624, 15.897600 +3.483333, 3.933730, 15.750624, 15.897600 +3.500000, 3.959981, 15.750624, 15.897600 +3.516667, 3.986232, 15.750624, 15.897600 +3.533333, 4.012483, 15.750624, 15.897600 +3.550000, 4.038734, 15.750624, 15.897600 +3.566667, 4.064985, 15.750624, 15.897600 +3.583333, 4.091236, 15.750624, 15.897600 +3.600000, 4.117487, 15.750624, 15.897600 +3.616667, 4.143738, 15.750624, 15.897600 +3.633333, 4.169989, 15.750624, 15.897600 +3.650000, 4.196240, 15.750624, 15.897600 +3.666667, 4.222491, 15.750624, 15.897600 +3.683333, 4.248742, 15.750624, 15.897600 +3.700000, 4.274993, 15.750624, 15.897600 +3.716667, 4.301244, 15.750624, 15.897600 +3.733333, 4.327495, 15.750624, 15.897600 +3.750000, 4.353746, 15.750624, 15.897600 +3.766667, 4.379997, 15.750624, 15.897600 +3.783333, 4.406248, 15.750624, 15.897600 +3.800000, 4.432500, 15.750624, 15.897600 +3.816667, 4.458751, 15.750624, 15.897600 +3.833333, 4.485002, 15.750624, 15.897600 +3.850000, 4.511253, 15.750624, 15.897600 +3.866667, 4.537504, 15.750624, 15.897600 +3.883333, 4.563755, 15.750624, 15.897600 +3.900000, 4.590006, 15.750624, 15.897600 +3.916667, 4.616257, 15.750624, 15.897600 +3.933333, 4.642508, 15.750624, 15.897600 +3.950000, 4.668759, 15.750624, 15.897600 +3.966667, 4.695010, 15.750624, 15.897600 +3.983333, 4.721261, 15.750624, 15.897600 +4.000000, 4.747512, 15.750624, 15.897600 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/L2_17280_hd_300kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/L2_17280_hd_300kWh.csv new file mode 100644 index 0000000..799cb74 --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/L2_17280_hd_300kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.074403, 13.392625, 13.519743 +1.016667, 0.161889, 15.747445, 15.897600 +1.033333, 0.249375, 15.747445, 15.897600 +1.050000, 0.336861, 15.747445, 15.897600 +1.066667, 0.424347, 15.747445, 15.897600 +1.083333, 0.511833, 15.747445, 15.897600 +1.100000, 0.599318, 15.747445, 15.897600 +1.116667, 0.686804, 15.747445, 15.897600 +1.133333, 0.774290, 15.747445, 15.897600 +1.150000, 0.861776, 15.747445, 15.897600 +1.166667, 0.949262, 15.747445, 15.897600 +1.183333, 1.036747, 15.747445, 15.897600 +1.200000, 1.124233, 15.747445, 15.897600 +1.216667, 1.211719, 15.747445, 15.897600 +1.233333, 1.299205, 15.747445, 15.897600 +1.250000, 1.386691, 15.747445, 15.897600 +1.266667, 1.474176, 15.747445, 15.897600 +1.283333, 1.561662, 15.747445, 15.897600 +1.300000, 1.649148, 15.747445, 15.897600 +1.316667, 1.736634, 15.747445, 15.897600 +1.333333, 1.824120, 15.747445, 15.897600 +1.350000, 1.911605, 15.747445, 15.897600 +1.366667, 1.999091, 15.747445, 15.897600 +1.383333, 2.086577, 15.747445, 15.897600 +1.400000, 2.174063, 15.747445, 15.897600 +1.416667, 2.261549, 15.747445, 15.897600 +1.433333, 2.349034, 15.747445, 15.897600 +1.450000, 2.436520, 15.747445, 15.897600 +1.466667, 2.524006, 15.747445, 15.897600 +1.483333, 2.611492, 15.747445, 15.897600 +1.500000, 2.698978, 15.747445, 15.897600 +1.516667, 2.786464, 15.747445, 15.897600 +1.533333, 2.873949, 15.747445, 15.897600 +1.550000, 2.961435, 15.747445, 15.897600 +1.566667, 3.048921, 15.747445, 15.897600 +1.583333, 3.136407, 15.747445, 15.897600 +1.600000, 3.223893, 15.747445, 15.897600 +1.616667, 3.311378, 15.747445, 15.897600 +1.633333, 3.398864, 15.747445, 15.897600 +1.650000, 3.486350, 15.747445, 15.897600 +1.666667, 3.573836, 15.747445, 15.897600 +1.683333, 3.661322, 15.747445, 15.897600 +1.700000, 3.748807, 15.747445, 15.897600 +1.716667, 3.836293, 15.747445, 15.897600 +1.733333, 3.923779, 15.747445, 15.897600 +1.750000, 4.011265, 15.747445, 15.897600 +1.766667, 4.098751, 15.747445, 15.897600 +1.783333, 4.186236, 15.747445, 15.897600 +1.800000, 4.273722, 15.747445, 15.897600 +1.816667, 4.361208, 15.747445, 15.897600 +1.833333, 4.448694, 15.747445, 15.897600 +1.850000, 4.536180, 15.747445, 15.897600 +1.866667, 4.623665, 15.747445, 15.897600 +1.883333, 4.711151, 15.747445, 15.897600 +1.900000, 4.798637, 15.747445, 15.897600 +1.916667, 4.886123, 15.747445, 15.897600 +1.933333, 4.973609, 15.747445, 15.897600 +1.950000, 5.061095, 15.747445, 15.897600 +1.966667, 5.148580, 15.747445, 15.897600 +1.983333, 5.236066, 15.747445, 15.897600 +2.000000, 5.323552, 15.747445, 15.897600 +2.016667, 5.411038, 15.747445, 15.897600 +2.033333, 5.498524, 15.747445, 15.897600 +2.050000, 5.586009, 15.747445, 15.897600 +2.066667, 5.673495, 15.747445, 15.897600 +2.083333, 5.760981, 15.747445, 15.897600 +2.100000, 5.848467, 15.747445, 15.897600 +2.116667, 5.935953, 15.747445, 15.897600 +2.133333, 6.023438, 15.747445, 15.897600 +2.150000, 6.110924, 15.747445, 15.897600 +2.166667, 6.198410, 15.747445, 15.897600 +2.183333, 6.285896, 15.747445, 15.897600 +2.200000, 6.373382, 15.747445, 15.897600 +2.216667, 6.460867, 15.747445, 15.897600 +2.233333, 6.548353, 15.747445, 15.897600 +2.250000, 6.635839, 15.747445, 15.897600 +2.266667, 6.723325, 15.747445, 15.897600 +2.283333, 6.810811, 15.747445, 15.897600 +2.300000, 6.898296, 15.747445, 15.897600 +2.316667, 6.985782, 15.747445, 15.897600 +2.333333, 7.073268, 15.747445, 15.897600 +2.350000, 7.160754, 15.747445, 15.897600 +2.366667, 7.248240, 15.747445, 15.897600 +2.383333, 7.335726, 15.747445, 15.897600 +2.400000, 7.423211, 15.747445, 15.897600 +2.416667, 7.510697, 15.747445, 15.897600 +2.433333, 7.598183, 15.747445, 15.897600 +2.450000, 7.685669, 15.747445, 15.897600 +2.466667, 7.773155, 15.747445, 15.897600 +2.483333, 7.860640, 15.747445, 15.897600 +2.500000, 7.948126, 15.747445, 15.897600 +2.516667, 8.035612, 15.747445, 15.897600 +2.533333, 8.123098, 15.747445, 15.897600 +2.550000, 8.210584, 15.747445, 15.897600 +2.566667, 8.298069, 15.747445, 15.897600 +2.583333, 8.385555, 15.747445, 15.897600 +2.600000, 8.473041, 15.747445, 15.897600 +2.616667, 8.560527, 15.747445, 15.897600 +2.633333, 8.648013, 15.747445, 15.897600 +2.650000, 8.735498, 15.747445, 15.897600 +2.666667, 8.822984, 15.747445, 15.897600 +2.683333, 8.910470, 15.747445, 15.897600 +2.700000, 8.997956, 15.747445, 15.897600 +2.716667, 9.085442, 15.747445, 15.897600 +2.733333, 9.172927, 15.747445, 15.897600 +2.750000, 9.260413, 15.747445, 15.897600 +2.766667, 9.347899, 15.747445, 15.897600 +2.783333, 9.435385, 15.747445, 15.897600 +2.800000, 9.522871, 15.747445, 15.897600 +2.816667, 9.610357, 15.747445, 15.897600 +2.833333, 9.697842, 15.747445, 15.897600 +2.850000, 9.785328, 15.747445, 15.897600 +2.866667, 9.872814, 15.747445, 15.897600 +2.883333, 9.960300, 15.747445, 15.897600 +2.900000, 10.047786, 15.747445, 15.897600 +2.916667, 10.135271, 15.747445, 15.897600 +2.933333, 10.222757, 15.747445, 15.897600 +2.950000, 10.310243, 15.747445, 15.897600 +2.966667, 10.397729, 15.747445, 15.897600 +2.983333, 10.485215, 15.747445, 15.897600 +3.000000, 10.572700, 15.747445, 15.897600 +3.016667, 10.660186, 15.747445, 15.897600 +3.033333, 10.747672, 15.747445, 15.897600 +3.050000, 10.835158, 15.747445, 15.897600 +3.066667, 10.922644, 15.747445, 15.897600 +3.083333, 11.010129, 15.747445, 15.897600 +3.100000, 11.097615, 15.747445, 15.897600 +3.116667, 11.185101, 15.747445, 15.897600 +3.133333, 11.272587, 15.747445, 15.897600 +3.150000, 11.360073, 15.747445, 15.897600 +3.166667, 11.447558, 15.747445, 15.897600 +3.183333, 11.535044, 15.747445, 15.897600 +3.200000, 11.622530, 15.747445, 15.897600 +3.216667, 11.710016, 15.747445, 15.897600 +3.233333, 11.797502, 15.747445, 15.897600 +3.250000, 11.884988, 15.747445, 15.897600 +3.266667, 11.972473, 15.747445, 15.897600 +3.283333, 12.059959, 15.747445, 15.897600 +3.300000, 12.147445, 15.747445, 15.897600 +3.316667, 12.234931, 15.747445, 15.897600 +3.333333, 12.322417, 15.747445, 15.897600 +3.350000, 12.409902, 15.747445, 15.897600 +3.366667, 12.497388, 15.747445, 15.897600 +3.383333, 12.584874, 15.747445, 15.897600 +3.400000, 12.672360, 15.747445, 15.897600 +3.416667, 12.759846, 15.747445, 15.897600 +3.433333, 12.847331, 15.747445, 15.897600 +3.450000, 12.934817, 15.747445, 15.897600 +3.466667, 13.022303, 15.747445, 15.897600 +3.483333, 13.109789, 15.747445, 15.897600 +3.500000, 13.197275, 15.747445, 15.897600 +3.516667, 13.284760, 15.747445, 15.897600 +3.533333, 13.372246, 15.747445, 15.897600 +3.550000, 13.459732, 15.747445, 15.897600 +3.566667, 13.547218, 15.747445, 15.897600 +3.583333, 13.634704, 15.747445, 15.897600 +3.600000, 13.722189, 15.747445, 15.897600 +3.616667, 13.809675, 15.747445, 15.897600 +3.633333, 13.897161, 15.747445, 15.897600 +3.650000, 13.984647, 15.747445, 15.897600 +3.666667, 14.072133, 15.747445, 15.897600 +3.683333, 14.159619, 15.747445, 15.897600 +3.700000, 14.247104, 15.747445, 15.897600 +3.716667, 14.334590, 15.747445, 15.897600 +3.733333, 14.422076, 15.747445, 15.897600 +3.750000, 14.509562, 15.747445, 15.897600 +3.766667, 14.597048, 15.747445, 15.897600 +3.783333, 14.684533, 15.747445, 15.897600 +3.800000, 14.772019, 15.747445, 15.897600 +3.816667, 14.859505, 15.747445, 15.897600 +3.833333, 14.946991, 15.747445, 15.897600 +3.850000, 15.034477, 15.747445, 15.897600 +3.866667, 15.121962, 15.747445, 15.897600 +3.883333, 15.209448, 15.747445, 15.897600 +3.900000, 15.296934, 15.747445, 15.897600 +3.916667, 15.384420, 15.747445, 15.897600 +3.933333, 15.471906, 15.747445, 15.897600 +3.950000, 15.559391, 15.747445, 15.897600 +3.966667, 15.646877, 15.747445, 15.897600 +3.983333, 15.734363, 15.747445, 15.897600 +4.000000, 15.821849, 15.747445, 15.897600 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/L2_17280_hd_400kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/L2_17280_hd_400kWh.csv new file mode 100644 index 0000000..b8dc6e6 --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/L2_17280_hd_400kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.055806, 13.393446, 13.519743 +1.016667, 0.121425, 15.748581, 15.897600 +1.033333, 0.187044, 15.748581, 15.897600 +1.050000, 0.252663, 15.748581, 15.897600 +1.066667, 0.318282, 15.748581, 15.897600 +1.083333, 0.383901, 15.748581, 15.897600 +1.100000, 0.449521, 15.748581, 15.897600 +1.116667, 0.515140, 15.748581, 15.897600 +1.133333, 0.580759, 15.748581, 15.897600 +1.150000, 0.646378, 15.748581, 15.897600 +1.166667, 0.711997, 15.748581, 15.897600 +1.183333, 0.777616, 15.748581, 15.897600 +1.200000, 0.843235, 15.748581, 15.897600 +1.216667, 0.908854, 15.748581, 15.897600 +1.233333, 0.974473, 15.748581, 15.897600 +1.250000, 1.040092, 15.748581, 15.897600 +1.266667, 1.105711, 15.748581, 15.897600 +1.283333, 1.171330, 15.748581, 15.897600 +1.300000, 1.236950, 15.748581, 15.897600 +1.316667, 1.302569, 15.748581, 15.897600 +1.333333, 1.368188, 15.748581, 15.897600 +1.350000, 1.433807, 15.748581, 15.897600 +1.366667, 1.499426, 15.748581, 15.897600 +1.383333, 1.565045, 15.748581, 15.897600 +1.400000, 1.630664, 15.748581, 15.897600 +1.416667, 1.696283, 15.748581, 15.897600 +1.433333, 1.761902, 15.748581, 15.897600 +1.450000, 1.827521, 15.748581, 15.897600 +1.466667, 1.893140, 15.748581, 15.897600 +1.483333, 1.958760, 15.748581, 15.897600 +1.500000, 2.024379, 15.748581, 15.897600 +1.516667, 2.089998, 15.748581, 15.897600 +1.533333, 2.155617, 15.748581, 15.897600 +1.550000, 2.221236, 15.748581, 15.897600 +1.566667, 2.286855, 15.748581, 15.897600 +1.583333, 2.352474, 15.748581, 15.897600 +1.600000, 2.418093, 15.748581, 15.897600 +1.616667, 2.483712, 15.748581, 15.897600 +1.633333, 2.549331, 15.748581, 15.897600 +1.650000, 2.614950, 15.748581, 15.897600 +1.666667, 2.680569, 15.748581, 15.897600 +1.683333, 2.746189, 15.748581, 15.897600 +1.700000, 2.811808, 15.748581, 15.897600 +1.716667, 2.877427, 15.748581, 15.897600 +1.733333, 2.943046, 15.748581, 15.897600 +1.750000, 3.008665, 15.748581, 15.897600 +1.766667, 3.074284, 15.748581, 15.897600 +1.783333, 3.139903, 15.748581, 15.897600 +1.800000, 3.205522, 15.748581, 15.897600 +1.816667, 3.271141, 15.748581, 15.897600 +1.833333, 3.336760, 15.748581, 15.897600 +1.850000, 3.402379, 15.748581, 15.897600 +1.866667, 3.467998, 15.748581, 15.897600 +1.883333, 3.533618, 15.748581, 15.897600 +1.900000, 3.599237, 15.748581, 15.897600 +1.916667, 3.664856, 15.748581, 15.897600 +1.933333, 3.730475, 15.748581, 15.897600 +1.950000, 3.796094, 15.748581, 15.897600 +1.966667, 3.861713, 15.748581, 15.897600 +1.983333, 3.927332, 15.748581, 15.897600 +2.000000, 3.992951, 15.748581, 15.897600 +2.016667, 4.058570, 15.748581, 15.897600 +2.033333, 4.124189, 15.748581, 15.897600 +2.050000, 4.189808, 15.748581, 15.897600 +2.066667, 4.255428, 15.748581, 15.897600 +2.083333, 4.321047, 15.748581, 15.897600 +2.100000, 4.386666, 15.748581, 15.897600 +2.116667, 4.452285, 15.748581, 15.897600 +2.133333, 4.517904, 15.748581, 15.897600 +2.150000, 4.583523, 15.748581, 15.897600 +2.166667, 4.649142, 15.748581, 15.897600 +2.183333, 4.714761, 15.748581, 15.897600 +2.200000, 4.780380, 15.748581, 15.897600 +2.216667, 4.845999, 15.748581, 15.897600 +2.233333, 4.911618, 15.748581, 15.897600 +2.250000, 4.977237, 15.748581, 15.897600 +2.266667, 5.042857, 15.748581, 15.897600 +2.283333, 5.108476, 15.748581, 15.897600 +2.300000, 5.174095, 15.748581, 15.897600 +2.316667, 5.239714, 15.748581, 15.897600 +2.333333, 5.305333, 15.748581, 15.897600 +2.350000, 5.370952, 15.748581, 15.897600 +2.366667, 5.436571, 15.748581, 15.897600 +2.383333, 5.502190, 15.748581, 15.897600 +2.400000, 5.567809, 15.748581, 15.897600 +2.416667, 5.633428, 15.748581, 15.897600 +2.433333, 5.699047, 15.748581, 15.897600 +2.450000, 5.764666, 15.748581, 15.897600 +2.466667, 5.830286, 15.748581, 15.897600 +2.483333, 5.895905, 15.748581, 15.897600 +2.500000, 5.961524, 15.748581, 15.897600 +2.516667, 6.027143, 15.748581, 15.897600 +2.533333, 6.092762, 15.748581, 15.897600 +2.550000, 6.158381, 15.748581, 15.897600 +2.566667, 6.224000, 15.748581, 15.897600 +2.583333, 6.289619, 15.748581, 15.897600 +2.600000, 6.355238, 15.748581, 15.897600 +2.616667, 6.420857, 15.748581, 15.897600 +2.633333, 6.486476, 15.748581, 15.897600 +2.650000, 6.552095, 15.748581, 15.897600 +2.666667, 6.617715, 15.748581, 15.897600 +2.683333, 6.683334, 15.748581, 15.897600 +2.700000, 6.748953, 15.748581, 15.897600 +2.716667, 6.814572, 15.748581, 15.897600 +2.733333, 6.880191, 15.748581, 15.897600 +2.750000, 6.945810, 15.748581, 15.897600 +2.766667, 7.011429, 15.748581, 15.897600 +2.783333, 7.077048, 15.748581, 15.897600 +2.800000, 7.142667, 15.748581, 15.897600 +2.816667, 7.208286, 15.748581, 15.897600 +2.833333, 7.273905, 15.748581, 15.897600 +2.850000, 7.339525, 15.748581, 15.897600 +2.866667, 7.405144, 15.748581, 15.897600 +2.883333, 7.470763, 15.748581, 15.897600 +2.900000, 7.536382, 15.748581, 15.897600 +2.916667, 7.602001, 15.748581, 15.897600 +2.933333, 7.667620, 15.748581, 15.897600 +2.950000, 7.733239, 15.748581, 15.897600 +2.966667, 7.798858, 15.748581, 15.897600 +2.983333, 7.864477, 15.748581, 15.897600 +3.000000, 7.930096, 15.748581, 15.897600 +3.016667, 7.995715, 15.748581, 15.897600 +3.033333, 8.061334, 15.748581, 15.897600 +3.050000, 8.126954, 15.748581, 15.897600 +3.066667, 8.192573, 15.748581, 15.897600 +3.083333, 8.258192, 15.748581, 15.897600 +3.100000, 8.323811, 15.748581, 15.897600 +3.116667, 8.389430, 15.748581, 15.897600 +3.133333, 8.455049, 15.748581, 15.897600 +3.150000, 8.520668, 15.748581, 15.897600 +3.166667, 8.586287, 15.748581, 15.897600 +3.183333, 8.651906, 15.748581, 15.897600 +3.200000, 8.717525, 15.748581, 15.897600 +3.216667, 8.783144, 15.748581, 15.897600 +3.233333, 8.848763, 15.748581, 15.897600 +3.250000, 8.914383, 15.748581, 15.897600 +3.266667, 8.980002, 15.748581, 15.897600 +3.283333, 9.045621, 15.748581, 15.897600 +3.300000, 9.111240, 15.748581, 15.897600 +3.316667, 9.176859, 15.748581, 15.897600 +3.333333, 9.242478, 15.748581, 15.897600 +3.350000, 9.308097, 15.748581, 15.897600 +3.366667, 9.373716, 15.748581, 15.897600 +3.383333, 9.439335, 15.748581, 15.897600 +3.400000, 9.504954, 15.748581, 15.897600 +3.416667, 9.570573, 15.748581, 15.897600 +3.433333, 9.636193, 15.748581, 15.897600 +3.450000, 9.701812, 15.748581, 15.897600 +3.466667, 9.767431, 15.748581, 15.897600 +3.483333, 9.833050, 15.748581, 15.897600 +3.500000, 9.898669, 15.748581, 15.897600 +3.516667, 9.964288, 15.748581, 15.897600 +3.533333, 10.029907, 15.748581, 15.897600 +3.550000, 10.095526, 15.748581, 15.897600 +3.566667, 10.161145, 15.748581, 15.897600 +3.583333, 10.226764, 15.748581, 15.897600 +3.600000, 10.292383, 15.748581, 15.897600 +3.616667, 10.358002, 15.748581, 15.897600 +3.633333, 10.423622, 15.748581, 15.897600 +3.650000, 10.489241, 15.748581, 15.897600 +3.666667, 10.554860, 15.748581, 15.897600 +3.683333, 10.620479, 15.748581, 15.897600 +3.700000, 10.686098, 15.748581, 15.897600 +3.716667, 10.751717, 15.748581, 15.897600 +3.733333, 10.817336, 15.748581, 15.897600 +3.750000, 10.882955, 15.748581, 15.897600 +3.766667, 10.948574, 15.748581, 15.897600 +3.783333, 11.014193, 15.748581, 15.897600 +3.800000, 11.079812, 15.748581, 15.897600 +3.816667, 11.145431, 15.748581, 15.897600 +3.833333, 11.211051, 15.748581, 15.897600 +3.850000, 11.276670, 15.748581, 15.897600 +3.866667, 11.342289, 15.748581, 15.897600 +3.883333, 11.407908, 15.748581, 15.897600 +3.900000, 11.473527, 15.748581, 15.897600 +3.916667, 11.539146, 15.748581, 15.897600 +3.933333, 11.604765, 15.748581, 15.897600 +3.950000, 11.670384, 15.748581, 15.897600 +3.966667, 11.736003, 15.748581, 15.897600 +3.983333, 11.801622, 15.748581, 15.897600 +4.000000, 11.867241, 15.748581, 15.897600 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/L2_17280_hd_600kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/L2_17280_hd_600kWh.csv new file mode 100644 index 0000000..f075ffb --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/L2_17280_hd_600kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.037206, 13.394267, 13.519743 +1.016667, 0.080956, 15.749716, 15.897600 +1.033333, 0.124705, 15.749716, 15.897600 +1.050000, 0.168454, 15.749716, 15.897600 +1.066667, 0.212203, 15.749716, 15.897600 +1.083333, 0.255952, 15.749716, 15.897600 +1.100000, 0.299702, 15.749716, 15.897600 +1.116667, 0.343451, 15.749716, 15.897600 +1.133333, 0.387200, 15.749716, 15.897600 +1.150000, 0.430949, 15.749716, 15.897600 +1.166667, 0.474698, 15.749716, 15.897600 +1.183333, 0.518448, 15.749716, 15.897600 +1.200000, 0.562197, 15.749716, 15.897600 +1.216667, 0.605946, 15.749716, 15.897600 +1.233333, 0.649695, 15.749716, 15.897600 +1.250000, 0.693444, 15.749716, 15.897600 +1.266667, 0.737194, 15.749716, 15.897600 +1.283333, 0.780943, 15.749716, 15.897600 +1.300000, 0.824692, 15.749716, 15.897600 +1.316667, 0.868441, 15.749716, 15.897600 +1.333333, 0.912191, 15.749716, 15.897600 +1.350000, 0.955940, 15.749716, 15.897600 +1.366667, 0.999689, 15.749716, 15.897600 +1.383333, 1.043438, 15.749716, 15.897600 +1.400000, 1.087187, 15.749716, 15.897600 +1.416667, 1.130937, 15.749716, 15.897600 +1.433333, 1.174686, 15.749716, 15.897600 +1.450000, 1.218435, 15.749716, 15.897600 +1.466667, 1.262184, 15.749716, 15.897600 +1.483333, 1.305933, 15.749716, 15.897600 +1.500000, 1.349683, 15.749716, 15.897600 +1.516667, 1.393432, 15.749716, 15.897600 +1.533333, 1.437181, 15.749716, 15.897600 +1.550000, 1.480930, 15.749716, 15.897600 +1.566667, 1.524679, 15.749716, 15.897600 +1.583333, 1.568429, 15.749716, 15.897600 +1.600000, 1.612178, 15.749716, 15.897600 +1.616667, 1.655927, 15.749716, 15.897600 +1.633333, 1.699676, 15.749716, 15.897600 +1.650000, 1.743425, 15.749716, 15.897600 +1.666667, 1.787175, 15.749716, 15.897600 +1.683333, 1.830924, 15.749716, 15.897600 +1.700000, 1.874673, 15.749716, 15.897600 +1.716667, 1.918422, 15.749716, 15.897600 +1.733333, 1.962172, 15.749716, 15.897600 +1.750000, 2.005921, 15.749716, 15.897600 +1.766667, 2.049670, 15.749716, 15.897600 +1.783333, 2.093419, 15.749716, 15.897600 +1.800000, 2.137168, 15.749716, 15.897600 +1.816667, 2.180918, 15.749716, 15.897600 +1.833333, 2.224667, 15.749716, 15.897600 +1.850000, 2.268416, 15.749716, 15.897600 +1.866667, 2.312165, 15.749716, 15.897600 +1.883333, 2.355914, 15.749716, 15.897600 +1.900000, 2.399664, 15.749716, 15.897600 +1.916667, 2.443413, 15.749716, 15.897600 +1.933333, 2.487162, 15.749716, 15.897600 +1.950000, 2.530911, 15.749716, 15.897600 +1.966667, 2.574660, 15.749716, 15.897600 +1.983333, 2.618410, 15.749716, 15.897600 +2.000000, 2.662159, 15.749716, 15.897600 +2.016667, 2.705908, 15.749716, 15.897600 +2.033333, 2.749657, 15.749716, 15.897600 +2.050000, 2.793407, 15.749716, 15.897600 +2.066667, 2.837156, 15.749716, 15.897600 +2.083333, 2.880905, 15.749716, 15.897600 +2.100000, 2.924654, 15.749716, 15.897600 +2.116667, 2.968403, 15.749716, 15.897600 +2.133333, 3.012153, 15.749716, 15.897600 +2.150000, 3.055902, 15.749716, 15.897600 +2.166667, 3.099651, 15.749716, 15.897600 +2.183333, 3.143400, 15.749716, 15.897600 +2.200000, 3.187149, 15.749716, 15.897600 +2.216667, 3.230899, 15.749716, 15.897600 +2.233333, 3.274648, 15.749716, 15.897600 +2.250000, 3.318397, 15.749716, 15.897600 +2.266667, 3.362146, 15.749716, 15.897600 +2.283333, 3.405895, 15.749716, 15.897600 +2.300000, 3.449645, 15.749716, 15.897600 +2.316667, 3.493394, 15.749716, 15.897600 +2.333333, 3.537143, 15.749716, 15.897600 +2.350000, 3.580892, 15.749716, 15.897600 +2.366667, 3.624642, 15.749716, 15.897600 +2.383333, 3.668391, 15.749716, 15.897600 +2.400000, 3.712140, 15.749716, 15.897600 +2.416667, 3.755889, 15.749716, 15.897600 +2.433333, 3.799638, 15.749716, 15.897600 +2.450000, 3.843388, 15.749716, 15.897600 +2.466667, 3.887137, 15.749716, 15.897600 +2.483333, 3.930886, 15.749716, 15.897600 +2.500000, 3.974635, 15.749716, 15.897600 +2.516667, 4.018384, 15.749716, 15.897600 +2.533333, 4.062134, 15.749716, 15.897600 +2.550000, 4.105883, 15.749716, 15.897600 +2.566667, 4.149632, 15.749716, 15.897600 +2.583333, 4.193381, 15.749716, 15.897600 +2.600000, 4.237130, 15.749716, 15.897600 +2.616667, 4.280880, 15.749716, 15.897600 +2.633333, 4.324629, 15.749716, 15.897600 +2.650000, 4.368378, 15.749716, 15.897600 +2.666667, 4.412127, 15.749716, 15.897600 +2.683333, 4.455877, 15.749716, 15.897600 +2.700000, 4.499626, 15.749716, 15.897600 +2.716667, 4.543375, 15.749716, 15.897600 +2.733333, 4.587124, 15.749716, 15.897600 +2.750000, 4.630873, 15.749716, 15.897600 +2.766667, 4.674623, 15.749716, 15.897600 +2.783333, 4.718372, 15.749716, 15.897600 +2.800000, 4.762121, 15.749716, 15.897600 +2.816667, 4.805870, 15.749716, 15.897600 +2.833333, 4.849619, 15.749716, 15.897600 +2.850000, 4.893369, 15.749716, 15.897600 +2.866667, 4.937118, 15.749716, 15.897600 +2.883333, 4.980867, 15.749716, 15.897600 +2.900000, 5.024616, 15.749716, 15.897600 +2.916667, 5.068365, 15.749716, 15.897600 +2.933333, 5.112115, 15.749716, 15.897600 +2.950000, 5.155864, 15.749716, 15.897600 +2.966667, 5.199613, 15.749716, 15.897600 +2.983333, 5.243362, 15.749716, 15.897600 +3.000000, 5.287112, 15.749716, 15.897600 +3.016667, 5.330861, 15.749716, 15.897600 +3.033333, 5.374610, 15.749716, 15.897600 +3.050000, 5.418359, 15.749716, 15.897600 +3.066667, 5.462108, 15.749716, 15.897600 +3.083333, 5.505858, 15.749716, 15.897600 +3.100000, 5.549607, 15.749716, 15.897600 +3.116667, 5.593356, 15.749716, 15.897600 +3.133333, 5.637105, 15.749716, 15.897600 +3.150000, 5.680854, 15.749716, 15.897600 +3.166667, 5.724604, 15.749716, 15.897600 +3.183333, 5.768353, 15.749716, 15.897600 +3.200000, 5.812102, 15.749716, 15.897600 +3.216667, 5.855851, 15.749716, 15.897600 +3.233333, 5.899600, 15.749716, 15.897600 +3.250000, 5.943350, 15.749716, 15.897600 +3.266667, 5.987099, 15.749716, 15.897600 +3.283333, 6.030848, 15.749716, 15.897600 +3.300000, 6.074597, 15.749716, 15.897600 +3.316667, 6.118347, 15.749716, 15.897600 +3.333333, 6.162096, 15.749716, 15.897600 +3.350000, 6.205845, 15.749716, 15.897600 +3.366667, 6.249594, 15.749716, 15.897600 +3.383333, 6.293343, 15.749716, 15.897600 +3.400000, 6.337093, 15.749716, 15.897600 +3.416667, 6.380842, 15.749716, 15.897600 +3.433333, 6.424591, 15.749716, 15.897600 +3.450000, 6.468340, 15.749716, 15.897600 +3.466667, 6.512089, 15.749716, 15.897600 +3.483333, 6.555839, 15.749716, 15.897600 +3.500000, 6.599588, 15.749716, 15.897600 +3.516667, 6.643337, 15.749716, 15.897600 +3.533333, 6.687086, 15.749716, 15.897600 +3.550000, 6.730835, 15.749716, 15.897600 +3.566667, 6.774585, 15.749716, 15.897600 +3.583333, 6.818334, 15.749716, 15.897600 +3.600000, 6.862083, 15.749716, 15.897600 +3.616667, 6.905832, 15.749716, 15.897600 +3.633333, 6.949582, 15.749716, 15.897600 +3.650000, 6.993331, 15.749716, 15.897600 +3.666667, 7.037080, 15.749716, 15.897600 +3.683333, 7.080829, 15.749716, 15.897600 +3.700000, 7.124578, 15.749716, 15.897600 +3.716667, 7.168328, 15.749716, 15.897600 +3.733333, 7.212077, 15.749716, 15.897600 +3.750000, 7.255826, 15.749716, 15.897600 +3.766667, 7.299575, 15.749716, 15.897600 +3.783333, 7.343324, 15.749716, 15.897600 +3.800000, 7.387074, 15.749716, 15.897600 +3.816667, 7.430823, 15.749716, 15.897600 +3.833333, 7.474572, 15.749716, 15.897600 +3.850000, 7.518321, 15.749716, 15.897600 +3.866667, 7.562070, 15.749716, 15.897600 +3.883333, 7.605820, 15.749716, 15.897600 +3.900000, 7.649569, 15.749716, 15.897600 +3.916667, 7.693318, 15.749716, 15.897600 +3.933333, 7.737067, 15.749716, 15.897600 +3.950000, 7.780817, 15.749716, 15.897600 +3.966667, 7.824566, 15.749716, 15.897600 +3.983333, 7.868315, 15.749716, 15.897600 +4.000000, 7.912064, 15.749716, 15.897600 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/L2_17280_hd_800kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/L2_17280_hd_800kWh.csv new file mode 100644 index 0000000..05d09c2 --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/L2_17280_hd_800kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.027906, 13.394677, 13.519743 +1.016667, 0.060719, 15.750283, 15.897600 +1.033333, 0.093532, 15.750283, 15.897600 +1.050000, 0.126345, 15.750283, 15.897600 +1.066667, 0.159158, 15.750283, 15.897600 +1.083333, 0.191971, 15.750283, 15.897600 +1.100000, 0.224784, 15.750283, 15.897600 +1.116667, 0.257597, 15.750283, 15.897600 +1.133333, 0.290410, 15.750283, 15.897600 +1.150000, 0.323223, 15.750283, 15.897600 +1.166667, 0.356036, 15.750283, 15.897600 +1.183333, 0.388850, 15.750283, 15.897600 +1.200000, 0.421663, 15.750283, 15.897600 +1.216667, 0.454476, 15.750283, 15.897600 +1.233333, 0.487289, 15.750283, 15.897600 +1.250000, 0.520102, 15.750283, 15.897600 +1.266667, 0.552915, 15.750283, 15.897600 +1.283333, 0.585728, 15.750283, 15.897600 +1.300000, 0.618541, 15.750283, 15.897600 +1.316667, 0.651354, 15.750283, 15.897600 +1.333333, 0.684167, 15.750283, 15.897600 +1.350000, 0.716980, 15.750283, 15.897600 +1.366667, 0.749794, 15.750283, 15.897600 +1.383333, 0.782607, 15.750283, 15.897600 +1.400000, 0.815420, 15.750283, 15.897600 +1.416667, 0.848233, 15.750283, 15.897600 +1.433333, 0.881046, 15.750283, 15.897600 +1.450000, 0.913859, 15.750283, 15.897600 +1.466667, 0.946672, 15.750283, 15.897600 +1.483333, 0.979485, 15.750283, 15.897600 +1.500000, 1.012298, 15.750283, 15.897600 +1.516667, 1.045111, 15.750283, 15.897600 +1.533333, 1.077924, 15.750283, 15.897600 +1.550000, 1.110738, 15.750283, 15.897600 +1.566667, 1.143551, 15.750283, 15.897600 +1.583333, 1.176364, 15.750283, 15.897600 +1.600000, 1.209177, 15.750283, 15.897600 +1.616667, 1.241990, 15.750283, 15.897600 +1.633333, 1.274803, 15.750283, 15.897600 +1.650000, 1.307616, 15.750283, 15.897600 +1.666667, 1.340429, 15.750283, 15.897600 +1.683333, 1.373242, 15.750283, 15.897600 +1.700000, 1.406055, 15.750283, 15.897600 +1.716667, 1.438868, 15.750283, 15.897600 +1.733333, 1.471682, 15.750283, 15.897600 +1.750000, 1.504495, 15.750283, 15.897600 +1.766667, 1.537308, 15.750283, 15.897600 +1.783333, 1.570121, 15.750283, 15.897600 +1.800000, 1.602934, 15.750283, 15.897600 +1.816667, 1.635747, 15.750283, 15.897600 +1.833333, 1.668560, 15.750283, 15.897600 +1.850000, 1.701373, 15.750283, 15.897600 +1.866667, 1.734186, 15.750283, 15.897600 +1.883333, 1.766999, 15.750283, 15.897600 +1.900000, 1.799812, 15.750283, 15.897600 +1.916667, 1.832626, 15.750283, 15.897600 +1.933333, 1.865439, 15.750283, 15.897600 +1.950000, 1.898252, 15.750283, 15.897600 +1.966667, 1.931065, 15.750283, 15.897600 +1.983333, 1.963878, 15.750283, 15.897600 +2.000000, 1.996691, 15.750283, 15.897600 +2.016667, 2.029504, 15.750283, 15.897600 +2.033333, 2.062317, 15.750283, 15.897600 +2.050000, 2.095130, 15.750283, 15.897600 +2.066667, 2.127943, 15.750283, 15.897600 +2.083333, 2.160756, 15.750283, 15.897600 +2.100000, 2.193570, 15.750283, 15.897600 +2.116667, 2.226383, 15.750283, 15.897600 +2.133333, 2.259196, 15.750283, 15.897600 +2.150000, 2.292009, 15.750283, 15.897600 +2.166667, 2.324822, 15.750283, 15.897600 +2.183333, 2.357635, 15.750283, 15.897600 +2.200000, 2.390448, 15.750283, 15.897600 +2.216667, 2.423261, 15.750283, 15.897600 +2.233333, 2.456074, 15.750283, 15.897600 +2.250000, 2.488887, 15.750283, 15.897600 +2.266667, 2.521700, 15.750283, 15.897600 +2.283333, 2.554514, 15.750283, 15.897600 +2.300000, 2.587327, 15.750283, 15.897600 +2.316667, 2.620140, 15.750283, 15.897600 +2.333333, 2.652953, 15.750283, 15.897600 +2.350000, 2.685766, 15.750283, 15.897600 +2.366667, 2.718579, 15.750283, 15.897600 +2.383333, 2.751392, 15.750283, 15.897600 +2.400000, 2.784205, 15.750283, 15.897600 +2.416667, 2.817018, 15.750283, 15.897600 +2.433333, 2.849831, 15.750283, 15.897600 +2.450000, 2.882644, 15.750283, 15.897600 +2.466667, 2.915458, 15.750283, 15.897600 +2.483333, 2.948271, 15.750283, 15.897600 +2.500000, 2.981084, 15.750283, 15.897600 +2.516667, 3.013897, 15.750283, 15.897600 +2.533333, 3.046710, 15.750283, 15.897600 +2.550000, 3.079523, 15.750283, 15.897600 +2.566667, 3.112336, 15.750283, 15.897600 +2.583333, 3.145149, 15.750283, 15.897600 +2.600000, 3.177962, 15.750283, 15.897600 +2.616667, 3.210775, 15.750283, 15.897600 +2.633333, 3.243588, 15.750283, 15.897600 +2.650000, 3.276401, 15.750283, 15.897600 +2.666667, 3.309215, 15.750283, 15.897600 +2.683333, 3.342028, 15.750283, 15.897600 +2.700000, 3.374841, 15.750283, 15.897600 +2.716667, 3.407654, 15.750283, 15.897600 +2.733333, 3.440467, 15.750283, 15.897600 +2.750000, 3.473280, 15.750283, 15.897600 +2.766667, 3.506093, 15.750283, 15.897600 +2.783333, 3.538906, 15.750283, 15.897600 +2.800000, 3.571719, 15.750283, 15.897600 +2.816667, 3.604532, 15.750283, 15.897600 +2.833333, 3.637345, 15.750283, 15.897600 +2.850000, 3.670159, 15.750283, 15.897600 +2.866667, 3.702972, 15.750283, 15.897600 +2.883333, 3.735785, 15.750283, 15.897600 +2.900000, 3.768598, 15.750283, 15.897600 +2.916667, 3.801411, 15.750283, 15.897600 +2.933333, 3.834224, 15.750283, 15.897600 +2.950000, 3.867037, 15.750283, 15.897600 +2.966667, 3.899850, 15.750283, 15.897600 +2.983333, 3.932663, 15.750283, 15.897600 +3.000000, 3.965476, 15.750283, 15.897600 +3.016667, 3.998289, 15.750283, 15.897600 +3.033333, 4.031103, 15.750283, 15.897600 +3.050000, 4.063916, 15.750283, 15.897600 +3.066667, 4.096729, 15.750283, 15.897600 +3.083333, 4.129542, 15.750283, 15.897600 +3.100000, 4.162355, 15.750283, 15.897600 +3.116667, 4.195168, 15.750283, 15.897600 +3.133333, 4.227981, 15.750283, 15.897600 +3.150000, 4.260794, 15.750283, 15.897600 +3.166667, 4.293607, 15.750283, 15.897600 +3.183333, 4.326420, 15.750283, 15.897600 +3.200000, 4.359233, 15.750283, 15.897600 +3.216667, 4.392047, 15.750283, 15.897600 +3.233333, 4.424860, 15.750283, 15.897600 +3.250000, 4.457673, 15.750283, 15.897600 +3.266667, 4.490486, 15.750283, 15.897600 +3.283333, 4.523299, 15.750283, 15.897600 +3.300000, 4.556112, 15.750283, 15.897600 +3.316667, 4.588925, 15.750283, 15.897600 +3.333333, 4.621738, 15.750283, 15.897600 +3.350000, 4.654551, 15.750283, 15.897600 +3.366667, 4.687364, 15.750283, 15.897600 +3.383333, 4.720177, 15.750283, 15.897600 +3.400000, 4.752991, 15.750283, 15.897600 +3.416667, 4.785804, 15.750283, 15.897600 +3.433333, 4.818617, 15.750283, 15.897600 +3.450000, 4.851430, 15.750283, 15.897600 +3.466667, 4.884243, 15.750283, 15.897600 +3.483333, 4.917056, 15.750283, 15.897600 +3.500000, 4.949869, 15.750283, 15.897600 +3.516667, 4.982682, 15.750283, 15.897600 +3.533333, 5.015495, 15.750283, 15.897600 +3.550000, 5.048308, 15.750283, 15.897600 +3.566667, 5.081121, 15.750283, 15.897600 +3.583333, 5.113935, 15.750283, 15.897600 +3.600000, 5.146748, 15.750283, 15.897600 +3.616667, 5.179561, 15.750283, 15.897600 +3.633333, 5.212374, 15.750283, 15.897600 +3.650000, 5.245187, 15.750283, 15.897600 +3.666667, 5.278000, 15.750283, 15.897600 +3.683333, 5.310813, 15.750283, 15.897600 +3.700000, 5.343626, 15.750283, 15.897600 +3.716667, 5.376439, 15.750283, 15.897600 +3.733333, 5.409252, 15.750283, 15.897600 +3.750000, 5.442065, 15.750283, 15.897600 +3.766667, 5.474879, 15.750283, 15.897600 +3.783333, 5.507692, 15.750283, 15.897600 +3.800000, 5.540505, 15.750283, 15.897600 +3.816667, 5.573318, 15.750283, 15.897600 +3.833333, 5.606131, 15.750283, 15.897600 +3.850000, 5.638944, 15.750283, 15.897600 +3.866667, 5.671757, 15.750283, 15.897600 +3.883333, 5.704570, 15.750283, 15.897600 +3.900000, 5.737383, 15.750283, 15.897600 +3.916667, 5.770196, 15.750283, 15.897600 +3.933333, 5.803009, 15.750283, 15.897600 +3.950000, 5.835823, 15.750283, 15.897600 +3.966667, 5.868636, 15.750283, 15.897600 +3.983333, 5.901449, 15.750283, 15.897600 +4.000000, 5.934262, 15.750283, 15.897600 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/L2_17280_ld_100kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/L2_17280_ld_100kWh.csv new file mode 100644 index 0000000..f5cc5c9 --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/L2_17280_ld_100kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.223101, 13.386057, 13.519743 +1.016667, 0.485407, 15.738364, 15.897600 +1.033333, 0.747713, 15.738364, 15.897600 +1.050000, 1.010019, 15.738364, 15.897600 +1.066667, 1.272325, 15.738364, 15.897600 +1.083333, 1.534631, 15.738364, 15.897600 +1.100000, 1.796937, 15.738364, 15.897600 +1.116667, 2.059243, 15.738364, 15.897600 +1.133333, 2.321550, 15.738364, 15.897600 +1.150000, 2.583856, 15.738364, 15.897600 +1.166667, 2.846162, 15.738364, 15.897600 +1.183333, 3.108468, 15.738364, 15.897600 +1.200000, 3.370774, 15.738364, 15.897600 +1.216667, 3.633080, 15.738364, 15.897600 +1.233333, 3.895386, 15.738364, 15.897600 +1.250000, 4.157692, 15.738364, 15.897600 +1.266667, 4.419998, 15.738364, 15.897600 +1.283333, 4.682304, 15.738364, 15.897600 +1.300000, 4.944610, 15.738364, 15.897600 +1.316667, 5.206916, 15.738364, 15.897600 +1.333333, 5.469222, 15.738364, 15.897600 +1.350000, 5.731528, 15.738364, 15.897600 +1.366667, 5.993835, 15.738364, 15.897600 +1.383333, 6.256141, 15.738364, 15.897600 +1.400000, 6.518447, 15.738364, 15.897600 +1.416667, 6.780753, 15.738364, 15.897600 +1.433333, 7.043059, 15.738364, 15.897600 +1.450000, 7.305365, 15.738364, 15.897600 +1.466667, 7.567671, 15.738364, 15.897600 +1.483333, 7.829977, 15.738364, 15.897600 +1.500000, 8.092283, 15.738364, 15.897600 +1.516667, 8.354589, 15.738364, 15.897600 +1.533333, 8.616895, 15.738364, 15.897600 +1.550000, 8.879201, 15.738364, 15.897600 +1.566667, 9.141507, 15.738364, 15.897600 +1.583333, 9.403813, 15.738364, 15.897600 +1.600000, 9.666120, 15.738364, 15.897600 +1.616667, 9.928426, 15.738364, 15.897600 +1.633333, 10.190732, 15.738364, 15.897600 +1.650000, 10.453038, 15.738364, 15.897600 +1.666667, 10.715344, 15.738364, 15.897600 +1.683333, 10.977650, 15.738364, 15.897600 +1.700000, 11.239956, 15.738364, 15.897600 +1.716667, 11.502262, 15.738364, 15.897600 +1.733333, 11.764568, 15.738364, 15.897600 +1.750000, 12.026874, 15.738364, 15.897600 +1.766667, 12.289180, 15.738364, 15.897600 +1.783333, 12.551486, 15.738364, 15.897600 +1.800000, 12.813792, 15.738364, 15.897600 +1.816667, 13.076099, 15.738364, 15.897600 +1.833333, 13.338405, 15.738364, 15.897600 +1.850000, 13.600711, 15.738364, 15.897600 +1.866667, 13.863017, 15.738364, 15.897600 +1.883333, 14.125323, 15.738364, 15.897600 +1.900000, 14.387629, 15.738364, 15.897600 +1.916667, 14.649935, 15.738364, 15.897600 +1.933333, 14.912241, 15.738364, 15.897600 +1.950000, 15.174547, 15.738364, 15.897600 +1.966667, 15.436853, 15.738364, 15.897600 +1.983333, 15.699159, 15.738364, 15.897600 +2.000000, 15.961465, 15.738364, 15.897600 +2.016667, 16.223771, 15.738364, 15.897600 +2.033333, 16.486077, 15.738364, 15.897600 +2.050000, 16.748384, 15.738364, 15.897600 +2.066667, 17.010690, 15.738364, 15.897600 +2.083333, 17.272996, 15.738364, 15.897600 +2.100000, 17.535302, 15.738364, 15.897600 +2.116667, 17.797608, 15.738364, 15.897600 +2.133333, 18.059914, 15.738364, 15.897600 +2.150000, 18.322220, 15.738364, 15.897600 +2.166667, 18.584526, 15.738364, 15.897600 +2.183333, 18.846832, 15.738364, 15.897600 +2.200000, 19.109138, 15.738364, 15.897600 +2.216667, 19.371444, 15.738364, 15.897600 +2.233333, 19.633750, 15.738364, 15.897600 +2.250000, 19.896056, 15.738364, 15.897600 +2.266667, 20.158362, 15.738364, 15.897600 +2.283333, 20.420669, 15.738364, 15.897600 +2.300000, 20.682975, 15.738364, 15.897600 +2.316667, 20.945281, 15.738364, 15.897600 +2.333333, 21.207587, 15.738364, 15.897600 +2.350000, 21.469893, 15.738364, 15.897600 +2.366667, 21.732199, 15.738364, 15.897600 +2.383333, 21.994505, 15.738364, 15.897600 +2.400000, 22.256811, 15.738364, 15.897600 +2.416667, 22.519117, 15.738364, 15.897600 +2.433333, 22.781423, 15.738364, 15.897600 +2.450000, 23.043729, 15.738364, 15.897600 +2.466667, 23.306035, 15.738364, 15.897600 +2.483333, 23.568341, 15.738364, 15.897600 +2.500000, 23.830647, 15.738364, 15.897600 +2.516667, 24.092954, 15.738364, 15.897600 +2.533333, 24.355260, 15.738364, 15.897600 +2.550000, 24.617566, 15.738364, 15.897600 +2.566667, 24.879872, 15.738364, 15.897600 +2.583333, 25.142178, 15.738364, 15.897600 +2.600000, 25.404484, 15.738364, 15.897600 +2.616667, 25.666790, 15.738364, 15.897600 +2.633333, 25.929096, 15.738364, 15.897600 +2.650000, 26.191402, 15.738364, 15.897600 +2.666667, 26.453708, 15.738364, 15.897600 +2.683333, 26.716014, 15.738364, 15.897600 +2.700000, 26.978320, 15.738364, 15.897600 +2.716667, 27.240626, 15.738364, 15.897600 +2.733333, 27.502932, 15.738364, 15.897600 +2.750000, 27.765239, 15.738364, 15.897600 +2.766667, 28.027545, 15.738364, 15.897600 +2.783333, 28.289851, 15.738364, 15.897600 +2.800000, 28.552157, 15.738364, 15.897600 +2.816667, 28.814463, 15.738364, 15.897600 +2.833333, 29.076769, 15.738364, 15.897600 +2.850000, 29.339075, 15.738364, 15.897600 +2.866667, 29.601381, 15.738364, 15.897600 +2.883333, 29.863687, 15.738364, 15.897600 +2.900000, 30.125993, 15.738364, 15.897600 +2.916667, 30.388299, 15.738364, 15.897600 +2.933333, 30.650605, 15.738364, 15.897600 +2.950000, 30.912911, 15.738364, 15.897600 +2.966667, 31.175218, 15.738364, 15.897600 +2.983333, 31.437524, 15.738364, 15.897600 +3.000000, 31.699830, 15.738364, 15.897600 +3.016667, 31.962136, 15.738364, 15.897600 +3.033333, 32.224442, 15.738364, 15.897600 +3.050000, 32.486748, 15.738364, 15.897600 +3.066667, 32.749054, 15.738364, 15.897600 +3.083333, 33.011360, 15.738364, 15.897600 +3.100000, 33.273666, 15.738364, 15.897600 +3.116667, 33.535972, 15.738364, 15.897600 +3.133333, 33.798278, 15.738364, 15.897600 +3.150000, 34.060584, 15.738364, 15.897600 +3.166667, 34.322890, 15.738364, 15.897600 +3.183333, 34.585196, 15.738364, 15.897600 +3.200000, 34.847503, 15.738364, 15.897600 +3.216667, 35.109809, 15.738364, 15.897600 +3.233333, 35.372115, 15.738364, 15.897600 +3.250000, 35.634421, 15.738364, 15.897600 +3.266667, 35.896727, 15.738364, 15.897600 +3.283333, 36.159033, 15.738364, 15.897600 +3.300000, 36.421339, 15.738364, 15.897600 +3.316667, 36.683645, 15.738364, 15.897600 +3.333333, 36.945951, 15.738364, 15.897600 +3.350000, 37.208257, 15.738364, 15.897600 +3.366667, 37.470563, 15.738364, 15.897600 +3.383333, 37.732869, 15.738364, 15.897600 +3.400000, 37.995175, 15.738364, 15.897600 +3.416667, 38.257481, 15.738364, 15.897600 +3.433333, 38.519788, 15.738364, 15.897600 +3.450000, 38.782094, 15.738364, 15.897600 +3.466667, 39.044400, 15.738364, 15.897600 +3.483333, 39.306706, 15.738364, 15.897600 +3.500000, 39.569012, 15.738364, 15.897600 +3.516667, 39.831318, 15.738364, 15.897600 +3.533333, 40.093624, 15.738364, 15.897600 +3.550000, 40.355930, 15.738364, 15.897600 +3.566667, 40.618236, 15.738364, 15.897600 +3.583333, 40.880542, 15.738364, 15.897600 +3.600000, 41.142848, 15.738364, 15.897600 +3.616667, 41.405154, 15.738364, 15.897600 +3.633333, 41.667460, 15.738364, 15.897600 +3.650000, 41.929766, 15.738364, 15.897600 +3.666667, 42.192073, 15.738364, 15.897600 +3.683333, 42.454379, 15.738364, 15.897600 +3.700000, 42.716685, 15.738364, 15.897600 +3.716667, 42.978991, 15.738364, 15.897600 +3.733333, 43.241297, 15.738364, 15.897600 +3.750000, 43.503603, 15.738364, 15.897600 +3.766667, 43.765909, 15.738364, 15.897600 +3.783333, 44.028215, 15.738364, 15.897600 +3.800000, 44.290521, 15.738364, 15.897600 +3.816667, 44.552827, 15.738364, 15.897600 +3.833333, 44.815133, 15.738364, 15.897600 +3.850000, 45.077439, 15.738364, 15.897600 +3.866667, 45.339745, 15.738364, 15.897600 +3.883333, 45.602051, 15.738364, 15.897600 +3.900000, 45.864358, 15.738364, 15.897600 +3.916667, 46.126664, 15.738364, 15.897600 +3.933333, 46.388970, 15.738364, 15.897600 +3.950000, 46.651276, 15.738364, 15.897600 +3.966667, 46.913582, 15.738364, 15.897600 +3.983333, 47.175888, 15.738364, 15.897600 +4.000000, 47.438194, 15.738364, 15.897600 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/L2_17280_ld_50kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/L2_17280_ld_50kWh.csv new file mode 100644 index 0000000..8eb98a7 --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/L2_17280_ld_50kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.445874, 13.376206, 13.519743 +1.016667, 0.970032, 15.724743, 15.897600 +1.033333, 1.494190, 15.724743, 15.897600 +1.050000, 2.018348, 15.724743, 15.897600 +1.066667, 2.542506, 15.724743, 15.897600 +1.083333, 3.066664, 15.724743, 15.897600 +1.100000, 3.590822, 15.724743, 15.897600 +1.116667, 4.114980, 15.724743, 15.897600 +1.133333, 4.639138, 15.724743, 15.897600 +1.150000, 5.163296, 15.724743, 15.897600 +1.166667, 5.687454, 15.724743, 15.897600 +1.183333, 6.211613, 15.724743, 15.897600 +1.200000, 6.735771, 15.724743, 15.897600 +1.216667, 7.259929, 15.724743, 15.897600 +1.233333, 7.784087, 15.724743, 15.897600 +1.250000, 8.308245, 15.724743, 15.897600 +1.266667, 8.832403, 15.724743, 15.897600 +1.283333, 9.356561, 15.724743, 15.897600 +1.300000, 9.880719, 15.724743, 15.897600 +1.316667, 10.404877, 15.724743, 15.897600 +1.333333, 10.929035, 15.724743, 15.897600 +1.350000, 11.453193, 15.724743, 15.897600 +1.366667, 11.977352, 15.724743, 15.897600 +1.383333, 12.501510, 15.724743, 15.897600 +1.400000, 13.025668, 15.724743, 15.897600 +1.416667, 13.549826, 15.724743, 15.897600 +1.433333, 14.073984, 15.724743, 15.897600 +1.450000, 14.598142, 15.724743, 15.897600 +1.466667, 15.122300, 15.724743, 15.897600 +1.483333, 15.646458, 15.724743, 15.897600 +1.500000, 16.170616, 15.724743, 15.897600 +1.516667, 16.694774, 15.724743, 15.897600 +1.533333, 17.218932, 15.724743, 15.897600 +1.550000, 17.743091, 15.724743, 15.897600 +1.566667, 18.267249, 15.724743, 15.897600 +1.583333, 18.791407, 15.724743, 15.897600 +1.600000, 19.315565, 15.724743, 15.897600 +1.616667, 19.839723, 15.724743, 15.897600 +1.633333, 20.363881, 15.724743, 15.897600 +1.650000, 20.888039, 15.724743, 15.897600 +1.666667, 21.412197, 15.724743, 15.897600 +1.683333, 21.936355, 15.724743, 15.897600 +1.700000, 22.460513, 15.724743, 15.897600 +1.716667, 22.984671, 15.724743, 15.897600 +1.733333, 23.508830, 15.724743, 15.897600 +1.750000, 24.032988, 15.724743, 15.897600 +1.766667, 24.557146, 15.724743, 15.897600 +1.783333, 25.081304, 15.724743, 15.897600 +1.800000, 25.605462, 15.724743, 15.897600 +1.816667, 26.129620, 15.724743, 15.897600 +1.833333, 26.653778, 15.724743, 15.897600 +1.850000, 27.177936, 15.724743, 15.897600 +1.866667, 27.702094, 15.724743, 15.897600 +1.883333, 28.226252, 15.724743, 15.897600 +1.900000, 28.750410, 15.724743, 15.897600 +1.916667, 29.274569, 15.724743, 15.897600 +1.933333, 29.798727, 15.724743, 15.897600 +1.950000, 30.322885, 15.724743, 15.897600 +1.966667, 30.847043, 15.724743, 15.897600 +1.983333, 31.371201, 15.724743, 15.897600 +2.000000, 31.895359, 15.724743, 15.897600 +2.016667, 32.419517, 15.724743, 15.897600 +2.033333, 32.943675, 15.724743, 15.897600 +2.050000, 33.467833, 15.724743, 15.897600 +2.066667, 33.991991, 15.724743, 15.897600 +2.083333, 34.516150, 15.724743, 15.897600 +2.100000, 35.040308, 15.724743, 15.897600 +2.116667, 35.564466, 15.724743, 15.897600 +2.133333, 36.088624, 15.724743, 15.897600 +2.150000, 36.612782, 15.724743, 15.897600 +2.166667, 37.136940, 15.724743, 15.897600 +2.183333, 37.661098, 15.724743, 15.897600 +2.200000, 38.185256, 15.724743, 15.897600 +2.216667, 38.709414, 15.724743, 15.897600 +2.233333, 39.233572, 15.724743, 15.897600 +2.250000, 39.757730, 15.724743, 15.897600 +2.266667, 40.281889, 15.724743, 15.897600 +2.283333, 40.806047, 15.724743, 15.897600 +2.300000, 41.330205, 15.724743, 15.897600 +2.316667, 41.854363, 15.724743, 15.897600 +2.333333, 42.378521, 15.724743, 15.897600 +2.350000, 42.902679, 15.724743, 15.897600 +2.366667, 43.426837, 15.724743, 15.897600 +2.383333, 43.950995, 15.724743, 15.897600 +2.400000, 44.475153, 15.724743, 15.897600 +2.416667, 44.999311, 15.724743, 15.897600 +2.433333, 45.523469, 15.724743, 15.897600 +2.450000, 46.047628, 15.724743, 15.897600 +2.466667, 46.571786, 15.724743, 15.897600 +2.483333, 47.095944, 15.724743, 15.897600 +2.500000, 47.620102, 15.724743, 15.897600 +2.516667, 48.144260, 15.724743, 15.897600 +2.533333, 48.668418, 15.724743, 15.897600 +2.550000, 49.192576, 15.724743, 15.897600 +2.566667, 49.716734, 15.724743, 15.897600 +2.583333, 50.240892, 15.724743, 15.897600 +2.600000, 50.765050, 15.724743, 15.897600 +2.616667, 51.289208, 15.724743, 15.897600 +2.633333, 51.813367, 15.724743, 15.897600 +2.650000, 52.337525, 15.724743, 15.897600 +2.666667, 52.861683, 15.724743, 15.897600 +2.683333, 53.385841, 15.724743, 15.897600 +2.700000, 53.909999, 15.724743, 15.897600 +2.716667, 54.434157, 15.724743, 15.897600 +2.733333, 54.958315, 15.724743, 15.897600 +2.750000, 55.482473, 15.724743, 15.897600 +2.766667, 56.006631, 15.724743, 15.897600 +2.783333, 56.530789, 15.724743, 15.897600 +2.800000, 57.054947, 15.724743, 15.897600 +2.816667, 57.579106, 15.724743, 15.897600 +2.833333, 58.103264, 15.724743, 15.897600 +2.850000, 58.627422, 15.724743, 15.897600 +2.866667, 59.151580, 15.724743, 15.897600 +2.883333, 59.675738, 15.724743, 15.897600 +2.900000, 60.199896, 15.724743, 15.897600 +2.916667, 60.724054, 15.724743, 15.897600 +2.933333, 61.248212, 15.724743, 15.897600 +2.950000, 61.772370, 15.724743, 15.897600 +2.966667, 62.296528, 15.724743, 15.897600 +2.983333, 62.820686, 15.724743, 15.897600 +3.000000, 63.344845, 15.724743, 15.897600 +3.016667, 63.869003, 15.724743, 15.897600 +3.033333, 64.393161, 15.724743, 15.897600 +3.050000, 64.917319, 15.724743, 15.897600 +3.066667, 65.441477, 15.724743, 15.897600 +3.083333, 65.965635, 15.724743, 15.897600 +3.100000, 66.489793, 15.724743, 15.897600 +3.116667, 67.013951, 15.724743, 15.897600 +3.133333, 67.538109, 15.724743, 15.897600 +3.150000, 68.062267, 15.724743, 15.897600 +3.166667, 68.586425, 15.724743, 15.897600 +3.183333, 69.110584, 15.724743, 15.897600 +3.200000, 69.634742, 15.724743, 15.897600 +3.216667, 70.158900, 15.724743, 15.897600 +3.233333, 70.683058, 15.724743, 15.897600 +3.250000, 71.207216, 15.724743, 15.897600 +3.266667, 71.731374, 15.724743, 15.897600 +3.283333, 72.255532, 15.724743, 15.897600 +3.300000, 72.779690, 15.724743, 15.897600 +3.316667, 73.303848, 15.724743, 15.897600 +3.333333, 73.828006, 15.724743, 15.897600 +3.350000, 74.352164, 15.724743, 15.897600 +3.366667, 74.876323, 15.724743, 15.897600 +3.383333, 75.400481, 15.724743, 15.897600 +3.400000, 75.924639, 15.724743, 15.897600 +3.416667, 76.448797, 15.724743, 15.897600 +3.433333, 76.972955, 15.724743, 15.897600 +3.450000, 77.497113, 15.724743, 15.897600 +3.466667, 78.021271, 15.724743, 15.897600 +3.483333, 78.545429, 15.724743, 15.897600 +3.500000, 79.069587, 15.724743, 15.897600 +3.516667, 79.593745, 15.724743, 15.897600 +3.533333, 80.117904, 15.724743, 15.897600 +3.550000, 80.642062, 15.724743, 15.897600 +3.566667, 81.166220, 15.724743, 15.897600 +3.583333, 81.690378, 15.724743, 15.897600 +3.600000, 82.214536, 15.724743, 15.897600 +3.616667, 82.738694, 15.724743, 15.897600 +3.633333, 83.262852, 15.724743, 15.897600 +3.650000, 83.787010, 15.724743, 15.897600 +3.666667, 84.311168, 15.724743, 15.897600 +3.683333, 84.835326, 15.724743, 15.897600 +3.700000, 85.359484, 15.724743, 15.897600 +3.716667, 85.883643, 15.724743, 15.897600 +3.733333, 86.407801, 15.724743, 15.897600 +3.750000, 86.931959, 15.724743, 15.897600 +3.766667, 87.456117, 15.724743, 15.897600 +3.783333, 87.980275, 15.724743, 15.897600 +3.800000, 88.504433, 15.724743, 15.897600 +3.816667, 89.028591, 15.724743, 15.897600 +3.833333, 89.552749, 15.724743, 15.897600 +3.850000, 90.076907, 15.724743, 15.897600 +3.866667, 90.601065, 15.724743, 15.897600 +3.883333, 91.125223, 15.724743, 15.897600 +3.900000, 91.649382, 15.724743, 15.897600 +3.916667, 92.173540, 15.724743, 15.897600 +3.933333, 92.697698, 15.724743, 15.897600 +3.950000, 93.221856, 15.724743, 15.897600 +3.966667, 93.746014, 15.724743, 15.897600 +3.983333, 94.270172, 15.724743, 15.897600 +4.000000, 94.794330, 15.724743, 15.897600 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/L2_17280_md_200kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/L2_17280_md_200kWh.csv new file mode 100644 index 0000000..5bfd392 --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/L2_17280_md_200kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.111592, 13.390983, 13.519743 +1.016667, 0.242801, 15.745175, 15.897600 +1.033333, 0.374011, 15.745175, 15.897600 +1.050000, 0.505221, 15.745175, 15.897600 +1.066667, 0.636431, 15.745175, 15.897600 +1.083333, 0.767640, 15.745175, 15.897600 +1.100000, 0.898850, 15.745175, 15.897600 +1.116667, 1.030060, 15.745175, 15.897600 +1.133333, 1.161270, 15.745175, 15.897600 +1.150000, 1.292480, 15.745175, 15.897600 +1.166667, 1.423689, 15.745175, 15.897600 +1.183333, 1.554899, 15.745175, 15.897600 +1.200000, 1.686109, 15.745175, 15.897600 +1.216667, 1.817319, 15.745175, 15.897600 +1.233333, 1.948529, 15.745175, 15.897600 +1.250000, 2.079738, 15.745175, 15.897600 +1.266667, 2.210948, 15.745175, 15.897600 +1.283333, 2.342158, 15.745175, 15.897600 +1.300000, 2.473368, 15.745175, 15.897600 +1.316667, 2.604578, 15.745175, 15.897600 +1.333333, 2.735787, 15.745175, 15.897600 +1.350000, 2.866997, 15.745175, 15.897600 +1.366667, 2.998207, 15.745175, 15.897600 +1.383333, 3.129417, 15.745175, 15.897600 +1.400000, 3.260627, 15.745175, 15.897600 +1.416667, 3.391836, 15.745175, 15.897600 +1.433333, 3.523046, 15.745175, 15.897600 +1.450000, 3.654256, 15.745175, 15.897600 +1.466667, 3.785466, 15.745175, 15.897600 +1.483333, 3.916676, 15.745175, 15.897600 +1.500000, 4.047885, 15.745175, 15.897600 +1.516667, 4.179095, 15.745175, 15.897600 +1.533333, 4.310305, 15.745175, 15.897600 +1.550000, 4.441515, 15.745175, 15.897600 +1.566667, 4.572724, 15.745175, 15.897600 +1.583333, 4.703934, 15.745175, 15.897600 +1.600000, 4.835144, 15.745175, 15.897600 +1.616667, 4.966354, 15.745175, 15.897600 +1.633333, 5.097564, 15.745175, 15.897600 +1.650000, 5.228773, 15.745175, 15.897600 +1.666667, 5.359983, 15.745175, 15.897600 +1.683333, 5.491193, 15.745175, 15.897600 +1.700000, 5.622403, 15.745175, 15.897600 +1.716667, 5.753613, 15.745175, 15.897600 +1.733333, 5.884822, 15.745175, 15.897600 +1.750000, 6.016032, 15.745175, 15.897600 +1.766667, 6.147242, 15.745175, 15.897600 +1.783333, 6.278452, 15.745175, 15.897600 +1.800000, 6.409662, 15.745175, 15.897600 +1.816667, 6.540871, 15.745175, 15.897600 +1.833333, 6.672081, 15.745175, 15.897600 +1.850000, 6.803291, 15.745175, 15.897600 +1.866667, 6.934501, 15.745175, 15.897600 +1.883333, 7.065711, 15.745175, 15.897600 +1.900000, 7.196920, 15.745175, 15.897600 +1.916667, 7.328130, 15.745175, 15.897600 +1.933333, 7.459340, 15.745175, 15.897600 +1.950000, 7.590550, 15.745175, 15.897600 +1.966667, 7.721760, 15.745175, 15.897600 +1.983333, 7.852969, 15.745175, 15.897600 +2.000000, 7.984179, 15.745175, 15.897600 +2.016667, 8.115389, 15.745175, 15.897600 +2.033333, 8.246599, 15.745175, 15.897600 +2.050000, 8.377808, 15.745175, 15.897600 +2.066667, 8.509018, 15.745175, 15.897600 +2.083333, 8.640228, 15.745175, 15.897600 +2.100000, 8.771438, 15.745175, 15.897600 +2.116667, 8.902648, 15.745175, 15.897600 +2.133333, 9.033857, 15.745175, 15.897600 +2.150000, 9.165067, 15.745175, 15.897600 +2.166667, 9.296277, 15.745175, 15.897600 +2.183333, 9.427487, 15.745175, 15.897600 +2.200000, 9.558697, 15.745175, 15.897600 +2.216667, 9.689906, 15.745175, 15.897600 +2.233333, 9.821116, 15.745175, 15.897600 +2.250000, 9.952326, 15.745175, 15.897600 +2.266667, 10.083536, 15.745175, 15.897600 +2.283333, 10.214746, 15.745175, 15.897600 +2.300000, 10.345955, 15.745175, 15.897600 +2.316667, 10.477165, 15.745175, 15.897600 +2.333333, 10.608375, 15.745175, 15.897600 +2.350000, 10.739585, 15.745175, 15.897600 +2.366667, 10.870795, 15.745175, 15.897600 +2.383333, 11.002004, 15.745175, 15.897600 +2.400000, 11.133214, 15.745175, 15.897600 +2.416667, 11.264424, 15.745175, 15.897600 +2.433333, 11.395634, 15.745175, 15.897600 +2.450000, 11.526844, 15.745175, 15.897600 +2.466667, 11.658053, 15.745175, 15.897600 +2.483333, 11.789263, 15.745175, 15.897600 +2.500000, 11.920473, 15.745175, 15.897600 +2.516667, 12.051683, 15.745175, 15.897600 +2.533333, 12.182892, 15.745175, 15.897600 +2.550000, 12.314102, 15.745175, 15.897600 +2.566667, 12.445312, 15.745175, 15.897600 +2.583333, 12.576522, 15.745175, 15.897600 +2.600000, 12.707732, 15.745175, 15.897600 +2.616667, 12.838941, 15.745175, 15.897600 +2.633333, 12.970151, 15.745175, 15.897600 +2.650000, 13.101361, 15.745175, 15.897600 +2.666667, 13.232571, 15.745175, 15.897600 +2.683333, 13.363781, 15.745175, 15.897600 +2.700000, 13.494990, 15.745175, 15.897600 +2.716667, 13.626200, 15.745175, 15.897600 +2.733333, 13.757410, 15.745175, 15.897600 +2.750000, 13.888620, 15.745175, 15.897600 +2.766667, 14.019830, 15.745175, 15.897600 +2.783333, 14.151039, 15.745175, 15.897600 +2.800000, 14.282249, 15.745175, 15.897600 +2.816667, 14.413459, 15.745175, 15.897600 +2.833333, 14.544669, 15.745175, 15.897600 +2.850000, 14.675879, 15.745175, 15.897600 +2.866667, 14.807088, 15.745175, 15.897600 +2.883333, 14.938298, 15.745175, 15.897600 +2.900000, 15.069508, 15.745175, 15.897600 +2.916667, 15.200718, 15.745175, 15.897600 +2.933333, 15.331927, 15.745175, 15.897600 +2.950000, 15.463137, 15.745175, 15.897600 +2.966667, 15.594347, 15.745175, 15.897600 +2.983333, 15.725557, 15.745175, 15.897600 +3.000000, 15.856767, 15.745175, 15.897600 +3.016667, 15.987976, 15.745175, 15.897600 +3.033333, 16.119186, 15.745175, 15.897600 +3.050000, 16.250396, 15.745175, 15.897600 +3.066667, 16.381606, 15.745175, 15.897600 +3.083333, 16.512816, 15.745175, 15.897600 +3.100000, 16.644025, 15.745175, 15.897600 +3.116667, 16.775235, 15.745175, 15.897600 +3.133333, 16.906445, 15.745175, 15.897600 +3.150000, 17.037655, 15.745175, 15.897600 +3.166667, 17.168865, 15.745175, 15.897600 +3.183333, 17.300074, 15.745175, 15.897600 +3.200000, 17.431284, 15.745175, 15.897600 +3.216667, 17.562494, 15.745175, 15.897600 +3.233333, 17.693704, 15.745175, 15.897600 +3.250000, 17.824914, 15.745175, 15.897600 +3.266667, 17.956123, 15.745175, 15.897600 +3.283333, 18.087333, 15.745175, 15.897600 +3.300000, 18.218543, 15.745175, 15.897600 +3.316667, 18.349753, 15.745175, 15.897600 +3.333333, 18.480963, 15.745175, 15.897600 +3.350000, 18.612172, 15.745175, 15.897600 +3.366667, 18.743382, 15.745175, 15.897600 +3.383333, 18.874592, 15.745175, 15.897600 +3.400000, 19.005802, 15.745175, 15.897600 +3.416667, 19.137011, 15.745175, 15.897600 +3.433333, 19.268221, 15.745175, 15.897600 +3.450000, 19.399431, 15.745175, 15.897600 +3.466667, 19.530641, 15.745175, 15.897600 +3.483333, 19.661851, 15.745175, 15.897600 +3.500000, 19.793060, 15.745175, 15.897600 +3.516667, 19.924270, 15.745175, 15.897600 +3.533333, 20.055480, 15.745175, 15.897600 +3.550000, 20.186690, 15.745175, 15.897600 +3.566667, 20.317900, 15.745175, 15.897600 +3.583333, 20.449109, 15.745175, 15.897600 +3.600000, 20.580319, 15.745175, 15.897600 +3.616667, 20.711529, 15.745175, 15.897600 +3.633333, 20.842739, 15.745175, 15.897600 +3.650000, 20.973949, 15.745175, 15.897600 +3.666667, 21.105158, 15.745175, 15.897600 +3.683333, 21.236368, 15.745175, 15.897600 +3.700000, 21.367578, 15.745175, 15.897600 +3.716667, 21.498788, 15.745175, 15.897600 +3.733333, 21.629998, 15.745175, 15.897600 +3.750000, 21.761207, 15.745175, 15.897600 +3.766667, 21.892417, 15.745175, 15.897600 +3.783333, 22.023627, 15.745175, 15.897600 +3.800000, 22.154837, 15.745175, 15.897600 +3.816667, 22.286047, 15.745175, 15.897600 +3.833333, 22.417256, 15.745175, 15.897600 +3.850000, 22.548466, 15.745175, 15.897600 +3.866667, 22.679676, 15.745175, 15.897600 +3.883333, 22.810886, 15.745175, 15.897600 +3.900000, 22.942095, 15.745175, 15.897600 +3.916667, 23.073305, 15.745175, 15.897600 +3.933333, 23.204515, 15.745175, 15.897600 +3.950000, 23.335725, 15.745175, 15.897600 +3.966667, 23.466935, 15.745175, 15.897600 +3.983333, 23.598144, 15.745175, 15.897600 +4.000000, 23.729354, 15.745175, 15.897600 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/L2_7200_hd_1000kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/L2_7200_hd_1000kWh.csv new file mode 100644 index 0000000..575b6a6 --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/L2_7200_hd_1000kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.022325, 13.394924, 13.519743 +1.016667, 0.048576, 15.750624, 15.897600 +1.033333, 0.074827, 15.750624, 15.897600 +1.050000, 0.101078, 15.750624, 15.897600 +1.066667, 0.127329, 15.750624, 15.897600 +1.083333, 0.153580, 15.750624, 15.897600 +1.100000, 0.179831, 15.750624, 15.897600 +1.116667, 0.206082, 15.750624, 15.897600 +1.133333, 0.232333, 15.750624, 15.897600 +1.150000, 0.258584, 15.750624, 15.897600 +1.166667, 0.284835, 15.750624, 15.897600 +1.183333, 0.311086, 15.750624, 15.897600 +1.200000, 0.337337, 15.750624, 15.897600 +1.216667, 0.363588, 15.750624, 15.897600 +1.233333, 0.389839, 15.750624, 15.897600 +1.250000, 0.416090, 15.750624, 15.897600 +1.266667, 0.442342, 15.750624, 15.897600 +1.283333, 0.468593, 15.750624, 15.897600 +1.300000, 0.494844, 15.750624, 15.897600 +1.316667, 0.521095, 15.750624, 15.897600 +1.333333, 0.547346, 15.750624, 15.897600 +1.350000, 0.573597, 15.750624, 15.897600 +1.366667, 0.599848, 15.750624, 15.897600 +1.383333, 0.626099, 15.750624, 15.897600 +1.400000, 0.652350, 15.750624, 15.897600 +1.416667, 0.678601, 15.750624, 15.897600 +1.433333, 0.704852, 15.750624, 15.897600 +1.450000, 0.731103, 15.750624, 15.897600 +1.466667, 0.757354, 15.750624, 15.897600 +1.483333, 0.783605, 15.750624, 15.897600 +1.500000, 0.809856, 15.750624, 15.897600 +1.516667, 0.836107, 15.750624, 15.897600 +1.533333, 0.862358, 15.750624, 15.897600 +1.550000, 0.888609, 15.750624, 15.897600 +1.566667, 0.914860, 15.750624, 15.897600 +1.583333, 0.941111, 15.750624, 15.897600 +1.600000, 0.967362, 15.750624, 15.897600 +1.616667, 0.993613, 15.750624, 15.897600 +1.633333, 1.019864, 15.750624, 15.897600 +1.650000, 1.046115, 15.750624, 15.897600 +1.666667, 1.072366, 15.750624, 15.897600 +1.683333, 1.098617, 15.750624, 15.897600 +1.700000, 1.124869, 15.750624, 15.897600 +1.716667, 1.151120, 15.750624, 15.897600 +1.733333, 1.177371, 15.750624, 15.897600 +1.750000, 1.203622, 15.750624, 15.897600 +1.766667, 1.229873, 15.750624, 15.897600 +1.783333, 1.256124, 15.750624, 15.897600 +1.800000, 1.282375, 15.750624, 15.897600 +1.816667, 1.308626, 15.750624, 15.897600 +1.833333, 1.334877, 15.750624, 15.897600 +1.850000, 1.361128, 15.750624, 15.897600 +1.866667, 1.387379, 15.750624, 15.897600 +1.883333, 1.413630, 15.750624, 15.897600 +1.900000, 1.439881, 15.750624, 15.897600 +1.916667, 1.466132, 15.750624, 15.897600 +1.933333, 1.492383, 15.750624, 15.897600 +1.950000, 1.518634, 15.750624, 15.897600 +1.966667, 1.544885, 15.750624, 15.897600 +1.983333, 1.571136, 15.750624, 15.897600 +2.000000, 1.597387, 15.750624, 15.897600 +2.016667, 1.623638, 15.750624, 15.897600 +2.033333, 1.649889, 15.750624, 15.897600 +2.050000, 1.676140, 15.750624, 15.897600 +2.066667, 1.702391, 15.750624, 15.897600 +2.083333, 1.728642, 15.750624, 15.897600 +2.100000, 1.754893, 15.750624, 15.897600 +2.116667, 1.781145, 15.750624, 15.897600 +2.133333, 1.807396, 15.750624, 15.897600 +2.150000, 1.833647, 15.750624, 15.897600 +2.166667, 1.859898, 15.750624, 15.897600 +2.183333, 1.886149, 15.750624, 15.897600 +2.200000, 1.912400, 15.750624, 15.897600 +2.216667, 1.938651, 15.750624, 15.897600 +2.233333, 1.964902, 15.750624, 15.897600 +2.250000, 1.991153, 15.750624, 15.897600 +2.266667, 2.017404, 15.750624, 15.897600 +2.283333, 2.043655, 15.750624, 15.897600 +2.300000, 2.069906, 15.750624, 15.897600 +2.316667, 2.096157, 15.750624, 15.897600 +2.333333, 2.122408, 15.750624, 15.897600 +2.350000, 2.148659, 15.750624, 15.897600 +2.366667, 2.174910, 15.750624, 15.897600 +2.383333, 2.201161, 15.750624, 15.897600 +2.400000, 2.227412, 15.750624, 15.897600 +2.416667, 2.253663, 15.750624, 15.897600 +2.433333, 2.279914, 15.750624, 15.897600 +2.450000, 2.306165, 15.750624, 15.897600 +2.466667, 2.332416, 15.750624, 15.897600 +2.483333, 2.358667, 15.750624, 15.897600 +2.500000, 2.384918, 15.750624, 15.897600 +2.516667, 2.411169, 15.750624, 15.897600 +2.533333, 2.437421, 15.750624, 15.897600 +2.550000, 2.463672, 15.750624, 15.897600 +2.566667, 2.489923, 15.750624, 15.897600 +2.583333, 2.516174, 15.750624, 15.897600 +2.600000, 2.542425, 15.750624, 15.897600 +2.616667, 2.568676, 15.750624, 15.897600 +2.633333, 2.594927, 15.750624, 15.897600 +2.650000, 2.621178, 15.750624, 15.897600 +2.666667, 2.647429, 15.750624, 15.897600 +2.683333, 2.673680, 15.750624, 15.897600 +2.700000, 2.699931, 15.750624, 15.897600 +2.716667, 2.726182, 15.750624, 15.897600 +2.733333, 2.752433, 15.750624, 15.897600 +2.750000, 2.778684, 15.750624, 15.897600 +2.766667, 2.804935, 15.750624, 15.897600 +2.783333, 2.831186, 15.750624, 15.897600 +2.800000, 2.857437, 15.750624, 15.897600 +2.816667, 2.883688, 15.750624, 15.897600 +2.833333, 2.909939, 15.750624, 15.897600 +2.850000, 2.936190, 15.750624, 15.897600 +2.866667, 2.962441, 15.750624, 15.897600 +2.883333, 2.988692, 15.750624, 15.897600 +2.900000, 3.014943, 15.750624, 15.897600 +2.916667, 3.041194, 15.750624, 15.897600 +2.933333, 3.067445, 15.750624, 15.897600 +2.950000, 3.093697, 15.750624, 15.897600 +2.966667, 3.119948, 15.750624, 15.897600 +2.983333, 3.146199, 15.750624, 15.897600 +3.000000, 3.172450, 15.750624, 15.897600 +3.016667, 3.198701, 15.750624, 15.897600 +3.033333, 3.224952, 15.750624, 15.897600 +3.050000, 3.251203, 15.750624, 15.897600 +3.066667, 3.277454, 15.750624, 15.897600 +3.083333, 3.303705, 15.750624, 15.897600 +3.100000, 3.329956, 15.750624, 15.897600 +3.116667, 3.356207, 15.750624, 15.897600 +3.133333, 3.382458, 15.750624, 15.897600 +3.150000, 3.408709, 15.750624, 15.897600 +3.166667, 3.434960, 15.750624, 15.897600 +3.183333, 3.461211, 15.750624, 15.897600 +3.200000, 3.487462, 15.750624, 15.897600 +3.216667, 3.513713, 15.750624, 15.897600 +3.233333, 3.539964, 15.750624, 15.897600 +3.250000, 3.566215, 15.750624, 15.897600 +3.266667, 3.592466, 15.750624, 15.897600 +3.283333, 3.618717, 15.750624, 15.897600 +3.300000, 3.644968, 15.750624, 15.897600 +3.316667, 3.671219, 15.750624, 15.897600 +3.333333, 3.697470, 15.750624, 15.897600 +3.350000, 3.723721, 15.750624, 15.897600 +3.366667, 3.749972, 15.750624, 15.897600 +3.383333, 3.776224, 15.750624, 15.897600 +3.400000, 3.802475, 15.750624, 15.897600 +3.416667, 3.828726, 15.750624, 15.897600 +3.433333, 3.854977, 15.750624, 15.897600 +3.450000, 3.881228, 15.750624, 15.897600 +3.466667, 3.907479, 15.750624, 15.897600 +3.483333, 3.933730, 15.750624, 15.897600 +3.500000, 3.959981, 15.750624, 15.897600 +3.516667, 3.986232, 15.750624, 15.897600 +3.533333, 4.012483, 15.750624, 15.897600 +3.550000, 4.038734, 15.750624, 15.897600 +3.566667, 4.064985, 15.750624, 15.897600 +3.583333, 4.091236, 15.750624, 15.897600 +3.600000, 4.117487, 15.750624, 15.897600 +3.616667, 4.143738, 15.750624, 15.897600 +3.633333, 4.169989, 15.750624, 15.897600 +3.650000, 4.196240, 15.750624, 15.897600 +3.666667, 4.222491, 15.750624, 15.897600 +3.683333, 4.248742, 15.750624, 15.897600 +3.700000, 4.274993, 15.750624, 15.897600 +3.716667, 4.301244, 15.750624, 15.897600 +3.733333, 4.327495, 15.750624, 15.897600 +3.750000, 4.353746, 15.750624, 15.897600 +3.766667, 4.379997, 15.750624, 15.897600 +3.783333, 4.406248, 15.750624, 15.897600 +3.800000, 4.432500, 15.750624, 15.897600 +3.816667, 4.458751, 15.750624, 15.897600 +3.833333, 4.485002, 15.750624, 15.897600 +3.850000, 4.511253, 15.750624, 15.897600 +3.866667, 4.537504, 15.750624, 15.897600 +3.883333, 4.563755, 15.750624, 15.897600 +3.900000, 4.590006, 15.750624, 15.897600 +3.916667, 4.616257, 15.750624, 15.897600 +3.933333, 4.642508, 15.750624, 15.897600 +3.950000, 4.668759, 15.750624, 15.897600 +3.966667, 4.695010, 15.750624, 15.897600 +3.983333, 4.721261, 15.750624, 15.897600 +4.000000, 4.747512, 15.750624, 15.897600 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/L2_7200_hd_300kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/L2_7200_hd_300kWh.csv new file mode 100644 index 0000000..799cb74 --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/L2_7200_hd_300kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.074403, 13.392625, 13.519743 +1.016667, 0.161889, 15.747445, 15.897600 +1.033333, 0.249375, 15.747445, 15.897600 +1.050000, 0.336861, 15.747445, 15.897600 +1.066667, 0.424347, 15.747445, 15.897600 +1.083333, 0.511833, 15.747445, 15.897600 +1.100000, 0.599318, 15.747445, 15.897600 +1.116667, 0.686804, 15.747445, 15.897600 +1.133333, 0.774290, 15.747445, 15.897600 +1.150000, 0.861776, 15.747445, 15.897600 +1.166667, 0.949262, 15.747445, 15.897600 +1.183333, 1.036747, 15.747445, 15.897600 +1.200000, 1.124233, 15.747445, 15.897600 +1.216667, 1.211719, 15.747445, 15.897600 +1.233333, 1.299205, 15.747445, 15.897600 +1.250000, 1.386691, 15.747445, 15.897600 +1.266667, 1.474176, 15.747445, 15.897600 +1.283333, 1.561662, 15.747445, 15.897600 +1.300000, 1.649148, 15.747445, 15.897600 +1.316667, 1.736634, 15.747445, 15.897600 +1.333333, 1.824120, 15.747445, 15.897600 +1.350000, 1.911605, 15.747445, 15.897600 +1.366667, 1.999091, 15.747445, 15.897600 +1.383333, 2.086577, 15.747445, 15.897600 +1.400000, 2.174063, 15.747445, 15.897600 +1.416667, 2.261549, 15.747445, 15.897600 +1.433333, 2.349034, 15.747445, 15.897600 +1.450000, 2.436520, 15.747445, 15.897600 +1.466667, 2.524006, 15.747445, 15.897600 +1.483333, 2.611492, 15.747445, 15.897600 +1.500000, 2.698978, 15.747445, 15.897600 +1.516667, 2.786464, 15.747445, 15.897600 +1.533333, 2.873949, 15.747445, 15.897600 +1.550000, 2.961435, 15.747445, 15.897600 +1.566667, 3.048921, 15.747445, 15.897600 +1.583333, 3.136407, 15.747445, 15.897600 +1.600000, 3.223893, 15.747445, 15.897600 +1.616667, 3.311378, 15.747445, 15.897600 +1.633333, 3.398864, 15.747445, 15.897600 +1.650000, 3.486350, 15.747445, 15.897600 +1.666667, 3.573836, 15.747445, 15.897600 +1.683333, 3.661322, 15.747445, 15.897600 +1.700000, 3.748807, 15.747445, 15.897600 +1.716667, 3.836293, 15.747445, 15.897600 +1.733333, 3.923779, 15.747445, 15.897600 +1.750000, 4.011265, 15.747445, 15.897600 +1.766667, 4.098751, 15.747445, 15.897600 +1.783333, 4.186236, 15.747445, 15.897600 +1.800000, 4.273722, 15.747445, 15.897600 +1.816667, 4.361208, 15.747445, 15.897600 +1.833333, 4.448694, 15.747445, 15.897600 +1.850000, 4.536180, 15.747445, 15.897600 +1.866667, 4.623665, 15.747445, 15.897600 +1.883333, 4.711151, 15.747445, 15.897600 +1.900000, 4.798637, 15.747445, 15.897600 +1.916667, 4.886123, 15.747445, 15.897600 +1.933333, 4.973609, 15.747445, 15.897600 +1.950000, 5.061095, 15.747445, 15.897600 +1.966667, 5.148580, 15.747445, 15.897600 +1.983333, 5.236066, 15.747445, 15.897600 +2.000000, 5.323552, 15.747445, 15.897600 +2.016667, 5.411038, 15.747445, 15.897600 +2.033333, 5.498524, 15.747445, 15.897600 +2.050000, 5.586009, 15.747445, 15.897600 +2.066667, 5.673495, 15.747445, 15.897600 +2.083333, 5.760981, 15.747445, 15.897600 +2.100000, 5.848467, 15.747445, 15.897600 +2.116667, 5.935953, 15.747445, 15.897600 +2.133333, 6.023438, 15.747445, 15.897600 +2.150000, 6.110924, 15.747445, 15.897600 +2.166667, 6.198410, 15.747445, 15.897600 +2.183333, 6.285896, 15.747445, 15.897600 +2.200000, 6.373382, 15.747445, 15.897600 +2.216667, 6.460867, 15.747445, 15.897600 +2.233333, 6.548353, 15.747445, 15.897600 +2.250000, 6.635839, 15.747445, 15.897600 +2.266667, 6.723325, 15.747445, 15.897600 +2.283333, 6.810811, 15.747445, 15.897600 +2.300000, 6.898296, 15.747445, 15.897600 +2.316667, 6.985782, 15.747445, 15.897600 +2.333333, 7.073268, 15.747445, 15.897600 +2.350000, 7.160754, 15.747445, 15.897600 +2.366667, 7.248240, 15.747445, 15.897600 +2.383333, 7.335726, 15.747445, 15.897600 +2.400000, 7.423211, 15.747445, 15.897600 +2.416667, 7.510697, 15.747445, 15.897600 +2.433333, 7.598183, 15.747445, 15.897600 +2.450000, 7.685669, 15.747445, 15.897600 +2.466667, 7.773155, 15.747445, 15.897600 +2.483333, 7.860640, 15.747445, 15.897600 +2.500000, 7.948126, 15.747445, 15.897600 +2.516667, 8.035612, 15.747445, 15.897600 +2.533333, 8.123098, 15.747445, 15.897600 +2.550000, 8.210584, 15.747445, 15.897600 +2.566667, 8.298069, 15.747445, 15.897600 +2.583333, 8.385555, 15.747445, 15.897600 +2.600000, 8.473041, 15.747445, 15.897600 +2.616667, 8.560527, 15.747445, 15.897600 +2.633333, 8.648013, 15.747445, 15.897600 +2.650000, 8.735498, 15.747445, 15.897600 +2.666667, 8.822984, 15.747445, 15.897600 +2.683333, 8.910470, 15.747445, 15.897600 +2.700000, 8.997956, 15.747445, 15.897600 +2.716667, 9.085442, 15.747445, 15.897600 +2.733333, 9.172927, 15.747445, 15.897600 +2.750000, 9.260413, 15.747445, 15.897600 +2.766667, 9.347899, 15.747445, 15.897600 +2.783333, 9.435385, 15.747445, 15.897600 +2.800000, 9.522871, 15.747445, 15.897600 +2.816667, 9.610357, 15.747445, 15.897600 +2.833333, 9.697842, 15.747445, 15.897600 +2.850000, 9.785328, 15.747445, 15.897600 +2.866667, 9.872814, 15.747445, 15.897600 +2.883333, 9.960300, 15.747445, 15.897600 +2.900000, 10.047786, 15.747445, 15.897600 +2.916667, 10.135271, 15.747445, 15.897600 +2.933333, 10.222757, 15.747445, 15.897600 +2.950000, 10.310243, 15.747445, 15.897600 +2.966667, 10.397729, 15.747445, 15.897600 +2.983333, 10.485215, 15.747445, 15.897600 +3.000000, 10.572700, 15.747445, 15.897600 +3.016667, 10.660186, 15.747445, 15.897600 +3.033333, 10.747672, 15.747445, 15.897600 +3.050000, 10.835158, 15.747445, 15.897600 +3.066667, 10.922644, 15.747445, 15.897600 +3.083333, 11.010129, 15.747445, 15.897600 +3.100000, 11.097615, 15.747445, 15.897600 +3.116667, 11.185101, 15.747445, 15.897600 +3.133333, 11.272587, 15.747445, 15.897600 +3.150000, 11.360073, 15.747445, 15.897600 +3.166667, 11.447558, 15.747445, 15.897600 +3.183333, 11.535044, 15.747445, 15.897600 +3.200000, 11.622530, 15.747445, 15.897600 +3.216667, 11.710016, 15.747445, 15.897600 +3.233333, 11.797502, 15.747445, 15.897600 +3.250000, 11.884988, 15.747445, 15.897600 +3.266667, 11.972473, 15.747445, 15.897600 +3.283333, 12.059959, 15.747445, 15.897600 +3.300000, 12.147445, 15.747445, 15.897600 +3.316667, 12.234931, 15.747445, 15.897600 +3.333333, 12.322417, 15.747445, 15.897600 +3.350000, 12.409902, 15.747445, 15.897600 +3.366667, 12.497388, 15.747445, 15.897600 +3.383333, 12.584874, 15.747445, 15.897600 +3.400000, 12.672360, 15.747445, 15.897600 +3.416667, 12.759846, 15.747445, 15.897600 +3.433333, 12.847331, 15.747445, 15.897600 +3.450000, 12.934817, 15.747445, 15.897600 +3.466667, 13.022303, 15.747445, 15.897600 +3.483333, 13.109789, 15.747445, 15.897600 +3.500000, 13.197275, 15.747445, 15.897600 +3.516667, 13.284760, 15.747445, 15.897600 +3.533333, 13.372246, 15.747445, 15.897600 +3.550000, 13.459732, 15.747445, 15.897600 +3.566667, 13.547218, 15.747445, 15.897600 +3.583333, 13.634704, 15.747445, 15.897600 +3.600000, 13.722189, 15.747445, 15.897600 +3.616667, 13.809675, 15.747445, 15.897600 +3.633333, 13.897161, 15.747445, 15.897600 +3.650000, 13.984647, 15.747445, 15.897600 +3.666667, 14.072133, 15.747445, 15.897600 +3.683333, 14.159619, 15.747445, 15.897600 +3.700000, 14.247104, 15.747445, 15.897600 +3.716667, 14.334590, 15.747445, 15.897600 +3.733333, 14.422076, 15.747445, 15.897600 +3.750000, 14.509562, 15.747445, 15.897600 +3.766667, 14.597048, 15.747445, 15.897600 +3.783333, 14.684533, 15.747445, 15.897600 +3.800000, 14.772019, 15.747445, 15.897600 +3.816667, 14.859505, 15.747445, 15.897600 +3.833333, 14.946991, 15.747445, 15.897600 +3.850000, 15.034477, 15.747445, 15.897600 +3.866667, 15.121962, 15.747445, 15.897600 +3.883333, 15.209448, 15.747445, 15.897600 +3.900000, 15.296934, 15.747445, 15.897600 +3.916667, 15.384420, 15.747445, 15.897600 +3.933333, 15.471906, 15.747445, 15.897600 +3.950000, 15.559391, 15.747445, 15.897600 +3.966667, 15.646877, 15.747445, 15.897600 +3.983333, 15.734363, 15.747445, 15.897600 +4.000000, 15.821849, 15.747445, 15.897600 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/L2_7200_hd_400kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/L2_7200_hd_400kWh.csv new file mode 100644 index 0000000..b8dc6e6 --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/L2_7200_hd_400kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.055806, 13.393446, 13.519743 +1.016667, 0.121425, 15.748581, 15.897600 +1.033333, 0.187044, 15.748581, 15.897600 +1.050000, 0.252663, 15.748581, 15.897600 +1.066667, 0.318282, 15.748581, 15.897600 +1.083333, 0.383901, 15.748581, 15.897600 +1.100000, 0.449521, 15.748581, 15.897600 +1.116667, 0.515140, 15.748581, 15.897600 +1.133333, 0.580759, 15.748581, 15.897600 +1.150000, 0.646378, 15.748581, 15.897600 +1.166667, 0.711997, 15.748581, 15.897600 +1.183333, 0.777616, 15.748581, 15.897600 +1.200000, 0.843235, 15.748581, 15.897600 +1.216667, 0.908854, 15.748581, 15.897600 +1.233333, 0.974473, 15.748581, 15.897600 +1.250000, 1.040092, 15.748581, 15.897600 +1.266667, 1.105711, 15.748581, 15.897600 +1.283333, 1.171330, 15.748581, 15.897600 +1.300000, 1.236950, 15.748581, 15.897600 +1.316667, 1.302569, 15.748581, 15.897600 +1.333333, 1.368188, 15.748581, 15.897600 +1.350000, 1.433807, 15.748581, 15.897600 +1.366667, 1.499426, 15.748581, 15.897600 +1.383333, 1.565045, 15.748581, 15.897600 +1.400000, 1.630664, 15.748581, 15.897600 +1.416667, 1.696283, 15.748581, 15.897600 +1.433333, 1.761902, 15.748581, 15.897600 +1.450000, 1.827521, 15.748581, 15.897600 +1.466667, 1.893140, 15.748581, 15.897600 +1.483333, 1.958760, 15.748581, 15.897600 +1.500000, 2.024379, 15.748581, 15.897600 +1.516667, 2.089998, 15.748581, 15.897600 +1.533333, 2.155617, 15.748581, 15.897600 +1.550000, 2.221236, 15.748581, 15.897600 +1.566667, 2.286855, 15.748581, 15.897600 +1.583333, 2.352474, 15.748581, 15.897600 +1.600000, 2.418093, 15.748581, 15.897600 +1.616667, 2.483712, 15.748581, 15.897600 +1.633333, 2.549331, 15.748581, 15.897600 +1.650000, 2.614950, 15.748581, 15.897600 +1.666667, 2.680569, 15.748581, 15.897600 +1.683333, 2.746189, 15.748581, 15.897600 +1.700000, 2.811808, 15.748581, 15.897600 +1.716667, 2.877427, 15.748581, 15.897600 +1.733333, 2.943046, 15.748581, 15.897600 +1.750000, 3.008665, 15.748581, 15.897600 +1.766667, 3.074284, 15.748581, 15.897600 +1.783333, 3.139903, 15.748581, 15.897600 +1.800000, 3.205522, 15.748581, 15.897600 +1.816667, 3.271141, 15.748581, 15.897600 +1.833333, 3.336760, 15.748581, 15.897600 +1.850000, 3.402379, 15.748581, 15.897600 +1.866667, 3.467998, 15.748581, 15.897600 +1.883333, 3.533618, 15.748581, 15.897600 +1.900000, 3.599237, 15.748581, 15.897600 +1.916667, 3.664856, 15.748581, 15.897600 +1.933333, 3.730475, 15.748581, 15.897600 +1.950000, 3.796094, 15.748581, 15.897600 +1.966667, 3.861713, 15.748581, 15.897600 +1.983333, 3.927332, 15.748581, 15.897600 +2.000000, 3.992951, 15.748581, 15.897600 +2.016667, 4.058570, 15.748581, 15.897600 +2.033333, 4.124189, 15.748581, 15.897600 +2.050000, 4.189808, 15.748581, 15.897600 +2.066667, 4.255428, 15.748581, 15.897600 +2.083333, 4.321047, 15.748581, 15.897600 +2.100000, 4.386666, 15.748581, 15.897600 +2.116667, 4.452285, 15.748581, 15.897600 +2.133333, 4.517904, 15.748581, 15.897600 +2.150000, 4.583523, 15.748581, 15.897600 +2.166667, 4.649142, 15.748581, 15.897600 +2.183333, 4.714761, 15.748581, 15.897600 +2.200000, 4.780380, 15.748581, 15.897600 +2.216667, 4.845999, 15.748581, 15.897600 +2.233333, 4.911618, 15.748581, 15.897600 +2.250000, 4.977237, 15.748581, 15.897600 +2.266667, 5.042857, 15.748581, 15.897600 +2.283333, 5.108476, 15.748581, 15.897600 +2.300000, 5.174095, 15.748581, 15.897600 +2.316667, 5.239714, 15.748581, 15.897600 +2.333333, 5.305333, 15.748581, 15.897600 +2.350000, 5.370952, 15.748581, 15.897600 +2.366667, 5.436571, 15.748581, 15.897600 +2.383333, 5.502190, 15.748581, 15.897600 +2.400000, 5.567809, 15.748581, 15.897600 +2.416667, 5.633428, 15.748581, 15.897600 +2.433333, 5.699047, 15.748581, 15.897600 +2.450000, 5.764666, 15.748581, 15.897600 +2.466667, 5.830286, 15.748581, 15.897600 +2.483333, 5.895905, 15.748581, 15.897600 +2.500000, 5.961524, 15.748581, 15.897600 +2.516667, 6.027143, 15.748581, 15.897600 +2.533333, 6.092762, 15.748581, 15.897600 +2.550000, 6.158381, 15.748581, 15.897600 +2.566667, 6.224000, 15.748581, 15.897600 +2.583333, 6.289619, 15.748581, 15.897600 +2.600000, 6.355238, 15.748581, 15.897600 +2.616667, 6.420857, 15.748581, 15.897600 +2.633333, 6.486476, 15.748581, 15.897600 +2.650000, 6.552095, 15.748581, 15.897600 +2.666667, 6.617715, 15.748581, 15.897600 +2.683333, 6.683334, 15.748581, 15.897600 +2.700000, 6.748953, 15.748581, 15.897600 +2.716667, 6.814572, 15.748581, 15.897600 +2.733333, 6.880191, 15.748581, 15.897600 +2.750000, 6.945810, 15.748581, 15.897600 +2.766667, 7.011429, 15.748581, 15.897600 +2.783333, 7.077048, 15.748581, 15.897600 +2.800000, 7.142667, 15.748581, 15.897600 +2.816667, 7.208286, 15.748581, 15.897600 +2.833333, 7.273905, 15.748581, 15.897600 +2.850000, 7.339525, 15.748581, 15.897600 +2.866667, 7.405144, 15.748581, 15.897600 +2.883333, 7.470763, 15.748581, 15.897600 +2.900000, 7.536382, 15.748581, 15.897600 +2.916667, 7.602001, 15.748581, 15.897600 +2.933333, 7.667620, 15.748581, 15.897600 +2.950000, 7.733239, 15.748581, 15.897600 +2.966667, 7.798858, 15.748581, 15.897600 +2.983333, 7.864477, 15.748581, 15.897600 +3.000000, 7.930096, 15.748581, 15.897600 +3.016667, 7.995715, 15.748581, 15.897600 +3.033333, 8.061334, 15.748581, 15.897600 +3.050000, 8.126954, 15.748581, 15.897600 +3.066667, 8.192573, 15.748581, 15.897600 +3.083333, 8.258192, 15.748581, 15.897600 +3.100000, 8.323811, 15.748581, 15.897600 +3.116667, 8.389430, 15.748581, 15.897600 +3.133333, 8.455049, 15.748581, 15.897600 +3.150000, 8.520668, 15.748581, 15.897600 +3.166667, 8.586287, 15.748581, 15.897600 +3.183333, 8.651906, 15.748581, 15.897600 +3.200000, 8.717525, 15.748581, 15.897600 +3.216667, 8.783144, 15.748581, 15.897600 +3.233333, 8.848763, 15.748581, 15.897600 +3.250000, 8.914383, 15.748581, 15.897600 +3.266667, 8.980002, 15.748581, 15.897600 +3.283333, 9.045621, 15.748581, 15.897600 +3.300000, 9.111240, 15.748581, 15.897600 +3.316667, 9.176859, 15.748581, 15.897600 +3.333333, 9.242478, 15.748581, 15.897600 +3.350000, 9.308097, 15.748581, 15.897600 +3.366667, 9.373716, 15.748581, 15.897600 +3.383333, 9.439335, 15.748581, 15.897600 +3.400000, 9.504954, 15.748581, 15.897600 +3.416667, 9.570573, 15.748581, 15.897600 +3.433333, 9.636193, 15.748581, 15.897600 +3.450000, 9.701812, 15.748581, 15.897600 +3.466667, 9.767431, 15.748581, 15.897600 +3.483333, 9.833050, 15.748581, 15.897600 +3.500000, 9.898669, 15.748581, 15.897600 +3.516667, 9.964288, 15.748581, 15.897600 +3.533333, 10.029907, 15.748581, 15.897600 +3.550000, 10.095526, 15.748581, 15.897600 +3.566667, 10.161145, 15.748581, 15.897600 +3.583333, 10.226764, 15.748581, 15.897600 +3.600000, 10.292383, 15.748581, 15.897600 +3.616667, 10.358002, 15.748581, 15.897600 +3.633333, 10.423622, 15.748581, 15.897600 +3.650000, 10.489241, 15.748581, 15.897600 +3.666667, 10.554860, 15.748581, 15.897600 +3.683333, 10.620479, 15.748581, 15.897600 +3.700000, 10.686098, 15.748581, 15.897600 +3.716667, 10.751717, 15.748581, 15.897600 +3.733333, 10.817336, 15.748581, 15.897600 +3.750000, 10.882955, 15.748581, 15.897600 +3.766667, 10.948574, 15.748581, 15.897600 +3.783333, 11.014193, 15.748581, 15.897600 +3.800000, 11.079812, 15.748581, 15.897600 +3.816667, 11.145431, 15.748581, 15.897600 +3.833333, 11.211051, 15.748581, 15.897600 +3.850000, 11.276670, 15.748581, 15.897600 +3.866667, 11.342289, 15.748581, 15.897600 +3.883333, 11.407908, 15.748581, 15.897600 +3.900000, 11.473527, 15.748581, 15.897600 +3.916667, 11.539146, 15.748581, 15.897600 +3.933333, 11.604765, 15.748581, 15.897600 +3.950000, 11.670384, 15.748581, 15.897600 +3.966667, 11.736003, 15.748581, 15.897600 +3.983333, 11.801622, 15.748581, 15.897600 +4.000000, 11.867241, 15.748581, 15.897600 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/L2_7200_hd_600kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/L2_7200_hd_600kWh.csv new file mode 100644 index 0000000..f075ffb --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/L2_7200_hd_600kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.037206, 13.394267, 13.519743 +1.016667, 0.080956, 15.749716, 15.897600 +1.033333, 0.124705, 15.749716, 15.897600 +1.050000, 0.168454, 15.749716, 15.897600 +1.066667, 0.212203, 15.749716, 15.897600 +1.083333, 0.255952, 15.749716, 15.897600 +1.100000, 0.299702, 15.749716, 15.897600 +1.116667, 0.343451, 15.749716, 15.897600 +1.133333, 0.387200, 15.749716, 15.897600 +1.150000, 0.430949, 15.749716, 15.897600 +1.166667, 0.474698, 15.749716, 15.897600 +1.183333, 0.518448, 15.749716, 15.897600 +1.200000, 0.562197, 15.749716, 15.897600 +1.216667, 0.605946, 15.749716, 15.897600 +1.233333, 0.649695, 15.749716, 15.897600 +1.250000, 0.693444, 15.749716, 15.897600 +1.266667, 0.737194, 15.749716, 15.897600 +1.283333, 0.780943, 15.749716, 15.897600 +1.300000, 0.824692, 15.749716, 15.897600 +1.316667, 0.868441, 15.749716, 15.897600 +1.333333, 0.912191, 15.749716, 15.897600 +1.350000, 0.955940, 15.749716, 15.897600 +1.366667, 0.999689, 15.749716, 15.897600 +1.383333, 1.043438, 15.749716, 15.897600 +1.400000, 1.087187, 15.749716, 15.897600 +1.416667, 1.130937, 15.749716, 15.897600 +1.433333, 1.174686, 15.749716, 15.897600 +1.450000, 1.218435, 15.749716, 15.897600 +1.466667, 1.262184, 15.749716, 15.897600 +1.483333, 1.305933, 15.749716, 15.897600 +1.500000, 1.349683, 15.749716, 15.897600 +1.516667, 1.393432, 15.749716, 15.897600 +1.533333, 1.437181, 15.749716, 15.897600 +1.550000, 1.480930, 15.749716, 15.897600 +1.566667, 1.524679, 15.749716, 15.897600 +1.583333, 1.568429, 15.749716, 15.897600 +1.600000, 1.612178, 15.749716, 15.897600 +1.616667, 1.655927, 15.749716, 15.897600 +1.633333, 1.699676, 15.749716, 15.897600 +1.650000, 1.743425, 15.749716, 15.897600 +1.666667, 1.787175, 15.749716, 15.897600 +1.683333, 1.830924, 15.749716, 15.897600 +1.700000, 1.874673, 15.749716, 15.897600 +1.716667, 1.918422, 15.749716, 15.897600 +1.733333, 1.962172, 15.749716, 15.897600 +1.750000, 2.005921, 15.749716, 15.897600 +1.766667, 2.049670, 15.749716, 15.897600 +1.783333, 2.093419, 15.749716, 15.897600 +1.800000, 2.137168, 15.749716, 15.897600 +1.816667, 2.180918, 15.749716, 15.897600 +1.833333, 2.224667, 15.749716, 15.897600 +1.850000, 2.268416, 15.749716, 15.897600 +1.866667, 2.312165, 15.749716, 15.897600 +1.883333, 2.355914, 15.749716, 15.897600 +1.900000, 2.399664, 15.749716, 15.897600 +1.916667, 2.443413, 15.749716, 15.897600 +1.933333, 2.487162, 15.749716, 15.897600 +1.950000, 2.530911, 15.749716, 15.897600 +1.966667, 2.574660, 15.749716, 15.897600 +1.983333, 2.618410, 15.749716, 15.897600 +2.000000, 2.662159, 15.749716, 15.897600 +2.016667, 2.705908, 15.749716, 15.897600 +2.033333, 2.749657, 15.749716, 15.897600 +2.050000, 2.793407, 15.749716, 15.897600 +2.066667, 2.837156, 15.749716, 15.897600 +2.083333, 2.880905, 15.749716, 15.897600 +2.100000, 2.924654, 15.749716, 15.897600 +2.116667, 2.968403, 15.749716, 15.897600 +2.133333, 3.012153, 15.749716, 15.897600 +2.150000, 3.055902, 15.749716, 15.897600 +2.166667, 3.099651, 15.749716, 15.897600 +2.183333, 3.143400, 15.749716, 15.897600 +2.200000, 3.187149, 15.749716, 15.897600 +2.216667, 3.230899, 15.749716, 15.897600 +2.233333, 3.274648, 15.749716, 15.897600 +2.250000, 3.318397, 15.749716, 15.897600 +2.266667, 3.362146, 15.749716, 15.897600 +2.283333, 3.405895, 15.749716, 15.897600 +2.300000, 3.449645, 15.749716, 15.897600 +2.316667, 3.493394, 15.749716, 15.897600 +2.333333, 3.537143, 15.749716, 15.897600 +2.350000, 3.580892, 15.749716, 15.897600 +2.366667, 3.624642, 15.749716, 15.897600 +2.383333, 3.668391, 15.749716, 15.897600 +2.400000, 3.712140, 15.749716, 15.897600 +2.416667, 3.755889, 15.749716, 15.897600 +2.433333, 3.799638, 15.749716, 15.897600 +2.450000, 3.843388, 15.749716, 15.897600 +2.466667, 3.887137, 15.749716, 15.897600 +2.483333, 3.930886, 15.749716, 15.897600 +2.500000, 3.974635, 15.749716, 15.897600 +2.516667, 4.018384, 15.749716, 15.897600 +2.533333, 4.062134, 15.749716, 15.897600 +2.550000, 4.105883, 15.749716, 15.897600 +2.566667, 4.149632, 15.749716, 15.897600 +2.583333, 4.193381, 15.749716, 15.897600 +2.600000, 4.237130, 15.749716, 15.897600 +2.616667, 4.280880, 15.749716, 15.897600 +2.633333, 4.324629, 15.749716, 15.897600 +2.650000, 4.368378, 15.749716, 15.897600 +2.666667, 4.412127, 15.749716, 15.897600 +2.683333, 4.455877, 15.749716, 15.897600 +2.700000, 4.499626, 15.749716, 15.897600 +2.716667, 4.543375, 15.749716, 15.897600 +2.733333, 4.587124, 15.749716, 15.897600 +2.750000, 4.630873, 15.749716, 15.897600 +2.766667, 4.674623, 15.749716, 15.897600 +2.783333, 4.718372, 15.749716, 15.897600 +2.800000, 4.762121, 15.749716, 15.897600 +2.816667, 4.805870, 15.749716, 15.897600 +2.833333, 4.849619, 15.749716, 15.897600 +2.850000, 4.893369, 15.749716, 15.897600 +2.866667, 4.937118, 15.749716, 15.897600 +2.883333, 4.980867, 15.749716, 15.897600 +2.900000, 5.024616, 15.749716, 15.897600 +2.916667, 5.068365, 15.749716, 15.897600 +2.933333, 5.112115, 15.749716, 15.897600 +2.950000, 5.155864, 15.749716, 15.897600 +2.966667, 5.199613, 15.749716, 15.897600 +2.983333, 5.243362, 15.749716, 15.897600 +3.000000, 5.287112, 15.749716, 15.897600 +3.016667, 5.330861, 15.749716, 15.897600 +3.033333, 5.374610, 15.749716, 15.897600 +3.050000, 5.418359, 15.749716, 15.897600 +3.066667, 5.462108, 15.749716, 15.897600 +3.083333, 5.505858, 15.749716, 15.897600 +3.100000, 5.549607, 15.749716, 15.897600 +3.116667, 5.593356, 15.749716, 15.897600 +3.133333, 5.637105, 15.749716, 15.897600 +3.150000, 5.680854, 15.749716, 15.897600 +3.166667, 5.724604, 15.749716, 15.897600 +3.183333, 5.768353, 15.749716, 15.897600 +3.200000, 5.812102, 15.749716, 15.897600 +3.216667, 5.855851, 15.749716, 15.897600 +3.233333, 5.899600, 15.749716, 15.897600 +3.250000, 5.943350, 15.749716, 15.897600 +3.266667, 5.987099, 15.749716, 15.897600 +3.283333, 6.030848, 15.749716, 15.897600 +3.300000, 6.074597, 15.749716, 15.897600 +3.316667, 6.118347, 15.749716, 15.897600 +3.333333, 6.162096, 15.749716, 15.897600 +3.350000, 6.205845, 15.749716, 15.897600 +3.366667, 6.249594, 15.749716, 15.897600 +3.383333, 6.293343, 15.749716, 15.897600 +3.400000, 6.337093, 15.749716, 15.897600 +3.416667, 6.380842, 15.749716, 15.897600 +3.433333, 6.424591, 15.749716, 15.897600 +3.450000, 6.468340, 15.749716, 15.897600 +3.466667, 6.512089, 15.749716, 15.897600 +3.483333, 6.555839, 15.749716, 15.897600 +3.500000, 6.599588, 15.749716, 15.897600 +3.516667, 6.643337, 15.749716, 15.897600 +3.533333, 6.687086, 15.749716, 15.897600 +3.550000, 6.730835, 15.749716, 15.897600 +3.566667, 6.774585, 15.749716, 15.897600 +3.583333, 6.818334, 15.749716, 15.897600 +3.600000, 6.862083, 15.749716, 15.897600 +3.616667, 6.905832, 15.749716, 15.897600 +3.633333, 6.949582, 15.749716, 15.897600 +3.650000, 6.993331, 15.749716, 15.897600 +3.666667, 7.037080, 15.749716, 15.897600 +3.683333, 7.080829, 15.749716, 15.897600 +3.700000, 7.124578, 15.749716, 15.897600 +3.716667, 7.168328, 15.749716, 15.897600 +3.733333, 7.212077, 15.749716, 15.897600 +3.750000, 7.255826, 15.749716, 15.897600 +3.766667, 7.299575, 15.749716, 15.897600 +3.783333, 7.343324, 15.749716, 15.897600 +3.800000, 7.387074, 15.749716, 15.897600 +3.816667, 7.430823, 15.749716, 15.897600 +3.833333, 7.474572, 15.749716, 15.897600 +3.850000, 7.518321, 15.749716, 15.897600 +3.866667, 7.562070, 15.749716, 15.897600 +3.883333, 7.605820, 15.749716, 15.897600 +3.900000, 7.649569, 15.749716, 15.897600 +3.916667, 7.693318, 15.749716, 15.897600 +3.933333, 7.737067, 15.749716, 15.897600 +3.950000, 7.780817, 15.749716, 15.897600 +3.966667, 7.824566, 15.749716, 15.897600 +3.983333, 7.868315, 15.749716, 15.897600 +4.000000, 7.912064, 15.749716, 15.897600 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/L2_7200_hd_800kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/L2_7200_hd_800kWh.csv new file mode 100644 index 0000000..05d09c2 --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/L2_7200_hd_800kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.027906, 13.394677, 13.519743 +1.016667, 0.060719, 15.750283, 15.897600 +1.033333, 0.093532, 15.750283, 15.897600 +1.050000, 0.126345, 15.750283, 15.897600 +1.066667, 0.159158, 15.750283, 15.897600 +1.083333, 0.191971, 15.750283, 15.897600 +1.100000, 0.224784, 15.750283, 15.897600 +1.116667, 0.257597, 15.750283, 15.897600 +1.133333, 0.290410, 15.750283, 15.897600 +1.150000, 0.323223, 15.750283, 15.897600 +1.166667, 0.356036, 15.750283, 15.897600 +1.183333, 0.388850, 15.750283, 15.897600 +1.200000, 0.421663, 15.750283, 15.897600 +1.216667, 0.454476, 15.750283, 15.897600 +1.233333, 0.487289, 15.750283, 15.897600 +1.250000, 0.520102, 15.750283, 15.897600 +1.266667, 0.552915, 15.750283, 15.897600 +1.283333, 0.585728, 15.750283, 15.897600 +1.300000, 0.618541, 15.750283, 15.897600 +1.316667, 0.651354, 15.750283, 15.897600 +1.333333, 0.684167, 15.750283, 15.897600 +1.350000, 0.716980, 15.750283, 15.897600 +1.366667, 0.749794, 15.750283, 15.897600 +1.383333, 0.782607, 15.750283, 15.897600 +1.400000, 0.815420, 15.750283, 15.897600 +1.416667, 0.848233, 15.750283, 15.897600 +1.433333, 0.881046, 15.750283, 15.897600 +1.450000, 0.913859, 15.750283, 15.897600 +1.466667, 0.946672, 15.750283, 15.897600 +1.483333, 0.979485, 15.750283, 15.897600 +1.500000, 1.012298, 15.750283, 15.897600 +1.516667, 1.045111, 15.750283, 15.897600 +1.533333, 1.077924, 15.750283, 15.897600 +1.550000, 1.110738, 15.750283, 15.897600 +1.566667, 1.143551, 15.750283, 15.897600 +1.583333, 1.176364, 15.750283, 15.897600 +1.600000, 1.209177, 15.750283, 15.897600 +1.616667, 1.241990, 15.750283, 15.897600 +1.633333, 1.274803, 15.750283, 15.897600 +1.650000, 1.307616, 15.750283, 15.897600 +1.666667, 1.340429, 15.750283, 15.897600 +1.683333, 1.373242, 15.750283, 15.897600 +1.700000, 1.406055, 15.750283, 15.897600 +1.716667, 1.438868, 15.750283, 15.897600 +1.733333, 1.471682, 15.750283, 15.897600 +1.750000, 1.504495, 15.750283, 15.897600 +1.766667, 1.537308, 15.750283, 15.897600 +1.783333, 1.570121, 15.750283, 15.897600 +1.800000, 1.602934, 15.750283, 15.897600 +1.816667, 1.635747, 15.750283, 15.897600 +1.833333, 1.668560, 15.750283, 15.897600 +1.850000, 1.701373, 15.750283, 15.897600 +1.866667, 1.734186, 15.750283, 15.897600 +1.883333, 1.766999, 15.750283, 15.897600 +1.900000, 1.799812, 15.750283, 15.897600 +1.916667, 1.832626, 15.750283, 15.897600 +1.933333, 1.865439, 15.750283, 15.897600 +1.950000, 1.898252, 15.750283, 15.897600 +1.966667, 1.931065, 15.750283, 15.897600 +1.983333, 1.963878, 15.750283, 15.897600 +2.000000, 1.996691, 15.750283, 15.897600 +2.016667, 2.029504, 15.750283, 15.897600 +2.033333, 2.062317, 15.750283, 15.897600 +2.050000, 2.095130, 15.750283, 15.897600 +2.066667, 2.127943, 15.750283, 15.897600 +2.083333, 2.160756, 15.750283, 15.897600 +2.100000, 2.193570, 15.750283, 15.897600 +2.116667, 2.226383, 15.750283, 15.897600 +2.133333, 2.259196, 15.750283, 15.897600 +2.150000, 2.292009, 15.750283, 15.897600 +2.166667, 2.324822, 15.750283, 15.897600 +2.183333, 2.357635, 15.750283, 15.897600 +2.200000, 2.390448, 15.750283, 15.897600 +2.216667, 2.423261, 15.750283, 15.897600 +2.233333, 2.456074, 15.750283, 15.897600 +2.250000, 2.488887, 15.750283, 15.897600 +2.266667, 2.521700, 15.750283, 15.897600 +2.283333, 2.554514, 15.750283, 15.897600 +2.300000, 2.587327, 15.750283, 15.897600 +2.316667, 2.620140, 15.750283, 15.897600 +2.333333, 2.652953, 15.750283, 15.897600 +2.350000, 2.685766, 15.750283, 15.897600 +2.366667, 2.718579, 15.750283, 15.897600 +2.383333, 2.751392, 15.750283, 15.897600 +2.400000, 2.784205, 15.750283, 15.897600 +2.416667, 2.817018, 15.750283, 15.897600 +2.433333, 2.849831, 15.750283, 15.897600 +2.450000, 2.882644, 15.750283, 15.897600 +2.466667, 2.915458, 15.750283, 15.897600 +2.483333, 2.948271, 15.750283, 15.897600 +2.500000, 2.981084, 15.750283, 15.897600 +2.516667, 3.013897, 15.750283, 15.897600 +2.533333, 3.046710, 15.750283, 15.897600 +2.550000, 3.079523, 15.750283, 15.897600 +2.566667, 3.112336, 15.750283, 15.897600 +2.583333, 3.145149, 15.750283, 15.897600 +2.600000, 3.177962, 15.750283, 15.897600 +2.616667, 3.210775, 15.750283, 15.897600 +2.633333, 3.243588, 15.750283, 15.897600 +2.650000, 3.276401, 15.750283, 15.897600 +2.666667, 3.309215, 15.750283, 15.897600 +2.683333, 3.342028, 15.750283, 15.897600 +2.700000, 3.374841, 15.750283, 15.897600 +2.716667, 3.407654, 15.750283, 15.897600 +2.733333, 3.440467, 15.750283, 15.897600 +2.750000, 3.473280, 15.750283, 15.897600 +2.766667, 3.506093, 15.750283, 15.897600 +2.783333, 3.538906, 15.750283, 15.897600 +2.800000, 3.571719, 15.750283, 15.897600 +2.816667, 3.604532, 15.750283, 15.897600 +2.833333, 3.637345, 15.750283, 15.897600 +2.850000, 3.670159, 15.750283, 15.897600 +2.866667, 3.702972, 15.750283, 15.897600 +2.883333, 3.735785, 15.750283, 15.897600 +2.900000, 3.768598, 15.750283, 15.897600 +2.916667, 3.801411, 15.750283, 15.897600 +2.933333, 3.834224, 15.750283, 15.897600 +2.950000, 3.867037, 15.750283, 15.897600 +2.966667, 3.899850, 15.750283, 15.897600 +2.983333, 3.932663, 15.750283, 15.897600 +3.000000, 3.965476, 15.750283, 15.897600 +3.016667, 3.998289, 15.750283, 15.897600 +3.033333, 4.031103, 15.750283, 15.897600 +3.050000, 4.063916, 15.750283, 15.897600 +3.066667, 4.096729, 15.750283, 15.897600 +3.083333, 4.129542, 15.750283, 15.897600 +3.100000, 4.162355, 15.750283, 15.897600 +3.116667, 4.195168, 15.750283, 15.897600 +3.133333, 4.227981, 15.750283, 15.897600 +3.150000, 4.260794, 15.750283, 15.897600 +3.166667, 4.293607, 15.750283, 15.897600 +3.183333, 4.326420, 15.750283, 15.897600 +3.200000, 4.359233, 15.750283, 15.897600 +3.216667, 4.392047, 15.750283, 15.897600 +3.233333, 4.424860, 15.750283, 15.897600 +3.250000, 4.457673, 15.750283, 15.897600 +3.266667, 4.490486, 15.750283, 15.897600 +3.283333, 4.523299, 15.750283, 15.897600 +3.300000, 4.556112, 15.750283, 15.897600 +3.316667, 4.588925, 15.750283, 15.897600 +3.333333, 4.621738, 15.750283, 15.897600 +3.350000, 4.654551, 15.750283, 15.897600 +3.366667, 4.687364, 15.750283, 15.897600 +3.383333, 4.720177, 15.750283, 15.897600 +3.400000, 4.752991, 15.750283, 15.897600 +3.416667, 4.785804, 15.750283, 15.897600 +3.433333, 4.818617, 15.750283, 15.897600 +3.450000, 4.851430, 15.750283, 15.897600 +3.466667, 4.884243, 15.750283, 15.897600 +3.483333, 4.917056, 15.750283, 15.897600 +3.500000, 4.949869, 15.750283, 15.897600 +3.516667, 4.982682, 15.750283, 15.897600 +3.533333, 5.015495, 15.750283, 15.897600 +3.550000, 5.048308, 15.750283, 15.897600 +3.566667, 5.081121, 15.750283, 15.897600 +3.583333, 5.113935, 15.750283, 15.897600 +3.600000, 5.146748, 15.750283, 15.897600 +3.616667, 5.179561, 15.750283, 15.897600 +3.633333, 5.212374, 15.750283, 15.897600 +3.650000, 5.245187, 15.750283, 15.897600 +3.666667, 5.278000, 15.750283, 15.897600 +3.683333, 5.310813, 15.750283, 15.897600 +3.700000, 5.343626, 15.750283, 15.897600 +3.716667, 5.376439, 15.750283, 15.897600 +3.733333, 5.409252, 15.750283, 15.897600 +3.750000, 5.442065, 15.750283, 15.897600 +3.766667, 5.474879, 15.750283, 15.897600 +3.783333, 5.507692, 15.750283, 15.897600 +3.800000, 5.540505, 15.750283, 15.897600 +3.816667, 5.573318, 15.750283, 15.897600 +3.833333, 5.606131, 15.750283, 15.897600 +3.850000, 5.638944, 15.750283, 15.897600 +3.866667, 5.671757, 15.750283, 15.897600 +3.883333, 5.704570, 15.750283, 15.897600 +3.900000, 5.737383, 15.750283, 15.897600 +3.916667, 5.770196, 15.750283, 15.897600 +3.933333, 5.803009, 15.750283, 15.897600 +3.950000, 5.835823, 15.750283, 15.897600 +3.966667, 5.868636, 15.750283, 15.897600 +3.983333, 5.901449, 15.750283, 15.897600 +4.000000, 5.934262, 15.750283, 15.897600 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/L2_7200_ld_100kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/L2_7200_ld_100kWh.csv new file mode 100644 index 0000000..f5cc5c9 --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/L2_7200_ld_100kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.223101, 13.386057, 13.519743 +1.016667, 0.485407, 15.738364, 15.897600 +1.033333, 0.747713, 15.738364, 15.897600 +1.050000, 1.010019, 15.738364, 15.897600 +1.066667, 1.272325, 15.738364, 15.897600 +1.083333, 1.534631, 15.738364, 15.897600 +1.100000, 1.796937, 15.738364, 15.897600 +1.116667, 2.059243, 15.738364, 15.897600 +1.133333, 2.321550, 15.738364, 15.897600 +1.150000, 2.583856, 15.738364, 15.897600 +1.166667, 2.846162, 15.738364, 15.897600 +1.183333, 3.108468, 15.738364, 15.897600 +1.200000, 3.370774, 15.738364, 15.897600 +1.216667, 3.633080, 15.738364, 15.897600 +1.233333, 3.895386, 15.738364, 15.897600 +1.250000, 4.157692, 15.738364, 15.897600 +1.266667, 4.419998, 15.738364, 15.897600 +1.283333, 4.682304, 15.738364, 15.897600 +1.300000, 4.944610, 15.738364, 15.897600 +1.316667, 5.206916, 15.738364, 15.897600 +1.333333, 5.469222, 15.738364, 15.897600 +1.350000, 5.731528, 15.738364, 15.897600 +1.366667, 5.993835, 15.738364, 15.897600 +1.383333, 6.256141, 15.738364, 15.897600 +1.400000, 6.518447, 15.738364, 15.897600 +1.416667, 6.780753, 15.738364, 15.897600 +1.433333, 7.043059, 15.738364, 15.897600 +1.450000, 7.305365, 15.738364, 15.897600 +1.466667, 7.567671, 15.738364, 15.897600 +1.483333, 7.829977, 15.738364, 15.897600 +1.500000, 8.092283, 15.738364, 15.897600 +1.516667, 8.354589, 15.738364, 15.897600 +1.533333, 8.616895, 15.738364, 15.897600 +1.550000, 8.879201, 15.738364, 15.897600 +1.566667, 9.141507, 15.738364, 15.897600 +1.583333, 9.403813, 15.738364, 15.897600 +1.600000, 9.666120, 15.738364, 15.897600 +1.616667, 9.928426, 15.738364, 15.897600 +1.633333, 10.190732, 15.738364, 15.897600 +1.650000, 10.453038, 15.738364, 15.897600 +1.666667, 10.715344, 15.738364, 15.897600 +1.683333, 10.977650, 15.738364, 15.897600 +1.700000, 11.239956, 15.738364, 15.897600 +1.716667, 11.502262, 15.738364, 15.897600 +1.733333, 11.764568, 15.738364, 15.897600 +1.750000, 12.026874, 15.738364, 15.897600 +1.766667, 12.289180, 15.738364, 15.897600 +1.783333, 12.551486, 15.738364, 15.897600 +1.800000, 12.813792, 15.738364, 15.897600 +1.816667, 13.076099, 15.738364, 15.897600 +1.833333, 13.338405, 15.738364, 15.897600 +1.850000, 13.600711, 15.738364, 15.897600 +1.866667, 13.863017, 15.738364, 15.897600 +1.883333, 14.125323, 15.738364, 15.897600 +1.900000, 14.387629, 15.738364, 15.897600 +1.916667, 14.649935, 15.738364, 15.897600 +1.933333, 14.912241, 15.738364, 15.897600 +1.950000, 15.174547, 15.738364, 15.897600 +1.966667, 15.436853, 15.738364, 15.897600 +1.983333, 15.699159, 15.738364, 15.897600 +2.000000, 15.961465, 15.738364, 15.897600 +2.016667, 16.223771, 15.738364, 15.897600 +2.033333, 16.486077, 15.738364, 15.897600 +2.050000, 16.748384, 15.738364, 15.897600 +2.066667, 17.010690, 15.738364, 15.897600 +2.083333, 17.272996, 15.738364, 15.897600 +2.100000, 17.535302, 15.738364, 15.897600 +2.116667, 17.797608, 15.738364, 15.897600 +2.133333, 18.059914, 15.738364, 15.897600 +2.150000, 18.322220, 15.738364, 15.897600 +2.166667, 18.584526, 15.738364, 15.897600 +2.183333, 18.846832, 15.738364, 15.897600 +2.200000, 19.109138, 15.738364, 15.897600 +2.216667, 19.371444, 15.738364, 15.897600 +2.233333, 19.633750, 15.738364, 15.897600 +2.250000, 19.896056, 15.738364, 15.897600 +2.266667, 20.158362, 15.738364, 15.897600 +2.283333, 20.420669, 15.738364, 15.897600 +2.300000, 20.682975, 15.738364, 15.897600 +2.316667, 20.945281, 15.738364, 15.897600 +2.333333, 21.207587, 15.738364, 15.897600 +2.350000, 21.469893, 15.738364, 15.897600 +2.366667, 21.732199, 15.738364, 15.897600 +2.383333, 21.994505, 15.738364, 15.897600 +2.400000, 22.256811, 15.738364, 15.897600 +2.416667, 22.519117, 15.738364, 15.897600 +2.433333, 22.781423, 15.738364, 15.897600 +2.450000, 23.043729, 15.738364, 15.897600 +2.466667, 23.306035, 15.738364, 15.897600 +2.483333, 23.568341, 15.738364, 15.897600 +2.500000, 23.830647, 15.738364, 15.897600 +2.516667, 24.092954, 15.738364, 15.897600 +2.533333, 24.355260, 15.738364, 15.897600 +2.550000, 24.617566, 15.738364, 15.897600 +2.566667, 24.879872, 15.738364, 15.897600 +2.583333, 25.142178, 15.738364, 15.897600 +2.600000, 25.404484, 15.738364, 15.897600 +2.616667, 25.666790, 15.738364, 15.897600 +2.633333, 25.929096, 15.738364, 15.897600 +2.650000, 26.191402, 15.738364, 15.897600 +2.666667, 26.453708, 15.738364, 15.897600 +2.683333, 26.716014, 15.738364, 15.897600 +2.700000, 26.978320, 15.738364, 15.897600 +2.716667, 27.240626, 15.738364, 15.897600 +2.733333, 27.502932, 15.738364, 15.897600 +2.750000, 27.765239, 15.738364, 15.897600 +2.766667, 28.027545, 15.738364, 15.897600 +2.783333, 28.289851, 15.738364, 15.897600 +2.800000, 28.552157, 15.738364, 15.897600 +2.816667, 28.814463, 15.738364, 15.897600 +2.833333, 29.076769, 15.738364, 15.897600 +2.850000, 29.339075, 15.738364, 15.897600 +2.866667, 29.601381, 15.738364, 15.897600 +2.883333, 29.863687, 15.738364, 15.897600 +2.900000, 30.125993, 15.738364, 15.897600 +2.916667, 30.388299, 15.738364, 15.897600 +2.933333, 30.650605, 15.738364, 15.897600 +2.950000, 30.912911, 15.738364, 15.897600 +2.966667, 31.175218, 15.738364, 15.897600 +2.983333, 31.437524, 15.738364, 15.897600 +3.000000, 31.699830, 15.738364, 15.897600 +3.016667, 31.962136, 15.738364, 15.897600 +3.033333, 32.224442, 15.738364, 15.897600 +3.050000, 32.486748, 15.738364, 15.897600 +3.066667, 32.749054, 15.738364, 15.897600 +3.083333, 33.011360, 15.738364, 15.897600 +3.100000, 33.273666, 15.738364, 15.897600 +3.116667, 33.535972, 15.738364, 15.897600 +3.133333, 33.798278, 15.738364, 15.897600 +3.150000, 34.060584, 15.738364, 15.897600 +3.166667, 34.322890, 15.738364, 15.897600 +3.183333, 34.585196, 15.738364, 15.897600 +3.200000, 34.847503, 15.738364, 15.897600 +3.216667, 35.109809, 15.738364, 15.897600 +3.233333, 35.372115, 15.738364, 15.897600 +3.250000, 35.634421, 15.738364, 15.897600 +3.266667, 35.896727, 15.738364, 15.897600 +3.283333, 36.159033, 15.738364, 15.897600 +3.300000, 36.421339, 15.738364, 15.897600 +3.316667, 36.683645, 15.738364, 15.897600 +3.333333, 36.945951, 15.738364, 15.897600 +3.350000, 37.208257, 15.738364, 15.897600 +3.366667, 37.470563, 15.738364, 15.897600 +3.383333, 37.732869, 15.738364, 15.897600 +3.400000, 37.995175, 15.738364, 15.897600 +3.416667, 38.257481, 15.738364, 15.897600 +3.433333, 38.519788, 15.738364, 15.897600 +3.450000, 38.782094, 15.738364, 15.897600 +3.466667, 39.044400, 15.738364, 15.897600 +3.483333, 39.306706, 15.738364, 15.897600 +3.500000, 39.569012, 15.738364, 15.897600 +3.516667, 39.831318, 15.738364, 15.897600 +3.533333, 40.093624, 15.738364, 15.897600 +3.550000, 40.355930, 15.738364, 15.897600 +3.566667, 40.618236, 15.738364, 15.897600 +3.583333, 40.880542, 15.738364, 15.897600 +3.600000, 41.142848, 15.738364, 15.897600 +3.616667, 41.405154, 15.738364, 15.897600 +3.633333, 41.667460, 15.738364, 15.897600 +3.650000, 41.929766, 15.738364, 15.897600 +3.666667, 42.192073, 15.738364, 15.897600 +3.683333, 42.454379, 15.738364, 15.897600 +3.700000, 42.716685, 15.738364, 15.897600 +3.716667, 42.978991, 15.738364, 15.897600 +3.733333, 43.241297, 15.738364, 15.897600 +3.750000, 43.503603, 15.738364, 15.897600 +3.766667, 43.765909, 15.738364, 15.897600 +3.783333, 44.028215, 15.738364, 15.897600 +3.800000, 44.290521, 15.738364, 15.897600 +3.816667, 44.552827, 15.738364, 15.897600 +3.833333, 44.815133, 15.738364, 15.897600 +3.850000, 45.077439, 15.738364, 15.897600 +3.866667, 45.339745, 15.738364, 15.897600 +3.883333, 45.602051, 15.738364, 15.897600 +3.900000, 45.864358, 15.738364, 15.897600 +3.916667, 46.126664, 15.738364, 15.897600 +3.933333, 46.388970, 15.738364, 15.897600 +3.950000, 46.651276, 15.738364, 15.897600 +3.966667, 46.913582, 15.738364, 15.897600 +3.983333, 47.175888, 15.738364, 15.897600 +4.000000, 47.438194, 15.738364, 15.897600 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/L2_7200_ld_50kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/L2_7200_ld_50kWh.csv new file mode 100644 index 0000000..8eb98a7 --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/L2_7200_ld_50kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.445874, 13.376206, 13.519743 +1.016667, 0.970032, 15.724743, 15.897600 +1.033333, 1.494190, 15.724743, 15.897600 +1.050000, 2.018348, 15.724743, 15.897600 +1.066667, 2.542506, 15.724743, 15.897600 +1.083333, 3.066664, 15.724743, 15.897600 +1.100000, 3.590822, 15.724743, 15.897600 +1.116667, 4.114980, 15.724743, 15.897600 +1.133333, 4.639138, 15.724743, 15.897600 +1.150000, 5.163296, 15.724743, 15.897600 +1.166667, 5.687454, 15.724743, 15.897600 +1.183333, 6.211613, 15.724743, 15.897600 +1.200000, 6.735771, 15.724743, 15.897600 +1.216667, 7.259929, 15.724743, 15.897600 +1.233333, 7.784087, 15.724743, 15.897600 +1.250000, 8.308245, 15.724743, 15.897600 +1.266667, 8.832403, 15.724743, 15.897600 +1.283333, 9.356561, 15.724743, 15.897600 +1.300000, 9.880719, 15.724743, 15.897600 +1.316667, 10.404877, 15.724743, 15.897600 +1.333333, 10.929035, 15.724743, 15.897600 +1.350000, 11.453193, 15.724743, 15.897600 +1.366667, 11.977352, 15.724743, 15.897600 +1.383333, 12.501510, 15.724743, 15.897600 +1.400000, 13.025668, 15.724743, 15.897600 +1.416667, 13.549826, 15.724743, 15.897600 +1.433333, 14.073984, 15.724743, 15.897600 +1.450000, 14.598142, 15.724743, 15.897600 +1.466667, 15.122300, 15.724743, 15.897600 +1.483333, 15.646458, 15.724743, 15.897600 +1.500000, 16.170616, 15.724743, 15.897600 +1.516667, 16.694774, 15.724743, 15.897600 +1.533333, 17.218932, 15.724743, 15.897600 +1.550000, 17.743091, 15.724743, 15.897600 +1.566667, 18.267249, 15.724743, 15.897600 +1.583333, 18.791407, 15.724743, 15.897600 +1.600000, 19.315565, 15.724743, 15.897600 +1.616667, 19.839723, 15.724743, 15.897600 +1.633333, 20.363881, 15.724743, 15.897600 +1.650000, 20.888039, 15.724743, 15.897600 +1.666667, 21.412197, 15.724743, 15.897600 +1.683333, 21.936355, 15.724743, 15.897600 +1.700000, 22.460513, 15.724743, 15.897600 +1.716667, 22.984671, 15.724743, 15.897600 +1.733333, 23.508830, 15.724743, 15.897600 +1.750000, 24.032988, 15.724743, 15.897600 +1.766667, 24.557146, 15.724743, 15.897600 +1.783333, 25.081304, 15.724743, 15.897600 +1.800000, 25.605462, 15.724743, 15.897600 +1.816667, 26.129620, 15.724743, 15.897600 +1.833333, 26.653778, 15.724743, 15.897600 +1.850000, 27.177936, 15.724743, 15.897600 +1.866667, 27.702094, 15.724743, 15.897600 +1.883333, 28.226252, 15.724743, 15.897600 +1.900000, 28.750410, 15.724743, 15.897600 +1.916667, 29.274569, 15.724743, 15.897600 +1.933333, 29.798727, 15.724743, 15.897600 +1.950000, 30.322885, 15.724743, 15.897600 +1.966667, 30.847043, 15.724743, 15.897600 +1.983333, 31.371201, 15.724743, 15.897600 +2.000000, 31.895359, 15.724743, 15.897600 +2.016667, 32.419517, 15.724743, 15.897600 +2.033333, 32.943675, 15.724743, 15.897600 +2.050000, 33.467833, 15.724743, 15.897600 +2.066667, 33.991991, 15.724743, 15.897600 +2.083333, 34.516150, 15.724743, 15.897600 +2.100000, 35.040308, 15.724743, 15.897600 +2.116667, 35.564466, 15.724743, 15.897600 +2.133333, 36.088624, 15.724743, 15.897600 +2.150000, 36.612782, 15.724743, 15.897600 +2.166667, 37.136940, 15.724743, 15.897600 +2.183333, 37.661098, 15.724743, 15.897600 +2.200000, 38.185256, 15.724743, 15.897600 +2.216667, 38.709414, 15.724743, 15.897600 +2.233333, 39.233572, 15.724743, 15.897600 +2.250000, 39.757730, 15.724743, 15.897600 +2.266667, 40.281889, 15.724743, 15.897600 +2.283333, 40.806047, 15.724743, 15.897600 +2.300000, 41.330205, 15.724743, 15.897600 +2.316667, 41.854363, 15.724743, 15.897600 +2.333333, 42.378521, 15.724743, 15.897600 +2.350000, 42.902679, 15.724743, 15.897600 +2.366667, 43.426837, 15.724743, 15.897600 +2.383333, 43.950995, 15.724743, 15.897600 +2.400000, 44.475153, 15.724743, 15.897600 +2.416667, 44.999311, 15.724743, 15.897600 +2.433333, 45.523469, 15.724743, 15.897600 +2.450000, 46.047628, 15.724743, 15.897600 +2.466667, 46.571786, 15.724743, 15.897600 +2.483333, 47.095944, 15.724743, 15.897600 +2.500000, 47.620102, 15.724743, 15.897600 +2.516667, 48.144260, 15.724743, 15.897600 +2.533333, 48.668418, 15.724743, 15.897600 +2.550000, 49.192576, 15.724743, 15.897600 +2.566667, 49.716734, 15.724743, 15.897600 +2.583333, 50.240892, 15.724743, 15.897600 +2.600000, 50.765050, 15.724743, 15.897600 +2.616667, 51.289208, 15.724743, 15.897600 +2.633333, 51.813367, 15.724743, 15.897600 +2.650000, 52.337525, 15.724743, 15.897600 +2.666667, 52.861683, 15.724743, 15.897600 +2.683333, 53.385841, 15.724743, 15.897600 +2.700000, 53.909999, 15.724743, 15.897600 +2.716667, 54.434157, 15.724743, 15.897600 +2.733333, 54.958315, 15.724743, 15.897600 +2.750000, 55.482473, 15.724743, 15.897600 +2.766667, 56.006631, 15.724743, 15.897600 +2.783333, 56.530789, 15.724743, 15.897600 +2.800000, 57.054947, 15.724743, 15.897600 +2.816667, 57.579106, 15.724743, 15.897600 +2.833333, 58.103264, 15.724743, 15.897600 +2.850000, 58.627422, 15.724743, 15.897600 +2.866667, 59.151580, 15.724743, 15.897600 +2.883333, 59.675738, 15.724743, 15.897600 +2.900000, 60.199896, 15.724743, 15.897600 +2.916667, 60.724054, 15.724743, 15.897600 +2.933333, 61.248212, 15.724743, 15.897600 +2.950000, 61.772370, 15.724743, 15.897600 +2.966667, 62.296528, 15.724743, 15.897600 +2.983333, 62.820686, 15.724743, 15.897600 +3.000000, 63.344845, 15.724743, 15.897600 +3.016667, 63.869003, 15.724743, 15.897600 +3.033333, 64.393161, 15.724743, 15.897600 +3.050000, 64.917319, 15.724743, 15.897600 +3.066667, 65.441477, 15.724743, 15.897600 +3.083333, 65.965635, 15.724743, 15.897600 +3.100000, 66.489793, 15.724743, 15.897600 +3.116667, 67.013951, 15.724743, 15.897600 +3.133333, 67.538109, 15.724743, 15.897600 +3.150000, 68.062267, 15.724743, 15.897600 +3.166667, 68.586425, 15.724743, 15.897600 +3.183333, 69.110584, 15.724743, 15.897600 +3.200000, 69.634742, 15.724743, 15.897600 +3.216667, 70.158900, 15.724743, 15.897600 +3.233333, 70.683058, 15.724743, 15.897600 +3.250000, 71.207216, 15.724743, 15.897600 +3.266667, 71.731374, 15.724743, 15.897600 +3.283333, 72.255532, 15.724743, 15.897600 +3.300000, 72.779690, 15.724743, 15.897600 +3.316667, 73.303848, 15.724743, 15.897600 +3.333333, 73.828006, 15.724743, 15.897600 +3.350000, 74.352164, 15.724743, 15.897600 +3.366667, 74.876323, 15.724743, 15.897600 +3.383333, 75.400481, 15.724743, 15.897600 +3.400000, 75.924639, 15.724743, 15.897600 +3.416667, 76.448797, 15.724743, 15.897600 +3.433333, 76.972955, 15.724743, 15.897600 +3.450000, 77.497113, 15.724743, 15.897600 +3.466667, 78.021271, 15.724743, 15.897600 +3.483333, 78.545429, 15.724743, 15.897600 +3.500000, 79.069587, 15.724743, 15.897600 +3.516667, 79.593745, 15.724743, 15.897600 +3.533333, 80.117904, 15.724743, 15.897600 +3.550000, 80.642062, 15.724743, 15.897600 +3.566667, 81.166220, 15.724743, 15.897600 +3.583333, 81.690378, 15.724743, 15.897600 +3.600000, 82.214536, 15.724743, 15.897600 +3.616667, 82.738694, 15.724743, 15.897600 +3.633333, 83.262852, 15.724743, 15.897600 +3.650000, 83.787010, 15.724743, 15.897600 +3.666667, 84.311168, 15.724743, 15.897600 +3.683333, 84.835326, 15.724743, 15.897600 +3.700000, 85.359484, 15.724743, 15.897600 +3.716667, 85.883643, 15.724743, 15.897600 +3.733333, 86.407801, 15.724743, 15.897600 +3.750000, 86.931959, 15.724743, 15.897600 +3.766667, 87.456117, 15.724743, 15.897600 +3.783333, 87.980275, 15.724743, 15.897600 +3.800000, 88.504433, 15.724743, 15.897600 +3.816667, 89.028591, 15.724743, 15.897600 +3.833333, 89.552749, 15.724743, 15.897600 +3.850000, 90.076907, 15.724743, 15.897600 +3.866667, 90.601065, 15.724743, 15.897600 +3.883333, 91.125223, 15.724743, 15.897600 +3.900000, 91.649382, 15.724743, 15.897600 +3.916667, 92.173540, 15.724743, 15.897600 +3.933333, 92.697698, 15.724743, 15.897600 +3.950000, 93.221856, 15.724743, 15.897600 +3.966667, 93.746014, 15.724743, 15.897600 +3.983333, 94.270172, 15.724743, 15.897600 +4.000000, 94.794330, 15.724743, 15.897600 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/L2_7200_md_200kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/L2_7200_md_200kWh.csv new file mode 100644 index 0000000..5bfd392 --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/L2_7200_md_200kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.111592, 13.390983, 13.519743 +1.016667, 0.242801, 15.745175, 15.897600 +1.033333, 0.374011, 15.745175, 15.897600 +1.050000, 0.505221, 15.745175, 15.897600 +1.066667, 0.636431, 15.745175, 15.897600 +1.083333, 0.767640, 15.745175, 15.897600 +1.100000, 0.898850, 15.745175, 15.897600 +1.116667, 1.030060, 15.745175, 15.897600 +1.133333, 1.161270, 15.745175, 15.897600 +1.150000, 1.292480, 15.745175, 15.897600 +1.166667, 1.423689, 15.745175, 15.897600 +1.183333, 1.554899, 15.745175, 15.897600 +1.200000, 1.686109, 15.745175, 15.897600 +1.216667, 1.817319, 15.745175, 15.897600 +1.233333, 1.948529, 15.745175, 15.897600 +1.250000, 2.079738, 15.745175, 15.897600 +1.266667, 2.210948, 15.745175, 15.897600 +1.283333, 2.342158, 15.745175, 15.897600 +1.300000, 2.473368, 15.745175, 15.897600 +1.316667, 2.604578, 15.745175, 15.897600 +1.333333, 2.735787, 15.745175, 15.897600 +1.350000, 2.866997, 15.745175, 15.897600 +1.366667, 2.998207, 15.745175, 15.897600 +1.383333, 3.129417, 15.745175, 15.897600 +1.400000, 3.260627, 15.745175, 15.897600 +1.416667, 3.391836, 15.745175, 15.897600 +1.433333, 3.523046, 15.745175, 15.897600 +1.450000, 3.654256, 15.745175, 15.897600 +1.466667, 3.785466, 15.745175, 15.897600 +1.483333, 3.916676, 15.745175, 15.897600 +1.500000, 4.047885, 15.745175, 15.897600 +1.516667, 4.179095, 15.745175, 15.897600 +1.533333, 4.310305, 15.745175, 15.897600 +1.550000, 4.441515, 15.745175, 15.897600 +1.566667, 4.572724, 15.745175, 15.897600 +1.583333, 4.703934, 15.745175, 15.897600 +1.600000, 4.835144, 15.745175, 15.897600 +1.616667, 4.966354, 15.745175, 15.897600 +1.633333, 5.097564, 15.745175, 15.897600 +1.650000, 5.228773, 15.745175, 15.897600 +1.666667, 5.359983, 15.745175, 15.897600 +1.683333, 5.491193, 15.745175, 15.897600 +1.700000, 5.622403, 15.745175, 15.897600 +1.716667, 5.753613, 15.745175, 15.897600 +1.733333, 5.884822, 15.745175, 15.897600 +1.750000, 6.016032, 15.745175, 15.897600 +1.766667, 6.147242, 15.745175, 15.897600 +1.783333, 6.278452, 15.745175, 15.897600 +1.800000, 6.409662, 15.745175, 15.897600 +1.816667, 6.540871, 15.745175, 15.897600 +1.833333, 6.672081, 15.745175, 15.897600 +1.850000, 6.803291, 15.745175, 15.897600 +1.866667, 6.934501, 15.745175, 15.897600 +1.883333, 7.065711, 15.745175, 15.897600 +1.900000, 7.196920, 15.745175, 15.897600 +1.916667, 7.328130, 15.745175, 15.897600 +1.933333, 7.459340, 15.745175, 15.897600 +1.950000, 7.590550, 15.745175, 15.897600 +1.966667, 7.721760, 15.745175, 15.897600 +1.983333, 7.852969, 15.745175, 15.897600 +2.000000, 7.984179, 15.745175, 15.897600 +2.016667, 8.115389, 15.745175, 15.897600 +2.033333, 8.246599, 15.745175, 15.897600 +2.050000, 8.377808, 15.745175, 15.897600 +2.066667, 8.509018, 15.745175, 15.897600 +2.083333, 8.640228, 15.745175, 15.897600 +2.100000, 8.771438, 15.745175, 15.897600 +2.116667, 8.902648, 15.745175, 15.897600 +2.133333, 9.033857, 15.745175, 15.897600 +2.150000, 9.165067, 15.745175, 15.897600 +2.166667, 9.296277, 15.745175, 15.897600 +2.183333, 9.427487, 15.745175, 15.897600 +2.200000, 9.558697, 15.745175, 15.897600 +2.216667, 9.689906, 15.745175, 15.897600 +2.233333, 9.821116, 15.745175, 15.897600 +2.250000, 9.952326, 15.745175, 15.897600 +2.266667, 10.083536, 15.745175, 15.897600 +2.283333, 10.214746, 15.745175, 15.897600 +2.300000, 10.345955, 15.745175, 15.897600 +2.316667, 10.477165, 15.745175, 15.897600 +2.333333, 10.608375, 15.745175, 15.897600 +2.350000, 10.739585, 15.745175, 15.897600 +2.366667, 10.870795, 15.745175, 15.897600 +2.383333, 11.002004, 15.745175, 15.897600 +2.400000, 11.133214, 15.745175, 15.897600 +2.416667, 11.264424, 15.745175, 15.897600 +2.433333, 11.395634, 15.745175, 15.897600 +2.450000, 11.526844, 15.745175, 15.897600 +2.466667, 11.658053, 15.745175, 15.897600 +2.483333, 11.789263, 15.745175, 15.897600 +2.500000, 11.920473, 15.745175, 15.897600 +2.516667, 12.051683, 15.745175, 15.897600 +2.533333, 12.182892, 15.745175, 15.897600 +2.550000, 12.314102, 15.745175, 15.897600 +2.566667, 12.445312, 15.745175, 15.897600 +2.583333, 12.576522, 15.745175, 15.897600 +2.600000, 12.707732, 15.745175, 15.897600 +2.616667, 12.838941, 15.745175, 15.897600 +2.633333, 12.970151, 15.745175, 15.897600 +2.650000, 13.101361, 15.745175, 15.897600 +2.666667, 13.232571, 15.745175, 15.897600 +2.683333, 13.363781, 15.745175, 15.897600 +2.700000, 13.494990, 15.745175, 15.897600 +2.716667, 13.626200, 15.745175, 15.897600 +2.733333, 13.757410, 15.745175, 15.897600 +2.750000, 13.888620, 15.745175, 15.897600 +2.766667, 14.019830, 15.745175, 15.897600 +2.783333, 14.151039, 15.745175, 15.897600 +2.800000, 14.282249, 15.745175, 15.897600 +2.816667, 14.413459, 15.745175, 15.897600 +2.833333, 14.544669, 15.745175, 15.897600 +2.850000, 14.675879, 15.745175, 15.897600 +2.866667, 14.807088, 15.745175, 15.897600 +2.883333, 14.938298, 15.745175, 15.897600 +2.900000, 15.069508, 15.745175, 15.897600 +2.916667, 15.200718, 15.745175, 15.897600 +2.933333, 15.331927, 15.745175, 15.897600 +2.950000, 15.463137, 15.745175, 15.897600 +2.966667, 15.594347, 15.745175, 15.897600 +2.983333, 15.725557, 15.745175, 15.897600 +3.000000, 15.856767, 15.745175, 15.897600 +3.016667, 15.987976, 15.745175, 15.897600 +3.033333, 16.119186, 15.745175, 15.897600 +3.050000, 16.250396, 15.745175, 15.897600 +3.066667, 16.381606, 15.745175, 15.897600 +3.083333, 16.512816, 15.745175, 15.897600 +3.100000, 16.644025, 15.745175, 15.897600 +3.116667, 16.775235, 15.745175, 15.897600 +3.133333, 16.906445, 15.745175, 15.897600 +3.150000, 17.037655, 15.745175, 15.897600 +3.166667, 17.168865, 15.745175, 15.897600 +3.183333, 17.300074, 15.745175, 15.897600 +3.200000, 17.431284, 15.745175, 15.897600 +3.216667, 17.562494, 15.745175, 15.897600 +3.233333, 17.693704, 15.745175, 15.897600 +3.250000, 17.824914, 15.745175, 15.897600 +3.266667, 17.956123, 15.745175, 15.897600 +3.283333, 18.087333, 15.745175, 15.897600 +3.300000, 18.218543, 15.745175, 15.897600 +3.316667, 18.349753, 15.745175, 15.897600 +3.333333, 18.480963, 15.745175, 15.897600 +3.350000, 18.612172, 15.745175, 15.897600 +3.366667, 18.743382, 15.745175, 15.897600 +3.383333, 18.874592, 15.745175, 15.897600 +3.400000, 19.005802, 15.745175, 15.897600 +3.416667, 19.137011, 15.745175, 15.897600 +3.433333, 19.268221, 15.745175, 15.897600 +3.450000, 19.399431, 15.745175, 15.897600 +3.466667, 19.530641, 15.745175, 15.897600 +3.483333, 19.661851, 15.745175, 15.897600 +3.500000, 19.793060, 15.745175, 15.897600 +3.516667, 19.924270, 15.745175, 15.897600 +3.533333, 20.055480, 15.745175, 15.897600 +3.550000, 20.186690, 15.745175, 15.897600 +3.566667, 20.317900, 15.745175, 15.897600 +3.583333, 20.449109, 15.745175, 15.897600 +3.600000, 20.580319, 15.745175, 15.897600 +3.616667, 20.711529, 15.745175, 15.897600 +3.633333, 20.842739, 15.745175, 15.897600 +3.650000, 20.973949, 15.745175, 15.897600 +3.666667, 21.105158, 15.745175, 15.897600 +3.683333, 21.236368, 15.745175, 15.897600 +3.700000, 21.367578, 15.745175, 15.897600 +3.716667, 21.498788, 15.745175, 15.897600 +3.733333, 21.629998, 15.745175, 15.897600 +3.750000, 21.761207, 15.745175, 15.897600 +3.766667, 21.892417, 15.745175, 15.897600 +3.783333, 22.023627, 15.745175, 15.897600 +3.800000, 22.154837, 15.745175, 15.897600 +3.816667, 22.286047, 15.745175, 15.897600 +3.833333, 22.417256, 15.745175, 15.897600 +3.850000, 22.548466, 15.745175, 15.897600 +3.866667, 22.679676, 15.745175, 15.897600 +3.883333, 22.810886, 15.745175, 15.897600 +3.900000, 22.942095, 15.745175, 15.897600 +3.916667, 23.073305, 15.745175, 15.897600 +3.933333, 23.204515, 15.745175, 15.897600 +3.950000, 23.335725, 15.745175, 15.897600 +3.966667, 23.466935, 15.745175, 15.897600 +3.983333, 23.598144, 15.745175, 15.897600 +4.000000, 23.729354, 15.745175, 15.897600 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/dwc_100kW_hd_1000kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/dwc_100kW_hd_1000kWh.csv new file mode 100644 index 0000000..9747e60 --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/dwc_100kW_hd_1000kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.162502, 97.501480, 98.455528 +1.016667, 0.394832, 139.397434, 140.793875 +1.033333, 0.629074, 140.545723, 141.954565 +1.050000, 0.865248, 141.704243, 143.125610 +1.066667, 1.103369, 142.872297, 144.306308 +1.083333, 1.343452, 144.049965, 145.496738 +1.100000, 1.585514, 145.237323, 146.696981 +1.116667, 1.829572, 146.434454, 147.907117 +1.133333, 2.075641, 147.641435, 149.127227 +1.150000, 2.323738, 148.858348, 150.357394 +1.166667, 2.573880, 150.085275, 151.597700 +1.183333, 2.826084, 151.322298, 152.848229 +1.200000, 3.080366, 152.569500, 154.109065 +1.216667, 3.336745, 153.826963, 155.380292 +1.233333, 3.595236, 155.094772, 156.661997 +1.250000, 3.855858, 156.373012, 157.954265 +1.266667, 4.118461, 157.561943, 159.156260 +1.283333, 4.381831, 158.021948, 159.621323 +1.300000, 4.645719, 158.332765, 159.935560 +1.316667, 4.910125, 158.643907, 160.250126 +1.333333, 5.175051, 158.955660, 160.565311 +1.350000, 5.440498, 159.268023, 160.881114 +1.366667, 5.706466, 159.581000, 161.197538 +1.383333, 5.972957, 159.894590, 161.514584 +1.400000, 6.239972, 160.208796, 161.832253 +1.416667, 6.507511, 160.523618, 162.150546 +1.433333, 6.775576, 160.839057, 162.469465 +1.450000, 7.044168, 161.155116, 162.789010 +1.466667, 7.313288, 161.471794, 163.109183 +1.483333, 7.582936, 161.789093, 163.429986 +1.500000, 7.853115, 162.107015, 163.751418 +1.516667, 8.123824, 162.425560, 164.073483 +1.533333, 8.395065, 162.744731, 164.396180 +1.550000, 8.666839, 163.064527, 164.719511 +1.566667, 8.939148, 163.384950, 165.043478 +1.583333, 9.211991, 163.706002, 165.368081 +1.600000, 9.485371, 164.027684, 165.693323 +1.616667, 9.759287, 164.349997, 166.019203 +1.633333, 10.033739, 164.671124, 166.343885 +1.650000, 10.308483, 164.846278, 166.520980 +1.666667, 10.583364, 164.928554, 166.604166 +1.683333, 10.858382, 165.010707, 166.687230 +1.700000, 11.133536, 165.092901, 166.770335 +1.716667, 11.408828, 165.175137, 166.853481 +1.733333, 11.684257, 165.257413, 166.936669 +1.750000, 11.959824, 165.339730, 167.019898 +1.766667, 12.235527, 165.422088, 167.103168 +1.783333, 12.511368, 165.504487, 167.186480 +1.800000, 12.787346, 165.586926, 167.269834 +1.816667, 13.063462, 165.669407, 167.353229 +1.833333, 13.339715, 165.751929, 167.436666 +1.850000, 13.616106, 165.834492, 167.520144 +1.866667, 13.892634, 165.917096, 167.603664 +1.883333, 14.169301, 165.999741, 167.687225 +1.900000, 14.446105, 166.082427, 167.770828 +1.916667, 14.723046, 166.165154, 167.854473 +1.933333, 15.000126, 166.247922, 167.938159 +1.950000, 15.277344, 166.330732, 168.021887 +1.966667, 15.554700, 166.413582, 168.105657 +1.983333, 15.832194, 166.496474, 168.189468 +2.000000, 16.109827, 166.579407, 168.273321 +2.016667, 16.387597, 166.662382, 168.357216 +2.033333, 16.665506, 166.745397, 168.441153 +2.050000, 16.943554, 166.828454, 168.525131 +2.066667, 17.221740, 166.911552, 168.609152 +2.083333, 17.500064, 166.994692, 168.693214 +2.100000, 17.778527, 167.077872, 168.777318 +2.116667, 18.057129, 167.161094, 168.861464 +2.133333, 18.335870, 167.244358, 168.945652 +2.150000, 18.614749, 167.327663, 169.029882 +2.166667, 18.893767, 167.411009, 169.114153 +2.183333, 19.172925, 167.494397, 169.198467 +2.200000, 19.452221, 167.577826, 169.282823 +2.216667, 19.731657, 167.661297, 169.367221 +2.233333, 20.011231, 167.744809, 169.451661 +2.250000, 20.290945, 167.828363, 169.536142 +2.266667, 20.570799, 167.911958, 169.620666 +2.283333, 20.850791, 167.995595, 169.705232 +2.300000, 21.130923, 168.079273, 169.789841 +2.316667, 21.411195, 168.162993, 169.874491 +2.333333, 21.691606, 168.246755, 169.959183 +2.350000, 21.972157, 168.330558, 170.043918 +2.366667, 22.252848, 168.414403, 170.128695 +2.383333, 22.533678, 168.498289, 170.213514 +2.400000, 22.814649, 168.582218, 170.298375 +2.416667, 23.095759, 168.666188, 170.383279 +2.433333, 23.377009, 168.750200, 170.468225 +2.450000, 23.658400, 168.834253, 170.553213 +2.466667, 23.939930, 168.918348, 170.638244 +2.483333, 24.221601, 169.002486, 170.723316 +2.500000, 24.503412, 169.086665, 170.808432 +2.516667, 24.785364, 169.170885, 170.893589 +2.533333, 25.067456, 169.255148, 170.978790 +2.550000, 25.349688, 169.339453, 171.064032 +2.566667, 25.632061, 169.423799, 171.149317 +2.583333, 25.914575, 169.508188, 171.234644 +2.600000, 26.197229, 169.592618, 171.320014 +2.616667, 26.480024, 169.677091, 171.405427 +2.633333, 26.762960, 169.761605, 171.490882 +2.650000, 27.046037, 169.846161, 171.576380 +2.666667, 27.329255, 169.930760, 171.661920 +2.683333, 27.612614, 170.015400, 171.747503 +2.700000, 27.896114, 170.100083, 171.833128 +2.716667, 28.179756, 170.184807, 171.918796 +2.733333, 28.463538, 170.269574, 172.004507 +2.750000, 28.747462, 170.354383, 172.090260 +2.766667, 29.031528, 170.439234, 172.176056 +2.783333, 29.315734, 170.524128, 172.261895 +2.800000, 29.600083, 170.609063, 172.347777 +2.816667, 29.884573, 170.694041, 172.433701 +2.833333, 30.169205, 170.779061, 172.519668 +2.850000, 30.453978, 170.864123, 172.605678 +2.866667, 30.738894, 170.949227, 172.691731 +2.883333, 31.023951, 171.034374, 172.777827 +2.900000, 31.309150, 171.119563, 172.863966 +2.916667, 31.594492, 171.204795, 172.950147 +2.933333, 31.879975, 171.290069, 173.036372 +2.950000, 32.165601, 171.375385, 173.122639 +2.966667, 32.451369, 171.460744, 173.208949 +2.983333, 32.737279, 171.546145, 173.295303 +3.000000, 33.023331, 171.631588, 173.381699 +3.016667, 33.309527, 171.717074, 173.468138 +3.033333, 33.595864, 171.802603, 173.554621 +3.050000, 33.882344, 171.888174, 173.641146 +3.066667, 34.168967, 171.973788, 173.727715 +3.083333, 34.455733, 172.059444, 173.814327 +3.100000, 34.742642, 172.145142, 173.900981 +3.116667, 35.029693, 172.230884, 173.987679 +3.133333, 35.316888, 172.316668, 174.074421 +3.150000, 35.604225, 172.402494, 174.161205 +3.166667, 35.891706, 172.488364, 174.248033 +3.183333, 36.179330, 172.574276, 174.334904 +3.200000, 36.467097, 172.660230, 174.421818 +3.216667, 36.755007, 172.746228, 174.508775 +3.233333, 37.043061, 172.832268, 174.595776 +3.250000, 37.331258, 172.918351, 174.682820 +3.266667, 37.619599, 173.004477, 174.769907 +3.283333, 37.908083, 173.090645, 174.857038 +3.300000, 38.196711, 173.176857, 174.944212 +3.316667, 38.485483, 173.263111, 175.031430 +3.333333, 38.774399, 173.349408, 175.118691 +3.350000, 39.063458, 173.435748, 175.205996 +3.366667, 39.352662, 173.522131, 175.293344 +3.383333, 39.642010, 173.608557, 175.380735 +3.400000, 39.931501, 173.695026, 175.468170 +3.416667, 40.221137, 173.781537, 175.555649 +3.433333, 40.510917, 173.868092, 175.643171 +3.450000, 40.800842, 173.954690, 175.730737 +3.466667, 41.090911, 174.041331, 175.818346 +3.483333, 41.381124, 174.128015, 175.905999 +3.500000, 41.671482, 174.214742, 175.993696 +3.516667, 41.961985, 174.301512, 176.081436 +3.533333, 42.252632, 174.388326, 176.169220 +3.550000, 42.543424, 174.475182, 176.257048 +3.566667, 42.834361, 174.562082, 176.344919 +3.583333, 43.125442, 174.649025, 176.432835 +3.600000, 43.416669, 174.736011, 176.520794 +3.616667, 43.708041, 174.823040, 176.608797 +3.633333, 43.999557, 174.910113, 176.696843 +3.650000, 44.291220, 174.997228, 176.784934 +3.666667, 44.583027, 175.084388, 176.873068 +3.683333, 44.874979, 175.171590, 176.961247 +3.700000, 45.167078, 175.258836, 177.049469 +3.716667, 45.459321, 175.346125, 177.137735 +3.733333, 45.751710, 175.433458, 177.226045 +3.750000, 46.044245, 175.520834, 177.314399 +3.766667, 46.336925, 175.608253, 177.402797 +3.783333, 46.629752, 175.695716, 177.491240 +3.800000, 46.922724, 175.783222, 177.579726 +3.816667, 47.215842, 175.870772, 177.668256 +3.833333, 47.509105, 175.958366, 177.756830 +3.850000, 47.802515, 176.046003, 177.845449 +3.866667, 48.096072, 176.133683, 177.934112 +3.883333, 48.389774, 176.221407, 178.022818 +3.900000, 48.683623, 176.309175, 178.111569 +3.916667, 48.977618, 176.396986, 178.200364 +3.933333, 49.271759, 176.484841, 178.289204 +3.950000, 49.566047, 176.572740, 178.378087 +3.966667, 49.860481, 176.660682, 178.467015 +3.983333, 50.155062, 176.748668, 178.555988 +4.000000, 50.449790, 176.836698, 178.645004 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/dwc_100kW_hd_300kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/dwc_100kW_hd_300kWh.csv new file mode 100644 index 0000000..96d0f63 --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/dwc_100kW_hd_300kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.540149, 97.226836, 98.300826 +1.016667, 1.322189, 140.767211, 142.436346 +1.033333, 2.125576, 144.609617, 146.334683 +1.050000, 2.950913, 148.560602, 150.343758 +1.066667, 3.798795, 152.618917, 154.462350 +1.083333, 4.664604, 155.845460, 157.737259 +1.100000, 5.536532, 156.947146, 158.855549 +1.116667, 6.414100, 157.962195, 159.885935 +1.133333, 7.297342, 158.983562, 160.922775 +1.150000, 8.186295, 160.011494, 161.966320 +1.166667, 9.080995, 161.046033, 163.016611 +1.183333, 9.981479, 162.087220, 164.073692 +1.200000, 10.885700, 162.759743, 164.756503 +1.216667, 11.791406, 163.027002, 165.027855 +1.233333, 12.698593, 163.293727, 165.298668 +1.250000, 13.607265, 163.560886, 165.569924 +1.266667, 14.517423, 163.828479, 165.841623 +1.283333, 15.429070, 164.096507, 166.113767 +1.300000, 16.342209, 164.364971, 166.386356 +1.316667, 17.256842, 164.633871, 166.659391 +1.333333, 18.172970, 164.903209, 166.932873 +1.350000, 19.090598, 165.172985, 167.206802 +1.366667, 20.009727, 165.443199, 167.481179 +1.383333, 20.930360, 165.713853, 167.756005 +1.400000, 21.852498, 165.984946, 168.031281 +1.416667, 22.776145, 166.256481, 168.307007 +1.433333, 23.701303, 166.528457, 168.583184 +1.450000, 24.627975, 166.800875, 168.859813 +1.466667, 25.556162, 167.073736, 169.136894 +1.483333, 26.485868, 167.347040, 169.414429 +1.500000, 27.417095, 167.620789, 169.692417 +1.516667, 28.349845, 167.894983, 169.970861 +1.533333, 29.284120, 168.169623, 170.249760 +1.550000, 30.219924, 168.444709, 170.529115 +1.566667, 31.157259, 168.720242, 170.808927 +1.583333, 32.096127, 168.996223, 171.089197 +1.600000, 33.036530, 169.272652, 171.369925 +1.616667, 33.978472, 169.549531, 171.651112 +1.633333, 34.921955, 169.826860, 171.932759 +1.650000, 35.866981, 170.104640, 172.214867 +1.666667, 36.813552, 170.382872, 172.497437 +1.683333, 37.761672, 170.661555, 172.780468 +1.700000, 38.711342, 170.940691, 173.063963 +1.716667, 39.662566, 171.220282, 173.347921 +1.733333, 40.615346, 171.500326, 173.632344 +1.750000, 41.569684, 171.780826, 173.917232 +1.766667, 42.525582, 172.061781, 174.202585 +1.783333, 43.483045, 172.343193, 174.488406 +1.800000, 44.442073, 172.625062, 174.774694 +1.816667, 45.402669, 172.907390, 175.061450 +1.833333, 46.364837, 173.190176, 175.348675 +1.850000, 47.328578, 173.473422, 175.636370 +1.866667, 48.293896, 173.757128, 175.924536 +1.883333, 49.260792, 174.041294, 176.213172 +1.900000, 50.229269, 174.325923, 176.502281 +1.916667, 51.199330, 174.611014, 176.791863 +1.933333, 52.170978, 174.896569, 177.081918 +1.950000, 53.144214, 175.182587, 177.372447 +1.966667, 54.119043, 175.469070, 177.663452 +1.983333, 55.095465, 175.756018, 177.954932 +2.000000, 56.073484, 176.043433, 178.246890 +2.016667, 57.053102, 176.331314, 178.539324 +2.033333, 58.034323, 176.619664, 178.832237 +2.050000, 59.017148, 176.908481, 179.125629 +2.066667, 60.001580, 177.197768, 179.419500 +2.083333, 60.987622, 177.487525, 179.713852 +2.100000, 61.975276, 177.777753, 180.008686 +2.116667, 62.964545, 178.068451, 180.304001 +2.133333, 63.955432, 178.359623, 180.599800 +2.150000, 64.947939, 178.651267, 180.896082 +2.166667, 65.942069, 178.943385, 181.192849 +2.183333, 66.937824, 179.235977, 181.490100 +2.200000, 67.935208, 179.529044, 181.787838 +2.216667, 68.934222, 179.822588, 182.086063 +2.233333, 69.934870, 180.116608, 182.384775 +2.250000, 70.937154, 180.411106, 182.683976 +2.266667, 71.941076, 180.706082, 182.983666 +2.283333, 72.946641, 181.001537, 183.283846 +2.300000, 73.953849, 181.297472, 183.584516 +2.316667, 74.962704, 181.593888, 183.885679 +2.333333, 75.973208, 181.890785, 184.187333 +2.350000, 76.985364, 182.188164, 184.489481 +2.366667, 77.999176, 182.486026, 184.792123 +2.383333, 79.014644, 182.784371, 185.095260 +2.400000, 80.031773, 183.083201, 185.398892 +2.416667, 81.050565, 183.382517, 185.703021 +2.433333, 82.071022, 183.682318, 186.007646 +2.450000, 83.093148, 183.982606, 186.312770 +2.466667, 84.116945, 184.283382, 186.618393 +2.483333, 85.142415, 184.584646, 186.924515 +2.500000, 86.169562, 184.886399, 187.231138 +2.516667, 87.198387, 185.188642, 187.538262 +2.533333, 88.228895, 185.491376, 187.845888 +2.550000, 89.261087, 185.794601, 188.154017 +2.566667, 90.294967, 186.098318, 188.462650 +2.583333, 91.330536, 186.402529, 188.771787 +2.600000, 92.367799, 186.707233, 189.081429 +2.616667, 93.406757, 187.012432, 189.391578 +2.633333, 94.447413, 187.318127, 189.702234 +2.650000, 95.419347, 174.948099, 177.134261 +2.666667, 96.240102, 147.735849, 149.506830 +2.683333, 96.931053, 124.371253, 125.807945 +2.700000, 97.512687, 104.694130, 105.865151 +2.716667, 98.002282, 88.127134, 89.085694 +2.733333, 98.414391, 74.179592, 74.967223 +2.750000, 98.761269, 62.437966, 63.087318 +2.766667, 99.053234, 52.553818, 53.090741 +2.783333, 99.298977, 44.233613, 44.678711 +2.800000, 99.505811, 37.230115, 37.599910 +2.816667, 99.679894, 31.335104, 31.642926 +2.833333, 99.800266, 21.666811, 21.875780 +2.850000, 99.800366, 0.018051, 0.018218 +2.866667, 99.800366, 0.000000, 0.000000 +2.883333, 99.800366, 0.000000, 0.000000 +2.900000, 99.800366, 0.000000, 0.000000 +2.916667, 99.800366, 0.000000, 0.000000 +2.933333, 99.800366, 0.000000, 0.000000 +2.950000, 99.800366, 0.000000, 0.000000 +2.966667, 99.800366, 0.000000, 0.000000 +2.983333, 99.800366, 0.000000, 0.000000 +3.000000, 99.800366, 0.000000, 0.000000 +3.016667, 99.800366, 0.000000, 0.000000 +3.033333, 99.800366, 0.000000, 0.000000 +3.050000, 99.800366, 0.000000, 0.000000 +3.066667, 99.800366, 0.000000, 0.000000 +3.083333, 99.800366, 0.000000, 0.000000 +3.100000, 99.800366, 0.000000, 0.000000 +3.116667, 99.800366, 0.000000, 0.000000 +3.133333, 99.800366, 0.000000, 0.000000 +3.150000, 99.800366, 0.000000, 0.000000 +3.166667, 99.800366, 0.000000, 0.000000 +3.183333, 99.800366, 0.000000, 0.000000 +3.200000, 99.800366, 0.000000, 0.000000 +3.216667, 99.800366, 0.000000, 0.000000 +3.233333, 99.800366, 0.000000, 0.000000 +3.250000, 99.800366, 0.000000, 0.000000 +3.266667, 99.800366, 0.000000, 0.000000 +3.283333, 99.800366, 0.000000, 0.000000 +3.300000, 99.800366, 0.000000, 0.000000 +3.316667, 99.800366, 0.000000, 0.000000 +3.333333, 99.800366, 0.000000, 0.000000 +3.350000, 99.800366, 0.000000, 0.000000 +3.366667, 99.800366, 0.000000, 0.000000 +3.383333, 99.800366, 0.000000, 0.000000 +3.400000, 99.800366, 0.000000, 0.000000 +3.416667, 99.800366, 0.000000, 0.000000 +3.433333, 99.800366, 0.000000, 0.000000 +3.450000, 99.800366, 0.000000, 0.000000 +3.466667, 99.800366, 0.000000, 0.000000 +3.483333, 99.800366, 0.000000, 0.000000 +3.500000, 99.800366, 0.000000, 0.000000 +3.516667, 99.800366, 0.000000, 0.000000 +3.533333, 99.800366, 0.000000, 0.000000 +3.550000, 99.800366, 0.000000, 0.000000 +3.566667, 99.800366, 0.000000, 0.000000 +3.583333, 99.800366, 0.000000, 0.000000 +3.600000, 99.800366, 0.000000, 0.000000 +3.616667, 99.800366, 0.000000, 0.000000 +3.633333, 99.800366, 0.000000, 0.000000 +3.650000, 99.800366, 0.000000, 0.000000 +3.666667, 99.800366, 0.000000, 0.000000 +3.683333, 99.800366, 0.000000, 0.000000 +3.700000, 99.800366, 0.000000, 0.000000 +3.716667, 99.800366, 0.000000, 0.000000 +3.733333, 99.800366, 0.000000, 0.000000 +3.750000, 99.800366, 0.000000, 0.000000 +3.766667, 99.800366, 0.000000, 0.000000 +3.783333, 99.800366, 0.000000, 0.000000 +3.800000, 99.800366, 0.000000, 0.000000 +3.816667, 99.800366, 0.000000, 0.000000 +3.833333, 99.800366, 0.000000, 0.000000 +3.850000, 99.800366, 0.000000, 0.000000 +3.866667, 99.800366, 0.000000, 0.000000 +3.883333, 99.800366, 0.000000, 0.000000 +3.900000, 99.800366, 0.000000, 0.000000 +3.916667, 99.800366, 0.000000, 0.000000 +3.933333, 99.800366, 0.000000, 0.000000 +3.950000, 99.800366, 0.000000, 0.000000 +3.966667, 99.800366, 0.000000, 0.000000 +3.983333, 99.800366, 0.000000, 0.000000 +4.000000, 99.800366, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/dwc_100kW_hd_400kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/dwc_100kW_hd_400kWh.csv new file mode 100644 index 0000000..e14a9d8 --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/dwc_100kW_hd_400kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.404015, 96.963528, 97.990453 +1.016667, 0.986169, 139.716947, 141.279947 +1.033333, 1.580219, 142.572038, 144.172660 +1.050000, 2.186419, 145.487973, 147.127254 +1.066667, 2.805016, 148.463298, 150.142272 +1.083333, 3.436262, 151.499213, 153.218944 +1.100000, 4.080340, 154.578610, 156.339946 +1.116667, 4.731390, 156.252072, 158.036129 +1.133333, 5.385610, 157.012620, 158.807029 +1.150000, 6.043004, 157.774571, 159.579368 +1.166667, 6.703588, 158.540204, 160.355455 +1.183333, 7.367378, 159.309535, 161.135307 +1.200000, 8.034388, 160.082583, 161.918944 +1.216667, 8.704636, 160.859366, 162.706384 +1.233333, 9.378135, 161.639901, 163.497644 +1.250000, 10.054895, 162.422284, 164.290795 +1.266667, 10.733523, 162.870696, 164.745386 +1.283333, 11.412986, 163.071277, 164.948733 +1.300000, 12.093285, 163.271636, 165.151857 +1.316667, 12.774419, 163.472241, 165.355230 +1.333333, 13.456390, 163.673090, 165.558852 +1.350000, 14.139199, 163.874186, 165.762725 +1.366667, 14.822847, 164.075527, 165.966849 +1.383333, 15.507335, 164.277115, 166.171223 +1.400000, 16.192664, 164.478949, 166.375848 +1.416667, 16.878835, 164.681030, 166.580725 +1.433333, 17.565849, 164.883358, 166.785854 +1.450000, 18.253707, 165.085934, 166.991234 +1.466667, 18.942411, 165.288757, 167.196867 +1.483333, 19.631960, 165.491829, 167.402752 +1.500000, 20.322356, 165.695148, 167.608891 +1.516667, 21.013601, 165.898717, 167.815282 +1.533333, 21.705695, 166.102534, 168.021927 +1.550000, 22.398639, 166.306601, 168.228827 +1.566667, 23.092435, 166.510917, 168.435980 +1.583333, 23.787082, 166.715483, 168.643388 +1.600000, 24.482584, 166.920299, 168.851050 +1.616667, 25.178939, 167.125366, 169.058968 +1.633333, 25.876150, 167.330683, 169.267141 +1.650000, 26.574218, 167.536251, 169.475570 +1.666667, 27.273143, 167.742071, 169.684255 +1.683333, 27.972927, 167.948143, 169.893196 +1.700000, 28.673571, 168.154466, 170.102394 +1.716667, 29.375075, 168.361042, 170.311849 +1.733333, 30.077441, 168.567870, 170.521561 +1.750000, 30.780670, 168.774952, 170.731531 +1.766667, 31.484763, 168.982286, 170.941759 +1.783333, 32.189721, 169.189874, 171.152245 +1.800000, 32.895545, 169.397716, 171.362990 +1.816667, 33.602236, 169.605812, 171.573994 +1.833333, 34.309795, 169.814162, 171.785256 +1.850000, 35.018223, 170.022767, 171.996779 +1.866667, 35.727521, 170.231627, 172.208561 +1.883333, 36.437691, 170.440743, 172.420603 +1.900000, 37.148733, 170.650114, 172.632906 +1.916667, 37.860649, 170.859741, 172.845470 +1.933333, 38.573439, 171.069624, 173.058294 +1.950000, 39.287105, 171.279764, 173.271380 +1.966667, 40.001647, 171.490161, 173.484728 +1.983333, 40.717067, 171.700815, 173.698338 +2.000000, 41.433366, 171.911727, 173.912211 +2.016667, 42.150545, 172.122896, 174.126346 +2.033333, 42.868604, 172.334324, 174.340744 +2.050000, 43.587546, 172.546010, 174.555405 +2.066667, 44.307371, 172.757955, 174.770330 +2.083333, 45.028080, 172.970159, 174.985519 +2.100000, 45.749674, 173.182622, 175.200973 +2.116667, 46.472155, 173.395346, 175.416691 +2.133333, 47.195523, 173.608329, 175.632674 +2.150000, 47.919779, 173.821572, 175.848922 +2.166667, 48.644926, 174.035076, 176.065436 +2.183333, 49.370962, 174.248841, 176.282216 +2.200000, 50.097891, 174.462868, 176.499263 +2.216667, 50.825712, 174.677156, 176.716575 +2.233333, 51.554428, 174.891706, 176.934155 +2.250000, 52.284038, 175.106518, 177.152002 +2.266667, 53.014545, 175.321593, 177.370116 +2.283333, 53.745949, 175.536931, 177.588499 +2.300000, 54.478251, 175.752531, 177.807150 +2.316667, 55.211453, 175.968396, 178.026069 +2.333333, 55.945555, 176.184524, 178.245257 +2.350000, 56.680559, 176.400916, 178.464714 +2.366667, 57.416465, 176.617573, 178.684441 +2.383333, 58.153276, 176.834495, 178.904438 +2.400000, 58.890991, 177.051682, 179.124704 +2.416667, 59.629612, 177.269134, 179.345242 +2.433333, 60.369141, 177.486852, 179.566050 +2.450000, 61.109578, 177.704836, 179.787130 +2.466667, 61.850924, 177.923086, 180.008481 +2.483333, 62.593181, 178.141603, 180.230103 +2.500000, 63.336349, 178.360387, 180.451999 +2.516667, 64.080430, 178.579439, 180.674166 +2.533333, 64.825425, 178.798758, 180.896606 +2.550000, 65.571335, 179.018346, 181.119320 +2.566667, 66.318160, 179.238201, 181.342307 +2.583333, 67.065903, 179.458325, 181.565568 +2.600000, 67.814565, 179.678719, 181.789103 +2.616667, 68.564146, 179.899381, 182.012913 +2.633333, 69.314647, 180.120314, 182.236998 +2.650000, 70.066070, 180.341516, 182.461357 +2.666667, 70.818416, 180.562988, 182.685992 +2.683333, 71.571685, 180.784731, 182.910904 +2.700000, 72.325880, 181.006745, 183.136091 +2.716667, 73.081001, 181.229031, 183.361555 +2.733333, 73.837049, 181.451588, 183.587296 +2.750000, 74.594026, 181.674417, 183.813314 +2.766667, 75.351932, 181.897518, 184.039609 +2.783333, 76.110769, 182.120891, 184.266183 +2.800000, 76.870538, 182.344538, 184.493034 +2.816667, 77.631240, 182.568458, 184.720164 +2.833333, 78.392876, 182.792651, 184.947574 +2.850000, 79.155448, 183.017119, 185.175262 +2.866667, 79.918955, 183.241860, 185.403230 +2.883333, 80.683401, 183.466877, 185.631478 +2.900000, 81.448785, 183.692168, 185.860006 +2.916667, 82.215109, 183.917734, 186.088815 +2.933333, 82.982374, 184.143576, 186.317905 +2.950000, 83.750581, 184.369694, 186.547276 +2.966667, 84.519731, 184.596088, 186.776929 +2.983333, 85.289826, 184.822759, 187.006864 +3.000000, 86.060866, 185.049706, 187.237081 +3.016667, 86.832853, 185.276931, 187.467580 +3.033333, 87.605789, 185.504433, 187.698363 +3.050000, 88.379673, 185.732213, 187.929430 +3.066667, 89.154507, 185.960272, 188.160779 +3.083333, 89.930293, 186.188609, 188.392413 +3.100000, 90.707032, 186.417225, 188.624332 +3.116667, 91.484724, 186.646120, 188.856535 +3.133333, 92.263371, 186.875295, 189.089023 +3.150000, 93.042974, 187.104750, 189.321797 +3.166667, 93.823534, 187.334485, 189.554857 +3.183333, 94.605053, 187.564501, 189.788203 +3.200000, 95.387531, 187.794798, 190.021835 +3.216667, 96.169284, 187.620577, 189.845091 +3.233333, 96.870832, 168.371676, 170.322631 +3.250000, 97.462242, 141.938198, 143.530448 +3.266667, 97.959997, 119.461323, 120.763968 +3.283333, 98.378924, 100.542492, 101.612333 +3.300000, 98.731505, 84.619368, 85.501017 +3.316667, 99.028245, 71.217727, 71.946468 +3.333333, 99.277989, 59.938374, 60.542300 +3.350000, 99.488177, 50.445284, 50.946906 +3.366667, 99.665076, 42.455618, 42.873081 +3.383333, 99.800211, 32.432514, 32.746908 +3.400000, 99.800324, 0.027060, 0.027310 +3.416667, 99.800324, 0.000000, 0.000000 +3.433333, 99.800324, 0.000000, 0.000000 +3.450000, 99.800324, 0.000000, 0.000000 +3.466667, 99.800324, 0.000000, 0.000000 +3.483333, 99.800324, 0.000000, 0.000000 +3.500000, 99.800324, 0.000000, 0.000000 +3.516667, 99.800324, 0.000000, 0.000000 +3.533333, 99.800324, 0.000000, 0.000000 +3.550000, 99.800324, 0.000000, 0.000000 +3.566667, 99.800324, 0.000000, 0.000000 +3.583333, 99.800324, 0.000000, 0.000000 +3.600000, 99.800324, 0.000000, 0.000000 +3.616667, 99.800324, 0.000000, 0.000000 +3.633333, 99.800324, 0.000000, 0.000000 +3.650000, 99.800324, 0.000000, 0.000000 +3.666667, 99.800324, 0.000000, 0.000000 +3.683333, 99.800324, 0.000000, 0.000000 +3.700000, 99.800324, 0.000000, 0.000000 +3.716667, 99.800324, 0.000000, 0.000000 +3.733333, 99.800324, 0.000000, 0.000000 +3.750000, 99.800324, 0.000000, 0.000000 +3.766667, 99.800324, 0.000000, 0.000000 +3.783333, 99.800324, 0.000000, 0.000000 +3.800000, 99.800324, 0.000000, 0.000000 +3.816667, 99.800324, 0.000000, 0.000000 +3.833333, 99.800324, 0.000000, 0.000000 +3.850000, 99.800324, 0.000000, 0.000000 +3.866667, 99.800324, 0.000000, 0.000000 +3.883333, 99.800324, 0.000000, 0.000000 +3.900000, 99.800324, 0.000000, 0.000000 +3.916667, 99.800324, 0.000000, 0.000000 +3.933333, 99.800324, 0.000000, 0.000000 +3.950000, 99.800324, 0.000000, 0.000000 +3.966667, 99.800324, 0.000000, 0.000000 +3.983333, 99.800324, 0.000000, 0.000000 +4.000000, 99.800324, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/dwc_100kW_hd_600kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/dwc_100kW_hd_600kWh.csv new file mode 100644 index 0000000..437ce3d --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/dwc_100kW_hd_600kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.268613, 96.700509, 97.680928 +1.016667, 0.653815, 138.672993, 140.132939 +1.033333, 1.044256, 140.558639, 142.040897 +1.050000, 1.440010, 142.471373, 143.976331 +1.066667, 1.841149, 144.410066, 145.938102 +1.083333, 2.247746, 146.375068, 147.926566 +1.100000, 2.659876, 148.366735, 149.942087 +1.116667, 3.077613, 150.385426, 151.985032 +1.133333, 3.501034, 152.431507, 154.055772 +1.150000, 3.930216, 154.505345, 156.154684 +1.166667, 4.363667, 156.042636, 157.710613 +1.183333, 4.798587, 156.571097, 158.245491 +1.200000, 5.234915, 157.078012, 158.758567 +1.216667, 5.672655, 157.586522, 159.273262 +1.233333, 6.111813, 158.096673, 159.789623 +1.250000, 6.552392, 158.608471, 160.307655 +1.266667, 6.994397, 159.121921, 160.827364 +1.283333, 7.437833, 159.637028, 161.348756 +1.300000, 7.882705, 160.153798, 161.871835 +1.316667, 8.329017, 160.672235, 162.396608 +1.333333, 8.776773, 161.192346, 162.923080 +1.350000, 9.225979, 161.714135, 163.451255 +1.366667, 9.676639, 162.237609, 163.981141 +1.383333, 10.128714, 162.746903, 164.496678 +1.400000, 10.581440, 162.981466, 164.734118 +1.416667, 11.034538, 163.115319, 164.869613 +1.433333, 11.488008, 163.249102, 165.005038 +1.450000, 11.941850, 163.382994, 165.140574 +1.466667, 12.396064, 163.516996, 165.276220 +1.483333, 12.850650, 163.651107, 165.411979 +1.500000, 13.305609, 163.785328, 165.547848 +1.516667, 13.760942, 163.919659, 165.683829 +1.533333, 14.216648, 164.054099, 165.819921 +1.550000, 14.672727, 164.188650, 165.956125 +1.566667, 15.129181, 164.323310, 166.092441 +1.583333, 15.586009, 164.458081, 166.228868 +1.600000, 16.043211, 164.592962, 166.365408 +1.616667, 16.500789, 164.727953, 166.502059 +1.633333, 16.958742, 164.863055, 166.638823 +1.650000, 17.417071, 164.998267, 166.775698 +1.666667, 17.875775, 165.133589, 166.912686 +1.683333, 18.334856, 165.269022, 167.049786 +1.700000, 18.794313, 165.404566, 167.186999 +1.716667, 19.254147, 165.540221, 167.324324 +1.733333, 19.714358, 165.675987, 167.461762 +1.750000, 20.174946, 165.811863, 167.599313 +1.766667, 20.635912, 165.947851, 167.736976 +1.783333, 21.097257, 166.083950, 167.874752 +1.800000, 21.558979, 166.220160, 168.012642 +1.816667, 22.021081, 166.356482, 168.150644 +1.833333, 22.483561, 166.492915, 168.288760 +1.850000, 22.946421, 166.629459, 168.426988 +1.866667, 23.409660, 166.766116, 168.565330 +1.883333, 23.873279, 166.902884, 168.703786 +1.900000, 24.337278, 167.039763, 168.842355 +1.916667, 24.801658, 167.176755, 168.981038 +1.933333, 25.266419, 167.313859, 169.119835 +1.950000, 25.731561, 167.451075, 169.258745 +1.966667, 26.197084, 167.588403, 169.397769 +1.983333, 26.662989, 167.725843, 169.536908 +2.000000, 27.129277, 167.863396, 169.676160 +2.016667, 27.595946, 168.001061, 169.815527 +2.033333, 28.062998, 168.138838, 169.955008 +2.050000, 28.530434, 168.276728, 170.094603 +2.066667, 28.998253, 168.414732, 170.234313 +2.083333, 29.466455, 168.552847, 170.374137 +2.100000, 29.935041, 168.691076, 170.514076 +2.116667, 30.404012, 168.829418, 170.654130 +2.133333, 30.873367, 168.967873, 170.794299 +2.150000, 31.343107, 169.106441, 170.934582 +2.166667, 31.813232, 169.245122, 171.074981 +2.183333, 32.283743, 169.383917, 171.215495 +2.200000, 32.754640, 169.522825, 171.356124 +2.216667, 33.225923, 169.661847, 171.496868 +2.233333, 33.697592, 169.800982, 171.637728 +2.250000, 34.169649, 169.940231, 171.778703 +2.266667, 34.642092, 170.079594, 171.919794 +2.283333, 35.114923, 170.219071, 172.061000 +2.300000, 35.588141, 170.358662, 172.202323 +2.316667, 36.061748, 170.498367, 172.343761 +2.333333, 36.535743, 170.638186, 172.485315 +2.350000, 37.010126, 170.778120, 172.626986 +2.366667, 37.484899, 170.918168, 172.768772 +2.383333, 37.960061, 171.058330, 172.910675 +2.400000, 38.435613, 171.198607, 173.052694 +2.416667, 38.911554, 171.338999, 173.194830 +2.433333, 39.387886, 171.479505, 173.337082 +2.450000, 39.864609, 171.620127, 173.479451 +2.466667, 40.341722, 171.760863, 173.621937 +2.483333, 40.819227, 171.901714, 173.764539 +2.500000, 41.297124, 172.042680, 173.907258 +2.516667, 41.775412, 172.183762, 174.050095 +2.533333, 42.254092, 172.324959, 174.193048 +2.550000, 42.733165, 172.466272, 174.336119 +2.566667, 43.212631, 172.607699, 174.479307 +2.583333, 43.692490, 172.749243, 174.622613 +2.600000, 44.172743, 172.890902, 174.766036 +2.616667, 44.653389, 173.032677, 174.909577 +2.633333, 45.134429, 173.174568, 175.053235 +2.650000, 45.615864, 173.316575, 175.197011 +2.666667, 46.097694, 173.458698, 175.340905 +2.683333, 46.579919, 173.600937, 175.484917 +2.700000, 47.062539, 173.743292, 175.629047 +2.716667, 47.545555, 173.885764, 175.773296 +2.733333, 48.028967, 174.028352, 175.917662 +2.750000, 48.512776, 174.171057, 176.062147 +2.766667, 48.996981, 174.313879, 176.206751 +2.783333, 49.481583, 174.456817, 176.351473 +2.800000, 49.966583, 174.599872, 176.496313 +2.816667, 50.451980, 174.743044, 176.641273 +2.833333, 50.937776, 174.886333, 176.786351 +2.850000, 51.423969, 175.029739, 176.931549 +2.866667, 51.910562, 175.173262, 177.076865 +2.883333, 52.397553, 175.316902, 177.222301 +2.900000, 52.884944, 175.460660, 177.367855 +2.916667, 53.372734, 175.604536, 177.513530 +2.933333, 53.860924, 175.748529, 177.659323 +2.950000, 54.349515, 175.892640, 177.805236 +2.966667, 54.838506, 176.036868, 177.951269 +2.983333, 55.327899, 176.181215, 178.097422 +3.000000, 55.817692, 176.325679, 178.243694 +3.016667, 56.307887, 176.470261, 178.390086 +3.033333, 56.798485, 176.614962, 178.536599 +3.050000, 57.289484, 176.759781, 178.683231 +3.066667, 57.780886, 176.904718, 178.829984 +3.083333, 58.272691, 177.049774, 178.976857 +3.100000, 58.764899, 177.194948, 179.123851 +3.116667, 59.257511, 177.340241, 179.270965 +3.133333, 59.750527, 177.485653, 179.418199 +3.150000, 60.243946, 177.631183, 179.565555 +3.166667, 60.737771, 177.776833, 179.713031 +3.183333, 61.232000, 177.922601, 179.860628 +3.200000, 61.726635, 178.068489, 180.008346 +3.216667, 62.221675, 178.214496, 180.156185 +3.233333, 62.717122, 178.360622, 180.304146 +3.250000, 63.212974, 178.506867, 180.452228 +3.266667, 63.709233, 178.653233, 180.600431 +3.283333, 64.205899, 178.799717, 180.748756 +3.300000, 64.702972, 178.946322, 180.897202 +3.316667, 65.200453, 179.093046, 181.045770 +3.333333, 65.698341, 179.239890, 181.194460 +3.350000, 66.196638, 179.386854, 181.343272 +3.366667, 66.695343, 179.533938, 181.492206 +3.383333, 67.194458, 179.681143, 181.641262 +3.400000, 67.693981, 179.828468, 181.790440 +3.416667, 68.193914, 179.975913, 181.939740 +3.433333, 68.694257, 180.123478, 182.089163 +3.450000, 69.195011, 180.271165, 182.238708 +3.466667, 69.696174, 180.418972, 182.388377 +3.483333, 70.197749, 180.566899, 182.538167 +3.500000, 70.699735, 180.714948, 182.688081 +3.516667, 71.202133, 180.863117, 182.838117 +3.533333, 71.704942, 181.011408, 182.988277 +3.550000, 72.208164, 181.159820, 183.138559 +3.566667, 72.711798, 181.308353, 183.288965 +3.583333, 73.215845, 181.457007, 183.439494 +3.600000, 73.720306, 181.605783, 183.590147 +3.616667, 74.225180, 181.754681, 183.740923 +3.633333, 74.730468, 181.903700, 183.891823 +3.650000, 75.236170, 182.052841, 184.042846 +3.666667, 75.742287, 182.202104, 184.193993 +3.683333, 76.248819, 182.351489, 184.345264 +3.700000, 76.755766, 182.500996, 184.496660 +3.716667, 77.263129, 182.650625, 184.648179 +3.733333, 77.770908, 182.800376, 184.799822 +3.750000, 78.279103, 182.950250, 184.951590 +3.766667, 78.787715, 183.100246, 185.103482 +3.783333, 79.296744, 183.250364, 185.255499 +3.800000, 79.806190, 183.400606, 185.407641 +3.816667, 80.316054, 183.550970, 185.559907 +3.833333, 80.826336, 183.701457, 185.712298 +3.850000, 81.337036, 183.852067, 185.864814 +3.866667, 81.848155, 184.002800, 186.017455 +3.883333, 82.359693, 184.153656, 186.170221 +3.900000, 82.871650, 184.304635, 186.323113 +3.916667, 83.384027, 184.455738, 186.476129 +3.933333, 83.896824, 184.606964, 186.629271 +3.950000, 84.410042, 184.758314, 186.782539 +3.966667, 84.923680, 184.909787, 186.935933 +3.983333, 85.437739, 185.061385, 187.089452 +4.000000, 85.952220, 185.213106, 187.243097 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/dwc_100kW_hd_800kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/dwc_100kW_hd_800kWh.csv new file mode 100644 index 0000000..e031f7d --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/dwc_100kW_hd_800kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.201186, 96.569112, 97.526485 +1.016667, 0.489005, 138.153393, 139.562944 +1.033333, 0.779757, 139.560989, 140.986268 +1.050000, 1.073474, 140.983921, 142.425126 +1.066667, 1.370185, 142.421333, 143.878655 +1.083333, 1.669921, 143.873370, 145.347003 +1.100000, 1.972713, 145.340181, 146.830320 +1.116667, 2.278592, 146.821917, 148.328761 +1.133333, 2.587589, 148.318728, 149.842477 +1.150000, 2.899737, 149.830766, 151.371625 +1.166667, 3.215066, 151.358187, 152.916362 +1.183333, 3.533611, 152.901146, 154.476845 +1.200000, 3.855402, 154.459800, 156.053237 +1.216667, 4.180089, 155.849748, 157.459030 +1.233333, 4.505818, 156.350117, 157.965110 +1.250000, 4.832339, 156.730093, 158.349425 +1.266667, 5.159653, 157.110755, 158.734436 +1.283333, 5.487762, 157.492340, 159.120382 +1.300000, 5.816668, 157.874849, 159.507266 +1.316667, 6.146373, 158.258286, 159.895089 +1.333333, 6.476879, 158.642652, 160.283854 +1.350000, 6.808187, 159.027949, 160.673564 +1.366667, 7.140300, 159.414180, 161.064220 +1.383333, 7.473219, 159.801347, 161.455825 +1.400000, 7.806947, 160.189452, 161.848380 +1.416667, 8.141486, 160.578497, 162.241890 +1.433333, 8.476837, 160.968486, 162.636354 +1.450000, 8.813002, 161.359419, 163.031777 +1.466667, 9.149984, 161.751300, 163.428161 +1.483333, 9.487784, 162.144130, 163.825507 +1.500000, 9.826405, 162.537913, 164.223817 +1.516667, 10.165775, 162.897536, 164.587578 +1.533333, 10.505435, 163.036831, 164.728477 +1.550000, 10.845304, 163.137253, 164.830054 +1.566667, 11.185383, 163.237669, 164.931626 +1.583333, 11.525670, 163.338146, 165.033260 +1.600000, 11.866168, 163.438685, 165.134957 +1.616667, 12.206875, 163.539286, 165.236717 +1.633333, 12.547791, 163.639949, 165.338539 +1.650000, 12.888917, 163.740673, 165.440423 +1.666667, 13.230254, 163.841460, 165.542371 +1.683333, 13.571800, 163.942308, 165.644381 +1.700000, 13.913557, 164.043218, 165.746454 +1.716667, 14.255524, 164.144190, 165.848590 +1.733333, 14.597702, 164.245224, 165.950789 +1.750000, 14.940090, 164.346320, 166.053050 +1.766667, 15.282689, 164.447479, 166.155375 +1.783333, 15.625499, 164.548699, 166.257762 +1.800000, 15.968519, 164.649982, 166.360213 +1.816667, 16.311751, 164.751326, 166.462726 +1.833333, 16.655194, 164.852733, 166.565303 +1.850000, 16.998849, 164.954203, 166.667943 +1.866667, 17.342715, 165.055734, 166.770646 +1.883333, 17.686793, 165.157328, 166.873412 +1.900000, 18.031082, 165.258985, 166.976242 +1.916667, 18.375584, 165.360703, 167.079134 +1.933333, 18.720297, 165.462485, 167.182091 +1.950000, 19.065223, 165.564328, 167.285110 +1.966667, 19.410361, 165.666235, 167.388193 +1.983333, 19.755712, 165.768203, 167.491339 +2.000000, 20.101275, 165.870235, 167.594549 +2.016667, 20.447050, 165.972329, 167.697822 +2.033333, 20.793039, 166.074486, 167.801159 +2.050000, 21.139240, 166.176705, 167.904560 +2.066667, 21.485655, 166.278988, 168.008024 +2.083333, 21.832283, 166.381333, 168.111552 +2.100000, 22.179124, 166.483741, 168.215143 +2.116667, 22.526178, 166.586212, 168.318799 +2.133333, 22.873446, 166.688746, 168.422518 +2.150000, 23.220928, 166.791342, 168.526301 +2.166667, 23.568624, 166.894002, 168.630148 +2.183333, 23.916534, 166.996725, 168.734058 +2.200000, 24.264658, 167.099511, 168.838033 +2.216667, 24.612996, 167.202360, 168.942072 +2.233333, 24.961549, 167.305272, 169.046175 +2.250000, 25.310316, 167.408247, 169.150341 +2.266667, 25.659298, 167.511286, 169.254572 +2.283333, 26.008495, 167.614388, 169.358868 +2.300000, 26.357906, 167.717553, 169.463227 +2.316667, 26.707533, 167.820782, 169.567650 +2.333333, 27.057375, 167.924074, 169.672138 +2.350000, 27.407432, 168.027429, 169.776690 +2.366667, 27.757704, 168.130848, 169.881307 +2.383333, 28.108193, 168.234330, 169.985987 +2.400000, 28.458897, 168.337876, 170.090733 +2.416667, 28.809816, 168.441485, 170.195542 +2.433333, 29.160952, 168.545158, 170.300417 +2.450000, 29.512304, 168.648895, 170.405356 +2.466667, 29.863872, 168.752696, 170.510359 +2.483333, 30.215656, 168.856560, 170.615427 +2.500000, 30.567658, 168.960488, 170.720560 +2.516667, 30.919875, 169.064479, 170.825757 +2.533333, 31.272310, 169.168535, 170.931019 +2.550000, 31.624961, 169.272655, 171.036346 +2.566667, 31.977829, 169.376838, 171.141738 +2.583333, 32.330915, 169.481085, 171.247194 +2.600000, 32.684218, 169.585397, 171.352716 +2.616667, 33.037738, 169.689772, 171.458302 +2.633333, 33.391476, 169.794212, 171.563954 +2.650000, 33.745432, 169.898716, 171.669670 +2.666667, 34.099605, 170.003284, 171.775452 +2.683333, 34.453997, 170.107916, 171.881299 +2.700000, 34.808606, 170.212612, 171.987210 +2.716667, 35.163434, 170.317373, 172.093187 +2.733333, 35.518481, 170.422198, 172.199229 +2.750000, 35.873745, 170.527087, 172.305337 +2.766667, 36.229229, 170.632041, 172.411510 +2.783333, 36.584931, 170.737059, 172.517748 +2.800000, 36.940852, 170.842141, 172.624051 +2.816667, 37.296992, 170.947288, 172.730420 +2.833333, 37.653352, 171.052500, 172.836855 +2.850000, 38.009930, 171.157777, 172.943355 +2.866667, 38.366729, 171.263117, 173.049920 +2.883333, 38.723746, 171.368523, 173.156551 +2.900000, 39.080984, 171.473994, 173.263248 +2.916667, 39.438441, 171.579529, 173.370010 +2.933333, 39.796118, 171.685129, 173.476838 +2.950000, 40.154016, 171.790793, 173.583732 +2.966667, 40.512134, 171.896523, 173.690691 +2.983333, 40.870472, 172.002317, 173.797717 +3.000000, 41.229031, 172.108177, 173.904808 +3.016667, 41.587810, 172.214101, 174.011965 +3.033333, 41.946810, 172.320091, 174.119188 +3.050000, 42.306031, 172.426146, 174.226478 +3.066667, 42.665473, 172.532265, 174.333833 +3.083333, 43.025137, 172.638450, 174.441254 +3.100000, 43.385022, 172.744700, 174.548741 +3.116667, 43.745128, 172.851016, 174.656295 +3.133333, 44.105456, 172.957396, 174.763915 +3.150000, 44.466006, 173.063842, 174.871600 +3.166667, 44.826777, 173.170353, 174.979353 +3.183333, 45.187771, 173.276930, 175.087171 +3.200000, 45.548987, 173.383572, 175.195056 +3.216667, 45.910425, 173.490280, 175.303007 +3.233333, 46.272085, 173.597053, 175.411025 +3.250000, 46.633968, 173.703892, 175.519109 +3.266667, 46.996074, 173.810796, 175.627260 +3.283333, 47.358403, 173.917766, 175.735477 +3.300000, 47.720954, 174.024801, 175.843761 +3.316667, 48.083729, 174.131902, 175.952111 +3.333333, 48.446727, 174.239070, 176.060529 +3.350000, 48.809949, 174.346302, 176.169013 +3.366667, 49.173394, 174.453601, 176.277563 +3.383333, 49.537062, 174.560966, 176.386181 +3.400000, 49.900955, 174.668396, 176.494865 +3.416667, 50.265071, 174.775892, 176.603616 +3.433333, 50.629412, 174.883455, 176.712434 +3.450000, 50.993977, 174.991083, 176.821320 +3.466667, 51.358766, 175.098778, 176.930272 +3.483333, 51.723779, 175.206538, 177.039291 +3.500000, 52.089018, 175.314365, 177.148377 +3.516667, 52.454481, 175.422258, 177.257531 +3.533333, 52.820169, 175.530217, 177.366751 +3.550000, 53.186082, 175.638243, 177.476039 +3.566667, 53.552220, 175.746335, 177.585394 +3.583333, 53.918583, 175.854493, 177.694816 +3.600000, 54.285172, 175.962717, 177.804306 +3.616667, 54.651987, 176.071009, 177.913863 +3.633333, 55.019027, 176.179366, 178.023488 +3.650000, 55.386294, 176.287790, 178.133180 +3.666667, 55.753786, 176.396281, 178.242939 +3.683333, 56.121504, 176.504838, 178.352766 +3.700000, 56.489449, 176.613462, 178.462661 +3.716667, 56.857620, 176.722152, 178.572623 +3.733333, 57.226018, 176.830910, 178.682653 +3.750000, 57.594642, 176.939734, 178.792750 +3.766667, 57.963494, 177.048624, 178.902916 +3.783333, 58.332572, 177.157582, 179.013149 +3.800000, 58.701877, 177.266607, 179.123450 +3.816667, 59.071410, 177.375698, 179.233819 +3.833333, 59.441170, 177.484857, 179.344256 +3.850000, 59.811158, 177.594082, 179.454761 +3.866667, 60.181373, 177.703375, 179.565333 +3.883333, 60.551816, 177.812734, 179.675974 +3.900000, 60.922487, 177.922161, 179.786683 +3.916667, 61.293387, 178.031655, 179.897460 +3.933333, 61.664514, 178.141216, 180.008305 +3.950000, 62.035870, 178.250845, 180.119219 +3.966667, 62.407455, 178.360540, 180.230201 +3.983333, 62.779268, 178.470304, 180.341251 +4.000000, 63.151310, 178.580134, 180.452369 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/dwc_100kW_ld_100kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/dwc_100kW_ld_100kWh.csv new file mode 100644 index 0000000..7c62d0b --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/dwc_100kW_ld_100kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 1.116397, 66.983816, 67.853467 +1.016667, 2.729222, 96.769530, 98.188508 +1.033333, 4.428579, 101.961406, 103.486499 +1.050000, 6.169847, 104.476075, 106.053673 +1.066667, 7.933631, 105.827012, 107.433118 +1.083333, 9.720159, 107.191680, 108.826796 +1.100000, 11.523566, 108.204437, 109.861220 +1.116667, 13.333075, 108.570558, 110.235202 +1.133333, 15.148475, 108.923973, 110.596221 +1.150000, 16.969783, 109.278500, 110.958391 +1.166667, 18.797019, 109.634168, 111.321739 +1.183333, 20.630202, 109.990978, 111.686270 +1.200000, 22.469351, 110.348936, 112.051988 +1.216667, 24.314485, 110.708043, 112.418895 +1.233333, 26.165624, 111.068305, 112.786996 +1.250000, 28.022786, 111.429725, 113.156296 +1.266667, 29.885991, 111.792305, 113.526797 +1.283333, 31.755258, 112.156051, 113.898503 +1.300000, 33.630608, 112.520965, 114.271419 +1.316667, 35.512059, 112.887052, 114.645548 +1.333333, 37.399631, 113.254314, 115.020895 +1.350000, 39.293343, 113.622756, 115.397462 +1.366667, 41.193216, 113.992381, 115.775255 +1.383333, 43.099269, 114.363193, 116.154277 +1.400000, 45.011523, 114.735196, 116.534531 +1.416667, 46.929996, 115.108393, 116.916022 +1.433333, 48.854709, 115.482788, 117.298755 +1.450000, 50.785682, 115.858385, 117.682732 +1.466667, 52.722935, 116.235187, 118.067957 +1.483333, 54.666488, 116.613199, 118.454436 +1.500000, 56.616362, 116.992425, 118.842172 +1.516667, 58.572577, 117.372867, 119.231168 +1.533333, 60.535152, 117.754529, 119.621429 +1.550000, 62.504109, 118.137417, 120.012960 +1.566667, 64.479468, 118.521532, 120.405763 +1.583333, 66.461249, 118.906880, 120.799844 +1.600000, 68.449474, 119.293464, 121.195205 +1.616667, 70.444162, 119.681287, 121.591852 +1.633333, 72.445334, 120.070355, 121.989789 +1.650000, 74.453012, 120.460670, 122.389019 +1.666667, 76.467216, 120.852237, 122.789547 +1.683333, 78.487967, 121.245059, 123.191377 +1.700000, 80.515286, 121.639140, 123.594513 +1.716667, 82.549194, 122.034484, 123.998959 +1.733333, 84.589712, 122.431096, 124.404720 +1.750000, 86.636862, 122.828979, 124.811799 +1.766667, 88.690148, 123.197129, 125.188475 +1.783333, 90.565282, 112.508072, 114.258243 +1.800000, 92.148184, 94.974091, 96.357090 +1.816667, 93.482307, 80.047423, 81.145566 +1.833333, 94.606519, 67.452719, 68.330236 +1.850000, 95.553685, 56.829949, 57.535360 +1.866667, 96.351572, 47.873218, 48.443419 +1.883333, 97.023626, 40.323242, 40.786486 +1.900000, 97.589635, 33.960502, 34.338578 +1.916667, 98.066290, 28.599313, 28.909150 +1.933333, 98.467669, 24.082737, 24.337581 +1.950000, 98.805639, 20.278218, 20.488507 +1.966667, 99.090203, 17.073856, 17.247871 +1.983333, 99.329790, 14.375230, 14.519585 +2.000000, 99.531502, 12.102702, 12.222708 +2.016667, 99.701321, 10.189120, 10.289069 +2.033333, 99.800221, 5.933982, 5.990789 +2.050000, 99.800303, 0.004938, 0.004983 +2.066667, 99.800303, 0.000000, 0.000000 +2.083333, 99.800303, 0.000000, 0.000000 +2.100000, 99.800303, 0.000000, 0.000000 +2.116667, 99.800303, 0.000000, 0.000000 +2.133333, 99.800303, 0.000000, 0.000000 +2.150000, 99.800303, 0.000000, 0.000000 +2.166667, 99.800303, 0.000000, 0.000000 +2.183333, 99.800303, 0.000000, 0.000000 +2.200000, 99.800303, 0.000000, 0.000000 +2.216667, 99.800303, 0.000000, 0.000000 +2.233333, 99.800303, 0.000000, 0.000000 +2.250000, 99.800303, 0.000000, 0.000000 +2.266667, 99.800303, 0.000000, 0.000000 +2.283333, 99.800303, 0.000000, 0.000000 +2.300000, 99.800303, 0.000000, 0.000000 +2.316667, 99.800303, 0.000000, 0.000000 +2.333333, 99.800303, 0.000000, 0.000000 +2.350000, 99.800303, 0.000000, 0.000000 +2.366667, 99.800303, 0.000000, 0.000000 +2.383333, 99.800303, 0.000000, 0.000000 +2.400000, 99.800303, 0.000000, 0.000000 +2.416667, 99.800303, 0.000000, 0.000000 +2.433333, 99.800303, 0.000000, 0.000000 +2.450000, 99.800303, 0.000000, 0.000000 +2.466667, 99.800303, 0.000000, 0.000000 +2.483333, 99.800303, 0.000000, 0.000000 +2.500000, 99.800303, 0.000000, 0.000000 +2.516667, 99.800303, 0.000000, 0.000000 +2.533333, 99.800303, 0.000000, 0.000000 +2.550000, 99.800303, 0.000000, 0.000000 +2.566667, 99.800303, 0.000000, 0.000000 +2.583333, 99.800303, 0.000000, 0.000000 +2.600000, 99.800303, 0.000000, 0.000000 +2.616667, 99.800303, 0.000000, 0.000000 +2.633333, 99.800303, 0.000000, 0.000000 +2.650000, 99.800303, 0.000000, 0.000000 +2.666667, 99.800303, 0.000000, 0.000000 +2.683333, 99.800303, 0.000000, 0.000000 +2.700000, 99.800303, 0.000000, 0.000000 +2.716667, 99.800303, 0.000000, 0.000000 +2.733333, 99.800303, 0.000000, 0.000000 +2.750000, 99.800303, 0.000000, 0.000000 +2.766667, 99.800303, 0.000000, 0.000000 +2.783333, 99.800303, 0.000000, 0.000000 +2.800000, 99.800303, 0.000000, 0.000000 +2.816667, 99.800303, 0.000000, 0.000000 +2.833333, 99.800303, 0.000000, 0.000000 +2.850000, 99.800303, 0.000000, 0.000000 +2.866667, 99.800303, 0.000000, 0.000000 +2.883333, 99.800303, 0.000000, 0.000000 +2.900000, 99.800303, 0.000000, 0.000000 +2.916667, 99.800303, 0.000000, 0.000000 +2.933333, 99.800303, 0.000000, 0.000000 +2.950000, 99.800303, 0.000000, 0.000000 +2.966667, 99.800303, 0.000000, 0.000000 +2.983333, 99.800303, 0.000000, 0.000000 +3.000000, 99.800303, 0.000000, 0.000000 +3.016667, 99.800303, 0.000000, 0.000000 +3.033333, 99.800303, 0.000000, 0.000000 +3.050000, 99.800303, 0.000000, 0.000000 +3.066667, 99.800303, 0.000000, 0.000000 +3.083333, 99.800303, 0.000000, 0.000000 +3.100000, 99.800303, 0.000000, 0.000000 +3.116667, 99.800303, 0.000000, 0.000000 +3.133333, 99.800303, 0.000000, 0.000000 +3.150000, 99.800303, 0.000000, 0.000000 +3.166667, 99.800303, 0.000000, 0.000000 +3.183333, 99.800303, 0.000000, 0.000000 +3.200000, 99.800303, 0.000000, 0.000000 +3.216667, 99.800303, 0.000000, 0.000000 +3.233333, 99.800303, 0.000000, 0.000000 +3.250000, 99.800303, 0.000000, 0.000000 +3.266667, 99.800303, 0.000000, 0.000000 +3.283333, 99.800303, 0.000000, 0.000000 +3.300000, 99.800303, 0.000000, 0.000000 +3.316667, 99.800303, 0.000000, 0.000000 +3.333333, 99.800303, 0.000000, 0.000000 +3.350000, 99.800303, 0.000000, 0.000000 +3.366667, 99.800303, 0.000000, 0.000000 +3.383333, 99.800303, 0.000000, 0.000000 +3.400000, 99.800303, 0.000000, 0.000000 +3.416667, 99.800303, 0.000000, 0.000000 +3.433333, 99.800303, 0.000000, 0.000000 +3.450000, 99.800303, 0.000000, 0.000000 +3.466667, 99.800303, 0.000000, 0.000000 +3.483333, 99.800303, 0.000000, 0.000000 +3.500000, 99.800303, 0.000000, 0.000000 +3.516667, 99.800303, 0.000000, 0.000000 +3.533333, 99.800303, 0.000000, 0.000000 +3.550000, 99.800303, 0.000000, 0.000000 +3.566667, 99.800303, 0.000000, 0.000000 +3.583333, 99.800303, 0.000000, 0.000000 +3.600000, 99.800303, 0.000000, 0.000000 +3.616667, 99.800303, 0.000000, 0.000000 +3.633333, 99.800303, 0.000000, 0.000000 +3.650000, 99.800303, 0.000000, 0.000000 +3.666667, 99.800303, 0.000000, 0.000000 +3.683333, 99.800303, 0.000000, 0.000000 +3.700000, 99.800303, 0.000000, 0.000000 +3.716667, 99.800303, 0.000000, 0.000000 +3.733333, 99.800303, 0.000000, 0.000000 +3.750000, 99.800303, 0.000000, 0.000000 +3.766667, 99.800303, 0.000000, 0.000000 +3.783333, 99.800303, 0.000000, 0.000000 +3.800000, 99.800303, 0.000000, 0.000000 +3.816667, 99.800303, 0.000000, 0.000000 +3.833333, 99.800303, 0.000000, 0.000000 +3.850000, 99.800303, 0.000000, 0.000000 +3.866667, 99.800303, 0.000000, 0.000000 +3.883333, 99.800303, 0.000000, 0.000000 +3.900000, 99.800303, 0.000000, 0.000000 +3.916667, 99.800303, 0.000000, 0.000000 +3.933333, 99.800303, 0.000000, 0.000000 +3.950000, 99.800303, 0.000000, 0.000000 +3.966667, 99.800303, 0.000000, 0.000000 +3.983333, 99.800303, 0.000000, 0.000000 +4.000000, 99.800303, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/dwc_100kW_ld_50kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/dwc_100kW_ld_50kWh.csv new file mode 100644 index 0000000..b28bb8a --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/dwc_100kW_ld_50kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 2.217557, 66.526710, 67.639421 +1.016667, 5.514182, 98.898743, 100.921016 +1.033333, 8.932355, 102.545204, 104.685388 +1.050000, 12.441735, 105.281381, 107.512113 +1.066667, 15.978358, 106.098697, 108.356823 +1.083333, 19.537918, 106.786812, 109.068123 +1.100000, 23.120551, 107.478997, 109.783745 +1.116667, 26.726403, 108.175557, 110.504006 +1.133333, 30.355621, 108.876519, 111.228934 +1.150000, 34.008351, 109.581907, 111.958559 +1.166667, 37.684743, 110.291749, 112.692911 +1.183333, 41.384945, 111.006072, 113.432019 +1.200000, 45.109108, 111.724902, 114.175914 +1.216667, 48.857384, 112.448266, 114.924626 +1.233333, 52.629924, 113.176191, 115.678184 +1.250000, 56.426880, 113.908704, 116.436621 +1.266667, 60.248408, 114.645832, 117.199965 +1.283333, 64.094662, 115.387603, 117.968250 +1.300000, 67.965796, 116.134045, 118.741504 +1.316667, 71.861969, 116.885185, 119.519760 +1.333333, 75.783338, 117.641051, 120.303050 +1.350000, 79.726617, 118.298373, 120.984333 +1.366667, 83.226158, 104.986246, 107.207126 +1.383333, 86.054984, 84.864763, 86.462560 +1.400000, 88.335340, 68.410703, 69.569642 +1.416667, 90.172468, 55.113829, 55.964040 +1.433333, 91.651817, 44.380454, 45.011124 +1.450000, 92.842611, 35.723840, 36.196614 +1.466667, 93.829361, 29.602498, 29.973889 +1.483333, 94.692768, 25.902194, 26.216410 +1.500000, 95.449231, 22.693896, 22.961038 +1.516667, 96.111946, 19.881457, 20.109237 +1.533333, 96.692489, 17.416301, 17.611041 +1.550000, 97.201017, 15.255839, 15.422743 +1.566667, 97.646439, 13.362637, 13.506008 +1.583333, 98.036565, 11.703806, 11.827216 +1.600000, 98.378248, 10.250466, 10.356892 +1.616667, 98.677490, 8.977261, 9.069197 +1.633333, 98.939554, 7.861944, 7.941483 +1.650000, 99.169054, 6.884995, 6.953902 +1.666667, 99.370031, 6.029294, 6.089064 +1.683333, 99.546025, 5.279828, 5.331728 +1.700000, 99.700140, 4.623435, 4.668546 +1.716667, 99.800120, 2.999415, 3.028140 +1.733333, 99.800203, 0.002498, 0.002521 +1.750000, 99.800203, 0.000000, 0.000000 +1.766667, 99.800203, 0.000000, 0.000000 +1.783333, 99.800203, 0.000000, 0.000000 +1.800000, 99.800203, 0.000000, 0.000000 +1.816667, 99.800203, 0.000000, 0.000000 +1.833333, 99.800203, 0.000000, 0.000000 +1.850000, 99.800203, 0.000000, 0.000000 +1.866667, 99.800203, 0.000000, 0.000000 +1.883333, 99.800203, 0.000000, 0.000000 +1.900000, 99.800203, 0.000000, 0.000000 +1.916667, 99.800203, 0.000000, 0.000000 +1.933333, 99.800203, 0.000000, 0.000000 +1.950000, 99.800203, 0.000000, 0.000000 +1.966667, 99.800203, 0.000000, 0.000000 +1.983333, 99.800203, 0.000000, 0.000000 +2.000000, 99.800203, 0.000000, 0.000000 +2.016667, 99.800203, 0.000000, 0.000000 +2.033333, 99.800203, 0.000000, 0.000000 +2.050000, 99.800203, 0.000000, 0.000000 +2.066667, 99.800203, 0.000000, 0.000000 +2.083333, 99.800203, 0.000000, 0.000000 +2.100000, 99.800203, 0.000000, 0.000000 +2.116667, 99.800203, 0.000000, 0.000000 +2.133333, 99.800203, 0.000000, 0.000000 +2.150000, 99.800203, 0.000000, 0.000000 +2.166667, 99.800203, 0.000000, 0.000000 +2.183333, 99.800203, 0.000000, 0.000000 +2.200000, 99.800203, 0.000000, 0.000000 +2.216667, 99.800203, 0.000000, 0.000000 +2.233333, 99.800203, 0.000000, 0.000000 +2.250000, 99.800203, 0.000000, 0.000000 +2.266667, 99.800203, 0.000000, 0.000000 +2.283333, 99.800203, 0.000000, 0.000000 +2.300000, 99.800203, 0.000000, 0.000000 +2.316667, 99.800203, 0.000000, 0.000000 +2.333333, 99.800203, 0.000000, 0.000000 +2.350000, 99.800203, 0.000000, 0.000000 +2.366667, 99.800203, 0.000000, 0.000000 +2.383333, 99.800203, 0.000000, 0.000000 +2.400000, 99.800203, 0.000000, 0.000000 +2.416667, 99.800203, 0.000000, 0.000000 +2.433333, 99.800203, 0.000000, 0.000000 +2.450000, 99.800203, 0.000000, 0.000000 +2.466667, 99.800203, 0.000000, 0.000000 +2.483333, 99.800203, 0.000000, 0.000000 +2.500000, 99.800203, 0.000000, 0.000000 +2.516667, 99.800203, 0.000000, 0.000000 +2.533333, 99.800203, 0.000000, 0.000000 +2.550000, 99.800203, 0.000000, 0.000000 +2.566667, 99.800203, 0.000000, 0.000000 +2.583333, 99.800203, 0.000000, 0.000000 +2.600000, 99.800203, 0.000000, 0.000000 +2.616667, 99.800203, 0.000000, 0.000000 +2.633333, 99.800203, 0.000000, 0.000000 +2.650000, 99.800203, 0.000000, 0.000000 +2.666667, 99.800203, 0.000000, 0.000000 +2.683333, 99.800203, 0.000000, 0.000000 +2.700000, 99.800203, 0.000000, 0.000000 +2.716667, 99.800203, 0.000000, 0.000000 +2.733333, 99.800203, 0.000000, 0.000000 +2.750000, 99.800203, 0.000000, 0.000000 +2.766667, 99.800203, 0.000000, 0.000000 +2.783333, 99.800203, 0.000000, 0.000000 +2.800000, 99.800203, 0.000000, 0.000000 +2.816667, 99.800203, 0.000000, 0.000000 +2.833333, 99.800203, 0.000000, 0.000000 +2.850000, 99.800203, 0.000000, 0.000000 +2.866667, 99.800203, 0.000000, 0.000000 +2.883333, 99.800203, 0.000000, 0.000000 +2.900000, 99.800203, 0.000000, 0.000000 +2.916667, 99.800203, 0.000000, 0.000000 +2.933333, 99.800203, 0.000000, 0.000000 +2.950000, 99.800203, 0.000000, 0.000000 +2.966667, 99.800203, 0.000000, 0.000000 +2.983333, 99.800203, 0.000000, 0.000000 +3.000000, 99.800203, 0.000000, 0.000000 +3.016667, 99.800203, 0.000000, 0.000000 +3.033333, 99.800203, 0.000000, 0.000000 +3.050000, 99.800203, 0.000000, 0.000000 +3.066667, 99.800203, 0.000000, 0.000000 +3.083333, 99.800203, 0.000000, 0.000000 +3.100000, 99.800203, 0.000000, 0.000000 +3.116667, 99.800203, 0.000000, 0.000000 +3.133333, 99.800203, 0.000000, 0.000000 +3.150000, 99.800203, 0.000000, 0.000000 +3.166667, 99.800203, 0.000000, 0.000000 +3.183333, 99.800203, 0.000000, 0.000000 +3.200000, 99.800203, 0.000000, 0.000000 +3.216667, 99.800203, 0.000000, 0.000000 +3.233333, 99.800203, 0.000000, 0.000000 +3.250000, 99.800203, 0.000000, 0.000000 +3.266667, 99.800203, 0.000000, 0.000000 +3.283333, 99.800203, 0.000000, 0.000000 +3.300000, 99.800203, 0.000000, 0.000000 +3.316667, 99.800203, 0.000000, 0.000000 +3.333333, 99.800203, 0.000000, 0.000000 +3.350000, 99.800203, 0.000000, 0.000000 +3.366667, 99.800203, 0.000000, 0.000000 +3.383333, 99.800203, 0.000000, 0.000000 +3.400000, 99.800203, 0.000000, 0.000000 +3.416667, 99.800203, 0.000000, 0.000000 +3.433333, 99.800203, 0.000000, 0.000000 +3.450000, 99.800203, 0.000000, 0.000000 +3.466667, 99.800203, 0.000000, 0.000000 +3.483333, 99.800203, 0.000000, 0.000000 +3.500000, 99.800203, 0.000000, 0.000000 +3.516667, 99.800203, 0.000000, 0.000000 +3.533333, 99.800203, 0.000000, 0.000000 +3.550000, 99.800203, 0.000000, 0.000000 +3.566667, 99.800203, 0.000000, 0.000000 +3.583333, 99.800203, 0.000000, 0.000000 +3.600000, 99.800203, 0.000000, 0.000000 +3.616667, 99.800203, 0.000000, 0.000000 +3.633333, 99.800203, 0.000000, 0.000000 +3.650000, 99.800203, 0.000000, 0.000000 +3.666667, 99.800203, 0.000000, 0.000000 +3.683333, 99.800203, 0.000000, 0.000000 +3.700000, 99.800203, 0.000000, 0.000000 +3.716667, 99.800203, 0.000000, 0.000000 +3.733333, 99.800203, 0.000000, 0.000000 +3.750000, 99.800203, 0.000000, 0.000000 +3.766667, 99.800203, 0.000000, 0.000000 +3.783333, 99.800203, 0.000000, 0.000000 +3.800000, 99.800203, 0.000000, 0.000000 +3.816667, 99.800203, 0.000000, 0.000000 +3.833333, 99.800203, 0.000000, 0.000000 +3.850000, 99.800203, 0.000000, 0.000000 +3.866667, 99.800203, 0.000000, 0.000000 +3.883333, 99.800203, 0.000000, 0.000000 +3.900000, 99.800203, 0.000000, 0.000000 +3.916667, 99.800203, 0.000000, 0.000000 +3.933333, 99.800203, 0.000000, 0.000000 +3.950000, 99.800203, 0.000000, 0.000000 +3.966667, 99.800203, 0.000000, 0.000000 +3.983333, 99.800203, 0.000000, 0.000000 +4.000000, 99.800203, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/dwc_100kW_md_200kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/dwc_100kW_md_200kWh.csv new file mode 100644 index 0000000..03356a9 --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/dwc_100kW_md_200kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.552051, 66.246094, 66.980503 +1.016667, 1.334420, 93.884260, 94.997588 +1.033333, 2.138150, 96.447626, 97.598273 +1.050000, 2.963840, 99.082797, 100.272194 +1.066667, 3.812086, 101.789557, 103.019164 +1.083333, 4.678049, 103.915588, 105.177068 +1.100000, 5.550066, 104.641970, 105.914398 +1.116667, 6.427722, 105.318708, 106.601362 +1.133333, 7.311052, 105.999689, 107.292659 +1.150000, 8.200094, 106.685046, 107.988426 +1.166667, 9.094885, 107.374809, 108.688692 +1.183333, 9.995460, 108.069004, 109.393485 +1.200000, 10.899705, 108.509393, 109.840610 +1.216667, 11.805433, 108.687423, 110.021367 +1.233333, 12.712643, 108.865244, 110.201914 +1.250000, 13.621338, 109.043354, 110.382755 +1.266667, 14.531519, 109.221754, 110.563893 +1.283333, 15.443190, 109.400444, 110.745327 +1.300000, 16.356352, 109.579425, 110.927057 +1.316667, 17.271007, 109.758696, 111.109085 +1.333333, 18.187160, 109.938259, 111.291411 +1.350000, 19.104810, 110.118114, 111.474035 +1.366667, 20.023963, 110.298262, 111.656958 +1.383333, 20.944618, 110.478702, 111.840180 +1.400000, 21.866780, 110.659436, 112.023702 +1.416667, 22.790451, 110.840463, 112.207524 +1.433333, 23.715633, 111.021785, 112.391647 +1.450000, 24.642328, 111.203402, 112.576070 +1.466667, 25.570538, 111.385314, 112.760796 +1.483333, 26.500268, 111.567521, 112.945824 +1.500000, 27.431518, 111.750025, 113.131154 +1.516667, 28.364292, 111.932826, 113.316788 +1.533333, 29.298591, 112.115923, 113.502725 +1.550000, 30.234419, 112.299319, 113.688967 +1.566667, 31.171777, 112.483012, 113.875513 +1.583333, 32.110669, 112.667004, 114.062364 +1.600000, 33.051096, 112.851295, 114.249521 +1.616667, 33.993062, 113.035886, 114.436984 +1.633333, 34.936568, 113.220776, 114.624754 +1.650000, 35.881618, 113.405968, 114.812831 +1.666667, 36.828214, 113.591460, 115.001215 +1.683333, 37.776357, 113.777254, 115.189907 +1.700000, 38.726052, 113.963349, 115.378909 +1.716667, 39.677300, 114.149747, 115.568219 +1.733333, 40.630104, 114.336448, 115.757839 +1.750000, 41.584466, 114.523453, 115.947769 +1.766667, 42.540389, 114.710761, 116.138010 +1.783333, 43.497875, 114.898374, 116.328561 +1.800000, 44.456928, 115.086292, 116.519425 +1.816667, 45.417549, 115.274515, 116.710601 +1.833333, 46.379741, 115.463043, 116.902089 +1.850000, 47.343506, 115.651879, 117.093890 +1.866667, 48.308848, 115.841021, 117.286006 +1.883333, 49.275769, 116.030470, 117.478435 +1.900000, 50.244271, 116.220227, 117.671179 +1.916667, 51.214356, 116.410293, 117.864238 +1.933333, 52.186029, 116.600667, 118.057613 +1.950000, 53.159290, 116.791351, 118.251305 +1.966667, 54.134143, 116.982344, 118.445313 +1.983333, 55.110590, 117.173648, 118.639638 +2.000000, 56.088634, 117.365263, 118.834281 +2.016667, 57.068277, 117.557189, 119.029242 +2.033333, 58.049522, 117.749426, 119.224523 +2.050000, 59.032372, 117.941976, 119.420122 +2.066667, 60.016829, 118.134839, 119.616041 +2.083333, 61.002896, 118.328015, 119.812281 +2.100000, 61.990575, 118.521505, 120.008842 +2.116667, 62.979869, 118.715309, 120.205724 +2.133333, 63.970781, 118.909428, 120.402928 +2.150000, 64.963313, 119.103863, 120.600454 +2.166667, 65.957468, 119.298613, 120.798304 +2.183333, 66.953249, 119.493679, 120.996477 +2.200000, 67.950658, 119.689063, 121.194973 +2.216667, 68.949698, 119.884763, 121.393795 +2.233333, 69.950371, 120.080782, 121.592942 +2.250000, 70.952680, 120.277119, 121.792414 +2.266667, 71.956628, 120.473774, 121.992212 +2.283333, 72.962218, 120.670749, 122.192337 +2.300000, 73.969451, 120.868044, 122.392789 +2.316667, 74.978332, 121.065660, 122.593569 +2.333333, 75.988862, 121.263596, 122.794678 +2.350000, 77.001044, 121.461854, 122.996115 +2.366667, 78.014881, 121.660433, 123.197881 +2.383333, 79.030375, 121.859335, 123.399977 +2.400000, 80.047530, 122.058561, 123.602404 +2.416667, 81.066348, 122.258109, 123.805162 +2.433333, 82.086831, 122.457982, 124.008251 +2.450000, 83.108982, 122.658179, 124.211672 +2.466667, 84.132805, 122.858701, 124.415425 +2.483333, 85.158301, 123.059549, 124.619512 +2.500000, 86.185474, 123.260723, 124.823932 +2.516667, 87.214326, 123.462223, 125.028687 +2.533333, 88.244859, 123.664051, 125.233776 +2.550000, 89.277078, 123.866206, 125.439201 +2.566667, 90.310983, 124.068689, 125.644961 +2.583333, 91.346579, 124.271501, 125.851058 +2.600000, 92.383868, 124.474643, 126.057491 +2.616667, 93.422852, 124.678114, 126.264262 +2.633333, 94.463535, 124.881915, 126.471371 +2.650000, 95.433047, 116.341393, 117.794253 +2.666667, 96.251168, 98.174580, 99.350578 +2.683333, 96.940030, 82.663407, 83.617725 +2.700000, 97.520003, 69.596798, 70.374862 +2.716667, 98.008270, 58.592042, 59.229089 +2.733333, 98.419310, 49.324843, 49.848392 +2.750000, 98.765324, 41.521597, 41.953299 +2.766667, 99.056587, 34.951566, 35.308571 +2.783333, 99.301755, 29.420226, 29.716209 +2.800000, 99.508119, 24.763627, 25.009557 +2.816667, 99.681816, 20.843620, 21.048351 +2.833333, 99.800216, 14.208088, 14.345027 +2.850000, 99.800315, 0.011835, 0.011945 +2.866667, 99.800315, 0.000000, 0.000000 +2.883333, 99.800315, 0.000000, 0.000000 +2.900000, 99.800315, 0.000000, 0.000000 +2.916667, 99.800315, 0.000000, 0.000000 +2.933333, 99.800315, 0.000000, 0.000000 +2.950000, 99.800315, 0.000000, 0.000000 +2.966667, 99.800315, 0.000000, 0.000000 +2.983333, 99.800315, 0.000000, 0.000000 +3.000000, 99.800315, 0.000000, 0.000000 +3.016667, 99.800315, 0.000000, 0.000000 +3.033333, 99.800315, 0.000000, 0.000000 +3.050000, 99.800315, 0.000000, 0.000000 +3.066667, 99.800315, 0.000000, 0.000000 +3.083333, 99.800315, 0.000000, 0.000000 +3.100000, 99.800315, 0.000000, 0.000000 +3.116667, 99.800315, 0.000000, 0.000000 +3.133333, 99.800315, 0.000000, 0.000000 +3.150000, 99.800315, 0.000000, 0.000000 +3.166667, 99.800315, 0.000000, 0.000000 +3.183333, 99.800315, 0.000000, 0.000000 +3.200000, 99.800315, 0.000000, 0.000000 +3.216667, 99.800315, 0.000000, 0.000000 +3.233333, 99.800315, 0.000000, 0.000000 +3.250000, 99.800315, 0.000000, 0.000000 +3.266667, 99.800315, 0.000000, 0.000000 +3.283333, 99.800315, 0.000000, 0.000000 +3.300000, 99.800315, 0.000000, 0.000000 +3.316667, 99.800315, 0.000000, 0.000000 +3.333333, 99.800315, 0.000000, 0.000000 +3.350000, 99.800315, 0.000000, 0.000000 +3.366667, 99.800315, 0.000000, 0.000000 +3.383333, 99.800315, 0.000000, 0.000000 +3.400000, 99.800315, 0.000000, 0.000000 +3.416667, 99.800315, 0.000000, 0.000000 +3.433333, 99.800315, 0.000000, 0.000000 +3.450000, 99.800315, 0.000000, 0.000000 +3.466667, 99.800315, 0.000000, 0.000000 +3.483333, 99.800315, 0.000000, 0.000000 +3.500000, 99.800315, 0.000000, 0.000000 +3.516667, 99.800315, 0.000000, 0.000000 +3.533333, 99.800315, 0.000000, 0.000000 +3.550000, 99.800315, 0.000000, 0.000000 +3.566667, 99.800315, 0.000000, 0.000000 +3.583333, 99.800315, 0.000000, 0.000000 +3.600000, 99.800315, 0.000000, 0.000000 +3.616667, 99.800315, 0.000000, 0.000000 +3.633333, 99.800315, 0.000000, 0.000000 +3.650000, 99.800315, 0.000000, 0.000000 +3.666667, 99.800315, 0.000000, 0.000000 +3.683333, 99.800315, 0.000000, 0.000000 +3.700000, 99.800315, 0.000000, 0.000000 +3.716667, 99.800315, 0.000000, 0.000000 +3.733333, 99.800315, 0.000000, 0.000000 +3.750000, 99.800315, 0.000000, 0.000000 +3.766667, 99.800315, 0.000000, 0.000000 +3.783333, 99.800315, 0.000000, 0.000000 +3.800000, 99.800315, 0.000000, 0.000000 +3.816667, 99.800315, 0.000000, 0.000000 +3.833333, 99.800315, 0.000000, 0.000000 +3.850000, 99.800315, 0.000000, 0.000000 +3.866667, 99.800315, 0.000000, 0.000000 +3.883333, 99.800315, 0.000000, 0.000000 +3.900000, 99.800315, 0.000000, 0.000000 +3.916667, 99.800315, 0.000000, 0.000000 +3.933333, 99.800315, 0.000000, 0.000000 +3.950000, 99.800315, 0.000000, 0.000000 +3.966667, 99.800315, 0.000000, 0.000000 +3.983333, 99.800315, 0.000000, 0.000000 +4.000000, 99.800315, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_1000kW_hd_1000kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_1000kW_hd_1000kWh.csv new file mode 100644 index 0000000..457fa8c --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_1000kW_hd_1000kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.649618, 389.770966, 394.219426 +1.016667, 2.056993, 844.424597, 856.218371 +1.033333, 3.532347, 885.212505, 897.779864 +1.050000, 5.066524, 920.506122, 933.758183 +1.066667, 6.621620, 933.057982, 946.556981 +1.083333, 8.194579, 943.775486, 957.486760 +1.100000, 9.785579, 954.599946, 968.526946 +1.116667, 11.389729, 962.490031, 976.575122 +1.133333, 12.998694, 965.378490, 979.521634 +1.150000, 14.612319, 968.175345, 982.374792 +1.166667, 16.230619, 970.979951, 985.235947 +1.183333, 17.853607, 973.792593, 988.105390 +1.200000, 19.481296, 976.613293, 990.983145 +1.216667, 21.113699, 979.442073, 993.869235 +1.233333, 22.750831, 982.278957, 996.763684 +1.250000, 24.392704, 985.123966, 999.666517 +1.266667, 26.039332, 987.977124, 1002.577758 +1.283333, 27.690730, 990.838454, 1005.497430 +1.300000, 29.346910, 993.707978, 1008.425557 +1.316667, 31.007886, 996.585720, 1011.362165 +1.333333, 32.673672, 999.471702, 1014.307276 +1.350000, 34.344282, 1002.365947, 1017.260916 +1.366667, 36.019730, 1005.268478, 1020.223109 +1.383333, 37.700028, 1008.179319, 1023.193879 +1.400000, 39.385193, 1011.098493, 1026.173251 +1.416667, 41.075236, 1014.026023, 1029.161250 +1.433333, 42.770172, 1016.961933, 1032.157900 +1.450000, 44.470016, 1019.906246, 1035.163226 +1.466667, 46.174781, 1022.858985, 1038.177253 +1.483333, 47.884481, 1025.820174, 1041.200005 +1.500000, 49.599131, 1028.789836, 1044.231509 +1.516667, 51.318745, 1031.767996, 1047.271788 +1.533333, 53.043336, 1034.754677, 1050.320867 +1.550000, 54.772919, 1037.749902, 1053.378773 +1.566667, 56.507508, 1040.753697, 1056.445530 +1.583333, 58.247118, 1043.766083, 1059.521164 +1.600000, 59.991764, 1046.787086, 1062.605700 +1.616667, 61.741458, 1049.816730, 1065.699163 +1.633333, 63.496217, 1052.855039, 1068.801579 +1.650000, 65.256053, 1055.902036, 1071.912974 +1.666667, 67.020983, 1058.957746, 1075.033373 +1.683333, 68.791020, 1062.022194, 1078.162803 +1.700000, 70.566179, 1065.095404, 1081.301288 +1.716667, 72.346475, 1068.177400, 1084.448854 +1.733333, 74.131922, 1071.268206, 1087.605529 +1.750000, 75.922535, 1074.367848, 1090.771337 +1.766667, 77.718329, 1077.476350, 1093.946305 +1.783333, 79.519318, 1080.593736, 1097.130459 +1.800000, 81.325518, 1083.720031, 1100.323825 +1.816667, 83.136944, 1086.855261, 1103.526430 +1.833333, 84.953609, 1089.999450, 1106.738299 +1.850000, 86.775530, 1093.152623, 1109.959461 +1.866667, 88.602722, 1096.314805, 1113.189940 +1.883333, 90.422096, 1091.624545, 1108.398420 +1.900000, 92.036428, 968.599360, 982.807351 +1.916667, 93.401165, 818.842084, 830.160337 +1.933333, 94.547646, 687.888830, 696.889524 +1.950000, 95.510935, 577.972998, 585.178558 +1.966667, 96.320517, 485.749071, 491.553744 +1.983333, 97.001070, 408.332331, 413.034996 +2.000000, 97.573268, 343.318376, 347.147595 +2.016667, 98.054436, 288.701203, 291.833272 +2.033333, 98.459111, 242.804849, 245.376891 +2.050000, 98.799490, 204.227450, 206.346973 +2.066667, 99.085816, 171.795251, 173.547186 +2.083333, 99.326690, 144.524679, 145.976602 +2.100000, 99.529342, 121.590958, 122.796989 +2.116667, 99.699845, 102.302069, 103.305818 +2.133333, 99.801109, 60.758622, 61.340753 +2.150000, 99.801193, 0.050311, 0.050776 +2.166667, 99.801193, 0.000000, 0.000000 +2.183333, 99.801193, 0.000000, 0.000000 +2.200000, 99.801193, 0.000000, 0.000000 +2.216667, 99.801193, 0.000000, 0.000000 +2.233333, 99.801193, 0.000000, 0.000000 +2.250000, 99.801193, 0.000000, 0.000000 +2.266667, 99.801193, 0.000000, 0.000000 +2.283333, 99.801193, 0.000000, 0.000000 +2.300000, 99.801193, 0.000000, 0.000000 +2.316667, 99.801193, 0.000000, 0.000000 +2.333333, 99.801193, 0.000000, 0.000000 +2.350000, 99.801193, 0.000000, 0.000000 +2.366667, 99.801193, 0.000000, 0.000000 +2.383333, 99.801193, 0.000000, 0.000000 +2.400000, 99.801193, 0.000000, 0.000000 +2.416667, 99.801193, 0.000000, 0.000000 +2.433333, 99.801193, 0.000000, 0.000000 +2.450000, 99.801193, 0.000000, 0.000000 +2.466667, 99.801193, 0.000000, 0.000000 +2.483333, 99.801193, 0.000000, 0.000000 +2.500000, 99.801193, 0.000000, 0.000000 +2.516667, 99.801193, 0.000000, 0.000000 +2.533333, 99.801193, 0.000000, 0.000000 +2.550000, 99.801193, 0.000000, 0.000000 +2.566667, 99.801193, 0.000000, 0.000000 +2.583333, 99.801193, 0.000000, 0.000000 +2.600000, 99.801193, 0.000000, 0.000000 +2.616667, 99.801193, 0.000000, 0.000000 +2.633333, 99.801193, 0.000000, 0.000000 +2.650000, 99.801193, 0.000000, 0.000000 +2.666667, 99.801193, 0.000000, 0.000000 +2.683333, 99.801193, 0.000000, 0.000000 +2.700000, 99.801193, 0.000000, 0.000000 +2.716667, 99.801193, 0.000000, 0.000000 +2.733333, 99.801193, 0.000000, 0.000000 +2.750000, 99.801193, 0.000000, 0.000000 +2.766667, 99.801193, 0.000000, 0.000000 +2.783333, 99.801193, 0.000000, 0.000000 +2.800000, 99.801193, 0.000000, 0.000000 +2.816667, 99.801193, 0.000000, 0.000000 +2.833333, 99.801193, 0.000000, 0.000000 +2.850000, 99.801193, 0.000000, 0.000000 +2.866667, 99.801193, 0.000000, 0.000000 +2.883333, 99.801193, 0.000000, 0.000000 +2.900000, 99.801193, 0.000000, 0.000000 +2.916667, 99.801193, 0.000000, 0.000000 +2.933333, 99.801193, 0.000000, 0.000000 +2.950000, 99.801193, 0.000000, 0.000000 +2.966667, 99.801193, 0.000000, 0.000000 +2.983333, 99.801193, 0.000000, 0.000000 +3.000000, 99.801193, 0.000000, 0.000000 +3.016667, 99.801193, 0.000000, 0.000000 +3.033333, 99.801193, 0.000000, 0.000000 +3.050000, 99.801193, 0.000000, 0.000000 +3.066667, 99.801193, 0.000000, 0.000000 +3.083333, 99.801193, 0.000000, 0.000000 +3.100000, 99.801193, 0.000000, 0.000000 +3.116667, 99.801193, 0.000000, 0.000000 +3.133333, 99.801193, 0.000000, 0.000000 +3.150000, 99.801193, 0.000000, 0.000000 +3.166667, 99.801193, 0.000000, 0.000000 +3.183333, 99.801193, 0.000000, 0.000000 +3.200000, 99.801193, 0.000000, 0.000000 +3.216667, 99.801193, 0.000000, 0.000000 +3.233333, 99.801193, 0.000000, 0.000000 +3.250000, 99.801193, 0.000000, 0.000000 +3.266667, 99.801193, 0.000000, 0.000000 +3.283333, 99.801193, 0.000000, 0.000000 +3.300000, 99.801193, 0.000000, 0.000000 +3.316667, 99.801193, 0.000000, 0.000000 +3.333333, 99.801193, 0.000000, 0.000000 +3.350000, 99.801193, 0.000000, 0.000000 +3.366667, 99.801193, 0.000000, 0.000000 +3.383333, 99.801193, 0.000000, 0.000000 +3.400000, 99.801193, 0.000000, 0.000000 +3.416667, 99.801193, 0.000000, 0.000000 +3.433333, 99.801193, 0.000000, 0.000000 +3.450000, 99.801193, 0.000000, 0.000000 +3.466667, 99.801193, 0.000000, 0.000000 +3.483333, 99.801193, 0.000000, 0.000000 +3.500000, 99.801193, 0.000000, 0.000000 +3.516667, 99.801193, 0.000000, 0.000000 +3.533333, 99.801193, 0.000000, 0.000000 +3.550000, 99.801193, 0.000000, 0.000000 +3.566667, 99.801193, 0.000000, 0.000000 +3.583333, 99.801193, 0.000000, 0.000000 +3.600000, 99.801193, 0.000000, 0.000000 +3.616667, 99.801193, 0.000000, 0.000000 +3.633333, 99.801193, 0.000000, 0.000000 +3.650000, 99.801193, 0.000000, 0.000000 +3.666667, 99.801193, 0.000000, 0.000000 +3.683333, 99.801193, 0.000000, 0.000000 +3.700000, 99.801193, 0.000000, 0.000000 +3.716667, 99.801193, 0.000000, 0.000000 +3.733333, 99.801193, 0.000000, 0.000000 +3.750000, 99.801193, 0.000000, 0.000000 +3.766667, 99.801193, 0.000000, 0.000000 +3.783333, 99.801193, 0.000000, 0.000000 +3.800000, 99.801193, 0.000000, 0.000000 +3.816667, 99.801193, 0.000000, 0.000000 +3.833333, 99.801193, 0.000000, 0.000000 +3.850000, 99.801193, 0.000000, 0.000000 +3.866667, 99.801193, 0.000000, 0.000000 +3.883333, 99.801193, 0.000000, 0.000000 +3.900000, 99.801193, 0.000000, 0.000000 +3.916667, 99.801193, 0.000000, 0.000000 +3.933333, 99.801193, 0.000000, 0.000000 +3.950000, 99.801193, 0.000000, 0.000000 +3.966667, 99.801193, 0.000000, 0.000000 +3.983333, 99.801193, 0.000000, 0.000000 +4.000000, 99.801193, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_1000kW_hd_300kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_1000kW_hd_300kWh.csv new file mode 100644 index 0000000..2966c6a --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_1000kW_hd_300kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 2.205124, 396.922267, 403.544201 +1.016667, 7.272313, 912.094022, 936.425159 +1.033333, 12.583730, 956.055078, 982.391849 +1.050000, 17.979253, 971.194092, 998.239953 +1.066667, 23.427626, 980.707215, 1008.203493 +1.083333, 28.929061, 990.258301, 1018.210555 +1.100000, 34.484054, 999.898735, 1028.315055 +1.116667, 40.093105, 1009.629275, 1038.517900 +1.133333, 45.756720, 1019.450688, 1048.820009 +1.150000, 51.475408, 1029.363747, 1059.222308 +1.166667, 57.249681, 1039.369230, 1069.725731 +1.183333, 63.080059, 1049.467919, 1080.331222 +1.200000, 68.967062, 1059.660602, 1091.039730 +1.216667, 74.393766, 976.806766, 1004.117918 +1.233333, 78.869885, 805.701359, 825.505446 +1.250000, 82.495168, 652.550992, 666.641224 +1.266667, 85.429448, 528.170414, 538.307029 +1.283333, 87.804544, 427.517226, 434.898649 +1.300000, 89.727137, 346.066769, 351.506166 +1.316667, 91.283524, 280.149625, 284.203911 +1.333333, 92.543518, 226.798835, 229.853349 +1.350000, 93.575679, 185.789009, 188.148335 +1.366667, 94.471438, 161.236736, 163.210222 +1.383333, 95.255946, 141.211287, 142.886858 +1.400000, 95.943098, 123.687530, 125.114748 +1.416667, 96.544949, 108.333128, 109.552190 +1.433333, 97.072064, 94.880727, 95.924661 +1.450000, 97.533707, 83.095676, 83.991739 +1.466667, 97.937996, 72.772046, 73.542830 +1.483333, 98.292047, 63.729172, 64.393479 +1.500000, 98.602095, 55.808591, 56.382135 +1.516667, 98.873602, 48.871346, 49.367310 +1.533333, 99.111356, 42.795607, 43.225094 +1.550000, 99.319548, 37.474580, 37.846973 +1.566667, 99.501851, 32.814664, 33.137919 +1.583333, 99.661484, 28.733833, 29.014717 +1.600000, 99.800062, 24.944058, 25.186146 +1.616667, 99.800178, 0.020824, 0.021017 +1.633333, 99.800178, 0.000000, 0.000000 +1.650000, 99.800178, 0.000000, 0.000000 +1.666667, 99.800178, 0.000000, 0.000000 +1.683333, 99.800178, 0.000000, 0.000000 +1.700000, 99.800178, 0.000000, 0.000000 +1.716667, 99.800178, 0.000000, 0.000000 +1.733333, 99.800178, 0.000000, 0.000000 +1.750000, 99.800178, 0.000000, 0.000000 +1.766667, 99.800178, 0.000000, 0.000000 +1.783333, 99.800178, 0.000000, 0.000000 +1.800000, 99.800178, 0.000000, 0.000000 +1.816667, 99.800178, 0.000000, 0.000000 +1.833333, 99.800178, 0.000000, 0.000000 +1.850000, 99.800178, 0.000000, 0.000000 +1.866667, 99.800178, 0.000000, 0.000000 +1.883333, 99.800178, 0.000000, 0.000000 +1.900000, 99.800178, 0.000000, 0.000000 +1.916667, 99.800178, 0.000000, 0.000000 +1.933333, 99.800178, 0.000000, 0.000000 +1.950000, 99.800178, 0.000000, 0.000000 +1.966667, 99.800178, 0.000000, 0.000000 +1.983333, 99.800178, 0.000000, 0.000000 +2.000000, 99.800178, 0.000000, 0.000000 +2.016667, 99.800178, 0.000000, 0.000000 +2.033333, 99.800178, 0.000000, 0.000000 +2.050000, 99.800178, 0.000000, 0.000000 +2.066667, 99.800178, 0.000000, 0.000000 +2.083333, 99.800178, 0.000000, 0.000000 +2.100000, 99.800178, 0.000000, 0.000000 +2.116667, 99.800178, 0.000000, 0.000000 +2.133333, 99.800178, 0.000000, 0.000000 +2.150000, 99.800178, 0.000000, 0.000000 +2.166667, 99.800178, 0.000000, 0.000000 +2.183333, 99.800178, 0.000000, 0.000000 +2.200000, 99.800178, 0.000000, 0.000000 +2.216667, 99.800178, 0.000000, 0.000000 +2.233333, 99.800178, 0.000000, 0.000000 +2.250000, 99.800178, 0.000000, 0.000000 +2.266667, 99.800178, 0.000000, 0.000000 +2.283333, 99.800178, 0.000000, 0.000000 +2.300000, 99.800178, 0.000000, 0.000000 +2.316667, 99.800178, 0.000000, 0.000000 +2.333333, 99.800178, 0.000000, 0.000000 +2.350000, 99.800178, 0.000000, 0.000000 +2.366667, 99.800178, 0.000000, 0.000000 +2.383333, 99.800178, 0.000000, 0.000000 +2.400000, 99.800178, 0.000000, 0.000000 +2.416667, 99.800178, 0.000000, 0.000000 +2.433333, 99.800178, 0.000000, 0.000000 +2.450000, 99.800178, 0.000000, 0.000000 +2.466667, 99.800178, 0.000000, 0.000000 +2.483333, 99.800178, 0.000000, 0.000000 +2.500000, 99.800178, 0.000000, 0.000000 +2.516667, 99.800178, 0.000000, 0.000000 +2.533333, 99.800178, 0.000000, 0.000000 +2.550000, 99.800178, 0.000000, 0.000000 +2.566667, 99.800178, 0.000000, 0.000000 +2.583333, 99.800178, 0.000000, 0.000000 +2.600000, 99.800178, 0.000000, 0.000000 +2.616667, 99.800178, 0.000000, 0.000000 +2.633333, 99.800178, 0.000000, 0.000000 +2.650000, 99.800178, 0.000000, 0.000000 +2.666667, 99.800178, 0.000000, 0.000000 +2.683333, 99.800178, 0.000000, 0.000000 +2.700000, 99.800178, 0.000000, 0.000000 +2.716667, 99.800178, 0.000000, 0.000000 +2.733333, 99.800178, 0.000000, 0.000000 +2.750000, 99.800178, 0.000000, 0.000000 +2.766667, 99.800178, 0.000000, 0.000000 +2.783333, 99.800178, 0.000000, 0.000000 +2.800000, 99.800178, 0.000000, 0.000000 +2.816667, 99.800178, 0.000000, 0.000000 +2.833333, 99.800178, 0.000000, 0.000000 +2.850000, 99.800178, 0.000000, 0.000000 +2.866667, 99.800178, 0.000000, 0.000000 +2.883333, 99.800178, 0.000000, 0.000000 +2.900000, 99.800178, 0.000000, 0.000000 +2.916667, 99.800178, 0.000000, 0.000000 +2.933333, 99.800178, 0.000000, 0.000000 +2.950000, 99.800178, 0.000000, 0.000000 +2.966667, 99.800178, 0.000000, 0.000000 +2.983333, 99.800178, 0.000000, 0.000000 +3.000000, 99.800178, 0.000000, 0.000000 +3.016667, 99.800178, 0.000000, 0.000000 +3.033333, 99.800178, 0.000000, 0.000000 +3.050000, 99.800178, 0.000000, 0.000000 +3.066667, 99.800178, 0.000000, 0.000000 +3.083333, 99.800178, 0.000000, 0.000000 +3.100000, 99.800178, 0.000000, 0.000000 +3.116667, 99.800178, 0.000000, 0.000000 +3.133333, 99.800178, 0.000000, 0.000000 +3.150000, 99.800178, 0.000000, 0.000000 +3.166667, 99.800178, 0.000000, 0.000000 +3.183333, 99.800178, 0.000000, 0.000000 +3.200000, 99.800178, 0.000000, 0.000000 +3.216667, 99.800178, 0.000000, 0.000000 +3.233333, 99.800178, 0.000000, 0.000000 +3.250000, 99.800178, 0.000000, 0.000000 +3.266667, 99.800178, 0.000000, 0.000000 +3.283333, 99.800178, 0.000000, 0.000000 +3.300000, 99.800178, 0.000000, 0.000000 +3.316667, 99.800178, 0.000000, 0.000000 +3.333333, 99.800178, 0.000000, 0.000000 +3.350000, 99.800178, 0.000000, 0.000000 +3.366667, 99.800178, 0.000000, 0.000000 +3.383333, 99.800178, 0.000000, 0.000000 +3.400000, 99.800178, 0.000000, 0.000000 +3.416667, 99.800178, 0.000000, 0.000000 +3.433333, 99.800178, 0.000000, 0.000000 +3.450000, 99.800178, 0.000000, 0.000000 +3.466667, 99.800178, 0.000000, 0.000000 +3.483333, 99.800178, 0.000000, 0.000000 +3.500000, 99.800178, 0.000000, 0.000000 +3.516667, 99.800178, 0.000000, 0.000000 +3.533333, 99.800178, 0.000000, 0.000000 +3.550000, 99.800178, 0.000000, 0.000000 +3.566667, 99.800178, 0.000000, 0.000000 +3.583333, 99.800178, 0.000000, 0.000000 +3.600000, 99.800178, 0.000000, 0.000000 +3.616667, 99.800178, 0.000000, 0.000000 +3.633333, 99.800178, 0.000000, 0.000000 +3.650000, 99.800178, 0.000000, 0.000000 +3.666667, 99.800178, 0.000000, 0.000000 +3.683333, 99.800178, 0.000000, 0.000000 +3.700000, 99.800178, 0.000000, 0.000000 +3.716667, 99.800178, 0.000000, 0.000000 +3.733333, 99.800178, 0.000000, 0.000000 +3.750000, 99.800178, 0.000000, 0.000000 +3.766667, 99.800178, 0.000000, 0.000000 +3.783333, 99.800178, 0.000000, 0.000000 +3.800000, 99.800178, 0.000000, 0.000000 +3.816667, 99.800178, 0.000000, 0.000000 +3.833333, 99.800178, 0.000000, 0.000000 +3.850000, 99.800178, 0.000000, 0.000000 +3.866667, 99.800178, 0.000000, 0.000000 +3.883333, 99.800178, 0.000000, 0.000000 +3.900000, 99.800178, 0.000000, 0.000000 +3.916667, 99.800178, 0.000000, 0.000000 +3.933333, 99.800178, 0.000000, 0.000000 +3.950000, 99.800178, 0.000000, 0.000000 +3.966667, 99.800178, 0.000000, 0.000000 +3.983333, 99.800178, 0.000000, 0.000000 +4.000000, 99.800178, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_1000kW_hd_400kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_1000kW_hd_400kWh.csv new file mode 100644 index 0000000..bf6b62d --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_1000kW_hd_400kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 1.619810, 388.754397, 394.464110 +1.016667, 5.221427, 864.388168, 882.981109 +1.033333, 8.988844, 904.179997, 924.152563 +1.050000, 12.866278, 930.584166, 951.498315 +1.066667, 16.776389, 938.426700, 959.624538 +1.083333, 20.714489, 945.143984, 966.586275 +1.100000, 24.680747, 951.901839, 973.591426 +1.116667, 28.675358, 958.706671, 980.646658 +1.133333, 32.698520, 965.558786, 987.752318 +1.150000, 36.750430, 972.458493, 994.908758 +1.166667, 40.831289, 979.406103, 1002.116330 +1.183333, 44.941297, 986.401927, 1009.375388 +1.200000, 49.080656, 993.446280, 1016.686290 +1.216667, 53.249571, 1000.539477, 1024.049396 +1.233333, 57.448245, 1007.681836, 1031.465067 +1.250000, 61.676885, 1014.873676, 1038.933668 +1.266667, 65.935699, 1022.115318, 1046.455564 +1.283333, 70.224895, 1029.407084, 1054.031126 +1.300000, 74.544684, 1036.749298, 1061.660724 +1.316667, 78.807832, 1023.155508, 1047.536141 +1.333333, 82.438681, 871.403742, 890.236489 +1.350000, 85.393080, 709.055838, 722.713327 +1.366667, 87.781550, 573.232779, 583.156407 +1.383333, 89.712732, 463.483551, 470.782055 +1.400000, 91.274608, 374.850324, 380.282089 +1.416667, 92.538093, 303.236332, 307.323881 +1.433333, 93.572147, 248.173123, 251.326245 +1.450000, 94.468719, 215.177257, 217.811546 +1.466667, 95.253815, 188.422875, 190.659017 +1.483333, 95.941424, 165.026330, 166.930805 +1.500000, 96.543631, 144.529462, 146.156009 +1.516667, 97.071023, 126.574105, 127.966865 +1.533333, 97.532881, 110.846129, 112.041519 +1.550000, 97.937340, 97.069993, 98.098190 +1.566667, 98.291523, 85.004063, 85.890175 +1.583333, 98.601675, 74.436478, 75.201486 +1.600000, 98.873265, 65.181518, 65.843022 +1.616667, 99.111083, 57.076401, 57.649219 +1.633333, 99.319327, 49.978471, 50.475127 +1.650000, 99.501672, 43.762725, 44.193835 +1.666667, 99.661337, 38.319635, 38.694229 +1.683333, 99.800070, 33.296022, 33.619186 +1.700000, 99.800186, 0.027812, 0.028069 +1.716667, 99.800186, 0.000000, 0.000000 +1.733333, 99.800186, 0.000000, 0.000000 +1.750000, 99.800186, 0.000000, 0.000000 +1.766667, 99.800186, 0.000000, 0.000000 +1.783333, 99.800186, 0.000000, 0.000000 +1.800000, 99.800186, 0.000000, 0.000000 +1.816667, 99.800186, 0.000000, 0.000000 +1.833333, 99.800186, 0.000000, 0.000000 +1.850000, 99.800186, 0.000000, 0.000000 +1.866667, 99.800186, 0.000000, 0.000000 +1.883333, 99.800186, 0.000000, 0.000000 +1.900000, 99.800186, 0.000000, 0.000000 +1.916667, 99.800186, 0.000000, 0.000000 +1.933333, 99.800186, 0.000000, 0.000000 +1.950000, 99.800186, 0.000000, 0.000000 +1.966667, 99.800186, 0.000000, 0.000000 +1.983333, 99.800186, 0.000000, 0.000000 +2.000000, 99.800186, 0.000000, 0.000000 +2.016667, 99.800186, 0.000000, 0.000000 +2.033333, 99.800186, 0.000000, 0.000000 +2.050000, 99.800186, 0.000000, 0.000000 +2.066667, 99.800186, 0.000000, 0.000000 +2.083333, 99.800186, 0.000000, 0.000000 +2.100000, 99.800186, 0.000000, 0.000000 +2.116667, 99.800186, 0.000000, 0.000000 +2.133333, 99.800186, 0.000000, 0.000000 +2.150000, 99.800186, 0.000000, 0.000000 +2.166667, 99.800186, 0.000000, 0.000000 +2.183333, 99.800186, 0.000000, 0.000000 +2.200000, 99.800186, 0.000000, 0.000000 +2.216667, 99.800186, 0.000000, 0.000000 +2.233333, 99.800186, 0.000000, 0.000000 +2.250000, 99.800186, 0.000000, 0.000000 +2.266667, 99.800186, 0.000000, 0.000000 +2.283333, 99.800186, 0.000000, 0.000000 +2.300000, 99.800186, 0.000000, 0.000000 +2.316667, 99.800186, 0.000000, 0.000000 +2.333333, 99.800186, 0.000000, 0.000000 +2.350000, 99.800186, 0.000000, 0.000000 +2.366667, 99.800186, 0.000000, 0.000000 +2.383333, 99.800186, 0.000000, 0.000000 +2.400000, 99.800186, 0.000000, 0.000000 +2.416667, 99.800186, 0.000000, 0.000000 +2.433333, 99.800186, 0.000000, 0.000000 +2.450000, 99.800186, 0.000000, 0.000000 +2.466667, 99.800186, 0.000000, 0.000000 +2.483333, 99.800186, 0.000000, 0.000000 +2.500000, 99.800186, 0.000000, 0.000000 +2.516667, 99.800186, 0.000000, 0.000000 +2.533333, 99.800186, 0.000000, 0.000000 +2.550000, 99.800186, 0.000000, 0.000000 +2.566667, 99.800186, 0.000000, 0.000000 +2.583333, 99.800186, 0.000000, 0.000000 +2.600000, 99.800186, 0.000000, 0.000000 +2.616667, 99.800186, 0.000000, 0.000000 +2.633333, 99.800186, 0.000000, 0.000000 +2.650000, 99.800186, 0.000000, 0.000000 +2.666667, 99.800186, 0.000000, 0.000000 +2.683333, 99.800186, 0.000000, 0.000000 +2.700000, 99.800186, 0.000000, 0.000000 +2.716667, 99.800186, 0.000000, 0.000000 +2.733333, 99.800186, 0.000000, 0.000000 +2.750000, 99.800186, 0.000000, 0.000000 +2.766667, 99.800186, 0.000000, 0.000000 +2.783333, 99.800186, 0.000000, 0.000000 +2.800000, 99.800186, 0.000000, 0.000000 +2.816667, 99.800186, 0.000000, 0.000000 +2.833333, 99.800186, 0.000000, 0.000000 +2.850000, 99.800186, 0.000000, 0.000000 +2.866667, 99.800186, 0.000000, 0.000000 +2.883333, 99.800186, 0.000000, 0.000000 +2.900000, 99.800186, 0.000000, 0.000000 +2.916667, 99.800186, 0.000000, 0.000000 +2.933333, 99.800186, 0.000000, 0.000000 +2.950000, 99.800186, 0.000000, 0.000000 +2.966667, 99.800186, 0.000000, 0.000000 +2.983333, 99.800186, 0.000000, 0.000000 +3.000000, 99.800186, 0.000000, 0.000000 +3.016667, 99.800186, 0.000000, 0.000000 +3.033333, 99.800186, 0.000000, 0.000000 +3.050000, 99.800186, 0.000000, 0.000000 +3.066667, 99.800186, 0.000000, 0.000000 +3.083333, 99.800186, 0.000000, 0.000000 +3.100000, 99.800186, 0.000000, 0.000000 +3.116667, 99.800186, 0.000000, 0.000000 +3.133333, 99.800186, 0.000000, 0.000000 +3.150000, 99.800186, 0.000000, 0.000000 +3.166667, 99.800186, 0.000000, 0.000000 +3.183333, 99.800186, 0.000000, 0.000000 +3.200000, 99.800186, 0.000000, 0.000000 +3.216667, 99.800186, 0.000000, 0.000000 +3.233333, 99.800186, 0.000000, 0.000000 +3.250000, 99.800186, 0.000000, 0.000000 +3.266667, 99.800186, 0.000000, 0.000000 +3.283333, 99.800186, 0.000000, 0.000000 +3.300000, 99.800186, 0.000000, 0.000000 +3.316667, 99.800186, 0.000000, 0.000000 +3.333333, 99.800186, 0.000000, 0.000000 +3.350000, 99.800186, 0.000000, 0.000000 +3.366667, 99.800186, 0.000000, 0.000000 +3.383333, 99.800186, 0.000000, 0.000000 +3.400000, 99.800186, 0.000000, 0.000000 +3.416667, 99.800186, 0.000000, 0.000000 +3.433333, 99.800186, 0.000000, 0.000000 +3.450000, 99.800186, 0.000000, 0.000000 +3.466667, 99.800186, 0.000000, 0.000000 +3.483333, 99.800186, 0.000000, 0.000000 +3.500000, 99.800186, 0.000000, 0.000000 +3.516667, 99.800186, 0.000000, 0.000000 +3.533333, 99.800186, 0.000000, 0.000000 +3.550000, 99.800186, 0.000000, 0.000000 +3.566667, 99.800186, 0.000000, 0.000000 +3.583333, 99.800186, 0.000000, 0.000000 +3.600000, 99.800186, 0.000000, 0.000000 +3.616667, 99.800186, 0.000000, 0.000000 +3.633333, 99.800186, 0.000000, 0.000000 +3.650000, 99.800186, 0.000000, 0.000000 +3.666667, 99.800186, 0.000000, 0.000000 +3.683333, 99.800186, 0.000000, 0.000000 +3.700000, 99.800186, 0.000000, 0.000000 +3.716667, 99.800186, 0.000000, 0.000000 +3.733333, 99.800186, 0.000000, 0.000000 +3.750000, 99.800186, 0.000000, 0.000000 +3.766667, 99.800186, 0.000000, 0.000000 +3.783333, 99.800186, 0.000000, 0.000000 +3.800000, 99.800186, 0.000000, 0.000000 +3.816667, 99.800186, 0.000000, 0.000000 +3.833333, 99.800186, 0.000000, 0.000000 +3.850000, 99.800186, 0.000000, 0.000000 +3.866667, 99.800186, 0.000000, 0.000000 +3.883333, 99.800186, 0.000000, 0.000000 +3.900000, 99.800186, 0.000000, 0.000000 +3.916667, 99.800186, 0.000000, 0.000000 +3.933333, 99.800186, 0.000000, 0.000000 +3.950000, 99.800186, 0.000000, 0.000000 +3.966667, 99.800186, 0.000000, 0.000000 +3.983333, 99.800186, 0.000000, 0.000000 +4.000000, 99.800186, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_1000kW_hd_600kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_1000kW_hd_600kWh.csv new file mode 100644 index 0000000..a667356 --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_1000kW_hd_600kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 1.074173, 386.702146, 391.667624 +1.016667, 3.423563, 845.780647, 860.309129 +1.033333, 5.903210, 892.672703, 908.405892 +1.050000, 8.441380, 913.741391, 930.029748 +1.066667, 11.032263, 932.717859, 949.513638 +1.083333, 13.643937, 940.202535, 957.200377 +1.100000, 16.268099, 944.698231, 961.817966 +1.116667, 18.904761, 949.198379, 966.440522 +1.133333, 21.553982, 953.719576, 971.085098 +1.150000, 24.215821, 958.261917, 975.751795 +1.166667, 26.890336, 962.825496, 980.440717 +1.183333, 29.577587, 967.410410, 985.151969 +1.200000, 32.277633, 972.016755, 989.885653 +1.216667, 34.990535, 976.644625, 994.641876 +1.233333, 37.716352, 981.294119, 999.420743 +1.250000, 40.455145, 985.965333, 1004.222359 +1.266667, 43.206974, 990.658365, 1009.046830 +1.283333, 45.971899, 995.373312, 1013.894264 +1.300000, 48.749984, 1000.110273, 1018.764767 +1.316667, 51.541287, 1004.869347, 1023.658447 +1.333333, 54.345872, 1009.650632, 1028.575413 +1.350000, 57.163801, 1014.454228, 1033.515773 +1.366667, 59.995135, 1019.280235, 1038.479636 +1.383333, 62.839937, 1024.128754, 1043.467112 +1.400000, 65.698270, 1028.999884, 1048.478311 +1.416667, 68.570197, 1033.893728, 1053.513344 +1.433333, 71.455781, 1038.810386, 1058.572321 +1.450000, 74.355087, 1043.749961, 1063.655355 +1.466667, 77.268177, 1048.712554, 1068.762557 +1.483333, 80.195117, 1053.698269, 1073.894040 +1.500000, 83.135970, 1058.707209, 1079.049917 +1.516667, 85.951046, 1013.427385, 1032.459656 +1.533333, 88.281297, 838.890363, 853.245416 +1.550000, 90.152008, 673.455979, 683.922078 +1.566667, 91.650240, 539.363467, 547.062648 +1.583333, 92.850906, 432.239808, 437.974538 +1.600000, 93.841247, 356.522609, 360.999838 +1.616667, 94.704883, 310.908907, 314.680742 +1.633333, 95.461122, 272.246122, 275.450667 +1.650000, 96.123343, 238.399486, 241.130416 +1.666667, 96.703224, 208.757310, 211.091068 +1.683333, 97.210997, 182.798104, 184.797522 +1.700000, 97.655621, 160.064909, 161.781861 +1.716667, 98.044947, 140.157306, 141.634809 +1.733333, 98.385849, 122.724462, 123.998341 +1.750000, 98.684346, 107.459016, 108.559228 +1.766667, 98.945712, 94.091714, 95.043408 +1.783333, 99.174564, 82.386699, 83.211069 +1.800000, 99.374945, 72.137384, 72.852351 +1.816667, 99.550398, 63.162824, 63.783595 +1.833333, 99.704021, 55.304546, 55.844063 +1.850000, 99.800497, 34.731434, 35.063643 +1.866667, 99.800578, 0.028874, 0.029141 +1.883333, 99.800578, 0.000000, 0.000000 +1.900000, 99.800578, 0.000000, 0.000000 +1.916667, 99.800578, 0.000000, 0.000000 +1.933333, 99.800578, 0.000000, 0.000000 +1.950000, 99.800578, 0.000000, 0.000000 +1.966667, 99.800578, 0.000000, 0.000000 +1.983333, 99.800578, 0.000000, 0.000000 +2.000000, 99.800578, 0.000000, 0.000000 +2.016667, 99.800578, 0.000000, 0.000000 +2.033333, 99.800578, 0.000000, 0.000000 +2.050000, 99.800578, 0.000000, 0.000000 +2.066667, 99.800578, 0.000000, 0.000000 +2.083333, 99.800578, 0.000000, 0.000000 +2.100000, 99.800578, 0.000000, 0.000000 +2.116667, 99.800578, 0.000000, 0.000000 +2.133333, 99.800578, 0.000000, 0.000000 +2.150000, 99.800578, 0.000000, 0.000000 +2.166667, 99.800578, 0.000000, 0.000000 +2.183333, 99.800578, 0.000000, 0.000000 +2.200000, 99.800578, 0.000000, 0.000000 +2.216667, 99.800578, 0.000000, 0.000000 +2.233333, 99.800578, 0.000000, 0.000000 +2.250000, 99.800578, 0.000000, 0.000000 +2.266667, 99.800578, 0.000000, 0.000000 +2.283333, 99.800578, 0.000000, 0.000000 +2.300000, 99.800578, 0.000000, 0.000000 +2.316667, 99.800578, 0.000000, 0.000000 +2.333333, 99.800578, 0.000000, 0.000000 +2.350000, 99.800578, 0.000000, 0.000000 +2.366667, 99.800578, 0.000000, 0.000000 +2.383333, 99.800578, 0.000000, 0.000000 +2.400000, 99.800578, 0.000000, 0.000000 +2.416667, 99.800578, 0.000000, 0.000000 +2.433333, 99.800578, 0.000000, 0.000000 +2.450000, 99.800578, 0.000000, 0.000000 +2.466667, 99.800578, 0.000000, 0.000000 +2.483333, 99.800578, 0.000000, 0.000000 +2.500000, 99.800578, 0.000000, 0.000000 +2.516667, 99.800578, 0.000000, 0.000000 +2.533333, 99.800578, 0.000000, 0.000000 +2.550000, 99.800578, 0.000000, 0.000000 +2.566667, 99.800578, 0.000000, 0.000000 +2.583333, 99.800578, 0.000000, 0.000000 +2.600000, 99.800578, 0.000000, 0.000000 +2.616667, 99.800578, 0.000000, 0.000000 +2.633333, 99.800578, 0.000000, 0.000000 +2.650000, 99.800578, 0.000000, 0.000000 +2.666667, 99.800578, 0.000000, 0.000000 +2.683333, 99.800578, 0.000000, 0.000000 +2.700000, 99.800578, 0.000000, 0.000000 +2.716667, 99.800578, 0.000000, 0.000000 +2.733333, 99.800578, 0.000000, 0.000000 +2.750000, 99.800578, 0.000000, 0.000000 +2.766667, 99.800578, 0.000000, 0.000000 +2.783333, 99.800578, 0.000000, 0.000000 +2.800000, 99.800578, 0.000000, 0.000000 +2.816667, 99.800578, 0.000000, 0.000000 +2.833333, 99.800578, 0.000000, 0.000000 +2.850000, 99.800578, 0.000000, 0.000000 +2.866667, 99.800578, 0.000000, 0.000000 +2.883333, 99.800578, 0.000000, 0.000000 +2.900000, 99.800578, 0.000000, 0.000000 +2.916667, 99.800578, 0.000000, 0.000000 +2.933333, 99.800578, 0.000000, 0.000000 +2.950000, 99.800578, 0.000000, 0.000000 +2.966667, 99.800578, 0.000000, 0.000000 +2.983333, 99.800578, 0.000000, 0.000000 +3.000000, 99.800578, 0.000000, 0.000000 +3.016667, 99.800578, 0.000000, 0.000000 +3.033333, 99.800578, 0.000000, 0.000000 +3.050000, 99.800578, 0.000000, 0.000000 +3.066667, 99.800578, 0.000000, 0.000000 +3.083333, 99.800578, 0.000000, 0.000000 +3.100000, 99.800578, 0.000000, 0.000000 +3.116667, 99.800578, 0.000000, 0.000000 +3.133333, 99.800578, 0.000000, 0.000000 +3.150000, 99.800578, 0.000000, 0.000000 +3.166667, 99.800578, 0.000000, 0.000000 +3.183333, 99.800578, 0.000000, 0.000000 +3.200000, 99.800578, 0.000000, 0.000000 +3.216667, 99.800578, 0.000000, 0.000000 +3.233333, 99.800578, 0.000000, 0.000000 +3.250000, 99.800578, 0.000000, 0.000000 +3.266667, 99.800578, 0.000000, 0.000000 +3.283333, 99.800578, 0.000000, 0.000000 +3.300000, 99.800578, 0.000000, 0.000000 +3.316667, 99.800578, 0.000000, 0.000000 +3.333333, 99.800578, 0.000000, 0.000000 +3.350000, 99.800578, 0.000000, 0.000000 +3.366667, 99.800578, 0.000000, 0.000000 +3.383333, 99.800578, 0.000000, 0.000000 +3.400000, 99.800578, 0.000000, 0.000000 +3.416667, 99.800578, 0.000000, 0.000000 +3.433333, 99.800578, 0.000000, 0.000000 +3.450000, 99.800578, 0.000000, 0.000000 +3.466667, 99.800578, 0.000000, 0.000000 +3.483333, 99.800578, 0.000000, 0.000000 +3.500000, 99.800578, 0.000000, 0.000000 +3.516667, 99.800578, 0.000000, 0.000000 +3.533333, 99.800578, 0.000000, 0.000000 +3.550000, 99.800578, 0.000000, 0.000000 +3.566667, 99.800578, 0.000000, 0.000000 +3.583333, 99.800578, 0.000000, 0.000000 +3.600000, 99.800578, 0.000000, 0.000000 +3.616667, 99.800578, 0.000000, 0.000000 +3.633333, 99.800578, 0.000000, 0.000000 +3.650000, 99.800578, 0.000000, 0.000000 +3.666667, 99.800578, 0.000000, 0.000000 +3.683333, 99.800578, 0.000000, 0.000000 +3.700000, 99.800578, 0.000000, 0.000000 +3.716667, 99.800578, 0.000000, 0.000000 +3.733333, 99.800578, 0.000000, 0.000000 +3.750000, 99.800578, 0.000000, 0.000000 +3.766667, 99.800578, 0.000000, 0.000000 +3.783333, 99.800578, 0.000000, 0.000000 +3.800000, 99.800578, 0.000000, 0.000000 +3.816667, 99.800578, 0.000000, 0.000000 +3.833333, 99.800578, 0.000000, 0.000000 +3.850000, 99.800578, 0.000000, 0.000000 +3.866667, 99.800578, 0.000000, 0.000000 +3.883333, 99.800578, 0.000000, 0.000000 +3.900000, 99.800578, 0.000000, 0.000000 +3.916667, 99.800578, 0.000000, 0.000000 +3.933333, 99.800578, 0.000000, 0.000000 +3.950000, 99.800578, 0.000000, 0.000000 +3.966667, 99.800578, 0.000000, 0.000000 +3.983333, 99.800578, 0.000000, 0.000000 +4.000000, 99.800578, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_1000kW_hd_800kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_1000kW_hd_800kWh.csv new file mode 100644 index 0000000..42ff7ae --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_1000kW_hd_800kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.808664, 388.158675, 392.795951 +1.016667, 2.561363, 841.295344, 854.031705 +1.033333, 4.416882, 890.649168, 904.444530 +1.050000, 6.324383, 915.600761, 929.944839 +1.066667, 8.259969, 929.081133, 943.725388 +1.083333, 10.223572, 942.529382, 957.475706 +1.100000, 12.202732, 949.997030, 965.112214 +1.116667, 14.189014, 953.415136, 968.607879 +1.133333, 16.182397, 956.823748, 972.094002 +1.150000, 18.182906, 960.244382, 975.592589 +1.166667, 20.190566, 963.677079, 979.103683 +1.183333, 22.205404, 967.121879, 982.627328 +1.200000, 24.227443, 970.578824, 986.163569 +1.216667, 26.256709, 974.047957, 989.712449 +1.233333, 28.293229, 977.529318, 993.274014 +1.250000, 30.337027, 981.022950, 996.848307 +1.266667, 32.388128, 984.528894, 1000.435375 +1.283333, 34.446560, 988.047193, 1004.035261 +1.300000, 36.512347, 991.577889, 1007.648012 +1.316667, 38.585516, 995.121025, 1011.273672 +1.333333, 40.666093, 998.676642, 1014.912286 +1.350000, 42.754102, 1002.244784, 1018.563902 +1.366667, 44.849572, 1005.825494, 1022.228563 +1.383333, 46.952528, 1009.418813, 1025.906317 +1.400000, 49.062996, 1013.024787, 1029.597209 +1.416667, 51.181004, 1016.643457, 1033.301286 +1.433333, 53.306576, 1020.274867, 1037.018594 +1.450000, 55.439741, 1023.919061, 1040.749179 +1.466667, 57.580524, 1027.576082, 1044.493089 +1.483333, 59.728954, 1031.245974, 1048.250370 +1.500000, 61.885055, 1034.928781, 1052.021070 +1.516667, 64.048856, 1038.624547, 1055.805235 +1.533333, 66.220384, 1042.333316, 1059.602912 +1.550000, 68.399666, 1046.055133, 1063.414151 +1.566667, 70.586728, 1049.790042, 1067.238997 +1.583333, 72.781599, 1053.538088, 1071.077500 +1.600000, 74.984306, 1057.299316, 1074.929706 +1.616667, 77.194877, 1061.073769, 1078.795665 +1.633333, 79.413338, 1064.861495, 1082.675424 +1.650000, 81.639718, 1068.662537, 1086.569033 +1.666667, 83.874045, 1072.476940, 1090.476539 +1.683333, 86.116347, 1076.304752, 1094.397992 +1.700000, 88.318724, 1057.140912, 1074.767467 +1.716667, 90.178707, 892.792107, 906.634244 +1.733333, 91.676894, 719.129762, 729.394919 +1.750000, 92.875834, 575.491241, 583.123200 +1.766667, 93.864432, 474.526901, 480.483247 +1.783333, 94.725797, 413.455413, 418.468148 +1.800000, 95.479901, 361.969531, 366.227593 +1.816667, 96.140142, 316.915968, 320.544223 +1.833333, 96.718207, 277.471220, 280.571463 +1.850000, 97.224325, 242.936726, 245.592586 +1.866667, 97.667453, 212.701068, 214.981562 +1.883333, 98.055430, 186.228996, 188.191337 +1.900000, 98.395121, 163.051931, 164.743751 +1.916667, 98.692537, 142.759657, 144.220777 +1.933333, 98.952939, 124.993044, 126.256889 +1.950000, 99.180935, 109.437687, 110.532419 +1.966667, 99.380556, 95.818329, 96.767760 +1.983333, 99.555335, 83.893988, 84.718319 +2.000000, 99.708364, 73.453683, 74.170106 +2.016667, 99.800709, 44.325784, 44.749155 +2.033333, 99.800786, 0.036782, 0.037122 +2.050000, 99.800786, 0.000000, 0.000000 +2.066667, 99.800786, 0.000000, 0.000000 +2.083333, 99.800786, 0.000000, 0.000000 +2.100000, 99.800786, 0.000000, 0.000000 +2.116667, 99.800786, 0.000000, 0.000000 +2.133333, 99.800786, 0.000000, 0.000000 +2.150000, 99.800786, 0.000000, 0.000000 +2.166667, 99.800786, 0.000000, 0.000000 +2.183333, 99.800786, 0.000000, 0.000000 +2.200000, 99.800786, 0.000000, 0.000000 +2.216667, 99.800786, 0.000000, 0.000000 +2.233333, 99.800786, 0.000000, 0.000000 +2.250000, 99.800786, 0.000000, 0.000000 +2.266667, 99.800786, 0.000000, 0.000000 +2.283333, 99.800786, 0.000000, 0.000000 +2.300000, 99.800786, 0.000000, 0.000000 +2.316667, 99.800786, 0.000000, 0.000000 +2.333333, 99.800786, 0.000000, 0.000000 +2.350000, 99.800786, 0.000000, 0.000000 +2.366667, 99.800786, 0.000000, 0.000000 +2.383333, 99.800786, 0.000000, 0.000000 +2.400000, 99.800786, 0.000000, 0.000000 +2.416667, 99.800786, 0.000000, 0.000000 +2.433333, 99.800786, 0.000000, 0.000000 +2.450000, 99.800786, 0.000000, 0.000000 +2.466667, 99.800786, 0.000000, 0.000000 +2.483333, 99.800786, 0.000000, 0.000000 +2.500000, 99.800786, 0.000000, 0.000000 +2.516667, 99.800786, 0.000000, 0.000000 +2.533333, 99.800786, 0.000000, 0.000000 +2.550000, 99.800786, 0.000000, 0.000000 +2.566667, 99.800786, 0.000000, 0.000000 +2.583333, 99.800786, 0.000000, 0.000000 +2.600000, 99.800786, 0.000000, 0.000000 +2.616667, 99.800786, 0.000000, 0.000000 +2.633333, 99.800786, 0.000000, 0.000000 +2.650000, 99.800786, 0.000000, 0.000000 +2.666667, 99.800786, 0.000000, 0.000000 +2.683333, 99.800786, 0.000000, 0.000000 +2.700000, 99.800786, 0.000000, 0.000000 +2.716667, 99.800786, 0.000000, 0.000000 +2.733333, 99.800786, 0.000000, 0.000000 +2.750000, 99.800786, 0.000000, 0.000000 +2.766667, 99.800786, 0.000000, 0.000000 +2.783333, 99.800786, 0.000000, 0.000000 +2.800000, 99.800786, 0.000000, 0.000000 +2.816667, 99.800786, 0.000000, 0.000000 +2.833333, 99.800786, 0.000000, 0.000000 +2.850000, 99.800786, 0.000000, 0.000000 +2.866667, 99.800786, 0.000000, 0.000000 +2.883333, 99.800786, 0.000000, 0.000000 +2.900000, 99.800786, 0.000000, 0.000000 +2.916667, 99.800786, 0.000000, 0.000000 +2.933333, 99.800786, 0.000000, 0.000000 +2.950000, 99.800786, 0.000000, 0.000000 +2.966667, 99.800786, 0.000000, 0.000000 +2.983333, 99.800786, 0.000000, 0.000000 +3.000000, 99.800786, 0.000000, 0.000000 +3.016667, 99.800786, 0.000000, 0.000000 +3.033333, 99.800786, 0.000000, 0.000000 +3.050000, 99.800786, 0.000000, 0.000000 +3.066667, 99.800786, 0.000000, 0.000000 +3.083333, 99.800786, 0.000000, 0.000000 +3.100000, 99.800786, 0.000000, 0.000000 +3.116667, 99.800786, 0.000000, 0.000000 +3.133333, 99.800786, 0.000000, 0.000000 +3.150000, 99.800786, 0.000000, 0.000000 +3.166667, 99.800786, 0.000000, 0.000000 +3.183333, 99.800786, 0.000000, 0.000000 +3.200000, 99.800786, 0.000000, 0.000000 +3.216667, 99.800786, 0.000000, 0.000000 +3.233333, 99.800786, 0.000000, 0.000000 +3.250000, 99.800786, 0.000000, 0.000000 +3.266667, 99.800786, 0.000000, 0.000000 +3.283333, 99.800786, 0.000000, 0.000000 +3.300000, 99.800786, 0.000000, 0.000000 +3.316667, 99.800786, 0.000000, 0.000000 +3.333333, 99.800786, 0.000000, 0.000000 +3.350000, 99.800786, 0.000000, 0.000000 +3.366667, 99.800786, 0.000000, 0.000000 +3.383333, 99.800786, 0.000000, 0.000000 +3.400000, 99.800786, 0.000000, 0.000000 +3.416667, 99.800786, 0.000000, 0.000000 +3.433333, 99.800786, 0.000000, 0.000000 +3.450000, 99.800786, 0.000000, 0.000000 +3.466667, 99.800786, 0.000000, 0.000000 +3.483333, 99.800786, 0.000000, 0.000000 +3.500000, 99.800786, 0.000000, 0.000000 +3.516667, 99.800786, 0.000000, 0.000000 +3.533333, 99.800786, 0.000000, 0.000000 +3.550000, 99.800786, 0.000000, 0.000000 +3.566667, 99.800786, 0.000000, 0.000000 +3.583333, 99.800786, 0.000000, 0.000000 +3.600000, 99.800786, 0.000000, 0.000000 +3.616667, 99.800786, 0.000000, 0.000000 +3.633333, 99.800786, 0.000000, 0.000000 +3.650000, 99.800786, 0.000000, 0.000000 +3.666667, 99.800786, 0.000000, 0.000000 +3.683333, 99.800786, 0.000000, 0.000000 +3.700000, 99.800786, 0.000000, 0.000000 +3.716667, 99.800786, 0.000000, 0.000000 +3.733333, 99.800786, 0.000000, 0.000000 +3.750000, 99.800786, 0.000000, 0.000000 +3.766667, 99.800786, 0.000000, 0.000000 +3.783333, 99.800786, 0.000000, 0.000000 +3.800000, 99.800786, 0.000000, 0.000000 +3.816667, 99.800786, 0.000000, 0.000000 +3.833333, 99.800786, 0.000000, 0.000000 +3.850000, 99.800786, 0.000000, 0.000000 +3.866667, 99.800786, 0.000000, 0.000000 +3.883333, 99.800786, 0.000000, 0.000000 +3.900000, 99.800786, 0.000000, 0.000000 +3.916667, 99.800786, 0.000000, 0.000000 +3.933333, 99.800786, 0.000000, 0.000000 +3.950000, 99.800786, 0.000000, 0.000000 +3.966667, 99.800786, 0.000000, 0.000000 +3.983333, 99.800786, 0.000000, 0.000000 +4.000000, 99.800786, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_1000kW_ld_100kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_1000kW_ld_100kWh.csv new file mode 100644 index 0000000..863092c --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_1000kW_ld_100kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 3.277102, 196.626130, 200.633388 +1.016667, 8.631848, 321.284722, 330.185018 +1.033333, 14.206680, 334.489924, 344.019657 +1.050000, 19.846382, 338.382162, 348.101550 +1.066667, 25.543273, 341.813443, 351.701589 +1.083333, 31.297878, 345.276294, 355.336239 +1.100000, 37.110757, 348.772774, 359.007702 +1.116667, 42.982477, 352.303177, 362.716336 +1.133333, 48.913607, 355.867803, 366.462501 +1.150000, 54.904723, 359.466952, 370.246561 +1.166667, 60.956405, 363.100925, 374.068883 +1.183333, 67.069239, 366.770028, 377.929837 +1.200000, 72.814788, 344.732917, 354.765804 +1.216667, 77.538831, 283.442633, 290.658256 +1.233333, 81.381165, 230.540014, 235.692882 +1.250000, 84.503011, 187.310775, 191.027267 +1.266667, 87.037904, 152.093560, 154.803066 +1.283333, 89.095184, 123.436820, 125.433725 +1.300000, 90.764180, 100.139760, 101.627269 +1.316667, 92.117744, 81.213813, 82.333301 +1.333333, 93.216936, 65.951549, 66.803970 +1.350000, 94.155659, 56.323391, 57.020913 +1.366667, 94.978024, 49.341851, 49.933603 +1.383333, 95.698573, 43.232957, 43.736662 +1.400000, 96.329867, 37.877628, 38.307599 +1.416667, 96.882926, 33.183545, 33.551532 +1.433333, 97.367418, 29.069557, 29.385251 +1.450000, 97.791824, 25.464357, 25.735782 +1.466667, 98.163580, 22.305314, 22.539141 +1.483333, 98.489204, 19.537437, 19.739239 +1.500000, 98.774411, 17.112463, 17.286909 +1.516667, 99.024212, 14.988042, 15.139061 +1.533333, 99.242996, 13.127025, 13.257934 +1.550000, 99.434610, 11.496829, 11.610441 +1.566667, 99.602424, 10.068886, 10.167588 +1.583333, 99.749393, 8.818149, 8.903978 +1.600000, 99.800348, 3.057276, 3.086056 +1.616667, 99.800390, 0.002531, 0.002555 +1.633333, 99.800390, 0.000000, 0.000000 +1.650000, 99.800390, 0.000000, 0.000000 +1.666667, 99.800390, 0.000000, 0.000000 +1.683333, 99.800390, 0.000000, 0.000000 +1.700000, 99.800390, 0.000000, 0.000000 +1.716667, 99.800390, 0.000000, 0.000000 +1.733333, 99.800390, 0.000000, 0.000000 +1.750000, 99.800390, 0.000000, 0.000000 +1.766667, 99.800390, 0.000000, 0.000000 +1.783333, 99.800390, 0.000000, 0.000000 +1.800000, 99.800390, 0.000000, 0.000000 +1.816667, 99.800390, 0.000000, 0.000000 +1.833333, 99.800390, 0.000000, 0.000000 +1.850000, 99.800390, 0.000000, 0.000000 +1.866667, 99.800390, 0.000000, 0.000000 +1.883333, 99.800390, 0.000000, 0.000000 +1.900000, 99.800390, 0.000000, 0.000000 +1.916667, 99.800390, 0.000000, 0.000000 +1.933333, 99.800390, 0.000000, 0.000000 +1.950000, 99.800390, 0.000000, 0.000000 +1.966667, 99.800390, 0.000000, 0.000000 +1.983333, 99.800390, 0.000000, 0.000000 +2.000000, 99.800390, 0.000000, 0.000000 +2.016667, 99.800390, 0.000000, 0.000000 +2.033333, 99.800390, 0.000000, 0.000000 +2.050000, 99.800390, 0.000000, 0.000000 +2.066667, 99.800390, 0.000000, 0.000000 +2.083333, 99.800390, 0.000000, 0.000000 +2.100000, 99.800390, 0.000000, 0.000000 +2.116667, 99.800390, 0.000000, 0.000000 +2.133333, 99.800390, 0.000000, 0.000000 +2.150000, 99.800390, 0.000000, 0.000000 +2.166667, 99.800390, 0.000000, 0.000000 +2.183333, 99.800390, 0.000000, 0.000000 +2.200000, 99.800390, 0.000000, 0.000000 +2.216667, 99.800390, 0.000000, 0.000000 +2.233333, 99.800390, 0.000000, 0.000000 +2.250000, 99.800390, 0.000000, 0.000000 +2.266667, 99.800390, 0.000000, 0.000000 +2.283333, 99.800390, 0.000000, 0.000000 +2.300000, 99.800390, 0.000000, 0.000000 +2.316667, 99.800390, 0.000000, 0.000000 +2.333333, 99.800390, 0.000000, 0.000000 +2.350000, 99.800390, 0.000000, 0.000000 +2.366667, 99.800390, 0.000000, 0.000000 +2.383333, 99.800390, 0.000000, 0.000000 +2.400000, 99.800390, 0.000000, 0.000000 +2.416667, 99.800390, 0.000000, 0.000000 +2.433333, 99.800390, 0.000000, 0.000000 +2.450000, 99.800390, 0.000000, 0.000000 +2.466667, 99.800390, 0.000000, 0.000000 +2.483333, 99.800390, 0.000000, 0.000000 +2.500000, 99.800390, 0.000000, 0.000000 +2.516667, 99.800390, 0.000000, 0.000000 +2.533333, 99.800390, 0.000000, 0.000000 +2.550000, 99.800390, 0.000000, 0.000000 +2.566667, 99.800390, 0.000000, 0.000000 +2.583333, 99.800390, 0.000000, 0.000000 +2.600000, 99.800390, 0.000000, 0.000000 +2.616667, 99.800390, 0.000000, 0.000000 +2.633333, 99.800390, 0.000000, 0.000000 +2.650000, 99.800390, 0.000000, 0.000000 +2.666667, 99.800390, 0.000000, 0.000000 +2.683333, 99.800390, 0.000000, 0.000000 +2.700000, 99.800390, 0.000000, 0.000000 +2.716667, 99.800390, 0.000000, 0.000000 +2.733333, 99.800390, 0.000000, 0.000000 +2.750000, 99.800390, 0.000000, 0.000000 +2.766667, 99.800390, 0.000000, 0.000000 +2.783333, 99.800390, 0.000000, 0.000000 +2.800000, 99.800390, 0.000000, 0.000000 +2.816667, 99.800390, 0.000000, 0.000000 +2.833333, 99.800390, 0.000000, 0.000000 +2.850000, 99.800390, 0.000000, 0.000000 +2.866667, 99.800390, 0.000000, 0.000000 +2.883333, 99.800390, 0.000000, 0.000000 +2.900000, 99.800390, 0.000000, 0.000000 +2.916667, 99.800390, 0.000000, 0.000000 +2.933333, 99.800390, 0.000000, 0.000000 +2.950000, 99.800390, 0.000000, 0.000000 +2.966667, 99.800390, 0.000000, 0.000000 +2.983333, 99.800390, 0.000000, 0.000000 +3.000000, 99.800390, 0.000000, 0.000000 +3.016667, 99.800390, 0.000000, 0.000000 +3.033333, 99.800390, 0.000000, 0.000000 +3.050000, 99.800390, 0.000000, 0.000000 +3.066667, 99.800390, 0.000000, 0.000000 +3.083333, 99.800390, 0.000000, 0.000000 +3.100000, 99.800390, 0.000000, 0.000000 +3.116667, 99.800390, 0.000000, 0.000000 +3.133333, 99.800390, 0.000000, 0.000000 +3.150000, 99.800390, 0.000000, 0.000000 +3.166667, 99.800390, 0.000000, 0.000000 +3.183333, 99.800390, 0.000000, 0.000000 +3.200000, 99.800390, 0.000000, 0.000000 +3.216667, 99.800390, 0.000000, 0.000000 +3.233333, 99.800390, 0.000000, 0.000000 +3.250000, 99.800390, 0.000000, 0.000000 +3.266667, 99.800390, 0.000000, 0.000000 +3.283333, 99.800390, 0.000000, 0.000000 +3.300000, 99.800390, 0.000000, 0.000000 +3.316667, 99.800390, 0.000000, 0.000000 +3.333333, 99.800390, 0.000000, 0.000000 +3.350000, 99.800390, 0.000000, 0.000000 +3.366667, 99.800390, 0.000000, 0.000000 +3.383333, 99.800390, 0.000000, 0.000000 +3.400000, 99.800390, 0.000000, 0.000000 +3.416667, 99.800390, 0.000000, 0.000000 +3.433333, 99.800390, 0.000000, 0.000000 +3.450000, 99.800390, 0.000000, 0.000000 +3.466667, 99.800390, 0.000000, 0.000000 +3.483333, 99.800390, 0.000000, 0.000000 +3.500000, 99.800390, 0.000000, 0.000000 +3.516667, 99.800390, 0.000000, 0.000000 +3.533333, 99.800390, 0.000000, 0.000000 +3.550000, 99.800390, 0.000000, 0.000000 +3.566667, 99.800390, 0.000000, 0.000000 +3.583333, 99.800390, 0.000000, 0.000000 +3.600000, 99.800390, 0.000000, 0.000000 +3.616667, 99.800390, 0.000000, 0.000000 +3.633333, 99.800390, 0.000000, 0.000000 +3.650000, 99.800390, 0.000000, 0.000000 +3.666667, 99.800390, 0.000000, 0.000000 +3.683333, 99.800390, 0.000000, 0.000000 +3.700000, 99.800390, 0.000000, 0.000000 +3.716667, 99.800390, 0.000000, 0.000000 +3.733333, 99.800390, 0.000000, 0.000000 +3.750000, 99.800390, 0.000000, 0.000000 +3.766667, 99.800390, 0.000000, 0.000000 +3.783333, 99.800390, 0.000000, 0.000000 +3.800000, 99.800390, 0.000000, 0.000000 +3.816667, 99.800390, 0.000000, 0.000000 +3.833333, 99.800390, 0.000000, 0.000000 +3.850000, 99.800390, 0.000000, 0.000000 +3.866667, 99.800390, 0.000000, 0.000000 +3.883333, 99.800390, 0.000000, 0.000000 +3.900000, 99.800390, 0.000000, 0.000000 +3.916667, 99.800390, 0.000000, 0.000000 +3.933333, 99.800390, 0.000000, 0.000000 +3.950000, 99.800390, 0.000000, 0.000000 +3.966667, 99.800390, 0.000000, 0.000000 +3.983333, 99.800390, 0.000000, 0.000000 +4.000000, 99.800390, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_1000kW_ld_50kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_1000kW_ld_50kWh.csv new file mode 100644 index 0000000..cb0fbc1 --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_1000kW_ld_50kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 3.539523, 106.185693, 108.446743 +1.016667, 8.914655, 161.253967, 165.732814 +1.033333, 14.501086, 167.592915, 172.374666 +1.050000, 20.149390, 169.449135, 174.321474 +1.066667, 25.855008, 171.168530, 176.125544 +1.083333, 31.618483, 172.904264, 177.947505 +1.100000, 37.440379, 174.656869, 179.787938 +1.116667, 43.321262, 176.426494, 181.647022 +1.133333, 49.261705, 178.213288, 183.524938 +1.150000, 55.262285, 180.017402, 185.421868 +1.166667, 61.323585, 181.838988, 187.337997 +1.183333, 67.446191, 183.678199, 189.273511 +1.200000, 73.135726, 170.686050, 175.619229 +1.216667, 77.793213, 139.724612, 143.248650 +1.233333, 81.583485, 113.708137, 116.228943 +1.250000, 84.664902, 92.442512, 94.263740 +1.266667, 87.168127, 75.096745, 76.426397 +1.283333, 89.200400, 60.968188, 61.949295 +1.300000, 90.849504, 49.473140, 50.204685 +1.316667, 92.187146, 40.129247, 40.680244 +1.333333, 93.274607, 32.623833, 33.044204 +1.350000, 94.206790, 27.965501, 28.311217 +1.366667, 95.023453, 24.499894, 24.793249 +1.383333, 95.738941, 21.464635, 21.714354 +1.400000, 96.365739, 18.803942, 19.017113 +1.416667, 96.914804, 16.471933, 16.654378 +1.433333, 97.395746, 14.428269, 14.584787 +1.450000, 97.816996, 12.637497, 12.772067 +1.466667, 98.185945, 11.068479, 11.184406 +1.483333, 98.509074, 9.693873, 9.793920 +1.500000, 98.792064, 8.489682, 8.576163 +1.516667, 99.039892, 7.434848, 7.509712 +1.533333, 99.256922, 6.510900, 6.575792 +1.550000, 99.446977, 5.701638, 5.757952 +1.566667, 99.613405, 4.992859, 5.041779 +1.583333, 99.759142, 4.372110, 4.414647 +1.600000, 99.800286, 1.234310, 1.245889 +1.616667, 99.800320, 0.001022, 0.001031 +1.633333, 99.800320, 0.000000, 0.000000 +1.650000, 99.800320, 0.000000, 0.000000 +1.666667, 99.800320, 0.000000, 0.000000 +1.683333, 99.800320, 0.000000, 0.000000 +1.700000, 99.800320, 0.000000, 0.000000 +1.716667, 99.800320, 0.000000, 0.000000 +1.733333, 99.800320, 0.000000, 0.000000 +1.750000, 99.800320, 0.000000, 0.000000 +1.766667, 99.800320, 0.000000, 0.000000 +1.783333, 99.800320, 0.000000, 0.000000 +1.800000, 99.800320, 0.000000, 0.000000 +1.816667, 99.800320, 0.000000, 0.000000 +1.833333, 99.800320, 0.000000, 0.000000 +1.850000, 99.800320, 0.000000, 0.000000 +1.866667, 99.800320, 0.000000, 0.000000 +1.883333, 99.800320, 0.000000, 0.000000 +1.900000, 99.800320, 0.000000, 0.000000 +1.916667, 99.800320, 0.000000, 0.000000 +1.933333, 99.800320, 0.000000, 0.000000 +1.950000, 99.800320, 0.000000, 0.000000 +1.966667, 99.800320, 0.000000, 0.000000 +1.983333, 99.800320, 0.000000, 0.000000 +2.000000, 99.800320, 0.000000, 0.000000 +2.016667, 99.800320, 0.000000, 0.000000 +2.033333, 99.800320, 0.000000, 0.000000 +2.050000, 99.800320, 0.000000, 0.000000 +2.066667, 99.800320, 0.000000, 0.000000 +2.083333, 99.800320, 0.000000, 0.000000 +2.100000, 99.800320, 0.000000, 0.000000 +2.116667, 99.800320, 0.000000, 0.000000 +2.133333, 99.800320, 0.000000, 0.000000 +2.150000, 99.800320, 0.000000, 0.000000 +2.166667, 99.800320, 0.000000, 0.000000 +2.183333, 99.800320, 0.000000, 0.000000 +2.200000, 99.800320, 0.000000, 0.000000 +2.216667, 99.800320, 0.000000, 0.000000 +2.233333, 99.800320, 0.000000, 0.000000 +2.250000, 99.800320, 0.000000, 0.000000 +2.266667, 99.800320, 0.000000, 0.000000 +2.283333, 99.800320, 0.000000, 0.000000 +2.300000, 99.800320, 0.000000, 0.000000 +2.316667, 99.800320, 0.000000, 0.000000 +2.333333, 99.800320, 0.000000, 0.000000 +2.350000, 99.800320, 0.000000, 0.000000 +2.366667, 99.800320, 0.000000, 0.000000 +2.383333, 99.800320, 0.000000, 0.000000 +2.400000, 99.800320, 0.000000, 0.000000 +2.416667, 99.800320, 0.000000, 0.000000 +2.433333, 99.800320, 0.000000, 0.000000 +2.450000, 99.800320, 0.000000, 0.000000 +2.466667, 99.800320, 0.000000, 0.000000 +2.483333, 99.800320, 0.000000, 0.000000 +2.500000, 99.800320, 0.000000, 0.000000 +2.516667, 99.800320, 0.000000, 0.000000 +2.533333, 99.800320, 0.000000, 0.000000 +2.550000, 99.800320, 0.000000, 0.000000 +2.566667, 99.800320, 0.000000, 0.000000 +2.583333, 99.800320, 0.000000, 0.000000 +2.600000, 99.800320, 0.000000, 0.000000 +2.616667, 99.800320, 0.000000, 0.000000 +2.633333, 99.800320, 0.000000, 0.000000 +2.650000, 99.800320, 0.000000, 0.000000 +2.666667, 99.800320, 0.000000, 0.000000 +2.683333, 99.800320, 0.000000, 0.000000 +2.700000, 99.800320, 0.000000, 0.000000 +2.716667, 99.800320, 0.000000, 0.000000 +2.733333, 99.800320, 0.000000, 0.000000 +2.750000, 99.800320, 0.000000, 0.000000 +2.766667, 99.800320, 0.000000, 0.000000 +2.783333, 99.800320, 0.000000, 0.000000 +2.800000, 99.800320, 0.000000, 0.000000 +2.816667, 99.800320, 0.000000, 0.000000 +2.833333, 99.800320, 0.000000, 0.000000 +2.850000, 99.800320, 0.000000, 0.000000 +2.866667, 99.800320, 0.000000, 0.000000 +2.883333, 99.800320, 0.000000, 0.000000 +2.900000, 99.800320, 0.000000, 0.000000 +2.916667, 99.800320, 0.000000, 0.000000 +2.933333, 99.800320, 0.000000, 0.000000 +2.950000, 99.800320, 0.000000, 0.000000 +2.966667, 99.800320, 0.000000, 0.000000 +2.983333, 99.800320, 0.000000, 0.000000 +3.000000, 99.800320, 0.000000, 0.000000 +3.016667, 99.800320, 0.000000, 0.000000 +3.033333, 99.800320, 0.000000, 0.000000 +3.050000, 99.800320, 0.000000, 0.000000 +3.066667, 99.800320, 0.000000, 0.000000 +3.083333, 99.800320, 0.000000, 0.000000 +3.100000, 99.800320, 0.000000, 0.000000 +3.116667, 99.800320, 0.000000, 0.000000 +3.133333, 99.800320, 0.000000, 0.000000 +3.150000, 99.800320, 0.000000, 0.000000 +3.166667, 99.800320, 0.000000, 0.000000 +3.183333, 99.800320, 0.000000, 0.000000 +3.200000, 99.800320, 0.000000, 0.000000 +3.216667, 99.800320, 0.000000, 0.000000 +3.233333, 99.800320, 0.000000, 0.000000 +3.250000, 99.800320, 0.000000, 0.000000 +3.266667, 99.800320, 0.000000, 0.000000 +3.283333, 99.800320, 0.000000, 0.000000 +3.300000, 99.800320, 0.000000, 0.000000 +3.316667, 99.800320, 0.000000, 0.000000 +3.333333, 99.800320, 0.000000, 0.000000 +3.350000, 99.800320, 0.000000, 0.000000 +3.366667, 99.800320, 0.000000, 0.000000 +3.383333, 99.800320, 0.000000, 0.000000 +3.400000, 99.800320, 0.000000, 0.000000 +3.416667, 99.800320, 0.000000, 0.000000 +3.433333, 99.800320, 0.000000, 0.000000 +3.450000, 99.800320, 0.000000, 0.000000 +3.466667, 99.800320, 0.000000, 0.000000 +3.483333, 99.800320, 0.000000, 0.000000 +3.500000, 99.800320, 0.000000, 0.000000 +3.516667, 99.800320, 0.000000, 0.000000 +3.533333, 99.800320, 0.000000, 0.000000 +3.550000, 99.800320, 0.000000, 0.000000 +3.566667, 99.800320, 0.000000, 0.000000 +3.583333, 99.800320, 0.000000, 0.000000 +3.600000, 99.800320, 0.000000, 0.000000 +3.616667, 99.800320, 0.000000, 0.000000 +3.633333, 99.800320, 0.000000, 0.000000 +3.650000, 99.800320, 0.000000, 0.000000 +3.666667, 99.800320, 0.000000, 0.000000 +3.683333, 99.800320, 0.000000, 0.000000 +3.700000, 99.800320, 0.000000, 0.000000 +3.716667, 99.800320, 0.000000, 0.000000 +3.733333, 99.800320, 0.000000, 0.000000 +3.750000, 99.800320, 0.000000, 0.000000 +3.766667, 99.800320, 0.000000, 0.000000 +3.783333, 99.800320, 0.000000, 0.000000 +3.800000, 99.800320, 0.000000, 0.000000 +3.816667, 99.800320, 0.000000, 0.000000 +3.833333, 99.800320, 0.000000, 0.000000 +3.850000, 99.800320, 0.000000, 0.000000 +3.866667, 99.800320, 0.000000, 0.000000 +3.883333, 99.800320, 0.000000, 0.000000 +3.900000, 99.800320, 0.000000, 0.000000 +3.916667, 99.800320, 0.000000, 0.000000 +3.933333, 99.800320, 0.000000, 0.000000 +3.950000, 99.800320, 0.000000, 0.000000 +3.966667, 99.800320, 0.000000, 0.000000 +3.983333, 99.800320, 0.000000, 0.000000 +4.000000, 99.800320, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_1000kW_md_200kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_1000kW_md_200kWh.csv new file mode 100644 index 0000000..3859998 --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_1000kW_md_200kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 2.682263, 321.871540, 327.768882 +1.016667, 7.782580, 612.038043, 628.437068 +1.033333, 13.110398, 639.338204, 656.987743 +1.050000, 18.511266, 648.104156, 666.164986 +1.066667, 23.964880, 654.433626, 672.794387 +1.083333, 29.471605, 660.807039, 679.472320 +1.100000, 35.031939, 667.240070, 686.215275 +1.116667, 40.646383, 673.733225, 693.023858 +1.133333, 46.315441, 680.287018, 699.898683 +1.150000, 52.039624, 686.901963, 706.840366 +1.166667, 57.819446, 693.578580, 713.849533 +1.183333, 63.655424, 700.317391, 720.926811 +1.200000, 69.546752, 706.959341, 727.905140 +1.216667, 74.868489, 638.608456, 656.223969 +1.233333, 79.234262, 523.892778, 536.566011 +1.250000, 82.775952, 425.002832, 434.055783 +1.266667, 85.647423, 344.576512, 351.114802 +1.283333, 87.974892, 279.296291, 284.072932 +1.300000, 89.861040, 226.337783, 229.867182 +1.316667, 91.389306, 183.391897, 186.028420 +1.333333, 92.627440, 148.576075, 150.566112 +1.350000, 93.645876, 122.212273, 123.758589 +1.366667, 94.532536, 106.399231, 107.698267 +1.383333, 95.309217, 93.201735, 94.305189 +1.400000, 95.989570, 81.642320, 82.582520 +1.416667, 96.585506, 71.512366, 72.315670 +1.433333, 97.107474, 62.636079, 63.324159 +1.450000, 97.564632, 54.859064, 55.449815 +1.466667, 97.965014, 48.045761, 48.554022 +1.483333, 98.315657, 42.077192, 42.515322 +1.500000, 98.622732, 36.848965, 37.227296 +1.516667, 98.891644, 32.269508, 32.596712 +1.533333, 99.127132, 28.258515, 28.541898 +1.550000, 99.333345, 24.745574, 24.991313 +1.566667, 99.513920, 21.668957, 21.882292 +1.583333, 99.672041, 18.974561, 19.159949 +1.600000, 99.800087, 15.365493, 15.514080 +1.616667, 99.800194, 0.012815, 0.012934 +1.633333, 99.800194, 0.000000, 0.000000 +1.650000, 99.800194, 0.000000, 0.000000 +1.666667, 99.800194, 0.000000, 0.000000 +1.683333, 99.800194, 0.000000, 0.000000 +1.700000, 99.800194, 0.000000, 0.000000 +1.716667, 99.800194, 0.000000, 0.000000 +1.733333, 99.800194, 0.000000, 0.000000 +1.750000, 99.800194, 0.000000, 0.000000 +1.766667, 99.800194, 0.000000, 0.000000 +1.783333, 99.800194, 0.000000, 0.000000 +1.800000, 99.800194, 0.000000, 0.000000 +1.816667, 99.800194, 0.000000, 0.000000 +1.833333, 99.800194, 0.000000, 0.000000 +1.850000, 99.800194, 0.000000, 0.000000 +1.866667, 99.800194, 0.000000, 0.000000 +1.883333, 99.800194, 0.000000, 0.000000 +1.900000, 99.800194, 0.000000, 0.000000 +1.916667, 99.800194, 0.000000, 0.000000 +1.933333, 99.800194, 0.000000, 0.000000 +1.950000, 99.800194, 0.000000, 0.000000 +1.966667, 99.800194, 0.000000, 0.000000 +1.983333, 99.800194, 0.000000, 0.000000 +2.000000, 99.800194, 0.000000, 0.000000 +2.016667, 99.800194, 0.000000, 0.000000 +2.033333, 99.800194, 0.000000, 0.000000 +2.050000, 99.800194, 0.000000, 0.000000 +2.066667, 99.800194, 0.000000, 0.000000 +2.083333, 99.800194, 0.000000, 0.000000 +2.100000, 99.800194, 0.000000, 0.000000 +2.116667, 99.800194, 0.000000, 0.000000 +2.133333, 99.800194, 0.000000, 0.000000 +2.150000, 99.800194, 0.000000, 0.000000 +2.166667, 99.800194, 0.000000, 0.000000 +2.183333, 99.800194, 0.000000, 0.000000 +2.200000, 99.800194, 0.000000, 0.000000 +2.216667, 99.800194, 0.000000, 0.000000 +2.233333, 99.800194, 0.000000, 0.000000 +2.250000, 99.800194, 0.000000, 0.000000 +2.266667, 99.800194, 0.000000, 0.000000 +2.283333, 99.800194, 0.000000, 0.000000 +2.300000, 99.800194, 0.000000, 0.000000 +2.316667, 99.800194, 0.000000, 0.000000 +2.333333, 99.800194, 0.000000, 0.000000 +2.350000, 99.800194, 0.000000, 0.000000 +2.366667, 99.800194, 0.000000, 0.000000 +2.383333, 99.800194, 0.000000, 0.000000 +2.400000, 99.800194, 0.000000, 0.000000 +2.416667, 99.800194, 0.000000, 0.000000 +2.433333, 99.800194, 0.000000, 0.000000 +2.450000, 99.800194, 0.000000, 0.000000 +2.466667, 99.800194, 0.000000, 0.000000 +2.483333, 99.800194, 0.000000, 0.000000 +2.500000, 99.800194, 0.000000, 0.000000 +2.516667, 99.800194, 0.000000, 0.000000 +2.533333, 99.800194, 0.000000, 0.000000 +2.550000, 99.800194, 0.000000, 0.000000 +2.566667, 99.800194, 0.000000, 0.000000 +2.583333, 99.800194, 0.000000, 0.000000 +2.600000, 99.800194, 0.000000, 0.000000 +2.616667, 99.800194, 0.000000, 0.000000 +2.633333, 99.800194, 0.000000, 0.000000 +2.650000, 99.800194, 0.000000, 0.000000 +2.666667, 99.800194, 0.000000, 0.000000 +2.683333, 99.800194, 0.000000, 0.000000 +2.700000, 99.800194, 0.000000, 0.000000 +2.716667, 99.800194, 0.000000, 0.000000 +2.733333, 99.800194, 0.000000, 0.000000 +2.750000, 99.800194, 0.000000, 0.000000 +2.766667, 99.800194, 0.000000, 0.000000 +2.783333, 99.800194, 0.000000, 0.000000 +2.800000, 99.800194, 0.000000, 0.000000 +2.816667, 99.800194, 0.000000, 0.000000 +2.833333, 99.800194, 0.000000, 0.000000 +2.850000, 99.800194, 0.000000, 0.000000 +2.866667, 99.800194, 0.000000, 0.000000 +2.883333, 99.800194, 0.000000, 0.000000 +2.900000, 99.800194, 0.000000, 0.000000 +2.916667, 99.800194, 0.000000, 0.000000 +2.933333, 99.800194, 0.000000, 0.000000 +2.950000, 99.800194, 0.000000, 0.000000 +2.966667, 99.800194, 0.000000, 0.000000 +2.983333, 99.800194, 0.000000, 0.000000 +3.000000, 99.800194, 0.000000, 0.000000 +3.016667, 99.800194, 0.000000, 0.000000 +3.033333, 99.800194, 0.000000, 0.000000 +3.050000, 99.800194, 0.000000, 0.000000 +3.066667, 99.800194, 0.000000, 0.000000 +3.083333, 99.800194, 0.000000, 0.000000 +3.100000, 99.800194, 0.000000, 0.000000 +3.116667, 99.800194, 0.000000, 0.000000 +3.133333, 99.800194, 0.000000, 0.000000 +3.150000, 99.800194, 0.000000, 0.000000 +3.166667, 99.800194, 0.000000, 0.000000 +3.183333, 99.800194, 0.000000, 0.000000 +3.200000, 99.800194, 0.000000, 0.000000 +3.216667, 99.800194, 0.000000, 0.000000 +3.233333, 99.800194, 0.000000, 0.000000 +3.250000, 99.800194, 0.000000, 0.000000 +3.266667, 99.800194, 0.000000, 0.000000 +3.283333, 99.800194, 0.000000, 0.000000 +3.300000, 99.800194, 0.000000, 0.000000 +3.316667, 99.800194, 0.000000, 0.000000 +3.333333, 99.800194, 0.000000, 0.000000 +3.350000, 99.800194, 0.000000, 0.000000 +3.366667, 99.800194, 0.000000, 0.000000 +3.383333, 99.800194, 0.000000, 0.000000 +3.400000, 99.800194, 0.000000, 0.000000 +3.416667, 99.800194, 0.000000, 0.000000 +3.433333, 99.800194, 0.000000, 0.000000 +3.450000, 99.800194, 0.000000, 0.000000 +3.466667, 99.800194, 0.000000, 0.000000 +3.483333, 99.800194, 0.000000, 0.000000 +3.500000, 99.800194, 0.000000, 0.000000 +3.516667, 99.800194, 0.000000, 0.000000 +3.533333, 99.800194, 0.000000, 0.000000 +3.550000, 99.800194, 0.000000, 0.000000 +3.566667, 99.800194, 0.000000, 0.000000 +3.583333, 99.800194, 0.000000, 0.000000 +3.600000, 99.800194, 0.000000, 0.000000 +3.616667, 99.800194, 0.000000, 0.000000 +3.633333, 99.800194, 0.000000, 0.000000 +3.650000, 99.800194, 0.000000, 0.000000 +3.666667, 99.800194, 0.000000, 0.000000 +3.683333, 99.800194, 0.000000, 0.000000 +3.700000, 99.800194, 0.000000, 0.000000 +3.716667, 99.800194, 0.000000, 0.000000 +3.733333, 99.800194, 0.000000, 0.000000 +3.750000, 99.800194, 0.000000, 0.000000 +3.766667, 99.800194, 0.000000, 0.000000 +3.783333, 99.800194, 0.000000, 0.000000 +3.800000, 99.800194, 0.000000, 0.000000 +3.816667, 99.800194, 0.000000, 0.000000 +3.833333, 99.800194, 0.000000, 0.000000 +3.850000, 99.800194, 0.000000, 0.000000 +3.866667, 99.800194, 0.000000, 0.000000 +3.883333, 99.800194, 0.000000, 0.000000 +3.900000, 99.800194, 0.000000, 0.000000 +3.916667, 99.800194, 0.000000, 0.000000 +3.933333, 99.800194, 0.000000, 0.000000 +3.950000, 99.800194, 0.000000, 0.000000 +3.966667, 99.800194, 0.000000, 0.000000 +3.983333, 99.800194, 0.000000, 0.000000 +4.000000, 99.800194, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_150_hd_1000kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_150_hd_1000kWh.csv new file mode 100644 index 0000000..ec88e80 --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_150_hd_1000kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.215977, 129.586111, 130.877200 +1.016667, 0.532923, 190.167572, 192.126300 +1.033333, 0.853422, 192.299504, 194.282472 +1.050000, 1.177517, 194.457188, 196.464741 +1.066667, 1.505249, 196.639029, 198.671494 +1.083333, 1.836658, 198.845297, 200.903008 +1.100000, 2.171785, 201.076264, 203.159557 +1.116667, 2.510672, 203.332205, 205.441424 +1.133333, 2.853361, 205.613398, 207.748891 +1.150000, 3.199894, 207.920125, 210.082245 +1.166667, 3.550316, 210.252669, 212.441775 +1.183333, 3.904668, 212.611320, 214.827775 +1.200000, 4.262180, 214.507464, 216.745950 +1.216667, 4.620762, 215.148795, 217.394742 +1.233333, 4.980301, 215.723768, 217.976407 +1.250000, 5.340801, 216.300138, 218.559490 +1.266667, 5.702265, 216.878044, 219.144131 +1.283333, 6.064694, 217.457491, 219.730333 +1.300000, 6.428091, 218.038482, 220.318102 +1.316667, 6.792460, 218.621022, 220.907441 +1.333333, 7.157802, 219.205114, 221.498355 +1.350000, 7.524120, 219.790763, 222.090848 +1.366667, 7.891416, 220.377973, 222.684923 +1.383333, 8.259694, 220.966748, 223.280586 +1.400000, 8.628956, 221.557092, 223.877840 +1.416667, 8.999204, 222.149010, 224.476690 +1.433333, 9.370442, 222.742504, 225.077139 +1.450000, 9.742671, 223.337581, 225.679193 +1.466667, 10.115859, 223.912811, 226.261171 +1.483333, 10.489478, 224.171146, 226.522538 +1.500000, 10.863350, 224.323114, 226.676289 +1.516667, 11.237475, 224.474992, 226.829951 +1.533333, 11.611853, 224.626974, 226.983717 +1.550000, 11.986485, 224.779058, 227.137587 +1.566667, 12.361370, 224.931245, 227.291561 +1.583333, 12.736509, 225.083534, 227.445640 +1.600000, 13.111902, 225.235926, 227.599823 +1.616667, 13.487550, 225.388422, 227.754110 +1.633333, 13.863452, 225.541020, 227.908501 +1.650000, 14.239608, 225.693721, 228.062997 +1.666667, 14.616019, 225.846526, 228.217598 +1.683333, 14.992684, 225.999433, 228.372303 +1.700000, 15.369605, 226.152444, 228.527114 +1.716667, 15.746781, 226.305559, 228.682028 +1.733333, 16.124212, 226.458776, 228.837048 +1.750000, 16.501899, 226.612097, 228.992173 +1.766667, 16.879842, 226.765522, 229.147403 +1.783333, 17.258040, 226.919050, 229.302738 +1.800000, 17.636495, 227.072682, 229.458178 +1.816667, 18.015205, 227.226418, 229.613723 +1.833333, 18.394172, 227.380258, 229.769374 +1.850000, 18.773396, 227.534201, 229.925130 +1.866667, 19.152876, 227.688248, 230.080991 +1.883333, 19.532614, 227.842400, 230.236958 +1.900000, 19.912608, 227.996655, 230.393031 +1.916667, 20.292860, 228.151015, 230.549209 +1.933333, 20.673369, 228.305479, 230.705493 +1.950000, 21.054136, 228.460047, 230.861883 +1.966667, 21.435160, 228.614720, 231.018378 +1.983333, 21.816443, 228.769497, 231.174980 +2.000000, 22.197983, 228.924379, 231.331688 +2.016667, 22.579782, 229.079365, 231.488501 +2.033333, 22.961840, 229.234456, 231.645421 +2.050000, 23.344156, 229.389651, 231.802447 +2.066667, 23.726731, 229.544952, 231.959580 +2.083333, 24.109565, 229.700357, 232.116819 +2.100000, 24.492658, 229.855867, 232.274164 +2.116667, 24.876010, 230.011483, 232.431616 +2.133333, 25.259622, 230.167203, 232.589174 +2.150000, 25.643494, 230.323028, 232.746839 +2.166667, 26.027626, 230.478959, 232.904611 +2.183333, 26.412017, 230.634995, 233.062489 +2.200000, 26.796669, 230.791137, 233.220475 +2.216667, 27.181581, 230.947383, 233.378567 +2.233333, 27.566754, 231.103736, 233.536767 +2.250000, 27.952188, 231.260194, 233.695073 +2.266667, 28.337883, 231.416757, 233.853487 +2.283333, 28.723838, 231.573426, 234.012008 +2.300000, 29.110055, 231.730202, 234.170637 +2.316667, 29.496534, 231.887083, 234.329372 +2.333333, 29.883274, 232.044069, 234.488215 +2.350000, 30.270276, 232.201162, 234.647166 +2.366667, 30.657540, 232.358361, 234.806224 +2.383333, 31.045066, 232.515666, 234.965390 +2.400000, 31.432854, 232.673078, 235.124664 +2.416667, 31.820905, 232.830595, 235.284046 +2.433333, 32.209219, 232.988219, 235.443535 +2.450000, 32.597796, 233.145950, 235.603133 +2.466667, 32.986635, 233.303787, 235.762838 +2.483333, 33.375738, 233.461730, 235.922652 +2.500000, 33.765104, 233.619780, 236.082574 +2.516667, 34.154734, 233.777937, 236.242604 +2.533333, 34.544628, 233.936201, 236.402742 +2.550000, 34.934786, 234.094572, 236.562989 +2.566667, 35.325207, 234.253049, 236.723344 +2.583333, 35.715893, 234.411634, 236.883808 +2.600000, 36.106844, 234.570325, 237.044381 +2.616667, 36.498059, 234.729124, 237.205062 +2.633333, 36.889539, 234.888030, 237.365852 +2.650000, 37.281284, 235.047043, 237.526751 +2.666667, 37.673295, 235.206164, 237.687758 +2.683333, 38.065570, 235.365392, 237.848875 +2.700000, 38.458111, 235.524727, 238.010101 +2.716667, 38.850918, 235.684170, 238.171436 +2.733333, 39.243991, 235.843721, 238.332880 +2.750000, 39.637330, 236.003380, 238.494434 +2.766667, 40.030935, 236.163146, 238.656096 +2.783333, 40.424807, 236.323020, 238.817869 +2.800000, 40.818946, 236.483003, 238.979751 +2.816667, 41.213351, 236.643093, 239.141742 +2.833333, 41.608023, 236.803291, 239.303843 +2.850000, 42.002962, 236.963598, 239.466054 +2.866667, 42.398169, 237.124012, 239.628374 +2.883333, 42.793643, 237.284535, 239.790805 +2.900000, 43.189385, 237.445167, 239.953345 +2.916667, 43.585395, 237.605906, 240.115996 +2.933333, 43.981673, 237.766755, 240.278756 +2.950000, 44.378219, 237.927712, 240.441627 +2.966667, 44.775034, 238.088777, 240.604608 +2.983333, 45.172117, 238.249952, 240.767699 +3.000000, 45.569469, 238.411235, 240.930901 +3.016667, 45.967090, 238.572627, 241.094213 +3.033333, 46.364980, 238.734128, 241.257636 +3.050000, 46.763140, 238.895738, 241.421170 +3.066667, 47.161569, 239.057457, 241.584814 +3.083333, 47.560268, 239.219286, 241.748569 +3.100000, 47.959236, 239.381223, 241.912434 +3.116667, 48.358475, 239.543270, 242.076411 +3.133333, 48.757984, 239.705427, 242.240499 +3.150000, 49.157764, 239.867693, 242.404697 +3.166667, 49.557814, 240.030068, 242.569007 +3.183333, 49.958135, 240.192553, 242.733428 +3.200000, 50.358727, 240.355148, 242.897961 +3.216667, 50.759590, 240.517852, 243.062605 +3.233333, 51.160724, 240.680667, 243.227360 +3.250000, 51.562130, 240.843591, 243.392227 +3.266667, 51.963808, 241.006625, 243.557205 +3.283333, 52.365757, 241.169770, 243.722295 +3.300000, 52.767979, 241.333024, 243.887497 +3.316667, 53.170473, 241.496389, 244.052811 +3.333333, 53.573240, 241.659864, 244.218236 +3.350000, 53.976279, 241.823449, 244.383774 +3.366667, 54.379591, 241.987145, 244.549423 +3.383333, 54.783175, 242.150951, 244.715185 +3.400000, 55.187034, 242.314868, 244.881059 +3.416667, 55.591165, 242.478896, 245.047045 +3.433333, 55.995570, 242.643034, 245.213144 +3.450000, 56.400249, 242.807283, 245.379355 +3.466667, 56.805202, 242.971643, 245.545678 +3.483333, 57.210429, 243.136114, 245.712115 +3.500000, 57.615930, 243.300696, 245.878663 +3.516667, 58.021705, 243.465389, 246.045325 +3.533333, 58.427756, 243.630194, 246.212099 +3.550000, 58.834081, 243.795109, 246.378986 +3.566667, 59.240681, 243.960136, 246.545987 +3.583333, 59.647557, 244.125274, 246.713100 +3.600000, 60.054707, 244.290524, 246.880326 +3.616667, 60.462134, 244.455886, 247.047666 +3.633333, 60.869836, 244.621359, 247.215119 +3.650000, 61.277814, 244.786943, 247.382685 +3.666667, 61.686069, 244.952640, 247.550364 +3.683333, 62.094600, 245.118448, 247.718158 +3.700000, 62.503407, 245.284368, 247.886064 +3.716667, 62.912491, 245.450400, 248.054085 +3.733333, 63.321852, 245.616545, 248.222219 +3.750000, 63.731490, 245.782801, 248.390466 +3.766667, 64.141405, 245.949170, 248.558828 +3.783333, 64.551598, 246.115651, 248.727304 +3.800000, 64.962068, 246.282244, 248.895894 +3.816667, 65.372816, 246.448950, 249.064598 +3.833333, 65.783843, 246.615769, 249.233416 +3.850000, 66.195147, 246.782700, 249.402348 +3.866667, 66.606730, 246.949743, 249.571395 +3.883333, 67.018592, 247.116900, 249.740556 +3.900000, 67.430732, 247.284169, 249.909831 +3.916667, 67.843151, 247.451551, 250.079222 +3.933333, 68.255850, 247.619046, 250.248727 +3.950000, 68.668827, 247.786655, 250.418346 +3.966667, 69.082085, 247.954376, 250.588081 +3.983333, 69.495622, 248.122211, 250.757930 +4.000000, 69.909439, 248.290159, 250.927894 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_150_hd_300kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_150_hd_300kWh.csv new file mode 100644 index 0000000..bb88490 --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_150_hd_300kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.719840, 129.571233, 131.080554 +1.016667, 1.794259, 193.395318, 195.878786 +1.033333, 2.908647, 200.589984, 203.192884 +1.050000, 4.064502, 208.053769, 210.782635 +1.066667, 5.245127, 212.512637, 215.317759 +1.083333, 6.436181, 214.389559, 217.227006 +1.100000, 7.637697, 216.272995, 219.143012 +1.116667, 8.849769, 218.172843, 221.075851 +1.133333, 10.072473, 220.086736, 223.023116 +1.150000, 11.301446, 221.215264, 224.171387 +1.166667, 12.533157, 221.707970, 224.672728 +1.183333, 13.767604, 222.200352, 225.173748 +1.200000, 15.004792, 222.693819, 225.675881 +1.216667, 16.244727, 223.188372, 226.179130 +1.233333, 17.487416, 223.684015, 226.683495 +1.250000, 18.732865, 224.180749, 227.188981 +1.266667, 19.981079, 224.678577, 227.695590 +1.283333, 21.232065, 225.177501, 228.203323 +1.300000, 22.485829, 225.677524, 228.712184 +1.316667, 23.742377, 226.178648, 229.222175 +1.333333, 25.001715, 226.680875, 229.733298 +1.350000, 26.263850, 227.184208, 230.245557 +1.366667, 27.528787, 227.688649, 230.758952 +1.383333, 28.796532, 228.194201, 231.273488 +1.400000, 30.067093, 228.700866, 231.789166 +1.416667, 31.340474, 229.208646, 232.305989 +1.433333, 32.616683, 229.717544, 232.823959 +1.450000, 33.895725, 230.227562, 233.343080 +1.466667, 35.177606, 230.738702, 233.863353 +1.483333, 36.462334, 231.250968, 234.384781 +1.500000, 37.749914, 231.764361, 234.907367 +1.516667, 39.040352, 232.278884, 235.431113 +1.533333, 40.333655, 232.794539, 235.956021 +1.550000, 41.629829, 233.311329, 236.482095 +1.566667, 42.928880, 233.829257, 237.009337 +1.583333, 44.230815, 234.348324, 237.537749 +1.600000, 45.535641, 234.868533, 238.067334 +1.616667, 46.843362, 235.389887, 238.598095 +1.633333, 48.153987, 235.912388, 239.130034 +1.650000, 49.467520, 236.436039, 239.663153 +1.666667, 50.783969, 236.960842, 240.197456 +1.683333, 52.103340, 237.486799, 240.732945 +1.700000, 53.425640, 238.013914, 241.269623 +1.716667, 54.750874, 238.542187, 241.807491 +1.733333, 56.079050, 239.071623, 242.346554 +1.750000, 57.410173, 239.602224, 242.886812 +1.766667, 58.744251, 240.133992, 243.428270 +1.783333, 60.081290, 240.666929, 243.970930 +1.800000, 61.421295, 241.201038, 244.514794 +1.816667, 62.764275, 241.736323, 245.059865 +1.833333, 64.110235, 242.272784, 245.606145 +1.850000, 65.459182, 242.810425, 246.153638 +1.866667, 66.811122, 243.349248, 246.702346 +1.883333, 68.166062, 243.889256, 247.252271 +1.900000, 69.524009, 244.430452, 247.803417 +1.916667, 70.884969, 244.972838, 248.355785 +1.933333, 72.248950, 245.516416, 248.909380 +1.950000, 73.615956, 246.061189, 249.464202 +1.966667, 74.985996, 246.607160, 250.020256 +1.983333, 76.359076, 247.154331, 250.577544 +2.000000, 77.735202, 247.702705, 251.136068 +2.016667, 79.114381, 248.252284, 251.695831 +2.033333, 80.496620, 248.803071, 252.256836 +2.050000, 81.881926, 249.355070, 252.819086 +2.066667, 83.270306, 249.908281, 253.382584 +2.083333, 84.661765, 250.462708, 253.947331 +2.100000, 86.056312, 251.018354, 254.513331 +2.116667, 87.453952, 251.575221, 255.080587 +2.133333, 88.854692, 252.133311, 255.649102 +2.150000, 90.258540, 252.692628, 256.218877 +2.166667, 91.665502, 253.253174, 256.789917 +2.183333, 93.047353, 248.733096, 252.185562 +2.200000, 94.242245, 215.080558, 217.929939 +2.216667, 95.249155, 181.243859, 183.530045 +2.233333, 96.096849, 152.584870, 154.427795 +2.250000, 96.810462, 128.450371, 129.943951 +2.266667, 97.411177, 108.128641, 109.344990 +2.283333, 97.916836, 91.018707, 92.013612 +2.300000, 98.342469, 76.613911, 77.430853 +2.316667, 98.700731, 64.487237, 65.160353 +2.333333, 99.002281, 54.278873, 54.835157 +2.350000, 99.256090, 45.685697, 46.146635 +2.366667, 99.469715, 38.452386, 38.835192 +2.383333, 99.649514, 32.363909, 32.682454 +2.400000, 99.800100, 27.105535, 27.369685 +2.416667, 99.800226, 0.022628, 0.022837 +2.433333, 99.800226, 0.000000, 0.000000 +2.450000, 99.800226, 0.000000, 0.000000 +2.466667, 99.800226, 0.000000, 0.000000 +2.483333, 99.800226, 0.000000, 0.000000 +2.500000, 99.800226, 0.000000, 0.000000 +2.516667, 99.800226, 0.000000, 0.000000 +2.533333, 99.800226, 0.000000, 0.000000 +2.550000, 99.800226, 0.000000, 0.000000 +2.566667, 99.800226, 0.000000, 0.000000 +2.583333, 99.800226, 0.000000, 0.000000 +2.600000, 99.800226, 0.000000, 0.000000 +2.616667, 99.800226, 0.000000, 0.000000 +2.633333, 99.800226, 0.000000, 0.000000 +2.650000, 99.800226, 0.000000, 0.000000 +2.666667, 99.800226, 0.000000, 0.000000 +2.683333, 99.800226, 0.000000, 0.000000 +2.700000, 99.800226, 0.000000, 0.000000 +2.716667, 99.800226, 0.000000, 0.000000 +2.733333, 99.800226, 0.000000, 0.000000 +2.750000, 99.800226, 0.000000, 0.000000 +2.766667, 99.800226, 0.000000, 0.000000 +2.783333, 99.800226, 0.000000, 0.000000 +2.800000, 99.800226, 0.000000, 0.000000 +2.816667, 99.800226, 0.000000, 0.000000 +2.833333, 99.800226, 0.000000, 0.000000 +2.850000, 99.800226, 0.000000, 0.000000 +2.866667, 99.800226, 0.000000, 0.000000 +2.883333, 99.800226, 0.000000, 0.000000 +2.900000, 99.800226, 0.000000, 0.000000 +2.916667, 99.800226, 0.000000, 0.000000 +2.933333, 99.800226, 0.000000, 0.000000 +2.950000, 99.800226, 0.000000, 0.000000 +2.966667, 99.800226, 0.000000, 0.000000 +2.983333, 99.800226, 0.000000, 0.000000 +3.000000, 99.800226, 0.000000, 0.000000 +3.016667, 99.800226, 0.000000, 0.000000 +3.033333, 99.800226, 0.000000, 0.000000 +3.050000, 99.800226, 0.000000, 0.000000 +3.066667, 99.800226, 0.000000, 0.000000 +3.083333, 99.800226, 0.000000, 0.000000 +3.100000, 99.800226, 0.000000, 0.000000 +3.116667, 99.800226, 0.000000, 0.000000 +3.133333, 99.800226, 0.000000, 0.000000 +3.150000, 99.800226, 0.000000, 0.000000 +3.166667, 99.800226, 0.000000, 0.000000 +3.183333, 99.800226, 0.000000, 0.000000 +3.200000, 99.800226, 0.000000, 0.000000 +3.216667, 99.800226, 0.000000, 0.000000 +3.233333, 99.800226, 0.000000, 0.000000 +3.250000, 99.800226, 0.000000, 0.000000 +3.266667, 99.800226, 0.000000, 0.000000 +3.283333, 99.800226, 0.000000, 0.000000 +3.300000, 99.800226, 0.000000, 0.000000 +3.316667, 99.800226, 0.000000, 0.000000 +3.333333, 99.800226, 0.000000, 0.000000 +3.350000, 99.800226, 0.000000, 0.000000 +3.366667, 99.800226, 0.000000, 0.000000 +3.383333, 99.800226, 0.000000, 0.000000 +3.400000, 99.800226, 0.000000, 0.000000 +3.416667, 99.800226, 0.000000, 0.000000 +3.433333, 99.800226, 0.000000, 0.000000 +3.450000, 99.800226, 0.000000, 0.000000 +3.466667, 99.800226, 0.000000, 0.000000 +3.483333, 99.800226, 0.000000, 0.000000 +3.500000, 99.800226, 0.000000, 0.000000 +3.516667, 99.800226, 0.000000, 0.000000 +3.533333, 99.800226, 0.000000, 0.000000 +3.550000, 99.800226, 0.000000, 0.000000 +3.566667, 99.800226, 0.000000, 0.000000 +3.583333, 99.800226, 0.000000, 0.000000 +3.600000, 99.800226, 0.000000, 0.000000 +3.616667, 99.800226, 0.000000, 0.000000 +3.633333, 99.800226, 0.000000, 0.000000 +3.650000, 99.800226, 0.000000, 0.000000 +3.666667, 99.800226, 0.000000, 0.000000 +3.683333, 99.800226, 0.000000, 0.000000 +3.700000, 99.800226, 0.000000, 0.000000 +3.716667, 99.800226, 0.000000, 0.000000 +3.733333, 99.800226, 0.000000, 0.000000 +3.750000, 99.800226, 0.000000, 0.000000 +3.766667, 99.800226, 0.000000, 0.000000 +3.783333, 99.800226, 0.000000, 0.000000 +3.800000, 99.800226, 0.000000, 0.000000 +3.816667, 99.800226, 0.000000, 0.000000 +3.833333, 99.800226, 0.000000, 0.000000 +3.850000, 99.800226, 0.000000, 0.000000 +3.866667, 99.800226, 0.000000, 0.000000 +3.883333, 99.800226, 0.000000, 0.000000 +3.900000, 99.800226, 0.000000, 0.000000 +3.916667, 99.800226, 0.000000, 0.000000 +3.933333, 99.800226, 0.000000, 0.000000 +3.950000, 99.800226, 0.000000, 0.000000 +3.966667, 99.800226, 0.000000, 0.000000 +3.983333, 99.800226, 0.000000, 0.000000 +4.000000, 99.800226, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_150_hd_400kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_150_hd_400kWh.csv new file mode 100644 index 0000000..4117077 --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_150_hd_400kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.537953, 129.108807, 130.534023 +1.016667, 1.335743, 191.469408, 193.749870 +1.033333, 2.155740, 196.799409, 199.158039 +1.050000, 2.998592, 202.284537, 204.724444 +1.066667, 3.864933, 207.921645, 210.445966 +1.083333, 4.748772, 212.121440, 214.709233 +1.100000, 5.638700, 213.582648, 216.192641 +1.116667, 6.534497, 214.991379, 217.622832 +1.133333, 7.436202, 216.409208, 219.062316 +1.150000, 8.343853, 217.836331, 220.511292 +1.166667, 9.257490, 219.272807, 221.969824 +1.183333, 10.177068, 220.698718, 223.417686 +1.200000, 11.099662, 221.422496, 224.152628 +1.216667, 12.023798, 221.792689, 224.528537 +1.233333, 12.949476, 222.162777, 224.904342 +1.250000, 13.876699, 222.533479, 225.280775 +1.266667, 14.805469, 222.904795, 225.657836 +1.283333, 15.735789, 223.276727, 226.035526 +1.300000, 16.667661, 223.649275, 226.413847 +1.316667, 17.601088, 224.022442, 226.792798 +1.333333, 18.536072, 224.396227, 227.172382 +1.350000, 19.472616, 224.770632, 227.552599 +1.366667, 20.410723, 225.145658, 227.933451 +1.383333, 21.350395, 225.521305, 228.314938 +1.400000, 22.291635, 225.897576, 228.697062 +1.416667, 23.234445, 226.274470, 229.079823 +1.433333, 24.178829, 226.651989, 229.463222 +1.450000, 25.124788, 227.030134, 229.847262 +1.466667, 26.072325, 227.408906, 230.231942 +1.483333, 27.021443, 227.788306, 230.617264 +1.500000, 27.972144, 228.168335, 231.003228 +1.516667, 28.924431, 228.548993, 231.389837 +1.533333, 29.878308, 228.930283, 231.777091 +1.550000, 30.833775, 229.312205, 232.164990 +1.566667, 31.790837, 229.694760, 232.553537 +1.583333, 32.749495, 230.077949, 232.942732 +1.600000, 33.709752, 230.461773, 233.332576 +1.616667, 34.671611, 230.846234, 233.723071 +1.633333, 35.635075, 231.231331, 234.114217 +1.650000, 36.600146, 231.617067, 234.506016 +1.666667, 37.566827, 232.003443, 234.898468 +1.683333, 38.535121, 232.390458, 235.291574 +1.700000, 39.505030, 232.778115, 235.685337 +1.716667, 40.476557, 233.166415, 236.079756 +1.733333, 41.449704, 233.555358, 236.474834 +1.750000, 42.424475, 233.944945, 236.870570 +1.766667, 43.400871, 234.335179, 237.266967 +1.783333, 44.378896, 234.726059, 237.664024 +1.800000, 45.358553, 235.117586, 238.061744 +1.816667, 46.339844, 235.509763, 238.460128 +1.833333, 47.322771, 235.902589, 238.859176 +1.850000, 48.307338, 236.296066, 239.258889 +1.866667, 49.293547, 236.690195, 239.659269 +1.883333, 50.281401, 237.084978, 240.060317 +1.900000, 51.270903, 237.480414, 240.462034 +1.916667, 52.262055, 237.876506, 240.864421 +1.933333, 53.254860, 238.273254, 241.267479 +1.950000, 54.249321, 238.670659, 241.671209 +1.966667, 55.245441, 239.068722, 242.075613 +1.983333, 56.243222, 239.467445, 242.480691 +2.000000, 57.242667, 239.866829, 242.886445 +2.016667, 58.243779, 240.266874, 243.292875 +2.033333, 59.246561, 240.667582, 243.699984 +2.050000, 60.251015, 241.068954, 244.107771 +2.066667, 61.257144, 241.470991, 244.516238 +2.083333, 62.264951, 241.873693, 244.925387 +2.100000, 63.274439, 242.277063, 245.335218 +2.116667, 64.285610, 242.681101, 245.745732 +2.133333, 65.298467, 243.085808, 246.156931 +2.150000, 66.313014, 243.491186, 246.568816 +2.166667, 67.329253, 243.897235, 246.981387 +2.183333, 68.347186, 244.303956, 247.394647 +2.200000, 69.366816, 244.711351, 247.808595 +2.216667, 70.388147, 245.119421, 248.223234 +2.233333, 71.411181, 245.528166, 248.638565 +2.250000, 72.435921, 245.937589, 249.054588 +2.266667, 73.462370, 246.347690, 249.471304 +2.283333, 74.490530, 246.758469, 249.888716 +2.300000, 75.520405, 247.169929, 250.306824 +2.316667, 76.551997, 247.582071, 250.725628 +2.333333, 77.585309, 247.994894, 251.145131 +2.350000, 78.620344, 248.408402, 251.565334 +2.366667, 79.657105, 248.822594, 251.986237 +2.383333, 80.695594, 249.237472, 252.407842 +2.400000, 81.735815, 249.653037, 252.830150 +2.416667, 82.777771, 250.069290, 253.253162 +2.433333, 83.821463, 250.486232, 253.676880 +2.450000, 84.866896, 250.903864, 254.101304 +2.466667, 85.914072, 251.322188, 254.526435 +2.483333, 86.962993, 251.741205, 254.952275 +2.500000, 88.013664, 252.160915, 255.378826 +2.516667, 89.066086, 252.581320, 255.806087 +2.533333, 90.120263, 253.002421, 256.234061 +2.550000, 91.176197, 253.424219, 256.662748 +2.566667, 92.233892, 253.846715, 257.092150 +2.583333, 93.293350, 254.269911, 257.522268 +2.600000, 94.354574, 254.693807, 257.953103 +2.616667, 95.341608, 236.888218, 239.860434 +2.633333, 96.175155, 200.051121, 202.457832 +2.650000, 96.876732, 168.378643, 170.329695 +2.666667, 97.467211, 141.714814, 143.304117 +2.683333, 97.964179, 119.272464, 120.572736 +2.700000, 98.382444, 100.383535, 101.451462 +2.716667, 98.734467, 84.485581, 85.365679 +2.733333, 99.030739, 71.105127, 71.832604 +2.750000, 99.280087, 59.843606, 60.446497 +2.766667, 99.489943, 50.365524, 50.866297 +2.783333, 99.666562, 42.388490, 42.805253 +2.800000, 99.800221, 32.078277, 32.389080 +2.816667, 99.800333, 0.026761, 0.027008 +2.833333, 99.800333, 0.000000, 0.000000 +2.850000, 99.800333, 0.000000, 0.000000 +2.866667, 99.800333, 0.000000, 0.000000 +2.883333, 99.800333, 0.000000, 0.000000 +2.900000, 99.800333, 0.000000, 0.000000 +2.916667, 99.800333, 0.000000, 0.000000 +2.933333, 99.800333, 0.000000, 0.000000 +2.950000, 99.800333, 0.000000, 0.000000 +2.966667, 99.800333, 0.000000, 0.000000 +2.983333, 99.800333, 0.000000, 0.000000 +3.000000, 99.800333, 0.000000, 0.000000 +3.016667, 99.800333, 0.000000, 0.000000 +3.033333, 99.800333, 0.000000, 0.000000 +3.050000, 99.800333, 0.000000, 0.000000 +3.066667, 99.800333, 0.000000, 0.000000 +3.083333, 99.800333, 0.000000, 0.000000 +3.100000, 99.800333, 0.000000, 0.000000 +3.116667, 99.800333, 0.000000, 0.000000 +3.133333, 99.800333, 0.000000, 0.000000 +3.150000, 99.800333, 0.000000, 0.000000 +3.166667, 99.800333, 0.000000, 0.000000 +3.183333, 99.800333, 0.000000, 0.000000 +3.200000, 99.800333, 0.000000, 0.000000 +3.216667, 99.800333, 0.000000, 0.000000 +3.233333, 99.800333, 0.000000, 0.000000 +3.250000, 99.800333, 0.000000, 0.000000 +3.266667, 99.800333, 0.000000, 0.000000 +3.283333, 99.800333, 0.000000, 0.000000 +3.300000, 99.800333, 0.000000, 0.000000 +3.316667, 99.800333, 0.000000, 0.000000 +3.333333, 99.800333, 0.000000, 0.000000 +3.350000, 99.800333, 0.000000, 0.000000 +3.366667, 99.800333, 0.000000, 0.000000 +3.383333, 99.800333, 0.000000, 0.000000 +3.400000, 99.800333, 0.000000, 0.000000 +3.416667, 99.800333, 0.000000, 0.000000 +3.433333, 99.800333, 0.000000, 0.000000 +3.450000, 99.800333, 0.000000, 0.000000 +3.466667, 99.800333, 0.000000, 0.000000 +3.483333, 99.800333, 0.000000, 0.000000 +3.500000, 99.800333, 0.000000, 0.000000 +3.516667, 99.800333, 0.000000, 0.000000 +3.533333, 99.800333, 0.000000, 0.000000 +3.550000, 99.800333, 0.000000, 0.000000 +3.566667, 99.800333, 0.000000, 0.000000 +3.583333, 99.800333, 0.000000, 0.000000 +3.600000, 99.800333, 0.000000, 0.000000 +3.616667, 99.800333, 0.000000, 0.000000 +3.633333, 99.800333, 0.000000, 0.000000 +3.650000, 99.800333, 0.000000, 0.000000 +3.666667, 99.800333, 0.000000, 0.000000 +3.683333, 99.800333, 0.000000, 0.000000 +3.700000, 99.800333, 0.000000, 0.000000 +3.716667, 99.800333, 0.000000, 0.000000 +3.733333, 99.800333, 0.000000, 0.000000 +3.750000, 99.800333, 0.000000, 0.000000 +3.766667, 99.800333, 0.000000, 0.000000 +3.783333, 99.800333, 0.000000, 0.000000 +3.800000, 99.800333, 0.000000, 0.000000 +3.816667, 99.800333, 0.000000, 0.000000 +3.833333, 99.800333, 0.000000, 0.000000 +3.850000, 99.800333, 0.000000, 0.000000 +3.866667, 99.800333, 0.000000, 0.000000 +3.883333, 99.800333, 0.000000, 0.000000 +3.900000, 99.800333, 0.000000, 0.000000 +3.916667, 99.800333, 0.000000, 0.000000 +3.933333, 99.800333, 0.000000, 0.000000 +3.950000, 99.800333, 0.000000, 0.000000 +3.966667, 99.800333, 0.000000, 0.000000 +3.983333, 99.800333, 0.000000, 0.000000 +4.000000, 99.800333, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_150_hd_600kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_150_hd_600kWh.csv new file mode 100644 index 0000000..efd7154 --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_150_hd_600kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.357353, 128.646929, 129.989351 +1.016667, 0.883904, 189.558407, 191.643682 +1.033333, 1.420203, 193.067888, 195.198072 +1.050000, 1.966442, 196.646051, 198.822258 +1.066667, 2.522804, 200.290280, 202.513606 +1.083333, 3.089476, 204.001787, 206.273356 +1.100000, 3.666648, 207.781804, 210.102772 +1.116667, 4.253751, 211.357274, 213.725212 +1.133333, 4.844791, 212.774344, 215.160965 +1.150000, 5.438435, 213.711883, 216.110884 +1.166667, 6.034692, 214.652357, 217.063794 +1.183333, 6.633572, 215.596953, 218.020897 +1.200000, 7.235088, 216.545689, 218.982213 +1.216667, 7.839251, 217.498584, 219.947758 +1.233333, 8.446072, 218.455655, 220.917552 +1.250000, 9.055563, 219.416920, 221.891614 +1.266667, 9.667737, 220.382398, 222.869962 +1.283333, 10.282392, 221.275775, 223.775263 +1.300000, 10.898029, 221.629637, 224.133853 +1.316667, 11.514354, 221.876819, 224.384338 +1.333333, 12.131365, 222.124076, 224.634901 +1.350000, 12.749064, 222.371608, 224.885743 +1.366667, 13.367451, 222.619415, 225.136865 +1.383333, 13.986528, 222.867496, 225.388267 +1.400000, 14.606294, 223.115853, 225.639949 +1.416667, 15.226751, 223.364486, 225.891911 +1.433333, 15.847899, 223.613394, 226.144154 +1.450000, 16.469740, 223.862579, 226.396679 +1.466667, 17.092273, 224.112040, 226.649484 +1.483333, 17.715500, 224.361778, 226.902572 +1.500000, 18.339422, 224.611794, 227.155941 +1.516667, 18.964039, 224.862086, 227.409593 +1.533333, 19.589352, 225.112657, 227.663527 +1.550000, 20.215362, 225.363505, 227.917744 +1.566667, 20.842069, 225.614632, 228.172245 +1.583333, 21.469475, 225.866037, 228.427029 +1.600000, 22.097579, 226.117722, 228.682097 +1.616667, 22.726384, 226.369686, 228.937450 +1.633333, 23.355889, 226.621929, 229.193087 +1.650000, 23.986096, 226.874452, 229.449008 +1.666667, 24.617005, 227.127256, 229.705215 +1.683333, 25.248617, 227.380340, 229.961708 +1.700000, 25.880933, 227.633705, 230.218486 +1.716667, 26.513954, 227.887350, 230.475550 +1.733333, 27.147679, 228.141278, 230.732901 +1.750000, 27.782111, 228.395487, 230.990538 +1.766667, 28.417250, 228.649978, 231.248463 +1.783333, 29.053097, 228.904752, 231.506675 +1.800000, 29.689652, 229.159808, 231.765175 +1.816667, 30.326916, 229.415147, 232.023963 +1.833333, 30.964890, 229.670770, 232.283039 +1.850000, 31.603576, 229.926676, 232.542403 +1.866667, 32.242972, 230.182866, 232.802057 +1.883333, 32.883082, 230.439340, 233.062000 +1.900000, 33.523904, 230.696099, 233.322233 +1.916667, 34.165441, 230.953143, 233.582756 +1.933333, 34.807692, 231.210472, 233.843568 +1.950000, 35.450659, 231.468086, 234.104672 +1.966667, 36.094342, 231.725986, 234.366066 +1.983333, 36.738743, 231.984173, 234.627752 +2.000000, 37.383861, 232.242645, 234.889729 +2.016667, 38.029698, 232.501405, 235.151999 +2.033333, 38.676255, 232.760451, 235.414560 +2.050000, 39.323532, 233.019785, 235.677414 +2.066667, 39.971531, 233.279407, 235.940561 +2.083333, 40.620251, 233.539317, 236.204000 +2.100000, 41.269694, 233.799515, 236.467734 +2.116667, 41.919861, 234.060001, 236.731761 +2.133333, 42.570752, 234.320777, 236.996083 +2.150000, 43.222368, 234.581842, 237.260699 +2.166667, 43.874710, 234.843196, 237.525609 +2.183333, 44.527779, 235.104841, 237.790815 +2.200000, 45.181576, 235.366775, 238.056317 +2.216667, 45.836101, 235.629001, 238.322114 +2.233333, 46.491355, 235.891517, 238.588207 +2.250000, 47.147339, 236.154324, 238.854597 +2.266667, 47.804054, 236.417423, 239.121283 +2.283333, 48.461501, 236.680813, 239.388267 +2.300000, 49.119680, 236.944496, 239.655548 +2.316667, 49.778593, 237.208471, 239.923127 +2.333333, 50.438239, 237.472740, 240.191004 +2.350000, 51.098621, 237.737301, 240.459180 +2.366667, 51.759738, 238.002155, 240.727654 +2.383333, 52.421591, 238.267304, 240.996427 +2.400000, 53.084182, 238.532746, 241.265500 +2.416667, 53.747511, 238.798483, 241.534872 +2.433333, 54.411579, 239.064515, 241.804545 +2.450000, 55.076387, 239.330841, 242.074518 +2.466667, 55.741936, 239.597464, 242.344791 +2.483333, 56.408226, 239.864381, 242.615366 +2.500000, 57.075258, 240.131595, 242.886243 +2.516667, 57.743033, 240.399105, 243.157421 +2.533333, 58.411553, 240.666912, 243.428901 +2.550000, 59.080816, 240.935016, 243.700683 +2.566667, 59.750826, 241.203417, 243.972769 +2.583333, 60.421582, 241.472116, 244.245157 +2.600000, 61.093085, 241.741113, 244.517849 +2.616667, 61.765336, 242.010408, 244.790845 +2.633333, 62.438336, 242.280002, 245.064144 +2.650000, 63.112086, 242.549895, 245.337748 +2.666667, 63.786586, 242.820087, 245.611657 +2.683333, 64.461838, 243.090579, 245.885872 +2.700000, 65.137841, 243.361371, 246.160391 +2.716667, 65.814598, 243.632463, 246.435216 +2.733333, 66.492109, 243.903855, 246.710348 +2.750000, 67.170374, 244.175549, 246.985786 +2.766667, 67.849395, 244.447544, 247.261531 +2.783333, 68.529173, 244.719840, 247.537583 +2.800000, 69.209707, 244.992439, 247.813942 +2.816667, 69.891000, 245.265340, 248.090610 +2.833333, 70.573051, 245.538543, 248.367585 +2.850000, 71.255863, 245.812049, 248.644869 +2.866667, 71.939434, 246.085859, 248.922462 +2.883333, 72.623768, 246.359972, 249.200364 +2.900000, 73.308863, 246.634389, 249.478576 +2.916667, 73.994722, 246.909110, 249.757097 +2.933333, 74.681344, 247.184136, 250.035929 +2.950000, 75.368732, 247.459467, 250.315071 +2.966667, 76.056885, 247.735104, 250.594525 +2.983333, 76.745805, 248.011045, 250.874289 +3.000000, 77.435491, 248.287293, 251.154365 +3.016667, 78.125947, 248.563847, 251.434754 +3.033333, 78.817171, 248.840708, 251.715454 +3.050000, 79.509165, 249.117876, 251.996467 +3.066667, 80.201930, 249.395351, 252.277793 +3.083333, 80.895466, 249.673133, 252.559433 +3.100000, 81.589775, 249.951224, 252.841386 +3.116667, 82.284857, 250.229623, 253.123653 +3.133333, 82.980714, 250.508330, 253.406235 +3.150000, 83.677345, 250.787347, 253.689131 +3.166667, 84.374753, 251.066672, 253.972342 +3.183333, 85.072937, 251.346308, 254.255869 +3.200000, 85.771899, 251.626253, 254.539712 +3.216667, 86.471639, 251.906509, 254.823871 +3.233333, 87.172159, 252.187076, 255.108346 +3.250000, 87.873459, 252.467953, 255.393138 +3.266667, 88.575540, 252.749142, 255.678247 +3.283333, 89.278403, 253.030643, 255.963674 +3.300000, 89.982048, 253.312456, 256.249419 +3.316667, 90.686478, 253.594581, 256.535482 +3.333333, 91.391692, 253.877019, 256.821863 +3.350000, 92.097691, 254.159770, 257.108564 +3.366667, 92.804477, 254.442834, 257.395584 +3.383333, 93.512049, 254.726212, 257.682923 +3.400000, 94.220410, 255.009904, 257.970583 +3.416667, 94.929560, 255.293911, 258.258563 +3.433333, 95.639500, 255.578233, 258.546863 +3.450000, 96.350230, 255.862869, 258.835485 +3.466667, 97.021376, 241.612801, 244.387774 +3.483333, 97.589354, 204.471900, 206.749598 +3.500000, 98.067306, 172.062774, 173.927602 +3.516667, 98.469470, 144.779050, 146.311486 +3.533333, 98.807875, 121.825608, 123.089141 +3.550000, 99.092636, 102.514082, 103.558967 +3.566667, 99.332263, 86.265799, 87.132083 +3.583333, 99.533914, 72.594269, 73.314072 +3.600000, 99.703610, 61.090439, 61.689671 +3.616667, 99.800770, 34.977881, 35.312527 +3.633333, 99.800851, 0.028999, 0.029267 +3.650000, 99.800851, 0.000000, 0.000000 +3.666667, 99.800851, 0.000000, 0.000000 +3.683333, 99.800851, 0.000000, 0.000000 +3.700000, 99.800851, 0.000000, 0.000000 +3.716667, 99.800851, 0.000000, 0.000000 +3.733333, 99.800851, 0.000000, 0.000000 +3.750000, 99.800851, 0.000000, 0.000000 +3.766667, 99.800851, 0.000000, 0.000000 +3.783333, 99.800851, 0.000000, 0.000000 +3.800000, 99.800851, 0.000000, 0.000000 +3.816667, 99.800851, 0.000000, 0.000000 +3.833333, 99.800851, 0.000000, 0.000000 +3.850000, 99.800851, 0.000000, 0.000000 +3.866667, 99.800851, 0.000000, 0.000000 +3.883333, 99.800851, 0.000000, 0.000000 +3.900000, 99.800851, 0.000000, 0.000000 +3.916667, 99.800851, 0.000000, 0.000000 +3.933333, 99.800851, 0.000000, 0.000000 +3.950000, 99.800851, 0.000000, 0.000000 +3.966667, 99.800851, 0.000000, 0.000000 +3.983333, 99.800851, 0.000000, 0.000000 +4.000000, 99.800851, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_150_hd_800kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_150_hd_800kWh.csv new file mode 100644 index 0000000..158dd5d --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_150_hd_800kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.267534, 128.416205, 129.717717 +1.016667, 0.660468, 188.608537, 190.599076 +1.033333, 1.058852, 191.224250, 193.245877 +1.050000, 1.462766, 193.878687, 195.931960 +1.066667, 1.872287, 196.569870, 198.655327 +1.083333, 2.287491, 199.298305, 201.416495 +1.100000, 2.708459, 202.064505, 204.215987 +1.116667, 3.135269, 204.868989, 207.054334 +1.133333, 3.568003, 207.712284, 209.932072 +1.150000, 4.006742, 210.594665, 212.849485 +1.166667, 4.449178, 212.369039, 214.645481 +1.183333, 4.893080, 213.072966, 215.357999 +1.200000, 5.338448, 213.776531, 216.070157 +1.216667, 5.785286, 214.482412, 216.784667 +1.233333, 6.233600, 215.190617, 217.501535 +1.250000, 6.683394, 215.901154, 218.220771 +1.266667, 7.134673, 216.614030, 218.942382 +1.283333, 7.587442, 217.329253, 219.666375 +1.300000, 8.041707, 218.046830, 220.392759 +1.316667, 8.497471, 218.766769, 221.121541 +1.333333, 8.954740, 219.489078, 221.852730 +1.350000, 9.413518, 220.213764, 222.586332 +1.366667, 9.873812, 220.940836, 223.322357 +1.383333, 10.335326, 221.526688, 223.915428 +1.400000, 10.797270, 221.733138, 224.124423 +1.416667, 11.259600, 221.918662, 224.312235 +1.433333, 11.722317, 222.104304, 224.500167 +1.450000, 12.185422, 222.290101, 224.688256 +1.466667, 12.648914, 222.476053, 224.876502 +1.483333, 13.112793, 222.662160, 225.064906 +1.500000, 13.577061, 222.848423, 225.253468 +1.516667, 14.041717, 223.034840, 225.442187 +1.533333, 14.506761, 223.221413, 225.631064 +1.550000, 14.972195, 223.408142, 225.820099 +1.566667, 15.438018, 223.595026, 226.009292 +1.583333, 15.904230, 223.782066, 226.198644 +1.600000, 16.370833, 223.969263, 226.388153 +1.616667, 16.837826, 224.156615, 226.577822 +1.633333, 17.305210, 224.344123, 226.767649 +1.650000, 17.772984, 224.531788, 226.957635 +1.666667, 18.241150, 224.719610, 227.147779 +1.683333, 18.709707, 224.907588, 227.338083 +1.700000, 19.178657, 225.095723, 227.528546 +1.716667, 19.647999, 225.284014, 227.719168 +1.733333, 20.117733, 225.472463, 227.909950 +1.750000, 20.587860, 225.661069, 228.100892 +1.766667, 21.058381, 225.849832, 228.291993 +1.783333, 21.529295, 226.038752, 228.483254 +1.800000, 22.000603, 226.227830, 228.674674 +1.816667, 22.472305, 226.417066, 228.866255 +1.833333, 22.944402, 226.606459, 229.057997 +1.850000, 23.416893, 226.796011, 229.249898 +1.866667, 23.889780, 226.985720, 229.441961 +1.883333, 24.363063, 227.175588, 229.634183 +1.900000, 24.836741, 227.365614, 229.826567 +1.916667, 25.310816, 227.555798, 230.019112 +1.933333, 25.785287, 227.746141, 230.211817 +1.950000, 26.260155, 227.936643, 230.404684 +1.966667, 26.735420, 228.127304, 230.597712 +1.983333, 27.211083, 228.318123, 230.790902 +2.000000, 27.687143, 228.509102, 230.984253 +2.016667, 28.163602, 228.700240, 231.177766 +2.033333, 28.640460, 228.891537, 231.371441 +2.050000, 29.117716, 229.082994, 231.565278 +2.066667, 29.595371, 229.274610, 231.759276 +2.083333, 30.073426, 229.466387, 231.953438 +2.100000, 30.551881, 229.658323, 232.147761 +2.116667, 31.030736, 229.850419, 232.342247 +2.133333, 31.509992, 230.042675, 232.536896 +2.150000, 31.989648, 230.235092, 232.731708 +2.166667, 32.469706, 230.427669, 232.926682 +2.183333, 32.950165, 230.620406, 233.121820 +2.200000, 33.431026, 230.813305, 233.317121 +2.216667, 33.912289, 231.006364, 233.512585 +2.233333, 34.393955, 231.199584, 233.708213 +2.250000, 34.876024, 231.392965, 233.904004 +2.266667, 35.358496, 231.586508, 234.099959 +2.283333, 35.841371, 231.780211, 234.296078 +2.300000, 36.324650, 231.974077, 234.492361 +2.316667, 36.808334, 232.168104, 234.688809 +2.333333, 37.292422, 232.362292, 234.885420 +2.350000, 37.776915, 232.556643, 235.082196 +2.366667, 38.261813, 232.751155, 235.279137 +2.383333, 38.747117, 232.945830, 235.476242 +2.400000, 39.232827, 233.140667, 235.673512 +2.416667, 39.718943, 233.335667, 235.870947 +2.433333, 40.205465, 233.530829, 236.068548 +2.450000, 40.692395, 233.726154, 236.266313 +2.466667, 41.179732, 233.921641, 236.464244 +2.483333, 41.667476, 234.117292, 236.662341 +2.500000, 42.155628, 234.313106, 236.860603 +2.516667, 42.644189, 234.509083, 237.059031 +2.533333, 43.133158, 234.705223, 237.257625 +2.550000, 43.622536, 234.901527, 237.456385 +2.566667, 44.112324, 235.097995, 237.655311 +2.583333, 44.602521, 235.294626, 237.854404 +2.600000, 45.093128, 235.491421, 238.053663 +2.616667, 45.584145, 235.688380, 238.253089 +2.633333, 46.075574, 235.885504, 238.452682 +2.650000, 46.567413, 236.082792, 238.652442 +2.666667, 47.059663, 236.280244, 238.852368 +2.683333, 47.552325, 236.477861, 239.052462 +2.700000, 48.045400, 236.675643, 239.252724 +2.716667, 48.538886, 236.873589, 239.453152 +2.733333, 49.032786, 237.071701, 239.653749 +2.750000, 49.527098, 237.269977, 239.854513 +2.766667, 50.021824, 237.468419, 240.055445 +2.783333, 50.516964, 237.667027, 240.256545 +2.800000, 51.012517, 237.865800, 240.457813 +2.816667, 51.508486, 238.064738, 240.659250 +2.833333, 52.004869, 238.263843, 240.860855 +2.850000, 52.501667, 238.463113, 241.062629 +2.866667, 52.998880, 238.662550, 241.264571 +2.883333, 53.496510, 238.862153, 241.466683 +2.900000, 53.994556, 239.061922, 241.668963 +2.916667, 54.493018, 239.261857, 241.871412 +2.933333, 54.991897, 239.461960, 242.074031 +2.950000, 55.491193, 239.662229, 242.276820 +2.966667, 55.990907, 239.862665, 242.479778 +2.983333, 56.491039, 240.063268, 242.682905 +3.000000, 56.991589, 240.264039, 242.886203 +3.016667, 57.492558, 240.464976, 243.089670 +3.033333, 57.993945, 240.666082, 243.293308 +3.050000, 58.495752, 240.867355, 243.497116 +3.066667, 58.997979, 241.068795, 243.701095 +3.083333, 59.500626, 241.270404, 243.905244 +3.100000, 60.003693, 241.472180, 244.109564 +3.116667, 60.507181, 241.674125, 244.314054 +3.133333, 61.011089, 241.876238, 244.518716 +3.150000, 61.515420, 242.078520, 244.723549 +3.166667, 62.020172, 242.280970, 244.928553 +3.183333, 62.525346, 242.483589, 245.133729 +3.200000, 63.030942, 242.686377, 245.339076 +3.216667, 63.536962, 242.889333, 245.544595 +3.233333, 64.043404, 243.092459, 245.750286 +3.250000, 64.550271, 243.295755, 245.956148 +3.266667, 65.057561, 243.499219, 246.162183 +3.283333, 65.565275, 243.702854, 246.368391 +3.300000, 66.073414, 243.906658, 246.574770 +3.316667, 66.581978, 244.110631, 246.781323 +3.333333, 67.090967, 244.314775, 246.988048 +3.350000, 67.600381, 244.519089, 247.194946 +3.366667, 68.110222, 244.723574, 247.402017 +3.383333, 68.620489, 244.928228, 247.609261 +3.400000, 69.131183, 245.133054, 247.816678 +3.416667, 69.642304, 245.338050, 248.024269 +3.433333, 70.153853, 245.543216, 248.232034 +3.450000, 70.665829, 245.748554, 248.439972 +3.466667, 71.178233, 245.954063, 248.648084 +3.483333, 71.691066, 246.159744, 248.856370 +3.500000, 72.204327, 246.365595, 249.064831 +3.516667, 72.718018, 246.571618, 249.273465 +3.533333, 73.232139, 246.777813, 249.482274 +3.550000, 73.746689, 246.984180, 249.691258 +3.566667, 74.261670, 247.190719, 249.900417 +3.583333, 74.777081, 247.397430, 250.109750 +3.600000, 75.292923, 247.604313, 250.319259 +3.616667, 75.809197, 247.811368, 250.528942 +3.633333, 76.325903, 248.018597, 250.738801 +3.650000, 76.843040, 248.225997, 250.948836 +3.666667, 77.360610, 248.433571, 251.159046 +3.683333, 77.878613, 248.641318, 251.369432 +3.700000, 78.397049, 248.849237, 251.579994 +3.716667, 78.915918, 249.057330, 251.790732 +3.733333, 79.435221, 249.265597, 252.001646 +3.750000, 79.954959, 249.474037, 252.212736 +3.766667, 80.475131, 249.682650, 252.424003 +3.783333, 80.995738, 249.891438, 252.635447 +3.800000, 81.516781, 250.100399, 252.847068 +3.816667, 82.038259, 250.309535, 253.058865 +3.833333, 82.560173, 250.518845, 253.270840 +3.850000, 83.082524, 250.728329, 253.482992 +3.866667, 83.605311, 250.937988, 253.695321 +3.883333, 84.128536, 251.147822, 253.907828 +3.900000, 84.652198, 251.357830, 254.120512 +3.916667, 85.176298, 251.568014, 254.333374 +3.933333, 85.700837, 251.778372, 254.546415 +3.950000, 86.225813, 251.988906, 254.759633 +3.966667, 86.751229, 252.199616, 254.973030 +3.983333, 87.277085, 252.410501, 255.186605 +4.000000, 87.803379, 252.621561, 255.400359 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_150_ld_100kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_150_ld_100kWh.csv new file mode 100644 index 0000000..c45e432 --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_150_ld_100kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 1.483019, 88.981138, 90.246715 +1.016667, 3.697262, 132.854576, 135.075164 +1.033333, 6.015644, 139.102922, 141.477583 +1.050000, 8.381202, 141.933461, 144.379410 +1.066667, 10.791994, 144.647567, 147.162745 +1.083333, 13.221939, 145.796674, 148.341420 +1.100000, 15.662652, 146.442770, 149.004209 +1.116667, 18.114161, 147.090532, 149.668756 +1.133333, 20.576513, 147.741112, 150.336242 +1.150000, 23.049755, 148.394521, 151.006681 +1.166667, 25.533934, 149.050771, 151.680085 +1.183333, 28.029099, 149.709874, 152.356467 +1.200000, 30.535296, 150.371841, 153.035839 +1.216667, 33.052574, 151.036686, 153.718215 +1.233333, 35.580981, 151.704419, 154.403609 +1.250000, 38.120565, 152.375053, 155.092032 +1.266667, 40.671375, 153.048600, 155.783498 +1.283333, 43.233460, 153.725073, 156.478021 +1.300000, 45.806868, 154.404483, 157.175614 +1.316667, 48.391649, 155.086843, 157.876289 +1.333333, 50.987851, 155.772165, 158.580061 +1.350000, 53.595526, 156.460461, 159.286943 +1.366667, 56.214721, 157.151745, 159.996948 +1.383333, 58.845489, 157.846028, 160.710089 +1.400000, 61.487877, 158.543323, 161.426382 +1.416667, 64.141938, 159.243642, 162.145838 +1.433333, 66.807721, 159.946999, 162.868472 +1.450000, 69.485278, 160.653406, 163.594298 +1.466667, 72.174659, 161.362875, 164.323330 +1.483333, 74.875916, 162.075419, 165.055580 +1.500000, 77.589101, 162.791052, 165.791064 +1.516667, 80.314264, 163.509785, 166.529796 +1.533333, 83.051457, 164.231633, 167.271789 +1.550000, 85.776314, 163.491365, 166.510863 +1.566667, 88.108438, 139.927466, 142.322798 +1.583333, 89.990118, 112.900782, 114.659581 +1.600000, 91.505019, 90.894068, 92.196680 +1.616667, 92.724261, 73.154540, 74.129706 +1.633333, 93.727050, 60.167342, 60.925449 +1.650000, 94.602478, 52.525675, 53.164981 +1.666667, 95.369530, 46.023094, 46.566492 +1.683333, 96.041588, 40.323493, 40.786740 +1.700000, 96.630377, 35.327333, 35.723322 +1.716667, 97.146183, 30.948358, 31.287699 +1.733333, 97.598029, 27.110758, 27.402219 +1.750000, 97.993828, 23.747933, 23.998791 +1.766667, 98.340518, 20.801398, 21.017719 +1.783333, 98.644181, 18.219817, 18.406673 +1.800000, 98.910150, 15.958134, 16.119789 +1.816667, 99.143097, 13.976825, 14.116870 +1.833333, 99.347117, 12.241220, 12.362693 +1.850000, 99.525799, 10.720916, 10.826398 +1.866667, 99.682287, 9.389258, 9.480943 +1.883333, 99.800095, 7.068469, 7.136581 +1.900000, 99.800193, 0.005891, 0.005945 +1.916667, 99.800193, 0.000000, 0.000000 +1.933333, 99.800193, 0.000000, 0.000000 +1.950000, 99.800193, 0.000000, 0.000000 +1.966667, 99.800193, 0.000000, 0.000000 +1.983333, 99.800193, 0.000000, 0.000000 +2.000000, 99.800193, 0.000000, 0.000000 +2.016667, 99.800193, 0.000000, 0.000000 +2.033333, 99.800193, 0.000000, 0.000000 +2.050000, 99.800193, 0.000000, 0.000000 +2.066667, 99.800193, 0.000000, 0.000000 +2.083333, 99.800193, 0.000000, 0.000000 +2.100000, 99.800193, 0.000000, 0.000000 +2.116667, 99.800193, 0.000000, 0.000000 +2.133333, 99.800193, 0.000000, 0.000000 +2.150000, 99.800193, 0.000000, 0.000000 +2.166667, 99.800193, 0.000000, 0.000000 +2.183333, 99.800193, 0.000000, 0.000000 +2.200000, 99.800193, 0.000000, 0.000000 +2.216667, 99.800193, 0.000000, 0.000000 +2.233333, 99.800193, 0.000000, 0.000000 +2.250000, 99.800193, 0.000000, 0.000000 +2.266667, 99.800193, 0.000000, 0.000000 +2.283333, 99.800193, 0.000000, 0.000000 +2.300000, 99.800193, 0.000000, 0.000000 +2.316667, 99.800193, 0.000000, 0.000000 +2.333333, 99.800193, 0.000000, 0.000000 +2.350000, 99.800193, 0.000000, 0.000000 +2.366667, 99.800193, 0.000000, 0.000000 +2.383333, 99.800193, 0.000000, 0.000000 +2.400000, 99.800193, 0.000000, 0.000000 +2.416667, 99.800193, 0.000000, 0.000000 +2.433333, 99.800193, 0.000000, 0.000000 +2.450000, 99.800193, 0.000000, 0.000000 +2.466667, 99.800193, 0.000000, 0.000000 +2.483333, 99.800193, 0.000000, 0.000000 +2.500000, 99.800193, 0.000000, 0.000000 +2.516667, 99.800193, 0.000000, 0.000000 +2.533333, 99.800193, 0.000000, 0.000000 +2.550000, 99.800193, 0.000000, 0.000000 +2.566667, 99.800193, 0.000000, 0.000000 +2.583333, 99.800193, 0.000000, 0.000000 +2.600000, 99.800193, 0.000000, 0.000000 +2.616667, 99.800193, 0.000000, 0.000000 +2.633333, 99.800193, 0.000000, 0.000000 +2.650000, 99.800193, 0.000000, 0.000000 +2.666667, 99.800193, 0.000000, 0.000000 +2.683333, 99.800193, 0.000000, 0.000000 +2.700000, 99.800193, 0.000000, 0.000000 +2.716667, 99.800193, 0.000000, 0.000000 +2.733333, 99.800193, 0.000000, 0.000000 +2.750000, 99.800193, 0.000000, 0.000000 +2.766667, 99.800193, 0.000000, 0.000000 +2.783333, 99.800193, 0.000000, 0.000000 +2.800000, 99.800193, 0.000000, 0.000000 +2.816667, 99.800193, 0.000000, 0.000000 +2.833333, 99.800193, 0.000000, 0.000000 +2.850000, 99.800193, 0.000000, 0.000000 +2.866667, 99.800193, 0.000000, 0.000000 +2.883333, 99.800193, 0.000000, 0.000000 +2.900000, 99.800193, 0.000000, 0.000000 +2.916667, 99.800193, 0.000000, 0.000000 +2.933333, 99.800193, 0.000000, 0.000000 +2.950000, 99.800193, 0.000000, 0.000000 +2.966667, 99.800193, 0.000000, 0.000000 +2.983333, 99.800193, 0.000000, 0.000000 +3.000000, 99.800193, 0.000000, 0.000000 +3.016667, 99.800193, 0.000000, 0.000000 +3.033333, 99.800193, 0.000000, 0.000000 +3.050000, 99.800193, 0.000000, 0.000000 +3.066667, 99.800193, 0.000000, 0.000000 +3.083333, 99.800193, 0.000000, 0.000000 +3.100000, 99.800193, 0.000000, 0.000000 +3.116667, 99.800193, 0.000000, 0.000000 +3.133333, 99.800193, 0.000000, 0.000000 +3.150000, 99.800193, 0.000000, 0.000000 +3.166667, 99.800193, 0.000000, 0.000000 +3.183333, 99.800193, 0.000000, 0.000000 +3.200000, 99.800193, 0.000000, 0.000000 +3.216667, 99.800193, 0.000000, 0.000000 +3.233333, 99.800193, 0.000000, 0.000000 +3.250000, 99.800193, 0.000000, 0.000000 +3.266667, 99.800193, 0.000000, 0.000000 +3.283333, 99.800193, 0.000000, 0.000000 +3.300000, 99.800193, 0.000000, 0.000000 +3.316667, 99.800193, 0.000000, 0.000000 +3.333333, 99.800193, 0.000000, 0.000000 +3.350000, 99.800193, 0.000000, 0.000000 +3.366667, 99.800193, 0.000000, 0.000000 +3.383333, 99.800193, 0.000000, 0.000000 +3.400000, 99.800193, 0.000000, 0.000000 +3.416667, 99.800193, 0.000000, 0.000000 +3.433333, 99.800193, 0.000000, 0.000000 +3.450000, 99.800193, 0.000000, 0.000000 +3.466667, 99.800193, 0.000000, 0.000000 +3.483333, 99.800193, 0.000000, 0.000000 +3.500000, 99.800193, 0.000000, 0.000000 +3.516667, 99.800193, 0.000000, 0.000000 +3.533333, 99.800193, 0.000000, 0.000000 +3.550000, 99.800193, 0.000000, 0.000000 +3.566667, 99.800193, 0.000000, 0.000000 +3.583333, 99.800193, 0.000000, 0.000000 +3.600000, 99.800193, 0.000000, 0.000000 +3.616667, 99.800193, 0.000000, 0.000000 +3.633333, 99.800193, 0.000000, 0.000000 +3.650000, 99.800193, 0.000000, 0.000000 +3.666667, 99.800193, 0.000000, 0.000000 +3.683333, 99.800193, 0.000000, 0.000000 +3.700000, 99.800193, 0.000000, 0.000000 +3.716667, 99.800193, 0.000000, 0.000000 +3.733333, 99.800193, 0.000000, 0.000000 +3.750000, 99.800193, 0.000000, 0.000000 +3.766667, 99.800193, 0.000000, 0.000000 +3.783333, 99.800193, 0.000000, 0.000000 +3.800000, 99.800193, 0.000000, 0.000000 +3.816667, 99.800193, 0.000000, 0.000000 +3.833333, 99.800193, 0.000000, 0.000000 +3.850000, 99.800193, 0.000000, 0.000000 +3.866667, 99.800193, 0.000000, 0.000000 +3.883333, 99.800193, 0.000000, 0.000000 +3.900000, 99.800193, 0.000000, 0.000000 +3.916667, 99.800193, 0.000000, 0.000000 +3.933333, 99.800193, 0.000000, 0.000000 +3.950000, 99.800193, 0.000000, 0.000000 +3.966667, 99.800193, 0.000000, 0.000000 +3.983333, 99.800193, 0.000000, 0.000000 +4.000000, 99.800193, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_150_ld_50kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_150_ld_50kWh.csv new file mode 100644 index 0000000..0fa191d --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_150_ld_50kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 3.128871, 93.866130, 95.730843 +1.016667, 7.842947, 141.422293, 145.017496 +1.033333, 12.751566, 147.258546, 151.103771 +1.050000, 17.722889, 149.139698, 153.067288 +1.066667, 22.739023, 150.484031, 154.471012 +1.083333, 27.800308, 151.838556, 155.885829 +1.100000, 32.907136, 153.204834, 157.313378 +1.116667, 38.059902, 154.582959, 158.753771 +1.133333, 43.259002, 155.973025, 160.207118 +1.150000, 48.504840, 157.375128, 161.673532 +1.166667, 53.797819, 158.789362, 163.153125 +1.183333, 59.138346, 160.215825, 164.646013 +1.200000, 64.526833, 161.654613, 166.152309 +1.216667, 69.963694, 163.105823, 167.672130 +1.233333, 75.158062, 155.831040, 160.058647 +1.250000, 79.438591, 128.415860, 131.483724 +1.266667, 82.921460, 104.486071, 106.690301 +1.283333, 85.752031, 84.917125, 86.516420 +1.300000, 88.050862, 68.964955, 70.137651 +1.316667, 89.916793, 55.977914, 56.846949 +1.333333, 91.430653, 45.415799, 46.066497 +1.350000, 92.658420, 36.832999, 37.325052 +1.366667, 93.670858, 30.373152, 30.756840 +1.383333, 94.553903, 26.491346, 26.814458 +1.400000, 95.327570, 23.210013, 23.484571 +1.416667, 96.005366, 20.333881, 20.567873 +1.433333, 96.599127, 17.812835, 18.012798 +1.450000, 97.119238, 15.603343, 15.774654 +1.466667, 97.574810, 13.667139, 13.814241 +1.483333, 97.973830, 11.970601, 12.097180 +1.500000, 98.323303, 10.484202, 10.593328 +1.516667, 98.629371, 9.182021, 9.276262 +1.533333, 98.897414, 8.041307, 8.122820 +1.550000, 99.132151, 7.042102, 7.112705 +1.566667, 99.337714, 6.166900, 6.228128 +1.583333, 99.517726, 5.400348, 5.453505 +1.600000, 99.675359, 4.728986, 4.775182 +1.616667, 99.800066, 3.741216, 3.777353 +1.633333, 99.800170, 0.003118, 0.003147 +1.650000, 99.800170, 0.000000, 0.000000 +1.666667, 99.800170, 0.000000, 0.000000 +1.683333, 99.800170, 0.000000, 0.000000 +1.700000, 99.800170, 0.000000, 0.000000 +1.716667, 99.800170, 0.000000, 0.000000 +1.733333, 99.800170, 0.000000, 0.000000 +1.750000, 99.800170, 0.000000, 0.000000 +1.766667, 99.800170, 0.000000, 0.000000 +1.783333, 99.800170, 0.000000, 0.000000 +1.800000, 99.800170, 0.000000, 0.000000 +1.816667, 99.800170, 0.000000, 0.000000 +1.833333, 99.800170, 0.000000, 0.000000 +1.850000, 99.800170, 0.000000, 0.000000 +1.866667, 99.800170, 0.000000, 0.000000 +1.883333, 99.800170, 0.000000, 0.000000 +1.900000, 99.800170, 0.000000, 0.000000 +1.916667, 99.800170, 0.000000, 0.000000 +1.933333, 99.800170, 0.000000, 0.000000 +1.950000, 99.800170, 0.000000, 0.000000 +1.966667, 99.800170, 0.000000, 0.000000 +1.983333, 99.800170, 0.000000, 0.000000 +2.000000, 99.800170, 0.000000, 0.000000 +2.016667, 99.800170, 0.000000, 0.000000 +2.033333, 99.800170, 0.000000, 0.000000 +2.050000, 99.800170, 0.000000, 0.000000 +2.066667, 99.800170, 0.000000, 0.000000 +2.083333, 99.800170, 0.000000, 0.000000 +2.100000, 99.800170, 0.000000, 0.000000 +2.116667, 99.800170, 0.000000, 0.000000 +2.133333, 99.800170, 0.000000, 0.000000 +2.150000, 99.800170, 0.000000, 0.000000 +2.166667, 99.800170, 0.000000, 0.000000 +2.183333, 99.800170, 0.000000, 0.000000 +2.200000, 99.800170, 0.000000, 0.000000 +2.216667, 99.800170, 0.000000, 0.000000 +2.233333, 99.800170, 0.000000, 0.000000 +2.250000, 99.800170, 0.000000, 0.000000 +2.266667, 99.800170, 0.000000, 0.000000 +2.283333, 99.800170, 0.000000, 0.000000 +2.300000, 99.800170, 0.000000, 0.000000 +2.316667, 99.800170, 0.000000, 0.000000 +2.333333, 99.800170, 0.000000, 0.000000 +2.350000, 99.800170, 0.000000, 0.000000 +2.366667, 99.800170, 0.000000, 0.000000 +2.383333, 99.800170, 0.000000, 0.000000 +2.400000, 99.800170, 0.000000, 0.000000 +2.416667, 99.800170, 0.000000, 0.000000 +2.433333, 99.800170, 0.000000, 0.000000 +2.450000, 99.800170, 0.000000, 0.000000 +2.466667, 99.800170, 0.000000, 0.000000 +2.483333, 99.800170, 0.000000, 0.000000 +2.500000, 99.800170, 0.000000, 0.000000 +2.516667, 99.800170, 0.000000, 0.000000 +2.533333, 99.800170, 0.000000, 0.000000 +2.550000, 99.800170, 0.000000, 0.000000 +2.566667, 99.800170, 0.000000, 0.000000 +2.583333, 99.800170, 0.000000, 0.000000 +2.600000, 99.800170, 0.000000, 0.000000 +2.616667, 99.800170, 0.000000, 0.000000 +2.633333, 99.800170, 0.000000, 0.000000 +2.650000, 99.800170, 0.000000, 0.000000 +2.666667, 99.800170, 0.000000, 0.000000 +2.683333, 99.800170, 0.000000, 0.000000 +2.700000, 99.800170, 0.000000, 0.000000 +2.716667, 99.800170, 0.000000, 0.000000 +2.733333, 99.800170, 0.000000, 0.000000 +2.750000, 99.800170, 0.000000, 0.000000 +2.766667, 99.800170, 0.000000, 0.000000 +2.783333, 99.800170, 0.000000, 0.000000 +2.800000, 99.800170, 0.000000, 0.000000 +2.816667, 99.800170, 0.000000, 0.000000 +2.833333, 99.800170, 0.000000, 0.000000 +2.850000, 99.800170, 0.000000, 0.000000 +2.866667, 99.800170, 0.000000, 0.000000 +2.883333, 99.800170, 0.000000, 0.000000 +2.900000, 99.800170, 0.000000, 0.000000 +2.916667, 99.800170, 0.000000, 0.000000 +2.933333, 99.800170, 0.000000, 0.000000 +2.950000, 99.800170, 0.000000, 0.000000 +2.966667, 99.800170, 0.000000, 0.000000 +2.983333, 99.800170, 0.000000, 0.000000 +3.000000, 99.800170, 0.000000, 0.000000 +3.016667, 99.800170, 0.000000, 0.000000 +3.033333, 99.800170, 0.000000, 0.000000 +3.050000, 99.800170, 0.000000, 0.000000 +3.066667, 99.800170, 0.000000, 0.000000 +3.083333, 99.800170, 0.000000, 0.000000 +3.100000, 99.800170, 0.000000, 0.000000 +3.116667, 99.800170, 0.000000, 0.000000 +3.133333, 99.800170, 0.000000, 0.000000 +3.150000, 99.800170, 0.000000, 0.000000 +3.166667, 99.800170, 0.000000, 0.000000 +3.183333, 99.800170, 0.000000, 0.000000 +3.200000, 99.800170, 0.000000, 0.000000 +3.216667, 99.800170, 0.000000, 0.000000 +3.233333, 99.800170, 0.000000, 0.000000 +3.250000, 99.800170, 0.000000, 0.000000 +3.266667, 99.800170, 0.000000, 0.000000 +3.283333, 99.800170, 0.000000, 0.000000 +3.300000, 99.800170, 0.000000, 0.000000 +3.316667, 99.800170, 0.000000, 0.000000 +3.333333, 99.800170, 0.000000, 0.000000 +3.350000, 99.800170, 0.000000, 0.000000 +3.366667, 99.800170, 0.000000, 0.000000 +3.383333, 99.800170, 0.000000, 0.000000 +3.400000, 99.800170, 0.000000, 0.000000 +3.416667, 99.800170, 0.000000, 0.000000 +3.433333, 99.800170, 0.000000, 0.000000 +3.450000, 99.800170, 0.000000, 0.000000 +3.466667, 99.800170, 0.000000, 0.000000 +3.483333, 99.800170, 0.000000, 0.000000 +3.500000, 99.800170, 0.000000, 0.000000 +3.516667, 99.800170, 0.000000, 0.000000 +3.533333, 99.800170, 0.000000, 0.000000 +3.550000, 99.800170, 0.000000, 0.000000 +3.566667, 99.800170, 0.000000, 0.000000 +3.583333, 99.800170, 0.000000, 0.000000 +3.600000, 99.800170, 0.000000, 0.000000 +3.616667, 99.800170, 0.000000, 0.000000 +3.633333, 99.800170, 0.000000, 0.000000 +3.650000, 99.800170, 0.000000, 0.000000 +3.666667, 99.800170, 0.000000, 0.000000 +3.683333, 99.800170, 0.000000, 0.000000 +3.700000, 99.800170, 0.000000, 0.000000 +3.716667, 99.800170, 0.000000, 0.000000 +3.733333, 99.800170, 0.000000, 0.000000 +3.750000, 99.800170, 0.000000, 0.000000 +3.766667, 99.800170, 0.000000, 0.000000 +3.783333, 99.800170, 0.000000, 0.000000 +3.800000, 99.800170, 0.000000, 0.000000 +3.816667, 99.800170, 0.000000, 0.000000 +3.833333, 99.800170, 0.000000, 0.000000 +3.850000, 99.800170, 0.000000, 0.000000 +3.866667, 99.800170, 0.000000, 0.000000 +3.883333, 99.800170, 0.000000, 0.000000 +3.900000, 99.800170, 0.000000, 0.000000 +3.916667, 99.800170, 0.000000, 0.000000 +3.933333, 99.800170, 0.000000, 0.000000 +3.950000, 99.800170, 0.000000, 0.000000 +3.966667, 99.800170, 0.000000, 0.000000 +3.983333, 99.800170, 0.000000, 0.000000 +4.000000, 99.800170, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_150_md_200kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_150_md_200kWh.csv new file mode 100644 index 0000000..3ce4f64 --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_150_md_200kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.742042, 89.045034, 90.088918 +1.016667, 1.817299, 129.030898, 130.688201 +1.033333, 2.932579, 133.833590, 135.570647 +1.050000, 4.089315, 138.808283, 140.629327 +1.066667, 5.270174, 141.703015, 143.573576 +1.083333, 6.461449, 142.953040, 144.845132 +1.100000, 7.663190, 144.208901, 146.122712 +1.116667, 8.875487, 145.475706, 147.411517 +1.133333, 10.098408, 146.750464, 148.708505 +1.150000, 11.327440, 147.483891, 149.454763 +1.166667, 12.559209, 147.812259, 149.788886 +1.183333, 13.793713, 148.140529, 150.122915 +1.200000, 15.030959, 148.469522, 150.457687 +1.216667, 16.270953, 148.799240, 150.793201 +1.233333, 17.513700, 149.129684, 151.129461 +1.250000, 18.759208, 149.460856, 151.466468 +1.266667, 20.007481, 149.792756, 151.804223 +1.283333, 21.258525, 150.125388, 152.142728 +1.300000, 22.512348, 150.458752, 152.481984 +1.316667, 23.768956, 150.792851, 152.821994 +1.333333, 25.028353, 151.127685, 153.162759 +1.350000, 26.290547, 151.463256, 153.504281 +1.366667, 27.555543, 151.799565, 153.846561 +1.383333, 28.823348, 152.136616, 154.189601 +1.400000, 30.093968, 152.474408, 154.533402 +1.416667, 31.367409, 152.812944, 154.877967 +1.433333, 32.643678, 153.152225, 155.223297 +1.450000, 33.922780, 153.492253, 155.569394 +1.466667, 35.204722, 153.833029, 155.916259 +1.483333, 36.489510, 154.174556, 156.263894 +1.500000, 37.777150, 154.516834, 156.612301 +1.516667, 39.067649, 154.859865, 156.961481 +1.533333, 40.361013, 155.203651, 157.311437 +1.550000, 41.657248, 155.548194, 157.662170 +1.566667, 42.956360, 155.893495, 158.013681 +1.583333, 44.258357, 156.239556, 158.365972 +1.600000, 45.563243, 156.586379, 158.719045 +1.616667, 46.871026, 156.933964, 159.072903 +1.633333, 48.181712, 157.282315, 159.427545 +1.650000, 49.495307, 157.631432, 159.782975 +1.666667, 50.811818, 157.981317, 160.139194 +1.683333, 52.131251, 158.331971, 160.496203 +1.700000, 53.453613, 158.683397, 160.854005 +1.716667, 54.778910, 159.035596, 161.212601 +1.733333, 56.107148, 159.388570, 161.571993 +1.750000, 57.438334, 159.742321, 161.932183 +1.766667, 58.772474, 160.096849, 162.293172 +1.783333, 60.109576, 160.452157, 162.654962 +1.800000, 61.449644, 160.808247, 163.017555 +1.816667, 62.792687, 161.165119, 163.380953 +1.833333, 64.138710, 161.522777, 163.745157 +1.850000, 65.487720, 161.881221, 164.110169 +1.866667, 66.839724, 162.240454, 164.475992 +1.883333, 68.194728, 162.600476, 164.842626 +1.900000, 69.552739, 162.961290, 165.210074 +1.916667, 70.913763, 163.322897, 165.578337 +1.933333, 72.277807, 163.685299, 165.947417 +1.950000, 73.644878, 164.048499, 166.317317 +1.966667, 75.014982, 164.412496, 166.688037 +1.983333, 76.388126, 164.777294, 167.059579 +2.000000, 77.764317, 165.142894, 167.431946 +2.016667, 79.143561, 165.509297, 167.805139 +2.033333, 80.525865, 165.876506, 168.179161 +2.050000, 81.911236, 166.244522, 168.554012 +2.066667, 83.299681, 166.613347, 168.929694 +2.083333, 84.691206, 166.982982, 169.306210 +2.100000, 86.085818, 167.353430, 169.683562 +2.116667, 87.483523, 167.724692, 170.061750 +2.133333, 88.884330, 168.096770, 170.440778 +2.150000, 90.288244, 168.469665, 170.820646 +2.166667, 91.695272, 168.843380, 171.201357 +2.183333, 93.074717, 165.533384, 167.829672 +2.200000, 94.264609, 142.787081, 144.676309 +2.216667, 95.267268, 120.319044, 121.835009 +2.233333, 96.111588, 101.318390, 102.540969 +2.250000, 96.822508, 85.310464, 86.301656 +2.266667, 97.421061, 71.826324, 72.633784 +2.283333, 97.924975, 60.469662, 61.130289 +2.300000, 98.349191, 50.905935, 51.448508 +2.316667, 98.706298, 42.852873, 43.300005 +2.333333, 99.006902, 36.072415, 36.441994 +2.350000, 99.259934, 30.363850, 30.670123 +2.366667, 99.472917, 25.558007, 25.812391 +2.383333, 99.652186, 21.512331, 21.724030 +2.400000, 99.800092, 17.748665, 17.921472 +2.416667, 99.800215, 0.014807, 0.014944 +2.433333, 99.800215, 0.000000, 0.000000 +2.450000, 99.800215, 0.000000, 0.000000 +2.466667, 99.800215, 0.000000, 0.000000 +2.483333, 99.800215, 0.000000, 0.000000 +2.500000, 99.800215, 0.000000, 0.000000 +2.516667, 99.800215, 0.000000, 0.000000 +2.533333, 99.800215, 0.000000, 0.000000 +2.550000, 99.800215, 0.000000, 0.000000 +2.566667, 99.800215, 0.000000, 0.000000 +2.583333, 99.800215, 0.000000, 0.000000 +2.600000, 99.800215, 0.000000, 0.000000 +2.616667, 99.800215, 0.000000, 0.000000 +2.633333, 99.800215, 0.000000, 0.000000 +2.650000, 99.800215, 0.000000, 0.000000 +2.666667, 99.800215, 0.000000, 0.000000 +2.683333, 99.800215, 0.000000, 0.000000 +2.700000, 99.800215, 0.000000, 0.000000 +2.716667, 99.800215, 0.000000, 0.000000 +2.733333, 99.800215, 0.000000, 0.000000 +2.750000, 99.800215, 0.000000, 0.000000 +2.766667, 99.800215, 0.000000, 0.000000 +2.783333, 99.800215, 0.000000, 0.000000 +2.800000, 99.800215, 0.000000, 0.000000 +2.816667, 99.800215, 0.000000, 0.000000 +2.833333, 99.800215, 0.000000, 0.000000 +2.850000, 99.800215, 0.000000, 0.000000 +2.866667, 99.800215, 0.000000, 0.000000 +2.883333, 99.800215, 0.000000, 0.000000 +2.900000, 99.800215, 0.000000, 0.000000 +2.916667, 99.800215, 0.000000, 0.000000 +2.933333, 99.800215, 0.000000, 0.000000 +2.950000, 99.800215, 0.000000, 0.000000 +2.966667, 99.800215, 0.000000, 0.000000 +2.983333, 99.800215, 0.000000, 0.000000 +3.000000, 99.800215, 0.000000, 0.000000 +3.016667, 99.800215, 0.000000, 0.000000 +3.033333, 99.800215, 0.000000, 0.000000 +3.050000, 99.800215, 0.000000, 0.000000 +3.066667, 99.800215, 0.000000, 0.000000 +3.083333, 99.800215, 0.000000, 0.000000 +3.100000, 99.800215, 0.000000, 0.000000 +3.116667, 99.800215, 0.000000, 0.000000 +3.133333, 99.800215, 0.000000, 0.000000 +3.150000, 99.800215, 0.000000, 0.000000 +3.166667, 99.800215, 0.000000, 0.000000 +3.183333, 99.800215, 0.000000, 0.000000 +3.200000, 99.800215, 0.000000, 0.000000 +3.216667, 99.800215, 0.000000, 0.000000 +3.233333, 99.800215, 0.000000, 0.000000 +3.250000, 99.800215, 0.000000, 0.000000 +3.266667, 99.800215, 0.000000, 0.000000 +3.283333, 99.800215, 0.000000, 0.000000 +3.300000, 99.800215, 0.000000, 0.000000 +3.316667, 99.800215, 0.000000, 0.000000 +3.333333, 99.800215, 0.000000, 0.000000 +3.350000, 99.800215, 0.000000, 0.000000 +3.366667, 99.800215, 0.000000, 0.000000 +3.383333, 99.800215, 0.000000, 0.000000 +3.400000, 99.800215, 0.000000, 0.000000 +3.416667, 99.800215, 0.000000, 0.000000 +3.433333, 99.800215, 0.000000, 0.000000 +3.450000, 99.800215, 0.000000, 0.000000 +3.466667, 99.800215, 0.000000, 0.000000 +3.483333, 99.800215, 0.000000, 0.000000 +3.500000, 99.800215, 0.000000, 0.000000 +3.516667, 99.800215, 0.000000, 0.000000 +3.533333, 99.800215, 0.000000, 0.000000 +3.550000, 99.800215, 0.000000, 0.000000 +3.566667, 99.800215, 0.000000, 0.000000 +3.583333, 99.800215, 0.000000, 0.000000 +3.600000, 99.800215, 0.000000, 0.000000 +3.616667, 99.800215, 0.000000, 0.000000 +3.633333, 99.800215, 0.000000, 0.000000 +3.650000, 99.800215, 0.000000, 0.000000 +3.666667, 99.800215, 0.000000, 0.000000 +3.683333, 99.800215, 0.000000, 0.000000 +3.700000, 99.800215, 0.000000, 0.000000 +3.716667, 99.800215, 0.000000, 0.000000 +3.733333, 99.800215, 0.000000, 0.000000 +3.750000, 99.800215, 0.000000, 0.000000 +3.766667, 99.800215, 0.000000, 0.000000 +3.783333, 99.800215, 0.000000, 0.000000 +3.800000, 99.800215, 0.000000, 0.000000 +3.816667, 99.800215, 0.000000, 0.000000 +3.833333, 99.800215, 0.000000, 0.000000 +3.850000, 99.800215, 0.000000, 0.000000 +3.866667, 99.800215, 0.000000, 0.000000 +3.883333, 99.800215, 0.000000, 0.000000 +3.900000, 99.800215, 0.000000, 0.000000 +3.916667, 99.800215, 0.000000, 0.000000 +3.933333, 99.800215, 0.000000, 0.000000 +3.950000, 99.800215, 0.000000, 0.000000 +3.966667, 99.800215, 0.000000, 0.000000 +3.983333, 99.800215, 0.000000, 0.000000 +4.000000, 99.800215, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_2000kW_hd_1000kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_2000kW_hd_1000kWh.csv new file mode 100644 index 0000000..eee8a43 --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_2000kW_hd_1000kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.695086, 417.051585, 421.875000 +1.016667, 3.318214, 1573.877083, 1602.393140 +1.033333, 6.299800, 1788.951181, 1823.577331 +1.050000, 9.372614, 1843.688794, 1879.956736 +1.066667, 12.511393, 1883.267133, 1920.744185 +1.083333, 15.670605, 1895.527125, 1933.382466 +1.100000, 18.848080, 1906.485301, 1944.680267 +1.116667, 22.043909, 1917.497406, 1956.035097 +1.133333, 25.258196, 1928.571709, 1967.455506 +1.150000, 28.491043, 1939.708547, 1978.941867 +1.166667, 31.742557, 1950.908254, 1990.494549 +1.183333, 35.012842, 1962.171169, 2002.113929 +1.200000, 38.302005, 1973.497632, 2013.800382 +1.216667, 41.610152, 1984.887983, 2025.554287 +1.233333, 44.937389, 1996.342567, 2037.376024 +1.250000, 48.283825, 2007.861727, 2049.265975 +1.266667, 51.649568, 2019.445809, 2061.224526 +1.283333, 55.034727, 2031.095162, 2073.252062 +1.300000, 58.439411, 2042.810135, 2085.348971 +1.316667, 61.863729, 2054.591079, 2097.515646 +1.333333, 65.307793, 2066.438347, 2109.752479 +1.350000, 68.771713, 2078.352293, 2122.059864 +1.366667, 72.255602, 2090.333274, 2134.438198 +1.383333, 75.759572, 2102.381646, 2146.887881 +1.400000, 79.283735, 2114.497771, 2159.409313 +1.416667, 82.759595, 2085.516061, 2129.461016 +1.433333, 85.738843, 1787.548798, 1822.133349 +1.450000, 88.145498, 1443.993490, 1469.081598 +1.466667, 90.062084, 1149.951403, 1168.002511 +1.483333, 91.589953, 916.721092, 929.899042 +1.500000, 92.810001, 732.029045, 741.789151 +1.516667, 93.809841, 599.903801, 607.456618 +1.533333, 94.678685, 521.306583, 527.640015 +1.550000, 95.439125, 456.264254, 461.641271 +1.566667, 96.104804, 399.407305, 403.987256 +1.583333, 96.687545, 349.644442, 353.556568 +1.600000, 97.197692, 306.088185, 309.438563 +1.616667, 97.644297, 267.962906, 270.839011 +1.633333, 98.035281, 234.590257, 237.064549 +1.650000, 98.377575, 205.376885, 207.509651 +1.666667, 98.677248, 179.803723, 181.645337 +1.683333, 98.939609, 157.416643, 159.009362 +1.700000, 99.169306, 137.818291, 139.197704 +1.716667, 99.370408, 120.660968, 121.857151 +1.733333, 99.546475, 105.640395, 106.678856 +1.750000, 99.700626, 92.490279, 93.392719 +1.766667, 99.800694, 60.041119, 60.616136 +1.783333, 99.800778, 0.049917, 0.050378 +1.800000, 99.800778, 0.000000, 0.000000 +1.816667, 99.800778, 0.000000, 0.000000 +1.833333, 99.800778, 0.000000, 0.000000 +1.850000, 99.800778, 0.000000, 0.000000 +1.866667, 99.800778, 0.000000, 0.000000 +1.883333, 99.800778, 0.000000, 0.000000 +1.900000, 99.800778, 0.000000, 0.000000 +1.916667, 99.800778, 0.000000, 0.000000 +1.933333, 99.800778, 0.000000, 0.000000 +1.950000, 99.800778, 0.000000, 0.000000 +1.966667, 99.800778, 0.000000, 0.000000 +1.983333, 99.800778, 0.000000, 0.000000 +2.000000, 99.800778, 0.000000, 0.000000 +2.016667, 99.800778, 0.000000, 0.000000 +2.033333, 99.800778, 0.000000, 0.000000 +2.050000, 99.800778, 0.000000, 0.000000 +2.066667, 99.800778, 0.000000, 0.000000 +2.083333, 99.800778, 0.000000, 0.000000 +2.100000, 99.800778, 0.000000, 0.000000 +2.116667, 99.800778, 0.000000, 0.000000 +2.133333, 99.800778, 0.000000, 0.000000 +2.150000, 99.800778, 0.000000, 0.000000 +2.166667, 99.800778, 0.000000, 0.000000 +2.183333, 99.800778, 0.000000, 0.000000 +2.200000, 99.800778, 0.000000, 0.000000 +2.216667, 99.800778, 0.000000, 0.000000 +2.233333, 99.800778, 0.000000, 0.000000 +2.250000, 99.800778, 0.000000, 0.000000 +2.266667, 99.800778, 0.000000, 0.000000 +2.283333, 99.800778, 0.000000, 0.000000 +2.300000, 99.800778, 0.000000, 0.000000 +2.316667, 99.800778, 0.000000, 0.000000 +2.333333, 99.800778, 0.000000, 0.000000 +2.350000, 99.800778, 0.000000, 0.000000 +2.366667, 99.800778, 0.000000, 0.000000 +2.383333, 99.800778, 0.000000, 0.000000 +2.400000, 99.800778, 0.000000, 0.000000 +2.416667, 99.800778, 0.000000, 0.000000 +2.433333, 99.800778, 0.000000, 0.000000 +2.450000, 99.800778, 0.000000, 0.000000 +2.466667, 99.800778, 0.000000, 0.000000 +2.483333, 99.800778, 0.000000, 0.000000 +2.500000, 99.800778, 0.000000, 0.000000 +2.516667, 99.800778, 0.000000, 0.000000 +2.533333, 99.800778, 0.000000, 0.000000 +2.550000, 99.800778, 0.000000, 0.000000 +2.566667, 99.800778, 0.000000, 0.000000 +2.583333, 99.800778, 0.000000, 0.000000 +2.600000, 99.800778, 0.000000, 0.000000 +2.616667, 99.800778, 0.000000, 0.000000 +2.633333, 99.800778, 0.000000, 0.000000 +2.650000, 99.800778, 0.000000, 0.000000 +2.666667, 99.800778, 0.000000, 0.000000 +2.683333, 99.800778, 0.000000, 0.000000 +2.700000, 99.800778, 0.000000, 0.000000 +2.716667, 99.800778, 0.000000, 0.000000 +2.733333, 99.800778, 0.000000, 0.000000 +2.750000, 99.800778, 0.000000, 0.000000 +2.766667, 99.800778, 0.000000, 0.000000 +2.783333, 99.800778, 0.000000, 0.000000 +2.800000, 99.800778, 0.000000, 0.000000 +2.816667, 99.800778, 0.000000, 0.000000 +2.833333, 99.800778, 0.000000, 0.000000 +2.850000, 99.800778, 0.000000, 0.000000 +2.866667, 99.800778, 0.000000, 0.000000 +2.883333, 99.800778, 0.000000, 0.000000 +2.900000, 99.800778, 0.000000, 0.000000 +2.916667, 99.800778, 0.000000, 0.000000 +2.933333, 99.800778, 0.000000, 0.000000 +2.950000, 99.800778, 0.000000, 0.000000 +2.966667, 99.800778, 0.000000, 0.000000 +2.983333, 99.800778, 0.000000, 0.000000 +3.000000, 99.800778, 0.000000, 0.000000 +3.016667, 99.800778, 0.000000, 0.000000 +3.033333, 99.800778, 0.000000, 0.000000 +3.050000, 99.800778, 0.000000, 0.000000 +3.066667, 99.800778, 0.000000, 0.000000 +3.083333, 99.800778, 0.000000, 0.000000 +3.100000, 99.800778, 0.000000, 0.000000 +3.116667, 99.800778, 0.000000, 0.000000 +3.133333, 99.800778, 0.000000, 0.000000 +3.150000, 99.800778, 0.000000, 0.000000 +3.166667, 99.800778, 0.000000, 0.000000 +3.183333, 99.800778, 0.000000, 0.000000 +3.200000, 99.800778, 0.000000, 0.000000 +3.216667, 99.800778, 0.000000, 0.000000 +3.233333, 99.800778, 0.000000, 0.000000 +3.250000, 99.800778, 0.000000, 0.000000 +3.266667, 99.800778, 0.000000, 0.000000 +3.283333, 99.800778, 0.000000, 0.000000 +3.300000, 99.800778, 0.000000, 0.000000 +3.316667, 99.800778, 0.000000, 0.000000 +3.333333, 99.800778, 0.000000, 0.000000 +3.350000, 99.800778, 0.000000, 0.000000 +3.366667, 99.800778, 0.000000, 0.000000 +3.383333, 99.800778, 0.000000, 0.000000 +3.400000, 99.800778, 0.000000, 0.000000 +3.416667, 99.800778, 0.000000, 0.000000 +3.433333, 99.800778, 0.000000, 0.000000 +3.450000, 99.800778, 0.000000, 0.000000 +3.466667, 99.800778, 0.000000, 0.000000 +3.483333, 99.800778, 0.000000, 0.000000 +3.500000, 99.800778, 0.000000, 0.000000 +3.516667, 99.800778, 0.000000, 0.000000 +3.533333, 99.800778, 0.000000, 0.000000 +3.550000, 99.800778, 0.000000, 0.000000 +3.566667, 99.800778, 0.000000, 0.000000 +3.583333, 99.800778, 0.000000, 0.000000 +3.600000, 99.800778, 0.000000, 0.000000 +3.616667, 99.800778, 0.000000, 0.000000 +3.633333, 99.800778, 0.000000, 0.000000 +3.650000, 99.800778, 0.000000, 0.000000 +3.666667, 99.800778, 0.000000, 0.000000 +3.683333, 99.800778, 0.000000, 0.000000 +3.700000, 99.800778, 0.000000, 0.000000 +3.716667, 99.800778, 0.000000, 0.000000 +3.733333, 99.800778, 0.000000, 0.000000 +3.750000, 99.800778, 0.000000, 0.000000 +3.766667, 99.800778, 0.000000, 0.000000 +3.783333, 99.800778, 0.000000, 0.000000 +3.800000, 99.800778, 0.000000, 0.000000 +3.816667, 99.800778, 0.000000, 0.000000 +3.833333, 99.800778, 0.000000, 0.000000 +3.850000, 99.800778, 0.000000, 0.000000 +3.866667, 99.800778, 0.000000, 0.000000 +3.883333, 99.800778, 0.000000, 0.000000 +3.900000, 99.800778, 0.000000, 0.000000 +3.916667, 99.800778, 0.000000, 0.000000 +3.933333, 99.800778, 0.000000, 0.000000 +3.950000, 99.800778, 0.000000, 0.000000 +3.966667, 99.800778, 0.000000, 0.000000 +3.983333, 99.800778, 0.000000, 0.000000 +4.000000, 99.800778, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_2000kW_hd_300kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_2000kW_hd_300kWh.csv new file mode 100644 index 0000000..a8430c1 --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_2000kW_hd_300kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 2.237133, 402.683995, 409.446193 +1.016667, 7.530957, 952.888233, 979.077867 +1.033333, 13.080623, 998.939862, 1027.309852 +1.050000, 18.714120, 1014.029578, 1043.133076 +1.066667, 24.405009, 1024.359877, 1053.970971 +1.083333, 30.153608, 1034.747866, 1064.873860 +1.100000, 35.960479, 1045.236837, 1075.887287 +1.116667, 41.826188, 1055.827678, 1087.012324 +1.133333, 47.751307, 1066.521285, 1098.250053 +1.150000, 53.736410, 1077.318561, 1109.601566 +1.166667, 59.782079, 1088.220415, 1121.067968 +1.183333, 65.888900, 1099.227760, 1132.650369 +1.200000, 71.800482, 1064.084845, 1095.689219 +1.216667, 76.758458, 892.435708, 915.895619 +1.233333, 80.785971, 724.952340, 741.626565 +1.250000, 84.046033, 586.811165, 598.735697 +1.266667, 86.684747, 474.968451, 483.599586 +1.283333, 88.820670, 384.466058, 390.789138 +1.300000, 90.549706, 311.226574, 315.913175 +1.316667, 91.949439, 251.951866, 255.464266 +1.333333, 93.082857, 204.015290, 206.675737 +1.350000, 94.040377, 172.353633, 174.499009 +1.366667, 94.878363, 150.837501, 152.654399 +1.383333, 95.612377, 132.122476, 133.667801 +1.400000, 96.255286, 115.723704, 117.041857 +1.416667, 96.818373, 101.355663, 102.483046 +1.433333, 97.311529, 88.767968, 89.734557 +1.450000, 97.743422, 77.740853, 78.571438 +1.466667, 98.121653, 68.081480, 68.796655 +1.483333, 98.452879, 59.620693, 60.237630 +1.500000, 98.742935, 52.210140, 52.743219 +1.516667, 98.996934, 45.719741, 46.181052 +1.533333, 99.219353, 40.035464, 40.435204 +1.550000, 99.414116, 35.057354, 35.404157 +1.566667, 99.584660, 30.697812, 30.999011 +1.583333, 99.733993, 26.880075, 27.141916 +1.600000, 99.800559, 11.981828, 12.095243 +1.616667, 99.800614, 0.009912, 0.010003 +1.633333, 99.800614, 0.000000, 0.000000 +1.650000, 99.800614, 0.000000, 0.000000 +1.666667, 99.800614, 0.000000, 0.000000 +1.683333, 99.800614, 0.000000, 0.000000 +1.700000, 99.800614, 0.000000, 0.000000 +1.716667, 99.800614, 0.000000, 0.000000 +1.733333, 99.800614, 0.000000, 0.000000 +1.750000, 99.800614, 0.000000, 0.000000 +1.766667, 99.800614, 0.000000, 0.000000 +1.783333, 99.800614, 0.000000, 0.000000 +1.800000, 99.800614, 0.000000, 0.000000 +1.816667, 99.800614, 0.000000, 0.000000 +1.833333, 99.800614, 0.000000, 0.000000 +1.850000, 99.800614, 0.000000, 0.000000 +1.866667, 99.800614, 0.000000, 0.000000 +1.883333, 99.800614, 0.000000, 0.000000 +1.900000, 99.800614, 0.000000, 0.000000 +1.916667, 99.800614, 0.000000, 0.000000 +1.933333, 99.800614, 0.000000, 0.000000 +1.950000, 99.800614, 0.000000, 0.000000 +1.966667, 99.800614, 0.000000, 0.000000 +1.983333, 99.800614, 0.000000, 0.000000 +2.000000, 99.800614, 0.000000, 0.000000 +2.016667, 99.800614, 0.000000, 0.000000 +2.033333, 99.800614, 0.000000, 0.000000 +2.050000, 99.800614, 0.000000, 0.000000 +2.066667, 99.800614, 0.000000, 0.000000 +2.083333, 99.800614, 0.000000, 0.000000 +2.100000, 99.800614, 0.000000, 0.000000 +2.116667, 99.800614, 0.000000, 0.000000 +2.133333, 99.800614, 0.000000, 0.000000 +2.150000, 99.800614, 0.000000, 0.000000 +2.166667, 99.800614, 0.000000, 0.000000 +2.183333, 99.800614, 0.000000, 0.000000 +2.200000, 99.800614, 0.000000, 0.000000 +2.216667, 99.800614, 0.000000, 0.000000 +2.233333, 99.800614, 0.000000, 0.000000 +2.250000, 99.800614, 0.000000, 0.000000 +2.266667, 99.800614, 0.000000, 0.000000 +2.283333, 99.800614, 0.000000, 0.000000 +2.300000, 99.800614, 0.000000, 0.000000 +2.316667, 99.800614, 0.000000, 0.000000 +2.333333, 99.800614, 0.000000, 0.000000 +2.350000, 99.800614, 0.000000, 0.000000 +2.366667, 99.800614, 0.000000, 0.000000 +2.383333, 99.800614, 0.000000, 0.000000 +2.400000, 99.800614, 0.000000, 0.000000 +2.416667, 99.800614, 0.000000, 0.000000 +2.433333, 99.800614, 0.000000, 0.000000 +2.450000, 99.800614, 0.000000, 0.000000 +2.466667, 99.800614, 0.000000, 0.000000 +2.483333, 99.800614, 0.000000, 0.000000 +2.500000, 99.800614, 0.000000, 0.000000 +2.516667, 99.800614, 0.000000, 0.000000 +2.533333, 99.800614, 0.000000, 0.000000 +2.550000, 99.800614, 0.000000, 0.000000 +2.566667, 99.800614, 0.000000, 0.000000 +2.583333, 99.800614, 0.000000, 0.000000 +2.600000, 99.800614, 0.000000, 0.000000 +2.616667, 99.800614, 0.000000, 0.000000 +2.633333, 99.800614, 0.000000, 0.000000 +2.650000, 99.800614, 0.000000, 0.000000 +2.666667, 99.800614, 0.000000, 0.000000 +2.683333, 99.800614, 0.000000, 0.000000 +2.700000, 99.800614, 0.000000, 0.000000 +2.716667, 99.800614, 0.000000, 0.000000 +2.733333, 99.800614, 0.000000, 0.000000 +2.750000, 99.800614, 0.000000, 0.000000 +2.766667, 99.800614, 0.000000, 0.000000 +2.783333, 99.800614, 0.000000, 0.000000 +2.800000, 99.800614, 0.000000, 0.000000 +2.816667, 99.800614, 0.000000, 0.000000 +2.833333, 99.800614, 0.000000, 0.000000 +2.850000, 99.800614, 0.000000, 0.000000 +2.866667, 99.800614, 0.000000, 0.000000 +2.883333, 99.800614, 0.000000, 0.000000 +2.900000, 99.800614, 0.000000, 0.000000 +2.916667, 99.800614, 0.000000, 0.000000 +2.933333, 99.800614, 0.000000, 0.000000 +2.950000, 99.800614, 0.000000, 0.000000 +2.966667, 99.800614, 0.000000, 0.000000 +2.983333, 99.800614, 0.000000, 0.000000 +3.000000, 99.800614, 0.000000, 0.000000 +3.016667, 99.800614, 0.000000, 0.000000 +3.033333, 99.800614, 0.000000, 0.000000 +3.050000, 99.800614, 0.000000, 0.000000 +3.066667, 99.800614, 0.000000, 0.000000 +3.083333, 99.800614, 0.000000, 0.000000 +3.100000, 99.800614, 0.000000, 0.000000 +3.116667, 99.800614, 0.000000, 0.000000 +3.133333, 99.800614, 0.000000, 0.000000 +3.150000, 99.800614, 0.000000, 0.000000 +3.166667, 99.800614, 0.000000, 0.000000 +3.183333, 99.800614, 0.000000, 0.000000 +3.200000, 99.800614, 0.000000, 0.000000 +3.216667, 99.800614, 0.000000, 0.000000 +3.233333, 99.800614, 0.000000, 0.000000 +3.250000, 99.800614, 0.000000, 0.000000 +3.266667, 99.800614, 0.000000, 0.000000 +3.283333, 99.800614, 0.000000, 0.000000 +3.300000, 99.800614, 0.000000, 0.000000 +3.316667, 99.800614, 0.000000, 0.000000 +3.333333, 99.800614, 0.000000, 0.000000 +3.350000, 99.800614, 0.000000, 0.000000 +3.366667, 99.800614, 0.000000, 0.000000 +3.383333, 99.800614, 0.000000, 0.000000 +3.400000, 99.800614, 0.000000, 0.000000 +3.416667, 99.800614, 0.000000, 0.000000 +3.433333, 99.800614, 0.000000, 0.000000 +3.450000, 99.800614, 0.000000, 0.000000 +3.466667, 99.800614, 0.000000, 0.000000 +3.483333, 99.800614, 0.000000, 0.000000 +3.500000, 99.800614, 0.000000, 0.000000 +3.516667, 99.800614, 0.000000, 0.000000 +3.533333, 99.800614, 0.000000, 0.000000 +3.550000, 99.800614, 0.000000, 0.000000 +3.566667, 99.800614, 0.000000, 0.000000 +3.583333, 99.800614, 0.000000, 0.000000 +3.600000, 99.800614, 0.000000, 0.000000 +3.616667, 99.800614, 0.000000, 0.000000 +3.633333, 99.800614, 0.000000, 0.000000 +3.650000, 99.800614, 0.000000, 0.000000 +3.666667, 99.800614, 0.000000, 0.000000 +3.683333, 99.800614, 0.000000, 0.000000 +3.700000, 99.800614, 0.000000, 0.000000 +3.716667, 99.800614, 0.000000, 0.000000 +3.733333, 99.800614, 0.000000, 0.000000 +3.750000, 99.800614, 0.000000, 0.000000 +3.766667, 99.800614, 0.000000, 0.000000 +3.783333, 99.800614, 0.000000, 0.000000 +3.800000, 99.800614, 0.000000, 0.000000 +3.816667, 99.800614, 0.000000, 0.000000 +3.833333, 99.800614, 0.000000, 0.000000 +3.850000, 99.800614, 0.000000, 0.000000 +3.866667, 99.800614, 0.000000, 0.000000 +3.883333, 99.800614, 0.000000, 0.000000 +3.900000, 99.800614, 0.000000, 0.000000 +3.916667, 99.800614, 0.000000, 0.000000 +3.933333, 99.800614, 0.000000, 0.000000 +3.950000, 99.800614, 0.000000, 0.000000 +3.966667, 99.800614, 0.000000, 0.000000 +3.983333, 99.800614, 0.000000, 0.000000 +4.000000, 99.800614, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_2000kW_hd_400kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_2000kW_hd_400kWh.csv new file mode 100644 index 0000000..59429cf --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_2000kW_hd_400kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 1.731720, 415.612709, 421.875000 +1.016667, 6.948389, 1252.000567, 1286.066248 +1.033333, 12.477111, 1326.893298, 1364.477576 +1.050000, 18.104152, 1350.489949, 1389.218845 +1.066667, 23.788785, 1364.311865, 1403.719268 +1.083333, 29.531067, 1378.147573, 1418.240118 +1.100000, 35.331557, 1392.117794, 1432.908196 +1.116667, 41.190823, 1406.223701, 1447.724918 +1.133333, 47.109433, 1420.466489, 1462.691728 +1.150000, 53.087964, 1434.847360, 1477.810081 +1.166667, 59.126995, 1449.367524, 1493.081444 +1.183333, 65.227113, 1464.028201, 1508.507300 +1.200000, 71.209358, 1435.738889, 1478.747542 +1.216667, 76.291925, 1219.816091, 1252.422868 +1.233333, 80.427164, 992.457299, 1015.659797 +1.250000, 83.768310, 801.875065, 818.395833 +1.266667, 86.468216, 647.977455, 659.889121 +1.283333, 88.650776, 523.814461, 532.512906 +1.300000, 90.415684, 423.577944, 430.008085 +1.316667, 91.843232, 342.611337, 347.419880 +1.333333, 92.998147, 277.179759, 280.814414 +1.350000, 93.967041, 232.534610, 235.437996 +1.366667, 94.814418, 203.370468, 205.826568 +1.383333, 95.556591, 178.121509, 180.209723 +1.400000, 96.206598, 156.001544, 157.782195 +1.416667, 96.775863, 136.623554, 138.146050 +1.433333, 97.274399, 119.648817, 120.953820 +1.450000, 97.710983, 104.780181, 105.901299 +1.466667, 98.093304, 91.757020, 92.722152 +1.483333, 98.428099, 80.350803, 81.183205 +1.500000, 98.721271, 70.361170, 71.080308 +1.516667, 98.977990, 61.612499, 62.234726 +1.533333, 99.202785, 53.950866, 54.489974 +1.550000, 99.399624, 47.241383, 47.709043 +1.566667, 99.571982, 41.365860, 41.771982 +1.583333, 99.722901, 36.220745, 36.573766 +1.600000, 99.800563, 18.638645, 18.815758 +1.616667, 99.800627, 0.015444, 0.015587 +1.633333, 99.800627, 0.000000, 0.000000 +1.650000, 99.800627, 0.000000, 0.000000 +1.666667, 99.800627, 0.000000, 0.000000 +1.683333, 99.800627, 0.000000, 0.000000 +1.700000, 99.800627, 0.000000, 0.000000 +1.716667, 99.800627, 0.000000, 0.000000 +1.733333, 99.800627, 0.000000, 0.000000 +1.750000, 99.800627, 0.000000, 0.000000 +1.766667, 99.800627, 0.000000, 0.000000 +1.783333, 99.800627, 0.000000, 0.000000 +1.800000, 99.800627, 0.000000, 0.000000 +1.816667, 99.800627, 0.000000, 0.000000 +1.833333, 99.800627, 0.000000, 0.000000 +1.850000, 99.800627, 0.000000, 0.000000 +1.866667, 99.800627, 0.000000, 0.000000 +1.883333, 99.800627, 0.000000, 0.000000 +1.900000, 99.800627, 0.000000, 0.000000 +1.916667, 99.800627, 0.000000, 0.000000 +1.933333, 99.800627, 0.000000, 0.000000 +1.950000, 99.800627, 0.000000, 0.000000 +1.966667, 99.800627, 0.000000, 0.000000 +1.983333, 99.800627, 0.000000, 0.000000 +2.000000, 99.800627, 0.000000, 0.000000 +2.016667, 99.800627, 0.000000, 0.000000 +2.033333, 99.800627, 0.000000, 0.000000 +2.050000, 99.800627, 0.000000, 0.000000 +2.066667, 99.800627, 0.000000, 0.000000 +2.083333, 99.800627, 0.000000, 0.000000 +2.100000, 99.800627, 0.000000, 0.000000 +2.116667, 99.800627, 0.000000, 0.000000 +2.133333, 99.800627, 0.000000, 0.000000 +2.150000, 99.800627, 0.000000, 0.000000 +2.166667, 99.800627, 0.000000, 0.000000 +2.183333, 99.800627, 0.000000, 0.000000 +2.200000, 99.800627, 0.000000, 0.000000 +2.216667, 99.800627, 0.000000, 0.000000 +2.233333, 99.800627, 0.000000, 0.000000 +2.250000, 99.800627, 0.000000, 0.000000 +2.266667, 99.800627, 0.000000, 0.000000 +2.283333, 99.800627, 0.000000, 0.000000 +2.300000, 99.800627, 0.000000, 0.000000 +2.316667, 99.800627, 0.000000, 0.000000 +2.333333, 99.800627, 0.000000, 0.000000 +2.350000, 99.800627, 0.000000, 0.000000 +2.366667, 99.800627, 0.000000, 0.000000 +2.383333, 99.800627, 0.000000, 0.000000 +2.400000, 99.800627, 0.000000, 0.000000 +2.416667, 99.800627, 0.000000, 0.000000 +2.433333, 99.800627, 0.000000, 0.000000 +2.450000, 99.800627, 0.000000, 0.000000 +2.466667, 99.800627, 0.000000, 0.000000 +2.483333, 99.800627, 0.000000, 0.000000 +2.500000, 99.800627, 0.000000, 0.000000 +2.516667, 99.800627, 0.000000, 0.000000 +2.533333, 99.800627, 0.000000, 0.000000 +2.550000, 99.800627, 0.000000, 0.000000 +2.566667, 99.800627, 0.000000, 0.000000 +2.583333, 99.800627, 0.000000, 0.000000 +2.600000, 99.800627, 0.000000, 0.000000 +2.616667, 99.800627, 0.000000, 0.000000 +2.633333, 99.800627, 0.000000, 0.000000 +2.650000, 99.800627, 0.000000, 0.000000 +2.666667, 99.800627, 0.000000, 0.000000 +2.683333, 99.800627, 0.000000, 0.000000 +2.700000, 99.800627, 0.000000, 0.000000 +2.716667, 99.800627, 0.000000, 0.000000 +2.733333, 99.800627, 0.000000, 0.000000 +2.750000, 99.800627, 0.000000, 0.000000 +2.766667, 99.800627, 0.000000, 0.000000 +2.783333, 99.800627, 0.000000, 0.000000 +2.800000, 99.800627, 0.000000, 0.000000 +2.816667, 99.800627, 0.000000, 0.000000 +2.833333, 99.800627, 0.000000, 0.000000 +2.850000, 99.800627, 0.000000, 0.000000 +2.866667, 99.800627, 0.000000, 0.000000 +2.883333, 99.800627, 0.000000, 0.000000 +2.900000, 99.800627, 0.000000, 0.000000 +2.916667, 99.800627, 0.000000, 0.000000 +2.933333, 99.800627, 0.000000, 0.000000 +2.950000, 99.800627, 0.000000, 0.000000 +2.966667, 99.800627, 0.000000, 0.000000 +2.983333, 99.800627, 0.000000, 0.000000 +3.000000, 99.800627, 0.000000, 0.000000 +3.016667, 99.800627, 0.000000, 0.000000 +3.033333, 99.800627, 0.000000, 0.000000 +3.050000, 99.800627, 0.000000, 0.000000 +3.066667, 99.800627, 0.000000, 0.000000 +3.083333, 99.800627, 0.000000, 0.000000 +3.100000, 99.800627, 0.000000, 0.000000 +3.116667, 99.800627, 0.000000, 0.000000 +3.133333, 99.800627, 0.000000, 0.000000 +3.150000, 99.800627, 0.000000, 0.000000 +3.166667, 99.800627, 0.000000, 0.000000 +3.183333, 99.800627, 0.000000, 0.000000 +3.200000, 99.800627, 0.000000, 0.000000 +3.216667, 99.800627, 0.000000, 0.000000 +3.233333, 99.800627, 0.000000, 0.000000 +3.250000, 99.800627, 0.000000, 0.000000 +3.266667, 99.800627, 0.000000, 0.000000 +3.283333, 99.800627, 0.000000, 0.000000 +3.300000, 99.800627, 0.000000, 0.000000 +3.316667, 99.800627, 0.000000, 0.000000 +3.333333, 99.800627, 0.000000, 0.000000 +3.350000, 99.800627, 0.000000, 0.000000 +3.366667, 99.800627, 0.000000, 0.000000 +3.383333, 99.800627, 0.000000, 0.000000 +3.400000, 99.800627, 0.000000, 0.000000 +3.416667, 99.800627, 0.000000, 0.000000 +3.433333, 99.800627, 0.000000, 0.000000 +3.450000, 99.800627, 0.000000, 0.000000 +3.466667, 99.800627, 0.000000, 0.000000 +3.483333, 99.800627, 0.000000, 0.000000 +3.500000, 99.800627, 0.000000, 0.000000 +3.516667, 99.800627, 0.000000, 0.000000 +3.533333, 99.800627, 0.000000, 0.000000 +3.550000, 99.800627, 0.000000, 0.000000 +3.566667, 99.800627, 0.000000, 0.000000 +3.583333, 99.800627, 0.000000, 0.000000 +3.600000, 99.800627, 0.000000, 0.000000 +3.616667, 99.800627, 0.000000, 0.000000 +3.633333, 99.800627, 0.000000, 0.000000 +3.650000, 99.800627, 0.000000, 0.000000 +3.666667, 99.800627, 0.000000, 0.000000 +3.683333, 99.800627, 0.000000, 0.000000 +3.700000, 99.800627, 0.000000, 0.000000 +3.716667, 99.800627, 0.000000, 0.000000 +3.733333, 99.800627, 0.000000, 0.000000 +3.750000, 99.800627, 0.000000, 0.000000 +3.766667, 99.800627, 0.000000, 0.000000 +3.783333, 99.800627, 0.000000, 0.000000 +3.800000, 99.800627, 0.000000, 0.000000 +3.816667, 99.800627, 0.000000, 0.000000 +3.833333, 99.800627, 0.000000, 0.000000 +3.850000, 99.800627, 0.000000, 0.000000 +3.866667, 99.800627, 0.000000, 0.000000 +3.883333, 99.800627, 0.000000, 0.000000 +3.900000, 99.800627, 0.000000, 0.000000 +3.916667, 99.800627, 0.000000, 0.000000 +3.933333, 99.800627, 0.000000, 0.000000 +3.950000, 99.800627, 0.000000, 0.000000 +3.966667, 99.800627, 0.000000, 0.000000 +3.983333, 99.800627, 0.000000, 0.000000 +4.000000, 99.800627, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_2000kW_hd_600kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_2000kW_hd_600kWh.csv new file mode 100644 index 0000000..165963b --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_2000kW_hd_600kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 1.156700, 416.412085, 421.875000 +1.016667, 5.682369, 1629.240854, 1669.572711 +1.033333, 10.933893, 1890.548673, 1942.223816 +1.050000, 16.317659, 1938.155714, 1992.048056 +1.066667, 21.755643, 1957.674179, 2012.489055 +1.083333, 27.246646, 1976.760954, 2032.485569 +1.100000, 32.791164, 1996.026562, 2052.677075 +1.116667, 38.389699, 2015.472442, 2073.065306 +1.133333, 44.042754, 2035.100132, 2093.652102 +1.150000, 49.750841, 2054.911178, 2114.439318 +1.166667, 55.514472, 2074.907139, 2135.428824 +1.183333, 61.334165, 2095.089582, 2156.622509 +1.200000, 67.210443, 2115.460084, 2178.022273 +1.216667, 72.889819, 2044.575156, 2103.592982 +1.233333, 77.703123, 1732.789521, 1777.449787 +1.250000, 81.601867, 1403.547997, 1435.196418 +1.266667, 84.740234, 1129.811811, 1152.293471 +1.283333, 87.268525, 910.184940, 926.378979 +1.300000, 89.307386, 733.990041, 745.818013 +1.316667, 90.952905, 592.386848, 601.139092 +1.333333, 92.281830, 478.413060, 484.967830 +1.350000, 93.360035, 388.153556, 393.142948 +1.366667, 94.284116, 332.669317, 336.772783 +1.383333, 95.092664, 291.077219, 294.554564 +1.400000, 95.800694, 254.890894, 257.849908 +1.416667, 96.420694, 223.200036, 225.725259 +1.433333, 96.963601, 195.446258, 197.607006 +1.450000, 97.438993, 171.141173, 172.994547 +1.466667, 97.855262, 149.856804, 151.450051 +1.483333, 98.219757, 131.218151, 132.590534 +1.500000, 98.538914, 114.896665, 116.080950 +1.516667, 98.818371, 100.604522, 101.628163 +1.533333, 99.063064, 88.089590, 88.975677 +1.550000, 99.277317, 77.131017, 77.899044 +1.566667, 99.464915, 67.535365, 68.201843 +1.583333, 99.629174, 59.133209, 59.712171 +1.600000, 99.772997, 51.776167, 52.279574 +1.616667, 99.801847, 10.385862, 10.482867 +1.633333, 99.801869, 0.008107, 0.008182 +1.650000, 99.801869, 0.000000, 0.000000 +1.666667, 99.801869, 0.000000, 0.000000 +1.683333, 99.801869, 0.000000, 0.000000 +1.700000, 99.801869, 0.000000, 0.000000 +1.716667, 99.801869, 0.000000, 0.000000 +1.733333, 99.801869, 0.000000, 0.000000 +1.750000, 99.801869, 0.000000, 0.000000 +1.766667, 99.801869, 0.000000, 0.000000 +1.783333, 99.801869, 0.000000, 0.000000 +1.800000, 99.801869, 0.000000, 0.000000 +1.816667, 99.801869, 0.000000, 0.000000 +1.833333, 99.801869, 0.000000, 0.000000 +1.850000, 99.801869, 0.000000, 0.000000 +1.866667, 99.801869, 0.000000, 0.000000 +1.883333, 99.801869, 0.000000, 0.000000 +1.900000, 99.801869, 0.000000, 0.000000 +1.916667, 99.801869, 0.000000, 0.000000 +1.933333, 99.801869, 0.000000, 0.000000 +1.950000, 99.801869, 0.000000, 0.000000 +1.966667, 99.801869, 0.000000, 0.000000 +1.983333, 99.801869, 0.000000, 0.000000 +2.000000, 99.801869, 0.000000, 0.000000 +2.016667, 99.801869, 0.000000, 0.000000 +2.033333, 99.801869, 0.000000, 0.000000 +2.050000, 99.801869, 0.000000, 0.000000 +2.066667, 99.801869, 0.000000, 0.000000 +2.083333, 99.801869, 0.000000, 0.000000 +2.100000, 99.801869, 0.000000, 0.000000 +2.116667, 99.801869, 0.000000, 0.000000 +2.133333, 99.801869, 0.000000, 0.000000 +2.150000, 99.801869, 0.000000, 0.000000 +2.166667, 99.801869, 0.000000, 0.000000 +2.183333, 99.801869, 0.000000, 0.000000 +2.200000, 99.801869, 0.000000, 0.000000 +2.216667, 99.801869, 0.000000, 0.000000 +2.233333, 99.801869, 0.000000, 0.000000 +2.250000, 99.801869, 0.000000, 0.000000 +2.266667, 99.801869, 0.000000, 0.000000 +2.283333, 99.801869, 0.000000, 0.000000 +2.300000, 99.801869, 0.000000, 0.000000 +2.316667, 99.801869, 0.000000, 0.000000 +2.333333, 99.801869, 0.000000, 0.000000 +2.350000, 99.801869, 0.000000, 0.000000 +2.366667, 99.801869, 0.000000, 0.000000 +2.383333, 99.801869, 0.000000, 0.000000 +2.400000, 99.801869, 0.000000, 0.000000 +2.416667, 99.801869, 0.000000, 0.000000 +2.433333, 99.801869, 0.000000, 0.000000 +2.450000, 99.801869, 0.000000, 0.000000 +2.466667, 99.801869, 0.000000, 0.000000 +2.483333, 99.801869, 0.000000, 0.000000 +2.500000, 99.801869, 0.000000, 0.000000 +2.516667, 99.801869, 0.000000, 0.000000 +2.533333, 99.801869, 0.000000, 0.000000 +2.550000, 99.801869, 0.000000, 0.000000 +2.566667, 99.801869, 0.000000, 0.000000 +2.583333, 99.801869, 0.000000, 0.000000 +2.600000, 99.801869, 0.000000, 0.000000 +2.616667, 99.801869, 0.000000, 0.000000 +2.633333, 99.801869, 0.000000, 0.000000 +2.650000, 99.801869, 0.000000, 0.000000 +2.666667, 99.801869, 0.000000, 0.000000 +2.683333, 99.801869, 0.000000, 0.000000 +2.700000, 99.801869, 0.000000, 0.000000 +2.716667, 99.801869, 0.000000, 0.000000 +2.733333, 99.801869, 0.000000, 0.000000 +2.750000, 99.801869, 0.000000, 0.000000 +2.766667, 99.801869, 0.000000, 0.000000 +2.783333, 99.801869, 0.000000, 0.000000 +2.800000, 99.801869, 0.000000, 0.000000 +2.816667, 99.801869, 0.000000, 0.000000 +2.833333, 99.801869, 0.000000, 0.000000 +2.850000, 99.801869, 0.000000, 0.000000 +2.866667, 99.801869, 0.000000, 0.000000 +2.883333, 99.801869, 0.000000, 0.000000 +2.900000, 99.801869, 0.000000, 0.000000 +2.916667, 99.801869, 0.000000, 0.000000 +2.933333, 99.801869, 0.000000, 0.000000 +2.950000, 99.801869, 0.000000, 0.000000 +2.966667, 99.801869, 0.000000, 0.000000 +2.983333, 99.801869, 0.000000, 0.000000 +3.000000, 99.801869, 0.000000, 0.000000 +3.016667, 99.801869, 0.000000, 0.000000 +3.033333, 99.801869, 0.000000, 0.000000 +3.050000, 99.801869, 0.000000, 0.000000 +3.066667, 99.801869, 0.000000, 0.000000 +3.083333, 99.801869, 0.000000, 0.000000 +3.100000, 99.801869, 0.000000, 0.000000 +3.116667, 99.801869, 0.000000, 0.000000 +3.133333, 99.801869, 0.000000, 0.000000 +3.150000, 99.801869, 0.000000, 0.000000 +3.166667, 99.801869, 0.000000, 0.000000 +3.183333, 99.801869, 0.000000, 0.000000 +3.200000, 99.801869, 0.000000, 0.000000 +3.216667, 99.801869, 0.000000, 0.000000 +3.233333, 99.801869, 0.000000, 0.000000 +3.250000, 99.801869, 0.000000, 0.000000 +3.266667, 99.801869, 0.000000, 0.000000 +3.283333, 99.801869, 0.000000, 0.000000 +3.300000, 99.801869, 0.000000, 0.000000 +3.316667, 99.801869, 0.000000, 0.000000 +3.333333, 99.801869, 0.000000, 0.000000 +3.350000, 99.801869, 0.000000, 0.000000 +3.366667, 99.801869, 0.000000, 0.000000 +3.383333, 99.801869, 0.000000, 0.000000 +3.400000, 99.801869, 0.000000, 0.000000 +3.416667, 99.801869, 0.000000, 0.000000 +3.433333, 99.801869, 0.000000, 0.000000 +3.450000, 99.801869, 0.000000, 0.000000 +3.466667, 99.801869, 0.000000, 0.000000 +3.483333, 99.801869, 0.000000, 0.000000 +3.500000, 99.801869, 0.000000, 0.000000 +3.516667, 99.801869, 0.000000, 0.000000 +3.533333, 99.801869, 0.000000, 0.000000 +3.550000, 99.801869, 0.000000, 0.000000 +3.566667, 99.801869, 0.000000, 0.000000 +3.583333, 99.801869, 0.000000, 0.000000 +3.600000, 99.801869, 0.000000, 0.000000 +3.616667, 99.801869, 0.000000, 0.000000 +3.633333, 99.801869, 0.000000, 0.000000 +3.650000, 99.801869, 0.000000, 0.000000 +3.666667, 99.801869, 0.000000, 0.000000 +3.683333, 99.801869, 0.000000, 0.000000 +3.700000, 99.801869, 0.000000, 0.000000 +3.716667, 99.801869, 0.000000, 0.000000 +3.733333, 99.801869, 0.000000, 0.000000 +3.750000, 99.801869, 0.000000, 0.000000 +3.766667, 99.801869, 0.000000, 0.000000 +3.783333, 99.801869, 0.000000, 0.000000 +3.800000, 99.801869, 0.000000, 0.000000 +3.816667, 99.801869, 0.000000, 0.000000 +3.833333, 99.801869, 0.000000, 0.000000 +3.850000, 99.801869, 0.000000, 0.000000 +3.866667, 99.801869, 0.000000, 0.000000 +3.883333, 99.801869, 0.000000, 0.000000 +3.900000, 99.801869, 0.000000, 0.000000 +3.916667, 99.801869, 0.000000, 0.000000 +3.933333, 99.801869, 0.000000, 0.000000 +3.950000, 99.801869, 0.000000, 0.000000 +3.966667, 99.801869, 0.000000, 0.000000 +3.983333, 99.801869, 0.000000, 0.000000 +4.000000, 99.801869, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_2000kW_hd_800kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_2000kW_hd_800kWh.csv new file mode 100644 index 0000000..8be2687 --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_2000kW_hd_800kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.868358, 416.811772, 421.875000 +1.016667, 4.155495, 1577.825808, 1610.037047 +1.033333, 7.883329, 1789.360181, 1828.637976 +1.050000, 11.742210, 1852.263263, 1893.771075 +1.066667, 15.648486, 1875.012156, 1917.341038 +1.083333, 19.582963, 1888.549155, 1931.370306 +1.100000, 23.545604, 1902.067575, 1945.383063 +1.116667, 27.536604, 1915.680080, 1959.496118 +1.133333, 31.556161, 1929.387277, 1973.710159 +1.150000, 35.604473, 1943.189784, 1988.025889 +1.166667, 39.681740, 1957.088225, 2002.444014 +1.183333, 43.788164, 1971.083225, 2016.965245 +1.200000, 47.923946, 1985.175414, 2031.590299 +1.216667, 52.089290, 1999.365423, 2046.319897 +1.233333, 56.284403, 2013.653891, 2061.154764 +1.250000, 60.509489, 2028.041457, 2076.095629 +1.266667, 64.764757, 2042.528763, 2091.143229 +1.283333, 69.050416, 2057.116458, 2106.298302 +1.300000, 73.366677, 2071.805192, 2121.561594 +1.316667, 77.699556, 2079.781769, 2129.851546 +1.333333, 81.546417, 1846.493395, 1887.794189 +1.350000, 84.714633, 1520.743781, 1551.161865 +1.366667, 87.263006, 1223.218602, 1245.066619 +1.383333, 89.312734, 983.869454, 999.760662 +1.400000, 90.963524, 792.379494, 804.100732 +1.416667, 92.294475, 638.856253, 647.613643 +1.433333, 93.373053, 517.717659, 524.373143 +1.450000, 94.296405, 443.209048, 448.674932 +1.466667, 95.103960, 387.626006, 392.255474 +1.483333, 95.810993, 339.376210, 343.314874 +1.500000, 96.430025, 297.135416, 300.496159 +1.516667, 96.972011, 260.153063, 263.028372 +1.533333, 97.446541, 227.774344, 230.240370 +1.550000, 97.862012, 199.426041, 201.545766 +1.566667, 98.225775, 174.606338, 176.432083 +1.583333, 98.544266, 152.875926, 154.451338 +1.600000, 98.823121, 133.850207, 135.211850 +1.616667, 99.067272, 117.192482, 118.371101 +1.633333, 99.281039, 102.607978, 103.629523 +1.650000, 99.468202, 89.838625, 90.725075 +1.666667, 99.632074, 78.658487, 79.428516 +1.683333, 99.775553, 68.869755, 69.539279 +1.700000, 99.802484, 12.927117, 13.047775 +1.716667, 99.802505, 0.009788, 0.009878 +1.733333, 99.802505, 0.000000, 0.000000 +1.750000, 99.802505, 0.000000, 0.000000 +1.766667, 99.802505, 0.000000, 0.000000 +1.783333, 99.802505, 0.000000, 0.000000 +1.800000, 99.802505, 0.000000, 0.000000 +1.816667, 99.802505, 0.000000, 0.000000 +1.833333, 99.802505, 0.000000, 0.000000 +1.850000, 99.802505, 0.000000, 0.000000 +1.866667, 99.802505, 0.000000, 0.000000 +1.883333, 99.802505, 0.000000, 0.000000 +1.900000, 99.802505, 0.000000, 0.000000 +1.916667, 99.802505, 0.000000, 0.000000 +1.933333, 99.802505, 0.000000, 0.000000 +1.950000, 99.802505, 0.000000, 0.000000 +1.966667, 99.802505, 0.000000, 0.000000 +1.983333, 99.802505, 0.000000, 0.000000 +2.000000, 99.802505, 0.000000, 0.000000 +2.016667, 99.802505, 0.000000, 0.000000 +2.033333, 99.802505, 0.000000, 0.000000 +2.050000, 99.802505, 0.000000, 0.000000 +2.066667, 99.802505, 0.000000, 0.000000 +2.083333, 99.802505, 0.000000, 0.000000 +2.100000, 99.802505, 0.000000, 0.000000 +2.116667, 99.802505, 0.000000, 0.000000 +2.133333, 99.802505, 0.000000, 0.000000 +2.150000, 99.802505, 0.000000, 0.000000 +2.166667, 99.802505, 0.000000, 0.000000 +2.183333, 99.802505, 0.000000, 0.000000 +2.200000, 99.802505, 0.000000, 0.000000 +2.216667, 99.802505, 0.000000, 0.000000 +2.233333, 99.802505, 0.000000, 0.000000 +2.250000, 99.802505, 0.000000, 0.000000 +2.266667, 99.802505, 0.000000, 0.000000 +2.283333, 99.802505, 0.000000, 0.000000 +2.300000, 99.802505, 0.000000, 0.000000 +2.316667, 99.802505, 0.000000, 0.000000 +2.333333, 99.802505, 0.000000, 0.000000 +2.350000, 99.802505, 0.000000, 0.000000 +2.366667, 99.802505, 0.000000, 0.000000 +2.383333, 99.802505, 0.000000, 0.000000 +2.400000, 99.802505, 0.000000, 0.000000 +2.416667, 99.802505, 0.000000, 0.000000 +2.433333, 99.802505, 0.000000, 0.000000 +2.450000, 99.802505, 0.000000, 0.000000 +2.466667, 99.802505, 0.000000, 0.000000 +2.483333, 99.802505, 0.000000, 0.000000 +2.500000, 99.802505, 0.000000, 0.000000 +2.516667, 99.802505, 0.000000, 0.000000 +2.533333, 99.802505, 0.000000, 0.000000 +2.550000, 99.802505, 0.000000, 0.000000 +2.566667, 99.802505, 0.000000, 0.000000 +2.583333, 99.802505, 0.000000, 0.000000 +2.600000, 99.802505, 0.000000, 0.000000 +2.616667, 99.802505, 0.000000, 0.000000 +2.633333, 99.802505, 0.000000, 0.000000 +2.650000, 99.802505, 0.000000, 0.000000 +2.666667, 99.802505, 0.000000, 0.000000 +2.683333, 99.802505, 0.000000, 0.000000 +2.700000, 99.802505, 0.000000, 0.000000 +2.716667, 99.802505, 0.000000, 0.000000 +2.733333, 99.802505, 0.000000, 0.000000 +2.750000, 99.802505, 0.000000, 0.000000 +2.766667, 99.802505, 0.000000, 0.000000 +2.783333, 99.802505, 0.000000, 0.000000 +2.800000, 99.802505, 0.000000, 0.000000 +2.816667, 99.802505, 0.000000, 0.000000 +2.833333, 99.802505, 0.000000, 0.000000 +2.850000, 99.802505, 0.000000, 0.000000 +2.866667, 99.802505, 0.000000, 0.000000 +2.883333, 99.802505, 0.000000, 0.000000 +2.900000, 99.802505, 0.000000, 0.000000 +2.916667, 99.802505, 0.000000, 0.000000 +2.933333, 99.802505, 0.000000, 0.000000 +2.950000, 99.802505, 0.000000, 0.000000 +2.966667, 99.802505, 0.000000, 0.000000 +2.983333, 99.802505, 0.000000, 0.000000 +3.000000, 99.802505, 0.000000, 0.000000 +3.016667, 99.802505, 0.000000, 0.000000 +3.033333, 99.802505, 0.000000, 0.000000 +3.050000, 99.802505, 0.000000, 0.000000 +3.066667, 99.802505, 0.000000, 0.000000 +3.083333, 99.802505, 0.000000, 0.000000 +3.100000, 99.802505, 0.000000, 0.000000 +3.116667, 99.802505, 0.000000, 0.000000 +3.133333, 99.802505, 0.000000, 0.000000 +3.150000, 99.802505, 0.000000, 0.000000 +3.166667, 99.802505, 0.000000, 0.000000 +3.183333, 99.802505, 0.000000, 0.000000 +3.200000, 99.802505, 0.000000, 0.000000 +3.216667, 99.802505, 0.000000, 0.000000 +3.233333, 99.802505, 0.000000, 0.000000 +3.250000, 99.802505, 0.000000, 0.000000 +3.266667, 99.802505, 0.000000, 0.000000 +3.283333, 99.802505, 0.000000, 0.000000 +3.300000, 99.802505, 0.000000, 0.000000 +3.316667, 99.802505, 0.000000, 0.000000 +3.333333, 99.802505, 0.000000, 0.000000 +3.350000, 99.802505, 0.000000, 0.000000 +3.366667, 99.802505, 0.000000, 0.000000 +3.383333, 99.802505, 0.000000, 0.000000 +3.400000, 99.802505, 0.000000, 0.000000 +3.416667, 99.802505, 0.000000, 0.000000 +3.433333, 99.802505, 0.000000, 0.000000 +3.450000, 99.802505, 0.000000, 0.000000 +3.466667, 99.802505, 0.000000, 0.000000 +3.483333, 99.802505, 0.000000, 0.000000 +3.500000, 99.802505, 0.000000, 0.000000 +3.516667, 99.802505, 0.000000, 0.000000 +3.533333, 99.802505, 0.000000, 0.000000 +3.550000, 99.802505, 0.000000, 0.000000 +3.566667, 99.802505, 0.000000, 0.000000 +3.583333, 99.802505, 0.000000, 0.000000 +3.600000, 99.802505, 0.000000, 0.000000 +3.616667, 99.802505, 0.000000, 0.000000 +3.633333, 99.802505, 0.000000, 0.000000 +3.650000, 99.802505, 0.000000, 0.000000 +3.666667, 99.802505, 0.000000, 0.000000 +3.683333, 99.802505, 0.000000, 0.000000 +3.700000, 99.802505, 0.000000, 0.000000 +3.716667, 99.802505, 0.000000, 0.000000 +3.733333, 99.802505, 0.000000, 0.000000 +3.750000, 99.802505, 0.000000, 0.000000 +3.766667, 99.802505, 0.000000, 0.000000 +3.783333, 99.802505, 0.000000, 0.000000 +3.800000, 99.802505, 0.000000, 0.000000 +3.816667, 99.802505, 0.000000, 0.000000 +3.833333, 99.802505, 0.000000, 0.000000 +3.850000, 99.802505, 0.000000, 0.000000 +3.866667, 99.802505, 0.000000, 0.000000 +3.883333, 99.802505, 0.000000, 0.000000 +3.900000, 99.802505, 0.000000, 0.000000 +3.916667, 99.802505, 0.000000, 0.000000 +3.933333, 99.802505, 0.000000, 0.000000 +3.950000, 99.802505, 0.000000, 0.000000 +3.966667, 99.802505, 0.000000, 0.000000 +3.983333, 99.802505, 0.000000, 0.000000 +4.000000, 99.802505, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_2000kW_ld_100kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_2000kW_ld_100kWh.csv new file mode 100644 index 0000000..863092c --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_2000kW_ld_100kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 3.277102, 196.626130, 200.633388 +1.016667, 8.631848, 321.284722, 330.185018 +1.033333, 14.206680, 334.489924, 344.019657 +1.050000, 19.846382, 338.382162, 348.101550 +1.066667, 25.543273, 341.813443, 351.701589 +1.083333, 31.297878, 345.276294, 355.336239 +1.100000, 37.110757, 348.772774, 359.007702 +1.116667, 42.982477, 352.303177, 362.716336 +1.133333, 48.913607, 355.867803, 366.462501 +1.150000, 54.904723, 359.466952, 370.246561 +1.166667, 60.956405, 363.100925, 374.068883 +1.183333, 67.069239, 366.770028, 377.929837 +1.200000, 72.814788, 344.732917, 354.765804 +1.216667, 77.538831, 283.442633, 290.658256 +1.233333, 81.381165, 230.540014, 235.692882 +1.250000, 84.503011, 187.310775, 191.027267 +1.266667, 87.037904, 152.093560, 154.803066 +1.283333, 89.095184, 123.436820, 125.433725 +1.300000, 90.764180, 100.139760, 101.627269 +1.316667, 92.117744, 81.213813, 82.333301 +1.333333, 93.216936, 65.951549, 66.803970 +1.350000, 94.155659, 56.323391, 57.020913 +1.366667, 94.978024, 49.341851, 49.933603 +1.383333, 95.698573, 43.232957, 43.736662 +1.400000, 96.329867, 37.877628, 38.307599 +1.416667, 96.882926, 33.183545, 33.551532 +1.433333, 97.367418, 29.069557, 29.385251 +1.450000, 97.791824, 25.464357, 25.735782 +1.466667, 98.163580, 22.305314, 22.539141 +1.483333, 98.489204, 19.537437, 19.739239 +1.500000, 98.774411, 17.112463, 17.286909 +1.516667, 99.024212, 14.988042, 15.139061 +1.533333, 99.242996, 13.127025, 13.257934 +1.550000, 99.434610, 11.496829, 11.610441 +1.566667, 99.602424, 10.068886, 10.167588 +1.583333, 99.749393, 8.818149, 8.903978 +1.600000, 99.800348, 3.057276, 3.086056 +1.616667, 99.800390, 0.002531, 0.002555 +1.633333, 99.800390, 0.000000, 0.000000 +1.650000, 99.800390, 0.000000, 0.000000 +1.666667, 99.800390, 0.000000, 0.000000 +1.683333, 99.800390, 0.000000, 0.000000 +1.700000, 99.800390, 0.000000, 0.000000 +1.716667, 99.800390, 0.000000, 0.000000 +1.733333, 99.800390, 0.000000, 0.000000 +1.750000, 99.800390, 0.000000, 0.000000 +1.766667, 99.800390, 0.000000, 0.000000 +1.783333, 99.800390, 0.000000, 0.000000 +1.800000, 99.800390, 0.000000, 0.000000 +1.816667, 99.800390, 0.000000, 0.000000 +1.833333, 99.800390, 0.000000, 0.000000 +1.850000, 99.800390, 0.000000, 0.000000 +1.866667, 99.800390, 0.000000, 0.000000 +1.883333, 99.800390, 0.000000, 0.000000 +1.900000, 99.800390, 0.000000, 0.000000 +1.916667, 99.800390, 0.000000, 0.000000 +1.933333, 99.800390, 0.000000, 0.000000 +1.950000, 99.800390, 0.000000, 0.000000 +1.966667, 99.800390, 0.000000, 0.000000 +1.983333, 99.800390, 0.000000, 0.000000 +2.000000, 99.800390, 0.000000, 0.000000 +2.016667, 99.800390, 0.000000, 0.000000 +2.033333, 99.800390, 0.000000, 0.000000 +2.050000, 99.800390, 0.000000, 0.000000 +2.066667, 99.800390, 0.000000, 0.000000 +2.083333, 99.800390, 0.000000, 0.000000 +2.100000, 99.800390, 0.000000, 0.000000 +2.116667, 99.800390, 0.000000, 0.000000 +2.133333, 99.800390, 0.000000, 0.000000 +2.150000, 99.800390, 0.000000, 0.000000 +2.166667, 99.800390, 0.000000, 0.000000 +2.183333, 99.800390, 0.000000, 0.000000 +2.200000, 99.800390, 0.000000, 0.000000 +2.216667, 99.800390, 0.000000, 0.000000 +2.233333, 99.800390, 0.000000, 0.000000 +2.250000, 99.800390, 0.000000, 0.000000 +2.266667, 99.800390, 0.000000, 0.000000 +2.283333, 99.800390, 0.000000, 0.000000 +2.300000, 99.800390, 0.000000, 0.000000 +2.316667, 99.800390, 0.000000, 0.000000 +2.333333, 99.800390, 0.000000, 0.000000 +2.350000, 99.800390, 0.000000, 0.000000 +2.366667, 99.800390, 0.000000, 0.000000 +2.383333, 99.800390, 0.000000, 0.000000 +2.400000, 99.800390, 0.000000, 0.000000 +2.416667, 99.800390, 0.000000, 0.000000 +2.433333, 99.800390, 0.000000, 0.000000 +2.450000, 99.800390, 0.000000, 0.000000 +2.466667, 99.800390, 0.000000, 0.000000 +2.483333, 99.800390, 0.000000, 0.000000 +2.500000, 99.800390, 0.000000, 0.000000 +2.516667, 99.800390, 0.000000, 0.000000 +2.533333, 99.800390, 0.000000, 0.000000 +2.550000, 99.800390, 0.000000, 0.000000 +2.566667, 99.800390, 0.000000, 0.000000 +2.583333, 99.800390, 0.000000, 0.000000 +2.600000, 99.800390, 0.000000, 0.000000 +2.616667, 99.800390, 0.000000, 0.000000 +2.633333, 99.800390, 0.000000, 0.000000 +2.650000, 99.800390, 0.000000, 0.000000 +2.666667, 99.800390, 0.000000, 0.000000 +2.683333, 99.800390, 0.000000, 0.000000 +2.700000, 99.800390, 0.000000, 0.000000 +2.716667, 99.800390, 0.000000, 0.000000 +2.733333, 99.800390, 0.000000, 0.000000 +2.750000, 99.800390, 0.000000, 0.000000 +2.766667, 99.800390, 0.000000, 0.000000 +2.783333, 99.800390, 0.000000, 0.000000 +2.800000, 99.800390, 0.000000, 0.000000 +2.816667, 99.800390, 0.000000, 0.000000 +2.833333, 99.800390, 0.000000, 0.000000 +2.850000, 99.800390, 0.000000, 0.000000 +2.866667, 99.800390, 0.000000, 0.000000 +2.883333, 99.800390, 0.000000, 0.000000 +2.900000, 99.800390, 0.000000, 0.000000 +2.916667, 99.800390, 0.000000, 0.000000 +2.933333, 99.800390, 0.000000, 0.000000 +2.950000, 99.800390, 0.000000, 0.000000 +2.966667, 99.800390, 0.000000, 0.000000 +2.983333, 99.800390, 0.000000, 0.000000 +3.000000, 99.800390, 0.000000, 0.000000 +3.016667, 99.800390, 0.000000, 0.000000 +3.033333, 99.800390, 0.000000, 0.000000 +3.050000, 99.800390, 0.000000, 0.000000 +3.066667, 99.800390, 0.000000, 0.000000 +3.083333, 99.800390, 0.000000, 0.000000 +3.100000, 99.800390, 0.000000, 0.000000 +3.116667, 99.800390, 0.000000, 0.000000 +3.133333, 99.800390, 0.000000, 0.000000 +3.150000, 99.800390, 0.000000, 0.000000 +3.166667, 99.800390, 0.000000, 0.000000 +3.183333, 99.800390, 0.000000, 0.000000 +3.200000, 99.800390, 0.000000, 0.000000 +3.216667, 99.800390, 0.000000, 0.000000 +3.233333, 99.800390, 0.000000, 0.000000 +3.250000, 99.800390, 0.000000, 0.000000 +3.266667, 99.800390, 0.000000, 0.000000 +3.283333, 99.800390, 0.000000, 0.000000 +3.300000, 99.800390, 0.000000, 0.000000 +3.316667, 99.800390, 0.000000, 0.000000 +3.333333, 99.800390, 0.000000, 0.000000 +3.350000, 99.800390, 0.000000, 0.000000 +3.366667, 99.800390, 0.000000, 0.000000 +3.383333, 99.800390, 0.000000, 0.000000 +3.400000, 99.800390, 0.000000, 0.000000 +3.416667, 99.800390, 0.000000, 0.000000 +3.433333, 99.800390, 0.000000, 0.000000 +3.450000, 99.800390, 0.000000, 0.000000 +3.466667, 99.800390, 0.000000, 0.000000 +3.483333, 99.800390, 0.000000, 0.000000 +3.500000, 99.800390, 0.000000, 0.000000 +3.516667, 99.800390, 0.000000, 0.000000 +3.533333, 99.800390, 0.000000, 0.000000 +3.550000, 99.800390, 0.000000, 0.000000 +3.566667, 99.800390, 0.000000, 0.000000 +3.583333, 99.800390, 0.000000, 0.000000 +3.600000, 99.800390, 0.000000, 0.000000 +3.616667, 99.800390, 0.000000, 0.000000 +3.633333, 99.800390, 0.000000, 0.000000 +3.650000, 99.800390, 0.000000, 0.000000 +3.666667, 99.800390, 0.000000, 0.000000 +3.683333, 99.800390, 0.000000, 0.000000 +3.700000, 99.800390, 0.000000, 0.000000 +3.716667, 99.800390, 0.000000, 0.000000 +3.733333, 99.800390, 0.000000, 0.000000 +3.750000, 99.800390, 0.000000, 0.000000 +3.766667, 99.800390, 0.000000, 0.000000 +3.783333, 99.800390, 0.000000, 0.000000 +3.800000, 99.800390, 0.000000, 0.000000 +3.816667, 99.800390, 0.000000, 0.000000 +3.833333, 99.800390, 0.000000, 0.000000 +3.850000, 99.800390, 0.000000, 0.000000 +3.866667, 99.800390, 0.000000, 0.000000 +3.883333, 99.800390, 0.000000, 0.000000 +3.900000, 99.800390, 0.000000, 0.000000 +3.916667, 99.800390, 0.000000, 0.000000 +3.933333, 99.800390, 0.000000, 0.000000 +3.950000, 99.800390, 0.000000, 0.000000 +3.966667, 99.800390, 0.000000, 0.000000 +3.983333, 99.800390, 0.000000, 0.000000 +4.000000, 99.800390, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_2000kW_ld_50kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_2000kW_ld_50kWh.csv new file mode 100644 index 0000000..cb0fbc1 --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_2000kW_ld_50kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 3.539523, 106.185693, 108.446743 +1.016667, 8.914655, 161.253967, 165.732814 +1.033333, 14.501086, 167.592915, 172.374666 +1.050000, 20.149390, 169.449135, 174.321474 +1.066667, 25.855008, 171.168530, 176.125544 +1.083333, 31.618483, 172.904264, 177.947505 +1.100000, 37.440379, 174.656869, 179.787938 +1.116667, 43.321262, 176.426494, 181.647022 +1.133333, 49.261705, 178.213288, 183.524938 +1.150000, 55.262285, 180.017402, 185.421868 +1.166667, 61.323585, 181.838988, 187.337997 +1.183333, 67.446191, 183.678199, 189.273511 +1.200000, 73.135726, 170.686050, 175.619229 +1.216667, 77.793213, 139.724612, 143.248650 +1.233333, 81.583485, 113.708137, 116.228943 +1.250000, 84.664902, 92.442512, 94.263740 +1.266667, 87.168127, 75.096745, 76.426397 +1.283333, 89.200400, 60.968188, 61.949295 +1.300000, 90.849504, 49.473140, 50.204685 +1.316667, 92.187146, 40.129247, 40.680244 +1.333333, 93.274607, 32.623833, 33.044204 +1.350000, 94.206790, 27.965501, 28.311217 +1.366667, 95.023453, 24.499894, 24.793249 +1.383333, 95.738941, 21.464635, 21.714354 +1.400000, 96.365739, 18.803942, 19.017113 +1.416667, 96.914804, 16.471933, 16.654378 +1.433333, 97.395746, 14.428269, 14.584787 +1.450000, 97.816996, 12.637497, 12.772067 +1.466667, 98.185945, 11.068479, 11.184406 +1.483333, 98.509074, 9.693873, 9.793920 +1.500000, 98.792064, 8.489682, 8.576163 +1.516667, 99.039892, 7.434848, 7.509712 +1.533333, 99.256922, 6.510900, 6.575792 +1.550000, 99.446977, 5.701638, 5.757952 +1.566667, 99.613405, 4.992859, 5.041779 +1.583333, 99.759142, 4.372110, 4.414647 +1.600000, 99.800286, 1.234310, 1.245889 +1.616667, 99.800320, 0.001022, 0.001031 +1.633333, 99.800320, 0.000000, 0.000000 +1.650000, 99.800320, 0.000000, 0.000000 +1.666667, 99.800320, 0.000000, 0.000000 +1.683333, 99.800320, 0.000000, 0.000000 +1.700000, 99.800320, 0.000000, 0.000000 +1.716667, 99.800320, 0.000000, 0.000000 +1.733333, 99.800320, 0.000000, 0.000000 +1.750000, 99.800320, 0.000000, 0.000000 +1.766667, 99.800320, 0.000000, 0.000000 +1.783333, 99.800320, 0.000000, 0.000000 +1.800000, 99.800320, 0.000000, 0.000000 +1.816667, 99.800320, 0.000000, 0.000000 +1.833333, 99.800320, 0.000000, 0.000000 +1.850000, 99.800320, 0.000000, 0.000000 +1.866667, 99.800320, 0.000000, 0.000000 +1.883333, 99.800320, 0.000000, 0.000000 +1.900000, 99.800320, 0.000000, 0.000000 +1.916667, 99.800320, 0.000000, 0.000000 +1.933333, 99.800320, 0.000000, 0.000000 +1.950000, 99.800320, 0.000000, 0.000000 +1.966667, 99.800320, 0.000000, 0.000000 +1.983333, 99.800320, 0.000000, 0.000000 +2.000000, 99.800320, 0.000000, 0.000000 +2.016667, 99.800320, 0.000000, 0.000000 +2.033333, 99.800320, 0.000000, 0.000000 +2.050000, 99.800320, 0.000000, 0.000000 +2.066667, 99.800320, 0.000000, 0.000000 +2.083333, 99.800320, 0.000000, 0.000000 +2.100000, 99.800320, 0.000000, 0.000000 +2.116667, 99.800320, 0.000000, 0.000000 +2.133333, 99.800320, 0.000000, 0.000000 +2.150000, 99.800320, 0.000000, 0.000000 +2.166667, 99.800320, 0.000000, 0.000000 +2.183333, 99.800320, 0.000000, 0.000000 +2.200000, 99.800320, 0.000000, 0.000000 +2.216667, 99.800320, 0.000000, 0.000000 +2.233333, 99.800320, 0.000000, 0.000000 +2.250000, 99.800320, 0.000000, 0.000000 +2.266667, 99.800320, 0.000000, 0.000000 +2.283333, 99.800320, 0.000000, 0.000000 +2.300000, 99.800320, 0.000000, 0.000000 +2.316667, 99.800320, 0.000000, 0.000000 +2.333333, 99.800320, 0.000000, 0.000000 +2.350000, 99.800320, 0.000000, 0.000000 +2.366667, 99.800320, 0.000000, 0.000000 +2.383333, 99.800320, 0.000000, 0.000000 +2.400000, 99.800320, 0.000000, 0.000000 +2.416667, 99.800320, 0.000000, 0.000000 +2.433333, 99.800320, 0.000000, 0.000000 +2.450000, 99.800320, 0.000000, 0.000000 +2.466667, 99.800320, 0.000000, 0.000000 +2.483333, 99.800320, 0.000000, 0.000000 +2.500000, 99.800320, 0.000000, 0.000000 +2.516667, 99.800320, 0.000000, 0.000000 +2.533333, 99.800320, 0.000000, 0.000000 +2.550000, 99.800320, 0.000000, 0.000000 +2.566667, 99.800320, 0.000000, 0.000000 +2.583333, 99.800320, 0.000000, 0.000000 +2.600000, 99.800320, 0.000000, 0.000000 +2.616667, 99.800320, 0.000000, 0.000000 +2.633333, 99.800320, 0.000000, 0.000000 +2.650000, 99.800320, 0.000000, 0.000000 +2.666667, 99.800320, 0.000000, 0.000000 +2.683333, 99.800320, 0.000000, 0.000000 +2.700000, 99.800320, 0.000000, 0.000000 +2.716667, 99.800320, 0.000000, 0.000000 +2.733333, 99.800320, 0.000000, 0.000000 +2.750000, 99.800320, 0.000000, 0.000000 +2.766667, 99.800320, 0.000000, 0.000000 +2.783333, 99.800320, 0.000000, 0.000000 +2.800000, 99.800320, 0.000000, 0.000000 +2.816667, 99.800320, 0.000000, 0.000000 +2.833333, 99.800320, 0.000000, 0.000000 +2.850000, 99.800320, 0.000000, 0.000000 +2.866667, 99.800320, 0.000000, 0.000000 +2.883333, 99.800320, 0.000000, 0.000000 +2.900000, 99.800320, 0.000000, 0.000000 +2.916667, 99.800320, 0.000000, 0.000000 +2.933333, 99.800320, 0.000000, 0.000000 +2.950000, 99.800320, 0.000000, 0.000000 +2.966667, 99.800320, 0.000000, 0.000000 +2.983333, 99.800320, 0.000000, 0.000000 +3.000000, 99.800320, 0.000000, 0.000000 +3.016667, 99.800320, 0.000000, 0.000000 +3.033333, 99.800320, 0.000000, 0.000000 +3.050000, 99.800320, 0.000000, 0.000000 +3.066667, 99.800320, 0.000000, 0.000000 +3.083333, 99.800320, 0.000000, 0.000000 +3.100000, 99.800320, 0.000000, 0.000000 +3.116667, 99.800320, 0.000000, 0.000000 +3.133333, 99.800320, 0.000000, 0.000000 +3.150000, 99.800320, 0.000000, 0.000000 +3.166667, 99.800320, 0.000000, 0.000000 +3.183333, 99.800320, 0.000000, 0.000000 +3.200000, 99.800320, 0.000000, 0.000000 +3.216667, 99.800320, 0.000000, 0.000000 +3.233333, 99.800320, 0.000000, 0.000000 +3.250000, 99.800320, 0.000000, 0.000000 +3.266667, 99.800320, 0.000000, 0.000000 +3.283333, 99.800320, 0.000000, 0.000000 +3.300000, 99.800320, 0.000000, 0.000000 +3.316667, 99.800320, 0.000000, 0.000000 +3.333333, 99.800320, 0.000000, 0.000000 +3.350000, 99.800320, 0.000000, 0.000000 +3.366667, 99.800320, 0.000000, 0.000000 +3.383333, 99.800320, 0.000000, 0.000000 +3.400000, 99.800320, 0.000000, 0.000000 +3.416667, 99.800320, 0.000000, 0.000000 +3.433333, 99.800320, 0.000000, 0.000000 +3.450000, 99.800320, 0.000000, 0.000000 +3.466667, 99.800320, 0.000000, 0.000000 +3.483333, 99.800320, 0.000000, 0.000000 +3.500000, 99.800320, 0.000000, 0.000000 +3.516667, 99.800320, 0.000000, 0.000000 +3.533333, 99.800320, 0.000000, 0.000000 +3.550000, 99.800320, 0.000000, 0.000000 +3.566667, 99.800320, 0.000000, 0.000000 +3.583333, 99.800320, 0.000000, 0.000000 +3.600000, 99.800320, 0.000000, 0.000000 +3.616667, 99.800320, 0.000000, 0.000000 +3.633333, 99.800320, 0.000000, 0.000000 +3.650000, 99.800320, 0.000000, 0.000000 +3.666667, 99.800320, 0.000000, 0.000000 +3.683333, 99.800320, 0.000000, 0.000000 +3.700000, 99.800320, 0.000000, 0.000000 +3.716667, 99.800320, 0.000000, 0.000000 +3.733333, 99.800320, 0.000000, 0.000000 +3.750000, 99.800320, 0.000000, 0.000000 +3.766667, 99.800320, 0.000000, 0.000000 +3.783333, 99.800320, 0.000000, 0.000000 +3.800000, 99.800320, 0.000000, 0.000000 +3.816667, 99.800320, 0.000000, 0.000000 +3.833333, 99.800320, 0.000000, 0.000000 +3.850000, 99.800320, 0.000000, 0.000000 +3.866667, 99.800320, 0.000000, 0.000000 +3.883333, 99.800320, 0.000000, 0.000000 +3.900000, 99.800320, 0.000000, 0.000000 +3.916667, 99.800320, 0.000000, 0.000000 +3.933333, 99.800320, 0.000000, 0.000000 +3.950000, 99.800320, 0.000000, 0.000000 +3.966667, 99.800320, 0.000000, 0.000000 +3.983333, 99.800320, 0.000000, 0.000000 +4.000000, 99.800320, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_2000kW_md_200kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_2000kW_md_200kWh.csv new file mode 100644 index 0000000..5cd51b9 --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_2000kW_md_200kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 2.759483, 331.137985, 337.293266 +1.016667, 8.089708, 639.626963, 657.289974 +1.033333, 13.656356, 667.997727, 687.009603 +1.050000, 19.295904, 676.745749, 696.183616 +1.066667, 24.992761, 683.622936, 703.399035 +1.083333, 30.747390, 690.555399, 710.675428 +1.100000, 36.560350, 697.555247, 718.025591 +1.116667, 42.432209, 704.623075, 725.450240 +1.133333, 48.363538, 711.759481, 732.950099 +1.150000, 54.354914, 718.965068, 740.525896 +1.166667, 60.406917, 726.240442, 748.178367 +1.183333, 66.520136, 733.586213, 755.908255 +1.200000, 72.351575, 699.772703, 720.354660 +1.216667, 77.187822, 580.349622, 595.354589 +1.233333, 81.116315, 471.419228, 482.098346 +1.250000, 84.301961, 382.277462, 389.946932 +1.266667, 86.884394, 309.892004, 315.463327 +1.283333, 88.977358, 251.155634, 255.249345 +1.300000, 90.673322, 203.515741, 206.557489 +1.316667, 92.047398, 164.889139, 167.173493 +1.333333, 93.161480, 133.689774, 135.424423 +1.350000, 94.108541, 113.647274, 115.057899 +1.366667, 94.937791, 99.509997, 100.705713 +1.383333, 95.664215, 87.170931, 88.188275 +1.400000, 96.300525, 76.357153, 77.225211 +1.416667, 96.857868, 66.881169, 67.623804 +1.433333, 97.346020, 58.578338, 59.215213 +1.450000, 97.773554, 51.304083, 51.851469 +1.466667, 98.147983, 44.931485, 45.402906 +1.483333, 98.475893, 39.349172, 39.755909 +1.500000, 98.763055, 34.459435, 34.810942 +1.516667, 99.014527, 30.176575, 30.480801 +1.533333, 99.234739, 26.425447, 26.689102 +1.550000, 99.427573, 23.140168, 23.368933 +1.566667, 99.596432, 20.262987, 20.461689 +1.583333, 99.744292, 17.743289, 17.916041 +1.600000, 99.800496, 6.744465, 6.808072 +1.616667, 99.800543, 0.005574, 0.005626 +1.633333, 99.800543, 0.000000, 0.000000 +1.650000, 99.800543, 0.000000, 0.000000 +1.666667, 99.800543, 0.000000, 0.000000 +1.683333, 99.800543, 0.000000, 0.000000 +1.700000, 99.800543, 0.000000, 0.000000 +1.716667, 99.800543, 0.000000, 0.000000 +1.733333, 99.800543, 0.000000, 0.000000 +1.750000, 99.800543, 0.000000, 0.000000 +1.766667, 99.800543, 0.000000, 0.000000 +1.783333, 99.800543, 0.000000, 0.000000 +1.800000, 99.800543, 0.000000, 0.000000 +1.816667, 99.800543, 0.000000, 0.000000 +1.833333, 99.800543, 0.000000, 0.000000 +1.850000, 99.800543, 0.000000, 0.000000 +1.866667, 99.800543, 0.000000, 0.000000 +1.883333, 99.800543, 0.000000, 0.000000 +1.900000, 99.800543, 0.000000, 0.000000 +1.916667, 99.800543, 0.000000, 0.000000 +1.933333, 99.800543, 0.000000, 0.000000 +1.950000, 99.800543, 0.000000, 0.000000 +1.966667, 99.800543, 0.000000, 0.000000 +1.983333, 99.800543, 0.000000, 0.000000 +2.000000, 99.800543, 0.000000, 0.000000 +2.016667, 99.800543, 0.000000, 0.000000 +2.033333, 99.800543, 0.000000, 0.000000 +2.050000, 99.800543, 0.000000, 0.000000 +2.066667, 99.800543, 0.000000, 0.000000 +2.083333, 99.800543, 0.000000, 0.000000 +2.100000, 99.800543, 0.000000, 0.000000 +2.116667, 99.800543, 0.000000, 0.000000 +2.133333, 99.800543, 0.000000, 0.000000 +2.150000, 99.800543, 0.000000, 0.000000 +2.166667, 99.800543, 0.000000, 0.000000 +2.183333, 99.800543, 0.000000, 0.000000 +2.200000, 99.800543, 0.000000, 0.000000 +2.216667, 99.800543, 0.000000, 0.000000 +2.233333, 99.800543, 0.000000, 0.000000 +2.250000, 99.800543, 0.000000, 0.000000 +2.266667, 99.800543, 0.000000, 0.000000 +2.283333, 99.800543, 0.000000, 0.000000 +2.300000, 99.800543, 0.000000, 0.000000 +2.316667, 99.800543, 0.000000, 0.000000 +2.333333, 99.800543, 0.000000, 0.000000 +2.350000, 99.800543, 0.000000, 0.000000 +2.366667, 99.800543, 0.000000, 0.000000 +2.383333, 99.800543, 0.000000, 0.000000 +2.400000, 99.800543, 0.000000, 0.000000 +2.416667, 99.800543, 0.000000, 0.000000 +2.433333, 99.800543, 0.000000, 0.000000 +2.450000, 99.800543, 0.000000, 0.000000 +2.466667, 99.800543, 0.000000, 0.000000 +2.483333, 99.800543, 0.000000, 0.000000 +2.500000, 99.800543, 0.000000, 0.000000 +2.516667, 99.800543, 0.000000, 0.000000 +2.533333, 99.800543, 0.000000, 0.000000 +2.550000, 99.800543, 0.000000, 0.000000 +2.566667, 99.800543, 0.000000, 0.000000 +2.583333, 99.800543, 0.000000, 0.000000 +2.600000, 99.800543, 0.000000, 0.000000 +2.616667, 99.800543, 0.000000, 0.000000 +2.633333, 99.800543, 0.000000, 0.000000 +2.650000, 99.800543, 0.000000, 0.000000 +2.666667, 99.800543, 0.000000, 0.000000 +2.683333, 99.800543, 0.000000, 0.000000 +2.700000, 99.800543, 0.000000, 0.000000 +2.716667, 99.800543, 0.000000, 0.000000 +2.733333, 99.800543, 0.000000, 0.000000 +2.750000, 99.800543, 0.000000, 0.000000 +2.766667, 99.800543, 0.000000, 0.000000 +2.783333, 99.800543, 0.000000, 0.000000 +2.800000, 99.800543, 0.000000, 0.000000 +2.816667, 99.800543, 0.000000, 0.000000 +2.833333, 99.800543, 0.000000, 0.000000 +2.850000, 99.800543, 0.000000, 0.000000 +2.866667, 99.800543, 0.000000, 0.000000 +2.883333, 99.800543, 0.000000, 0.000000 +2.900000, 99.800543, 0.000000, 0.000000 +2.916667, 99.800543, 0.000000, 0.000000 +2.933333, 99.800543, 0.000000, 0.000000 +2.950000, 99.800543, 0.000000, 0.000000 +2.966667, 99.800543, 0.000000, 0.000000 +2.983333, 99.800543, 0.000000, 0.000000 +3.000000, 99.800543, 0.000000, 0.000000 +3.016667, 99.800543, 0.000000, 0.000000 +3.033333, 99.800543, 0.000000, 0.000000 +3.050000, 99.800543, 0.000000, 0.000000 +3.066667, 99.800543, 0.000000, 0.000000 +3.083333, 99.800543, 0.000000, 0.000000 +3.100000, 99.800543, 0.000000, 0.000000 +3.116667, 99.800543, 0.000000, 0.000000 +3.133333, 99.800543, 0.000000, 0.000000 +3.150000, 99.800543, 0.000000, 0.000000 +3.166667, 99.800543, 0.000000, 0.000000 +3.183333, 99.800543, 0.000000, 0.000000 +3.200000, 99.800543, 0.000000, 0.000000 +3.216667, 99.800543, 0.000000, 0.000000 +3.233333, 99.800543, 0.000000, 0.000000 +3.250000, 99.800543, 0.000000, 0.000000 +3.266667, 99.800543, 0.000000, 0.000000 +3.283333, 99.800543, 0.000000, 0.000000 +3.300000, 99.800543, 0.000000, 0.000000 +3.316667, 99.800543, 0.000000, 0.000000 +3.333333, 99.800543, 0.000000, 0.000000 +3.350000, 99.800543, 0.000000, 0.000000 +3.366667, 99.800543, 0.000000, 0.000000 +3.383333, 99.800543, 0.000000, 0.000000 +3.400000, 99.800543, 0.000000, 0.000000 +3.416667, 99.800543, 0.000000, 0.000000 +3.433333, 99.800543, 0.000000, 0.000000 +3.450000, 99.800543, 0.000000, 0.000000 +3.466667, 99.800543, 0.000000, 0.000000 +3.483333, 99.800543, 0.000000, 0.000000 +3.500000, 99.800543, 0.000000, 0.000000 +3.516667, 99.800543, 0.000000, 0.000000 +3.533333, 99.800543, 0.000000, 0.000000 +3.550000, 99.800543, 0.000000, 0.000000 +3.566667, 99.800543, 0.000000, 0.000000 +3.583333, 99.800543, 0.000000, 0.000000 +3.600000, 99.800543, 0.000000, 0.000000 +3.616667, 99.800543, 0.000000, 0.000000 +3.633333, 99.800543, 0.000000, 0.000000 +3.650000, 99.800543, 0.000000, 0.000000 +3.666667, 99.800543, 0.000000, 0.000000 +3.683333, 99.800543, 0.000000, 0.000000 +3.700000, 99.800543, 0.000000, 0.000000 +3.716667, 99.800543, 0.000000, 0.000000 +3.733333, 99.800543, 0.000000, 0.000000 +3.750000, 99.800543, 0.000000, 0.000000 +3.766667, 99.800543, 0.000000, 0.000000 +3.783333, 99.800543, 0.000000, 0.000000 +3.800000, 99.800543, 0.000000, 0.000000 +3.816667, 99.800543, 0.000000, 0.000000 +3.833333, 99.800543, 0.000000, 0.000000 +3.850000, 99.800543, 0.000000, 0.000000 +3.866667, 99.800543, 0.000000, 0.000000 +3.883333, 99.800543, 0.000000, 0.000000 +3.900000, 99.800543, 0.000000, 0.000000 +3.916667, 99.800543, 0.000000, 0.000000 +3.933333, 99.800543, 0.000000, 0.000000 +3.950000, 99.800543, 0.000000, 0.000000 +3.966667, 99.800543, 0.000000, 0.000000 +3.983333, 99.800543, 0.000000, 0.000000 +4.000000, 99.800543, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_3000kW_hd_1000kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_3000kW_hd_1000kWh.csv new file mode 100644 index 0000000..334b41e --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_3000kW_hd_1000kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.695086, 417.051585, 421.875000 +1.016667, 3.759882, 1838.877773, 1875.000000 +1.033333, 8.301725, 2725.105902, 2792.721694 +1.050000, 13.025426, 2834.220620, 2906.368165 +1.066667, 17.806923, 2868.897678, 2942.515827 +1.083333, 22.630102, 2893.907820, 2968.595730 +1.100000, 27.495084, 2918.988978, 2994.757369 +1.116667, 32.402217, 2944.279996, 3021.145704 +1.133333, 37.351855, 2969.782475, 3047.762609 +1.150000, 42.344351, 2995.498047, 3074.609992 +1.166667, 47.380065, 3021.428353, 3101.689779 +1.183333, 52.459357, 3047.575048, 3129.003909 +1.200000, 57.582590, 3073.939794, 3156.554336 +1.216667, 62.750131, 3100.524264, 3184.343030 +1.233333, 67.962347, 3127.330141, 3212.371975 +1.250000, 73.208070, 3147.433599, 3233.398503 +1.266667, 77.919181, 2826.666375, 2898.495503 +1.283333, 81.837072, 2350.734483, 2403.898605 +1.300000, 84.976287, 1883.529537, 1921.014667 +1.316667, 87.488786, 1507.498944, 1534.238552 +1.333333, 89.504155, 1209.221354, 1228.610476 +1.350000, 91.123956, 971.880878, 986.155058 +1.366667, 92.427842, 782.331691, 792.984203 +1.383333, 93.486380, 635.122701, 643.244561 +1.400000, 94.396150, 545.861966, 552.568870 +1.416667, 95.191806, 477.393881, 483.076375 +1.433333, 95.888303, 417.897692, 422.732869 +1.450000, 96.498016, 365.828157, 369.954423 +1.466667, 97.031772, 320.253611, 323.784350 +1.483333, 97.499043, 280.362218, 283.390784 +1.500000, 97.908116, 245.444012, 248.047620 +1.516667, 98.266246, 214.878014, 217.120811 +1.533333, 98.579781, 188.121010, 190.056516 +1.550000, 98.854277, 164.697759, 166.370815 +1.566667, 99.094598, 144.192450, 145.640769 +1.583333, 99.305000, 126.241240, 127.496658 +1.600000, 99.489210, 110.525732, 111.615216 +1.616667, 99.650488, 96.767282, 97.713751 +1.633333, 99.791692, 84.722021, 85.545012 +1.650000, 99.803783, 7.254956, 7.322314 +1.666667, 99.803790, 0.004156, 0.004194 +1.683333, 99.803790, 0.000000, 0.000000 +1.700000, 99.803790, 0.000000, 0.000000 +1.716667, 99.803790, 0.000000, 0.000000 +1.733333, 99.803790, 0.000000, 0.000000 +1.750000, 99.803790, 0.000000, 0.000000 +1.766667, 99.803790, 0.000000, 0.000000 +1.783333, 99.803790, 0.000000, 0.000000 +1.800000, 99.803790, 0.000000, 0.000000 +1.816667, 99.803790, 0.000000, 0.000000 +1.833333, 99.803790, 0.000000, 0.000000 +1.850000, 99.803790, 0.000000, 0.000000 +1.866667, 99.803790, 0.000000, 0.000000 +1.883333, 99.803790, 0.000000, 0.000000 +1.900000, 99.803790, 0.000000, 0.000000 +1.916667, 99.803790, 0.000000, 0.000000 +1.933333, 99.803790, 0.000000, 0.000000 +1.950000, 99.803790, 0.000000, 0.000000 +1.966667, 99.803790, 0.000000, 0.000000 +1.983333, 99.803790, 0.000000, 0.000000 +2.000000, 99.803790, 0.000000, 0.000000 +2.016667, 99.803790, 0.000000, 0.000000 +2.033333, 99.803790, 0.000000, 0.000000 +2.050000, 99.803790, 0.000000, 0.000000 +2.066667, 99.803790, 0.000000, 0.000000 +2.083333, 99.803790, 0.000000, 0.000000 +2.100000, 99.803790, 0.000000, 0.000000 +2.116667, 99.803790, 0.000000, 0.000000 +2.133333, 99.803790, 0.000000, 0.000000 +2.150000, 99.803790, 0.000000, 0.000000 +2.166667, 99.803790, 0.000000, 0.000000 +2.183333, 99.803790, 0.000000, 0.000000 +2.200000, 99.803790, 0.000000, 0.000000 +2.216667, 99.803790, 0.000000, 0.000000 +2.233333, 99.803790, 0.000000, 0.000000 +2.250000, 99.803790, 0.000000, 0.000000 +2.266667, 99.803790, 0.000000, 0.000000 +2.283333, 99.803790, 0.000000, 0.000000 +2.300000, 99.803790, 0.000000, 0.000000 +2.316667, 99.803790, 0.000000, 0.000000 +2.333333, 99.803790, 0.000000, 0.000000 +2.350000, 99.803790, 0.000000, 0.000000 +2.366667, 99.803790, 0.000000, 0.000000 +2.383333, 99.803790, 0.000000, 0.000000 +2.400000, 99.803790, 0.000000, 0.000000 +2.416667, 99.803790, 0.000000, 0.000000 +2.433333, 99.803790, 0.000000, 0.000000 +2.450000, 99.803790, 0.000000, 0.000000 +2.466667, 99.803790, 0.000000, 0.000000 +2.483333, 99.803790, 0.000000, 0.000000 +2.500000, 99.803790, 0.000000, 0.000000 +2.516667, 99.803790, 0.000000, 0.000000 +2.533333, 99.803790, 0.000000, 0.000000 +2.550000, 99.803790, 0.000000, 0.000000 +2.566667, 99.803790, 0.000000, 0.000000 +2.583333, 99.803790, 0.000000, 0.000000 +2.600000, 99.803790, 0.000000, 0.000000 +2.616667, 99.803790, 0.000000, 0.000000 +2.633333, 99.803790, 0.000000, 0.000000 +2.650000, 99.803790, 0.000000, 0.000000 +2.666667, 99.803790, 0.000000, 0.000000 +2.683333, 99.803790, 0.000000, 0.000000 +2.700000, 99.803790, 0.000000, 0.000000 +2.716667, 99.803790, 0.000000, 0.000000 +2.733333, 99.803790, 0.000000, 0.000000 +2.750000, 99.803790, 0.000000, 0.000000 +2.766667, 99.803790, 0.000000, 0.000000 +2.783333, 99.803790, 0.000000, 0.000000 +2.800000, 99.803790, 0.000000, 0.000000 +2.816667, 99.803790, 0.000000, 0.000000 +2.833333, 99.803790, 0.000000, 0.000000 +2.850000, 99.803790, 0.000000, 0.000000 +2.866667, 99.803790, 0.000000, 0.000000 +2.883333, 99.803790, 0.000000, 0.000000 +2.900000, 99.803790, 0.000000, 0.000000 +2.916667, 99.803790, 0.000000, 0.000000 +2.933333, 99.803790, 0.000000, 0.000000 +2.950000, 99.803790, 0.000000, 0.000000 +2.966667, 99.803790, 0.000000, 0.000000 +2.983333, 99.803790, 0.000000, 0.000000 +3.000000, 99.803790, 0.000000, 0.000000 +3.016667, 99.803790, 0.000000, 0.000000 +3.033333, 99.803790, 0.000000, 0.000000 +3.050000, 99.803790, 0.000000, 0.000000 +3.066667, 99.803790, 0.000000, 0.000000 +3.083333, 99.803790, 0.000000, 0.000000 +3.100000, 99.803790, 0.000000, 0.000000 +3.116667, 99.803790, 0.000000, 0.000000 +3.133333, 99.803790, 0.000000, 0.000000 +3.150000, 99.803790, 0.000000, 0.000000 +3.166667, 99.803790, 0.000000, 0.000000 +3.183333, 99.803790, 0.000000, 0.000000 +3.200000, 99.803790, 0.000000, 0.000000 +3.216667, 99.803790, 0.000000, 0.000000 +3.233333, 99.803790, 0.000000, 0.000000 +3.250000, 99.803790, 0.000000, 0.000000 +3.266667, 99.803790, 0.000000, 0.000000 +3.283333, 99.803790, 0.000000, 0.000000 +3.300000, 99.803790, 0.000000, 0.000000 +3.316667, 99.803790, 0.000000, 0.000000 +3.333333, 99.803790, 0.000000, 0.000000 +3.350000, 99.803790, 0.000000, 0.000000 +3.366667, 99.803790, 0.000000, 0.000000 +3.383333, 99.803790, 0.000000, 0.000000 +3.400000, 99.803790, 0.000000, 0.000000 +3.416667, 99.803790, 0.000000, 0.000000 +3.433333, 99.803790, 0.000000, 0.000000 +3.450000, 99.803790, 0.000000, 0.000000 +3.466667, 99.803790, 0.000000, 0.000000 +3.483333, 99.803790, 0.000000, 0.000000 +3.500000, 99.803790, 0.000000, 0.000000 +3.516667, 99.803790, 0.000000, 0.000000 +3.533333, 99.803790, 0.000000, 0.000000 +3.550000, 99.803790, 0.000000, 0.000000 +3.566667, 99.803790, 0.000000, 0.000000 +3.583333, 99.803790, 0.000000, 0.000000 +3.600000, 99.803790, 0.000000, 0.000000 +3.616667, 99.803790, 0.000000, 0.000000 +3.633333, 99.803790, 0.000000, 0.000000 +3.650000, 99.803790, 0.000000, 0.000000 +3.666667, 99.803790, 0.000000, 0.000000 +3.683333, 99.803790, 0.000000, 0.000000 +3.700000, 99.803790, 0.000000, 0.000000 +3.716667, 99.803790, 0.000000, 0.000000 +3.733333, 99.803790, 0.000000, 0.000000 +3.750000, 99.803790, 0.000000, 0.000000 +3.766667, 99.803790, 0.000000, 0.000000 +3.783333, 99.803790, 0.000000, 0.000000 +3.800000, 99.803790, 0.000000, 0.000000 +3.816667, 99.803790, 0.000000, 0.000000 +3.833333, 99.803790, 0.000000, 0.000000 +3.850000, 99.803790, 0.000000, 0.000000 +3.866667, 99.803790, 0.000000, 0.000000 +3.883333, 99.803790, 0.000000, 0.000000 +3.900000, 99.803790, 0.000000, 0.000000 +3.916667, 99.803790, 0.000000, 0.000000 +3.933333, 99.803790, 0.000000, 0.000000 +3.950000, 99.803790, 0.000000, 0.000000 +3.966667, 99.803790, 0.000000, 0.000000 +3.983333, 99.803790, 0.000000, 0.000000 +4.000000, 99.803790, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_3000kW_hd_300kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_3000kW_hd_300kWh.csv new file mode 100644 index 0000000..a8430c1 --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_3000kW_hd_300kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 2.237133, 402.683995, 409.446193 +1.016667, 7.530957, 952.888233, 979.077867 +1.033333, 13.080623, 998.939862, 1027.309852 +1.050000, 18.714120, 1014.029578, 1043.133076 +1.066667, 24.405009, 1024.359877, 1053.970971 +1.083333, 30.153608, 1034.747866, 1064.873860 +1.100000, 35.960479, 1045.236837, 1075.887287 +1.116667, 41.826188, 1055.827678, 1087.012324 +1.133333, 47.751307, 1066.521285, 1098.250053 +1.150000, 53.736410, 1077.318561, 1109.601566 +1.166667, 59.782079, 1088.220415, 1121.067968 +1.183333, 65.888900, 1099.227760, 1132.650369 +1.200000, 71.800482, 1064.084845, 1095.689219 +1.216667, 76.758458, 892.435708, 915.895619 +1.233333, 80.785971, 724.952340, 741.626565 +1.250000, 84.046033, 586.811165, 598.735697 +1.266667, 86.684747, 474.968451, 483.599586 +1.283333, 88.820670, 384.466058, 390.789138 +1.300000, 90.549706, 311.226574, 315.913175 +1.316667, 91.949439, 251.951866, 255.464266 +1.333333, 93.082857, 204.015290, 206.675737 +1.350000, 94.040377, 172.353633, 174.499009 +1.366667, 94.878363, 150.837501, 152.654399 +1.383333, 95.612377, 132.122476, 133.667801 +1.400000, 96.255286, 115.723704, 117.041857 +1.416667, 96.818373, 101.355663, 102.483046 +1.433333, 97.311529, 88.767968, 89.734557 +1.450000, 97.743422, 77.740853, 78.571438 +1.466667, 98.121653, 68.081480, 68.796655 +1.483333, 98.452879, 59.620693, 60.237630 +1.500000, 98.742935, 52.210140, 52.743219 +1.516667, 98.996934, 45.719741, 46.181052 +1.533333, 99.219353, 40.035464, 40.435204 +1.550000, 99.414116, 35.057354, 35.404157 +1.566667, 99.584660, 30.697812, 30.999011 +1.583333, 99.733993, 26.880075, 27.141916 +1.600000, 99.800559, 11.981828, 12.095243 +1.616667, 99.800614, 0.009912, 0.010003 +1.633333, 99.800614, 0.000000, 0.000000 +1.650000, 99.800614, 0.000000, 0.000000 +1.666667, 99.800614, 0.000000, 0.000000 +1.683333, 99.800614, 0.000000, 0.000000 +1.700000, 99.800614, 0.000000, 0.000000 +1.716667, 99.800614, 0.000000, 0.000000 +1.733333, 99.800614, 0.000000, 0.000000 +1.750000, 99.800614, 0.000000, 0.000000 +1.766667, 99.800614, 0.000000, 0.000000 +1.783333, 99.800614, 0.000000, 0.000000 +1.800000, 99.800614, 0.000000, 0.000000 +1.816667, 99.800614, 0.000000, 0.000000 +1.833333, 99.800614, 0.000000, 0.000000 +1.850000, 99.800614, 0.000000, 0.000000 +1.866667, 99.800614, 0.000000, 0.000000 +1.883333, 99.800614, 0.000000, 0.000000 +1.900000, 99.800614, 0.000000, 0.000000 +1.916667, 99.800614, 0.000000, 0.000000 +1.933333, 99.800614, 0.000000, 0.000000 +1.950000, 99.800614, 0.000000, 0.000000 +1.966667, 99.800614, 0.000000, 0.000000 +1.983333, 99.800614, 0.000000, 0.000000 +2.000000, 99.800614, 0.000000, 0.000000 +2.016667, 99.800614, 0.000000, 0.000000 +2.033333, 99.800614, 0.000000, 0.000000 +2.050000, 99.800614, 0.000000, 0.000000 +2.066667, 99.800614, 0.000000, 0.000000 +2.083333, 99.800614, 0.000000, 0.000000 +2.100000, 99.800614, 0.000000, 0.000000 +2.116667, 99.800614, 0.000000, 0.000000 +2.133333, 99.800614, 0.000000, 0.000000 +2.150000, 99.800614, 0.000000, 0.000000 +2.166667, 99.800614, 0.000000, 0.000000 +2.183333, 99.800614, 0.000000, 0.000000 +2.200000, 99.800614, 0.000000, 0.000000 +2.216667, 99.800614, 0.000000, 0.000000 +2.233333, 99.800614, 0.000000, 0.000000 +2.250000, 99.800614, 0.000000, 0.000000 +2.266667, 99.800614, 0.000000, 0.000000 +2.283333, 99.800614, 0.000000, 0.000000 +2.300000, 99.800614, 0.000000, 0.000000 +2.316667, 99.800614, 0.000000, 0.000000 +2.333333, 99.800614, 0.000000, 0.000000 +2.350000, 99.800614, 0.000000, 0.000000 +2.366667, 99.800614, 0.000000, 0.000000 +2.383333, 99.800614, 0.000000, 0.000000 +2.400000, 99.800614, 0.000000, 0.000000 +2.416667, 99.800614, 0.000000, 0.000000 +2.433333, 99.800614, 0.000000, 0.000000 +2.450000, 99.800614, 0.000000, 0.000000 +2.466667, 99.800614, 0.000000, 0.000000 +2.483333, 99.800614, 0.000000, 0.000000 +2.500000, 99.800614, 0.000000, 0.000000 +2.516667, 99.800614, 0.000000, 0.000000 +2.533333, 99.800614, 0.000000, 0.000000 +2.550000, 99.800614, 0.000000, 0.000000 +2.566667, 99.800614, 0.000000, 0.000000 +2.583333, 99.800614, 0.000000, 0.000000 +2.600000, 99.800614, 0.000000, 0.000000 +2.616667, 99.800614, 0.000000, 0.000000 +2.633333, 99.800614, 0.000000, 0.000000 +2.650000, 99.800614, 0.000000, 0.000000 +2.666667, 99.800614, 0.000000, 0.000000 +2.683333, 99.800614, 0.000000, 0.000000 +2.700000, 99.800614, 0.000000, 0.000000 +2.716667, 99.800614, 0.000000, 0.000000 +2.733333, 99.800614, 0.000000, 0.000000 +2.750000, 99.800614, 0.000000, 0.000000 +2.766667, 99.800614, 0.000000, 0.000000 +2.783333, 99.800614, 0.000000, 0.000000 +2.800000, 99.800614, 0.000000, 0.000000 +2.816667, 99.800614, 0.000000, 0.000000 +2.833333, 99.800614, 0.000000, 0.000000 +2.850000, 99.800614, 0.000000, 0.000000 +2.866667, 99.800614, 0.000000, 0.000000 +2.883333, 99.800614, 0.000000, 0.000000 +2.900000, 99.800614, 0.000000, 0.000000 +2.916667, 99.800614, 0.000000, 0.000000 +2.933333, 99.800614, 0.000000, 0.000000 +2.950000, 99.800614, 0.000000, 0.000000 +2.966667, 99.800614, 0.000000, 0.000000 +2.983333, 99.800614, 0.000000, 0.000000 +3.000000, 99.800614, 0.000000, 0.000000 +3.016667, 99.800614, 0.000000, 0.000000 +3.033333, 99.800614, 0.000000, 0.000000 +3.050000, 99.800614, 0.000000, 0.000000 +3.066667, 99.800614, 0.000000, 0.000000 +3.083333, 99.800614, 0.000000, 0.000000 +3.100000, 99.800614, 0.000000, 0.000000 +3.116667, 99.800614, 0.000000, 0.000000 +3.133333, 99.800614, 0.000000, 0.000000 +3.150000, 99.800614, 0.000000, 0.000000 +3.166667, 99.800614, 0.000000, 0.000000 +3.183333, 99.800614, 0.000000, 0.000000 +3.200000, 99.800614, 0.000000, 0.000000 +3.216667, 99.800614, 0.000000, 0.000000 +3.233333, 99.800614, 0.000000, 0.000000 +3.250000, 99.800614, 0.000000, 0.000000 +3.266667, 99.800614, 0.000000, 0.000000 +3.283333, 99.800614, 0.000000, 0.000000 +3.300000, 99.800614, 0.000000, 0.000000 +3.316667, 99.800614, 0.000000, 0.000000 +3.333333, 99.800614, 0.000000, 0.000000 +3.350000, 99.800614, 0.000000, 0.000000 +3.366667, 99.800614, 0.000000, 0.000000 +3.383333, 99.800614, 0.000000, 0.000000 +3.400000, 99.800614, 0.000000, 0.000000 +3.416667, 99.800614, 0.000000, 0.000000 +3.433333, 99.800614, 0.000000, 0.000000 +3.450000, 99.800614, 0.000000, 0.000000 +3.466667, 99.800614, 0.000000, 0.000000 +3.483333, 99.800614, 0.000000, 0.000000 +3.500000, 99.800614, 0.000000, 0.000000 +3.516667, 99.800614, 0.000000, 0.000000 +3.533333, 99.800614, 0.000000, 0.000000 +3.550000, 99.800614, 0.000000, 0.000000 +3.566667, 99.800614, 0.000000, 0.000000 +3.583333, 99.800614, 0.000000, 0.000000 +3.600000, 99.800614, 0.000000, 0.000000 +3.616667, 99.800614, 0.000000, 0.000000 +3.633333, 99.800614, 0.000000, 0.000000 +3.650000, 99.800614, 0.000000, 0.000000 +3.666667, 99.800614, 0.000000, 0.000000 +3.683333, 99.800614, 0.000000, 0.000000 +3.700000, 99.800614, 0.000000, 0.000000 +3.716667, 99.800614, 0.000000, 0.000000 +3.733333, 99.800614, 0.000000, 0.000000 +3.750000, 99.800614, 0.000000, 0.000000 +3.766667, 99.800614, 0.000000, 0.000000 +3.783333, 99.800614, 0.000000, 0.000000 +3.800000, 99.800614, 0.000000, 0.000000 +3.816667, 99.800614, 0.000000, 0.000000 +3.833333, 99.800614, 0.000000, 0.000000 +3.850000, 99.800614, 0.000000, 0.000000 +3.866667, 99.800614, 0.000000, 0.000000 +3.883333, 99.800614, 0.000000, 0.000000 +3.900000, 99.800614, 0.000000, 0.000000 +3.916667, 99.800614, 0.000000, 0.000000 +3.933333, 99.800614, 0.000000, 0.000000 +3.950000, 99.800614, 0.000000, 0.000000 +3.966667, 99.800614, 0.000000, 0.000000 +3.983333, 99.800614, 0.000000, 0.000000 +4.000000, 99.800614, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_3000kW_hd_400kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_3000kW_hd_400kWh.csv new file mode 100644 index 0000000..59429cf --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_3000kW_hd_400kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 1.731720, 415.612709, 421.875000 +1.016667, 6.948389, 1252.000567, 1286.066248 +1.033333, 12.477111, 1326.893298, 1364.477576 +1.050000, 18.104152, 1350.489949, 1389.218845 +1.066667, 23.788785, 1364.311865, 1403.719268 +1.083333, 29.531067, 1378.147573, 1418.240118 +1.100000, 35.331557, 1392.117794, 1432.908196 +1.116667, 41.190823, 1406.223701, 1447.724918 +1.133333, 47.109433, 1420.466489, 1462.691728 +1.150000, 53.087964, 1434.847360, 1477.810081 +1.166667, 59.126995, 1449.367524, 1493.081444 +1.183333, 65.227113, 1464.028201, 1508.507300 +1.200000, 71.209358, 1435.738889, 1478.747542 +1.216667, 76.291925, 1219.816091, 1252.422868 +1.233333, 80.427164, 992.457299, 1015.659797 +1.250000, 83.768310, 801.875065, 818.395833 +1.266667, 86.468216, 647.977455, 659.889121 +1.283333, 88.650776, 523.814461, 532.512906 +1.300000, 90.415684, 423.577944, 430.008085 +1.316667, 91.843232, 342.611337, 347.419880 +1.333333, 92.998147, 277.179759, 280.814414 +1.350000, 93.967041, 232.534610, 235.437996 +1.366667, 94.814418, 203.370468, 205.826568 +1.383333, 95.556591, 178.121509, 180.209723 +1.400000, 96.206598, 156.001544, 157.782195 +1.416667, 96.775863, 136.623554, 138.146050 +1.433333, 97.274399, 119.648817, 120.953820 +1.450000, 97.710983, 104.780181, 105.901299 +1.466667, 98.093304, 91.757020, 92.722152 +1.483333, 98.428099, 80.350803, 81.183205 +1.500000, 98.721271, 70.361170, 71.080308 +1.516667, 98.977990, 61.612499, 62.234726 +1.533333, 99.202785, 53.950866, 54.489974 +1.550000, 99.399624, 47.241383, 47.709043 +1.566667, 99.571982, 41.365860, 41.771982 +1.583333, 99.722901, 36.220745, 36.573766 +1.600000, 99.800563, 18.638645, 18.815758 +1.616667, 99.800627, 0.015444, 0.015587 +1.633333, 99.800627, 0.000000, 0.000000 +1.650000, 99.800627, 0.000000, 0.000000 +1.666667, 99.800627, 0.000000, 0.000000 +1.683333, 99.800627, 0.000000, 0.000000 +1.700000, 99.800627, 0.000000, 0.000000 +1.716667, 99.800627, 0.000000, 0.000000 +1.733333, 99.800627, 0.000000, 0.000000 +1.750000, 99.800627, 0.000000, 0.000000 +1.766667, 99.800627, 0.000000, 0.000000 +1.783333, 99.800627, 0.000000, 0.000000 +1.800000, 99.800627, 0.000000, 0.000000 +1.816667, 99.800627, 0.000000, 0.000000 +1.833333, 99.800627, 0.000000, 0.000000 +1.850000, 99.800627, 0.000000, 0.000000 +1.866667, 99.800627, 0.000000, 0.000000 +1.883333, 99.800627, 0.000000, 0.000000 +1.900000, 99.800627, 0.000000, 0.000000 +1.916667, 99.800627, 0.000000, 0.000000 +1.933333, 99.800627, 0.000000, 0.000000 +1.950000, 99.800627, 0.000000, 0.000000 +1.966667, 99.800627, 0.000000, 0.000000 +1.983333, 99.800627, 0.000000, 0.000000 +2.000000, 99.800627, 0.000000, 0.000000 +2.016667, 99.800627, 0.000000, 0.000000 +2.033333, 99.800627, 0.000000, 0.000000 +2.050000, 99.800627, 0.000000, 0.000000 +2.066667, 99.800627, 0.000000, 0.000000 +2.083333, 99.800627, 0.000000, 0.000000 +2.100000, 99.800627, 0.000000, 0.000000 +2.116667, 99.800627, 0.000000, 0.000000 +2.133333, 99.800627, 0.000000, 0.000000 +2.150000, 99.800627, 0.000000, 0.000000 +2.166667, 99.800627, 0.000000, 0.000000 +2.183333, 99.800627, 0.000000, 0.000000 +2.200000, 99.800627, 0.000000, 0.000000 +2.216667, 99.800627, 0.000000, 0.000000 +2.233333, 99.800627, 0.000000, 0.000000 +2.250000, 99.800627, 0.000000, 0.000000 +2.266667, 99.800627, 0.000000, 0.000000 +2.283333, 99.800627, 0.000000, 0.000000 +2.300000, 99.800627, 0.000000, 0.000000 +2.316667, 99.800627, 0.000000, 0.000000 +2.333333, 99.800627, 0.000000, 0.000000 +2.350000, 99.800627, 0.000000, 0.000000 +2.366667, 99.800627, 0.000000, 0.000000 +2.383333, 99.800627, 0.000000, 0.000000 +2.400000, 99.800627, 0.000000, 0.000000 +2.416667, 99.800627, 0.000000, 0.000000 +2.433333, 99.800627, 0.000000, 0.000000 +2.450000, 99.800627, 0.000000, 0.000000 +2.466667, 99.800627, 0.000000, 0.000000 +2.483333, 99.800627, 0.000000, 0.000000 +2.500000, 99.800627, 0.000000, 0.000000 +2.516667, 99.800627, 0.000000, 0.000000 +2.533333, 99.800627, 0.000000, 0.000000 +2.550000, 99.800627, 0.000000, 0.000000 +2.566667, 99.800627, 0.000000, 0.000000 +2.583333, 99.800627, 0.000000, 0.000000 +2.600000, 99.800627, 0.000000, 0.000000 +2.616667, 99.800627, 0.000000, 0.000000 +2.633333, 99.800627, 0.000000, 0.000000 +2.650000, 99.800627, 0.000000, 0.000000 +2.666667, 99.800627, 0.000000, 0.000000 +2.683333, 99.800627, 0.000000, 0.000000 +2.700000, 99.800627, 0.000000, 0.000000 +2.716667, 99.800627, 0.000000, 0.000000 +2.733333, 99.800627, 0.000000, 0.000000 +2.750000, 99.800627, 0.000000, 0.000000 +2.766667, 99.800627, 0.000000, 0.000000 +2.783333, 99.800627, 0.000000, 0.000000 +2.800000, 99.800627, 0.000000, 0.000000 +2.816667, 99.800627, 0.000000, 0.000000 +2.833333, 99.800627, 0.000000, 0.000000 +2.850000, 99.800627, 0.000000, 0.000000 +2.866667, 99.800627, 0.000000, 0.000000 +2.883333, 99.800627, 0.000000, 0.000000 +2.900000, 99.800627, 0.000000, 0.000000 +2.916667, 99.800627, 0.000000, 0.000000 +2.933333, 99.800627, 0.000000, 0.000000 +2.950000, 99.800627, 0.000000, 0.000000 +2.966667, 99.800627, 0.000000, 0.000000 +2.983333, 99.800627, 0.000000, 0.000000 +3.000000, 99.800627, 0.000000, 0.000000 +3.016667, 99.800627, 0.000000, 0.000000 +3.033333, 99.800627, 0.000000, 0.000000 +3.050000, 99.800627, 0.000000, 0.000000 +3.066667, 99.800627, 0.000000, 0.000000 +3.083333, 99.800627, 0.000000, 0.000000 +3.100000, 99.800627, 0.000000, 0.000000 +3.116667, 99.800627, 0.000000, 0.000000 +3.133333, 99.800627, 0.000000, 0.000000 +3.150000, 99.800627, 0.000000, 0.000000 +3.166667, 99.800627, 0.000000, 0.000000 +3.183333, 99.800627, 0.000000, 0.000000 +3.200000, 99.800627, 0.000000, 0.000000 +3.216667, 99.800627, 0.000000, 0.000000 +3.233333, 99.800627, 0.000000, 0.000000 +3.250000, 99.800627, 0.000000, 0.000000 +3.266667, 99.800627, 0.000000, 0.000000 +3.283333, 99.800627, 0.000000, 0.000000 +3.300000, 99.800627, 0.000000, 0.000000 +3.316667, 99.800627, 0.000000, 0.000000 +3.333333, 99.800627, 0.000000, 0.000000 +3.350000, 99.800627, 0.000000, 0.000000 +3.366667, 99.800627, 0.000000, 0.000000 +3.383333, 99.800627, 0.000000, 0.000000 +3.400000, 99.800627, 0.000000, 0.000000 +3.416667, 99.800627, 0.000000, 0.000000 +3.433333, 99.800627, 0.000000, 0.000000 +3.450000, 99.800627, 0.000000, 0.000000 +3.466667, 99.800627, 0.000000, 0.000000 +3.483333, 99.800627, 0.000000, 0.000000 +3.500000, 99.800627, 0.000000, 0.000000 +3.516667, 99.800627, 0.000000, 0.000000 +3.533333, 99.800627, 0.000000, 0.000000 +3.550000, 99.800627, 0.000000, 0.000000 +3.566667, 99.800627, 0.000000, 0.000000 +3.583333, 99.800627, 0.000000, 0.000000 +3.600000, 99.800627, 0.000000, 0.000000 +3.616667, 99.800627, 0.000000, 0.000000 +3.633333, 99.800627, 0.000000, 0.000000 +3.650000, 99.800627, 0.000000, 0.000000 +3.666667, 99.800627, 0.000000, 0.000000 +3.683333, 99.800627, 0.000000, 0.000000 +3.700000, 99.800627, 0.000000, 0.000000 +3.716667, 99.800627, 0.000000, 0.000000 +3.733333, 99.800627, 0.000000, 0.000000 +3.750000, 99.800627, 0.000000, 0.000000 +3.766667, 99.800627, 0.000000, 0.000000 +3.783333, 99.800627, 0.000000, 0.000000 +3.800000, 99.800627, 0.000000, 0.000000 +3.816667, 99.800627, 0.000000, 0.000000 +3.833333, 99.800627, 0.000000, 0.000000 +3.850000, 99.800627, 0.000000, 0.000000 +3.866667, 99.800627, 0.000000, 0.000000 +3.883333, 99.800627, 0.000000, 0.000000 +3.900000, 99.800627, 0.000000, 0.000000 +3.916667, 99.800627, 0.000000, 0.000000 +3.933333, 99.800627, 0.000000, 0.000000 +3.950000, 99.800627, 0.000000, 0.000000 +3.966667, 99.800627, 0.000000, 0.000000 +3.983333, 99.800627, 0.000000, 0.000000 +4.000000, 99.800627, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_3000kW_hd_600kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_3000kW_hd_600kWh.csv new file mode 100644 index 0000000..1e46f47 --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_3000kW_hd_600kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 1.156700, 416.412085, 421.875000 +1.016667, 5.790271, 1668.085395, 1710.015460 +1.033333, 11.269898, 1972.665834, 2028.194628 +1.050000, 16.883392, 2020.857700, 2078.712919 +1.066667, 22.555505, 2041.960948, 2100.850056 +1.083333, 28.285143, 2062.669599, 2122.582248 +1.100000, 34.072865, 2083.579679, 2144.534864 +1.116667, 39.919234, 2104.692868, 2166.709944 +1.133333, 45.824820, 2126.010954, 2189.109647 +1.150000, 51.790197, 2147.535740, 2211.736153 +1.166667, 57.815944, 2169.269036, 2234.591657 +1.183333, 63.902646, 2191.212668, 2257.678377 +1.200000, 69.986189, 2190.075491, 2256.481715 +1.216667, 75.306025, 1915.140908, 1967.955555 +1.233333, 79.671496, 1571.569557, 1609.584949 +1.250000, 83.186416, 1265.371402, 1292.206894 +1.266667, 86.016421, 1018.801612, 1037.987320 +1.283333, 88.297434, 821.164944, 835.078068 +1.300000, 90.137647, 662.476510, 672.703131 +1.316667, 91.623330, 534.845893, 542.457828 +1.333333, 92.823486, 432.056226, 437.787776 +1.350000, 93.817267, 357.760996, 362.257922 +1.366667, 94.683891, 311.984555, 315.772573 +1.383333, 95.442739, 273.185605, 276.403603 +1.400000, 96.107246, 239.222271, 241.964461 +1.416667, 96.689129, 209.477877, 211.821096 +1.433333, 97.198654, 183.429134, 185.436530 +1.450000, 97.644814, 160.617512, 162.341216 +1.466667, 98.035484, 140.641218, 142.124455 +1.483333, 98.377562, 123.148214, 124.426976 +1.500000, 98.677090, 107.830081, 108.934463 +1.516667, 98.939359, 94.416637, 95.371902 +1.533333, 99.169001, 82.671215, 83.498649 +1.550000, 99.370075, 72.386514, 73.104117 +1.566667, 99.546133, 63.380968, 64.004011 +1.583333, 99.700287, 55.495555, 56.037034 +1.600000, 99.800449, 36.058120, 36.403461 +1.616667, 99.800532, 0.030001, 0.030278 +1.633333, 99.800532, 0.000000, 0.000000 +1.650000, 99.800532, 0.000000, 0.000000 +1.666667, 99.800532, 0.000000, 0.000000 +1.683333, 99.800532, 0.000000, 0.000000 +1.700000, 99.800532, 0.000000, 0.000000 +1.716667, 99.800532, 0.000000, 0.000000 +1.733333, 99.800532, 0.000000, 0.000000 +1.750000, 99.800532, 0.000000, 0.000000 +1.766667, 99.800532, 0.000000, 0.000000 +1.783333, 99.800532, 0.000000, 0.000000 +1.800000, 99.800532, 0.000000, 0.000000 +1.816667, 99.800532, 0.000000, 0.000000 +1.833333, 99.800532, 0.000000, 0.000000 +1.850000, 99.800532, 0.000000, 0.000000 +1.866667, 99.800532, 0.000000, 0.000000 +1.883333, 99.800532, 0.000000, 0.000000 +1.900000, 99.800532, 0.000000, 0.000000 +1.916667, 99.800532, 0.000000, 0.000000 +1.933333, 99.800532, 0.000000, 0.000000 +1.950000, 99.800532, 0.000000, 0.000000 +1.966667, 99.800532, 0.000000, 0.000000 +1.983333, 99.800532, 0.000000, 0.000000 +2.000000, 99.800532, 0.000000, 0.000000 +2.016667, 99.800532, 0.000000, 0.000000 +2.033333, 99.800532, 0.000000, 0.000000 +2.050000, 99.800532, 0.000000, 0.000000 +2.066667, 99.800532, 0.000000, 0.000000 +2.083333, 99.800532, 0.000000, 0.000000 +2.100000, 99.800532, 0.000000, 0.000000 +2.116667, 99.800532, 0.000000, 0.000000 +2.133333, 99.800532, 0.000000, 0.000000 +2.150000, 99.800532, 0.000000, 0.000000 +2.166667, 99.800532, 0.000000, 0.000000 +2.183333, 99.800532, 0.000000, 0.000000 +2.200000, 99.800532, 0.000000, 0.000000 +2.216667, 99.800532, 0.000000, 0.000000 +2.233333, 99.800532, 0.000000, 0.000000 +2.250000, 99.800532, 0.000000, 0.000000 +2.266667, 99.800532, 0.000000, 0.000000 +2.283333, 99.800532, 0.000000, 0.000000 +2.300000, 99.800532, 0.000000, 0.000000 +2.316667, 99.800532, 0.000000, 0.000000 +2.333333, 99.800532, 0.000000, 0.000000 +2.350000, 99.800532, 0.000000, 0.000000 +2.366667, 99.800532, 0.000000, 0.000000 +2.383333, 99.800532, 0.000000, 0.000000 +2.400000, 99.800532, 0.000000, 0.000000 +2.416667, 99.800532, 0.000000, 0.000000 +2.433333, 99.800532, 0.000000, 0.000000 +2.450000, 99.800532, 0.000000, 0.000000 +2.466667, 99.800532, 0.000000, 0.000000 +2.483333, 99.800532, 0.000000, 0.000000 +2.500000, 99.800532, 0.000000, 0.000000 +2.516667, 99.800532, 0.000000, 0.000000 +2.533333, 99.800532, 0.000000, 0.000000 +2.550000, 99.800532, 0.000000, 0.000000 +2.566667, 99.800532, 0.000000, 0.000000 +2.583333, 99.800532, 0.000000, 0.000000 +2.600000, 99.800532, 0.000000, 0.000000 +2.616667, 99.800532, 0.000000, 0.000000 +2.633333, 99.800532, 0.000000, 0.000000 +2.650000, 99.800532, 0.000000, 0.000000 +2.666667, 99.800532, 0.000000, 0.000000 +2.683333, 99.800532, 0.000000, 0.000000 +2.700000, 99.800532, 0.000000, 0.000000 +2.716667, 99.800532, 0.000000, 0.000000 +2.733333, 99.800532, 0.000000, 0.000000 +2.750000, 99.800532, 0.000000, 0.000000 +2.766667, 99.800532, 0.000000, 0.000000 +2.783333, 99.800532, 0.000000, 0.000000 +2.800000, 99.800532, 0.000000, 0.000000 +2.816667, 99.800532, 0.000000, 0.000000 +2.833333, 99.800532, 0.000000, 0.000000 +2.850000, 99.800532, 0.000000, 0.000000 +2.866667, 99.800532, 0.000000, 0.000000 +2.883333, 99.800532, 0.000000, 0.000000 +2.900000, 99.800532, 0.000000, 0.000000 +2.916667, 99.800532, 0.000000, 0.000000 +2.933333, 99.800532, 0.000000, 0.000000 +2.950000, 99.800532, 0.000000, 0.000000 +2.966667, 99.800532, 0.000000, 0.000000 +2.983333, 99.800532, 0.000000, 0.000000 +3.000000, 99.800532, 0.000000, 0.000000 +3.016667, 99.800532, 0.000000, 0.000000 +3.033333, 99.800532, 0.000000, 0.000000 +3.050000, 99.800532, 0.000000, 0.000000 +3.066667, 99.800532, 0.000000, 0.000000 +3.083333, 99.800532, 0.000000, 0.000000 +3.100000, 99.800532, 0.000000, 0.000000 +3.116667, 99.800532, 0.000000, 0.000000 +3.133333, 99.800532, 0.000000, 0.000000 +3.150000, 99.800532, 0.000000, 0.000000 +3.166667, 99.800532, 0.000000, 0.000000 +3.183333, 99.800532, 0.000000, 0.000000 +3.200000, 99.800532, 0.000000, 0.000000 +3.216667, 99.800532, 0.000000, 0.000000 +3.233333, 99.800532, 0.000000, 0.000000 +3.250000, 99.800532, 0.000000, 0.000000 +3.266667, 99.800532, 0.000000, 0.000000 +3.283333, 99.800532, 0.000000, 0.000000 +3.300000, 99.800532, 0.000000, 0.000000 +3.316667, 99.800532, 0.000000, 0.000000 +3.333333, 99.800532, 0.000000, 0.000000 +3.350000, 99.800532, 0.000000, 0.000000 +3.366667, 99.800532, 0.000000, 0.000000 +3.383333, 99.800532, 0.000000, 0.000000 +3.400000, 99.800532, 0.000000, 0.000000 +3.416667, 99.800532, 0.000000, 0.000000 +3.433333, 99.800532, 0.000000, 0.000000 +3.450000, 99.800532, 0.000000, 0.000000 +3.466667, 99.800532, 0.000000, 0.000000 +3.483333, 99.800532, 0.000000, 0.000000 +3.500000, 99.800532, 0.000000, 0.000000 +3.516667, 99.800532, 0.000000, 0.000000 +3.533333, 99.800532, 0.000000, 0.000000 +3.550000, 99.800532, 0.000000, 0.000000 +3.566667, 99.800532, 0.000000, 0.000000 +3.583333, 99.800532, 0.000000, 0.000000 +3.600000, 99.800532, 0.000000, 0.000000 +3.616667, 99.800532, 0.000000, 0.000000 +3.633333, 99.800532, 0.000000, 0.000000 +3.650000, 99.800532, 0.000000, 0.000000 +3.666667, 99.800532, 0.000000, 0.000000 +3.683333, 99.800532, 0.000000, 0.000000 +3.700000, 99.800532, 0.000000, 0.000000 +3.716667, 99.800532, 0.000000, 0.000000 +3.733333, 99.800532, 0.000000, 0.000000 +3.750000, 99.800532, 0.000000, 0.000000 +3.766667, 99.800532, 0.000000, 0.000000 +3.783333, 99.800532, 0.000000, 0.000000 +3.800000, 99.800532, 0.000000, 0.000000 +3.816667, 99.800532, 0.000000, 0.000000 +3.833333, 99.800532, 0.000000, 0.000000 +3.850000, 99.800532, 0.000000, 0.000000 +3.866667, 99.800532, 0.000000, 0.000000 +3.883333, 99.800532, 0.000000, 0.000000 +3.900000, 99.800532, 0.000000, 0.000000 +3.916667, 99.800532, 0.000000, 0.000000 +3.933333, 99.800532, 0.000000, 0.000000 +3.950000, 99.800532, 0.000000, 0.000000 +3.966667, 99.800532, 0.000000, 0.000000 +3.983333, 99.800532, 0.000000, 0.000000 +4.000000, 99.800532, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_3000kW_hd_800kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_3000kW_hd_800kWh.csv new file mode 100644 index 0000000..e426388 --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_3000kW_hd_800kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.868358, 416.811772, 421.875000 +1.016667, 4.685193, 1832.080962, 1872.866829 +1.033333, 10.110109, 2603.959411, 2676.748471 +1.050000, 15.709107, 2687.519445, 2764.320775 +1.066667, 21.369174, 2716.831998, 2795.066503 +1.083333, 27.086644, 2744.385660, 2823.979532 +1.100000, 32.862077, 2772.207651, 2853.186128 +1.116667, 38.696035, 2800.299915, 2882.688697 +1.133333, 44.589087, 2828.664831, 2912.490112 +1.150000, 50.541805, 2857.304798, 2942.593270 +1.166667, 56.554768, 2886.222226, 2973.001095 +1.183333, 62.628559, 2915.419544, 3003.716537 +1.200000, 68.755983, 2941.163765, 3030.810436 +1.216667, 74.285944, 2654.381341, 2729.578532 +1.233333, 78.893598, 2211.673913, 2267.065118 +1.250000, 82.593093, 1775.757367, 1814.560699 +1.266667, 85.559466, 1423.858877, 1451.343524 +1.283333, 87.942329, 1143.774614, 1163.553279 +1.300000, 89.859622, 920.300303, 934.748732 +1.316667, 91.404310, 741.450629, 752.151364 +1.333333, 92.650075, 597.967034, 605.991662 +1.350000, 93.671043, 490.064788, 496.269612 +1.366667, 94.556654, 425.092912, 430.281399 +1.383333, 95.331811, 372.075529, 376.478782 +1.400000, 96.010485, 325.763403, 329.513087 +1.416667, 96.604687, 285.217259, 288.419470 +1.433333, 97.124934, 249.718520, 252.460330 +1.450000, 97.580432, 218.638681, 220.991880 +1.466667, 97.979239, 191.427534, 193.451581 +1.483333, 98.328413, 167.603410, 169.347762 +1.500000, 98.634131, 146.744630, 148.250602 +1.516667, 98.901802, 128.482036, 129.784275 +1.533333, 99.136161, 112.492438, 113.620115 +1.550000, 99.341354, 98.492893, 99.470654 +1.566667, 99.521012, 86.235688, 87.084430 +1.583333, 99.678312, 75.503950, 76.241444 +1.600000, 99.800263, 58.536421, 59.101292 +1.616667, 99.800365, 0.048900, 0.049352 +1.633333, 99.800365, 0.000000, 0.000000 +1.650000, 99.800365, 0.000000, 0.000000 +1.666667, 99.800365, 0.000000, 0.000000 +1.683333, 99.800365, 0.000000, 0.000000 +1.700000, 99.800365, 0.000000, 0.000000 +1.716667, 99.800365, 0.000000, 0.000000 +1.733333, 99.800365, 0.000000, 0.000000 +1.750000, 99.800365, 0.000000, 0.000000 +1.766667, 99.800365, 0.000000, 0.000000 +1.783333, 99.800365, 0.000000, 0.000000 +1.800000, 99.800365, 0.000000, 0.000000 +1.816667, 99.800365, 0.000000, 0.000000 +1.833333, 99.800365, 0.000000, 0.000000 +1.850000, 99.800365, 0.000000, 0.000000 +1.866667, 99.800365, 0.000000, 0.000000 +1.883333, 99.800365, 0.000000, 0.000000 +1.900000, 99.800365, 0.000000, 0.000000 +1.916667, 99.800365, 0.000000, 0.000000 +1.933333, 99.800365, 0.000000, 0.000000 +1.950000, 99.800365, 0.000000, 0.000000 +1.966667, 99.800365, 0.000000, 0.000000 +1.983333, 99.800365, 0.000000, 0.000000 +2.000000, 99.800365, 0.000000, 0.000000 +2.016667, 99.800365, 0.000000, 0.000000 +2.033333, 99.800365, 0.000000, 0.000000 +2.050000, 99.800365, 0.000000, 0.000000 +2.066667, 99.800365, 0.000000, 0.000000 +2.083333, 99.800365, 0.000000, 0.000000 +2.100000, 99.800365, 0.000000, 0.000000 +2.116667, 99.800365, 0.000000, 0.000000 +2.133333, 99.800365, 0.000000, 0.000000 +2.150000, 99.800365, 0.000000, 0.000000 +2.166667, 99.800365, 0.000000, 0.000000 +2.183333, 99.800365, 0.000000, 0.000000 +2.200000, 99.800365, 0.000000, 0.000000 +2.216667, 99.800365, 0.000000, 0.000000 +2.233333, 99.800365, 0.000000, 0.000000 +2.250000, 99.800365, 0.000000, 0.000000 +2.266667, 99.800365, 0.000000, 0.000000 +2.283333, 99.800365, 0.000000, 0.000000 +2.300000, 99.800365, 0.000000, 0.000000 +2.316667, 99.800365, 0.000000, 0.000000 +2.333333, 99.800365, 0.000000, 0.000000 +2.350000, 99.800365, 0.000000, 0.000000 +2.366667, 99.800365, 0.000000, 0.000000 +2.383333, 99.800365, 0.000000, 0.000000 +2.400000, 99.800365, 0.000000, 0.000000 +2.416667, 99.800365, 0.000000, 0.000000 +2.433333, 99.800365, 0.000000, 0.000000 +2.450000, 99.800365, 0.000000, 0.000000 +2.466667, 99.800365, 0.000000, 0.000000 +2.483333, 99.800365, 0.000000, 0.000000 +2.500000, 99.800365, 0.000000, 0.000000 +2.516667, 99.800365, 0.000000, 0.000000 +2.533333, 99.800365, 0.000000, 0.000000 +2.550000, 99.800365, 0.000000, 0.000000 +2.566667, 99.800365, 0.000000, 0.000000 +2.583333, 99.800365, 0.000000, 0.000000 +2.600000, 99.800365, 0.000000, 0.000000 +2.616667, 99.800365, 0.000000, 0.000000 +2.633333, 99.800365, 0.000000, 0.000000 +2.650000, 99.800365, 0.000000, 0.000000 +2.666667, 99.800365, 0.000000, 0.000000 +2.683333, 99.800365, 0.000000, 0.000000 +2.700000, 99.800365, 0.000000, 0.000000 +2.716667, 99.800365, 0.000000, 0.000000 +2.733333, 99.800365, 0.000000, 0.000000 +2.750000, 99.800365, 0.000000, 0.000000 +2.766667, 99.800365, 0.000000, 0.000000 +2.783333, 99.800365, 0.000000, 0.000000 +2.800000, 99.800365, 0.000000, 0.000000 +2.816667, 99.800365, 0.000000, 0.000000 +2.833333, 99.800365, 0.000000, 0.000000 +2.850000, 99.800365, 0.000000, 0.000000 +2.866667, 99.800365, 0.000000, 0.000000 +2.883333, 99.800365, 0.000000, 0.000000 +2.900000, 99.800365, 0.000000, 0.000000 +2.916667, 99.800365, 0.000000, 0.000000 +2.933333, 99.800365, 0.000000, 0.000000 +2.950000, 99.800365, 0.000000, 0.000000 +2.966667, 99.800365, 0.000000, 0.000000 +2.983333, 99.800365, 0.000000, 0.000000 +3.000000, 99.800365, 0.000000, 0.000000 +3.016667, 99.800365, 0.000000, 0.000000 +3.033333, 99.800365, 0.000000, 0.000000 +3.050000, 99.800365, 0.000000, 0.000000 +3.066667, 99.800365, 0.000000, 0.000000 +3.083333, 99.800365, 0.000000, 0.000000 +3.100000, 99.800365, 0.000000, 0.000000 +3.116667, 99.800365, 0.000000, 0.000000 +3.133333, 99.800365, 0.000000, 0.000000 +3.150000, 99.800365, 0.000000, 0.000000 +3.166667, 99.800365, 0.000000, 0.000000 +3.183333, 99.800365, 0.000000, 0.000000 +3.200000, 99.800365, 0.000000, 0.000000 +3.216667, 99.800365, 0.000000, 0.000000 +3.233333, 99.800365, 0.000000, 0.000000 +3.250000, 99.800365, 0.000000, 0.000000 +3.266667, 99.800365, 0.000000, 0.000000 +3.283333, 99.800365, 0.000000, 0.000000 +3.300000, 99.800365, 0.000000, 0.000000 +3.316667, 99.800365, 0.000000, 0.000000 +3.333333, 99.800365, 0.000000, 0.000000 +3.350000, 99.800365, 0.000000, 0.000000 +3.366667, 99.800365, 0.000000, 0.000000 +3.383333, 99.800365, 0.000000, 0.000000 +3.400000, 99.800365, 0.000000, 0.000000 +3.416667, 99.800365, 0.000000, 0.000000 +3.433333, 99.800365, 0.000000, 0.000000 +3.450000, 99.800365, 0.000000, 0.000000 +3.466667, 99.800365, 0.000000, 0.000000 +3.483333, 99.800365, 0.000000, 0.000000 +3.500000, 99.800365, 0.000000, 0.000000 +3.516667, 99.800365, 0.000000, 0.000000 +3.533333, 99.800365, 0.000000, 0.000000 +3.550000, 99.800365, 0.000000, 0.000000 +3.566667, 99.800365, 0.000000, 0.000000 +3.583333, 99.800365, 0.000000, 0.000000 +3.600000, 99.800365, 0.000000, 0.000000 +3.616667, 99.800365, 0.000000, 0.000000 +3.633333, 99.800365, 0.000000, 0.000000 +3.650000, 99.800365, 0.000000, 0.000000 +3.666667, 99.800365, 0.000000, 0.000000 +3.683333, 99.800365, 0.000000, 0.000000 +3.700000, 99.800365, 0.000000, 0.000000 +3.716667, 99.800365, 0.000000, 0.000000 +3.733333, 99.800365, 0.000000, 0.000000 +3.750000, 99.800365, 0.000000, 0.000000 +3.766667, 99.800365, 0.000000, 0.000000 +3.783333, 99.800365, 0.000000, 0.000000 +3.800000, 99.800365, 0.000000, 0.000000 +3.816667, 99.800365, 0.000000, 0.000000 +3.833333, 99.800365, 0.000000, 0.000000 +3.850000, 99.800365, 0.000000, 0.000000 +3.866667, 99.800365, 0.000000, 0.000000 +3.883333, 99.800365, 0.000000, 0.000000 +3.900000, 99.800365, 0.000000, 0.000000 +3.916667, 99.800365, 0.000000, 0.000000 +3.933333, 99.800365, 0.000000, 0.000000 +3.950000, 99.800365, 0.000000, 0.000000 +3.966667, 99.800365, 0.000000, 0.000000 +3.983333, 99.800365, 0.000000, 0.000000 +4.000000, 99.800365, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_3000kW_ld_100kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_3000kW_ld_100kWh.csv new file mode 100644 index 0000000..863092c --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_3000kW_ld_100kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 3.277102, 196.626130, 200.633388 +1.016667, 8.631848, 321.284722, 330.185018 +1.033333, 14.206680, 334.489924, 344.019657 +1.050000, 19.846382, 338.382162, 348.101550 +1.066667, 25.543273, 341.813443, 351.701589 +1.083333, 31.297878, 345.276294, 355.336239 +1.100000, 37.110757, 348.772774, 359.007702 +1.116667, 42.982477, 352.303177, 362.716336 +1.133333, 48.913607, 355.867803, 366.462501 +1.150000, 54.904723, 359.466952, 370.246561 +1.166667, 60.956405, 363.100925, 374.068883 +1.183333, 67.069239, 366.770028, 377.929837 +1.200000, 72.814788, 344.732917, 354.765804 +1.216667, 77.538831, 283.442633, 290.658256 +1.233333, 81.381165, 230.540014, 235.692882 +1.250000, 84.503011, 187.310775, 191.027267 +1.266667, 87.037904, 152.093560, 154.803066 +1.283333, 89.095184, 123.436820, 125.433725 +1.300000, 90.764180, 100.139760, 101.627269 +1.316667, 92.117744, 81.213813, 82.333301 +1.333333, 93.216936, 65.951549, 66.803970 +1.350000, 94.155659, 56.323391, 57.020913 +1.366667, 94.978024, 49.341851, 49.933603 +1.383333, 95.698573, 43.232957, 43.736662 +1.400000, 96.329867, 37.877628, 38.307599 +1.416667, 96.882926, 33.183545, 33.551532 +1.433333, 97.367418, 29.069557, 29.385251 +1.450000, 97.791824, 25.464357, 25.735782 +1.466667, 98.163580, 22.305314, 22.539141 +1.483333, 98.489204, 19.537437, 19.739239 +1.500000, 98.774411, 17.112463, 17.286909 +1.516667, 99.024212, 14.988042, 15.139061 +1.533333, 99.242996, 13.127025, 13.257934 +1.550000, 99.434610, 11.496829, 11.610441 +1.566667, 99.602424, 10.068886, 10.167588 +1.583333, 99.749393, 8.818149, 8.903978 +1.600000, 99.800348, 3.057276, 3.086056 +1.616667, 99.800390, 0.002531, 0.002555 +1.633333, 99.800390, 0.000000, 0.000000 +1.650000, 99.800390, 0.000000, 0.000000 +1.666667, 99.800390, 0.000000, 0.000000 +1.683333, 99.800390, 0.000000, 0.000000 +1.700000, 99.800390, 0.000000, 0.000000 +1.716667, 99.800390, 0.000000, 0.000000 +1.733333, 99.800390, 0.000000, 0.000000 +1.750000, 99.800390, 0.000000, 0.000000 +1.766667, 99.800390, 0.000000, 0.000000 +1.783333, 99.800390, 0.000000, 0.000000 +1.800000, 99.800390, 0.000000, 0.000000 +1.816667, 99.800390, 0.000000, 0.000000 +1.833333, 99.800390, 0.000000, 0.000000 +1.850000, 99.800390, 0.000000, 0.000000 +1.866667, 99.800390, 0.000000, 0.000000 +1.883333, 99.800390, 0.000000, 0.000000 +1.900000, 99.800390, 0.000000, 0.000000 +1.916667, 99.800390, 0.000000, 0.000000 +1.933333, 99.800390, 0.000000, 0.000000 +1.950000, 99.800390, 0.000000, 0.000000 +1.966667, 99.800390, 0.000000, 0.000000 +1.983333, 99.800390, 0.000000, 0.000000 +2.000000, 99.800390, 0.000000, 0.000000 +2.016667, 99.800390, 0.000000, 0.000000 +2.033333, 99.800390, 0.000000, 0.000000 +2.050000, 99.800390, 0.000000, 0.000000 +2.066667, 99.800390, 0.000000, 0.000000 +2.083333, 99.800390, 0.000000, 0.000000 +2.100000, 99.800390, 0.000000, 0.000000 +2.116667, 99.800390, 0.000000, 0.000000 +2.133333, 99.800390, 0.000000, 0.000000 +2.150000, 99.800390, 0.000000, 0.000000 +2.166667, 99.800390, 0.000000, 0.000000 +2.183333, 99.800390, 0.000000, 0.000000 +2.200000, 99.800390, 0.000000, 0.000000 +2.216667, 99.800390, 0.000000, 0.000000 +2.233333, 99.800390, 0.000000, 0.000000 +2.250000, 99.800390, 0.000000, 0.000000 +2.266667, 99.800390, 0.000000, 0.000000 +2.283333, 99.800390, 0.000000, 0.000000 +2.300000, 99.800390, 0.000000, 0.000000 +2.316667, 99.800390, 0.000000, 0.000000 +2.333333, 99.800390, 0.000000, 0.000000 +2.350000, 99.800390, 0.000000, 0.000000 +2.366667, 99.800390, 0.000000, 0.000000 +2.383333, 99.800390, 0.000000, 0.000000 +2.400000, 99.800390, 0.000000, 0.000000 +2.416667, 99.800390, 0.000000, 0.000000 +2.433333, 99.800390, 0.000000, 0.000000 +2.450000, 99.800390, 0.000000, 0.000000 +2.466667, 99.800390, 0.000000, 0.000000 +2.483333, 99.800390, 0.000000, 0.000000 +2.500000, 99.800390, 0.000000, 0.000000 +2.516667, 99.800390, 0.000000, 0.000000 +2.533333, 99.800390, 0.000000, 0.000000 +2.550000, 99.800390, 0.000000, 0.000000 +2.566667, 99.800390, 0.000000, 0.000000 +2.583333, 99.800390, 0.000000, 0.000000 +2.600000, 99.800390, 0.000000, 0.000000 +2.616667, 99.800390, 0.000000, 0.000000 +2.633333, 99.800390, 0.000000, 0.000000 +2.650000, 99.800390, 0.000000, 0.000000 +2.666667, 99.800390, 0.000000, 0.000000 +2.683333, 99.800390, 0.000000, 0.000000 +2.700000, 99.800390, 0.000000, 0.000000 +2.716667, 99.800390, 0.000000, 0.000000 +2.733333, 99.800390, 0.000000, 0.000000 +2.750000, 99.800390, 0.000000, 0.000000 +2.766667, 99.800390, 0.000000, 0.000000 +2.783333, 99.800390, 0.000000, 0.000000 +2.800000, 99.800390, 0.000000, 0.000000 +2.816667, 99.800390, 0.000000, 0.000000 +2.833333, 99.800390, 0.000000, 0.000000 +2.850000, 99.800390, 0.000000, 0.000000 +2.866667, 99.800390, 0.000000, 0.000000 +2.883333, 99.800390, 0.000000, 0.000000 +2.900000, 99.800390, 0.000000, 0.000000 +2.916667, 99.800390, 0.000000, 0.000000 +2.933333, 99.800390, 0.000000, 0.000000 +2.950000, 99.800390, 0.000000, 0.000000 +2.966667, 99.800390, 0.000000, 0.000000 +2.983333, 99.800390, 0.000000, 0.000000 +3.000000, 99.800390, 0.000000, 0.000000 +3.016667, 99.800390, 0.000000, 0.000000 +3.033333, 99.800390, 0.000000, 0.000000 +3.050000, 99.800390, 0.000000, 0.000000 +3.066667, 99.800390, 0.000000, 0.000000 +3.083333, 99.800390, 0.000000, 0.000000 +3.100000, 99.800390, 0.000000, 0.000000 +3.116667, 99.800390, 0.000000, 0.000000 +3.133333, 99.800390, 0.000000, 0.000000 +3.150000, 99.800390, 0.000000, 0.000000 +3.166667, 99.800390, 0.000000, 0.000000 +3.183333, 99.800390, 0.000000, 0.000000 +3.200000, 99.800390, 0.000000, 0.000000 +3.216667, 99.800390, 0.000000, 0.000000 +3.233333, 99.800390, 0.000000, 0.000000 +3.250000, 99.800390, 0.000000, 0.000000 +3.266667, 99.800390, 0.000000, 0.000000 +3.283333, 99.800390, 0.000000, 0.000000 +3.300000, 99.800390, 0.000000, 0.000000 +3.316667, 99.800390, 0.000000, 0.000000 +3.333333, 99.800390, 0.000000, 0.000000 +3.350000, 99.800390, 0.000000, 0.000000 +3.366667, 99.800390, 0.000000, 0.000000 +3.383333, 99.800390, 0.000000, 0.000000 +3.400000, 99.800390, 0.000000, 0.000000 +3.416667, 99.800390, 0.000000, 0.000000 +3.433333, 99.800390, 0.000000, 0.000000 +3.450000, 99.800390, 0.000000, 0.000000 +3.466667, 99.800390, 0.000000, 0.000000 +3.483333, 99.800390, 0.000000, 0.000000 +3.500000, 99.800390, 0.000000, 0.000000 +3.516667, 99.800390, 0.000000, 0.000000 +3.533333, 99.800390, 0.000000, 0.000000 +3.550000, 99.800390, 0.000000, 0.000000 +3.566667, 99.800390, 0.000000, 0.000000 +3.583333, 99.800390, 0.000000, 0.000000 +3.600000, 99.800390, 0.000000, 0.000000 +3.616667, 99.800390, 0.000000, 0.000000 +3.633333, 99.800390, 0.000000, 0.000000 +3.650000, 99.800390, 0.000000, 0.000000 +3.666667, 99.800390, 0.000000, 0.000000 +3.683333, 99.800390, 0.000000, 0.000000 +3.700000, 99.800390, 0.000000, 0.000000 +3.716667, 99.800390, 0.000000, 0.000000 +3.733333, 99.800390, 0.000000, 0.000000 +3.750000, 99.800390, 0.000000, 0.000000 +3.766667, 99.800390, 0.000000, 0.000000 +3.783333, 99.800390, 0.000000, 0.000000 +3.800000, 99.800390, 0.000000, 0.000000 +3.816667, 99.800390, 0.000000, 0.000000 +3.833333, 99.800390, 0.000000, 0.000000 +3.850000, 99.800390, 0.000000, 0.000000 +3.866667, 99.800390, 0.000000, 0.000000 +3.883333, 99.800390, 0.000000, 0.000000 +3.900000, 99.800390, 0.000000, 0.000000 +3.916667, 99.800390, 0.000000, 0.000000 +3.933333, 99.800390, 0.000000, 0.000000 +3.950000, 99.800390, 0.000000, 0.000000 +3.966667, 99.800390, 0.000000, 0.000000 +3.983333, 99.800390, 0.000000, 0.000000 +4.000000, 99.800390, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_3000kW_ld_50kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_3000kW_ld_50kWh.csv new file mode 100644 index 0000000..cb0fbc1 --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_3000kW_ld_50kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 3.539523, 106.185693, 108.446743 +1.016667, 8.914655, 161.253967, 165.732814 +1.033333, 14.501086, 167.592915, 172.374666 +1.050000, 20.149390, 169.449135, 174.321474 +1.066667, 25.855008, 171.168530, 176.125544 +1.083333, 31.618483, 172.904264, 177.947505 +1.100000, 37.440379, 174.656869, 179.787938 +1.116667, 43.321262, 176.426494, 181.647022 +1.133333, 49.261705, 178.213288, 183.524938 +1.150000, 55.262285, 180.017402, 185.421868 +1.166667, 61.323585, 181.838988, 187.337997 +1.183333, 67.446191, 183.678199, 189.273511 +1.200000, 73.135726, 170.686050, 175.619229 +1.216667, 77.793213, 139.724612, 143.248650 +1.233333, 81.583485, 113.708137, 116.228943 +1.250000, 84.664902, 92.442512, 94.263740 +1.266667, 87.168127, 75.096745, 76.426397 +1.283333, 89.200400, 60.968188, 61.949295 +1.300000, 90.849504, 49.473140, 50.204685 +1.316667, 92.187146, 40.129247, 40.680244 +1.333333, 93.274607, 32.623833, 33.044204 +1.350000, 94.206790, 27.965501, 28.311217 +1.366667, 95.023453, 24.499894, 24.793249 +1.383333, 95.738941, 21.464635, 21.714354 +1.400000, 96.365739, 18.803942, 19.017113 +1.416667, 96.914804, 16.471933, 16.654378 +1.433333, 97.395746, 14.428269, 14.584787 +1.450000, 97.816996, 12.637497, 12.772067 +1.466667, 98.185945, 11.068479, 11.184406 +1.483333, 98.509074, 9.693873, 9.793920 +1.500000, 98.792064, 8.489682, 8.576163 +1.516667, 99.039892, 7.434848, 7.509712 +1.533333, 99.256922, 6.510900, 6.575792 +1.550000, 99.446977, 5.701638, 5.757952 +1.566667, 99.613405, 4.992859, 5.041779 +1.583333, 99.759142, 4.372110, 4.414647 +1.600000, 99.800286, 1.234310, 1.245889 +1.616667, 99.800320, 0.001022, 0.001031 +1.633333, 99.800320, 0.000000, 0.000000 +1.650000, 99.800320, 0.000000, 0.000000 +1.666667, 99.800320, 0.000000, 0.000000 +1.683333, 99.800320, 0.000000, 0.000000 +1.700000, 99.800320, 0.000000, 0.000000 +1.716667, 99.800320, 0.000000, 0.000000 +1.733333, 99.800320, 0.000000, 0.000000 +1.750000, 99.800320, 0.000000, 0.000000 +1.766667, 99.800320, 0.000000, 0.000000 +1.783333, 99.800320, 0.000000, 0.000000 +1.800000, 99.800320, 0.000000, 0.000000 +1.816667, 99.800320, 0.000000, 0.000000 +1.833333, 99.800320, 0.000000, 0.000000 +1.850000, 99.800320, 0.000000, 0.000000 +1.866667, 99.800320, 0.000000, 0.000000 +1.883333, 99.800320, 0.000000, 0.000000 +1.900000, 99.800320, 0.000000, 0.000000 +1.916667, 99.800320, 0.000000, 0.000000 +1.933333, 99.800320, 0.000000, 0.000000 +1.950000, 99.800320, 0.000000, 0.000000 +1.966667, 99.800320, 0.000000, 0.000000 +1.983333, 99.800320, 0.000000, 0.000000 +2.000000, 99.800320, 0.000000, 0.000000 +2.016667, 99.800320, 0.000000, 0.000000 +2.033333, 99.800320, 0.000000, 0.000000 +2.050000, 99.800320, 0.000000, 0.000000 +2.066667, 99.800320, 0.000000, 0.000000 +2.083333, 99.800320, 0.000000, 0.000000 +2.100000, 99.800320, 0.000000, 0.000000 +2.116667, 99.800320, 0.000000, 0.000000 +2.133333, 99.800320, 0.000000, 0.000000 +2.150000, 99.800320, 0.000000, 0.000000 +2.166667, 99.800320, 0.000000, 0.000000 +2.183333, 99.800320, 0.000000, 0.000000 +2.200000, 99.800320, 0.000000, 0.000000 +2.216667, 99.800320, 0.000000, 0.000000 +2.233333, 99.800320, 0.000000, 0.000000 +2.250000, 99.800320, 0.000000, 0.000000 +2.266667, 99.800320, 0.000000, 0.000000 +2.283333, 99.800320, 0.000000, 0.000000 +2.300000, 99.800320, 0.000000, 0.000000 +2.316667, 99.800320, 0.000000, 0.000000 +2.333333, 99.800320, 0.000000, 0.000000 +2.350000, 99.800320, 0.000000, 0.000000 +2.366667, 99.800320, 0.000000, 0.000000 +2.383333, 99.800320, 0.000000, 0.000000 +2.400000, 99.800320, 0.000000, 0.000000 +2.416667, 99.800320, 0.000000, 0.000000 +2.433333, 99.800320, 0.000000, 0.000000 +2.450000, 99.800320, 0.000000, 0.000000 +2.466667, 99.800320, 0.000000, 0.000000 +2.483333, 99.800320, 0.000000, 0.000000 +2.500000, 99.800320, 0.000000, 0.000000 +2.516667, 99.800320, 0.000000, 0.000000 +2.533333, 99.800320, 0.000000, 0.000000 +2.550000, 99.800320, 0.000000, 0.000000 +2.566667, 99.800320, 0.000000, 0.000000 +2.583333, 99.800320, 0.000000, 0.000000 +2.600000, 99.800320, 0.000000, 0.000000 +2.616667, 99.800320, 0.000000, 0.000000 +2.633333, 99.800320, 0.000000, 0.000000 +2.650000, 99.800320, 0.000000, 0.000000 +2.666667, 99.800320, 0.000000, 0.000000 +2.683333, 99.800320, 0.000000, 0.000000 +2.700000, 99.800320, 0.000000, 0.000000 +2.716667, 99.800320, 0.000000, 0.000000 +2.733333, 99.800320, 0.000000, 0.000000 +2.750000, 99.800320, 0.000000, 0.000000 +2.766667, 99.800320, 0.000000, 0.000000 +2.783333, 99.800320, 0.000000, 0.000000 +2.800000, 99.800320, 0.000000, 0.000000 +2.816667, 99.800320, 0.000000, 0.000000 +2.833333, 99.800320, 0.000000, 0.000000 +2.850000, 99.800320, 0.000000, 0.000000 +2.866667, 99.800320, 0.000000, 0.000000 +2.883333, 99.800320, 0.000000, 0.000000 +2.900000, 99.800320, 0.000000, 0.000000 +2.916667, 99.800320, 0.000000, 0.000000 +2.933333, 99.800320, 0.000000, 0.000000 +2.950000, 99.800320, 0.000000, 0.000000 +2.966667, 99.800320, 0.000000, 0.000000 +2.983333, 99.800320, 0.000000, 0.000000 +3.000000, 99.800320, 0.000000, 0.000000 +3.016667, 99.800320, 0.000000, 0.000000 +3.033333, 99.800320, 0.000000, 0.000000 +3.050000, 99.800320, 0.000000, 0.000000 +3.066667, 99.800320, 0.000000, 0.000000 +3.083333, 99.800320, 0.000000, 0.000000 +3.100000, 99.800320, 0.000000, 0.000000 +3.116667, 99.800320, 0.000000, 0.000000 +3.133333, 99.800320, 0.000000, 0.000000 +3.150000, 99.800320, 0.000000, 0.000000 +3.166667, 99.800320, 0.000000, 0.000000 +3.183333, 99.800320, 0.000000, 0.000000 +3.200000, 99.800320, 0.000000, 0.000000 +3.216667, 99.800320, 0.000000, 0.000000 +3.233333, 99.800320, 0.000000, 0.000000 +3.250000, 99.800320, 0.000000, 0.000000 +3.266667, 99.800320, 0.000000, 0.000000 +3.283333, 99.800320, 0.000000, 0.000000 +3.300000, 99.800320, 0.000000, 0.000000 +3.316667, 99.800320, 0.000000, 0.000000 +3.333333, 99.800320, 0.000000, 0.000000 +3.350000, 99.800320, 0.000000, 0.000000 +3.366667, 99.800320, 0.000000, 0.000000 +3.383333, 99.800320, 0.000000, 0.000000 +3.400000, 99.800320, 0.000000, 0.000000 +3.416667, 99.800320, 0.000000, 0.000000 +3.433333, 99.800320, 0.000000, 0.000000 +3.450000, 99.800320, 0.000000, 0.000000 +3.466667, 99.800320, 0.000000, 0.000000 +3.483333, 99.800320, 0.000000, 0.000000 +3.500000, 99.800320, 0.000000, 0.000000 +3.516667, 99.800320, 0.000000, 0.000000 +3.533333, 99.800320, 0.000000, 0.000000 +3.550000, 99.800320, 0.000000, 0.000000 +3.566667, 99.800320, 0.000000, 0.000000 +3.583333, 99.800320, 0.000000, 0.000000 +3.600000, 99.800320, 0.000000, 0.000000 +3.616667, 99.800320, 0.000000, 0.000000 +3.633333, 99.800320, 0.000000, 0.000000 +3.650000, 99.800320, 0.000000, 0.000000 +3.666667, 99.800320, 0.000000, 0.000000 +3.683333, 99.800320, 0.000000, 0.000000 +3.700000, 99.800320, 0.000000, 0.000000 +3.716667, 99.800320, 0.000000, 0.000000 +3.733333, 99.800320, 0.000000, 0.000000 +3.750000, 99.800320, 0.000000, 0.000000 +3.766667, 99.800320, 0.000000, 0.000000 +3.783333, 99.800320, 0.000000, 0.000000 +3.800000, 99.800320, 0.000000, 0.000000 +3.816667, 99.800320, 0.000000, 0.000000 +3.833333, 99.800320, 0.000000, 0.000000 +3.850000, 99.800320, 0.000000, 0.000000 +3.866667, 99.800320, 0.000000, 0.000000 +3.883333, 99.800320, 0.000000, 0.000000 +3.900000, 99.800320, 0.000000, 0.000000 +3.916667, 99.800320, 0.000000, 0.000000 +3.933333, 99.800320, 0.000000, 0.000000 +3.950000, 99.800320, 0.000000, 0.000000 +3.966667, 99.800320, 0.000000, 0.000000 +3.983333, 99.800320, 0.000000, 0.000000 +4.000000, 99.800320, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_3000kW_md_200kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_3000kW_md_200kWh.csv new file mode 100644 index 0000000..5cd51b9 --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_3000kW_md_200kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 2.759483, 331.137985, 337.293266 +1.016667, 8.089708, 639.626963, 657.289974 +1.033333, 13.656356, 667.997727, 687.009603 +1.050000, 19.295904, 676.745749, 696.183616 +1.066667, 24.992761, 683.622936, 703.399035 +1.083333, 30.747390, 690.555399, 710.675428 +1.100000, 36.560350, 697.555247, 718.025591 +1.116667, 42.432209, 704.623075, 725.450240 +1.133333, 48.363538, 711.759481, 732.950099 +1.150000, 54.354914, 718.965068, 740.525896 +1.166667, 60.406917, 726.240442, 748.178367 +1.183333, 66.520136, 733.586213, 755.908255 +1.200000, 72.351575, 699.772703, 720.354660 +1.216667, 77.187822, 580.349622, 595.354589 +1.233333, 81.116315, 471.419228, 482.098346 +1.250000, 84.301961, 382.277462, 389.946932 +1.266667, 86.884394, 309.892004, 315.463327 +1.283333, 88.977358, 251.155634, 255.249345 +1.300000, 90.673322, 203.515741, 206.557489 +1.316667, 92.047398, 164.889139, 167.173493 +1.333333, 93.161480, 133.689774, 135.424423 +1.350000, 94.108541, 113.647274, 115.057899 +1.366667, 94.937791, 99.509997, 100.705713 +1.383333, 95.664215, 87.170931, 88.188275 +1.400000, 96.300525, 76.357153, 77.225211 +1.416667, 96.857868, 66.881169, 67.623804 +1.433333, 97.346020, 58.578338, 59.215213 +1.450000, 97.773554, 51.304083, 51.851469 +1.466667, 98.147983, 44.931485, 45.402906 +1.483333, 98.475893, 39.349172, 39.755909 +1.500000, 98.763055, 34.459435, 34.810942 +1.516667, 99.014527, 30.176575, 30.480801 +1.533333, 99.234739, 26.425447, 26.689102 +1.550000, 99.427573, 23.140168, 23.368933 +1.566667, 99.596432, 20.262987, 20.461689 +1.583333, 99.744292, 17.743289, 17.916041 +1.600000, 99.800496, 6.744465, 6.808072 +1.616667, 99.800543, 0.005574, 0.005626 +1.633333, 99.800543, 0.000000, 0.000000 +1.650000, 99.800543, 0.000000, 0.000000 +1.666667, 99.800543, 0.000000, 0.000000 +1.683333, 99.800543, 0.000000, 0.000000 +1.700000, 99.800543, 0.000000, 0.000000 +1.716667, 99.800543, 0.000000, 0.000000 +1.733333, 99.800543, 0.000000, 0.000000 +1.750000, 99.800543, 0.000000, 0.000000 +1.766667, 99.800543, 0.000000, 0.000000 +1.783333, 99.800543, 0.000000, 0.000000 +1.800000, 99.800543, 0.000000, 0.000000 +1.816667, 99.800543, 0.000000, 0.000000 +1.833333, 99.800543, 0.000000, 0.000000 +1.850000, 99.800543, 0.000000, 0.000000 +1.866667, 99.800543, 0.000000, 0.000000 +1.883333, 99.800543, 0.000000, 0.000000 +1.900000, 99.800543, 0.000000, 0.000000 +1.916667, 99.800543, 0.000000, 0.000000 +1.933333, 99.800543, 0.000000, 0.000000 +1.950000, 99.800543, 0.000000, 0.000000 +1.966667, 99.800543, 0.000000, 0.000000 +1.983333, 99.800543, 0.000000, 0.000000 +2.000000, 99.800543, 0.000000, 0.000000 +2.016667, 99.800543, 0.000000, 0.000000 +2.033333, 99.800543, 0.000000, 0.000000 +2.050000, 99.800543, 0.000000, 0.000000 +2.066667, 99.800543, 0.000000, 0.000000 +2.083333, 99.800543, 0.000000, 0.000000 +2.100000, 99.800543, 0.000000, 0.000000 +2.116667, 99.800543, 0.000000, 0.000000 +2.133333, 99.800543, 0.000000, 0.000000 +2.150000, 99.800543, 0.000000, 0.000000 +2.166667, 99.800543, 0.000000, 0.000000 +2.183333, 99.800543, 0.000000, 0.000000 +2.200000, 99.800543, 0.000000, 0.000000 +2.216667, 99.800543, 0.000000, 0.000000 +2.233333, 99.800543, 0.000000, 0.000000 +2.250000, 99.800543, 0.000000, 0.000000 +2.266667, 99.800543, 0.000000, 0.000000 +2.283333, 99.800543, 0.000000, 0.000000 +2.300000, 99.800543, 0.000000, 0.000000 +2.316667, 99.800543, 0.000000, 0.000000 +2.333333, 99.800543, 0.000000, 0.000000 +2.350000, 99.800543, 0.000000, 0.000000 +2.366667, 99.800543, 0.000000, 0.000000 +2.383333, 99.800543, 0.000000, 0.000000 +2.400000, 99.800543, 0.000000, 0.000000 +2.416667, 99.800543, 0.000000, 0.000000 +2.433333, 99.800543, 0.000000, 0.000000 +2.450000, 99.800543, 0.000000, 0.000000 +2.466667, 99.800543, 0.000000, 0.000000 +2.483333, 99.800543, 0.000000, 0.000000 +2.500000, 99.800543, 0.000000, 0.000000 +2.516667, 99.800543, 0.000000, 0.000000 +2.533333, 99.800543, 0.000000, 0.000000 +2.550000, 99.800543, 0.000000, 0.000000 +2.566667, 99.800543, 0.000000, 0.000000 +2.583333, 99.800543, 0.000000, 0.000000 +2.600000, 99.800543, 0.000000, 0.000000 +2.616667, 99.800543, 0.000000, 0.000000 +2.633333, 99.800543, 0.000000, 0.000000 +2.650000, 99.800543, 0.000000, 0.000000 +2.666667, 99.800543, 0.000000, 0.000000 +2.683333, 99.800543, 0.000000, 0.000000 +2.700000, 99.800543, 0.000000, 0.000000 +2.716667, 99.800543, 0.000000, 0.000000 +2.733333, 99.800543, 0.000000, 0.000000 +2.750000, 99.800543, 0.000000, 0.000000 +2.766667, 99.800543, 0.000000, 0.000000 +2.783333, 99.800543, 0.000000, 0.000000 +2.800000, 99.800543, 0.000000, 0.000000 +2.816667, 99.800543, 0.000000, 0.000000 +2.833333, 99.800543, 0.000000, 0.000000 +2.850000, 99.800543, 0.000000, 0.000000 +2.866667, 99.800543, 0.000000, 0.000000 +2.883333, 99.800543, 0.000000, 0.000000 +2.900000, 99.800543, 0.000000, 0.000000 +2.916667, 99.800543, 0.000000, 0.000000 +2.933333, 99.800543, 0.000000, 0.000000 +2.950000, 99.800543, 0.000000, 0.000000 +2.966667, 99.800543, 0.000000, 0.000000 +2.983333, 99.800543, 0.000000, 0.000000 +3.000000, 99.800543, 0.000000, 0.000000 +3.016667, 99.800543, 0.000000, 0.000000 +3.033333, 99.800543, 0.000000, 0.000000 +3.050000, 99.800543, 0.000000, 0.000000 +3.066667, 99.800543, 0.000000, 0.000000 +3.083333, 99.800543, 0.000000, 0.000000 +3.100000, 99.800543, 0.000000, 0.000000 +3.116667, 99.800543, 0.000000, 0.000000 +3.133333, 99.800543, 0.000000, 0.000000 +3.150000, 99.800543, 0.000000, 0.000000 +3.166667, 99.800543, 0.000000, 0.000000 +3.183333, 99.800543, 0.000000, 0.000000 +3.200000, 99.800543, 0.000000, 0.000000 +3.216667, 99.800543, 0.000000, 0.000000 +3.233333, 99.800543, 0.000000, 0.000000 +3.250000, 99.800543, 0.000000, 0.000000 +3.266667, 99.800543, 0.000000, 0.000000 +3.283333, 99.800543, 0.000000, 0.000000 +3.300000, 99.800543, 0.000000, 0.000000 +3.316667, 99.800543, 0.000000, 0.000000 +3.333333, 99.800543, 0.000000, 0.000000 +3.350000, 99.800543, 0.000000, 0.000000 +3.366667, 99.800543, 0.000000, 0.000000 +3.383333, 99.800543, 0.000000, 0.000000 +3.400000, 99.800543, 0.000000, 0.000000 +3.416667, 99.800543, 0.000000, 0.000000 +3.433333, 99.800543, 0.000000, 0.000000 +3.450000, 99.800543, 0.000000, 0.000000 +3.466667, 99.800543, 0.000000, 0.000000 +3.483333, 99.800543, 0.000000, 0.000000 +3.500000, 99.800543, 0.000000, 0.000000 +3.516667, 99.800543, 0.000000, 0.000000 +3.533333, 99.800543, 0.000000, 0.000000 +3.550000, 99.800543, 0.000000, 0.000000 +3.566667, 99.800543, 0.000000, 0.000000 +3.583333, 99.800543, 0.000000, 0.000000 +3.600000, 99.800543, 0.000000, 0.000000 +3.616667, 99.800543, 0.000000, 0.000000 +3.633333, 99.800543, 0.000000, 0.000000 +3.650000, 99.800543, 0.000000, 0.000000 +3.666667, 99.800543, 0.000000, 0.000000 +3.683333, 99.800543, 0.000000, 0.000000 +3.700000, 99.800543, 0.000000, 0.000000 +3.716667, 99.800543, 0.000000, 0.000000 +3.733333, 99.800543, 0.000000, 0.000000 +3.750000, 99.800543, 0.000000, 0.000000 +3.766667, 99.800543, 0.000000, 0.000000 +3.783333, 99.800543, 0.000000, 0.000000 +3.800000, 99.800543, 0.000000, 0.000000 +3.816667, 99.800543, 0.000000, 0.000000 +3.833333, 99.800543, 0.000000, 0.000000 +3.850000, 99.800543, 0.000000, 0.000000 +3.866667, 99.800543, 0.000000, 0.000000 +3.883333, 99.800543, 0.000000, 0.000000 +3.900000, 99.800543, 0.000000, 0.000000 +3.916667, 99.800543, 0.000000, 0.000000 +3.933333, 99.800543, 0.000000, 0.000000 +3.950000, 99.800543, 0.000000, 0.000000 +3.966667, 99.800543, 0.000000, 0.000000 +3.983333, 99.800543, 0.000000, 0.000000 +4.000000, 99.800543, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_350_hd_1000kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_350_hd_1000kWh.csv new file mode 100644 index 0000000..1f9f699 --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_350_hd_1000kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.524305, 314.583153, 318.041423 +1.016667, 1.474889, 570.350452, 577.436586 +1.033333, 2.456886, 589.197813, 596.580430 +1.050000, 3.471480, 608.756518, 616.451052 +1.066667, 4.516619, 627.083593, 635.074327 +1.083333, 5.573516, 634.138223, 642.243986 +1.100000, 6.638720, 639.122263, 647.309632 +1.116667, 7.712276, 644.133704, 652.403412 +1.133333, 8.794250, 649.184156, 657.537132 +1.150000, 9.884706, 654.273918, 662.711101 +1.166667, 10.981160, 657.872315, 666.369208 +1.183333, 12.079836, 659.205736, 667.724794 +1.200000, 13.180691, 660.513014, 669.053821 +1.216667, 14.283729, 661.822811, 670.385428 +1.233333, 15.388955, 663.135187, 671.719675 +1.250000, 16.496372, 664.450145, 673.056568 +1.266667, 17.605984, 665.767691, 674.396113 +1.283333, 18.717798, 667.087831, 675.738313 +1.300000, 19.831815, 668.410569, 677.083175 +1.316667, 20.948042, 669.735910, 678.430703 +1.333333, 22.066481, 671.063859, 679.780904 +1.350000, 23.187139, 672.394422, 681.133781 +1.366667, 24.310018, 673.727603, 682.489341 +1.383333, 25.435124, 675.063407, 683.847589 +1.400000, 26.562460, 676.401840, 685.208530 +1.416667, 27.692032, 677.742907, 686.572168 +1.433333, 28.823843, 679.086612, 687.938511 +1.450000, 29.957898, 680.432961, 689.307562 +1.466667, 31.094201, 681.781959, 690.679328 +1.483333, 32.232757, 683.133612, 692.053813 +1.500000, 33.373570, 684.487923, 693.431023 +1.516667, 34.516645, 685.844899, 694.810964 +1.533333, 35.661986, 687.204544, 696.193640 +1.550000, 36.809597, 688.566864, 697.579057 +1.566667, 37.959484, 689.931864, 698.967221 +1.583333, 39.111650, 691.299550, 700.358136 +1.600000, 40.266100, 692.669925, 701.751809 +1.616667, 41.422838, 694.042996, 703.148244 +1.633333, 42.581869, 695.418768, 704.547447 +1.650000, 43.743198, 696.797245, 705.949425 +1.666667, 44.906829, 698.178434, 707.354181 +1.683333, 46.072766, 699.562339, 708.761721 +1.700000, 47.241014, 700.948966, 710.172051 +1.716667, 48.411578, 702.338320, 711.585177 +1.733333, 49.584462, 703.730406, 713.001104 +1.750000, 50.759671, 705.125229, 714.419837 +1.766667, 51.937209, 706.522796, 715.841383 +1.783333, 53.117081, 707.923110, 717.265745 +1.800000, 54.299291, 709.326178, 718.692931 +1.816667, 55.483844, 710.732005, 720.122946 +1.833333, 56.670745, 712.140595, 721.555794 +1.850000, 57.859998, 713.551956, 722.991482 +1.866667, 59.051609, 714.966091, 724.430016 +1.883333, 60.245580, 716.383006, 725.871400 +1.900000, 61.441918, 717.802707, 727.315641 +1.916667, 62.640627, 719.225198, 728.762744 +1.933333, 63.841711, 720.650486, 730.212715 +1.950000, 65.045175, 722.078576, 731.665559 +1.966667, 66.251024, 723.509473, 733.121282 +1.983333, 67.459263, 724.943182, 734.579890 +2.000000, 68.669896, 726.379710, 736.041388 +2.016667, 69.882928, 727.819061, 737.505782 +2.033333, 71.098363, 729.261240, 738.973078 +2.050000, 72.316207, 730.706255, 740.443282 +2.066667, 73.536464, 732.154109, 741.916398 +2.083333, 74.759138, 733.604808, 743.392434 +2.100000, 75.984236, 735.058359, 744.871394 +2.116667, 77.211760, 736.514765, 746.353284 +2.133333, 78.441717, 737.974034, 747.838110 +2.150000, 79.674111, 739.436170, 749.325879 +2.166667, 80.908946, 740.901179, 750.816595 +2.183333, 82.146228, 742.369066, 752.310264 +2.200000, 83.385961, 743.839837, 753.806893 +2.216667, 84.628150, 745.313498, 755.306487 +2.233333, 85.872800, 746.790055, 756.809051 +2.250000, 87.119916, 748.269512, 758.314593 +2.266667, 88.369502, 749.751875, 759.823117 +2.283333, 89.621564, 751.237151, 761.334629 +2.300000, 90.876106, 752.725344, 762.849136 +2.316667, 92.133134, 754.216460, 764.366643 +2.333333, 93.391493, 755.015505, 765.179840 +2.350000, 94.532905, 684.847397, 693.796579 +2.366667, 95.498454, 579.329476, 586.556357 +2.383333, 96.310025, 486.942493, 492.764683 +2.400000, 96.992250, 409.335020, 414.051528 +2.416667, 97.565851, 344.160591, 348.000822 +2.433333, 98.048199, 289.408844, 292.549732 +2.450000, 98.453865, 243.399578, 245.978726 +2.466667, 98.795078, 204.727394, 206.852675 +2.483333, 99.082104, 172.215594, 173.972219 +2.500000, 99.323567, 144.878152, 146.333910 +2.516667, 99.526714, 121.888237, 123.097418 +2.533333, 99.697634, 102.552115, 103.558460 +2.550000, 99.801056, 62.053085, 62.648063 +2.566667, 99.801142, 0.051427, 0.051902 +2.583333, 99.801142, 0.000000, 0.000000 +2.600000, 99.801142, 0.000000, 0.000000 +2.616667, 99.801142, 0.000000, 0.000000 +2.633333, 99.801142, 0.000000, 0.000000 +2.650000, 99.801142, 0.000000, 0.000000 +2.666667, 99.801142, 0.000000, 0.000000 +2.683333, 99.801142, 0.000000, 0.000000 +2.700000, 99.801142, 0.000000, 0.000000 +2.716667, 99.801142, 0.000000, 0.000000 +2.733333, 99.801142, 0.000000, 0.000000 +2.750000, 99.801142, 0.000000, 0.000000 +2.766667, 99.801142, 0.000000, 0.000000 +2.783333, 99.801142, 0.000000, 0.000000 +2.800000, 99.801142, 0.000000, 0.000000 +2.816667, 99.801142, 0.000000, 0.000000 +2.833333, 99.801142, 0.000000, 0.000000 +2.850000, 99.801142, 0.000000, 0.000000 +2.866667, 99.801142, 0.000000, 0.000000 +2.883333, 99.801142, 0.000000, 0.000000 +2.900000, 99.801142, 0.000000, 0.000000 +2.916667, 99.801142, 0.000000, 0.000000 +2.933333, 99.801142, 0.000000, 0.000000 +2.950000, 99.801142, 0.000000, 0.000000 +2.966667, 99.801142, 0.000000, 0.000000 +2.983333, 99.801142, 0.000000, 0.000000 +3.000000, 99.801142, 0.000000, 0.000000 +3.016667, 99.801142, 0.000000, 0.000000 +3.033333, 99.801142, 0.000000, 0.000000 +3.050000, 99.801142, 0.000000, 0.000000 +3.066667, 99.801142, 0.000000, 0.000000 +3.083333, 99.801142, 0.000000, 0.000000 +3.100000, 99.801142, 0.000000, 0.000000 +3.116667, 99.801142, 0.000000, 0.000000 +3.133333, 99.801142, 0.000000, 0.000000 +3.150000, 99.801142, 0.000000, 0.000000 +3.166667, 99.801142, 0.000000, 0.000000 +3.183333, 99.801142, 0.000000, 0.000000 +3.200000, 99.801142, 0.000000, 0.000000 +3.216667, 99.801142, 0.000000, 0.000000 +3.233333, 99.801142, 0.000000, 0.000000 +3.250000, 99.801142, 0.000000, 0.000000 +3.266667, 99.801142, 0.000000, 0.000000 +3.283333, 99.801142, 0.000000, 0.000000 +3.300000, 99.801142, 0.000000, 0.000000 +3.316667, 99.801142, 0.000000, 0.000000 +3.333333, 99.801142, 0.000000, 0.000000 +3.350000, 99.801142, 0.000000, 0.000000 +3.366667, 99.801142, 0.000000, 0.000000 +3.383333, 99.801142, 0.000000, 0.000000 +3.400000, 99.801142, 0.000000, 0.000000 +3.416667, 99.801142, 0.000000, 0.000000 +3.433333, 99.801142, 0.000000, 0.000000 +3.450000, 99.801142, 0.000000, 0.000000 +3.466667, 99.801142, 0.000000, 0.000000 +3.483333, 99.801142, 0.000000, 0.000000 +3.500000, 99.801142, 0.000000, 0.000000 +3.516667, 99.801142, 0.000000, 0.000000 +3.533333, 99.801142, 0.000000, 0.000000 +3.550000, 99.801142, 0.000000, 0.000000 +3.566667, 99.801142, 0.000000, 0.000000 +3.583333, 99.801142, 0.000000, 0.000000 +3.600000, 99.801142, 0.000000, 0.000000 +3.616667, 99.801142, 0.000000, 0.000000 +3.633333, 99.801142, 0.000000, 0.000000 +3.650000, 99.801142, 0.000000, 0.000000 +3.666667, 99.801142, 0.000000, 0.000000 +3.683333, 99.801142, 0.000000, 0.000000 +3.700000, 99.801142, 0.000000, 0.000000 +3.716667, 99.801142, 0.000000, 0.000000 +3.733333, 99.801142, 0.000000, 0.000000 +3.750000, 99.801142, 0.000000, 0.000000 +3.766667, 99.801142, 0.000000, 0.000000 +3.783333, 99.801142, 0.000000, 0.000000 +3.800000, 99.801142, 0.000000, 0.000000 +3.816667, 99.801142, 0.000000, 0.000000 +3.833333, 99.801142, 0.000000, 0.000000 +3.850000, 99.801142, 0.000000, 0.000000 +3.866667, 99.801142, 0.000000, 0.000000 +3.883333, 99.801142, 0.000000, 0.000000 +3.900000, 99.801142, 0.000000, 0.000000 +3.916667, 99.801142, 0.000000, 0.000000 +3.933333, 99.801142, 0.000000, 0.000000 +3.950000, 99.801142, 0.000000, 0.000000 +3.966667, 99.801142, 0.000000, 0.000000 +3.983333, 99.801142, 0.000000, 0.000000 +4.000000, 99.801142, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_350_hd_300kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_350_hd_300kWh.csv new file mode 100644 index 0000000..00ff59f --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_350_hd_300kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 1.736281, 312.530600, 317.244540 +1.016667, 4.998397, 587.180942, 599.117177 +1.033333, 8.398415, 612.003107, 624.737329 +1.050000, 11.898381, 629.993943, 643.321772 +1.066667, 15.431415, 635.946093, 649.473136 +1.083333, 18.987403, 640.077786, 653.743941 +1.100000, 22.566440, 644.226769, 658.033300 +1.116667, 26.168673, 648.401976, 662.350459 +1.133333, 29.794249, 652.603564, 666.695596 +1.150000, 33.443314, 656.831689, 671.068885 +1.166667, 37.116017, 661.086511, 675.470506 +1.183333, 40.812507, 665.368190, 679.900637 +1.200000, 44.532934, 669.676885, 684.359457 +1.216667, 48.277449, 674.012757, 688.847148 +1.233333, 52.046204, 678.375969, 693.363893 +1.250000, 55.839353, 682.766683, 697.909873 +1.266667, 59.657047, 687.185063, 702.485273 +1.283333, 63.499443, 691.631272, 707.090280 +1.300000, 67.366696, 696.105477, 711.725078 +1.316667, 71.258962, 700.607844, 716.389856 +1.333333, 75.176398, 705.138539, 721.084802 +1.350000, 79.119163, 709.697730, 725.810106 +1.366667, 82.738433, 651.468639, 665.521826 +1.383333, 85.686620, 530.673648, 540.883825 +1.400000, 88.055248, 426.353025, 433.704886 +1.416667, 89.957709, 342.442848, 347.801775 +1.433333, 91.485915, 275.077162, 279.031737 +1.450000, 92.713612, 220.985437, 223.937535 +1.466667, 93.720813, 181.296245, 183.583269 +1.483333, 94.598496, 157.982875, 159.906929 +1.500000, 95.367238, 138.373585, 140.008157 +1.516667, 96.040577, 121.201040, 122.593950 +1.533333, 96.630325, 106.154568, 107.344810 +1.550000, 97.146837, 92.972127, 93.991762 +1.566667, 97.599191, 81.423708, 82.299212 +1.583333, 97.995343, 71.307468, 72.060800 +1.600000, 98.342267, 62.446333, 63.095781 +1.616667, 98.646073, 54.684995, 55.245853 +1.633333, 98.912113, 47.887268, 48.372373 +1.650000, 99.145078, 41.933757, 42.353925 +1.666667, 99.349077, 36.719801, 37.084181 +1.683333, 99.527709, 32.153674, 32.470024 +1.700000, 99.684125, 28.154992, 28.429916 +1.716667, 99.800167, 20.887435, 21.088586 +1.733333, 99.800264, 0.017414, 0.017575 +1.750000, 99.800264, 0.000000, 0.000000 +1.766667, 99.800264, 0.000000, 0.000000 +1.783333, 99.800264, 0.000000, 0.000000 +1.800000, 99.800264, 0.000000, 0.000000 +1.816667, 99.800264, 0.000000, 0.000000 +1.833333, 99.800264, 0.000000, 0.000000 +1.850000, 99.800264, 0.000000, 0.000000 +1.866667, 99.800264, 0.000000, 0.000000 +1.883333, 99.800264, 0.000000, 0.000000 +1.900000, 99.800264, 0.000000, 0.000000 +1.916667, 99.800264, 0.000000, 0.000000 +1.933333, 99.800264, 0.000000, 0.000000 +1.950000, 99.800264, 0.000000, 0.000000 +1.966667, 99.800264, 0.000000, 0.000000 +1.983333, 99.800264, 0.000000, 0.000000 +2.000000, 99.800264, 0.000000, 0.000000 +2.016667, 99.800264, 0.000000, 0.000000 +2.033333, 99.800264, 0.000000, 0.000000 +2.050000, 99.800264, 0.000000, 0.000000 +2.066667, 99.800264, 0.000000, 0.000000 +2.083333, 99.800264, 0.000000, 0.000000 +2.100000, 99.800264, 0.000000, 0.000000 +2.116667, 99.800264, 0.000000, 0.000000 +2.133333, 99.800264, 0.000000, 0.000000 +2.150000, 99.800264, 0.000000, 0.000000 +2.166667, 99.800264, 0.000000, 0.000000 +2.183333, 99.800264, 0.000000, 0.000000 +2.200000, 99.800264, 0.000000, 0.000000 +2.216667, 99.800264, 0.000000, 0.000000 +2.233333, 99.800264, 0.000000, 0.000000 +2.250000, 99.800264, 0.000000, 0.000000 +2.266667, 99.800264, 0.000000, 0.000000 +2.283333, 99.800264, 0.000000, 0.000000 +2.300000, 99.800264, 0.000000, 0.000000 +2.316667, 99.800264, 0.000000, 0.000000 +2.333333, 99.800264, 0.000000, 0.000000 +2.350000, 99.800264, 0.000000, 0.000000 +2.366667, 99.800264, 0.000000, 0.000000 +2.383333, 99.800264, 0.000000, 0.000000 +2.400000, 99.800264, 0.000000, 0.000000 +2.416667, 99.800264, 0.000000, 0.000000 +2.433333, 99.800264, 0.000000, 0.000000 +2.450000, 99.800264, 0.000000, 0.000000 +2.466667, 99.800264, 0.000000, 0.000000 +2.483333, 99.800264, 0.000000, 0.000000 +2.500000, 99.800264, 0.000000, 0.000000 +2.516667, 99.800264, 0.000000, 0.000000 +2.533333, 99.800264, 0.000000, 0.000000 +2.550000, 99.800264, 0.000000, 0.000000 +2.566667, 99.800264, 0.000000, 0.000000 +2.583333, 99.800264, 0.000000, 0.000000 +2.600000, 99.800264, 0.000000, 0.000000 +2.616667, 99.800264, 0.000000, 0.000000 +2.633333, 99.800264, 0.000000, 0.000000 +2.650000, 99.800264, 0.000000, 0.000000 +2.666667, 99.800264, 0.000000, 0.000000 +2.683333, 99.800264, 0.000000, 0.000000 +2.700000, 99.800264, 0.000000, 0.000000 +2.716667, 99.800264, 0.000000, 0.000000 +2.733333, 99.800264, 0.000000, 0.000000 +2.750000, 99.800264, 0.000000, 0.000000 +2.766667, 99.800264, 0.000000, 0.000000 +2.783333, 99.800264, 0.000000, 0.000000 +2.800000, 99.800264, 0.000000, 0.000000 +2.816667, 99.800264, 0.000000, 0.000000 +2.833333, 99.800264, 0.000000, 0.000000 +2.850000, 99.800264, 0.000000, 0.000000 +2.866667, 99.800264, 0.000000, 0.000000 +2.883333, 99.800264, 0.000000, 0.000000 +2.900000, 99.800264, 0.000000, 0.000000 +2.916667, 99.800264, 0.000000, 0.000000 +2.933333, 99.800264, 0.000000, 0.000000 +2.950000, 99.800264, 0.000000, 0.000000 +2.966667, 99.800264, 0.000000, 0.000000 +2.983333, 99.800264, 0.000000, 0.000000 +3.000000, 99.800264, 0.000000, 0.000000 +3.016667, 99.800264, 0.000000, 0.000000 +3.033333, 99.800264, 0.000000, 0.000000 +3.050000, 99.800264, 0.000000, 0.000000 +3.066667, 99.800264, 0.000000, 0.000000 +3.083333, 99.800264, 0.000000, 0.000000 +3.100000, 99.800264, 0.000000, 0.000000 +3.116667, 99.800264, 0.000000, 0.000000 +3.133333, 99.800264, 0.000000, 0.000000 +3.150000, 99.800264, 0.000000, 0.000000 +3.166667, 99.800264, 0.000000, 0.000000 +3.183333, 99.800264, 0.000000, 0.000000 +3.200000, 99.800264, 0.000000, 0.000000 +3.216667, 99.800264, 0.000000, 0.000000 +3.233333, 99.800264, 0.000000, 0.000000 +3.250000, 99.800264, 0.000000, 0.000000 +3.266667, 99.800264, 0.000000, 0.000000 +3.283333, 99.800264, 0.000000, 0.000000 +3.300000, 99.800264, 0.000000, 0.000000 +3.316667, 99.800264, 0.000000, 0.000000 +3.333333, 99.800264, 0.000000, 0.000000 +3.350000, 99.800264, 0.000000, 0.000000 +3.366667, 99.800264, 0.000000, 0.000000 +3.383333, 99.800264, 0.000000, 0.000000 +3.400000, 99.800264, 0.000000, 0.000000 +3.416667, 99.800264, 0.000000, 0.000000 +3.433333, 99.800264, 0.000000, 0.000000 +3.450000, 99.800264, 0.000000, 0.000000 +3.466667, 99.800264, 0.000000, 0.000000 +3.483333, 99.800264, 0.000000, 0.000000 +3.500000, 99.800264, 0.000000, 0.000000 +3.516667, 99.800264, 0.000000, 0.000000 +3.533333, 99.800264, 0.000000, 0.000000 +3.550000, 99.800264, 0.000000, 0.000000 +3.566667, 99.800264, 0.000000, 0.000000 +3.583333, 99.800264, 0.000000, 0.000000 +3.600000, 99.800264, 0.000000, 0.000000 +3.616667, 99.800264, 0.000000, 0.000000 +3.633333, 99.800264, 0.000000, 0.000000 +3.650000, 99.800264, 0.000000, 0.000000 +3.666667, 99.800264, 0.000000, 0.000000 +3.683333, 99.800264, 0.000000, 0.000000 +3.700000, 99.800264, 0.000000, 0.000000 +3.716667, 99.800264, 0.000000, 0.000000 +3.733333, 99.800264, 0.000000, 0.000000 +3.750000, 99.800264, 0.000000, 0.000000 +3.766667, 99.800264, 0.000000, 0.000000 +3.783333, 99.800264, 0.000000, 0.000000 +3.800000, 99.800264, 0.000000, 0.000000 +3.816667, 99.800264, 0.000000, 0.000000 +3.833333, 99.800264, 0.000000, 0.000000 +3.850000, 99.800264, 0.000000, 0.000000 +3.866667, 99.800264, 0.000000, 0.000000 +3.883333, 99.800264, 0.000000, 0.000000 +3.900000, 99.800264, 0.000000, 0.000000 +3.916667, 99.800264, 0.000000, 0.000000 +3.933333, 99.800264, 0.000000, 0.000000 +3.950000, 99.800264, 0.000000, 0.000000 +3.966667, 99.800264, 0.000000, 0.000000 +3.983333, 99.800264, 0.000000, 0.000000 +4.000000, 99.800264, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_350_hd_400kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_350_hd_400kWh.csv new file mode 100644 index 0000000..ea39cb4 --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_350_hd_400kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 1.300352, 312.084526, 316.330252 +1.016667, 3.724605, 581.820737, 591.964509 +1.033333, 6.269659, 610.812884, 621.715697 +1.050000, 8.874281, 625.109233, 636.395354 +1.066667, 11.530661, 637.531220, 649.155240 +1.083333, 14.204515, 641.725020, 653.464137 +1.100000, 16.891426, 644.858551, 656.684001 +1.116667, 19.591438, 648.002854, 659.915223 +1.133333, 22.304613, 651.162205, 663.162200 +1.150000, 25.031016, 654.336672, 666.425006 +1.166667, 27.770709, 657.526325, 669.703718 +1.183333, 30.523756, 660.731233, 672.998412 +1.200000, 33.290221, 663.951468, 676.309164 +1.216667, 36.070167, 667.187099, 679.636051 +1.233333, 38.863659, 670.438196, 682.979149 +1.250000, 41.670763, 673.704831, 686.338537 +1.266667, 44.491542, 676.987076, 689.714293 +1.283333, 47.326063, 680.285001, 693.106494 +1.300000, 50.174391, 683.598678, 696.515218 +1.316667, 53.036592, 686.928180, 699.940546 +1.333333, 55.912732, 690.273579, 703.382557 +1.350000, 58.802877, 693.634948, 706.841329 +1.366667, 61.707095, 697.012360, 710.316943 +1.383333, 64.625453, 700.405888, 713.809479 +1.400000, 67.558018, 703.815605, 717.319018 +1.416667, 70.504858, 707.241587, 720.845642 +1.433333, 73.466041, 710.683907, 724.389431 +1.450000, 76.441635, 714.142640, 727.950467 +1.466667, 79.431710, 717.617860, 731.528833 +1.483333, 82.436333, 721.109643, 735.124612 +1.500000, 85.358080, 701.219144, 714.646513 +1.516667, 87.791540, 584.030414, 594.231176 +1.533333, 89.750448, 470.138066, 477.585831 +1.550000, 91.322431, 377.275792, 382.755645 +1.566667, 92.584207, 302.826279, 306.906551 +1.583333, 93.611980, 246.665531, 249.794277 +1.600000, 94.503588, 213.985945, 216.602076 +1.616667, 95.284354, 187.383889, 189.604976 +1.633333, 95.968171, 164.116086, 166.007969 +1.650000, 96.567055, 143.732058, 145.348031 +1.666667, 97.091537, 125.875600, 127.259447 +1.683333, 97.550846, 110.234293, 111.422145 +1.700000, 97.953072, 96.534101, 97.555900 +1.716667, 98.305300, 84.534709, 85.415376 +1.733333, 98.613739, 74.025416, 74.785777 +1.750000, 98.883829, 64.821521, 65.479048 +1.766667, 99.120333, 56.761136, 57.330542 +1.783333, 99.327427, 49.702387, 50.196108 +1.800000, 99.508764, 43.520957, 43.949539 +1.816667, 99.667547, 38.107922, 38.480335 +1.833333, 99.800099, 31.812621, 32.120733 +1.850000, 99.800210, 0.026563, 0.026809 +1.866667, 99.800210, 0.000000, 0.000000 +1.883333, 99.800210, 0.000000, 0.000000 +1.900000, 99.800210, 0.000000, 0.000000 +1.916667, 99.800210, 0.000000, 0.000000 +1.933333, 99.800210, 0.000000, 0.000000 +1.950000, 99.800210, 0.000000, 0.000000 +1.966667, 99.800210, 0.000000, 0.000000 +1.983333, 99.800210, 0.000000, 0.000000 +2.000000, 99.800210, 0.000000, 0.000000 +2.016667, 99.800210, 0.000000, 0.000000 +2.033333, 99.800210, 0.000000, 0.000000 +2.050000, 99.800210, 0.000000, 0.000000 +2.066667, 99.800210, 0.000000, 0.000000 +2.083333, 99.800210, 0.000000, 0.000000 +2.100000, 99.800210, 0.000000, 0.000000 +2.116667, 99.800210, 0.000000, 0.000000 +2.133333, 99.800210, 0.000000, 0.000000 +2.150000, 99.800210, 0.000000, 0.000000 +2.166667, 99.800210, 0.000000, 0.000000 +2.183333, 99.800210, 0.000000, 0.000000 +2.200000, 99.800210, 0.000000, 0.000000 +2.216667, 99.800210, 0.000000, 0.000000 +2.233333, 99.800210, 0.000000, 0.000000 +2.250000, 99.800210, 0.000000, 0.000000 +2.266667, 99.800210, 0.000000, 0.000000 +2.283333, 99.800210, 0.000000, 0.000000 +2.300000, 99.800210, 0.000000, 0.000000 +2.316667, 99.800210, 0.000000, 0.000000 +2.333333, 99.800210, 0.000000, 0.000000 +2.350000, 99.800210, 0.000000, 0.000000 +2.366667, 99.800210, 0.000000, 0.000000 +2.383333, 99.800210, 0.000000, 0.000000 +2.400000, 99.800210, 0.000000, 0.000000 +2.416667, 99.800210, 0.000000, 0.000000 +2.433333, 99.800210, 0.000000, 0.000000 +2.450000, 99.800210, 0.000000, 0.000000 +2.466667, 99.800210, 0.000000, 0.000000 +2.483333, 99.800210, 0.000000, 0.000000 +2.500000, 99.800210, 0.000000, 0.000000 +2.516667, 99.800210, 0.000000, 0.000000 +2.533333, 99.800210, 0.000000, 0.000000 +2.550000, 99.800210, 0.000000, 0.000000 +2.566667, 99.800210, 0.000000, 0.000000 +2.583333, 99.800210, 0.000000, 0.000000 +2.600000, 99.800210, 0.000000, 0.000000 +2.616667, 99.800210, 0.000000, 0.000000 +2.633333, 99.800210, 0.000000, 0.000000 +2.650000, 99.800210, 0.000000, 0.000000 +2.666667, 99.800210, 0.000000, 0.000000 +2.683333, 99.800210, 0.000000, 0.000000 +2.700000, 99.800210, 0.000000, 0.000000 +2.716667, 99.800210, 0.000000, 0.000000 +2.733333, 99.800210, 0.000000, 0.000000 +2.750000, 99.800210, 0.000000, 0.000000 +2.766667, 99.800210, 0.000000, 0.000000 +2.783333, 99.800210, 0.000000, 0.000000 +2.800000, 99.800210, 0.000000, 0.000000 +2.816667, 99.800210, 0.000000, 0.000000 +2.833333, 99.800210, 0.000000, 0.000000 +2.850000, 99.800210, 0.000000, 0.000000 +2.866667, 99.800210, 0.000000, 0.000000 +2.883333, 99.800210, 0.000000, 0.000000 +2.900000, 99.800210, 0.000000, 0.000000 +2.916667, 99.800210, 0.000000, 0.000000 +2.933333, 99.800210, 0.000000, 0.000000 +2.950000, 99.800210, 0.000000, 0.000000 +2.966667, 99.800210, 0.000000, 0.000000 +2.983333, 99.800210, 0.000000, 0.000000 +3.000000, 99.800210, 0.000000, 0.000000 +3.016667, 99.800210, 0.000000, 0.000000 +3.033333, 99.800210, 0.000000, 0.000000 +3.050000, 99.800210, 0.000000, 0.000000 +3.066667, 99.800210, 0.000000, 0.000000 +3.083333, 99.800210, 0.000000, 0.000000 +3.100000, 99.800210, 0.000000, 0.000000 +3.116667, 99.800210, 0.000000, 0.000000 +3.133333, 99.800210, 0.000000, 0.000000 +3.150000, 99.800210, 0.000000, 0.000000 +3.166667, 99.800210, 0.000000, 0.000000 +3.183333, 99.800210, 0.000000, 0.000000 +3.200000, 99.800210, 0.000000, 0.000000 +3.216667, 99.800210, 0.000000, 0.000000 +3.233333, 99.800210, 0.000000, 0.000000 +3.250000, 99.800210, 0.000000, 0.000000 +3.266667, 99.800210, 0.000000, 0.000000 +3.283333, 99.800210, 0.000000, 0.000000 +3.300000, 99.800210, 0.000000, 0.000000 +3.316667, 99.800210, 0.000000, 0.000000 +3.333333, 99.800210, 0.000000, 0.000000 +3.350000, 99.800210, 0.000000, 0.000000 +3.366667, 99.800210, 0.000000, 0.000000 +3.383333, 99.800210, 0.000000, 0.000000 +3.400000, 99.800210, 0.000000, 0.000000 +3.416667, 99.800210, 0.000000, 0.000000 +3.433333, 99.800210, 0.000000, 0.000000 +3.450000, 99.800210, 0.000000, 0.000000 +3.466667, 99.800210, 0.000000, 0.000000 +3.483333, 99.800210, 0.000000, 0.000000 +3.500000, 99.800210, 0.000000, 0.000000 +3.516667, 99.800210, 0.000000, 0.000000 +3.533333, 99.800210, 0.000000, 0.000000 +3.550000, 99.800210, 0.000000, 0.000000 +3.566667, 99.800210, 0.000000, 0.000000 +3.583333, 99.800210, 0.000000, 0.000000 +3.600000, 99.800210, 0.000000, 0.000000 +3.616667, 99.800210, 0.000000, 0.000000 +3.633333, 99.800210, 0.000000, 0.000000 +3.650000, 99.800210, 0.000000, 0.000000 +3.666667, 99.800210, 0.000000, 0.000000 +3.683333, 99.800210, 0.000000, 0.000000 +3.700000, 99.800210, 0.000000, 0.000000 +3.716667, 99.800210, 0.000000, 0.000000 +3.733333, 99.800210, 0.000000, 0.000000 +3.750000, 99.800210, 0.000000, 0.000000 +3.766667, 99.800210, 0.000000, 0.000000 +3.783333, 99.800210, 0.000000, 0.000000 +3.800000, 99.800210, 0.000000, 0.000000 +3.816667, 99.800210, 0.000000, 0.000000 +3.833333, 99.800210, 0.000000, 0.000000 +3.850000, 99.800210, 0.000000, 0.000000 +3.866667, 99.800210, 0.000000, 0.000000 +3.883333, 99.800210, 0.000000, 0.000000 +3.900000, 99.800210, 0.000000, 0.000000 +3.916667, 99.800210, 0.000000, 0.000000 +3.933333, 99.800210, 0.000000, 0.000000 +3.950000, 99.800210, 0.000000, 0.000000 +3.966667, 99.800210, 0.000000, 0.000000 +3.983333, 99.800210, 0.000000, 0.000000 +4.000000, 99.800210, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_350_hd_600kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_350_hd_600kWh.csv new file mode 100644 index 0000000..e7bfcd0 --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_350_hd_600kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.872559, 314.121228, 317.941458 +1.016667, 2.471767, 575.714796, 584.130151 +1.033333, 4.158035, 607.056530, 616.109588 +1.050000, 5.895521, 625.495105, 634.932094 +1.066667, 7.655716, 633.670002, 643.279289 +1.083333, 9.438608, 641.841061, 651.623843 +1.100000, 11.240425, 648.654188, 658.582609 +1.116667, 13.049007, 651.089468, 661.070162 +1.133333, 14.863478, 653.209702, 663.235999 +1.150000, 16.683855, 655.335785, 665.407897 +1.166667, 18.510157, 657.468703, 667.586864 +1.183333, 20.342403, 659.608477, 669.772923 +1.200000, 22.180612, 661.755128, 671.966096 +1.216667, 24.024802, 663.908679, 674.166407 +1.233333, 25.874994, 666.069150, 676.373878 +1.250000, 27.731207, 668.236564, 678.588532 +1.266667, 29.593460, 670.410941, 680.810392 +1.283333, 31.461772, 672.592305, 683.039483 +1.300000, 33.336162, 674.780676, 685.275825 +1.316667, 35.216652, 676.976078, 687.519444 +1.333333, 37.103259, 679.178530, 689.770363 +1.350000, 38.996003, 681.388057, 692.028604 +1.366667, 40.894905, 683.604679, 694.294192 +1.383333, 42.799984, 685.828420, 696.567149 +1.400000, 44.711260, 688.059301, 698.847501 +1.416667, 46.628752, 690.297344, 701.135269 +1.433333, 48.552482, 692.542572, 703.430479 +1.450000, 50.482468, 694.795008, 705.733154 +1.466667, 52.418731, 697.054674, 708.043318 +1.483333, 54.361291, 699.321592, 710.360996 +1.500000, 56.310168, 701.595785, 712.686210 +1.516667, 58.265383, 703.877277, 715.018986 +1.533333, 60.226955, 706.166088, 717.359347 +1.550000, 62.194906, 708.462244, 719.707319 +1.566667, 64.169255, 710.765766, 722.062925 +1.583333, 66.150024, 713.076677, 724.426189 +1.600000, 68.137232, 715.395000, 726.797137 +1.616667, 70.130901, 717.720760, 729.175794 +1.633333, 72.131051, 720.053977, 731.562183 +1.650000, 74.137703, 722.394677, 733.956330 +1.666667, 76.150877, 724.742882, 736.358259 +1.683333, 78.170596, 727.098616, 738.767996 +1.700000, 80.196879, 729.461902, 741.185565 +1.716667, 82.229748, 731.832764, 743.610992 +1.733333, 84.269223, 734.211225, 746.044302 +1.750000, 86.315327, 736.597308, 748.485519 +1.766667, 88.368080, 738.991039, 750.934671 +1.783333, 90.294828, 693.629197, 704.541328 +1.800000, 91.930871, 588.975697, 597.658580 +1.816667, 93.307165, 495.465899, 502.333746 +1.833333, 94.464779, 416.740856, 422.209369 +1.850000, 95.438545, 350.555902, 354.938633 +1.866667, 96.257727, 294.905382, 298.438998 +1.883333, 96.946910, 248.105859, 250.970417 +1.900000, 97.526757, 208.744836, 211.078431 +1.916667, 98.014636, 175.636608, 177.546003 +1.933333, 98.425151, 147.785456, 149.353838 +1.950000, 98.770582, 124.354922, 125.647606 +1.966667, 99.061254, 104.642134, 105.710773 +1.983333, 99.305855, 88.056331, 88.942056 +2.000000, 99.511691, 74.100874, 74.836649 +2.016667, 99.684908, 62.358182, 62.970581 +2.033333, 99.800504, 41.614451, 42.015146 +2.050000, 99.800600, 0.034644, 0.034964 +2.066667, 99.800600, 0.000000, 0.000000 +2.083333, 99.800600, 0.000000, 0.000000 +2.100000, 99.800600, 0.000000, 0.000000 +2.116667, 99.800600, 0.000000, 0.000000 +2.133333, 99.800600, 0.000000, 0.000000 +2.150000, 99.800600, 0.000000, 0.000000 +2.166667, 99.800600, 0.000000, 0.000000 +2.183333, 99.800600, 0.000000, 0.000000 +2.200000, 99.800600, 0.000000, 0.000000 +2.216667, 99.800600, 0.000000, 0.000000 +2.233333, 99.800600, 0.000000, 0.000000 +2.250000, 99.800600, 0.000000, 0.000000 +2.266667, 99.800600, 0.000000, 0.000000 +2.283333, 99.800600, 0.000000, 0.000000 +2.300000, 99.800600, 0.000000, 0.000000 +2.316667, 99.800600, 0.000000, 0.000000 +2.333333, 99.800600, 0.000000, 0.000000 +2.350000, 99.800600, 0.000000, 0.000000 +2.366667, 99.800600, 0.000000, 0.000000 +2.383333, 99.800600, 0.000000, 0.000000 +2.400000, 99.800600, 0.000000, 0.000000 +2.416667, 99.800600, 0.000000, 0.000000 +2.433333, 99.800600, 0.000000, 0.000000 +2.450000, 99.800600, 0.000000, 0.000000 +2.466667, 99.800600, 0.000000, 0.000000 +2.483333, 99.800600, 0.000000, 0.000000 +2.500000, 99.800600, 0.000000, 0.000000 +2.516667, 99.800600, 0.000000, 0.000000 +2.533333, 99.800600, 0.000000, 0.000000 +2.550000, 99.800600, 0.000000, 0.000000 +2.566667, 99.800600, 0.000000, 0.000000 +2.583333, 99.800600, 0.000000, 0.000000 +2.600000, 99.800600, 0.000000, 0.000000 +2.616667, 99.800600, 0.000000, 0.000000 +2.633333, 99.800600, 0.000000, 0.000000 +2.650000, 99.800600, 0.000000, 0.000000 +2.666667, 99.800600, 0.000000, 0.000000 +2.683333, 99.800600, 0.000000, 0.000000 +2.700000, 99.800600, 0.000000, 0.000000 +2.716667, 99.800600, 0.000000, 0.000000 +2.733333, 99.800600, 0.000000, 0.000000 +2.750000, 99.800600, 0.000000, 0.000000 +2.766667, 99.800600, 0.000000, 0.000000 +2.783333, 99.800600, 0.000000, 0.000000 +2.800000, 99.800600, 0.000000, 0.000000 +2.816667, 99.800600, 0.000000, 0.000000 +2.833333, 99.800600, 0.000000, 0.000000 +2.850000, 99.800600, 0.000000, 0.000000 +2.866667, 99.800600, 0.000000, 0.000000 +2.883333, 99.800600, 0.000000, 0.000000 +2.900000, 99.800600, 0.000000, 0.000000 +2.916667, 99.800600, 0.000000, 0.000000 +2.933333, 99.800600, 0.000000, 0.000000 +2.950000, 99.800600, 0.000000, 0.000000 +2.966667, 99.800600, 0.000000, 0.000000 +2.983333, 99.800600, 0.000000, 0.000000 +3.000000, 99.800600, 0.000000, 0.000000 +3.016667, 99.800600, 0.000000, 0.000000 +3.033333, 99.800600, 0.000000, 0.000000 +3.050000, 99.800600, 0.000000, 0.000000 +3.066667, 99.800600, 0.000000, 0.000000 +3.083333, 99.800600, 0.000000, 0.000000 +3.100000, 99.800600, 0.000000, 0.000000 +3.116667, 99.800600, 0.000000, 0.000000 +3.133333, 99.800600, 0.000000, 0.000000 +3.150000, 99.800600, 0.000000, 0.000000 +3.166667, 99.800600, 0.000000, 0.000000 +3.183333, 99.800600, 0.000000, 0.000000 +3.200000, 99.800600, 0.000000, 0.000000 +3.216667, 99.800600, 0.000000, 0.000000 +3.233333, 99.800600, 0.000000, 0.000000 +3.250000, 99.800600, 0.000000, 0.000000 +3.266667, 99.800600, 0.000000, 0.000000 +3.283333, 99.800600, 0.000000, 0.000000 +3.300000, 99.800600, 0.000000, 0.000000 +3.316667, 99.800600, 0.000000, 0.000000 +3.333333, 99.800600, 0.000000, 0.000000 +3.350000, 99.800600, 0.000000, 0.000000 +3.366667, 99.800600, 0.000000, 0.000000 +3.383333, 99.800600, 0.000000, 0.000000 +3.400000, 99.800600, 0.000000, 0.000000 +3.416667, 99.800600, 0.000000, 0.000000 +3.433333, 99.800600, 0.000000, 0.000000 +3.450000, 99.800600, 0.000000, 0.000000 +3.466667, 99.800600, 0.000000, 0.000000 +3.483333, 99.800600, 0.000000, 0.000000 +3.500000, 99.800600, 0.000000, 0.000000 +3.516667, 99.800600, 0.000000, 0.000000 +3.533333, 99.800600, 0.000000, 0.000000 +3.550000, 99.800600, 0.000000, 0.000000 +3.566667, 99.800600, 0.000000, 0.000000 +3.583333, 99.800600, 0.000000, 0.000000 +3.600000, 99.800600, 0.000000, 0.000000 +3.616667, 99.800600, 0.000000, 0.000000 +3.633333, 99.800600, 0.000000, 0.000000 +3.650000, 99.800600, 0.000000, 0.000000 +3.666667, 99.800600, 0.000000, 0.000000 +3.683333, 99.800600, 0.000000, 0.000000 +3.700000, 99.800600, 0.000000, 0.000000 +3.716667, 99.800600, 0.000000, 0.000000 +3.733333, 99.800600, 0.000000, 0.000000 +3.750000, 99.800600, 0.000000, 0.000000 +3.766667, 99.800600, 0.000000, 0.000000 +3.783333, 99.800600, 0.000000, 0.000000 +3.800000, 99.800600, 0.000000, 0.000000 +3.816667, 99.800600, 0.000000, 0.000000 +3.833333, 99.800600, 0.000000, 0.000000 +3.850000, 99.800600, 0.000000, 0.000000 +3.866667, 99.800600, 0.000000, 0.000000 +3.883333, 99.800600, 0.000000, 0.000000 +3.900000, 99.800600, 0.000000, 0.000000 +3.916667, 99.800600, 0.000000, 0.000000 +3.933333, 99.800600, 0.000000, 0.000000 +3.950000, 99.800600, 0.000000, 0.000000 +3.966667, 99.800600, 0.000000, 0.000000 +3.983333, 99.800600, 0.000000, 0.000000 +4.000000, 99.800600, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_350_hd_800kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_350_hd_800kWh.csv new file mode 100644 index 0000000..a139b35 --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_350_hd_800kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.651958, 312.939947, 316.513989 +1.016667, 1.835924, 568.303430, 575.811326 +1.033333, 3.068310, 591.545437, 599.457143 +1.050000, 4.349933, 615.179065, 623.509249 +1.066667, 5.654880, 626.374457, 634.905646 +1.083333, 6.972544, 632.478900, 641.120439 +1.100000, 8.302970, 638.604587, 647.357395 +1.116667, 9.646281, 644.789068, 653.654754 +1.133333, 10.999954, 649.762870, 658.719730 +1.150000, 12.357300, 651.526248, 660.515518 +1.166667, 13.717970, 653.121425, 662.140051 +1.183333, 15.081970, 654.720023, 663.768104 +1.200000, 16.449308, 656.322498, 665.400142 +1.216667, 17.819993, 657.928859, 667.036175 +1.233333, 19.194033, 659.539115, 668.676212 +1.250000, 20.571436, 661.153276, 670.320262 +1.266667, 21.952209, 662.771351, 671.968336 +1.283333, 23.336362, 664.393349, 673.620444 +1.300000, 24.723902, 666.019280, 675.276595 +1.316667, 26.114838, 667.649152, 676.936798 +1.333333, 27.509178, 669.282976, 678.601065 +1.350000, 28.906929, 670.920761, 680.269404 +1.366667, 30.308101, 672.562515, 681.941825 +1.383333, 31.712702, 674.208249, 683.618339 +1.400000, 33.120739, 675.857972, 685.298955 +1.416667, 34.532222, 677.511694, 686.983684 +1.433333, 35.947158, 679.169423, 688.672534 +1.450000, 37.365556, 680.831170, 690.365517 +1.466667, 38.787425, 682.496944, 692.062642 +1.483333, 40.212772, 684.166754, 693.763920 +1.500000, 41.641607, 685.840611, 695.469359 +1.516667, 43.073937, 687.518524, 697.178971 +1.533333, 44.509772, 689.200502, 698.892766 +1.550000, 45.949119, 690.886555, 700.610753 +1.566667, 47.391987, 692.576693, 702.332943 +1.583333, 48.838385, 694.270925, 704.059346 +1.600000, 50.288321, 695.969261, 705.789973 +1.616667, 51.741803, 697.671712, 707.524832 +1.633333, 53.198841, 699.378286, 709.263935 +1.650000, 54.659443, 701.088993, 711.007293 +1.666667, 56.123618, 702.803844, 712.754914 +1.683333, 57.591374, 704.522848, 714.506810 +1.700000, 59.062720, 706.246015, 716.262991 +1.716667, 60.537664, 707.973355, 718.023468 +1.733333, 62.016216, 709.704878, 719.788250 +1.750000, 63.498384, 711.440593, 721.557348 +1.766667, 64.984177, 713.180511, 723.330773 +1.783333, 66.473603, 714.924642, 725.108535 +1.800000, 67.966672, 716.672995, 726.890644 +1.816667, 69.463392, 718.425580, 728.677112 +1.833333, 70.963772, 720.182409, 730.467948 +1.850000, 72.467821, 721.943490, 732.263164 +1.866667, 73.975548, 723.708834, 734.062769 +1.883333, 75.486961, 725.478450, 735.866775 +1.900000, 77.002070, 727.252350, 737.675191 +1.916667, 78.520884, 729.030543, 739.488030 +1.933333, 80.043411, 730.813039, 741.305301 +1.950000, 81.569661, 732.599848, 743.127015 +1.966667, 83.099642, 734.390982, 744.953183 +1.983333, 84.633364, 736.186449, 746.783816 +2.000000, 86.170835, 737.986261, 748.618925 +2.016667, 87.712065, 739.790427, 750.458520 +2.033333, 89.257063, 741.598958, 752.302612 +2.050000, 90.805838, 743.411864, 754.151212 +2.066667, 92.323479, 728.467755, 738.914272 +2.083333, 93.637249, 630.609973, 639.217671 +2.100000, 94.744167, 531.320534, 538.201675 +2.116667, 95.674823, 446.714827, 452.234926 +2.133333, 96.457386, 375.630368, 380.085034 +2.150000, 97.115514, 315.901229, 319.515627 +2.166667, 97.669057, 265.700713, 268.647620 +2.183333, 98.134681, 223.499615, 225.912702 +2.200000, 98.526383, 188.016808, 190.000327 +2.216667, 98.855921, 158.178221, 159.814108 +2.233333, 99.133177, 133.082826, 134.435952 +2.250000, 99.366457, 111.974369, 113.096449 +2.266667, 99.562744, 94.217836, 95.150361 +2.283333, 99.727910, 79.279825, 80.056279 +2.300000, 99.801549, 35.346615, 35.682023 +2.316667, 99.801609, 0.028915, 0.029182 +2.333333, 99.801609, 0.000000, 0.000000 +2.350000, 99.801609, 0.000000, 0.000000 +2.366667, 99.801609, 0.000000, 0.000000 +2.383333, 99.801609, 0.000000, 0.000000 +2.400000, 99.801609, 0.000000, 0.000000 +2.416667, 99.801609, 0.000000, 0.000000 +2.433333, 99.801609, 0.000000, 0.000000 +2.450000, 99.801609, 0.000000, 0.000000 +2.466667, 99.801609, 0.000000, 0.000000 +2.483333, 99.801609, 0.000000, 0.000000 +2.500000, 99.801609, 0.000000, 0.000000 +2.516667, 99.801609, 0.000000, 0.000000 +2.533333, 99.801609, 0.000000, 0.000000 +2.550000, 99.801609, 0.000000, 0.000000 +2.566667, 99.801609, 0.000000, 0.000000 +2.583333, 99.801609, 0.000000, 0.000000 +2.600000, 99.801609, 0.000000, 0.000000 +2.616667, 99.801609, 0.000000, 0.000000 +2.633333, 99.801609, 0.000000, 0.000000 +2.650000, 99.801609, 0.000000, 0.000000 +2.666667, 99.801609, 0.000000, 0.000000 +2.683333, 99.801609, 0.000000, 0.000000 +2.700000, 99.801609, 0.000000, 0.000000 +2.716667, 99.801609, 0.000000, 0.000000 +2.733333, 99.801609, 0.000000, 0.000000 +2.750000, 99.801609, 0.000000, 0.000000 +2.766667, 99.801609, 0.000000, 0.000000 +2.783333, 99.801609, 0.000000, 0.000000 +2.800000, 99.801609, 0.000000, 0.000000 +2.816667, 99.801609, 0.000000, 0.000000 +2.833333, 99.801609, 0.000000, 0.000000 +2.850000, 99.801609, 0.000000, 0.000000 +2.866667, 99.801609, 0.000000, 0.000000 +2.883333, 99.801609, 0.000000, 0.000000 +2.900000, 99.801609, 0.000000, 0.000000 +2.916667, 99.801609, 0.000000, 0.000000 +2.933333, 99.801609, 0.000000, 0.000000 +2.950000, 99.801609, 0.000000, 0.000000 +2.966667, 99.801609, 0.000000, 0.000000 +2.983333, 99.801609, 0.000000, 0.000000 +3.000000, 99.801609, 0.000000, 0.000000 +3.016667, 99.801609, 0.000000, 0.000000 +3.033333, 99.801609, 0.000000, 0.000000 +3.050000, 99.801609, 0.000000, 0.000000 +3.066667, 99.801609, 0.000000, 0.000000 +3.083333, 99.801609, 0.000000, 0.000000 +3.100000, 99.801609, 0.000000, 0.000000 +3.116667, 99.801609, 0.000000, 0.000000 +3.133333, 99.801609, 0.000000, 0.000000 +3.150000, 99.801609, 0.000000, 0.000000 +3.166667, 99.801609, 0.000000, 0.000000 +3.183333, 99.801609, 0.000000, 0.000000 +3.200000, 99.801609, 0.000000, 0.000000 +3.216667, 99.801609, 0.000000, 0.000000 +3.233333, 99.801609, 0.000000, 0.000000 +3.250000, 99.801609, 0.000000, 0.000000 +3.266667, 99.801609, 0.000000, 0.000000 +3.283333, 99.801609, 0.000000, 0.000000 +3.300000, 99.801609, 0.000000, 0.000000 +3.316667, 99.801609, 0.000000, 0.000000 +3.333333, 99.801609, 0.000000, 0.000000 +3.350000, 99.801609, 0.000000, 0.000000 +3.366667, 99.801609, 0.000000, 0.000000 +3.383333, 99.801609, 0.000000, 0.000000 +3.400000, 99.801609, 0.000000, 0.000000 +3.416667, 99.801609, 0.000000, 0.000000 +3.433333, 99.801609, 0.000000, 0.000000 +3.450000, 99.801609, 0.000000, 0.000000 +3.466667, 99.801609, 0.000000, 0.000000 +3.483333, 99.801609, 0.000000, 0.000000 +3.500000, 99.801609, 0.000000, 0.000000 +3.516667, 99.801609, 0.000000, 0.000000 +3.533333, 99.801609, 0.000000, 0.000000 +3.550000, 99.801609, 0.000000, 0.000000 +3.566667, 99.801609, 0.000000, 0.000000 +3.583333, 99.801609, 0.000000, 0.000000 +3.600000, 99.801609, 0.000000, 0.000000 +3.616667, 99.801609, 0.000000, 0.000000 +3.633333, 99.801609, 0.000000, 0.000000 +3.650000, 99.801609, 0.000000, 0.000000 +3.666667, 99.801609, 0.000000, 0.000000 +3.683333, 99.801609, 0.000000, 0.000000 +3.700000, 99.801609, 0.000000, 0.000000 +3.716667, 99.801609, 0.000000, 0.000000 +3.733333, 99.801609, 0.000000, 0.000000 +3.750000, 99.801609, 0.000000, 0.000000 +3.766667, 99.801609, 0.000000, 0.000000 +3.783333, 99.801609, 0.000000, 0.000000 +3.800000, 99.801609, 0.000000, 0.000000 +3.816667, 99.801609, 0.000000, 0.000000 +3.833333, 99.801609, 0.000000, 0.000000 +3.850000, 99.801609, 0.000000, 0.000000 +3.866667, 99.801609, 0.000000, 0.000000 +3.883333, 99.801609, 0.000000, 0.000000 +3.900000, 99.801609, 0.000000, 0.000000 +3.916667, 99.801609, 0.000000, 0.000000 +3.933333, 99.801609, 0.000000, 0.000000 +3.950000, 99.801609, 0.000000, 0.000000 +3.966667, 99.801609, 0.000000, 0.000000 +3.983333, 99.801609, 0.000000, 0.000000 +4.000000, 99.801609, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_350_ld_100kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_350_ld_100kWh.csv new file mode 100644 index 0000000..863092c --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_350_ld_100kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 3.277102, 196.626130, 200.633388 +1.016667, 8.631848, 321.284722, 330.185018 +1.033333, 14.206680, 334.489924, 344.019657 +1.050000, 19.846382, 338.382162, 348.101550 +1.066667, 25.543273, 341.813443, 351.701589 +1.083333, 31.297878, 345.276294, 355.336239 +1.100000, 37.110757, 348.772774, 359.007702 +1.116667, 42.982477, 352.303177, 362.716336 +1.133333, 48.913607, 355.867803, 366.462501 +1.150000, 54.904723, 359.466952, 370.246561 +1.166667, 60.956405, 363.100925, 374.068883 +1.183333, 67.069239, 366.770028, 377.929837 +1.200000, 72.814788, 344.732917, 354.765804 +1.216667, 77.538831, 283.442633, 290.658256 +1.233333, 81.381165, 230.540014, 235.692882 +1.250000, 84.503011, 187.310775, 191.027267 +1.266667, 87.037904, 152.093560, 154.803066 +1.283333, 89.095184, 123.436820, 125.433725 +1.300000, 90.764180, 100.139760, 101.627269 +1.316667, 92.117744, 81.213813, 82.333301 +1.333333, 93.216936, 65.951549, 66.803970 +1.350000, 94.155659, 56.323391, 57.020913 +1.366667, 94.978024, 49.341851, 49.933603 +1.383333, 95.698573, 43.232957, 43.736662 +1.400000, 96.329867, 37.877628, 38.307599 +1.416667, 96.882926, 33.183545, 33.551532 +1.433333, 97.367418, 29.069557, 29.385251 +1.450000, 97.791824, 25.464357, 25.735782 +1.466667, 98.163580, 22.305314, 22.539141 +1.483333, 98.489204, 19.537437, 19.739239 +1.500000, 98.774411, 17.112463, 17.286909 +1.516667, 99.024212, 14.988042, 15.139061 +1.533333, 99.242996, 13.127025, 13.257934 +1.550000, 99.434610, 11.496829, 11.610441 +1.566667, 99.602424, 10.068886, 10.167588 +1.583333, 99.749393, 8.818149, 8.903978 +1.600000, 99.800348, 3.057276, 3.086056 +1.616667, 99.800390, 0.002531, 0.002555 +1.633333, 99.800390, 0.000000, 0.000000 +1.650000, 99.800390, 0.000000, 0.000000 +1.666667, 99.800390, 0.000000, 0.000000 +1.683333, 99.800390, 0.000000, 0.000000 +1.700000, 99.800390, 0.000000, 0.000000 +1.716667, 99.800390, 0.000000, 0.000000 +1.733333, 99.800390, 0.000000, 0.000000 +1.750000, 99.800390, 0.000000, 0.000000 +1.766667, 99.800390, 0.000000, 0.000000 +1.783333, 99.800390, 0.000000, 0.000000 +1.800000, 99.800390, 0.000000, 0.000000 +1.816667, 99.800390, 0.000000, 0.000000 +1.833333, 99.800390, 0.000000, 0.000000 +1.850000, 99.800390, 0.000000, 0.000000 +1.866667, 99.800390, 0.000000, 0.000000 +1.883333, 99.800390, 0.000000, 0.000000 +1.900000, 99.800390, 0.000000, 0.000000 +1.916667, 99.800390, 0.000000, 0.000000 +1.933333, 99.800390, 0.000000, 0.000000 +1.950000, 99.800390, 0.000000, 0.000000 +1.966667, 99.800390, 0.000000, 0.000000 +1.983333, 99.800390, 0.000000, 0.000000 +2.000000, 99.800390, 0.000000, 0.000000 +2.016667, 99.800390, 0.000000, 0.000000 +2.033333, 99.800390, 0.000000, 0.000000 +2.050000, 99.800390, 0.000000, 0.000000 +2.066667, 99.800390, 0.000000, 0.000000 +2.083333, 99.800390, 0.000000, 0.000000 +2.100000, 99.800390, 0.000000, 0.000000 +2.116667, 99.800390, 0.000000, 0.000000 +2.133333, 99.800390, 0.000000, 0.000000 +2.150000, 99.800390, 0.000000, 0.000000 +2.166667, 99.800390, 0.000000, 0.000000 +2.183333, 99.800390, 0.000000, 0.000000 +2.200000, 99.800390, 0.000000, 0.000000 +2.216667, 99.800390, 0.000000, 0.000000 +2.233333, 99.800390, 0.000000, 0.000000 +2.250000, 99.800390, 0.000000, 0.000000 +2.266667, 99.800390, 0.000000, 0.000000 +2.283333, 99.800390, 0.000000, 0.000000 +2.300000, 99.800390, 0.000000, 0.000000 +2.316667, 99.800390, 0.000000, 0.000000 +2.333333, 99.800390, 0.000000, 0.000000 +2.350000, 99.800390, 0.000000, 0.000000 +2.366667, 99.800390, 0.000000, 0.000000 +2.383333, 99.800390, 0.000000, 0.000000 +2.400000, 99.800390, 0.000000, 0.000000 +2.416667, 99.800390, 0.000000, 0.000000 +2.433333, 99.800390, 0.000000, 0.000000 +2.450000, 99.800390, 0.000000, 0.000000 +2.466667, 99.800390, 0.000000, 0.000000 +2.483333, 99.800390, 0.000000, 0.000000 +2.500000, 99.800390, 0.000000, 0.000000 +2.516667, 99.800390, 0.000000, 0.000000 +2.533333, 99.800390, 0.000000, 0.000000 +2.550000, 99.800390, 0.000000, 0.000000 +2.566667, 99.800390, 0.000000, 0.000000 +2.583333, 99.800390, 0.000000, 0.000000 +2.600000, 99.800390, 0.000000, 0.000000 +2.616667, 99.800390, 0.000000, 0.000000 +2.633333, 99.800390, 0.000000, 0.000000 +2.650000, 99.800390, 0.000000, 0.000000 +2.666667, 99.800390, 0.000000, 0.000000 +2.683333, 99.800390, 0.000000, 0.000000 +2.700000, 99.800390, 0.000000, 0.000000 +2.716667, 99.800390, 0.000000, 0.000000 +2.733333, 99.800390, 0.000000, 0.000000 +2.750000, 99.800390, 0.000000, 0.000000 +2.766667, 99.800390, 0.000000, 0.000000 +2.783333, 99.800390, 0.000000, 0.000000 +2.800000, 99.800390, 0.000000, 0.000000 +2.816667, 99.800390, 0.000000, 0.000000 +2.833333, 99.800390, 0.000000, 0.000000 +2.850000, 99.800390, 0.000000, 0.000000 +2.866667, 99.800390, 0.000000, 0.000000 +2.883333, 99.800390, 0.000000, 0.000000 +2.900000, 99.800390, 0.000000, 0.000000 +2.916667, 99.800390, 0.000000, 0.000000 +2.933333, 99.800390, 0.000000, 0.000000 +2.950000, 99.800390, 0.000000, 0.000000 +2.966667, 99.800390, 0.000000, 0.000000 +2.983333, 99.800390, 0.000000, 0.000000 +3.000000, 99.800390, 0.000000, 0.000000 +3.016667, 99.800390, 0.000000, 0.000000 +3.033333, 99.800390, 0.000000, 0.000000 +3.050000, 99.800390, 0.000000, 0.000000 +3.066667, 99.800390, 0.000000, 0.000000 +3.083333, 99.800390, 0.000000, 0.000000 +3.100000, 99.800390, 0.000000, 0.000000 +3.116667, 99.800390, 0.000000, 0.000000 +3.133333, 99.800390, 0.000000, 0.000000 +3.150000, 99.800390, 0.000000, 0.000000 +3.166667, 99.800390, 0.000000, 0.000000 +3.183333, 99.800390, 0.000000, 0.000000 +3.200000, 99.800390, 0.000000, 0.000000 +3.216667, 99.800390, 0.000000, 0.000000 +3.233333, 99.800390, 0.000000, 0.000000 +3.250000, 99.800390, 0.000000, 0.000000 +3.266667, 99.800390, 0.000000, 0.000000 +3.283333, 99.800390, 0.000000, 0.000000 +3.300000, 99.800390, 0.000000, 0.000000 +3.316667, 99.800390, 0.000000, 0.000000 +3.333333, 99.800390, 0.000000, 0.000000 +3.350000, 99.800390, 0.000000, 0.000000 +3.366667, 99.800390, 0.000000, 0.000000 +3.383333, 99.800390, 0.000000, 0.000000 +3.400000, 99.800390, 0.000000, 0.000000 +3.416667, 99.800390, 0.000000, 0.000000 +3.433333, 99.800390, 0.000000, 0.000000 +3.450000, 99.800390, 0.000000, 0.000000 +3.466667, 99.800390, 0.000000, 0.000000 +3.483333, 99.800390, 0.000000, 0.000000 +3.500000, 99.800390, 0.000000, 0.000000 +3.516667, 99.800390, 0.000000, 0.000000 +3.533333, 99.800390, 0.000000, 0.000000 +3.550000, 99.800390, 0.000000, 0.000000 +3.566667, 99.800390, 0.000000, 0.000000 +3.583333, 99.800390, 0.000000, 0.000000 +3.600000, 99.800390, 0.000000, 0.000000 +3.616667, 99.800390, 0.000000, 0.000000 +3.633333, 99.800390, 0.000000, 0.000000 +3.650000, 99.800390, 0.000000, 0.000000 +3.666667, 99.800390, 0.000000, 0.000000 +3.683333, 99.800390, 0.000000, 0.000000 +3.700000, 99.800390, 0.000000, 0.000000 +3.716667, 99.800390, 0.000000, 0.000000 +3.733333, 99.800390, 0.000000, 0.000000 +3.750000, 99.800390, 0.000000, 0.000000 +3.766667, 99.800390, 0.000000, 0.000000 +3.783333, 99.800390, 0.000000, 0.000000 +3.800000, 99.800390, 0.000000, 0.000000 +3.816667, 99.800390, 0.000000, 0.000000 +3.833333, 99.800390, 0.000000, 0.000000 +3.850000, 99.800390, 0.000000, 0.000000 +3.866667, 99.800390, 0.000000, 0.000000 +3.883333, 99.800390, 0.000000, 0.000000 +3.900000, 99.800390, 0.000000, 0.000000 +3.916667, 99.800390, 0.000000, 0.000000 +3.933333, 99.800390, 0.000000, 0.000000 +3.950000, 99.800390, 0.000000, 0.000000 +3.966667, 99.800390, 0.000000, 0.000000 +3.983333, 99.800390, 0.000000, 0.000000 +4.000000, 99.800390, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_350_ld_50kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_350_ld_50kWh.csv new file mode 100644 index 0000000..cb0fbc1 --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_350_ld_50kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 3.539523, 106.185693, 108.446743 +1.016667, 8.914655, 161.253967, 165.732814 +1.033333, 14.501086, 167.592915, 172.374666 +1.050000, 20.149390, 169.449135, 174.321474 +1.066667, 25.855008, 171.168530, 176.125544 +1.083333, 31.618483, 172.904264, 177.947505 +1.100000, 37.440379, 174.656869, 179.787938 +1.116667, 43.321262, 176.426494, 181.647022 +1.133333, 49.261705, 178.213288, 183.524938 +1.150000, 55.262285, 180.017402, 185.421868 +1.166667, 61.323585, 181.838988, 187.337997 +1.183333, 67.446191, 183.678199, 189.273511 +1.200000, 73.135726, 170.686050, 175.619229 +1.216667, 77.793213, 139.724612, 143.248650 +1.233333, 81.583485, 113.708137, 116.228943 +1.250000, 84.664902, 92.442512, 94.263740 +1.266667, 87.168127, 75.096745, 76.426397 +1.283333, 89.200400, 60.968188, 61.949295 +1.300000, 90.849504, 49.473140, 50.204685 +1.316667, 92.187146, 40.129247, 40.680244 +1.333333, 93.274607, 32.623833, 33.044204 +1.350000, 94.206790, 27.965501, 28.311217 +1.366667, 95.023453, 24.499894, 24.793249 +1.383333, 95.738941, 21.464635, 21.714354 +1.400000, 96.365739, 18.803942, 19.017113 +1.416667, 96.914804, 16.471933, 16.654378 +1.433333, 97.395746, 14.428269, 14.584787 +1.450000, 97.816996, 12.637497, 12.772067 +1.466667, 98.185945, 11.068479, 11.184406 +1.483333, 98.509074, 9.693873, 9.793920 +1.500000, 98.792064, 8.489682, 8.576163 +1.516667, 99.039892, 7.434848, 7.509712 +1.533333, 99.256922, 6.510900, 6.575792 +1.550000, 99.446977, 5.701638, 5.757952 +1.566667, 99.613405, 4.992859, 5.041779 +1.583333, 99.759142, 4.372110, 4.414647 +1.600000, 99.800286, 1.234310, 1.245889 +1.616667, 99.800320, 0.001022, 0.001031 +1.633333, 99.800320, 0.000000, 0.000000 +1.650000, 99.800320, 0.000000, 0.000000 +1.666667, 99.800320, 0.000000, 0.000000 +1.683333, 99.800320, 0.000000, 0.000000 +1.700000, 99.800320, 0.000000, 0.000000 +1.716667, 99.800320, 0.000000, 0.000000 +1.733333, 99.800320, 0.000000, 0.000000 +1.750000, 99.800320, 0.000000, 0.000000 +1.766667, 99.800320, 0.000000, 0.000000 +1.783333, 99.800320, 0.000000, 0.000000 +1.800000, 99.800320, 0.000000, 0.000000 +1.816667, 99.800320, 0.000000, 0.000000 +1.833333, 99.800320, 0.000000, 0.000000 +1.850000, 99.800320, 0.000000, 0.000000 +1.866667, 99.800320, 0.000000, 0.000000 +1.883333, 99.800320, 0.000000, 0.000000 +1.900000, 99.800320, 0.000000, 0.000000 +1.916667, 99.800320, 0.000000, 0.000000 +1.933333, 99.800320, 0.000000, 0.000000 +1.950000, 99.800320, 0.000000, 0.000000 +1.966667, 99.800320, 0.000000, 0.000000 +1.983333, 99.800320, 0.000000, 0.000000 +2.000000, 99.800320, 0.000000, 0.000000 +2.016667, 99.800320, 0.000000, 0.000000 +2.033333, 99.800320, 0.000000, 0.000000 +2.050000, 99.800320, 0.000000, 0.000000 +2.066667, 99.800320, 0.000000, 0.000000 +2.083333, 99.800320, 0.000000, 0.000000 +2.100000, 99.800320, 0.000000, 0.000000 +2.116667, 99.800320, 0.000000, 0.000000 +2.133333, 99.800320, 0.000000, 0.000000 +2.150000, 99.800320, 0.000000, 0.000000 +2.166667, 99.800320, 0.000000, 0.000000 +2.183333, 99.800320, 0.000000, 0.000000 +2.200000, 99.800320, 0.000000, 0.000000 +2.216667, 99.800320, 0.000000, 0.000000 +2.233333, 99.800320, 0.000000, 0.000000 +2.250000, 99.800320, 0.000000, 0.000000 +2.266667, 99.800320, 0.000000, 0.000000 +2.283333, 99.800320, 0.000000, 0.000000 +2.300000, 99.800320, 0.000000, 0.000000 +2.316667, 99.800320, 0.000000, 0.000000 +2.333333, 99.800320, 0.000000, 0.000000 +2.350000, 99.800320, 0.000000, 0.000000 +2.366667, 99.800320, 0.000000, 0.000000 +2.383333, 99.800320, 0.000000, 0.000000 +2.400000, 99.800320, 0.000000, 0.000000 +2.416667, 99.800320, 0.000000, 0.000000 +2.433333, 99.800320, 0.000000, 0.000000 +2.450000, 99.800320, 0.000000, 0.000000 +2.466667, 99.800320, 0.000000, 0.000000 +2.483333, 99.800320, 0.000000, 0.000000 +2.500000, 99.800320, 0.000000, 0.000000 +2.516667, 99.800320, 0.000000, 0.000000 +2.533333, 99.800320, 0.000000, 0.000000 +2.550000, 99.800320, 0.000000, 0.000000 +2.566667, 99.800320, 0.000000, 0.000000 +2.583333, 99.800320, 0.000000, 0.000000 +2.600000, 99.800320, 0.000000, 0.000000 +2.616667, 99.800320, 0.000000, 0.000000 +2.633333, 99.800320, 0.000000, 0.000000 +2.650000, 99.800320, 0.000000, 0.000000 +2.666667, 99.800320, 0.000000, 0.000000 +2.683333, 99.800320, 0.000000, 0.000000 +2.700000, 99.800320, 0.000000, 0.000000 +2.716667, 99.800320, 0.000000, 0.000000 +2.733333, 99.800320, 0.000000, 0.000000 +2.750000, 99.800320, 0.000000, 0.000000 +2.766667, 99.800320, 0.000000, 0.000000 +2.783333, 99.800320, 0.000000, 0.000000 +2.800000, 99.800320, 0.000000, 0.000000 +2.816667, 99.800320, 0.000000, 0.000000 +2.833333, 99.800320, 0.000000, 0.000000 +2.850000, 99.800320, 0.000000, 0.000000 +2.866667, 99.800320, 0.000000, 0.000000 +2.883333, 99.800320, 0.000000, 0.000000 +2.900000, 99.800320, 0.000000, 0.000000 +2.916667, 99.800320, 0.000000, 0.000000 +2.933333, 99.800320, 0.000000, 0.000000 +2.950000, 99.800320, 0.000000, 0.000000 +2.966667, 99.800320, 0.000000, 0.000000 +2.983333, 99.800320, 0.000000, 0.000000 +3.000000, 99.800320, 0.000000, 0.000000 +3.016667, 99.800320, 0.000000, 0.000000 +3.033333, 99.800320, 0.000000, 0.000000 +3.050000, 99.800320, 0.000000, 0.000000 +3.066667, 99.800320, 0.000000, 0.000000 +3.083333, 99.800320, 0.000000, 0.000000 +3.100000, 99.800320, 0.000000, 0.000000 +3.116667, 99.800320, 0.000000, 0.000000 +3.133333, 99.800320, 0.000000, 0.000000 +3.150000, 99.800320, 0.000000, 0.000000 +3.166667, 99.800320, 0.000000, 0.000000 +3.183333, 99.800320, 0.000000, 0.000000 +3.200000, 99.800320, 0.000000, 0.000000 +3.216667, 99.800320, 0.000000, 0.000000 +3.233333, 99.800320, 0.000000, 0.000000 +3.250000, 99.800320, 0.000000, 0.000000 +3.266667, 99.800320, 0.000000, 0.000000 +3.283333, 99.800320, 0.000000, 0.000000 +3.300000, 99.800320, 0.000000, 0.000000 +3.316667, 99.800320, 0.000000, 0.000000 +3.333333, 99.800320, 0.000000, 0.000000 +3.350000, 99.800320, 0.000000, 0.000000 +3.366667, 99.800320, 0.000000, 0.000000 +3.383333, 99.800320, 0.000000, 0.000000 +3.400000, 99.800320, 0.000000, 0.000000 +3.416667, 99.800320, 0.000000, 0.000000 +3.433333, 99.800320, 0.000000, 0.000000 +3.450000, 99.800320, 0.000000, 0.000000 +3.466667, 99.800320, 0.000000, 0.000000 +3.483333, 99.800320, 0.000000, 0.000000 +3.500000, 99.800320, 0.000000, 0.000000 +3.516667, 99.800320, 0.000000, 0.000000 +3.533333, 99.800320, 0.000000, 0.000000 +3.550000, 99.800320, 0.000000, 0.000000 +3.566667, 99.800320, 0.000000, 0.000000 +3.583333, 99.800320, 0.000000, 0.000000 +3.600000, 99.800320, 0.000000, 0.000000 +3.616667, 99.800320, 0.000000, 0.000000 +3.633333, 99.800320, 0.000000, 0.000000 +3.650000, 99.800320, 0.000000, 0.000000 +3.666667, 99.800320, 0.000000, 0.000000 +3.683333, 99.800320, 0.000000, 0.000000 +3.700000, 99.800320, 0.000000, 0.000000 +3.716667, 99.800320, 0.000000, 0.000000 +3.733333, 99.800320, 0.000000, 0.000000 +3.750000, 99.800320, 0.000000, 0.000000 +3.766667, 99.800320, 0.000000, 0.000000 +3.783333, 99.800320, 0.000000, 0.000000 +3.800000, 99.800320, 0.000000, 0.000000 +3.816667, 99.800320, 0.000000, 0.000000 +3.833333, 99.800320, 0.000000, 0.000000 +3.850000, 99.800320, 0.000000, 0.000000 +3.866667, 99.800320, 0.000000, 0.000000 +3.883333, 99.800320, 0.000000, 0.000000 +3.900000, 99.800320, 0.000000, 0.000000 +3.916667, 99.800320, 0.000000, 0.000000 +3.933333, 99.800320, 0.000000, 0.000000 +3.950000, 99.800320, 0.000000, 0.000000 +3.966667, 99.800320, 0.000000, 0.000000 +3.983333, 99.800320, 0.000000, 0.000000 +4.000000, 99.800320, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_350_md_200kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_350_md_200kWh.csv new file mode 100644 index 0000000..a68f76f --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_350_md_200kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 1.928979, 231.477537, 235.120890 +1.016667, 5.205695, 393.205850, 401.218892 +1.033333, 8.613072, 408.885237, 417.403567 +1.050000, 12.117102, 420.483661, 429.385153 +1.066667, 15.651586, 424.138071, 433.161945 +1.083333, 19.209012, 426.891098, 436.007693 +1.100000, 22.789497, 429.658194, 438.868439 +1.116667, 26.393187, 432.442780, 441.747727 +1.133333, 30.020228, 435.244960, 444.645674 +1.150000, 33.670769, 438.064839, 447.562397 +1.166667, 37.344956, 440.902523, 450.498016 +1.183333, 41.042941, 443.758117, 453.452649 +1.200000, 44.764872, 446.631730, 456.426416 +1.216667, 48.510901, 449.523469, 459.419439 +1.233333, 52.281179, 452.433440, 462.431838 +1.250000, 56.075860, 455.361754, 465.463736 +1.266667, 59.895098, 458.308518, 468.515256 +1.283333, 63.739047, 461.273843, 471.586521 +1.300000, 67.607862, 464.257839, 474.677655 +1.316667, 71.501701, 467.260617, 477.788784 +1.333333, 75.420720, 470.282288, 480.920034 +1.350000, 79.365078, 473.322963, 484.071530 +1.366667, 82.937810, 428.727858, 437.906566 +1.383333, 85.837132, 347.918702, 354.553893 +1.400000, 88.169511, 279.885464, 284.676893 +1.416667, 90.045210, 225.083855, 228.585682 +1.433333, 91.553446, 180.988292, 183.577962 +1.450000, 92.766084, 145.516543, 147.453065 +1.466667, 93.764772, 119.842584, 121.350943 +1.483333, 94.636661, 104.626712, 105.898909 +1.500000, 95.400431, 91.652324, 92.733460 +1.516667, 96.069468, 80.284448, 81.205963 +1.533333, 96.655488, 70.322489, 71.110091 +1.550000, 97.168768, 61.593520, 62.268356 +1.566667, 97.618315, 53.945665, 54.525207 +1.583333, 98.012028, 47.245584, 47.744328 +1.600000, 98.356830, 41.376251, 41.806275 +1.616667, 98.658788, 36.234990, 36.606398 +1.633333, 98.923220, 31.731737, 32.053013 +1.650000, 99.154782, 27.787511, 28.065807 +1.666667, 99.357558, 24.333065, 24.574428 +1.683333, 99.535122, 21.307691, 21.517255 +1.700000, 99.690607, 18.658182, 18.840315 +1.716667, 99.800162, 13.146691, 13.273013 +1.733333, 99.800254, 0.010954, 0.011055 +1.750000, 99.800254, 0.000000, 0.000000 +1.766667, 99.800254, 0.000000, 0.000000 +1.783333, 99.800254, 0.000000, 0.000000 +1.800000, 99.800254, 0.000000, 0.000000 +1.816667, 99.800254, 0.000000, 0.000000 +1.833333, 99.800254, 0.000000, 0.000000 +1.850000, 99.800254, 0.000000, 0.000000 +1.866667, 99.800254, 0.000000, 0.000000 +1.883333, 99.800254, 0.000000, 0.000000 +1.900000, 99.800254, 0.000000, 0.000000 +1.916667, 99.800254, 0.000000, 0.000000 +1.933333, 99.800254, 0.000000, 0.000000 +1.950000, 99.800254, 0.000000, 0.000000 +1.966667, 99.800254, 0.000000, 0.000000 +1.983333, 99.800254, 0.000000, 0.000000 +2.000000, 99.800254, 0.000000, 0.000000 +2.016667, 99.800254, 0.000000, 0.000000 +2.033333, 99.800254, 0.000000, 0.000000 +2.050000, 99.800254, 0.000000, 0.000000 +2.066667, 99.800254, 0.000000, 0.000000 +2.083333, 99.800254, 0.000000, 0.000000 +2.100000, 99.800254, 0.000000, 0.000000 +2.116667, 99.800254, 0.000000, 0.000000 +2.133333, 99.800254, 0.000000, 0.000000 +2.150000, 99.800254, 0.000000, 0.000000 +2.166667, 99.800254, 0.000000, 0.000000 +2.183333, 99.800254, 0.000000, 0.000000 +2.200000, 99.800254, 0.000000, 0.000000 +2.216667, 99.800254, 0.000000, 0.000000 +2.233333, 99.800254, 0.000000, 0.000000 +2.250000, 99.800254, 0.000000, 0.000000 +2.266667, 99.800254, 0.000000, 0.000000 +2.283333, 99.800254, 0.000000, 0.000000 +2.300000, 99.800254, 0.000000, 0.000000 +2.316667, 99.800254, 0.000000, 0.000000 +2.333333, 99.800254, 0.000000, 0.000000 +2.350000, 99.800254, 0.000000, 0.000000 +2.366667, 99.800254, 0.000000, 0.000000 +2.383333, 99.800254, 0.000000, 0.000000 +2.400000, 99.800254, 0.000000, 0.000000 +2.416667, 99.800254, 0.000000, 0.000000 +2.433333, 99.800254, 0.000000, 0.000000 +2.450000, 99.800254, 0.000000, 0.000000 +2.466667, 99.800254, 0.000000, 0.000000 +2.483333, 99.800254, 0.000000, 0.000000 +2.500000, 99.800254, 0.000000, 0.000000 +2.516667, 99.800254, 0.000000, 0.000000 +2.533333, 99.800254, 0.000000, 0.000000 +2.550000, 99.800254, 0.000000, 0.000000 +2.566667, 99.800254, 0.000000, 0.000000 +2.583333, 99.800254, 0.000000, 0.000000 +2.600000, 99.800254, 0.000000, 0.000000 +2.616667, 99.800254, 0.000000, 0.000000 +2.633333, 99.800254, 0.000000, 0.000000 +2.650000, 99.800254, 0.000000, 0.000000 +2.666667, 99.800254, 0.000000, 0.000000 +2.683333, 99.800254, 0.000000, 0.000000 +2.700000, 99.800254, 0.000000, 0.000000 +2.716667, 99.800254, 0.000000, 0.000000 +2.733333, 99.800254, 0.000000, 0.000000 +2.750000, 99.800254, 0.000000, 0.000000 +2.766667, 99.800254, 0.000000, 0.000000 +2.783333, 99.800254, 0.000000, 0.000000 +2.800000, 99.800254, 0.000000, 0.000000 +2.816667, 99.800254, 0.000000, 0.000000 +2.833333, 99.800254, 0.000000, 0.000000 +2.850000, 99.800254, 0.000000, 0.000000 +2.866667, 99.800254, 0.000000, 0.000000 +2.883333, 99.800254, 0.000000, 0.000000 +2.900000, 99.800254, 0.000000, 0.000000 +2.916667, 99.800254, 0.000000, 0.000000 +2.933333, 99.800254, 0.000000, 0.000000 +2.950000, 99.800254, 0.000000, 0.000000 +2.966667, 99.800254, 0.000000, 0.000000 +2.983333, 99.800254, 0.000000, 0.000000 +3.000000, 99.800254, 0.000000, 0.000000 +3.016667, 99.800254, 0.000000, 0.000000 +3.033333, 99.800254, 0.000000, 0.000000 +3.050000, 99.800254, 0.000000, 0.000000 +3.066667, 99.800254, 0.000000, 0.000000 +3.083333, 99.800254, 0.000000, 0.000000 +3.100000, 99.800254, 0.000000, 0.000000 +3.116667, 99.800254, 0.000000, 0.000000 +3.133333, 99.800254, 0.000000, 0.000000 +3.150000, 99.800254, 0.000000, 0.000000 +3.166667, 99.800254, 0.000000, 0.000000 +3.183333, 99.800254, 0.000000, 0.000000 +3.200000, 99.800254, 0.000000, 0.000000 +3.216667, 99.800254, 0.000000, 0.000000 +3.233333, 99.800254, 0.000000, 0.000000 +3.250000, 99.800254, 0.000000, 0.000000 +3.266667, 99.800254, 0.000000, 0.000000 +3.283333, 99.800254, 0.000000, 0.000000 +3.300000, 99.800254, 0.000000, 0.000000 +3.316667, 99.800254, 0.000000, 0.000000 +3.333333, 99.800254, 0.000000, 0.000000 +3.350000, 99.800254, 0.000000, 0.000000 +3.366667, 99.800254, 0.000000, 0.000000 +3.383333, 99.800254, 0.000000, 0.000000 +3.400000, 99.800254, 0.000000, 0.000000 +3.416667, 99.800254, 0.000000, 0.000000 +3.433333, 99.800254, 0.000000, 0.000000 +3.450000, 99.800254, 0.000000, 0.000000 +3.466667, 99.800254, 0.000000, 0.000000 +3.483333, 99.800254, 0.000000, 0.000000 +3.500000, 99.800254, 0.000000, 0.000000 +3.516667, 99.800254, 0.000000, 0.000000 +3.533333, 99.800254, 0.000000, 0.000000 +3.550000, 99.800254, 0.000000, 0.000000 +3.566667, 99.800254, 0.000000, 0.000000 +3.583333, 99.800254, 0.000000, 0.000000 +3.600000, 99.800254, 0.000000, 0.000000 +3.616667, 99.800254, 0.000000, 0.000000 +3.633333, 99.800254, 0.000000, 0.000000 +3.650000, 99.800254, 0.000000, 0.000000 +3.666667, 99.800254, 0.000000, 0.000000 +3.683333, 99.800254, 0.000000, 0.000000 +3.700000, 99.800254, 0.000000, 0.000000 +3.716667, 99.800254, 0.000000, 0.000000 +3.733333, 99.800254, 0.000000, 0.000000 +3.750000, 99.800254, 0.000000, 0.000000 +3.766667, 99.800254, 0.000000, 0.000000 +3.783333, 99.800254, 0.000000, 0.000000 +3.800000, 99.800254, 0.000000, 0.000000 +3.816667, 99.800254, 0.000000, 0.000000 +3.833333, 99.800254, 0.000000, 0.000000 +3.850000, 99.800254, 0.000000, 0.000000 +3.866667, 99.800254, 0.000000, 0.000000 +3.883333, 99.800254, 0.000000, 0.000000 +3.900000, 99.800254, 0.000000, 0.000000 +3.916667, 99.800254, 0.000000, 0.000000 +3.933333, 99.800254, 0.000000, 0.000000 +3.950000, 99.800254, 0.000000, 0.000000 +3.966667, 99.800254, 0.000000, 0.000000 +3.983333, 99.800254, 0.000000, 0.000000 +4.000000, 99.800254, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_500kW_hd_1000kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_500kW_hd_1000kWh.csv new file mode 100644 index 0000000..1f9f699 --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_500kW_hd_1000kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.524305, 314.583153, 318.041423 +1.016667, 1.474889, 570.350452, 577.436586 +1.033333, 2.456886, 589.197813, 596.580430 +1.050000, 3.471480, 608.756518, 616.451052 +1.066667, 4.516619, 627.083593, 635.074327 +1.083333, 5.573516, 634.138223, 642.243986 +1.100000, 6.638720, 639.122263, 647.309632 +1.116667, 7.712276, 644.133704, 652.403412 +1.133333, 8.794250, 649.184156, 657.537132 +1.150000, 9.884706, 654.273918, 662.711101 +1.166667, 10.981160, 657.872315, 666.369208 +1.183333, 12.079836, 659.205736, 667.724794 +1.200000, 13.180691, 660.513014, 669.053821 +1.216667, 14.283729, 661.822811, 670.385428 +1.233333, 15.388955, 663.135187, 671.719675 +1.250000, 16.496372, 664.450145, 673.056568 +1.266667, 17.605984, 665.767691, 674.396113 +1.283333, 18.717798, 667.087831, 675.738313 +1.300000, 19.831815, 668.410569, 677.083175 +1.316667, 20.948042, 669.735910, 678.430703 +1.333333, 22.066481, 671.063859, 679.780904 +1.350000, 23.187139, 672.394422, 681.133781 +1.366667, 24.310018, 673.727603, 682.489341 +1.383333, 25.435124, 675.063407, 683.847589 +1.400000, 26.562460, 676.401840, 685.208530 +1.416667, 27.692032, 677.742907, 686.572168 +1.433333, 28.823843, 679.086612, 687.938511 +1.450000, 29.957898, 680.432961, 689.307562 +1.466667, 31.094201, 681.781959, 690.679328 +1.483333, 32.232757, 683.133612, 692.053813 +1.500000, 33.373570, 684.487923, 693.431023 +1.516667, 34.516645, 685.844899, 694.810964 +1.533333, 35.661986, 687.204544, 696.193640 +1.550000, 36.809597, 688.566864, 697.579057 +1.566667, 37.959484, 689.931864, 698.967221 +1.583333, 39.111650, 691.299550, 700.358136 +1.600000, 40.266100, 692.669925, 701.751809 +1.616667, 41.422838, 694.042996, 703.148244 +1.633333, 42.581869, 695.418768, 704.547447 +1.650000, 43.743198, 696.797245, 705.949425 +1.666667, 44.906829, 698.178434, 707.354181 +1.683333, 46.072766, 699.562339, 708.761721 +1.700000, 47.241014, 700.948966, 710.172051 +1.716667, 48.411578, 702.338320, 711.585177 +1.733333, 49.584462, 703.730406, 713.001104 +1.750000, 50.759671, 705.125229, 714.419837 +1.766667, 51.937209, 706.522796, 715.841383 +1.783333, 53.117081, 707.923110, 717.265745 +1.800000, 54.299291, 709.326178, 718.692931 +1.816667, 55.483844, 710.732005, 720.122946 +1.833333, 56.670745, 712.140595, 721.555794 +1.850000, 57.859998, 713.551956, 722.991482 +1.866667, 59.051609, 714.966091, 724.430016 +1.883333, 60.245580, 716.383006, 725.871400 +1.900000, 61.441918, 717.802707, 727.315641 +1.916667, 62.640627, 719.225198, 728.762744 +1.933333, 63.841711, 720.650486, 730.212715 +1.950000, 65.045175, 722.078576, 731.665559 +1.966667, 66.251024, 723.509473, 733.121282 +1.983333, 67.459263, 724.943182, 734.579890 +2.000000, 68.669896, 726.379710, 736.041388 +2.016667, 69.882928, 727.819061, 737.505782 +2.033333, 71.098363, 729.261240, 738.973078 +2.050000, 72.316207, 730.706255, 740.443282 +2.066667, 73.536464, 732.154109, 741.916398 +2.083333, 74.759138, 733.604808, 743.392434 +2.100000, 75.984236, 735.058359, 744.871394 +2.116667, 77.211760, 736.514765, 746.353284 +2.133333, 78.441717, 737.974034, 747.838110 +2.150000, 79.674111, 739.436170, 749.325879 +2.166667, 80.908946, 740.901179, 750.816595 +2.183333, 82.146228, 742.369066, 752.310264 +2.200000, 83.385961, 743.839837, 753.806893 +2.216667, 84.628150, 745.313498, 755.306487 +2.233333, 85.872800, 746.790055, 756.809051 +2.250000, 87.119916, 748.269512, 758.314593 +2.266667, 88.369502, 749.751875, 759.823117 +2.283333, 89.621564, 751.237151, 761.334629 +2.300000, 90.876106, 752.725344, 762.849136 +2.316667, 92.133134, 754.216460, 764.366643 +2.333333, 93.391493, 755.015505, 765.179840 +2.350000, 94.532905, 684.847397, 693.796579 +2.366667, 95.498454, 579.329476, 586.556357 +2.383333, 96.310025, 486.942493, 492.764683 +2.400000, 96.992250, 409.335020, 414.051528 +2.416667, 97.565851, 344.160591, 348.000822 +2.433333, 98.048199, 289.408844, 292.549732 +2.450000, 98.453865, 243.399578, 245.978726 +2.466667, 98.795078, 204.727394, 206.852675 +2.483333, 99.082104, 172.215594, 173.972219 +2.500000, 99.323567, 144.878152, 146.333910 +2.516667, 99.526714, 121.888237, 123.097418 +2.533333, 99.697634, 102.552115, 103.558460 +2.550000, 99.801056, 62.053085, 62.648063 +2.566667, 99.801142, 0.051427, 0.051902 +2.583333, 99.801142, 0.000000, 0.000000 +2.600000, 99.801142, 0.000000, 0.000000 +2.616667, 99.801142, 0.000000, 0.000000 +2.633333, 99.801142, 0.000000, 0.000000 +2.650000, 99.801142, 0.000000, 0.000000 +2.666667, 99.801142, 0.000000, 0.000000 +2.683333, 99.801142, 0.000000, 0.000000 +2.700000, 99.801142, 0.000000, 0.000000 +2.716667, 99.801142, 0.000000, 0.000000 +2.733333, 99.801142, 0.000000, 0.000000 +2.750000, 99.801142, 0.000000, 0.000000 +2.766667, 99.801142, 0.000000, 0.000000 +2.783333, 99.801142, 0.000000, 0.000000 +2.800000, 99.801142, 0.000000, 0.000000 +2.816667, 99.801142, 0.000000, 0.000000 +2.833333, 99.801142, 0.000000, 0.000000 +2.850000, 99.801142, 0.000000, 0.000000 +2.866667, 99.801142, 0.000000, 0.000000 +2.883333, 99.801142, 0.000000, 0.000000 +2.900000, 99.801142, 0.000000, 0.000000 +2.916667, 99.801142, 0.000000, 0.000000 +2.933333, 99.801142, 0.000000, 0.000000 +2.950000, 99.801142, 0.000000, 0.000000 +2.966667, 99.801142, 0.000000, 0.000000 +2.983333, 99.801142, 0.000000, 0.000000 +3.000000, 99.801142, 0.000000, 0.000000 +3.016667, 99.801142, 0.000000, 0.000000 +3.033333, 99.801142, 0.000000, 0.000000 +3.050000, 99.801142, 0.000000, 0.000000 +3.066667, 99.801142, 0.000000, 0.000000 +3.083333, 99.801142, 0.000000, 0.000000 +3.100000, 99.801142, 0.000000, 0.000000 +3.116667, 99.801142, 0.000000, 0.000000 +3.133333, 99.801142, 0.000000, 0.000000 +3.150000, 99.801142, 0.000000, 0.000000 +3.166667, 99.801142, 0.000000, 0.000000 +3.183333, 99.801142, 0.000000, 0.000000 +3.200000, 99.801142, 0.000000, 0.000000 +3.216667, 99.801142, 0.000000, 0.000000 +3.233333, 99.801142, 0.000000, 0.000000 +3.250000, 99.801142, 0.000000, 0.000000 +3.266667, 99.801142, 0.000000, 0.000000 +3.283333, 99.801142, 0.000000, 0.000000 +3.300000, 99.801142, 0.000000, 0.000000 +3.316667, 99.801142, 0.000000, 0.000000 +3.333333, 99.801142, 0.000000, 0.000000 +3.350000, 99.801142, 0.000000, 0.000000 +3.366667, 99.801142, 0.000000, 0.000000 +3.383333, 99.801142, 0.000000, 0.000000 +3.400000, 99.801142, 0.000000, 0.000000 +3.416667, 99.801142, 0.000000, 0.000000 +3.433333, 99.801142, 0.000000, 0.000000 +3.450000, 99.801142, 0.000000, 0.000000 +3.466667, 99.801142, 0.000000, 0.000000 +3.483333, 99.801142, 0.000000, 0.000000 +3.500000, 99.801142, 0.000000, 0.000000 +3.516667, 99.801142, 0.000000, 0.000000 +3.533333, 99.801142, 0.000000, 0.000000 +3.550000, 99.801142, 0.000000, 0.000000 +3.566667, 99.801142, 0.000000, 0.000000 +3.583333, 99.801142, 0.000000, 0.000000 +3.600000, 99.801142, 0.000000, 0.000000 +3.616667, 99.801142, 0.000000, 0.000000 +3.633333, 99.801142, 0.000000, 0.000000 +3.650000, 99.801142, 0.000000, 0.000000 +3.666667, 99.801142, 0.000000, 0.000000 +3.683333, 99.801142, 0.000000, 0.000000 +3.700000, 99.801142, 0.000000, 0.000000 +3.716667, 99.801142, 0.000000, 0.000000 +3.733333, 99.801142, 0.000000, 0.000000 +3.750000, 99.801142, 0.000000, 0.000000 +3.766667, 99.801142, 0.000000, 0.000000 +3.783333, 99.801142, 0.000000, 0.000000 +3.800000, 99.801142, 0.000000, 0.000000 +3.816667, 99.801142, 0.000000, 0.000000 +3.833333, 99.801142, 0.000000, 0.000000 +3.850000, 99.801142, 0.000000, 0.000000 +3.866667, 99.801142, 0.000000, 0.000000 +3.883333, 99.801142, 0.000000, 0.000000 +3.900000, 99.801142, 0.000000, 0.000000 +3.916667, 99.801142, 0.000000, 0.000000 +3.933333, 99.801142, 0.000000, 0.000000 +3.950000, 99.801142, 0.000000, 0.000000 +3.966667, 99.801142, 0.000000, 0.000000 +3.983333, 99.801142, 0.000000, 0.000000 +4.000000, 99.801142, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_500kW_hd_300kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_500kW_hd_300kWh.csv new file mode 100644 index 0000000..00ff59f --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_500kW_hd_300kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 1.736281, 312.530600, 317.244540 +1.016667, 4.998397, 587.180942, 599.117177 +1.033333, 8.398415, 612.003107, 624.737329 +1.050000, 11.898381, 629.993943, 643.321772 +1.066667, 15.431415, 635.946093, 649.473136 +1.083333, 18.987403, 640.077786, 653.743941 +1.100000, 22.566440, 644.226769, 658.033300 +1.116667, 26.168673, 648.401976, 662.350459 +1.133333, 29.794249, 652.603564, 666.695596 +1.150000, 33.443314, 656.831689, 671.068885 +1.166667, 37.116017, 661.086511, 675.470506 +1.183333, 40.812507, 665.368190, 679.900637 +1.200000, 44.532934, 669.676885, 684.359457 +1.216667, 48.277449, 674.012757, 688.847148 +1.233333, 52.046204, 678.375969, 693.363893 +1.250000, 55.839353, 682.766683, 697.909873 +1.266667, 59.657047, 687.185063, 702.485273 +1.283333, 63.499443, 691.631272, 707.090280 +1.300000, 67.366696, 696.105477, 711.725078 +1.316667, 71.258962, 700.607844, 716.389856 +1.333333, 75.176398, 705.138539, 721.084802 +1.350000, 79.119163, 709.697730, 725.810106 +1.366667, 82.738433, 651.468639, 665.521826 +1.383333, 85.686620, 530.673648, 540.883825 +1.400000, 88.055248, 426.353025, 433.704886 +1.416667, 89.957709, 342.442848, 347.801775 +1.433333, 91.485915, 275.077162, 279.031737 +1.450000, 92.713612, 220.985437, 223.937535 +1.466667, 93.720813, 181.296245, 183.583269 +1.483333, 94.598496, 157.982875, 159.906929 +1.500000, 95.367238, 138.373585, 140.008157 +1.516667, 96.040577, 121.201040, 122.593950 +1.533333, 96.630325, 106.154568, 107.344810 +1.550000, 97.146837, 92.972127, 93.991762 +1.566667, 97.599191, 81.423708, 82.299212 +1.583333, 97.995343, 71.307468, 72.060800 +1.600000, 98.342267, 62.446333, 63.095781 +1.616667, 98.646073, 54.684995, 55.245853 +1.633333, 98.912113, 47.887268, 48.372373 +1.650000, 99.145078, 41.933757, 42.353925 +1.666667, 99.349077, 36.719801, 37.084181 +1.683333, 99.527709, 32.153674, 32.470024 +1.700000, 99.684125, 28.154992, 28.429916 +1.716667, 99.800167, 20.887435, 21.088586 +1.733333, 99.800264, 0.017414, 0.017575 +1.750000, 99.800264, 0.000000, 0.000000 +1.766667, 99.800264, 0.000000, 0.000000 +1.783333, 99.800264, 0.000000, 0.000000 +1.800000, 99.800264, 0.000000, 0.000000 +1.816667, 99.800264, 0.000000, 0.000000 +1.833333, 99.800264, 0.000000, 0.000000 +1.850000, 99.800264, 0.000000, 0.000000 +1.866667, 99.800264, 0.000000, 0.000000 +1.883333, 99.800264, 0.000000, 0.000000 +1.900000, 99.800264, 0.000000, 0.000000 +1.916667, 99.800264, 0.000000, 0.000000 +1.933333, 99.800264, 0.000000, 0.000000 +1.950000, 99.800264, 0.000000, 0.000000 +1.966667, 99.800264, 0.000000, 0.000000 +1.983333, 99.800264, 0.000000, 0.000000 +2.000000, 99.800264, 0.000000, 0.000000 +2.016667, 99.800264, 0.000000, 0.000000 +2.033333, 99.800264, 0.000000, 0.000000 +2.050000, 99.800264, 0.000000, 0.000000 +2.066667, 99.800264, 0.000000, 0.000000 +2.083333, 99.800264, 0.000000, 0.000000 +2.100000, 99.800264, 0.000000, 0.000000 +2.116667, 99.800264, 0.000000, 0.000000 +2.133333, 99.800264, 0.000000, 0.000000 +2.150000, 99.800264, 0.000000, 0.000000 +2.166667, 99.800264, 0.000000, 0.000000 +2.183333, 99.800264, 0.000000, 0.000000 +2.200000, 99.800264, 0.000000, 0.000000 +2.216667, 99.800264, 0.000000, 0.000000 +2.233333, 99.800264, 0.000000, 0.000000 +2.250000, 99.800264, 0.000000, 0.000000 +2.266667, 99.800264, 0.000000, 0.000000 +2.283333, 99.800264, 0.000000, 0.000000 +2.300000, 99.800264, 0.000000, 0.000000 +2.316667, 99.800264, 0.000000, 0.000000 +2.333333, 99.800264, 0.000000, 0.000000 +2.350000, 99.800264, 0.000000, 0.000000 +2.366667, 99.800264, 0.000000, 0.000000 +2.383333, 99.800264, 0.000000, 0.000000 +2.400000, 99.800264, 0.000000, 0.000000 +2.416667, 99.800264, 0.000000, 0.000000 +2.433333, 99.800264, 0.000000, 0.000000 +2.450000, 99.800264, 0.000000, 0.000000 +2.466667, 99.800264, 0.000000, 0.000000 +2.483333, 99.800264, 0.000000, 0.000000 +2.500000, 99.800264, 0.000000, 0.000000 +2.516667, 99.800264, 0.000000, 0.000000 +2.533333, 99.800264, 0.000000, 0.000000 +2.550000, 99.800264, 0.000000, 0.000000 +2.566667, 99.800264, 0.000000, 0.000000 +2.583333, 99.800264, 0.000000, 0.000000 +2.600000, 99.800264, 0.000000, 0.000000 +2.616667, 99.800264, 0.000000, 0.000000 +2.633333, 99.800264, 0.000000, 0.000000 +2.650000, 99.800264, 0.000000, 0.000000 +2.666667, 99.800264, 0.000000, 0.000000 +2.683333, 99.800264, 0.000000, 0.000000 +2.700000, 99.800264, 0.000000, 0.000000 +2.716667, 99.800264, 0.000000, 0.000000 +2.733333, 99.800264, 0.000000, 0.000000 +2.750000, 99.800264, 0.000000, 0.000000 +2.766667, 99.800264, 0.000000, 0.000000 +2.783333, 99.800264, 0.000000, 0.000000 +2.800000, 99.800264, 0.000000, 0.000000 +2.816667, 99.800264, 0.000000, 0.000000 +2.833333, 99.800264, 0.000000, 0.000000 +2.850000, 99.800264, 0.000000, 0.000000 +2.866667, 99.800264, 0.000000, 0.000000 +2.883333, 99.800264, 0.000000, 0.000000 +2.900000, 99.800264, 0.000000, 0.000000 +2.916667, 99.800264, 0.000000, 0.000000 +2.933333, 99.800264, 0.000000, 0.000000 +2.950000, 99.800264, 0.000000, 0.000000 +2.966667, 99.800264, 0.000000, 0.000000 +2.983333, 99.800264, 0.000000, 0.000000 +3.000000, 99.800264, 0.000000, 0.000000 +3.016667, 99.800264, 0.000000, 0.000000 +3.033333, 99.800264, 0.000000, 0.000000 +3.050000, 99.800264, 0.000000, 0.000000 +3.066667, 99.800264, 0.000000, 0.000000 +3.083333, 99.800264, 0.000000, 0.000000 +3.100000, 99.800264, 0.000000, 0.000000 +3.116667, 99.800264, 0.000000, 0.000000 +3.133333, 99.800264, 0.000000, 0.000000 +3.150000, 99.800264, 0.000000, 0.000000 +3.166667, 99.800264, 0.000000, 0.000000 +3.183333, 99.800264, 0.000000, 0.000000 +3.200000, 99.800264, 0.000000, 0.000000 +3.216667, 99.800264, 0.000000, 0.000000 +3.233333, 99.800264, 0.000000, 0.000000 +3.250000, 99.800264, 0.000000, 0.000000 +3.266667, 99.800264, 0.000000, 0.000000 +3.283333, 99.800264, 0.000000, 0.000000 +3.300000, 99.800264, 0.000000, 0.000000 +3.316667, 99.800264, 0.000000, 0.000000 +3.333333, 99.800264, 0.000000, 0.000000 +3.350000, 99.800264, 0.000000, 0.000000 +3.366667, 99.800264, 0.000000, 0.000000 +3.383333, 99.800264, 0.000000, 0.000000 +3.400000, 99.800264, 0.000000, 0.000000 +3.416667, 99.800264, 0.000000, 0.000000 +3.433333, 99.800264, 0.000000, 0.000000 +3.450000, 99.800264, 0.000000, 0.000000 +3.466667, 99.800264, 0.000000, 0.000000 +3.483333, 99.800264, 0.000000, 0.000000 +3.500000, 99.800264, 0.000000, 0.000000 +3.516667, 99.800264, 0.000000, 0.000000 +3.533333, 99.800264, 0.000000, 0.000000 +3.550000, 99.800264, 0.000000, 0.000000 +3.566667, 99.800264, 0.000000, 0.000000 +3.583333, 99.800264, 0.000000, 0.000000 +3.600000, 99.800264, 0.000000, 0.000000 +3.616667, 99.800264, 0.000000, 0.000000 +3.633333, 99.800264, 0.000000, 0.000000 +3.650000, 99.800264, 0.000000, 0.000000 +3.666667, 99.800264, 0.000000, 0.000000 +3.683333, 99.800264, 0.000000, 0.000000 +3.700000, 99.800264, 0.000000, 0.000000 +3.716667, 99.800264, 0.000000, 0.000000 +3.733333, 99.800264, 0.000000, 0.000000 +3.750000, 99.800264, 0.000000, 0.000000 +3.766667, 99.800264, 0.000000, 0.000000 +3.783333, 99.800264, 0.000000, 0.000000 +3.800000, 99.800264, 0.000000, 0.000000 +3.816667, 99.800264, 0.000000, 0.000000 +3.833333, 99.800264, 0.000000, 0.000000 +3.850000, 99.800264, 0.000000, 0.000000 +3.866667, 99.800264, 0.000000, 0.000000 +3.883333, 99.800264, 0.000000, 0.000000 +3.900000, 99.800264, 0.000000, 0.000000 +3.916667, 99.800264, 0.000000, 0.000000 +3.933333, 99.800264, 0.000000, 0.000000 +3.950000, 99.800264, 0.000000, 0.000000 +3.966667, 99.800264, 0.000000, 0.000000 +3.983333, 99.800264, 0.000000, 0.000000 +4.000000, 99.800264, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_500kW_hd_400kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_500kW_hd_400kWh.csv new file mode 100644 index 0000000..ea39cb4 --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_500kW_hd_400kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 1.300352, 312.084526, 316.330252 +1.016667, 3.724605, 581.820737, 591.964509 +1.033333, 6.269659, 610.812884, 621.715697 +1.050000, 8.874281, 625.109233, 636.395354 +1.066667, 11.530661, 637.531220, 649.155240 +1.083333, 14.204515, 641.725020, 653.464137 +1.100000, 16.891426, 644.858551, 656.684001 +1.116667, 19.591438, 648.002854, 659.915223 +1.133333, 22.304613, 651.162205, 663.162200 +1.150000, 25.031016, 654.336672, 666.425006 +1.166667, 27.770709, 657.526325, 669.703718 +1.183333, 30.523756, 660.731233, 672.998412 +1.200000, 33.290221, 663.951468, 676.309164 +1.216667, 36.070167, 667.187099, 679.636051 +1.233333, 38.863659, 670.438196, 682.979149 +1.250000, 41.670763, 673.704831, 686.338537 +1.266667, 44.491542, 676.987076, 689.714293 +1.283333, 47.326063, 680.285001, 693.106494 +1.300000, 50.174391, 683.598678, 696.515218 +1.316667, 53.036592, 686.928180, 699.940546 +1.333333, 55.912732, 690.273579, 703.382557 +1.350000, 58.802877, 693.634948, 706.841329 +1.366667, 61.707095, 697.012360, 710.316943 +1.383333, 64.625453, 700.405888, 713.809479 +1.400000, 67.558018, 703.815605, 717.319018 +1.416667, 70.504858, 707.241587, 720.845642 +1.433333, 73.466041, 710.683907, 724.389431 +1.450000, 76.441635, 714.142640, 727.950467 +1.466667, 79.431710, 717.617860, 731.528833 +1.483333, 82.436333, 721.109643, 735.124612 +1.500000, 85.358080, 701.219144, 714.646513 +1.516667, 87.791540, 584.030414, 594.231176 +1.533333, 89.750448, 470.138066, 477.585831 +1.550000, 91.322431, 377.275792, 382.755645 +1.566667, 92.584207, 302.826279, 306.906551 +1.583333, 93.611980, 246.665531, 249.794277 +1.600000, 94.503588, 213.985945, 216.602076 +1.616667, 95.284354, 187.383889, 189.604976 +1.633333, 95.968171, 164.116086, 166.007969 +1.650000, 96.567055, 143.732058, 145.348031 +1.666667, 97.091537, 125.875600, 127.259447 +1.683333, 97.550846, 110.234293, 111.422145 +1.700000, 97.953072, 96.534101, 97.555900 +1.716667, 98.305300, 84.534709, 85.415376 +1.733333, 98.613739, 74.025416, 74.785777 +1.750000, 98.883829, 64.821521, 65.479048 +1.766667, 99.120333, 56.761136, 57.330542 +1.783333, 99.327427, 49.702387, 50.196108 +1.800000, 99.508764, 43.520957, 43.949539 +1.816667, 99.667547, 38.107922, 38.480335 +1.833333, 99.800099, 31.812621, 32.120733 +1.850000, 99.800210, 0.026563, 0.026809 +1.866667, 99.800210, 0.000000, 0.000000 +1.883333, 99.800210, 0.000000, 0.000000 +1.900000, 99.800210, 0.000000, 0.000000 +1.916667, 99.800210, 0.000000, 0.000000 +1.933333, 99.800210, 0.000000, 0.000000 +1.950000, 99.800210, 0.000000, 0.000000 +1.966667, 99.800210, 0.000000, 0.000000 +1.983333, 99.800210, 0.000000, 0.000000 +2.000000, 99.800210, 0.000000, 0.000000 +2.016667, 99.800210, 0.000000, 0.000000 +2.033333, 99.800210, 0.000000, 0.000000 +2.050000, 99.800210, 0.000000, 0.000000 +2.066667, 99.800210, 0.000000, 0.000000 +2.083333, 99.800210, 0.000000, 0.000000 +2.100000, 99.800210, 0.000000, 0.000000 +2.116667, 99.800210, 0.000000, 0.000000 +2.133333, 99.800210, 0.000000, 0.000000 +2.150000, 99.800210, 0.000000, 0.000000 +2.166667, 99.800210, 0.000000, 0.000000 +2.183333, 99.800210, 0.000000, 0.000000 +2.200000, 99.800210, 0.000000, 0.000000 +2.216667, 99.800210, 0.000000, 0.000000 +2.233333, 99.800210, 0.000000, 0.000000 +2.250000, 99.800210, 0.000000, 0.000000 +2.266667, 99.800210, 0.000000, 0.000000 +2.283333, 99.800210, 0.000000, 0.000000 +2.300000, 99.800210, 0.000000, 0.000000 +2.316667, 99.800210, 0.000000, 0.000000 +2.333333, 99.800210, 0.000000, 0.000000 +2.350000, 99.800210, 0.000000, 0.000000 +2.366667, 99.800210, 0.000000, 0.000000 +2.383333, 99.800210, 0.000000, 0.000000 +2.400000, 99.800210, 0.000000, 0.000000 +2.416667, 99.800210, 0.000000, 0.000000 +2.433333, 99.800210, 0.000000, 0.000000 +2.450000, 99.800210, 0.000000, 0.000000 +2.466667, 99.800210, 0.000000, 0.000000 +2.483333, 99.800210, 0.000000, 0.000000 +2.500000, 99.800210, 0.000000, 0.000000 +2.516667, 99.800210, 0.000000, 0.000000 +2.533333, 99.800210, 0.000000, 0.000000 +2.550000, 99.800210, 0.000000, 0.000000 +2.566667, 99.800210, 0.000000, 0.000000 +2.583333, 99.800210, 0.000000, 0.000000 +2.600000, 99.800210, 0.000000, 0.000000 +2.616667, 99.800210, 0.000000, 0.000000 +2.633333, 99.800210, 0.000000, 0.000000 +2.650000, 99.800210, 0.000000, 0.000000 +2.666667, 99.800210, 0.000000, 0.000000 +2.683333, 99.800210, 0.000000, 0.000000 +2.700000, 99.800210, 0.000000, 0.000000 +2.716667, 99.800210, 0.000000, 0.000000 +2.733333, 99.800210, 0.000000, 0.000000 +2.750000, 99.800210, 0.000000, 0.000000 +2.766667, 99.800210, 0.000000, 0.000000 +2.783333, 99.800210, 0.000000, 0.000000 +2.800000, 99.800210, 0.000000, 0.000000 +2.816667, 99.800210, 0.000000, 0.000000 +2.833333, 99.800210, 0.000000, 0.000000 +2.850000, 99.800210, 0.000000, 0.000000 +2.866667, 99.800210, 0.000000, 0.000000 +2.883333, 99.800210, 0.000000, 0.000000 +2.900000, 99.800210, 0.000000, 0.000000 +2.916667, 99.800210, 0.000000, 0.000000 +2.933333, 99.800210, 0.000000, 0.000000 +2.950000, 99.800210, 0.000000, 0.000000 +2.966667, 99.800210, 0.000000, 0.000000 +2.983333, 99.800210, 0.000000, 0.000000 +3.000000, 99.800210, 0.000000, 0.000000 +3.016667, 99.800210, 0.000000, 0.000000 +3.033333, 99.800210, 0.000000, 0.000000 +3.050000, 99.800210, 0.000000, 0.000000 +3.066667, 99.800210, 0.000000, 0.000000 +3.083333, 99.800210, 0.000000, 0.000000 +3.100000, 99.800210, 0.000000, 0.000000 +3.116667, 99.800210, 0.000000, 0.000000 +3.133333, 99.800210, 0.000000, 0.000000 +3.150000, 99.800210, 0.000000, 0.000000 +3.166667, 99.800210, 0.000000, 0.000000 +3.183333, 99.800210, 0.000000, 0.000000 +3.200000, 99.800210, 0.000000, 0.000000 +3.216667, 99.800210, 0.000000, 0.000000 +3.233333, 99.800210, 0.000000, 0.000000 +3.250000, 99.800210, 0.000000, 0.000000 +3.266667, 99.800210, 0.000000, 0.000000 +3.283333, 99.800210, 0.000000, 0.000000 +3.300000, 99.800210, 0.000000, 0.000000 +3.316667, 99.800210, 0.000000, 0.000000 +3.333333, 99.800210, 0.000000, 0.000000 +3.350000, 99.800210, 0.000000, 0.000000 +3.366667, 99.800210, 0.000000, 0.000000 +3.383333, 99.800210, 0.000000, 0.000000 +3.400000, 99.800210, 0.000000, 0.000000 +3.416667, 99.800210, 0.000000, 0.000000 +3.433333, 99.800210, 0.000000, 0.000000 +3.450000, 99.800210, 0.000000, 0.000000 +3.466667, 99.800210, 0.000000, 0.000000 +3.483333, 99.800210, 0.000000, 0.000000 +3.500000, 99.800210, 0.000000, 0.000000 +3.516667, 99.800210, 0.000000, 0.000000 +3.533333, 99.800210, 0.000000, 0.000000 +3.550000, 99.800210, 0.000000, 0.000000 +3.566667, 99.800210, 0.000000, 0.000000 +3.583333, 99.800210, 0.000000, 0.000000 +3.600000, 99.800210, 0.000000, 0.000000 +3.616667, 99.800210, 0.000000, 0.000000 +3.633333, 99.800210, 0.000000, 0.000000 +3.650000, 99.800210, 0.000000, 0.000000 +3.666667, 99.800210, 0.000000, 0.000000 +3.683333, 99.800210, 0.000000, 0.000000 +3.700000, 99.800210, 0.000000, 0.000000 +3.716667, 99.800210, 0.000000, 0.000000 +3.733333, 99.800210, 0.000000, 0.000000 +3.750000, 99.800210, 0.000000, 0.000000 +3.766667, 99.800210, 0.000000, 0.000000 +3.783333, 99.800210, 0.000000, 0.000000 +3.800000, 99.800210, 0.000000, 0.000000 +3.816667, 99.800210, 0.000000, 0.000000 +3.833333, 99.800210, 0.000000, 0.000000 +3.850000, 99.800210, 0.000000, 0.000000 +3.866667, 99.800210, 0.000000, 0.000000 +3.883333, 99.800210, 0.000000, 0.000000 +3.900000, 99.800210, 0.000000, 0.000000 +3.916667, 99.800210, 0.000000, 0.000000 +3.933333, 99.800210, 0.000000, 0.000000 +3.950000, 99.800210, 0.000000, 0.000000 +3.966667, 99.800210, 0.000000, 0.000000 +3.983333, 99.800210, 0.000000, 0.000000 +4.000000, 99.800210, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_500kW_hd_600kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_500kW_hd_600kWh.csv new file mode 100644 index 0000000..e7bfcd0 --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_500kW_hd_600kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.872559, 314.121228, 317.941458 +1.016667, 2.471767, 575.714796, 584.130151 +1.033333, 4.158035, 607.056530, 616.109588 +1.050000, 5.895521, 625.495105, 634.932094 +1.066667, 7.655716, 633.670002, 643.279289 +1.083333, 9.438608, 641.841061, 651.623843 +1.100000, 11.240425, 648.654188, 658.582609 +1.116667, 13.049007, 651.089468, 661.070162 +1.133333, 14.863478, 653.209702, 663.235999 +1.150000, 16.683855, 655.335785, 665.407897 +1.166667, 18.510157, 657.468703, 667.586864 +1.183333, 20.342403, 659.608477, 669.772923 +1.200000, 22.180612, 661.755128, 671.966096 +1.216667, 24.024802, 663.908679, 674.166407 +1.233333, 25.874994, 666.069150, 676.373878 +1.250000, 27.731207, 668.236564, 678.588532 +1.266667, 29.593460, 670.410941, 680.810392 +1.283333, 31.461772, 672.592305, 683.039483 +1.300000, 33.336162, 674.780676, 685.275825 +1.316667, 35.216652, 676.976078, 687.519444 +1.333333, 37.103259, 679.178530, 689.770363 +1.350000, 38.996003, 681.388057, 692.028604 +1.366667, 40.894905, 683.604679, 694.294192 +1.383333, 42.799984, 685.828420, 696.567149 +1.400000, 44.711260, 688.059301, 698.847501 +1.416667, 46.628752, 690.297344, 701.135269 +1.433333, 48.552482, 692.542572, 703.430479 +1.450000, 50.482468, 694.795008, 705.733154 +1.466667, 52.418731, 697.054674, 708.043318 +1.483333, 54.361291, 699.321592, 710.360996 +1.500000, 56.310168, 701.595785, 712.686210 +1.516667, 58.265383, 703.877277, 715.018986 +1.533333, 60.226955, 706.166088, 717.359347 +1.550000, 62.194906, 708.462244, 719.707319 +1.566667, 64.169255, 710.765766, 722.062925 +1.583333, 66.150024, 713.076677, 724.426189 +1.600000, 68.137232, 715.395000, 726.797137 +1.616667, 70.130901, 717.720760, 729.175794 +1.633333, 72.131051, 720.053977, 731.562183 +1.650000, 74.137703, 722.394677, 733.956330 +1.666667, 76.150877, 724.742882, 736.358259 +1.683333, 78.170596, 727.098616, 738.767996 +1.700000, 80.196879, 729.461902, 741.185565 +1.716667, 82.229748, 731.832764, 743.610992 +1.733333, 84.269223, 734.211225, 746.044302 +1.750000, 86.315327, 736.597308, 748.485519 +1.766667, 88.368080, 738.991039, 750.934671 +1.783333, 90.294828, 693.629197, 704.541328 +1.800000, 91.930871, 588.975697, 597.658580 +1.816667, 93.307165, 495.465899, 502.333746 +1.833333, 94.464779, 416.740856, 422.209369 +1.850000, 95.438545, 350.555902, 354.938633 +1.866667, 96.257727, 294.905382, 298.438998 +1.883333, 96.946910, 248.105859, 250.970417 +1.900000, 97.526757, 208.744836, 211.078431 +1.916667, 98.014636, 175.636608, 177.546003 +1.933333, 98.425151, 147.785456, 149.353838 +1.950000, 98.770582, 124.354922, 125.647606 +1.966667, 99.061254, 104.642134, 105.710773 +1.983333, 99.305855, 88.056331, 88.942056 +2.000000, 99.511691, 74.100874, 74.836649 +2.016667, 99.684908, 62.358182, 62.970581 +2.033333, 99.800504, 41.614451, 42.015146 +2.050000, 99.800600, 0.034644, 0.034964 +2.066667, 99.800600, 0.000000, 0.000000 +2.083333, 99.800600, 0.000000, 0.000000 +2.100000, 99.800600, 0.000000, 0.000000 +2.116667, 99.800600, 0.000000, 0.000000 +2.133333, 99.800600, 0.000000, 0.000000 +2.150000, 99.800600, 0.000000, 0.000000 +2.166667, 99.800600, 0.000000, 0.000000 +2.183333, 99.800600, 0.000000, 0.000000 +2.200000, 99.800600, 0.000000, 0.000000 +2.216667, 99.800600, 0.000000, 0.000000 +2.233333, 99.800600, 0.000000, 0.000000 +2.250000, 99.800600, 0.000000, 0.000000 +2.266667, 99.800600, 0.000000, 0.000000 +2.283333, 99.800600, 0.000000, 0.000000 +2.300000, 99.800600, 0.000000, 0.000000 +2.316667, 99.800600, 0.000000, 0.000000 +2.333333, 99.800600, 0.000000, 0.000000 +2.350000, 99.800600, 0.000000, 0.000000 +2.366667, 99.800600, 0.000000, 0.000000 +2.383333, 99.800600, 0.000000, 0.000000 +2.400000, 99.800600, 0.000000, 0.000000 +2.416667, 99.800600, 0.000000, 0.000000 +2.433333, 99.800600, 0.000000, 0.000000 +2.450000, 99.800600, 0.000000, 0.000000 +2.466667, 99.800600, 0.000000, 0.000000 +2.483333, 99.800600, 0.000000, 0.000000 +2.500000, 99.800600, 0.000000, 0.000000 +2.516667, 99.800600, 0.000000, 0.000000 +2.533333, 99.800600, 0.000000, 0.000000 +2.550000, 99.800600, 0.000000, 0.000000 +2.566667, 99.800600, 0.000000, 0.000000 +2.583333, 99.800600, 0.000000, 0.000000 +2.600000, 99.800600, 0.000000, 0.000000 +2.616667, 99.800600, 0.000000, 0.000000 +2.633333, 99.800600, 0.000000, 0.000000 +2.650000, 99.800600, 0.000000, 0.000000 +2.666667, 99.800600, 0.000000, 0.000000 +2.683333, 99.800600, 0.000000, 0.000000 +2.700000, 99.800600, 0.000000, 0.000000 +2.716667, 99.800600, 0.000000, 0.000000 +2.733333, 99.800600, 0.000000, 0.000000 +2.750000, 99.800600, 0.000000, 0.000000 +2.766667, 99.800600, 0.000000, 0.000000 +2.783333, 99.800600, 0.000000, 0.000000 +2.800000, 99.800600, 0.000000, 0.000000 +2.816667, 99.800600, 0.000000, 0.000000 +2.833333, 99.800600, 0.000000, 0.000000 +2.850000, 99.800600, 0.000000, 0.000000 +2.866667, 99.800600, 0.000000, 0.000000 +2.883333, 99.800600, 0.000000, 0.000000 +2.900000, 99.800600, 0.000000, 0.000000 +2.916667, 99.800600, 0.000000, 0.000000 +2.933333, 99.800600, 0.000000, 0.000000 +2.950000, 99.800600, 0.000000, 0.000000 +2.966667, 99.800600, 0.000000, 0.000000 +2.983333, 99.800600, 0.000000, 0.000000 +3.000000, 99.800600, 0.000000, 0.000000 +3.016667, 99.800600, 0.000000, 0.000000 +3.033333, 99.800600, 0.000000, 0.000000 +3.050000, 99.800600, 0.000000, 0.000000 +3.066667, 99.800600, 0.000000, 0.000000 +3.083333, 99.800600, 0.000000, 0.000000 +3.100000, 99.800600, 0.000000, 0.000000 +3.116667, 99.800600, 0.000000, 0.000000 +3.133333, 99.800600, 0.000000, 0.000000 +3.150000, 99.800600, 0.000000, 0.000000 +3.166667, 99.800600, 0.000000, 0.000000 +3.183333, 99.800600, 0.000000, 0.000000 +3.200000, 99.800600, 0.000000, 0.000000 +3.216667, 99.800600, 0.000000, 0.000000 +3.233333, 99.800600, 0.000000, 0.000000 +3.250000, 99.800600, 0.000000, 0.000000 +3.266667, 99.800600, 0.000000, 0.000000 +3.283333, 99.800600, 0.000000, 0.000000 +3.300000, 99.800600, 0.000000, 0.000000 +3.316667, 99.800600, 0.000000, 0.000000 +3.333333, 99.800600, 0.000000, 0.000000 +3.350000, 99.800600, 0.000000, 0.000000 +3.366667, 99.800600, 0.000000, 0.000000 +3.383333, 99.800600, 0.000000, 0.000000 +3.400000, 99.800600, 0.000000, 0.000000 +3.416667, 99.800600, 0.000000, 0.000000 +3.433333, 99.800600, 0.000000, 0.000000 +3.450000, 99.800600, 0.000000, 0.000000 +3.466667, 99.800600, 0.000000, 0.000000 +3.483333, 99.800600, 0.000000, 0.000000 +3.500000, 99.800600, 0.000000, 0.000000 +3.516667, 99.800600, 0.000000, 0.000000 +3.533333, 99.800600, 0.000000, 0.000000 +3.550000, 99.800600, 0.000000, 0.000000 +3.566667, 99.800600, 0.000000, 0.000000 +3.583333, 99.800600, 0.000000, 0.000000 +3.600000, 99.800600, 0.000000, 0.000000 +3.616667, 99.800600, 0.000000, 0.000000 +3.633333, 99.800600, 0.000000, 0.000000 +3.650000, 99.800600, 0.000000, 0.000000 +3.666667, 99.800600, 0.000000, 0.000000 +3.683333, 99.800600, 0.000000, 0.000000 +3.700000, 99.800600, 0.000000, 0.000000 +3.716667, 99.800600, 0.000000, 0.000000 +3.733333, 99.800600, 0.000000, 0.000000 +3.750000, 99.800600, 0.000000, 0.000000 +3.766667, 99.800600, 0.000000, 0.000000 +3.783333, 99.800600, 0.000000, 0.000000 +3.800000, 99.800600, 0.000000, 0.000000 +3.816667, 99.800600, 0.000000, 0.000000 +3.833333, 99.800600, 0.000000, 0.000000 +3.850000, 99.800600, 0.000000, 0.000000 +3.866667, 99.800600, 0.000000, 0.000000 +3.883333, 99.800600, 0.000000, 0.000000 +3.900000, 99.800600, 0.000000, 0.000000 +3.916667, 99.800600, 0.000000, 0.000000 +3.933333, 99.800600, 0.000000, 0.000000 +3.950000, 99.800600, 0.000000, 0.000000 +3.966667, 99.800600, 0.000000, 0.000000 +3.983333, 99.800600, 0.000000, 0.000000 +4.000000, 99.800600, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_500kW_hd_800kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_500kW_hd_800kWh.csv new file mode 100644 index 0000000..a139b35 --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_500kW_hd_800kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 0.651958, 312.939947, 316.513989 +1.016667, 1.835924, 568.303430, 575.811326 +1.033333, 3.068310, 591.545437, 599.457143 +1.050000, 4.349933, 615.179065, 623.509249 +1.066667, 5.654880, 626.374457, 634.905646 +1.083333, 6.972544, 632.478900, 641.120439 +1.100000, 8.302970, 638.604587, 647.357395 +1.116667, 9.646281, 644.789068, 653.654754 +1.133333, 10.999954, 649.762870, 658.719730 +1.150000, 12.357300, 651.526248, 660.515518 +1.166667, 13.717970, 653.121425, 662.140051 +1.183333, 15.081970, 654.720023, 663.768104 +1.200000, 16.449308, 656.322498, 665.400142 +1.216667, 17.819993, 657.928859, 667.036175 +1.233333, 19.194033, 659.539115, 668.676212 +1.250000, 20.571436, 661.153276, 670.320262 +1.266667, 21.952209, 662.771351, 671.968336 +1.283333, 23.336362, 664.393349, 673.620444 +1.300000, 24.723902, 666.019280, 675.276595 +1.316667, 26.114838, 667.649152, 676.936798 +1.333333, 27.509178, 669.282976, 678.601065 +1.350000, 28.906929, 670.920761, 680.269404 +1.366667, 30.308101, 672.562515, 681.941825 +1.383333, 31.712702, 674.208249, 683.618339 +1.400000, 33.120739, 675.857972, 685.298955 +1.416667, 34.532222, 677.511694, 686.983684 +1.433333, 35.947158, 679.169423, 688.672534 +1.450000, 37.365556, 680.831170, 690.365517 +1.466667, 38.787425, 682.496944, 692.062642 +1.483333, 40.212772, 684.166754, 693.763920 +1.500000, 41.641607, 685.840611, 695.469359 +1.516667, 43.073937, 687.518524, 697.178971 +1.533333, 44.509772, 689.200502, 698.892766 +1.550000, 45.949119, 690.886555, 700.610753 +1.566667, 47.391987, 692.576693, 702.332943 +1.583333, 48.838385, 694.270925, 704.059346 +1.600000, 50.288321, 695.969261, 705.789973 +1.616667, 51.741803, 697.671712, 707.524832 +1.633333, 53.198841, 699.378286, 709.263935 +1.650000, 54.659443, 701.088993, 711.007293 +1.666667, 56.123618, 702.803844, 712.754914 +1.683333, 57.591374, 704.522848, 714.506810 +1.700000, 59.062720, 706.246015, 716.262991 +1.716667, 60.537664, 707.973355, 718.023468 +1.733333, 62.016216, 709.704878, 719.788250 +1.750000, 63.498384, 711.440593, 721.557348 +1.766667, 64.984177, 713.180511, 723.330773 +1.783333, 66.473603, 714.924642, 725.108535 +1.800000, 67.966672, 716.672995, 726.890644 +1.816667, 69.463392, 718.425580, 728.677112 +1.833333, 70.963772, 720.182409, 730.467948 +1.850000, 72.467821, 721.943490, 732.263164 +1.866667, 73.975548, 723.708834, 734.062769 +1.883333, 75.486961, 725.478450, 735.866775 +1.900000, 77.002070, 727.252350, 737.675191 +1.916667, 78.520884, 729.030543, 739.488030 +1.933333, 80.043411, 730.813039, 741.305301 +1.950000, 81.569661, 732.599848, 743.127015 +1.966667, 83.099642, 734.390982, 744.953183 +1.983333, 84.633364, 736.186449, 746.783816 +2.000000, 86.170835, 737.986261, 748.618925 +2.016667, 87.712065, 739.790427, 750.458520 +2.033333, 89.257063, 741.598958, 752.302612 +2.050000, 90.805838, 743.411864, 754.151212 +2.066667, 92.323479, 728.467755, 738.914272 +2.083333, 93.637249, 630.609973, 639.217671 +2.100000, 94.744167, 531.320534, 538.201675 +2.116667, 95.674823, 446.714827, 452.234926 +2.133333, 96.457386, 375.630368, 380.085034 +2.150000, 97.115514, 315.901229, 319.515627 +2.166667, 97.669057, 265.700713, 268.647620 +2.183333, 98.134681, 223.499615, 225.912702 +2.200000, 98.526383, 188.016808, 190.000327 +2.216667, 98.855921, 158.178221, 159.814108 +2.233333, 99.133177, 133.082826, 134.435952 +2.250000, 99.366457, 111.974369, 113.096449 +2.266667, 99.562744, 94.217836, 95.150361 +2.283333, 99.727910, 79.279825, 80.056279 +2.300000, 99.801549, 35.346615, 35.682023 +2.316667, 99.801609, 0.028915, 0.029182 +2.333333, 99.801609, 0.000000, 0.000000 +2.350000, 99.801609, 0.000000, 0.000000 +2.366667, 99.801609, 0.000000, 0.000000 +2.383333, 99.801609, 0.000000, 0.000000 +2.400000, 99.801609, 0.000000, 0.000000 +2.416667, 99.801609, 0.000000, 0.000000 +2.433333, 99.801609, 0.000000, 0.000000 +2.450000, 99.801609, 0.000000, 0.000000 +2.466667, 99.801609, 0.000000, 0.000000 +2.483333, 99.801609, 0.000000, 0.000000 +2.500000, 99.801609, 0.000000, 0.000000 +2.516667, 99.801609, 0.000000, 0.000000 +2.533333, 99.801609, 0.000000, 0.000000 +2.550000, 99.801609, 0.000000, 0.000000 +2.566667, 99.801609, 0.000000, 0.000000 +2.583333, 99.801609, 0.000000, 0.000000 +2.600000, 99.801609, 0.000000, 0.000000 +2.616667, 99.801609, 0.000000, 0.000000 +2.633333, 99.801609, 0.000000, 0.000000 +2.650000, 99.801609, 0.000000, 0.000000 +2.666667, 99.801609, 0.000000, 0.000000 +2.683333, 99.801609, 0.000000, 0.000000 +2.700000, 99.801609, 0.000000, 0.000000 +2.716667, 99.801609, 0.000000, 0.000000 +2.733333, 99.801609, 0.000000, 0.000000 +2.750000, 99.801609, 0.000000, 0.000000 +2.766667, 99.801609, 0.000000, 0.000000 +2.783333, 99.801609, 0.000000, 0.000000 +2.800000, 99.801609, 0.000000, 0.000000 +2.816667, 99.801609, 0.000000, 0.000000 +2.833333, 99.801609, 0.000000, 0.000000 +2.850000, 99.801609, 0.000000, 0.000000 +2.866667, 99.801609, 0.000000, 0.000000 +2.883333, 99.801609, 0.000000, 0.000000 +2.900000, 99.801609, 0.000000, 0.000000 +2.916667, 99.801609, 0.000000, 0.000000 +2.933333, 99.801609, 0.000000, 0.000000 +2.950000, 99.801609, 0.000000, 0.000000 +2.966667, 99.801609, 0.000000, 0.000000 +2.983333, 99.801609, 0.000000, 0.000000 +3.000000, 99.801609, 0.000000, 0.000000 +3.016667, 99.801609, 0.000000, 0.000000 +3.033333, 99.801609, 0.000000, 0.000000 +3.050000, 99.801609, 0.000000, 0.000000 +3.066667, 99.801609, 0.000000, 0.000000 +3.083333, 99.801609, 0.000000, 0.000000 +3.100000, 99.801609, 0.000000, 0.000000 +3.116667, 99.801609, 0.000000, 0.000000 +3.133333, 99.801609, 0.000000, 0.000000 +3.150000, 99.801609, 0.000000, 0.000000 +3.166667, 99.801609, 0.000000, 0.000000 +3.183333, 99.801609, 0.000000, 0.000000 +3.200000, 99.801609, 0.000000, 0.000000 +3.216667, 99.801609, 0.000000, 0.000000 +3.233333, 99.801609, 0.000000, 0.000000 +3.250000, 99.801609, 0.000000, 0.000000 +3.266667, 99.801609, 0.000000, 0.000000 +3.283333, 99.801609, 0.000000, 0.000000 +3.300000, 99.801609, 0.000000, 0.000000 +3.316667, 99.801609, 0.000000, 0.000000 +3.333333, 99.801609, 0.000000, 0.000000 +3.350000, 99.801609, 0.000000, 0.000000 +3.366667, 99.801609, 0.000000, 0.000000 +3.383333, 99.801609, 0.000000, 0.000000 +3.400000, 99.801609, 0.000000, 0.000000 +3.416667, 99.801609, 0.000000, 0.000000 +3.433333, 99.801609, 0.000000, 0.000000 +3.450000, 99.801609, 0.000000, 0.000000 +3.466667, 99.801609, 0.000000, 0.000000 +3.483333, 99.801609, 0.000000, 0.000000 +3.500000, 99.801609, 0.000000, 0.000000 +3.516667, 99.801609, 0.000000, 0.000000 +3.533333, 99.801609, 0.000000, 0.000000 +3.550000, 99.801609, 0.000000, 0.000000 +3.566667, 99.801609, 0.000000, 0.000000 +3.583333, 99.801609, 0.000000, 0.000000 +3.600000, 99.801609, 0.000000, 0.000000 +3.616667, 99.801609, 0.000000, 0.000000 +3.633333, 99.801609, 0.000000, 0.000000 +3.650000, 99.801609, 0.000000, 0.000000 +3.666667, 99.801609, 0.000000, 0.000000 +3.683333, 99.801609, 0.000000, 0.000000 +3.700000, 99.801609, 0.000000, 0.000000 +3.716667, 99.801609, 0.000000, 0.000000 +3.733333, 99.801609, 0.000000, 0.000000 +3.750000, 99.801609, 0.000000, 0.000000 +3.766667, 99.801609, 0.000000, 0.000000 +3.783333, 99.801609, 0.000000, 0.000000 +3.800000, 99.801609, 0.000000, 0.000000 +3.816667, 99.801609, 0.000000, 0.000000 +3.833333, 99.801609, 0.000000, 0.000000 +3.850000, 99.801609, 0.000000, 0.000000 +3.866667, 99.801609, 0.000000, 0.000000 +3.883333, 99.801609, 0.000000, 0.000000 +3.900000, 99.801609, 0.000000, 0.000000 +3.916667, 99.801609, 0.000000, 0.000000 +3.933333, 99.801609, 0.000000, 0.000000 +3.950000, 99.801609, 0.000000, 0.000000 +3.966667, 99.801609, 0.000000, 0.000000 +3.983333, 99.801609, 0.000000, 0.000000 +4.000000, 99.801609, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_500kW_ld_100kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_500kW_ld_100kWh.csv new file mode 100644 index 0000000..863092c --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_500kW_ld_100kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 3.277102, 196.626130, 200.633388 +1.016667, 8.631848, 321.284722, 330.185018 +1.033333, 14.206680, 334.489924, 344.019657 +1.050000, 19.846382, 338.382162, 348.101550 +1.066667, 25.543273, 341.813443, 351.701589 +1.083333, 31.297878, 345.276294, 355.336239 +1.100000, 37.110757, 348.772774, 359.007702 +1.116667, 42.982477, 352.303177, 362.716336 +1.133333, 48.913607, 355.867803, 366.462501 +1.150000, 54.904723, 359.466952, 370.246561 +1.166667, 60.956405, 363.100925, 374.068883 +1.183333, 67.069239, 366.770028, 377.929837 +1.200000, 72.814788, 344.732917, 354.765804 +1.216667, 77.538831, 283.442633, 290.658256 +1.233333, 81.381165, 230.540014, 235.692882 +1.250000, 84.503011, 187.310775, 191.027267 +1.266667, 87.037904, 152.093560, 154.803066 +1.283333, 89.095184, 123.436820, 125.433725 +1.300000, 90.764180, 100.139760, 101.627269 +1.316667, 92.117744, 81.213813, 82.333301 +1.333333, 93.216936, 65.951549, 66.803970 +1.350000, 94.155659, 56.323391, 57.020913 +1.366667, 94.978024, 49.341851, 49.933603 +1.383333, 95.698573, 43.232957, 43.736662 +1.400000, 96.329867, 37.877628, 38.307599 +1.416667, 96.882926, 33.183545, 33.551532 +1.433333, 97.367418, 29.069557, 29.385251 +1.450000, 97.791824, 25.464357, 25.735782 +1.466667, 98.163580, 22.305314, 22.539141 +1.483333, 98.489204, 19.537437, 19.739239 +1.500000, 98.774411, 17.112463, 17.286909 +1.516667, 99.024212, 14.988042, 15.139061 +1.533333, 99.242996, 13.127025, 13.257934 +1.550000, 99.434610, 11.496829, 11.610441 +1.566667, 99.602424, 10.068886, 10.167588 +1.583333, 99.749393, 8.818149, 8.903978 +1.600000, 99.800348, 3.057276, 3.086056 +1.616667, 99.800390, 0.002531, 0.002555 +1.633333, 99.800390, 0.000000, 0.000000 +1.650000, 99.800390, 0.000000, 0.000000 +1.666667, 99.800390, 0.000000, 0.000000 +1.683333, 99.800390, 0.000000, 0.000000 +1.700000, 99.800390, 0.000000, 0.000000 +1.716667, 99.800390, 0.000000, 0.000000 +1.733333, 99.800390, 0.000000, 0.000000 +1.750000, 99.800390, 0.000000, 0.000000 +1.766667, 99.800390, 0.000000, 0.000000 +1.783333, 99.800390, 0.000000, 0.000000 +1.800000, 99.800390, 0.000000, 0.000000 +1.816667, 99.800390, 0.000000, 0.000000 +1.833333, 99.800390, 0.000000, 0.000000 +1.850000, 99.800390, 0.000000, 0.000000 +1.866667, 99.800390, 0.000000, 0.000000 +1.883333, 99.800390, 0.000000, 0.000000 +1.900000, 99.800390, 0.000000, 0.000000 +1.916667, 99.800390, 0.000000, 0.000000 +1.933333, 99.800390, 0.000000, 0.000000 +1.950000, 99.800390, 0.000000, 0.000000 +1.966667, 99.800390, 0.000000, 0.000000 +1.983333, 99.800390, 0.000000, 0.000000 +2.000000, 99.800390, 0.000000, 0.000000 +2.016667, 99.800390, 0.000000, 0.000000 +2.033333, 99.800390, 0.000000, 0.000000 +2.050000, 99.800390, 0.000000, 0.000000 +2.066667, 99.800390, 0.000000, 0.000000 +2.083333, 99.800390, 0.000000, 0.000000 +2.100000, 99.800390, 0.000000, 0.000000 +2.116667, 99.800390, 0.000000, 0.000000 +2.133333, 99.800390, 0.000000, 0.000000 +2.150000, 99.800390, 0.000000, 0.000000 +2.166667, 99.800390, 0.000000, 0.000000 +2.183333, 99.800390, 0.000000, 0.000000 +2.200000, 99.800390, 0.000000, 0.000000 +2.216667, 99.800390, 0.000000, 0.000000 +2.233333, 99.800390, 0.000000, 0.000000 +2.250000, 99.800390, 0.000000, 0.000000 +2.266667, 99.800390, 0.000000, 0.000000 +2.283333, 99.800390, 0.000000, 0.000000 +2.300000, 99.800390, 0.000000, 0.000000 +2.316667, 99.800390, 0.000000, 0.000000 +2.333333, 99.800390, 0.000000, 0.000000 +2.350000, 99.800390, 0.000000, 0.000000 +2.366667, 99.800390, 0.000000, 0.000000 +2.383333, 99.800390, 0.000000, 0.000000 +2.400000, 99.800390, 0.000000, 0.000000 +2.416667, 99.800390, 0.000000, 0.000000 +2.433333, 99.800390, 0.000000, 0.000000 +2.450000, 99.800390, 0.000000, 0.000000 +2.466667, 99.800390, 0.000000, 0.000000 +2.483333, 99.800390, 0.000000, 0.000000 +2.500000, 99.800390, 0.000000, 0.000000 +2.516667, 99.800390, 0.000000, 0.000000 +2.533333, 99.800390, 0.000000, 0.000000 +2.550000, 99.800390, 0.000000, 0.000000 +2.566667, 99.800390, 0.000000, 0.000000 +2.583333, 99.800390, 0.000000, 0.000000 +2.600000, 99.800390, 0.000000, 0.000000 +2.616667, 99.800390, 0.000000, 0.000000 +2.633333, 99.800390, 0.000000, 0.000000 +2.650000, 99.800390, 0.000000, 0.000000 +2.666667, 99.800390, 0.000000, 0.000000 +2.683333, 99.800390, 0.000000, 0.000000 +2.700000, 99.800390, 0.000000, 0.000000 +2.716667, 99.800390, 0.000000, 0.000000 +2.733333, 99.800390, 0.000000, 0.000000 +2.750000, 99.800390, 0.000000, 0.000000 +2.766667, 99.800390, 0.000000, 0.000000 +2.783333, 99.800390, 0.000000, 0.000000 +2.800000, 99.800390, 0.000000, 0.000000 +2.816667, 99.800390, 0.000000, 0.000000 +2.833333, 99.800390, 0.000000, 0.000000 +2.850000, 99.800390, 0.000000, 0.000000 +2.866667, 99.800390, 0.000000, 0.000000 +2.883333, 99.800390, 0.000000, 0.000000 +2.900000, 99.800390, 0.000000, 0.000000 +2.916667, 99.800390, 0.000000, 0.000000 +2.933333, 99.800390, 0.000000, 0.000000 +2.950000, 99.800390, 0.000000, 0.000000 +2.966667, 99.800390, 0.000000, 0.000000 +2.983333, 99.800390, 0.000000, 0.000000 +3.000000, 99.800390, 0.000000, 0.000000 +3.016667, 99.800390, 0.000000, 0.000000 +3.033333, 99.800390, 0.000000, 0.000000 +3.050000, 99.800390, 0.000000, 0.000000 +3.066667, 99.800390, 0.000000, 0.000000 +3.083333, 99.800390, 0.000000, 0.000000 +3.100000, 99.800390, 0.000000, 0.000000 +3.116667, 99.800390, 0.000000, 0.000000 +3.133333, 99.800390, 0.000000, 0.000000 +3.150000, 99.800390, 0.000000, 0.000000 +3.166667, 99.800390, 0.000000, 0.000000 +3.183333, 99.800390, 0.000000, 0.000000 +3.200000, 99.800390, 0.000000, 0.000000 +3.216667, 99.800390, 0.000000, 0.000000 +3.233333, 99.800390, 0.000000, 0.000000 +3.250000, 99.800390, 0.000000, 0.000000 +3.266667, 99.800390, 0.000000, 0.000000 +3.283333, 99.800390, 0.000000, 0.000000 +3.300000, 99.800390, 0.000000, 0.000000 +3.316667, 99.800390, 0.000000, 0.000000 +3.333333, 99.800390, 0.000000, 0.000000 +3.350000, 99.800390, 0.000000, 0.000000 +3.366667, 99.800390, 0.000000, 0.000000 +3.383333, 99.800390, 0.000000, 0.000000 +3.400000, 99.800390, 0.000000, 0.000000 +3.416667, 99.800390, 0.000000, 0.000000 +3.433333, 99.800390, 0.000000, 0.000000 +3.450000, 99.800390, 0.000000, 0.000000 +3.466667, 99.800390, 0.000000, 0.000000 +3.483333, 99.800390, 0.000000, 0.000000 +3.500000, 99.800390, 0.000000, 0.000000 +3.516667, 99.800390, 0.000000, 0.000000 +3.533333, 99.800390, 0.000000, 0.000000 +3.550000, 99.800390, 0.000000, 0.000000 +3.566667, 99.800390, 0.000000, 0.000000 +3.583333, 99.800390, 0.000000, 0.000000 +3.600000, 99.800390, 0.000000, 0.000000 +3.616667, 99.800390, 0.000000, 0.000000 +3.633333, 99.800390, 0.000000, 0.000000 +3.650000, 99.800390, 0.000000, 0.000000 +3.666667, 99.800390, 0.000000, 0.000000 +3.683333, 99.800390, 0.000000, 0.000000 +3.700000, 99.800390, 0.000000, 0.000000 +3.716667, 99.800390, 0.000000, 0.000000 +3.733333, 99.800390, 0.000000, 0.000000 +3.750000, 99.800390, 0.000000, 0.000000 +3.766667, 99.800390, 0.000000, 0.000000 +3.783333, 99.800390, 0.000000, 0.000000 +3.800000, 99.800390, 0.000000, 0.000000 +3.816667, 99.800390, 0.000000, 0.000000 +3.833333, 99.800390, 0.000000, 0.000000 +3.850000, 99.800390, 0.000000, 0.000000 +3.866667, 99.800390, 0.000000, 0.000000 +3.883333, 99.800390, 0.000000, 0.000000 +3.900000, 99.800390, 0.000000, 0.000000 +3.916667, 99.800390, 0.000000, 0.000000 +3.933333, 99.800390, 0.000000, 0.000000 +3.950000, 99.800390, 0.000000, 0.000000 +3.966667, 99.800390, 0.000000, 0.000000 +3.983333, 99.800390, 0.000000, 0.000000 +4.000000, 99.800390, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_500kW_ld_50kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_500kW_ld_50kWh.csv new file mode 100644 index 0000000..cb0fbc1 --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_500kW_ld_50kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 3.539523, 106.185693, 108.446743 +1.016667, 8.914655, 161.253967, 165.732814 +1.033333, 14.501086, 167.592915, 172.374666 +1.050000, 20.149390, 169.449135, 174.321474 +1.066667, 25.855008, 171.168530, 176.125544 +1.083333, 31.618483, 172.904264, 177.947505 +1.100000, 37.440379, 174.656869, 179.787938 +1.116667, 43.321262, 176.426494, 181.647022 +1.133333, 49.261705, 178.213288, 183.524938 +1.150000, 55.262285, 180.017402, 185.421868 +1.166667, 61.323585, 181.838988, 187.337997 +1.183333, 67.446191, 183.678199, 189.273511 +1.200000, 73.135726, 170.686050, 175.619229 +1.216667, 77.793213, 139.724612, 143.248650 +1.233333, 81.583485, 113.708137, 116.228943 +1.250000, 84.664902, 92.442512, 94.263740 +1.266667, 87.168127, 75.096745, 76.426397 +1.283333, 89.200400, 60.968188, 61.949295 +1.300000, 90.849504, 49.473140, 50.204685 +1.316667, 92.187146, 40.129247, 40.680244 +1.333333, 93.274607, 32.623833, 33.044204 +1.350000, 94.206790, 27.965501, 28.311217 +1.366667, 95.023453, 24.499894, 24.793249 +1.383333, 95.738941, 21.464635, 21.714354 +1.400000, 96.365739, 18.803942, 19.017113 +1.416667, 96.914804, 16.471933, 16.654378 +1.433333, 97.395746, 14.428269, 14.584787 +1.450000, 97.816996, 12.637497, 12.772067 +1.466667, 98.185945, 11.068479, 11.184406 +1.483333, 98.509074, 9.693873, 9.793920 +1.500000, 98.792064, 8.489682, 8.576163 +1.516667, 99.039892, 7.434848, 7.509712 +1.533333, 99.256922, 6.510900, 6.575792 +1.550000, 99.446977, 5.701638, 5.757952 +1.566667, 99.613405, 4.992859, 5.041779 +1.583333, 99.759142, 4.372110, 4.414647 +1.600000, 99.800286, 1.234310, 1.245889 +1.616667, 99.800320, 0.001022, 0.001031 +1.633333, 99.800320, 0.000000, 0.000000 +1.650000, 99.800320, 0.000000, 0.000000 +1.666667, 99.800320, 0.000000, 0.000000 +1.683333, 99.800320, 0.000000, 0.000000 +1.700000, 99.800320, 0.000000, 0.000000 +1.716667, 99.800320, 0.000000, 0.000000 +1.733333, 99.800320, 0.000000, 0.000000 +1.750000, 99.800320, 0.000000, 0.000000 +1.766667, 99.800320, 0.000000, 0.000000 +1.783333, 99.800320, 0.000000, 0.000000 +1.800000, 99.800320, 0.000000, 0.000000 +1.816667, 99.800320, 0.000000, 0.000000 +1.833333, 99.800320, 0.000000, 0.000000 +1.850000, 99.800320, 0.000000, 0.000000 +1.866667, 99.800320, 0.000000, 0.000000 +1.883333, 99.800320, 0.000000, 0.000000 +1.900000, 99.800320, 0.000000, 0.000000 +1.916667, 99.800320, 0.000000, 0.000000 +1.933333, 99.800320, 0.000000, 0.000000 +1.950000, 99.800320, 0.000000, 0.000000 +1.966667, 99.800320, 0.000000, 0.000000 +1.983333, 99.800320, 0.000000, 0.000000 +2.000000, 99.800320, 0.000000, 0.000000 +2.016667, 99.800320, 0.000000, 0.000000 +2.033333, 99.800320, 0.000000, 0.000000 +2.050000, 99.800320, 0.000000, 0.000000 +2.066667, 99.800320, 0.000000, 0.000000 +2.083333, 99.800320, 0.000000, 0.000000 +2.100000, 99.800320, 0.000000, 0.000000 +2.116667, 99.800320, 0.000000, 0.000000 +2.133333, 99.800320, 0.000000, 0.000000 +2.150000, 99.800320, 0.000000, 0.000000 +2.166667, 99.800320, 0.000000, 0.000000 +2.183333, 99.800320, 0.000000, 0.000000 +2.200000, 99.800320, 0.000000, 0.000000 +2.216667, 99.800320, 0.000000, 0.000000 +2.233333, 99.800320, 0.000000, 0.000000 +2.250000, 99.800320, 0.000000, 0.000000 +2.266667, 99.800320, 0.000000, 0.000000 +2.283333, 99.800320, 0.000000, 0.000000 +2.300000, 99.800320, 0.000000, 0.000000 +2.316667, 99.800320, 0.000000, 0.000000 +2.333333, 99.800320, 0.000000, 0.000000 +2.350000, 99.800320, 0.000000, 0.000000 +2.366667, 99.800320, 0.000000, 0.000000 +2.383333, 99.800320, 0.000000, 0.000000 +2.400000, 99.800320, 0.000000, 0.000000 +2.416667, 99.800320, 0.000000, 0.000000 +2.433333, 99.800320, 0.000000, 0.000000 +2.450000, 99.800320, 0.000000, 0.000000 +2.466667, 99.800320, 0.000000, 0.000000 +2.483333, 99.800320, 0.000000, 0.000000 +2.500000, 99.800320, 0.000000, 0.000000 +2.516667, 99.800320, 0.000000, 0.000000 +2.533333, 99.800320, 0.000000, 0.000000 +2.550000, 99.800320, 0.000000, 0.000000 +2.566667, 99.800320, 0.000000, 0.000000 +2.583333, 99.800320, 0.000000, 0.000000 +2.600000, 99.800320, 0.000000, 0.000000 +2.616667, 99.800320, 0.000000, 0.000000 +2.633333, 99.800320, 0.000000, 0.000000 +2.650000, 99.800320, 0.000000, 0.000000 +2.666667, 99.800320, 0.000000, 0.000000 +2.683333, 99.800320, 0.000000, 0.000000 +2.700000, 99.800320, 0.000000, 0.000000 +2.716667, 99.800320, 0.000000, 0.000000 +2.733333, 99.800320, 0.000000, 0.000000 +2.750000, 99.800320, 0.000000, 0.000000 +2.766667, 99.800320, 0.000000, 0.000000 +2.783333, 99.800320, 0.000000, 0.000000 +2.800000, 99.800320, 0.000000, 0.000000 +2.816667, 99.800320, 0.000000, 0.000000 +2.833333, 99.800320, 0.000000, 0.000000 +2.850000, 99.800320, 0.000000, 0.000000 +2.866667, 99.800320, 0.000000, 0.000000 +2.883333, 99.800320, 0.000000, 0.000000 +2.900000, 99.800320, 0.000000, 0.000000 +2.916667, 99.800320, 0.000000, 0.000000 +2.933333, 99.800320, 0.000000, 0.000000 +2.950000, 99.800320, 0.000000, 0.000000 +2.966667, 99.800320, 0.000000, 0.000000 +2.983333, 99.800320, 0.000000, 0.000000 +3.000000, 99.800320, 0.000000, 0.000000 +3.016667, 99.800320, 0.000000, 0.000000 +3.033333, 99.800320, 0.000000, 0.000000 +3.050000, 99.800320, 0.000000, 0.000000 +3.066667, 99.800320, 0.000000, 0.000000 +3.083333, 99.800320, 0.000000, 0.000000 +3.100000, 99.800320, 0.000000, 0.000000 +3.116667, 99.800320, 0.000000, 0.000000 +3.133333, 99.800320, 0.000000, 0.000000 +3.150000, 99.800320, 0.000000, 0.000000 +3.166667, 99.800320, 0.000000, 0.000000 +3.183333, 99.800320, 0.000000, 0.000000 +3.200000, 99.800320, 0.000000, 0.000000 +3.216667, 99.800320, 0.000000, 0.000000 +3.233333, 99.800320, 0.000000, 0.000000 +3.250000, 99.800320, 0.000000, 0.000000 +3.266667, 99.800320, 0.000000, 0.000000 +3.283333, 99.800320, 0.000000, 0.000000 +3.300000, 99.800320, 0.000000, 0.000000 +3.316667, 99.800320, 0.000000, 0.000000 +3.333333, 99.800320, 0.000000, 0.000000 +3.350000, 99.800320, 0.000000, 0.000000 +3.366667, 99.800320, 0.000000, 0.000000 +3.383333, 99.800320, 0.000000, 0.000000 +3.400000, 99.800320, 0.000000, 0.000000 +3.416667, 99.800320, 0.000000, 0.000000 +3.433333, 99.800320, 0.000000, 0.000000 +3.450000, 99.800320, 0.000000, 0.000000 +3.466667, 99.800320, 0.000000, 0.000000 +3.483333, 99.800320, 0.000000, 0.000000 +3.500000, 99.800320, 0.000000, 0.000000 +3.516667, 99.800320, 0.000000, 0.000000 +3.533333, 99.800320, 0.000000, 0.000000 +3.550000, 99.800320, 0.000000, 0.000000 +3.566667, 99.800320, 0.000000, 0.000000 +3.583333, 99.800320, 0.000000, 0.000000 +3.600000, 99.800320, 0.000000, 0.000000 +3.616667, 99.800320, 0.000000, 0.000000 +3.633333, 99.800320, 0.000000, 0.000000 +3.650000, 99.800320, 0.000000, 0.000000 +3.666667, 99.800320, 0.000000, 0.000000 +3.683333, 99.800320, 0.000000, 0.000000 +3.700000, 99.800320, 0.000000, 0.000000 +3.716667, 99.800320, 0.000000, 0.000000 +3.733333, 99.800320, 0.000000, 0.000000 +3.750000, 99.800320, 0.000000, 0.000000 +3.766667, 99.800320, 0.000000, 0.000000 +3.783333, 99.800320, 0.000000, 0.000000 +3.800000, 99.800320, 0.000000, 0.000000 +3.816667, 99.800320, 0.000000, 0.000000 +3.833333, 99.800320, 0.000000, 0.000000 +3.850000, 99.800320, 0.000000, 0.000000 +3.866667, 99.800320, 0.000000, 0.000000 +3.883333, 99.800320, 0.000000, 0.000000 +3.900000, 99.800320, 0.000000, 0.000000 +3.916667, 99.800320, 0.000000, 0.000000 +3.933333, 99.800320, 0.000000, 0.000000 +3.950000, 99.800320, 0.000000, 0.000000 +3.966667, 99.800320, 0.000000, 0.000000 +3.983333, 99.800320, 0.000000, 0.000000 +4.000000, 99.800320, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_500kW_md_200kWh.csv b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_500kW_md_200kWh.csv new file mode 100644 index 0000000..a68f76f --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/original_EVs_at_Risk_models/xfc_500kW_md_200kWh.csv @@ -0,0 +1,183 @@ +simulation_time_hrs, soc_t1, P1_kW, P2_kW +0.983333, 0.000000, 0.000000, 0.000000 +1.000000, 1.928979, 231.477537, 235.120890 +1.016667, 5.205695, 393.205850, 401.218892 +1.033333, 8.613072, 408.885237, 417.403567 +1.050000, 12.117102, 420.483661, 429.385153 +1.066667, 15.651586, 424.138071, 433.161945 +1.083333, 19.209012, 426.891098, 436.007693 +1.100000, 22.789497, 429.658194, 438.868439 +1.116667, 26.393187, 432.442780, 441.747727 +1.133333, 30.020228, 435.244960, 444.645674 +1.150000, 33.670769, 438.064839, 447.562397 +1.166667, 37.344956, 440.902523, 450.498016 +1.183333, 41.042941, 443.758117, 453.452649 +1.200000, 44.764872, 446.631730, 456.426416 +1.216667, 48.510901, 449.523469, 459.419439 +1.233333, 52.281179, 452.433440, 462.431838 +1.250000, 56.075860, 455.361754, 465.463736 +1.266667, 59.895098, 458.308518, 468.515256 +1.283333, 63.739047, 461.273843, 471.586521 +1.300000, 67.607862, 464.257839, 474.677655 +1.316667, 71.501701, 467.260617, 477.788784 +1.333333, 75.420720, 470.282288, 480.920034 +1.350000, 79.365078, 473.322963, 484.071530 +1.366667, 82.937810, 428.727858, 437.906566 +1.383333, 85.837132, 347.918702, 354.553893 +1.400000, 88.169511, 279.885464, 284.676893 +1.416667, 90.045210, 225.083855, 228.585682 +1.433333, 91.553446, 180.988292, 183.577962 +1.450000, 92.766084, 145.516543, 147.453065 +1.466667, 93.764772, 119.842584, 121.350943 +1.483333, 94.636661, 104.626712, 105.898909 +1.500000, 95.400431, 91.652324, 92.733460 +1.516667, 96.069468, 80.284448, 81.205963 +1.533333, 96.655488, 70.322489, 71.110091 +1.550000, 97.168768, 61.593520, 62.268356 +1.566667, 97.618315, 53.945665, 54.525207 +1.583333, 98.012028, 47.245584, 47.744328 +1.600000, 98.356830, 41.376251, 41.806275 +1.616667, 98.658788, 36.234990, 36.606398 +1.633333, 98.923220, 31.731737, 32.053013 +1.650000, 99.154782, 27.787511, 28.065807 +1.666667, 99.357558, 24.333065, 24.574428 +1.683333, 99.535122, 21.307691, 21.517255 +1.700000, 99.690607, 18.658182, 18.840315 +1.716667, 99.800162, 13.146691, 13.273013 +1.733333, 99.800254, 0.010954, 0.011055 +1.750000, 99.800254, 0.000000, 0.000000 +1.766667, 99.800254, 0.000000, 0.000000 +1.783333, 99.800254, 0.000000, 0.000000 +1.800000, 99.800254, 0.000000, 0.000000 +1.816667, 99.800254, 0.000000, 0.000000 +1.833333, 99.800254, 0.000000, 0.000000 +1.850000, 99.800254, 0.000000, 0.000000 +1.866667, 99.800254, 0.000000, 0.000000 +1.883333, 99.800254, 0.000000, 0.000000 +1.900000, 99.800254, 0.000000, 0.000000 +1.916667, 99.800254, 0.000000, 0.000000 +1.933333, 99.800254, 0.000000, 0.000000 +1.950000, 99.800254, 0.000000, 0.000000 +1.966667, 99.800254, 0.000000, 0.000000 +1.983333, 99.800254, 0.000000, 0.000000 +2.000000, 99.800254, 0.000000, 0.000000 +2.016667, 99.800254, 0.000000, 0.000000 +2.033333, 99.800254, 0.000000, 0.000000 +2.050000, 99.800254, 0.000000, 0.000000 +2.066667, 99.800254, 0.000000, 0.000000 +2.083333, 99.800254, 0.000000, 0.000000 +2.100000, 99.800254, 0.000000, 0.000000 +2.116667, 99.800254, 0.000000, 0.000000 +2.133333, 99.800254, 0.000000, 0.000000 +2.150000, 99.800254, 0.000000, 0.000000 +2.166667, 99.800254, 0.000000, 0.000000 +2.183333, 99.800254, 0.000000, 0.000000 +2.200000, 99.800254, 0.000000, 0.000000 +2.216667, 99.800254, 0.000000, 0.000000 +2.233333, 99.800254, 0.000000, 0.000000 +2.250000, 99.800254, 0.000000, 0.000000 +2.266667, 99.800254, 0.000000, 0.000000 +2.283333, 99.800254, 0.000000, 0.000000 +2.300000, 99.800254, 0.000000, 0.000000 +2.316667, 99.800254, 0.000000, 0.000000 +2.333333, 99.800254, 0.000000, 0.000000 +2.350000, 99.800254, 0.000000, 0.000000 +2.366667, 99.800254, 0.000000, 0.000000 +2.383333, 99.800254, 0.000000, 0.000000 +2.400000, 99.800254, 0.000000, 0.000000 +2.416667, 99.800254, 0.000000, 0.000000 +2.433333, 99.800254, 0.000000, 0.000000 +2.450000, 99.800254, 0.000000, 0.000000 +2.466667, 99.800254, 0.000000, 0.000000 +2.483333, 99.800254, 0.000000, 0.000000 +2.500000, 99.800254, 0.000000, 0.000000 +2.516667, 99.800254, 0.000000, 0.000000 +2.533333, 99.800254, 0.000000, 0.000000 +2.550000, 99.800254, 0.000000, 0.000000 +2.566667, 99.800254, 0.000000, 0.000000 +2.583333, 99.800254, 0.000000, 0.000000 +2.600000, 99.800254, 0.000000, 0.000000 +2.616667, 99.800254, 0.000000, 0.000000 +2.633333, 99.800254, 0.000000, 0.000000 +2.650000, 99.800254, 0.000000, 0.000000 +2.666667, 99.800254, 0.000000, 0.000000 +2.683333, 99.800254, 0.000000, 0.000000 +2.700000, 99.800254, 0.000000, 0.000000 +2.716667, 99.800254, 0.000000, 0.000000 +2.733333, 99.800254, 0.000000, 0.000000 +2.750000, 99.800254, 0.000000, 0.000000 +2.766667, 99.800254, 0.000000, 0.000000 +2.783333, 99.800254, 0.000000, 0.000000 +2.800000, 99.800254, 0.000000, 0.000000 +2.816667, 99.800254, 0.000000, 0.000000 +2.833333, 99.800254, 0.000000, 0.000000 +2.850000, 99.800254, 0.000000, 0.000000 +2.866667, 99.800254, 0.000000, 0.000000 +2.883333, 99.800254, 0.000000, 0.000000 +2.900000, 99.800254, 0.000000, 0.000000 +2.916667, 99.800254, 0.000000, 0.000000 +2.933333, 99.800254, 0.000000, 0.000000 +2.950000, 99.800254, 0.000000, 0.000000 +2.966667, 99.800254, 0.000000, 0.000000 +2.983333, 99.800254, 0.000000, 0.000000 +3.000000, 99.800254, 0.000000, 0.000000 +3.016667, 99.800254, 0.000000, 0.000000 +3.033333, 99.800254, 0.000000, 0.000000 +3.050000, 99.800254, 0.000000, 0.000000 +3.066667, 99.800254, 0.000000, 0.000000 +3.083333, 99.800254, 0.000000, 0.000000 +3.100000, 99.800254, 0.000000, 0.000000 +3.116667, 99.800254, 0.000000, 0.000000 +3.133333, 99.800254, 0.000000, 0.000000 +3.150000, 99.800254, 0.000000, 0.000000 +3.166667, 99.800254, 0.000000, 0.000000 +3.183333, 99.800254, 0.000000, 0.000000 +3.200000, 99.800254, 0.000000, 0.000000 +3.216667, 99.800254, 0.000000, 0.000000 +3.233333, 99.800254, 0.000000, 0.000000 +3.250000, 99.800254, 0.000000, 0.000000 +3.266667, 99.800254, 0.000000, 0.000000 +3.283333, 99.800254, 0.000000, 0.000000 +3.300000, 99.800254, 0.000000, 0.000000 +3.316667, 99.800254, 0.000000, 0.000000 +3.333333, 99.800254, 0.000000, 0.000000 +3.350000, 99.800254, 0.000000, 0.000000 +3.366667, 99.800254, 0.000000, 0.000000 +3.383333, 99.800254, 0.000000, 0.000000 +3.400000, 99.800254, 0.000000, 0.000000 +3.416667, 99.800254, 0.000000, 0.000000 +3.433333, 99.800254, 0.000000, 0.000000 +3.450000, 99.800254, 0.000000, 0.000000 +3.466667, 99.800254, 0.000000, 0.000000 +3.483333, 99.800254, 0.000000, 0.000000 +3.500000, 99.800254, 0.000000, 0.000000 +3.516667, 99.800254, 0.000000, 0.000000 +3.533333, 99.800254, 0.000000, 0.000000 +3.550000, 99.800254, 0.000000, 0.000000 +3.566667, 99.800254, 0.000000, 0.000000 +3.583333, 99.800254, 0.000000, 0.000000 +3.600000, 99.800254, 0.000000, 0.000000 +3.616667, 99.800254, 0.000000, 0.000000 +3.633333, 99.800254, 0.000000, 0.000000 +3.650000, 99.800254, 0.000000, 0.000000 +3.666667, 99.800254, 0.000000, 0.000000 +3.683333, 99.800254, 0.000000, 0.000000 +3.700000, 99.800254, 0.000000, 0.000000 +3.716667, 99.800254, 0.000000, 0.000000 +3.733333, 99.800254, 0.000000, 0.000000 +3.750000, 99.800254, 0.000000, 0.000000 +3.766667, 99.800254, 0.000000, 0.000000 +3.783333, 99.800254, 0.000000, 0.000000 +3.800000, 99.800254, 0.000000, 0.000000 +3.816667, 99.800254, 0.000000, 0.000000 +3.833333, 99.800254, 0.000000, 0.000000 +3.850000, 99.800254, 0.000000, 0.000000 +3.866667, 99.800254, 0.000000, 0.000000 +3.883333, 99.800254, 0.000000, 0.000000 +3.900000, 99.800254, 0.000000, 0.000000 +3.916667, 99.800254, 0.000000, 0.000000 +3.933333, 99.800254, 0.000000, 0.000000 +3.950000, 99.800254, 0.000000, 0.000000 +3.966667, 99.800254, 0.000000, 0.000000 +3.983333, 99.800254, 0.000000, 0.000000 +4.000000, 99.800254, 0.000000, 0.000000 diff --git a/unittests/test_charging_models_EVs_at_Risk/outputs/tmp.txt b/unittests/test_charging_models_EVs_at_Risk/outputs/tmp.txt new file mode 100644 index 0000000..e69de29 diff --git a/unittests/test_charging_models_EVs_at_Risk/validate.py b/unittests/test_charging_models_EVs_at_Risk/validate.py new file mode 100644 index 0000000..6eede31 --- /dev/null +++ b/unittests/test_charging_models_EVs_at_Risk/validate.py @@ -0,0 +1,54 @@ +# -*- coding: utf-8 -*- +""" +Created on Sat May 20 22:27:35 2023 + +@author: CEBOM +""" + +import glob +import pandas as pd +import numpy as np +import matplotlib.pyplot as plt +import os + +files = glob.glob("original_EVs_at_Risk_models/*.csv") + +error = False + +for original_file in files[48:56]: + equivalent_file = "outputs/" + os.path.split(original_file)[1] + + original_df = pd.read_csv(original_file) + new_df = pd.read_csv(equivalent_file) + + tolerance = 1 + bool_array = np.isclose(original_df, new_df, rtol=tolerance, atol=tolerance) + count_false = np.count_nonzero(bool_array == False) + count_true = np.count_nonzero(bool_array == True) + + error_rate = (count_false/(count_true+count_false))*100 + + #equal = np.allclose(original_df, new_df, atol=tolerance) + + # Check if the DataFrames are equal + if error_rate < 0.3: # error rate below 0.3% + print("{} The DataFrames are equal within the tolerance.".format(os.path.split(original_file)[1].split(".")[0])) + else: + print("{} The DataFrames are not equal within the tolerance.".format(os.path.split(original_file)[1].split(".")[0])) + + fig = plt.figure(figsize=(8, 6)) + plt.plot(original_df["simulation_time_hrs"], original_df[" soc_t1"], label = "original") + plt.plot(new_df["simulation_time_hrs"], new_df[" soc_t1"], label = "new") + + plt.plot(original_df["simulation_time_hrs"], original_df[" P2_kW"], label = "original") + plt.plot(new_df["simulation_time_hrs"], new_df[" P2_kW"], label = "new") + + plt.title(os.path.split(original_file)[1].split(".")[0]) + plt.legend() + plt.show() + + fig.savefig(os.path.split(original_file)[1].split(".")[0]) + error = True + +if(error == True): + exit(1) From d27608b31a76d149b4888bfa92e239d5a3ed2062 Mon Sep 17 00:00:00 2001 From: Steven Schmidt Date: Tue, 30 May 2023 15:31:44 -0600 Subject: [PATCH 27/52] Updates in preparation for Caldera_CDM using new ICM version. Also, deleting old charging-models code. --- source/base/Aux_interface.h | 1 + source/base/supply_equipment.h | 3 +- source/base/supply_equipment_control.h | 1 - source/base/supply_equipment_group.h | 1 - .../DirectXFC/SE_EV_factory.cpp | 1495 -------------- .../charging_models/DirectXFC/SE_EV_factory.h | 159 -- .../datatypes_global_SE_EV_definitions.cpp | 264 --- .../datatypes_global_SE_EV_definitions.h | 80 - .../charging_models/DirectXFC/python_bind.cpp | 1154 ----------- source/charging_models/EV_EVSE_inventory.cpp | 9 + source/charging_models/EV_EVSE_inventory.h | 9 + .../EVs_at_Risk/SE_EV_factory.cpp | 1774 ----------------- .../EVs_at_Risk/SE_EV_factory.h | 158 -- .../datatypes_global_SE_EV_definitions.cpp | 257 --- .../datatypes_global_SE_EV_definitions.h | 72 - .../EVs_at_Risk/python_bind.cpp | 1183 ----------- .../charging_models/eMosaic/SE_EV_factory.cpp | 1490 -------------- .../charging_models/eMosaic/SE_EV_factory.h | 158 -- .../datatypes_global_SE_EV_definitions.cpp | 252 --- .../datatypes_global_SE_EV_definitions.h | 70 - .../charging_models/eMosaic/python_bind.cpp | 1180 ----------- source/globals/datatypes_global.h | 2 - source/globals/helper.h | 7 +- source/load_inputs/load_EV_EVSE_inventory.cpp | 4 +- .../create_library/CMakeLists.txt | 18 - .../create_library/compile.sh | 33 - .../create_library/main.cpp | 9 - .../pev_charge_profile_factory.cpp | 1038 ---------- .../pev_charge_profile_factory.h | 164 -- .../create_library/python_bind.cpp | 35 - .../create_library/setup.py | 57 - .../generate_charge_profiles/L1_L2_inputs.csv | 9 - .../archives/L1_L2_inputs.csv | 9 - .../archives/dcfc_inputs.csv | 57 - .../archives/output/L1_L2_charge_profiles.csv | 103 - .../archives/output/L1_L2_code.txt | 50 - .../archives/output/L1_L2_data.csv | 42 - .../archives/output/dcfc_charge_profiles.csv | 103 - .../archives/output/dcfc_code.txt | 551 ----- .../archives/output/dcfc_constraints.csv | 392 ---- .../archives/output/dcfc_data.csv | 551 ----- .../charge_profile_factory.exe | Bin 227328 -> 0 bytes .../generate_charge_profiles/dcfc_inputs.csv | 2 - .../generate_charge_profiles.py | 264 --- .../output/L1_L2_charge_profiles.csv | 103 - .../output/L1_L2_code.txt | 50 - .../output/L1_L2_data.csv | 42 - .../output/dcfc_charge_profiles.csv | 103 - .../output/dcfc_code.txt | 9 - .../output/dcfc_constraints.csv | 7 - .../output/dcfc_data.csv | 9 - 51 files changed, 26 insertions(+), 13567 deletions(-) delete mode 100644 source/charging_models/DirectXFC/SE_EV_factory.cpp delete mode 100644 source/charging_models/DirectXFC/SE_EV_factory.h delete mode 100644 source/charging_models/DirectXFC/datatypes_global_SE_EV_definitions.cpp delete mode 100644 source/charging_models/DirectXFC/datatypes_global_SE_EV_definitions.h delete mode 100644 source/charging_models/DirectXFC/python_bind.cpp delete mode 100644 source/charging_models/EVs_at_Risk/SE_EV_factory.cpp delete mode 100644 source/charging_models/EVs_at_Risk/SE_EV_factory.h delete mode 100644 source/charging_models/EVs_at_Risk/datatypes_global_SE_EV_definitions.cpp delete mode 100644 source/charging_models/EVs_at_Risk/datatypes_global_SE_EV_definitions.h delete mode 100644 source/charging_models/EVs_at_Risk/python_bind.cpp delete mode 100644 source/charging_models/eMosaic/SE_EV_factory.cpp delete mode 100644 source/charging_models/eMosaic/SE_EV_factory.h delete mode 100644 source/charging_models/eMosaic/datatypes_global_SE_EV_definitions.cpp delete mode 100644 source/charging_models/eMosaic/datatypes_global_SE_EV_definitions.h delete mode 100644 source/charging_models/eMosaic/python_bind.cpp delete mode 100644 source/pev_charge_profile_factory/create_library/CMakeLists.txt delete mode 100644 source/pev_charge_profile_factory/create_library/compile.sh delete mode 100644 source/pev_charge_profile_factory/create_library/main.cpp delete mode 100644 source/pev_charge_profile_factory/create_library/pev_charge_profile_factory.cpp delete mode 100644 source/pev_charge_profile_factory/create_library/pev_charge_profile_factory.h delete mode 100644 source/pev_charge_profile_factory/create_library/python_bind.cpp delete mode 100644 source/pev_charge_profile_factory/create_library/setup.py delete mode 100644 source/pev_charge_profile_factory/generate_charge_profiles/L1_L2_inputs.csv delete mode 100644 source/pev_charge_profile_factory/generate_charge_profiles/archives/L1_L2_inputs.csv delete mode 100644 source/pev_charge_profile_factory/generate_charge_profiles/archives/dcfc_inputs.csv delete mode 100644 source/pev_charge_profile_factory/generate_charge_profiles/archives/output/L1_L2_charge_profiles.csv delete mode 100644 source/pev_charge_profile_factory/generate_charge_profiles/archives/output/L1_L2_code.txt delete mode 100644 source/pev_charge_profile_factory/generate_charge_profiles/archives/output/L1_L2_data.csv delete mode 100644 source/pev_charge_profile_factory/generate_charge_profiles/archives/output/dcfc_charge_profiles.csv delete mode 100644 source/pev_charge_profile_factory/generate_charge_profiles/archives/output/dcfc_code.txt delete mode 100644 source/pev_charge_profile_factory/generate_charge_profiles/archives/output/dcfc_constraints.csv delete mode 100644 source/pev_charge_profile_factory/generate_charge_profiles/archives/output/dcfc_data.csv delete mode 100644 source/pev_charge_profile_factory/generate_charge_profiles/charge_profile_factory.exe delete mode 100644 source/pev_charge_profile_factory/generate_charge_profiles/dcfc_inputs.csv delete mode 100644 source/pev_charge_profile_factory/generate_charge_profiles/generate_charge_profiles.py delete mode 100644 source/pev_charge_profile_factory/generate_charge_profiles/output/L1_L2_charge_profiles.csv delete mode 100644 source/pev_charge_profile_factory/generate_charge_profiles/output/L1_L2_code.txt delete mode 100644 source/pev_charge_profile_factory/generate_charge_profiles/output/L1_L2_data.csv delete mode 100644 source/pev_charge_profile_factory/generate_charge_profiles/output/dcfc_charge_profiles.csv delete mode 100644 source/pev_charge_profile_factory/generate_charge_profiles/output/dcfc_code.txt delete mode 100644 source/pev_charge_profile_factory/generate_charge_profiles/output/dcfc_constraints.csv delete mode 100644 source/pev_charge_profile_factory/generate_charge_profiles/output/dcfc_data.csv diff --git a/source/base/Aux_interface.h b/source/base/Aux_interface.h index 009a4dc..8100b51 100644 --- a/source/base/Aux_interface.h +++ b/source/base/Aux_interface.h @@ -53,6 +53,7 @@ class CP_interface_v2 double timestep_sec; public: + // "input_path" is the path to the folder that contains 'EV_inputs.csv' and 'EVSE_inputs.csv'. CP_interface_v2(const std::string& input_path); CP_interface_v2(const std::string& input_path, double L1_timestep_sec, diff --git a/source/base/supply_equipment.h b/source/base/supply_equipment.h index 70c54c0..2a3d622 100644 --- a/source/base/supply_equipment.h +++ b/source/base/supply_equipment.h @@ -5,8 +5,7 @@ #include "supply_equipment_load.h" #include "supply_equipment_control.h" -#include "datatypes_global.h" // SE_configuration, SE_charging_status, charge_event_data -//#include "datatypes_global_SE_EV_definitions.h" +#include "datatypes_global.h" // SE_configuration, SE_charging_status, charge_event_data #include "datatypes_module.h" // ac_power_metrics, SE_status, CE_Status #include "charge_profile_library.h" // pev_charge_profile_library diff --git a/source/base/supply_equipment_control.h b/source/base/supply_equipment_control.h index c8f3a07..e111d45 100644 --- a/source/base/supply_equipment_control.h +++ b/source/base/supply_equipment_control.h @@ -3,7 +3,6 @@ #define inl_supply_equipment_control_H #include "datatypes_global.h" // ES500_aggregator_charging_needs -//#include "datatypes_global_SE_EV_definitions.h" #include "supply_equipment_load.h" // supply_equipment_load #include "helper.h" // get_base_load_forecast, get_value_from_normal_distribution, get_real_value_from_uniform_distribution, get_int_value_from_uniform_distribution #include "charge_profile_library.h" // pev_charge_profile diff --git a/source/base/supply_equipment_group.h b/source/base/supply_equipment_group.h index 2588329..88b4459 100644 --- a/source/base/supply_equipment_group.h +++ b/source/base/supply_equipment_group.h @@ -4,7 +4,6 @@ #include "datatypes_global.h" // SE_group_configuration, SE_group_charge_event_data, grid_power -//#include "datatypes_global_SE_EV_definitions.h" #include "supply_equipment.h" // supply_equipment #include "helper.h" // LPF_kernel diff --git a/source/charging_models/DirectXFC/SE_EV_factory.cpp b/source/charging_models/DirectXFC/SE_EV_factory.cpp deleted file mode 100644 index 66793c3..0000000 --- a/source/charging_models/DirectXFC/SE_EV_factory.cpp +++ /dev/null @@ -1,1495 +0,0 @@ - -//==================================================================================================================== -// ################################################################################################################### -//-------------------------------------------------------------------------------------------------------------------- -// DirectXFC Project -//-------------------------------------------------------------------------------------------------------------------- -// ################################################################################################################### -//==================================================================================================================== - -#include "SE_EV_factory.h" - -#include "supply_equipment_load.h" -#include "supply_equipment_control.h" -#include "battery_integrate_X_in_time.h" // integrate_X_through_time -#include "helper.h" // rand_val, line_segment -#include "charge_profile_library.h" -#include "charge_profile_downsample_fragments.h" - - -#include -#include -#include // sort -#include // cout - -//############################################################################# -// Get Battery Efficiency vs P2 (Should be the same in every factory) -//############################################################################# - -void get_bat_eff_vs_P2(bool is_charging_not_discharging, battery_chemistry bat_chem, double battery_size_kWh, double& zero_slope_threashold_bat_eff_vs_P2, line_segment& bat_eff_vs_P2) -{ - // When are_losses = false - // - The bat_eff_vs_P2 line segmnet should have the following values (c=0, d=1). - - if(bat_chem == LTO) - { - if(is_charging_not_discharging) - bat_eff_vs_P2 = { 0, 6*battery_size_kWh, -0.0078354/battery_size_kWh, 0.987448}; // x_LB, x_UB, a, b - else - bat_eff_vs_P2 = {-6*battery_size_kWh, 0, -0.0102411/battery_size_kWh, 1.0109224}; // x_LB, x_UB, a, b - } - else if(bat_chem == LMO) - { - if(is_charging_not_discharging) - bat_eff_vs_P2 = { 0, 4*battery_size_kWh, -0.0079286/battery_size_kWh, 0.9936637}; // x_LB, x_UB, a, b - else - bat_eff_vs_P2 = {-4*battery_size_kWh, 0, -0.0092091/battery_size_kWh, 1.005674}; // x_LB, x_UB, a, b - } - else if(bat_chem == NMC) - { - if(is_charging_not_discharging) - bat_eff_vs_P2 = {0, 4*battery_size_kWh, -0.0053897/battery_size_kWh, 0.9908405}; // x_LB, x_UB, a, b - else - bat_eff_vs_P2 = {-4*battery_size_kWh, 0, -0.0062339/battery_size_kWh, 1.0088727}; // x_LB, x_UB, a, b - } - - //----------------------------------- - - // If the slope is smaller than 0.000001 that the 'safe' method will be used. - // Very little rational to using 0.000001 it will allow the complex method using a 1000 kWh battery pack - if(std::abs(bat_eff_vs_P2.a) < 0.000001) - zero_slope_threashold_bat_eff_vs_P2 = 0.000001; - else - zero_slope_threashold_bat_eff_vs_P2 = 0.9 * std::abs(bat_eff_vs_P2.a); -} - - -//############################################################################# -// EV Charge Model Factory -//############################################################################# - - -factory_EV_charge_model::factory_EV_charge_model() -{ - this->model_stochastic_battery_degregation = false; -} - - -void factory_EV_charge_model::set_bool_model_stochastic_battery_degregation(bool model_stochastic_battery_degregation_) -{ - this->model_stochastic_battery_degregation = model_stochastic_battery_degregation_; -} - - -void factory_EV_charge_model::initialize_custome_parameters(std::map ramping_by_pevType_only_, std::map< std::tuple, pev_charge_ramping> ramping_by_pevType_seType_) -{ - this->ramping_by_pevType_only = ramping_by_pevType_only_; - this->ramping_by_pevType_seType = ramping_by_pevType_seType_; -} - - -void factory_EV_charge_model::get_integrate_X_through_time_obj(vehicle_enum vehicle_type, supply_equipment_enum supply_equipment_type, integrate_X_through_time& return_val) -{ - // Each transition_of_X_through_time must have at least 3 segments. - - // struct transition_goto_next_segment_criteria - // { - // transition_criteria_type criteria_type; - // double criteria_value; - // bool inturupt_this_transition_if_target_X_deviation_limit_exceeded; - // double target_X_deviation_limit_to_interupt_this_transition; - // double segment_slope_X_per_sec; - // }; - - double X_deadband, target_deadband, off_deadband; - bool pos_and_neg_transitions_are_unique = false; - - std::vector goto_next_seg; - - X_deadband = 0.1; - target_deadband = 0.01; - off_deadband = 0.0001; - - goto_next_seg.clear(); - goto_next_seg.push_back({time_delay_sec, 0.1, false, 0, 0}); - goto_next_seg.push_back({time_delay_sec, 0.1, false, 0, 0}); - goto_next_seg.push_back({from_final_X, 0, false, 0, 10}); - transition_of_X_through_time default_to_pos_inf(moving_toward_pos_inf, X_deadband, goto_next_seg); - - goto_next_seg.clear(); - goto_next_seg.push_back({time_delay_sec, 0.1, false, 0, 0}); - goto_next_seg.push_back({time_delay_sec, 0.1, false, 0, 0}); - goto_next_seg.push_back({from_final_X, 0, false, 0, -10}); - transition_of_X_through_time default_to_neg_inf(moving_toward_neg_inf, X_deadband, goto_next_seg); - - //================================ - // All Default V2G Transitions - //================================ - - //---------------------- - // off_to_neg - //---------------------- - transition_of_X_through_time off_to_neg_obj; - off_to_neg_obj = default_to_neg_inf; - - //---------------------- - // neg_to_off - //---------------------- - transition_of_X_through_time neg_to_off_obj; - neg_to_off_obj = default_to_pos_inf; - - //--------------------------- - // pos_moving_toward_pos_inf - //--------------------------- - transition_of_X_through_time pos_moving_toward_pos_inf_obj; - pos_moving_toward_pos_inf_obj = default_to_pos_inf; - - //--------------------------- - // pos_moving_toward_neg_inf - //--------------------------- - transition_of_X_through_time pos_moving_toward_neg_inf_obj; - pos_moving_toward_neg_inf_obj = default_to_neg_inf; - - //--------------------------- - // neg_moving_toward_pos_inf - //--------------------------- - transition_of_X_through_time neg_moving_toward_pos_inf_obj; - neg_moving_toward_pos_inf_obj = default_to_pos_inf; - - //--------------------------- - // neg_moving_toward_neg_inf - //--------------------------- - transition_of_X_through_time neg_moving_toward_neg_inf_obj; - neg_moving_toward_neg_inf_obj = default_to_neg_inf; - - //---------------------------------- - - if(supply_equipment_is_L1(supply_equipment_type)) - { - X_deadband = 0.01; - target_deadband = 0.01; - off_deadband = 0.0001; - - //---------------------- - // off_to_pos - //---------------------- - goto_next_seg.clear(); - goto_next_seg.push_back({time_delay_sec, 4.95, false, 0, 0}); - goto_next_seg.push_back({time_delay_sec, 0.05, false, 0, 0}); - goto_next_seg.push_back({from_final_X, 0, false, 0, 0.5}); - transition_of_X_through_time off_to_pos_obj(off_to_pos, X_deadband, goto_next_seg); - - //---------------------- - // pos_to_off - //---------------------- - goto_next_seg.clear(); - goto_next_seg.push_back({time_delay_sec, 0.095, false, 0, 0}); - goto_next_seg.push_back({time_delay_sec, 0.005, false, 0, 0}); - goto_next_seg.push_back({from_final_X, 0, false, 0, -50}); - transition_of_X_through_time pos_to_off_obj(pos_to_off, X_deadband, goto_next_seg); - - //----------------------- - // moving_toward_pos_inf - //----------------------- - goto_next_seg.clear(); - goto_next_seg.push_back({time_delay_sec, 0.12, false, 0, 0}); - goto_next_seg.push_back({time_delay_sec, 0.03, false, 0, 0}); - goto_next_seg.push_back({from_final_X, 0, false, 0, 0.5}); - transition_of_X_through_time moving_toward_pos_inf_obj(moving_toward_pos_inf, X_deadband, goto_next_seg); - - //----------------------- - // moving_toward_neg_inf - //----------------------- - goto_next_seg.clear(); - goto_next_seg.push_back({time_delay_sec, 0.09, false, 0, 0}); - goto_next_seg.push_back({time_delay_sec, 0.01, false, 0, 0}); - goto_next_seg.push_back({from_final_X, 0, false, 0, -0.5}); - transition_of_X_through_time moving_toward_neg_inf_obj(moving_toward_neg_inf, X_deadband, goto_next_seg); - - //----------------------- - - integrate_X_through_time integrate_obj(target_deadband, off_deadband, pos_and_neg_transitions_are_unique, - pos_to_off_obj, neg_to_off_obj, off_to_pos_obj, off_to_neg_obj, moving_toward_pos_inf_obj, moving_toward_neg_inf_obj, - pos_moving_toward_pos_inf_obj, pos_moving_toward_neg_inf_obj, neg_moving_toward_pos_inf_obj, neg_moving_toward_neg_inf_obj); - return_val = integrate_obj; - } - else if(supply_equipment_is_L2(supply_equipment_type)) - { - X_deadband = 0.01; - target_deadband = 0.01; - off_deadband = 0.0001; - - //---------------------- - // off_to_pos - //---------------------- - goto_next_seg.clear(); - goto_next_seg.push_back({time_delay_sec, 4.95, false, 0, 0}); - goto_next_seg.push_back({time_delay_sec, 0.05, false, 0, 0}); - goto_next_seg.push_back({from_final_X, 0, false, 0, 2}); - transition_of_X_through_time off_to_pos_obj(off_to_pos, X_deadband, goto_next_seg); - - //---------------------- - // pos_to_off - //---------------------- - goto_next_seg.clear(); - goto_next_seg.push_back({time_delay_sec, 0.095, false, 0, 0}); - goto_next_seg.push_back({time_delay_sec, 0.005, false, 0, 0}); - goto_next_seg.push_back({from_final_X, 0, false, 0, -100}); - transition_of_X_through_time pos_to_off_obj(pos_to_off, X_deadband, goto_next_seg); - - //----------------------- - // moving_toward_pos_inf - //----------------------- - goto_next_seg.clear(); - goto_next_seg.push_back({time_delay_sec, 0.12, false, 0, 0}); - goto_next_seg.push_back({time_delay_sec, 0.03, false, 0, 0}); - goto_next_seg.push_back({from_final_X, 0, false, 0, 2}); - transition_of_X_through_time moving_toward_pos_inf_obj(moving_toward_pos_inf, X_deadband, goto_next_seg); - - //----------------------- - // moving_toward_neg_inf - //----------------------- - goto_next_seg.clear(); - goto_next_seg.push_back({time_delay_sec, 0.09, false, 0, 0}); - goto_next_seg.push_back({time_delay_sec, 0.01, false, 0, 0}); - goto_next_seg.push_back({from_final_X, 0, false, 0, -3}); - transition_of_X_through_time moving_toward_neg_inf_obj(moving_toward_neg_inf, X_deadband, goto_next_seg); - - //----------------------- - - integrate_X_through_time integrate_obj(target_deadband, off_deadband, pos_and_neg_transitions_are_unique, - pos_to_off_obj, neg_to_off_obj, off_to_pos_obj, off_to_neg_obj, moving_toward_pos_inf_obj, moving_toward_neg_inf_obj, - pos_moving_toward_pos_inf_obj, pos_moving_toward_neg_inf_obj, neg_moving_toward_pos_inf_obj, neg_moving_toward_neg_inf_obj); - return_val = integrate_obj; - } - else - { - if(vehicle_type == phev20 || vehicle_type == phev50 || vehicle_type == phev_SUV) - std::cout << "WARNING: PHEV can not fast charge. EV_enum :" << vehicle_type << " and SE_enum:" << supply_equipment_type << std::endl; - - X_deadband = 0.01; - target_deadband = 0.01; - off_deadband = 0.0001; - - //---------------------------- - - bool use_custom_ramping_values = false; - pev_charge_ramping custom_charge_ramping; - - std::tuple pev_se_pair(vehicle_type, supply_equipment_type); - - if(this->ramping_by_pevType_seType.count(pev_se_pair) > 0) - { - use_custom_ramping_values = true; - custom_charge_ramping = this->ramping_by_pevType_seType[pev_se_pair]; - } - else if(this->ramping_by_pevType_only.count(vehicle_type) > 0) - { - use_custom_ramping_values = true; - custom_charge_ramping = this->ramping_by_pevType_only[vehicle_type]; - } - - //---------------------------- - - if(use_custom_ramping_values) - { - double delay_sec, ramping_kW_per_sec; - - //---------------------- - // pos_to_off - //---------------------- - delay_sec = custom_charge_ramping.on_to_off_delay_sec; - ramping_kW_per_sec = custom_charge_ramping.on_to_off_kW_per_sec; - - goto_next_seg.clear(); - goto_next_seg.push_back({time_delay_sec, 0.9*delay_sec, false, 0, 0}); - goto_next_seg.push_back({time_delay_sec, 0.1*delay_sec, false, 0, 0}); - goto_next_seg.push_back({from_final_X, 0, false, 0, ramping_kW_per_sec}); - transition_of_X_through_time pos_to_off_obj(pos_to_off, X_deadband, goto_next_seg); - - //---------------------- - // off_to_pos - //---------------------- - delay_sec = custom_charge_ramping.off_to_on_delay_sec; - ramping_kW_per_sec = custom_charge_ramping.off_to_on_kW_per_sec; - - goto_next_seg.clear(); - goto_next_seg.push_back({time_delay_sec, 0.9*delay_sec, false, 0, 0}); - goto_next_seg.push_back({time_delay_sec, 0.1*delay_sec, false, 0, 0}); - goto_next_seg.push_back({from_final_X, 0, false, 0, ramping_kW_per_sec}); - transition_of_X_through_time off_to_pos_obj(off_to_pos, X_deadband, goto_next_seg); - - //----------------------- - // moving_toward_pos_inf - //----------------------- - delay_sec = custom_charge_ramping.ramp_up_delay_sec; - ramping_kW_per_sec = custom_charge_ramping.ramp_up_kW_per_sec; - - goto_next_seg.clear(); - goto_next_seg.push_back({time_delay_sec, 0.9*delay_sec, false, 0, 0}); - goto_next_seg.push_back({time_delay_sec, 0.1*delay_sec, false, 0, 0}); - goto_next_seg.push_back({from_final_X, 0, false, 0, ramping_kW_per_sec}); - transition_of_X_through_time moving_toward_pos_inf_obj(moving_toward_pos_inf, X_deadband, goto_next_seg); - - //----------------------- - // moving_toward_neg_inf - //----------------------- - delay_sec = custom_charge_ramping.ramp_down_delay_sec; - ramping_kW_per_sec = custom_charge_ramping.ramp_down_kW_per_sec; - - goto_next_seg.clear(); - goto_next_seg.push_back({time_delay_sec, 0.9*delay_sec, false, 0, 0}); - goto_next_seg.push_back({time_delay_sec, 0.1*delay_sec, false, 0, 0}); - goto_next_seg.push_back({from_final_X, 0, false, 0, ramping_kW_per_sec}); - transition_of_X_through_time moving_toward_neg_inf_obj(moving_toward_neg_inf, X_deadband, goto_next_seg); - - //----------------------- - - integrate_X_through_time integrate_obj(target_deadband, off_deadband, pos_and_neg_transitions_are_unique, - pos_to_off_obj, neg_to_off_obj, off_to_pos_obj, off_to_neg_obj, moving_toward_pos_inf_obj, moving_toward_neg_inf_obj, - pos_moving_toward_pos_inf_obj, pos_moving_toward_neg_inf_obj, neg_moving_toward_pos_inf_obj, neg_moving_toward_neg_inf_obj); - return_val = integrate_obj; - } - else - { - //---------------------- - // pos_to_off - //---------------------- - goto_next_seg.clear(); - - // Default Values - if(supply_equipment_type == dcfc_50) - { - goto_next_seg.push_back({time_delay_sec, 0.040, false, 0, 0}); - goto_next_seg.push_back({time_delay_sec, 0.010, false, 0, 0}); - goto_next_seg.push_back({from_final_X, 0, false, 0, -3700}); - } - else if(supply_equipment_type == xfc_150 || supply_equipment_type == xfc_350) - { - goto_next_seg.push_back({time_delay_sec, 0.040, false, 0, 0}); - goto_next_seg.push_back({time_delay_sec, 0.010, false, 0, 0}); - goto_next_seg.push_back({from_final_X, 0, false, 0, -140000}); - } - else - std::cout << "WARNING: Incomplete definition for get_integrate_X_through_time_obj in the factory_EV_charge_model for EV_enum :" << vehicle_type << " and SE_enum:" << supply_equipment_type << std::endl; - - transition_of_X_through_time pos_to_off_obj(pos_to_off, X_deadband, goto_next_seg); - - //---------------------------------------------------------------- - // off_to_pos, moving_toward_pos_inf, moving_toward_neg_inf - //---------------------------------------------------------------- - - if(vehicle_type == bev150_ld1_50kW || vehicle_type == bev250_ld1_75kW) - { - //---------------------- - // off_to_pos - //---------------------- - goto_next_seg.clear(); - goto_next_seg.push_back({time_delay_sec, 14.9, false, 0, 0}); - goto_next_seg.push_back({time_delay_sec, 0.1, false, 0, 0}); - goto_next_seg.push_back({from_final_X, 0, false, 0, 10}); - transition_of_X_through_time off_to_pos_obj(off_to_pos, X_deadband, goto_next_seg); - - //----------------------- - // moving_toward_pos_inf - //----------------------- - goto_next_seg.clear(); - goto_next_seg.push_back({time_delay_sec, 0.09, false, 0, 0}); - goto_next_seg.push_back({time_delay_sec, 0.01, false, 0, 0}); - goto_next_seg.push_back({from_final_X, 0, false, 0, 10}); - transition_of_X_through_time moving_toward_pos_inf_obj(moving_toward_pos_inf, X_deadband, goto_next_seg); - - //----------------------- - // moving_toward_neg_inf - //----------------------- - goto_next_seg.clear(); - goto_next_seg.push_back({time_delay_sec, 0.09, false, 0, 0}); - goto_next_seg.push_back({time_delay_sec, 0.01, false, 0, 0}); - goto_next_seg.push_back({from_final_X, 0, false, 0, -10}); - transition_of_X_through_time moving_toward_neg_inf_obj(moving_toward_neg_inf, X_deadband, goto_next_seg); - - //-------------------------------- - - integrate_X_through_time integrate_obj(target_deadband, off_deadband, pos_and_neg_transitions_are_unique, - pos_to_off_obj, neg_to_off_obj, off_to_pos_obj, off_to_neg_obj, moving_toward_pos_inf_obj, moving_toward_neg_inf_obj, - pos_moving_toward_pos_inf_obj, pos_moving_toward_neg_inf_obj, neg_moving_toward_pos_inf_obj, neg_moving_toward_neg_inf_obj); - return_val = integrate_obj; - } - else - { - //---------------------- - // off_to_pos - //---------------------- - goto_next_seg.clear(); - goto_next_seg.push_back({time_delay_sec, 14.9, false, 0, 0}); - goto_next_seg.push_back({time_delay_sec, 0.1, false, 0, 0}); - goto_next_seg.push_back({from_final_X, 0, false, 0, 25}); - transition_of_X_through_time off_to_pos_obj(off_to_pos, X_deadband, goto_next_seg); - - //----------------------- - // moving_toward_pos_inf - //----------------------- - goto_next_seg.clear(); - goto_next_seg.push_back({time_delay_sec, 0.09, false, 0, 0}); - goto_next_seg.push_back({time_delay_sec, 0.01, false, 0, 0}); - goto_next_seg.push_back({from_final_X, 0, false, 0, 25}); - transition_of_X_through_time moving_toward_pos_inf_obj(moving_toward_pos_inf, X_deadband, goto_next_seg); - - //----------------------- - // moving_toward_neg_inf - //----------------------- - goto_next_seg.clear(); - goto_next_seg.push_back({time_delay_sec, 0.09, false, 0, 0}); - goto_next_seg.push_back({time_delay_sec, 0.01, false, 0, 0}); - goto_next_seg.push_back({from_final_X, 0, false, 0, -25}); - transition_of_X_through_time moving_toward_neg_inf_obj(moving_toward_neg_inf, X_deadband, goto_next_seg); - - //-------------------------------- - - integrate_X_through_time integrate_obj(target_deadband, off_deadband, pos_and_neg_transitions_are_unique, - pos_to_off_obj, neg_to_off_obj, off_to_pos_obj, off_to_neg_obj, moving_toward_pos_inf_obj, moving_toward_neg_inf_obj, - pos_moving_toward_pos_inf_obj, pos_moving_toward_neg_inf_obj, neg_moving_toward_pos_inf_obj, neg_moving_toward_neg_inf_obj); - return_val = integrate_obj; - } - } - } -} - - -void factory_EV_charge_model::get_P2_vs_puVrms(bool is_charging_not_discharging, vehicle_enum vehicle_type, supply_equipment_enum supply_equipment_type, double SE_P2_limit_atNominalV_kW, poly_function_of_x& P2_vs_puVrms) -{ // The points on the P2_vs_pu_Vrms plot are all multiplied by SE_P2_limit_atNominalV_kW - // The P2_vs_pu_Vrms plot must pass through the point (1, 1) - // At nominal voltage Vrms = 1 the final curve is 1*SE_P2_limit_atNominalV_kW or the limit at nominal voltage - - std::vector points; - - if(supply_equipment_is_L1(supply_equipment_type)) - { - points.push_back({0, 0}); - points.push_back({0.69, 0}); - points.push_back({0.7, 0.7}); - points.push_back({2, 2}); - } - else if(supply_equipment_is_L2(supply_equipment_type)) - { - points.push_back({0, 0}); - points.push_back({0.34, 0}); - points.push_back({0.35, 0.373}); - points.push_back({0.94, 1}); - points.push_back({2, 1}); - } - else - { - points.push_back({0, 0}); - points.push_back({0.79, 0}); - points.push_back({0.80, 1}); - points.push_back({1.20, 1}); - points.push_back({1.21, 0}); - points.push_back({2.00, 0}); - } - - //------------------------- - - std::vector points_scaled; - - for(point_P2_vs_puVrms x : points) - points_scaled.push_back({x.puVrms, x.P2_val * SE_P2_limit_atNominalV_kW}); - - //---------------------------------------------------- - // Convert Final Points to P2_vs_puVrms poly_function - //---------------------------------------------------- - - std::sort(points_scaled.begin(), points_scaled.end()); - - double a, b; - std::vector segments; - - for(int i=1; i& P2_vs_soc_segments) -{ - // P2 vs soc must be defigned a little below 0 soc and a little above 100 soc. - - // When a battery is approaching 0 soc or 100 soc there is a chance that energy continues to go into the battery while - // the soc is not changing (fixed at 0 or 100 soc) - // - This is caused by the fact that when a battery stopps charging/discharging there is a ramp down period. - // - This problem (for small time steps) can be mitigated by the following: - // - Make sure the P2_vs_soc curve decreases to zero as soc approaches 0 or 100 soc - // - Make sure the ramp rate is large when a battery stops charging/discharging - - vehicle_enum EV_enum = vehicle_type; - supply_equipment_enum SE_enum = supply_equipment_type; - P2_vs_soc_segments.clear(); - - if(supply_equipment_is_L1(SE_enum) || supply_equipment_is_L2(SE_enum)) - { - if(EV_enum == bev250_400kW) - { - P2_vs_soc_segments.push_back({-0.1, 100.1, 0.0, 10.58}); - zero_slope_threashold_P2_vs_soc = 900000.0; - // min_non_zero_slope = 1000000 - } - else if(EV_enum == bev300_575kW) - { - P2_vs_soc_segments.push_back({-0.1, 100.1, 0.0, 10.58}); - zero_slope_threashold_P2_vs_soc = 900000.0; - // min_non_zero_slope = 1000000 - } - else if(EV_enum == bev300_400kW) - { - P2_vs_soc_segments.push_back({-0.1, 100.1, 0.0, 10.58}); - zero_slope_threashold_P2_vs_soc = 900000.0; - // min_non_zero_slope = 1000000 - } - else if(EV_enum == bev250_350kW) - { - P2_vs_soc_segments.push_back({-0.1, 100.1, 0.0, 10.58}); - zero_slope_threashold_P2_vs_soc = 900000.0; - // min_non_zero_slope = 1000000 - } - else if(EV_enum == bev300_300kW) - { - P2_vs_soc_segments.push_back({-0.1, 100.1, 0.0, 10.58}); - zero_slope_threashold_P2_vs_soc = 900000.0; - // min_non_zero_slope = 1000000 - } - else if(EV_enum == bev150_150kW) - { - P2_vs_soc_segments.push_back({-0.1, 98.72484033603, 0.0, 8.832}); - P2_vs_soc_segments.push_back({98.72484033603, 100.1, -4.697368420791666, 472.57894734216666}); - zero_slope_threashold_P2_vs_soc = 4.2276315787125; - // min_non_zero_slope = 4.697368420791666 - } - else if(EV_enum == bev250_ld2_300kW) - { - P2_vs_soc_segments.push_back({-0.1, 99.44670348141902, 0.0, 10.58}); - P2_vs_soc_segments.push_back({99.44670348141902, 100.1, -9.133771930033333, 918.9035087929333}); - zero_slope_threashold_P2_vs_soc = 8.22039473703; - // min_non_zero_slope = 9.133771930033333 - } - else if(EV_enum == bev200_ld4_150kW) - { - P2_vs_soc_segments.push_back({-0.1, 100.1, 0.0, 8.832}); - zero_slope_threashold_P2_vs_soc = 900000.0; - // min_non_zero_slope = 1000000 - } - else if(EV_enum == bev275_ld1_150kW) - { - P2_vs_soc_segments.push_back({-0.1, 100.1, 0.0, 8.832}); - zero_slope_threashold_P2_vs_soc = 900000.0; - // min_non_zero_slope = 1000000 - } - else if(EV_enum == bev250_ld1_75kW) - { - P2_vs_soc_segments.push_back({-0.1, 100.1, 0.0, 6.072}); - zero_slope_threashold_P2_vs_soc = 900000.0; - // min_non_zero_slope = 1000000 - } - else if(EV_enum == bev150_ld1_50kW) - { - P2_vs_soc_segments.push_back({-0.1, 99.31240336127273, 0.0, 6.072}); - P2_vs_soc_segments.push_back({99.31240336127273, 100.1, -4.697368420791666, 472.57894734216666}); - zero_slope_threashold_P2_vs_soc = 4.2276315787125; - // min_non_zero_slope = 4.697368420791666 - } - else if(EV_enum == phev_SUV) - { - P2_vs_soc_segments.push_back({-0.1, 97.60505263157894, 0.0, 8.832}); - P2_vs_soc_segments.push_back({97.60505263157894, 100.1, -2.9440104166666665, 296.18229166666663}); - zero_slope_threashold_P2_vs_soc = 2.649609375; - // min_non_zero_slope = 2.9440104166666665 - } - else if(EV_enum == phev50) - { - P2_vs_soc_segments.push_back({-0.1, 99.03512583355923, 0.0, 3.016365}); - P2_vs_soc_segments.push_back({99.03512583355923, 100.1, -1.9213541666666665, 193.29791666666665}); - zero_slope_threashold_P2_vs_soc = 1.7292187499999998; - // min_non_zero_slope = 1.9213541666666665 - } - else if(EV_enum == phev20) - { - P2_vs_soc_segments.push_back({-0.1, 95.7383018487395, 0.0, 3.016365}); - P2_vs_soc_segments.push_back({95.7383018487395, 100.1, -0.6197916666666666, 62.354166666666664}); - zero_slope_threashold_P2_vs_soc = 0.5578124999999999; - // min_non_zero_slope = 0.6197916666666666 - } - } - else - { - if(SE_enum == xfc_350 && EV_enum == bev250_400kW) - { - P2_vs_soc_segments.push_back({-0.1, 2.0, 4.329714912379645, 322.71842106000804}); - P2_vs_soc_segments.push_back({2.0, 3.0, 3.3686540570945818, 324.6405427705782}); - P2_vs_soc_segments.push_back({3.0, 50.0, 0.5091449118257467, 333.21907020638463}); - P2_vs_soc_segments.push_back({50.0, 60.0, 1.3249342105566044, 292.4296052698418}); - P2_vs_soc_segments.push_back({60.0, 80.0, 0.8413815789665984, 321.4427631652421}); - P2_vs_soc_segments.push_back({80.0, 86.53033106641354, 1.8254111842522565, 242.7203947423895}); - P2_vs_soc_segments.push_back({86.53033106641354, 100.1, -28.973684211188562, 2907.776315855936}); - zero_slope_threashold_P2_vs_soc = 0.45823042064317204; - // min_non_zero_slope = 0.5091449118257467 - } - else if(SE_enum == xfc_350 && EV_enum == bev300_575kW) - { - P2_vs_soc_segments.push_back({-0.1, 2.0, 8.930107641345186, 353.0572604682489}); - P2_vs_soc_segments.push_back({2.0, 50.0, 0.5469814091946925, 369.8235129325499}); - P2_vs_soc_segments.push_back({50.0, 60.0, 1.575766146201767, 318.38427608219615}); - P2_vs_soc_segments.push_back({60.0, 80.0, 0.9453830731008894, 356.2072604682488}); - P2_vs_soc_segments.push_back({80.0, 89.35681205228872, 1.7902080376146545, 288.6212633071476}); - P2_vs_soc_segments.push_back({89.35681205228872, 100.1, -40.94999999999999, 4107.749999999998}); - zero_slope_threashold_P2_vs_soc = 0.4922832682752233; - // min_non_zero_slope = 0.5469814091946925 - } - else if(SE_enum == xfc_350 && EV_enum == bev300_400kW) - { - P2_vs_soc_segments.push_back({-0.1, 2.0, 6.0720263129870125, 319.25399985265193}); - P2_vs_soc_segments.push_back({2.0, 3.0, 2.2167993410821256, 326.9644537964617}); - P2_vs_soc_segments.push_back({3.0, 50.0, 0.4924432388544657, 332.13752210314465}); - P2_vs_soc_segments.push_back({50.0, 60.0, 1.3922999993573966, 287.14468407799814}); - P2_vs_soc_segments.push_back({60.0, 80.0, 0.853484210132399, 319.473631431498}); - P2_vs_soc_segments.push_back({80.0, 87.9268896067988, 1.718822367627764, 250.2465788318688}); - P2_vs_soc_segments.push_back({87.9268896067988, 100.1, -32.28496239111427, 3240.093607527127}); - zero_slope_threashold_P2_vs_soc = 0.44319891496901914; - // min_non_zero_slope = 0.4924432388544657 - } - else if(SE_enum == xfc_350 && EV_enum == bev250_350kW) - { - P2_vs_soc_segments.push_back({-0.1, 3.0, 11.854583333333334, 256.74}); - P2_vs_soc_segments.push_back({3.0, 10.0, 2.9833928571428543, 283.35357142857146}); - P2_vs_soc_segments.push_back({10.0, 74.77040325345465, 0.5820394736842108, 307.3671052631579}); - P2_vs_soc_segments.push_back({74.77040325345465, 93.0, -15.168269230769234, 1485.0240384615388}); - P2_vs_soc_segments.push_back({93.0, 100.1, -9.553571428571427, 962.8571428571427}); - zero_slope_threashold_P2_vs_soc = 0.5238355263157898; - // min_non_zero_slope = 0.5820394736842108 - } - else if(SE_enum == xfc_350 && EV_enum == bev300_300kW) - { - P2_vs_soc_segments.push_back({-0.1, 3.0, 10.099631574286015, 220.47726305613594}); - P2_vs_soc_segments.push_back({3.0, 10.0, 2.5590451116008492, 243.09902244419146}); - P2_vs_soc_segments.push_back({10.0, 73.77447156057245, 0.4987894734540005, 263.7015788256599}); - P2_vs_soc_segments.push_back({73.77447156057245, 93.0, -12.45394736267308, 1219.2828941740968}); - P2_vs_soc_segments.push_back({93.0, 100.1, -7.843984958785712, 790.5563906125712}); - zero_slope_threashold_P2_vs_soc = 0.44891052610860044; - // min_non_zero_slope = 0.4987894734540005 - } - else if(SE_enum == xfc_350 && EV_enum == bev150_150kW) - { - P2_vs_soc_segments.push_back({-0.1, 3.0, 4.99957894709066, 110.694315783324}); - P2_vs_soc_segments.push_back({3.0, 10.0, 1.2821954886505722, 121.84646615864426}); - P2_vs_soc_segments.push_back({10.0, 71.79222115564788, 0.2495069251938948, 132.17335179321103}); - P2_vs_soc_segments.push_back({71.79222115564788, 93.0, -5.747975708182693, 562.7459513857405}); - P2_vs_soc_segments.push_back({93.0, 100.1, -3.620300751678571, 364.8721804308571}); - zero_slope_threashold_P2_vs_soc = 0.22455623267450533; - // min_non_zero_slope = 0.2495069251938948 - } - else if(SE_enum == xfc_350 && EV_enum == bev250_ld2_300kW) - { - P2_vs_soc_segments.push_back({-0.1, 3.0, 10.013684210755194, 222.96105263667525}); - P2_vs_soc_segments.push_back({3.0, 10.0, 2.5805263158484584, 245.26052632139545}); - P2_vs_soc_segments.push_back({10.0, 70.91530947121583, 0.5018282548591153, 266.0475069312889}); - P2_vs_soc_segments.push_back({70.91530947121583, 93.0, -11.17661943345385, 1094.228238891408}); - P2_vs_soc_segments.push_back({93.0, 100.1, -7.039473684371428, 709.4736842267428}); - zero_slope_threashold_P2_vs_soc = 0.4516454293732038; - // min_non_zero_slope = 0.5018282548591153 - } - else if(SE_enum == xfc_350 && EV_enum == bev200_ld4_150kW) - { - P2_vs_soc_segments.push_back({-0.1, 3.0, 4.387833333333332, 110.026}); - P2_vs_soc_segments.push_back({3.0, 4.0, 3.0039285714285713, 114.17771428571429}); - P2_vs_soc_segments.push_back({4.0, 10.0, 1.0604285714285697, 121.9517142857143}); - P2_vs_soc_segments.push_back({10.0, 85.72163996478638, 0.24300000000000002, 130.12599999999998}); - P2_vs_soc_segments.push_back({85.72163996478638, 93.0, -12.565517241379332, 1228.0931034482778}); - P2_vs_soc_segments.push_back({93.0, 100.1, -7.6428571428571415, 770.2857142857141}); - zero_slope_threashold_P2_vs_soc = 0.21870000000000003; - // min_non_zero_slope = 0.24300000000000002 - } - else if(SE_enum == xfc_350 && EV_enum == bev275_ld1_150kW) - { - P2_vs_soc_segments.push_back({-0.1, 3.0, 4.645111841936343, 109.2933947328678}); - P2_vs_soc_segments.push_back({3.0, 4.0, 2.4053712405140546, 116.01261653713465}); - P2_vs_soc_segments.push_back({4.0, 10.0, 1.1287199247709812, 121.11922180010694}); - P2_vs_soc_segments.push_back({10.0, 83.94626112545511, 0.24423785424213065, 129.96404250539547}); - P2_vs_soc_segments.push_back({83.94626112545511, 93.0, -10.912159709222056, 1066.501905587351}); - P2_vs_soc_segments.push_back({93.0, 100.1, -6.637218044871427, 668.9323308027426}); - zero_slope_threashold_P2_vs_soc = 0.2198140688179176; - // min_non_zero_slope = 0.24423785424213065 - } - else if(SE_enum == xfc_350 && EV_enum == bev250_ld1_75kW) - { - P2_vs_soc_segments.push_back({-0.1, 4.0, 1.964999999973802, 55.0199999992664}); - P2_vs_soc_segments.push_back({4.0, 10.0, 0.46999999999373154, 60.999999999186684}); - P2_vs_soc_segments.push_back({10.0, 90.97982885085574, 0.11923076922917951, 64.50769230683221}); - P2_vs_soc_segments.push_back({90.97982885085574, 100.1, -7.828947368316662, 787.6315789368662}); - zero_slope_threashold_P2_vs_soc = 0.10730769230626155; - // min_non_zero_slope = 0.11923076922917951 - } - else if(SE_enum == xfc_350 && EV_enum == bev150_ld1_50kW) - { - P2_vs_soc_segments.push_back({-0.1, 4.0, 1.3186184209793759, 36.9213157874225}); - P2_vs_soc_segments.push_back({4.0, 10.0, 0.3153947368245828, 40.934210524041674}); - P2_vs_soc_segments.push_back({10.0, 89.85909047573648, 0.0800101214530449, 43.288056677757055}); - P2_vs_soc_segments.push_back({89.85909047573648, 100.1, -4.697368420791664, 472.5789473421664}); - zero_slope_threashold_P2_vs_soc = 0.0720091093077404; - // min_non_zero_slope = 0.0800101214530449 - } - else if(SE_enum == xfc_150 && EV_enum == bev250_400kW) - { - P2_vs_soc_segments.push_back({-0.1, 2.0, 3.4115495812616254, 115.57568694456087}); - P2_vs_soc_segments.push_back({2.0, 50.0, 0.21829314446229742, 121.96219981815953}); - P2_vs_soc_segments.push_back({50.0, 60.0, 0.419903966224057, 111.88165873007155}); - P2_vs_soc_segments.push_back({60.0, 64.0, 0.3285296719323875, 117.36411638757171}); - P2_vs_soc_segments.push_back({64.0, 80.0, 0.27993597748270843, 120.47411283235117}); - P2_vs_soc_segments.push_back({80.0, 90.0, 0.5659781541197988, 97.59073870138394}); - P2_vs_soc_segments.push_back({90.0, 93.40624470271933, 0.9255714930474067, 65.22733819789923}); - P2_vs_soc_segments.push_back({93.40624470271933, 100.1, -22.20760233968896, 2226.010233969016}); - zero_slope_threashold_P2_vs_soc = 0.19646383001606768; - // min_non_zero_slope = 0.21829314446229742 - } - else if(SE_enum == xfc_150 && EV_enum == bev300_575kW) - { - P2_vs_soc_segments.push_back({-0.1, 2.0, 5.7137365980573644, 108.5609953630899}); - P2_vs_soc_segments.push_back({2.0, 50.0, 0.23807235825238984, 119.51232384269984}); - P2_vs_soc_segments.push_back({50.0, 64.0, 0.40812404271838376, 111.00973961940015}); - P2_vs_soc_segments.push_back({64.0, 80.0, 0.2720826951455885, 119.71638586405905}); - P2_vs_soc_segments.push_back({80.0, 90.0, 0.4217281774756626, 107.74474727765312}); - P2_vs_soc_segments.push_back({90.0, 96.37854258608343, 1.4284341495143404, 17.14120979417212}); - P2_vs_soc_segments.push_back({96.37854258608343, 100.1, -40.38750000000007, 4047.300000000006}); - zero_slope_threashold_P2_vs_soc = 0.21426512242715087; - // min_non_zero_slope = 0.23807235825238984 - } - else if(SE_enum == xfc_150 && EV_enum == bev300_400kW) - { - P2_vs_soc_segments.push_back({-0.1, 2.0, 3.9602889016317047, 114.15519782569974}); - P2_vs_soc_segments.push_back({2.0, 50.0, 0.22338493959603753, 121.62900574977107}); - P2_vs_soc_segments.push_back({50.0, 60.0, 0.4179693519528929, 111.8997851319283}); - P2_vs_soc_segments.push_back({60.0, 64.0, 0.34792186951924226, 116.10263407794734}); - P2_vs_soc_segments.push_back({64.0, 80.0, 0.27864623463526195, 120.53627471052208}); - P2_vs_soc_segments.push_back({80.0, 90.0, 0.5331521155660414, 100.17580423605973}); - P2_vs_soc_segments.push_back({90.0, 94.07680939379412, 1.0457918137074111, 54.03823140333645}); - P2_vs_soc_segments.push_back({94.07680939379412, 100.1, -24.74561402366666, 2480.411402363966}); - zero_slope_threashold_P2_vs_soc = 0.20104644563643378; - // min_non_zero_slope = 0.22338493959603753 - } - else if(SE_enum == xfc_150 && EV_enum == bev250_350kW) - { - P2_vs_soc_segments.push_back({-0.1, 4.0, 4.093204816419428, 114.60973485974407}); - P2_vs_soc_segments.push_back({4.0, 10.0, 0.9790362665227138, 127.06640905933092}); - P2_vs_soc_segments.push_back({10.0, 88.00164569821838, 0.24836435566451834, 134.37312816791288}); - P2_vs_soc_segments.push_back({88.00164569821838, 100.1, -12.395833333333346, 1247.0833333333346}); - zero_slope_threashold_P2_vs_soc = 0.22352792009806652; - // min_non_zero_slope = 0.24836435566451834 - } - else if(SE_enum == xfc_150 && EV_enum == bev300_300kW) - { - P2_vs_soc_segments.push_back({-0.1, 3.0, 4.47056295290951, 112.38226810561518}); - P2_vs_soc_segments.push_back({3.0, 4.0, 3.0909542725259143, 116.52109414676598}); - P2_vs_soc_segments.push_back({4.0, 10.0, 1.0801824141979623, 124.56418158007777}); - P2_vs_soc_segments.push_back({10.0, 85.78074999649847, 0.24809195400623296, 132.88508618199506}); - P2_vs_soc_segments.push_back({85.78074999649847, 93.0, -12.896188741779294, 1260.4113424309744}); - P2_vs_soc_segments.push_back({93.0, 100.1, -7.843984958785712, 790.5563906125712}); - zero_slope_threashold_P2_vs_soc = 0.22328275860560967; - // min_non_zero_slope = 0.24809195400623296 - } - else if(SE_enum == xfc_150 && EV_enum == bev150_150kW) - { - P2_vs_soc_segments.push_back({-0.1, 3.0, 4.99957894709066, 110.694315783324}); - P2_vs_soc_segments.push_back({3.0, 10.0, 1.2821954886505722, 121.84646615864426}); - P2_vs_soc_segments.push_back({10.0, 71.79222115564788, 0.2495069251938948, 132.17335179321103}); - P2_vs_soc_segments.push_back({71.79222115564788, 93.0, -5.747975708182693, 562.7459513857405}); - P2_vs_soc_segments.push_back({93.0, 100.1, -3.620300751678571, 364.8721804308571}); - zero_slope_threashold_P2_vs_soc = 0.22455623267450533; - // min_non_zero_slope = 0.2495069251938948 - } - else if(SE_enum == xfc_150 && EV_enum == bev250_ld2_300kW) - { - P2_vs_soc_segments.push_back({-0.1, 3.0, 4.6056579736571575, 110.6314475850196}); - P2_vs_soc_segments.push_back({3.0, 4.0, 2.629336759794284, 116.56041122660822}); - P2_vs_soc_segments.push_back({4.0, 10.0, 1.117204294753378, 122.60894108677185}); - P2_vs_soc_segments.push_back({10.0, 84.58878917626679, 0.2462678254666393, 131.31830577963925}); - P2_vs_soc_segments.push_back({84.58878917626679, 93.0, -11.573502722587579, 1131.1383847808447}); - P2_vs_soc_segments.push_back({93.0, 100.1, -7.039473684371428, 709.4736842267428}); - zero_slope_threashold_P2_vs_soc = 0.22164104291997538; - // min_non_zero_slope = 0.2462678254666393 - } - else if(SE_enum == xfc_150 && EV_enum == bev200_ld4_150kW) - { - P2_vs_soc_segments.push_back({-0.1, 3.0, 4.387833333333332, 110.026}); - P2_vs_soc_segments.push_back({3.0, 4.0, 3.0039285714285713, 114.17771428571429}); - P2_vs_soc_segments.push_back({4.0, 10.0, 1.0604285714285697, 121.9517142857143}); - P2_vs_soc_segments.push_back({10.0, 85.72163996478638, 0.24300000000000002, 130.12599999999998}); - P2_vs_soc_segments.push_back({85.72163996478638, 93.0, -12.565517241379332, 1228.0931034482778}); - P2_vs_soc_segments.push_back({93.0, 100.1, -7.6428571428571415, 770.2857142857141}); - zero_slope_threashold_P2_vs_soc = 0.21870000000000003; - // min_non_zero_slope = 0.24300000000000002 - } - else if(SE_enum == xfc_150 && EV_enum == bev275_ld1_150kW) - { - P2_vs_soc_segments.push_back({-0.1, 3.0, 4.645111841936343, 109.2933947328678}); - P2_vs_soc_segments.push_back({3.0, 4.0, 2.4053712405140546, 116.01261653713465}); - P2_vs_soc_segments.push_back({4.0, 10.0, 1.1287199247709812, 121.11922180010694}); - P2_vs_soc_segments.push_back({10.0, 83.94626112545511, 0.24423785424213065, 129.96404250539547}); - P2_vs_soc_segments.push_back({83.94626112545511, 93.0, -10.912159709222056, 1066.501905587351}); - P2_vs_soc_segments.push_back({93.0, 100.1, -6.637218044871427, 668.9323308027426}); - zero_slope_threashold_P2_vs_soc = 0.2198140688179176; - // min_non_zero_slope = 0.24423785424213065 - } - else if(SE_enum == xfc_150 && EV_enum == bev250_ld1_75kW) - { - P2_vs_soc_segments.push_back({-0.1, 4.0, 1.964999999973802, 55.0199999992664}); - P2_vs_soc_segments.push_back({4.0, 10.0, 0.46999999999373154, 60.999999999186684}); - P2_vs_soc_segments.push_back({10.0, 90.97982885085574, 0.11923076922917951, 64.50769230683221}); - P2_vs_soc_segments.push_back({90.97982885085574, 100.1, -7.828947368316662, 787.6315789368662}); - zero_slope_threashold_P2_vs_soc = 0.10730769230626155; - // min_non_zero_slope = 0.11923076922917951 - } - else if(SE_enum == xfc_150 && EV_enum == bev150_ld1_50kW) - { - P2_vs_soc_segments.push_back({-0.1, 4.0, 1.3186184209793759, 36.9213157874225}); - P2_vs_soc_segments.push_back({4.0, 10.0, 0.3153947368245828, 40.934210524041674}); - P2_vs_soc_segments.push_back({10.0, 89.85909047573648, 0.0800101214530449, 43.288056677757055}); - P2_vs_soc_segments.push_back({89.85909047573648, 100.1, -4.697368420791664, 472.5789473421664}); - zero_slope_threashold_P2_vs_soc = 0.0720091093077404; - // min_non_zero_slope = 0.0800101214530449 - } - else if(SE_enum == dcfc_50 && EV_enum == bev250_400kW) - { - P2_vs_soc_segments.push_back({-0.1, 2.0, 3.788484599254138, 80.8617667161077}); - P2_vs_soc_segments.push_back({2.0, 50.0, 0.17117626721323317, 88.09638338018951}); - P2_vs_soc_segments.push_back({50.0, 60.0, 0.3014386748549845, 81.58326299810194}); - P2_vs_soc_segments.push_back({60.0, 64.0, 0.2854513841618164, 82.54250043969203}); - P2_vs_soc_segments.push_back({64.0, 80.0, 0.20095911656999052, 87.95000556556889}); - P2_vs_soc_segments.push_back({80.0, 90.0, 0.3345955326854353, 77.2590922763333}); - P2_vs_soc_segments.push_back({90.0, 95.17766873682544, 0.9598383128649036, 20.987242060181156}); - P2_vs_soc_segments.push_back({95.17766873682544, 100.1, -22.207602339688908, 2226.0102339690106}); - zero_slope_threashold_P2_vs_soc = 0.15405864049190987; - // min_non_zero_slope = 0.17117626721323317 - } - else if(SE_enum == dcfc_50 && EV_enum == bev300_575kW) - { - P2_vs_soc_segments.push_back({-0.1, 2.0, 4.201276910336288, 79.82426129638964}); - P2_vs_soc_segments.push_back({2.0, 50.0, 0.17505320459734566, 87.87670870786754}); - P2_vs_soc_segments.push_back({50.0, 64.0, 0.3000912078811646, 81.62480854367658}); - P2_vs_soc_segments.push_back({64.0, 80.0, 0.20006080525410974, 88.02675431180809}); - P2_vs_soc_segments.push_back({80.0, 90.0, 0.31009424814386843, 79.22407888062739}); - P2_vs_soc_segments.push_back({90.0, 97.36748324301774, 1.0503192275840734, 12.603830731008948}); - P2_vs_soc_segments.push_back({97.36748324301774, 100.1, -40.38749999999989, 4047.299999999989}); - zero_slope_threashold_P2_vs_soc = 0.1575478841376111; - // min_non_zero_slope = 0.17505320459734566 - } - else if(SE_enum == dcfc_50 && EV_enum == bev300_400kW) - { - P2_vs_soc_segments.push_back({-0.1, 2.0, 4.199614678289122, 79.79267888749331}); - P2_vs_soc_segments.push_back({2.0, 50.0, 0.1749839449287132, 87.84194035421413}); - P2_vs_soc_segments.push_back({50.0, 64.0, 0.299972477020652, 81.5925137496172}); - P2_vs_soc_segments.push_back({64.0, 80.0, 0.1999816513471008, 87.99192659272447}); - P2_vs_soc_segments.push_back({80.0, 90.0, 0.3099715595880074, 79.19273393345193}); - P2_vs_soc_segments.push_back({90.0, 96.10440213789735, 1.0499036695722772, 12.598844034867646}); - P2_vs_soc_segments.push_back({96.10440213789735, 100.1, -27.633552618825053, 2769.205261879805}); - zero_slope_threashold_P2_vs_soc = 0.15748555043584186; - // min_non_zero_slope = 0.1749839449287132 - } - else if(SE_enum == dcfc_50 && EV_enum == bev250_350kW) - { - P2_vs_soc_segments.push_back({-0.1, 4.0, 3.009709423837818, 84.27186386745888}); - P2_vs_soc_segments.push_back({4.0, 10.0, 0.7198796077372884, 93.43118313186099}); - P2_vs_soc_segments.push_back({10.0, 91.28940217198085, 0.18262084975332216, 98.80377071170065}); - P2_vs_soc_segments.push_back({91.28940217198085, 100.1, -12.395833333333321, 1247.0833333333321}); - zero_slope_threashold_P2_vs_soc = 0.16435876477798994; - // min_non_zero_slope = 0.18262084975332216 - } - else if(SE_enum == dcfc_50 && EV_enum == bev300_300kW) - { - P2_vs_soc_segments.push_back({-0.1, 4.0, 2.9995937847830283, 83.9886259739248}); - P2_vs_soc_segments.push_back({4.0, 10.0, 0.7174600910168047, 93.11716074898969}); - P2_vs_soc_segments.push_back({10.0, 89.33220488812198, 0.18200706073257772, 98.47169105183197}); - P2_vs_soc_segments.push_back({89.33220488812198, 100.1, -10.177631574249991, 1023.9210521589991}); - zero_slope_threashold_P2_vs_soc = 0.16380635465931995; - // min_non_zero_slope = 0.18200706073257772 - } - else if(SE_enum == dcfc_50 && EV_enum == bev150_150kW) - { - P2_vs_soc_segments.push_back({-0.1, 3.0, 3.7605318619325048, 79.81793577856644}); - P2_vs_soc_segments.push_back({3.0, 4.0, 1.0131800786122467, 88.05999112852722}); - P2_vs_soc_segments.push_back({4.0, 10.0, 0.9211469136841531, 88.42812378823957}); - P2_vs_soc_segments.push_back({10.0, 79.21407166142347, 0.18203905240493465, 95.81920240103176}); - P2_vs_soc_segments.push_back({79.21407166142347, 93.0, -5.952087114006899, 581.7283121273916}); - P2_vs_soc_segments.push_back({93.0, 100.1, -3.620300751678571, 364.8721804308571}); - zero_slope_threashold_P2_vs_soc = 0.1638351471644412; - // min_non_zero_slope = 0.18203905240493465 - } - else if(SE_enum == dcfc_50 && EV_enum == bev250_ld2_300kW) - { - P2_vs_soc_segments.push_back({-0.1, 4.0, 2.9745412836807366, 83.2871559430606}); - P2_vs_soc_segments.push_back({4.0, 10.0, 0.7114678897353396, 92.33944951884219}); - P2_vs_soc_segments.push_back({10.0, 88.17172261448238, 0.18048694420454656, 97.64925897415013}); - P2_vs_soc_segments.push_back({88.17172261448238, 100.1, -9.133771930033335, 918.9035087929335}); - zero_slope_threashold_P2_vs_soc = 0.1624382497840919; - // min_non_zero_slope = 0.18048694420454656 - } - else if(SE_enum == dcfc_50 && EV_enum == bev200_ld4_150kW) - { - P2_vs_soc_segments.push_back({-0.1, 4.0, 2.9833655973345725, 83.53423672536802}); - P2_vs_soc_segments.push_back({4.0, 10.0, 0.7135785398204808, 92.61338495542438}); - P2_vs_soc_segments.push_back({10.0, 89.10233975523242, 0.18102237916886246, 97.93894656194057}); - P2_vs_soc_segments.push_back({89.10233975523242, 100.1, -9.916666666666659, 997.666666666666}); - zero_slope_threashold_P2_vs_soc = 0.1629201412519762; - // min_non_zero_slope = 0.18102237916886246 - } - else if(SE_enum == dcfc_50 && EV_enum == bev275_ld1_150kW) - { - P2_vs_soc_segments.push_back({-0.1, 3.0, 3.0938121720736254, 83.74678600148754}); - P2_vs_soc_segments.push_back({3.0, 4.0, 2.783247248588379, 84.67848077194328}); - P2_vs_soc_segments.push_back({4.0, 10.0, 0.7424466720727572, 92.84168307800577}); - P2_vs_soc_segments.push_back({10.0, 87.25460192080672, 0.18250827670609035, 98.44106703167243}); - P2_vs_soc_segments.push_back({87.25460192080672, 93.0, -10.912159709222076, 1066.501905587353}); - P2_vs_soc_segments.push_back({93.0, 100.1, -6.637218044871427, 668.9323308027426}); - zero_slope_threashold_P2_vs_soc = 0.1642574490354813; - // min_non_zero_slope = 0.18250827670609035 - } - else if(SE_enum == dcfc_50 && EV_enum == bev250_ld1_75kW) - { - P2_vs_soc_segments.push_back({-0.1, 4.0, 1.5065000003205822, 42.18200000897634}); - P2_vs_soc_segments.push_back({4.0, 10.0, 0.3603333334100125, 46.76666667661862}); - P2_vs_soc_segments.push_back({10.0, 93.1997917851699, 0.09141025642970844, 49.45589744642166}); - P2_vs_soc_segments.push_back({93.1997917851699, 100.1, -7.828947368316656, 787.6315789368657}); - zero_slope_threashold_P2_vs_soc = 0.0822692307867376; - // min_non_zero_slope = 0.09141025642970844 - } - else if(SE_enum == dcfc_50 && EV_enum == bev150_ld1_50kW) - { - P2_vs_soc_segments.push_back({-0.1, 4.0, 1.3186184209793759, 36.9213157874225}); - P2_vs_soc_segments.push_back({4.0, 10.0, 0.3153947368245828, 40.934210524041674}); - P2_vs_soc_segments.push_back({10.0, 89.85909047573648, 0.0800101214530449, 43.288056677757055}); - P2_vs_soc_segments.push_back({89.85909047573648, 100.1, -4.697368420791664, 472.5789473421664}); - zero_slope_threashold_P2_vs_soc = 0.0720091093077404; - // min_non_zero_slope = 0.0800101214530449 - } - else - { - std::cout << "WARNING: P2_vs_soc is not defigned in the factory_EV_charge_model for EV_enum:" << EV_enum << " and SE_enum:" << SE_enum << std::endl; - } - } -} - - -void factory_EV_charge_model::get_E1_Energy_limit(bool is_charging_not_discharging, bool are_battery_losses, vehicle_enum vehicle_type, supply_equipment_enum supply_equipment_type, - double battery_size_with_degredation_kWh, double SE_P2_limit_atNominalV_kW, double recalc_exponent_threashold, - double max_P2kW_error_before_reappling_P2kW_limit_to_P2_vs_soc_segments, line_segment& bat_eff_vs_P2, - calculate_E1_energy_limit& return_val) -{ - poly_function_of_x P2_vs_puVrms; - double zero_slope_threashold_P2_vs_soc; - std::vector P2_vs_soc_segments; - - this->get_P2_vs_puVrms(is_charging_not_discharging, vehicle_type, supply_equipment_type, SE_P2_limit_atNominalV_kW, P2_vs_puVrms); - this->get_P2_vs_soc(is_charging_not_discharging, vehicle_type, supply_equipment_type, zero_slope_threashold_P2_vs_soc, P2_vs_soc_segments); - - //-------------------------------- - - algorithm_P2_vs_soc *X; - calc_E1_energy_limit *Y; - - if(are_battery_losses) - X = new algorithm_P2_vs_soc_losses(battery_size_with_degredation_kWh, recalc_exponent_threashold, zero_slope_threashold_P2_vs_soc, bat_eff_vs_P2); - else - X = new algorithm_P2_vs_soc_no_losses(battery_size_with_degredation_kWh, recalc_exponent_threashold, zero_slope_threashold_P2_vs_soc); - - if(is_charging_not_discharging) - Y = new calc_E1_energy_limit_charging(X); - else - Y = new calc_E1_energy_limit_discharging(X); - - //-------------------------------- - - calculate_E1_energy_limit tmp(is_charging_not_discharging, max_P2kW_error_before_reappling_P2kW_limit_to_P2_vs_soc_segments, Y, P2_vs_puVrms, P2_vs_soc_segments); - - return_val = tmp; -} - - -vehicle_charge_model* factory_EV_charge_model::alloc_get_EV_charge_model(const charge_event_data& event, supply_equipment_enum supply_equipment_type, double SE_P2_limit_kW) -{ - double battery_size_kWh, recalc_exponent_threashold, max_P2kW_error_before_reappling_P2kW_limit_to_P2_vs_soc_segments, soc_of_full_battery; - double battery_size_with_degredation_kWh; - bool will_never_discharge, are_battery_losses; - battery_chemistry bat_chem; - - soc_of_full_battery = 99.8; - recalc_exponent_threashold = 0.00000001; // Should be very small - max_P2kW_error_before_reappling_P2kW_limit_to_P2_vs_soc_segments = 0.5; - - will_never_discharge = true; - are_battery_losses = true; - - get_pev_battery_info(event.vehicle_type, bat_chem, battery_size_kWh, battery_size_with_degredation_kWh); - - //--------------------------------- - - integrate_X_through_time get_next_P2; - this->get_integrate_X_through_time_obj(event.vehicle_type, supply_equipment_type, get_next_P2); - - //--------------------------------- - - double zero_slope_threashold_bat_eff_vs_P2, zst_A, zst_B; - line_segment bat_eff_vs_P2_charging; - line_segment bat_eff_vs_P2_discharging; - - get_bat_eff_vs_P2(true, bat_chem, battery_size_kWh, zst_A, bat_eff_vs_P2_charging); - get_bat_eff_vs_P2(false, bat_chem, battery_size_kWh, zst_B, bat_eff_vs_P2_discharging); - - zero_slope_threashold_bat_eff_vs_P2 = (zst_A < zst_B) ? zst_A : zst_B; - - //--------------------------------- - - double final_bat_size_kWh; - - if(this->model_stochastic_battery_degregation) - final_bat_size_kWh = battery_size_with_degredation_kWh; - else - final_bat_size_kWh = battery_size_kWh; - - //--------------------------------- - - calculate_E1_energy_limit get_E1_limits_charging; - calculate_E1_energy_limit get_E1_limits_discharging; - - this->get_E1_Energy_limit(true, are_battery_losses, event.vehicle_type, supply_equipment_type, final_bat_size_kWh, SE_P2_limit_kW, recalc_exponent_threashold, - max_P2kW_error_before_reappling_P2kW_limit_to_P2_vs_soc_segments, bat_eff_vs_P2_charging, get_E1_limits_charging); - - this->get_E1_Energy_limit(false, are_battery_losses, event.vehicle_type, supply_equipment_type, final_bat_size_kWh, SE_P2_limit_kW, recalc_exponent_threashold, - max_P2kW_error_before_reappling_P2kW_limit_to_P2_vs_soc_segments, bat_eff_vs_P2_discharging, get_E1_limits_discharging); - - //--------------------------------- - - battery bat(final_bat_size_kWh, event.arrival_SOC, will_never_discharge, zero_slope_threashold_bat_eff_vs_P2, - bat_eff_vs_P2_charging, bat_eff_vs_P2_discharging, get_E1_limits_charging, get_E1_limits_discharging, get_next_P2); - - //--------------------------------- - - return new vehicle_charge_model(event, bat, soc_of_full_battery); -} - - -bool get_pev_battery_info(vehicle_enum vehicle_type, battery_chemistry& bat_chem, double& battery_size_kWh, double& battery_size_with_stochastic_degredation_kWh) -{ - bool is_success = true; - - if(vehicle_type == phev20) - { - bat_chem = NMC; - battery_size_kWh = 5; - } - else if(vehicle_type == phev50) - { - bat_chem = NMC; - battery_size_kWh = 16; - } - else if(vehicle_type == phev_SUV) - { - bat_chem = NMC; - battery_size_kWh = 23.75; - } - else if(vehicle_type == bev150_ld1_50kW) - { - bat_chem = NMC; - battery_size_kWh = 45; - } - else if(vehicle_type == bev250_ld1_75kW) - { - bat_chem = NMC; - battery_size_kWh = 75; - } - else if(vehicle_type == bev275_ld1_150kW) - { - bat_chem = NMC; - battery_size_kWh = 83; - } - else if(vehicle_type == bev200_ld4_150kW) - { - bat_chem = NMC; - battery_size_kWh = 95; - } - else if(vehicle_type == bev250_ld2_300kW) - { - bat_chem = NMC; - battery_size_kWh = 88; - } - else if(vehicle_type == bev150_150kW) - { - bat_chem = NMC; - battery_size_kWh = 45; - } - else if(vehicle_type == bev300_300kW) - { - bat_chem = NMC; - battery_size_kWh = 97.5; - } - else if(vehicle_type == bev250_350kW) - { - bat_chem = NMC; - battery_size_kWh = 118.8; - } - else if(vehicle_type == bev300_400kW) - { - bat_chem = LTO; - battery_size_kWh = 97.5; - } - else if(vehicle_type == bev300_575kW) - { - bat_chem = LTO; - battery_size_kWh = 142.5; - } - else if(vehicle_type == bev250_400kW) - { - bat_chem = LTO; - battery_size_kWh = 87.5; - } - else - { - is_success = false; - std::cout << "WARNING: get_pev_battery_info is not defigned in the factory_EV_charge_model for EV_enum:" << vehicle_type << std::endl; - } - - //--------------------------- - - if(bat_chem == LTO) - battery_size_with_stochastic_degredation_kWh = rand_val::rand_range(0.95, 1.0) * battery_size_kWh; - - else if(bat_chem == LMO) - battery_size_with_stochastic_degredation_kWh = rand_val::rand_range(0.85, 1.0) * battery_size_kWh; - - else if(bat_chem == NMC) - battery_size_with_stochastic_degredation_kWh = rand_val::rand_range(0.90, 1.0) * battery_size_kWh; - - //--------------------------- - - return is_success; -} - - -//############################################################################# -// Supply Equipment Charge Model Factory -//############################################################################# - -factory_supply_equipment_model::factory_supply_equipment_model(charge_event_queuing_inputs& CE_queuing_inputs_) -{ - this->CE_queuing_inputs = CE_queuing_inputs_; -} - - -void factory_supply_equipment_model::get_supply_equipment_model(bool building_charge_profile_library, SE_configuration& SE_config, get_base_load_forecast* baseLD_forecaster, manage_L2_control_strategy_parameters* manage_L2_control, supply_equipment& return_val) -{ - double P2_limit_kW, standby_acP_kW, standby_acQ_kVAR; - - supply_equipment_enum SE_enum = SE_config.supply_equipment_type; - - standby_acP_kW = 0; - standby_acQ_kVAR = 0; - - if(SE_enum == L1_1440) - { - P2_limit_kW = 1.289338; - } - else if(SE_enum == L2_3600) - { - P2_limit_kW = 3.30192; - } - else if(SE_enum == L2_7200) - { - P2_limit_kW = 6.624; - } - else if(SE_enum == L2_9600) - { - P2_limit_kW = 8.832; - } - else if(SE_enum == L2_11520) - { - P2_limit_kW = 10.5984; - } - else if(SE_enum == L2_17280) - { - P2_limit_kW = 15.8976; - } - else if(SE_enum == dcfc_50) - { - P2_limit_kW = 50; - standby_acP_kW = 0.100; - standby_acQ_kVAR = -0.590; - } - else if(SE_enum == xfc_150) - { - P2_limit_kW = 150; - standby_acP_kW = 0.170; - standby_acQ_kVAR = -0.445; - } - else if(SE_enum == xfc_350) - { - P2_limit_kW = 350; - standby_acP_kW = 0.170; - standby_acQ_kVAR = -0.445; - } - else - std::cout << "WARNING: get_supply_equipment_model is not defigned in the factory_supply_equipment_model for SE_enum:" << SE_enum << std::endl; - - //============================ - - supply_equipment_load load(P2_limit_kW, standby_acP_kW, standby_acQ_kVAR, SE_config, this->CE_queuing_inputs); - supply_equipment_control control(building_charge_profile_library, SE_config, baseLD_forecaster, manage_L2_control); - supply_equipment SE(SE_config, control, load); - - return_val = SE; -} - - -//############################################################################# -// AC to DC Converter Factory -//############################################################################# - -ac_to_dc_converter* factory_ac_to_dc_converter::alloc_get_ac_to_dc_converter(ac_to_dc_converter_enum converter_type, supply_equipment_enum SE_type, - vehicle_enum vehicle_type, charge_event_P3kW_limits& P3kW_limits) -{ - std::vector inv_eff_from_P2_vec; - std::vector inv_pf_from_P3_vec; - - //============================================================= - //============================================================= - - if(supply_equipment_is_L1(SE_type)) - { - // {x_LB, x_UB, degree, a, b, c, d, e} degree = {first, second, third, fourth} - inv_eff_from_P2_vec.clear(); - inv_eff_from_P2_vec.push_back({-20, 0, first, (1.1-1)/(-20-0), 1, 0, 0, 0}); - inv_eff_from_P2_vec.push_back({0, 1.4, second, -0.09399, 0.26151, 0.71348, 0, 0}); - inv_eff_from_P2_vec.push_back({1.4, 20, first, 0, 0.895374, 0, 0, 0}); - - inv_pf_from_P3_vec.clear(); - inv_pf_from_P3_vec.push_back({-20, 0, first, (-1+0.9)/(-20-0), -0.90, 0, 0, 0}); - inv_pf_from_P3_vec.push_back({0, 1.3, first, -0.0138, -0.9793, 0, 0, 0}); - inv_pf_from_P3_vec.push_back({1.3, 20, first, 0, -0.99724, 0, 0, 0}); - } - else if(supply_equipment_is_L2(SE_type)) - { - // {x_LB, x_UB, degree, a, b, c, d, e} degree = {first, second, third, fourth} - inv_eff_from_P2_vec.clear(); - inv_eff_from_P2_vec.push_back({-20, 0, first, (1.1-1)/(-20-0), 1, 0, 0, 0}); - inv_eff_from_P2_vec.push_back({0, 4, second, -0.005, 0.045, 0.82, 0, 0}); - inv_eff_from_P2_vec.push_back({4, 20, first, 0, 0.92, 0, 0, 0}); - - inv_pf_from_P3_vec.clear(); - inv_pf_from_P3_vec.push_back({-20, 0, first, (-1+0.9)/(-20-0), -0.90, 0, 0, 0}); - inv_pf_from_P3_vec.push_back({0, 6, third, -0.00038737, 0.00591216, -0.03029164, -0.9462841, 0}); - inv_pf_from_P3_vec.push_back({6, 20, first, 0, -0.9988681, 0, 0, 0}); - } - else if(SE_type == dcfc_50) - { - // {x_LB, x_UB, degree, a, b, c, d, e} degree = {first, second, third, fourth} - inv_eff_from_P2_vec.clear(); - inv_eff_from_P2_vec.push_back({-1000, 0, first, (1.1-1)/1000, 1, 0, 0, 0}); - inv_eff_from_P2_vec.push_back({0, 10, second, -0.0023331, 0.04205, 0.7284, 0, 0}); - inv_eff_from_P2_vec.push_back({10, 20, second, -0.00035233, 0.01454, 0.7755, 0, 0}); - inv_eff_from_P2_vec.push_back({20, 30, second, -0.00015968, 0.01006, 0.7698, 0, 0}); - inv_eff_from_P2_vec.push_back({30, 40, second, -0.000083167, 0.007314, 0.7697, 0, 0}); - inv_eff_from_P2_vec.push_back({40, 1000, first, 0, 0.9292, 0, 0, 0}); - - // {x_LB, x_UB, degree, a, b, c, d, e} degree = {first, second, third, fourth} - inv_pf_from_P3_vec.clear(); - inv_pf_from_P3_vec.push_back({-1000, 0, first, (0.9-1)/1000, 0.90, 0, 0, 0}); - inv_pf_from_P3_vec.push_back({0, 10, second, 0.0037161, -0.1109, -0.06708, 0, 0}); - inv_pf_from_P3_vec.push_back({10, 18.6, first, -0.01474, -0.6568, 0, 0, 0}); - inv_pf_from_P3_vec.push_back({18.6, 28, first, -0.003804, -0.8601, 0, 0, 0}); - inv_pf_from_P3_vec.push_back({28, 42, first, -0.001603, -0.9218, 0, 0, 0}); - inv_pf_from_P3_vec.push_back({42, 1000, first, 0, -0.99, 0, 0, 0}); - } - else if(SE_type == xfc_150 || SE_type == xfc_350) - { - // {x_LB, x_UB, degree, a, b, c, d, e} degree = {first, second, third, fourth} - inv_eff_from_P2_vec.clear(); - inv_eff_from_P2_vec.push_back({-1000, 0, first, (1.1-1)/1000, 1, 0, 0, 0}); - inv_eff_from_P2_vec.push_back({0, 25, second, -0.0007134, 0.03554, 0.4724, 0, 0}); - inv_eff_from_P2_vec.push_back({25, 130, first, 0.0003331, 0.9067, 0, 0, 0}); - inv_eff_from_P2_vec.push_back({130, 1000, first, 0, 0.95, 0, 0, 0}); - - // {x_LB, x_UB, degree, a, b, c, d, e} degree = {first, second, third, fourth} - inv_pf_from_P3_vec.clear(); - inv_pf_from_P3_vec.push_back({-1000, 0, first, (0.9-1)/1000, 0.90, 0, 0, 0}); - inv_pf_from_P3_vec.push_back({0, 60, third, -0.0000053284, 0.00071628, -0.03361, -0.3506, 0}); - inv_pf_from_P3_vec.push_back({60, 80, first, -0.001034, -0.8775, 0, 0, 0}); - inv_pf_from_P3_vec.push_back({80, 133, second, 0.0000027985, -0.0008177, -0.9127, 0, 0}); - inv_pf_from_P3_vec.push_back({133, 1000, first, 0, -0.972, 0, 0, 0}); - } - else - std::cout << "WARNING: get_supply_equipment_model is not defigned in the factory_supply_equipment_model for SE_enum:" << SE_type << std::endl; - - //------------------------------------ - - double S3kVA_from_max_nominal_P3kW_multiplier = 1; - - double x_tolerance = 0.0001; - bool take_abs_of_x = false; - bool if_x_is_out_of_bounds_print_warning_message = false; - - poly_function_of_x inv_eff_from_P2(x_tolerance, take_abs_of_x, if_x_is_out_of_bounds_print_warning_message, inv_eff_from_P2_vec, "inv_eff_from_P2"); - poly_function_of_x inv_pf_from_P3(x_tolerance, take_abs_of_x, if_x_is_out_of_bounds_print_warning_message, inv_pf_from_P3_vec, "inv_pf_from_P3"); - - ac_to_dc_converter* return_val = NULL; - - if(converter_type == pf) - return_val = new ac_to_dc_converter_pf(P3kW_limits, S3kVA_from_max_nominal_P3kW_multiplier, inv_eff_from_P2, inv_pf_from_P3); - - else if(converter_type == Q_setpoint) - return_val = new ac_to_dc_converter_Q_setpoint(P3kW_limits, S3kVA_from_max_nominal_P3kW_multiplier, inv_eff_from_P2); - - else - { - std::cout << "ERROR: In factory_ac_to_dc_converter undefigned converter_type." << std::endl; - return_val = new ac_to_dc_converter_pf(P3kW_limits, S3kVA_from_max_nominal_P3kW_multiplier, inv_eff_from_P2, inv_pf_from_P3); - } - - return return_val; -} - - -//############################################################################# -// Read Input Data Files -//############################################################################# -/* -//================================== -// charge_events_file_factory -//================================== - -charge_events_file_factory::~charge_events_file_factory() {} - -int charge_events_file_factory::number_of_lines_to_skip_at_beginning_of_file() {return 1;} - -int charge_events_file_factory::number_of_fields() {return 10;} - - -void charge_events_file_factory::parse_line(const std::string& line, bool& parse_successful, charge_event_data& event_data) -{ - parse_successful = true; - - const char delim = ','; - std::vector tokens = split(line, delim); - - if(tokens.size() != this->number_of_fields()) - { - parse_successful = false; - return; - } - - //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - try - { - event_data.charge_event_id = std::stoi(tokens[0]); - event_data.supply_equipment_id = std::stoi(tokens[1]); - event_data.vehicle_id = std::stoi(tokens[2]); - event_data.arrival_unix_time = 3600*std::stod(tokens[4]); - event_data.departure_unix_time = 3600*std::stod(tokens[6]); - event_data.arrival_SOC = 100*std::stod(tokens[8]); - event_data.departure_SOC = 100*std::stod(tokens[9]); - } - catch(const std::invalid_argument& ia) - { - parse_successful = false; - return; - } - catch(const std::out_of_range& ia) - { - parse_successful = false; - return; - } - - event_data.vehicle_type = get_vehicle_enum(tokens[3], parse_successful); - - if(!parse_successful) - return; - - //--------------------------------- - - stop_charging_criteria_csv_file_enum csv_file_criteria_enum = first_event; //get_stop_charging_criteria_csv_file_enum(tokens[8], parse_successful); - - if(!parse_successful) - return; - - stop_charging_criteria criteria; - criteria.soc_mode = target_charging; - criteria.depart_time_mode = block_charging; - criteria.soc_block_charging_max_undershoot_percent = 50; // Not used here, only used when criteria.soc_mode = block_charging - criteria.depart_time_block_charging_max_undershoot_percent = 40; - - if(csv_file_criteria_enum == soc) - criteria.decision_metric = stop_charging_using_target_soc; - - else if(csv_file_criteria_enum == depart_time) - criteria.decision_metric = stop_charging_using_depart_time; - - else if(csv_file_criteria_enum == first_event) - criteria.decision_metric = stop_charging_using_whatever_happens_first; - - event_data.stop_charge = criteria; -} - - -//================================== -// supply_equipment_info_file_factory -//================================== - -supply_equipment_info_file_factory::~supply_equipment_info_file_factory() {} - -int supply_equipment_info_file_factory::number_of_lines_to_skip_at_beginning_of_file() {return 1;} - -int supply_equipment_info_file_factory::number_of_fields() {return 5;} - - -void supply_equipment_info_file_factory::parse_line(const std::string& line, bool& parse_successful, supply_equipment_data& SE_data) -{ - const char delim = ','; - std::vector tokens = split(line, delim); - - if(tokens.size() != this->number_of_fields()) - { - parse_successful = false; - return; - } - - //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - try - { - SE_data.supply_equipment_id = std::stoi(tokens[0]); - SE_data.latitude = std::stod(tokens[3]); - SE_data.longitude = std::stod(tokens[2]); - SE_data.node_id = std::stoi(tokens[4]); - } - catch(const std::invalid_argument& ia) - { - parse_successful = false; - return; - } - catch(const std::out_of_range& ia) - { - parse_successful = false; - return; - } - - SE_data.supply_equipment_type = get_supply_equipment_enum(tokens[1], parse_successful); -} -*/ - diff --git a/source/charging_models/DirectXFC/SE_EV_factory.h b/source/charging_models/DirectXFC/SE_EV_factory.h deleted file mode 100644 index ba6a277..0000000 --- a/source/charging_models/DirectXFC/SE_EV_factory.h +++ /dev/null @@ -1,159 +0,0 @@ - -#ifndef inl_Factory_SE_EV_H -#define inl_Factory_SE_EV_H - -//==================================================================================================================== -// ################################################################################################################### -//-------------------------------------------------------------------------------------------------------------------- -// DirectXFC Project -//-------------------------------------------------------------------------------------------------------------------- -// ################################################################################################################### -//==================================================================================================================== - -#include "datatypes_global.h" // SE_configuration, pev_charge_fragment, pev_charge_fragment_removal_criteria -#include "datatypes_global_SE_EV_definitions.h" // supply_equipment_enum, vehicle_enum, pev_SE_pair -#include "datatypes_module.h" // charge_event_P3kW_limits, SE_status, CE_Status -#include "vehicle_charge_model.h" // vehicle_charge_model, charge_event_data -#include "supply_equipment_load.h" // supply_equipment_load -#include "supply_equipment_control.h" // supply_equipment_control -#include "supply_equipment.h" // supply_equipment -#include "ac_to_dc_converter.h" // ac_to_dc_converter - - -#include - -class integrate_X_through_time; // Included in cpp file: #include battery_integrate_X_in_time.h - - -enum battery_chemistry -{ - LMO = 0, - LTO = 1, - NMC = 2 -}; - - -void get_bat_eff_vs_P2(bool is_charging_not_discharging, battery_chemistry bat_chem, double battery_size_kWh, double& zero_slope_threashold_bat_eff_vs_P2, line_segment& bat_eff_vs_P2); -bool get_pev_battery_info(vehicle_enum vehicle_type, battery_chemistry& bat_chem, double& battery_size_kWh, double& battery_size_with_stochastic_degredation_kWh); - - -//############################################################################# -// EV Charge Model Factory -//############################################################################# - - -class factory_EV_charge_model -{ -private: - struct point_P2_vs_puVrms - { - double puVrms; - double P2_val; - - bool operator<(const point_P2_vs_puVrms& rhs) const - { - return (this->puVrms < rhs.puVrms); - } - - bool operator<(point_P2_vs_puVrms& rhs) const - { - return (this->puVrms < rhs.puVrms); - } - }; - - bool model_stochastic_battery_degregation; - - std::map ramping_by_pevType_only; - std::map< std::tuple, pev_charge_ramping> ramping_by_pevType_seType; - - void get_integrate_X_through_time_obj(vehicle_enum vehicle_type, supply_equipment_enum supply_equipment_type, integrate_X_through_time& return_val); - void get_P2_vs_puVrms(bool is_charging_not_discharging, vehicle_enum vehicle_type, supply_equipment_enum supply_equipment_type, double SE_P2_limit_atNominalV_kW, poly_function_of_x& P2_vs_puVrms); - void get_P2_vs_soc(bool is_charging_not_discharging, vehicle_enum vehicle_type, supply_equipment_enum supply_equipment_type, double& zero_slope_threashold_P2_vs_soc, std::vector& P2_vs_soc_segments); - void get_E1_Energy_limit(bool is_charging_not_discharging, bool are_battery_losses, vehicle_enum vehicle_type, supply_equipment_enum supply_equipment_type, - double battery_size_with_degredation_kWh, double SE_P2_limit_atNominalV_kW, double recalc_exponent_threashold, - double max_P2kW_error_before_reappling_P2kW_limit_to_P2_vs_soc_segments, line_segment& bat_eff_vs_P2, - calculate_E1_energy_limit& return_val); -public: - factory_EV_charge_model(); - void initialize_custome_parameters(std::map ramping_by_pevType_only_, std::map< std::tuple, pev_charge_ramping> ramping_by_pevType_seType_); - void set_bool_model_stochastic_battery_degregation(bool model_stochastic_battery_degregation_); - vehicle_charge_model* alloc_get_EV_charge_model(const charge_event_data& event, supply_equipment_enum supply_equipment_type, double SE_P2_limit_kW); -}; - - -//############################################################################# -// Supply Equipment Charge Model Factory -//############################################################################# - -class factory_supply_equipment_model -{ -private: - charge_event_queuing_inputs CE_queuing_inputs; - -public: - factory_supply_equipment_model() {}; - factory_supply_equipment_model(charge_event_queuing_inputs& CE_queuing_inputs_); - - void get_supply_equipment_model(bool building_charge_profile_library, SE_configuration& SE_config, get_base_load_forecast* baseLD_forecaster, manage_L2_control_strategy_parameters* manage_L2_control, supply_equipment& return_val); -}; - - -//############################################################################# -// AC to DC Converter Factory -//############################################################################# - -class factory_ac_to_dc_converter -{ -private: - -public: - factory_ac_to_dc_converter() {}; - ac_to_dc_converter* alloc_get_ac_to_dc_converter(ac_to_dc_converter_enum converter_type, supply_equipment_enum SE_type, vehicle_enum vehicle_type, charge_event_P3kW_limits& CE_P3kW_limits); -}; - - -//############################################################################# -// Read Input Data Files -//############################################################################# - -/* -//#include "read_csv_files.h" // charge_events_file, supply_equipment_info_file - -class charge_events_file_factory : public charge_events_file -{ -private: - int num_lines_to_skip_at_beginning_of_file; - charge_events_file_factory(const charge_events_file_factory& obj) = default; - charge_events_file_factory& operator=(const charge_events_file_factory& obj) = default; - -protected: - virtual void parse_line(const std::string& line, bool& parse_successful, charge_event_data& event_data) override final; - virtual int number_of_lines_to_skip_at_beginning_of_file() override final; - virtual int number_of_fields() override final; - -public: - charge_events_file_factory() {}; - virtual ~charge_events_file_factory() override final; -}; - - - -class supply_equipment_info_file_factory : public supply_equipment_info_file -{ -private: - supply_equipment_info_file_factory(const supply_equipment_info_file_factory& obj) = default; - supply_equipment_info_file_factory& operator=(const supply_equipment_info_file_factory& obj) = default; - -protected: - virtual void parse_line(const std::string& line, bool& parse_successful, supply_equipment_data& SE_data) override final; - virtual int number_of_lines_to_skip_at_beginning_of_file() override final; - virtual int number_of_fields() override final; -public: - supply_equipment_info_file_factory() {}; - virtual ~supply_equipment_info_file_factory(); -}; -*/ - -#endif - - diff --git a/source/charging_models/DirectXFC/datatypes_global_SE_EV_definitions.cpp b/source/charging_models/DirectXFC/datatypes_global_SE_EV_definitions.cpp deleted file mode 100644 index af5d456..0000000 --- a/source/charging_models/DirectXFC/datatypes_global_SE_EV_definitions.cpp +++ /dev/null @@ -1,264 +0,0 @@ - -//==================================================================================================================== -// ################################################################################################################### -//-------------------------------------------------------------------------------------------------------------------- -// DirectXFC Project -//-------------------------------------------------------------------------------------------------------------------- -// ################################################################################################################### -//==================================================================================================================== - - -#include "datatypes_global_SE_EV_definitions.h" - - -//================================== -// Supply Equipment Enum -//================================== - - -bool supply_equipment_is_L1(supply_equipment_enum SE_enum) -{ - if(SE_enum == L1_1440) - return true; - else - return false; -} - - -bool supply_equipment_is_L2(supply_equipment_enum SE_enum) -{ - if(SE_enum == L2_3600 || SE_enum == L2_7200 || SE_enum == L2_9600 || SE_enum == L2_11520 || SE_enum == L2_17280) - return true; - else - return false; -} - - -bool supply_equipment_is_50kW_dcfc(supply_equipment_enum SE_enum) -{ - if(SE_enum == dcfc_50) - return true; - else - return false; -} - - -bool supply_equipment_is_3phase(supply_equipment_enum SE_enum) -{ - if(supply_equipment_is_L1(SE_enum) || supply_equipment_is_L2(SE_enum)) - return false; - else - return true; -} - - -bool is_XFC_charge(vehicle_enum PEV_enum, supply_equipment_enum SE_enum) -{ - std::vector SE_enum_vec = {xfc_150, xfc_350}; - std::vector PEV_enum_vec = {bev275_ld1_150kW, bev200_ld4_150kW, bev250_ld2_300kW, bev250_400kW, bev300_575kW, bev300_400kW, bev250_350kW, bev300_300kW, bev150_150kW}; - - bool SE_is_XFC_capable = false; - for(supply_equipment_enum x : SE_enum_vec) - { - if(x == SE_enum) - { - SE_is_XFC_capable = true; - break; - } - } - - bool PEV_is_XFC_capable = false; - for(vehicle_enum x : PEV_enum_vec) - { - if(x == PEV_enum) - { - PEV_is_XFC_capable = true; - break; - } - } - - return SE_is_XFC_capable && PEV_is_XFC_capable; -} - - -std::pair get_supply_equipment_enum(const std::string str_val) -{ - bool conversion_successfull = true; - supply_equipment_enum SE_enum; - - std::string tmp_str = ""; - - // ignores whitespace - for (int i = 0; i < str_val.length(); i++) - if (!std::isspace(str_val[i])) - tmp_str += str_val[i]; - - if (tmp_str == "1" || tmp_str == "L1_1440") SE_enum = L1_1440; - else if (tmp_str == "2" || tmp_str == "L2_3600") SE_enum = L2_3600; - else if (tmp_str == "3" || tmp_str == "L2_7200") SE_enum = L2_7200; - else if (tmp_str == "4" || tmp_str == "L2_9600") SE_enum = L2_9600; - else if (tmp_str == "5" || tmp_str == "L2_11520") SE_enum = L2_11520; - else if (tmp_str == "20" || tmp_str == "L2_17280") SE_enum = L2_17280; - - else if (tmp_str == "6" || tmp_str == "dcfc_50") SE_enum = dcfc_50; - else if (tmp_str == "7" || tmp_str == "xfc_150") SE_enum = xfc_150; - else if (tmp_str == "8" || tmp_str == "xfc_350") SE_enum = xfc_350; - else - { - conversion_successfull = false; - SE_enum = L1_1440; - } - - std::pair return_val = {conversion_successfull, SE_enum}; - - return return_val; -} - - -std::ostream& operator<<(std::ostream& out, const supply_equipment_enum& x) -{ - if(x == L1_1440) out << "L1_1440"; - else if(x == L2_3600) out << "L2_3600"; - else if(x == L2_7200) out << "L2_7200"; - else if(x == L2_9600) out << "L2_9600"; - else if(x == L2_11520) out << "L2_11520"; - else if(x == L2_17280) out << "L2_17280"; - - else if(x == dcfc_50) out << "dcfc_50"; - else if(x == xfc_150) out << "xfc_150"; - else if(x == xfc_350) out << "xfc_350"; - - return out; -} - - -std::vector get_all_SE_enums() -{ - std::vector return_val = {L1_1440, L2_3600, L2_7200, L2_9600, L2_11520, L2_17280, dcfc_50, xfc_150, xfc_350}; - - return return_val; -} - - -supply_equipment_enum get_default_supply_equipment_enum() -{ - return L2_9600; -} - - -//================================== -// Vehicle Enum -//================================== - - -std::pair get_vehicle_enum(const std::string str_val) -{ - bool conversion_successfull = true; - vehicle_enum pev_enum; - - std::string tmp_str = ""; - - // ignores whitespace - for (int i = 0; i < str_val.length(); i++) - if (!std::isspace(str_val[i])) - tmp_str += str_val[i]; - - // Recharge - if (tmp_str == "1" || tmp_str == "bev250_ld2_300kW") pev_enum = bev250_ld2_300kW; - else if (tmp_str == "2" || tmp_str == "bev200_ld4_150kW") pev_enum = bev200_ld4_150kW; - else if (tmp_str == "3" || tmp_str == "bev275_ld1_150kW") pev_enum = bev275_ld1_150kW; - else if (tmp_str == "4" || tmp_str == "bev250_ld1_75kW") pev_enum = bev250_ld1_75kW; - else if (tmp_str == "5" || tmp_str == "bev150_ld1_50kW") pev_enum = bev150_ld1_50kW; - else if (tmp_str == "6" || tmp_str == "phev_SUV") pev_enum = phev_SUV; - else if (tmp_str == "7" || tmp_str == "phev50") pev_enum = phev50; - else if (tmp_str == "8" || tmp_str == "phev20") pev_enum = phev20; - - // DirectXFC - else if (tmp_str == "9" || tmp_str == "bev250_400kW") pev_enum = bev250_400kW; - else if (tmp_str == "10" || tmp_str == "bev300_575kW") pev_enum = bev300_575kW; - else if (tmp_str == "11" || tmp_str == "bev300_400kW") pev_enum = bev300_400kW; - else if (tmp_str == "12" || tmp_str == "bev250_350kW") pev_enum = bev250_350kW; - else if (tmp_str == "13" || tmp_str == "bev300_300kW") pev_enum = bev300_300kW; - else if (tmp_str == "14" || tmp_str == "bev150_150kW") pev_enum = bev150_150kW; - else - { - conversion_successfull = false; - pev_enum = bev150_ld1_50kW; - } - - std::pair return_val = {conversion_successfull, pev_enum}; - - return return_val; -} - - -std::ostream& operator<<(std::ostream& out, const vehicle_enum& x) -{ - if(x == phev20) out << "phev20"; - else if(x == phev50) out << "phev50"; - else if(x == phev_SUV) out << "phev_SUV"; - else if(x == bev150_ld1_50kW) out << "bev150_ld1_50kW"; - else if(x == bev250_ld1_75kW) out << "bev250_ld1_75kW"; - else if(x == bev275_ld1_150kW) out << "bev275_ld1_150kW"; - else if(x == bev200_ld4_150kW) out << "bev200_ld4_150kW"; - else if(x == bev250_ld2_300kW) out << "bev250_ld2_300kW"; - - else if(x == bev250_400kW) out << "bev250_400kW"; - else if(x == bev300_575kW) out << "bev300_575kW"; - else if(x == bev300_400kW) out << "bev300_400kW"; - else if(x == bev250_350kW) out << "bev250_350kW"; - else if(x == bev300_300kW) out << "bev300_300kW"; - else if(x == bev150_150kW) out << "bev150_150kW"; - - return out; -} - - -std::vector get_all_pev_enums() -{ - std::vector return_val = {phev20, phev50, phev_SUV, bev150_ld1_50kW, bev250_ld1_75kW, bev275_ld1_150kW, bev200_ld4_150kW, bev250_ld2_300kW, bev250_400kW, bev300_575kW, bev300_400kW, bev250_350kW, bev300_300kW, bev150_150kW}; - - return return_val; -} - - -vehicle_enum get_default_vehicle_enum() -{ - return bev150_ld1_50kW; -} - -//========================================== -// PEV is Compatible with Supply Equipment -//========================================== - -bool pev_is_compatible_with_supply_equipment(vehicle_enum EV_type, supply_equipment_enum SE_type) -{ - if( (EV_type == phev20 || EV_type == phev50 || EV_type == phev_SUV) && (SE_type == dcfc_50 || SE_type == xfc_150 || SE_type == xfc_350) ) - return false; - //else if( (SE_type == dcfc_50) && (EV_type == bev275_ld1_150kW || EV_type == bev200_ld4_150kW || EV_type == bev250_ld2_300kW || EV_type == bev250_400kW || EV_type == bev300_575kW || EV_type == bev300_400kW || EV_type == bev250_350kW || EV_type == bev300_300kW || EV_type == bev150_150kW) ) - // return false; - else - return true; -} - - -std::vector get_all_compatible_pev_SE_combinations() -{ - std::vector pev_types = get_all_pev_enums(); - std::vector SE_types = get_all_SE_enums(); - - std::vector return_val; - - for(vehicle_enum pev_type : pev_types) - { - for(supply_equipment_enum SE_type : SE_types) - { - if(pev_is_compatible_with_supply_equipment(pev_type, SE_type)) - return_val.push_back({pev_type, SE_type}); - } - } - - return return_val; -} - - diff --git a/source/charging_models/DirectXFC/datatypes_global_SE_EV_definitions.h b/source/charging_models/DirectXFC/datatypes_global_SE_EV_definitions.h deleted file mode 100644 index 588eed0..0000000 --- a/source/charging_models/DirectXFC/datatypes_global_SE_EV_definitions.h +++ /dev/null @@ -1,80 +0,0 @@ - -#ifndef inl_datatypes_global_SE_EV_DEFINITIONS_H -#define inl_datatypes_global_SE_EV_DEFINITIONS_H - -//==================================================================================================================== -// ################################################################################################################### -//-------------------------------------------------------------------------------------------------------------------- -// DirectXFC Project -//-------------------------------------------------------------------------------------------------------------------- -// ################################################################################################################### -//==================================================================================================================== - -#include -#include -#include // isspace -#include - -enum supply_equipment_enum -{ - L1_1440 = 0, - L2_3600 = 1, - L2_7200 = 2, - L2_9600 = 3, - L2_11520 = 4, - L2_17280 = 5, - dcfc_50 = 6, - xfc_150 = 7, - xfc_350 = 8 -}; -std::ostream& operator<<(std::ostream& out, const supply_equipment_enum& x); -std::pair get_supply_equipment_enum(const std::string str_val); -bool supply_equipment_is_L1(supply_equipment_enum SE_enum); -bool supply_equipment_is_L2(supply_equipment_enum SE_enum); -bool supply_equipment_is_50kW_dcfc(supply_equipment_enum SE_enum); -bool supply_equipment_is_3phase(supply_equipment_enum SE_enum); -std::vector get_all_SE_enums(); -supply_equipment_enum get_default_supply_equipment_enum(); - -//--------------------------------------------- - -enum vehicle_enum -{ // Recharge - phev20 = 0, - phev50 = 1, - phev_SUV = 2, - bev150_ld1_50kW = 3, - bev250_ld1_75kW = 4, - bev275_ld1_150kW = 5, - bev200_ld4_150kW = 6, - bev250_ld2_300kW = 7, - - // Additional PEVs for DirectXFC - bev250_400kW = 8, - bev300_575kW = 9, - bev300_400kW = 10, - bev250_350kW = 11, - bev300_300kW = 12, - bev150_150kW = 13 -}; -std::ostream& operator<<(std::ostream& out, const vehicle_enum& x); -std::pair get_vehicle_enum(const std::string str_val); -std::vector get_all_pev_enums(); -vehicle_enum get_default_vehicle_enum(); - -bool is_XFC_charge(vehicle_enum PEV_enum, supply_equipment_enum SE_enum); - -//--------------------------------------------- - -struct pev_SE_pair -{ - vehicle_enum EV_type; - supply_equipment_enum SE_type; -}; - -bool pev_is_compatible_with_supply_equipment(vehicle_enum EV_type, supply_equipment_enum SE_type); -std::vector get_all_compatible_pev_SE_combinations(); - - -#endif - diff --git a/source/charging_models/DirectXFC/python_bind.cpp b/source/charging_models/DirectXFC/python_bind.cpp deleted file mode 100644 index 009e909..0000000 --- a/source/charging_models/DirectXFC/python_bind.cpp +++ /dev/null @@ -1,1154 +0,0 @@ - -//==================================================================================================================== -// ################################################################################################################### -//-------------------------------------------------------------------------------------------------------------------- -// DirectXFC Project -//-------------------------------------------------------------------------------------------------------------------- -// ################################################################################################################### -//==================================================================================================================== - - -#include "datatypes_global.h" -#include "datatypes_global_SE_EV_definitions.h" - -#include -#include - -// delete when done adding pickling functionality -#include -#include - -namespace py = pybind11; - - -PYBIND11_MODULE(Caldera_global, m) -{ - //--------------------------------- - // Functions - //--------------------------------- - m.def("get_supply_equipment_enum", &get_supply_equipment_enum); - m.def("get_vehicle_enum", &get_vehicle_enum); - m.def("supply_equipment_is_L1", &supply_equipment_is_L1); - m.def("supply_equipment_is_L2", &supply_equipment_is_L2); - m.def("supply_equipment_is_50kW_dcfc", &supply_equipment_is_50kW_dcfc); - m.def("supply_equipment_is_3phase", &supply_equipment_is_3phase); - m.def("is_XFC_charge", &is_XFC_charge); - m.def("pev_is_compatible_with_supply_equipment", &pev_is_compatible_with_supply_equipment); - m.def("get_all_SE_enums", &get_all_SE_enums); - m.def("get_all_pev_enums", &get_all_pev_enums); - m.def("get_all_compatible_pev_SE_combinations", &get_all_compatible_pev_SE_combinations); - m.def("get_default_supply_equipment_enum", &get_default_supply_equipment_enum); - m.def("get_default_vehicle_enum", &get_default_vehicle_enum); - - m.def("get_LPF_window_enum", &get_LPF_window_enum); - m.def("L2_control_strategy_supports_Vrms_using_QkVAR", &L2_control_strategy_supports_Vrms_using_QkVAR); - m.def("get_L2_control_strategies_enum", &get_L2_control_strategies_enum); - m.def("is_L2_ES_control_strategy", &is_L2_ES_control_strategy); - m.def("is_L2_VS_control_strategy", &is_L2_VS_control_strategy); - - //--------------------------------- - // PEV and SE Enums - //--------------------------------- - py::enum_(m, "vehicle_enum") - .value("phev20", vehicle_enum::phev20) - .value("phev50", vehicle_enum::phev50) - .value("phev_SUV", vehicle_enum::phev_SUV) - .value("bev150_ld1_50kW", vehicle_enum::bev150_ld1_50kW) - .value("bev250_ld1_75kW", vehicle_enum::bev250_ld1_75kW) - .value("bev275_ld1_150kW", vehicle_enum::bev275_ld1_150kW) - .value("bev200_ld4_150kW", vehicle_enum::bev200_ld4_150kW) - .value("bev250_ld2_300kW", vehicle_enum::bev250_ld2_300kW) - .value("bev250_400kW", vehicle_enum::bev250_400kW) - .value("bev300_575kW", vehicle_enum::bev300_575kW) - .value("bev300_400kW", vehicle_enum::bev300_400kW) - .value("bev250_350kW", vehicle_enum::bev250_350kW) - .value("bev300_300kW", vehicle_enum::bev300_300kW) - .value("bev150_150kW", vehicle_enum::bev150_150kW); - - py::enum_(m, "supply_equipment_enum") - .value("L1_1440", supply_equipment_enum::L1_1440) - .value("L2_3600", supply_equipment_enum::L2_3600) - .value("L2_7200", supply_equipment_enum::L2_7200) - .value("L2_9600", supply_equipment_enum::L2_9600) - .value("L2_11520", supply_equipment_enum::L2_11520) - .value("L2_17280", supply_equipment_enum::L2_17280) - .value("dcfc_50", supply_equipment_enum::dcfc_50) - .value("xfc_150", supply_equipment_enum::xfc_150) - .value("xfc_350", supply_equipment_enum::xfc_350); - - py::class_(m, "pev_SE_pair") - .def(py::init<>()) - .def_readwrite("EV_type", &pev_SE_pair::EV_type) - .def_readwrite("SE_type", &pev_SE_pair::SE_type) - .def(py::pickle( - [](const pev_SE_pair &obj){ // __getstate__ - return py::make_tuple(obj.EV_type, obj.SE_type); - }, - [](py::tuple t){ // __setstate__ - pev_SE_pair obj; - obj.EV_type = t[0].cast(); - obj.SE_type = t[1].cast(); - return obj; - } - )); - - //--------------------------------- - // Charge Event Data - //--------------------------------- - py::enum_(m, "stop_charging_decision_metric") - .value("stop_charging_using_target_soc", stop_charging_decision_metric::stop_charging_using_target_soc) - .value("stop_charging_using_depart_time", stop_charging_decision_metric::stop_charging_using_depart_time) - .value("stop_charging_using_whatever_happens_first", stop_charging_decision_metric::stop_charging_using_whatever_happens_first); - - py::enum_(m, "stop_charging_mode") - .value("target_charging", stop_charging_mode::target_charging) - .value("block_charging", stop_charging_mode::block_charging); - - py::class_(m, "stop_charging_criteria") - .def(py::init<>()) - .def(py::init()) - .def_readwrite("decision_metric", &stop_charging_criteria::decision_metric) - .def_readwrite("soc_mode", &stop_charging_criteria::soc_mode) - .def_readwrite("depart_time_mode", &stop_charging_criteria::depart_time_mode) - .def_readwrite("soc_block_charging_max_undershoot_percent", &stop_charging_criteria::soc_block_charging_max_undershoot_percent) - .def_readwrite("depart_time_block_charging_max_undershoot_percent", &stop_charging_criteria::depart_time_block_charging_max_undershoot_percent) - .def(py::pickle( - [](const stop_charging_criteria &obj){ // __getstate__ - return py::make_tuple(obj.decision_metric, obj.soc_mode, obj.depart_time_mode, obj.soc_block_charging_max_undershoot_percent, obj.depart_time_block_charging_max_undershoot_percent); - }, - [](py::tuple t){ // __setstate__ - stop_charging_criteria obj; - obj.decision_metric = t[0].cast(); - obj.soc_mode = t[1].cast(); - obj.depart_time_mode = t[2].cast(); - obj.soc_block_charging_max_undershoot_percent = t[3].cast(); - obj. depart_time_block_charging_max_undershoot_percent = t[4].cast(); - return obj; - } - )); - - py::class_(m, "charge_event_data") - .def(py::init<>()) - .def(py::init()) - .def_readwrite("charge_event_id", &charge_event_data::charge_event_id) - .def_readwrite("SE_group_id", &charge_event_data::SE_group_id) - .def_readwrite("SE_id", &charge_event_data::SE_id) - .def_readwrite("vehicle_id", &charge_event_data::vehicle_id) - .def_readwrite("vehicle_type", &charge_event_data::vehicle_type) - .def_readwrite("arrival_unix_time", &charge_event_data::arrival_unix_time) - .def_readwrite("departure_unix_time", &charge_event_data::departure_unix_time) - .def_readwrite("arrival_SOC", &charge_event_data::arrival_SOC) - .def_readwrite("departure_SOC", &charge_event_data::departure_SOC) - .def_readwrite("stop_charge", &charge_event_data::stop_charge) - .def_readwrite("control_enums", &charge_event_data::control_enums) - .def_static("get_file_header", &charge_event_data::get_file_header) - .def(py::pickle( - [](const charge_event_data &obj){ // __getstate__ - return py::make_tuple(obj.charge_event_id, obj.SE_group_id, obj.SE_id, obj.vehicle_id, obj.vehicle_type, obj.arrival_unix_time, obj.departure_unix_time, obj.arrival_SOC, obj.departure_SOC, obj.stop_charge, obj.control_enums); - }, - [](py::tuple t){ // __setstate__ - charge_event_data obj; - obj.charge_event_id = t[0].cast(); - obj.SE_group_id = t[1].cast(); - obj.SE_id = t[2].cast(); - obj.vehicle_id = t[3].cast(); - obj.vehicle_type = t[4].cast(); - obj.arrival_unix_time = t[5].cast(); - obj.departure_unix_time = t[6].cast(); - obj.arrival_SOC = t[7].cast(); - obj.departure_SOC = t[8].cast(); - obj.stop_charge = t[9].cast(); - obj.control_enums = t[10].cast(); - return obj; - } - )); - - py::class_(m, "SE_group_charge_event_data") - .def(py::init<>()) - .def(py::init>()) - .def_readwrite("SE_group_id", &SE_group_charge_event_data::SE_group_id) - .def_readwrite("charge_events", &SE_group_charge_event_data::charge_events) - .def(py::pickle( - [](const SE_group_charge_event_data &obj){ // __getstate__ - return py::make_tuple(obj.SE_group_id, obj.charge_events); - }, - [](py::tuple t){ // __setstate__ - SE_group_charge_event_data obj; - obj.SE_group_id = t[0].cast(); - - for(auto x : t[1]) - obj.charge_events.push_back(x.cast()); - - return obj; - } - )); - - //======================================= - - py::enum_(m, "queuing_mode_enum") - .value("overlapAllowed_earlierArrivalTimeHasPriority", queuing_mode_enum::overlapAllowed_earlierArrivalTimeHasPriority) - .value("overlapLimited_mostRecentlyQueuedHasPriority", queuing_mode_enum::overlapLimited_mostRecentlyQueuedHasPriority); - - py::class_(m, "charge_event_queuing_inputs") - .def(py::init<>()) - .def_readwrite("max_allowed_overlap_time_sec", &charge_event_queuing_inputs::max_allowed_overlap_time_sec) - .def_readwrite("queuing_mode", &charge_event_queuing_inputs::queuing_mode) - .def(py::pickle( - [](const charge_event_queuing_inputs& obj) { // __getstate__ - return py::make_tuple(obj.max_allowed_overlap_time_sec, obj.queuing_mode); - }, - [](py::tuple t) { // __setstate__ - charge_event_queuing_inputs obj; - obj.max_allowed_overlap_time_sec = t[0].cast(); - obj.queuing_mode = t[1].cast(); - - return obj; - } - )); - - //--------------------------------- - // SE Configuration - //--------------------------------- - py::class_(m, "SE_configuration") - .def(py::init<>()) - .def(py::init()) - .def_readwrite("SE_group_id", &SE_configuration::SE_group_id) - .def_readwrite("SE_id", &SE_configuration::SE_id) - .def_readwrite("supply_equipment_type", &SE_configuration::supply_equipment_type) - .def_readwrite("lattitude", &SE_configuration::lattitude) - .def_readwrite("longitude", &SE_configuration::longitude) - .def_readwrite("grid_node_id", &SE_configuration::grid_node_id) - .def_readwrite("location_type", &SE_configuration::location_type) - .def(py::pickle( - [](const SE_configuration &obj){ // __getstate__ - return py::make_tuple(obj.SE_group_id, obj.SE_id, obj.supply_equipment_type, obj.lattitude, obj.longitude, obj.grid_node_id, obj.location_type); - }, - [](py::tuple t){ // __setstate__ - SE_configuration obj; - obj.SE_group_id = t[0].cast(); - obj.SE_id = t[1].cast(); - obj.supply_equipment_type = t[2].cast(); - obj.lattitude = t[3].cast(); - obj.longitude = t[4].cast(); - obj.grid_node_id = t[5].cast(); - obj.location_type = t[6].cast(); - return obj; - } - )); - - py::class_(m, "SE_group_configuration") - .def(py::init<>()) - .def(py::init >()) - .def_readwrite("SE_group_id", &SE_group_configuration::SE_group_id) - .def_readwrite("SEs", &SE_group_configuration::SEs) - .def(py::pickle( - [](const SE_group_configuration &obj){ // __getstate__ - return py::make_tuple(obj.SE_group_id, obj.SEs); - }, - [](py::tuple t){ // __setstate__ - SE_group_configuration obj; - obj.SE_group_id = t[0].cast(); - for(auto x : t[1]) - obj.SEs.push_back(x.cast()); - - return obj; - } - )); - - //--------------------------------- - // Status of CE - //--------------------------------- - - py::enum_(m, "SE_charging_status") - .value("no_ev_plugged_in", SE_charging_status::no_ev_plugged_in) - .value("ev_plugged_in_not_charging", SE_charging_status::ev_plugged_in_not_charging) - .value("ev_charging", SE_charging_status::ev_charging) - .value("ev_charge_complete", SE_charging_status::ev_charge_complete); - - py::class_(m, "FICE_inputs") - .def(py::init<>()) - .def_readwrite("interval_start_unixtime", &FICE_inputs::interval_start_unixtime) - .def_readwrite("interval_duration_sec", &FICE_inputs::interval_duration_sec) - .def_readwrite("acPkW_setpoint", &FICE_inputs::acPkW_setpoint) - .def(py::pickle( - [](const FICE_inputs &obj){ // __getstate__ - return py::make_tuple(obj.interval_start_unixtime, obj.interval_duration_sec, obj.acPkW_setpoint); - }, - [](py::tuple t){ // __setstate__ - FICE_inputs obj; - obj.interval_start_unixtime = t[0].cast(); - obj.interval_duration_sec = t[1].cast(); - obj.acPkW_setpoint = t[2].cast(); - return obj; - } - )); - - py::class_(m, "CE_FICE") - .def(py::init<>()) - .def_readwrite("SE_id", &CE_FICE::SE_id) - .def_readwrite("charge_event_id", &CE_FICE::charge_event_id) - .def_readwrite("charge_energy_ackWh", &CE_FICE::charge_energy_ackWh) - .def_readwrite("interval_duration_hrs", &CE_FICE::interval_duration_hrs) - .def(py::pickle( - [](const CE_FICE &obj){ // __getstate__ - return py::make_tuple(obj.SE_id, obj.charge_event_id, obj.charge_energy_ackWh, obj.interval_duration_hrs); - }, - [](py::tuple t){ // __setstate__ - CE_FICE obj; - obj.SE_id = t[0].cast(); - obj.charge_event_id = t[1].cast(); - obj.charge_energy_ackWh = t[2].cast(); - obj.interval_duration_hrs = t[3].cast(); - return obj; - } - )); - - py::class_(m, "CE_FICE_in_SE_group") - .def(py::init<>()) - .def_readwrite("SE_group_id", &CE_FICE_in_SE_group::SE_group_id) - .def_readwrite("SE_FICE_vals", &CE_FICE_in_SE_group::SE_FICE_vals) - .def(py::pickle( - [](const CE_FICE_in_SE_group &obj){ // __getstate__ - return py::make_tuple(obj.SE_group_id, obj.SE_FICE_vals); - }, - [](py::tuple t){ // __setstate__ - CE_FICE_in_SE_group obj; - obj.SE_group_id = t[0].cast(); - for(auto x : t[1]) - obj.SE_FICE_vals.push_back(x.cast()); - - return obj; - } - )); - - py::class_(m, "active_CE") - .def(py::init<>()) - .def_readwrite("SE_id", &active_CE::SE_id) - .def_readwrite("charge_event_id", &active_CE::charge_event_id) - .def_readwrite("now_unix_time", &active_CE::now_unix_time) - .def_readwrite("now_soc", &active_CE::now_soc) - .def_readwrite("now_dcPkW", &active_CE::now_dcPkW) - .def_readwrite("now_acPkW", &active_CE::now_acPkW) - .def_readwrite("now_acQkVAR", &active_CE::now_acQkVAR) - //.def_readwrite("min_remaining_charge_time_hrs", &active_CE::min_remaining_charge_time_hrs) - //.def_readwrite("min_time_to_complete_entire_charge_hrs", &active_CE::min_time_to_complete_entire_charge_hrs) - .def_readwrite("now_charge_energy_ackWh", &active_CE::now_charge_energy_ackWh) - .def_readwrite("energy_of_complete_charge_ackWh", &active_CE::energy_of_complete_charge_ackWh) - .def_readwrite("vehicle_id", &active_CE::vehicle_id) - .def_readwrite("vehicle_type", &active_CE::vehicle_type) - .def(py::pickle( - [](const active_CE &obj){ // __getstate__ - return py::make_tuple(obj.SE_id, obj.charge_event_id, obj.now_unix_time, obj.now_soc, - obj.now_charge_energy_ackWh, obj.energy_of_complete_charge_ackWh, - obj.now_dcPkW, obj.now_acPkW, obj.now_acQkVAR, obj.vehicle_id, obj.vehicle_type - //obj.min_remaining_charge_time_hrs, obj.min_time_to_complete_entire_charge_hrs - ); - }, - [](py::tuple t){ // __setstate_ - active_CE obj; - obj.SE_id = t[0].cast(); - obj.charge_event_id = t[1].cast(); - obj.now_unix_time = t[2].cast(); - obj.now_soc = t[3].cast(); - obj.now_charge_energy_ackWh = t[4].cast(); - obj.energy_of_complete_charge_ackWh = t[5].cast(); - obj.now_dcPkW = t[6].cast(); - obj.now_acPkW = t[7].cast(); - obj.now_acQkVAR = t[8].cast(); - obj.vehicle_id = t[9].cast(); - obj.vehicle_type = t[10].cast(); - //obj.min_remaining_charge_time_hrs = t[6].cast(); - //obj.min_time_to_complete_entire_charge_hrs = t[7].cast(); - - return obj; - } - )); - - py::class_(m, "SE_setpoint") - .def(py::init<>()) - .def_readwrite("SE_id", &SE_setpoint::SE_id) - .def_readwrite("PkW", &SE_setpoint::PkW) - .def_readwrite("QkVAR", &SE_setpoint::QkVAR) - .def(py::pickle( - [](const SE_setpoint &obj){ // __getstate__ - return py::make_tuple(obj.SE_id, obj.PkW, obj.QkVAR); - }, - [](py::tuple t){ // __setstate__ - SE_setpoint obj; - obj.SE_id = t[0].cast(); - obj.PkW = t[1].cast(); - obj.QkVAR = t[2].cast(); - - return obj; - } - )); - - py::class_(m, "completed_CE") - .def(py::init<>()) - .def_readwrite("SE_id", &completed_CE::SE_id) - .def_readwrite("charge_event_id", &completed_CE::charge_event_id) - .def_readwrite("final_soc", &completed_CE::final_soc) - .def(py::pickle( - [](const completed_CE &obj){ // __getstate__ - return py::make_tuple(obj.SE_id, obj.charge_event_id, obj.final_soc); - }, - [](py::tuple t){ // __setstate__ - completed_CE obj; - obj.SE_id = t[0].cast(); - obj.charge_event_id = t[1].cast(); - obj.final_soc = t[2].cast(); - - return obj; - } - )); - - //--------------------------------- - // Miscellaneous - //--------------------------------- - py::enum_(m, "ac_to_dc_converter_enum") - .value("pf", ac_to_dc_converter_enum::pf) - .value("Q_setpoint", ac_to_dc_converter_enum::Q_setpoint); - - py::class_(m, "SE_power") - .def(py::init<>()) - .def_readwrite("time_step_duration_hrs", &SE_power::time_step_duration_hrs) - .def_readwrite("P1_kW", &SE_power::P1_kW) - .def_readwrite("P2_kW", &SE_power::P2_kW) - .def_readwrite("P3_kW", &SE_power::P3_kW) - .def_readwrite("Q3_kVAR", &SE_power::Q3_kVAR) - .def_readwrite("soc", &SE_power::soc) - .def_readwrite("SE_status_val", &SE_power::SE_status_val) - .def(py::pickle( - [](const SE_power &obj){ // __getstate__ - return py::make_tuple(obj.time_step_duration_hrs, obj.P1_kW, obj.P2_kW, obj.P3_kW, obj.Q3_kVAR, obj.soc, obj.SE_status_val); - }, - [](py::tuple t){ // __setstate__ - SE_power obj; - obj.time_step_duration_hrs = t[0].cast(); - obj.P1_kW = t[1].cast(); - obj.P2_kW = t[2].cast(); - obj.P3_kW = t[3].cast(); - obj.Q3_kVAR = t[4].cast(); - obj.soc = t[5].cast(); - obj.SE_status_val = t[6].cast(); - - return obj; - } - )); - - py::class_(m, "pev_batterySize_info") - .def(py::init<>()) - .def_readwrite("vehicle_type", &pev_batterySize_info::vehicle_type) - .def_readwrite("battery_size_kWh", &pev_batterySize_info::battery_size_kWh) - .def_readwrite("battery_size_with_stochastic_degredation_kWh", &pev_batterySize_info::battery_size_with_stochastic_degredation_kWh) - - .def(py::pickle( - [](const pev_batterySize_info &obj){ // __getstate__ - return py::make_tuple(obj.vehicle_type, obj.battery_size_kWh, obj.battery_size_with_stochastic_degredation_kWh); - }, - [](py::tuple t){ // __setstate__ - pev_batterySize_info obj; - obj.vehicle_type = t[0].cast(); - obj.battery_size_kWh = t[1].cast(); - obj.battery_size_with_stochastic_degredation_kWh = t[2].cast(); - - return obj; - } - )); - - //--------------------------------- - // PEV Charge Profile - //--------------------------------- - py::class_(m, "pev_charge_profile_result") - .def(py::init<>()) - .def_readwrite("soc_increase", &pev_charge_profile_result::soc_increase) - .def_readwrite("E1_kWh", &pev_charge_profile_result::E1_kWh) - .def_readwrite("E2_kWh", &pev_charge_profile_result::E2_kWh) - .def_readwrite("E3_kWh", &pev_charge_profile_result::E3_kWh) - .def_readwrite("cumQ3_kVARh", &pev_charge_profile_result::cumQ3_kVARh) - .def_readwrite("total_charge_time_hrs", &pev_charge_profile_result::total_charge_time_hrs) - .def_readwrite("incremental_chage_time_hrs", &pev_charge_profile_result::incremental_chage_time_hrs) - .def(py::pickle( - [](const pev_charge_profile_result &obj){ // __getstate__ - return py::make_tuple(obj.soc_increase, obj.E1_kWh, obj.E2_kWh, obj.E3_kWh, obj.cumQ3_kVARh, obj.total_charge_time_hrs, obj.incremental_chage_time_hrs); - }, - [](py::tuple t){ // __setstate__ - pev_charge_profile_result obj; - obj.soc_increase = t[0].cast(); - obj.E1_kWh = t[1].cast(); - obj.E2_kWh = t[2].cast(); - obj.E3_kWh = t[3].cast(); - obj.cumQ3_kVARh = t[4].cast(); - obj.total_charge_time_hrs = t[5].cast(); - obj.incremental_chage_time_hrs = t[6].cast(); - return obj; - } - )); - - py::class_(m, "pev_charge_fragment_removal_criteria") - .def(py::init<>()) - .def_readwrite("max_percent_of_fragments_that_can_be_removed", &pev_charge_fragment_removal_criteria::max_percent_of_fragments_that_can_be_removed) - .def_readwrite("kW_change_threashold", &pev_charge_fragment_removal_criteria::kW_change_threashold) - .def_readwrite("threshold_to_determine_not_removable_fragments_on_flat_peak_kW", &pev_charge_fragment_removal_criteria::threshold_to_determine_not_removable_fragments_on_flat_peak_kW) - .def_readwrite("perc_of_max_starting_point_to_determine_not_removable_fragments_on_low_elbow", &pev_charge_fragment_removal_criteria::perc_of_max_starting_point_to_determine_not_removable_fragments_on_low_elbow) - .def(py::pickle( - [](const pev_charge_fragment_removal_criteria &obj){ // __getstate__ - return py::make_tuple(obj.max_percent_of_fragments_that_can_be_removed, obj.kW_change_threashold, obj.threshold_to_determine_not_removable_fragments_on_flat_peak_kW, obj.perc_of_max_starting_point_to_determine_not_removable_fragments_on_low_elbow); - }, - [](py::tuple t){ // __setstate__ - pev_charge_fragment_removal_criteria obj; - obj.max_percent_of_fragments_that_can_be_removed = t[0].cast(); - obj.kW_change_threashold = t[1].cast(); - obj.threshold_to_determine_not_removable_fragments_on_flat_peak_kW = t[2].cast(); - obj.perc_of_max_starting_point_to_determine_not_removable_fragments_on_low_elbow = t[3].cast(); - return obj; - } - )); - - py::class_(m, "pev_charge_fragment") - .def(py::init<>()) - .def(py::init()) - .def_readwrite("soc", &pev_charge_fragment::soc) - .def_readwrite("E1_kWh", &pev_charge_fragment::E1_kWh) - .def_readwrite("E2_kWh", &pev_charge_fragment::E2_kWh) - .def_readwrite("E3_kWh", &pev_charge_fragment::E3_kWh) - .def_readwrite("cumQ3_kVARh", &pev_charge_fragment::cumQ3_kVARh) - .def_readwrite("time_since_charge_began_hrs", &pev_charge_fragment::time_since_charge_began_hrs) - .def(py::pickle( - [](const pev_charge_fragment &obj){ // __getstate__ - return py::make_tuple(obj.soc, obj.E1_kWh, obj.E2_kWh, obj.E3_kWh, obj.cumQ3_kVARh, obj.time_since_charge_began_hrs); - }, - [](py::tuple t){ // __setstate__ - pev_charge_fragment obj; - obj.soc = t[0].cast(); - obj.E1_kWh = t[1].cast(); - obj.E2_kWh = t[2].cast(); - obj.E3_kWh = t[3].cast(); - obj.cumQ3_kVARh = t[4].cast(); - obj.time_since_charge_began_hrs = t[5].cast(); - return obj; - } - )); - - py::class_(m, "pev_charge_fragment_variation") - .def(py::init<>()) - .def(py::init()) - .def_readwrite("is_removable", &pev_charge_fragment_variation::is_removable) - .def_readwrite("original_charge_fragment_index", &pev_charge_fragment_variation::original_charge_fragment_index) - .def_readwrite("time_since_charge_began_hrs", &pev_charge_fragment_variation::time_since_charge_began_hrs) - .def_readwrite("soc", &pev_charge_fragment_variation::soc) - .def_readwrite("P3_kW", &pev_charge_fragment_variation::P3_kW) - .def_readwrite("variation_rank", &pev_charge_fragment_variation::variation_rank) - .def(py::pickle( - [](const pev_charge_fragment_variation &obj){ // __getstate__ - return py::make_tuple(obj.is_removable, obj.original_charge_fragment_index, obj.time_since_charge_began_hrs, obj.soc, obj.P3_kW, obj.variation_rank); - }, - [](py::tuple t){ // __setstate__ - pev_charge_fragment_variation obj; - obj.is_removable = t[0].cast(); - obj.original_charge_fragment_index = t[1].cast(); - obj.time_since_charge_began_hrs = t[2].cast(); - obj.soc = t[3].cast(); - obj.P3_kW = t[4].cast(); - obj.variation_rank = t[5].cast(); - return obj; - } - )); - - py::class_(m, "charge_profile_validation_data") - .def(py::init<>()) - .def_readwrite("time_step_sec", &charge_profile_validation_data::time_step_sec) - .def_readwrite("target_acP3_kW", &charge_profile_validation_data::target_acP3_kW) - .def_readwrite("fragment_removal_criteria", &charge_profile_validation_data::fragment_removal_criteria) - .def_readwrite("removed_fragments", &charge_profile_validation_data::removed_fragments) - .def_readwrite("retained_fragments", &charge_profile_validation_data::retained_fragments) - .def_readwrite("downsampled_charge_fragments", &charge_profile_validation_data::downsampled_charge_fragments) - .def_readwrite("original_charge_fragments", &charge_profile_validation_data::original_charge_fragments) - .def(py::pickle( - [](const charge_profile_validation_data &obj){ // __getstate__ - return py::make_tuple(obj.time_step_sec, obj.target_acP3_kW, obj.fragment_removal_criteria, obj.removed_fragments, obj.retained_fragments, obj.downsampled_charge_fragments, obj.original_charge_fragments); - }, - [](py::tuple t){ // __setstate__ - charge_profile_validation_data obj; - obj.time_step_sec = t[0].cast(); - obj.target_acP3_kW = t[1].cast(); - obj.fragment_removal_criteria = t[2].cast(); - - for(auto x : t[3]) - obj.removed_fragments.push_back(x.cast()); - - for(auto x : t[4]) - obj.retained_fragments.push_back(x.cast()); - - for(auto x : t[5]) - obj.downsampled_charge_fragments.push_back(x.cast()); - - for(auto x : t[6]) - obj.original_charge_fragments.push_back(x.cast()); - - return obj; - } - )); - - py::class_(m, "charge_event_P3kW_limits") - .def(py::init<>()) - .def_readwrite("min_P3kW", &charge_event_P3kW_limits::min_P3kW) - .def_readwrite("max_P3kW", &charge_event_P3kW_limits::max_P3kW) - .def(py::pickle( - [](const charge_event_P3kW_limits &obj){ // __getstate__ - return py::make_tuple(obj.min_P3kW, obj.max_P3kW); - }, - [](py::tuple t){ // __setstate__ - charge_event_P3kW_limits obj; - obj.min_P3kW = t[0].cast(); - obj.max_P3kW = t[1].cast(); - return obj; - } - )); - - //--------------------------------- - // Low Pass Filter Parameters - //--------------------------------- - py::enum_(m, "LPF_window_enum") - .value("Hanning", LPF_window_enum::Hanning) - .value("Blackman", LPF_window_enum::Blackman) - .value("Rectangular", LPF_window_enum::Rectangular); - - py::class_(m, "LPF_parameters") - .def(py::init<>()) - .def_readwrite("window_size", &LPF_parameters::window_size) - .def_readwrite("window_type", &LPF_parameters::window_type) - .def(py::pickle( - [](const LPF_parameters &obj){ // __getstate__ - return py::make_tuple(obj.window_size, obj.window_type); - }, - [](py::tuple t){ // __setstate__ - LPF_parameters obj; - obj.window_size = t[0].cast(); - obj.window_type = t[1].cast(); - return obj; - } - )); - - py::class_(m, "LPF_parameters_randomize_window_size") - .def(py::init<>()) - .def_readwrite("is_active", &LPF_parameters_randomize_window_size::is_active) - .def_readwrite("seed", &LPF_parameters_randomize_window_size::seed) - .def_readwrite("window_size_LB", &LPF_parameters_randomize_window_size::window_size_LB) - .def_readwrite("window_size_UB", &LPF_parameters_randomize_window_size::window_size_UB) - .def_readwrite("window_type", &LPF_parameters_randomize_window_size::window_type) - .def(py::pickle( - [](const LPF_parameters_randomize_window_size &obj){ // __getstate__ - return py::make_tuple(obj.is_active, obj.seed, obj.window_size_LB, obj.window_size_UB, obj.window_type); - }, - [](py::tuple t){ // __setstate__ - LPF_parameters_randomize_window_size obj; - obj.is_active = t[0].cast(); - obj.seed = t[1].cast(); - obj.window_size_LB = t[2].cast(); - obj.window_size_UB = t[3].cast(); - obj.window_type = t[4].cast(); - return obj; - } - )); - - //--------------------------------- - // Control Strategy Parameters - //--------------------------------- - py::enum_(m, "L2_control_strategies_enum") - .value("NA", L2_control_strategies_enum::NA) - .value("ES100_A", L2_control_strategies_enum::ES100_A) - .value("ES100_B", L2_control_strategies_enum::ES100_B) - .value("ES110", L2_control_strategies_enum::ES110) - .value("ES200", L2_control_strategies_enum::ES200) - .value("ES300", L2_control_strategies_enum::ES300) - .value("ES500", L2_control_strategies_enum::ES500) - .value("VS100", L2_control_strategies_enum::VS100) - .value("VS200_A", L2_control_strategies_enum::VS200_A) - .value("VS200_B", L2_control_strategies_enum::VS200_B) - .value("VS200_C", L2_control_strategies_enum::VS200_C) - .value("VS300", L2_control_strategies_enum::VS300); - - py::class_(m, "ES100_L2_parameters") - .def(py::init<>()) - .def_readwrite("beginning_of_TofU_rate_period__time_from_midnight_hrs", &ES100_L2_parameters::beginning_of_TofU_rate_period__time_from_midnight_hrs) - .def_readwrite("end_of_TofU_rate_period__time_from_midnight_hrs", &ES100_L2_parameters::end_of_TofU_rate_period__time_from_midnight_hrs) - .def_readwrite("randomization_method", &ES100_L2_parameters::randomization_method) - .def_readwrite("M1_delay_period_hrs", &ES100_L2_parameters::M1_delay_period_hrs) - .def_readwrite("random_seed", &ES100_L2_parameters::random_seed) - .def(py::pickle( - [](const ES100_L2_parameters &obj){ // __getstate__ - return py::make_tuple(obj.beginning_of_TofU_rate_period__time_from_midnight_hrs, obj.end_of_TofU_rate_period__time_from_midnight_hrs, obj.randomization_method, obj.M1_delay_period_hrs, obj.random_seed); - }, - [](py::tuple t){ // __setstate__ - ES100_L2_parameters obj; - obj.beginning_of_TofU_rate_period__time_from_midnight_hrs = t[0].cast(); - obj.end_of_TofU_rate_period__time_from_midnight_hrs = t[1].cast(); - obj.randomization_method = t[2].cast(); - obj.M1_delay_period_hrs = t[3].cast(); - obj.random_seed = t[4].cast(); - return obj; - } - )); - - py::class_(m, "ES110_L2_parameters") - .def(py::init<>()) - .def_readwrite("random_seed", &ES110_L2_parameters::random_seed) - .def(py::pickle( - [](const ES110_L2_parameters &obj){ // __getstate__ - return py::make_tuple(obj.random_seed); - }, - [](py::tuple t){ // __setstate__ - ES110_L2_parameters obj; - obj.random_seed = t[0].cast(); - return obj; - } - )); - - py::class_(m, "ES200_L2_parameters") - .def(py::init<>()) - .def_readwrite("weight_factor_to_calculate_valley_fill_target", &ES200_L2_parameters::weight_factor_to_calculate_valley_fill_target) - .def(py::pickle( - [](const ES200_L2_parameters &obj){ // __getstate__ - return py::make_tuple(obj.weight_factor_to_calculate_valley_fill_target); - }, - [](py::tuple t){ // __setstate__ - ES200_L2_parameters obj; - obj.weight_factor_to_calculate_valley_fill_target = t[0].cast(); - return obj; - } - )); - - py::class_(m, "ES300_L2_parameters") - .def(py::init<>()) - .def_readwrite("weight_factor_to_calculate_valley_fill_target", &ES300_L2_parameters::weight_factor_to_calculate_valley_fill_target) - .def(py::pickle( - [](const ES300_L2_parameters &obj){ // __getstate__ - return py::make_tuple(obj.weight_factor_to_calculate_valley_fill_target); - }, - [](py::tuple t){ // __setstate__ - ES300_L2_parameters obj; - obj.weight_factor_to_calculate_valley_fill_target = t[0].cast(); - return obj; - } - )); - - py::class_(m, "normal_random_error") - .def(py::init<>()) - .def_readwrite("seed", &normal_random_error::seed) - .def_readwrite("stdev", &normal_random_error::stdev) - .def_readwrite("stdev_bounds", &normal_random_error::stdev_bounds) - .def(py::pickle( - [](const normal_random_error &obj){ // __getstate__ - return py::make_tuple(obj.seed, obj.stdev, obj.stdev_bounds); - }, - [](py::tuple t){ // __setstate__ - normal_random_error obj; - obj.seed = t[0].cast(); - obj.stdev = t[1].cast(); - obj.stdev_bounds = t[2].cast(); - return obj; - } - )); - - py::class_(m, "ES500_L2_parameters") - .def(py::init<>()) - .def_readwrite("aggregator_timestep_mins", &ES500_L2_parameters::aggregator_timestep_mins) - .def_readwrite("off_to_on_lead_time_sec", &ES500_L2_parameters::off_to_on_lead_time_sec) - .def_readwrite("default_lead_time_sec", &ES500_L2_parameters::default_lead_time_sec) - .def(py::pickle( - [](const ES500_L2_parameters &obj){ // __getstate__ - return py::make_tuple(obj.aggregator_timestep_mins, obj.off_to_on_lead_time_sec, obj.default_lead_time_sec); - }, - [](py::tuple t){ // __setstate__ - ES500_L2_parameters obj; - obj.aggregator_timestep_mins = t[0].cast(); - obj.off_to_on_lead_time_sec = t[1].cast(); - obj.default_lead_time_sec = t[2].cast(); - return obj; - } - )); - - py::class_(m, "VS100_L2_parameters") - .def(py::init<>()) - .def_readwrite("target_P3_reference__percent_of_maxP3", &VS100_L2_parameters::target_P3_reference__percent_of_maxP3) - .def_readwrite("max_delta_kW_per_min", &VS100_L2_parameters::max_delta_kW_per_min) - .def_readwrite("volt_delta_kW_curve_puV", &VS100_L2_parameters::volt_delta_kW_curve_puV) - .def_readwrite("volt_delta_kW_percP", &VS100_L2_parameters::volt_delta_kW_percP) - .def_readwrite("voltage_LPF", &VS100_L2_parameters::voltage_LPF) - .def(py::pickle( - [](const VS100_L2_parameters &obj){ // __getstate__ - return py::make_tuple(obj.target_P3_reference__percent_of_maxP3, obj.max_delta_kW_per_min, obj.volt_delta_kW_curve_puV, obj.volt_delta_kW_percP, obj.voltage_LPF); - }, - [](py::tuple t){ // __setstate__ - VS100_L2_parameters obj; - obj.target_P3_reference__percent_of_maxP3 = t[0].cast(); - obj.max_delta_kW_per_min = t[1].cast(); - - for(auto x : t[2]) - obj.volt_delta_kW_curve_puV.push_back(x.cast()); - - for(auto x : t[3]) - obj.volt_delta_kW_percP.push_back(x.cast()); - - obj.voltage_LPF = t[4].cast(); - - return obj; - } - )); - - py::class_(m, "VS200_L2_parameters") - .def(py::init<>()) - .def_readwrite("target_P3_reference__percent_of_maxP3", &VS200_L2_parameters::target_P3_reference__percent_of_maxP3) - .def_readwrite("max_delta_kVAR_per_min", &VS200_L2_parameters::max_delta_kVAR_per_min) - .def_readwrite("volt_var_curve_puV", &VS200_L2_parameters::volt_var_curve_puV) - .def_readwrite("volt_var_curve_percQ", &VS200_L2_parameters::volt_var_curve_percQ) - .def_readwrite("voltage_LPF", &VS200_L2_parameters::voltage_LPF) - .def(py::pickle( - [](const VS200_L2_parameters &obj){ // __getstate__ - return py::make_tuple(obj.target_P3_reference__percent_of_maxP3, obj.max_delta_kVAR_per_min, obj.volt_var_curve_puV, obj.volt_var_curve_percQ, obj.voltage_LPF); - }, - [](py::tuple t){ // __setstate__ - VS200_L2_parameters obj; - obj.target_P3_reference__percent_of_maxP3 = t[0].cast(); - obj.max_delta_kVAR_per_min = t[1].cast(); - - for(auto x : t[2]) - obj.volt_var_curve_puV.push_back(x.cast()); - - for(auto x : t[3]) - obj.volt_var_curve_percQ.push_back(x.cast()); - - obj.voltage_LPF = t[4].cast(); - - return obj; - } - )); - - py::class_(m, "VS300_L2_parameters") - .def(py::init<>()) - .def_readwrite("target_P3_reference__percent_of_maxP3", &VS300_L2_parameters::target_P3_reference__percent_of_maxP3) - .def_readwrite("max_QkVAR_as_percent_of_SkVA", &VS300_L2_parameters::max_QkVAR_as_percent_of_SkVA) - .def_readwrite("gamma", &VS300_L2_parameters::gamma) - .def_readwrite("voltage_LPF", &VS300_L2_parameters::voltage_LPF) - .def(py::pickle( - [](const VS300_L2_parameters &obj){ // __getstate__ - return py::make_tuple(obj.target_P3_reference__percent_of_maxP3, obj.max_QkVAR_as_percent_of_SkVA, obj.gamma, obj.voltage_LPF); - }, - [](py::tuple t){ // __setstate__ - VS300_L2_parameters obj; - obj.target_P3_reference__percent_of_maxP3 = t[0].cast(); - obj.max_QkVAR_as_percent_of_SkVA = t[1].cast(); - obj.gamma = t[2].cast(); - obj.voltage_LPF = t[3].cast(); - return obj; - } - )); - - py::class_(m, "control_strategy_enums") - .def(py::init<>()) - .def_readwrite("inverter_model_supports_Qsetpoint", &control_strategy_enums::inverter_model_supports_Qsetpoint) - .def_readwrite("ES_control_strategy", &control_strategy_enums::ES_control_strategy) - .def_readwrite("VS_control_strategy", &control_strategy_enums::VS_control_strategy) - .def_readwrite("ext_control_strategy", &control_strategy_enums::ext_control_strategy) - .def(py::pickle( - [](const control_strategy_enums &obj){ // __getstate__ - return py::make_tuple(obj.inverter_model_supports_Qsetpoint, obj.ES_control_strategy, obj.VS_control_strategy, obj.ext_control_strategy); - }, - [](py::tuple t){ // __setstate__ - control_strategy_enums obj; - obj.inverter_model_supports_Qsetpoint = t[0].cast(); - obj.ES_control_strategy = t[1].cast(); - obj.VS_control_strategy = t[2].cast(); - obj.ext_control_strategy = t[3].cast(); - return obj; - } - )); - - py::class_(m, "L2_control_strategy_parameters") - .def(py::init<>()) - - .def_readwrite("ES100_A", &L2_control_strategy_parameters::ES100_A) - .def_readwrite("ES100_B", &L2_control_strategy_parameters::ES100_B) - .def_readwrite("ES110", &L2_control_strategy_parameters::ES110) - .def_readwrite("ES200", &L2_control_strategy_parameters::ES200) - .def_readwrite("ES300", &L2_control_strategy_parameters::ES300) - .def_readwrite("ES500", &L2_control_strategy_parameters::ES500) - - .def_readwrite("VS100", &L2_control_strategy_parameters::VS100) - .def_readwrite("VS200_A", &L2_control_strategy_parameters::VS200_A) - .def_readwrite("VS200_B", &L2_control_strategy_parameters::VS200_B) - .def_readwrite("VS200_C", &L2_control_strategy_parameters::VS200_C) - .def_readwrite("VS300", &L2_control_strategy_parameters::VS300) - - .def(py::pickle( - [](const L2_control_strategy_parameters &obj){ // __getstate__ - return py::make_tuple(obj.ES100_A, obj.ES100_B, obj.ES110, obj.ES200, obj.ES300, obj.ES500, - obj.VS100, obj.VS200_A, obj.VS200_B, obj.VS200_C, obj.VS300); - }, - [](py::tuple t){ // __setstate__ - L2_control_strategy_parameters obj; - - obj.ES100_A = t[0].cast(); - obj.ES100_B = t[1].cast(); - obj.ES110 = t[2].cast(); - obj.ES200 = t[3].cast(); - obj.ES300 = t[4].cast(); - obj.ES500 = t[5].cast(); - - obj.VS100 = t[6].cast(); - obj.VS200_A = t[7].cast(); - obj.VS200_B = t[8].cast(); - obj.VS200_C = t[9].cast(); - obj.VS300 = t[10].cast(); - - return obj; - } - )); - - //--------------------------------- - // ES500 Aggregator Structures - //--------------------------------- - py::class_(m, "ES500_aggregator_pev_charge_needs") - .def(py::init<>()) - .def_readwrite("SE_id", &ES500_aggregator_pev_charge_needs::SE_id) - .def_readwrite("departure_unix_time", &ES500_aggregator_pev_charge_needs::departure_unix_time) - .def_readwrite("e3_charge_remain_kWh", &ES500_aggregator_pev_charge_needs::e3_charge_remain_kWh) - .def_readwrite("e3_step_max_kWh", &ES500_aggregator_pev_charge_needs::e3_step_max_kWh) - .def_readwrite("e3_step_target_kWh", &ES500_aggregator_pev_charge_needs::e3_step_target_kWh) - .def_readwrite("min_remaining_charge_time_hrs", &ES500_aggregator_pev_charge_needs::min_remaining_charge_time_hrs) - .def_readwrite("min_time_to_complete_entire_charge_hrs", &ES500_aggregator_pev_charge_needs::min_time_to_complete_entire_charge_hrs) - .def_readwrite("remaining_park_time_hrs", &ES500_aggregator_pev_charge_needs::remaining_park_time_hrs) - .def_readwrite("total_park_time_hrs", &ES500_aggregator_pev_charge_needs::total_park_time_hrs) - .def(py::pickle( - [](const ES500_aggregator_pev_charge_needs &obj){ // __getstate__ - return py::make_tuple(obj.SE_id, obj.departure_unix_time, obj.e3_charge_remain_kWh, obj.e3_step_max_kWh, obj.e3_step_target_kWh, obj.min_remaining_charge_time_hrs, obj.min_time_to_complete_entire_charge_hrs, obj.remaining_park_time_hrs, obj.total_park_time_hrs); - }, - [](py::tuple t){ // __setstate__ - ES500_aggregator_pev_charge_needs obj; - obj.SE_id = t[0].cast(); - obj.departure_unix_time = t[1].cast(); - obj.e3_charge_remain_kWh = t[2].cast(); - obj.e3_step_max_kWh = t[3].cast(); - obj.e3_step_target_kWh = t[4].cast(); - obj.min_remaining_charge_time_hrs = t[5].cast(); - obj.min_time_to_complete_entire_charge_hrs = t[6].cast(); - obj.remaining_park_time_hrs = t[7].cast(); - obj.total_park_time_hrs = t[8].cast(); - - return obj; - } - )); - - py::class_(m, "ES500_aggregator_charging_needs") - .def(py::init<>()) - .def("is_empty", &ES500_aggregator_charging_needs::is_empty) - .def_readwrite("next_aggregator_timestep_start_time", &ES500_aggregator_charging_needs::next_aggregator_timestep_start_time) - .def_readwrite("pev_charge_needs", &ES500_aggregator_charging_needs::pev_charge_needs) - .def(py::pickle( - [](const ES500_aggregator_charging_needs &obj){ // __getstate__ - return py::make_tuple(obj.next_aggregator_timestep_start_time, obj.pev_charge_needs); - }, - [](py::tuple t){ // __setstate__ - ES500_aggregator_charging_needs obj; - obj.next_aggregator_timestep_start_time = t[0].cast(); - - for(auto x : t[1]) - obj.pev_charge_needs.push_back(x.cast()); - - return obj; - } - )); - - py::class_(m, "ES500_aggregator_e_step_setpoints") - .def(py::init<>()) - .def(py::init, std::vector, std::vector >()) - .def("is_empty", &ES500_aggregator_e_step_setpoints::is_empty) - .def_readwrite("next_aggregator_timestep_start_time", &ES500_aggregator_e_step_setpoints::next_aggregator_timestep_start_time) - .def_readwrite("SE_id", &ES500_aggregator_e_step_setpoints::SE_id) - .def_readwrite("e3_step_kWh", &ES500_aggregator_e_step_setpoints::e3_step_kWh) - .def_readwrite("charge_progression", &ES500_aggregator_e_step_setpoints::charge_progression) - .def(py::pickle( - [](const ES500_aggregator_e_step_setpoints &obj){ // __getstate__ - return py::make_tuple(obj.next_aggregator_timestep_start_time, obj.SE_id, obj.e3_step_kWh, obj.charge_progression); - }, - [](py::tuple t){ // __setstate__ - ES500_aggregator_e_step_setpoints obj; - obj.next_aggregator_timestep_start_time = t[0].cast(); - - for(auto x : t[1]) - obj.SE_id.push_back(x.cast()); - - for(auto x : t[2]) - obj.e3_step_kWh.push_back(x.cast()); - - for(auto x : t[3]) - obj.charge_progression.push_back(x.cast()); - - return obj; - } - )); - - py::class_(m, "ES500_aggregator_charging_forecast") - .def(py::init<>()) - .def_readwrite("arrival_unix_time", &ES500_aggregator_charging_forecast::arrival_unix_time) - .def_readwrite("departure_unix_time", &ES500_aggregator_charging_forecast::departure_unix_time) - .def_readwrite("e3_charge_remain_kWh", &ES500_aggregator_charging_forecast::e3_charge_remain_kWh) - .def_readwrite("e3_step_max_kWh", &ES500_aggregator_charging_forecast::e3_step_max_kWh) - .def(py::pickle( - [](const ES500_aggregator_charging_forecast &obj){ // __getstate__ - return py::make_tuple(obj.arrival_unix_time, obj.departure_unix_time, obj.e3_charge_remain_kWh, obj.e3_step_max_kWh); - }, - [](py::tuple t){ // __setstate__ - ES500_aggregator_charging_forecast obj; - - for(auto x : t[0]) - obj.arrival_unix_time.push_back(x.cast()); - - for(auto x : t[1]) - obj.departure_unix_time.push_back(x.cast()); - - for(auto x : t[2]) - obj.e3_charge_remain_kWh.push_back(x.cast()); - - for(auto x : t[3]) - obj.e3_step_max_kWh.push_back(x.cast()); - - return obj; - } - )); - - py::class_(m, "ES500_aggregator_obj_fun_constraints") - .def(py::init<>()) - .def_readwrite("E_cumEnergy_ALAP_kWh", &ES500_aggregator_obj_fun_constraints::E_cumEnergy_ALAP_kWh) - .def_readwrite("E_cumEnergy_ASAP_kWh", &ES500_aggregator_obj_fun_constraints::E_cumEnergy_ASAP_kWh) - .def_readwrite("E_energy_ALAP_kWh", &ES500_aggregator_obj_fun_constraints::E_energy_ALAP_kWh) - .def_readwrite("E_energy_ASAP_kWh", &ES500_aggregator_obj_fun_constraints::E_energy_ASAP_kWh) - .def_readwrite("E_step_ALAP", &ES500_aggregator_obj_fun_constraints::E_step_ALAP) - .def_readwrite("canSolve_aka_pev_charging_in_prediction_window", &ES500_aggregator_obj_fun_constraints::canSolve_aka_pev_charging_in_prediction_window) - .def(py::pickle( - [](const ES500_aggregator_obj_fun_constraints &obj){ // __getstate__ - return py::make_tuple(obj.E_cumEnergy_ALAP_kWh, obj.E_cumEnergy_ASAP_kWh, obj.E_energy_ALAP_kWh, obj.E_energy_ASAP_kWh, obj.E_step_ALAP, obj.canSolve_aka_pev_charging_in_prediction_window); - }, - [](py::tuple t){ // __setstate__ - ES500_aggregator_obj_fun_constraints obj; - - for(auto x : t[0]) - obj.E_cumEnergy_ALAP_kWh.push_back(x.cast()); - - for(auto x : t[1]) - obj.E_cumEnergy_ASAP_kWh.push_back(x.cast()); - - for(auto x : t[2]) - obj.E_energy_ALAP_kWh.push_back(x.cast()); - - for(auto x : t[3]) - obj.E_energy_ASAP_kWh.push_back(x.cast()); - - for(auto x : t[4]) - obj.E_step_ALAP.push_back(x.cast()); - - obj.canSolve_aka_pev_charging_in_prediction_window = t[5].cast(); - - return obj; - } - )); - - py::class_(m, "ES500_charge_cycling_control_boundary_point") - .def(py::init<>()) - .def(py::init()) - .def_readwrite("cycling_magnitude", &ES500_charge_cycling_control_boundary_point::cycling_magnitude) - .def_readwrite("cycling_vs_ramping", &ES500_charge_cycling_control_boundary_point::cycling_vs_ramping) - .def(py::pickle( - [](const ES500_charge_cycling_control_boundary_point &obj){ // __getstate__ - return py::make_tuple(obj.cycling_magnitude, obj.cycling_vs_ramping); - }, - [](py::tuple t){ // __setstate__ - ES500_charge_cycling_control_boundary_point obj; - obj.cycling_magnitude = t[0].cast(); - obj.cycling_vs_ramping = t[1].cast(); - return obj; - } - )); - - py::class_(m, "ES500_stop_charge_cycling_decision_parameters") - .def(py::init<>()) - .def_readwrite("next_aggregator_timestep_start_time", &ES500_stop_charge_cycling_decision_parameters::next_aggregator_timestep_start_time) - .def_readwrite("iteration", &ES500_stop_charge_cycling_decision_parameters::iteration) - .def_readwrite("is_last_iteration", &ES500_stop_charge_cycling_decision_parameters::is_last_iteration) - .def_readwrite("off_to_on_nrg_kWh", &ES500_stop_charge_cycling_decision_parameters::off_to_on_nrg_kWh) - .def_readwrite("on_to_off_nrg_kWh", &ES500_stop_charge_cycling_decision_parameters::on_to_off_nrg_kWh) - .def_readwrite("total_on_nrg_kWh", &ES500_stop_charge_cycling_decision_parameters::total_on_nrg_kWh) - .def_readwrite("cycling_vs_ramping", &ES500_stop_charge_cycling_decision_parameters::cycling_vs_ramping) - .def_readwrite("cycling_magnitude", &ES500_stop_charge_cycling_decision_parameters::cycling_magnitude) - .def_readwrite("delta_energy_kWh", &ES500_stop_charge_cycling_decision_parameters::delta_energy_kWh) - .def(py::pickle( - [](const ES500_stop_charge_cycling_decision_parameters &obj){ // __getstate__ - return py::make_tuple(obj.next_aggregator_timestep_start_time, obj.iteration, obj.is_last_iteration, obj.off_to_on_nrg_kWh, obj.on_to_off_nrg_kWh, obj.total_on_nrg_kWh, obj.cycling_vs_ramping, obj.cycling_magnitude, obj.delta_energy_kWh); - }, - [](py::tuple t){ // __setstate__ - ES500_stop_charge_cycling_decision_parameters obj; - obj.next_aggregator_timestep_start_time = t[0].cast(); - obj.iteration = t[1].cast(); - obj.is_last_iteration = t[2].cast(); - obj.off_to_on_nrg_kWh = t[3].cast(); - obj.on_to_off_nrg_kWh = t[4].cast(); - obj.total_on_nrg_kWh = t[5].cast(); - obj.cycling_vs_ramping = t[6].cast(); - obj.cycling_magnitude = t[7].cast(); - obj.delta_energy_kWh = t[8].cast(); - return obj; - } - )); - - //--------------------------------- - // PEV Ramping Parameters - //--------------------------------- - - py::class_(m, "pev_charge_ramping") - .def(py::init<>()) - .def(py::init()) - .def_readwrite("off_to_on_delay_sec", &pev_charge_ramping::off_to_on_delay_sec) - .def_readwrite("off_to_on_kW_per_sec", &pev_charge_ramping::off_to_on_kW_per_sec) - .def_readwrite("on_to_off_delay_sec", &pev_charge_ramping::on_to_off_delay_sec) - .def_readwrite("on_to_off_kW_per_sec", &pev_charge_ramping::on_to_off_kW_per_sec) - .def_readwrite("ramp_up_delay_sec", &pev_charge_ramping::ramp_up_delay_sec) - .def_readwrite("ramp_up_kW_per_sec", &pev_charge_ramping::ramp_up_kW_per_sec) - .def_readwrite("ramp_down_delay_sec", &pev_charge_ramping::ramp_down_delay_sec) - .def_readwrite("ramp_down_kW_per_sec", &pev_charge_ramping::ramp_down_kW_per_sec) - .def(py::pickle( - [](const pev_charge_ramping &obj){ // __getstate__ - return py::make_tuple(obj.off_to_on_delay_sec, obj.off_to_on_kW_per_sec, obj.on_to_off_delay_sec, obj.on_to_off_kW_per_sec, obj.ramp_up_delay_sec, obj.ramp_up_kW_per_sec, obj.ramp_down_delay_sec, obj.ramp_down_kW_per_sec); - }, - [](py::tuple t){ // __setstate__ - pev_charge_ramping obj; - obj.off_to_on_delay_sec = t[0].cast(); - obj.off_to_on_kW_per_sec = t[1].cast(); - obj.on_to_off_delay_sec = t[2].cast(); - obj.on_to_off_kW_per_sec = t[3].cast(); - obj.ramp_up_delay_sec = t[4].cast(); - obj.ramp_up_kW_per_sec = t[5].cast(); - obj.ramp_down_delay_sec = t[6].cast(); - obj.ramp_down_kW_per_sec = t[7].cast(); - return obj; - } - )); - - py::class_(m, "pev_charge_ramping_workaround") - .def(py::init<>()) - .def_readwrite("pev_charge_ramping_obj", &pev_charge_ramping_workaround::pev_charge_ramping_obj) - .def_readwrite("pev_type", &pev_charge_ramping_workaround::pev_type) - .def_readwrite("SE_type", &pev_charge_ramping_workaround::SE_type) - .def(py::pickle( - [](const pev_charge_ramping_workaround &obj){ // __getstate__ - return py::make_tuple(obj.pev_charge_ramping_obj, obj.pev_type, obj.SE_type); - }, - [](py::tuple t){ // __setstate__ - pev_charge_ramping_workaround obj; - obj.pev_charge_ramping_obj = t[0].cast(); - obj.pev_type = t[1].cast(); - obj.SE_type = t[2].cast(); - return obj; - } - )); -} diff --git a/source/charging_models/EV_EVSE_inventory.cpp b/source/charging_models/EV_EVSE_inventory.cpp index ffe6cd4..31bbfd6 100644 --- a/source/charging_models/EV_EVSE_inventory.cpp +++ b/source/charging_models/EV_EVSE_inventory.cpp @@ -120,6 +120,15 @@ const bool EV_EVSE_inventory::pev_is_compatible_with_supply_equipment(const pev_ } } +const bool EV_EVSE_inventory::is_valid_EV_type( const EV_type& ev_type ) const +{ + return this->EV_inv.find(ev_type) != this->EV_inv.end(); +} + +const bool EV_EVSE_inventory::is_valid_EVSE_type( const EVSE_type& se_type ) const +{ + return this->EVSE_inv.find(se_type) != this->EVSE_inv.end(); +} std::ostream& operator<<(std::ostream& os, const EV_EVSE_inventory& inventory) { diff --git a/source/charging_models/EV_EVSE_inventory.h b/source/charging_models/EV_EVSE_inventory.h index 4f10cf4..b5f645b 100644 --- a/source/charging_models/EV_EVSE_inventory.h +++ b/source/charging_models/EV_EVSE_inventory.h @@ -61,6 +61,15 @@ class EV_EVSE_inventory { const std::vector& get_all_compatible_pev_SE_combinations() const; const bool pev_is_compatible_with_supply_equipment(const pev_SE_pair& EV_EVSE_combination) const; + + // Returns true if the given EV_type is a part of the inventory. + // Otherwise, returns false. + const bool is_valid_EV_type( const EV_type& ev_type ) const; + + // Returns true if the given EVSE_type is a part of the inventory. + // Otherwise, returns false. + const bool is_valid_EVSE_type( const EVSE_type& se_type ) const; + }; std::ostream& operator<<(std::ostream& os, const EV_EVSE_inventory& inventory); diff --git a/source/charging_models/EVs_at_Risk/SE_EV_factory.cpp b/source/charging_models/EVs_at_Risk/SE_EV_factory.cpp deleted file mode 100644 index 9d1634c..0000000 --- a/source/charging_models/EVs_at_Risk/SE_EV_factory.cpp +++ /dev/null @@ -1,1774 +0,0 @@ - -//==================================================================================================================== -// ################################################################################################################### -//-------------------------------------------------------------------------------------------------------------------- -// EVs-At-Risk Project -//-------------------------------------------------------------------------------------------------------------------- -// ################################################################################################################### -//==================================================================================================================== - -#include "SE_EV_factory.h" - -#include "supply_equipment_load.h" -#include "supply_equipment_control.h" -#include "battery_integrate_X_in_time.h" // integrate_X_through_time -#include "helper.h" // rand_val, line_segment -#include "charge_profile_library.h" -#include "charge_profile_downsample_fragments.h" - - -#include -#include -#include // sort -#include // cout - -//############################################################################# -// Get Battery Efficiency vs P2 (Should be the same in every factory) -//############################################################################# - -void get_bat_eff_vs_P2(bool is_charging_not_discharging, battery_chemistry bat_chem, double battery_size_kWh, double& zero_slope_threashold_bat_eff_vs_P2, line_segment& bat_eff_vs_P2) -{ - // When are_losses = false - // - The bat_eff_vs_P2 line segmnet should have the following values (c=0, d=1). - - if(bat_chem == LTO) - { - if(is_charging_not_discharging) - bat_eff_vs_P2 = { 0, 6*battery_size_kWh, -0.0078354/battery_size_kWh, 0.987448}; // x_LB, x_UB, a, b - else - bat_eff_vs_P2 = {-6*battery_size_kWh, 0, -0.0102411/battery_size_kWh, 1.0109224}; // x_LB, x_UB, a, b - } - else if(bat_chem == LMO) - { - if(is_charging_not_discharging) - bat_eff_vs_P2 = { 0, 4*battery_size_kWh, -0.0079286/battery_size_kWh, 0.9936637}; // x_LB, x_UB, a, b - else - bat_eff_vs_P2 = {-4*battery_size_kWh, 0, -0.0092091/battery_size_kWh, 1.005674}; // x_LB, x_UB, a, b - } - else if(bat_chem == NMC) - { - if(is_charging_not_discharging) - bat_eff_vs_P2 = {0, 4*battery_size_kWh, -0.0053897/battery_size_kWh, 0.9908405}; // x_LB, x_UB, a, b - else - bat_eff_vs_P2 = {-4*battery_size_kWh, 0, -0.0062339/battery_size_kWh, 1.0088727}; // x_LB, x_UB, a, b - } - - //----------------------------------- - - // If the slope is smaller than 0.000001 that the 'safe' method will be used. - // Very little rational to using 0.000001 it will allow the complex method using a 1000 kWh battery pack - if(std::abs(bat_eff_vs_P2.a) < 0.000001) - zero_slope_threashold_bat_eff_vs_P2 = 0.000001; - else - zero_slope_threashold_bat_eff_vs_P2 = 0.9 * std::abs(bat_eff_vs_P2.a); -} - - -//############################################################################# -// EV Charge Model Factory -//############################################################################# - - -factory_EV_charge_model::factory_EV_charge_model() -{ - this->model_stochastic_battery_degregation = false; -} - - -void factory_EV_charge_model::set_bool_model_stochastic_battery_degregation(bool model_stochastic_battery_degregation_) -{ - this->model_stochastic_battery_degregation = model_stochastic_battery_degregation_; -} - - -void factory_EV_charge_model::initialize_custome_parameters(std::map ramping_by_pevType_only_, std::map< std::tuple, pev_charge_ramping> ramping_by_pevType_seType_) -{ - this->ramping_by_pevType_only = ramping_by_pevType_only_; - this->ramping_by_pevType_seType = ramping_by_pevType_seType_; -} - - -void factory_EV_charge_model::get_integrate_X_through_time_obj(vehicle_enum vehicle_type, supply_equipment_enum supply_equipment_type, integrate_X_through_time& return_val) -{ - // Each transition_of_X_through_time must have at least 3 segments. - - // struct transition_goto_next_segment_criteria - // { - // transition_criteria_type criteria_type; - // double criteria_value; - // bool inturupt_this_transition_if_target_X_deviation_limit_exceeded; - // double target_X_deviation_limit_to_interupt_this_transition; - // double segment_slope_X_per_sec; - // }; - - double X_deadband, target_deadband, off_deadband; - bool pos_and_neg_transitions_are_unique = false; - - std::vector goto_next_seg; - - X_deadband = 0.1; - target_deadband = 0.01; - off_deadband = 0.0001; - - goto_next_seg.clear(); - goto_next_seg.push_back({time_delay_sec, 0.1, false, 0, 0}); - goto_next_seg.push_back({time_delay_sec, 0.1, false, 0, 0}); - goto_next_seg.push_back({from_final_X, 0, false, 0, 10}); - transition_of_X_through_time default_to_pos_inf(moving_toward_pos_inf, X_deadband, goto_next_seg); - - goto_next_seg.clear(); - goto_next_seg.push_back({time_delay_sec, 0.1, false, 0, 0}); - goto_next_seg.push_back({time_delay_sec, 0.1, false, 0, 0}); - goto_next_seg.push_back({from_final_X, 0, false, 0, -10}); - transition_of_X_through_time default_to_neg_inf(moving_toward_neg_inf, X_deadband, goto_next_seg); - - //================================ - // All Default V2G Transitions - //================================ - - //---------------------- - // off_to_neg - //---------------------- - transition_of_X_through_time off_to_neg_obj; - off_to_neg_obj = default_to_neg_inf; - - //---------------------- - // neg_to_off - //---------------------- - transition_of_X_through_time neg_to_off_obj; - neg_to_off_obj = default_to_pos_inf; - - //--------------------------- - // pos_moving_toward_pos_inf - //--------------------------- - transition_of_X_through_time pos_moving_toward_pos_inf_obj; - pos_moving_toward_pos_inf_obj = default_to_pos_inf; - - //--------------------------- - // pos_moving_toward_neg_inf - //--------------------------- - transition_of_X_through_time pos_moving_toward_neg_inf_obj; - pos_moving_toward_neg_inf_obj = default_to_neg_inf; - - //--------------------------- - // neg_moving_toward_pos_inf - //--------------------------- - transition_of_X_through_time neg_moving_toward_pos_inf_obj; - neg_moving_toward_pos_inf_obj = default_to_pos_inf; - - //--------------------------- - // neg_moving_toward_neg_inf - //--------------------------- - transition_of_X_through_time neg_moving_toward_neg_inf_obj; - neg_moving_toward_neg_inf_obj = default_to_neg_inf; - - //---------------------------------- - - if(supply_equipment_is_L1(supply_equipment_type)) - { - X_deadband = 0.01; - target_deadband = 0.01; - off_deadband = 0.0001; - - //---------------------- - // off_to_pos - //---------------------- - goto_next_seg.clear(); - goto_next_seg.push_back({time_delay_sec, 4.95, false, 0, 0}); - goto_next_seg.push_back({time_delay_sec, 0.05, false, 0, 0}); - goto_next_seg.push_back({from_final_X, 0, false, 0, 0.5}); - transition_of_X_through_time off_to_pos_obj(off_to_pos, X_deadband, goto_next_seg); - - //---------------------- - // pos_to_off - //---------------------- - goto_next_seg.clear(); - goto_next_seg.push_back({time_delay_sec, 0.095, false, 0, 0}); - goto_next_seg.push_back({time_delay_sec, 0.005, false, 0, 0}); - goto_next_seg.push_back({from_final_X, 0, false, 0, -50}); - transition_of_X_through_time pos_to_off_obj(pos_to_off, X_deadband, goto_next_seg); - - //----------------------- - // moving_toward_pos_inf - //----------------------- - goto_next_seg.clear(); - goto_next_seg.push_back({time_delay_sec, 0.12, false, 0, 0}); - goto_next_seg.push_back({time_delay_sec, 0.03, false, 0, 0}); - goto_next_seg.push_back({from_final_X, 0, false, 0, 0.5}); - transition_of_X_through_time moving_toward_pos_inf_obj(moving_toward_pos_inf, X_deadband, goto_next_seg); - - //----------------------- - // moving_toward_neg_inf - //----------------------- - goto_next_seg.clear(); - goto_next_seg.push_back({time_delay_sec, 0.09, false, 0, 0}); - goto_next_seg.push_back({time_delay_sec, 0.01, false, 0, 0}); - goto_next_seg.push_back({from_final_X, 0, false, 0, -0.5}); - transition_of_X_through_time moving_toward_neg_inf_obj(moving_toward_neg_inf, X_deadband, goto_next_seg); - - //----------------------- - - integrate_X_through_time integrate_obj(target_deadband, off_deadband, pos_and_neg_transitions_are_unique, - pos_to_off_obj, neg_to_off_obj, off_to_pos_obj, off_to_neg_obj, moving_toward_pos_inf_obj, moving_toward_neg_inf_obj, - pos_moving_toward_pos_inf_obj, pos_moving_toward_neg_inf_obj, neg_moving_toward_pos_inf_obj, neg_moving_toward_neg_inf_obj); - return_val = integrate_obj; - } - else if(supply_equipment_is_L2(supply_equipment_type)) - { - X_deadband = 0.01; - target_deadband = 0.01; - off_deadband = 0.0001; - - //---------------------- - // off_to_pos - //---------------------- - goto_next_seg.clear(); - goto_next_seg.push_back({time_delay_sec, 4.95, false, 0, 0}); - goto_next_seg.push_back({time_delay_sec, 0.05, false, 0, 0}); - goto_next_seg.push_back({from_final_X, 0, false, 0, 2}); - transition_of_X_through_time off_to_pos_obj(off_to_pos, X_deadband, goto_next_seg); - - //---------------------- - // pos_to_off - //---------------------- - goto_next_seg.clear(); - goto_next_seg.push_back({time_delay_sec, 0.095, false, 0, 0}); - goto_next_seg.push_back({time_delay_sec, 0.005, false, 0, 0}); - goto_next_seg.push_back({from_final_X, 0, false, 0, -100}); - transition_of_X_through_time pos_to_off_obj(pos_to_off, X_deadband, goto_next_seg); - - //----------------------- - // moving_toward_pos_inf - //----------------------- - goto_next_seg.clear(); - goto_next_seg.push_back({time_delay_sec, 0.12, false, 0, 0}); - goto_next_seg.push_back({time_delay_sec, 0.03, false, 0, 0}); - goto_next_seg.push_back({from_final_X, 0, false, 0, 2}); - transition_of_X_through_time moving_toward_pos_inf_obj(moving_toward_pos_inf, X_deadband, goto_next_seg); - - //----------------------- - // moving_toward_neg_inf - //----------------------- - goto_next_seg.clear(); - goto_next_seg.push_back({time_delay_sec, 0.09, false, 0, 0}); - goto_next_seg.push_back({time_delay_sec, 0.01, false, 0, 0}); - goto_next_seg.push_back({from_final_X, 0, false, 0, -3}); - transition_of_X_through_time moving_toward_neg_inf_obj(moving_toward_neg_inf, X_deadband, goto_next_seg); - - //----------------------- - - integrate_X_through_time integrate_obj(target_deadband, off_deadband, pos_and_neg_transitions_are_unique, - pos_to_off_obj, neg_to_off_obj, off_to_pos_obj, off_to_neg_obj, moving_toward_pos_inf_obj, moving_toward_neg_inf_obj, - pos_moving_toward_pos_inf_obj, pos_moving_toward_neg_inf_obj, neg_moving_toward_pos_inf_obj, neg_moving_toward_neg_inf_obj); - return_val = integrate_obj; - } - else - { -/* - if(vehicle_type == phev20 || vehicle_type == phev50 || vehicle_type == phev_SUV) - std::cout << "WARNING: PHEV can not fast charge. EV_enum :" << vehicle_type << " and SE_enum:" << supply_equipment_type << std::endl; -*/ - - X_deadband = 0.01; - target_deadband = 0.01; - off_deadband = 0.0001; - - //---------------------------- - - bool use_custom_ramping_values = false; - pev_charge_ramping custom_charge_ramping; - - std::tuple pev_se_pair(vehicle_type, supply_equipment_type); - - if(this->ramping_by_pevType_seType.count(pev_se_pair) > 0) - { - use_custom_ramping_values = true; - custom_charge_ramping = this->ramping_by_pevType_seType[pev_se_pair]; - } - else if(this->ramping_by_pevType_only.count(vehicle_type) > 0) - { - use_custom_ramping_values = true; - custom_charge_ramping = this->ramping_by_pevType_only[vehicle_type]; - } - - //---------------------------- - - if(use_custom_ramping_values) - { - double delay_sec, ramping_kW_per_sec; - - //---------------------- - // pos_to_off - //---------------------- - delay_sec = custom_charge_ramping.on_to_off_delay_sec; - ramping_kW_per_sec = custom_charge_ramping.on_to_off_kW_per_sec; - - goto_next_seg.clear(); - goto_next_seg.push_back({time_delay_sec, 0.9*delay_sec, false, 0, 0}); - goto_next_seg.push_back({time_delay_sec, 0.1*delay_sec, false, 0, 0}); - goto_next_seg.push_back({from_final_X, 0, false, 0, ramping_kW_per_sec}); - transition_of_X_through_time pos_to_off_obj(pos_to_off, X_deadband, goto_next_seg); - - //---------------------- - // off_to_pos - //---------------------- - delay_sec = custom_charge_ramping.off_to_on_delay_sec; - ramping_kW_per_sec = custom_charge_ramping.off_to_on_kW_per_sec; - - goto_next_seg.clear(); - goto_next_seg.push_back({time_delay_sec, 0.9*delay_sec, false, 0, 0}); - goto_next_seg.push_back({time_delay_sec, 0.1*delay_sec, false, 0, 0}); - goto_next_seg.push_back({from_final_X, 0, false, 0, ramping_kW_per_sec}); - transition_of_X_through_time off_to_pos_obj(off_to_pos, X_deadband, goto_next_seg); - - //----------------------- - // moving_toward_pos_inf - //----------------------- - delay_sec = custom_charge_ramping.ramp_up_delay_sec; - ramping_kW_per_sec = custom_charge_ramping.ramp_up_kW_per_sec; - - goto_next_seg.clear(); - goto_next_seg.push_back({time_delay_sec, 0.9*delay_sec, false, 0, 0}); - goto_next_seg.push_back({time_delay_sec, 0.1*delay_sec, false, 0, 0}); - goto_next_seg.push_back({from_final_X, 0, false, 0, ramping_kW_per_sec}); - transition_of_X_through_time moving_toward_pos_inf_obj(moving_toward_pos_inf, X_deadband, goto_next_seg); - - //----------------------- - // moving_toward_neg_inf - //----------------------- - delay_sec = custom_charge_ramping.ramp_down_delay_sec; - ramping_kW_per_sec = custom_charge_ramping.ramp_down_kW_per_sec; - - goto_next_seg.clear(); - goto_next_seg.push_back({time_delay_sec, 0.9*delay_sec, false, 0, 0}); - goto_next_seg.push_back({time_delay_sec, 0.1*delay_sec, false, 0, 0}); - goto_next_seg.push_back({from_final_X, 0, false, 0, ramping_kW_per_sec}); - transition_of_X_through_time moving_toward_neg_inf_obj(moving_toward_neg_inf, X_deadband, goto_next_seg); - - //----------------------- - - integrate_X_through_time integrate_obj(target_deadband, off_deadband, pos_and_neg_transitions_are_unique, - pos_to_off_obj, neg_to_off_obj, off_to_pos_obj, off_to_neg_obj, moving_toward_pos_inf_obj, moving_toward_neg_inf_obj, - pos_moving_toward_pos_inf_obj, pos_moving_toward_neg_inf_obj, neg_moving_toward_pos_inf_obj, neg_moving_toward_neg_inf_obj); - return_val = integrate_obj; - } - else - { -/* - //---------------------- - // pos_to_off - //---------------------- - goto_next_seg.clear(); - - // Default Values - if(supply_equipment_type == dcfc_50) - { - goto_next_seg.push_back({time_delay_sec, 0.040, false, 0, 0}); - goto_next_seg.push_back({time_delay_sec, 0.010, false, 0, 0}); - goto_next_seg.push_back({from_final_X, 0, false, 0, -3700}); - } - else if(supply_equipment_type == xfc_150 || supply_equipment_type == xfc_350) - { - goto_next_seg.push_back({time_delay_sec, 0.040, false, 0, 0}); - goto_next_seg.push_back({time_delay_sec, 0.010, false, 0, 0}); - goto_next_seg.push_back({from_final_X, 0, false, 0, -140000}); - } - else - std::cout << "WARNING: Incomplete definition for get_integrate_X_through_time_obj in the factory_EV_charge_model for EV_enum :" << vehicle_type << " and SE_enum:" << supply_equipment_type << std::endl; - - transition_of_X_through_time pos_to_off_obj(pos_to_off, X_deadband, goto_next_seg); - - //---------------------------------------------------------------- - // off_to_pos, moving_toward_pos_inf, moving_toward_neg_inf - //---------------------------------------------------------------- - - if(vehicle_type == bev150_ld1_50kW || vehicle_type == bev250_ld1_75kW) - { - //---------------------- - // off_to_pos - //---------------------- - goto_next_seg.clear(); - goto_next_seg.push_back({time_delay_sec, 14.9, false, 0, 0}); - goto_next_seg.push_back({time_delay_sec, 0.1, false, 0, 0}); - goto_next_seg.push_back({from_final_X, 0, false, 0, 10}); - transition_of_X_through_time off_to_pos_obj(off_to_pos, X_deadband, goto_next_seg); - - //----------------------- - // moving_toward_pos_inf - //----------------------- - goto_next_seg.clear(); - goto_next_seg.push_back({time_delay_sec, 0.09, false, 0, 0}); - goto_next_seg.push_back({time_delay_sec, 0.01, false, 0, 0}); - goto_next_seg.push_back({from_final_X, 0, false, 0, 10}); - transition_of_X_through_time moving_toward_pos_inf_obj(moving_toward_pos_inf, X_deadband, goto_next_seg); - - //----------------------- - // moving_toward_neg_inf - //----------------------- - goto_next_seg.clear(); - goto_next_seg.push_back({time_delay_sec, 0.09, false, 0, 0}); - goto_next_seg.push_back({time_delay_sec, 0.01, false, 0, 0}); - goto_next_seg.push_back({from_final_X, 0, false, 0, -10}); - transition_of_X_through_time moving_toward_neg_inf_obj(moving_toward_neg_inf, X_deadband, goto_next_seg); - - //-------------------------------- - - integrate_X_through_time integrate_obj(target_deadband, off_deadband, pos_and_neg_transitions_are_unique, - pos_to_off_obj, neg_to_off_obj, off_to_pos_obj, off_to_neg_obj, moving_toward_pos_inf_obj, moving_toward_neg_inf_obj, - pos_moving_toward_pos_inf_obj, pos_moving_toward_neg_inf_obj, neg_moving_toward_pos_inf_obj, neg_moving_toward_neg_inf_obj); - return_val = integrate_obj; - } - else - { -*/ - //---------------------- - // pos_to_off - //---------------------- - goto_next_seg.clear(); - goto_next_seg.push_back({time_delay_sec, 0.040, false, 0, 0}); - goto_next_seg.push_back({time_delay_sec, 0.010, false, 0, 0}); - goto_next_seg.push_back({from_final_X, 0, false, 0, -140000}); - transition_of_X_through_time pos_to_off_obj(pos_to_off, X_deadband, goto_next_seg); - - //---------------------- - // off_to_pos - //---------------------- - goto_next_seg.clear(); - goto_next_seg.push_back({time_delay_sec, 14.9, false, 0, 0}); - goto_next_seg.push_back({time_delay_sec, 0.1, false, 0, 0}); - goto_next_seg.push_back({from_final_X, 0, false, 0, 25}); - transition_of_X_through_time off_to_pos_obj(off_to_pos, X_deadband, goto_next_seg); - - //----------------------- - // moving_toward_pos_inf - //----------------------- - goto_next_seg.clear(); - goto_next_seg.push_back({time_delay_sec, 0.09, false, 0, 0}); - goto_next_seg.push_back({time_delay_sec, 0.01, false, 0, 0}); - goto_next_seg.push_back({from_final_X, 0, false, 0, 25}); - transition_of_X_through_time moving_toward_pos_inf_obj(moving_toward_pos_inf, X_deadband, goto_next_seg); - - //----------------------- - // moving_toward_neg_inf - //----------------------- - goto_next_seg.clear(); - goto_next_seg.push_back({time_delay_sec, 0.09, false, 0, 0}); - goto_next_seg.push_back({time_delay_sec, 0.01, false, 0, 0}); - goto_next_seg.push_back({from_final_X, 0, false, 0, -25}); - transition_of_X_through_time moving_toward_neg_inf_obj(moving_toward_neg_inf, X_deadband, goto_next_seg); - - //-------------------------------- - - integrate_X_through_time integrate_obj(target_deadband, off_deadband, pos_and_neg_transitions_are_unique, - pos_to_off_obj, neg_to_off_obj, off_to_pos_obj, off_to_neg_obj, moving_toward_pos_inf_obj, moving_toward_neg_inf_obj, - pos_moving_toward_pos_inf_obj, pos_moving_toward_neg_inf_obj, neg_moving_toward_pos_inf_obj, neg_moving_toward_neg_inf_obj); - return_val = integrate_obj; -// } - } - } -} - - -void factory_EV_charge_model::get_P2_vs_puVrms(bool is_charging_not_discharging, vehicle_enum vehicle_type, supply_equipment_enum supply_equipment_type, double SE_P2_limit_atNominalV_kW, poly_function_of_x& P2_vs_puVrms) -{ // The points on the P2_vs_pu_Vrms plot are all multiplied by SE_P2_limit_atNominalV_kW - // The P2_vs_pu_Vrms plot must pass through the point (1, 1) - // At nominal voltage Vrms = 1 the final curve is 1*SE_P2_limit_atNominalV_kW or the limit at nominal voltage - - std::vector points; - - if(supply_equipment_is_L1(supply_equipment_type)) - { - points.push_back({0, 0}); - points.push_back({0.69, 0}); - points.push_back({0.7, 0.7}); - points.push_back({2, 2}); - } - else if(supply_equipment_is_L2(supply_equipment_type)) - { - points.push_back({0, 0}); - points.push_back({0.34, 0}); - points.push_back({0.35, 0.373}); - points.push_back({0.94, 1}); - points.push_back({2, 1}); - } - else - { - points.push_back({0, 0}); - points.push_back({0.79, 0}); - points.push_back({0.80, 1}); - points.push_back({1.20, 1}); - points.push_back({1.21, 0}); - points.push_back({2.00, 0}); - } - - //------------------------- - - std::vector points_scaled; - - for(point_P2_vs_puVrms x : points) - points_scaled.push_back({x.puVrms, x.P2_val * SE_P2_limit_atNominalV_kW}); - - //---------------------------------------------------- - // Convert Final Points to P2_vs_puVrms poly_function - //---------------------------------------------------- - - std::sort(points_scaled.begin(), points_scaled.end()); - - double a, b; - std::vector segments; - - for(int i=1; i& P2_vs_soc_segments) -{ - // P2 vs soc must be defigned a little below 0 soc and a little above 100 soc. - - // When a battery is approaching 0 soc or 100 soc there is a chance that energy continues to go into the battery while - // the soc is not changing (fixed at 0 or 100 soc) - // - This is caused by the fact that when a battery stopps charging/discharging there is a ramp down period. - // - This problem (for small time steps) can be mitigated by the following: - // - Make sure the P2_vs_soc curve decreases to zero as soc approaches 0 or 100 soc - // - Make sure the ramp rate is large when a battery stops charging/discharging - - vehicle_enum EV_enum = vehicle_type; - supply_equipment_enum SE_enum = supply_equipment_type; - P2_vs_soc_segments.clear(); - - if(supply_equipment_is_L1(SE_enum) || supply_equipment_is_L2(SE_enum)) - { - //std::cout << "Error: P2_vs_soc is not defigned in the factory_EV_charge_model for EV_enum:" << EV_enum << " and SE_enum:" << SE_enum << std::endl; - - if(EV_enum == ld_50kWh) - { - P2_vs_soc_segments.push_back({-0.1, 97.55911529426994, 0.0, 15.8976}); - P2_vs_soc_segments.push_back({97.55911529426994, 100.1, -5.219298245875, 525.0877193245}); - zero_slope_threashold_P2_vs_soc = 4.6973684212875; - // min_non_zero_slope = 5.219298245875 - } - else if(EV_enum == ld_100kWh) - { - P2_vs_soc_segments.push_back({-0.1, 99.0805541670789, 0.0, 15.8976}); - P2_vs_soc_segments.push_back({99.0805541670789, 100.1, -10.428157891083332, 1049.1252627903334}); - zero_slope_threashold_P2_vs_soc = 9.385342101974999; - // min_non_zero_slope = 10.428157891083332 - } - else if(EV_enum == md_200kWh) - { - P2_vs_soc_segments.push_back({-0.1, 100.1, 0.0, 15.8976}); - zero_slope_threashold_P2_vs_soc = 900000.0; - // min_non_zero_slope = 1000000 - } - else if(EV_enum == hd_300kWh) - { - P2_vs_soc_segments.push_back({-0.1, 100.1, 0.0, 15.8976}); - zero_slope_threashold_P2_vs_soc = 900000.0; - // min_non_zero_slope = 1000000 - } - else if(EV_enum == hd_400kWh) - { - P2_vs_soc_segments.push_back({-0.1, 100.1, 0.0, 15.8976}); - zero_slope_threashold_P2_vs_soc = 900000.0; - // min_non_zero_slope = 1000000 - } - else if(EV_enum == hd_600kWh) - { - P2_vs_soc_segments.push_back({-0.1, 100.1, 0.0, 15.8976}); - zero_slope_threashold_P2_vs_soc = 900000.0; - // min_non_zero_slope = 1000000 - } - else if(EV_enum == hd_800kWh) - { - P2_vs_soc_segments.push_back({-0.1, 100.1, 0.0, 15.8976}); - zero_slope_threashold_P2_vs_soc = 900000.0; - // min_non_zero_slope = 1000000 - } - else if(EV_enum == hd_1000kWh) - { - P2_vs_soc_segments.push_back({-0.1, 100.1, 0.0, 15.8976}); - zero_slope_threashold_P2_vs_soc = 900000.0; - // min_non_zero_slope = 1000000 - } - } - else - { - if(SE_enum == xfc_150 && EV_enum == ld_50kWh) - { - P2_vs_soc_segments.push_back({-0.1, 3.0, 5.617623090661083, 124.64587923089042}); - P2_vs_soc_segments.push_back({3.0, 10.0, 1.4433547003052354, 137.16868440195796}); - P2_vs_soc_segments.push_back({10.0, 71.46359084873505, 0.28079783503165895, 148.79425305469374}); - P2_vs_soc_segments.push_back({71.46359084873505, 93.0, -6.38663967643269, 625.2732793834901}); - P2_vs_soc_segments.push_back({93.0, 100.1, -4.02255639117857, 405.413533854857}); - zero_slope_threashold_P2_vs_soc = 0.2527180515284931; - // min_non_zero_slope = 0.28079783503165895 - } - else if(SE_enum == xfc_150 && EV_enum == ld_100kWh) - { - P2_vs_soc_segments.push_back({-0.1, 3.0, 5.019868538599169, 122.38229534071229}); - P2_vs_soc_segments.push_back({3.0, 4.0, 3.0600411622216184, 128.26177746984493}); - P2_vs_soc_segments.push_back({4.0, 10.0, 1.216147395224588, 135.63735253783307}); - P2_vs_soc_segments.push_back({10.0, 85.0076631195378, 0.2716779788933731, 145.0820467011452}); - P2_vs_soc_segments.push_back({85.0076631195378, 93.0, -13.213633389200002, 1291.4368525421003}); - P2_vs_soc_segments.push_back({93.0, 100.1, -8.037067666357142, 810.016240317714}); - zero_slope_threashold_P2_vs_soc = 0.2445101810040358; - // min_non_zero_slope = 0.2716779788933731 - } - else if(SE_enum == xfc_150 && EV_enum == md_200kWh) - { - P2_vs_soc_segments.push_back({-0.1, 4.0, 4.4642626723420005, 124.99935482557609}); - P2_vs_soc_segments.push_back({4.0, 10.0, 1.0677880183209867, 138.58525344166014}); - P2_vs_soc_segments.push_back({10.0, 92.38650810537449, 0.27087912085065996, 146.55434241636343}); - P2_vs_soc_segments.push_back({92.38650810537449, 100.1, -20.877192983499974, 2100.350877297997}); - zero_slope_threashold_P2_vs_soc = 0.24379120876559396; - // min_non_zero_slope = 0.27087912085065996 - } - else if(SE_enum == xfc_150 && EV_enum == hd_300kWh) - { - P2_vs_soc_segments.push_back({-0.1, 4.0, 6.696394008513, 187.49903223836412}); - P2_vs_soc_segments.push_back({4.0, 10.0, 1.6016820274814798, 207.87788016249021}); - P2_vs_soc_segments.push_back({10.0, 92.38650810537449, 0.4063186812759899, 219.8315136245451}); - P2_vs_soc_segments.push_back({92.38650810537449, 100.1, -31.315789475249957, 3150.526315946996}); - zero_slope_threashold_P2_vs_soc = 0.3656868131483909; - // min_non_zero_slope = 0.4063186812759899 - } - else if(SE_enum == xfc_150 && EV_enum == hd_400kWh) - { - P2_vs_soc_segments.push_back({-0.1, 4.0, 6.696394010425876, 187.4990322919245}); - P2_vs_soc_segments.push_back({4.0, 10.0, 1.6016820279390087, 207.87788022187195}); - P2_vs_soc_segments.push_back({10.0, 94.42134030035675, 0.4063186813920575, 219.83151368734147}); - P2_vs_soc_segments.push_back({94.42134030035675, 100.1, -41.75438596700008, 4200.701754596009}); - zero_slope_threashold_P2_vs_soc = 0.3656868132528518; - // min_non_zero_slope = 0.4063186813920575 - } - else if(SE_enum == xfc_150 && EV_enum == hd_600kWh) - { - P2_vs_soc_segments.push_back({-0.1, 4.0, 6.696394009788252, 187.49903227407106}); - P2_vs_soc_segments.push_back({4.0, 10.0, 1.601682027786505, 207.87788020207802}); - P2_vs_soc_segments.push_back({10.0, 96.46928826437762, 0.40631868135336796, 219.83151366640942}); - P2_vs_soc_segments.push_back({96.46928826437762, 100.1, -62.63157895049987, 6301.052631893987}); - zero_slope_threashold_P2_vs_soc = 0.36568681321803115; - // min_non_zero_slope = 0.40631868135336796 - } - else if(SE_enum == xfc_150 && EV_enum == hd_800kWh) - { - P2_vs_soc_segments.push_back({-0.1, 4.0, 6.696394009469443, 187.49903226514434}); - P2_vs_soc_segments.push_back({4.0, 10.0, 1.6016820277102406, 207.87788019218115}); - P2_vs_soc_segments.push_back({10.0, 97.49822035038136, 0.4063186813340238, 219.83151365594333}); - P2_vs_soc_segments.push_back({97.49822035038136, 100.1, -83.50877193399954, 8401.403509191954}); - zero_slope_threashold_P2_vs_soc = 0.36568681320062146; - // min_non_zero_slope = 0.4063186813340238 - } - else if(SE_enum == xfc_150 && EV_enum == hd_1000kWh) - { - P2_vs_soc_segments.push_back({-0.1, 4.0, 6.771283784305358, 189.59594596054998}); - P2_vs_soc_segments.push_back({4.0, 10.0, 1.6195945947193486, 210.20270271889402}); - P2_vs_soc_segments.push_back({10.0, 98.08946120751611, 0.41086278589443354, 222.29002080714318}); - P2_vs_soc_segments.push_back({98.08946120751611, 100.1, -104.3859649175005, 10501.75438649005}); - zero_slope_threashold_P2_vs_soc = 0.3697765073049902; - // min_non_zero_slope = 0.41086278589443354 - } - else if(SE_enum == xfc_350 && EV_enum == ld_50kWh) - { - P2_vs_soc_segments.push_back({-0.1, 3.0, 6.2649122810149995, 141.74736842814}); - P2_vs_soc_segments.push_back({3.0, 10.0, 1.6368421053449982, 155.63157895515002}); - P2_vs_soc_segments.push_back({10.0, 68.08256207172734, 0.31772853187184213, 168.82271468988156}); - P2_vs_soc_segments.push_back({68.08256207172734, 93.0, -6.386639676432694, 625.2732793834906}); - P2_vs_soc_segments.push_back({93.0, 100.1, -4.02255639117857, 405.413533854857}); - zero_slope_threashold_P2_vs_soc = 0.28595567868465793; - // min_non_zero_slope = 0.31772853187184213 - } - else if(SE_enum == xfc_350 && EV_enum == ld_100kWh) - { - P2_vs_soc_segments.push_back({-0.1, 3.0, 12.51729473245665, 283.21124200604}); - P2_vs_soc_segments.push_back({3.0, 10.0, 3.2704105251700035, 310.95189462789995}); - P2_vs_soc_segments.push_back({10.0, 68.08256207172734, 0.6348216064257896, 337.3077838153421}); - P2_vs_soc_segments.push_back({68.08256207172734, 93.0, -12.76050606840385, 1249.2960117080581}); - P2_vs_soc_segments.push_back({93.0, 100.1, -8.037067666357142, 810.016240317714}); - zero_slope_threashold_P2_vs_soc = 0.5713394457832106; - // min_non_zero_slope = 0.6348216064257896 - } - else if(SE_enum == xfc_350 && EV_enum == md_200kWh) - { - P2_vs_soc_segments.push_back({-0.1, 3.0, 16.525567949819884, 351.65195242759415}); - P2_vs_soc_segments.push_back({3.0, 4.0, 4.548794221567978, 387.58227361234987}); - P2_vs_soc_segments.push_back({4.0, 10.0, 4.047197486223866, 389.58866055372636}); - P2_vs_soc_segments.push_back({10.0, 79.37589851129248, 0.8015852284950763, 422.04478313101424}); - P2_vs_soc_segments.push_back({79.37589851129248, 93.0, -26.453720509489646, 2585.459165283537}); - P2_vs_soc_segments.push_back({93.0, 100.1, -16.09022556471428, 1621.654135419428}); - zero_slope_threashold_P2_vs_soc = 0.7214267056455687; - // min_non_zero_slope = 0.8015852284950763 - } - else if(SE_enum == xfc_350 && EV_enum == hd_300kWh) - { - P2_vs_soc_segments.push_back({-0.1, 3.0, 24.78835192472982, 527.4779286413913}); - P2_vs_soc_segments.push_back({3.0, 4.0, 6.823191332351967, 581.3734104185248}); - P2_vs_soc_segments.push_back({4.0, 10.0, 6.070796229335799, 584.3829908305895}); - P2_vs_soc_segments.push_back({10.0, 79.37589851129248, 1.2023778427426144, 633.0671746965213}); - P2_vs_soc_segments.push_back({79.37589851129248, 93.0, -39.68058076423447, 3878.1887479253055}); - P2_vs_soc_segments.push_back({93.0, 100.1, -24.13533834707142, 2432.481203129142}); - zero_slope_threashold_P2_vs_soc = 1.082140058468353; - // min_non_zero_slope = 1.2023778427426144 - } - else if(SE_enum == xfc_350 && EV_enum == hd_400kWh) - { - P2_vs_soc_segments.push_back({-0.1, 3.0, 22.9111589508695, 536.3200340480914}); - P2_vs_soc_segments.push_back({3.0, 4.0, 11.56755223272807, 570.3508542025157}); - P2_vs_soc_segments.push_back({4.0, 10.0, 5.569543098642392, 594.3428907388584}); - P2_vs_soc_segments.push_back({10.0, 83.77597648720116, 1.1996787877576258, 638.0415338477061}); - P2_vs_soc_segments.push_back({83.77597648720116, 93.0, -52.90744101897933, 5170.918330567078}); - P2_vs_soc_segments.push_back({93.0, 100.1, -32.18045112942856, 3243.308270838856}); - zero_slope_threashold_P2_vs_soc = 1.0797109089818633; - // min_non_zero_slope = 1.1996787877576258 - } - else if(SE_enum == xfc_350 && EV_enum == hd_600kWh) - { - P2_vs_soc_segments.push_back({-0.1, 4.0, 19.695276499377215, 551.467741982562}); - P2_vs_soc_segments.push_back({4.0, 10.0, 4.710829493489699, 611.405530006112}); - P2_vs_soc_segments.push_back({10.0, 88.59137653488752, 1.1950549451569656, 646.5632754894394}); - P2_vs_soc_segments.push_back({88.59137653488752, 100.1, -62.63157895050001, 6301.052631894}); - zero_slope_threashold_P2_vs_soc = 1.075549450641269; - // min_non_zero_slope = 1.1950549451569656 - } - else if(SE_enum == xfc_350 && EV_enum == hd_800kWh) - { - P2_vs_soc_segments.push_back({-0.1, 4.0, 19.695276498439537, 551.4677419563069}); - P2_vs_soc_segments.push_back({4.0, 10.0, 4.710829493265419, 611.4055299770034}); - P2_vs_soc_segments.push_back({10.0, 91.55241881576407, 1.1950549451000696, 646.5632754586568}); - P2_vs_soc_segments.push_back({91.55241881576407, 100.1, -83.50877193400005, 8401.403509192005}); - zero_slope_threashold_P2_vs_soc = 1.0755494505900627; - // min_non_zero_slope = 1.1950549451000696 - } - else if(SE_enum == xfc_350 && EV_enum == hd_1000kWh) - { - P2_vs_soc_segments.push_back({-0.1, 4.0, 19.915540542074574, 557.6351351780881}); - P2_vs_soc_segments.push_back({4.0, 10.0, 4.763513513880435, 618.2432432908647}); - P2_vs_soc_segments.push_back({10.0, 93.26215801350378, 1.20841995851304, 653.7941788445387}); - P2_vs_soc_segments.push_back({93.26215801350378, 100.1, -104.38596491750005, 10501.754386490007}); - zero_slope_threashold_P2_vs_soc = 1.087577962661736; - // min_non_zero_slope = 1.20841995851304 - } - else if(SE_enum == xfc_500kW && EV_enum == ld_50kWh) - { - P2_vs_soc_segments.push_back({-0.1, 3.0, 6.2649122810149995, 141.74736842814}); - P2_vs_soc_segments.push_back({3.0, 10.0, 1.6368421053449982, 155.63157895515002}); - P2_vs_soc_segments.push_back({10.0, 68.08256207172734, 0.31772853187184213, 168.82271468988156}); - P2_vs_soc_segments.push_back({68.08256207172734, 93.0, -6.386639676432694, 625.2732793834906}); - P2_vs_soc_segments.push_back({93.0, 100.1, -4.02255639117857, 405.413533854857}); - zero_slope_threashold_P2_vs_soc = 0.28595567868465793; - // min_non_zero_slope = 0.31772853187184213 - } - else if(SE_enum == xfc_500kW && EV_enum == ld_100kWh) - { - P2_vs_soc_segments.push_back({-0.1, 3.0, 12.51729473245665, 283.21124200604}); - P2_vs_soc_segments.push_back({3.0, 10.0, 3.2704105251700035, 310.95189462789995}); - P2_vs_soc_segments.push_back({10.0, 68.08256207172734, 0.6348216064257896, 337.3077838153421}); - P2_vs_soc_segments.push_back({68.08256207172734, 93.0, -12.76050606840385, 1249.2960117080581}); - P2_vs_soc_segments.push_back({93.0, 100.1, -8.037067666357142, 810.016240317714}); - zero_slope_threashold_P2_vs_soc = 0.5713394457832106; - // min_non_zero_slope = 0.6348216064257896 - } - else if(SE_enum == xfc_500kW && EV_enum == md_200kWh) - { - P2_vs_soc_segments.push_back({-0.1, 3.0, 16.525567949819884, 351.65195242759415}); - P2_vs_soc_segments.push_back({3.0, 4.0, 4.548794221567978, 387.58227361234987}); - P2_vs_soc_segments.push_back({4.0, 10.0, 4.047197486223866, 389.58866055372636}); - P2_vs_soc_segments.push_back({10.0, 79.37589851129248, 0.8015852284950763, 422.04478313101424}); - P2_vs_soc_segments.push_back({79.37589851129248, 93.0, -26.453720509489646, 2585.459165283537}); - P2_vs_soc_segments.push_back({93.0, 100.1, -16.09022556471428, 1621.654135419428}); - zero_slope_threashold_P2_vs_soc = 0.7214267056455687; - // min_non_zero_slope = 0.8015852284950763 - } - else if(SE_enum == xfc_500kW && EV_enum == hd_300kWh) - { - P2_vs_soc_segments.push_back({-0.1, 3.0, 24.78835192472982, 527.4779286413913}); - P2_vs_soc_segments.push_back({3.0, 4.0, 6.823191332351967, 581.3734104185248}); - P2_vs_soc_segments.push_back({4.0, 10.0, 6.070796229335799, 584.3829908305895}); - P2_vs_soc_segments.push_back({10.0, 79.37589851129248, 1.2023778427426144, 633.0671746965213}); - P2_vs_soc_segments.push_back({79.37589851129248, 93.0, -39.68058076423447, 3878.1887479253055}); - P2_vs_soc_segments.push_back({93.0, 100.1, -24.13533834707142, 2432.481203129142}); - zero_slope_threashold_P2_vs_soc = 1.082140058468353; - // min_non_zero_slope = 1.2023778427426144 - } - else if(SE_enum == xfc_500kW && EV_enum == hd_400kWh) - { - P2_vs_soc_segments.push_back({-0.1, 3.0, 22.9111589508695, 536.3200340480914}); - P2_vs_soc_segments.push_back({3.0, 4.0, 11.56755223272807, 570.3508542025157}); - P2_vs_soc_segments.push_back({4.0, 10.0, 5.569543098642392, 594.3428907388584}); - P2_vs_soc_segments.push_back({10.0, 83.77597648720116, 1.1996787877576258, 638.0415338477061}); - P2_vs_soc_segments.push_back({83.77597648720116, 93.0, -52.90744101897933, 5170.918330567078}); - P2_vs_soc_segments.push_back({93.0, 100.1, -32.18045112942856, 3243.308270838856}); - zero_slope_threashold_P2_vs_soc = 1.0797109089818633; - // min_non_zero_slope = 1.1996787877576258 - } - else if(SE_enum == xfc_500kW && EV_enum == hd_600kWh) - { - P2_vs_soc_segments.push_back({-0.1, 4.0, 19.695276499377215, 551.467741982562}); - P2_vs_soc_segments.push_back({4.0, 10.0, 4.710829493489699, 611.405530006112}); - P2_vs_soc_segments.push_back({10.0, 88.59137653488752, 1.1950549451569656, 646.5632754894394}); - P2_vs_soc_segments.push_back({88.59137653488752, 100.1, -62.63157895050001, 6301.052631894}); - zero_slope_threashold_P2_vs_soc = 1.075549450641269; - // min_non_zero_slope = 1.1950549451569656 - } - else if(SE_enum == xfc_500kW && EV_enum == hd_800kWh) - { - P2_vs_soc_segments.push_back({-0.1, 4.0, 19.695276498439537, 551.4677419563069}); - P2_vs_soc_segments.push_back({4.0, 10.0, 4.710829493265419, 611.4055299770034}); - P2_vs_soc_segments.push_back({10.0, 91.55241881576407, 1.1950549451000696, 646.5632754586568}); - P2_vs_soc_segments.push_back({91.55241881576407, 100.1, -83.50877193400005, 8401.403509192005}); - zero_slope_threashold_P2_vs_soc = 1.0755494505900627; - // min_non_zero_slope = 1.1950549451000696 - } - else if(SE_enum == xfc_500kW && EV_enum == hd_1000kWh) - { - P2_vs_soc_segments.push_back({-0.1, 4.0, 19.915540542074574, 557.6351351780881}); - P2_vs_soc_segments.push_back({4.0, 10.0, 4.763513513880435, 618.2432432908647}); - P2_vs_soc_segments.push_back({10.0, 93.26215801350378, 1.20841995851304, 653.7941788445387}); - P2_vs_soc_segments.push_back({93.26215801350378, 100.1, -104.38596491750005, 10501.754386490007}); - zero_slope_threashold_P2_vs_soc = 1.087577962661736; - // min_non_zero_slope = 1.20841995851304 - } - else if(SE_enum == xfc_1000kW && EV_enum == ld_50kWh) - { - P2_vs_soc_segments.push_back({-0.1, 3.0, 6.2649122810149995, 141.74736842814}); - P2_vs_soc_segments.push_back({3.0, 10.0, 1.6368421053449982, 155.63157895515002}); - P2_vs_soc_segments.push_back({10.0, 68.08256207172734, 0.31772853187184213, 168.82271468988156}); - P2_vs_soc_segments.push_back({68.08256207172734, 93.0, -6.386639676432694, 625.2732793834906}); - P2_vs_soc_segments.push_back({93.0, 100.1, -4.02255639117857, 405.413533854857}); - zero_slope_threashold_P2_vs_soc = 0.28595567868465793; - // min_non_zero_slope = 0.31772853187184213 - } - else if(SE_enum == xfc_1000kW && EV_enum == ld_100kWh) - { - P2_vs_soc_segments.push_back({-0.1, 3.0, 12.51729473245665, 283.21124200604}); - P2_vs_soc_segments.push_back({3.0, 10.0, 3.2704105251700035, 310.95189462789995}); - P2_vs_soc_segments.push_back({10.0, 68.08256207172734, 0.6348216064257896, 337.3077838153421}); - P2_vs_soc_segments.push_back({68.08256207172734, 93.0, -12.76050606840385, 1249.2960117080581}); - P2_vs_soc_segments.push_back({93.0, 100.1, -8.037067666357142, 810.016240317714}); - zero_slope_threashold_P2_vs_soc = 0.5713394457832106; - // min_non_zero_slope = 0.6348216064257896 - } - else if(SE_enum == xfc_1000kW && EV_enum == md_200kWh) - { - P2_vs_soc_segments.push_back({-0.1, 3.0, 24.143511712364646, 542.7849693228944}); - P2_vs_soc_segments.push_back({3.0, 10.0, 6.273517022205756, 596.3949533933711}); - P2_vs_soc_segments.push_back({10.0, 69.27462598528474, 1.2186444564972314, 646.9436790504564}); - P2_vs_soc_segments.push_back({69.27462598528474, 93.0, -25.54655870573077, 2501.0931175339615}); - P2_vs_soc_segments.push_back({93.0, 100.1, -16.09022556471428, 1621.654135419428}); - zero_slope_threashold_P2_vs_soc = 1.0967800108475083; - // min_non_zero_slope = 1.2186444564972314 - } - else if(SE_enum == xfc_1000kW && EV_enum == hd_300kWh) - { - P2_vs_soc_segments.push_back({-0.1, 3.0, 36.21526756854697, 814.1774539843416}); - P2_vs_soc_segments.push_back({3.0, 10.0, 9.410275533308633, 894.5924300900566}); - P2_vs_soc_segments.push_back({10.0, 69.27462598528474, 1.8279666847458471, 970.4155185756845}); - P2_vs_soc_segments.push_back({69.27462598528474, 93.0, -38.319838058596154, 3751.639676300942}); - P2_vs_soc_segments.push_back({93.0, 100.1, -24.13533834707142, 2432.481203129142}); - zero_slope_threashold_P2_vs_soc = 1.6451700162712624; - // min_non_zero_slope = 1.8279666847458471 - } - else if(SE_enum == xfc_1000kW && EV_enum == hd_400kWh) - { - P2_vs_soc_segments.push_back({-0.1, 3.0, 36.63632021013128, 777.7564016147287}); - P2_vs_soc_segments.push_back({3.0, 10.0, 9.064410874621704, 860.4721296212574}); - P2_vs_soc_segments.push_back({10.0, 76.96478054467563, 1.7725650232628638, 933.3905881348459}); - P2_vs_soc_segments.push_back({76.96478054467563, 93.0, -51.09311741146153, 5002.186235067922}); - P2_vs_soc_segments.push_back({93.0, 100.1, -32.18045112942856, 3243.308270838856}); - zero_slope_threashold_P2_vs_soc = 1.5953085209365774; - // min_non_zero_slope = 1.7725650232628638 - } - else if(SE_enum == xfc_1000kW && EV_enum == hd_600kWh) - { - P2_vs_soc_segments.push_back({-0.1, 3.0, 33.308124827399, 787.0469348700666}); - P2_vs_soc_segments.push_back({3.0, 4.0, 17.609192570054, 834.1437316421017}); - P2_vs_soc_segments.push_back({4.0, 10.0, 8.090720110980348, 872.2176214783962}); - P2_vs_soc_segments.push_back({10.0, 84.08466589019737, 1.757393651151549, 935.5508860766843}); - P2_vs_soc_segments.push_back({84.08466589019737, 93.0, -79.36116152846905, 7756.377495850622}); - P2_vs_soc_segments.push_back({93.0, 100.1, -48.27067669414284, 4864.962406258284}); - zero_slope_threashold_P2_vs_soc = 1.5816542860363942; - // min_non_zero_slope = 1.757393651151549 - } - else if(SE_enum == xfc_1000kW && EV_enum == hd_800kWh) - { - P2_vs_soc_segments.push_back({-0.1, 3.0, 29.553738860176978, 804.7311453623216}); - P2_vs_soc_segments.push_back({3.0, 4.0, 27.09791437555665, 812.0986188161826}); - P2_vs_soc_segments.push_back({4.0, 10.0, 7.088213844737678, 892.1374209394584}); - P2_vs_soc_segments.push_back({10.0, 87.35344251585242, 1.751995540405572, 945.4996039827796}); - P2_vs_soc_segments.push_back({87.35344251585242, 93.0, -105.81488203795847, 10341.836661134137}); - P2_vs_soc_segments.push_back({93.0, 100.1, -64.36090225885712, 6486.616541677712}); - zero_slope_threashold_P2_vs_soc = 1.576795986365015; - // min_non_zero_slope = 1.751995540405572 - } - else if(SE_enum == xfc_1000kW && EV_enum == hd_1000kWh) - { - P2_vs_soc_segments.push_back({-0.1, 4.0, 29.18025000224768, 817.0470000629349}); - P2_vs_soc_segments.push_back({4.0, 10.0, 6.979500000537595, 905.8500000697752}); - P2_vs_soc_segments.push_back({10.0, 89.9032220733732, 1.7705769232133064, 957.939230843018}); - P2_vs_soc_segments.push_back({89.9032220733732, 100.1, -104.3859649175, 10501.754386490002}); - zero_slope_threashold_P2_vs_soc = 1.593519230891976; - // min_non_zero_slope = 1.7705769232133064 - } - else if(SE_enum == xfc_2000kW && EV_enum == ld_50kWh) - { - P2_vs_soc_segments.push_back({-0.1, 3.0, 6.2649122810149995, 141.74736842814}); - P2_vs_soc_segments.push_back({3.0, 10.0, 1.6368421053449982, 155.63157895515002}); - P2_vs_soc_segments.push_back({10.0, 68.08256207172734, 0.31772853187184213, 168.82271468988156}); - P2_vs_soc_segments.push_back({68.08256207172734, 93.0, -6.386639676432694, 625.2732793834906}); - P2_vs_soc_segments.push_back({93.0, 100.1, -4.02255639117857, 405.413533854857}); - zero_slope_threashold_P2_vs_soc = 0.28595567868465793; - // min_non_zero_slope = 0.31772853187184213 - } - else if(SE_enum == xfc_2000kW && EV_enum == ld_100kWh) - { - P2_vs_soc_segments.push_back({-0.1, 3.0, 12.51729473245665, 283.21124200604}); - P2_vs_soc_segments.push_back({3.0, 10.0, 3.2704105251700035, 310.95189462789995}); - P2_vs_soc_segments.push_back({10.0, 68.08256207172734, 0.6348216064257896, 337.3077838153421}); - P2_vs_soc_segments.push_back({68.08256207172734, 93.0, -12.76050606840385, 1249.2960117080581}); - P2_vs_soc_segments.push_back({93.0, 100.1, -8.037067666357142, 810.016240317714}); - zero_slope_threashold_P2_vs_soc = 0.5713394457832106; - // min_non_zero_slope = 0.6348216064257896 - } - else if(SE_enum == xfc_2000kW && EV_enum == md_200kWh) - { - P2_vs_soc_segments.push_back({-0.1, 3.0, 25.059649124059966, 566.98947371256}); - P2_vs_soc_segments.push_back({3.0, 10.0, 6.547368421380007, 622.5263158205998}); - P2_vs_soc_segments.push_back({10.0, 68.08256207172734, 1.2709141274873685, 675.2908587595263}); - P2_vs_soc_segments.push_back({68.08256207172734, 93.0, -25.546558705730774, 2501.0931175339624}); - P2_vs_soc_segments.push_back({93.0, 100.1, -16.09022556471428, 1621.654135419428}); - zero_slope_threashold_P2_vs_soc = 1.1438227147386317; - // min_non_zero_slope = 1.2709141274873685 - } - else if(SE_enum == xfc_2000kW && EV_enum == hd_300kWh) - { - P2_vs_soc_segments.push_back({-0.1, 3.0, 37.589473686089946, 850.4842105688399}); - P2_vs_soc_segments.push_back({3.0, 10.0, 9.82105263207001, 933.7894737308998}); - P2_vs_soc_segments.push_back({10.0, 68.08256207172734, 1.9063711912310528, 1012.9362881392893}); - P2_vs_soc_segments.push_back({68.08256207172734, 93.0, -38.31983805859616, 3751.6396763009434}); - P2_vs_soc_segments.push_back({93.0, 100.1, -24.13533834707142, 2432.481203129142}); - zero_slope_threashold_P2_vs_soc = 1.7157340721079475; - // min_non_zero_slope = 1.9063711912310528 - } - else if(SE_enum == xfc_2000kW && EV_enum == hd_400kWh) - { - P2_vs_soc_segments.push_back({-0.1, 3.0, 50.11929824811993, 1133.97894742512}); - P2_vs_soc_segments.push_back({3.0, 10.0, 13.094736842760014, 1245.0526316411997}); - P2_vs_soc_segments.push_back({10.0, 68.08256207172734, 2.541828254974737, 1350.5817175190525}); - P2_vs_soc_segments.push_back({68.08256207172734, 93.0, -51.09311741146155, 5002.186235067925}); - P2_vs_soc_segments.push_back({93.0, 100.1, -32.18045112942856, 3243.308270838856}); - zero_slope_threashold_P2_vs_soc = 2.2876454294772635; - // min_non_zero_slope = 2.541828254974737 - } - else if(SE_enum == xfc_2000kW && EV_enum == hd_600kWh) - { - P2_vs_soc_segments.push_back({-0.1, 3.0, 72.50049185041229, 1630.2031760919858}); - P2_vs_soc_segments.push_back({3.0, 10.0, 18.841462497128997, 1791.1802641518357}); - P2_vs_soc_segments.push_back({10.0, 69.24422604132654, 3.6599247078455552, 1942.9956420446701}); - P2_vs_soc_segments.push_back({69.24422604132654, 93.0, -76.63967611719227, 7503.279352601881}); - P2_vs_soc_segments.push_back({93.0, 100.1, -48.27067669414284, 4864.962406258284}); - zero_slope_threashold_P2_vs_soc = 3.2939322370609996; - // min_non_zero_slope = 3.6599247078455552 - } - else if(SE_enum == xfc_2000kW && EV_enum == hd_800kWh) - { - P2_vs_soc_segments.push_back({-0.1, 3.0, 73.34259711028085, 1557.361070737169}); - P2_vs_soc_segments.push_back({3.0, 10.0, 18.149733172790338, 1722.9396625496406}); - P2_vs_soc_segments.push_back({10.0, 76.94140334485147, 3.5491213835502085, 1868.9457804420417}); - P2_vs_soc_segments.push_back({76.94140334485147, 93.0, -102.18623482292311, 10004.372470135851}); - P2_vs_soc_segments.push_back({93.0, 100.1, -64.36090225885712, 6486.616541677712}); - zero_slope_threashold_P2_vs_soc = 3.1942092451951876; - // min_non_zero_slope = 3.5491213835502085 - } - else if(SE_enum == xfc_2000kW && EV_enum == hd_1000kWh) - { - P2_vs_soc_segments.push_back({-0.1, 3.0, 71.4577773537474, 1574.312573169373}); - P2_vs_soc_segments.push_back({3.0, 4.0, 25.464850039162634, 1712.2913551131273}); - P2_vs_soc_segments.push_back({4.0, 10.0, 17.45464452354518, 1744.332177175597}); - P2_vs_soc_segments.push_back({10.0, 81.30667131540051, 3.5634451397963116, 1883.2441710130859}); - P2_vs_soc_segments.push_back({81.30667131540051, 93.0, -132.2686025474482, 12927.295826417685}); - P2_vs_soc_segments.push_back({93.0, 100.1, -80.45112782357143, 8108.270677097142}); - zero_slope_threashold_P2_vs_soc = 3.2071006258166803; - // min_non_zero_slope = 3.5634451397963116 - } - else if(SE_enum == xfc_3000kW && EV_enum == ld_50kWh) - { - P2_vs_soc_segments.push_back({-0.1, 3.0, 6.2649122810149995, 141.74736842814}); - P2_vs_soc_segments.push_back({3.0, 10.0, 1.6368421053449982, 155.63157895515002}); - P2_vs_soc_segments.push_back({10.0, 68.08256207172734, 0.31772853187184213, 168.82271468988156}); - P2_vs_soc_segments.push_back({68.08256207172734, 93.0, -6.386639676432694, 625.2732793834906}); - P2_vs_soc_segments.push_back({93.0, 100.1, -4.02255639117857, 405.413533854857}); - zero_slope_threashold_P2_vs_soc = 0.28595567868465793; - // min_non_zero_slope = 0.31772853187184213 - } - else if(SE_enum == xfc_3000kW && EV_enum == ld_100kWh) - { - P2_vs_soc_segments.push_back({-0.1, 3.0, 12.51729473245665, 283.21124200604}); - P2_vs_soc_segments.push_back({3.0, 10.0, 3.2704105251700035, 310.95189462789995}); - P2_vs_soc_segments.push_back({10.0, 68.08256207172734, 0.6348216064257896, 337.3077838153421}); - P2_vs_soc_segments.push_back({68.08256207172734, 93.0, -12.76050606840385, 1249.2960117080581}); - P2_vs_soc_segments.push_back({93.0, 100.1, -8.037067666357142, 810.016240317714}); - zero_slope_threashold_P2_vs_soc = 0.5713394457832106; - // min_non_zero_slope = 0.6348216064257896 - } - else if(SE_enum == xfc_3000kW && EV_enum == md_200kWh) - { - P2_vs_soc_segments.push_back({-0.1, 3.0, 25.059649124059966, 566.98947371256}); - P2_vs_soc_segments.push_back({3.0, 10.0, 6.547368421380007, 622.5263158205998}); - P2_vs_soc_segments.push_back({10.0, 68.08256207172734, 1.2709141274873685, 675.2908587595263}); - P2_vs_soc_segments.push_back({68.08256207172734, 93.0, -25.546558705730774, 2501.0931175339624}); - P2_vs_soc_segments.push_back({93.0, 100.1, -16.09022556471428, 1621.654135419428}); - zero_slope_threashold_P2_vs_soc = 1.1438227147386317; - // min_non_zero_slope = 1.2709141274873685 - } - else if(SE_enum == xfc_3000kW && EV_enum == hd_300kWh) - { - P2_vs_soc_segments.push_back({-0.1, 3.0, 37.589473686089946, 850.4842105688399}); - P2_vs_soc_segments.push_back({3.0, 10.0, 9.82105263207001, 933.7894737308998}); - P2_vs_soc_segments.push_back({10.0, 68.08256207172734, 1.9063711912310528, 1012.9362881392893}); - P2_vs_soc_segments.push_back({68.08256207172734, 93.0, -38.31983805859616, 3751.6396763009434}); - P2_vs_soc_segments.push_back({93.0, 100.1, -24.13533834707142, 2432.481203129142}); - zero_slope_threashold_P2_vs_soc = 1.7157340721079475; - // min_non_zero_slope = 1.9063711912310528 - } - else if(SE_enum == xfc_3000kW && EV_enum == hd_400kWh) - { - P2_vs_soc_segments.push_back({-0.1, 3.0, 50.11929824811993, 1133.97894742512}); - P2_vs_soc_segments.push_back({3.0, 10.0, 13.094736842760014, 1245.0526316411997}); - P2_vs_soc_segments.push_back({10.0, 68.08256207172734, 2.541828254974737, 1350.5817175190525}); - P2_vs_soc_segments.push_back({68.08256207172734, 93.0, -51.09311741146155, 5002.186235067925}); - P2_vs_soc_segments.push_back({93.0, 100.1, -32.18045112942856, 3243.308270838856}); - zero_slope_threashold_P2_vs_soc = 2.2876454294772635; - // min_non_zero_slope = 2.541828254974737 - } - else if(SE_enum == xfc_3000kW && EV_enum == hd_600kWh) - { - P2_vs_soc_segments.push_back({-0.1, 3.0, 75.17894737217999, 1700.9684211376798}); - P2_vs_soc_segments.push_back({3.0, 10.0, 19.64210526413998, 1867.5789474618}); - P2_vs_soc_segments.push_back({10.0, 68.08256207172732, 3.8127423824621105, 2025.8725762785784}); - P2_vs_soc_segments.push_back({68.08256207172732, 93.0, -76.63967611719228, 7503.279352601882}); - P2_vs_soc_segments.push_back({93.0, 100.1, -48.27067669414284, 4864.962406258284}); - zero_slope_threashold_P2_vs_soc = 3.4314681442158994; - // min_non_zero_slope = 3.8127423824621105 - } - else if(SE_enum == xfc_3000kW && EV_enum == hd_800kWh) - { - P2_vs_soc_segments.push_back({-0.1, 3.0, 100.23859649623999, 2267.9578948502403}); - P2_vs_soc_segments.push_back({3.0, 10.0, 26.18947368551997, 2490.1052632824003}); - P2_vs_soc_segments.push_back({10.0, 68.08256207172732, 5.083656509949474, 2701.1634350381055}); - P2_vs_soc_segments.push_back({68.08256207172732, 93.0, -102.18623482292308, 10004.372470135846}); - P2_vs_soc_segments.push_back({93.0, 100.1, -64.36090225885712, 6486.616541677712}); - zero_slope_threashold_P2_vs_soc = 4.575290858954527; - // min_non_zero_slope = 5.083656509949474 - } - else if(SE_enum == xfc_3000kW && EV_enum == hd_1000kWh) - { - P2_vs_soc_segments.push_back({-0.1, 3.0, 108.59649123349998, 2393.6842106460003}); - P2_vs_soc_segments.push_back({3.0, 10.0, 27.744360903642843, 2636.2406016355717}); - P2_vs_soc_segments.push_back({10.0, 72.45155249679897, 5.401662050131588, 2859.667590170684}); - P2_vs_soc_segments.push_back({72.45155249679897, 93.0, -127.73279352865379, 12505.465587669803}); - P2_vs_soc_segments.push_back({93.0, 100.1, -80.45112782357143, 8108.270677097142}); - zero_slope_threashold_P2_vs_soc = 4.861495845118429; - // min_non_zero_slope = 5.401662050131588 - } - else if(SE_enum == dwc_100kW && EV_enum == ld_50kWh) - { - P2_vs_soc_segments.push_back({-0.1, 3.0, 4.131391988613595, 87.91298812597856}); - P2_vs_soc_segments.push_back({3.0, 4.0, 1.137198555109764, 96.89556842649004}); - P2_vs_soc_segments.push_back({4.0, 10.0, 1.011799371844463, 97.39716515955125}); - P2_vs_soc_segments.push_back({10.0, 79.37589850730012, 0.20039630716987314, 105.51119580629715}); - P2_vs_soc_segments.push_back({79.37589850730012, 93.0, -6.613430127372406, 646.3647913208837}); - P2_vs_soc_segments.push_back({93.0, 100.1, -4.02255639117857, 405.413533854857}); - zero_slope_threashold_P2_vs_soc = 0.18035667645288583; - // min_non_zero_slope = 0.20039630716987314 - } - else if(SE_enum == dwc_100kW && EV_enum == ld_100kWh) - { - P2_vs_soc_segments.push_back({-0.1, 4.0, 3.2825460808634848, 91.91129026417764}); - P2_vs_soc_segments.push_back({4.0, 10.0, 0.7851382483490266, 101.90092159423547}); - P2_vs_soc_segments.push_back({10.0, 88.5795762311163, 0.19917582404926223, 107.76054583723311}); - P2_vs_soc_segments.push_back({88.5795762311163, 100.1, -10.428157891083332, 1049.1252627903334}); - zero_slope_threashold_P2_vs_soc = 0.179258241644336; - // min_non_zero_slope = 0.19917582404926223 - } - else if(SE_enum == dwc_100kW && EV_enum == md_200kWh) - { - P2_vs_soc_segments.push_back({-0.1, 4.0, 3.282546082604413, 91.9112903129236}); - P2_vs_soc_segments.push_back({4.0, 10.0, 0.7851382487654301, 101.90092164827954}); - P2_vs_soc_segments.push_back({10.0, 94.54144352797196, 0.19917582415489724, 107.76054589438486}); - P2_vs_soc_segments.push_back({94.54144352797196, 100.1, -20.877192983500027, 2100.3508772980026}); - zero_slope_threashold_P2_vs_soc = 0.17925824173940752; - // min_non_zero_slope = 0.19917582415489724 - } - else if(SE_enum == dwc_100kW && EV_enum == hd_300kWh) - { - P2_vs_soc_segments.push_back({-0.1, 4.0, 4.923819123906619, 137.8669354693854}); - P2_vs_soc_segments.push_back({4.0, 10.0, 1.177707373148145, 152.8513824724193}); - P2_vs_soc_segments.push_back({10.0, 94.54144352797196, 0.29876373623234587, 161.64081884157727}); - P2_vs_soc_segments.push_back({94.54144352797196, 100.1, -31.315789475250035, 3150.5263159470037}); - zero_slope_threashold_P2_vs_soc = 0.2688873626091113; - // min_non_zero_slope = 0.29876373623234587 - } - else if(SE_enum == dwc_100kW && EV_enum == hd_400kWh) - { - P2_vs_soc_segments.push_back({-0.1, 4.0, 4.9238191253131465, 137.866935508768}); - P2_vs_soc_segments.push_back({4.0, 10.0, 1.177707373484567, 152.8513825160823}); - P2_vs_soc_segments.push_back({10.0, 96.04657354332714, 0.2987637363176892, 161.6408188877511}); - P2_vs_soc_segments.push_back({96.04657354332714, 100.1, -41.754385966999884, 4200.701754595989}); - zero_slope_threashold_P2_vs_soc = 0.2688873626859203; - // min_non_zero_slope = 0.2987637363176892 - } - else if(SE_enum == dwc_100kW && EV_enum == hd_600kWh) - { - P2_vs_soc_segments.push_back({-0.1, 4.0, 4.923819124844304, 137.8669354956405}); - P2_vs_soc_segments.push_back({4.0, 10.0, 1.1777073733724248, 152.851382501528}); - P2_vs_soc_segments.push_back({10.0, 97.5588492117089, 0.2987637362892414, 161.64081887235986}); - P2_vs_soc_segments.push_back({97.5588492117089, 100.1, -62.63157895049983, 6301.052631893983}); - zero_slope_threashold_P2_vs_soc = 0.26888736266031726; - // min_non_zero_slope = 0.2987637362892414 - } - else if(SE_enum == dwc_100kW && EV_enum == hd_800kWh) - { - P2_vs_soc_segments.push_back({-0.1, 4.0, 4.923819124609884, 137.86693548907672}); - P2_vs_soc_segments.push_back({4.0, 10.0, 1.1777073733163548, 152.85138249425086}); - P2_vs_soc_segments.push_back({10.0, 98.31768258578957, 0.2987637362750174, 161.6408188646642}); - P2_vs_soc_segments.push_back({98.31768258578957, 100.1, -83.50877193400026, 8401.403509192027}); - zero_slope_threashold_P2_vs_soc = 0.26888736264751567; - // min_non_zero_slope = 0.2987637362750174 - } - else if(SE_enum == dwc_100kW && EV_enum == hd_1000kWh) - { - P2_vs_soc_segments.push_back({-0.1, 4.0, 4.978885135518643, 139.40878379452204}); - P2_vs_soc_segments.push_back({4.0, 10.0, 1.1908783784701087, 154.56081082271618}); - P2_vs_soc_segments.push_back({10.0, 98.75342864712539, 0.30210498962826, 163.44854471113467}); - P2_vs_soc_segments.push_back({98.75342864712539, 100.1, -104.38596491749996, 10501.754386489998}); - zero_slope_threashold_P2_vs_soc = 0.271894490665434; - // min_non_zero_slope = 0.30210498962826 - } - else - { - std::cout << "Error: P2_vs_soc is not defigned in the factory_EV_charge_model for EV_enum:" << EV_enum << " and SE_enum:" << SE_enum << std::endl; - } - } -} - - -void factory_EV_charge_model::get_E1_Energy_limit(bool is_charging_not_discharging, bool are_battery_losses, vehicle_enum vehicle_type, supply_equipment_enum supply_equipment_type, - double battery_size_with_degredation_kWh, double SE_P2_limit_atNominalV_kW, double recalc_exponent_threashold, - double max_P2kW_error_before_reappling_P2kW_limit_to_P2_vs_soc_segments, line_segment& bat_eff_vs_P2, - calculate_E1_energy_limit& return_val) -{ - poly_function_of_x P2_vs_puVrms; - double zero_slope_threashold_P2_vs_soc; - std::vector P2_vs_soc_segments; - - this->get_P2_vs_puVrms(is_charging_not_discharging, vehicle_type, supply_equipment_type, SE_P2_limit_atNominalV_kW, P2_vs_puVrms); - this->get_P2_vs_soc(is_charging_not_discharging, vehicle_type, supply_equipment_type, zero_slope_threashold_P2_vs_soc, P2_vs_soc_segments); - - //-------------------------------- - - algorithm_P2_vs_soc *X; - calc_E1_energy_limit *Y; - - if(are_battery_losses) - X = new algorithm_P2_vs_soc_losses(battery_size_with_degredation_kWh, recalc_exponent_threashold, zero_slope_threashold_P2_vs_soc, bat_eff_vs_P2); - else - X = new algorithm_P2_vs_soc_no_losses(battery_size_with_degredation_kWh, recalc_exponent_threashold, zero_slope_threashold_P2_vs_soc); - - if(is_charging_not_discharging) - Y = new calc_E1_energy_limit_charging(X); - else - Y = new calc_E1_energy_limit_discharging(X); - - //-------------------------------- - - calculate_E1_energy_limit tmp(is_charging_not_discharging, max_P2kW_error_before_reappling_P2kW_limit_to_P2_vs_soc_segments, Y, P2_vs_puVrms, P2_vs_soc_segments); - - return_val = tmp; -} - - -vehicle_charge_model* factory_EV_charge_model::alloc_get_EV_charge_model(const charge_event_data& event, supply_equipment_enum supply_equipment_type, double SE_P2_limit_kW) -{ - double battery_size_kWh, recalc_exponent_threashold, max_P2kW_error_before_reappling_P2kW_limit_to_P2_vs_soc_segments, soc_of_full_battery; - double battery_size_with_degredation_kWh; - bool will_never_discharge, are_battery_losses; - battery_chemistry bat_chem; - - soc_of_full_battery = 99.8; - recalc_exponent_threashold = 0.00000001; // Should be very small - max_P2kW_error_before_reappling_P2kW_limit_to_P2_vs_soc_segments = 0.5; - - will_never_discharge = true; - are_battery_losses = true; - - get_pev_battery_info(event.vehicle_type, bat_chem, battery_size_kWh, battery_size_with_degredation_kWh); - - //--------------------------------- - - integrate_X_through_time get_next_P2; - this->get_integrate_X_through_time_obj(event.vehicle_type, supply_equipment_type, get_next_P2); - - //--------------------------------- - - double zero_slope_threashold_bat_eff_vs_P2, zst_A, zst_B; - line_segment bat_eff_vs_P2_charging; - line_segment bat_eff_vs_P2_discharging; - - get_bat_eff_vs_P2(true, bat_chem, battery_size_kWh, zst_A, bat_eff_vs_P2_charging); - get_bat_eff_vs_P2(false, bat_chem, battery_size_kWh, zst_B, bat_eff_vs_P2_discharging); - - zero_slope_threashold_bat_eff_vs_P2 = (zst_A < zst_B) ? zst_A : zst_B; - - //--------------------------------- - - double final_bat_size_kWh; - - if(this->model_stochastic_battery_degregation) - final_bat_size_kWh = battery_size_with_degredation_kWh; - else - final_bat_size_kWh = battery_size_kWh; - - //--------------------------------- - - calculate_E1_energy_limit get_E1_limits_charging; - calculate_E1_energy_limit get_E1_limits_discharging; - - this->get_E1_Energy_limit(true, are_battery_losses, event.vehicle_type, supply_equipment_type, final_bat_size_kWh, SE_P2_limit_kW, recalc_exponent_threashold, - max_P2kW_error_before_reappling_P2kW_limit_to_P2_vs_soc_segments, bat_eff_vs_P2_charging, get_E1_limits_charging); - - this->get_E1_Energy_limit(false, are_battery_losses, event.vehicle_type, supply_equipment_type, final_bat_size_kWh, SE_P2_limit_kW, recalc_exponent_threashold, - max_P2kW_error_before_reappling_P2kW_limit_to_P2_vs_soc_segments, bat_eff_vs_P2_discharging, get_E1_limits_discharging); - - //--------------------------------- - - battery bat(final_bat_size_kWh, event.arrival_SOC, will_never_discharge, zero_slope_threashold_bat_eff_vs_P2, - bat_eff_vs_P2_charging, bat_eff_vs_P2_discharging, get_E1_limits_charging, get_E1_limits_discharging, get_next_P2); - - //--------------------------------- - - return new vehicle_charge_model(event, bat, soc_of_full_battery); -} - - -bool get_pev_battery_info(vehicle_enum vehicle_type, battery_chemistry& bat_chem, double& battery_size_kWh, double& battery_size_with_stochastic_degredation_kWh) -{ - bool is_success = true; - - if(vehicle_type == ld_50kWh) - { - bat_chem = NMC; - battery_size_kWh = 50; - } - else if(vehicle_type == ld_100kWh) - { - bat_chem = NMC; - battery_size_kWh = 100; - } - else if(vehicle_type == md_200kWh) - { - bat_chem = NMC; - battery_size_kWh = 200; - } - else if(vehicle_type == hd_300kWh) - { - bat_chem = NMC; - battery_size_kWh = 300; - } - else if(vehicle_type == hd_400kWh) - { - bat_chem = NMC; - battery_size_kWh = 400; - } - else if(vehicle_type == hd_600kWh) - { - bat_chem = NMC; - battery_size_kWh = 600; - } - else if(vehicle_type == hd_800kWh) - { - bat_chem = NMC; - battery_size_kWh = 800; - } - else if(vehicle_type == hd_1000kWh) - { - bat_chem = NMC; - battery_size_kWh = 1000; - } - else - { - is_success = false; - std::cout << "WARNING: get_pev_battery_info is not defigned in the factory_EV_charge_model for EV_enum:" << vehicle_type << std::endl; - } - - //--------------------------- - - if(bat_chem == LTO) - battery_size_with_stochastic_degredation_kWh = rand_val::rand_range(0.95, 1.0) * battery_size_kWh; - - else if(bat_chem == LMO) - battery_size_with_stochastic_degredation_kWh = rand_val::rand_range(0.85, 1.0) * battery_size_kWh; - - else if(bat_chem == NMC) - battery_size_with_stochastic_degredation_kWh = rand_val::rand_range(0.90, 1.0) * battery_size_kWh; - - //--------------------------- - - return is_success; -} - - -//############################################################################# -// Supply Equipment Charge Model Factory -//############################################################################# - -factory_supply_equipment_model::factory_supply_equipment_model(charge_event_queuing_inputs& CE_queuing_inputs_) -{ - this->CE_queuing_inputs = CE_queuing_inputs_; -} - - -void factory_supply_equipment_model::get_supply_equipment_model(bool building_charge_profile_library, SE_configuration& SE_config, get_base_load_forecast* baseLD_forecaster, manage_L2_control_strategy_parameters* manage_L2_control, supply_equipment& return_val) -{ - double P2_limit_kW, standby_acP_kW, standby_acQ_kVAR; - - supply_equipment_enum SE_enum = SE_config.supply_equipment_type; - - standby_acP_kW = 0; - standby_acQ_kVAR = 0; - -/* - if(SE_enum == L1_1440) - { - P2_limit_kW = 1.289338; - } - else if(SE_enum == L2_3600) - { - P2_limit_kW = 3.30192; - } - else if(SE_enum == L2_7200) - { - P2_limit_kW = 6.624; - } - else if(SE_enum == L2_9600) - { - P2_limit_kW = 8.832; - } - else if(SE_enum == L2_11520) - { - P2_limit_kW = 10.5984; - } - else if(SE_enum == L2_17280) - { - P2_limit_kW = 15.8976; - } - else if(SE_enum == dcfc_50) - { - P2_limit_kW = 50; - standby_acP_kW = 0.100; - standby_acQ_kVAR = -0.590; - } - else if(SE_enum == xfc_150) - { - P2_limit_kW = 150; - standby_acP_kW = 0.170; - standby_acQ_kVAR = -0.445; - } - else if(SE_enum == xfc_350) - { - P2_limit_kW = 350; - standby_acP_kW = 0.170; - standby_acQ_kVAR = -0.445; - } - else - std::cout << "WARNING: get_supply_equipment_model is not defigned in the factory_supply_equipment_model for SE_enum:" << SE_enum << std::endl; -*/ - - standby_acP_kW = 0.2; - standby_acQ_kVAR = -0.03; - - if(SE_enum == L2_7200) - { - P2_limit_kW = 6.624; - standby_acP_kW = 0; - standby_acQ_kVAR = 0; - } - else if(SE_enum == L2_17280) - { - P2_limit_kW = 15.8976; - standby_acP_kW = 0; - standby_acQ_kVAR = 0; - } - else if(SE_enum == xfc_150) - { - P2_limit_kW = 150; - standby_acP_kW = 0.170; - standby_acQ_kVAR = -0.445; - } - else if(SE_enum == xfc_350) - { - P2_limit_kW = 350; - standby_acP_kW = 0.170; - standby_acQ_kVAR = -0.445; - } - else if(SE_enum == xfc_500kW) - { - P2_limit_kW = 500; - } - else if(SE_enum == xfc_1000kW) - { - P2_limit_kW = 1000; - } - else if(SE_enum == xfc_2000kW) - { - P2_limit_kW = 2000; - } - else if(SE_enum == xfc_3000kW) - { - P2_limit_kW = 3000; - } - else if(SE_enum == dwc_100kW) - { - P2_limit_kW = 100; - } - else - std::cout << "WARNING: get_supply_equipment_model is not defigned in the factory_supply_equipment_model for SE_enum:" << SE_enum << std::endl; - - //============================ - - supply_equipment_load load(P2_limit_kW, standby_acP_kW, standby_acQ_kVAR, SE_config, this->CE_queuing_inputs); - supply_equipment_control control(building_charge_profile_library, SE_config, baseLD_forecaster, manage_L2_control); - supply_equipment SE(SE_config, control, load); - - return_val = SE; -} - - -//############################################################################# -// AC to DC Converter Factory -//############################################################################# - -ac_to_dc_converter* factory_ac_to_dc_converter::alloc_get_ac_to_dc_converter(ac_to_dc_converter_enum converter_type, supply_equipment_enum SE_type, - vehicle_enum vehicle_type, charge_event_P3kW_limits& P3kW_limits) -{ - std::vector inv_eff_from_P2_vec; - std::vector inv_pf_from_P3_vec; - - //============================================================= - //============================================================= - - if(supply_equipment_is_L1(SE_type)) - { - // {x_LB, x_UB, degree, a, b, c, d, e} degree = {first, second, third, fourth} - inv_eff_from_P2_vec.clear(); - inv_eff_from_P2_vec.push_back({-20, 0, first, (1.1-1)/(-20-0), 1, 0, 0, 0}); - inv_eff_from_P2_vec.push_back({0, 1.4, second, -0.09399, 0.26151, 0.71348, 0, 0}); - inv_eff_from_P2_vec.push_back({1.4, 20, first, 0, 0.895374, 0, 0, 0}); - - inv_pf_from_P3_vec.clear(); - inv_pf_from_P3_vec.push_back({-20, 0, first, (-1+0.9)/(-20-0), -0.90, 0, 0, 0}); - inv_pf_from_P3_vec.push_back({0, 1.3, first, -0.0138, -0.9793, 0, 0, 0}); - inv_pf_from_P3_vec.push_back({1.3, 20, first, 0, -0.99724, 0, 0, 0}); - } - else if(supply_equipment_is_L2(SE_type)) - { - // {x_LB, x_UB, degree, a, b, c, d, e} degree = {first, second, third, fourth} - inv_eff_from_P2_vec.clear(); - inv_eff_from_P2_vec.push_back({-20, 0, first, (1.1-1)/(-20-0), 1, 0, 0, 0}); - inv_eff_from_P2_vec.push_back({0, 4, second, -0.005, 0.045, 0.82, 0, 0}); - inv_eff_from_P2_vec.push_back({4, 20, first, 0, 0.92, 0, 0, 0}); - - inv_pf_from_P3_vec.clear(); - inv_pf_from_P3_vec.push_back({-20, 0, first, (-1+0.9)/(-20-0), -0.90, 0, 0, 0}); - inv_pf_from_P3_vec.push_back({0, 6, third, -0.00038737, 0.00591216, -0.03029164, -0.9462841, 0}); - inv_pf_from_P3_vec.push_back({6, 20, first, 0, -0.9988681, 0, 0, 0}); - } - else if(SE_type == xfc_150 || SE_type == xfc_350) - { - // {x_LB, x_UB, degree, a, b, c, d, e} degree = {first, second, third, fourth} - inv_eff_from_P2_vec.clear(); - inv_eff_from_P2_vec.push_back({-1000, 0, first, (1.1-1)/1000, 1, 0, 0, 0}); - inv_eff_from_P2_vec.push_back({0, 25, second, -0.0007134, 0.03554, 0.4724, 0, 0}); - inv_eff_from_P2_vec.push_back({25, 130, first, 0.0003331, 0.9067, 0, 0, 0}); - inv_eff_from_P2_vec.push_back({130, 1000, first, 0, 0.95, 0, 0, 0}); - - // {x_LB, x_UB, degree, a, b, c, d, e} degree = {first, second, third, fourth} - inv_pf_from_P3_vec.clear(); - inv_pf_from_P3_vec.push_back({-1000, 0, first, (0.9-1)/1000, 0.90, 0, 0, 0}); - inv_pf_from_P3_vec.push_back({0, 60, third, -0.0000053284, 0.00071628, -0.03361, -0.3506, 0}); - inv_pf_from_P3_vec.push_back({60, 80, first, -0.001034, -0.8775, 0, 0, 0}); - inv_pf_from_P3_vec.push_back({80, 133, second, 0.0000027985, -0.0008177, -0.9127, 0, 0}); - inv_pf_from_P3_vec.push_back({133, 1000, first, 0, -0.972, 0, 0, 0}); - } - else if(SE_type == xfc_500kW) - { - // {x_LB, x_UB, degree, a, b, c, d, e} degree = {first, second, third, fourth} - inv_eff_from_P2_vec.clear(); - inv_eff_from_P2_vec.push_back({-1000, 0, first, (1.1-1)/1000, 1, 0, 0, 0}); - inv_eff_from_P2_vec.push_back({0, 9.9509951, fourth, -5.32294E-05, 0.00161341, -0.020375254, 0.153430262, 0.1}); - inv_eff_from_P2_vec.push_back({9.9509951, 49.9549955, fourth, -1.41183E-07, 2.19219E-05, -0.001317196, 0.038812335, 0.40120321}); - inv_eff_from_P2_vec.push_back({49.9549955, 124.9624962, fourth, -8.95362E-10, 3.96468E-07, -6.90956E-05, 0.005879087, 0.741555738}); - inv_eff_from_P2_vec.push_back({124.9624962, 500, fourth, -2.58346E-12, 4.05019E-09, -2.42506E-06, 0.000615186, 0.906293666}); - inv_eff_from_P2_vec.push_back({500, 1000, first, 0, 0.952430816, 0, 0, 0}); - - // {x_LB, x_UB, degree, a, b, c, d, e} degree = {first, second, third, fourth} - inv_pf_from_P3_vec.clear(); - inv_pf_from_P3_vec.push_back({-1000, 0, first, (0.9-1)/1000, 0.90, 0, 0, 0}); - inv_pf_from_P3_vec.push_back({0, 9.9509951, fourth, 3.30449E-08, -1.64406E-06, 4.81836E-05, -0.001229586, -0.96}); - inv_pf_from_P3_vec.push_back({9.9509951, 49.9549955, fourth, 1.83122E-09, -3.19941E-07, 2.3503E-05, -0.000997071, -0.960868555}); - inv_pf_from_P3_vec.push_back({49.9549955, 124.9624962, fourth, 4.9509E-11, -2.28852E-08, 4.27128E-06, -0.000415058, -0.967886798}); - inv_pf_from_P3_vec.push_back({124.9624962, 500, fourth, 2.75481E-13, -4.37287E-10, 2.67801E-07, -7.93935E-05, -0.979114283}); - inv_pf_from_P3_vec.push_back({500, 1000, first, 0, -0.989303981, 0, 0, 0}); - } - else if(SE_type == xfc_1000kW) - { - // {x_LB, x_UB, degree, a, b, c, d, e} degree = {first, second, third, fourth} - inv_eff_from_P2_vec.clear(); - inv_eff_from_P2_vec.push_back({-1000, 0, first, (1.1-1)/1000, 1, 0, 0, 0}); - inv_eff_from_P2_vec.push_back({0, 3.300330033, fourth, -3.07232E-05, 0.000587331, -0.007217139, 0.080972819, 0.1}); - inv_eff_from_P2_vec.push_back({3.300330033, 19.9019902, fourth, -1.99155E-06, 0.000137261, -0.004017833, 0.069501611, 0.115784348}); - inv_eff_from_P2_vec.push_back({19.9019902, 99.909991, fourth, -8.82395E-09, 2.74024E-06, -0.000329299, 0.019406168, 0.40120321}); - inv_eff_from_P2_vec.push_back({99.909991, 1000, fourth, -6.01897E-13, 1.66165E-09, -1.68483E-06, 0.000728381, 0.84911447}); - inv_eff_from_P2_vec.push_back({1000, 10000, first, 0, 0.952427626, 0, 0, 0}); - - // {x_LB, x_UB, degree, a, b, c, d, e} degree = {first, second, third, fourth} - inv_pf_from_P3_vec.clear(); - inv_pf_from_P3_vec.push_back({-1000, 0, first, (0.9-1)/1000, 0.90, 0, 0, 0}); - inv_pf_from_P3_vec.push_back({0, 19.9019902, fourth, 2.0653E-09, -2.05508E-07, 1.20459E-05, -0.000614793, -0.96}); - inv_pf_from_P3_vec.push_back({19.9019902, 99.909991, fourth, 1.14451E-10, -3.99927E-08, 5.87574E-06, -0.000498536, -0.960868555}); - inv_pf_from_P3_vec.push_back({99.909991, 249.9249925, fourth, 3.09432E-12, -2.86066E-09, 1.06782E-06, -0.000207529, -0.967886798}); - inv_pf_from_P3_vec.push_back({249.9249925, 1000, fourth, 1.72176E-14, -5.46609E-11, 6.69504E-08, -3.96968E-05, -0.979114283}); - inv_pf_from_P3_vec.push_back({1000, 10000, first, 0, -0.989303981, 0, 0, 0}); - } - else if(SE_type == xfc_2000kW) - { - // {x_LB, x_UB, degree, a, b, c, d, e} degree = {first, second, third, fourth} - inv_eff_from_P2_vec.clear(); - inv_eff_from_P2_vec.push_back({-1000, 0, first, (1.1-1)/1000, 1, 0, 0, 0}); - inv_eff_from_P2_vec.push_back({0, 6.600660066, fourth, -1.9202E-06, 7.34164E-05, -0.001804285, 0.04048641, 0.1}); - inv_eff_from_P2_vec.push_back({6.600660066, 39.8039804, fourth, -1.24472E-07, 1.71577E-05, -0.001004458, 0.034750806, 0.115784348}); - inv_eff_from_P2_vec.push_back({39.8039804, 199.819982, fourth, -5.51497E-10, 3.4253E-07, -8.23247E-05, 0.009703084, 0.40120321}); - inv_eff_from_P2_vec.push_back({199.819982, 2000, fourth, -3.76186E-14, 2.07707E-10, -4.21206E-07, 0.00036419, 0.84911447}); - inv_eff_from_P2_vec.push_back({2000, 10000, first, 0, 0.952427626, 0, 0, 0}); - - // {x_LB, x_UB, degree, a, b, c, d, e} degree = {first, second, third, fourth} - inv_pf_from_P3_vec.clear(); - inv_pf_from_P3_vec.push_back({-1000, 0, first, (0.9-1)/1000, 0.90, 0, 0, 0}); - inv_pf_from_P3_vec.push_back({0, 39.8039804, fourth, 1.29082E-10, -2.56885E-08, 3.01148E-06, -0.000307397, -0.96}); - inv_pf_from_P3_vec.push_back({39.8039804, 199.819982, fourth, 7.1532E-12, -4.99908E-09, 1.46893E-06, -0.000249268, -0.960868555}); - inv_pf_from_P3_vec.push_back({199.819982, 499.849985, fourth, 1.93395E-13, -3.57582E-10, 2.66955E-07, -0.000103765, -0.967886798}); - inv_pf_from_P3_vec.push_back({499.849985, 2000, fourth, 1.0761E-15, -6.83261E-12, 1.67376E-08, -1.98484E-05, -0.979114283}); - inv_pf_from_P3_vec.push_back({2000, 10000, first, 0, -0.989303981, 0, 0, 0}); - } - else if(SE_type == xfc_3000kW) - { - inv_eff_from_P2_vec.clear(); - inv_eff_from_P2_vec.push_back({-1000, 0, first, (1.1-1)/1000, 1, 0, 0, 0}); - inv_eff_from_P2_vec.push_back({0, 9.900990099, fourth, -3.79299E-07, 2.1753E-05, -0.000801904, 0.02699094, 0.1}); - inv_eff_from_P2_vec.push_back({9.900990099, 59.7059706, fourth, -2.45871E-08, 5.08376E-06, -0.000446426, 0.023167204, 0.115784348}); - inv_eff_from_P2_vec.push_back({59.7059706, 299.729973, fourth, -1.08938E-10, 1.0149E-07, -3.65888E-05, 0.006468723, 0.40120321}); - inv_eff_from_P2_vec.push_back({299.729973, 3000, fourth, -7.43083E-15, 6.15428E-11, -1.87203E-07, 0.000242794, 0.84911447}); - inv_eff_from_P2_vec.push_back({3000, 10000, first, 0, 0.952427626, 0, 0, 0}); - - // {x_LB, x_UB, degree, a, b, c, d, e} degree = {first, second, third, fourth} - inv_pf_from_P3_vec.clear(); - inv_pf_from_P3_vec.push_back({-1000, 0, first, (0.9-1)/1000, 0.90, 0, 0, 0}); - inv_pf_from_P3_vec.push_back({0, 59.7059706, fourth, 2.54976E-11, -7.61141E-09, 1.33843E-06, -0.000204931, -0.96}); - inv_pf_from_P3_vec.push_back({59.7059706, 299.729973, fourth, 1.41298E-12, -1.48121E-09, 6.5286E-07, -0.000166179, -0.960868555}); - inv_pf_from_P3_vec.push_back({299.729973, 749.7749775, fourth, 3.82014E-14, -1.0595E-10, 1.18647E-07, -6.91763E-05, -0.967886798}); - inv_pf_from_P3_vec.push_back({749.7749775, 3000, fourth, 2.12563E-16, -2.02448E-12, 7.43893E-09, -1.32323E-05, -0.979114283}); - inv_pf_from_P3_vec.push_back({3000, 10000, first, 0, -0.989303981, 0, 0, 0}); - } - else if(SE_type == dwc_100kW) - { - inv_eff_from_P2_vec.clear(); - inv_eff_from_P2_vec.push_back({-1000, 0, first, (1.1-1)/1000, 1, 0, 0, 0}); - inv_eff_from_P2_vec.push_back({0, 1.99019902, fourth, -0.033268387, 0.201676303, -0.509381357, 0.767151308, 0.1}); - inv_eff_from_P2_vec.push_back({1.99019902, 9.9909991, fourth, -8.82395E-05, 0.002740242, -0.032929897, 0.194061675, 0.40120321}); - inv_eff_from_P2_vec.push_back({9.9909991, 24.99249925, fourth, -5.59602E-07, 4.95584E-05, -0.001727389, 0.029395433, 0.741555738}); - inv_eff_from_P2_vec.push_back({24.99249925, 100, fourth, -1.61466E-09, 5.06274E-07, -6.06264E-05, 0.003075932, 0.906293666}); - inv_eff_from_P2_vec.push_back({100, 1000, first, 0, 0.952430816, 0, 0, 0}); - - // {x_LB, x_UB, degree, a, b, c, d, e} degree = {first, second, third, fourth} - inv_pf_from_P3_vec.clear(); - inv_pf_from_P3_vec.push_back({-1000, 0, first, (0.9-1)/1000, 0.90, 0, 0, 0}); - inv_pf_from_P3_vec.push_back({0, 1.99019902, fourth, 2.0653E-05, -0.000205508, 0.00120459, -0.006147932, -0.96}); - inv_pf_from_P3_vec.push_back({1.99019902, 9.9909991, fourth, 1.14451E-06, -3.99927E-05, 0.000587574, -0.004985356, -0.960868555}); - inv_pf_from_P3_vec.push_back({9.9909991, 24.99249925, fourth, 3.09432E-08, -2.86066E-06, 0.000106782, -0.00207529, -0.967886798}); - inv_pf_from_P3_vec.push_back({24.99249925, 100, fourth, 1.72176E-10, -5.46609E-08, 6.69504E-06, -0.000396968, -0.979114283}); - inv_pf_from_P3_vec.push_back({100, 1000, first, 0, -0.989303981, 0, 0, 0}); - } - else - std::cout << "WARNING: get_supply_equipment_model is not defigned in the factory_supply_equipment_model for SE_enum:" << SE_type << std::endl; - - //------------------------------------ - - double S3kVA_from_max_nominal_P3kW_multiplier = 1; - - double x_tolerance = 0.0001; - bool take_abs_of_x = false; - bool if_x_is_out_of_bounds_print_warning_message = false; - - poly_function_of_x inv_eff_from_P2(x_tolerance, take_abs_of_x, if_x_is_out_of_bounds_print_warning_message, inv_eff_from_P2_vec, "inv_eff_from_P2"); - poly_function_of_x inv_pf_from_P3(x_tolerance, take_abs_of_x, if_x_is_out_of_bounds_print_warning_message, inv_pf_from_P3_vec, "inv_pf_from_P3"); - - ac_to_dc_converter* return_val = NULL; - - if(converter_type == pf) - return_val = new ac_to_dc_converter_pf(P3kW_limits, S3kVA_from_max_nominal_P3kW_multiplier, inv_eff_from_P2, inv_pf_from_P3); - - else if(converter_type == Q_setpoint) - return_val = new ac_to_dc_converter_Q_setpoint(P3kW_limits, S3kVA_from_max_nominal_P3kW_multiplier, inv_eff_from_P2); - - else - { - std::cout << "ERROR: In factory_ac_to_dc_converter undefigned converter_type." << std::endl; - return_val = new ac_to_dc_converter_pf(P3kW_limits, S3kVA_from_max_nominal_P3kW_multiplier, inv_eff_from_P2, inv_pf_from_P3); - } - - return return_val; -} - - -//############################################################################# -// Read Input Data Files -//############################################################################# -/* -//================================== -// charge_events_file_factory -//================================== - -charge_events_file_factory::~charge_events_file_factory() {} - -int charge_events_file_factory::number_of_lines_to_skip_at_beginning_of_file() {return 1;} - -int charge_events_file_factory::number_of_fields() {return 10;} - - -void charge_events_file_factory::parse_line(const std::string& line, bool& parse_successful, charge_event_data& event_data) -{ - parse_successful = true; - - const char delim = ','; - std::vector tokens = split(line, delim); - - if(tokens.size() != this->number_of_fields()) - { - parse_successful = false; - return; - } - - //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - try - { - event_data.charge_event_id = std::stoi(tokens[0]); - event_data.supply_equipment_id = std::stoi(tokens[1]); - event_data.vehicle_id = std::stoi(tokens[2]); - event_data.arrival_unix_time = 3600*std::stod(tokens[4]); - event_data.departure_unix_time = 3600*std::stod(tokens[6]); - event_data.arrival_SOC = 100*std::stod(tokens[8]); - event_data.departure_SOC = 100*std::stod(tokens[9]); - } - catch(const std::invalid_argument& ia) - { - parse_successful = false; - return; - } - catch(const std::out_of_range& ia) - { - parse_successful = false; - return; - } - - event_data.vehicle_type = get_vehicle_enum(tokens[3], parse_successful); - - if(!parse_successful) - return; - - //--------------------------------- - - stop_charging_criteria_csv_file_enum csv_file_criteria_enum = first_event; //get_stop_charging_criteria_csv_file_enum(tokens[8], parse_successful); - - if(!parse_successful) - return; - - stop_charging_criteria criteria; - criteria.soc_mode = target_charging; - criteria.depart_time_mode = block_charging; - criteria.soc_block_charging_max_undershoot_percent = 50; // Not used here, only used when criteria.soc_mode = block_charging - criteria.depart_time_block_charging_max_undershoot_percent = 40; - - if(csv_file_criteria_enum == soc) - criteria.decision_metric = stop_charging_using_target_soc; - - else if(csv_file_criteria_enum == depart_time) - criteria.decision_metric = stop_charging_using_depart_time; - - else if(csv_file_criteria_enum == first_event) - criteria.decision_metric = stop_charging_using_whatever_happens_first; - - event_data.stop_charge = criteria; -} - - -//================================== -// supply_equipment_info_file_factory -//================================== - -supply_equipment_info_file_factory::~supply_equipment_info_file_factory() {} - -int supply_equipment_info_file_factory::number_of_lines_to_skip_at_beginning_of_file() {return 1;} - -int supply_equipment_info_file_factory::number_of_fields() {return 5;} - - -void supply_equipment_info_file_factory::parse_line(const std::string& line, bool& parse_successful, supply_equipment_data& SE_data) -{ - const char delim = ','; - std::vector tokens = split(line, delim); - - if(tokens.size() != this->number_of_fields()) - { - parse_successful = false; - return; - } - - //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - try - { - SE_data.supply_equipment_id = std::stoi(tokens[0]); - SE_data.latitude = std::stod(tokens[3]); - SE_data.longitude = std::stod(tokens[2]); - SE_data.node_id = std::stoi(tokens[4]); - } - catch(const std::invalid_argument& ia) - { - parse_successful = false; - return; - } - catch(const std::out_of_range& ia) - { - parse_successful = false; - return; - } - - SE_data.supply_equipment_type = get_supply_equipment_enum(tokens[1], parse_successful); -} -*/ - diff --git a/source/charging_models/EVs_at_Risk/SE_EV_factory.h b/source/charging_models/EVs_at_Risk/SE_EV_factory.h deleted file mode 100644 index 8ff67a1..0000000 --- a/source/charging_models/EVs_at_Risk/SE_EV_factory.h +++ /dev/null @@ -1,158 +0,0 @@ - -#ifndef inl_Factory_SE_EV_H -#define inl_Factory_SE_EV_H - -//==================================================================================================================== -// ################################################################################################################### -//-------------------------------------------------------------------------------------------------------------------- -// EVs-At-Risk Project -//-------------------------------------------------------------------------------------------------------------------- -// ################################################################################################################### -//==================================================================================================================== - -#include "datatypes_global.h" // SE_configuration, pev_charge_fragment, pev_charge_fragment_removal_criteria -#include "datatypes_global_SE_EV_definitions.h" // supply_equipment_enum, vehicle_enum, pev_SE_pair -#include "datatypes_module.h" // charge_event_P3kW_limits, SE_status, CE_Status -#include "vehicle_charge_model.h" // vehicle_charge_model, charge_event_data -#include "supply_equipment_load.h" // supply_equipment_load -#include "supply_equipment_control.h" // supply_equipment_control -#include "supply_equipment.h" // supply_equipment -#include "ac_to_dc_converter.h" // ac_to_dc_converter - - -#include - -class integrate_X_through_time; // Included in cpp file: #include battery_integrate_X_in_time.h - - -enum battery_chemistry -{ - LMO = 0, - LTO = 1, - NMC = 2 -}; - - -void get_bat_eff_vs_P2(bool is_charging_not_discharging, battery_chemistry bat_chem, double battery_size_kWh, double& zero_slope_threashold_bat_eff_vs_P2, line_segment& bat_eff_vs_P2); -bool get_pev_battery_info(vehicle_enum vehicle_type, battery_chemistry& bat_chem, double& battery_size_kWh, double& battery_size_with_stochastic_degredation_kWh); - - -//############################################################################# -// EV Charge Model Factory -//############################################################################# - - -class factory_EV_charge_model -{ -private: - struct point_P2_vs_puVrms - { - double puVrms; - double P2_val; - - bool operator<(const point_P2_vs_puVrms& rhs) const - { - return (this->puVrms < rhs.puVrms); - } - - bool operator<(point_P2_vs_puVrms& rhs) const - { - return (this->puVrms < rhs.puVrms); - } - }; - - bool model_stochastic_battery_degregation; - - std::map ramping_by_pevType_only; - std::map< std::tuple, pev_charge_ramping> ramping_by_pevType_seType; - - void get_integrate_X_through_time_obj(vehicle_enum vehicle_type, supply_equipment_enum supply_equipment_type, integrate_X_through_time& return_val); - void get_P2_vs_puVrms(bool is_charging_not_discharging, vehicle_enum vehicle_type, supply_equipment_enum supply_equipment_type, double SE_P2_limit_atNominalV_kW, poly_function_of_x& P2_vs_puVrms); - void get_P2_vs_soc(bool is_charging_not_discharging, vehicle_enum vehicle_type, supply_equipment_enum supply_equipment_type, double& zero_slope_threashold_P2_vs_soc, std::vector& P2_vs_soc_segments); - void get_E1_Energy_limit(bool is_charging_not_discharging, bool are_battery_losses, vehicle_enum vehicle_type, supply_equipment_enum supply_equipment_type, - double battery_size_with_degredation_kWh, double SE_P2_limit_atNominalV_kW, double recalc_exponent_threashold, - double max_P2kW_error_before_reappling_P2kW_limit_to_P2_vs_soc_segments, line_segment& bat_eff_vs_P2, - calculate_E1_energy_limit& return_val); -public: - factory_EV_charge_model(); - void initialize_custome_parameters(std::map ramping_by_pevType_only_, std::map< std::tuple, pev_charge_ramping> ramping_by_pevType_seType_); - void set_bool_model_stochastic_battery_degregation(bool model_stochastic_battery_degregation_); - vehicle_charge_model* alloc_get_EV_charge_model(const charge_event_data& event, supply_equipment_enum supply_equipment_type, double SE_P2_limit_kW); -}; - - -//############################################################################# -// Supply Equipment Charge Model Factory -//############################################################################# - -class factory_supply_equipment_model -{ -private: - charge_event_queuing_inputs CE_queuing_inputs; - -public: - factory_supply_equipment_model() {}; - factory_supply_equipment_model(charge_event_queuing_inputs& CE_queuing_inputs_); - - void get_supply_equipment_model(bool building_charge_profile_library, SE_configuration& SE_config, get_base_load_forecast* baseLD_forecaster, manage_L2_control_strategy_parameters* manage_L2_control, supply_equipment& return_val); -}; - -//############################################################################# -// AC to DC Converter Factory -//############################################################################# - -class factory_ac_to_dc_converter -{ -private: - -public: - factory_ac_to_dc_converter() {}; - ac_to_dc_converter* alloc_get_ac_to_dc_converter(ac_to_dc_converter_enum converter_type, supply_equipment_enum SE_type, vehicle_enum vehicle_type, charge_event_P3kW_limits& CE_P3kW_limits); -}; - - -//############################################################################# -// Read Input Data Files -//############################################################################# - -/* -//#include "read_csv_files.h" // charge_events_file, supply_equipment_info_file - -class charge_events_file_factory : public charge_events_file -{ -private: - int num_lines_to_skip_at_beginning_of_file; - charge_events_file_factory(const charge_events_file_factory& obj) = default; - charge_events_file_factory& operator=(const charge_events_file_factory& obj) = default; - -protected: - virtual void parse_line(const std::string& line, bool& parse_successful, charge_event_data& event_data) override final; - virtual int number_of_lines_to_skip_at_beginning_of_file() override final; - virtual int number_of_fields() override final; - -public: - charge_events_file_factory() {}; - virtual ~charge_events_file_factory() override final; -}; - - - -class supply_equipment_info_file_factory : public supply_equipment_info_file -{ -private: - supply_equipment_info_file_factory(const supply_equipment_info_file_factory& obj) = default; - supply_equipment_info_file_factory& operator=(const supply_equipment_info_file_factory& obj) = default; - -protected: - virtual void parse_line(const std::string& line, bool& parse_successful, supply_equipment_data& SE_data) override final; - virtual int number_of_lines_to_skip_at_beginning_of_file() override final; - virtual int number_of_fields() override final; -public: - supply_equipment_info_file_factory() {}; - virtual ~supply_equipment_info_file_factory(); -}; -*/ - -#endif - - diff --git a/source/charging_models/EVs_at_Risk/datatypes_global_SE_EV_definitions.cpp b/source/charging_models/EVs_at_Risk/datatypes_global_SE_EV_definitions.cpp deleted file mode 100644 index 2801e7e..0000000 --- a/source/charging_models/EVs_at_Risk/datatypes_global_SE_EV_definitions.cpp +++ /dev/null @@ -1,257 +0,0 @@ - -//==================================================================================================================== -// ################################################################################################################### -//-------------------------------------------------------------------------------------------------------------------- -// EVs-At-Risk Project -//-------------------------------------------------------------------------------------------------------------------- -// ################################################################################################################### -//==================================================================================================================== - - -#include "datatypes_global_SE_EV_definitions.h" - - -//================================== -// Supply Equipment Enum -//================================== - - -bool supply_equipment_is_L1(supply_equipment_enum SE_enum) -{ - return false; - /* - if(SE_enum == L1_1440) - return true; - else - return false; - */ -} - - -bool supply_equipment_is_L2(supply_equipment_enum SE_enum) -{ - if(SE_enum == L2_7200 || SE_enum == L2_17280) - return true; - else - return false; -} - - -bool supply_equipment_is_50kW_dcfc(supply_equipment_enum SE_enum) -{ - return false; - /* - if(SE_enum == dcfc_50) - return true; - else - return false; - */ -} - - -bool supply_equipment_is_3phase(supply_equipment_enum SE_enum) -{ - if(supply_equipment_is_L1(SE_enum) || supply_equipment_is_L2(SE_enum)) - return false; - else - return true; -} - - -bool is_XFC_charge(vehicle_enum PEV_enum, supply_equipment_enum SE_enum) -{ - std::vector SE_enum_vec = {xfc_150, xfc_350, xfc_500kW, xfc_1000kW, xfc_2000kW, xfc_3000kW, dwc_100kW}; - std::vector PEV_enum_vec = {ld_50kWh, ld_100kWh, md_200kWh, hd_300kWh, hd_400kWh, hd_600kWh, hd_800kWh, hd_1000kWh}; - - bool SE_is_XFC_capable = false; - for(supply_equipment_enum x : SE_enum_vec) - { - if(x == SE_enum) - { - SE_is_XFC_capable = true; - break; - } - } - - bool PEV_is_XFC_capable = false; - for(vehicle_enum x : PEV_enum_vec) - { - if(x == PEV_enum) - { - PEV_is_XFC_capable = true; - break; - } - } - - return SE_is_XFC_capable && PEV_is_XFC_capable; -} - - -std::pair get_supply_equipment_enum(const std::string str_val) -{ - bool conversion_successfull = true; - supply_equipment_enum SE_enum; - - std::string tmp_str = ""; - - // ignores whitespace - for (int i = 0; i < str_val.length(); i++) - if (!std::isspace(str_val[i])) - tmp_str += str_val[i]; - - if (tmp_str == "L2_7200") SE_enum = L2_7200; - else if (tmp_str == "L2_17280") SE_enum = L2_17280; - else if (tmp_str == "xfc_150") SE_enum = xfc_150; - else if (tmp_str == "xfc_350") SE_enum = xfc_350; - else if (tmp_str == "xfc_500kW") SE_enum = xfc_500kW; - else if (tmp_str == "xfc_1000kW") SE_enum = xfc_1000kW; - else if (tmp_str == "xfc_2000kW") SE_enum = xfc_2000kW; - else if (tmp_str == "xfc_3000kW") SE_enum = xfc_3000kW; - else if (tmp_str == "dwc_100kW") SE_enum = dwc_100kW; - else - { - conversion_successfull = false; - SE_enum = xfc_500kW; - } - - std::pair return_val = {conversion_successfull, SE_enum}; - - return return_val; -} - - -std::ostream& operator<<(std::ostream& out, const supply_equipment_enum& x) -{ - if(x == L2_7200) out << "L2_7200"; - else if(x == L2_17280) out << "L2_17280"; - else if(x == xfc_150) out << "xfc_150"; - else if(x == xfc_350) out << "xfc_350"; - else if(x == xfc_500kW) out << "xfc_500kW"; - else if(x == xfc_1000kW) out << "xfc_1000kW"; - else if(x == xfc_2000kW) out << "xfc_2000kW"; - else if(x == xfc_3000kW) out << "xfc_3000kW"; - else if(x == dwc_100kW) out << "dwc_100kW"; - - return out; -} - - -std::vector get_all_SE_enums() -{ - std::vector return_val = {L2_7200, L2_17280, xfc_150, xfc_350, xfc_500kW, xfc_1000kW, xfc_2000kW, xfc_3000kW, dwc_100kW}; - - return return_val; -} - - -supply_equipment_enum get_default_supply_equipment_enum() -{ - return xfc_500kW; -} - -//================================== -// Vehicle Enum -//================================== - - -std::pair get_vehicle_enum(const std::string str_val) -{ - bool conversion_successfull = true; - vehicle_enum pev_enum; - - std::string tmp_str = ""; - - // ignores whitespace - for (int i = 0; i < str_val.length(); i++) - if (!std::isspace(str_val[i])) - tmp_str += str_val[i]; - - // Recharge - if (tmp_str == "ld_50kWh") pev_enum = ld_50kWh; - else if (tmp_str == "ld_100kWh") pev_enum = ld_100kWh; - else if (tmp_str == "md_200kWh") pev_enum = md_200kWh; - else if (tmp_str == "hd_300kWh") pev_enum = hd_300kWh; - else if (tmp_str == "hd_400kWh") pev_enum = hd_400kWh; - else if (tmp_str == "hd_600kWh") pev_enum = hd_600kWh; - else if (tmp_str == "hd_800kWh") pev_enum = hd_800kWh; - else if (tmp_str == "hd_1000kWh") pev_enum = hd_1000kWh; - else - { - conversion_successfull = false; - pev_enum = ld_50kWh; - } - - std::pair return_val = {conversion_successfull, pev_enum}; - - return return_val; -} - - -std::ostream& operator<<(std::ostream& out, const vehicle_enum& x) -{ - if(x == ld_50kWh) out << "ld_50kWh"; - else if(x == ld_100kWh) out << "ld_100kWh"; - else if(x == md_200kWh) out << "md_200kWh"; - else if(x == hd_300kWh) out << "hd_300kWh"; - else if(x == hd_400kWh) out << "hd_400kWh"; - else if(x == hd_600kWh) out << "hd_600kWh"; - else if(x == hd_800kWh) out << "hd_800kWh"; - else if(x == hd_1000kWh) out << "hd_1000kWh"; - - return out; -} - - -std::vector get_all_pev_enums() -{ - std::vector return_val = {ld_50kWh, ld_100kWh, md_200kWh, hd_300kWh, hd_400kWh, hd_600kWh, hd_800kWh, hd_1000kWh}; - - return return_val; -} - - -vehicle_enum get_default_vehicle_enum() -{ - return ld_50kWh; -} - - -//========================================== -// PEV is Compatible with Supply Equipment -//========================================== - -bool pev_is_compatible_with_supply_equipment(vehicle_enum EV_type, supply_equipment_enum SE_type) -{ - return true; - - /* - if( (EV_type == phev20 || EV_type == phev50 || EV_type == phev_SUV) && (SE_type == dcfc_50 || SE_type == xfc_150 || SE_type == xfc_350) ) - return false; - //else if( (SE_type == dcfc_50) && (EV_type == bev275_ld1_150kW || EV_type == bev200_ld4_150kW || EV_type == bev250_ld2_300kW || EV_type == bev250_400kW || EV_type == bev300_575kW || EV_type == bev300_400kW || EV_type == bev250_350kW || EV_type == bev300_300kW || EV_type == bev150_150kW) ) - // return false; - else - return true; - */ -} - - -std::vector get_all_compatible_pev_SE_combinations() -{ - std::vector pev_types = get_all_pev_enums(); - std::vector SE_types = get_all_SE_enums(); - - std::vector return_val; - - for(vehicle_enum pev_type : pev_types) - { - for(supply_equipment_enum SE_type : SE_types) - { - if(pev_is_compatible_with_supply_equipment(pev_type, SE_type)) - return_val.push_back({pev_type, SE_type}); - } - } - - return return_val; -} - - diff --git a/source/charging_models/EVs_at_Risk/datatypes_global_SE_EV_definitions.h b/source/charging_models/EVs_at_Risk/datatypes_global_SE_EV_definitions.h deleted file mode 100644 index 1860693..0000000 --- a/source/charging_models/EVs_at_Risk/datatypes_global_SE_EV_definitions.h +++ /dev/null @@ -1,72 +0,0 @@ - -#ifndef inl_datatypes_global_SE_EV_DEFINITIONS_H -#define inl_datatypes_global_SE_EV_DEFINITIONS_H - -//==================================================================================================================== -// ################################################################################################################### -//-------------------------------------------------------------------------------------------------------------------- -// EVs-At-Risk Project -//-------------------------------------------------------------------------------------------------------------------- -// ################################################################################################################### -//==================================================================================================================== - -#include -#include -#include // isspace -#include - -enum supply_equipment_enum -{ - L2_7200 = 0, - L2_17280 = 1, - xfc_150 = 2, - xfc_350 = 3, - xfc_500kW = 4, - xfc_1000kW = 5, - xfc_2000kW = 6, - xfc_3000kW = 7, - dwc_100kW = 8 -}; -std::ostream& operator<<(std::ostream& out, const supply_equipment_enum& x); -std::pair get_supply_equipment_enum(const std::string str_val); -bool supply_equipment_is_L1(supply_equipment_enum SE_enum); -bool supply_equipment_is_L2(supply_equipment_enum SE_enum); -bool supply_equipment_is_50kW_dcfc(supply_equipment_enum SE_enum); -bool supply_equipment_is_3phase(supply_equipment_enum SE_enum); -std::vector get_all_SE_enums(); -supply_equipment_enum get_default_supply_equipment_enum(); - -//--------------------------------------------- - -enum vehicle_enum -{ - ld_50kWh = 0, - ld_100kWh = 1, - md_200kWh = 2, - hd_300kWh = 3, - hd_400kWh = 4, - hd_600kWh = 5, - hd_800kWh = 6, - hd_1000kWh = 7 -}; -std::ostream& operator<<(std::ostream& out, const vehicle_enum& x); -std::pair get_vehicle_enum(const std::string str_val); -std::vector get_all_pev_enums(); -vehicle_enum get_default_vehicle_enum(); - -bool is_XFC_charge(vehicle_enum PEV_enum, supply_equipment_enum SE_enum); - -//--------------------------------------------- - -struct pev_SE_pair -{ - vehicle_enum EV_type; - supply_equipment_enum SE_type; -}; - -bool pev_is_compatible_with_supply_equipment(vehicle_enum EV_type, supply_equipment_enum SE_type); -std::vector get_all_compatible_pev_SE_combinations(); - - -#endif - diff --git a/source/charging_models/EVs_at_Risk/python_bind.cpp b/source/charging_models/EVs_at_Risk/python_bind.cpp deleted file mode 100644 index 6ada3b6..0000000 --- a/source/charging_models/EVs_at_Risk/python_bind.cpp +++ /dev/null @@ -1,1183 +0,0 @@ - -//==================================================================================================================== -// ################################################################################################################### -//-------------------------------------------------------------------------------------------------------------------- -// EVs-At-Risk Project -//-------------------------------------------------------------------------------------------------------------------- -// ################################################################################################################### -//==================================================================================================================== - - -#include "datatypes_global.h" -#include "datatypes_global_SE_EV_definitions.h" - -#include -#include - -// delete when done adding pickling functionality -#include -#include - -namespace py = pybind11; - - -PYBIND11_MODULE(Caldera_global, m) -{ - //--------------------------------- - // Functions - //--------------------------------- - m.def("get_supply_equipment_enum", &get_supply_equipment_enum); - m.def("get_vehicle_enum", &get_vehicle_enum); - m.def("supply_equipment_is_L1", &supply_equipment_is_L1); - m.def("supply_equipment_is_L2", &supply_equipment_is_L2); - m.def("supply_equipment_is_50kW_dcfc", &supply_equipment_is_50kW_dcfc); - m.def("supply_equipment_is_3phase", &supply_equipment_is_3phase); - m.def("is_XFC_charge", &is_XFC_charge); - m.def("pev_is_compatible_with_supply_equipment", &pev_is_compatible_with_supply_equipment); - m.def("get_all_SE_enums", &get_all_SE_enums); - m.def("get_all_pev_enums", &get_all_pev_enums); - m.def("get_all_compatible_pev_SE_combinations", &get_all_compatible_pev_SE_combinations); - m.def("get_default_supply_equipment_enum", &get_default_supply_equipment_enum); - m.def("get_default_vehicle_enum", &get_default_vehicle_enum); - - m.def("get_LPF_window_enum", &get_LPF_window_enum); - m.def("L2_control_strategy_supports_Vrms_using_QkVAR", &L2_control_strategy_supports_Vrms_using_QkVAR); - m.def("get_L2_control_strategies_enum", &get_L2_control_strategies_enum); - m.def("is_L2_ES_control_strategy", &is_L2_ES_control_strategy); - m.def("is_L2_VS_control_strategy", &is_L2_VS_control_strategy); - - //--------------------------------- - // PEV and SE Enums - //--------------------------------- - py::enum_(m, "vehicle_enum") - .value("ld_50kWh", vehicle_enum::ld_50kWh) - .value("ld_100kWh", vehicle_enum::ld_100kWh) - .value("md_200kWh", vehicle_enum::md_200kWh) - .value("hd_300kWh", vehicle_enum::hd_300kWh) - .value("hd_400kWh", vehicle_enum::hd_400kWh) - .value("hd_600kWh", vehicle_enum::hd_600kWh) - .value("hd_800kWh", vehicle_enum::hd_800kWh) - .value("hd_1000kWh", vehicle_enum::hd_1000kWh); - - py::enum_(m, "supply_equipment_enum") - .value("L2_7200", supply_equipment_enum::L2_7200) - .value("L2_17280", supply_equipment_enum::L2_17280) - .value("xfc_150", supply_equipment_enum::xfc_150) - .value("xfc_350", supply_equipment_enum::xfc_350) - .value("xfc_500kW", supply_equipment_enum::xfc_500kW) - .value("xfc_1000kW", supply_equipment_enum::xfc_1000kW) - .value("xfc_2000kW", supply_equipment_enum::xfc_2000kW) - .value("xfc_3000kW", supply_equipment_enum::xfc_3000kW) - .value("dwc_100kW", supply_equipment_enum::dwc_100kW); - - py::class_(m, "pev_SE_pair") - .def(py::init<>()) - .def_readwrite("EV_type", &pev_SE_pair::EV_type) - .def_readwrite("SE_type", &pev_SE_pair::SE_type) - .def(py::pickle( - [](const pev_SE_pair &obj){ // __getstate__ - return py::make_tuple(obj.EV_type, obj.SE_type); - }, - [](py::tuple t){ // __setstate__ - pev_SE_pair obj; - obj.EV_type = t[0].cast(); - obj.SE_type = t[1].cast(); - return obj; - } - )); - - //--------------------------------- - // Charge Event Data - //--------------------------------- - py::enum_(m, "stop_charging_decision_metric") - .value("stop_charging_using_target_soc", stop_charging_decision_metric::stop_charging_using_target_soc) - .value("stop_charging_using_depart_time", stop_charging_decision_metric::stop_charging_using_depart_time) - .value("stop_charging_using_whatever_happens_first", stop_charging_decision_metric::stop_charging_using_whatever_happens_first); - - py::enum_(m, "stop_charging_mode") - .value("target_charging", stop_charging_mode::target_charging) - .value("block_charging", stop_charging_mode::block_charging); - - py::class_(m, "stop_charging_criteria") - .def(py::init<>()) - .def(py::init()) - .def_readwrite("decision_metric", &stop_charging_criteria::decision_metric) - .def_readwrite("soc_mode", &stop_charging_criteria::soc_mode) - .def_readwrite("depart_time_mode", &stop_charging_criteria::depart_time_mode) - .def_readwrite("soc_block_charging_max_undershoot_percent", &stop_charging_criteria::soc_block_charging_max_undershoot_percent) - .def_readwrite("depart_time_block_charging_max_undershoot_percent", &stop_charging_criteria::depart_time_block_charging_max_undershoot_percent) - .def(py::pickle( - [](const stop_charging_criteria &obj){ // __getstate__ - return py::make_tuple(obj.decision_metric, obj.soc_mode, obj.depart_time_mode, obj.soc_block_charging_max_undershoot_percent, obj.depart_time_block_charging_max_undershoot_percent); - }, - [](py::tuple t){ // __setstate__ - stop_charging_criteria obj; - obj.decision_metric = t[0].cast(); - obj.soc_mode = t[1].cast(); - obj.depart_time_mode = t[2].cast(); - obj.soc_block_charging_max_undershoot_percent = t[3].cast(); - obj. depart_time_block_charging_max_undershoot_percent = t[4].cast(); - return obj; - } - )); - - py::class_(m, "charge_event_data") - .def(py::init<>()) - .def(py::init()) - .def_readwrite("charge_event_id", &charge_event_data::charge_event_id) - .def_readwrite("SE_group_id", &charge_event_data::SE_group_id) - .def_readwrite("SE_id", &charge_event_data::SE_id) - .def_readwrite("vehicle_id", &charge_event_data::vehicle_id) - .def_readwrite("vehicle_type", &charge_event_data::vehicle_type) - .def_readwrite("arrival_unix_time", &charge_event_data::arrival_unix_time) - .def_readwrite("departure_unix_time", &charge_event_data::departure_unix_time) - .def_readwrite("arrival_SOC", &charge_event_data::arrival_SOC) - .def_readwrite("departure_SOC", &charge_event_data::departure_SOC) - .def_readwrite("stop_charge", &charge_event_data::stop_charge) - .def_readwrite("control_enums", &charge_event_data::control_enums) - .def_static("get_file_header", &charge_event_data::get_file_header) - .def(py::pickle( - [](const charge_event_data &obj){ // __getstate__ - return py::make_tuple(obj.charge_event_id, obj.SE_group_id, obj.SE_id, obj.vehicle_id, obj.vehicle_type, obj.arrival_unix_time, obj.departure_unix_time, obj.arrival_SOC, obj.departure_SOC, obj.stop_charge, obj.control_enums); - }, - [](py::tuple t){ // __setstate__ - charge_event_data obj; - obj.charge_event_id = t[0].cast(); - obj.SE_group_id = t[1].cast(); - obj.SE_id = t[2].cast(); - obj.vehicle_id = t[3].cast(); - obj.vehicle_type = t[4].cast(); - obj.arrival_unix_time = t[5].cast(); - obj.departure_unix_time = t[6].cast(); - obj.arrival_SOC = t[7].cast(); - obj.departure_SOC = t[8].cast(); - obj.stop_charge = t[9].cast(); - obj.control_enums = t[10].cast(); - return obj; - } - )); - - py::class_(m, "SE_group_charge_event_data") - .def(py::init<>()) - .def(py::init>()) - .def_readwrite("SE_group_id", &SE_group_charge_event_data::SE_group_id) - .def_readwrite("charge_events", &SE_group_charge_event_data::charge_events) - .def(py::pickle( - [](const SE_group_charge_event_data &obj){ // __getstate__ - return py::make_tuple(obj.SE_group_id, obj.charge_events); - }, - [](py::tuple t){ // __setstate__ - SE_group_charge_event_data obj; - obj.SE_group_id = t[0].cast(); - - for(auto x : t[1]) - obj.charge_events.push_back(x.cast()); - - return obj; - } - )); - - //======================================= - - py::enum_(m, "queuing_mode_enum") - .value("overlapAllowed_earlierArrivalTimeHasPriority", queuing_mode_enum::overlapAllowed_earlierArrivalTimeHasPriority) - .value("overlapLimited_mostRecentlyQueuedHasPriority", queuing_mode_enum::overlapLimited_mostRecentlyQueuedHasPriority); - - py::class_(m, "charge_event_queuing_inputs") - .def(py::init<>()) - .def_readwrite("max_allowed_overlap_time_sec", &charge_event_queuing_inputs::max_allowed_overlap_time_sec) - .def_readwrite("queuing_mode", &charge_event_queuing_inputs::queuing_mode) - .def(py::pickle( - [](const charge_event_queuing_inputs &obj){ // __getstate__ - return py::make_tuple(obj.max_allowed_overlap_time_sec, obj.queuing_mode); - }, - [](py::tuple t){ // __setstate__ - charge_event_queuing_inputs obj; - obj.max_allowed_overlap_time_sec = t[0].cast(); - obj.queuing_mode = t[1].cast(); - - return obj; - } - )); - - //--------------------------------- - // SE Configuration - //--------------------------------- - py::class_(m, "SE_configuration") - .def(py::init<>()) - .def(py::init()) - .def_readwrite("SE_group_id", &SE_configuration::SE_group_id) - .def_readwrite("SE_id", &SE_configuration::SE_id) - .def_readwrite("supply_equipment_type", &SE_configuration::supply_equipment_type) - .def_readwrite("lattitude", &SE_configuration::lattitude) - .def_readwrite("longitude", &SE_configuration::longitude) - .def_readwrite("grid_node_id", &SE_configuration::grid_node_id) - .def_readwrite("location_type", &SE_configuration::location_type) - .def(py::pickle( - [](const SE_configuration &obj){ // __getstate__ - return py::make_tuple(obj.SE_group_id, obj.SE_id, obj.supply_equipment_type, obj.lattitude, obj.longitude, obj.grid_node_id, obj.location_type); - }, - [](py::tuple t){ // __setstate__ - SE_configuration obj; - obj.SE_group_id = t[0].cast(); - obj.SE_id = t[1].cast(); - obj.supply_equipment_type = t[2].cast(); - obj.lattitude = t[3].cast(); - obj.longitude = t[4].cast(); - obj.grid_node_id = t[5].cast(); - obj.location_type = t[6].cast(); - return obj; - } - )); - - py::class_(m, "SE_group_configuration") - .def(py::init<>()) - .def(py::init >()) - .def_readwrite("SE_group_id", &SE_group_configuration::SE_group_id) - .def_readwrite("SEs", &SE_group_configuration::SEs) - .def(py::pickle( - [](const SE_group_configuration &obj){ // __getstate__ - return py::make_tuple(obj.SE_group_id, obj.SEs); - }, - [](py::tuple t){ // __setstate__ - SE_group_configuration obj; - obj.SE_group_id = t[0].cast(); - for(auto x : t[1]) - obj.SEs.push_back(x.cast()); - - return obj; - } - )); - - //--------------------------------- - // Status of CE - //--------------------------------- - - py::enum_(m, "SE_charging_status") - .value("no_ev_plugged_in", SE_charging_status::no_ev_plugged_in) - .value("ev_plugged_in_not_charging", SE_charging_status::ev_plugged_in_not_charging) - .value("ev_charging", SE_charging_status::ev_charging) - .value("ev_charge_complete", SE_charging_status::ev_charge_complete); - - py::class_(m, "FICE_inputs") - .def(py::init<>()) - .def_readwrite("interval_start_unixtime", &FICE_inputs::interval_start_unixtime) - .def_readwrite("interval_duration_sec", &FICE_inputs::interval_duration_sec) - .def_readwrite("acPkW_setpoint", &FICE_inputs::acPkW_setpoint) - .def(py::pickle( - [](const FICE_inputs &obj){ // __getstate__ - return py::make_tuple(obj.interval_start_unixtime, obj.interval_duration_sec, obj.acPkW_setpoint); - }, - [](py::tuple t){ // __setstate__ - FICE_inputs obj; - obj.interval_start_unixtime = t[0].cast(); - obj.interval_duration_sec = t[1].cast(); - obj.acPkW_setpoint = t[2].cast(); - return obj; - } - )); - - py::class_(m, "CE_FICE") - .def(py::init<>()) - .def_readwrite("SE_id", &CE_FICE::SE_id) - .def_readwrite("charge_event_id", &CE_FICE::charge_event_id) - .def_readwrite("charge_energy_ackWh", &CE_FICE::charge_energy_ackWh) - .def_readwrite("interval_duration_hrs", &CE_FICE::interval_duration_hrs) - .def(py::pickle( - [](const CE_FICE &obj){ // __getstate__ - return py::make_tuple(obj.SE_id, obj.charge_event_id, obj.charge_energy_ackWh, obj.interval_duration_hrs); - }, - [](py::tuple t){ // __setstate__ - CE_FICE obj; - obj.SE_id = t[0].cast(); - obj.charge_event_id = t[1].cast(); - obj.charge_energy_ackWh = t[2].cast(); - obj.interval_duration_hrs = t[3].cast(); - return obj; - } - )); - - py::class_(m, "CE_FICE_in_SE_group") - .def(py::init<>()) - .def_readwrite("SE_group_id", &CE_FICE_in_SE_group::SE_group_id) - .def_readwrite("SE_FICE_vals", &CE_FICE_in_SE_group::SE_FICE_vals) - .def(py::pickle( - [](const CE_FICE_in_SE_group &obj){ // __getstate__ - return py::make_tuple(obj.SE_group_id, obj.SE_FICE_vals); - }, - [](py::tuple t){ // __setstate__ - CE_FICE_in_SE_group obj; - obj.SE_group_id = t[0].cast(); - for(auto x : t[1]) - obj.SE_FICE_vals.push_back(x.cast()); - - return obj; - } - )); - - py::class_(m, "active_CE") - .def(py::init<>()) - .def_readwrite("SE_id", &active_CE::SE_id) - .def_readwrite("charge_event_id", &active_CE::charge_event_id) - .def_readwrite("now_unix_time", &active_CE::now_unix_time) - .def_readwrite("now_soc", &active_CE::now_soc) - .def_readwrite("now_dcPkW", &active_CE::now_dcPkW) - .def_readwrite("now_acPkW", &active_CE::now_acPkW) - .def_readwrite("now_acQkVAR", &active_CE::now_acQkVAR) - //.def_readwrite("min_remaining_charge_time_hrs", &active_CE::min_remaining_charge_time_hrs) - //.def_readwrite("min_time_to_complete_entire_charge_hrs", &active_CE::min_time_to_complete_entire_charge_hrs) - .def_readwrite("now_charge_energy_ackWh", &active_CE::now_charge_energy_ackWh) - .def_readwrite("energy_of_complete_charge_ackWh", &active_CE::energy_of_complete_charge_ackWh) - .def_readwrite("vehicle_id", &active_CE::vehicle_id) - .def_readwrite("vehicle_type", &active_CE::vehicle_type) - .def(py::pickle( - [](const active_CE &obj){ // __getstate__ - return py::make_tuple(obj.SE_id, obj.charge_event_id, obj.now_unix_time, obj.now_soc, - obj.now_charge_energy_ackWh, obj.energy_of_complete_charge_ackWh, - obj.now_dcPkW, obj.now_acPkW, obj.now_acQkVAR, obj.vehicle_id, obj.vehicle_type - //obj.min_remaining_charge_time_hrs, obj.min_time_to_complete_entire_charge_hrs - ); - }, - [](py::tuple t){ // __setstate_ - active_CE obj; - obj.SE_id = t[0].cast(); - obj.charge_event_id = t[1].cast(); - obj.now_unix_time = t[2].cast(); - obj.now_soc = t[3].cast(); - obj.now_charge_energy_ackWh = t[4].cast(); - obj.energy_of_complete_charge_ackWh = t[5].cast(); - obj.now_dcPkW = t[6].cast(); - obj.now_acPkW = t[7].cast(); - obj.now_acQkVAR = t[8].cast(); - obj.vehicle_id = t[9].cast(); - obj.vehicle_type = t[10].cast(); - //obj.min_remaining_charge_time_hrs = t[6].cast(); - //obj.min_time_to_complete_entire_charge_hrs = t[7].cast(); - - return obj; - } - )); - - py::class_(m, "SE_setpoint") - .def(py::init<>()) - .def_readwrite("SE_id", &SE_setpoint::SE_id) - .def_readwrite("PkW", &SE_setpoint::PkW) - .def_readwrite("QkVAR", &SE_setpoint::QkVAR) - .def(py::pickle( - [](const SE_setpoint &obj){ // __getstate__ - return py::make_tuple(obj.SE_id, obj.PkW, obj.QkVAR); - }, - [](py::tuple t){ // __setstate__ - SE_setpoint obj; - obj.SE_id = t[0].cast(); - obj.PkW = t[1].cast(); - obj.QkVAR = t[2].cast(); - - return obj; - } - )); - - py::class_(m, "completed_CE") - .def(py::init<>()) - .def_readwrite("SE_id", &completed_CE::SE_id) - .def_readwrite("charge_event_id", &completed_CE::charge_event_id) - .def_readwrite("final_soc", &completed_CE::final_soc) - .def(py::pickle( - [](const completed_CE &obj){ // __getstate__ - return py::make_tuple(obj.SE_id, obj.charge_event_id, obj.final_soc); - }, - [](py::tuple t){ // __setstate__ - completed_CE obj; - obj.SE_id = t[0].cast(); - obj.charge_event_id = t[1].cast(); - obj.final_soc = t[2].cast(); - - return obj; - } - )); - - //--------------------------------- - // Miscellaneous - //--------------------------------- - py::enum_(m, "ac_to_dc_converter_enum") - .value("pf", ac_to_dc_converter_enum::pf) - .value("Q_setpoint", ac_to_dc_converter_enum::Q_setpoint); - - py::class_(m, "SE_power") - .def(py::init<>()) - .def_readwrite("time_step_duration_hrs", &SE_power::time_step_duration_hrs) - .def_readwrite("P1_kW", &SE_power::P1_kW) - .def_readwrite("P2_kW", &SE_power::P2_kW) - .def_readwrite("P3_kW", &SE_power::P3_kW) - .def_readwrite("Q3_kVAR", &SE_power::Q3_kVAR) - .def_readwrite("soc", &SE_power::soc) - .def_readwrite("SE_status_val", &SE_power::SE_status_val) - .def(py::pickle( - [](const SE_power &obj){ // __getstate__ - return py::make_tuple(obj.time_step_duration_hrs, obj.P1_kW, obj.P2_kW, obj.P3_kW, obj.Q3_kVAR, obj.soc, obj.SE_status_val); - }, - [](py::tuple t){ // __setstate__ - SE_power obj; - obj.time_step_duration_hrs = t[0].cast(); - obj.P1_kW = t[1].cast(); - obj.P2_kW = t[2].cast(); - obj.P3_kW = t[3].cast(); - obj.Q3_kVAR = t[4].cast(); - obj.soc = t[5].cast(); - obj.SE_status_val = t[6].cast(); - - return obj; - } - )); - - py::class_(m, "pev_batterySize_info") - .def(py::init<>()) - .def_readwrite("vehicle_type", &pev_batterySize_info::vehicle_type) - .def_readwrite("battery_size_kWh", &pev_batterySize_info::battery_size_kWh) - .def_readwrite("battery_size_with_stochastic_degredation_kWh", &pev_batterySize_info::battery_size_with_stochastic_degredation_kWh) - - .def(py::pickle( - [](const pev_batterySize_info &obj){ // __getstate__ - return py::make_tuple(obj.vehicle_type, obj.battery_size_kWh, obj.battery_size_with_stochastic_degredation_kWh); - }, - [](py::tuple t){ // __setstate__ - pev_batterySize_info obj; - obj.vehicle_type = t[0].cast(); - obj.battery_size_kWh = t[1].cast(); - obj.battery_size_with_stochastic_degredation_kWh = t[2].cast(); - - return obj; - } - )); - - //--------------------------------- - // PEV Charge Profile - //--------------------------------- - py::class_(m, "pev_charge_profile_result") - .def(py::init<>()) - .def_readwrite("soc_increase", &pev_charge_profile_result::soc_increase) - .def_readwrite("E1_kWh", &pev_charge_profile_result::E1_kWh) - .def_readwrite("E2_kWh", &pev_charge_profile_result::E2_kWh) - .def_readwrite("E3_kWh", &pev_charge_profile_result::E3_kWh) - .def_readwrite("cumQ3_kVARh", &pev_charge_profile_result::cumQ3_kVARh) - .def_readwrite("total_charge_time_hrs", &pev_charge_profile_result::total_charge_time_hrs) - .def_readwrite("incremental_chage_time_hrs", &pev_charge_profile_result::incremental_chage_time_hrs) - .def(py::pickle( - [](const pev_charge_profile_result &obj){ // __getstate__ - return py::make_tuple(obj.soc_increase, obj.E1_kWh, obj.E2_kWh, obj.E3_kWh, obj.cumQ3_kVARh, obj.total_charge_time_hrs, obj.incremental_chage_time_hrs); - }, - [](py::tuple t){ // __setstate__ - pev_charge_profile_result obj; - obj.soc_increase = t[0].cast(); - obj.E1_kWh = t[1].cast(); - obj.E2_kWh = t[2].cast(); - obj.E3_kWh = t[3].cast(); - obj.cumQ3_kVARh = t[4].cast(); - obj.total_charge_time_hrs = t[5].cast(); - obj.incremental_chage_time_hrs = t[6].cast(); - return obj; - } - )); - - py::class_(m, "pev_charge_fragment_removal_criteria") - .def(py::init<>()) - .def_readwrite("max_percent_of_fragments_that_can_be_removed", &pev_charge_fragment_removal_criteria::max_percent_of_fragments_that_can_be_removed) - .def_readwrite("kW_change_threashold", &pev_charge_fragment_removal_criteria::kW_change_threashold) - .def_readwrite("threshold_to_determine_not_removable_fragments_on_flat_peak_kW", &pev_charge_fragment_removal_criteria::threshold_to_determine_not_removable_fragments_on_flat_peak_kW) - .def_readwrite("perc_of_max_starting_point_to_determine_not_removable_fragments_on_low_elbow", &pev_charge_fragment_removal_criteria::perc_of_max_starting_point_to_determine_not_removable_fragments_on_low_elbow) - .def(py::pickle( - [](const pev_charge_fragment_removal_criteria &obj){ // __getstate__ - return py::make_tuple(obj.max_percent_of_fragments_that_can_be_removed, obj.kW_change_threashold, obj.threshold_to_determine_not_removable_fragments_on_flat_peak_kW, obj.perc_of_max_starting_point_to_determine_not_removable_fragments_on_low_elbow); - }, - [](py::tuple t){ // __setstate__ - pev_charge_fragment_removal_criteria obj; - obj.max_percent_of_fragments_that_can_be_removed = t[0].cast(); - obj.kW_change_threashold = t[1].cast(); - obj.threshold_to_determine_not_removable_fragments_on_flat_peak_kW = t[2].cast(); - obj.perc_of_max_starting_point_to_determine_not_removable_fragments_on_low_elbow = t[3].cast(); - return obj; - } - )); - - py::class_(m, "pev_charge_fragment") - .def(py::init<>()) - .def(py::init()) - .def_readwrite("soc", &pev_charge_fragment::soc) - .def_readwrite("E1_kWh", &pev_charge_fragment::E1_kWh) - .def_readwrite("E2_kWh", &pev_charge_fragment::E2_kWh) - .def_readwrite("E3_kWh", &pev_charge_fragment::E3_kWh) - .def_readwrite("cumQ3_kVARh", &pev_charge_fragment::cumQ3_kVARh) - .def_readwrite("time_since_charge_began_hrs", &pev_charge_fragment::time_since_charge_began_hrs) - .def(py::pickle( - [](const pev_charge_fragment &obj){ // __getstate__ - return py::make_tuple(obj.soc, obj.E1_kWh, obj.E2_kWh, obj.E3_kWh, obj.cumQ3_kVARh, obj.time_since_charge_began_hrs); - }, - [](py::tuple t){ // __setstate__ - pev_charge_fragment obj; - obj.soc = t[0].cast(); - obj.E1_kWh = t[1].cast(); - obj.E2_kWh = t[2].cast(); - obj.E3_kWh = t[3].cast(); - obj.cumQ3_kVARh = t[4].cast(); - obj.time_since_charge_began_hrs = t[5].cast(); - return obj; - } - )); - - py::class_(m, "pev_charge_fragment_variation") - .def(py::init<>()) - .def(py::init()) - .def_readwrite("is_removable", &pev_charge_fragment_variation::is_removable) - .def_readwrite("original_charge_fragment_index", &pev_charge_fragment_variation::original_charge_fragment_index) - .def_readwrite("time_since_charge_began_hrs", &pev_charge_fragment_variation::time_since_charge_began_hrs) - .def_readwrite("soc", &pev_charge_fragment_variation::soc) - .def_readwrite("P3_kW", &pev_charge_fragment_variation::P3_kW) - .def_readwrite("variation_rank", &pev_charge_fragment_variation::variation_rank) - .def(py::pickle( - [](const pev_charge_fragment_variation &obj){ // __getstate__ - return py::make_tuple(obj.is_removable, obj.original_charge_fragment_index, obj.time_since_charge_began_hrs, obj.soc, obj.P3_kW, obj.variation_rank); - }, - [](py::tuple t){ // __setstate__ - pev_charge_fragment_variation obj; - obj.is_removable = t[0].cast(); - obj.original_charge_fragment_index = t[1].cast(); - obj.time_since_charge_began_hrs = t[2].cast(); - obj.soc = t[3].cast(); - obj.P3_kW = t[4].cast(); - obj.variation_rank = t[5].cast(); - return obj; - } - )); - - py::class_(m, "charge_profile_validation_data") - .def(py::init<>()) - .def_readwrite("time_step_sec", &charge_profile_validation_data::time_step_sec) - .def_readwrite("target_acP3_kW", &charge_profile_validation_data::target_acP3_kW) - .def_readwrite("fragment_removal_criteria", &charge_profile_validation_data::fragment_removal_criteria) - .def_readwrite("removed_fragments", &charge_profile_validation_data::removed_fragments) - .def_readwrite("retained_fragments", &charge_profile_validation_data::retained_fragments) - .def_readwrite("downsampled_charge_fragments", &charge_profile_validation_data::downsampled_charge_fragments) - .def_readwrite("original_charge_fragments", &charge_profile_validation_data::original_charge_fragments) - .def(py::pickle( - [](const charge_profile_validation_data &obj){ // __getstate__ - return py::make_tuple(obj.time_step_sec, obj.target_acP3_kW, obj.fragment_removal_criteria, obj.removed_fragments, obj.retained_fragments, obj.downsampled_charge_fragments, obj.original_charge_fragments); - }, - [](py::tuple t){ // __setstate__ - charge_profile_validation_data obj; - obj.time_step_sec = t[0].cast(); - obj.target_acP3_kW = t[1].cast(); - obj.fragment_removal_criteria = t[2].cast(); - - for(auto x : t[3]) - obj.removed_fragments.push_back(x.cast()); - - for(auto x : t[4]) - obj.retained_fragments.push_back(x.cast()); - - for(auto x : t[5]) - obj.downsampled_charge_fragments.push_back(x.cast()); - - for(auto x : t[6]) - obj.original_charge_fragments.push_back(x.cast()); - - return obj; - } - )); - - py::class_(m, "charge_event_P3kW_limits") - .def(py::init<>()) - .def_readwrite("min_P3kW", &charge_event_P3kW_limits::min_P3kW) - .def_readwrite("max_P3kW", &charge_event_P3kW_limits::max_P3kW) - .def(py::pickle( - [](const charge_event_P3kW_limits &obj){ // __getstate__ - return py::make_tuple(obj.min_P3kW, obj.max_P3kW); - }, - [](py::tuple t){ // __setstate__ - charge_event_P3kW_limits obj; - obj.min_P3kW = t[0].cast(); - obj.max_P3kW = t[1].cast(); - return obj; - } - )); - - py::class_(m, "all_charge_profile_data") - .def(py::init<>()) - .def_readwrite("timestep_sec", &all_charge_profile_data::timestep_sec) - .def_readwrite("P1_kW", &all_charge_profile_data::P1_kW) - .def_readwrite("P2_kW", &all_charge_profile_data::P2_kW) - .def_readwrite("P3_kW", &all_charge_profile_data::P3_kW) - .def_readwrite("Q3_kVAR", &all_charge_profile_data::Q3_kVAR) - .def_readwrite("soc", &all_charge_profile_data::soc) - .def(py::pickle( - [](const all_charge_profile_data &obj){ // __getstate__ - return py::make_tuple(obj.timestep_sec, obj.P1_kW, obj.P2_kW, obj.P3_kW, obj.Q3_kVAR, obj.soc); - }, - [](py::tuple t){ // __setstate__ - all_charge_profile_data obj; - obj.timestep_sec = t[0].cast(); - - for(auto x : t[1]) - obj.P1_kW.push_back(x.cast()); - - for(auto x : t[2]) - obj.P2_kW.push_back(x.cast()); - - for(auto x : t[3]) - obj.P3_kW.push_back(x.cast()); - - for(auto x : t[4]) - obj.Q3_kVAR.push_back(x.cast()); - - for(auto x : t[5]) - obj.soc.push_back(x.cast()); - - return obj; - } - )); - - //--------------------------------- - // Low Pass Filter Parameters - //--------------------------------- - py::enum_(m, "LPF_window_enum") - .value("Hanning", LPF_window_enum::Hanning) - .value("Blackman", LPF_window_enum::Blackman) - .value("Rectangular", LPF_window_enum::Rectangular); - - py::class_(m, "LPF_parameters") - .def(py::init<>()) - .def_readwrite("window_size", &LPF_parameters::window_size) - .def_readwrite("window_type", &LPF_parameters::window_type) - .def(py::pickle( - [](const LPF_parameters &obj){ // __getstate__ - return py::make_tuple(obj.window_size, obj.window_type); - }, - [](py::tuple t){ // __setstate__ - LPF_parameters obj; - obj.window_size = t[0].cast(); - obj.window_type = t[1].cast(); - return obj; - } - )); - - py::class_(m, "LPF_parameters_randomize_window_size") - .def(py::init<>()) - .def_readwrite("is_active", &LPF_parameters_randomize_window_size::is_active) - .def_readwrite("seed", &LPF_parameters_randomize_window_size::seed) - .def_readwrite("window_size_LB", &LPF_parameters_randomize_window_size::window_size_LB) - .def_readwrite("window_size_UB", &LPF_parameters_randomize_window_size::window_size_UB) - .def_readwrite("window_type", &LPF_parameters_randomize_window_size::window_type) - .def(py::pickle( - [](const LPF_parameters_randomize_window_size &obj){ // __getstate__ - return py::make_tuple(obj.is_active, obj.seed, obj.window_size_LB, obj.window_size_UB, obj.window_type); - }, - [](py::tuple t){ // __setstate__ - LPF_parameters_randomize_window_size obj; - obj.is_active = t[0].cast(); - obj.seed = t[1].cast(); - obj.window_size_LB = t[2].cast(); - obj.window_size_UB = t[3].cast(); - obj.window_type = t[4].cast(); - return obj; - } - )); - - //--------------------------------- - // Control Strategy Parameters - //--------------------------------- - py::enum_(m, "L2_control_strategies_enum") - .value("NA", L2_control_strategies_enum::NA) - .value("ES100_A", L2_control_strategies_enum::ES100_A) - .value("ES100_B", L2_control_strategies_enum::ES100_B) - .value("ES110", L2_control_strategies_enum::ES110) - .value("ES200", L2_control_strategies_enum::ES200) - .value("ES300", L2_control_strategies_enum::ES300) - .value("ES500", L2_control_strategies_enum::ES500) - .value("VS100", L2_control_strategies_enum::VS100) - .value("VS200_A", L2_control_strategies_enum::VS200_A) - .value("VS200_B", L2_control_strategies_enum::VS200_B) - .value("VS200_C", L2_control_strategies_enum::VS200_C) - .value("VS300", L2_control_strategies_enum::VS300); - - py::class_(m, "ES100_L2_parameters") - .def(py::init<>()) - .def_readwrite("beginning_of_TofU_rate_period__time_from_midnight_hrs", &ES100_L2_parameters::beginning_of_TofU_rate_period__time_from_midnight_hrs) - .def_readwrite("end_of_TofU_rate_period__time_from_midnight_hrs", &ES100_L2_parameters::end_of_TofU_rate_period__time_from_midnight_hrs) - .def_readwrite("randomization_method", &ES100_L2_parameters::randomization_method) - .def_readwrite("M1_delay_period_hrs", &ES100_L2_parameters::M1_delay_period_hrs) - .def_readwrite("random_seed", &ES100_L2_parameters::random_seed) - .def(py::pickle( - [](const ES100_L2_parameters &obj){ // __getstate__ - return py::make_tuple(obj.beginning_of_TofU_rate_period__time_from_midnight_hrs, obj.end_of_TofU_rate_period__time_from_midnight_hrs, obj.randomization_method, obj.M1_delay_period_hrs, obj.random_seed); - }, - [](py::tuple t){ // __setstate__ - ES100_L2_parameters obj; - obj.beginning_of_TofU_rate_period__time_from_midnight_hrs = t[0].cast(); - obj.end_of_TofU_rate_period__time_from_midnight_hrs = t[1].cast(); - obj.randomization_method = t[2].cast(); - obj.M1_delay_period_hrs = t[3].cast(); - obj.random_seed = t[4].cast(); - return obj; - } - )); - - py::class_(m, "ES110_L2_parameters") - .def(py::init<>()) - .def_readwrite("random_seed", &ES110_L2_parameters::random_seed) - .def(py::pickle( - [](const ES110_L2_parameters &obj){ // __getstate__ - return py::make_tuple(obj.random_seed); - }, - [](py::tuple t){ // __setstate__ - ES110_L2_parameters obj; - obj.random_seed = t[0].cast(); - return obj; - } - )); - - py::class_(m, "ES200_L2_parameters") - .def(py::init<>()) - .def_readwrite("weight_factor_to_calculate_valley_fill_target", &ES200_L2_parameters::weight_factor_to_calculate_valley_fill_target) - .def(py::pickle( - [](const ES200_L2_parameters &obj){ // __getstate__ - return py::make_tuple(obj.weight_factor_to_calculate_valley_fill_target); - }, - [](py::tuple t){ // __setstate__ - ES200_L2_parameters obj; - obj.weight_factor_to_calculate_valley_fill_target = t[0].cast(); - return obj; - } - )); - - py::class_(m, "ES300_L2_parameters") - .def(py::init<>()) - .def_readwrite("weight_factor_to_calculate_valley_fill_target", &ES300_L2_parameters::weight_factor_to_calculate_valley_fill_target) - .def(py::pickle( - [](const ES300_L2_parameters &obj){ // __getstate__ - return py::make_tuple(obj.weight_factor_to_calculate_valley_fill_target); - }, - [](py::tuple t){ // __setstate__ - ES300_L2_parameters obj; - obj.weight_factor_to_calculate_valley_fill_target = t[0].cast(); - return obj; - } - )); - - py::class_(m, "normal_random_error") - .def(py::init<>()) - .def_readwrite("seed", &normal_random_error::seed) - .def_readwrite("stdev", &normal_random_error::stdev) - .def_readwrite("stdev_bounds", &normal_random_error::stdev_bounds) - .def(py::pickle( - [](const normal_random_error &obj){ // __getstate__ - return py::make_tuple(obj.seed, obj.stdev, obj.stdev_bounds); - }, - [](py::tuple t){ // __setstate__ - normal_random_error obj; - obj.seed = t[0].cast(); - obj.stdev = t[1].cast(); - obj.stdev_bounds = t[2].cast(); - return obj; - } - )); - - py::class_(m, "ES500_L2_parameters") - .def(py::init<>()) - .def_readwrite("aggregator_timestep_mins", &ES500_L2_parameters::aggregator_timestep_mins) - .def_readwrite("off_to_on_lead_time_sec", &ES500_L2_parameters::off_to_on_lead_time_sec) - .def_readwrite("default_lead_time_sec", &ES500_L2_parameters::default_lead_time_sec) - .def(py::pickle( - [](const ES500_L2_parameters &obj){ // __getstate__ - return py::make_tuple(obj.aggregator_timestep_mins, obj.off_to_on_lead_time_sec, obj.default_lead_time_sec); - }, - [](py::tuple t){ // __setstate__ - ES500_L2_parameters obj; - obj.aggregator_timestep_mins = t[0].cast(); - obj.off_to_on_lead_time_sec = t[1].cast(); - obj.default_lead_time_sec = t[2].cast(); - return obj; - } - )); - - py::class_(m, "VS100_L2_parameters") - .def(py::init<>()) - .def_readwrite("target_P3_reference__percent_of_maxP3", &VS100_L2_parameters::target_P3_reference__percent_of_maxP3) - .def_readwrite("max_delta_kW_per_min", &VS100_L2_parameters::max_delta_kW_per_min) - .def_readwrite("volt_delta_kW_curve_puV", &VS100_L2_parameters::volt_delta_kW_curve_puV) - .def_readwrite("volt_delta_kW_percP", &VS100_L2_parameters::volt_delta_kW_percP) - .def_readwrite("voltage_LPF", &VS100_L2_parameters::voltage_LPF) - .def(py::pickle( - [](const VS100_L2_parameters &obj){ // __getstate__ - return py::make_tuple(obj.target_P3_reference__percent_of_maxP3, obj.max_delta_kW_per_min, obj.volt_delta_kW_curve_puV, obj.volt_delta_kW_percP, obj.voltage_LPF); - }, - [](py::tuple t){ // __setstate__ - VS100_L2_parameters obj; - obj.target_P3_reference__percent_of_maxP3 = t[0].cast(); - obj.max_delta_kW_per_min = t[1].cast(); - - for(auto x : t[2]) - obj.volt_delta_kW_curve_puV.push_back(x.cast()); - - for(auto x : t[3]) - obj.volt_delta_kW_percP.push_back(x.cast()); - - obj.voltage_LPF = t[4].cast(); - - return obj; - } - )); - - py::class_(m, "VS200_L2_parameters") - .def(py::init<>()) - .def_readwrite("target_P3_reference__percent_of_maxP3", &VS200_L2_parameters::target_P3_reference__percent_of_maxP3) - .def_readwrite("max_delta_kVAR_per_min", &VS200_L2_parameters::max_delta_kVAR_per_min) - .def_readwrite("volt_var_curve_puV", &VS200_L2_parameters::volt_var_curve_puV) - .def_readwrite("volt_var_curve_percQ", &VS200_L2_parameters::volt_var_curve_percQ) - .def_readwrite("voltage_LPF", &VS200_L2_parameters::voltage_LPF) - .def(py::pickle( - [](const VS200_L2_parameters &obj){ // __getstate__ - return py::make_tuple(obj.target_P3_reference__percent_of_maxP3, obj.max_delta_kVAR_per_min, obj.volt_var_curve_puV, obj.volt_var_curve_percQ, obj.voltage_LPF); - }, - [](py::tuple t){ // __setstate__ - VS200_L2_parameters obj; - obj.target_P3_reference__percent_of_maxP3 = t[0].cast(); - obj.max_delta_kVAR_per_min = t[1].cast(); - - for(auto x : t[2]) - obj.volt_var_curve_puV.push_back(x.cast()); - - for(auto x : t[3]) - obj.volt_var_curve_percQ.push_back(x.cast()); - - obj.voltage_LPF = t[4].cast(); - - return obj; - } - )); - - py::class_(m, "VS300_L2_parameters") - .def(py::init<>()) - .def_readwrite("target_P3_reference__percent_of_maxP3", &VS300_L2_parameters::target_P3_reference__percent_of_maxP3) - .def_readwrite("max_QkVAR_as_percent_of_SkVA", &VS300_L2_parameters::max_QkVAR_as_percent_of_SkVA) - .def_readwrite("gamma", &VS300_L2_parameters::gamma) - .def_readwrite("voltage_LPF", &VS300_L2_parameters::voltage_LPF) - .def(py::pickle( - [](const VS300_L2_parameters &obj){ // __getstate__ - return py::make_tuple(obj.target_P3_reference__percent_of_maxP3, obj.max_QkVAR_as_percent_of_SkVA, obj.gamma, obj.voltage_LPF); - }, - [](py::tuple t){ // __setstate__ - VS300_L2_parameters obj; - obj.target_P3_reference__percent_of_maxP3 = t[0].cast(); - obj.max_QkVAR_as_percent_of_SkVA = t[1].cast(); - obj.gamma = t[2].cast(); - obj.voltage_LPF = t[3].cast(); - return obj; - } - )); - - py::class_(m, "control_strategy_enums") - .def(py::init<>()) - .def_readwrite("inverter_model_supports_Qsetpoint", &control_strategy_enums::inverter_model_supports_Qsetpoint) - .def_readwrite("ES_control_strategy", &control_strategy_enums::ES_control_strategy) - .def_readwrite("VS_control_strategy", &control_strategy_enums::VS_control_strategy) - .def_readwrite("ext_control_strategy", &control_strategy_enums::ext_control_strategy) - .def(py::pickle( - [](const control_strategy_enums &obj){ // __getstate__ - return py::make_tuple(obj.inverter_model_supports_Qsetpoint, obj.ES_control_strategy, obj.VS_control_strategy, obj.ext_control_strategy); - }, - [](py::tuple t){ // __setstate__ - control_strategy_enums obj; - obj.inverter_model_supports_Qsetpoint = t[0].cast(); - obj.ES_control_strategy = t[1].cast(); - obj.VS_control_strategy = t[2].cast(); - obj.ext_control_strategy = t[3].cast(); - return obj; - } - )); - - py::class_(m, "L2_control_strategy_parameters") - .def(py::init<>()) - - .def_readwrite("ES100_A", &L2_control_strategy_parameters::ES100_A) - .def_readwrite("ES100_B", &L2_control_strategy_parameters::ES100_B) - .def_readwrite("ES110", &L2_control_strategy_parameters::ES110) - .def_readwrite("ES200", &L2_control_strategy_parameters::ES200) - .def_readwrite("ES300", &L2_control_strategy_parameters::ES300) - .def_readwrite("ES500", &L2_control_strategy_parameters::ES500) - - .def_readwrite("VS100", &L2_control_strategy_parameters::VS100) - .def_readwrite("VS200_A", &L2_control_strategy_parameters::VS200_A) - .def_readwrite("VS200_B", &L2_control_strategy_parameters::VS200_B) - .def_readwrite("VS200_C", &L2_control_strategy_parameters::VS200_C) - .def_readwrite("VS300", &L2_control_strategy_parameters::VS300) - - .def(py::pickle( - [](const L2_control_strategy_parameters &obj){ // __getstate__ - return py::make_tuple(obj.ES100_A, obj.ES100_B, obj.ES110, obj.ES200, obj.ES300, obj.ES500, - obj.VS100, obj.VS200_A, obj.VS200_B, obj.VS200_C, obj.VS300); - }, - [](py::tuple t){ // __setstate__ - L2_control_strategy_parameters obj; - - obj.ES100_A = t[0].cast(); - obj.ES100_B = t[1].cast(); - obj.ES110 = t[2].cast(); - obj.ES200 = t[3].cast(); - obj.ES300 = t[4].cast(); - obj.ES500 = t[5].cast(); - - obj.VS100 = t[6].cast(); - obj.VS200_A = t[7].cast(); - obj.VS200_B = t[8].cast(); - obj.VS200_C = t[9].cast(); - obj.VS300 = t[10].cast(); - - return obj; - } - )); - - //--------------------------------- - // ES500 Aggregator Structures - //--------------------------------- - py::class_(m, "ES500_aggregator_pev_charge_needs") - .def(py::init<>()) - .def_readwrite("SE_id", &ES500_aggregator_pev_charge_needs::SE_id) - .def_readwrite("departure_unix_time", &ES500_aggregator_pev_charge_needs::departure_unix_time) - .def_readwrite("e3_charge_remain_kWh", &ES500_aggregator_pev_charge_needs::e3_charge_remain_kWh) - .def_readwrite("e3_step_max_kWh", &ES500_aggregator_pev_charge_needs::e3_step_max_kWh) - .def_readwrite("e3_step_target_kWh", &ES500_aggregator_pev_charge_needs::e3_step_target_kWh) - .def_readwrite("min_remaining_charge_time_hrs", &ES500_aggregator_pev_charge_needs::min_remaining_charge_time_hrs) - .def_readwrite("min_time_to_complete_entire_charge_hrs", &ES500_aggregator_pev_charge_needs::min_time_to_complete_entire_charge_hrs) - .def_readwrite("remaining_park_time_hrs", &ES500_aggregator_pev_charge_needs::remaining_park_time_hrs) - .def_readwrite("total_park_time_hrs", &ES500_aggregator_pev_charge_needs::total_park_time_hrs) - .def(py::pickle( - [](const ES500_aggregator_pev_charge_needs &obj){ // __getstate__ - return py::make_tuple(obj.SE_id, obj.departure_unix_time, obj.e3_charge_remain_kWh, obj.e3_step_max_kWh, obj.e3_step_target_kWh, obj.min_remaining_charge_time_hrs, obj.min_time_to_complete_entire_charge_hrs, obj.remaining_park_time_hrs, obj.total_park_time_hrs); - }, - [](py::tuple t){ // __setstate__ - ES500_aggregator_pev_charge_needs obj; - obj.SE_id = t[0].cast(); - obj.departure_unix_time = t[1].cast(); - obj.e3_charge_remain_kWh = t[2].cast(); - obj.e3_step_max_kWh = t[3].cast(); - obj.e3_step_target_kWh = t[4].cast(); - obj.min_remaining_charge_time_hrs = t[5].cast(); - obj.min_time_to_complete_entire_charge_hrs = t[6].cast(); - obj.remaining_park_time_hrs = t[7].cast(); - obj.total_park_time_hrs = t[8].cast(); - - return obj; - } - )); - - py::class_(m, "ES500_aggregator_charging_needs") - .def(py::init<>()) - .def("is_empty", &ES500_aggregator_charging_needs::is_empty) - .def_readwrite("next_aggregator_timestep_start_time", &ES500_aggregator_charging_needs::next_aggregator_timestep_start_time) - .def_readwrite("pev_charge_needs", &ES500_aggregator_charging_needs::pev_charge_needs) - .def(py::pickle( - [](const ES500_aggregator_charging_needs &obj){ // __getstate__ - return py::make_tuple(obj.next_aggregator_timestep_start_time, obj.pev_charge_needs); - }, - [](py::tuple t){ // __setstate__ - ES500_aggregator_charging_needs obj; - obj.next_aggregator_timestep_start_time = t[0].cast(); - - for(auto x : t[1]) - obj.pev_charge_needs.push_back(x.cast()); - - return obj; - } - )); - - py::class_(m, "ES500_aggregator_e_step_setpoints") - .def(py::init<>()) - .def(py::init, std::vector, std::vector >()) - .def("is_empty", &ES500_aggregator_e_step_setpoints::is_empty) - .def_readwrite("next_aggregator_timestep_start_time", &ES500_aggregator_e_step_setpoints::next_aggregator_timestep_start_time) - .def_readwrite("SE_id", &ES500_aggregator_e_step_setpoints::SE_id) - .def_readwrite("e3_step_kWh", &ES500_aggregator_e_step_setpoints::e3_step_kWh) - .def_readwrite("charge_progression", &ES500_aggregator_e_step_setpoints::charge_progression) - .def(py::pickle( - [](const ES500_aggregator_e_step_setpoints &obj){ // __getstate__ - return py::make_tuple(obj.next_aggregator_timestep_start_time, obj.SE_id, obj.e3_step_kWh, obj.charge_progression); - }, - [](py::tuple t){ // __setstate__ - ES500_aggregator_e_step_setpoints obj; - obj.next_aggregator_timestep_start_time = t[0].cast(); - - for(auto x : t[1]) - obj.SE_id.push_back(x.cast()); - - for(auto x : t[2]) - obj.e3_step_kWh.push_back(x.cast()); - - for(auto x : t[3]) - obj.charge_progression.push_back(x.cast()); - - return obj; - } - )); - - py::class_(m, "ES500_aggregator_charging_forecast") - .def(py::init<>()) - .def_readwrite("arrival_unix_time", &ES500_aggregator_charging_forecast::arrival_unix_time) - .def_readwrite("departure_unix_time", &ES500_aggregator_charging_forecast::departure_unix_time) - .def_readwrite("e3_charge_remain_kWh", &ES500_aggregator_charging_forecast::e3_charge_remain_kWh) - .def_readwrite("e3_step_max_kWh", &ES500_aggregator_charging_forecast::e3_step_max_kWh) - .def(py::pickle( - [](const ES500_aggregator_charging_forecast &obj){ // __getstate__ - return py::make_tuple(obj.arrival_unix_time, obj.departure_unix_time, obj.e3_charge_remain_kWh, obj.e3_step_max_kWh); - }, - [](py::tuple t){ // __setstate__ - ES500_aggregator_charging_forecast obj; - - for(auto x : t[0]) - obj.arrival_unix_time.push_back(x.cast()); - - for(auto x : t[1]) - obj.departure_unix_time.push_back(x.cast()); - - for(auto x : t[2]) - obj.e3_charge_remain_kWh.push_back(x.cast()); - - for(auto x : t[3]) - obj.e3_step_max_kWh.push_back(x.cast()); - - return obj; - } - )); - - py::class_(m, "ES500_aggregator_obj_fun_constraints") - .def(py::init<>()) - .def_readwrite("E_cumEnergy_ALAP_kWh", &ES500_aggregator_obj_fun_constraints::E_cumEnergy_ALAP_kWh) - .def_readwrite("E_cumEnergy_ASAP_kWh", &ES500_aggregator_obj_fun_constraints::E_cumEnergy_ASAP_kWh) - .def_readwrite("E_energy_ALAP_kWh", &ES500_aggregator_obj_fun_constraints::E_energy_ALAP_kWh) - .def_readwrite("E_energy_ASAP_kWh", &ES500_aggregator_obj_fun_constraints::E_energy_ASAP_kWh) - .def_readwrite("E_step_ALAP", &ES500_aggregator_obj_fun_constraints::E_step_ALAP) - .def_readwrite("canSolve_aka_pev_charging_in_prediction_window", &ES500_aggregator_obj_fun_constraints::canSolve_aka_pev_charging_in_prediction_window) - .def(py::pickle( - [](const ES500_aggregator_obj_fun_constraints &obj){ // __getstate__ - return py::make_tuple(obj.E_cumEnergy_ALAP_kWh, obj.E_cumEnergy_ASAP_kWh, obj.E_energy_ALAP_kWh, obj.E_energy_ASAP_kWh, obj.E_step_ALAP, obj.canSolve_aka_pev_charging_in_prediction_window); - }, - [](py::tuple t){ // __setstate__ - ES500_aggregator_obj_fun_constraints obj; - - for(auto x : t[0]) - obj.E_cumEnergy_ALAP_kWh.push_back(x.cast()); - - for(auto x : t[1]) - obj.E_cumEnergy_ASAP_kWh.push_back(x.cast()); - - for(auto x : t[2]) - obj.E_energy_ALAP_kWh.push_back(x.cast()); - - for(auto x : t[3]) - obj.E_energy_ASAP_kWh.push_back(x.cast()); - - for(auto x : t[4]) - obj.E_step_ALAP.push_back(x.cast()); - - obj.canSolve_aka_pev_charging_in_prediction_window = t[5].cast(); - - return obj; - } - )); - - py::class_(m, "ES500_charge_cycling_control_boundary_point") - .def(py::init<>()) - .def(py::init()) - .def_readwrite("cycling_magnitude", &ES500_charge_cycling_control_boundary_point::cycling_magnitude) - .def_readwrite("cycling_vs_ramping", &ES500_charge_cycling_control_boundary_point::cycling_vs_ramping) - .def(py::pickle( - [](const ES500_charge_cycling_control_boundary_point &obj){ // __getstate__ - return py::make_tuple(obj.cycling_magnitude, obj.cycling_vs_ramping); - }, - [](py::tuple t){ // __setstate__ - ES500_charge_cycling_control_boundary_point obj; - obj.cycling_magnitude = t[0].cast(); - obj.cycling_vs_ramping = t[1].cast(); - return obj; - } - )); - - py::class_(m, "ES500_stop_charge_cycling_decision_parameters") - .def(py::init<>()) - .def_readwrite("next_aggregator_timestep_start_time", &ES500_stop_charge_cycling_decision_parameters::next_aggregator_timestep_start_time) - .def_readwrite("iteration", &ES500_stop_charge_cycling_decision_parameters::iteration) - .def_readwrite("is_last_iteration", &ES500_stop_charge_cycling_decision_parameters::is_last_iteration) - .def_readwrite("off_to_on_nrg_kWh", &ES500_stop_charge_cycling_decision_parameters::off_to_on_nrg_kWh) - .def_readwrite("on_to_off_nrg_kWh", &ES500_stop_charge_cycling_decision_parameters::on_to_off_nrg_kWh) - .def_readwrite("total_on_nrg_kWh", &ES500_stop_charge_cycling_decision_parameters::total_on_nrg_kWh) - .def_readwrite("cycling_vs_ramping", &ES500_stop_charge_cycling_decision_parameters::cycling_vs_ramping) - .def_readwrite("cycling_magnitude", &ES500_stop_charge_cycling_decision_parameters::cycling_magnitude) - .def_readwrite("delta_energy_kWh", &ES500_stop_charge_cycling_decision_parameters::delta_energy_kWh) - .def(py::pickle( - [](const ES500_stop_charge_cycling_decision_parameters &obj){ // __getstate__ - return py::make_tuple(obj.next_aggregator_timestep_start_time, obj.iteration, obj.is_last_iteration, obj.off_to_on_nrg_kWh, obj.on_to_off_nrg_kWh, obj.total_on_nrg_kWh, obj.cycling_vs_ramping, obj.cycling_magnitude, obj.delta_energy_kWh); - }, - [](py::tuple t){ // __setstate__ - ES500_stop_charge_cycling_decision_parameters obj; - obj.next_aggregator_timestep_start_time = t[0].cast(); - obj.iteration = t[1].cast(); - obj.is_last_iteration = t[2].cast(); - obj.off_to_on_nrg_kWh = t[3].cast(); - obj.on_to_off_nrg_kWh = t[4].cast(); - obj.total_on_nrg_kWh = t[5].cast(); - obj.cycling_vs_ramping = t[6].cast(); - obj.cycling_magnitude = t[7].cast(); - obj.delta_energy_kWh = t[8].cast(); - return obj; - } - )); - - //--------------------------------- - // PEV Ramping Parameters - //--------------------------------- - - py::class_(m, "pev_charge_ramping") - .def(py::init<>()) - .def(py::init()) - .def_readwrite("off_to_on_delay_sec", &pev_charge_ramping::off_to_on_delay_sec) - .def_readwrite("off_to_on_kW_per_sec", &pev_charge_ramping::off_to_on_kW_per_sec) - .def_readwrite("on_to_off_delay_sec", &pev_charge_ramping::on_to_off_delay_sec) - .def_readwrite("on_to_off_kW_per_sec", &pev_charge_ramping::on_to_off_kW_per_sec) - .def_readwrite("ramp_up_delay_sec", &pev_charge_ramping::ramp_up_delay_sec) - .def_readwrite("ramp_up_kW_per_sec", &pev_charge_ramping::ramp_up_kW_per_sec) - .def_readwrite("ramp_down_delay_sec", &pev_charge_ramping::ramp_down_delay_sec) - .def_readwrite("ramp_down_kW_per_sec", &pev_charge_ramping::ramp_down_kW_per_sec) - .def(py::pickle( - [](const pev_charge_ramping &obj){ // __getstate__ - return py::make_tuple(obj.off_to_on_delay_sec, obj.off_to_on_kW_per_sec, obj.on_to_off_delay_sec, obj.on_to_off_kW_per_sec, obj.ramp_up_delay_sec, obj.ramp_up_kW_per_sec, obj.ramp_down_delay_sec, obj.ramp_down_kW_per_sec); - }, - [](py::tuple t){ // __setstate__ - pev_charge_ramping obj; - obj.off_to_on_delay_sec = t[0].cast(); - obj.off_to_on_kW_per_sec = t[1].cast(); - obj.on_to_off_delay_sec = t[2].cast(); - obj.on_to_off_kW_per_sec = t[3].cast(); - obj.ramp_up_delay_sec = t[4].cast(); - obj.ramp_up_kW_per_sec = t[5].cast(); - obj.ramp_down_delay_sec = t[6].cast(); - obj.ramp_down_kW_per_sec = t[7].cast(); - return obj; - } - )); - - py::class_(m, "pev_charge_ramping_workaround") - .def(py::init<>()) - .def_readwrite("pev_charge_ramping_obj", &pev_charge_ramping_workaround::pev_charge_ramping_obj) - .def_readwrite("pev_type", &pev_charge_ramping_workaround::pev_type) - .def_readwrite("SE_type", &pev_charge_ramping_workaround::SE_type) - .def(py::pickle( - [](const pev_charge_ramping_workaround &obj){ // __getstate__ - return py::make_tuple(obj.pev_charge_ramping_obj, obj.pev_type, obj.SE_type); - }, - [](py::tuple t){ // __setstate__ - pev_charge_ramping_workaround obj; - obj.pev_charge_ramping_obj = t[0].cast(); - obj.pev_type = t[1].cast(); - obj.SE_type = t[2].cast(); - return obj; - } - )); -} diff --git a/source/charging_models/eMosaic/SE_EV_factory.cpp b/source/charging_models/eMosaic/SE_EV_factory.cpp deleted file mode 100644 index 69061db..0000000 --- a/source/charging_models/eMosaic/SE_EV_factory.cpp +++ /dev/null @@ -1,1490 +0,0 @@ - -//==================================================================================================================== -// ################################################################################################################### -//-------------------------------------------------------------------------------------------------------------------- -// eMosaic Project -//-------------------------------------------------------------------------------------------------------------------- -// ################################################################################################################### -//==================================================================================================================== - -#include "SE_EV_factory.h" - -#include "supply_equipment_load.h" -#include "supply_equipment_control.h" -#include "battery_integrate_X_in_time.h" // integrate_X_through_time -#include "helper.h" // rand_val, line_segment -#include "charge_profile_library.h" -#include "charge_profile_downsample_fragments.h" - - -#include -#include -#include // sort -#include // cout - -//############################################################################# -// Get Battery Efficiency vs P2 (Should be the same in every factory) -//############################################################################# - -void get_bat_eff_vs_P2(bool is_charging_not_discharging, battery_chemistry bat_chem, double battery_size_kWh, double& zero_slope_threashold_bat_eff_vs_P2, line_segment& bat_eff_vs_P2) -{ - // When are_losses = false - // - The bat_eff_vs_P2 line segmnet should have the following values (c=0, d=1). - - if(bat_chem == LTO) - { - if(is_charging_not_discharging) - bat_eff_vs_P2 = { 0, 6*battery_size_kWh, -0.0078354/battery_size_kWh, 0.987448}; // x_LB, x_UB, a, b - else - bat_eff_vs_P2 = {-6*battery_size_kWh, 0, -0.0102411/battery_size_kWh, 1.0109224}; // x_LB, x_UB, a, b - } - else if(bat_chem == LMO) - { - if(is_charging_not_discharging) - bat_eff_vs_P2 = { 0, 4*battery_size_kWh, -0.0079286/battery_size_kWh, 0.9936637}; // x_LB, x_UB, a, b - else - bat_eff_vs_P2 = {-4*battery_size_kWh, 0, -0.0092091/battery_size_kWh, 1.005674}; // x_LB, x_UB, a, b - } - else if(bat_chem == NMC) - { - if(is_charging_not_discharging) - bat_eff_vs_P2 = {0, 4*battery_size_kWh, -0.0053897/battery_size_kWh, 0.9908405}; // x_LB, x_UB, a, b - else - bat_eff_vs_P2 = {-4*battery_size_kWh, 0, -0.0062339/battery_size_kWh, 1.0088727}; // x_LB, x_UB, a, b - } - - //----------------------------------- - - // If the slope is smaller than 0.000001 that the 'safe' method will be used. - // Very little rational to using 0.000001 it will allow the complex method using a 1000 kWh battery pack - if(std::abs(bat_eff_vs_P2.a) < 0.000001) - zero_slope_threashold_bat_eff_vs_P2 = 0.000001; - else - zero_slope_threashold_bat_eff_vs_P2 = 0.9 * std::abs(bat_eff_vs_P2.a); -} - - -//############################################################################# -// EV Charge Model Factory -//############################################################################# - - -factory_EV_charge_model::factory_EV_charge_model() -{ - this->model_stochastic_battery_degregation = false; -} - - -void factory_EV_charge_model::set_bool_model_stochastic_battery_degregation(bool model_stochastic_battery_degregation_) -{ - this->model_stochastic_battery_degregation = model_stochastic_battery_degregation_; -} - - -void factory_EV_charge_model::initialize_custome_parameters(std::map ramping_by_pevType_only_, std::map< std::tuple, pev_charge_ramping> ramping_by_pevType_seType_) -{ - this->ramping_by_pevType_only = ramping_by_pevType_only_; - this->ramping_by_pevType_seType = ramping_by_pevType_seType_; -} - - -void factory_EV_charge_model::get_integrate_X_through_time_obj(vehicle_enum vehicle_type, supply_equipment_enum supply_equipment_type, integrate_X_through_time& return_val) -{ - // Each transition_of_X_through_time must have at least 3 segments. - - // struct transition_goto_next_segment_criteria - // { - // transition_criteria_type criteria_type; - // double criteria_value; - // bool inturupt_this_transition_if_target_X_deviation_limit_exceeded; - // double target_X_deviation_limit_to_interupt_this_transition; - // double segment_slope_X_per_sec; - // }; - - double X_deadband, target_deadband, off_deadband; - bool pos_and_neg_transitions_are_unique = false; - - std::vector goto_next_seg; - - X_deadband = 0.1; - target_deadband = 0.01; - off_deadband = 0.0001; - - goto_next_seg.clear(); - goto_next_seg.push_back({time_delay_sec, 0.1, false, 0, 0}); - goto_next_seg.push_back({time_delay_sec, 0.1, false, 0, 0}); - goto_next_seg.push_back({from_final_X, 0, false, 0, 10}); - transition_of_X_through_time default_to_pos_inf(moving_toward_pos_inf, X_deadband, goto_next_seg); - - goto_next_seg.clear(); - goto_next_seg.push_back({time_delay_sec, 0.1, false, 0, 0}); - goto_next_seg.push_back({time_delay_sec, 0.1, false, 0, 0}); - goto_next_seg.push_back({from_final_X, 0, false, 0, -10}); - transition_of_X_through_time default_to_neg_inf(moving_toward_neg_inf, X_deadband, goto_next_seg); - - //================================ - // All Default V2G Transitions - //================================ - - //---------------------- - // off_to_neg - //---------------------- - transition_of_X_through_time off_to_neg_obj; - off_to_neg_obj = default_to_neg_inf; - - //---------------------- - // neg_to_off - //---------------------- - transition_of_X_through_time neg_to_off_obj; - neg_to_off_obj = default_to_pos_inf; - - //--------------------------- - // pos_moving_toward_pos_inf - //--------------------------- - transition_of_X_through_time pos_moving_toward_pos_inf_obj; - pos_moving_toward_pos_inf_obj = default_to_pos_inf; - - //--------------------------- - // pos_moving_toward_neg_inf - //--------------------------- - transition_of_X_through_time pos_moving_toward_neg_inf_obj; - pos_moving_toward_neg_inf_obj = default_to_neg_inf; - - //--------------------------- - // neg_moving_toward_pos_inf - //--------------------------- - transition_of_X_through_time neg_moving_toward_pos_inf_obj; - neg_moving_toward_pos_inf_obj = default_to_pos_inf; - - //--------------------------- - // neg_moving_toward_neg_inf - //--------------------------- - transition_of_X_through_time neg_moving_toward_neg_inf_obj; - neg_moving_toward_neg_inf_obj = default_to_neg_inf; - - //---------------------------------- - - if(supply_equipment_is_L1(supply_equipment_type)) - { - X_deadband = 0.01; - target_deadband = 0.01; - off_deadband = 0.0001; - - //---------------------- - // off_to_pos - //---------------------- - goto_next_seg.clear(); - goto_next_seg.push_back({time_delay_sec, 4.95, false, 0, 0}); - goto_next_seg.push_back({time_delay_sec, 0.05, false, 0, 0}); - goto_next_seg.push_back({from_final_X, 0, false, 0, 0.5}); - transition_of_X_through_time off_to_pos_obj(off_to_pos, X_deadband, goto_next_seg); - - //---------------------- - // pos_to_off - //---------------------- - goto_next_seg.clear(); - goto_next_seg.push_back({time_delay_sec, 0.095, false, 0, 0}); - goto_next_seg.push_back({time_delay_sec, 0.005, false, 0, 0}); - goto_next_seg.push_back({from_final_X, 0, false, 0, -50}); - transition_of_X_through_time pos_to_off_obj(pos_to_off, X_deadband, goto_next_seg); - - //----------------------- - // moving_toward_pos_inf - //----------------------- - goto_next_seg.clear(); - goto_next_seg.push_back({time_delay_sec, 0.12, false, 0, 0}); - goto_next_seg.push_back({time_delay_sec, 0.03, false, 0, 0}); - goto_next_seg.push_back({from_final_X, 0, false, 0, 0.5}); - transition_of_X_through_time moving_toward_pos_inf_obj(moving_toward_pos_inf, X_deadband, goto_next_seg); - - //----------------------- - // moving_toward_neg_inf - //----------------------- - goto_next_seg.clear(); - goto_next_seg.push_back({time_delay_sec, 0.09, false, 0, 0}); - goto_next_seg.push_back({time_delay_sec, 0.01, false, 0, 0}); - goto_next_seg.push_back({from_final_X, 0, false, 0, -0.5}); - transition_of_X_through_time moving_toward_neg_inf_obj(moving_toward_neg_inf, X_deadband, goto_next_seg); - - //----------------------- - - integrate_X_through_time integrate_obj(target_deadband, off_deadband, pos_and_neg_transitions_are_unique, - pos_to_off_obj, neg_to_off_obj, off_to_pos_obj, off_to_neg_obj, moving_toward_pos_inf_obj, moving_toward_neg_inf_obj, - pos_moving_toward_pos_inf_obj, pos_moving_toward_neg_inf_obj, neg_moving_toward_pos_inf_obj, neg_moving_toward_neg_inf_obj); - return_val = integrate_obj; - } - else if(supply_equipment_is_L2(supply_equipment_type)) - { - X_deadband = 0.01; - target_deadband = 0.01; - off_deadband = 0.0001; - - //---------------------- - // off_to_pos - //---------------------- - goto_next_seg.clear(); - goto_next_seg.push_back({time_delay_sec, 4.95, false, 0, 0}); - goto_next_seg.push_back({time_delay_sec, 0.05, false, 0, 0}); - goto_next_seg.push_back({from_final_X, 0, false, 0, 2}); - transition_of_X_through_time off_to_pos_obj(off_to_pos, X_deadband, goto_next_seg); - - //---------------------- - // pos_to_off - //---------------------- - goto_next_seg.clear(); - goto_next_seg.push_back({time_delay_sec, 0.095, false, 0, 0}); - goto_next_seg.push_back({time_delay_sec, 0.005, false, 0, 0}); - goto_next_seg.push_back({from_final_X, 0, false, 0, -100}); - transition_of_X_through_time pos_to_off_obj(pos_to_off, X_deadband, goto_next_seg); - - //----------------------- - // moving_toward_pos_inf - //----------------------- - goto_next_seg.clear(); - goto_next_seg.push_back({time_delay_sec, 0.12, false, 0, 0}); - goto_next_seg.push_back({time_delay_sec, 0.03, false, 0, 0}); - goto_next_seg.push_back({from_final_X, 0, false, 0, 2}); - transition_of_X_through_time moving_toward_pos_inf_obj(moving_toward_pos_inf, X_deadband, goto_next_seg); - - //----------------------- - // moving_toward_neg_inf - //----------------------- - goto_next_seg.clear(); - goto_next_seg.push_back({time_delay_sec, 0.09, false, 0, 0}); - goto_next_seg.push_back({time_delay_sec, 0.01, false, 0, 0}); - goto_next_seg.push_back({from_final_X, 0, false, 0, -3}); - transition_of_X_through_time moving_toward_neg_inf_obj(moving_toward_neg_inf, X_deadband, goto_next_seg); - - //----------------------- - - integrate_X_through_time integrate_obj(target_deadband, off_deadband, pos_and_neg_transitions_are_unique, - pos_to_off_obj, neg_to_off_obj, off_to_pos_obj, off_to_neg_obj, moving_toward_pos_inf_obj, moving_toward_neg_inf_obj, - pos_moving_toward_pos_inf_obj, pos_moving_toward_neg_inf_obj, neg_moving_toward_pos_inf_obj, neg_moving_toward_neg_inf_obj); - return_val = integrate_obj; - } - else - { -/* - if(vehicle_type == phev20 || vehicle_type == phev50 || vehicle_type == phev_SUV) - std::cout << "WARNING: PHEV can not fast charge. EV_enum :" << vehicle_type << " and SE_enum:" << supply_equipment_type << std::endl; -*/ - - X_deadband = 0.01; - target_deadband = 0.01; - off_deadband = 0.0001; - - //---------------------------- - - bool use_custom_ramping_values = false; - pev_charge_ramping custom_charge_ramping; - - std::tuple pev_se_pair(vehicle_type, supply_equipment_type); - - if(this->ramping_by_pevType_seType.count(pev_se_pair) > 0) - { - use_custom_ramping_values = true; - custom_charge_ramping = this->ramping_by_pevType_seType[pev_se_pair]; - } - else if(this->ramping_by_pevType_only.count(vehicle_type) > 0) - { - use_custom_ramping_values = true; - custom_charge_ramping = this->ramping_by_pevType_only[vehicle_type]; - } - - //---------------------------- - - if(use_custom_ramping_values) - { - double delay_sec, ramping_kW_per_sec; - - //---------------------- - // pos_to_off - //---------------------- - delay_sec = custom_charge_ramping.on_to_off_delay_sec; - ramping_kW_per_sec = custom_charge_ramping.on_to_off_kW_per_sec; - - goto_next_seg.clear(); - goto_next_seg.push_back({time_delay_sec, 0.9*delay_sec, false, 0, 0}); - goto_next_seg.push_back({time_delay_sec, 0.1*delay_sec, false, 0, 0}); - goto_next_seg.push_back({from_final_X, 0, false, 0, ramping_kW_per_sec}); - transition_of_X_through_time pos_to_off_obj(pos_to_off, X_deadband, goto_next_seg); - - //---------------------- - // off_to_pos - //---------------------- - delay_sec = custom_charge_ramping.off_to_on_delay_sec; - ramping_kW_per_sec = custom_charge_ramping.off_to_on_kW_per_sec; - - goto_next_seg.clear(); - goto_next_seg.push_back({time_delay_sec, 0.9*delay_sec, false, 0, 0}); - goto_next_seg.push_back({time_delay_sec, 0.1*delay_sec, false, 0, 0}); - goto_next_seg.push_back({from_final_X, 0, false, 0, ramping_kW_per_sec}); - transition_of_X_through_time off_to_pos_obj(off_to_pos, X_deadband, goto_next_seg); - - //----------------------- - // moving_toward_pos_inf - //----------------------- - delay_sec = custom_charge_ramping.ramp_up_delay_sec; - ramping_kW_per_sec = custom_charge_ramping.ramp_up_kW_per_sec; - - goto_next_seg.clear(); - goto_next_seg.push_back({time_delay_sec, 0.9*delay_sec, false, 0, 0}); - goto_next_seg.push_back({time_delay_sec, 0.1*delay_sec, false, 0, 0}); - goto_next_seg.push_back({from_final_X, 0, false, 0, ramping_kW_per_sec}); - transition_of_X_through_time moving_toward_pos_inf_obj(moving_toward_pos_inf, X_deadband, goto_next_seg); - - //----------------------- - // moving_toward_neg_inf - //----------------------- - delay_sec = custom_charge_ramping.ramp_down_delay_sec; - ramping_kW_per_sec = custom_charge_ramping.ramp_down_kW_per_sec; - - goto_next_seg.clear(); - goto_next_seg.push_back({time_delay_sec, 0.9*delay_sec, false, 0, 0}); - goto_next_seg.push_back({time_delay_sec, 0.1*delay_sec, false, 0, 0}); - goto_next_seg.push_back({from_final_X, 0, false, 0, ramping_kW_per_sec}); - transition_of_X_through_time moving_toward_neg_inf_obj(moving_toward_neg_inf, X_deadband, goto_next_seg); - - //----------------------- - - integrate_X_through_time integrate_obj(target_deadband, off_deadband, pos_and_neg_transitions_are_unique, - pos_to_off_obj, neg_to_off_obj, off_to_pos_obj, off_to_neg_obj, moving_toward_pos_inf_obj, moving_toward_neg_inf_obj, - pos_moving_toward_pos_inf_obj, pos_moving_toward_neg_inf_obj, neg_moving_toward_pos_inf_obj, neg_moving_toward_neg_inf_obj); - return_val = integrate_obj; - } - else - { -/* - //---------------------- - // pos_to_off - //---------------------- - goto_next_seg.clear(); - - // Default Values - if(supply_equipment_type == dcfc_50) - { - goto_next_seg.push_back({time_delay_sec, 0.040, false, 0, 0}); - goto_next_seg.push_back({time_delay_sec, 0.010, false, 0, 0}); - goto_next_seg.push_back({from_final_X, 0, false, 0, -3700}); - } - else if(supply_equipment_type == xfc_150 || supply_equipment_type == xfc_350) - { - goto_next_seg.push_back({time_delay_sec, 0.040, false, 0, 0}); - goto_next_seg.push_back({time_delay_sec, 0.010, false, 0, 0}); - goto_next_seg.push_back({from_final_X, 0, false, 0, -140000}); - } - else - std::cout << "WARNING: Incomplete definition for get_integrate_X_through_time_obj in the factory_EV_charge_model for EV_enum :" << vehicle_type << " and SE_enum:" << supply_equipment_type << std::endl; - - transition_of_X_through_time pos_to_off_obj(pos_to_off, X_deadband, goto_next_seg); - - //---------------------------------------------------------------- - // off_to_pos, moving_toward_pos_inf, moving_toward_neg_inf - //---------------------------------------------------------------- - - if(vehicle_type == bev150_ld1_50kW || vehicle_type == bev250_ld1_75kW) - { - //---------------------- - // off_to_pos - //---------------------- - goto_next_seg.clear(); - goto_next_seg.push_back({time_delay_sec, 14.9, false, 0, 0}); - goto_next_seg.push_back({time_delay_sec, 0.1, false, 0, 0}); - goto_next_seg.push_back({from_final_X, 0, false, 0, 10}); - transition_of_X_through_time off_to_pos_obj(off_to_pos, X_deadband, goto_next_seg); - - //----------------------- - // moving_toward_pos_inf - //----------------------- - goto_next_seg.clear(); - goto_next_seg.push_back({time_delay_sec, 0.09, false, 0, 0}); - goto_next_seg.push_back({time_delay_sec, 0.01, false, 0, 0}); - goto_next_seg.push_back({from_final_X, 0, false, 0, 10}); - transition_of_X_through_time moving_toward_pos_inf_obj(moving_toward_pos_inf, X_deadband, goto_next_seg); - - //----------------------- - // moving_toward_neg_inf - //----------------------- - goto_next_seg.clear(); - goto_next_seg.push_back({time_delay_sec, 0.09, false, 0, 0}); - goto_next_seg.push_back({time_delay_sec, 0.01, false, 0, 0}); - goto_next_seg.push_back({from_final_X, 0, false, 0, -10}); - transition_of_X_through_time moving_toward_neg_inf_obj(moving_toward_neg_inf, X_deadband, goto_next_seg); - - //-------------------------------- - - integrate_X_through_time integrate_obj(target_deadband, off_deadband, pos_and_neg_transitions_are_unique, - pos_to_off_obj, neg_to_off_obj, off_to_pos_obj, off_to_neg_obj, moving_toward_pos_inf_obj, moving_toward_neg_inf_obj, - pos_moving_toward_pos_inf_obj, pos_moving_toward_neg_inf_obj, neg_moving_toward_pos_inf_obj, neg_moving_toward_neg_inf_obj); - return_val = integrate_obj; - } - else - { -*/ - //---------------------- - // pos_to_off - //---------------------- - goto_next_seg.clear(); - goto_next_seg.push_back({time_delay_sec, 0.040, false, 0, 0}); - goto_next_seg.push_back({time_delay_sec, 0.010, false, 0, 0}); - goto_next_seg.push_back({from_final_X, 0, false, 0, -140000}); - transition_of_X_through_time pos_to_off_obj(pos_to_off, X_deadband, goto_next_seg); - - //---------------------- - // off_to_pos - //---------------------- - goto_next_seg.clear(); - goto_next_seg.push_back({time_delay_sec, 14.9, false, 0, 0}); - goto_next_seg.push_back({time_delay_sec, 0.1, false, 0, 0}); - goto_next_seg.push_back({from_final_X, 0, false, 0, 25}); - transition_of_X_through_time off_to_pos_obj(off_to_pos, X_deadband, goto_next_seg); - - //----------------------- - // moving_toward_pos_inf - //----------------------- - goto_next_seg.clear(); - goto_next_seg.push_back({time_delay_sec, 0.09, false, 0, 0}); - goto_next_seg.push_back({time_delay_sec, 0.01, false, 0, 0}); - goto_next_seg.push_back({from_final_X, 0, false, 0, 25}); - transition_of_X_through_time moving_toward_pos_inf_obj(moving_toward_pos_inf, X_deadband, goto_next_seg); - - //----------------------- - // moving_toward_neg_inf - //----------------------- - goto_next_seg.clear(); - goto_next_seg.push_back({time_delay_sec, 0.09, false, 0, 0}); - goto_next_seg.push_back({time_delay_sec, 0.01, false, 0, 0}); - goto_next_seg.push_back({from_final_X, 0, false, 0, -25}); - transition_of_X_through_time moving_toward_neg_inf_obj(moving_toward_neg_inf, X_deadband, goto_next_seg); - - //-------------------------------- - - integrate_X_through_time integrate_obj(target_deadband, off_deadband, pos_and_neg_transitions_are_unique, - pos_to_off_obj, neg_to_off_obj, off_to_pos_obj, off_to_neg_obj, moving_toward_pos_inf_obj, moving_toward_neg_inf_obj, - pos_moving_toward_pos_inf_obj, pos_moving_toward_neg_inf_obj, neg_moving_toward_pos_inf_obj, neg_moving_toward_neg_inf_obj); - return_val = integrate_obj; -// } - } - } -} - - -void factory_EV_charge_model::get_P2_vs_puVrms(bool is_charging_not_discharging, vehicle_enum vehicle_type, supply_equipment_enum supply_equipment_type, double SE_P2_limit_atNominalV_kW, poly_function_of_x& P2_vs_puVrms) -{ // The points on the P2_vs_pu_Vrms plot are all multiplied by SE_P2_limit_atNominalV_kW - // The P2_vs_pu_Vrms plot must pass through the point (1, 1) - // At nominal voltage Vrms = 1 the final curve is 1*SE_P2_limit_atNominalV_kW or the limit at nominal voltage - - std::vector points; - - if(supply_equipment_is_L1(supply_equipment_type)) - { - points.push_back({0, 0}); - points.push_back({0.69, 0}); - points.push_back({0.7, 0.7}); - points.push_back({2, 2}); - } - else if(supply_equipment_is_L2(supply_equipment_type)) - { - points.push_back({0, 0}); - points.push_back({0.34, 0}); - points.push_back({0.35, 0.373}); - points.push_back({0.94, 1}); - points.push_back({2, 1}); - } - else - { - points.push_back({0, 0}); - points.push_back({0.79, 0}); - points.push_back({0.80, 1}); - points.push_back({1.20, 1}); - points.push_back({1.21, 0}); - points.push_back({2.00, 0}); - } - - //------------------------- - - std::vector points_scaled; - - for(point_P2_vs_puVrms x : points) - points_scaled.push_back({x.puVrms, x.P2_val * SE_P2_limit_atNominalV_kW}); - - //---------------------------------------------------- - // Convert Final Points to P2_vs_puVrms poly_function - //---------------------------------------------------- - - std::sort(points_scaled.begin(), points_scaled.end()); - - double a, b; - std::vector segments; - - for(int i=1; i& P2_vs_soc_segments) -{ - // P2 vs soc must be defigned a little below 0 soc and a little above 100 soc. - - // When a battery is approaching 0 soc or 100 soc there is a chance that energy continues to go into the battery while - // the soc is not changing (fixed at 0 or 100 soc) - // - This is caused by the fact that when a battery stopps charging/discharging there is a ramp down period. - // - This problem (for small time steps) can be mitigated by the following: - // - Make sure the P2_vs_soc curve decreases to zero as soc approaches 0 or 100 soc - // - Make sure the ramp rate is large when a battery stops charging/discharging - // - Make sure the delay is small when battery stops charging/discharging - - vehicle_enum EV_enum = vehicle_type; - supply_equipment_enum SE_enum = supply_equipment_type; - P2_vs_soc_segments.clear(); - - if(supply_equipment_is_L1(SE_enum) || supply_equipment_is_L2(SE_enum)) - { - //std::cout << "Error: P2_vs_soc is not defigned in the factory_EV_charge_model for EV_enum:" << EV_enum << " and SE_enum:" << SE_enum << std::endl; - - if(EV_enum == ld_50kWh) - { - P2_vs_soc_segments.push_back({-0.1, 97.55911529426994, 0.0, 15.8976}); - P2_vs_soc_segments.push_back({97.55911529426994, 100.1, -5.219298245875, 525.0877193245}); - zero_slope_threashold_P2_vs_soc = 4.6973684212875; - // min_non_zero_slope = 5.219298245875 - } - else if(EV_enum == ld_100kWh) - { - P2_vs_soc_segments.push_back({-0.1, 99.0805541670789, 0.0, 15.8976}); - P2_vs_soc_segments.push_back({99.0805541670789, 100.1, -10.428157891083332, 1049.1252627903334}); - zero_slope_threashold_P2_vs_soc = 9.385342101974999; - // min_non_zero_slope = 10.428157891083332 - } - else if(EV_enum == md_200kWh) - { - P2_vs_soc_segments.push_back({-0.1, 100.1, 0.0, 15.8976}); - zero_slope_threashold_P2_vs_soc = 900000.0; - // min_non_zero_slope = 1000000 - } - else if(EV_enum == hd_300kWh) - { - P2_vs_soc_segments.push_back({-0.1, 100.1, 0.0, 15.8976}); - zero_slope_threashold_P2_vs_soc = 900000.0; - // min_non_zero_slope = 1000000 - } - else if(EV_enum == hd_400kWh) - { - P2_vs_soc_segments.push_back({-0.1, 100.1, 0.0, 15.8976}); - zero_slope_threashold_P2_vs_soc = 900000.0; - // min_non_zero_slope = 1000000 - } - else if(EV_enum == hd_600kWh) - { - P2_vs_soc_segments.push_back({-0.1, 100.1, 0.0, 15.8976}); - zero_slope_threashold_P2_vs_soc = 900000.0; - // min_non_zero_slope = 1000000 - } - else - { - std::cout << "Error: P2_vs_soc is not defigned in the factory_EV_charge_model for EV_enum:" << EV_enum << " and SE_enum:" << SE_enum << std::endl; - } - } - else - { - if(SE_enum == xfc_20kW && EV_enum == ld_50kWh) - { - P2_vs_soc_segments.push_back({-0.1, 4.0, 1.575622120010188, 44.117419360285275}); - P2_vs_soc_segments.push_back({4.0, 10.0, 0.3768663594935312, 48.91244240235191}); - P2_vs_soc_segments.push_back({10.0, 89.0632790877546, 0.09560439561619848, 51.725062041125234}); - P2_vs_soc_segments.push_back({89.0632790877546, 100.1, -5.219298245874994, 525.0877193244995}); - zero_slope_threashold_P2_vs_soc = 0.08604395605457862; - // min_non_zero_slope = 0.09560439561619848 - } - else if(SE_enum == xfc_20kW && EV_enum == ld_100kWh) - { - P2_vs_soc_segments.push_back({-0.1, 4.0, 1.5756221188144741, 44.11741932680526}); - P2_vs_soc_segments.push_back({4.0, 10.0, 0.37686635920753375, 48.91244236523303}); - P2_vs_soc_segments.push_back({10.0, 94.77601010200533, 0.09560439554364591, 51.7250620018719}); - P2_vs_soc_segments.push_back({94.77601010200533, 100.1, -10.428157891083309, 1049.125262790331}); - zero_slope_threashold_P2_vs_soc = 0.08604395598928133; - // min_non_zero_slope = 0.09560439554364591 - } - else if(SE_enum == xfc_20kW && EV_enum == md_200kWh) - { - P2_vs_soc_segments.push_back({-0.1, 4.0, 1.5756221196501194, 44.11741935020333}); - P2_vs_soc_segments.push_back({4.0, 10.0, 0.37686635940740715, 48.91244239117418}); - P2_vs_soc_segments.push_back({10.0, 97.6801414822594, 0.0956043955943506, 51.72506202930474}); - P2_vs_soc_segments.push_back({97.6801414822594, 100.1, -20.877192983500027, 2100.350877298003}); - zero_slope_threashold_P2_vs_soc = 0.08604395603491555; - // min_non_zero_slope = 0.0956043955943506 - } - else if(SE_enum == xfc_20kW && EV_enum == hd_300kWh) - { - P2_vs_soc_segments.push_back({-0.1, 4.0, 2.3634331794751793, 66.17612902530499}); - P2_vs_soc_segments.push_back({4.0, 10.0, 0.5652995391111106, 73.36866358676126}); - P2_vs_soc_segments.push_back({10.0, 97.6801414822594, 0.1434065933915259, 77.58759304395711}); - P2_vs_soc_segments.push_back({97.6801414822594, 100.1, -31.315789475250043, 3150.526315947004}); - zero_slope_threashold_P2_vs_soc = 0.12906593405237332; - // min_non_zero_slope = 0.1434065933915259 - } - else if(SE_enum == xfc_20kW && EV_enum == hd_400kWh) - { - P2_vs_soc_segments.push_back({-0.1, 4.0, 2.3634331801503095, 66.17612904420865}); - P2_vs_soc_segments.push_back({4.0, 10.0, 0.5652995392725921, 73.36866360771953}); - P2_vs_soc_segments.push_back({10.0, 98.40886379832033, 0.143406593432491, 77.58759306612053}); - P2_vs_soc_segments.push_back({98.40886379832033, 100.1, -41.7543859670001, 4200.701754596011}); - zero_slope_threashold_P2_vs_soc = 0.12906593408924188; - // min_non_zero_slope = 0.143406593432491 - } - else if(SE_enum == xfc_20kW && EV_enum == hd_600kWh) - { - P2_vs_soc_segments.push_back({-0.1, 4.0, 2.3634331799252664, 66.17612903790743}); - P2_vs_soc_segments.push_back({4.0, 10.0, 0.5652995392187643, 73.36866360073344}); - P2_vs_soc_segments.push_back({10.0, 99.1392508482728, 0.14340659341883583, 77.58759305873272}); - P2_vs_soc_segments.push_back({99.1392508482728, 100.1, -62.6315789505007, 6301.052631894071}); - zero_slope_threashold_P2_vs_soc = 0.12906593407695224; - // min_non_zero_slope = 0.14340659341883583 - } - else if(SE_enum == xfc_50kW && EV_enum == ld_50kWh) - { - P2_vs_soc_segments.push_back({-0.1, 3.0, 2.3061961358536984, 57.85589134807428}); - P2_vs_soc_segments.push_back({3.0, 4.0, 1.5817920377189691, 60.02910364247847}); - P2_vs_soc_segments.push_back({4.0, 10.0, 0.55732603406617, 64.12696765708966}); - P2_vs_soc_segments.push_back({10.0, 85.73286929825494, 0.12776780662918027, 68.42254993145956}); - P2_vs_soc_segments.push_back({85.73286929825494, 93.0, -6.61343012737241, 646.3647913208841}); - P2_vs_soc_segments.push_back({93.0, 100.1, -4.02255639117857, 405.413533854857}); - zero_slope_threashold_P2_vs_soc = 0.11499102596626225; - // min_non_zero_slope = 0.12776780662918027 - } - else if(SE_enum == xfc_50kW && EV_enum == ld_100kWh) - { - P2_vs_soc_segments.push_back({-0.1, 4.0, 2.1008294917526342, 58.82322576907368}); - P2_vs_soc_segments.push_back({4.0, 10.0, 0.5024884789433757, 65.21658982031072}); - P2_vs_soc_segments.push_back({10.0, 92.85646376354687, 0.12747252739152787, 68.9667493358292}); - P2_vs_soc_segments.push_back({92.85646376354687, 100.1, -10.428157891083318, 1049.125262790332}); - zero_slope_threashold_P2_vs_soc = 0.11472527465237509; - // min_non_zero_slope = 0.12747252739152787 - } - else if(SE_enum == xfc_50kW && EV_enum == md_200kWh) - { - P2_vs_soc_segments.push_back({-0.1, 4.0, 2.100829492866826, 58.8232258002711}); - P2_vs_soc_segments.push_back({4.0, 10.0, 0.5024884792098755, 65.21658985489891}); - P2_vs_soc_segments.push_back({10.0, 96.71109148897058, 0.1274725274591341, 68.96674937240633}); - P2_vs_soc_segments.push_back({96.71109148897058, 100.1, -20.87719298350004, 2100.3508772980044}); - zero_slope_threashold_P2_vs_soc = 0.11472527471322069; - // min_non_zero_slope = 0.1274725274591341 - } - else if(SE_enum == xfc_50kW && EV_enum == hd_300kWh) - { - P2_vs_soc_segments.push_back({-0.1, 4.0, 3.151244239300239, 88.23483870040666}); - P2_vs_soc_segments.push_back({4.0, 10.0, 0.7537327188148133, 97.82488478234836}); - P2_vs_soc_segments.push_back({10.0, 96.71109148897058, 0.19120879118870113, 103.45012405860948}); - P2_vs_soc_segments.push_back({96.71109148897058, 100.1, -31.315789475250064, 3150.5263159470064}); - zero_slope_threashold_P2_vs_soc = 0.172087912069831; - // min_non_zero_slope = 0.19120879118870113 - } - else if(SE_enum == xfc_50kW && EV_enum == hd_400kWh) - { - P2_vs_soc_segments.push_back({-0.1, 4.0, 3.1512442402004135, 88.23483872561154}); - P2_vs_soc_segments.push_back({4.0, 10.0, 0.7537327190301215, 97.8248848102927}); - P2_vs_soc_segments.push_back({10.0, 97.6801414814277, 0.19120879124332119, 103.4501240881607}); - P2_vs_soc_segments.push_back({97.6801414814277, 100.1, -41.75438596700013, 4200.701754596013}); - zero_slope_threashold_P2_vs_soc = 0.17208791211898908; - // min_non_zero_slope = 0.19120879124332119 - } - else if(SE_enum == xfc_50kW && EV_enum == hd_600kWh) - { - P2_vs_soc_segments.push_back({-0.1, 4.0, 3.1512442399003553, 88.23483871720991}); - P2_vs_soc_segments.push_back({4.0, 10.0, 0.7537327189583534, 97.82488480097791}); - P2_vs_soc_segments.push_back({10.0, 98.6521408966291, 0.19120879122511444, 103.45012407831031}); - P2_vs_soc_segments.push_back({98.6521408966291, 100.1, -62.63157895050013, 6301.052631894013}); - zero_slope_threashold_P2_vs_soc = 0.172087912102603; - // min_non_zero_slope = 0.19120879122511444 - } - else if(SE_enum == xfc_90kW && EV_enum == ld_50kWh) - { - P2_vs_soc_segments.push_back({-0.1, 3.0, 4.981494058324488, 107.83924328411507}); - P2_vs_soc_segments.push_back({3.0, 10.0, 1.2532032848768888, 119.02411560445788}); - P2_vs_soc_segments.push_back({10.0, 74.82301745936606, 0.24450387431895568, 129.1111097100372}); - P2_vs_soc_segments.push_back({74.82301745936606, 93.0, -6.386639676432694, 625.2732793834905}); - P2_vs_soc_segments.push_back({93.0, 100.1, -4.02255639117857, 405.413533854857}); - zero_slope_threashold_P2_vs_soc = 0.2200534868870601; - // min_non_zero_slope = 0.24450387431895568 - } - else if(SE_enum == xfc_90kW && EV_enum == ld_100kWh) - { - P2_vs_soc_segments.push_back({-0.1, 3.0, 4.208670382432602, 109.02358567178142}); - P2_vs_soc_segments.push_back({3.0, 4.0, 3.2576382654535037, 111.87668202271871}); - P2_vs_soc_segments.push_back({4.0, 10.0, 1.0141592452541937, 120.85059810351595}); - P2_vs_soc_segments.push_back({10.0, 86.43691960693974, 0.23939864534422806, 128.5982041026156}); - P2_vs_soc_segments.push_back({86.43691960693974, 93.0, -13.213633389200002, 1291.4368525421003}); - P2_vs_soc_segments.push_back({93.0, 100.1, -8.037067666357142, 810.016240317714}); - zero_slope_threashold_P2_vs_soc = 0.21545878080980527; - // min_non_zero_slope = 0.23939864534422806 - } - else if(SE_enum == xfc_90kW && EV_enum == md_200kWh) - { - P2_vs_soc_segments.push_back({-0.1, 4.0, 3.939055299125298, 110.29354837550832}); - P2_vs_soc_segments.push_back({4.0, 10.0, 0.9421658985185153, 122.28110597793544}); - P2_vs_soc_segments.push_back({10.0, 93.34245041357688, 0.23901098898587644, 129.31265507326182}); - P2_vs_soc_segments.push_back({93.34245041357688, 100.1, -20.877192983499995, 2100.350877298}); - zero_slope_threashold_P2_vs_soc = 0.2151098900872888; - // min_non_zero_slope = 0.23901098898587644 - } - else if(SE_enum == xfc_90kW && EV_enum == hd_300kWh) - { - P2_vs_soc_segments.push_back({-0.1, 4.0, 5.908582948687947, 165.44032256326247}); - P2_vs_soc_segments.push_back({4.0, 10.0, 1.413248847777773, 183.42165896690315}); - P2_vs_soc_segments.push_back({10.0, 93.34245041357688, 0.35851648347881465, 193.96898260989272}); - P2_vs_soc_segments.push_back({93.34245041357688, 100.1, -31.315789475249993, 3150.5263159469996}); - zero_slope_threashold_P2_vs_soc = 0.3226648351309332; - // min_non_zero_slope = 0.35851648347881465 - } - else if(SE_enum == xfc_90kW && EV_enum == hd_400kWh) - { - P2_vs_soc_segments.push_back({-0.1, 4.0, 5.908582950375772, 165.44032261052163}); - P2_vs_soc_segments.push_back({4.0, 10.0, 1.4132488481814813, 183.4216590192988}); - P2_vs_soc_segments.push_back({10.0, 95.14264129936262, 0.35851648358122695, 193.96898266530133}); - P2_vs_soc_segments.push_back({95.14264129936262, 100.1, -41.75438596700004, 4200.701754596004}); - zero_slope_threashold_P2_vs_soc = 0.32266483522310424; - // min_non_zero_slope = 0.35851648358122695 - } - else if(SE_enum == xfc_90kW && EV_enum == hd_600kWh) - { - P2_vs_soc_segments.push_back({-0.1, 4.0, 5.9085829498131694, 165.44032259476856}); - P2_vs_soc_segments.push_back({4.0, 10.0, 1.4132488480469085, 183.4216590018336}); - P2_vs_soc_segments.push_back({10.0, 96.95307821277244, 0.3585164835470898, 193.96898264683182}); - P2_vs_soc_segments.push_back({96.95307821277244, 100.1, -62.63157895049982, 6301.052631893983}); - zero_slope_threashold_P2_vs_soc = 0.3226648351923808; - // min_non_zero_slope = 0.3585164835470898 - } - else if(SE_enum == xfc_150kW && EV_enum == ld_50kWh) - { - P2_vs_soc_segments.push_back({-0.1, 3.0, 6.2649122810149995, 141.74736842814}); - P2_vs_soc_segments.push_back({3.0, 10.0, 1.6368421053449982, 155.63157895515002}); - P2_vs_soc_segments.push_back({10.0, 68.08256207172734, 0.31772853187184213, 168.82271468988156}); - P2_vs_soc_segments.push_back({68.08256207172734, 93.0, -6.386639676432694, 625.2732793834906}); - P2_vs_soc_segments.push_back({93.0, 100.1, -4.02255639117857, 405.413533854857}); - zero_slope_threashold_P2_vs_soc = 0.28595567868465793; - // min_non_zero_slope = 0.31772853187184213 - } - else if(SE_enum == xfc_150kW && EV_enum == ld_100kWh) - { - P2_vs_soc_segments.push_back({-0.1, 3.0, 6.236665772849031, 142.42035984410856}); - P2_vs_soc_segments.push_back({3.0, 4.0, 2.7636455073737323, 152.83942064053446}); - P2_vs_soc_segments.push_back({4.0, 10.0, 1.5191296201801892, 157.8174841893086}); - P2_vs_soc_segments.push_back({10.0, 82.87656185028212, 0.3200969792170903, 169.80781059893962}); - P2_vs_soc_segments.push_back({82.87656185028212, 93.0, -13.213633389199996, 1291.4368525420996}); - P2_vs_soc_segments.push_back({93.0, 100.1, -8.037067666357142, 810.016240317714}); - zero_slope_threashold_P2_vs_soc = 0.28808728129538125; - // min_non_zero_slope = 0.3200969792170903 - } - else if(SE_enum == xfc_150kW && EV_enum == md_200kWh) - { - P2_vs_soc_segments.push_back({-0.1, 4.0, 5.252073732167062, 147.05806450067774}); - P2_vs_soc_segments.push_back({4.0, 10.0, 1.2562211980246936, 163.04147463724723}); - P2_vs_soc_segments.push_back({10.0, 90.95798438810432, 0.3186813186478349, 172.4168734310158}); - P2_vs_soc_segments.push_back({90.95798438810432, 100.1, -20.87719298350002, 2100.350877298002}); - zero_slope_threashold_P2_vs_soc = 0.2868131867830514; - // min_non_zero_slope = 0.3186813186478349 - } - else if(SE_enum == xfc_150kW && EV_enum == hd_300kWh) - { - P2_vs_soc_segments.push_back({-0.1, 4.0, 7.878110598250593, 220.58709675101662}); - P2_vs_soc_segments.push_back({4.0, 10.0, 1.8843317970370403, 244.56221195587082}); - P2_vs_soc_segments.push_back({10.0, 90.95798438810432, 0.4780219779717523, 258.6253101465237}); - P2_vs_soc_segments.push_back({90.95798438810432, 100.1, -31.31578947525003, 3150.5263159470032}); - zero_slope_threashold_P2_vs_soc = 0.43021978017457707; - // min_non_zero_slope = 0.4780219779717523 - } - else if(SE_enum == xfc_150kW && EV_enum == hd_400kWh) - { - P2_vs_soc_segments.push_back({-0.1, 4.0, 7.87811060050103, 220.58709681402883}); - P2_vs_soc_segments.push_back({4.0, 10.0, 1.8843317975753058, 244.56221202573172}); - P2_vs_soc_segments.push_back({10.0, 93.34245041152576, 0.4780219781083028, 258.6253102204018}); - P2_vs_soc_segments.push_back({93.34245041152576, 100.1, -41.754385967000005, 4200.701754596001}); - zero_slope_threashold_P2_vs_soc = 0.43021978029747254; - // min_non_zero_slope = 0.4780219781083028 - } - else if(SE_enum == xfc_150kW && EV_enum == hd_600kWh) - { - P2_vs_soc_segments.push_back({-0.1, 4.0, 7.878110599750884, 220.58709679302478}); - P2_vs_soc_segments.push_back({4.0, 10.0, 1.884331797395882, 244.56221200244477}); - P2_vs_soc_segments.push_back({10.0, 95.74497751202671, 0.4780219780627865, 258.62531019577574}); - P2_vs_soc_segments.push_back({95.74497751202671, 100.1, -62.6315789504999, 6301.05263189399}); - zero_slope_threashold_P2_vs_soc = 0.43021978025650787; - // min_non_zero_slope = 0.4780219780627865 - } - else if(SE_enum == xfc_180kW && EV_enum == ld_50kWh) - { - P2_vs_soc_segments.push_back({-0.1, 3.0, 6.2649122810149995, 141.74736842814}); - P2_vs_soc_segments.push_back({3.0, 10.0, 1.6368421053449982, 155.63157895515002}); - P2_vs_soc_segments.push_back({10.0, 68.08256207172734, 0.31772853187184213, 168.82271468988156}); - P2_vs_soc_segments.push_back({68.08256207172734, 93.0, -6.386639676432694, 625.2732793834906}); - P2_vs_soc_segments.push_back({93.0, 100.1, -4.02255639117857, 405.413533854857}); - zero_slope_threashold_P2_vs_soc = 0.28595567868465793; - // min_non_zero_slope = 0.31772853187184213 - } - else if(SE_enum == xfc_180kW && EV_enum == ld_100kWh) - { - P2_vs_soc_segments.push_back({-0.1, 3.0, 9.962567056607753, 215.7149074441158}); - P2_vs_soc_segments.push_back({3.0, 10.0, 2.5067524323892307, 238.08235131677137}); - P2_vs_soc_segments.push_back({10.0, 74.79765954931783, 0.48906314990897837, 258.2592441415739}); - P2_vs_soc_segments.push_back({74.79765954931783, 93.0, -12.760506068403844, 1249.2960117080574}); - P2_vs_soc_segments.push_back({93.0, 100.1, -8.037067666357142, 810.016240317714}); - zero_slope_threashold_P2_vs_soc = 0.44015683491808055; - // min_non_zero_slope = 0.48906314990897837 - } - else if(SE_enum == xfc_180kW && EV_enum == md_200kWh) - { - P2_vs_soc_segments.push_back({-0.1, 3.0, 8.413586383851928, 218.0648556674365}); - P2_vs_soc_segments.push_back({3.0, 4.0, 6.524765254935051, 223.73131905418714}); - P2_vs_soc_segments.push_back({4.0, 10.0, 2.0273159854486114, 241.7211161321329}); - P2_vs_soc_segments.push_back({10.0, 86.44766494285561, 0.47879189283242996, 257.2063570582947}); - P2_vs_soc_segments.push_back({86.44766494285561, 93.0, -26.4537205094896, 2585.459165283533}); - P2_vs_soc_segments.push_back({93.0, 100.1, -16.09022556471428, 1621.654135419428}); - zero_slope_threashold_P2_vs_soc = 0.430912703549187; - // min_non_zero_slope = 0.47879189283242996 - } - else if(SE_enum == xfc_180kW && EV_enum == hd_300kWh) - { - P2_vs_soc_segments.push_back({-0.1, 3.0, 12.620379575777893, 327.0972835011547}); - P2_vs_soc_segments.push_back({3.0, 4.0, 9.787147882402577, 335.59697858128067}); - P2_vs_soc_segments.push_back({4.0, 10.0, 3.040973978172917, 362.5816741981993}); - P2_vs_soc_segments.push_back({10.0, 86.44766494285561, 0.7181878392486449, 385.80953558744204}); - P2_vs_soc_segments.push_back({86.44766494285561, 93.0, -39.6805807642344, 3878.188747925299}); - P2_vs_soc_segments.push_back({93.0, 100.1, -24.13533834707142, 2432.481203129142}); - zero_slope_threashold_P2_vs_soc = 0.6463690553237804; - // min_non_zero_slope = 0.7181878392486449 - } - else if(SE_enum == xfc_180kW && EV_enum == hd_400kWh) - { - P2_vs_soc_segments.push_back({-0.1, 4.0, 11.817165900751544, 330.88064522104327}); - P2_vs_soc_segments.push_back({4.0, 10.0, 2.8264976963629627, 366.8433180385976}); - P2_vs_soc_segments.push_back({10.0, 89.77246075003511, 0.7170329671624539, 387.93796533060265}); - P2_vs_soc_segments.push_back({89.77246075003511, 100.1, -41.754385966999955, 4200.701754595995}); - zero_slope_threashold_P2_vs_soc = 0.6453296704462085; - // min_non_zero_slope = 0.7170329671624539 - } - else if(SE_enum == xfc_180kW && EV_enum == hd_600kWh) - { - P2_vs_soc_segments.push_back({-0.1, 4.0, 11.817165899626339, 330.8806451895371}); - P2_vs_soc_segments.push_back({4.0, 10.0, 2.826497696093817, 366.8433180036672}); - P2_vs_soc_segments.push_back({10.0, 93.34245041220946, 0.7170329670941796, 387.93796529366364}); - P2_vs_soc_segments.push_back({93.34245041220946, 100.1, -62.631578950499936, 6301.052631893994}); - zero_slope_threashold_P2_vs_soc = 0.6453296703847616; - // min_non_zero_slope = 0.7170329670941796 - } - else if(SE_enum == xfc_450kW && EV_enum == ld_50kWh) - { - P2_vs_soc_segments.push_back({-0.1, 3.0, 6.2649122810149995, 141.74736842814}); - P2_vs_soc_segments.push_back({3.0, 10.0, 1.6368421053449982, 155.63157895515002}); - P2_vs_soc_segments.push_back({10.0, 68.08256207172734, 0.31772853187184213, 168.82271468988156}); - P2_vs_soc_segments.push_back({68.08256207172734, 93.0, -6.386639676432694, 625.2732793834906}); - P2_vs_soc_segments.push_back({93.0, 100.1, -4.02255639117857, 405.413533854857}); - zero_slope_threashold_P2_vs_soc = 0.28595567868465793; - // min_non_zero_slope = 0.31772853187184213 - } - else if(SE_enum == xfc_450kW && EV_enum == ld_100kWh) - { - P2_vs_soc_segments.push_back({-0.1, 3.0, 12.51729473245665, 283.21124200604}); - P2_vs_soc_segments.push_back({3.0, 10.0, 3.2704105251700035, 310.95189462789995}); - P2_vs_soc_segments.push_back({10.0, 68.08256207172734, 0.6348216064257896, 337.3077838153421}); - P2_vs_soc_segments.push_back({68.08256207172734, 93.0, -12.76050606840385, 1249.2960117080581}); - P2_vs_soc_segments.push_back({93.0, 100.1, -8.037067666357142, 810.016240317714}); - zero_slope_threashold_P2_vs_soc = 0.5713394457832106; - // min_non_zero_slope = 0.6348216064257896 - } - else if(SE_enum == xfc_450kW && EV_enum == md_200kWh) - { - P2_vs_soc_segments.push_back({-0.1, 3.0, 19.92597622893681, 431.35697302123805}); - P2_vs_soc_segments.push_back({3.0, 10.0, 5.01281313820391, 476.0964622934368}); - P2_vs_soc_segments.push_back({10.0, 74.82301746515543, 0.9780154970269997, 516.4444387052058}); - P2_vs_soc_segments.push_back({74.82301746515543, 93.0, -25.546558705730774, 2501.0931175339624}); - P2_vs_soc_segments.push_back({93.0, 100.1, -16.09022556471428, 1621.654135419428}); - zero_slope_threashold_P2_vs_soc = 0.8802139473242998; - // min_non_zero_slope = 0.9780154970269997 - } - else if(SE_enum == xfc_450kW && EV_enum == hd_300kWh) - { - P2_vs_soc_segments.push_back({-0.1, 3.0, 29.888964343405213, 647.035459531857}); - P2_vs_soc_segments.push_back({3.0, 10.0, 7.519219707305864, 714.1446934401552}); - P2_vs_soc_segments.push_back({10.0, 74.82301746515543, 1.4670232455404997, 774.6666580578087}); - P2_vs_soc_segments.push_back({74.82301746515543, 93.0, -38.31983805859616, 3751.6396763009434}); - P2_vs_soc_segments.push_back({93.0, 100.1, -24.13533834707142, 2432.481203129142}); - zero_slope_threashold_P2_vs_soc = 1.3203209209864497; - // min_non_zero_slope = 1.4670232455404997 - } - else if(SE_enum == xfc_450kW && EV_enum == hd_400kWh) - { - P2_vs_soc_segments.push_back({-0.1, 3.0, 28.995145127083383, 636.5103566468297}); - P2_vs_soc_segments.push_back({3.0, 4.0, 10.085573957279466, 693.2390701562415}); - P2_vs_soc_segments.push_back({4.0, 10.0, 7.084454224656581, 705.243549086733}); - P2_vs_soc_segments.push_back({10.0, 81.12808975550497, 1.4417737895737657, 761.6703534375612}); - P2_vs_soc_segments.push_back({81.12808975550497, 93.0, -52.90744101897925, 5170.9183305670695}); - P2_vs_soc_segments.push_back({93.0, 100.1, -32.18045112942856, 3243.308270838856}); - zero_slope_threashold_P2_vs_soc = 1.297596410616389; - // min_non_zero_slope = 1.4417737895737657 - } - else if(SE_enum == xfc_450kW && EV_enum == hd_600kWh) - { - P2_vs_soc_segments.push_back({-0.1, 3.0, 25.24075915850751, 654.1945671167897}); - P2_vs_soc_segments.push_back({3.0, 4.0, 19.57429576311191, 671.1939573029765}); - P2_vs_soc_segments.push_back({4.0, 10.0, 6.0819479580768, 725.163348523117}); - P2_vs_soc_segments.push_back({10.0, 86.44766494081131, 1.4363756787739141, 771.6190713161458}); - P2_vs_soc_segments.push_back({86.44766494081131, 93.0, -79.3611615284689, 7756.377495850607}); - P2_vs_soc_segments.push_back({93.0, 100.1, -48.27067669414284, 4864.962406258284}); - zero_slope_threashold_P2_vs_soc = 1.2927381108965228; - // min_non_zero_slope = 1.4363756787739141 - } - else - { - std::cout << "Error: P2_vs_soc is not defigned in the factory_EV_charge_model for EV_enum:" << EV_enum << " and SE_enum:" << SE_enum << std::endl; - } - } -} - - -void factory_EV_charge_model::get_E1_Energy_limit(bool is_charging_not_discharging, bool are_battery_losses, vehicle_enum vehicle_type, supply_equipment_enum supply_equipment_type, - double battery_size_with_degredation_kWh, double SE_P2_limit_atNominalV_kW, double recalc_exponent_threashold, - double max_P2kW_error_before_reappling_P2kW_limit_to_P2_vs_soc_segments, line_segment& bat_eff_vs_P2, - calculate_E1_energy_limit& return_val) -{ - poly_function_of_x P2_vs_puVrms; - double zero_slope_threashold_P2_vs_soc; - std::vector P2_vs_soc_segments; - - this->get_P2_vs_puVrms(is_charging_not_discharging, vehicle_type, supply_equipment_type, SE_P2_limit_atNominalV_kW, P2_vs_puVrms); - this->get_P2_vs_soc(is_charging_not_discharging, vehicle_type, supply_equipment_type, zero_slope_threashold_P2_vs_soc, P2_vs_soc_segments); - - //-------------------------------- - - algorithm_P2_vs_soc *X; - calc_E1_energy_limit *Y; - - if(are_battery_losses) - X = new algorithm_P2_vs_soc_losses(battery_size_with_degredation_kWh, recalc_exponent_threashold, zero_slope_threashold_P2_vs_soc, bat_eff_vs_P2); - else - X = new algorithm_P2_vs_soc_no_losses(battery_size_with_degredation_kWh, recalc_exponent_threashold, zero_slope_threashold_P2_vs_soc); - - if(is_charging_not_discharging) - Y = new calc_E1_energy_limit_charging(X); - else - Y = new calc_E1_energy_limit_discharging(X); - - //-------------------------------- - - calculate_E1_energy_limit tmp(is_charging_not_discharging, max_P2kW_error_before_reappling_P2kW_limit_to_P2_vs_soc_segments, Y, P2_vs_puVrms, P2_vs_soc_segments); - - return_val = tmp; -} - - -vehicle_charge_model* factory_EV_charge_model::alloc_get_EV_charge_model(const charge_event_data& event, supply_equipment_enum supply_equipment_type, double SE_P2_limit_kW) -{ - double battery_size_kWh, recalc_exponent_threashold, max_P2kW_error_before_reappling_P2kW_limit_to_P2_vs_soc_segments, soc_of_full_battery; - double battery_size_with_degredation_kWh; - bool will_never_discharge, are_battery_losses; - battery_chemistry bat_chem; - - soc_of_full_battery = 99.8; - recalc_exponent_threashold = 0.00000001; // Should be very small - max_P2kW_error_before_reappling_P2kW_limit_to_P2_vs_soc_segments = 0.5; - - will_never_discharge = true; - are_battery_losses = true; - - get_pev_battery_info(event.vehicle_type, bat_chem, battery_size_kWh, battery_size_with_degredation_kWh); - - //--------------------------------- - - integrate_X_through_time get_next_P2; - this->get_integrate_X_through_time_obj(event.vehicle_type, supply_equipment_type, get_next_P2); - - //--------------------------------- - - double zero_slope_threashold_bat_eff_vs_P2, zst_A, zst_B; - line_segment bat_eff_vs_P2_charging; - line_segment bat_eff_vs_P2_discharging; - - get_bat_eff_vs_P2(true, bat_chem, battery_size_kWh, zst_A, bat_eff_vs_P2_charging); - get_bat_eff_vs_P2(false, bat_chem, battery_size_kWh, zst_B, bat_eff_vs_P2_discharging); - - zero_slope_threashold_bat_eff_vs_P2 = (zst_A < zst_B) ? zst_A : zst_B; - - //--------------------------------- - - double final_bat_size_kWh; - - if(this->model_stochastic_battery_degregation) - final_bat_size_kWh = battery_size_with_degredation_kWh; - else - final_bat_size_kWh = battery_size_kWh; - - //--------------------------------- - - calculate_E1_energy_limit get_E1_limits_charging; - calculate_E1_energy_limit get_E1_limits_discharging; - - this->get_E1_Energy_limit(true, are_battery_losses, event.vehicle_type, supply_equipment_type, final_bat_size_kWh, SE_P2_limit_kW, recalc_exponent_threashold, - max_P2kW_error_before_reappling_P2kW_limit_to_P2_vs_soc_segments, bat_eff_vs_P2_charging, get_E1_limits_charging); - - this->get_E1_Energy_limit(false, are_battery_losses, event.vehicle_type, supply_equipment_type, final_bat_size_kWh, SE_P2_limit_kW, recalc_exponent_threashold, - max_P2kW_error_before_reappling_P2kW_limit_to_P2_vs_soc_segments, bat_eff_vs_P2_discharging, get_E1_limits_discharging); - - //--------------------------------- - - battery bat(final_bat_size_kWh, event.arrival_SOC, will_never_discharge, zero_slope_threashold_bat_eff_vs_P2, - bat_eff_vs_P2_charging, bat_eff_vs_P2_discharging, get_E1_limits_charging, get_E1_limits_discharging, get_next_P2); - - //--------------------------------- - - return new vehicle_charge_model(event, bat, soc_of_full_battery); -} - - -bool get_pev_battery_info(vehicle_enum vehicle_type, battery_chemistry& bat_chem, double& battery_size_kWh, double& battery_size_with_stochastic_degredation_kWh) -{ - // Battery Size here is Usable Battery Size - - bool is_success = true; - - if(vehicle_type == ld_50kWh) - { - bat_chem = NMC; - battery_size_kWh = 50; - } - else if(vehicle_type == ld_100kWh) - { - bat_chem = NMC; - battery_size_kWh = 100; - } - else if(vehicle_type == md_200kWh) - { - bat_chem = NMC; - battery_size_kWh = 200; - } - else if(vehicle_type == hd_300kWh) - { - bat_chem = NMC; - battery_size_kWh = 300; - } - else if(vehicle_type == hd_400kWh) - { - bat_chem = NMC; - battery_size_kWh = 400; - } - else if(vehicle_type == hd_600kWh) - { - bat_chem = NMC; - battery_size_kWh = 600; - } - else - { - is_success = false; - std::cout << "WARNING: get_pev_battery_info is not defigned in the factory_EV_charge_model for EV_enum:" << vehicle_type << std::endl; - } - - //--------------------------- - - if(bat_chem == LTO) - battery_size_with_stochastic_degredation_kWh = rand_val::rand_range(0.95, 1.0) * battery_size_kWh; - - else if(bat_chem == LMO) - battery_size_with_stochastic_degredation_kWh = rand_val::rand_range(0.85, 1.0) * battery_size_kWh; - - else if(bat_chem == NMC) - battery_size_with_stochastic_degredation_kWh = rand_val::rand_range(0.90, 1.0) * battery_size_kWh; - - //--------------------------- - - return is_success; -} - - -//############################################################################# -// Supply Equipment Charge Model Factory -//############################################################################# - -factory_supply_equipment_model::factory_supply_equipment_model(charge_event_queuing_inputs& CE_queuing_inputs_) -{ - this->CE_queuing_inputs = CE_queuing_inputs_; -} - - -void factory_supply_equipment_model::get_supply_equipment_model(bool building_charge_profile_library, SE_configuration& SE_config, get_base_load_forecast* baseLD_forecaster, manage_L2_control_strategy_parameters* manage_L2_control, supply_equipment& return_val) -{ - double P2_limit_kW, standby_acP_kW, standby_acQ_kVAR; - - supply_equipment_enum SE_enum = SE_config.supply_equipment_type; - - standby_acP_kW = 0; - standby_acQ_kVAR = 0; - -/* - if(SE_enum == L1_1440) - { - P2_limit_kW = 1.289338; - } - else if(SE_enum == L2_3600) - { - P2_limit_kW = 3.30192; - } - else if(SE_enum == L2_7200) - { - P2_limit_kW = 6.624; - } - else if(SE_enum == L2_9600) - { - P2_limit_kW = 8.832; - } - else if(SE_enum == L2_11520) - { - P2_limit_kW = 10.5984; - } - else if(SE_enum == L2_17280) - { - P2_limit_kW = 15.8976; - } - else if(SE_enum == dcfc_50) - { - P2_limit_kW = 50; - standby_acP_kW = 0.100; - standby_acQ_kVAR = -0.590; - } - else if(SE_enum == xfc_150) - { - P2_limit_kW = 150; - standby_acP_kW = 0.170; - standby_acQ_kVAR = -0.445; - } - else if(SE_enum == xfc_350) - { - P2_limit_kW = 350; - standby_acP_kW = 0.170; - standby_acQ_kVAR = -0.445; - } - else - std::cout << "WARNING: get_supply_equipment_model is not defigned in the factory_supply_equipment_model for SE_enum:" << SE_enum << std::endl; -*/ - - if(SE_enum == L2_7200W) - { - P2_limit_kW = 6.624; - standby_acP_kW = 0; - standby_acQ_kVAR = 0; - } - else if(SE_enum == L2_17280W) - { - P2_limit_kW = 15.8976; - standby_acP_kW = 0; - standby_acQ_kVAR = 0; - } - else if(SE_enum == xfc_20kW) - { - P2_limit_kW = 20; - standby_acP_kW = 0.100; - standby_acQ_kVAR = -0.590; - } - else if(SE_enum == xfc_50kW) - { - P2_limit_kW = 50; - standby_acP_kW = 0.100; - standby_acQ_kVAR = -0.590; - } - else if(SE_enum == xfc_90kW) - { - P2_limit_kW = 90; - standby_acP_kW = 0.100; - standby_acQ_kVAR = -0.590; - } - else if(SE_enum == xfc_150kW) - { - P2_limit_kW = 150; - standby_acP_kW = 0.170; - standby_acQ_kVAR = -0.445; - } - else if(SE_enum == xfc_180kW) - { - P2_limit_kW = 180; - standby_acP_kW = 0.170; - standby_acQ_kVAR = -0.445; - } - else if(SE_enum == xfc_450kW) - { - P2_limit_kW = 450; - standby_acP_kW = 0.170; - standby_acQ_kVAR = -0.445; - } - else - std::cout << "WARNING: get_supply_equipment_model is not defigned in the factory_supply_equipment_model for SE_enum:" << SE_enum << std::endl; - - //============================ - - supply_equipment_load load(P2_limit_kW, standby_acP_kW, standby_acQ_kVAR, SE_config, this->CE_queuing_inputs); - supply_equipment_control control(building_charge_profile_library, SE_config, baseLD_forecaster, manage_L2_control); - supply_equipment SE(SE_config, control, load); - - return_val = SE; -} - - -//############################################################################# -// AC to DC Converter Factory -//############################################################################# - -ac_to_dc_converter* factory_ac_to_dc_converter::alloc_get_ac_to_dc_converter(ac_to_dc_converter_enum converter_type, supply_equipment_enum SE_type, - vehicle_enum vehicle_type, charge_event_P3kW_limits& P3kW_limits) -{ - std::vector inv_eff_from_P2_vec; - std::vector inv_pf_from_P3_vec; - - //============================================================= - //============================================================= - - if(supply_equipment_is_L1(SE_type)) - { - // {x_LB, x_UB, degree, a, b, c, d, e} degree = {first, second, third, fourth} - inv_eff_from_P2_vec.clear(); - inv_eff_from_P2_vec.push_back({-20, 0, first, (1.1-1)/(-20-0), 1, 0, 0, 0}); - inv_eff_from_P2_vec.push_back({0, 1.4, second, -0.09399, 0.26151, 0.71348, 0, 0}); - inv_eff_from_P2_vec.push_back({1.4, 20, first, 0, 0.895374, 0, 0, 0}); - - inv_pf_from_P3_vec.clear(); - inv_pf_from_P3_vec.push_back({-20, 0, first, (-1+0.9)/(-20-0), -0.90, 0, 0, 0}); - inv_pf_from_P3_vec.push_back({0, 1.3, first, -0.0138, -0.9793, 0, 0, 0}); - inv_pf_from_P3_vec.push_back({1.3, 20, first, 0, -0.99724, 0, 0, 0}); - } - else if(supply_equipment_is_L2(SE_type)) - { - // {x_LB, x_UB, degree, a, b, c, d, e} degree = {first, second, third, fourth} - inv_eff_from_P2_vec.clear(); - inv_eff_from_P2_vec.push_back({-20, 0, first, (1.1-1)/(-20-0), 1, 0, 0, 0}); - inv_eff_from_P2_vec.push_back({0, 4, second, -0.005, 0.045, 0.82, 0, 0}); - inv_eff_from_P2_vec.push_back({4, 20, first, 0, 0.92, 0, 0, 0}); - - inv_pf_from_P3_vec.clear(); - inv_pf_from_P3_vec.push_back({-20, 0, first, (-1+0.9)/(-20-0), -0.90, 0, 0, 0}); - inv_pf_from_P3_vec.push_back({0, 6, third, -0.00038737, 0.00591216, -0.03029164, -0.9462841, 0}); - inv_pf_from_P3_vec.push_back({6, 20, first, 0, -0.9988681, 0, 0, 0}); - } - else if(SE_type == xfc_20kW) // Copied data from L2 Charger - { - // {x_LB, x_UB, degree, a, b, c, d, e} degree = {first, second, third, fourth} - inv_eff_from_P2_vec.clear(); - inv_eff_from_P2_vec.push_back({-30, 0, first, (1.1-1)/(-30-0), 1, 0, 0, 0}); - inv_eff_from_P2_vec.push_back({0, 4, second, -0.005, 0.045, 0.82, 0, 0}); - inv_eff_from_P2_vec.push_back({4, 30, first, 0, 0.92, 0, 0, 0}); - - inv_pf_from_P3_vec.clear(); - inv_pf_from_P3_vec.push_back({-30, 0, first, (-1+0.9)/(-30-0), -0.90, 0, 0, 0}); - inv_pf_from_P3_vec.push_back({0, 6, third, -0.00038737, 0.00591216, -0.03029164, -0.9462841, 0}); - inv_pf_from_P3_vec.push_back({6, 30, first, 0, -0.9988681, 0, 0, 0}); - } - else if(SE_type == xfc_50kW || SE_type == xfc_90kW) - { - // {x_LB, x_UB, degree, a, b, c, d, e} degree = {first, second, third, fourth} - inv_eff_from_P2_vec.clear(); - inv_eff_from_P2_vec.push_back({-1000, 0, first, (1.1-1)/1000, 1, 0, 0, 0}); - inv_eff_from_P2_vec.push_back({0, 10, second, -0.0023331, 0.04205, 0.7284, 0, 0}); - inv_eff_from_P2_vec.push_back({10, 20, second, -0.00035233, 0.01454, 0.7755, 0, 0}); - inv_eff_from_P2_vec.push_back({20, 30, second, -0.00015968, 0.01006, 0.7698, 0, 0}); - inv_eff_from_P2_vec.push_back({30, 40, second, -0.000083167, 0.007314, 0.7697, 0, 0}); - inv_eff_from_P2_vec.push_back({40, 1000, first, 0, 0.9292, 0, 0, 0}); - - // {x_LB, x_UB, degree, a, b, c, d, e} degree = {first, second, third, fourth} - inv_pf_from_P3_vec.clear(); - inv_pf_from_P3_vec.push_back({-1000, 0, first, (0.9-1)/1000, 0.90, 0, 0, 0}); - inv_pf_from_P3_vec.push_back({0, 10, second, 0.0037161, -0.1109, -0.06708, 0, 0}); - inv_pf_from_P3_vec.push_back({10, 18.6, first, -0.01474, -0.6568, 0, 0, 0}); - inv_pf_from_P3_vec.push_back({18.6, 28, first, -0.003804, -0.8601, 0, 0, 0}); - inv_pf_from_P3_vec.push_back({28, 42, first, -0.001603, -0.9218, 0, 0, 0}); - inv_pf_from_P3_vec.push_back({42, 1000, first, 0, -0.99, 0, 0, 0}); - } - else if(SE_type == xfc_150kW || SE_type == xfc_180kW || SE_type == xfc_450kW) - { - // {x_LB, x_UB, degree, a, b, c, d, e} degree = {first, second, third, fourth} - inv_eff_from_P2_vec.clear(); - inv_eff_from_P2_vec.push_back({-1000, 0, first, (1.1-1)/1000, 1, 0, 0, 0}); - inv_eff_from_P2_vec.push_back({0, 25, second, -0.0007134, 0.03554, 0.4724, 0, 0}); - inv_eff_from_P2_vec.push_back({25, 130, first, 0.0003331, 0.9067, 0, 0, 0}); - inv_eff_from_P2_vec.push_back({130, 1000, first, 0, 0.95, 0, 0, 0}); - - // {x_LB, x_UB, degree, a, b, c, d, e} degree = {first, second, third, fourth} - inv_pf_from_P3_vec.clear(); - inv_pf_from_P3_vec.push_back({-1000, 0, first, (0.9-1)/1000, 0.90, 0, 0, 0}); - inv_pf_from_P3_vec.push_back({0, 60, third, -0.0000053284, 0.00071628, -0.03361, -0.3506, 0}); - inv_pf_from_P3_vec.push_back({60, 80, first, -0.001034, -0.8775, 0, 0, 0}); - inv_pf_from_P3_vec.push_back({80, 133, second, 0.0000027985, -0.0008177, -0.9127, 0, 0}); - inv_pf_from_P3_vec.push_back({133, 1000, first, 0, -0.972, 0, 0, 0}); - } - else - std::cout << "WARNING: get_supply_equipment_model is not defigned in the factory_supply_equipment_model for SE_enum:" << SE_type << std::endl; - - //------------------------------------ - - double S3kVA_from_max_nominal_P3kW_multiplier = 1; - - double x_tolerance = 0.0001; - bool take_abs_of_x = false; - bool if_x_is_out_of_bounds_print_warning_message = false; - - poly_function_of_x inv_eff_from_P2(x_tolerance, take_abs_of_x, if_x_is_out_of_bounds_print_warning_message, inv_eff_from_P2_vec, "inv_eff_from_P2"); - poly_function_of_x inv_pf_from_P3(x_tolerance, take_abs_of_x, if_x_is_out_of_bounds_print_warning_message, inv_pf_from_P3_vec, "inv_pf_from_P3"); - - ac_to_dc_converter* return_val = NULL; - - if(converter_type == pf) - return_val = new ac_to_dc_converter_pf(P3kW_limits, S3kVA_from_max_nominal_P3kW_multiplier, inv_eff_from_P2, inv_pf_from_P3); - - else if(converter_type == Q_setpoint) - return_val = new ac_to_dc_converter_Q_setpoint(P3kW_limits, S3kVA_from_max_nominal_P3kW_multiplier, inv_eff_from_P2); - - else - { - std::cout << "ERROR: In factory_ac_to_dc_converter undefigned converter_type." << std::endl; - return_val = new ac_to_dc_converter_pf(P3kW_limits, S3kVA_from_max_nominal_P3kW_multiplier, inv_eff_from_P2, inv_pf_from_P3); - } - - return return_val; -} - - -//############################################################################# -// Read Input Data Files -//############################################################################# -/* -//================================== -// charge_events_file_factory -//================================== - -charge_events_file_factory::~charge_events_file_factory() {} - -int charge_events_file_factory::number_of_lines_to_skip_at_beginning_of_file() {return 1;} - -int charge_events_file_factory::number_of_fields() {return 10;} - - -void charge_events_file_factory::parse_line(const std::string& line, bool& parse_successful, charge_event_data& event_data) -{ - parse_successful = true; - - const char delim = ','; - std::vector tokens = split(line, delim); - - if(tokens.size() != this->number_of_fields()) - { - parse_successful = false; - return; - } - - //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - try - { - event_data.charge_event_id = std::stoi(tokens[0]); - event_data.supply_equipment_id = std::stoi(tokens[1]); - event_data.vehicle_id = std::stoi(tokens[2]); - event_data.arrival_unix_time = 3600*std::stod(tokens[4]); - event_data.departure_unix_time = 3600*std::stod(tokens[6]); - event_data.arrival_SOC = 100*std::stod(tokens[8]); - event_data.departure_SOC = 100*std::stod(tokens[9]); - } - catch(const std::invalid_argument& ia) - { - parse_successful = false; - return; - } - catch(const std::out_of_range& ia) - { - parse_successful = false; - return; - } - - event_data.vehicle_type = get_vehicle_enum(tokens[3], parse_successful); - - if(!parse_successful) - return; - - //--------------------------------- - - stop_charging_criteria_csv_file_enum csv_file_criteria_enum = first_event; //get_stop_charging_criteria_csv_file_enum(tokens[8], parse_successful); - - if(!parse_successful) - return; - - stop_charging_criteria criteria; - criteria.soc_mode = target_charging; - criteria.depart_time_mode = block_charging; - criteria.soc_block_charging_max_undershoot_percent = 50; // Not used here, only used when criteria.soc_mode = block_charging - criteria.depart_time_block_charging_max_undershoot_percent = 40; - - if(csv_file_criteria_enum == soc) - criteria.decision_metric = stop_charging_using_target_soc; - - else if(csv_file_criteria_enum == depart_time) - criteria.decision_metric = stop_charging_using_depart_time; - - else if(csv_file_criteria_enum == first_event) - criteria.decision_metric = stop_charging_using_whatever_happens_first; - - event_data.stop_charge = criteria; -} - - -//================================== -// supply_equipment_info_file_factory -//================================== - -supply_equipment_info_file_factory::~supply_equipment_info_file_factory() {} - -int supply_equipment_info_file_factory::number_of_lines_to_skip_at_beginning_of_file() {return 1;} - -int supply_equipment_info_file_factory::number_of_fields() {return 5;} - - -void supply_equipment_info_file_factory::parse_line(const std::string& line, bool& parse_successful, supply_equipment_data& SE_data) -{ - const char delim = ','; - std::vector tokens = split(line, delim); - - if(tokens.size() != this->number_of_fields()) - { - parse_successful = false; - return; - } - - //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - try - { - SE_data.supply_equipment_id = std::stoi(tokens[0]); - SE_data.latitude = std::stod(tokens[3]); - SE_data.longitude = std::stod(tokens[2]); - SE_data.node_id = std::stoi(tokens[4]); - } - catch(const std::invalid_argument& ia) - { - parse_successful = false; - return; - } - catch(const std::out_of_range& ia) - { - parse_successful = false; - return; - } - - SE_data.supply_equipment_type = get_supply_equipment_enum(tokens[1], parse_successful); -} -*/ - diff --git a/source/charging_models/eMosaic/SE_EV_factory.h b/source/charging_models/eMosaic/SE_EV_factory.h deleted file mode 100644 index 616eb84..0000000 --- a/source/charging_models/eMosaic/SE_EV_factory.h +++ /dev/null @@ -1,158 +0,0 @@ - -#ifndef inl_Factory_SE_EV_H -#define inl_Factory_SE_EV_H - -//==================================================================================================================== -// ################################################################################################################### -//-------------------------------------------------------------------------------------------------------------------- -// eMosaic Project -//-------------------------------------------------------------------------------------------------------------------- -// ################################################################################################################### -//==================================================================================================================== - -#include "datatypes_global.h" // SE_configuration, pev_charge_fragment, pev_charge_fragment_removal_criteria -#include "datatypes_global_SE_EV_definitions.h" // supply_equipment_enum, vehicle_enum, pev_SE_pair -#include "datatypes_module.h" // charge_event_P3kW_limits, SE_status, CE_Status -#include "vehicle_charge_model.h" // vehicle_charge_model, charge_event_data -#include "supply_equipment_load.h" // supply_equipment_load -#include "supply_equipment_control.h" // supply_equipment_control -#include "supply_equipment.h" // supply_equipment -#include "ac_to_dc_converter.h" // ac_to_dc_converter - - -#include - -class integrate_X_through_time; // Included in cpp file: #include battery_integrate_X_in_time.h - - -enum battery_chemistry -{ - LMO = 0, - LTO = 1, - NMC = 2 -}; - - -void get_bat_eff_vs_P2(bool is_charging_not_discharging, battery_chemistry bat_chem, double battery_size_kWh, double& zero_slope_threashold_bat_eff_vs_P2, line_segment& bat_eff_vs_P2); -bool get_pev_battery_info(vehicle_enum vehicle_type, battery_chemistry& bat_chem, double& battery_size_kWh, double& battery_size_with_stochastic_degredation_kWh); - - -//############################################################################# -// EV Charge Model Factory -//############################################################################# - - -class factory_EV_charge_model -{ -private: - struct point_P2_vs_puVrms - { - double puVrms; - double P2_val; - - bool operator<(const point_P2_vs_puVrms& rhs) const - { - return (this->puVrms < rhs.puVrms); - } - - bool operator<(point_P2_vs_puVrms& rhs) const - { - return (this->puVrms < rhs.puVrms); - } - }; - - bool model_stochastic_battery_degregation; - - std::map ramping_by_pevType_only; - std::map< std::tuple, pev_charge_ramping> ramping_by_pevType_seType; - - void get_integrate_X_through_time_obj(vehicle_enum vehicle_type, supply_equipment_enum supply_equipment_type, integrate_X_through_time& return_val); - void get_P2_vs_puVrms(bool is_charging_not_discharging, vehicle_enum vehicle_type, supply_equipment_enum supply_equipment_type, double SE_P2_limit_atNominalV_kW, poly_function_of_x& P2_vs_puVrms); - void get_P2_vs_soc(bool is_charging_not_discharging, vehicle_enum vehicle_type, supply_equipment_enum supply_equipment_type, double& zero_slope_threashold_P2_vs_soc, std::vector& P2_vs_soc_segments); - void get_E1_Energy_limit(bool is_charging_not_discharging, bool are_battery_losses, vehicle_enum vehicle_type, supply_equipment_enum supply_equipment_type, - double battery_size_with_degredation_kWh, double SE_P2_limit_atNominalV_kW, double recalc_exponent_threashold, - double max_P2kW_error_before_reappling_P2kW_limit_to_P2_vs_soc_segments, line_segment& bat_eff_vs_P2, - calculate_E1_energy_limit& return_val); -public: - factory_EV_charge_model(); - void initialize_custome_parameters(std::map ramping_by_pevType_only_, std::map< std::tuple, pev_charge_ramping> ramping_by_pevType_seType_); - void set_bool_model_stochastic_battery_degregation(bool model_stochastic_battery_degregation_); - vehicle_charge_model* alloc_get_EV_charge_model(const charge_event_data& event, supply_equipment_enum supply_equipment_type, double SE_P2_limit_kW); -}; - - -//############################################################################# -// Supply Equipment Charge Model Factory -//############################################################################# - -class factory_supply_equipment_model -{ -private: - charge_event_queuing_inputs CE_queuing_inputs; - -public: - factory_supply_equipment_model() {}; - factory_supply_equipment_model(charge_event_queuing_inputs& CE_queuing_inputs_); - - void get_supply_equipment_model(bool building_charge_profile_library, SE_configuration& SE_config, get_base_load_forecast* baseLD_forecaster, manage_L2_control_strategy_parameters* manage_L2_control, supply_equipment& return_val); -}; - -//############################################################################# -// AC to DC Converter Factory -//############################################################################# - -class factory_ac_to_dc_converter -{ -private: - -public: - factory_ac_to_dc_converter() {}; - ac_to_dc_converter* alloc_get_ac_to_dc_converter(ac_to_dc_converter_enum converter_type, supply_equipment_enum SE_type, vehicle_enum vehicle_type, charge_event_P3kW_limits& CE_P3kW_limits); -}; - - -//############################################################################# -// Read Input Data Files -//############################################################################# - -/* -//#include "read_csv_files.h" // charge_events_file, supply_equipment_info_file - -class charge_events_file_factory : public charge_events_file -{ -private: - int num_lines_to_skip_at_beginning_of_file; - charge_events_file_factory(const charge_events_file_factory& obj) = default; - charge_events_file_factory& operator=(const charge_events_file_factory& obj) = default; - -protected: - virtual void parse_line(const std::string& line, bool& parse_successful, charge_event_data& event_data) override final; - virtual int number_of_lines_to_skip_at_beginning_of_file() override final; - virtual int number_of_fields() override final; - -public: - charge_events_file_factory() {}; - virtual ~charge_events_file_factory() override final; -}; - - - -class supply_equipment_info_file_factory : public supply_equipment_info_file -{ -private: - supply_equipment_info_file_factory(const supply_equipment_info_file_factory& obj) = default; - supply_equipment_info_file_factory& operator=(const supply_equipment_info_file_factory& obj) = default; - -protected: - virtual void parse_line(const std::string& line, bool& parse_successful, supply_equipment_data& SE_data) override final; - virtual int number_of_lines_to_skip_at_beginning_of_file() override final; - virtual int number_of_fields() override final; -public: - supply_equipment_info_file_factory() {}; - virtual ~supply_equipment_info_file_factory(); -}; -*/ - -#endif - - diff --git a/source/charging_models/eMosaic/datatypes_global_SE_EV_definitions.cpp b/source/charging_models/eMosaic/datatypes_global_SE_EV_definitions.cpp deleted file mode 100644 index b27ca4c..0000000 --- a/source/charging_models/eMosaic/datatypes_global_SE_EV_definitions.cpp +++ /dev/null @@ -1,252 +0,0 @@ - -//==================================================================================================================== -// ################################################################################################################### -//-------------------------------------------------------------------------------------------------------------------- -// eMosaic Project -//-------------------------------------------------------------------------------------------------------------------- -// ################################################################################################################### -//==================================================================================================================== - - -#include "datatypes_global_SE_EV_definitions.h" - - -//================================== -// Supply Equipment Enum -//================================== - - -bool supply_equipment_is_L1(supply_equipment_enum SE_enum) -{ - return false; - /* - if(SE_enum == L1_1440) - return true; - else - return false; - */ -} - - -bool supply_equipment_is_L2(supply_equipment_enum SE_enum) -{ - if(SE_enum == L2_7200W || SE_enum == L2_17280W) - return true; - else - return false; -} - - -bool supply_equipment_is_50kW_dcfc(supply_equipment_enum SE_enum) -{ - return false; - /* - if(SE_enum == dcfc_50) - return true; - else - return false; - */ -} - - -bool supply_equipment_is_3phase(supply_equipment_enum SE_enum) -{ - if(supply_equipment_is_L1(SE_enum) || supply_equipment_is_L2(SE_enum)) - return false; - else - return true; -} - - -bool is_XFC_charge(vehicle_enum PEV_enum, supply_equipment_enum SE_enum) -{ - std::vector SE_enum_vec = {xfc_20kW, xfc_50kW, xfc_90kW, xfc_150kW, xfc_180kW, xfc_450kW}; - std::vector PEV_enum_vec = {ld_50kWh, ld_100kWh, md_200kWh, hd_300kWh, hd_400kWh, hd_600kWh}; - - bool SE_is_XFC_capable = false; - for(supply_equipment_enum x : SE_enum_vec) - { - if(x == SE_enum) - { - SE_is_XFC_capable = true; - break; - } - } - - bool PEV_is_XFC_capable = false; - for(vehicle_enum x : PEV_enum_vec) - { - if(x == PEV_enum) - { - PEV_is_XFC_capable = true; - break; - } - } - - return SE_is_XFC_capable && PEV_is_XFC_capable; -} - - -std::pair get_supply_equipment_enum(const std::string str_val) -{ - bool conversion_successfull = true; - supply_equipment_enum SE_enum; - - std::string tmp_str = ""; - - // ignores whitespace - for (int i = 0; i < str_val.length(); i++) - if (!std::isspace(str_val[i])) - tmp_str += str_val[i]; - - if (tmp_str == "L2_7200W") SE_enum = L2_7200W; - else if (tmp_str == "L2_17280W") SE_enum = L2_17280W; - else if (tmp_str == "xfc_20kW") SE_enum = xfc_20kW; - else if (tmp_str == "xfc_50kW") SE_enum = xfc_50kW; - else if (tmp_str == "xfc_90kW") SE_enum = xfc_90kW; - else if (tmp_str == "xfc_150kW") SE_enum = xfc_150kW; - else if (tmp_str == "xfc_180kW") SE_enum = xfc_180kW; - else if (tmp_str == "xfc_450kW") SE_enum = xfc_450kW; - else - { - conversion_successfull = false; - SE_enum = L2_7200W; - } - - std::pair return_val = {conversion_successfull, SE_enum}; - - return return_val; -} - - -std::ostream& operator<<(std::ostream& out, const supply_equipment_enum& x) -{ - if(x == L2_7200W) out << "L2_7200W"; - else if(x == L2_17280W) out << "L2_17280W"; - else if(x == xfc_20kW) out << "xfc_20kW"; - else if(x == xfc_50kW) out << "xfc_50kW"; - else if(x == xfc_90kW) out << "xfc_90kW"; - else if(x == xfc_150kW) out << "xfc_150kW"; - else if(x == xfc_180kW) out << "xfc_180kW"; - else if(x == xfc_450kW) out << "xfc_450kW"; - - return out; -} - - -std::vector get_all_SE_enums() -{ - std::vector return_val = {L2_7200W, L2_17280W, xfc_20kW, xfc_50kW, xfc_90kW, xfc_150kW, xfc_180kW, xfc_450kW}; - - return return_val; -} - - -supply_equipment_enum get_default_supply_equipment_enum() -{ - return L2_7200W; -} - -//================================== -// Vehicle Enum -//================================== - - -std::pair get_vehicle_enum(const std::string str_val) -{ - bool conversion_successfull = true; - vehicle_enum pev_enum; - - std::string tmp_str = ""; - - // ignores whitespace - for (int i = 0; i < str_val.length(); i++) - if (!std::isspace(str_val[i])) - tmp_str += str_val[i]; - - // Recharge - if (tmp_str == "ld_50kWh") pev_enum = ld_50kWh; - else if (tmp_str == "ld_100kWh") pev_enum = ld_100kWh; - else if (tmp_str == "md_200kWh") pev_enum = md_200kWh; - else if (tmp_str == "hd_300kWh") pev_enum = hd_300kWh; - else if (tmp_str == "hd_400kWh") pev_enum = hd_400kWh; - else if (tmp_str == "hd_600kWh") pev_enum = hd_600kWh; - else - { - conversion_successfull = false; - pev_enum = ld_50kWh; - } - - std::pair return_val = {conversion_successfull, pev_enum}; - - return return_val; -} - - -std::ostream& operator<<(std::ostream& out, const vehicle_enum& x) -{ - if(x == ld_50kWh) out << "ld_50kWh"; - else if(x == ld_100kWh) out << "ld_100kWh"; - else if(x == md_200kWh) out << "md_200kWh"; - else if(x == hd_300kWh) out << "hd_300kWh"; - else if(x == hd_400kWh) out << "hd_400kWh"; - else if(x == hd_600kWh) out << "hd_600kWh"; - - return out; -} - - -std::vector get_all_pev_enums() -{ - std::vector return_val = {ld_50kWh, ld_100kWh, md_200kWh, hd_300kWh, hd_400kWh, hd_600kWh}; - - return return_val; -} - - -vehicle_enum get_default_vehicle_enum() -{ - return ld_50kWh; -} - - -//========================================== -// PEV is Compatible with Supply Equipment -//========================================== - - -bool pev_is_compatible_with_supply_equipment(vehicle_enum EV_type, supply_equipment_enum SE_type) -{ - return true; - - /* - if( (EV_type == phev20 || EV_type == phev50 || EV_type == phev_SUV) && (SE_type == dcfc_50 || SE_type == xfc_150 || SE_type == xfc_350) ) - return false; - //else if( (SE_type == dcfc_50) && (EV_type == bev275_ld1_150kW || EV_type == bev200_ld4_150kW || EV_type == bev250_ld2_300kW || EV_type == bev250_400kW || EV_type == bev300_575kW || EV_type == bev300_400kW || EV_type == bev250_350kW || EV_type == bev300_300kW || EV_type == bev150_150kW) ) - // return false; - else - return true; - */ -} - - -std::vector get_all_compatible_pev_SE_combinations() -{ - std::vector pev_types = get_all_pev_enums(); - std::vector SE_types = get_all_SE_enums(); - - std::vector return_val; - - for(vehicle_enum pev_type : pev_types) - { - for(supply_equipment_enum SE_type : SE_types) - { - if(pev_is_compatible_with_supply_equipment(pev_type, SE_type)) - return_val.push_back({pev_type, SE_type}); - } - } - - return return_val; -} - - diff --git a/source/charging_models/eMosaic/datatypes_global_SE_EV_definitions.h b/source/charging_models/eMosaic/datatypes_global_SE_EV_definitions.h deleted file mode 100644 index ddbd732..0000000 --- a/source/charging_models/eMosaic/datatypes_global_SE_EV_definitions.h +++ /dev/null @@ -1,70 +0,0 @@ - -#ifndef inl_datatypes_global_SE_EV_DEFINITIONS_H -#define inl_datatypes_global_SE_EV_DEFINITIONS_H - -//==================================================================================================================== -// ################################################################################################################### -//-------------------------------------------------------------------------------------------------------------------- -// eMosaic Project -//-------------------------------------------------------------------------------------------------------------------- -// ################################################################################################################### -//==================================================================================================================== - -#include -#include -#include // isspace -#include - - -enum supply_equipment_enum -{ - L2_7200W = 0, - L2_17280W = 1, - xfc_20kW = 2, - xfc_50kW = 3, - xfc_90kW = 4, - xfc_150kW = 5, - xfc_180kW = 6, - xfc_450kW = 7 -}; -std::ostream& operator<<(std::ostream& out, const supply_equipment_enum& x); -std::pair get_supply_equipment_enum(const std::string str_val); -bool supply_equipment_is_L1(supply_equipment_enum SE_enum); -bool supply_equipment_is_L2(supply_equipment_enum SE_enum); -bool supply_equipment_is_50kW_dcfc(supply_equipment_enum SE_enum); -bool supply_equipment_is_3phase(supply_equipment_enum SE_enum); -std::vector get_all_SE_enums(); -supply_equipment_enum get_default_supply_equipment_enum(); - -//--------------------------------------------- - -enum vehicle_enum -{ - ld_50kWh = 0, - ld_100kWh = 1, - md_200kWh = 2, - hd_300kWh = 3, - hd_400kWh = 4, - hd_600kWh = 5 -}; -std::ostream& operator<<(std::ostream& out, const vehicle_enum& x); -std::pair get_vehicle_enum(const std::string str_val); -std::vector get_all_pev_enums(); -vehicle_enum get_default_vehicle_enum(); - -bool is_XFC_charge(vehicle_enum PEV_enum, supply_equipment_enum SE_enum); - -//--------------------------------------------- - -struct pev_SE_pair -{ - vehicle_enum EV_type; - supply_equipment_enum SE_type; -}; - -bool pev_is_compatible_with_supply_equipment(vehicle_enum EV_type, supply_equipment_enum SE_type); -std::vector get_all_compatible_pev_SE_combinations(); - - -#endif - diff --git a/source/charging_models/eMosaic/python_bind.cpp b/source/charging_models/eMosaic/python_bind.cpp deleted file mode 100644 index c7b1f14..0000000 --- a/source/charging_models/eMosaic/python_bind.cpp +++ /dev/null @@ -1,1180 +0,0 @@ - -//==================================================================================================================== -// ################################################################################################################### -//-------------------------------------------------------------------------------------------------------------------- -// eMosaic Project -//-------------------------------------------------------------------------------------------------------------------- -// ################################################################################################################### -//==================================================================================================================== - - -#include "datatypes_global.h" -#include "datatypes_global_SE_EV_definitions.h" - -#include -#include - -// delete when done adding pickling functionality -#include -#include - -namespace py = pybind11; - - -PYBIND11_MODULE(Caldera_global, m) -{ - //--------------------------------- - // Functions - //--------------------------------- - m.def("get_supply_equipment_enum", &get_supply_equipment_enum); - m.def("get_vehicle_enum", &get_vehicle_enum); - m.def("supply_equipment_is_L1", &supply_equipment_is_L1); - m.def("supply_equipment_is_L2", &supply_equipment_is_L2); - m.def("supply_equipment_is_50kW_dcfc", &supply_equipment_is_50kW_dcfc); - m.def("supply_equipment_is_3phase", &supply_equipment_is_3phase); - m.def("is_XFC_charge", &is_XFC_charge); - m.def("pev_is_compatible_with_supply_equipment", &pev_is_compatible_with_supply_equipment); - m.def("get_all_SE_enums", &get_all_SE_enums); - m.def("get_all_pev_enums", &get_all_pev_enums); - m.def("get_all_compatible_pev_SE_combinations", &get_all_compatible_pev_SE_combinations); - m.def("get_default_supply_equipment_enum", &get_default_supply_equipment_enum); - m.def("get_default_vehicle_enum", &get_default_vehicle_enum); - - m.def("get_LPF_window_enum", &get_LPF_window_enum); - m.def("L2_control_strategy_supports_Vrms_using_QkVAR", &L2_control_strategy_supports_Vrms_using_QkVAR); - m.def("get_L2_control_strategies_enum", &get_L2_control_strategies_enum); - m.def("is_L2_ES_control_strategy", &is_L2_ES_control_strategy); - m.def("is_L2_VS_control_strategy", &is_L2_VS_control_strategy); - - //--------------------------------- - // PEV and SE Enums - //--------------------------------- - py::enum_(m, "vehicle_enum") - .value("ld_50kWh", vehicle_enum::ld_50kWh) - .value("ld_100kWh", vehicle_enum::ld_100kWh) - .value("md_200kWh", vehicle_enum::md_200kWh) - .value("hd_300kWh", vehicle_enum::hd_300kWh) - .value("hd_400kWh", vehicle_enum::hd_400kWh) - .value("hd_600kWh", vehicle_enum::hd_600kWh); - - py::enum_(m, "supply_equipment_enum") - .value("L2_7200W", supply_equipment_enum::L2_7200W) - .value("L2_17280W", supply_equipment_enum::L2_17280W) - .value("xfc_20kW", supply_equipment_enum::xfc_20kW) - .value("xfc_50kW", supply_equipment_enum::xfc_50kW) - .value("xfc_90kW", supply_equipment_enum::xfc_90kW) - .value("xfc_150kW", supply_equipment_enum::xfc_150kW) - .value("xfc_180kW", supply_equipment_enum::xfc_180kW) - .value("xfc_450kW", supply_equipment_enum::xfc_450kW); - - py::class_(m, "pev_SE_pair") - .def(py::init<>()) - .def_readwrite("EV_type", &pev_SE_pair::EV_type) - .def_readwrite("SE_type", &pev_SE_pair::SE_type) - .def(py::pickle( - [](const pev_SE_pair &obj){ // __getstate__ - return py::make_tuple(obj.EV_type, obj.SE_type); - }, - [](py::tuple t){ // __setstate__ - pev_SE_pair obj; - obj.EV_type = t[0].cast(); - obj.SE_type = t[1].cast(); - return obj; - } - )); - - //--------------------------------- - // Charge Event Data - //--------------------------------- - py::enum_(m, "stop_charging_decision_metric") - .value("stop_charging_using_target_soc", stop_charging_decision_metric::stop_charging_using_target_soc) - .value("stop_charging_using_depart_time", stop_charging_decision_metric::stop_charging_using_depart_time) - .value("stop_charging_using_whatever_happens_first", stop_charging_decision_metric::stop_charging_using_whatever_happens_first); - - py::enum_(m, "stop_charging_mode") - .value("target_charging", stop_charging_mode::target_charging) - .value("block_charging", stop_charging_mode::block_charging); - - py::class_(m, "stop_charging_criteria") - .def(py::init<>()) - .def(py::init()) - .def_readwrite("decision_metric", &stop_charging_criteria::decision_metric) - .def_readwrite("soc_mode", &stop_charging_criteria::soc_mode) - .def_readwrite("depart_time_mode", &stop_charging_criteria::depart_time_mode) - .def_readwrite("soc_block_charging_max_undershoot_percent", &stop_charging_criteria::soc_block_charging_max_undershoot_percent) - .def_readwrite("depart_time_block_charging_max_undershoot_percent", &stop_charging_criteria::depart_time_block_charging_max_undershoot_percent) - .def(py::pickle( - [](const stop_charging_criteria &obj){ // __getstate__ - return py::make_tuple(obj.decision_metric, obj.soc_mode, obj.depart_time_mode, obj.soc_block_charging_max_undershoot_percent, obj.depart_time_block_charging_max_undershoot_percent); - }, - [](py::tuple t){ // __setstate__ - stop_charging_criteria obj; - obj.decision_metric = t[0].cast(); - obj.soc_mode = t[1].cast(); - obj.depart_time_mode = t[2].cast(); - obj.soc_block_charging_max_undershoot_percent = t[3].cast(); - obj. depart_time_block_charging_max_undershoot_percent = t[4].cast(); - return obj; - } - )); - - py::class_(m, "charge_event_data") - .def(py::init<>()) - .def(py::init()) - .def_readwrite("charge_event_id", &charge_event_data::charge_event_id) - .def_readwrite("SE_group_id", &charge_event_data::SE_group_id) - .def_readwrite("SE_id", &charge_event_data::SE_id) - .def_readwrite("vehicle_id", &charge_event_data::vehicle_id) - .def_readwrite("vehicle_type", &charge_event_data::vehicle_type) - .def_readwrite("arrival_unix_time", &charge_event_data::arrival_unix_time) - .def_readwrite("departure_unix_time", &charge_event_data::departure_unix_time) - .def_readwrite("arrival_SOC", &charge_event_data::arrival_SOC) - .def_readwrite("departure_SOC", &charge_event_data::departure_SOC) - .def_readwrite("stop_charge", &charge_event_data::stop_charge) - .def_readwrite("control_enums", &charge_event_data::control_enums) - .def_static("get_file_header", &charge_event_data::get_file_header) - .def(py::pickle( - [](const charge_event_data &obj){ // __getstate__ - return py::make_tuple(obj.charge_event_id, obj.SE_group_id, obj.SE_id, obj.vehicle_id, obj.vehicle_type, obj.arrival_unix_time, obj.departure_unix_time, obj.arrival_SOC, obj.departure_SOC, obj.stop_charge, obj.control_enums); - }, - [](py::tuple t){ // __setstate__ - charge_event_data obj; - obj.charge_event_id = t[0].cast(); - obj.SE_group_id = t[1].cast(); - obj.SE_id = t[2].cast(); - obj.vehicle_id = t[3].cast(); - obj.vehicle_type = t[4].cast(); - obj.arrival_unix_time = t[5].cast(); - obj.departure_unix_time = t[6].cast(); - obj.arrival_SOC = t[7].cast(); - obj.departure_SOC = t[8].cast(); - obj.stop_charge = t[9].cast(); - obj.control_enums = t[10].cast(); - return obj; - } - )); - - py::class_(m, "SE_group_charge_event_data") - .def(py::init<>()) - .def(py::init>()) - .def_readwrite("SE_group_id", &SE_group_charge_event_data::SE_group_id) - .def_readwrite("charge_events", &SE_group_charge_event_data::charge_events) - .def(py::pickle( - [](const SE_group_charge_event_data &obj){ // __getstate__ - return py::make_tuple(obj.SE_group_id, obj.charge_events); - }, - [](py::tuple t){ // __setstate__ - SE_group_charge_event_data obj; - obj.SE_group_id = t[0].cast(); - - for(auto x : t[1]) - obj.charge_events.push_back(x.cast()); - - return obj; - } - )); - - //======================================= - - py::enum_(m, "queuing_mode_enum") - .value("overlapAllowed_earlierArrivalTimeHasPriority", queuing_mode_enum::overlapAllowed_earlierArrivalTimeHasPriority) - .value("overlapLimited_mostRecentlyQueuedHasPriority", queuing_mode_enum::overlapLimited_mostRecentlyQueuedHasPriority); - - py::class_(m, "charge_event_queuing_inputs") - .def(py::init<>()) - .def_readwrite("max_allowed_overlap_time_sec", &charge_event_queuing_inputs::max_allowed_overlap_time_sec) - .def_readwrite("queuing_mode", &charge_event_queuing_inputs::queuing_mode) - .def(py::pickle( - [](const charge_event_queuing_inputs &obj){ // __getstate__ - return py::make_tuple(obj.max_allowed_overlap_time_sec, obj.queuing_mode); - }, - [](py::tuple t){ // __setstate__ - charge_event_queuing_inputs obj; - obj.max_allowed_overlap_time_sec = t[0].cast(); - obj.queuing_mode = t[1].cast(); - - return obj; - } - )); - - //--------------------------------- - // SE Configuration - //--------------------------------- - py::class_(m, "SE_configuration") - .def(py::init<>()) - .def(py::init()) - .def_readwrite("SE_group_id", &SE_configuration::SE_group_id) - .def_readwrite("SE_id", &SE_configuration::SE_id) - .def_readwrite("supply_equipment_type", &SE_configuration::supply_equipment_type) - .def_readwrite("lattitude", &SE_configuration::lattitude) - .def_readwrite("longitude", &SE_configuration::longitude) - .def_readwrite("grid_node_id", &SE_configuration::grid_node_id) - .def_readwrite("location_type", &SE_configuration::location_type) - .def(py::pickle( - [](const SE_configuration &obj){ // __getstate__ - return py::make_tuple(obj.SE_group_id, obj.SE_id, obj.supply_equipment_type, obj.lattitude, obj.longitude, obj.grid_node_id, obj.location_type); - }, - [](py::tuple t){ // __setstate__ - SE_configuration obj; - obj.SE_group_id = t[0].cast(); - obj.SE_id = t[1].cast(); - obj.supply_equipment_type = t[2].cast(); - obj.lattitude = t[3].cast(); - obj.longitude = t[4].cast(); - obj.grid_node_id = t[5].cast(); - obj.location_type = t[6].cast(); - return obj; - } - )); - - py::class_(m, "SE_group_configuration") - .def(py::init<>()) - .def(py::init >()) - .def_readwrite("SE_group_id", &SE_group_configuration::SE_group_id) - .def_readwrite("SEs", &SE_group_configuration::SEs) - .def(py::pickle( - [](const SE_group_configuration &obj){ // __getstate__ - return py::make_tuple(obj.SE_group_id, obj.SEs); - }, - [](py::tuple t){ // __setstate__ - SE_group_configuration obj; - obj.SE_group_id = t[0].cast(); - for(auto x : t[1]) - obj.SEs.push_back(x.cast()); - - return obj; - } - )); - - //--------------------------------- - // Status of CE - //--------------------------------- - - py::enum_(m, "SE_charging_status") - .value("no_ev_plugged_in", SE_charging_status::no_ev_plugged_in) - .value("ev_plugged_in_not_charging", SE_charging_status::ev_plugged_in_not_charging) - .value("ev_charging", SE_charging_status::ev_charging) - .value("ev_charge_complete", SE_charging_status::ev_charge_complete); - - py::class_(m, "FICE_inputs") - .def(py::init<>()) - .def_readwrite("interval_start_unixtime", &FICE_inputs::interval_start_unixtime) - .def_readwrite("interval_duration_sec", &FICE_inputs::interval_duration_sec) - .def_readwrite("acPkW_setpoint", &FICE_inputs::acPkW_setpoint) - .def(py::pickle( - [](const FICE_inputs &obj){ // __getstate__ - return py::make_tuple(obj.interval_start_unixtime, obj.interval_duration_sec, obj.acPkW_setpoint); - }, - [](py::tuple t){ // __setstate__ - FICE_inputs obj; - obj.interval_start_unixtime = t[0].cast(); - obj.interval_duration_sec = t[1].cast(); - obj.acPkW_setpoint = t[2].cast(); - return obj; - } - )); - - py::class_(m, "CE_FICE") - .def(py::init<>()) - .def_readwrite("SE_id", &CE_FICE::SE_id) - .def_readwrite("charge_event_id", &CE_FICE::charge_event_id) - .def_readwrite("charge_energy_ackWh", &CE_FICE::charge_energy_ackWh) - .def_readwrite("interval_duration_hrs", &CE_FICE::interval_duration_hrs) - .def(py::pickle( - [](const CE_FICE &obj){ // __getstate__ - return py::make_tuple(obj.SE_id, obj.charge_event_id, obj.charge_energy_ackWh, obj.interval_duration_hrs); - }, - [](py::tuple t){ // __setstate__ - CE_FICE obj; - obj.SE_id = t[0].cast(); - obj.charge_event_id = t[1].cast(); - obj.charge_energy_ackWh = t[2].cast(); - obj.interval_duration_hrs = t[3].cast(); - return obj; - } - )); - - py::class_(m, "CE_FICE_in_SE_group") - .def(py::init<>()) - .def_readwrite("SE_group_id", &CE_FICE_in_SE_group::SE_group_id) - .def_readwrite("SE_FICE_vals", &CE_FICE_in_SE_group::SE_FICE_vals) - .def(py::pickle( - [](const CE_FICE_in_SE_group &obj){ // __getstate__ - return py::make_tuple(obj.SE_group_id, obj.SE_FICE_vals); - }, - [](py::tuple t){ // __setstate__ - CE_FICE_in_SE_group obj; - obj.SE_group_id = t[0].cast(); - for(auto x : t[1]) - obj.SE_FICE_vals.push_back(x.cast()); - - return obj; - } - )); - - py::class_(m, "active_CE") - .def(py::init<>()) - .def_readwrite("SE_id", &active_CE::SE_id) - .def_readwrite("charge_event_id", &active_CE::charge_event_id) - .def_readwrite("now_unix_time", &active_CE::now_unix_time) - .def_readwrite("now_soc", &active_CE::now_soc) - .def_readwrite("now_dcPkW", &active_CE::now_dcPkW) - .def_readwrite("now_acPkW", &active_CE::now_acPkW) - .def_readwrite("now_acQkVAR", &active_CE::now_acQkVAR) - //.def_readwrite("min_remaining_charge_time_hrs", &active_CE::min_remaining_charge_time_hrs) - //.def_readwrite("min_time_to_complete_entire_charge_hrs", &active_CE::min_time_to_complete_entire_charge_hrs) - .def_readwrite("now_charge_energy_ackWh", &active_CE::now_charge_energy_ackWh) - .def_readwrite("energy_of_complete_charge_ackWh", &active_CE::energy_of_complete_charge_ackWh) - .def_readwrite("vehicle_id", &active_CE::vehicle_id) - .def_readwrite("vehicle_type", &active_CE::vehicle_type) - .def(py::pickle( - [](const active_CE &obj){ // __getstate__ - return py::make_tuple(obj.SE_id, obj.charge_event_id, obj.now_unix_time, obj.now_soc, - obj.now_charge_energy_ackWh, obj.energy_of_complete_charge_ackWh, - obj.now_dcPkW, obj.now_acPkW, obj.now_acQkVAR, obj.vehicle_id, obj.vehicle_type - //obj.min_remaining_charge_time_hrs, obj.min_time_to_complete_entire_charge_hrs - ); - }, - [](py::tuple t){ // __setstate_ - active_CE obj; - obj.SE_id = t[0].cast(); - obj.charge_event_id = t[1].cast(); - obj.now_unix_time = t[2].cast(); - obj.now_soc = t[3].cast(); - obj.now_charge_energy_ackWh = t[4].cast(); - obj.energy_of_complete_charge_ackWh = t[5].cast(); - obj.now_dcPkW = t[6].cast(); - obj.now_acPkW = t[7].cast(); - obj.now_acQkVAR = t[8].cast(); - obj.vehicle_id = t[9].cast(); - obj.vehicle_type = t[10].cast(); - //obj.min_remaining_charge_time_hrs = t[6].cast(); - //obj.min_time_to_complete_entire_charge_hrs = t[7].cast(); - - return obj; - } - )); - - py::class_(m, "SE_setpoint") - .def(py::init<>()) - .def_readwrite("SE_id", &SE_setpoint::SE_id) - .def_readwrite("PkW", &SE_setpoint::PkW) - .def_readwrite("QkVAR", &SE_setpoint::QkVAR) - .def(py::pickle( - [](const SE_setpoint &obj){ // __getstate__ - return py::make_tuple(obj.SE_id, obj.PkW, obj.QkVAR); - }, - [](py::tuple t){ // __setstate__ - SE_setpoint obj; - obj.SE_id = t[0].cast(); - obj.PkW = t[1].cast(); - obj.QkVAR = t[2].cast(); - - return obj; - } - )); - - py::class_(m, "completed_CE") - .def(py::init<>()) - .def_readwrite("SE_id", &completed_CE::SE_id) - .def_readwrite("charge_event_id", &completed_CE::charge_event_id) - .def_readwrite("final_soc", &completed_CE::final_soc) - .def(py::pickle( - [](const completed_CE &obj){ // __getstate__ - return py::make_tuple(obj.SE_id, obj.charge_event_id, obj.final_soc); - }, - [](py::tuple t){ // __setstate__ - completed_CE obj; - obj.SE_id = t[0].cast(); - obj.charge_event_id = t[1].cast(); - obj.final_soc = t[2].cast(); - - return obj; - } - )); - - //--------------------------------- - // Miscellaneous - //--------------------------------- - py::enum_(m, "ac_to_dc_converter_enum") - .value("pf", ac_to_dc_converter_enum::pf) - .value("Q_setpoint", ac_to_dc_converter_enum::Q_setpoint); - - py::class_(m, "SE_power") - .def(py::init<>()) - .def_readwrite("time_step_duration_hrs", &SE_power::time_step_duration_hrs) - .def_readwrite("P1_kW", &SE_power::P1_kW) - .def_readwrite("P2_kW", &SE_power::P2_kW) - .def_readwrite("P3_kW", &SE_power::P3_kW) - .def_readwrite("Q3_kVAR", &SE_power::Q3_kVAR) - .def_readwrite("soc", &SE_power::soc) - .def_readwrite("SE_status_val", &SE_power::SE_status_val) - .def(py::pickle( - [](const SE_power &obj){ // __getstate__ - return py::make_tuple(obj.time_step_duration_hrs, obj.P1_kW, obj.P2_kW, obj.P3_kW, obj.Q3_kVAR, obj.soc, obj.SE_status_val); - }, - [](py::tuple t){ // __setstate__ - SE_power obj; - obj.time_step_duration_hrs = t[0].cast(); - obj.P1_kW = t[1].cast(); - obj.P2_kW = t[2].cast(); - obj.P3_kW = t[3].cast(); - obj.Q3_kVAR = t[4].cast(); - obj.soc = t[5].cast(); - obj.SE_status_val = t[6].cast(); - - return obj; - } - )); - - py::class_(m, "pev_batterySize_info") - .def(py::init<>()) - .def_readwrite("vehicle_type", &pev_batterySize_info::vehicle_type) - .def_readwrite("battery_size_kWh", &pev_batterySize_info::battery_size_kWh) - .def_readwrite("battery_size_with_stochastic_degredation_kWh", &pev_batterySize_info::battery_size_with_stochastic_degredation_kWh) - - .def(py::pickle( - [](const pev_batterySize_info &obj){ // __getstate__ - return py::make_tuple(obj.vehicle_type, obj.battery_size_kWh, obj.battery_size_with_stochastic_degredation_kWh); - }, - [](py::tuple t){ // __setstate__ - pev_batterySize_info obj; - obj.vehicle_type = t[0].cast(); - obj.battery_size_kWh = t[1].cast(); - obj.battery_size_with_stochastic_degredation_kWh = t[2].cast(); - - return obj; - } - )); - - //--------------------------------- - // PEV Charge Profile - //--------------------------------- - py::class_(m, "pev_charge_profile_result") - .def(py::init<>()) - .def_readwrite("soc_increase", &pev_charge_profile_result::soc_increase) - .def_readwrite("E1_kWh", &pev_charge_profile_result::E1_kWh) - .def_readwrite("E2_kWh", &pev_charge_profile_result::E2_kWh) - .def_readwrite("E3_kWh", &pev_charge_profile_result::E3_kWh) - .def_readwrite("cumQ3_kVARh", &pev_charge_profile_result::cumQ3_kVARh) - .def_readwrite("total_charge_time_hrs", &pev_charge_profile_result::total_charge_time_hrs) - .def_readwrite("incremental_chage_time_hrs", &pev_charge_profile_result::incremental_chage_time_hrs) - .def(py::pickle( - [](const pev_charge_profile_result &obj){ // __getstate__ - return py::make_tuple(obj.soc_increase, obj.E1_kWh, obj.E2_kWh, obj.E3_kWh, obj.cumQ3_kVARh, obj.total_charge_time_hrs, obj.incremental_chage_time_hrs); - }, - [](py::tuple t){ // __setstate__ - pev_charge_profile_result obj; - obj.soc_increase = t[0].cast(); - obj.E1_kWh = t[1].cast(); - obj.E2_kWh = t[2].cast(); - obj.E3_kWh = t[3].cast(); - obj.cumQ3_kVARh = t[4].cast(); - obj.total_charge_time_hrs = t[5].cast(); - obj.incremental_chage_time_hrs = t[6].cast(); - return obj; - } - )); - - py::class_(m, "pev_charge_fragment_removal_criteria") - .def(py::init<>()) - .def_readwrite("max_percent_of_fragments_that_can_be_removed", &pev_charge_fragment_removal_criteria::max_percent_of_fragments_that_can_be_removed) - .def_readwrite("kW_change_threashold", &pev_charge_fragment_removal_criteria::kW_change_threashold) - .def_readwrite("threshold_to_determine_not_removable_fragments_on_flat_peak_kW", &pev_charge_fragment_removal_criteria::threshold_to_determine_not_removable_fragments_on_flat_peak_kW) - .def_readwrite("perc_of_max_starting_point_to_determine_not_removable_fragments_on_low_elbow", &pev_charge_fragment_removal_criteria::perc_of_max_starting_point_to_determine_not_removable_fragments_on_low_elbow) - .def(py::pickle( - [](const pev_charge_fragment_removal_criteria &obj){ // __getstate__ - return py::make_tuple(obj.max_percent_of_fragments_that_can_be_removed, obj.kW_change_threashold, obj.threshold_to_determine_not_removable_fragments_on_flat_peak_kW, obj.perc_of_max_starting_point_to_determine_not_removable_fragments_on_low_elbow); - }, - [](py::tuple t){ // __setstate__ - pev_charge_fragment_removal_criteria obj; - obj.max_percent_of_fragments_that_can_be_removed = t[0].cast(); - obj.kW_change_threashold = t[1].cast(); - obj.threshold_to_determine_not_removable_fragments_on_flat_peak_kW = t[2].cast(); - obj.perc_of_max_starting_point_to_determine_not_removable_fragments_on_low_elbow = t[3].cast(); - return obj; - } - )); - - py::class_(m, "pev_charge_fragment") - .def(py::init<>()) - .def(py::init()) - .def_readwrite("soc", &pev_charge_fragment::soc) - .def_readwrite("E1_kWh", &pev_charge_fragment::E1_kWh) - .def_readwrite("E2_kWh", &pev_charge_fragment::E2_kWh) - .def_readwrite("E3_kWh", &pev_charge_fragment::E3_kWh) - .def_readwrite("cumQ3_kVARh", &pev_charge_fragment::cumQ3_kVARh) - .def_readwrite("time_since_charge_began_hrs", &pev_charge_fragment::time_since_charge_began_hrs) - .def(py::pickle( - [](const pev_charge_fragment &obj){ // __getstate__ - return py::make_tuple(obj.soc, obj.E1_kWh, obj.E2_kWh, obj.E3_kWh, obj.cumQ3_kVARh, obj.time_since_charge_began_hrs); - }, - [](py::tuple t){ // __setstate__ - pev_charge_fragment obj; - obj.soc = t[0].cast(); - obj.E1_kWh = t[1].cast(); - obj.E2_kWh = t[2].cast(); - obj.E3_kWh = t[3].cast(); - obj.cumQ3_kVARh = t[4].cast(); - obj.time_since_charge_began_hrs = t[5].cast(); - return obj; - } - )); - - py::class_(m, "pev_charge_fragment_variation") - .def(py::init<>()) - .def(py::init()) - .def_readwrite("is_removable", &pev_charge_fragment_variation::is_removable) - .def_readwrite("original_charge_fragment_index", &pev_charge_fragment_variation::original_charge_fragment_index) - .def_readwrite("time_since_charge_began_hrs", &pev_charge_fragment_variation::time_since_charge_began_hrs) - .def_readwrite("soc", &pev_charge_fragment_variation::soc) - .def_readwrite("P3_kW", &pev_charge_fragment_variation::P3_kW) - .def_readwrite("variation_rank", &pev_charge_fragment_variation::variation_rank) - .def(py::pickle( - [](const pev_charge_fragment_variation &obj){ // __getstate__ - return py::make_tuple(obj.is_removable, obj.original_charge_fragment_index, obj.time_since_charge_began_hrs, obj.soc, obj.P3_kW, obj.variation_rank); - }, - [](py::tuple t){ // __setstate__ - pev_charge_fragment_variation obj; - obj.is_removable = t[0].cast(); - obj.original_charge_fragment_index = t[1].cast(); - obj.time_since_charge_began_hrs = t[2].cast(); - obj.soc = t[3].cast(); - obj.P3_kW = t[4].cast(); - obj.variation_rank = t[5].cast(); - return obj; - } - )); - - py::class_(m, "charge_profile_validation_data") - .def(py::init<>()) - .def_readwrite("time_step_sec", &charge_profile_validation_data::time_step_sec) - .def_readwrite("target_acP3_kW", &charge_profile_validation_data::target_acP3_kW) - .def_readwrite("fragment_removal_criteria", &charge_profile_validation_data::fragment_removal_criteria) - .def_readwrite("removed_fragments", &charge_profile_validation_data::removed_fragments) - .def_readwrite("retained_fragments", &charge_profile_validation_data::retained_fragments) - .def_readwrite("downsampled_charge_fragments", &charge_profile_validation_data::downsampled_charge_fragments) - .def_readwrite("original_charge_fragments", &charge_profile_validation_data::original_charge_fragments) - .def(py::pickle( - [](const charge_profile_validation_data &obj){ // __getstate__ - return py::make_tuple(obj.time_step_sec, obj.target_acP3_kW, obj.fragment_removal_criteria, obj.removed_fragments, obj.retained_fragments, obj.downsampled_charge_fragments, obj.original_charge_fragments); - }, - [](py::tuple t){ // __setstate__ - charge_profile_validation_data obj; - obj.time_step_sec = t[0].cast(); - obj.target_acP3_kW = t[1].cast(); - obj.fragment_removal_criteria = t[2].cast(); - - for(auto x : t[3]) - obj.removed_fragments.push_back(x.cast()); - - for(auto x : t[4]) - obj.retained_fragments.push_back(x.cast()); - - for(auto x : t[5]) - obj.downsampled_charge_fragments.push_back(x.cast()); - - for(auto x : t[6]) - obj.original_charge_fragments.push_back(x.cast()); - - return obj; - } - )); - - py::class_(m, "charge_event_P3kW_limits") - .def(py::init<>()) - .def_readwrite("min_P3kW", &charge_event_P3kW_limits::min_P3kW) - .def_readwrite("max_P3kW", &charge_event_P3kW_limits::max_P3kW) - .def(py::pickle( - [](const charge_event_P3kW_limits &obj){ // __getstate__ - return py::make_tuple(obj.min_P3kW, obj.max_P3kW); - }, - [](py::tuple t){ // __setstate__ - charge_event_P3kW_limits obj; - obj.min_P3kW = t[0].cast(); - obj.max_P3kW = t[1].cast(); - return obj; - } - )); - - py::class_(m, "all_charge_profile_data") - .def(py::init<>()) - .def_readwrite("timestep_sec", &all_charge_profile_data::timestep_sec) - .def_readwrite("P1_kW", &all_charge_profile_data::P1_kW) - .def_readwrite("P2_kW", &all_charge_profile_data::P2_kW) - .def_readwrite("P3_kW", &all_charge_profile_data::P3_kW) - .def_readwrite("Q3_kVAR", &all_charge_profile_data::Q3_kVAR) - .def_readwrite("soc", &all_charge_profile_data::soc) - .def(py::pickle( - [](const all_charge_profile_data &obj){ // __getstate__ - return py::make_tuple(obj.timestep_sec, obj.P1_kW, obj.P2_kW, obj.P3_kW, obj.Q3_kVAR, obj.soc); - }, - [](py::tuple t){ // __setstate__ - all_charge_profile_data obj; - obj.timestep_sec = t[0].cast(); - - for(auto x : t[1]) - obj.P1_kW.push_back(x.cast()); - - for(auto x : t[2]) - obj.P2_kW.push_back(x.cast()); - - for(auto x : t[3]) - obj.P3_kW.push_back(x.cast()); - - for(auto x : t[4]) - obj.Q3_kVAR.push_back(x.cast()); - - for(auto x : t[5]) - obj.soc.push_back(x.cast()); - - return obj; - } - )); - - //--------------------------------- - // Low Pass Filter Parameters - //--------------------------------- - py::enum_(m, "LPF_window_enum") - .value("Hanning", LPF_window_enum::Hanning) - .value("Blackman", LPF_window_enum::Blackman) - .value("Rectangular", LPF_window_enum::Rectangular); - - py::class_(m, "LPF_parameters") - .def(py::init<>()) - .def_readwrite("window_size", &LPF_parameters::window_size) - .def_readwrite("window_type", &LPF_parameters::window_type) - .def(py::pickle( - [](const LPF_parameters &obj){ // __getstate__ - return py::make_tuple(obj.window_size, obj.window_type); - }, - [](py::tuple t){ // __setstate__ - LPF_parameters obj; - obj.window_size = t[0].cast(); - obj.window_type = t[1].cast(); - return obj; - } - )); - - py::class_(m, "LPF_parameters_randomize_window_size") - .def(py::init<>()) - .def_readwrite("is_active", &LPF_parameters_randomize_window_size::is_active) - .def_readwrite("seed", &LPF_parameters_randomize_window_size::seed) - .def_readwrite("window_size_LB", &LPF_parameters_randomize_window_size::window_size_LB) - .def_readwrite("window_size_UB", &LPF_parameters_randomize_window_size::window_size_UB) - .def_readwrite("window_type", &LPF_parameters_randomize_window_size::window_type) - .def(py::pickle( - [](const LPF_parameters_randomize_window_size &obj){ // __getstate__ - return py::make_tuple(obj.is_active, obj.seed, obj.window_size_LB, obj.window_size_UB, obj.window_type); - }, - [](py::tuple t){ // __setstate__ - LPF_parameters_randomize_window_size obj; - obj.is_active = t[0].cast(); - obj.seed = t[1].cast(); - obj.window_size_LB = t[2].cast(); - obj.window_size_UB = t[3].cast(); - obj.window_type = t[4].cast(); - return obj; - } - )); - - //--------------------------------- - // Control Strategy Parameters - //--------------------------------- - py::enum_(m, "L2_control_strategies_enum") - .value("NA", L2_control_strategies_enum::NA) - .value("ES100_A", L2_control_strategies_enum::ES100_A) - .value("ES100_B", L2_control_strategies_enum::ES100_B) - .value("ES110", L2_control_strategies_enum::ES110) - .value("ES200", L2_control_strategies_enum::ES200) - .value("ES300", L2_control_strategies_enum::ES300) - .value("ES500", L2_control_strategies_enum::ES500) - .value("VS100", L2_control_strategies_enum::VS100) - .value("VS200_A", L2_control_strategies_enum::VS200_A) - .value("VS200_B", L2_control_strategies_enum::VS200_B) - .value("VS200_C", L2_control_strategies_enum::VS200_C) - .value("VS300", L2_control_strategies_enum::VS300); - - py::class_(m, "ES100_L2_parameters") - .def(py::init<>()) - .def_readwrite("beginning_of_TofU_rate_period__time_from_midnight_hrs", &ES100_L2_parameters::beginning_of_TofU_rate_period__time_from_midnight_hrs) - .def_readwrite("end_of_TofU_rate_period__time_from_midnight_hrs", &ES100_L2_parameters::end_of_TofU_rate_period__time_from_midnight_hrs) - .def_readwrite("randomization_method", &ES100_L2_parameters::randomization_method) - .def_readwrite("M1_delay_period_hrs", &ES100_L2_parameters::M1_delay_period_hrs) - .def_readwrite("random_seed", &ES100_L2_parameters::random_seed) - .def(py::pickle( - [](const ES100_L2_parameters &obj){ // __getstate__ - return py::make_tuple(obj.beginning_of_TofU_rate_period__time_from_midnight_hrs, obj.end_of_TofU_rate_period__time_from_midnight_hrs, obj.randomization_method, obj.M1_delay_period_hrs, obj.random_seed); - }, - [](py::tuple t){ // __setstate__ - ES100_L2_parameters obj; - obj.beginning_of_TofU_rate_period__time_from_midnight_hrs = t[0].cast(); - obj.end_of_TofU_rate_period__time_from_midnight_hrs = t[1].cast(); - obj.randomization_method = t[2].cast(); - obj.M1_delay_period_hrs = t[3].cast(); - obj.random_seed = t[4].cast(); - return obj; - } - )); - - py::class_(m, "ES110_L2_parameters") - .def(py::init<>()) - .def_readwrite("random_seed", &ES110_L2_parameters::random_seed) - .def(py::pickle( - [](const ES110_L2_parameters &obj){ // __getstate__ - return py::make_tuple(obj.random_seed); - }, - [](py::tuple t){ // __setstate__ - ES110_L2_parameters obj; - obj.random_seed = t[0].cast(); - return obj; - } - )); - - py::class_(m, "ES200_L2_parameters") - .def(py::init<>()) - .def_readwrite("weight_factor_to_calculate_valley_fill_target", &ES200_L2_parameters::weight_factor_to_calculate_valley_fill_target) - .def(py::pickle( - [](const ES200_L2_parameters &obj){ // __getstate__ - return py::make_tuple(obj.weight_factor_to_calculate_valley_fill_target); - }, - [](py::tuple t){ // __setstate__ - ES200_L2_parameters obj; - obj.weight_factor_to_calculate_valley_fill_target = t[0].cast(); - return obj; - } - )); - - py::class_(m, "ES300_L2_parameters") - .def(py::init<>()) - .def_readwrite("weight_factor_to_calculate_valley_fill_target", &ES300_L2_parameters::weight_factor_to_calculate_valley_fill_target) - .def(py::pickle( - [](const ES300_L2_parameters &obj){ // __getstate__ - return py::make_tuple(obj.weight_factor_to_calculate_valley_fill_target); - }, - [](py::tuple t){ // __setstate__ - ES300_L2_parameters obj; - obj.weight_factor_to_calculate_valley_fill_target = t[0].cast(); - return obj; - } - )); - - py::class_(m, "normal_random_error") - .def(py::init<>()) - .def_readwrite("seed", &normal_random_error::seed) - .def_readwrite("stdev", &normal_random_error::stdev) - .def_readwrite("stdev_bounds", &normal_random_error::stdev_bounds) - .def(py::pickle( - [](const normal_random_error &obj){ // __getstate__ - return py::make_tuple(obj.seed, obj.stdev, obj.stdev_bounds); - }, - [](py::tuple t){ // __setstate__ - normal_random_error obj; - obj.seed = t[0].cast(); - obj.stdev = t[1].cast(); - obj.stdev_bounds = t[2].cast(); - return obj; - } - )); - - py::class_(m, "ES500_L2_parameters") - .def(py::init<>()) - .def_readwrite("aggregator_timestep_mins", &ES500_L2_parameters::aggregator_timestep_mins) - .def_readwrite("off_to_on_lead_time_sec", &ES500_L2_parameters::off_to_on_lead_time_sec) - .def_readwrite("default_lead_time_sec", &ES500_L2_parameters::default_lead_time_sec) - .def(py::pickle( - [](const ES500_L2_parameters &obj){ // __getstate__ - return py::make_tuple(obj.aggregator_timestep_mins, obj.off_to_on_lead_time_sec, obj.default_lead_time_sec); - }, - [](py::tuple t){ // __setstate__ - ES500_L2_parameters obj; - obj.aggregator_timestep_mins = t[0].cast(); - obj.off_to_on_lead_time_sec = t[1].cast(); - obj.default_lead_time_sec = t[2].cast(); - return obj; - } - )); - - py::class_(m, "VS100_L2_parameters") - .def(py::init<>()) - .def_readwrite("target_P3_reference__percent_of_maxP3", &VS100_L2_parameters::target_P3_reference__percent_of_maxP3) - .def_readwrite("max_delta_kW_per_min", &VS100_L2_parameters::max_delta_kW_per_min) - .def_readwrite("volt_delta_kW_curve_puV", &VS100_L2_parameters::volt_delta_kW_curve_puV) - .def_readwrite("volt_delta_kW_percP", &VS100_L2_parameters::volt_delta_kW_percP) - .def_readwrite("voltage_LPF", &VS100_L2_parameters::voltage_LPF) - .def(py::pickle( - [](const VS100_L2_parameters &obj){ // __getstate__ - return py::make_tuple(obj.target_P3_reference__percent_of_maxP3, obj.max_delta_kW_per_min, obj.volt_delta_kW_curve_puV, obj.volt_delta_kW_percP, obj.voltage_LPF); - }, - [](py::tuple t){ // __setstate__ - VS100_L2_parameters obj; - obj.target_P3_reference__percent_of_maxP3 = t[0].cast(); - obj.max_delta_kW_per_min = t[1].cast(); - - for(auto x : t[2]) - obj.volt_delta_kW_curve_puV.push_back(x.cast()); - - for(auto x : t[3]) - obj.volt_delta_kW_percP.push_back(x.cast()); - - obj.voltage_LPF = t[4].cast(); - - return obj; - } - )); - - py::class_(m, "VS200_L2_parameters") - .def(py::init<>()) - .def_readwrite("target_P3_reference__percent_of_maxP3", &VS200_L2_parameters::target_P3_reference__percent_of_maxP3) - .def_readwrite("max_delta_kVAR_per_min", &VS200_L2_parameters::max_delta_kVAR_per_min) - .def_readwrite("volt_var_curve_puV", &VS200_L2_parameters::volt_var_curve_puV) - .def_readwrite("volt_var_curve_percQ", &VS200_L2_parameters::volt_var_curve_percQ) - .def_readwrite("voltage_LPF", &VS200_L2_parameters::voltage_LPF) - .def(py::pickle( - [](const VS200_L2_parameters &obj){ // __getstate__ - return py::make_tuple(obj.target_P3_reference__percent_of_maxP3, obj.max_delta_kVAR_per_min, obj.volt_var_curve_puV, obj.volt_var_curve_percQ, obj.voltage_LPF); - }, - [](py::tuple t){ // __setstate__ - VS200_L2_parameters obj; - obj.target_P3_reference__percent_of_maxP3 = t[0].cast(); - obj.max_delta_kVAR_per_min = t[1].cast(); - - for(auto x : t[2]) - obj.volt_var_curve_puV.push_back(x.cast()); - - for(auto x : t[3]) - obj.volt_var_curve_percQ.push_back(x.cast()); - - obj.voltage_LPF = t[4].cast(); - - return obj; - } - )); - - py::class_(m, "VS300_L2_parameters") - .def(py::init<>()) - .def_readwrite("target_P3_reference__percent_of_maxP3", &VS300_L2_parameters::target_P3_reference__percent_of_maxP3) - .def_readwrite("max_QkVAR_as_percent_of_SkVA", &VS300_L2_parameters::max_QkVAR_as_percent_of_SkVA) - .def_readwrite("gamma", &VS300_L2_parameters::gamma) - .def_readwrite("voltage_LPF", &VS300_L2_parameters::voltage_LPF) - .def(py::pickle( - [](const VS300_L2_parameters &obj){ // __getstate__ - return py::make_tuple(obj.target_P3_reference__percent_of_maxP3, obj.max_QkVAR_as_percent_of_SkVA, obj.gamma, obj.voltage_LPF); - }, - [](py::tuple t){ // __setstate__ - VS300_L2_parameters obj; - obj.target_P3_reference__percent_of_maxP3 = t[0].cast(); - obj.max_QkVAR_as_percent_of_SkVA = t[1].cast(); - obj.gamma = t[2].cast(); - obj.voltage_LPF = t[3].cast(); - return obj; - } - )); - - py::class_(m, "control_strategy_enums") - .def(py::init<>()) - .def_readwrite("inverter_model_supports_Qsetpoint", &control_strategy_enums::inverter_model_supports_Qsetpoint) - .def_readwrite("ES_control_strategy", &control_strategy_enums::ES_control_strategy) - .def_readwrite("VS_control_strategy", &control_strategy_enums::VS_control_strategy) - .def_readwrite("ext_control_strategy", &control_strategy_enums::ext_control_strategy) - .def(py::pickle( - [](const control_strategy_enums &obj){ // __getstate__ - return py::make_tuple(obj.inverter_model_supports_Qsetpoint, obj.ES_control_strategy, obj.VS_control_strategy, obj.ext_control_strategy); - }, - [](py::tuple t){ // __setstate__ - control_strategy_enums obj; - obj.inverter_model_supports_Qsetpoint = t[0].cast(); - obj.ES_control_strategy = t[1].cast(); - obj.VS_control_strategy = t[2].cast(); - obj.ext_control_strategy = t[3].cast(); - return obj; - } - )); - - py::class_(m, "L2_control_strategy_parameters") - .def(py::init<>()) - - .def_readwrite("ES100_A", &L2_control_strategy_parameters::ES100_A) - .def_readwrite("ES100_B", &L2_control_strategy_parameters::ES100_B) - .def_readwrite("ES110", &L2_control_strategy_parameters::ES110) - .def_readwrite("ES200", &L2_control_strategy_parameters::ES200) - .def_readwrite("ES300", &L2_control_strategy_parameters::ES300) - .def_readwrite("ES500", &L2_control_strategy_parameters::ES500) - - .def_readwrite("VS100", &L2_control_strategy_parameters::VS100) - .def_readwrite("VS200_A", &L2_control_strategy_parameters::VS200_A) - .def_readwrite("VS200_B", &L2_control_strategy_parameters::VS200_B) - .def_readwrite("VS200_C", &L2_control_strategy_parameters::VS200_C) - .def_readwrite("VS300", &L2_control_strategy_parameters::VS300) - - .def(py::pickle( - [](const L2_control_strategy_parameters &obj){ // __getstate__ - return py::make_tuple(obj.ES100_A, obj.ES100_B, obj.ES110, obj.ES200, obj.ES300, obj.ES500, - obj.VS100, obj.VS200_A, obj.VS200_B, obj.VS200_C, obj.VS300); - }, - [](py::tuple t){ // __setstate__ - L2_control_strategy_parameters obj; - - obj.ES100_A = t[0].cast(); - obj.ES100_B = t[1].cast(); - obj.ES110 = t[2].cast(); - obj.ES200 = t[3].cast(); - obj.ES300 = t[4].cast(); - obj.ES500 = t[5].cast(); - - obj.VS100 = t[6].cast(); - obj.VS200_A = t[7].cast(); - obj.VS200_B = t[8].cast(); - obj.VS200_C = t[9].cast(); - obj.VS300 = t[10].cast(); - - return obj; - } - )); - - //--------------------------------- - // ES500 Aggregator Structures - //--------------------------------- - py::class_(m, "ES500_aggregator_pev_charge_needs") - .def(py::init<>()) - .def_readwrite("SE_id", &ES500_aggregator_pev_charge_needs::SE_id) - .def_readwrite("departure_unix_time", &ES500_aggregator_pev_charge_needs::departure_unix_time) - .def_readwrite("e3_charge_remain_kWh", &ES500_aggregator_pev_charge_needs::e3_charge_remain_kWh) - .def_readwrite("e3_step_max_kWh", &ES500_aggregator_pev_charge_needs::e3_step_max_kWh) - .def_readwrite("e3_step_target_kWh", &ES500_aggregator_pev_charge_needs::e3_step_target_kWh) - .def_readwrite("min_remaining_charge_time_hrs", &ES500_aggregator_pev_charge_needs::min_remaining_charge_time_hrs) - .def_readwrite("min_time_to_complete_entire_charge_hrs", &ES500_aggregator_pev_charge_needs::min_time_to_complete_entire_charge_hrs) - .def_readwrite("remaining_park_time_hrs", &ES500_aggregator_pev_charge_needs::remaining_park_time_hrs) - .def_readwrite("total_park_time_hrs", &ES500_aggregator_pev_charge_needs::total_park_time_hrs) - .def(py::pickle( - [](const ES500_aggregator_pev_charge_needs &obj){ // __getstate__ - return py::make_tuple(obj.SE_id, obj.departure_unix_time, obj.e3_charge_remain_kWh, obj.e3_step_max_kWh, obj.e3_step_target_kWh, obj.min_remaining_charge_time_hrs, obj.min_time_to_complete_entire_charge_hrs, obj.remaining_park_time_hrs, obj.total_park_time_hrs); - }, - [](py::tuple t){ // __setstate__ - ES500_aggregator_pev_charge_needs obj; - obj.SE_id = t[0].cast(); - obj.departure_unix_time = t[1].cast(); - obj.e3_charge_remain_kWh = t[2].cast(); - obj.e3_step_max_kWh = t[3].cast(); - obj.e3_step_target_kWh = t[4].cast(); - obj.min_remaining_charge_time_hrs = t[5].cast(); - obj.min_time_to_complete_entire_charge_hrs = t[6].cast(); - obj.remaining_park_time_hrs = t[7].cast(); - obj.total_park_time_hrs = t[8].cast(); - - return obj; - } - )); - - py::class_(m, "ES500_aggregator_charging_needs") - .def(py::init<>()) - .def("is_empty", &ES500_aggregator_charging_needs::is_empty) - .def_readwrite("next_aggregator_timestep_start_time", &ES500_aggregator_charging_needs::next_aggregator_timestep_start_time) - .def_readwrite("pev_charge_needs", &ES500_aggregator_charging_needs::pev_charge_needs) - .def(py::pickle( - [](const ES500_aggregator_charging_needs &obj){ // __getstate__ - return py::make_tuple(obj.next_aggregator_timestep_start_time, obj.pev_charge_needs); - }, - [](py::tuple t){ // __setstate__ - ES500_aggregator_charging_needs obj; - obj.next_aggregator_timestep_start_time = t[0].cast(); - - for(auto x : t[1]) - obj.pev_charge_needs.push_back(x.cast()); - - return obj; - } - )); - - py::class_(m, "ES500_aggregator_e_step_setpoints") - .def(py::init<>()) - .def(py::init, std::vector, std::vector >()) - .def("is_empty", &ES500_aggregator_e_step_setpoints::is_empty) - .def_readwrite("next_aggregator_timestep_start_time", &ES500_aggregator_e_step_setpoints::next_aggregator_timestep_start_time) - .def_readwrite("SE_id", &ES500_aggregator_e_step_setpoints::SE_id) - .def_readwrite("e3_step_kWh", &ES500_aggregator_e_step_setpoints::e3_step_kWh) - .def_readwrite("charge_progression", &ES500_aggregator_e_step_setpoints::charge_progression) - .def(py::pickle( - [](const ES500_aggregator_e_step_setpoints &obj){ // __getstate__ - return py::make_tuple(obj.next_aggregator_timestep_start_time, obj.SE_id, obj.e3_step_kWh, obj.charge_progression); - }, - [](py::tuple t){ // __setstate__ - ES500_aggregator_e_step_setpoints obj; - obj.next_aggregator_timestep_start_time = t[0].cast(); - - for(auto x : t[1]) - obj.SE_id.push_back(x.cast()); - - for(auto x : t[2]) - obj.e3_step_kWh.push_back(x.cast()); - - for(auto x : t[3]) - obj.charge_progression.push_back(x.cast()); - - return obj; - } - )); - - py::class_(m, "ES500_aggregator_charging_forecast") - .def(py::init<>()) - .def_readwrite("arrival_unix_time", &ES500_aggregator_charging_forecast::arrival_unix_time) - .def_readwrite("departure_unix_time", &ES500_aggregator_charging_forecast::departure_unix_time) - .def_readwrite("e3_charge_remain_kWh", &ES500_aggregator_charging_forecast::e3_charge_remain_kWh) - .def_readwrite("e3_step_max_kWh", &ES500_aggregator_charging_forecast::e3_step_max_kWh) - .def(py::pickle( - [](const ES500_aggregator_charging_forecast &obj){ // __getstate__ - return py::make_tuple(obj.arrival_unix_time, obj.departure_unix_time, obj.e3_charge_remain_kWh, obj.e3_step_max_kWh); - }, - [](py::tuple t){ // __setstate__ - ES500_aggregator_charging_forecast obj; - - for(auto x : t[0]) - obj.arrival_unix_time.push_back(x.cast()); - - for(auto x : t[1]) - obj.departure_unix_time.push_back(x.cast()); - - for(auto x : t[2]) - obj.e3_charge_remain_kWh.push_back(x.cast()); - - for(auto x : t[3]) - obj.e3_step_max_kWh.push_back(x.cast()); - - return obj; - } - )); - - py::class_(m, "ES500_aggregator_obj_fun_constraints") - .def(py::init<>()) - .def_readwrite("E_cumEnergy_ALAP_kWh", &ES500_aggregator_obj_fun_constraints::E_cumEnergy_ALAP_kWh) - .def_readwrite("E_cumEnergy_ASAP_kWh", &ES500_aggregator_obj_fun_constraints::E_cumEnergy_ASAP_kWh) - .def_readwrite("E_energy_ALAP_kWh", &ES500_aggregator_obj_fun_constraints::E_energy_ALAP_kWh) - .def_readwrite("E_energy_ASAP_kWh", &ES500_aggregator_obj_fun_constraints::E_energy_ASAP_kWh) - .def_readwrite("E_step_ALAP", &ES500_aggregator_obj_fun_constraints::E_step_ALAP) - .def_readwrite("canSolve_aka_pev_charging_in_prediction_window", &ES500_aggregator_obj_fun_constraints::canSolve_aka_pev_charging_in_prediction_window) - .def(py::pickle( - [](const ES500_aggregator_obj_fun_constraints &obj){ // __getstate__ - return py::make_tuple(obj.E_cumEnergy_ALAP_kWh, obj.E_cumEnergy_ASAP_kWh, obj.E_energy_ALAP_kWh, obj.E_energy_ASAP_kWh, obj.E_step_ALAP, obj.canSolve_aka_pev_charging_in_prediction_window); - }, - [](py::tuple t){ // __setstate__ - ES500_aggregator_obj_fun_constraints obj; - - for(auto x : t[0]) - obj.E_cumEnergy_ALAP_kWh.push_back(x.cast()); - - for(auto x : t[1]) - obj.E_cumEnergy_ASAP_kWh.push_back(x.cast()); - - for(auto x : t[2]) - obj.E_energy_ALAP_kWh.push_back(x.cast()); - - for(auto x : t[3]) - obj.E_energy_ASAP_kWh.push_back(x.cast()); - - for(auto x : t[4]) - obj.E_step_ALAP.push_back(x.cast()); - - obj.canSolve_aka_pev_charging_in_prediction_window = t[5].cast(); - - return obj; - } - )); - - py::class_(m, "ES500_charge_cycling_control_boundary_point") - .def(py::init<>()) - .def(py::init()) - .def_readwrite("cycling_magnitude", &ES500_charge_cycling_control_boundary_point::cycling_magnitude) - .def_readwrite("cycling_vs_ramping", &ES500_charge_cycling_control_boundary_point::cycling_vs_ramping) - .def(py::pickle( - [](const ES500_charge_cycling_control_boundary_point &obj){ // __getstate__ - return py::make_tuple(obj.cycling_magnitude, obj.cycling_vs_ramping); - }, - [](py::tuple t){ // __setstate__ - ES500_charge_cycling_control_boundary_point obj; - obj.cycling_magnitude = t[0].cast(); - obj.cycling_vs_ramping = t[1].cast(); - return obj; - } - )); - - py::class_(m, "ES500_stop_charge_cycling_decision_parameters") - .def(py::init<>()) - .def_readwrite("next_aggregator_timestep_start_time", &ES500_stop_charge_cycling_decision_parameters::next_aggregator_timestep_start_time) - .def_readwrite("iteration", &ES500_stop_charge_cycling_decision_parameters::iteration) - .def_readwrite("is_last_iteration", &ES500_stop_charge_cycling_decision_parameters::is_last_iteration) - .def_readwrite("off_to_on_nrg_kWh", &ES500_stop_charge_cycling_decision_parameters::off_to_on_nrg_kWh) - .def_readwrite("on_to_off_nrg_kWh", &ES500_stop_charge_cycling_decision_parameters::on_to_off_nrg_kWh) - .def_readwrite("total_on_nrg_kWh", &ES500_stop_charge_cycling_decision_parameters::total_on_nrg_kWh) - .def_readwrite("cycling_vs_ramping", &ES500_stop_charge_cycling_decision_parameters::cycling_vs_ramping) - .def_readwrite("cycling_magnitude", &ES500_stop_charge_cycling_decision_parameters::cycling_magnitude) - .def_readwrite("delta_energy_kWh", &ES500_stop_charge_cycling_decision_parameters::delta_energy_kWh) - .def(py::pickle( - [](const ES500_stop_charge_cycling_decision_parameters &obj){ // __getstate__ - return py::make_tuple(obj.next_aggregator_timestep_start_time, obj.iteration, obj.is_last_iteration, obj.off_to_on_nrg_kWh, obj.on_to_off_nrg_kWh, obj.total_on_nrg_kWh, obj.cycling_vs_ramping, obj.cycling_magnitude, obj.delta_energy_kWh); - }, - [](py::tuple t){ // __setstate__ - ES500_stop_charge_cycling_decision_parameters obj; - obj.next_aggregator_timestep_start_time = t[0].cast(); - obj.iteration = t[1].cast(); - obj.is_last_iteration = t[2].cast(); - obj.off_to_on_nrg_kWh = t[3].cast(); - obj.on_to_off_nrg_kWh = t[4].cast(); - obj.total_on_nrg_kWh = t[5].cast(); - obj.cycling_vs_ramping = t[6].cast(); - obj.cycling_magnitude = t[7].cast(); - obj.delta_energy_kWh = t[8].cast(); - return obj; - } - )); - - //--------------------------------- - // PEV Ramping Parameters - //--------------------------------- - - py::class_(m, "pev_charge_ramping") - .def(py::init<>()) - .def(py::init()) - .def_readwrite("off_to_on_delay_sec", &pev_charge_ramping::off_to_on_delay_sec) - .def_readwrite("off_to_on_kW_per_sec", &pev_charge_ramping::off_to_on_kW_per_sec) - .def_readwrite("on_to_off_delay_sec", &pev_charge_ramping::on_to_off_delay_sec) - .def_readwrite("on_to_off_kW_per_sec", &pev_charge_ramping::on_to_off_kW_per_sec) - .def_readwrite("ramp_up_delay_sec", &pev_charge_ramping::ramp_up_delay_sec) - .def_readwrite("ramp_up_kW_per_sec", &pev_charge_ramping::ramp_up_kW_per_sec) - .def_readwrite("ramp_down_delay_sec", &pev_charge_ramping::ramp_down_delay_sec) - .def_readwrite("ramp_down_kW_per_sec", &pev_charge_ramping::ramp_down_kW_per_sec) - .def(py::pickle( - [](const pev_charge_ramping &obj){ // __getstate__ - return py::make_tuple(obj.off_to_on_delay_sec, obj.off_to_on_kW_per_sec, obj.on_to_off_delay_sec, obj.on_to_off_kW_per_sec, obj.ramp_up_delay_sec, obj.ramp_up_kW_per_sec, obj.ramp_down_delay_sec, obj.ramp_down_kW_per_sec); - }, - [](py::tuple t){ // __setstate__ - pev_charge_ramping obj; - obj.off_to_on_delay_sec = t[0].cast(); - obj.off_to_on_kW_per_sec = t[1].cast(); - obj.on_to_off_delay_sec = t[2].cast(); - obj.on_to_off_kW_per_sec = t[3].cast(); - obj.ramp_up_delay_sec = t[4].cast(); - obj.ramp_up_kW_per_sec = t[5].cast(); - obj.ramp_down_delay_sec = t[6].cast(); - obj.ramp_down_kW_per_sec = t[7].cast(); - return obj; - } - )); - - py::class_(m, "pev_charge_ramping_workaround") - .def(py::init<>()) - .def_readwrite("pev_charge_ramping_obj", &pev_charge_ramping_workaround::pev_charge_ramping_obj) - .def_readwrite("pev_type", &pev_charge_ramping_workaround::pev_type) - .def_readwrite("SE_type", &pev_charge_ramping_workaround::SE_type) - .def(py::pickle( - [](const pev_charge_ramping_workaround &obj){ // __getstate__ - return py::make_tuple(obj.pev_charge_ramping_obj, obj.pev_type, obj.SE_type); - }, - [](py::tuple t){ // __setstate__ - pev_charge_ramping_workaround obj; - obj.pev_charge_ramping_obj = t[0].cast(); - obj.pev_type = t[1].cast(); - obj.SE_type = t[2].cast(); - return obj; - } - )); -} diff --git a/source/globals/datatypes_global.h b/source/globals/datatypes_global.h index 3012927..1516ac7 100644 --- a/source/globals/datatypes_global.h +++ b/source/globals/datatypes_global.h @@ -2,8 +2,6 @@ #ifndef inl_datatypes_global_H #define inl_datatypes_global_H -//#include "datatypes_global_SE_EV_definitions.h" // supply_equipment_enum, vehicle_enum - #include "EV_characteristics.h" #include "EVSE_characteristics.h" diff --git a/source/globals/helper.h b/source/globals/helper.h index 6d1168c..7387857 100644 --- a/source/globals/helper.h +++ b/source/globals/helper.h @@ -65,7 +65,8 @@ class linear_regression }; struct line_segment -{ // y = a*x + b +{ + // y = a*x + b double x_LB; double x_UB; double a; @@ -73,7 +74,7 @@ struct line_segment const double y_UB() const {return this->a*this->x_UB + this->b;} const double y_LB() const {return this->a*this->x_LB + this->b;} - const double y(const double& x) const {return this->a*x + this->b;} + const double y(const double x) const {return this->a*x + this->b;} bool operator<(const line_segment& rhs) const { @@ -85,7 +86,7 @@ struct line_segment return this->x_LB < rhs.x_LB; } - line_segment(const double& x_LB, const double& x_UB, const double& a, const double& b) + line_segment(const double x_LB, const double x_UB, const double a, const double b) : x_LB(x_LB), x_UB(x_UB), a(a), b(b) {} }; std::ostream& operator<<(std::ostream& out, line_segment& x); diff --git a/source/load_inputs/load_EV_EVSE_inventory.cpp b/source/load_inputs/load_EV_EVSE_inventory.cpp index 9509d6d..f9e5e17 100644 --- a/source/load_inputs/load_EV_EVSE_inventory.cpp +++ b/source/load_inputs/load_EV_EVSE_inventory.cpp @@ -1,8 +1,8 @@ #include "load_EV_EVSE_inventory.h" load_EV_EVSE_inventory::load_EV_EVSE_inventory(const std::string& inputs_dir) : - inventory(EV_EVSE_inventory(load_EV_inventory(inputs_dir).get_EV_inventory(), - load_EVSE_inventory(inputs_dir).get_EVSE_inventory())) {} + inventory{ load_EV_inventory(inputs_dir).get_EV_inventory(), load_EVSE_inventory(inputs_dir).get_EVSE_inventory() } +{} const EV_EVSE_inventory& load_EV_EVSE_inventory::get_EV_EVSE_inventory() const { diff --git a/source/pev_charge_profile_factory/create_library/CMakeLists.txt b/source/pev_charge_profile_factory/create_library/CMakeLists.txt deleted file mode 100644 index 48cceee..0000000 --- a/source/pev_charge_profile_factory/create_library/CMakeLists.txt +++ /dev/null @@ -1,18 +0,0 @@ -cmake_minimum_required(VERSION 3.5) - -project(Charge_profile_library) - -set(CMAKE_POSITION_INDEPENDENT_CODE ON) - -if (NOT DEFINED INSTALL_DIR) - message(STATUS "setting local install dir") - set(INSTALL_DIR ${PROJECT_SOURCE_DIR}/../generate_charge_profiles) -endif() - -message(STATUS "Install dir is ${INSTALL_DIR}") -find_package(pybind11 CONFIG) -add_executable(charge_profile_factory pev_charge_profile_factory.cpp main.cpp) -#pybind11_add_module(charge_profile_factory MODULE pev_charge_profile_factory.cpp python_bind.cpp main.cpp) - -install(TARGETS charge_profile_factory - DESTINATION ${INSTALL_DIR}) diff --git a/source/pev_charge_profile_factory/create_library/compile.sh b/source/pev_charge_profile_factory/create_library/compile.sh deleted file mode 100644 index 9c0d879..0000000 --- a/source/pev_charge_profile_factory/create_library/compile.sh +++ /dev/null @@ -1,33 +0,0 @@ - -echo "" -echo "=================================================================" -echo " Building charge_profile_factory" -echo "=================================================================" - -is_windows(){ - unameOut="$(uname -s)" # Linux*) MINGW*) Darwin*) CYGWIN*) - - case "${unameOut}" in - CYGWIN*) return 1;; - MINGW*) return 1;; - *) return 0 - esac -} - -is_windows -if [ $? -eq 1 ]; then - python_ext="python" -else - python_ext="python3" -fi - -#---------------------------- - -rm -rf ./build -eval "$python_ext setup.py build" -mv ./build/lib.*/charge_profile_factory* ./ -rm -rf ./build -cd .. - -echo "" - diff --git a/source/pev_charge_profile_factory/create_library/main.cpp b/source/pev_charge_profile_factory/create_library/main.cpp deleted file mode 100644 index 094fd4d..0000000 --- a/source/pev_charge_profile_factory/create_library/main.cpp +++ /dev/null @@ -1,9 +0,0 @@ -#include -#include "pev_charge_profile_factory.h" - -int main() -{ - pev_charge_profile_factory factory_obj; - std::vector segs = factory_obj.get_dcfc_charge_profile(NMC, 92.1053, 126.808, 2.64, 100000, 125); - return 0; -} \ No newline at end of file diff --git a/source/pev_charge_profile_factory/create_library/pev_charge_profile_factory.cpp b/source/pev_charge_profile_factory/create_library/pev_charge_profile_factory.cpp deleted file mode 100644 index c2e2644..0000000 --- a/source/pev_charge_profile_factory/create_library/pev_charge_profile_factory.cpp +++ /dev/null @@ -1,1038 +0,0 @@ - -#include "pev_charge_profile_factory.h" - -#include -#include - -//############################################################################# -// linear_regression -//############################################################################# - - -lin_reg_slope_yinter linear_regression::non_weighted(const std::vector &points) -{ - double sum_x, sum_xx, sum_y, sum_xy, x, y; - - sum_x = 0; - sum_xx = 0; - sum_y = 0; - sum_xy = 0; - - for(int i=0; i Transpose - - double det, invK_11, invK_12, invK_21, invK_22, n; - - n = points.size(); - det = n*sum_xx - sum_x*sum_x; - - invK_11 = sum_xx/det; - invK_12 = -sum_x/det; - invK_21 = invK_12; - invK_22 = n/det; - - //------------------------------ - - double m, y_intercept; - - y_intercept = invK_11*sum_y + invK_12*sum_xy; - m = invK_21*sum_y + invK_22*sum_xy; - - //------------------------------ - - lin_reg_slope_yinter return_val = {m, y_intercept}; - return return_val; -} - - -lin_reg_slope_yinter linear_regression::weighted(const std::vector &points) -{ - double sum_w, sum_wx, sum_wxx, sum_wy, sum_wxy, x, y, w; - - sum_w = 0; - sum_wx = 0; - sum_wxx = 0; - sum_wy = 0; - sum_wxy = 0; - - for(int i=0; i Transpose - - double det, invK_11, invK_12, invK_21, invK_22; - - det = sum_w*sum_wxx - sum_wx*sum_wx; - - invK_11 = sum_wxx/det; - invK_12 = -sum_wx/det; - invK_21 = invK_12; - invK_22 = sum_w/det; - - //------------------------------ - - double m, y_intercept; - - y_intercept = invK_11*sum_wy + invK_12*sum_wxy; - m = invK_21*sum_wy + invK_22*sum_wxy; - - //------------------------------ - - lin_reg_slope_yinter return_val = {m, y_intercept}; - return return_val; -} - - -//############################################################################# -// PEV Charge Profile Factory -//############################################################################# - -std::ostream& operator<<(std::ostream& out, line_segment& z) -{ - out << z.x_LB << "," << z.a*z.x_LB + z.b << std::endl; - out << z.x_UB << "," << z.a*z.x_UB + z.b << std::endl; - return out; -} - - //############################################# - // Ppu_vs_soc_curve - //############################################# - -Ppu_vs_soc_curve::Ppu_vs_soc_curve(double C_rate_, const std::vector &points_) -{ - C_rate = C_rate_; - points = points_; - - std::sort(points.begin(), points.end()); -} - -double Ppu_vs_soc_curve::get_current_rate_amps(double bat_capacity_Ah_1C) -{ - return C_rate * bat_capacity_Ah_1C; -} - -const std::vector& Ppu_vs_soc_curve::get_points() -{ - return points; -} - - //############################################# - // create_dcPkW_from_soc - //############################################# - -create_dcPkW_from_soc::create_dcPkW_from_soc(bool is_charging_not_discharging_, const std::vector& curves_) -{ - is_charging_not_discharging = is_charging_not_discharging_; - curves = curves_; - std::sort(curves.rbegin(), curves.rend()); -} - - -void create_dcPkW_from_soc::get_L1_or_L2_charge_profile(double bat_energy_kWh, double charge_rate_kW, std::vector &pev_charge_profile) -{ - Ppu_vs_soc_curve _1c_curve = this->curves[this->curves.size() - 2]; - std::vector _1c_points = _1c_curve.get_points(); - std::sort(_1c_points.rbegin(), _1c_points.rend()); - - Ppu_vs_soc_point point_A = _1c_points[0]; - Ppu_vs_soc_point point_B = _1c_points[1]; - - double soc_A = point_A.soc; - double soc_B = point_B.soc; - - double P_A = point_A.P_pu * bat_energy_kWh; - double P_B = point_B.P_pu * bat_energy_kWh; - - //----------------------------------- - - double m = (P_A - P_B) / (soc_A - soc_B); - double b = P_A - m * soc_A; - - double soc_intersection = (charge_rate_kW - b) / m; - - //----------------------------------- - - pev_charge_profile.clear(); - - if(soc_intersection < 99.5) - { - pev_charge_profile.push_back({0, soc_intersection, 0, charge_rate_kW}); - pev_charge_profile.push_back({soc_intersection, 100., m, b}); - } - else - pev_charge_profile.push_back({0, 100, 0, charge_rate_kW}); -} - - -void create_dcPkW_from_soc::get_dcfc_charge_profile(double bat_energy_kWh, double dc_current_limit, double dc_pwr_limit_kW, double bat_capacity_Ah_1C, std::vector &dcPkW_from_soc, std::vector &constraints) -{ - if(is_charging_not_discharging) - get_charging_dcfc_charge_profile(bat_energy_kWh, dc_current_limit, dc_pwr_limit_kW, bat_capacity_Ah_1C, dcPkW_from_soc, constraints); - else - get_discharging_dcfc_charge_profile(bat_energy_kWh, dc_current_limit, dc_pwr_limit_kW, bat_capacity_Ah_1C, dcPkW_from_soc, constraints); -} - - -void create_dcPkW_from_soc::get_charging_dcfc_charge_profile(double bat_energy_kWh, double dc_current_limit, double dc_pwr_limit_kW, double bat_capacity_Ah_1C, std::vector &dcPkW_from_soc, std::vector &constraints) -{ - //===================================================== - // Interpolate pu curves using dc_current_limit - //===================================================== - - std::vector dcPkW_from_soc_input; - double soc_0, soc_1, soc_tmp, P_0, P_1, w, P_tmp; - double m, b, m1, b1; - - if(dc_current_limit >= this->curves[0].get_current_rate_amps(bat_capacity_Ah_1C)) - { - std::vector points; - points = this->curves[0].get_points(); - - for(int i=0; icurves.size(); i++) - { - if(this->curves[i].get_current_rate_amps(bat_capacity_Ah_1C) < dc_current_limit) - { - upper_curve = this->curves[i-1]; // curves ar getting copied - lower_curve = this->curves[i]; - break; - } - } - - //-------------------------------------- - // Interpolate Curves - //-------------------------------------- - - // interpolated_val = weight_factor*high_val + (1 - weight_factor)*low_val; - double weight_factor = (dc_current_limit - lower_curve.get_current_rate_amps(bat_capacity_Ah_1C)) / (upper_curve.get_current_rate_amps(bat_capacity_Ah_1C) - lower_curve.get_current_rate_amps(bat_capacity_Ah_1C)); - - std::vector upper_points = upper_curve.get_points(); // get points return const reference so this copy is alright - std::vector lower_points = lower_curve.get_points(); - - //----------------- - - int index_upper_curve, index_lower_curve; - double next_soc_lower_curve, next_soc_upper_curve; - bool extend_segment; - - index_upper_curve = 0; - index_lower_curve = 0; - soc_0 = 0; - P_0 = weight_factor*upper_points[0].P_pu + (1-weight_factor)*lower_points[0].P_pu; - - // upper_points and lower_points are points not segments - while(true) - { - next_soc_lower_curve = lower_points[index_lower_curve + 1].soc; - next_soc_upper_curve = upper_points[index_upper_curve + 1].soc; - extend_segment = false; - - if(std::abs(next_soc_lower_curve - next_soc_upper_curve) < 1) - { - if(upper_points[index_upper_curve + 1].point_type == extend) - extend_segment = true; - - soc_1 = next_soc_upper_curve; - P_1 = weight_factor*upper_points[index_upper_curve+1].P_pu + (1-weight_factor)*lower_points[index_lower_curve+1].P_pu; - index_lower_curve += 1; - index_upper_curve += 1; - } - else if(next_soc_upper_curve < next_soc_lower_curve) - { - if(upper_points[index_upper_curve + 1].point_type == extend) - extend_segment = true; - - soc_1 = next_soc_upper_curve; - - w = (soc_1 - lower_points[index_lower_curve].soc) / (lower_points[index_lower_curve+1].soc - lower_points[index_lower_curve].soc); - P_tmp = w*lower_points[index_lower_curve+1].P_pu + (1-w)*lower_points[index_lower_curve].P_pu; - - P_1 = weight_factor*upper_points[index_upper_curve+1].P_pu + (1-weight_factor)*P_tmp; - index_upper_curve += 1; - } - else if(next_soc_lower_curve < next_soc_upper_curve) - { - soc_1 = next_soc_lower_curve; - - w = (soc_1 - upper_points[index_upper_curve].soc) / (upper_points[index_upper_curve+1].soc - upper_points[index_upper_curve].soc); - P_tmp = w*upper_points[index_upper_curve+1].P_pu + (1-w)*upper_points[index_upper_curve].P_pu; - - P_1 = weight_factor*P_tmp + (1-weight_factor)*lower_points[index_lower_curve+1].P_pu; - index_lower_curve += 1; - } - - //------------------------------- - - m = (P_1 - P_0) / (soc_1 - soc_0); - b = P_1 - m*soc_1; - - if(extend_segment) - { - m1 = (upper_points[index_upper_curve+1].P_pu - upper_points[index_upper_curve].P_pu) / (upper_points[index_upper_curve+1].soc - upper_points[index_upper_curve].soc); - b1 = upper_points[index_upper_curve].P_pu - m1*upper_points[index_upper_curve].soc; - - soc_1 = (b-b1) / (m1-m); - P_1 = m*soc_1 + b; - } - - line_segment tmp_seg = {soc_0, soc_1, m, b}; - dcPkW_from_soc_input.push_back(tmp_seg); - - soc_0 = soc_1; - P_0 = P_1; - - if(extend_segment) - break; - } - - //-------------------------------------- - // Use Upper Curve Directly - //-------------------------------------- - - for(int i=index_upper_curve+1; i=0; i--) - { - if(0 <= dcPkW_from_soc_input[i].a) - { - boundary_index = i; - break; - } - } - - //---------------------- - - std::vector points_A; - std::vector points_B; - double x0, x1, y0, y1; - - for(int i=0; i constraints_; - constraints_.push_back(constraint_A); - constraints_.push_back(constraint_B); - - constraints = constraints_; -} - - -void create_dcPkW_from_soc::get_discharging_dcfc_charge_profile(double bat_energy_kWh, double dc_current_limit, double dc_pwr_limit_kW, double bat_capacity_Ah_1C, std::vector &dcPkW_from_soc, std::vector &constraints) -{ - //===================================================== - // Interpolate pu curves using dc_current_limit - //===================================================== - - std::vector dcPkW_from_soc_input; - double soc_0, soc_1, soc_tmp, P_0, P_1, w, P_tmp; - double m, b, m1, b1; - - if(dc_current_limit <= curves[curves.size()-1].get_current_rate_amps(bat_capacity_Ah_1C)) - { - std::vector points; - points = curves[curves.size()-1].get_points(); - - for(int i=0; i upper_points = upper_curve.get_points(); - std::vector lower_points = lower_curve.get_points(); - - //----------------- - - int index_upper_curve, index_lower_curve; - double next_soc_lower_curve, next_soc_upper_curve; - bool extend_segment; - - index_upper_curve = upper_points.size() - 1; - index_lower_curve = lower_points.size() - 1; - soc_0 = 100; - P_0 = weight_factor*upper_points[index_upper_curve].P_pu + (1-weight_factor)*lower_points[index_lower_curve].P_pu; - - // upper_points and lower_points are points not segments - while(true) - { - next_soc_lower_curve = lower_points[index_lower_curve - 1].soc; - next_soc_upper_curve = upper_points[index_upper_curve - 1].soc; - extend_segment = false; - - if(std::abs(next_soc_lower_curve - next_soc_upper_curve) < 1) - { - if(upper_points[index_upper_curve - 1].point_type == extend) - extend_segment = true; - - soc_1 = next_soc_upper_curve; - P_1 = weight_factor*upper_points[index_upper_curve-1].P_pu + (1-weight_factor)*lower_points[index_lower_curve-1].P_pu; - index_lower_curve -= 1; - index_upper_curve -= 1; - } - else if(next_soc_upper_curve > next_soc_lower_curve) - { - if(upper_points[index_upper_curve - 1].point_type == extend) - extend_segment = true; - - soc_1 = next_soc_upper_curve; - - w = (soc_1 - lower_points[index_lower_curve].soc) / (lower_points[index_lower_curve-1].soc - lower_points[index_lower_curve].soc); - P_tmp = w*lower_points[index_lower_curve-1].P_pu + (1-w)*lower_points[index_lower_curve].P_pu; - - P_1 = weight_factor*upper_points[index_upper_curve-1].P_pu + (1-weight_factor)*P_tmp; - index_upper_curve -= 1; - } - else if(next_soc_lower_curve > next_soc_upper_curve) - { - soc_1 = next_soc_lower_curve; - - w = (soc_1 - upper_points[index_upper_curve].soc) / (upper_points[index_upper_curve-1].soc - upper_points[index_upper_curve].soc); - P_tmp = w*upper_points[index_upper_curve-1].P_pu + (1-w)*upper_points[index_upper_curve].P_pu; - - P_1 = weight_factor*P_tmp + (1-weight_factor)*lower_points[index_lower_curve-1].P_pu; - index_lower_curve -= 1; - } - - //------------------------------- - - m = (P_1 - P_0) / (soc_1 - soc_0); - b = P_1 - m*soc_1; - - if(extend_segment) - { - m1 = (upper_points[index_upper_curve-1].P_pu - upper_points[index_upper_curve].P_pu) / (upper_points[index_upper_curve-1].soc - upper_points[index_upper_curve].soc); - b1 = upper_points[index_upper_curve].P_pu - m1*upper_points[index_upper_curve].soc; - - soc_1 = (b-b1) / (m1-m); - P_1 = m*soc_1 + b; - } - - line_segment tmp_seg = {soc_1, soc_0, m, b}; - dcPkW_from_soc_input.push_back(tmp_seg); - - soc_0 = soc_1; - P_0 = P_1; - - if(extend_segment) - break; - } - - //-------------------------------------- - // Use Upper Curve Directly - //-------------------------------------- - - for(int i=index_upper_curve-1; 0<=i; i--) - { - soc_1 = upper_points[i].soc; - P_1 = upper_points[i].P_pu; - - m = (P_1 - P_0) / (soc_1 - soc_0); - b = P_1 - m*soc_1; - - line_segment tmp_seg = {soc_1, soc_0, m, b}; - dcPkW_from_soc_input.push_back(tmp_seg); - - soc_0 = soc_1; - P_0 = P_1; - } - } - - //===================================================== - // Scale Using Battery Energy - //===================================================== - - for(int i=0; i points_A; - std::vector points_B; - double x0, x1, y0, y1; - - for(int i=0; i constraints_; - constraints_.push_back(constraint_A); - constraints_.push_back(constraint_B); - - constraints = constraints_; -} - - -//============================================================================= -// pev_charge_profile_factory -//============================================================================= - -//============================================= -// Init State Vals -//============================================= - -pev_charge_profile_factory::pev_charge_profile_factory() -{ - std::vector points; - std::vector curves; - double C_rate; - - bool is_charging_not_discharging = true; - - //======================== - // LMO Charging - //======================== - - curves.clear(); - - // {soc, P, (interpolate, extend, use_directly)} - points.clear(); - points.push_back({ 0.0, 0.898, interpolate}); - points.push_back({ 4.4, 1.056, interpolate}); - points.push_back({ 11.3, 1.154, interpolate}); - points.push_back({ 32.4, 1.215, interpolate}); - points.push_back({ 76.1, 1.274, extend}); - points.push_back({100.0, 0.064, use_directly}); - - C_rate = 1; - Ppu_vs_soc_curve curve_01(C_rate, points); - curves.push_back(curve_01); - - //------------------------------------ - - // {soc, P, (interpolate, extend, use_directly)} - points.clear(); - points.push_back({ 0.0, 1.742, interpolate}); - points.push_back({ 4.0, 2.044, interpolate}); - points.push_back({ 12.0, 2.249, interpolate}); - points.push_back({ 55.0, 2.418, extend}); - points.push_back({ 75.0, 1.190, use_directly}); - points.push_back({100.0, 0.064, use_directly}); - - C_rate = 2; - Ppu_vs_soc_curve curve_02(C_rate, points); - curves.push_back(curve_02); - - //------------------------------------ - - // {soc, P, (interpolate, extend, use_directly)} - points.clear(); - points.push_back({ 0.0, 2.667, interpolate}); - points.push_back({ 6.0, 3.246, interpolate}); - points.push_back({ 11.9, 3.436, interpolate}); - points.push_back({ 37.6, 3.628, extend}); - points.push_back({ 70.0, 1.440, use_directly}); - points.push_back({100.0, 0.064, use_directly}); - - C_rate = 3; - Ppu_vs_soc_curve curve_03(C_rate, points); - curves.push_back(curve_03); - - //------------------------------------ - - // {soc, P, (interpolate, extend, use_directly)} - points.clear(); - points.push_back({ 0.0, 0, interpolate}); - points.push_back({100.0, 0, interpolate}); - - C_rate = 0; - Ppu_vs_soc_curve curve_04(C_rate, points); - curves.push_back(curve_04); - - //------------------------------------ - - create_dcPkW_from_soc LMO_charge_(is_charging_not_discharging, curves); - this->LMO_charge = LMO_charge_; - - //======================== - // NMC Charging - //======================== - curves.clear(); - - // {soc, P, (interpolate, extend, use_directly)} - points.clear(); - points.push_back({ 0.0, 0.917, interpolate}); - points.push_back({ 4.0, 1.048, interpolate}); - points.push_back({ 10.0, 1.095, interpolate}); - points.push_back({ 88.0, 1.250, extend}); - // points.push_back({ 93.0, 0.595, use_directly}); // This point violates one of the key rules. - points.push_back({100.0, 0.060, use_directly}); - - C_rate = 1; - Ppu_vs_soc_curve curve_11(C_rate, points); - curves.push_back(curve_11); - - //------------------------------------ - - // {soc, P, (interpolate, extend, use_directly)} - points.clear(); - points.push_back({ 0.0, 1.750, interpolate}); - points.push_back({ 3.0, 2.000, interpolate}); - points.push_back({ 10.0, 2.143, interpolate}); - points.push_back({ 78.5, 2.417, extend}); - points.push_back({ 93.0, 0.595, use_directly}); - points.push_back({100.0, 0.060, use_directly}); - - C_rate = 2; - Ppu_vs_soc_curve curve_12(C_rate, points); - curves.push_back(curve_12); - - //------------------------------------ - - // {soc, P, (interpolate, extend, use_directly)} - points.clear(); - points.push_back({ 0.0, 2.798, interpolate}); - points.push_back({ 3.0, 3.167, interpolate}); - points.push_back({ 10.0, 3.393, interpolate}); - points.push_back({ 67.0, 3.750, extend}); - points.push_back({ 93.0, 0.595, use_directly}); - points.push_back({100.0, 0.060, use_directly}); - - C_rate = 3; - Ppu_vs_soc_curve curve_13(C_rate, points); - curves.push_back(curve_13); - - //------------------------------------ - - // {soc, P, (interpolate, extend, use_directly)} - points.clear(); - points.push_back({ 0.0, 0, interpolate}); - points.push_back({100.0, 0, interpolate}); - - C_rate = 0; - Ppu_vs_soc_curve curve_14(C_rate, points); - curves.push_back(curve_14); - - //------------------------------------ - - create_dcPkW_from_soc NMC_charge_(is_charging_not_discharging, curves); - this->NMC_charge = NMC_charge_; - - //======================== - // LTO Charging - //======================== - curves.clear(); - - // {soc, P, (interpolate, extend, use_directly)} - points.clear(); - points.push_back({ 0.0, 0.798, interpolate}); - points.push_back({ 2.0, 0.882, interpolate}); - points.push_back({ 50.0, 0.966, interpolate}); - points.push_back({ 64.0, 1.008, interpolate}); - points.push_back({ 80.0, 1.040, interpolate}); - points.push_back({ 90.0, 1.071, interpolate}); - points.push_back({ 96.0, 1.134, extend}); - points.push_back({100.0, 0.057, use_directly}); - - C_rate = 1; - Ppu_vs_soc_curve curve_21(C_rate, points); - curves.push_back(curve_21); - - //------------------------------------ - - // {soc, P, (interpolate, extend, use_directly)} - points.clear(); - points.push_back({ 0.0, 1.765, interpolate}); - points.push_back({ 2.0, 1.828, interpolate}); - points.push_back({ 50.0, 1.975, interpolate}); - points.push_back({ 60.0, 2.038, interpolate}); - points.push_back({ 80.0, 2.122, interpolate}); - points.push_back({ 91.0, 2.227, extend}); - points.push_back({100.0, 0.057, use_directly}); - - C_rate = 2; - Ppu_vs_soc_curve curve_22(C_rate, points); - curves.push_back(curve_22); - - //------------------------------------ - - // {soc, P, (interpolate, extend, use_directly)} - points.clear(); - points.push_back({ 0.0, 2.647, interpolate}); - points.push_back({ 2.0, 2.794, interpolate}); - points.push_back({ 50.0, 2.983, interpolate}); - points.push_back({ 60.0, 3.109, interpolate}); - points.push_back({ 80.0, 3.256, interpolate}); - points.push_back({ 88.0, 3.361, extend}); - points.push_back({100.0, 0.085, use_directly}); - - C_rate = 3; - Ppu_vs_soc_curve curve_23(C_rate, points); - curves.push_back(curve_23); - - //------------------------------------ - - // {soc, P, (interpolate, extend, use_directly)} - points.clear(); - points.push_back({ 0.0, 3.655, interpolate}); - points.push_back({ 3.0, 3.782, interpolate}); - points.push_back({ 50.0, 4.055, interpolate}); - points.push_back({ 60.0, 4.202, interpolate}); - points.push_back({ 80.0, 4.391, interpolate}); - points.push_back({ 86.0, 4.517, extend}); - points.push_back({100.0, 0.113, use_directly}); - - C_rate = 4; - Ppu_vs_soc_curve curve_24(C_rate, points); - curves.push_back(curve_24); - - //------------------------------------ - - // {soc, P, (interpolate, extend, use_directly)} - points.clear(); - points.push_back({ 0.0, 4.622, interpolate}); - points.push_back({ 4.0, 4.832, interpolate}); - points.push_back({ 50.0, 5.168, interpolate}); - points.push_back({ 60.0, 5.357, interpolate}); - points.push_back({ 84.0, 5.630, extend}); - points.push_back({100.0, 0.063, use_directly}); - - C_rate = 5; - Ppu_vs_soc_curve curve_25(C_rate, points); - curves.push_back(curve_25); - - //------------------------------------ - - // {soc, P, (interpolate, extend, use_directly)} - points.clear(); - points.push_back({ 0.0, 0, interpolate}); - points.push_back({100.0, 0, interpolate}); - - C_rate = 0; - Ppu_vs_soc_curve curve_26(C_rate, points); - curves.push_back(curve_26); - - //------------------------------------ - - create_dcPkW_from_soc LTO_charge_(is_charging_not_discharging, curves); - this->LTO_charge = LTO_charge_; -} - - -std::vector pev_charge_profile_factory::get_dcfc_charge_profile(pev_battery_chemistry bat_chemistry, double battery_size_kWh, double bat_capacity_Ah_1C, double pev_max_c_rate, double pev_P2_pwr_limit_kW, double dcfc_dc_current_limit) -{ - std::vector pev_charge_profile; - - double pev_dc_current_limit = pev_max_c_rate * bat_capacity_Ah_1C; - double dc_current_limit = pev_dc_current_limit < dcfc_dc_current_limit ? pev_dc_current_limit : dcfc_dc_current_limit; - - if(bat_chemistry == LMO) - this->LMO_charge.get_dcfc_charge_profile(battery_size_kWh, dc_current_limit, pev_P2_pwr_limit_kW, bat_capacity_Ah_1C, pev_charge_profile, this->constraints); - - else if(bat_chemistry == LTO) - this->LTO_charge.get_dcfc_charge_profile(battery_size_kWh, dc_current_limit, pev_P2_pwr_limit_kW, bat_capacity_Ah_1C, pev_charge_profile, this->constraints); - - else if(bat_chemistry == NMC) - this->NMC_charge.get_dcfc_charge_profile(battery_size_kWh, dc_current_limit, pev_P2_pwr_limit_kW, bat_capacity_Ah_1C, pev_charge_profile, this->constraints); - - return pev_charge_profile; -} - - -std::vector pev_charge_profile_factory::get_constraints() -{ - return this->constraints; -} - - -std::vector pev_charge_profile_factory::get_L1_or_L2_charge_profile(pev_battery_chemistry bat_chemistry, double bat_energy_kWh, double pev_charge_rate_kW) -{ - std::vector pev_charge_profile; - - if(bat_chemistry == LMO) - this->LMO_charge.get_L1_or_L2_charge_profile(bat_energy_kWh, pev_charge_rate_kW, pev_charge_profile); - - else if(bat_chemistry == LTO) - this->LTO_charge.get_L1_or_L2_charge_profile(bat_energy_kWh, pev_charge_rate_kW, pev_charge_profile); - - else if(bat_chemistry == NMC) - this->NMC_charge.get_L1_or_L2_charge_profile(bat_energy_kWh, pev_charge_rate_kW, pev_charge_profile); - - return pev_charge_profile; -} - - -//////////////////////////////////////////////////////////////////////////////////////////////////// - -/* -int main(int args, char* argv[]) -{ - std::vector pev_charge_profile; - pev_battery_chemistry bat_chemistry = LTO; - double bat_energy_kWh = 65; - double charge_rate_kW = 7.6; - - pev_charge_profile_factory factory; - factory.get_L1_or_L2_charge_profile(bat_chemistry, bat_energy_kWh, charge_rate_kW, pev_charge_profile); - - return 0; -} -*/ diff --git a/source/pev_charge_profile_factory/create_library/pev_charge_profile_factory.h b/source/pev_charge_profile_factory/create_library/pev_charge_profile_factory.h deleted file mode 100644 index ab88233..0000000 --- a/source/pev_charge_profile_factory/create_library/pev_charge_profile_factory.h +++ /dev/null @@ -1,164 +0,0 @@ - -#ifndef inl_pev_charge_profile_factory_H -#define inl_pev_charge_profile_factory_H - -#include -#include - -//############################################################################# -// linear_regression -//############################################################################# - -struct xy_point -{ - double x; - double y; - double w; -}; - -struct lin_reg_slope_yinter -{ - double m; - double b; -}; - -class linear_regression -{ -public: - static lin_reg_slope_yinter non_weighted(const std::vector &points); - static lin_reg_slope_yinter weighted(const std::vector &points); -}; - - -//############################################################################# -// PEV Charge Profile Factory -//############################################################################# - -struct bat_objfun_constraints -{ - double a; - double b; -}; - - -enum pev_battery_chemistry -{ - LTO = 0, - LMO = 1, - NMC = 2 -}; - - -enum Ppu_vs_soc_point_type -{ - interpolate, - extend, - use_directly -}; - - -struct Ppu_vs_soc_point -{ - double soc; - double P_pu; - Ppu_vs_soc_point_type point_type; - - bool operator<(const Ppu_vs_soc_point& rhs) const - { - return soc < rhs.soc; - } - - bool operator<(Ppu_vs_soc_point& rhs) const - { - return soc < rhs.soc; - } -}; - - -struct line_segment -{ // y = a*x + b - double x_LB; - double x_UB; - double a; - double b; - - double y_UB() {return a*x_UB + b;} - double y_LB() {return a*x_LB + b;} - - bool operator<(const line_segment& rhs) const - { - return this->x_LB < rhs.x_LB; - } - - bool operator<(line_segment& rhs) const - { - return this->x_LB < rhs.x_LB; - } -}; -std::ostream& operator<<(std::ostream& out, line_segment& x); - - -class Ppu_vs_soc_curve -{ -private: - std::vector points; - double C_rate; - -public: - Ppu_vs_soc_curve() {} - Ppu_vs_soc_curve(double C_rate_, const std::vector &points_); - - double get_current_rate_amps(double bat_capacity_Ah_1C); - const std::vector& get_points(); - - bool operator<(const Ppu_vs_soc_curve& rhs) const - { - return C_rate < rhs.C_rate; - } - - bool operator<(Ppu_vs_soc_curve& rhs) const - { - return C_rate < rhs.C_rate; - } -}; - - -class create_dcPkW_from_soc -{ -private: - std::vector curves; - bool is_charging_not_discharging; - - void get_charging_dcfc_charge_profile(double bat_energy_kWh, double dc_current_limit, double dc_pwr_limit_kW, double bat_capacity_Ah_1C, std::vector &dcPkW_from_soc, std::vector &constraints); - void get_discharging_dcfc_charge_profile(double bat_energy_kWh, double dc_current_limit, double dc_pwr_limit_kW, double bat_capacity_Ah_1C, std::vector &dcPkW_from_soc, std::vector &constraints); - -public: - create_dcPkW_from_soc() {}; - create_dcPkW_from_soc(bool is_charging_not_discharging_, const std::vector& curves_); - void get_dcfc_charge_profile(double bat_energy_kWh, double dc_current_limit, double dc_pwr_limit_kW, double bat_capacity_Ah_1C, std::vector &dcPkW_from_soc, std::vector &constraints); - - void get_L1_or_L2_charge_profile(double bat_energy_kWh, double charge_rate_kW, std::vector &pev_charge_profile); -}; - - -class pev_charge_profile_factory -{ -private: - create_dcPkW_from_soc LMO_charge; - create_dcPkW_from_soc LTO_charge; - create_dcPkW_from_soc NMC_charge; - - std::vector constraints; - -public: - pev_charge_profile_factory(); - - std::vector get_dcfc_charge_profile(pev_battery_chemistry bat_chemistry, double battery_size_kWh, double bat_capacity_Ah_1C, double pev_max_c_rate, double pev_P2_pwr_limit_kW, double dcfc_dc_current_limit); - std::vector get_constraints(); - - std::vector get_L1_or_L2_charge_profile(pev_battery_chemistry bat_chemistry, double bat_energy_kWh, double pev_charge_rate_kW); -}; - - -#endif - diff --git a/source/pev_charge_profile_factory/create_library/python_bind.cpp b/source/pev_charge_profile_factory/create_library/python_bind.cpp deleted file mode 100644 index 8513bbf..0000000 --- a/source/pev_charge_profile_factory/create_library/python_bind.cpp +++ /dev/null @@ -1,35 +0,0 @@ -#include "pev_charge_profile_factory.h" -#include -#include - -namespace py = pybind11; - -PYBIND11_MODULE(charge_profile_factory, m) -{ - m.doc() = "Small module that generates charge profiles from data in an input file"; - - py::enum_(m, "pev_battery_chemistry") - .value("LTO", LTO) - .value("LMO", LMO) - .value("NMC", NMC); - - py::class_(m, "line_segment") - .def(py::init<>()) - .def_readwrite("x_LB", &line_segment::x_LB) - .def_readwrite("x_UB", &line_segment::x_UB) - .def_readwrite("a", &line_segment::a) - .def_readwrite("b", &line_segment::b); - - py::class_(m, "bat_objfun_constraints") - .def(py::init<>()) - .def_readwrite("a", &bat_objfun_constraints::a) - .def_readwrite("b", &bat_objfun_constraints::b); - - py::class_(m, "pev_charge_profile_factory") - .def(py::init<>()) - .def("get_dcfc_charge_profile", &pev_charge_profile_factory::get_dcfc_charge_profile) - .def("get_L1_or_L2_charge_profile", &pev_charge_profile_factory::get_L1_or_L2_charge_profile) - .def("get_constraints", &pev_charge_profile_factory::get_constraints); - -} - diff --git a/source/pev_charge_profile_factory/create_library/setup.py b/source/pev_charge_profile_factory/create_library/setup.py deleted file mode 100644 index 4440f63..0000000 --- a/source/pev_charge_profile_factory/create_library/setup.py +++ /dev/null @@ -1,57 +0,0 @@ -from setuptools import Extension, setup -import pybind11 -import platform -import subprocess -import sys - -#--------------------------------------------------------------------------- - -path_to_anaconda_environment = sys.base_prefix - -if platform.system() == "Windows": - path_to_libraries = path_to_anaconda_environment + r"\Library" - - inc_dirs = [pybind11.get_include(), path_to_libraries+r"\include"] - lib_dirs = [path_to_libraries + r"\lib"] - # libs = ["libprotobuf"] - libs = [] - ex_comp_args = ["/MT"] - - protoc_cmd = path_to_libraries + r"\bin\protoc.exe" - -else: #Linux - inc_dirs = [pybind11.get_include(), path_to_anaconda_environment + r"/include"] - lib_dirs = [path_to_anaconda_environment + r"/lib"] - libs = ["protobuf"] - ex_comp_args = ["-Wall", "-std=c++11", "-pthread"] - - protoc_cmd = "protoc" - -#--------------------------------------------------------------------------- - -protobuf_files = ["protobuf_datatypes.proto"] -protobuf_files = [] -for f in protobuf_files: subprocess.run([protoc_cmd, f, "--cpp_out=."]) - -#--------------------------------------------------------------------------- - -exts=[ - Extension( - name="charge_profile_factory", - sources=["pev_charge_profile_factory.cpp", "python_bind.cpp"], - include_dirs=inc_dirs, - library_dirs=lib_dirs, - libraries=libs, - extra_compile_args=ex_comp_args, - language="c++" - ) -] - -#--------------------------------------------------------------------------- - -setup( - name="charge_profile_factory", - ext_modules = exts, - version="0.1.0" -) - diff --git a/source/pev_charge_profile_factory/generate_charge_profiles/L1_L2_inputs.csv b/source/pev_charge_profile_factory/generate_charge_profiles/L1_L2_inputs.csv deleted file mode 100644 index 165d2bd..0000000 --- a/source/pev_charge_profile_factory/generate_charge_profiles/L1_L2_inputs.csv +++ /dev/null @@ -1,9 +0,0 @@ -EV_enum,bat_chemistry,bat_size_kWh,P2_charge_rate_kW -ld_50kWh,NMC,52.63157895,15.8976 -ld_100kWh,NMC,105.1578947,15.8976 -md_200kWh,NMC,210.5263158,15.8976 -hd_300kWh,NMC,315.7894737,15.8976 -hd_400kWh,NMC,421.0526316,15.8976 -hd_600kWh,NMC,631.5789474,15.8976 -hd_800kWh,NMC,842.1052632,15.8976 -hd_1000kWh,NMC,1052.631579,15.8976 diff --git a/source/pev_charge_profile_factory/generate_charge_profiles/archives/L1_L2_inputs.csv b/source/pev_charge_profile_factory/generate_charge_profiles/archives/L1_L2_inputs.csv deleted file mode 100644 index 165d2bd..0000000 --- a/source/pev_charge_profile_factory/generate_charge_profiles/archives/L1_L2_inputs.csv +++ /dev/null @@ -1,9 +0,0 @@ -EV_enum,bat_chemistry,bat_size_kWh,P2_charge_rate_kW -ld_50kWh,NMC,52.63157895,15.8976 -ld_100kWh,NMC,105.1578947,15.8976 -md_200kWh,NMC,210.5263158,15.8976 -hd_300kWh,NMC,315.7894737,15.8976 -hd_400kWh,NMC,421.0526316,15.8976 -hd_600kWh,NMC,631.5789474,15.8976 -hd_800kWh,NMC,842.1052632,15.8976 -hd_1000kWh,NMC,1052.631579,15.8976 diff --git a/source/pev_charge_profile_factory/generate_charge_profiles/archives/dcfc_inputs.csv b/source/pev_charge_profile_factory/generate_charge_profiles/archives/dcfc_inputs.csv deleted file mode 100644 index f2a4eeb..0000000 --- a/source/pev_charge_profile_factory/generate_charge_profiles/archives/dcfc_inputs.csv +++ /dev/null @@ -1,57 +0,0 @@ -EV_enum,bat_chemistry,bat_size_kWh,bat_size_Ah_1C,bat_max_c_rate,SE_enum,SE_dc_current_limit_amps -ld_50kWh,NMC,52.63157895,65.63823351,2.9,xfc_150,170 -ld_100kWh,NMC,105.1578947,131.1451906,2.9,xfc_150,170 -md_200kWh,NMC,210.5263158,262.5529341,2.9,xfc_150,170 -hd_300kWh,NMC,315.7894737,262.5529341,2.9,xfc_150,170 -hd_400kWh,NMC,421.0526316,350.0705787,2.9,xfc_150,170 -hd_600kWh,NMC,631.5789474,525.1058681,2.9,xfc_150,170 -hd_800kWh,NMC,842.1052632,700.1411575,2.9,xfc_150,170 -hd_1000kWh,NMC,1052.631579,865.497076,2.5,xfc_150,170 -ld_50kWh,NMC,52.63157895,65.63823351,2.9,xfc_350,500 -ld_100kWh,NMC,105.1578947,131.1451906,2.9,xfc_350,500 -md_200kWh,NMC,210.5263158,262.5529341,2.9,xfc_350,500 -hd_300kWh,NMC,315.7894737,262.5529341,2.9,xfc_350,500 -hd_400kWh,NMC,421.0526316,350.0705787,2.9,xfc_350,500 -hd_600kWh,NMC,631.5789474,525.1058681,2.9,xfc_350,500 -hd_800kWh,NMC,842.1052632,700.1411575,2.9,xfc_350,500 -hd_1000kWh,NMC,1052.631579,865.497076,2.5,xfc_350,500 -ld_50kWh,NMC,52.63157895,65.63823351,2.9,xfc_500kW,500 -ld_100kWh,NMC,105.1578947,131.1451906,2.9,xfc_500kW,500 -md_200kWh,NMC,210.5263158,262.5529341,2.9,xfc_500kW,500 -hd_300kWh,NMC,315.7894737,262.5529341,2.9,xfc_500kW,500 -hd_400kWh,NMC,421.0526316,350.0705787,2.9,xfc_500kW,500 -hd_600kWh,NMC,631.5789474,525.1058681,2.9,xfc_500kW,500 -hd_800kWh,NMC,842.1052632,700.1411575,2.9,xfc_500kW,500 -hd_1000kWh,NMC,1052.631579,865.497076,2.5,xfc_500kW,500 -ld_50kWh,NMC,52.63157895,65.63823351,2.9,xfc_1000kW,732.6 -ld_100kWh,NMC,105.1578947,131.1451906,2.9,xfc_1000kW,732.6 -md_200kWh,NMC,210.5263158,262.5529341,2.9,xfc_1000kW,732.6 -hd_300kWh,NMC,315.7894737,262.5529341,2.9,xfc_1000kW,732.6 -hd_400kWh,NMC,421.0526316,350.0705787,2.9,xfc_1000kW,732.6 -hd_600kWh,NMC,631.5789474,525.1058681,2.9,xfc_1000kW,732.6 -hd_800kWh,NMC,842.1052632,700.1411575,2.9,xfc_1000kW,732.6 -hd_1000kWh,NMC,1052.631579,865.497076,2.5,xfc_1000kW,732.6 -ld_50kWh,NMC,52.63157895,65.63823351,2.9,xfc_2000kW,1466.6663 -ld_100kWh,NMC,105.1578947,131.1451906,2.9,xfc_2000kW,1466.6663 -md_200kWh,NMC,210.5263158,262.5529341,2.9,xfc_2000kW,1466.6663 -hd_300kWh,NMC,315.7894737,262.5529341,2.9,xfc_2000kW,1466.6663 -hd_400kWh,NMC,421.0526316,350.0705787,2.9,xfc_2000kW,1466.6663 -hd_600kWh,NMC,631.5789474,525.1058681,2.9,xfc_2000kW,1466.6663 -hd_800kWh,NMC,842.1052632,700.1411575,2.9,xfc_2000kW,1466.6663 -hd_1000kWh,NMC,1052.631579,865.497076,2.5,xfc_2000kW,1466.6663 -ld_50kWh,NMC,52.63157895,65.63823351,2.9,xfc_3000kW,2200 -ld_100kWh,NMC,105.1578947,131.1451906,2.9,xfc_3000kW,2200 -md_200kWh,NMC,210.5263158,262.5529341,2.9,xfc_3000kW,2200 -hd_300kWh,NMC,315.7894737,262.5529341,2.9,xfc_3000kW,2200 -hd_400kWh,NMC,421.0526316,350.0705787,2.9,xfc_3000kW,2200 -hd_600kWh,NMC,631.5789474,525.1058681,2.9,xfc_3000kW,2200 -hd_800kWh,NMC,842.1052632,700.1411575,2.9,xfc_3000kW,2200 -hd_1000kWh,NMC,1052.631579,865.497076,2.5,xfc_3000kW,2200 -ld_50kWh,NMC,52.63157895,65.63823351,2.9,dwc_100kW,125 -ld_100kWh,NMC,105.1578947,131.1451906,2.9,dwc_100kW,125 -md_200kWh,NMC,210.5263158,262.5529341,2.9,dwc_100kW,125 -hd_300kWh,NMC,315.7894737,262.5529341,2.9,dwc_100kW,125 -hd_400kWh,NMC,421.0526316,350.0705787,2.9,dwc_100kW,125 -hd_600kWh,NMC,631.5789474,525.1058681,2.9,dwc_100kW,125 -hd_800kWh,NMC,842.1052632,700.1411575,2.9,dwc_100kW,125 -hd_1000kWh,NMC,1052.631579,865.497076,2.5,dwc_100kW,125 diff --git a/source/pev_charge_profile_factory/generate_charge_profiles/archives/output/L1_L2_charge_profiles.csv b/source/pev_charge_profile_factory/generate_charge_profiles/archives/output/L1_L2_charge_profiles.csv deleted file mode 100644 index ddd3573..0000000 --- a/source/pev_charge_profile_factory/generate_charge_profiles/archives/output/L1_L2_charge_profiles.csv +++ /dev/null @@ -1,103 +0,0 @@ -, , , , , , , , , -soc, ld_50kWh, ld_100kWh, md_200kWh, hd_300kWh, hd_400kWh, hd_600kWh, hd_800kWh, hd_1000kWh, -0, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -1, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -2, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -3, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -4, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -5, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -6, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -7, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -8, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -9, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -10, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -11, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -12, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -13, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -14, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -15, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -16, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -17, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -18, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -19, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -20, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -21, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -22, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -23, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -24, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -25, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -26, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -27, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -28, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -29, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -30, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -31, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -32, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -33, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -34, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -35, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -36, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -37, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -38, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -39, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -40, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -41, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -42, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -43, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -44, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -45, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -46, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -47, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -48, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -49, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -50, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -51, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -52, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -53, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -54, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -55, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -56, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -57, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -58, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -59, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -60, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -61, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -62, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -63, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -64, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -65, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -66, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -67, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -68, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -69, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -70, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -71, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -72, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -73, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -74, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -75, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -76, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -77, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -78, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -79, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -80, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -81, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -82, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -83, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -84, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -85, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -86, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -87, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -88, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -89, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -90, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -91, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -92, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -93, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -94, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -95, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -96, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -97, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -98, 13.596491228749983, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -99, 8.377192982875044, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, -100, 3.1578947369999923, 6.309473682000089, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, 15.8976, diff --git a/source/pev_charge_profile_factory/generate_charge_profiles/archives/output/L1_L2_code.txt b/source/pev_charge_profile_factory/generate_charge_profiles/archives/output/L1_L2_code.txt deleted file mode 100644 index d6debe9..0000000 --- a/source/pev_charge_profile_factory/generate_charge_profiles/archives/output/L1_L2_code.txt +++ /dev/null @@ -1,50 +0,0 @@ -else if(EV_enum == ld_50kWh) -{ - P2_vs_soc_segments.push_back({-0.1, 97.55911529426994, 0.0, 15.8976}); - P2_vs_soc_segments.push_back({97.55911529426994, 100.1, -5.219298245875, 525.0877193245}); - zero_slope_threashold_P2_vs_soc = 4.6973684212875; - // min_non_zero_slope = 5.219298245875 -} -else if(EV_enum == ld_100kWh) -{ - P2_vs_soc_segments.push_back({-0.1, 99.0805541670789, 0.0, 15.8976}); - P2_vs_soc_segments.push_back({99.0805541670789, 100.1, -10.428157891083332, 1049.1252627903334}); - zero_slope_threashold_P2_vs_soc = 9.385342101974999; - // min_non_zero_slope = 10.428157891083332 -} -else if(EV_enum == md_200kWh) -{ - P2_vs_soc_segments.push_back({-0.1, 100.1, 0.0, 15.8976}); - zero_slope_threashold_P2_vs_soc = 900000.0; - // min_non_zero_slope = 1000000 -} -else if(EV_enum == hd_300kWh) -{ - P2_vs_soc_segments.push_back({-0.1, 100.1, 0.0, 15.8976}); - zero_slope_threashold_P2_vs_soc = 900000.0; - // min_non_zero_slope = 1000000 -} -else if(EV_enum == hd_400kWh) -{ - P2_vs_soc_segments.push_back({-0.1, 100.1, 0.0, 15.8976}); - zero_slope_threashold_P2_vs_soc = 900000.0; - // min_non_zero_slope = 1000000 -} -else if(EV_enum == hd_600kWh) -{ - P2_vs_soc_segments.push_back({-0.1, 100.1, 0.0, 15.8976}); - zero_slope_threashold_P2_vs_soc = 900000.0; - // min_non_zero_slope = 1000000 -} -else if(EV_enum == hd_800kWh) -{ - P2_vs_soc_segments.push_back({-0.1, 100.1, 0.0, 15.8976}); - zero_slope_threashold_P2_vs_soc = 900000.0; - // min_non_zero_slope = 1000000 -} -else if(EV_enum == hd_1000kWh) -{ - P2_vs_soc_segments.push_back({-0.1, 100.1, 0.0, 15.8976}); - zero_slope_threashold_P2_vs_soc = 900000.0; - // min_non_zero_slope = 1000000 -} diff --git a/source/pev_charge_profile_factory/generate_charge_profiles/archives/output/L1_L2_data.csv b/source/pev_charge_profile_factory/generate_charge_profiles/archives/output/L1_L2_data.csv deleted file mode 100644 index d0d17c7..0000000 --- a/source/pev_charge_profile_factory/generate_charge_profiles/archives/output/L1_L2_data.csv +++ /dev/null @@ -1,42 +0,0 @@ -EV,ld_50kWh -soc_LB,soc_UB,a,b --0.1, 97.55911529426994, 0.0, 15.8976 -97.55911529426994, 100.1, -5.219298245875, 525.0877193245 - - -EV,ld_100kWh -soc_LB,soc_UB,a,b --0.1, 99.0805541670789, 0.0, 15.8976 -99.0805541670789, 100.1, -10.428157891083332, 1049.1252627903334 - - -EV,md_200kWh -soc_LB,soc_UB,a,b --0.1, 100.1, 0.0, 15.8976 - - -EV,hd_300kWh -soc_LB,soc_UB,a,b --0.1, 100.1, 0.0, 15.8976 - - -EV,hd_400kWh -soc_LB,soc_UB,a,b --0.1, 100.1, 0.0, 15.8976 - - -EV,hd_600kWh -soc_LB,soc_UB,a,b --0.1, 100.1, 0.0, 15.8976 - - -EV,hd_800kWh -soc_LB,soc_UB,a,b --0.1, 100.1, 0.0, 15.8976 - - -EV,hd_1000kWh -soc_LB,soc_UB,a,b --0.1, 100.1, 0.0, 15.8976 - - diff --git a/source/pev_charge_profile_factory/generate_charge_profiles/archives/output/dcfc_charge_profiles.csv b/source/pev_charge_profile_factory/generate_charge_profiles/archives/output/dcfc_charge_profiles.csv deleted file mode 100644 index 019faff..0000000 --- a/source/pev_charge_profile_factory/generate_charge_profiles/archives/output/dcfc_charge_profiles.csv +++ /dev/null @@ -1,103 +0,0 @@ -, xfc_150, xfc_150, xfc_150, xfc_150, xfc_150, xfc_150, xfc_150, xfc_150, xfc_350, xfc_350, xfc_350, xfc_350, xfc_350, xfc_350, xfc_350, xfc_350, xfc_500kW, xfc_500kW, xfc_500kW, xfc_500kW, xfc_500kW, xfc_500kW, xfc_500kW, xfc_500kW, xfc_1000kW, xfc_1000kW, xfc_1000kW, xfc_1000kW, xfc_1000kW, xfc_1000kW, xfc_1000kW, xfc_1000kW, xfc_2000kW, xfc_2000kW, xfc_2000kW, xfc_2000kW, xfc_2000kW, xfc_2000kW, xfc_2000kW, xfc_2000kW, xfc_3000kW, xfc_3000kW, xfc_3000kW, xfc_3000kW, xfc_3000kW, xfc_3000kW, xfc_3000kW, xfc_3000kW, dwc_100kW, dwc_100kW, dwc_100kW, dwc_100kW, dwc_100kW, dwc_100kW, dwc_100kW, dwc_100kW, -soc, ld_50kWh, ld_100kWh, md_200kWh, hd_300kWh, hd_400kWh, hd_600kWh, hd_800kWh, hd_1000kWh, ld_50kWh, ld_100kWh, md_200kWh, hd_300kWh, hd_400kWh, hd_600kWh, hd_800kWh, hd_1000kWh, ld_50kWh, ld_100kWh, md_200kWh, hd_300kWh, hd_400kWh, hd_600kWh, hd_800kWh, hd_1000kWh, ld_50kWh, ld_100kWh, md_200kWh, hd_300kWh, hd_400kWh, hd_600kWh, hd_800kWh, hd_1000kWh, ld_50kWh, ld_100kWh, md_200kWh, hd_300kWh, hd_400kWh, hd_600kWh, hd_800kWh, hd_1000kWh, ld_50kWh, ld_100kWh, md_200kWh, hd_300kWh, hd_400kWh, hd_600kWh, hd_800kWh, hd_1000kWh, ld_50kWh, ld_100kWh, md_200kWh, hd_300kWh, hd_400kWh, hd_600kWh, hd_800kWh, hd_1000kWh, -0, 124.64587923089042, 122.38229534071229, 124.99935482557609, 187.49903223836412, 187.4990322919245, 187.49903227407106, 187.49903226514434, 189.59594596054998, 141.74736842814, 283.21124200604, 351.65195242759415, 527.4779286413913, 536.3200340480914, 551.467741982562, 551.4677419563069, 557.6351351780881, 141.74736842814, 283.21124200604, 351.65195242759415, 527.4779286413913, 536.3200340480914, 551.467741982562, 551.4677419563069, 557.6351351780881, 141.74736842814, 283.21124200604, 542.7849693228944, 814.1774539843416, 777.7564016147287, 787.0469348700666, 804.7311453623216, 817.0470000629349, 141.74736842814, 283.21124200604, 566.98947371256, 850.4842105688399, 1133.97894742512, 1630.2031760919858, 1557.361070737169, 1574.312573169373, 141.74736842814, 283.21124200604, 566.98947371256, 850.4842105688399, 1133.97894742512, 1700.9684211376798, 2267.9578948502403, 2393.6842106460003, 87.91298812597856, 91.91129026417764, 91.9112903129236, 137.8669354693854, 137.866935508768, 137.8669354956405, 137.86693548907672, 139.40878379452204, -1, 130.2635023215515, 127.40216387931146, 129.46361749791808, 194.19542624687713, 194.19542630235037, 194.19542628385932, 194.19542627461377, 196.36722974485534, 148.012280709155, 295.72853673849664, 368.17752037741406, 552.266280566121, 559.231192998961, 571.1630184819392, 571.1630184547464, 577.5506757201628, 148.012280709155, 295.72853673849664, 368.17752037741406, 552.266280566121, 559.231192998961, 571.1630184819392, 571.1630184547464, 577.5506757201628, 148.012280709155, 295.72853673849664, 566.9284810352591, 850.3927215528886, 814.39272182486, 820.3550596974655, 834.2848842224986, 846.2272500651826, 148.012280709155, 295.72853673849664, 592.04912283662, 888.0736842549298, 1184.09824567324, 1702.7036679423982, 1630.7036678474499, 1645.7703505231204, 148.012280709155, 295.72853673849664, 592.04912283662, 888.0736842549298, 1184.09824567324, 1776.1473685098597, 2368.1964913464803, 2502.2807018795, 92.04438011459216, 95.19383634504112, 95.19383639552801, 142.790754593292, 142.79075463408114, 142.7907546204848, 142.7907546136866, 144.3876689300407, -2, 135.88112541221258, 132.42203241791063, 133.9278801702601, 200.89182025539012, 200.89182031277625, 200.89182029364756, 200.89182028408322, 203.1385135291607, 154.27719299017, 308.2458314709533, 384.7030883272339, 577.0546324908508, 582.1423519498304, 590.8582949813164, 590.8582949531859, 597.4662162622373, 154.27719299017, 308.2458314709533, 384.7030883272339, 577.0546324908508, 582.1423519498304, 590.8582949813164, 590.8582949531859, 597.4662162622373, 154.27719299017, 308.2458314709533, 591.0719927476238, 886.6079891214355, 851.0290420349912, 853.6631845248646, 863.8386230826756, 875.4075000674303, 154.27719299017, 308.2458314709533, 617.1087719606799, 925.6631579410198, 1234.2175439213597, 1775.2041597928105, 1704.0462649577307, 1717.2281278768678, 154.27719299017, 308.2458314709533, 617.1087719606799, 925.6631579410198, 1234.2175439213597, 1851.3263158820398, 2468.4350878427203, 2610.8771931130004, 96.17577210320574, 98.4763824259046, 98.47638247813242, 147.71457371719865, 147.71457375939428, 147.7145737453291, 147.71457373829648, 149.3665540655593, -3, 141.49874850287367, 137.44190095650978, 138.39214284260208, 207.58821426390313, 207.58821432320212, 207.58821430343582, 207.58821429355265, 209.90979731346607, 160.542105271185, 320.7631262034099, 401.2286562770538, 601.8429844155808, 605.0535109007, 610.5535714806936, 610.5535714516255, 617.3817568043119, 160.542105271185, 320.7631262034099, 401.2286562770538, 601.8429844155808, 605.0535109007, 610.5535714806936, 610.5535714516255, 617.3817568043119, 160.542105271185, 320.7631262034099, 615.2155044599883, 922.8232566899825, 887.6653622451225, 886.9713093522636, 893.3923619428525, 904.5877500696779, 160.542105271185, 320.7631262034099, 642.1684210847399, 963.2526316271097, 1284.3368421694797, 1847.7046516432226, 1777.3888620680116, 1788.6859052306154, 160.542105271185, 320.7631262034099, 642.1684210847399, 963.2526316271097, 1284.3368421694797, 1926.5052632542197, 2568.6736843389604, 2719.4736843465002, 100.30716409181935, 101.75892850676809, 101.75892856073683, 152.63839284110526, 152.63839288470743, 152.6383928701734, 152.6383928629064, 154.34543920107797, -4, 142.9421032031789, 140.5019421187314, 142.8564055149441, 214.2846082724161, 214.284608333628, 214.28460831322406, 214.2846083030221, 216.68108109777143, 162.17894737653, 324.03353672858, 405.77745049862176, 608.6661757479327, 616.621063133428, 630.2488479800709, 630.248847950065, 637.2972973463865, 162.17894737653, 324.03353672858, 405.77745049862176, 608.6661757479327, 616.621063133428, 630.2488479800709, 630.248847950065, 637.2972973463865, 162.17894737653, 324.03353672858, 621.4890214821942, 932.2335322232911, 896.7297731197442, 904.5805019223177, 920.4902763184092, 933.7680000719256, 162.17894737653, 324.03353672858, 648.7157895061199, 973.0736842591798, 1297.4315790122398, 1866.5461141403516, 1795.538595240802, 1814.1507552697778, 162.17894737653, 324.03353672858, 648.7157895061199, 973.0736842591798, 1297.4315790122398, 1946.1473685183598, 2594.86315802448, 2747.218045250143, 101.44436264692911, 105.04147458763157, 105.04147464334125, 157.56221196501187, 157.56221201002057, 157.56221199501772, 157.56221198751626, 159.32432433659662, -5, 144.38545790348414, 141.71808951395602, 143.92419353326508, 215.8862902998976, 215.88629036156698, 215.88629034101055, 215.88629033073235, 218.30067569249076, 163.81578948187502, 327.30394725375, 409.8246479848457, 614.7369719772685, 622.1906062320703, 634.9596774735605, 634.9596774433305, 642.0608108602669, 163.81578948187502, 327.30394725375, 409.8246479848457, 614.7369719772685, 622.1906062320703, 634.9596774735605, 634.9596774433305, 642.0608108602669, 163.81578948187502, 327.30394725375, 627.7625385043999, 941.6438077565998, 905.7941839943659, 912.6712220332979, 927.5784901631467, 940.7475000724631, 163.81578948187502, 327.30394725375, 655.2631579274998, 982.8947368912499, 1310.5263158549997, 1885.3875766374806, 1813.6883284135922, 1831.605399793323, 163.81578948187502, 327.30394725375, 655.2631579274998, 982.8947368912499, 1310.5263158549997, 1965.7894737825, 2621.0526317100002, 2774.962406153786, 102.45616201877357, 105.8266128359806, 105.82661289210668, 158.73991933816, 158.73991938350514, 158.73991936839013, 158.73991936083263, 160.51520271506672, -6, 145.82881260378937, 142.93423690918058, 144.99198155158606, 217.48797232737908, 217.487972389506, 217.48797236879705, 217.4879723584426, 219.92027028721012, 165.45263158722, 330.57435777892, 413.87184547106955, 620.8077682066044, 627.7601493307127, 639.6705069670502, 639.670506936596, 646.8243243741473, 165.45263158722, 330.57435777892, 413.87184547106955, 620.8077682066044, 627.7601493307127, 639.6705069670502, 639.670506936596, 646.8243243741473, 165.45263158722, 330.57435777892, 634.0360555266057, 951.0540832899084, 914.8585948689877, 920.7619421442782, 934.6667040078844, 947.7270000730008, 165.45263158722, 330.57435777892, 661.8105263488799, 992.7157895233198, 1323.6210526977598, 1904.2290391346096, 1831.8380615863825, 1849.0600443168682, 165.45263158722, 330.57435777892, 661.8105263488799, 992.7157895233198, 1323.6210526977598, 1985.4315790466399, 2647.24210539552, 2802.706767057429, 103.46796139061803, 106.61175108432963, 106.61175114087212, 159.91762671130817, 159.9176267569897, 159.91762674176255, 159.917626734149, 161.70608109353682, -7, 147.2721673040946, 144.15038430440518, 146.05976956990705, 219.08965435486058, 219.08965441744502, 219.08965439658354, 219.08965438615283, 221.53986488192945, 167.089473692565, 333.84476830409, 417.9190429572934, 626.8785644359401, 633.3296924293552, 644.38133646054, 644.3813364298613, 651.5878378880277, 167.089473692565, 333.84476830409, 417.9190429572934, 626.8785644359401, 633.3296924293552, 644.38133646054, 644.3813364298613, 651.5878378880277, 167.089473692565, 333.84476830409, 640.3095725488114, 960.464358823217, 923.9230057436093, 928.8526622552586, 941.7549178526222, 954.7065000735383, 167.089473692565, 333.84476830409, 668.3578947702599, 1002.5368421553899, 1336.7157895405198, 1923.0705016317386, 1849.987794759173, 1866.5146888404133, 167.089473692565, 333.84476830409, 668.3578947702599, 1002.5368421553899, 1336.7157895405198, 2005.0736843107798, 2673.43157908104, 2830.4511279610715, 104.47976076246249, 107.39688933267865, 107.39688938963755, 161.0953340844563, 161.09533413047427, 161.095334115135, 161.09533410746533, 162.89695947200693, -8, 148.71552200439984, 145.36653169962977, 147.12755758822803, 220.69133638234206, 220.69133644538402, 220.69133642437006, 220.69133641386307, 223.1594594766488, 168.72631579791, 337.11517882926, 421.9662404435173, 632.9493606652759, 638.8992355279976, 649.0921659540296, 649.0921659231268, 656.3513514019082, 168.72631579791, 337.11517882926, 421.9662404435173, 632.9493606652759, 638.8992355279976, 649.0921659540296, 649.0921659231268, 656.3513514019082, 168.72631579791, 337.11517882926, 646.5830895710171, 969.8746343565257, 932.987416618231, 936.9433823662389, 948.8431316973598, 961.686000074076, 168.72631579791, 337.11517882926, 674.90526319164, 1012.3578947874598, 1349.81052638328, 1941.9119641288676, 1868.1375279319634, 1883.9693333639584, 168.72631579791, 337.11517882926, 674.90526319164, 1012.3578947874598, 1349.81052638328, 2024.7157895749199, 2699.62105276656, 2858.195488864714, 105.49156013430695, 108.18202758102768, 108.18202763840297, 162.27304145760445, 162.27304150395884, 162.2730414885074, 162.2730414807817, 164.08783785047706, -9, 150.15887670470508, 146.58267909485437, 148.195345606549, 222.29301840982353, 222.29301847332303, 222.29301845215656, 222.2930184415733, 224.77905407136817, 170.363157903255, 340.38558935442995, 426.01343792974114, 639.0201568946117, 644.46877862664, 653.8029954475194, 653.8029954163922, 661.1148649157886, 170.363157903255, 340.38558935442995, 426.01343792974114, 639.0201568946117, 644.46877862664, 653.8029954475194, 653.8029954163922, 661.1148649157886, 170.363157903255, 340.38558935442995, 652.856606593223, 979.2849098898344, 942.0518274928527, 945.0341024772192, 955.9313455420975, 968.6655000746135, 170.363157903255, 340.38558935442995, 681.4526316130199, 1022.1789474195299, 1362.9052632260398, 1960.7534266259966, 1886.2872611047537, 1901.4239778875037, 170.363157903255, 340.38558935442995, 681.4526316130199, 1022.1789474195299, 1362.9052632260398, 2044.3578948390598, 2725.81052645208, 2885.9398497683574, 106.50335950615141, 108.96716582937671, 108.9671658871684, 163.4507488307526, 163.4507488774434, 163.45074886187984, 163.45074885409804, 165.27871622894716, -10, 151.60223140501031, 147.79882649007894, 149.26313362487002, 223.894700437305, 223.89470050126204, 223.89470047994308, 223.89470046928355, 226.3986486660875, 172.0000000086, 343.65599987959996, 430.060635415965, 645.0909531239475, 650.0383217252823, 658.513824941009, 658.5138249096576, 665.878378429669, 172.0000000086, 343.65599987959996, 430.060635415965, 645.0909531239475, 650.0383217252823, 658.513824941009, 658.5138249096576, 665.878378429669, 172.0000000086, 343.65599987959996, 659.1301236154287, 988.6951854231429, 951.1162383674745, 953.1248225881997, 963.0195593868351, 975.6450000751512, 172.0000000086, 343.65599987959996, 688.0000000343999, 1032.0000000516, 1376.0000000687999, 1979.5948891231255, 1904.436994277544, 1918.8786224110488, 172.0000000086, 343.65599987959996, 688.0000000343999, 1032.0000000516, 1376.0000000687999, 2064.0000001032, 2752.0000001376, 2913.684210672, 107.51515887799587, 109.75230407772574, 109.75230413593384, 164.62845620390073, 164.62845625092797, 164.62845623525226, 164.6284562274144, 166.46959460741726, -11, 151.883029240042, 148.0705044689723, 149.53401274572067, 224.301019118581, 224.3010191826541, 224.30101916129647, 224.30101915061758, 226.80951145198196, 172.31772854047182, 344.2908214860258, 430.8622206444601, 646.2933309666901, 651.23800051304, 659.7088798861661, 659.7088798547576, 667.0867983881822, 172.31772854047182, 344.2908214860258, 430.8622206444601, 646.2933309666901, 651.23800051304, 659.7088798861661, 659.7088798547576, 667.0867983881822, 172.31772854047182, 344.2908214860258, 660.3487680719259, 990.5231521078888, 952.8888033907374, 954.8822162393514, 964.7715549272409, 977.4155769983644, 172.31772854047182, 344.2908214860258, 689.2709141618873, 1033.9063712428308, 1378.5418283237746, 1983.2548138309712, 1907.9861156610941, 1922.4420675508452, 172.31772854047182, 344.2908214860258, 689.2709141618873, 1033.9063712428308, 1378.5418283237746, 2067.8127424856616, 2757.0836566475496, 2919.0858727221316, 107.71555518516575, 109.95147990177499, 109.95147996008873, 164.92721994013309, 164.92721998724568, 164.92721997154152, 164.9272199636894, 166.77169959704554, -12, 152.16382707507364, 148.34218244786567, 149.80489186657135, 224.707337799857, 224.70733786404617, 224.70733784264985, 224.7073378319516, 227.22037423787637, 172.63545707234368, 344.92564309245154, 431.66380587295515, 647.4957088094327, 652.4376793007976, 660.903934831323, 660.9039347998577, 668.2952183466952, 172.63545707234368, 344.92564309245154, 431.66380587295515, 647.4957088094327, 652.4376793007976, 660.903934831323, 660.9039347998577, 668.2952183466952, 172.63545707234368, 344.92564309245154, 661.5674125284231, 992.3511187926347, 954.6613684140002, 956.6396098905028, 966.5235504676465, 979.1861539215777, 172.63545707234368, 344.92564309245154, 690.5418282893747, 1035.8127424340619, 1381.0836565787495, 1986.914738538817, 1911.5352370446442, 1926.0055126906416, 172.63545707234368, 344.92564309245154, 690.5418282893747, 1035.8127424340619, 1381.0836565787495, 2071.6254848681237, 2762.1673131574994, 2924.487534772263, 107.91595149233564, 110.15065572582425, 110.15065578424363, 165.22598367636542, 165.22598372356336, 165.22598370783075, 165.22598369996442, 167.0738045866738, -13, 152.44462491010532, 148.61386042675906, 150.075770987422, 225.11365648113298, 225.11365654543823, 225.1136565240032, 225.11365651328563, 227.6312370237708, 172.95318560421552, 345.56046469887735, 432.4653911014502, 648.6980866521753, 653.6373580885552, 662.09898977648, 662.0989897449577, 669.5036383052083, 172.95318560421552, 345.56046469887735, 432.4653911014502, 648.6980866521753, 653.6373580885552, 662.09898977648, 662.0989897449577, 669.5036383052083, 172.95318560421552, 345.56046469887735, 662.7860569849204, 994.1790854773805, 956.4339334372631, 958.3970035416544, 968.2755460080521, 980.956730844791, 172.95318560421552, 345.56046469887735, 691.8127424168621, 1037.719113625293, 1383.6254848337242, 1990.5746632466623, 1915.0843584281945, 1929.568957830438, 172.95318560421552, 345.56046469887735, 691.8127424168621, 1037.719113625293, 1383.6254848337242, 2075.438227250586, 2767.2509696674488, 2929.8891968223948, 108.1163477995055, 110.34983154987351, 110.34983160839853, 165.52474741259778, 165.52474745988104, 165.52474744412, 165.52474743623944, 167.37590957630206, -14, 152.72542274513697, 148.88553840565243, 150.34665010827266, 225.51997516240897, 225.51997522683027, 225.51997520535656, 225.51997519461966, 228.04209980966525, 173.27091413608736, 346.1952863053031, 433.2669763299453, 649.9004644949179, 654.8370368763128, 663.294044721637, 663.2940446900577, 670.7120582637212, 173.27091413608736, 346.1952863053031, 433.2669763299453, 649.9004644949179, 654.8370368763128, 663.294044721637, 663.2940446900577, 670.7120582637212, 173.27091413608736, 346.1952863053031, 664.0047014414176, 996.0070521621263, 958.206498460526, 960.154397192806, 970.0275415484576, 982.7273077680043, 173.27091413608736, 346.1952863053031, 693.0836565443494, 1039.625484816524, 1386.1673130886988, 1994.234587954508, 1918.6334798117446, 1933.1324029702341, 173.27091413608736, 346.1952863053031, 693.0836565443494, 1039.625484816524, 1386.1673130886988, 2079.250969633048, 2772.334626177398, 2935.2908588725263, 108.31674410667537, 110.54900737392278, 110.54900743255342, 165.8235111488301, 165.82351119619875, 165.82351118040924, 165.82351117251443, 167.6780145659303, -15, 153.00622058016862, 149.1572163845458, 150.61752922912333, 225.92629384368493, 225.92629390822233, 225.92629388670994, 225.9262938759537, 228.45296259555968, 173.5886426679592, 346.83010791172893, 434.06856155844036, 651.1028423376605, 656.0367156640705, 664.4890996667939, 664.4890996351578, 671.9204782222342, 173.5886426679592, 346.83010791172893, 434.06856155844036, 651.1028423376605, 656.0367156640705, 664.4890996667939, 664.4890996351578, 671.9204782222342, 173.5886426679592, 346.83010791172893, 665.2233458979148, 997.8350188468722, 959.9790634837889, 961.9117908439575, 971.7795370888632, 984.4978846912176, 173.5886426679592, 346.83010791172893, 694.3545706718368, 1041.531856007755, 1388.7091413436735, 1997.8945126623535, 1922.1826011952949, 1936.6958481100305, 173.5886426679592, 346.83010791172893, 694.3545706718368, 1041.531856007755, 1388.7091413436735, 2083.06371201551, 2777.4182826873475, 2940.692520922658, 108.51714041384525, 110.74818319797204, 110.74818325670832, 166.12227488506247, 166.12227493251643, 166.12227491669847, 166.12227490878945, 167.98011955555856, -16, 153.2870184152003, 149.42889436343918, 150.888408349974, 226.33261252496092, 226.3326125896144, 226.3326125680633, 226.33261255728772, 228.86382538145412, 173.90637119983103, 347.4649295181547, 434.87014678693544, 652.3052201804031, 657.2363944518281, 665.6841546119509, 665.6841545802579, 673.1288981807473, 173.90637119983103, 347.4649295181547, 434.87014678693544, 652.3052201804031, 657.2363944518281, 665.6841546119509, 665.6841545802579, 673.1288981807473, 173.90637119983103, 347.4649295181547, 666.441990354412, 999.662985531618, 961.7516285070517, 963.669184495109, 973.5315326292688, 986.2684616144309, 173.90637119983103, 347.4649295181547, 695.6254847993241, 1043.4382271989862, 1391.2509695986482, 2001.5544373701991, 1925.7317225788452, 1940.259293249827, 173.90637119983103, 347.4649295181547, 695.6254847993241, 1043.4382271989862, 1391.2509695986482, 2086.8764543979723, 2782.501939197297, 2946.0941829727894, 108.71753672101512, 110.9473590220213, 110.94735908086322, 166.4210386212948, 166.42103866883411, 166.42103865298773, 166.42103864506447, 168.28222454518684, -17, 153.56781625023194, 149.70057234233255, 151.15928747082464, 226.7389312062369, 226.73893127100644, 226.73893124941668, 226.73893123862172, 229.27468816734856, 174.2240997317029, 348.0997511245805, 435.67173201543056, 653.5075980231458, 658.4360732395858, 666.8792095571079, 666.879209525358, 674.3373181392603, 174.2240997317029, 348.0997511245805, 435.67173201543056, 653.5075980231458, 658.4360732395858, 666.8792095571079, 666.879209525358, 674.3373181392603, 174.2240997317029, 348.0997511245805, 667.6606348109093, 1001.4909522163639, 963.5241935303145, 965.4265781462606, 975.2835281696744, 988.0390385376442, 174.2240997317029, 348.0997511245805, 696.8963989268116, 1045.3445983902172, 1393.7927978536231, 2005.2143620780446, 1929.2808439623952, 1943.822738389623, 174.2240997317029, 348.0997511245805, 696.8963989268116, 1045.3445983902172, 1393.7927978536231, 2090.6891967804345, 2787.5855957072467, 2951.495845022921, 108.91793302818499, 111.14653484607057, 111.14653490501811, 166.71980235752716, 166.71980240515182, 166.71980238927696, 166.7198023813395, 168.58432953481508, -18, 153.8486140852636, 149.9722503212259, 151.43016659167532, 227.1452498875129, 227.1452499523985, 227.14524993077004, 227.14524991995575, 229.685550953243, 174.54182826357473, 348.73457273100627, 436.47331724392564, 654.7099758658884, 659.6357520273434, 668.0742645022648, 668.074264470458, 675.5457380977734, 174.54182826357473, 348.73457273100627, 436.47331724392564, 654.7099758658884, 659.6357520273434, 668.0742645022648, 668.074264470458, 675.5457380977734, 174.54182826357473, 348.73457273100627, 668.8792792674066, 1003.3189189011097, 965.2967585535774, 967.1839717974121, 977.0355237100799, 989.8096154608575, 174.54182826357473, 348.73457273100627, 698.1673130542989, 1047.2509695814483, 1396.3346261085978, 2008.87428678589, 1932.8299653459455, 1947.3861835294194, 174.54182826357473, 348.73457273100627, 698.1673130542989, 1047.2509695814483, 1396.3346261085978, 2094.5019391628966, 2792.669252217196, 2956.8975070730526, 109.11832933535487, 111.34571067011983, 111.345710729173, 167.0185660937595, 167.0185661414695, 167.0185661255662, 167.0185661176145, 168.88643452444336, -19, 154.12941192029527, 150.24392830011928, 151.70104571252597, 227.5515685687889, 227.55156863379057, 227.55156861212342, 227.55156860128977, 230.0964137391374, 174.85955679544657, 349.3693943374321, 437.2749024724207, 655.912353708631, 660.835430815101, 669.2693194474218, 669.2693194155581, 676.7541580562864, 174.85955679544657, 349.3693943374321, 437.2749024724207, 655.912353708631, 660.835430815101, 669.2693194474218, 669.2693194155581, 676.7541580562864, 174.85955679544657, 349.3693943374321, 670.0979237239037, 1005.1468855858556, 967.0693235768402, 968.9413654485637, 978.7875192504855, 991.5801923840708, 174.85955679544657, 349.3693943374321, 699.4382271817863, 1049.1573407726794, 1398.8764543635725, 2012.5342114937357, 1936.3790867294956, 1950.9496286692158, 174.85955679544657, 349.3693943374321, 699.4382271817863, 1049.1573407726794, 1398.8764543635725, 2098.3146815453583, 2797.7529087271455, 2962.299169123184, 109.31872564252474, 111.54488649416909, 111.54488655332791, 167.31732982999185, 167.3173298777872, 167.31732986185546, 167.31732985388953, 169.1885395140716, -20, 154.41020975532692, 150.51560627901267, 151.97192483337662, 227.95788725006489, 227.95788731518263, 227.95788729347677, 227.9578872826238, 230.50727652503184, 175.1772853273184, 350.00421594385784, 438.0764877009158, 657.1147315513736, 662.0351096028586, 670.4643743925787, 670.4643743606582, 677.9625780147995, 175.1772853273184, 350.00421594385784, 438.0764877009158, 657.1147315513736, 662.0351096028586, 670.4643743925787, 670.4643743606582, 677.9625780147995, 175.1772853273184, 350.00421594385784, 671.316568180401, 1006.9748522706014, 968.8418886001032, 970.6987590997153, 980.5395147908911, 993.350769307284, 175.1772853273184, 350.00421594385784, 700.7091413092736, 1051.0637119639105, 1401.4182826185472, 2016.1941362015812, 1939.928208113046, 1954.513073809012, 175.1772853273184, 350.00421594385784, 700.7091413092736, 1051.0637119639105, 1401.4182826185472, 2102.1274239278205, 2802.836565237095, 2967.7008311733157, 109.51912194969462, 111.74406231821835, 111.7440623774828, 167.61609356622418, 167.61609361410487, 167.6160935981447, 167.61609359016455, 169.49064450369988, -21, 154.69100759035857, 150.78728425790604, 152.2428039542273, 228.36420593134088, 228.36420599657467, 228.36420597483016, 228.36420596395783, 230.91813931092628, 175.49501385919024, 350.63903755028366, 438.87807292941085, 658.3171093941162, 663.2347883906162, 671.6594293377357, 671.6594293057583, 679.1709979733125, 175.49501385919024, 350.63903755028366, 438.87807292941085, 658.3171093941162, 663.2347883906162, 671.6594293377357, 671.6594293057583, 679.1709979733125, 175.49501385919024, 350.63903755028366, 672.5352126368982, 1008.8028189553472, 970.614453623366, 972.4561527508667, 982.2915103312966, 995.1213462304975, 175.49501385919024, 350.63903755028366, 701.980055436761, 1052.9700831551415, 1403.960110873522, 2019.8540609094268, 1943.4773294965962, 1958.0765189488084, 175.49501385919024, 350.63903755028366, 701.980055436761, 1052.9700831551415, 1403.960110873522, 2105.9401663102826, 2807.9202217470443, 2973.1024932234473, 109.71951825686449, 111.94323814226762, 111.9432382016377, 167.91485730245654, 167.91485735042258, 167.91485733443392, 167.91485732643957, 169.79274949332813, -22, 154.97180542539024, 151.0589622367994, 152.51368307507795, 228.77052461261687, 228.77052467796673, 228.7705246561835, 228.77052464529186, 231.32900209682072, 175.8127423910621, 351.2738591567094, 439.6796581579059, 659.5194872368588, 664.4344671783739, 672.8544842828927, 672.8544842508584, 680.3794179318256, 175.8127423910621, 351.2738591567094, 439.6796581579059, 659.5194872368588, 664.4344671783739, 672.8544842828927, 672.8544842508584, 680.3794179318256, 175.8127423910621, 351.2738591567094, 673.7538570933955, 1010.6307856400931, 972.3870186466289, 974.2135464020183, 984.0435058717022, 996.8919231537108, 175.8127423910621, 351.2738591567094, 703.2509695642484, 1054.8764543463724, 1406.5019391284968, 2023.5139856172723, 1947.0264508801463, 1961.6399640886048, 175.8127423910621, 351.2738591567094, 703.2509695642484, 1054.8764543463724, 1406.5019391284968, 2109.7529086927448, 2813.003878256994, 2978.504155273579, 109.91991456403436, 112.14241396631688, 112.1424140257926, 168.21362103868887, 168.21362108674026, 168.21362107072318, 168.2136210627146, 170.0948544829564, -23, 155.2526032604219, 151.3306402156928, 152.7845621959286, 229.17684329389286, 229.1768433593588, 229.1768433375369, 229.17684332662589, 231.73986488271515, 176.13047092293394, 351.90868076313524, 440.481243386401, 660.7218650796015, 665.6341459661314, 674.0495392280496, 674.0495391959583, 681.5878378903386, 176.13047092293394, 351.90868076313524, 440.481243386401, 660.7218650796015, 665.6341459661314, 674.0495392280496, 674.0495391959583, 681.5878378903386, 176.13047092293394, 351.90868076313524, 674.9725015498926, 1012.458752324839, 974.1595836698917, 975.9709400531699, 985.7955014121078, 998.6625000769241, 176.13047092293394, 351.90868076313524, 704.5218836917358, 1056.7828255376035, 1409.0437673834715, 2027.173910325118, 1950.5755722636966, 1965.2034092284011, 176.13047092293394, 351.90868076313524, 704.5218836917358, 1056.7828255376035, 1409.0437673834715, 2113.565651075207, 2818.0875347669435, 2983.9058173237104, 110.12031087120424, 112.34158979036614, 112.3415898499475, 168.51238477492123, 168.51238482305794, 168.5123848070124, 168.5123847989896, 170.39695947258465, -24, 155.53340109545354, 151.60231819458616, 153.05544131677925, 229.58316197516885, 229.58316204075084, 229.58316201889025, 229.58316200795988, 232.1507276686096, 176.44819945480577, 352.543502369561, 441.28282861489606, 661.9242429223441, 666.8338247538891, 675.2445941732066, 675.2445941410584, 682.7962578488516, 176.44819945480577, 352.543502369561, 441.28282861489606, 661.9242429223441, 666.8338247538891, 675.2445941732066, 675.2445941410584, 682.7962578488516, 176.44819945480577, 352.543502369561, 676.1911460063899, 1014.2867190095848, 975.9321486931547, 977.7283337043215, 987.5474969525134, 1000.4330770001374, 176.44819945480577, 352.543502369561, 705.7927978192231, 1058.6891967288345, 1411.5855956384462, 2030.8338350329634, 1954.1246936472467, 1968.7668543681973, 176.44819945480577, 352.543502369561, 705.7927978192231, 1058.6891967288345, 1411.5855956384462, 2117.378393457669, 2823.171191276893, 2989.307479373842, 110.32070717837411, 112.5407656144154, 112.5407656741024, 168.81114851115356, 168.81114855937562, 168.81114854330164, 168.8111485352646, 170.6990644622129, -25, 155.81419893048522, 151.87399617347953, 153.32632043762993, 229.98948065644484, 229.9894807221429, 229.98948070024363, 229.9894806892939, 232.56159045450403, 176.7659279866776, 353.1783239759868, 442.08441384339113, 663.1266207650866, 668.0335035416467, 676.4396491183636, 676.4396490861585, 684.0046778073647, 176.7659279866776, 353.1783239759868, 442.08441384339113, 663.1266207650866, 668.0335035416467, 676.4396491183636, 676.4396490861585, 684.0046778073647, 176.7659279866776, 353.1783239759868, 677.4097904628871, 1016.1146856943307, 977.7047137164175, 979.485727355473, 989.299492492919, 1002.2036539233507, 176.7659279866776, 353.1783239759868, 707.0637119467104, 1060.5955679200656, 1414.1274238934209, 2034.493759740809, 1957.673815030797, 1972.3302995079937, 176.7659279866776, 353.1783239759868, 707.0637119467104, 1060.5955679200656, 1414.1274238934209, 2121.191135840131, 2828.254847786842, 2994.7091414239735, 110.52110348554397, 112.73994143846467, 112.7399414982573, 169.10991224738592, 169.10991229569333, 169.1099122795909, 169.10991227153963, 171.00116945184118, -26, 156.09499676551687, 152.1456741523729, 153.59719955848058, 230.39579933772083, 230.39579940353497, 230.395799381597, 230.39579937062794, 232.97245324039847, 177.08365651854945, 353.81314558241263, 442.8859990718862, 664.3289986078292, 669.2331823294044, 677.6347040635205, 677.6347040312586, 685.2130977658777, 177.08365651854945, 353.81314558241263, 442.8859990718862, 664.3289986078292, 669.2331823294044, 677.6347040635205, 677.6347040312586, 685.2130977658777, 177.08365651854945, 353.81314558241263, 678.6284349193844, 1017.9426523790765, 979.4772787396803, 981.2431210066245, 991.0514880333245, 1003.974230846564, 177.08365651854945, 353.81314558241263, 708.3346260741978, 1062.5019391112967, 1416.6692521483956, 2038.1536844486545, 1961.2229364143473, 1975.8937446477898, 177.08365651854945, 353.81314558241263, 708.3346260741978, 1062.5019391112967, 1416.6692521483956, 2125.0038782225934, 2833.338504296792, 3000.110803474105, 110.72149979271386, 112.93911726251393, 112.93911732241219, 169.40867598361825, 169.40867603201102, 169.40867601588013, 169.40867600781465, 171.30327444146943, -27, 156.37579460054855, 152.41735213126628, 153.86807867933123, 230.80211801899682, 230.80211808492703, 230.80211806295034, 230.80211805196197, 233.38331602629287, 177.4013850504213, 354.4479671888384, 443.68758430038133, 665.5313764505719, 670.432861117162, 678.8297590086775, 678.8297589763587, 686.4215177243908, 177.4013850504213, 354.4479671888384, 443.68758430038133, 665.5313764505719, 670.432861117162, 678.8297590086775, 678.8297589763587, 686.4215177243908, 177.4013850504213, 354.4479671888384, 679.8470793758815, 1019.7706190638223, 981.2498437629432, 983.0005146577761, 992.8034835737301, 1005.7448077697773, 177.4013850504213, 354.4479671888384, 709.6055402016852, 1064.4083103025278, 1419.2110804033705, 2041.8136091565002, 1964.7720577978973, 1979.4571897875862, 177.4013850504213, 354.4479671888384, 709.6055402016852, 1064.4083103025278, 1419.2110804033705, 2128.8166206050555, 2838.4221608067414, 3005.512465524237, 110.92189609988372, 113.1382930865632, 113.1382931465671, 169.7074397198506, 169.7074397683287, 169.70743975216936, 169.70743974408967, 171.6053794310977, -28, 156.6565924355802, 152.68903011015965, 154.1389578001819, 231.2084367002728, 231.20843676631907, 231.20843674430373, 231.208436733296, 233.7941788121873, 177.71911358229315, 355.0827887952642, 444.4891695288764, 666.7337542933145, 671.6325399049197, 680.0248139538345, 680.0248139214588, 687.6299376829038, 177.71911358229315, 355.0827887952642, 444.4891695288764, 666.7337542933145, 671.6325399049197, 680.0248139538345, 680.0248139214588, 687.6299376829038, 177.71911358229315, 355.0827887952642, 681.0657238323788, 1021.5985857485682, 983.022408786206, 984.7579083089277, 994.5554791141357, 1007.5153846929906, 177.71911358229315, 355.0827887952642, 710.8764543291726, 1066.3146814937588, 1421.7529086583452, 2045.4735338643457, 1968.3211791814476, 1983.0206349273826, 177.71911358229315, 355.0827887952642, 710.8764543291726, 1066.3146814937588, 1421.7529086583452, 2132.6293629875177, 2843.505817316691, 3010.9141275743686, 111.1222924070536, 113.33746891061246, 113.33746897072199, 170.00620345608294, 170.0062035046464, 170.00620348845862, 170.0062034803647, 171.90748442072595, -29, 156.93739027061184, 152.960708089053, 154.40983692103256, 231.6147553815488, 231.61475544771113, 231.61475542565708, 231.61475541463003, 234.20504159808175, 178.03684211416498, 355.71761040168997, 445.2907547573715, 667.9361321360572, 672.8322186926772, 681.2198688989914, 681.2198688665588, 688.8383576414169, 178.03684211416498, 355.71761040168997, 445.2907547573715, 667.9361321360572, 672.8322186926772, 681.2198688989914, 681.2198688665588, 688.8383576414169, 178.03684211416498, 355.71761040168997, 682.2843682888761, 1023.426552433314, 984.794973809469, 986.5153019600792, 996.3074746545412, 1009.2859616162038, 178.03684211416498, 355.71761040168997, 712.1473684566599, 1068.22105268499, 1424.2947369133199, 2049.133458572191, 1971.8703005649977, 1986.584080067179, 178.03684211416498, 355.71761040168997, 712.1473684566599, 1068.22105268499, 1424.2947369133199, 2136.44210536998, 2848.58947382664, 3016.3157896245, 111.32268871422347, 113.53664473466172, 113.53664479487688, 170.3049671923153, 170.3049672409641, 170.30496722474786, 170.3049672166397, 172.20958941035423, -30, 157.21818810564352, 153.2323860679464, 154.68071604188322, 232.0210740628248, 232.0210741291032, 232.02107410701046, 232.02107409596405, 234.6159043839762, 178.35457064603682, 356.3524320081158, 446.09233998586654, 669.1385099787998, 674.0318974804348, 682.4149238441485, 682.4149238116589, 690.0467775999299, 178.35457064603682, 356.3524320081158, 446.09233998586654, 669.1385099787998, 674.0318974804348, 682.4149238441485, 682.4149238116589, 690.0467775999299, 178.35457064603682, 356.3524320081158, 683.5030127453733, 1025.25451911806, 986.5675388327318, 988.2726956112307, 998.0594701949468, 1011.0565385394171, 178.35457064603682, 356.3524320081158, 713.4182825841473, 1070.127423876221, 1426.8365651682946, 2052.793383280037, 1975.419421948548, 1990.1475252069752, 178.35457064603682, 356.3524320081158, 713.4182825841473, 1070.127423876221, 1426.8365651682946, 2140.254847752442, 2853.6731303365896, 3021.717451674632, 111.52308502139334, 113.73582055871098, 113.73582061903178, 170.60373092854763, 170.60373097728177, 170.60373096103712, 170.60373095291473, 172.51169439998247, -31, 157.49898594067517, 153.50406404683977, 154.9515951627339, 232.42739274410079, 232.42739281049526, 232.42739278836382, 232.42739277729805, 235.02676716987062, 178.67229917790868, 356.98725361454154, 446.8939252143616, 670.3408878215423, 675.2315762681925, 683.6099787893054, 683.6099787567589, 691.2551975584429, 178.67229917790868, 356.98725361454154, 446.8939252143616, 670.3408878215423, 675.2315762681925, 683.6099787893054, 683.6099787567589, 691.2551975584429, 178.67229917790868, 356.98725361454154, 684.7216572018706, 1027.0824858028056, 988.3401038559947, 990.0300892623823, 999.8114657353524, 1012.8271154626304, 178.67229917790868, 356.98725361454154, 714.6891967116347, 1072.033795067452, 1429.3783934232695, 2056.4533079878825, 1978.968543332098, 1993.7109703467715, 178.67229917790868, 356.98725361454154, 714.6891967116347, 1072.033795067452, 1429.3783934232695, 2144.067590134904, 2858.7567868465394, 3027.1191137247633, 111.72348132856322, 113.93499638276023, 113.93499644318668, 170.90249466478, 170.90249471359945, 170.90249469732635, 170.90249468918972, 172.81379938961072, -32, 157.77978377570682, 153.77574202573314, 155.22247428358455, 232.83371142537678, 232.8337114918873, 232.8337114697172, 232.83371145863208, 235.43762995576506, 178.99002770978052, 357.62207522096736, 447.6955104428567, 671.543265664285, 676.4312550559501, 684.8050337344623, 684.805033701859, 692.463617516956, 178.99002770978052, 357.62207522096736, 447.6955104428567, 671.543265664285, 676.4312550559501, 684.8050337344623, 684.805033701859, 692.463617516956, 178.99002770978052, 357.62207522096736, 685.9403016583677, 1028.9104524875515, 990.1126688792575, 991.7874829135338, 1001.563461275758, 1014.5976923858437, 178.99002770978052, 357.62207522096736, 715.9601108391221, 1073.9401662586831, 1431.9202216782442, 2060.113232695728, 1982.5176647156484, 1997.274415486568, 178.99002770978052, 357.62207522096736, 715.9601108391221, 1073.9401662586831, 1431.9202216782442, 2147.880332517366, 2863.840443356489, 3032.520775774895, 111.92387763573309, 114.1341722068095, 114.13417226734157, 171.20125840101235, 171.20125844991716, 171.20125843361558, 171.20125842546474, 173.115904379239, -33, 158.0605816107385, 154.0474200046265, 155.4933534044352, 233.24003010665277, 233.24003017327937, 233.24003015107056, 233.2400301399661, 235.8484927416595, 179.30775624165236, 358.2568968273931, 448.49709567135176, 672.7456435070276, 677.6309338437078, 686.0000886796194, 686.0000886469591, 693.672037475469, 179.30775624165236, 358.2568968273931, 448.49709567135176, 672.7456435070276, 677.6309338437078, 686.0000886796194, 686.0000886469591, 693.672037475469, 179.30775624165236, 358.2568968273931, 687.158946114865, 1030.7384191722974, 991.8852339025203, 993.5448765646854, 1003.3154568161635, 1016.368269309057, 179.30775624165236, 358.2568968273931, 717.2310249666094, 1075.846537449914, 1434.4620499332189, 2063.7731574035734, 1986.0667860991987, 2000.837860626364, 179.30775624165236, 358.2568968273931, 717.2310249666094, 1075.846537449914, 1434.4620499332189, 2151.693074899828, 2868.924099866438, 3037.9224378250265, 112.12427394290296, 114.33334803085876, 114.33334809149648, 171.50002213724468, 171.50002218623484, 171.50002216990484, 171.50002216173976, 173.41800936886725, -34, 158.34137944577014, 154.3190979835199, 155.76423252528588, 233.64634878792876, 233.64634885467143, 233.64634883242394, 233.64634882130014, 236.2593555275539, 179.6254847735242, 358.89171843381894, 449.29868089984683, 673.9480213497702, 678.8306126314653, 687.1951436247763, 687.1951435920591, 694.8804574339821, 179.6254847735242, 358.89171843381894, 449.29868089984683, 673.9480213497702, 678.8306126314653, 687.1951436247763, 687.1951435920591, 694.8804574339821, 179.6254847735242, 358.89171843381894, 688.3775905713622, 1032.5663858570433, 993.6577989257833, 995.302270215837, 1005.0674523565691, 1018.1388462322705, 179.6254847735242, 358.89171843381894, 718.5019390940968, 1077.752908641145, 1437.0038781881935, 2067.433082111419, 1989.6159074827488, 2004.4013057661605, 179.6254847735242, 358.89171843381894, 718.5019390940968, 1077.752908641145, 1437.0038781881935, 2155.50581728229, 2874.0077563763875, 3043.324099875158, 112.32467025007284, 114.53252385490802, 114.53252391565137, 171.79878587347702, 171.79878592255253, 171.79878590619407, 171.79878589801478, 173.72011435849552, -35, 158.6221772808018, 154.59077596241326, 156.03511164613653, 234.05266746920475, 234.0526675360635, 234.0526675137773, 234.05266750263416, 236.67021831344834, 179.94321330539603, 359.5265400402447, 450.1002661283419, 675.1503991925129, 680.030291419223, 688.3901985699332, 688.3901985371592, 696.0888773924951, 179.94321330539603, 359.5265400402447, 450.1002661283419, 675.1503991925129, 680.030291419223, 688.3901985699332, 688.3901985371592, 696.0888773924951, 179.94321330539603, 359.5265400402447, 689.5962350278594, 1034.3943525417892, 995.4303639490461, 997.0596638669884, 1006.8194478969747, 1019.9094231554838, 179.94321330539603, 359.5265400402447, 719.7728532215841, 1079.6592798323761, 1439.5457064431682, 2071.0930068192647, 1993.165028866299, 2007.9647509059569, 179.94321330539603, 359.5265400402447, 719.7728532215841, 1079.6592798323761, 1439.5457064431682, 2159.3185596647522, 2879.091412886337, 3048.7257619252896, 112.52506655724271, 114.73169967895728, 114.73169973980626, 172.09754960970938, 172.0975496588702, 172.0975496424833, 172.0975496342898, 174.02221934812377, -36, 158.90297511583347, 154.86245394130663, 156.30599076698718, 234.45898615048074, 234.45898621745553, 234.45898619513068, 234.4589861839682, 237.08108109934278, 180.2609418372679, 360.1613616466705, 450.90185135683697, 676.3527770352554, 681.2299702069806, 689.5852535150902, 689.5852534822593, 697.2972973510082, 180.2609418372679, 360.1613616466705, 450.90185135683697, 676.3527770352554, 681.2299702069806, 689.5852535150902, 689.5852534822593, 697.2972973510082, 180.2609418372679, 360.1613616466705, 690.8148794843567, 1036.2223192265349, 997.202928972309, 998.81705751814, 1008.5714434373801, 1021.680000078697, 180.2609418372679, 360.1613616466705, 721.0437673490716, 1081.5656510236072, 1442.0875346981431, 2074.7529315271104, 1996.7141502498491, 2011.528196045753, 180.2609418372679, 360.1613616466705, 721.0437673490716, 1081.5656510236072, 1442.0875346981431, 2163.1313020472144, 2884.1750693962867, 3054.127423975421, 112.72546286441259, 114.93087550300655, 114.93087556396117, 172.39631334594173, 172.39631339518792, 172.39631337877256, 172.39631337056483, 174.32432433775205, -37, 159.18377295086512, 155.13413192020002, 156.57686988783786, 234.86530483175673, 234.8653048988476, 234.86530487648403, 234.86530486530222, 237.49194388523722, 180.57867036913973, 360.7961832530963, 451.70343658533204, 677.555154877998, 682.4296489947383, 690.7803084602472, 690.7803084273594, 698.5057173095212, 180.57867036913973, 360.7961832530963, 451.70343658533204, 677.555154877998, 682.4296489947383, 690.7803084602472, 690.7803084273594, 698.5057173095212, 180.57867036913973, 360.7961832530963, 692.0335239408539, 1038.0502859112808, 998.9754939955718, 1000.5744511692916, 1010.3234389777858, 1023.4505770019103, 180.57867036913973, 360.7961832530963, 722.3146814765589, 1083.4720222148383, 1444.6293629531178, 2078.4128562349556, 2000.2632716333994, 2015.0916411855494, 180.57867036913973, 360.7961832530963, 722.3146814765589, 1083.4720222148383, 1444.6293629531178, 2166.9440444296765, 2889.258725906236, 3059.5290860255527, 112.92585917158246, 115.13005132705581, 115.13005138811606, 172.69507708217407, 172.6950771315056, 172.6950771150618, 172.69507710683985, 174.6264293273803, -38, 159.46457078589677, 155.40580989909338, 156.8477490086885, 235.27162351303272, 235.27162358023966, 235.27162355783742, 235.27162354663622, 237.90280667113166, 180.89639890101157, 361.4310048595221, 452.50502181382717, 678.7575327207406, 683.6293277824959, 691.9753634054041, 691.9753633724595, 699.7141372680342, 180.89639890101157, 361.4310048595221, 452.50502181382717, 678.7575327207406, 683.6293277824959, 691.9753634054041, 691.9753633724595, 699.7141372680342, 180.89639890101157, 361.4310048595221, 693.2521683973512, 1039.8782525960266, 1000.7480590188347, 1002.3318448204432, 1012.0754345181913, 1025.2211539251236, 180.89639890101157, 361.4310048595221, 723.5855956040463, 1085.3783934060693, 1447.1711912080925, 2082.0727809428013, 2003.8123930169497, 2018.6550863253458, 180.89639890101157, 361.4310048595221, 723.5855956040463, 1085.3783934060693, 1447.1711912080925, 2170.7567868121387, 2894.3423824161855, 3064.9307480756843, 113.12625547875233, 115.32922715110507, 115.32922721227095, 172.99384081840643, 172.99384086782328, 172.99384085135102, 172.99384084311487, 174.92853431700854, -39, 159.74536862092845, 155.67748787798675, 157.11862812953916, 235.6779421943087, 235.6779422616317, 235.67794223919077, 235.67794222797025, 238.3136694570261, 181.2141274328834, 362.06582646594785, 453.30660704232224, 679.9599105634833, 684.8290065702535, 693.1704183505611, 693.1704183175596, 700.9225572265473, 181.2141274328834, 362.06582646594785, 453.30660704232224, 679.9599105634833, 684.8290065702535, 693.1704183505611, 693.1704183175596, 700.9225572265473, 181.2141274328834, 362.06582646594785, 694.4708128538484, 1041.7062192807725, 1002.5206240420976, 1004.0892384715946, 1013.827430058597, 1026.9917308483368, 181.2141274328834, 362.06582646594785, 724.8565097315336, 1087.2847645973004, 1449.7130194630672, 2085.732705650647, 2007.3615144004998, 2022.218531465142, 181.2141274328834, 362.06582646594785, 724.8565097315336, 1087.2847645973004, 1449.7130194630672, 2174.569529194601, 2899.426038926135, 3070.332410125816, 113.32665178592221, 115.52840297515434, 115.52840303642586, 173.29260455463876, 173.29260460414096, 173.29260458764028, 173.2926045793899, 175.23063930663682, -40, 160.0261664559601, 155.94916585688011, 157.3895072503898, 236.0842608755847, 236.08426094302376, 236.08426092054412, 236.08426090930428, 238.72453224292053, 181.53185596475524, 362.70064807237367, 454.1081922708173, 681.1622884062259, 686.0286853580111, 694.3654732957181, 694.3654732626596, 702.1309771850603, 181.53185596475524, 362.70064807237367, 454.1081922708173, 681.1622884062259, 686.0286853580111, 694.3654732957181, 694.3654732626596, 702.1309771850603, 181.53185596475524, 362.70064807237367, 695.6894573103456, 1043.5341859655184, 1004.2931890653604, 1005.8466321227462, 1015.5794255990024, 1028.7623077715502, 181.53185596475524, 362.70064807237367, 726.127423859021, 1089.1911357885315, 1452.254847718042, 2089.392630358492, 2010.91063578405, 2025.7819766049383, 181.53185596475524, 362.70064807237367, 726.127423859021, 1089.1911357885315, 1452.254847718042, 2178.382271577063, 2904.5096954360843, 3075.7340721759474, 113.52704809309208, 115.7275787992036, 115.72757886058075, 173.59136829087112, 173.59136834045867, 173.59136832392952, 173.5913683156649, 175.53274429626507, -41, 160.30696429099174, 156.2208438357735, 157.6603863712405, 236.49057955686067, 236.49057962441583, 236.4905796018975, 236.4905795906383, 239.13539502881497, 181.8495844966271, 363.3354696787994, 454.9097774993124, 682.3646662489685, 687.2283641457688, 695.560528240875, 695.5605282077596, 703.3393971435734, 181.8495844966271, 363.3354696787994, 454.9097774993124, 682.3646662489685, 687.2283641457688, 695.560528240875, 695.5605282077596, 703.3393971435734, 181.8495844966271, 363.3354696787994, 696.9081017668428, 1045.3621526502643, 1006.0657540886233, 1007.6040257738978, 1017.3314211394081, 1030.5328846947637, 181.8495844966271, 363.3354696787994, 727.3983379865084, 1091.0975069797626, 1454.7966759730168, 2093.052555066338, 2014.4597571676002, 2029.3454217447347, 181.8495844966271, 363.3354696787994, 727.3983379865084, 1091.0975069797626, 1454.7966759730168, 2182.195013959525, 2909.593351946034, 3081.135734226079, 113.72744440026196, 115.92675462325286, 115.92675468473564, 173.89013202710345, 173.89013207677635, 173.89013206021875, 173.8901320519399, 175.83484928589334, -42, 160.58776212602342, 156.49252181466687, 157.93126549209114, 236.89689823813666, 236.8968983058079, 236.8968982832509, 236.89689827197233, 239.54625781470938, 182.16731302849894, 363.97029128522524, 455.71136272780745, 683.5670440917111, 688.4280429335264, 696.755583186032, 696.7555831528597, 704.5478171020864, 182.16731302849894, 363.97029128522524, 455.71136272780745, 683.5670440917111, 688.4280429335264, 696.755583186032, 696.7555831528597, 704.5478171020864, 182.16731302849894, 363.97029128522524, 698.1267462233401, 1047.19011933501, 1007.8383191118861, 1009.3614194250493, 1019.0834166798136, 1032.3034616179768, 182.16731302849894, 363.97029128522524, 728.6692521139958, 1093.0038781709936, 1457.3385042279915, 2096.7124797741835, 2018.0088785511505, 2032.9088668845309, 182.16731302849894, 363.97029128522524, 728.6692521139958, 1093.0038781709936, 1457.3385042279915, 2186.0077563419873, 2914.6770084559835, 3086.5373962762105, 113.92784070743183, 116.12593044730212, 116.12593050889055, 174.1888957633358, 174.18889581309404, 174.188895796508, 174.18889578821492, 176.1369542755216, -43, 160.86855996105507, 156.76419979356024, 158.2021446129418, 237.30321691941265, 237.30321698719993, 237.30321696460425, 237.30321695330636, 239.95712060060382, 182.48504156037077, 364.605112891651, 456.5129479563025, 684.7694219344537, 689.627721721284, 697.950638131189, 697.9506380979598, 705.7562370605995, 182.48504156037077, 364.605112891651, 456.5129479563025, 684.7694219344537, 689.627721721284, 697.950638131189, 697.9506380979598, 705.7562370605995, 182.48504156037077, 364.605112891651, 699.3453906798374, 1049.0180860197559, 1009.610884135149, 1011.1188130762009, 1020.8354122202192, 1034.0740385411902, 182.48504156037077, 364.605112891651, 729.9401662414831, 1094.9102493622247, 1459.8803324829662, 2100.372404482029, 2021.5579999347008, 2036.4723120243273, 182.48504156037077, 364.605112891651, 729.9401662414831, 1094.9102493622247, 1459.8803324829662, 2189.820498724449, 2919.760664965933, 3091.939058326342, 114.1282370146017, 116.32510627135139, 116.32510633304544, 174.48765949956814, 174.48765954941172, 174.48765953279724, 174.48765952448994, 176.43905926514987, -44, 161.14935779608675, 157.03587777245363, 158.47302373379247, 237.70953560068864, 237.709535668592, 237.7095356459576, 237.70953563464036, 240.36798338649825, 182.8027700922426, 365.2399344980768, 457.3145331847976, 685.9717997771963, 690.8274005090416, 699.1456930763459, 699.1456930430599, 706.9646570191125, 182.8027700922426, 365.2399344980768, 457.3145331847976, 685.9717997771963, 690.8274005090416, 699.1456930763459, 699.1456930430599, 706.9646570191125, 182.8027700922426, 365.2399344980768, 700.5640351363345, 1050.8460527045017, 1011.3834491584118, 1012.8762067273524, 1022.5874077606247, 1035.8446154644034, 182.8027700922426, 365.2399344980768, 731.2110803689704, 1096.8166205534556, 1462.4221607379409, 2104.0323291898744, 2025.1071213182508, 2040.0357571641237, 182.8027700922426, 365.2399344980768, 731.2110803689704, 1096.8166205534556, 1462.4221607379409, 2193.633241106911, 2924.844321475882, 3097.3407203764737, 114.32863332177158, 116.52428209540065, 116.52428215720033, 174.7864232358005, 174.78642328572943, 174.78642326908647, 174.78642326076496, 176.7411642547781, -45, 161.4301556311184, 157.307555751347, 158.74390285464312, 238.11585428196463, 238.11585434998406, 238.11585432731098, 238.1158543159744, 240.7788461723927, 183.12049862411448, 365.8747561045026, 458.11611841329267, 687.174177619939, 692.0270792967992, 700.3407480215029, 700.3407479881599, 708.1730769776254, 183.12049862411448, 365.8747561045026, 458.11611841329267, 687.174177619939, 692.0270792967992, 700.3407480215029, 700.3407479881599, 708.1730769776254, 183.12049862411448, 365.8747561045026, 701.7826795928318, 1052.6740193892476, 1013.1560141816748, 1014.633600378504, 1024.3394033010304, 1037.6151923876168, 183.12049862411448, 365.8747561045026, 732.4819944964579, 1098.7229917446866, 1464.9639889929158, 2107.69225389772, 2028.6562427018011, 2043.5992023039198, 183.12049862411448, 365.8747561045026, 732.4819944964579, 1098.7229917446866, 1464.9639889929158, 2197.4459834893732, 2929.9279779858316, 3102.742382426605, 114.52902962894144, 116.72345791944991, 116.72345798135524, 175.08518697203283, 175.0851870220471, 175.08518700537573, 175.08518699703998, 177.04326924440636, -46, 161.71095346615004, 157.57923373024036, 159.01478197549378, 238.52217296324062, 238.52217303137613, 238.52217300866434, 238.52217299730842, 241.18970895828713, 183.4382271559863, 366.5095777109284, 458.91770364178774, 688.3765554626816, 693.2267580845569, 701.5358029666598, 701.53580293326, 709.3814969361385, 183.4382271559863, 366.5095777109284, 458.91770364178774, 688.3765554626816, 693.2267580845569, 701.5358029666598, 701.53580293326, 709.3814969361385, 183.4382271559863, 366.5095777109284, 703.001324049329, 1054.5019860739935, 1014.9285792049376, 1016.3909940296555, 1026.0913988414359, 1039.38576931083, 183.4382271559863, 366.5095777109284, 733.7529086239452, 1100.6293629359177, 1467.5058172478905, 2111.3521786055658, 2032.2053640853512, 2047.1626474437162, 183.4382271559863, 366.5095777109284, 733.7529086239452, 1100.6293629359177, 1467.5058172478905, 2201.2587258718354, 2935.0116344957814, 3108.144044476737, 114.72942593611131, 116.92263374349918, 116.92263380551013, 175.3839507082652, 175.3839507583648, 175.38395074166496, 175.383950733315, 177.34537423403464, -47, 161.99175130118172, 157.85091170913373, 159.28566109634446, 238.9284916445166, 238.92849171276816, 238.92849169001772, 238.92849167864244, 241.60057174418156, 183.75595568785815, 367.1443993173542, 459.7192888702828, 689.5789333054241, 694.4264368723145, 702.7308579118168, 702.7308578783601, 710.5899168946515, 183.75595568785815, 367.1443993173542, 459.7192888702828, 689.5789333054241, 694.4264368723145, 702.7308579118168, 702.7308578783601, 710.5899168946515, 183.75595568785815, 367.1443993173542, 704.2199685058263, 1056.3299527587392, 1016.7011442282005, 1018.1483876808071, 1027.8433943818416, 1041.1563462340434, 183.75595568785815, 367.1443993173542, 735.0238227514326, 1102.5357341271488, 1470.0476455028652, 2115.0121033134114, 2035.7544854689015, 2050.7260925835126, 183.75595568785815, 367.1443993173542, 735.0238227514326, 1102.5357341271488, 1470.0476455028652, 2205.0714682542975, 2940.095291005731, 3113.545706526869, 114.9298222432812, 117.12180956754844, 117.12180962966504, 175.68271444449752, 175.6827144946825, 175.6827144779542, 175.68271446959002, 177.64747922366288, -48, 162.27254913621337, 158.12258968802712, 159.5565402171951, 239.3348103257926, 239.33481039416023, 239.33481037137108, 239.33481035997647, 242.01143453007597, 184.07368421972998, 367.77922092378, 460.5208740987779, 690.7813111481668, 695.6261156600722, 703.9259128569738, 703.9259128234602, 711.7983368531646, 184.07368421972998, 367.77922092378, 460.5208740987779, 690.7813111481668, 695.6261156600722, 703.9259128569738, 703.9259128234602, 711.7983368531646, 184.07368421972998, 367.77922092378, 705.4386129623234, 1058.157919443485, 1018.4737092514633, 1019.9057813319587, 1029.595389922247, 1042.9269231572566, 184.07368421972998, 367.77922092378, 736.2947368789199, 1104.4421053183798, 1472.5894737578399, 2118.6720280212567, 2039.3036068524518, 2054.289537723309, 184.07368421972998, 367.77922092378, 736.2947368789199, 1104.4421053183798, 1472.5894737578399, 2208.8842106367597, 2945.17894751568, 3118.9473685770004, 115.13021855045106, 117.3209853915977, 117.32098545381993, 175.98147818072988, 175.98147823100018, 175.98147821424345, 175.98147820586505, 177.94958421329116, -49, 162.55334697124502, 158.39426766692048, 159.82741933804576, 239.7411290070686, 239.7411290755523, 239.74112905272446, 239.7411290413105, 242.4222973159704, 184.39141275160182, 368.4140425302058, 461.322459327273, 691.9836889909094, 696.8257944478297, 705.1209678021307, 705.1209677685601, 713.0067568116776, 184.39141275160182, 368.4140425302058, 461.322459327273, 691.9836889909094, 696.8257944478297, 705.1209678021307, 705.1209677685601, 713.0067568116776, 184.39141275160182, 368.4140425302058, 706.6572574188207, 1059.985886128231, 1020.2462742747261, 1021.6631749831101, 1031.3473854626527, 1044.69750008047, 184.39141275160182, 368.4140425302058, 737.5656510064073, 1106.348476509611, 1475.1313020128146, 2122.3319527291023, 2042.852728236002, 2057.8529828631054, 184.39141275160182, 368.4140425302058, 737.5656510064073, 1106.348476509611, 1475.1313020128146, 2212.696953019222, 2950.2626040256296, 3124.349030627132, 115.33061485762093, 117.52016121564697, 117.52016127797482, 176.2802419169622, 176.28024196731786, 176.28024195053268, 176.28024194214004, 178.2516892029194, -50, 162.8341448062767, 158.66594564581385, 160.0982984588964, 240.14744768834458, 240.14744775694436, 240.14744773407782, 240.14744772264453, 242.83316010186485, 184.70914128347368, 369.04886413663155, 462.1240445557681, 693.186066833652, 698.0254732355874, 706.3160227472877, 706.3160227136602, 714.2151767701907, 184.70914128347368, 369.04886413663155, 462.1240445557681, 693.186066833652, 698.0254732355874, 706.3160227472877, 706.3160227136602, 714.2151767701907, 184.70914128347368, 369.04886413663155, 707.8759018753179, 1061.8138528129768, 1022.0188392979891, 1023.4205686342617, 1033.0993810030582, 1046.4680770036832, 184.70914128347368, 369.04886413663155, 738.8365651338947, 1108.254847700842, 1477.6731302677895, 2125.991877436948, 2046.4018496195522, 2061.4164280029013, 184.70914128347368, 369.04886413663155, 738.8365651338947, 1108.254847700842, 1477.6731302677895, 2216.509695401684, 2955.3462605355794, 3129.7506926772635, 115.53101116479081, 117.71933703969623, 117.71933710212973, 176.57900565319457, 176.57900570363554, 176.57900568682192, 176.57900567841506, 178.55379419254768, -51, 163.11494264130835, 158.93762362470724, 160.3691775797471, 240.55376636962058, 240.5537664383364, 240.5537664154312, 240.55376640397853, 243.2440228877593, 185.02686981534552, 369.68368574305737, 462.92562978426315, 694.3884446763947, 699.225152023345, 707.5110776924447, 707.5110776587603, 715.4235967287037, 185.02686981534552, 369.68368574305737, 462.92562978426315, 694.3884446763947, 699.225152023345, 707.5110776924447, 707.5110776587603, 715.4235967287037, 185.02686981534552, 369.68368574305737, 709.0945463318152, 1063.6418194977227, 1023.7914043212519, 1025.1779622854133, 1034.8513765434639, 1048.2386539268966, 185.02686981534552, 369.68368574305737, 740.1074792613821, 1110.161218892073, 1480.2149585227642, 2129.6518021447937, 2049.9509710031025, 2064.9798731426977, 185.02686981534552, 369.68368574305737, 740.1074792613821, 1110.161218892073, 1480.2149585227642, 2220.322437784146, 2960.429917045529, 3135.152354727395, 115.73140747196068, 117.91851286374549, 117.91851292628462, 176.8777693894269, 176.87776943995325, 176.87776942311118, 176.87776941469008, 178.85589918217593, -52, 163.39574047634, 159.2093016036006, 160.64005670059774, 240.96008505089657, 240.96008511972846, 240.96008509678455, 240.96008508531256, 243.65488567365372, 185.34459834721736, 370.3185073494831, 463.7272150127582, 695.5908225191373, 700.4248308111027, 708.7061326376016, 708.7061326038604, 716.6320166872167, 185.34459834721736, 370.3185073494831, 463.7272150127582, 695.5908225191373, 700.4248308111027, 708.7061326376016, 708.7061326038604, 716.6320166872167, 185.34459834721736, 370.3185073494831, 710.3131907883123, 1065.4697861824686, 1025.5639693445148, 1026.9353559365647, 1036.6033720838693, 1050.0092308501098, 185.34459834721736, 370.3185073494831, 741.3783933888694, 1112.0675900833041, 1482.7567867777389, 2133.311726852639, 2053.500092386653, 2068.543318282494, 185.34459834721736, 370.3185073494831, 741.3783933888694, 1112.0675900833041, 1482.7567867777389, 2224.1351801666083, 2965.513573555478, 3140.5540167775266, 115.93180377913056, 118.11768868779475, 118.11768875043951, 177.17653312565926, 177.17653317627094, 177.1765331594004, 177.1765331509651, 179.15800417180418, -53, 163.67653831137167, 159.48097958249397, 160.9109358214484, 241.36640373217256, 241.36640380112053, 241.3664037781379, 241.36640376664658, 244.06574845954816, 185.6623268790892, 370.95332895590894, 464.5288002412533, 696.7932003618798, 701.6245095988603, 709.9011875827587, 709.9011875489605, 717.8404366457298, 185.6623268790892, 370.95332895590894, 464.5288002412533, 696.7932003618798, 701.6245095988603, 709.9011875827587, 709.9011875489605, 717.8404366457298, 185.6623268790892, 370.95332895590894, 711.5318352448096, 1067.2977528672143, 1027.3365343677776, 1028.6927495877164, 1038.355367624275, 1051.7798077733232, 185.6623268790892, 370.95332895590894, 742.6493075163568, 1113.9739612745352, 1485.2986150327135, 2136.9716515604846, 2057.0492137702026, 2072.1067634222904, 185.6623268790892, 370.95332895590894, 742.6493075163568, 1113.9739612745352, 1485.2986150327135, 2227.9479225490704, 2970.5972300654275, 3145.955678827658, 116.13220008630043, 118.316864511844, 118.31686457459442, 177.4752968618916, 177.47529691258862, 177.47529689568967, 177.47529688724012, 179.46010916143246, -54, 163.95733614640332, 159.75265756138734, 161.18181494229907, 241.77272241344855, 241.77272248251256, 241.7727224594913, 241.7727224479806, 244.4766112454426, 185.98005541096103, 371.5881505623347, 465.33038546974836, 697.9955782046225, 702.8241883866178, 711.0962425279156, 711.0962424940606, 719.0488566042428, 185.98005541096103, 371.5881505623347, 465.33038546974836, 697.9955782046225, 702.8241883866178, 711.0962425279156, 711.0962424940606, 719.0488566042428, 185.98005541096103, 371.5881505623347, 712.7504797013069, 1069.1257195519602, 1029.1090993910404, 1030.450143238868, 1040.1073631646805, 1053.5503846965366, 185.98005541096103, 371.5881505623347, 743.9202216438441, 1115.8803324657663, 1487.8404432876882, 2140.6315762683303, 2060.598335153753, 2075.670208562087, 185.98005541096103, 371.5881505623347, 743.9202216438441, 1115.8803324657663, 1487.8404432876882, 2231.7606649315326, 2975.680886575377, 3151.3573408777897, 116.3325963934703, 118.51604033589327, 118.51604039874931, 177.77406059812395, 177.7740606489063, 177.7740606319789, 177.77406062351514, 179.7622141510607, -55, 164.23813398143497, 160.02433554028073, 161.45269406314972, 242.17904109472454, 242.17904116390463, 242.17904114084467, 242.17904112931464, 244.88747403133704, 186.2977839428329, 372.2229721687605, 466.13197069824344, 699.1979560473651, 704.0238671743755, 712.2912974730725, 712.2912974391606, 720.2572765627559, 186.2977839428329, 372.2229721687605, 466.13197069824344, 699.1979560473651, 704.0238671743755, 712.2912974730725, 712.2912974391606, 720.2572765627559, 186.2977839428329, 372.2229721687605, 713.9691241578041, 1070.953686236706, 1030.8816644143035, 1032.2075368900196, 1041.8593587050862, 1055.3209616197498, 186.2977839428329, 372.2229721687605, 745.1911357713316, 1117.7867036569971, 1490.3822715426631, 2144.2915009761755, 2064.1474565373032, 2079.2336537018828, 186.2977839428329, 372.2229721687605, 745.1911357713316, 1117.7867036569971, 1490.3822715426631, 2235.5734073139947, 2980.7645430853267, 3156.7590029279213, 116.53299270064018, 118.71521615994253, 118.71521622290422, 178.07282433435628, 178.072824385224, 178.07282436826813, 178.07282435979016, 180.06431914068898, -56, 164.51893181646665, 160.2960135191741, 161.72357318400037, 242.58535977600053, 242.5853598452967, 242.58535982219803, 242.58535981064867, 245.29833681723147, 186.61551247470473, 372.8577937751863, 466.9335559267385, 700.4003338901077, 705.2235459621331, 713.4863524182296, 713.4863523842607, 721.4656965212689, 186.61551247470473, 372.8577937751863, 466.9335559267385, 700.4003338901077, 705.2235459621331, 713.4863524182296, 713.4863523842607, 721.4656965212689, 186.61551247470473, 372.8577937751863, 715.1877686143014, 1072.781652921452, 1032.6542294375663, 1033.964930541171, 1043.6113542454916, 1057.0915385429632, 186.61551247470473, 372.8577937751863, 746.4620498988189, 1119.6930748482282, 1492.9240997976378, 2147.951425684021, 2067.6965779208535, 2082.797098841679, 186.61551247470473, 372.8577937751863, 746.4620498988189, 1119.6930748482282, 1492.9240997976378, 2239.3861496964564, 2985.848199595276, 3162.160664978053, 116.73338900781005, 118.91439198399179, 118.91439204705911, 178.37158807058864, 178.3715881215417, 178.3715881045574, 178.37158809606518, 180.36642413031723, -57, 164.7997296514983, 160.56769149806746, 161.99445230485105, 242.99167845727652, 242.99167852668876, 242.99167850355138, 242.99167849198267, 245.70919960312588, 186.93324100657657, 373.4926153816121, 467.7351411552336, 701.6027117328504, 706.4232247498908, 714.6814073633865, 714.6814073293608, 722.674116479782, 186.93324100657657, 373.4926153816121, 467.7351411552336, 701.6027117328504, 706.4232247498908, 714.6814073633865, 714.6814073293608, 722.674116479782, 186.93324100657657, 373.4926153816121, 716.4064130707985, 1074.6096196061978, 1034.4267944608291, 1035.7223241923225, 1045.3633497858973, 1058.8621154661764, 186.93324100657657, 373.4926153816121, 747.7329640263063, 1121.5994460394593, 1495.4659280526125, 2151.611350391867, 2071.2456993044034, 2086.3605439814755, 186.93324100657657, 373.4926153816121, 747.7329640263063, 1121.5994460394593, 1495.4659280526125, 2243.1988920789186, 2990.9318561052255, 3167.5623270281844, 116.93378531497993, 119.11356780804105, 119.113567871214, 178.67035180682097, 178.67035185785937, 178.67035184084662, 178.6703518323402, 180.6685291199455, -58, 165.08052748652995, 160.83936947696085, 162.2653314257017, 243.3979971385525, 243.3979972080808, 243.39799718490477, 243.3979971733167, 246.12006238902032, 187.2509695384484, 374.12743698803786, 468.53672638372865, 702.805089575593, 707.6229035376484, 715.8764623085434, 715.8764622744608, 723.882536438295, 187.2509695384484, 374.12743698803786, 468.53672638372865, 702.805089575593, 707.6229035376484, 715.8764623085434, 715.8764622744608, 723.882536438295, 187.2509695384484, 374.12743698803786, 717.6250575272958, 1076.4375862909435, 1036.199359484092, 1037.4797178434742, 1047.1153453263028, 1060.6326923893898, 187.2509695384484, 374.12743698803786, 749.0038781537936, 1123.5058172306904, 1498.0077563075872, 2155.2712750997125, 2074.7948206879537, 2089.923989121272, 187.2509695384484, 374.12743698803786, 749.0038781537936, 1123.5058172306904, 1498.0077563075872, 2247.0116344613807, 2996.015512615175, 3172.963989078316, 117.1341816221498, 119.31274363209032, 119.31274369536891, 178.96911554305333, 178.96911559417708, 178.96911557713585, 178.9691155686152, 180.97063410957375, -59, 165.36132532156162, 161.11104745585422, 162.53621054655235, 243.8043158198285, 243.80431588947286, 243.80431586625812, 243.80431585465072, 246.53092517491476, 187.56869807032024, 374.7622585944637, 469.3383116122237, 704.0074674183355, 708.8225823254061, 717.0715172537004, 717.0715172195609, 725.090956396808, 187.56869807032024, 374.7622585944637, 469.3383116122237, 704.0074674183355, 708.8225823254061, 717.0715172537004, 717.0715172195609, 725.090956396808, 187.56869807032024, 374.7622585944637, 718.843701983793, 1078.2655529756894, 1037.9719245073547, 1039.2371114946257, 1048.8673408667084, 1062.403269312603, 187.56869807032024, 374.7622585944637, 750.274792281281, 1125.4121884219214, 1500.549584562562, 2158.9311998075577, 2078.343942071504, 2093.4874342610683, 187.56869807032024, 374.7622585944637, 750.274792281281, 1125.4121884219214, 1500.549584562562, 2250.824376843843, 3001.0991691251247, 3178.3656511284476, 117.33457792931966, 119.51191945613958, 119.5119195195238, 179.26787927928567, 179.26787933049476, 179.2678793134251, 179.26787930489022, 181.272739099202, -60, 165.64212315659327, 161.38272543474758, 162.80708966740303, 244.2106345011045, 244.21063457086493, 244.2106345476115, 244.21063453598475, 246.9417879608092, 187.8864266021921, 375.39708020088943, 470.13989684071885, 705.2098452610782, 710.0222611131636, 718.2665721988574, 718.2665721646609, 726.2993763553211, 187.8864266021921, 375.39708020088943, 470.13989684071885, 705.2098452610782, 710.0222611131636, 718.2665721988574, 718.2665721646609, 726.2993763553211, 187.8864266021921, 375.39708020088943, 720.0623464402902, 1080.0935196604353, 1039.7444895306178, 1040.994505145777, 1050.619336407114, 1064.1738462358164, 187.8864266021921, 375.39708020088943, 751.5457064087684, 1127.3185596131525, 1503.0914128175368, 2162.5911245154034, 2081.8930634550543, 2097.0508794008647, 187.8864266021921, 375.39708020088943, 751.5457064087684, 1127.3185596131525, 1503.0914128175368, 2254.637119226305, 3006.182825635074, 3183.767313178579, 117.53497423648955, 119.71109528018884, 119.71109534367869, 179.56664301551803, 179.56664306681245, 179.56664304971434, 179.56664304116524, 181.57484408883028, -61, 165.92292099162495, 161.65440341364095, 163.07796878825368, 244.61695318238048, 244.61695325225696, 244.61695322896486, 244.61695321731878, 247.35265074670363, 188.20415513406394, 376.03190180731525, 470.9414820692139, 706.4122231038208, 711.2219399009213, 719.4616271440143, 719.461627109761, 727.5077963138341, 188.20415513406394, 376.03190180731525, 470.9414820692139, 706.4122231038208, 711.2219399009213, 719.4616271440143, 719.461627109761, 727.5077963138341, 188.20415513406394, 376.03190180731525, 721.2809908967874, 1081.9214863451812, 1041.5170545538806, 1042.7518987969288, 1052.3713319475196, 1065.9444231590296, 188.20415513406394, 376.03190180731525, 752.8166205362558, 1129.2249308043836, 1505.6332410725115, 2166.251049223249, 2085.4421848386046, 2100.614324540661, 188.20415513406394, 376.03190180731525, 752.8166205362558, 1129.2249308043836, 1505.6332410725115, 2258.449861608767, 3011.2664821450235, 3189.1689752287107, 117.73537054365941, 119.9102711042381, 119.9102711678336, 179.86540675175036, 179.86540680313013, 179.86540678600358, 179.86540677744026, 181.87694907845852, -62, 166.2037188266566, 161.92608139253434, 163.34884790910434, 245.02327186365648, 245.02327193364903, 245.02327191031824, 245.0232718986528, 247.76351353259807, 188.52188366593577, 376.666723413741, 471.743067297709, 707.6146009465634, 712.4216186886789, 720.6566820891713, 720.6566820548611, 728.7162162723472, 188.52188366593577, 376.666723413741, 471.743067297709, 707.6146009465634, 712.4216186886789, 720.6566820891713, 720.6566820548611, 728.7162162723472, 188.52188366593577, 376.666723413741, 722.4996353532847, 1083.749453029927, 1043.2896195771434, 1044.5092924480803, 1054.123327487925, 1067.715000082243, 188.52188366593577, 376.666723413741, 754.0875346637431, 1131.1313019956146, 1508.1750693274862, 2169.9109739310948, 2088.9913062221544, 2104.177769680457, 188.52188366593577, 376.666723413741, 754.0875346637431, 1131.1313019956146, 1508.1750693274862, 2262.2626039912293, 3016.350138654973, 3194.5706372788422, 117.93576685082928, 120.10944692828737, 120.10944699198849, 180.16417048798272, 180.16417053944784, 180.16417052229284, 180.16417051371528, 182.1790540680868, -63, 166.48451666168825, 162.1977593714277, 163.61972702995502, 245.42959054493247, 245.4295906150411, 245.4295905916716, 245.42959057998684, 248.17437631849248, 188.8396121978076, 377.3015450201668, 472.54465252620406, 708.816978789306, 713.6212974764366, 721.8517370343283, 721.8517369999612, 729.9246362308602, 188.8396121978076, 377.3015450201668, 472.54465252620406, 708.816978789306, 713.6212974764366, 721.8517370343283, 721.8517369999612, 729.9246362308602, 188.8396121978076, 377.3015450201668, 723.718279809782, 1085.577419714673, 1045.0621846004062, 1046.266686099232, 1055.8753230283307, 1069.4855770054562, 188.8396121978076, 377.3015450201668, 755.3584487912304, 1133.0376731868457, 1510.716897582461, 2173.57089863894, 2092.5404276057047, 2107.7412148202534, 188.8396121978076, 377.3015450201668, 755.3584487912304, 1133.0376731868457, 1510.716897582461, 2266.0753463736914, 3021.4337951649222, 3199.9722993289743, 118.13616315799916, 120.30862275233663, 120.30862281614338, 180.46293422421508, 180.46293427576552, 180.46293425858207, 180.4629342499903, 182.48115905771505, -64, 166.76531449671992, 162.46943735032107, 163.89060615080567, 245.83590922620846, 245.83590929643316, 245.83590927302498, 245.83590926132086, 248.58523910438691, 189.15734072967945, 377.9363666265926, 473.34623775469913, 710.0193566320486, 714.8209762641941, 723.0467919794852, 723.0467919450613, 731.1330561893733, 189.15734072967945, 377.9363666265926, 473.34623775469913, 710.0193566320486, 714.8209762641941, 723.0467919794852, 723.0467919450613, 731.1330561893733, 189.15734072967945, 377.9363666265926, 724.9369242662792, 1087.4053863994186, 1046.8347496236693, 1048.0240797503834, 1057.6273185687362, 1071.2561539286696, 189.15734072967945, 377.9363666265926, 756.6293629187178, 1134.9440443780768, 1513.2587258374356, 2177.2308233467857, 2096.089548989255, 2111.30465996005, 189.15734072967945, 377.9363666265926, 756.6293629187178, 1134.9440443780768, 1513.2587258374356, 2269.8880887561536, 3026.517451674872, 3205.373961379106, 118.33655946516903, 120.5077985763859, 120.50779864029829, 180.7616979604474, 180.7616980120832, 180.7616979948713, 180.76169798626532, 182.78326404734332, -65, 167.04611233175157, 162.74111532921444, 164.16148527165632, 246.24222790748445, 246.24222797782522, 246.24222795437834, 246.24222794265486, 248.99610189028135, 189.4750692615513, 378.5711882330184, 474.1478229831942, 711.2217344747912, 716.0206550519517, 724.2418469246422, 724.2418468901614, 732.3414761478863, 189.4750692615513, 378.5711882330184, 474.1478229831942, 711.2217344747912, 716.0206550519517, 724.2418469246422, 724.2418468901614, 732.3414761478863, 189.4750692615513, 378.5711882330184, 726.1555687227764, 1089.2333530841645, 1048.607314646932, 1049.7814734015349, 1059.379314109142, 1073.0267308518828, 189.4750692615513, 378.5711882330184, 757.9002770462052, 1136.8504155693079, 1515.8005540924105, 2180.8907480546313, 2099.6386703728053, 2114.868105099846, 189.4750692615513, 378.5711882330184, 757.9002770462052, 1136.8504155693079, 1515.8005540924105, 2273.7008311386157, 3031.6011081848214, 3210.7756234292374, 118.5369557723389, 120.70697440043516, 120.70697446445318, 181.06046169667974, 181.06046174840088, 181.06046173116056, 181.06046172254034, 183.08536903697157, -66, 167.32691016678322, 163.01279330810783, 164.432364392507, 246.64854658876044, 246.64854665921726, 246.6485466357317, 246.6485466239889, 249.4069646761758, 189.79279779342315, 379.20600983944416, 474.9494082116893, 712.4241123175339, 717.2203338397094, 725.4369018697992, 725.4369018352613, 733.5498961063993, 189.79279779342315, 379.20600983944416, 474.9494082116893, 712.4241123175339, 717.2203338397094, 725.4369018697992, 725.4369018352613, 733.5498961063993, 189.79279779342315, 379.20600983944416, 727.3742131792736, 1091.0613197689104, 1050.379879670195, 1051.5388670526866, 1061.1313096495473, 1074.7973077750962, 189.79279779342315, 379.20600983944416, 759.1711911736926, 1138.7567867605387, 1518.3423823473852, 2184.550672762477, 2103.1877917563556, 2118.4315502396425, 189.79279779342315, 379.20600983944416, 759.1711911736926, 1138.7567867605387, 1518.3423823473852, 2277.513573521078, 3036.684764694771, 3216.177285479369, 118.73735207950878, 120.90615022448442, 120.90615028860807, 181.3592254329121, 181.3592254847186, 181.3592254674498, 181.35922545881533, 183.38747402659982, -67, 167.6077080018149, 163.2844712870012, 164.70324351335765, 247.05486527003643, 247.05486534060933, 247.05486531708507, 247.05486530532292, 249.81782746207023, 190.11052632529498, 379.84083144587, 475.75099344018435, 713.6264901602765, 718.420012627467, 726.6319568149561, 726.6319567803614, 734.7583160649124, 190.11052632529498, 379.84083144587, 475.75099344018435, 713.6264901602765, 718.420012627467, 726.6319568149561, 726.6319567803614, 734.7583160649124, 190.11052632529498, 379.84083144587, 728.5928576357709, 1092.8892864536563, 1052.1524446934577, 1053.296260703838, 1062.883305189953, 1076.5678846983096, 190.11052632529498, 379.84083144587, 760.4421053011799, 1140.6631579517698, 1520.8842106023599, 2188.210597470322, 2106.7369131399055, 2121.994995379439, 190.11052632529498, 379.84083144587, 760.4421053011799, 1140.6631579517698, 1520.8842106023599, 2281.32631590354, 3041.76842120472, 3221.5789475295005, 118.93774838667865, 121.10532604853368, 121.10532611276298, 181.65798916914446, 181.65798922103627, 181.65798920373902, 181.65798919509035, 183.6895790162281, -68, 167.88850583684655, 163.55614926589456, 164.9741226342083, 247.46118395131242, 247.4611840220014, 247.46118399843846, 247.46118398665695, 250.22869024796466, 190.42825485716682, 380.4756530522958, 476.5525786686794, 714.8288680030191, 719.6196914152247, 727.8270117601131, 727.8270117254615, 735.9667360234254, 190.42825485716682, 380.4756530522958, 476.5525786686794, 714.8288680030191, 719.6196914152247, 727.8270117601131, 727.8270117254615, 735.9667360234254, 190.42825485716682, 380.4756530522958, 729.811502092268, 1094.7172531384022, 1053.9250097167205, 1055.0536543549897, 1064.6353007303585, 1078.3384616215228, 190.42825485716682, 380.4756530522958, 761.7130194286673, 1142.5695291430009, 1523.4260388573346, 2191.870522178168, 2110.286034523456, 2125.558440519235, 190.42825485716682, 380.4756530522958, 761.7130194286673, 1142.5695291430009, 1523.4260388573346, 2285.139058286002, 3046.8520777146696, 3226.980609579632, 119.13814469384853, 121.30450187258295, 121.30450193691787, 181.9567529053768, 181.95675295735396, 181.95675294002828, 181.95675293136537, 183.99168400585634, -69, 168.1693036718782, 163.82782724478795, 165.24500175505895, 247.8675026325884, 247.86750270339343, 247.8675026797918, 247.86750266799098, 250.6395530338591, 184.59514170963473, 368.8210929881925, 477.3541638971745, 716.0312458457618, 720.8193702029823, 729.02206670527, 729.0220666705616, 737.1751559819385, 184.59514170963473, 368.8210929881925, 477.3541638971745, 716.0312458457618, 720.8193702029823, 729.02206670527, 729.0220666705616, 737.1751559819385, 184.59514170963473, 368.8210929881925, 731.0301465487653, 1096.5452198231478, 1055.6975747399836, 1056.8110480061412, 1066.3872962707642, 1080.1090385447362, 184.59514170963473, 368.8210929881925, 738.3805668385389, 1107.5708502578082, 1476.7611336770779, 2195.5304468860136, 2113.835155907006, 2129.1218856590312, 184.59514170963473, 368.8210929881925, 738.3805668385389, 1107.5708502578082, 1476.7611336770779, 2215.1417005156145, 2953.522267354153, 3232.3822716297636, 119.3385410010184, 121.50367769663221, 121.50367776107277, 182.25551664160915, 182.25551669367167, 182.2555166763175, 182.2555166676404, 184.29378899548462, -70, 168.45010150690987, 164.09950522368132, 165.51588087590963, 248.2738213138644, 248.2738213847855, 248.27382136114517, 248.273821349325, 251.05041581975354, 178.20850203320208, 356.06058691978865, 478.15574912566956, 717.2336236885043, 722.0190489907399, 730.2171216504271, 730.2171216156617, 738.3835759404515, 178.20850203320208, 356.06058691978865, 478.15574912566956, 717.2336236885043, 722.0190489907399, 730.2171216504271, 730.2171216156617, 738.3835759404515, 178.20850203320208, 356.06058691978865, 712.8340081328076, 1069.2510121992113, 1057.4701397632464, 1058.5684416572926, 1068.1392918111696, 1081.8796154679494, 178.20850203320208, 356.06058691978865, 712.8340081328083, 1069.2510121992123, 1425.6680162656166, 2138.5020243984227, 2117.3842772905564, 2132.6853307988276, 178.20850203320208, 356.06058691978865, 712.8340081328083, 1069.2510121992123, 1425.6680162656166, 2138.5020243984227, 2851.3360325312306, 3237.783933679895, 119.53893730818827, 121.70285352068147, 121.70285358522767, 182.55428037784148, 182.55428042998935, 182.55428041260677, 182.5542804039154, 184.59589398511287, -71, 168.73089934194152, 164.37118320257468, 165.78675999676028, 248.6801399951404, 248.68014006617756, 248.68014004249855, 248.680140030659, 251.46127860564795, 171.82186235676937, 343.3000808513848, 478.9573343541647, 718.4360015312469, 723.2187277784975, 731.412176595584, 731.4121765607617, 739.5919958989646, 171.82186235676937, 343.3000808513848, 478.9573343541647, 718.4360015312469, 723.2187277784975, 731.412176595584, 731.4121765607617, 739.5919958989646, 171.82186235676937, 343.3000808513848, 687.2874494270768, 1030.931174140615, 1059.2427047865092, 1060.3258353084443, 1069.891287351575, 1083.6501923911628, 171.82186235676937, 343.3000808513848, 687.2874494270775, 1030.931174140616, 1374.574898854155, 2061.862348281231, 2120.9333986741067, 2136.248775938624, 171.82186235676937, 343.3000808513848, 687.2874494270775, 1030.931174140616, 1374.574898854155, 2061.86234828123, 2749.1497977083072, 3243.1855957300268, 119.73933361535815, 121.90202934473072, 121.90202940938256, 182.85304411407384, 182.85304416630703, 182.853044148896, 182.85304414019043, 184.89799897474114, -72, 165.43522268033644, 164.64286118146805, 166.05763911761093, 249.08645867641638, 249.08645874756962, 249.0864587238519, 249.08645871199303, 251.87214139154239, 165.43522268033666, 330.53957478298094, 479.75891958265976, 719.6383793739896, 724.4184065662552, 732.6072315407409, 732.6072315058618, 740.8004158574776, 165.43522268033666, 330.53957478298094, 479.75891958265976, 719.6383793739896, 724.4184065662552, 732.6072315407409, 732.6072315058618, 740.8004158574776, 165.43522268033666, 330.53957478298094, 661.740890721346, 992.6113360820191, 1061.015269809772, 1062.0832289595958, 1071.6432828919808, 1085.420769314376, 165.43522268033666, 330.53957478298094, 661.7408907213467, 992.61133608202, 1323.4817814426933, 1985.2226721640382, 2124.4825200576565, 2139.8122210784204, 165.43522268033666, 330.53957478298094, 661.7408907213467, 992.61133608202, 1323.4817814426933, 1985.2226721640382, 2646.963562885384, 3248.5872577801583, 119.93972992252802, 122.10120516877998, 122.10120523353746, 183.15180785030617, 183.1518079026247, 183.15180788518524, 183.15180787646545, 185.2001039643694, -73, 159.0485830039038, 164.91453916036144, 166.3285182384616, 249.49277735769235, 249.49277742896166, 249.4927774052053, 249.49277739332706, 252.28300417743682, 159.04858300390396, 317.7790687145772, 480.56050481115483, 720.8407572167322, 725.6180853540128, 733.8022864858979, 733.8022864509619, 742.0088358159906, 159.04858300390396, 317.7790687145772, 480.56050481115483, 720.8407572167322, 725.6180853540128, 733.8022864858979, 733.8022864509619, 742.0088358159906, 159.04858300390396, 317.7790687145772, 636.1943320156151, 954.2914980234227, 1062.787834833035, 1063.8406226107472, 1073.3952784323865, 1087.1913462375894, 159.04858300390396, 317.7790687145772, 636.1943320156158, 954.2914980234236, 1272.3886640312317, 1908.5829960468454, 2128.031641441207, 2143.375666218217, 159.04858300390396, 317.7790687145772, 636.1943320156158, 954.2914980234236, 1272.3886640312317, 1908.5829960468454, 2544.7773280624606, 3180.9716600780775, 120.1401262296979, 122.30038099282925, 122.30038105769236, 183.45057158653853, 183.4505716389424, 183.45057162147447, 183.45057161274048, 185.50220895399764, -74, 152.66194332747108, 165.1862171392548, 166.59939735931226, 249.89909603896834, 249.89909611035372, 249.89909608655864, 249.8990960746611, 252.69386696333126, 152.66194332747125, 305.01856264617334, 481.3620900396499, 722.0431350594747, 726.8177641417703, 734.9973414310549, 734.997341396062, 743.2172557745037, 152.66194332747125, 305.01856264617334, 481.3620900396499, 722.0431350594747, 726.8177641417703, 734.9973414310549, 734.997341396062, 743.2172557745037, 152.66194332747125, 305.01856264617334, 610.6477733098845, 915.9716599648268, 1064.5603998562979, 1065.598016261899, 1075.147273972792, 1088.9619231608026, 152.66194332747125, 305.01856264617334, 610.647773309885, 915.9716599648273, 1221.29554661977, 1831.9433199296536, 2131.580762824757, 2146.9391113580127, 152.66194332747125, 305.01856264617334, 610.647773309885, 915.9716599648273, 1221.29554661977, 1831.9433199296536, 2442.591093239538, 3053.2388665494236, 120.34052253686777, 122.49955681687851, 122.49955688184725, 183.74933532277086, 183.7493353752601, 183.74933535776373, 183.7493353490155, 185.8043139436259, -75, 146.27530365103837, 165.45789511814817, 166.87027648016291, 250.30541472024433, 250.3054147917458, 250.30541476791203, 250.30541475599512, 253.1047297492257, 146.2753036510386, 292.2580565777695, 482.16367526814497, 723.2455129022173, 728.017442929528, 736.1923963762118, 736.1923963411621, 744.4256757330166, 146.2753036510386, 292.2580565777695, 482.16367526814497, 723.2455129022173, 728.017442929528, 736.1923963762118, 736.1923963411621, 744.4256757330166, 146.2753036510386, 292.2580565777695, 585.1012146041537, 877.6518219062305, 1066.3329648795607, 1067.3554099130504, 1076.8992695131974, 1090.732500084016, 146.2753036510386, 292.2580565777695, 585.1012146041544, 877.6518219062314, 1170.2024292083088, 1755.3036438124618, 2135.1298842083074, 2150.502556497809, 146.2753036510386, 292.2580565777695, 585.1012146041544, 877.6518219062314, 1170.2024292083088, 1755.303643812461, 2340.404858416615, 2925.5060730207697, 120.54091884403763, 122.69873264092777, 122.69873270600215, 184.04809905900322, 184.04809911157778, 184.04809909405296, 184.04809908529052, 186.10641893325416, -76, 139.88866397460572, 165.72957309704157, 167.1411556010136, 250.71173340152032, 250.71173347313783, 250.71173344926538, 250.71173343732914, 253.51559253512013, 139.8886639746059, 279.4975505093656, 482.96526049664004, 724.44789074496, 729.2171217172856, 737.3874513213689, 737.387451286262, 745.6340956915298, 139.8886639746059, 279.4975505093656, 482.96526049664004, 724.44789074496, 729.2171217172856, 737.3874513213689, 737.387451286262, 745.6340956915298, 139.8886639746059, 279.4975505093656, 559.5546558984229, 839.3319838476341, 1068.1055299028235, 1069.112803564202, 1078.651265053603, 1092.5030770072292, 139.8886639746059, 279.4975505093656, 559.5546558984236, 839.331983847635, 1119.1093117968471, 1678.663967695269, 2138.6790055918577, 2154.0660016376055, 139.8886639746059, 279.4975505093656, 559.5546558984236, 839.331983847635, 1119.1093117968471, 1678.663967695269, 2238.2186235936915, 2797.7732794921158, 120.74131515120752, 122.89790846497704, 122.89790853015705, 184.34686279523555, 184.34686284789547, 184.34686283034222, 184.3468628215655, 186.40852392288244, -77, 133.502024298173, 166.00125107593493, 167.41203472186425, 251.1180520827963, 251.1180521545299, 251.11805213061876, 251.11805211866317, 253.92645532101457, 133.50202429817318, 266.73704444096177, 483.7668457251351, 725.6502685877026, 730.4168005050433, 738.5825062665258, 738.5825062313621, 746.8425156500427, 133.50202429817318, 266.73704444096177, 483.7668457251351, 725.6502685877026, 730.4168005050433, 738.5825062665258, 738.5825062313621, 746.8425156500427, 133.50202429817318, 266.73704444096177, 534.008097192692, 801.0121457890382, 1068.0161943853846, 1070.8701972153535, 1080.4032605940088, 1094.2736539304426, 133.50202429817318, 266.73704444096177, 534.0080971926927, 801.0121457890391, 1068.0161943853855, 1602.0242915780764, 2136.032388770772, 2157.629446777402, 133.50202429817318, 266.73704444096177, 534.0080971926927, 801.0121457890391, 1068.0161943853855, 1602.0242915780764, 2136.032388770768, 2670.040485963462, 120.94171145837738, 123.0970842890263, 123.09708435431195, 184.6456265314679, 184.64562658421318, 184.64562656663145, 184.64562655784053, 186.71062891251069, -78, 127.1153846217403, 166.2729290548283, 167.6829138427149, 251.5243707640723, 251.52437083592196, 251.52437081197212, 251.52437079999717, 254.33731810690898, 127.11538462174053, 253.9765383725579, 484.5684309536302, 726.8526464304452, 731.6164792928009, 739.7775612116827, 739.7775611764622, 748.0509356085558, 127.11538462174053, 253.9765383725579, 484.5684309536302, 726.8526464304452, 731.6164792928009, 739.7775612116827, 739.7775611764622, 748.0509356085558, 127.11538462174053, 253.9765383725579, 508.46153848696144, 762.6923077304418, 1016.9230769739229, 1072.6275908665052, 1082.1552561344142, 1096.0442308536558, 127.11538462174053, 253.9765383725579, 508.4615384869621, 762.6923077304427, 1016.9230769739243, 1525.3846154608846, 2033.8461539478485, 2161.1928919171983, 127.11538462174053, 253.9765383725579, 508.4615384869621, 762.6923077304427, 1016.9230769739243, 1525.3846154608846, 2033.8461539478458, 2542.307692434808, 121.14210776554725, 123.29626011307556, 123.29626017846685, 184.94439026770024, 184.94439032053086, 184.94439030292068, 184.94439029411555, 187.01273390213896, -79, 120.72874494530765, 166.54460703372166, 167.95379296356555, 251.9306894453483, 251.93068951731402, 251.93068949332547, 251.9306894813312, 254.74818089280342, 120.72874494530782, 241.21603230415406, 485.37001618212525, 728.0550242731879, 732.8161580805586, 740.9726161568398, 740.9726161215623, 749.2593555670688, 120.72874494530782, 241.21603230415406, 485.37001618212525, 728.0550242731879, 732.8161580805586, 740.9726161568398, 740.9726161215623, 749.2593555670688, 120.72874494530782, 241.21603230415406, 482.9149797812306, 724.3724696718459, 965.8299595624612, 1074.3849845176567, 1083.9072516748197, 1097.8148077768692, 120.72874494530782, 241.21603230415406, 482.9149797812313, 724.3724696718468, 965.8299595624626, 1448.7449393436927, 1931.659919124926, 2164.7563370569947, 120.72874494530782, 241.21603230415406, 482.9149797812313, 724.3724696718468, 965.8299595624626, 1448.7449393436918, 1931.6599191249225, 2414.574898906154, 121.34250407271713, 123.49543593712482, 123.49543600262174, 185.2431540039326, 185.24315405684854, 185.24315403920994, 185.24315403039057, 187.3148388917672, -80, 114.34210526887495, 166.81628501261505, 168.22467208441623, 252.33700812662428, 252.3370081987061, 252.33700817467886, 252.33700816266523, 255.15904367869786, 114.34210526887512, 228.4555262357502, 469.1615245243652, 703.742286786548, 734.0158368683161, 742.1676711019967, 742.1676710666624, 750.4677755255818, 114.34210526887512, 228.4555262357502, 469.1615245243652, 703.742286786548, 734.0158368683161, 742.1676711019967, 742.1676710666624, 750.4677755255818, 114.34210526887512, 228.4555262357502, 457.3684210754998, 686.0526316132496, 914.736842151, 1076.1423781688081, 1085.6592472152254, 1099.5853847000826, 114.34210526887512, 228.4555262357502, 457.36842107550046, 686.0526316132505, 914.7368421510009, 1372.1052632265, 1829.4736843020028, 2168.3197821967906, 114.34210526887512, 228.4555262357502, 457.36842107550046, 686.0526316132505, 914.7368421510009, 1372.1052632265, 1829.4736843019991, 2286.8421053775, 117.29038113109118, 123.69461176117409, 123.69461182677664, 185.54191774016493, 185.54191779316622, 185.54191777549917, 185.5419177666656, 187.61694388139546, -81, 107.95546559244224, 167.08796299150842, 168.49555120526688, 252.74332680790027, 252.74332688009812, 252.74332685603224, 252.74332684399926, 255.5699064645923, 107.95546559244247, 215.69502016734646, 442.7078040148758, 664.0617060223135, 735.2155156560738, 743.3627260471536, 743.3627260117624, 751.6761954840949, 107.95546559244247, 215.69502016734646, 442.7078040148758, 664.0617060223135, 735.2155156560738, 743.3627260471536, 743.3627260117624, 751.6761954840949, 107.95546559244247, 215.69502016734646, 431.82186236976895, 647.7327935546537, 863.6437247395388, 1077.8997718199598, 1087.411242755631, 1101.3559616232958, 107.95546559244247, 215.69502016734646, 431.82186236976986, 647.7327935546541, 863.6437247395397, 1295.4655871093073, 1727.2874494790794, 2171.883227336587, 107.95546559244247, 215.69502016734646, 431.82186236976986, 647.7327935546541, 863.6437247395397, 1295.4655871093073, 1727.2874494790758, 2159.109311848846, 110.67695100371884, 123.89378758522335, 123.89378765093154, 185.8406814763973, 185.84068152948393, 185.8406815117884, 185.8406815029406, 187.91904887102373, -82, 101.56882591600959, 167.35964097040178, 168.76643032611753, 253.14964548917627, 253.1496455614902, 253.1496455373856, 253.14964552533328, 255.98076925048673, 101.5688259160097, 202.9345140989426, 416.254083505386, 624.381125258079, 736.4151944438314, 744.5577809923107, 744.5577809568625, 752.8846154426079, 101.5688259160097, 202.9345140989426, 416.254083505386, 624.381125258079, 736.4151944438314, 744.5577809923107, 744.5577809568625, 752.8846154426079, 101.5688259160097, 202.9345140989426, 406.27530366403835, 609.4129554960573, 812.5506073280767, 1079.6571654711113, 1089.1632382960365, 1103.126538546509, 101.5688259160097, 202.9345140989426, 406.2753036640388, 609.4129554960582, 812.5506073280776, 1218.8259109921155, 1625.101214656157, 2081.270417526932, 101.5688259160097, 202.9345140989426, 406.2753036640388, 609.4129554960582, 812.5506073280776, 1218.8259109921155, 1625.1012146561534, 2031.3765183201922, 104.06352087634639, 124.09296340927261, 124.09296347508644, 186.13944521262962, 186.1394452658016, 186.13944524807766, 186.13944523921563, 188.22115386065198, -83, 95.18218623957682, 167.63131894929518, 169.0373094469682, 253.55596417045226, 253.55596424288225, 253.55596421873895, 253.5559642066673, 256.39163203638117, 95.18218623957705, 190.17400803053874, 389.8003629958962, 584.7005444938445, 737.6148732315891, 745.7528359374676, 745.7528359019626, 754.093035401121, 95.18218623957705, 190.17400803053874, 389.8003629958962, 584.7005444938445, 737.6148732315891, 745.7528359374676, 745.7528359019626, 754.093035401121, 95.18218623957705, 190.17400803053874, 380.72874495830774, 571.0931174374614, 761.4574899166155, 1081.4145591222627, 1090.915233836442, 1104.8971154697224, 95.18218623957705, 190.17400803053874, 380.7287449583082, 571.0931174374618, 761.4574899166164, 1142.1862348749237, 1522.9149798332328, 1949.0018149794832, 95.18218623957705, 190.17400803053874, 380.7287449583082, 571.0931174374618, 761.4574899166164, 1142.1862348749228, 1522.914979833231, 1903.6437247915383, 97.45009074897393, 124.29213923332188, 124.29213929924133, 186.43820894886198, 186.4382090021193, 186.4382089843669, 186.43820897549065, 188.52325885028026, -84, 88.79554656314417, 167.90299692818854, 169.30818856781886, 253.96228285172825, 253.9622829242743, 253.96228290009233, 253.9622828880013, 256.8024948222756, 88.79554656314428, 177.4135019621349, 363.34664248640684, 545.01996372961, 726.6932849728146, 746.9478908826245, 746.9478908470626, 755.301455359634, 88.79554656314428, 177.4135019621349, 363.34664248640684, 545.01996372961, 726.6932849728146, 746.9478908826245, 746.9478908470626, 755.301455359634, 88.79554656314428, 177.4135019621349, 355.1821862525767, 532.773279378865, 710.3643725051534, 1083.1719527734144, 1092.6672293768477, 1106.6676923929358, 88.79554656314428, 177.4135019621349, 355.18218625257714, 532.7732793788659, 710.3643725051543, 1065.546558757731, 1420.7287450103104, 1816.7332124320346, 88.79554656314428, 177.4135019621349, 355.18218625257714, 532.7732793788659, 710.3643725051543, 1065.546558757731, 1420.7287450103067, 1775.9109312628862, 90.8366606216016, 124.49131505737114, 124.49131512339623, 186.73697268509432, 186.73697273843698, 186.73697272065613, 186.73697271176565, 188.8253638399085, -85, 82.40890688671152, 168.1746749070819, 169.5790676886695, 254.36860153300424, 254.36860160566636, 254.3686015814457, 254.36860156933534, 257.21335760817004, 82.40890688671163, 164.65299589373103, 336.892921976917, 505.33938296537553, 673.785843953835, 748.1429458277815, 748.1429457921627, 756.5098753181471, 82.40890688671163, 164.65299589373103, 336.892921976917, 505.33938296537553, 673.785843953835, 748.1429458277815, 748.1429457921627, 756.5098753181471, 82.40890688671163, 164.65299589373103, 329.6356275468461, 494.4534413202691, 659.2712550936922, 1010.678765930752, 1094.4192249172531, 1108.438269316149, 82.40890688671163, 164.65299589373103, 329.63562754684654, 494.4534413202696, 659.2712550936931, 988.9068826405382, 1318.5425101873861, 1684.4646098845878, 82.40890688671163, 164.65299589373103, 329.63562754684654, 494.4534413202696, 659.2712550936931, 988.9068826405382, 1318.5425101873843, 1648.1781377342322, 84.22323049422914, 124.6904908814204, 124.69049094755113, 187.03573642132667, 187.03573647475469, 187.0357364569454, 187.03573644804067, 189.12746882953678, -86, 76.02226721027876, 155.06438107090003, 169.8499468095202, 254.77492021428023, 254.77492028705842, 254.77492026279907, 254.77492025066937, 257.6242203940645, 76.02226721027898, 151.89248982532717, 310.43920146742767, 465.65880220114104, 620.8784029348553, 749.3380007729385, 749.3380007372627, 757.7182952766601, 76.02226721027898, 151.89248982532717, 310.43920146742767, 465.65880220114104, 620.8784029348553, 749.3380007729385, 749.3380007372627, 757.7182952766601, 76.02226721027898, 151.89248982532717, 304.089068841115, 456.13360326167276, 608.178137682231, 931.317604402283, 1096.1712204576588, 1110.2088462393624, 76.02226721027898, 151.89248982532717, 304.08906884111593, 456.13360326167367, 608.1781376822319, 912.2672065233464, 1216.3562753644637, 1552.1960073371392, 76.02226721027898, 151.89248982532717, 304.08906884111593, 456.13360326167367, 608.1781376822319, 912.2672065233464, 1216.35627536446, 1520.4453442055783, 77.6098003668568, 124.88966670546966, 124.88966677170603, 187.334500157559, 187.33450021107237, 187.33450019323462, 187.3345001843157, 189.42957381916503, -87, 69.6356275338461, 141.8507476817001, 170.12082593037084, 255.18123889555622, 255.1812389684505, 255.18123894415243, 255.1812389320034, 258.0350831799589, 69.63562753384622, 139.13198375692332, 283.98548095793785, 425.97822143690655, 567.9709619158766, 750.5330557180954, 750.5330556823628, 758.9267152351731, 69.63562753384622, 139.13198375692332, 283.98548095793785, 425.97822143690655, 567.9709619158766, 750.5330557180954, 750.5330556823628, 758.9267152351731, 69.63562753384622, 139.13198375692332, 278.5425101353844, 417.8137652030764, 557.0850202707688, 851.956442873814, 1097.9232159980643, 1111.9794231625756, 69.63562753384622, 139.13198375692332, 278.5425101353849, 417.8137652030773, 557.0850202707697, 835.6275304061546, 1114.1700405415413, 1419.9274047896906, 69.63562753384622, 139.13198375692332, 278.5425101353849, 417.8137652030773, 557.0850202707697, 835.6275304061537, 1114.1700405415377, 1392.7125506769244, 70.99637023948435, 125.08884252951893, 125.08884259586092, 187.63326389379137, 187.63326394739005, 187.63326392952385, 187.6332639205907, 189.73167880879328, -88, 63.248987857413454, 128.6371142925002, 170.3917050512215, 255.5875575768322, 255.58755764984252, 255.5875576255058, 255.58755761333742, 258.44594596585335, 63.24898785741357, 126.37147768851946, 257.53176044844804, 386.29764067267206, 515.063520896897, 751.7281106632524, 751.7281106274629, 760.1351351936862, 63.24898785741357, 126.37147768851946, 257.53176044844804, 386.29764067267206, 515.063520896897, 751.7281106632524, 751.7281106274629, 760.1351351936862, 63.24898785741357, 126.37147768851946, 252.99595142965381, 379.4939271444805, 505.99190285930763, 772.595281345345, 1030.1270417937922, 1113.750000085789, 63.24898785741357, 126.37147768851946, 252.99595142965427, 379.49392714448095, 505.99190285930854, 758.9878542889619, 1011.9838057186171, 1287.658802242242, 63.24898785741357, 126.37147768851946, 252.99595142965427, 379.49392714448095, 505.99190285930854, 758.9878542889619, 1011.9838057186153, 1264.9797571482704, 64.3829401121119, 125.28801835356819, 125.28801842001582, 187.9320276300237, 187.93202768370776, 187.9320276658131, 187.93202765686573, 190.03378379842155, -89, 56.86234818098069, 115.42348090330006, 170.66258417207217, 255.9938762581082, 255.9938763312346, 255.99387630685916, 255.99387629467145, 258.85680875174774, 56.862348180980916, 113.6109716201156, 231.07803993895868, 346.61705990843757, 462.15607987791736, 726.842105299499, 752.923165572563, 761.3435551521992, 56.862348180980916, 113.6109716201156, 231.07803993895868, 346.61705990843757, 462.15607987791736, 726.842105299499, 752.923165572563, 761.3435551521992, 56.862348180980916, 113.6109716201156, 227.44939272392276, 341.17408908588413, 454.8987854478464, 693.234119816876, 924.3121597558329, 1115.5205770090022, 56.862348180980916, 113.6109716201156, 227.44939272392367, 341.17408908588504, 454.89878544784733, 682.3481781717692, 909.7975708956947, 1155.3901996947934, 56.862348180980916, 113.6109716201156, 227.44939272392367, 341.17408908588504, 454.89878544784733, 682.3481781717692, 909.797570895691, 1137.2469636196165, 57.76950998473956, 121.01921048391682, 125.48719424417072, 188.23079136625606, 188.23079142002544, 188.23079140210234, 188.23079139314075, 190.3358887880498, -90, 50.47570850454804, 102.20984751410015, 170.93346329292282, 256.40019493938416, 256.4001950126266, 256.40019498821255, 256.4001949760055, 259.2676715376422, 50.47570850454815, 100.85046555171175, 204.62431942946887, 306.9364791442031, 409.24863885893865, 664.2105263489993, 754.1182205176631, 762.5519751107123, 50.47570850454815, 100.85046555171175, 204.62431942946887, 306.9364791442031, 409.24863885893865, 664.2105263489993, 754.1182205176631, 762.5519751107123, 50.47570850454815, 100.85046555171175, 201.90283401819215, 302.8542510272882, 403.8056680363843, 613.8729582884071, 818.4972777178755, 1107.0175439150007, 50.47570850454815, 100.85046555171175, 201.9028340181926, 302.8542510272887, 403.8056680363852, 605.7085020545774, 807.6113360727722, 1023.1215971473466, 50.47570850454815, 100.85046555171175, 201.9028340181926, 302.8542510272887, 403.8056680363852, 605.7085020545774, 807.6113360727686, 1009.5141700909626, 51.156079857367104, 110.59105259283353, 125.68637006832562, 188.5295551024884, 188.52955515634312, 188.52955513839157, 188.52955512941577, 190.63799377767808, -91, 44.08906882811539, 88.9962141249, 171.20434241377347, 256.80651362066016, 256.8065136940187, 256.8065136695659, 256.8065136573395, 259.6785343235366, 44.0890688281155, 88.0899594833079, 178.17059891997906, 267.2558983799686, 356.341197839959, 601.5789473984996, 755.3132754627632, 763.7603950692253, 44.0890688281155, 88.0899594833079, 178.17059891997906, 267.2558983799686, 356.341197839959, 601.5789473984996, 755.3132754627632, 763.7603950692253, 44.0890688281155, 88.0899594833079, 176.35627531246155, 264.53441296869187, 352.7125506249231, 534.5117967599381, 712.6823956799162, 1002.6315789975015, 44.0890688281155, 88.0899594833079, 176.356275312462, 264.5344129686928, 352.712550624924, 529.0688259373856, 705.425101249848, 890.852994599898, 44.0890688281155, 88.0899594833079, 176.356275312462, 264.5344129686928, 352.712550624924, 529.0688259373846, 705.4251012498462, 881.7813765623087, 44.542649729994764, 100.16289470175013, 125.88554589248051, 188.82831883872075, 188.8283188926608, 188.82831887468083, 188.8283188656908, 190.94009876730632, -92, 37.70242915168262, 75.7825807357001, 171.47522153462415, 257.21283230193615, 257.21283237541076, 257.21283235091926, 257.21283233867354, 260.08939710943105, 37.70242915168285, 75.32945341490404, 151.7168784104897, 227.5753176157341, 303.4337568209794, 538.9473684479999, 718.5964912640002, 764.9688150277384, 37.70242915168285, 75.32945341490404, 151.7168784104897, 227.5753176157341, 303.4337568209794, 538.9473684479999, 718.5964912640002, 764.9688150277384, 37.70242915168285, 75.32945341490404, 150.8097166067305, 226.21457491009596, 301.6194332134619, 455.1506352314691, 606.8675136419588, 898.2456140800005, 37.70242915168285, 75.32945341490404, 150.8097166067314, 226.21457491009642, 301.6194332134628, 452.42914982019283, 603.2388664269256, 758.5843920524494, 37.70242915168285, 75.32945341490404, 150.8097166067314, 226.21457491009642, 301.6194332134628, 452.42914982019283, 603.238866426922, 754.0485830336547, 37.92921960262231, 89.73473681066685, 126.08472171663541, 189.12708257495308, 189.1270826289785, 189.12708261097006, 189.1270826019658, 191.2422037569346, -93, 31.31578947524997, 62.56894734650018, 158.7719298324996, 238.1578947487501, 257.6191510568028, 257.6191510322726, 257.61915102000756, 260.5002598953255, 31.315789475250085, 62.56894734650018, 125.26315790099989, 187.8947368514996, 250.52631580200068, 476.3157894974993, 635.0877193300003, 766.1772349862514, 31.315789475250085, 62.56894734650018, 125.26315790099989, 187.8947368514996, 250.52631580200068, 476.3157894974993, 635.0877193300003, 766.1772349862514, 31.315789475250085, 62.56894734650018, 125.26315790099989, 187.8947368514996, 250.52631580199977, 375.7894737030001, 501.05263160399954, 793.8596491625012, 31.315789475250085, 62.56894734650018, 125.26315790100034, 187.8947368515005, 250.52631580200068, 375.7894737030001, 501.05263160400136, 626.3157895050008, 31.315789475250085, 62.56894734650018, 125.26315790100034, 187.8947368515005, 250.52631580200068, 375.7894737030001, 501.05263160399954, 626.3157895050008, 31.31578947524997, 79.30657891958356, 126.2838975407903, 189.42584631118544, 189.4258463652962, 189.42584634725932, 189.42584633824083, 191.54430874656285, -94, 27.293233084071403, 54.53187968014265, 137.89473684899963, 206.84210527349978, 258.0254697381949, 258.025469713626, 258.02546970134154, 260.9111226812199, 27.293233084071403, 54.53187968014265, 109.17293233628561, 163.75939850442865, 218.34586467257122, 413.68421054699957, 551.5789473960003, 689.473684245002, 27.293233084071403, 54.53187968014265, 109.17293233628561, 163.75939850442865, 218.34586467257122, 413.68421054699957, 551.5789473960003, 689.473684245002, 27.293233084071403, 54.53187968014265, 109.17293233628561, 163.75939850442865, 218.34586467257122, 327.5187970088573, 436.69172934514245, 689.473684245002, 27.293233084071403, 54.53187968014265, 109.17293233628561, 163.75939850442865, 218.34586467257122, 327.5187970088573, 436.69172934514245, 545.8646616814276, 27.293233084071403, 54.53187968014265, 109.17293233628561, 163.75939850442865, 218.34586467257122, 327.5187970088573, 436.69172934514245, 545.8646616814276, 27.293233084071403, 68.87842102850016, 126.4830733649452, 189.7246100474178, 189.72461010161388, 189.72461008354855, 189.72461007451582, 191.84641373619112, -95, 23.270676692892835, 46.49481201378558, 117.01754386549965, 175.52631579824993, 234.0350877310011, 258.4317883949794, 258.43178838267556, 261.32198546711436, 23.270676692892835, 46.49481201378558, 93.08270677157134, 139.62406015735723, 186.16541354314268, 351.05263159649985, 468.0701754620004, 585.0877193275028, 23.270676692892835, 46.49481201378558, 93.08270677157134, 139.62406015735723, 186.16541354314268, 351.05263159649985, 468.0701754620004, 585.0877193275028, 23.270676692892835, 46.49481201378558, 93.08270677157134, 139.62406015735723, 186.16541354314268, 279.24812031471447, 372.33082708628535, 585.087719327501, 23.270676692892835, 46.49481201378558, 93.08270677157134, 139.62406015735723, 186.16541354314268, 279.24812031471447, 372.33082708628535, 465.41353385785624, 23.270676692892835, 46.49481201378558, 93.08270677157134, 139.62406015735723, 186.16541354314268, 279.24812031471447, 372.33082708628535, 465.41353385785624, 23.270676692892835, 58.45026313741687, 117.0175438655001, 175.52631579825038, 190.02337383793156, 190.0233738198378, 190.02337381079084, 192.14851872581937, -96, 19.248120301714266, 38.45774434742839, 96.14035088199967, 144.21052632300007, 192.2807017640007, 258.83810707633273, 258.8381070640096, 261.7328482530088, 19.248120301714266, 38.45774434742839, 76.99248120685706, 115.48872181028582, 153.98496241371413, 288.4210526459992, 384.5614035279996, 480.70175441000174, 19.248120301714266, 38.45774434742839, 76.99248120685706, 115.48872181028582, 153.98496241371413, 288.4210526459992, 384.5614035279996, 480.70175441000174, 19.248120301714266, 38.45774434742839, 76.99248120685706, 115.48872181028582, 153.98496241371413, 230.97744362057165, 307.96992482742826, 480.70175441000174, 19.248120301714266, 38.45774434742839, 76.99248120685706, 115.48872181028582, 153.98496241371413, 230.97744362057165, 307.96992482742826, 384.96240603428487, 19.248120301714266, 38.45774434742839, 76.99248120685706, 115.48872181028582, 153.98496241371413, 230.97744362057165, 307.96992482742826, 384.96240603428487, 19.248120301714266, 48.02210524633347, 96.1403508819999, 144.21052632300007, 190.32213757424927, 190.32213755612702, 190.32213754706586, 192.45062371544765, -97, 15.225563910535698, 30.4206766810712, 75.26315789849968, 112.89473684775021, 150.52631579700073, 225.7894736954995, 259.2444257453436, 262.14371103890323, 15.225563910535698, 30.4206766810712, 60.90225564214279, 91.35338346321441, 121.80451128428558, 225.7894736954995, 301.05263159399965, 376.3157894925025, 15.225563910535698, 30.4206766810712, 60.90225564214279, 91.35338346321441, 121.80451128428558, 225.7894736954995, 301.05263159399965, 376.3157894925025, 15.225563910535698, 30.4206766810712, 60.90225564214279, 91.35338346321441, 121.80451128428558, 182.70676692642883, 243.60902256857116, 376.3157894925007, 15.225563910535698, 30.4206766810712, 60.90225564214279, 91.35338346321441, 121.80451128428558, 182.70676692642883, 243.60902256857116, 304.5112782107135, 15.225563910535698, 30.4206766810712, 60.90225564214279, 91.35338346321441, 121.80451128428558, 182.70676692642883, 243.60902256857116, 304.5112782107135, 15.225563910535698, 37.59394735525018, 75.26315789849991, 112.89473684775021, 150.52631579700028, 190.62090129241628, 190.62090128334088, 192.7527287050759, -98, 11.20300751935713, 22.383609014714125, 54.385964914999704, 81.57894737250035, 108.77192983000077, 163.1578947449998, 217.54385965999882, 262.55457382479767, 11.20300751935713, 22.383609014714125, 44.81203007742852, 67.218045116143, 89.62406015485703, 163.1578947449998, 217.54385965999973, 271.9298245750033, 11.20300751935713, 22.383609014714125, 44.81203007742852, 67.218045116143, 89.62406015485703, 163.1578947449998, 217.54385965999973, 271.9298245750033, 11.20300751935713, 22.383609014714125, 44.81203007742852, 67.218045116143, 89.62406015485703, 134.436090232286, 179.24812030971407, 271.9298245750015, 11.20300751935713, 22.383609014714125, 44.81203007742852, 67.218045116143, 89.62406015485703, 134.436090232286, 179.24812030971407, 224.06015038714213, 11.20300751935713, 22.383609014714125, 44.81203007742852, 67.218045116143, 89.62406015485703, 134.436090232286, 179.24812030971407, 224.06015038714213, 11.20300751935713, 27.16578946416689, 54.38596491499993, 81.57894737250035, 108.77192983000032, 163.1578947449998, 190.9196650196159, 193.05483369470414, -99, 7.180451128178561, 14.346541348356936, 33.50877193149972, 50.26315789725004, 67.01754386300036, 100.52631579450008, 134.0350877259989, 167.54385965750043, 7.180451128178561, 14.346541348356936, 28.721804512714243, 43.08270676907159, 57.443609025428486, 100.52631579449917, 134.0350877260007, 167.54385965750225, 7.180451128178561, 14.346541348356936, 28.721804512714243, 43.08270676907159, 57.443609025428486, 100.52631579449917, 134.0350877260007, 167.54385965750225, 7.180451128178561, 14.346541348356936, 28.721804512714243, 43.08270676907159, 57.443609025428486, 86.16541353814318, 114.88721805085697, 167.54385965750043, 7.180451128178561, 14.346541348356936, 28.721804512714243, 43.08270676907159, 57.443609025428486, 86.16541353814318, 114.88721805085697, 143.60902256357076, 7.180451128178561, 14.346541348356936, 28.721804512714243, 43.08270676907159, 57.443609025428486, 86.16541353814318, 114.88721805085697, 143.60902256357076, 7.180451128178561, 16.73763157308349, 33.50877193149972, 50.26315789725004, 67.01754386300036, 100.52631579450008, 134.0350877260007, 167.54385965750225, -100, 3.1578947369999923, 6.309473681999862, 12.63157894799997, 18.94736842200018, 25.26315789600085, 37.89473684400036, 50.52631579199988, 63.15789474000121, 3.1578947369999923, 6.309473681999862, 12.63157894799997, 18.94736842200018, 25.26315789599994, 37.89473684399945, 50.52631579199988, 63.15789474000303, 3.1578947369999923, 6.309473681999862, 12.63157894799997, 18.94736842200018, 25.26315789599994, 37.89473684399945, 50.52631579199988, 63.15789474000303, 3.1578947369999923, 6.309473681999862, 12.63157894799997, 18.94736842200018, 25.26315789599994, 37.89473684400036, 50.52631579199988, 63.15789474000121, 3.1578947369999923, 6.309473681999862, 12.63157894799997, 18.94736842200018, 25.26315789599994, 37.89473684400036, 50.52631579199988, 63.15789473999939, 3.1578947369999923, 6.309473681999862, 12.63157894799997, 18.94736842200018, 25.26315789599994, 37.89473684400036, 50.52631579199988, 63.15789473999939, 3.1578947369999923, 6.309473682000089, 12.63157894799997, 18.94736842200018, 25.26315789600085, 37.89473684400036, 50.52631579199988, 63.15789474000121, diff --git a/source/pev_charge_profile_factory/generate_charge_profiles/archives/output/dcfc_code.txt b/source/pev_charge_profile_factory/generate_charge_profiles/archives/output/dcfc_code.txt deleted file mode 100644 index e1586dd..0000000 --- a/source/pev_charge_profile_factory/generate_charge_profiles/archives/output/dcfc_code.txt +++ /dev/null @@ -1,551 +0,0 @@ -else if(SE_enum == xfc_150 && EV_enum == ld_50kWh) -{ - P2_vs_soc_segments.push_back({-0.1, 3.0, 5.617623090661083, 124.64587923089042}); - P2_vs_soc_segments.push_back({3.0, 10.0, 1.4433547003052354, 137.16868440195796}); - P2_vs_soc_segments.push_back({10.0, 71.46359084873505, 0.28079783503165895, 148.79425305469374}); - P2_vs_soc_segments.push_back({71.46359084873505, 93.0, -6.38663967643269, 625.2732793834901}); - P2_vs_soc_segments.push_back({93.0, 100.1, -4.02255639117857, 405.413533854857}); - zero_slope_threashold_P2_vs_soc = 0.2527180515284931; - // min_non_zero_slope = 0.28079783503165895 -} -else if(SE_enum == xfc_150 && EV_enum == ld_100kWh) -{ - P2_vs_soc_segments.push_back({-0.1, 3.0, 5.019868538599169, 122.38229534071229}); - P2_vs_soc_segments.push_back({3.0, 4.0, 3.0600411622216184, 128.26177746984493}); - P2_vs_soc_segments.push_back({4.0, 10.0, 1.216147395224588, 135.63735253783307}); - P2_vs_soc_segments.push_back({10.0, 85.0076631195378, 0.2716779788933731, 145.0820467011452}); - P2_vs_soc_segments.push_back({85.0076631195378, 93.0, -13.213633389200002, 1291.4368525421003}); - P2_vs_soc_segments.push_back({93.0, 100.1, -8.037067666357142, 810.016240317714}); - zero_slope_threashold_P2_vs_soc = 0.2445101810040358; - // min_non_zero_slope = 0.2716779788933731 -} -else if(SE_enum == xfc_150 && EV_enum == md_200kWh) -{ - P2_vs_soc_segments.push_back({-0.1, 4.0, 4.4642626723420005, 124.99935482557609}); - P2_vs_soc_segments.push_back({4.0, 10.0, 1.0677880183209867, 138.58525344166014}); - P2_vs_soc_segments.push_back({10.0, 92.38650810537449, 0.27087912085065996, 146.55434241636343}); - P2_vs_soc_segments.push_back({92.38650810537449, 100.1, -20.877192983499974, 2100.350877297997}); - zero_slope_threashold_P2_vs_soc = 0.24379120876559396; - // min_non_zero_slope = 0.27087912085065996 -} -else if(SE_enum == xfc_150 && EV_enum == hd_300kWh) -{ - P2_vs_soc_segments.push_back({-0.1, 4.0, 6.696394008513, 187.49903223836412}); - P2_vs_soc_segments.push_back({4.0, 10.0, 1.6016820274814798, 207.87788016249021}); - P2_vs_soc_segments.push_back({10.0, 92.38650810537449, 0.4063186812759899, 219.8315136245451}); - P2_vs_soc_segments.push_back({92.38650810537449, 100.1, -31.315789475249957, 3150.526315946996}); - zero_slope_threashold_P2_vs_soc = 0.3656868131483909; - // min_non_zero_slope = 0.4063186812759899 -} -else if(SE_enum == xfc_150 && EV_enum == hd_400kWh) -{ - P2_vs_soc_segments.push_back({-0.1, 4.0, 6.696394010425876, 187.4990322919245}); - P2_vs_soc_segments.push_back({4.0, 10.0, 1.6016820279390087, 207.87788022187195}); - P2_vs_soc_segments.push_back({10.0, 94.42134030035675, 0.4063186813920575, 219.83151368734147}); - P2_vs_soc_segments.push_back({94.42134030035675, 100.1, -41.75438596700008, 4200.701754596009}); - zero_slope_threashold_P2_vs_soc = 0.3656868132528518; - // min_non_zero_slope = 0.4063186813920575 -} -else if(SE_enum == xfc_150 && EV_enum == hd_600kWh) -{ - P2_vs_soc_segments.push_back({-0.1, 4.0, 6.696394009788252, 187.49903227407106}); - P2_vs_soc_segments.push_back({4.0, 10.0, 1.601682027786505, 207.87788020207802}); - P2_vs_soc_segments.push_back({10.0, 96.46928826437762, 0.40631868135336796, 219.83151366640942}); - P2_vs_soc_segments.push_back({96.46928826437762, 100.1, -62.63157895049987, 6301.052631893987}); - zero_slope_threashold_P2_vs_soc = 0.36568681321803115; - // min_non_zero_slope = 0.40631868135336796 -} -else if(SE_enum == xfc_150 && EV_enum == hd_800kWh) -{ - P2_vs_soc_segments.push_back({-0.1, 4.0, 6.696394009469443, 187.49903226514434}); - P2_vs_soc_segments.push_back({4.0, 10.0, 1.6016820277102406, 207.87788019218115}); - P2_vs_soc_segments.push_back({10.0, 97.49822035038136, 0.4063186813340238, 219.83151365594333}); - P2_vs_soc_segments.push_back({97.49822035038136, 100.1, -83.50877193399954, 8401.403509191954}); - zero_slope_threashold_P2_vs_soc = 0.36568681320062146; - // min_non_zero_slope = 0.4063186813340238 -} -else if(SE_enum == xfc_150 && EV_enum == hd_1000kWh) -{ - P2_vs_soc_segments.push_back({-0.1, 4.0, 6.771283784305358, 189.59594596054998}); - P2_vs_soc_segments.push_back({4.0, 10.0, 1.6195945947193486, 210.20270271889402}); - P2_vs_soc_segments.push_back({10.0, 98.08946120751611, 0.41086278589443354, 222.29002080714318}); - P2_vs_soc_segments.push_back({98.08946120751611, 100.1, -104.3859649175005, 10501.75438649005}); - zero_slope_threashold_P2_vs_soc = 0.3697765073049902; - // min_non_zero_slope = 0.41086278589443354 -} -else if(SE_enum == xfc_350 && EV_enum == ld_50kWh) -{ - P2_vs_soc_segments.push_back({-0.1, 3.0, 6.2649122810149995, 141.74736842814}); - P2_vs_soc_segments.push_back({3.0, 10.0, 1.6368421053449982, 155.63157895515002}); - P2_vs_soc_segments.push_back({10.0, 68.08256207172734, 0.31772853187184213, 168.82271468988156}); - P2_vs_soc_segments.push_back({68.08256207172734, 93.0, -6.386639676432694, 625.2732793834906}); - P2_vs_soc_segments.push_back({93.0, 100.1, -4.02255639117857, 405.413533854857}); - zero_slope_threashold_P2_vs_soc = 0.28595567868465793; - // min_non_zero_slope = 0.31772853187184213 -} -else if(SE_enum == xfc_350 && EV_enum == ld_100kWh) -{ - P2_vs_soc_segments.push_back({-0.1, 3.0, 12.51729473245665, 283.21124200604}); - P2_vs_soc_segments.push_back({3.0, 10.0, 3.2704105251700035, 310.95189462789995}); - P2_vs_soc_segments.push_back({10.0, 68.08256207172734, 0.6348216064257896, 337.3077838153421}); - P2_vs_soc_segments.push_back({68.08256207172734, 93.0, -12.76050606840385, 1249.2960117080581}); - P2_vs_soc_segments.push_back({93.0, 100.1, -8.037067666357142, 810.016240317714}); - zero_slope_threashold_P2_vs_soc = 0.5713394457832106; - // min_non_zero_slope = 0.6348216064257896 -} -else if(SE_enum == xfc_350 && EV_enum == md_200kWh) -{ - P2_vs_soc_segments.push_back({-0.1, 3.0, 16.525567949819884, 351.65195242759415}); - P2_vs_soc_segments.push_back({3.0, 4.0, 4.548794221567978, 387.58227361234987}); - P2_vs_soc_segments.push_back({4.0, 10.0, 4.047197486223866, 389.58866055372636}); - P2_vs_soc_segments.push_back({10.0, 79.37589851129248, 0.8015852284950763, 422.04478313101424}); - P2_vs_soc_segments.push_back({79.37589851129248, 93.0, -26.453720509489646, 2585.459165283537}); - P2_vs_soc_segments.push_back({93.0, 100.1, -16.09022556471428, 1621.654135419428}); - zero_slope_threashold_P2_vs_soc = 0.7214267056455687; - // min_non_zero_slope = 0.8015852284950763 -} -else if(SE_enum == xfc_350 && EV_enum == hd_300kWh) -{ - P2_vs_soc_segments.push_back({-0.1, 3.0, 24.78835192472982, 527.4779286413913}); - P2_vs_soc_segments.push_back({3.0, 4.0, 6.823191332351967, 581.3734104185248}); - P2_vs_soc_segments.push_back({4.0, 10.0, 6.070796229335799, 584.3829908305895}); - P2_vs_soc_segments.push_back({10.0, 79.37589851129248, 1.2023778427426144, 633.0671746965213}); - P2_vs_soc_segments.push_back({79.37589851129248, 93.0, -39.68058076423447, 3878.1887479253055}); - P2_vs_soc_segments.push_back({93.0, 100.1, -24.13533834707142, 2432.481203129142}); - zero_slope_threashold_P2_vs_soc = 1.082140058468353; - // min_non_zero_slope = 1.2023778427426144 -} -else if(SE_enum == xfc_350 && EV_enum == hd_400kWh) -{ - P2_vs_soc_segments.push_back({-0.1, 3.0, 22.9111589508695, 536.3200340480914}); - P2_vs_soc_segments.push_back({3.0, 4.0, 11.56755223272807, 570.3508542025157}); - P2_vs_soc_segments.push_back({4.0, 10.0, 5.569543098642392, 594.3428907388584}); - P2_vs_soc_segments.push_back({10.0, 83.77597648720116, 1.1996787877576258, 638.0415338477061}); - P2_vs_soc_segments.push_back({83.77597648720116, 93.0, -52.90744101897933, 5170.918330567078}); - P2_vs_soc_segments.push_back({93.0, 100.1, -32.18045112942856, 3243.308270838856}); - zero_slope_threashold_P2_vs_soc = 1.0797109089818633; - // min_non_zero_slope = 1.1996787877576258 -} -else if(SE_enum == xfc_350 && EV_enum == hd_600kWh) -{ - P2_vs_soc_segments.push_back({-0.1, 4.0, 19.695276499377215, 551.467741982562}); - P2_vs_soc_segments.push_back({4.0, 10.0, 4.710829493489699, 611.405530006112}); - P2_vs_soc_segments.push_back({10.0, 88.59137653488752, 1.1950549451569656, 646.5632754894394}); - P2_vs_soc_segments.push_back({88.59137653488752, 100.1, -62.63157895050001, 6301.052631894}); - zero_slope_threashold_P2_vs_soc = 1.075549450641269; - // min_non_zero_slope = 1.1950549451569656 -} -else if(SE_enum == xfc_350 && EV_enum == hd_800kWh) -{ - P2_vs_soc_segments.push_back({-0.1, 4.0, 19.695276498439537, 551.4677419563069}); - P2_vs_soc_segments.push_back({4.0, 10.0, 4.710829493265419, 611.4055299770034}); - P2_vs_soc_segments.push_back({10.0, 91.55241881576407, 1.1950549451000696, 646.5632754586568}); - P2_vs_soc_segments.push_back({91.55241881576407, 100.1, -83.50877193400005, 8401.403509192005}); - zero_slope_threashold_P2_vs_soc = 1.0755494505900627; - // min_non_zero_slope = 1.1950549451000696 -} -else if(SE_enum == xfc_350 && EV_enum == hd_1000kWh) -{ - P2_vs_soc_segments.push_back({-0.1, 4.0, 19.915540542074574, 557.6351351780881}); - P2_vs_soc_segments.push_back({4.0, 10.0, 4.763513513880435, 618.2432432908647}); - P2_vs_soc_segments.push_back({10.0, 93.26215801350378, 1.20841995851304, 653.7941788445387}); - P2_vs_soc_segments.push_back({93.26215801350378, 100.1, -104.38596491750005, 10501.754386490007}); - zero_slope_threashold_P2_vs_soc = 1.087577962661736; - // min_non_zero_slope = 1.20841995851304 -} -else if(SE_enum == xfc_500kW && EV_enum == ld_50kWh) -{ - P2_vs_soc_segments.push_back({-0.1, 3.0, 6.2649122810149995, 141.74736842814}); - P2_vs_soc_segments.push_back({3.0, 10.0, 1.6368421053449982, 155.63157895515002}); - P2_vs_soc_segments.push_back({10.0, 68.08256207172734, 0.31772853187184213, 168.82271468988156}); - P2_vs_soc_segments.push_back({68.08256207172734, 93.0, -6.386639676432694, 625.2732793834906}); - P2_vs_soc_segments.push_back({93.0, 100.1, -4.02255639117857, 405.413533854857}); - zero_slope_threashold_P2_vs_soc = 0.28595567868465793; - // min_non_zero_slope = 0.31772853187184213 -} -else if(SE_enum == xfc_500kW && EV_enum == ld_100kWh) -{ - P2_vs_soc_segments.push_back({-0.1, 3.0, 12.51729473245665, 283.21124200604}); - P2_vs_soc_segments.push_back({3.0, 10.0, 3.2704105251700035, 310.95189462789995}); - P2_vs_soc_segments.push_back({10.0, 68.08256207172734, 0.6348216064257896, 337.3077838153421}); - P2_vs_soc_segments.push_back({68.08256207172734, 93.0, -12.76050606840385, 1249.2960117080581}); - P2_vs_soc_segments.push_back({93.0, 100.1, -8.037067666357142, 810.016240317714}); - zero_slope_threashold_P2_vs_soc = 0.5713394457832106; - // min_non_zero_slope = 0.6348216064257896 -} -else if(SE_enum == xfc_500kW && EV_enum == md_200kWh) -{ - P2_vs_soc_segments.push_back({-0.1, 3.0, 16.525567949819884, 351.65195242759415}); - P2_vs_soc_segments.push_back({3.0, 4.0, 4.548794221567978, 387.58227361234987}); - P2_vs_soc_segments.push_back({4.0, 10.0, 4.047197486223866, 389.58866055372636}); - P2_vs_soc_segments.push_back({10.0, 79.37589851129248, 0.8015852284950763, 422.04478313101424}); - P2_vs_soc_segments.push_back({79.37589851129248, 93.0, -26.453720509489646, 2585.459165283537}); - P2_vs_soc_segments.push_back({93.0, 100.1, -16.09022556471428, 1621.654135419428}); - zero_slope_threashold_P2_vs_soc = 0.7214267056455687; - // min_non_zero_slope = 0.8015852284950763 -} -else if(SE_enum == xfc_500kW && EV_enum == hd_300kWh) -{ - P2_vs_soc_segments.push_back({-0.1, 3.0, 24.78835192472982, 527.4779286413913}); - P2_vs_soc_segments.push_back({3.0, 4.0, 6.823191332351967, 581.3734104185248}); - P2_vs_soc_segments.push_back({4.0, 10.0, 6.070796229335799, 584.3829908305895}); - P2_vs_soc_segments.push_back({10.0, 79.37589851129248, 1.2023778427426144, 633.0671746965213}); - P2_vs_soc_segments.push_back({79.37589851129248, 93.0, -39.68058076423447, 3878.1887479253055}); - P2_vs_soc_segments.push_back({93.0, 100.1, -24.13533834707142, 2432.481203129142}); - zero_slope_threashold_P2_vs_soc = 1.082140058468353; - // min_non_zero_slope = 1.2023778427426144 -} -else if(SE_enum == xfc_500kW && EV_enum == hd_400kWh) -{ - P2_vs_soc_segments.push_back({-0.1, 3.0, 22.9111589508695, 536.3200340480914}); - P2_vs_soc_segments.push_back({3.0, 4.0, 11.56755223272807, 570.3508542025157}); - P2_vs_soc_segments.push_back({4.0, 10.0, 5.569543098642392, 594.3428907388584}); - P2_vs_soc_segments.push_back({10.0, 83.77597648720116, 1.1996787877576258, 638.0415338477061}); - P2_vs_soc_segments.push_back({83.77597648720116, 93.0, -52.90744101897933, 5170.918330567078}); - P2_vs_soc_segments.push_back({93.0, 100.1, -32.18045112942856, 3243.308270838856}); - zero_slope_threashold_P2_vs_soc = 1.0797109089818633; - // min_non_zero_slope = 1.1996787877576258 -} -else if(SE_enum == xfc_500kW && EV_enum == hd_600kWh) -{ - P2_vs_soc_segments.push_back({-0.1, 4.0, 19.695276499377215, 551.467741982562}); - P2_vs_soc_segments.push_back({4.0, 10.0, 4.710829493489699, 611.405530006112}); - P2_vs_soc_segments.push_back({10.0, 88.59137653488752, 1.1950549451569656, 646.5632754894394}); - P2_vs_soc_segments.push_back({88.59137653488752, 100.1, -62.63157895050001, 6301.052631894}); - zero_slope_threashold_P2_vs_soc = 1.075549450641269; - // min_non_zero_slope = 1.1950549451569656 -} -else if(SE_enum == xfc_500kW && EV_enum == hd_800kWh) -{ - P2_vs_soc_segments.push_back({-0.1, 4.0, 19.695276498439537, 551.4677419563069}); - P2_vs_soc_segments.push_back({4.0, 10.0, 4.710829493265419, 611.4055299770034}); - P2_vs_soc_segments.push_back({10.0, 91.55241881576407, 1.1950549451000696, 646.5632754586568}); - P2_vs_soc_segments.push_back({91.55241881576407, 100.1, -83.50877193400005, 8401.403509192005}); - zero_slope_threashold_P2_vs_soc = 1.0755494505900627; - // min_non_zero_slope = 1.1950549451000696 -} -else if(SE_enum == xfc_500kW && EV_enum == hd_1000kWh) -{ - P2_vs_soc_segments.push_back({-0.1, 4.0, 19.915540542074574, 557.6351351780881}); - P2_vs_soc_segments.push_back({4.0, 10.0, 4.763513513880435, 618.2432432908647}); - P2_vs_soc_segments.push_back({10.0, 93.26215801350378, 1.20841995851304, 653.7941788445387}); - P2_vs_soc_segments.push_back({93.26215801350378, 100.1, -104.38596491750005, 10501.754386490007}); - zero_slope_threashold_P2_vs_soc = 1.087577962661736; - // min_non_zero_slope = 1.20841995851304 -} -else if(SE_enum == xfc_1000kW && EV_enum == ld_50kWh) -{ - P2_vs_soc_segments.push_back({-0.1, 3.0, 6.2649122810149995, 141.74736842814}); - P2_vs_soc_segments.push_back({3.0, 10.0, 1.6368421053449982, 155.63157895515002}); - P2_vs_soc_segments.push_back({10.0, 68.08256207172734, 0.31772853187184213, 168.82271468988156}); - P2_vs_soc_segments.push_back({68.08256207172734, 93.0, -6.386639676432694, 625.2732793834906}); - P2_vs_soc_segments.push_back({93.0, 100.1, -4.02255639117857, 405.413533854857}); - zero_slope_threashold_P2_vs_soc = 0.28595567868465793; - // min_non_zero_slope = 0.31772853187184213 -} -else if(SE_enum == xfc_1000kW && EV_enum == ld_100kWh) -{ - P2_vs_soc_segments.push_back({-0.1, 3.0, 12.51729473245665, 283.21124200604}); - P2_vs_soc_segments.push_back({3.0, 10.0, 3.2704105251700035, 310.95189462789995}); - P2_vs_soc_segments.push_back({10.0, 68.08256207172734, 0.6348216064257896, 337.3077838153421}); - P2_vs_soc_segments.push_back({68.08256207172734, 93.0, -12.76050606840385, 1249.2960117080581}); - P2_vs_soc_segments.push_back({93.0, 100.1, -8.037067666357142, 810.016240317714}); - zero_slope_threashold_P2_vs_soc = 0.5713394457832106; - // min_non_zero_slope = 0.6348216064257896 -} -else if(SE_enum == xfc_1000kW && EV_enum == md_200kWh) -{ - P2_vs_soc_segments.push_back({-0.1, 3.0, 24.143511712364646, 542.7849693228944}); - P2_vs_soc_segments.push_back({3.0, 10.0, 6.273517022205756, 596.3949533933711}); - P2_vs_soc_segments.push_back({10.0, 69.27462598528474, 1.2186444564972314, 646.9436790504564}); - P2_vs_soc_segments.push_back({69.27462598528474, 93.0, -25.54655870573077, 2501.0931175339615}); - P2_vs_soc_segments.push_back({93.0, 100.1, -16.09022556471428, 1621.654135419428}); - zero_slope_threashold_P2_vs_soc = 1.0967800108475083; - // min_non_zero_slope = 1.2186444564972314 -} -else if(SE_enum == xfc_1000kW && EV_enum == hd_300kWh) -{ - P2_vs_soc_segments.push_back({-0.1, 3.0, 36.21526756854697, 814.1774539843416}); - P2_vs_soc_segments.push_back({3.0, 10.0, 9.410275533308633, 894.5924300900566}); - P2_vs_soc_segments.push_back({10.0, 69.27462598528474, 1.8279666847458471, 970.4155185756845}); - P2_vs_soc_segments.push_back({69.27462598528474, 93.0, -38.319838058596154, 3751.639676300942}); - P2_vs_soc_segments.push_back({93.0, 100.1, -24.13533834707142, 2432.481203129142}); - zero_slope_threashold_P2_vs_soc = 1.6451700162712624; - // min_non_zero_slope = 1.8279666847458471 -} -else if(SE_enum == xfc_1000kW && EV_enum == hd_400kWh) -{ - P2_vs_soc_segments.push_back({-0.1, 3.0, 36.63632021013128, 777.7564016147287}); - P2_vs_soc_segments.push_back({3.0, 10.0, 9.064410874621704, 860.4721296212574}); - P2_vs_soc_segments.push_back({10.0, 76.96478054467563, 1.7725650232628638, 933.3905881348459}); - P2_vs_soc_segments.push_back({76.96478054467563, 93.0, -51.09311741146153, 5002.186235067922}); - P2_vs_soc_segments.push_back({93.0, 100.1, -32.18045112942856, 3243.308270838856}); - zero_slope_threashold_P2_vs_soc = 1.5953085209365774; - // min_non_zero_slope = 1.7725650232628638 -} -else if(SE_enum == xfc_1000kW && EV_enum == hd_600kWh) -{ - P2_vs_soc_segments.push_back({-0.1, 3.0, 33.308124827399, 787.0469348700666}); - P2_vs_soc_segments.push_back({3.0, 4.0, 17.609192570054, 834.1437316421017}); - P2_vs_soc_segments.push_back({4.0, 10.0, 8.090720110980348, 872.2176214783962}); - P2_vs_soc_segments.push_back({10.0, 84.08466589019737, 1.757393651151549, 935.5508860766843}); - P2_vs_soc_segments.push_back({84.08466589019737, 93.0, -79.36116152846905, 7756.377495850622}); - P2_vs_soc_segments.push_back({93.0, 100.1, -48.27067669414284, 4864.962406258284}); - zero_slope_threashold_P2_vs_soc = 1.5816542860363942; - // min_non_zero_slope = 1.757393651151549 -} -else if(SE_enum == xfc_1000kW && EV_enum == hd_800kWh) -{ - P2_vs_soc_segments.push_back({-0.1, 3.0, 29.553738860176978, 804.7311453623216}); - P2_vs_soc_segments.push_back({3.0, 4.0, 27.09791437555665, 812.0986188161826}); - P2_vs_soc_segments.push_back({4.0, 10.0, 7.088213844737678, 892.1374209394584}); - P2_vs_soc_segments.push_back({10.0, 87.35344251585242, 1.751995540405572, 945.4996039827796}); - P2_vs_soc_segments.push_back({87.35344251585242, 93.0, -105.81488203795847, 10341.836661134137}); - P2_vs_soc_segments.push_back({93.0, 100.1, -64.36090225885712, 6486.616541677712}); - zero_slope_threashold_P2_vs_soc = 1.576795986365015; - // min_non_zero_slope = 1.751995540405572 -} -else if(SE_enum == xfc_1000kW && EV_enum == hd_1000kWh) -{ - P2_vs_soc_segments.push_back({-0.1, 4.0, 29.18025000224768, 817.0470000629349}); - P2_vs_soc_segments.push_back({4.0, 10.0, 6.979500000537595, 905.8500000697752}); - P2_vs_soc_segments.push_back({10.0, 89.9032220733732, 1.7705769232133064, 957.939230843018}); - P2_vs_soc_segments.push_back({89.9032220733732, 100.1, -104.3859649175, 10501.754386490002}); - zero_slope_threashold_P2_vs_soc = 1.593519230891976; - // min_non_zero_slope = 1.7705769232133064 -} -else if(SE_enum == xfc_2000kW && EV_enum == ld_50kWh) -{ - P2_vs_soc_segments.push_back({-0.1, 3.0, 6.2649122810149995, 141.74736842814}); - P2_vs_soc_segments.push_back({3.0, 10.0, 1.6368421053449982, 155.63157895515002}); - P2_vs_soc_segments.push_back({10.0, 68.08256207172734, 0.31772853187184213, 168.82271468988156}); - P2_vs_soc_segments.push_back({68.08256207172734, 93.0, -6.386639676432694, 625.2732793834906}); - P2_vs_soc_segments.push_back({93.0, 100.1, -4.02255639117857, 405.413533854857}); - zero_slope_threashold_P2_vs_soc = 0.28595567868465793; - // min_non_zero_slope = 0.31772853187184213 -} -else if(SE_enum == xfc_2000kW && EV_enum == ld_100kWh) -{ - P2_vs_soc_segments.push_back({-0.1, 3.0, 12.51729473245665, 283.21124200604}); - P2_vs_soc_segments.push_back({3.0, 10.0, 3.2704105251700035, 310.95189462789995}); - P2_vs_soc_segments.push_back({10.0, 68.08256207172734, 0.6348216064257896, 337.3077838153421}); - P2_vs_soc_segments.push_back({68.08256207172734, 93.0, -12.76050606840385, 1249.2960117080581}); - P2_vs_soc_segments.push_back({93.0, 100.1, -8.037067666357142, 810.016240317714}); - zero_slope_threashold_P2_vs_soc = 0.5713394457832106; - // min_non_zero_slope = 0.6348216064257896 -} -else if(SE_enum == xfc_2000kW && EV_enum == md_200kWh) -{ - P2_vs_soc_segments.push_back({-0.1, 3.0, 25.059649124059966, 566.98947371256}); - P2_vs_soc_segments.push_back({3.0, 10.0, 6.547368421380007, 622.5263158205998}); - P2_vs_soc_segments.push_back({10.0, 68.08256207172734, 1.2709141274873685, 675.2908587595263}); - P2_vs_soc_segments.push_back({68.08256207172734, 93.0, -25.546558705730774, 2501.0931175339624}); - P2_vs_soc_segments.push_back({93.0, 100.1, -16.09022556471428, 1621.654135419428}); - zero_slope_threashold_P2_vs_soc = 1.1438227147386317; - // min_non_zero_slope = 1.2709141274873685 -} -else if(SE_enum == xfc_2000kW && EV_enum == hd_300kWh) -{ - P2_vs_soc_segments.push_back({-0.1, 3.0, 37.589473686089946, 850.4842105688399}); - P2_vs_soc_segments.push_back({3.0, 10.0, 9.82105263207001, 933.7894737308998}); - P2_vs_soc_segments.push_back({10.0, 68.08256207172734, 1.9063711912310528, 1012.9362881392893}); - P2_vs_soc_segments.push_back({68.08256207172734, 93.0, -38.31983805859616, 3751.6396763009434}); - P2_vs_soc_segments.push_back({93.0, 100.1, -24.13533834707142, 2432.481203129142}); - zero_slope_threashold_P2_vs_soc = 1.7157340721079475; - // min_non_zero_slope = 1.9063711912310528 -} -else if(SE_enum == xfc_2000kW && EV_enum == hd_400kWh) -{ - P2_vs_soc_segments.push_back({-0.1, 3.0, 50.11929824811993, 1133.97894742512}); - P2_vs_soc_segments.push_back({3.0, 10.0, 13.094736842760014, 1245.0526316411997}); - P2_vs_soc_segments.push_back({10.0, 68.08256207172734, 2.541828254974737, 1350.5817175190525}); - P2_vs_soc_segments.push_back({68.08256207172734, 93.0, -51.09311741146155, 5002.186235067925}); - P2_vs_soc_segments.push_back({93.0, 100.1, -32.18045112942856, 3243.308270838856}); - zero_slope_threashold_P2_vs_soc = 2.2876454294772635; - // min_non_zero_slope = 2.541828254974737 -} -else if(SE_enum == xfc_2000kW && EV_enum == hd_600kWh) -{ - P2_vs_soc_segments.push_back({-0.1, 3.0, 72.50049185041229, 1630.2031760919858}); - P2_vs_soc_segments.push_back({3.0, 10.0, 18.841462497128997, 1791.1802641518357}); - P2_vs_soc_segments.push_back({10.0, 69.24422604132654, 3.6599247078455552, 1942.9956420446701}); - P2_vs_soc_segments.push_back({69.24422604132654, 93.0, -76.63967611719227, 7503.279352601881}); - P2_vs_soc_segments.push_back({93.0, 100.1, -48.27067669414284, 4864.962406258284}); - zero_slope_threashold_P2_vs_soc = 3.2939322370609996; - // min_non_zero_slope = 3.6599247078455552 -} -else if(SE_enum == xfc_2000kW && EV_enum == hd_800kWh) -{ - P2_vs_soc_segments.push_back({-0.1, 3.0, 73.34259711028085, 1557.361070737169}); - P2_vs_soc_segments.push_back({3.0, 10.0, 18.149733172790338, 1722.9396625496406}); - P2_vs_soc_segments.push_back({10.0, 76.94140334485147, 3.5491213835502085, 1868.9457804420417}); - P2_vs_soc_segments.push_back({76.94140334485147, 93.0, -102.18623482292311, 10004.372470135851}); - P2_vs_soc_segments.push_back({93.0, 100.1, -64.36090225885712, 6486.616541677712}); - zero_slope_threashold_P2_vs_soc = 3.1942092451951876; - // min_non_zero_slope = 3.5491213835502085 -} -else if(SE_enum == xfc_2000kW && EV_enum == hd_1000kWh) -{ - P2_vs_soc_segments.push_back({-0.1, 3.0, 71.4577773537474, 1574.312573169373}); - P2_vs_soc_segments.push_back({3.0, 4.0, 25.464850039162634, 1712.2913551131273}); - P2_vs_soc_segments.push_back({4.0, 10.0, 17.45464452354518, 1744.332177175597}); - P2_vs_soc_segments.push_back({10.0, 81.30667131540051, 3.5634451397963116, 1883.2441710130859}); - P2_vs_soc_segments.push_back({81.30667131540051, 93.0, -132.2686025474482, 12927.295826417685}); - P2_vs_soc_segments.push_back({93.0, 100.1, -80.45112782357143, 8108.270677097142}); - zero_slope_threashold_P2_vs_soc = 3.2071006258166803; - // min_non_zero_slope = 3.5634451397963116 -} -else if(SE_enum == xfc_3000kW && EV_enum == ld_50kWh) -{ - P2_vs_soc_segments.push_back({-0.1, 3.0, 6.2649122810149995, 141.74736842814}); - P2_vs_soc_segments.push_back({3.0, 10.0, 1.6368421053449982, 155.63157895515002}); - P2_vs_soc_segments.push_back({10.0, 68.08256207172734, 0.31772853187184213, 168.82271468988156}); - P2_vs_soc_segments.push_back({68.08256207172734, 93.0, -6.386639676432694, 625.2732793834906}); - P2_vs_soc_segments.push_back({93.0, 100.1, -4.02255639117857, 405.413533854857}); - zero_slope_threashold_P2_vs_soc = 0.28595567868465793; - // min_non_zero_slope = 0.31772853187184213 -} -else if(SE_enum == xfc_3000kW && EV_enum == ld_100kWh) -{ - P2_vs_soc_segments.push_back({-0.1, 3.0, 12.51729473245665, 283.21124200604}); - P2_vs_soc_segments.push_back({3.0, 10.0, 3.2704105251700035, 310.95189462789995}); - P2_vs_soc_segments.push_back({10.0, 68.08256207172734, 0.6348216064257896, 337.3077838153421}); - P2_vs_soc_segments.push_back({68.08256207172734, 93.0, -12.76050606840385, 1249.2960117080581}); - P2_vs_soc_segments.push_back({93.0, 100.1, -8.037067666357142, 810.016240317714}); - zero_slope_threashold_P2_vs_soc = 0.5713394457832106; - // min_non_zero_slope = 0.6348216064257896 -} -else if(SE_enum == xfc_3000kW && EV_enum == md_200kWh) -{ - P2_vs_soc_segments.push_back({-0.1, 3.0, 25.059649124059966, 566.98947371256}); - P2_vs_soc_segments.push_back({3.0, 10.0, 6.547368421380007, 622.5263158205998}); - P2_vs_soc_segments.push_back({10.0, 68.08256207172734, 1.2709141274873685, 675.2908587595263}); - P2_vs_soc_segments.push_back({68.08256207172734, 93.0, -25.546558705730774, 2501.0931175339624}); - P2_vs_soc_segments.push_back({93.0, 100.1, -16.09022556471428, 1621.654135419428}); - zero_slope_threashold_P2_vs_soc = 1.1438227147386317; - // min_non_zero_slope = 1.2709141274873685 -} -else if(SE_enum == xfc_3000kW && EV_enum == hd_300kWh) -{ - P2_vs_soc_segments.push_back({-0.1, 3.0, 37.589473686089946, 850.4842105688399}); - P2_vs_soc_segments.push_back({3.0, 10.0, 9.82105263207001, 933.7894737308998}); - P2_vs_soc_segments.push_back({10.0, 68.08256207172734, 1.9063711912310528, 1012.9362881392893}); - P2_vs_soc_segments.push_back({68.08256207172734, 93.0, -38.31983805859616, 3751.6396763009434}); - P2_vs_soc_segments.push_back({93.0, 100.1, -24.13533834707142, 2432.481203129142}); - zero_slope_threashold_P2_vs_soc = 1.7157340721079475; - // min_non_zero_slope = 1.9063711912310528 -} -else if(SE_enum == xfc_3000kW && EV_enum == hd_400kWh) -{ - P2_vs_soc_segments.push_back({-0.1, 3.0, 50.11929824811993, 1133.97894742512}); - P2_vs_soc_segments.push_back({3.0, 10.0, 13.094736842760014, 1245.0526316411997}); - P2_vs_soc_segments.push_back({10.0, 68.08256207172734, 2.541828254974737, 1350.5817175190525}); - P2_vs_soc_segments.push_back({68.08256207172734, 93.0, -51.09311741146155, 5002.186235067925}); - P2_vs_soc_segments.push_back({93.0, 100.1, -32.18045112942856, 3243.308270838856}); - zero_slope_threashold_P2_vs_soc = 2.2876454294772635; - // min_non_zero_slope = 2.541828254974737 -} -else if(SE_enum == xfc_3000kW && EV_enum == hd_600kWh) -{ - P2_vs_soc_segments.push_back({-0.1, 3.0, 75.17894737217999, 1700.9684211376798}); - P2_vs_soc_segments.push_back({3.0, 10.0, 19.64210526413998, 1867.5789474618}); - P2_vs_soc_segments.push_back({10.0, 68.08256207172732, 3.8127423824621105, 2025.8725762785784}); - P2_vs_soc_segments.push_back({68.08256207172732, 93.0, -76.63967611719228, 7503.279352601882}); - P2_vs_soc_segments.push_back({93.0, 100.1, -48.27067669414284, 4864.962406258284}); - zero_slope_threashold_P2_vs_soc = 3.4314681442158994; - // min_non_zero_slope = 3.8127423824621105 -} -else if(SE_enum == xfc_3000kW && EV_enum == hd_800kWh) -{ - P2_vs_soc_segments.push_back({-0.1, 3.0, 100.23859649623999, 2267.9578948502403}); - P2_vs_soc_segments.push_back({3.0, 10.0, 26.18947368551997, 2490.1052632824003}); - P2_vs_soc_segments.push_back({10.0, 68.08256207172732, 5.083656509949474, 2701.1634350381055}); - P2_vs_soc_segments.push_back({68.08256207172732, 93.0, -102.18623482292308, 10004.372470135846}); - P2_vs_soc_segments.push_back({93.0, 100.1, -64.36090225885712, 6486.616541677712}); - zero_slope_threashold_P2_vs_soc = 4.575290858954527; - // min_non_zero_slope = 5.083656509949474 -} -else if(SE_enum == xfc_3000kW && EV_enum == hd_1000kWh) -{ - P2_vs_soc_segments.push_back({-0.1, 3.0, 108.59649123349998, 2393.6842106460003}); - P2_vs_soc_segments.push_back({3.0, 10.0, 27.744360903642843, 2636.2406016355717}); - P2_vs_soc_segments.push_back({10.0, 72.45155249679897, 5.401662050131588, 2859.667590170684}); - P2_vs_soc_segments.push_back({72.45155249679897, 93.0, -127.73279352865379, 12505.465587669803}); - P2_vs_soc_segments.push_back({93.0, 100.1, -80.45112782357143, 8108.270677097142}); - zero_slope_threashold_P2_vs_soc = 4.861495845118429; - // min_non_zero_slope = 5.401662050131588 -} -else if(SE_enum == dwc_100kW && EV_enum == ld_50kWh) -{ - P2_vs_soc_segments.push_back({-0.1, 3.0, 4.131391988613595, 87.91298812597856}); - P2_vs_soc_segments.push_back({3.0, 4.0, 1.137198555109764, 96.89556842649004}); - P2_vs_soc_segments.push_back({4.0, 10.0, 1.011799371844463, 97.39716515955125}); - P2_vs_soc_segments.push_back({10.0, 79.37589850730012, 0.20039630716987314, 105.51119580629715}); - P2_vs_soc_segments.push_back({79.37589850730012, 93.0, -6.613430127372406, 646.3647913208837}); - P2_vs_soc_segments.push_back({93.0, 100.1, -4.02255639117857, 405.413533854857}); - zero_slope_threashold_P2_vs_soc = 0.18035667645288583; - // min_non_zero_slope = 0.20039630716987314 -} -else if(SE_enum == dwc_100kW && EV_enum == ld_100kWh) -{ - P2_vs_soc_segments.push_back({-0.1, 4.0, 3.2825460808634848, 91.91129026417764}); - P2_vs_soc_segments.push_back({4.0, 10.0, 0.7851382483490266, 101.90092159423547}); - P2_vs_soc_segments.push_back({10.0, 88.5795762311163, 0.19917582404926223, 107.76054583723311}); - P2_vs_soc_segments.push_back({88.5795762311163, 100.1, -10.428157891083332, 1049.1252627903334}); - zero_slope_threashold_P2_vs_soc = 0.179258241644336; - // min_non_zero_slope = 0.19917582404926223 -} -else if(SE_enum == dwc_100kW && EV_enum == md_200kWh) -{ - P2_vs_soc_segments.push_back({-0.1, 4.0, 3.282546082604413, 91.9112903129236}); - P2_vs_soc_segments.push_back({4.0, 10.0, 0.7851382487654301, 101.90092164827954}); - P2_vs_soc_segments.push_back({10.0, 94.54144352797196, 0.19917582415489724, 107.76054589438486}); - P2_vs_soc_segments.push_back({94.54144352797196, 100.1, -20.877192983500027, 2100.3508772980026}); - zero_slope_threashold_P2_vs_soc = 0.17925824173940752; - // min_non_zero_slope = 0.19917582415489724 -} -else if(SE_enum == dwc_100kW && EV_enum == hd_300kWh) -{ - P2_vs_soc_segments.push_back({-0.1, 4.0, 4.923819123906619, 137.8669354693854}); - P2_vs_soc_segments.push_back({4.0, 10.0, 1.177707373148145, 152.8513824724193}); - P2_vs_soc_segments.push_back({10.0, 94.54144352797196, 0.29876373623234587, 161.64081884157727}); - P2_vs_soc_segments.push_back({94.54144352797196, 100.1, -31.315789475250035, 3150.5263159470037}); - zero_slope_threashold_P2_vs_soc = 0.2688873626091113; - // min_non_zero_slope = 0.29876373623234587 -} -else if(SE_enum == dwc_100kW && EV_enum == hd_400kWh) -{ - P2_vs_soc_segments.push_back({-0.1, 4.0, 4.9238191253131465, 137.866935508768}); - P2_vs_soc_segments.push_back({4.0, 10.0, 1.177707373484567, 152.8513825160823}); - P2_vs_soc_segments.push_back({10.0, 96.04657354332714, 0.2987637363176892, 161.6408188877511}); - P2_vs_soc_segments.push_back({96.04657354332714, 100.1, -41.754385966999884, 4200.701754595989}); - zero_slope_threashold_P2_vs_soc = 0.2688873626859203; - // min_non_zero_slope = 0.2987637363176892 -} -else if(SE_enum == dwc_100kW && EV_enum == hd_600kWh) -{ - P2_vs_soc_segments.push_back({-0.1, 4.0, 4.923819124844304, 137.8669354956405}); - P2_vs_soc_segments.push_back({4.0, 10.0, 1.1777073733724248, 152.851382501528}); - P2_vs_soc_segments.push_back({10.0, 97.5588492117089, 0.2987637362892414, 161.64081887235986}); - P2_vs_soc_segments.push_back({97.5588492117089, 100.1, -62.63157895049983, 6301.052631893983}); - zero_slope_threashold_P2_vs_soc = 0.26888736266031726; - // min_non_zero_slope = 0.2987637362892414 -} -else if(SE_enum == dwc_100kW && EV_enum == hd_800kWh) -{ - P2_vs_soc_segments.push_back({-0.1, 4.0, 4.923819124609884, 137.86693548907672}); - P2_vs_soc_segments.push_back({4.0, 10.0, 1.1777073733163548, 152.85138249425086}); - P2_vs_soc_segments.push_back({10.0, 98.31768258578957, 0.2987637362750174, 161.6408188646642}); - P2_vs_soc_segments.push_back({98.31768258578957, 100.1, -83.50877193400026, 8401.403509192027}); - zero_slope_threashold_P2_vs_soc = 0.26888736264751567; - // min_non_zero_slope = 0.2987637362750174 -} -else if(SE_enum == dwc_100kW && EV_enum == hd_1000kWh) -{ - P2_vs_soc_segments.push_back({-0.1, 4.0, 4.978885135518643, 139.40878379452204}); - P2_vs_soc_segments.push_back({4.0, 10.0, 1.1908783784701087, 154.56081082271618}); - P2_vs_soc_segments.push_back({10.0, 98.75342864712539, 0.30210498962826, 163.44854471113467}); - P2_vs_soc_segments.push_back({98.75342864712539, 100.1, -104.38596491749996, 10501.754386489998}); - zero_slope_threashold_P2_vs_soc = 0.271894490665434; - // min_non_zero_slope = 0.30210498962826 -} diff --git a/source/pev_charge_profile_factory/generate_charge_profiles/archives/output/dcfc_constraints.csv b/source/pev_charge_profile_factory/generate_charge_profiles/archives/output/dcfc_constraints.csv deleted file mode 100644 index 5a9f0b1..0000000 --- a/source/pev_charge_profile_factory/generate_charge_profiles/archives/output/dcfc_constraints.csv +++ /dev/null @@ -1,392 +0,0 @@ -EV,ld_50kWh -SE,xfc_150 -a,b -0.3838190153733452, 142.30508114974413 --6.214806375342803, 612.1473065097462 - - -EV,ld_100kWh -SE,xfc_150 -a,b -0.33846809288095603, 139.956517846928 --11.283423498498166, 1120.912969738063 - - -EV,md_200kWh -SE,xfc_150 -a,b -0.32383901401349924, 142.1200022256849 --20.8771929835018, 2100.350877298166 - - -EV,hd_300kWh -SE,xfc_150 -a,b -0.5034479725903376, 211.73727422261084 --31.315789475245992, 3150.5263159466267 - - -EV,hd_400kWh -SE,xfc_150 -a,b -0.49965137611331034, 211.8640459620138 --41.75438596698655, 4200.7017545947165 - - -EV,hd_600kWh -SE,xfc_150 -a,b -0.49605515037035897, 211.98753196924494 --62.63157895049426, 6301.052631893253 - - -EV,hd_800kWh -SE,xfc_150 -a,b -0.4943278345539328, 212.04808552247957 --83.50877193389533, 8401.403509181691 - - -EV,hd_1000kWh -SE,xfc_150 -a,b -0.4993262048055147, 214.4152418325102 --104.3859649174774, 10501.754386487883 - - -EV,ld_50kWh -SE,xfc_350 -a,b -0.4507583311672283, 160.9059852199924 --6.257389869479674, 615.8114518987386 - - -EV,ld_100kWh -SE,xfc_350 -a,b -0.970656047458295, 317.67292845918024 --12.504652955408176, 1230.5681891324011 - - -EV,md_200kWh -SE,xfc_350 -a,b -1.1591357869973713, 397.1802537320568 --24.7487055257821, 2442.961665006922 - - -EV,hd_300kWh -SE,xfc_350 -a,b -1.7781252678326425, 593.3558900695136 --37.123969381929214, 3664.5198342475996 - - -EV,hd_400kWh -SE,xfc_350 -a,b -1.6999030713893397, 601.188963587306 --46.55439545864999, 4616.021524043492 - - -EV,hd_600kWh -SE,xfc_350 -a,b -1.6166921975685487, 613.6211484495791 --62.63157895050267, 6301.052631894272 - - -EV,hd_800kWh -SE,xfc_350 -a,b -1.5944073350638792, 614.1686499883272 --83.5087719339972, 8401.403509191761 - - -EV,hd_1000kWh -SE,xfc_350 -a,b -1.60076299731368, 621.2959639811877 --104.38596491748922, 10501.754386489047 - - -EV,ld_50kWh -SE,xfc_500kW -a,b -0.4507583311672283, 160.9059852199924 --6.257389869479674, 615.8114518987386 - - -EV,ld_100kWh -SE,xfc_500kW -a,b -0.970656047458295, 317.67292845918024 --12.504652955408176, 1230.5681891324011 - - -EV,md_200kWh -SE,xfc_500kW -a,b -1.1591357869973713, 397.1802537320568 --24.7487055257821, 2442.961665006922 - - -EV,hd_300kWh -SE,xfc_500kW -a,b -1.7781252678326425, 593.3558900695136 --37.123969381929214, 3664.5198342475996 - - -EV,hd_400kWh -SE,xfc_500kW -a,b -1.6999030713893397, 601.188963587306 --46.55439545864999, 4616.021524043492 - - -EV,hd_600kWh -SE,xfc_500kW -a,b -1.6166921975685487, 613.6211484495791 --62.63157895050267, 6301.052631894272 - - -EV,hd_800kWh -SE,xfc_500kW -a,b -1.5944073350638792, 614.1686499883272 --83.5087719339972, 8401.403509191761 - - -EV,hd_1000kWh -SE,xfc_500kW -a,b -1.60076299731368, 621.2959639811877 --104.38596491748922, 10501.754386489047 - - -EV,ld_50kWh -SE,xfc_1000kW -a,b -0.4507583311672283, 160.9059852199924 --6.257389869479674, 615.8114518987386 - - -EV,ld_100kWh -SE,xfc_1000kW -a,b -0.970656047458295, 317.67292845918024 --12.504652955408176, 1230.5681891324011 - - -EV,md_200kWh -SE,xfc_1000kW -a,b -1.9288751752372129, 605.3201944785251 --24.98380049087342, 2459.2679707606403 - - -EV,hd_300kWh -SE,xfc_1000kW -a,b -2.934718625603651, 906.0537298564684 --37.47607649787227, 3688.9302223707164 - - -EV,hd_400kWh -SE,xfc_1000kW -a,b -2.7054381612153193, 871.9195598361531 --48.722881056780125, 4809.14768053242 - - -EV,hd_600kWh -SE,xfc_1000kW -a,b -2.51258647919326, 879.9290322337347 --69.36321082399832, 6880.592493193661 - - -EV,hd_800kWh -SE,xfc_1000kW -a,b -2.4107672172290897, 894.5509092820225 --83.21613883405826, 8304.897917131282 - - -EV,hd_1000kWh -SE,xfc_1000kW -a,b -2.4088737234270923, 907.4621666791724 --104.38596491749422, 10501.754386489396 - - -EV,ld_50kWh -SE,xfc_2000kW -a,b -0.4507583311672283, 160.9059852199924 --6.257389869479674, 615.8114518987386 - - -EV,ld_100kWh -SE,xfc_2000kW -a,b -0.970656047458295, 317.67292845918024 --12.504652955408176, 1230.5681891324011 - - -EV,md_200kWh -SE,xfc_2000kW -a,b -2.0341703395663515, 631.5151209706091 --25.035583252898505, 2463.692045511156 - - -EV,hd_300kWh -SE,xfc_2000kW -a,b -3.092719102741171, 945.4099697860258 --37.55372223395477, 3695.563795039805 - - -EV,hd_400kWh -SE,xfc_2000kW -a,b -4.146436606199401, 1259.5598818760973 --50.071792041482865, 4927.430421122368 - - -EV,hd_600kWh -SE,xfc_2000kW -a,b -5.938867990101066, 1811.3877591644837 --74.95684227771426, 7378.257601770827 - - -EV,hd_800kWh -SE,xfc_2000kW -a,b -5.474361960777841, 1742.8527987905227 --97.45893990759578, 9619.4692557815 - - -EV,hd_1000kWh -SE,xfc_2000kW -a,b -5.292827753878868, 1761.687691982259 --121.23595930728607, 11986.649660626135 - - -EV,ld_50kWh -SE,xfc_3000kW -a,b -0.4507583311672283, 160.9059852199924 --6.257389869479674, 615.8114518987386 - - -EV,ld_100kWh -SE,xfc_3000kW -a,b -0.970656047458295, 317.67292845918024 --12.504652955408176, 1230.5681891324011 - - -EV,md_200kWh -SE,xfc_3000kW -a,b -2.0341703395663515, 631.5151209706091 --25.035583252898505, 2463.692045511156 - - -EV,hd_300kWh -SE,xfc_3000kW -a,b -3.092719102741171, 945.4099697860258 --37.55372223395477, 3695.563795039805 - - -EV,hd_400kWh -SE,xfc_3000kW -a,b -4.146436606199401, 1259.5598818760973 --50.071792041482865, 4927.430421122368 - - -EV,hd_600kWh -SE,xfc_3000kW -a,b -6.246288234993088, 1888.2121938886412 --75.10786220010544, 7391.158529000095 - - -EV,hd_800kWh -SE,xfc_3000kW -a,b -8.341476126470226, 2517.069356010025 --100.14389756844628, 9854.884060161872 - - -EV,hd_1000kWh -SE,xfc_3000kW -a,b -8.58053999499667, 2666.0729544555206 --124.01403086249275, 12218.01410064222 - - -EV,ld_50kWh -SE,dwc_100kW -a,b -0.2524738616009765, 101.80086195431582 --6.1832327947676475, 610.4055877227938 - - -EV,ld_100kWh -SE,dwc_100kW -a,b -0.23481176672048054, 104.90347655830557 --10.428157891083174, 1049.125262790316 - - -EV,md_200kWh -SE,dwc_100kW -a,b -0.23048208121297398, 105.06518012978654 --20.877192983503505, 2100.350877298333 - - -EV,hd_300kWh -SE,dwc_100kW -a,b -0.3576482923200923, 156.5890070457873 --31.315789475249176, 3150.526315946903 - - -EV,hd_400kWh -SE,dwc_100kW -a,b -0.35590638830164645, 156.6527686259542 --41.754385967029975, 4200.701754599024 - - -EV,hd_600kWh -SE,dwc_100kW -a,b -0.3542337535676663, 156.7151960642626 --62.631578950444236, 6301.052631888655 - - -EV,hd_800kWh -SE,dwc_100kW -a,b -0.3534222905686506, 156.74592302552526 --83.50877193370616, 8401.4035091626 - - -EV,hd_1000kWh -SE,dwc_100kW -a,b -0.35723828260493606, 158.48772160783224 --104.38596491731369, 10501.754386471584 - - diff --git a/source/pev_charge_profile_factory/generate_charge_profiles/archives/output/dcfc_data.csv b/source/pev_charge_profile_factory/generate_charge_profiles/archives/output/dcfc_data.csv deleted file mode 100644 index bfac83d..0000000 --- a/source/pev_charge_profile_factory/generate_charge_profiles/archives/output/dcfc_data.csv +++ /dev/null @@ -1,551 +0,0 @@ -EV,ld_50kWh -SE,xfc_150 -soc_LB,soc_UB,a,b --0.1, 3.0, 5.617623090661083, 124.64587923089042 -3.0, 10.0, 1.4433547003052354, 137.16868440195796 -10.0, 71.46359084873505, 0.28079783503165895, 148.79425305469374 -71.46359084873505, 93.0, -6.38663967643269, 625.2732793834901 -93.0, 100.1, -4.02255639117857, 405.413533854857 - - -EV,ld_100kWh -SE,xfc_150 -soc_LB,soc_UB,a,b --0.1, 3.0, 5.019868538599169, 122.38229534071229 -3.0, 4.0, 3.0600411622216184, 128.26177746984493 -4.0, 10.0, 1.216147395224588, 135.63735253783307 -10.0, 85.0076631195378, 0.2716779788933731, 145.0820467011452 -85.0076631195378, 93.0, -13.213633389200002, 1291.4368525421003 -93.0, 100.1, -8.037067666357142, 810.016240317714 - - -EV,md_200kWh -SE,xfc_150 -soc_LB,soc_UB,a,b --0.1, 4.0, 4.4642626723420005, 124.99935482557609 -4.0, 10.0, 1.0677880183209867, 138.58525344166014 -10.0, 92.38650810537449, 0.27087912085065996, 146.55434241636343 -92.38650810537449, 100.1, -20.877192983499974, 2100.350877297997 - - -EV,hd_300kWh -SE,xfc_150 -soc_LB,soc_UB,a,b --0.1, 4.0, 6.696394008513, 187.49903223836412 -4.0, 10.0, 1.6016820274814798, 207.87788016249021 -10.0, 92.38650810537449, 0.4063186812759899, 219.8315136245451 -92.38650810537449, 100.1, -31.315789475249957, 3150.526315946996 - - -EV,hd_400kWh -SE,xfc_150 -soc_LB,soc_UB,a,b --0.1, 4.0, 6.696394010425876, 187.4990322919245 -4.0, 10.0, 1.6016820279390087, 207.87788022187195 -10.0, 94.42134030035675, 0.4063186813920575, 219.83151368734147 -94.42134030035675, 100.1, -41.75438596700008, 4200.701754596009 - - -EV,hd_600kWh -SE,xfc_150 -soc_LB,soc_UB,a,b --0.1, 4.0, 6.696394009788252, 187.49903227407106 -4.0, 10.0, 1.601682027786505, 207.87788020207802 -10.0, 96.46928826437762, 0.40631868135336796, 219.83151366640942 -96.46928826437762, 100.1, -62.63157895049987, 6301.052631893987 - - -EV,hd_800kWh -SE,xfc_150 -soc_LB,soc_UB,a,b --0.1, 4.0, 6.696394009469443, 187.49903226514434 -4.0, 10.0, 1.6016820277102406, 207.87788019218115 -10.0, 97.49822035038136, 0.4063186813340238, 219.83151365594333 -97.49822035038136, 100.1, -83.50877193399954, 8401.403509191954 - - -EV,hd_1000kWh -SE,xfc_150 -soc_LB,soc_UB,a,b --0.1, 4.0, 6.771283784305358, 189.59594596054998 -4.0, 10.0, 1.6195945947193486, 210.20270271889402 -10.0, 98.08946120751611, 0.41086278589443354, 222.29002080714318 -98.08946120751611, 100.1, -104.3859649175005, 10501.75438649005 - - -EV,ld_50kWh -SE,xfc_350 -soc_LB,soc_UB,a,b --0.1, 3.0, 6.2649122810149995, 141.74736842814 -3.0, 10.0, 1.6368421053449982, 155.63157895515002 -10.0, 68.08256207172734, 0.31772853187184213, 168.82271468988156 -68.08256207172734, 93.0, -6.386639676432694, 625.2732793834906 -93.0, 100.1, -4.02255639117857, 405.413533854857 - - -EV,ld_100kWh -SE,xfc_350 -soc_LB,soc_UB,a,b --0.1, 3.0, 12.51729473245665, 283.21124200604 -3.0, 10.0, 3.2704105251700035, 310.95189462789995 -10.0, 68.08256207172734, 0.6348216064257896, 337.3077838153421 -68.08256207172734, 93.0, -12.76050606840385, 1249.2960117080581 -93.0, 100.1, -8.037067666357142, 810.016240317714 - - -EV,md_200kWh -SE,xfc_350 -soc_LB,soc_UB,a,b --0.1, 3.0, 16.525567949819884, 351.65195242759415 -3.0, 4.0, 4.548794221567978, 387.58227361234987 -4.0, 10.0, 4.047197486223866, 389.58866055372636 -10.0, 79.37589851129248, 0.8015852284950763, 422.04478313101424 -79.37589851129248, 93.0, -26.453720509489646, 2585.459165283537 -93.0, 100.1, -16.09022556471428, 1621.654135419428 - - -EV,hd_300kWh -SE,xfc_350 -soc_LB,soc_UB,a,b --0.1, 3.0, 24.78835192472982, 527.4779286413913 -3.0, 4.0, 6.823191332351967, 581.3734104185248 -4.0, 10.0, 6.070796229335799, 584.3829908305895 -10.0, 79.37589851129248, 1.2023778427426144, 633.0671746965213 -79.37589851129248, 93.0, -39.68058076423447, 3878.1887479253055 -93.0, 100.1, -24.13533834707142, 2432.481203129142 - - -EV,hd_400kWh -SE,xfc_350 -soc_LB,soc_UB,a,b --0.1, 3.0, 22.9111589508695, 536.3200340480914 -3.0, 4.0, 11.56755223272807, 570.3508542025157 -4.0, 10.0, 5.569543098642392, 594.3428907388584 -10.0, 83.77597648720116, 1.1996787877576258, 638.0415338477061 -83.77597648720116, 93.0, -52.90744101897933, 5170.918330567078 -93.0, 100.1, -32.18045112942856, 3243.308270838856 - - -EV,hd_600kWh -SE,xfc_350 -soc_LB,soc_UB,a,b --0.1, 4.0, 19.695276499377215, 551.467741982562 -4.0, 10.0, 4.710829493489699, 611.405530006112 -10.0, 88.59137653488752, 1.1950549451569656, 646.5632754894394 -88.59137653488752, 100.1, -62.63157895050001, 6301.052631894 - - -EV,hd_800kWh -SE,xfc_350 -soc_LB,soc_UB,a,b --0.1, 4.0, 19.695276498439537, 551.4677419563069 -4.0, 10.0, 4.710829493265419, 611.4055299770034 -10.0, 91.55241881576407, 1.1950549451000696, 646.5632754586568 -91.55241881576407, 100.1, -83.50877193400005, 8401.403509192005 - - -EV,hd_1000kWh -SE,xfc_350 -soc_LB,soc_UB,a,b --0.1, 4.0, 19.915540542074574, 557.6351351780881 -4.0, 10.0, 4.763513513880435, 618.2432432908647 -10.0, 93.26215801350378, 1.20841995851304, 653.7941788445387 -93.26215801350378, 100.1, -104.38596491750005, 10501.754386490007 - - -EV,ld_50kWh -SE,xfc_500kW -soc_LB,soc_UB,a,b --0.1, 3.0, 6.2649122810149995, 141.74736842814 -3.0, 10.0, 1.6368421053449982, 155.63157895515002 -10.0, 68.08256207172734, 0.31772853187184213, 168.82271468988156 -68.08256207172734, 93.0, -6.386639676432694, 625.2732793834906 -93.0, 100.1, -4.02255639117857, 405.413533854857 - - -EV,ld_100kWh -SE,xfc_500kW -soc_LB,soc_UB,a,b --0.1, 3.0, 12.51729473245665, 283.21124200604 -3.0, 10.0, 3.2704105251700035, 310.95189462789995 -10.0, 68.08256207172734, 0.6348216064257896, 337.3077838153421 -68.08256207172734, 93.0, -12.76050606840385, 1249.2960117080581 -93.0, 100.1, -8.037067666357142, 810.016240317714 - - -EV,md_200kWh -SE,xfc_500kW -soc_LB,soc_UB,a,b --0.1, 3.0, 16.525567949819884, 351.65195242759415 -3.0, 4.0, 4.548794221567978, 387.58227361234987 -4.0, 10.0, 4.047197486223866, 389.58866055372636 -10.0, 79.37589851129248, 0.8015852284950763, 422.04478313101424 -79.37589851129248, 93.0, -26.453720509489646, 2585.459165283537 -93.0, 100.1, -16.09022556471428, 1621.654135419428 - - -EV,hd_300kWh -SE,xfc_500kW -soc_LB,soc_UB,a,b --0.1, 3.0, 24.78835192472982, 527.4779286413913 -3.0, 4.0, 6.823191332351967, 581.3734104185248 -4.0, 10.0, 6.070796229335799, 584.3829908305895 -10.0, 79.37589851129248, 1.2023778427426144, 633.0671746965213 -79.37589851129248, 93.0, -39.68058076423447, 3878.1887479253055 -93.0, 100.1, -24.13533834707142, 2432.481203129142 - - -EV,hd_400kWh -SE,xfc_500kW -soc_LB,soc_UB,a,b --0.1, 3.0, 22.9111589508695, 536.3200340480914 -3.0, 4.0, 11.56755223272807, 570.3508542025157 -4.0, 10.0, 5.569543098642392, 594.3428907388584 -10.0, 83.77597648720116, 1.1996787877576258, 638.0415338477061 -83.77597648720116, 93.0, -52.90744101897933, 5170.918330567078 -93.0, 100.1, -32.18045112942856, 3243.308270838856 - - -EV,hd_600kWh -SE,xfc_500kW -soc_LB,soc_UB,a,b --0.1, 4.0, 19.695276499377215, 551.467741982562 -4.0, 10.0, 4.710829493489699, 611.405530006112 -10.0, 88.59137653488752, 1.1950549451569656, 646.5632754894394 -88.59137653488752, 100.1, -62.63157895050001, 6301.052631894 - - -EV,hd_800kWh -SE,xfc_500kW -soc_LB,soc_UB,a,b --0.1, 4.0, 19.695276498439537, 551.4677419563069 -4.0, 10.0, 4.710829493265419, 611.4055299770034 -10.0, 91.55241881576407, 1.1950549451000696, 646.5632754586568 -91.55241881576407, 100.1, -83.50877193400005, 8401.403509192005 - - -EV,hd_1000kWh -SE,xfc_500kW -soc_LB,soc_UB,a,b --0.1, 4.0, 19.915540542074574, 557.6351351780881 -4.0, 10.0, 4.763513513880435, 618.2432432908647 -10.0, 93.26215801350378, 1.20841995851304, 653.7941788445387 -93.26215801350378, 100.1, -104.38596491750005, 10501.754386490007 - - -EV,ld_50kWh -SE,xfc_1000kW -soc_LB,soc_UB,a,b --0.1, 3.0, 6.2649122810149995, 141.74736842814 -3.0, 10.0, 1.6368421053449982, 155.63157895515002 -10.0, 68.08256207172734, 0.31772853187184213, 168.82271468988156 -68.08256207172734, 93.0, -6.386639676432694, 625.2732793834906 -93.0, 100.1, -4.02255639117857, 405.413533854857 - - -EV,ld_100kWh -SE,xfc_1000kW -soc_LB,soc_UB,a,b --0.1, 3.0, 12.51729473245665, 283.21124200604 -3.0, 10.0, 3.2704105251700035, 310.95189462789995 -10.0, 68.08256207172734, 0.6348216064257896, 337.3077838153421 -68.08256207172734, 93.0, -12.76050606840385, 1249.2960117080581 -93.0, 100.1, -8.037067666357142, 810.016240317714 - - -EV,md_200kWh -SE,xfc_1000kW -soc_LB,soc_UB,a,b --0.1, 3.0, 24.143511712364646, 542.7849693228944 -3.0, 10.0, 6.273517022205756, 596.3949533933711 -10.0, 69.27462598528474, 1.2186444564972314, 646.9436790504564 -69.27462598528474, 93.0, -25.54655870573077, 2501.0931175339615 -93.0, 100.1, -16.09022556471428, 1621.654135419428 - - -EV,hd_300kWh -SE,xfc_1000kW -soc_LB,soc_UB,a,b --0.1, 3.0, 36.21526756854697, 814.1774539843416 -3.0, 10.0, 9.410275533308633, 894.5924300900566 -10.0, 69.27462598528474, 1.8279666847458471, 970.4155185756845 -69.27462598528474, 93.0, -38.319838058596154, 3751.639676300942 -93.0, 100.1, -24.13533834707142, 2432.481203129142 - - -EV,hd_400kWh -SE,xfc_1000kW -soc_LB,soc_UB,a,b --0.1, 3.0, 36.63632021013128, 777.7564016147287 -3.0, 10.0, 9.064410874621704, 860.4721296212574 -10.0, 76.96478054467563, 1.7725650232628638, 933.3905881348459 -76.96478054467563, 93.0, -51.09311741146153, 5002.186235067922 -93.0, 100.1, -32.18045112942856, 3243.308270838856 - - -EV,hd_600kWh -SE,xfc_1000kW -soc_LB,soc_UB,a,b --0.1, 3.0, 33.308124827399, 787.0469348700666 -3.0, 4.0, 17.609192570054, 834.1437316421017 -4.0, 10.0, 8.090720110980348, 872.2176214783962 -10.0, 84.08466589019737, 1.757393651151549, 935.5508860766843 -84.08466589019737, 93.0, -79.36116152846905, 7756.377495850622 -93.0, 100.1, -48.27067669414284, 4864.962406258284 - - -EV,hd_800kWh -SE,xfc_1000kW -soc_LB,soc_UB,a,b --0.1, 3.0, 29.553738860176978, 804.7311453623216 -3.0, 4.0, 27.09791437555665, 812.0986188161826 -4.0, 10.0, 7.088213844737678, 892.1374209394584 -10.0, 87.35344251585242, 1.751995540405572, 945.4996039827796 -87.35344251585242, 93.0, -105.81488203795847, 10341.836661134137 -93.0, 100.1, -64.36090225885712, 6486.616541677712 - - -EV,hd_1000kWh -SE,xfc_1000kW -soc_LB,soc_UB,a,b --0.1, 4.0, 29.18025000224768, 817.0470000629349 -4.0, 10.0, 6.979500000537595, 905.8500000697752 -10.0, 89.9032220733732, 1.7705769232133064, 957.939230843018 -89.9032220733732, 100.1, -104.3859649175, 10501.754386490002 - - -EV,ld_50kWh -SE,xfc_2000kW -soc_LB,soc_UB,a,b --0.1, 3.0, 6.2649122810149995, 141.74736842814 -3.0, 10.0, 1.6368421053449982, 155.63157895515002 -10.0, 68.08256207172734, 0.31772853187184213, 168.82271468988156 -68.08256207172734, 93.0, -6.386639676432694, 625.2732793834906 -93.0, 100.1, -4.02255639117857, 405.413533854857 - - -EV,ld_100kWh -SE,xfc_2000kW -soc_LB,soc_UB,a,b --0.1, 3.0, 12.51729473245665, 283.21124200604 -3.0, 10.0, 3.2704105251700035, 310.95189462789995 -10.0, 68.08256207172734, 0.6348216064257896, 337.3077838153421 -68.08256207172734, 93.0, -12.76050606840385, 1249.2960117080581 -93.0, 100.1, -8.037067666357142, 810.016240317714 - - -EV,md_200kWh -SE,xfc_2000kW -soc_LB,soc_UB,a,b --0.1, 3.0, 25.059649124059966, 566.98947371256 -3.0, 10.0, 6.547368421380007, 622.5263158205998 -10.0, 68.08256207172734, 1.2709141274873685, 675.2908587595263 -68.08256207172734, 93.0, -25.546558705730774, 2501.0931175339624 -93.0, 100.1, -16.09022556471428, 1621.654135419428 - - -EV,hd_300kWh -SE,xfc_2000kW -soc_LB,soc_UB,a,b --0.1, 3.0, 37.589473686089946, 850.4842105688399 -3.0, 10.0, 9.82105263207001, 933.7894737308998 -10.0, 68.08256207172734, 1.9063711912310528, 1012.9362881392893 -68.08256207172734, 93.0, -38.31983805859616, 3751.6396763009434 -93.0, 100.1, -24.13533834707142, 2432.481203129142 - - -EV,hd_400kWh -SE,xfc_2000kW -soc_LB,soc_UB,a,b --0.1, 3.0, 50.11929824811993, 1133.97894742512 -3.0, 10.0, 13.094736842760014, 1245.0526316411997 -10.0, 68.08256207172734, 2.541828254974737, 1350.5817175190525 -68.08256207172734, 93.0, -51.09311741146155, 5002.186235067925 -93.0, 100.1, -32.18045112942856, 3243.308270838856 - - -EV,hd_600kWh -SE,xfc_2000kW -soc_LB,soc_UB,a,b --0.1, 3.0, 72.50049185041229, 1630.2031760919858 -3.0, 10.0, 18.841462497128997, 1791.1802641518357 -10.0, 69.24422604132654, 3.6599247078455552, 1942.9956420446701 -69.24422604132654, 93.0, -76.63967611719227, 7503.279352601881 -93.0, 100.1, -48.27067669414284, 4864.962406258284 - - -EV,hd_800kWh -SE,xfc_2000kW -soc_LB,soc_UB,a,b --0.1, 3.0, 73.34259711028085, 1557.361070737169 -3.0, 10.0, 18.149733172790338, 1722.9396625496406 -10.0, 76.94140334485147, 3.5491213835502085, 1868.9457804420417 -76.94140334485147, 93.0, -102.18623482292311, 10004.372470135851 -93.0, 100.1, -64.36090225885712, 6486.616541677712 - - -EV,hd_1000kWh -SE,xfc_2000kW -soc_LB,soc_UB,a,b --0.1, 3.0, 71.4577773537474, 1574.312573169373 -3.0, 4.0, 25.464850039162634, 1712.2913551131273 -4.0, 10.0, 17.45464452354518, 1744.332177175597 -10.0, 81.30667131540051, 3.5634451397963116, 1883.2441710130859 -81.30667131540051, 93.0, -132.2686025474482, 12927.295826417685 -93.0, 100.1, -80.45112782357143, 8108.270677097142 - - -EV,ld_50kWh -SE,xfc_3000kW -soc_LB,soc_UB,a,b --0.1, 3.0, 6.2649122810149995, 141.74736842814 -3.0, 10.0, 1.6368421053449982, 155.63157895515002 -10.0, 68.08256207172734, 0.31772853187184213, 168.82271468988156 -68.08256207172734, 93.0, -6.386639676432694, 625.2732793834906 -93.0, 100.1, -4.02255639117857, 405.413533854857 - - -EV,ld_100kWh -SE,xfc_3000kW -soc_LB,soc_UB,a,b --0.1, 3.0, 12.51729473245665, 283.21124200604 -3.0, 10.0, 3.2704105251700035, 310.95189462789995 -10.0, 68.08256207172734, 0.6348216064257896, 337.3077838153421 -68.08256207172734, 93.0, -12.76050606840385, 1249.2960117080581 -93.0, 100.1, -8.037067666357142, 810.016240317714 - - -EV,md_200kWh -SE,xfc_3000kW -soc_LB,soc_UB,a,b --0.1, 3.0, 25.059649124059966, 566.98947371256 -3.0, 10.0, 6.547368421380007, 622.5263158205998 -10.0, 68.08256207172734, 1.2709141274873685, 675.2908587595263 -68.08256207172734, 93.0, -25.546558705730774, 2501.0931175339624 -93.0, 100.1, -16.09022556471428, 1621.654135419428 - - -EV,hd_300kWh -SE,xfc_3000kW -soc_LB,soc_UB,a,b --0.1, 3.0, 37.589473686089946, 850.4842105688399 -3.0, 10.0, 9.82105263207001, 933.7894737308998 -10.0, 68.08256207172734, 1.9063711912310528, 1012.9362881392893 -68.08256207172734, 93.0, -38.31983805859616, 3751.6396763009434 -93.0, 100.1, -24.13533834707142, 2432.481203129142 - - -EV,hd_400kWh -SE,xfc_3000kW -soc_LB,soc_UB,a,b --0.1, 3.0, 50.11929824811993, 1133.97894742512 -3.0, 10.0, 13.094736842760014, 1245.0526316411997 -10.0, 68.08256207172734, 2.541828254974737, 1350.5817175190525 -68.08256207172734, 93.0, -51.09311741146155, 5002.186235067925 -93.0, 100.1, -32.18045112942856, 3243.308270838856 - - -EV,hd_600kWh -SE,xfc_3000kW -soc_LB,soc_UB,a,b --0.1, 3.0, 75.17894737217999, 1700.9684211376798 -3.0, 10.0, 19.64210526413998, 1867.5789474618 -10.0, 68.08256207172732, 3.8127423824621105, 2025.8725762785784 -68.08256207172732, 93.0, -76.63967611719228, 7503.279352601882 -93.0, 100.1, -48.27067669414284, 4864.962406258284 - - -EV,hd_800kWh -SE,xfc_3000kW -soc_LB,soc_UB,a,b --0.1, 3.0, 100.23859649623999, 2267.9578948502403 -3.0, 10.0, 26.18947368551997, 2490.1052632824003 -10.0, 68.08256207172732, 5.083656509949474, 2701.1634350381055 -68.08256207172732, 93.0, -102.18623482292308, 10004.372470135846 -93.0, 100.1, -64.36090225885712, 6486.616541677712 - - -EV,hd_1000kWh -SE,xfc_3000kW -soc_LB,soc_UB,a,b --0.1, 3.0, 108.59649123349998, 2393.6842106460003 -3.0, 10.0, 27.744360903642843, 2636.2406016355717 -10.0, 72.45155249679897, 5.401662050131588, 2859.667590170684 -72.45155249679897, 93.0, -127.73279352865379, 12505.465587669803 -93.0, 100.1, -80.45112782357143, 8108.270677097142 - - -EV,ld_50kWh -SE,dwc_100kW -soc_LB,soc_UB,a,b --0.1, 3.0, 4.131391988613595, 87.91298812597856 -3.0, 4.0, 1.137198555109764, 96.89556842649004 -4.0, 10.0, 1.011799371844463, 97.39716515955125 -10.0, 79.37589850730012, 0.20039630716987314, 105.51119580629715 -79.37589850730012, 93.0, -6.613430127372406, 646.3647913208837 -93.0, 100.1, -4.02255639117857, 405.413533854857 - - -EV,ld_100kWh -SE,dwc_100kW -soc_LB,soc_UB,a,b --0.1, 4.0, 3.2825460808634848, 91.91129026417764 -4.0, 10.0, 0.7851382483490266, 101.90092159423547 -10.0, 88.5795762311163, 0.19917582404926223, 107.76054583723311 -88.5795762311163, 100.1, -10.428157891083332, 1049.1252627903334 - - -EV,md_200kWh -SE,dwc_100kW -soc_LB,soc_UB,a,b --0.1, 4.0, 3.282546082604413, 91.9112903129236 -4.0, 10.0, 0.7851382487654301, 101.90092164827954 -10.0, 94.54144352797196, 0.19917582415489724, 107.76054589438486 -94.54144352797196, 100.1, -20.877192983500027, 2100.3508772980026 - - -EV,hd_300kWh -SE,dwc_100kW -soc_LB,soc_UB,a,b --0.1, 4.0, 4.923819123906619, 137.8669354693854 -4.0, 10.0, 1.177707373148145, 152.8513824724193 -10.0, 94.54144352797196, 0.29876373623234587, 161.64081884157727 -94.54144352797196, 100.1, -31.315789475250035, 3150.5263159470037 - - -EV,hd_400kWh -SE,dwc_100kW -soc_LB,soc_UB,a,b --0.1, 4.0, 4.9238191253131465, 137.866935508768 -4.0, 10.0, 1.177707373484567, 152.8513825160823 -10.0, 96.04657354332714, 0.2987637363176892, 161.6408188877511 -96.04657354332714, 100.1, -41.754385966999884, 4200.701754595989 - - -EV,hd_600kWh -SE,dwc_100kW -soc_LB,soc_UB,a,b --0.1, 4.0, 4.923819124844304, 137.8669354956405 -4.0, 10.0, 1.1777073733724248, 152.851382501528 -10.0, 97.5588492117089, 0.2987637362892414, 161.64081887235986 -97.5588492117089, 100.1, -62.63157895049983, 6301.052631893983 - - -EV,hd_800kWh -SE,dwc_100kW -soc_LB,soc_UB,a,b --0.1, 4.0, 4.923819124609884, 137.86693548907672 -4.0, 10.0, 1.1777073733163548, 152.85138249425086 -10.0, 98.31768258578957, 0.2987637362750174, 161.6408188646642 -98.31768258578957, 100.1, -83.50877193400026, 8401.403509192027 - - -EV,hd_1000kWh -SE,dwc_100kW -soc_LB,soc_UB,a,b --0.1, 4.0, 4.978885135518643, 139.40878379452204 -4.0, 10.0, 1.1908783784701087, 154.56081082271618 -10.0, 98.75342864712539, 0.30210498962826, 163.44854471113467 -98.75342864712539, 100.1, -104.38596491749996, 10501.754386489998 - - diff --git a/source/pev_charge_profile_factory/generate_charge_profiles/charge_profile_factory.exe b/source/pev_charge_profile_factory/generate_charge_profiles/charge_profile_factory.exe deleted file mode 100644 index de8d5390eca760bc80a6ba54aaa8e8349dd49e17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 227328 zcmeFa34C6|{y+Y7Nrf&+QBuqGAPDZaLM^GK_h}UeK~yg(MXJR^Rij#sJ(advNhpfC zmIg&Fms(ogXi8~H5qqt-%4H%&agkb@|NH%!nX^34d6KkEUHA8IUhSMSGoR0AKJ(dT z&di+i9CzyENV`ZR(jNaC8zYf9xbiP1Y17GSRCn2FUYE$zo4>mAoHqHd?mQrV-o?@4 zkt5C>Ie2(<$lwbv95E_-*4fdKqc4n}cVV>O2`5E|j~IG(kItR9$Tp;7v&O3SZ+|=A z{+~bNt9jcaKYvF3ye@KGHE%PyelxEfu9*wJnHRye{oCKnAB^kA4}CSSgIqJ`r^)r} zdA#;NZ%CXp6MIl_L?kkFLVDzyV^0}s>sCj0iF9n+W!K1sZ6lFRZKSwccU&^%HYO#! zM|B4&@~)9;NRPt9U%N=rSc_zEQL2g93*k%&ZzCn6+eJ!vQ`IgqkaS}0A`QE-!2Hc@ z7a59nGgaG2o-GTxPX3~8L^EnCi$OOn1ke=q7j@iAEwtJw^^4 zJZf+x((4hFmICHcTu0*S`-_3=9vUq2P)AhcLM9Z{Uuaq0Un~--?oq4(SMP;#^fmHV zT(gtlVm;2&a79_DM_(e_;aU&^mzz7}oO2_Q(Nxl8)RVRIL*PbUJaP!CM8=S{@OMEN z+}Rh50APR0Zl-}7nFQAtwf|52E#qI^?vF(xbvOQsWY7g|B6YVth-BnBNRHbV$&9}v zIjI8483!X-x)YL7tB}0@F)$8(9(V5yKvLVaZKUoH;&yl$6;IrZyL{5y_Hra6KSy#H z;qv+;xp)nd=iWoos}jlE^MLXA2e{koPTaltChiJOMl!4yk_k0P1|v4rUGO#To^g9aZS?95|uH;g*^q84|b9*yMD zY9!aP;-(i+@#+J(b7tc1@EqLrE<@7&I3!yyLNaX|B-;^V)~85{c17~*0pQ@)+ki3l zL}Zt3hU{%yAldQ@WOsZR6%H9HI{?XraLc;x6y229keoRb$z>Gm5eooU{0Q!TosQ(C zW07>d5=p1?kR0?hl6y(?Yl<`HX8_-KHtvq6OqXtpinpJ{-L(Elw)hsc_tToH>yW&1 zKavBY`C8T%LYk>Rx|8N&4fifEAg>zB%5Zj&dBkme$7JJ2!>_*`f(ZaST zr`yz{tZN4(%P^wUJu?S)eQ9flO~hSc1wT|#SWlScVbzh6#5(su-sR}VrG-wGA&j>g^E6Og=r6_P1afxD2&cG<}On;b+b z#M5Xc6Da#d?SQs`42@wwo~IT*rfLhR#vd4IdJIDHKHD9-0(Ti?cdr>pM$_{qUkBh} zw0t2*NOtXrtz- z-`|_UIe8S4MT`+2^+fU|1$)+6NM3yp$y7?b=M3OJMxJ}oorgY$p|Q3tK*iU$B2oWAGK9bvu0%3-2x^CpK=L;Rk9lt+Nh?FP zm<-*)4&Hh$?gsZmGKk^-+~;t&l8hhr6Kdms$K7WyBYBLPKJOwVTNfc2fk|22!yn^r z76W4@<+3-UcZYwX;vV{Mrznzxc0l&YYj9V26_UKSkhEjKTl*RA)(l0`o()Z-Dh?(G zKe8XivyuEt2m68^`W=Py+b6i&mJ-_UStQR=E?I2+1)AuEG?n+~0_{J8ahI_rYPUER zcinim`bOOSdN-1j`y$!-Ux2&f3ncH+vTtH*uW|}e@-FV)x(8*)6Zq1RNcMjN$>TJ$ z?Wpd5(+z6RKr)}In0-HzK8GVYlp;CmCfxPk8_BcpAW^wUUSRDv?985D0c6TuNX}#| zIiJondLpu`X+Dq8?!Ta1+ORXf^+9qQz3lm;kbF%}8)*0U5u*#|P4Cmt`;qZ)+alSE zWBdU>pls&xxZ8dr?k=IRewvBeisz9%h+RF4>N$+|oVPQQlW1_y(XHl^!2UB)wvZ9& z;3sf*3yps@ZRnA4NRFgk?M&;uf|^Be`xo zDrV8VYkxuVA=&Lvh@>l{az1(4ERJLscK>U#TX-;%x6Vd#J)`&gl)--pH*GDFm&w%; zuOXRCkD8wj4u0ATcQ@XOq=F2Mxe|BZAByDn7m&oCMMH0~Z(YRx%5nF08Im(uc1#wM zBZeVaL3h4m4ekzHjAYS6NCpw^y=_qOJY`?W+T}Om?&77myE`ArQmXrNa&_i#B*&~o z^7l`X#NGm2N0K^{(~rUD;cn1E+`Wefw7Typza3c?FFys|S)DDeQ^YBH43@gq@cJDiI_tR6jYeRFqlUmq}Z9Gp^41Wm8L<+Xui%8C(dEb6MlDCO=^)pB= zdlR_-Cgl}>L-r9edEjfN!(4#u-(-J!j4w+Hq1JS}H9%Z}OJ( z%Ps(Dq<)KX+%;BDLh1}*0wQ?62HA@2bdXm&eBRi|j1(SHlTn5x+=vD(uXUkb`?|65 z`;5$pG#pE+eq2|_(xu)3B-r~tqp)9gOtUH_xF0Abnfci{sIAG!StQlS03lZpfQ-K3 z9wi!qIB(QBWh>e^9cx&&6v#_; zYvZy@(Ls>3H(-hF=ab=qk`B^b6$%fiJELDV?!i@<Auj|9H49Xt)(|sXz*#V%%HW zES#u@$E)dWHKv;f7vmmc;fHuRHXnd5+M2Sc@X)d9oD6!Qbc>Rw$dJrR}wL!!bA>?!B_3}fOjLeN4T3>Ejrdf^Z-@n;@1Cax<= z1QaPutQ3-!EV^qjtx1Ahu`oq8^Roeu2FaSX@~Ilrk^p0bt1$K)0M!N!Th}*!Th~<9 z-PZdJg025sCE5CcjDaa^otE#}`zcP@s$2&#)p5%6MZ>X7bg_*Tp_j2NZ3ZTvnNF}+ zW4D#P;R2Q2Hao2?B5#dSpIGH&*!MnF}CD|}p_H^sI$39M&QXfWN(7!sIZ4q!7atkyS%=2Hk2DAvM23VMS`pzDBu zSY$9y-wYy=!F(QuSKnYBWkq?~j9;M`J(xFih(ul*m;FW>q=;)RuTCZWQ*DLdEAk{# z&o|lO549pIvSUK0Miu=_Y^WkT7X{~J>{F9*P4BiOP?0?cgw&l7asrLpK!dbaQ2vN& z7PJO}TQV;DbD;6BJ`<{C2H{rUI77^pQxLG}Vs7^ZC^go|z`=5vKycP#5qzzTVyhsq z0)QB3q=7}wkfl!f8!o*9;jBVnprAhK2vrh{$7L(h4vTMxPKp2p11FF1M z2vNi^GZWFVCajS;BmmwUgbB^OpYN%t2SFRG213&s7=;cy;kLlo71qMZngZBDTx$T3 zs{?1MUspZ+aGW6engu53LsH_#$V{rEa*EK@*0u73#>TqtYtbWX0KY(nbzgQOU`2Kw z5Y%CqQcY&Agt>i~gM~~-2LH5$Fe4Vi8+J*q5E73W(jsWQ>M}FGltP*ZHhMj11BDK% zUp_SUYz_SCj}i?0lD|VH(rOK5q8lLULZBKM3GWg`sm4+_gMw{|{Nh+qQrIRyV)M-Pj3XSu;ghcv!7ohj~FUDnVhW85j}V$(RI1R{`ME&!ls zcESfI9Pj6c%L4$SW(*e~!u5yIMlFUgP~3UW?QL~*oM4( z6x*11j7R~>BnaLx4y9o1cHj$SP?R}Fl>38+peS=u16pCiIL^`{j3-u2OT-G^IA(x1 zuvFrbf#;E)%OdjZYu(4~d;-Eiq5G3D0lTRlu&WRe^itS*3j~hv2<{PMZFJ zUJC1QCFFKeXnd|+a$GiHJo|Sv$<9~bW|XF@VgCifjFz&$Yj;>e1n@Mb30X(bQzBP6 zE-NDMftG^Lelk1%erv#N2HI(I;i4o9&_-=FUM~)93|BNx-^iHo7Rm#LtzCwO9Z=+7 zPlO_We_Jb(r2R4IpBOzLa=#)A(eD&JyBg3`WRb|OLM+k_oZv>C$$BV~^#MhaW{4ug zymx!eQKBN_nq=qMwK!s+3vXP64Pd1+olGA z@sy$_g(041nE0+6&EctRkY1?B7kA9( z`oWp#Mrw%*) zmuq902szN}wdv{EA&q4}*27p>kB0oS!^v8_VdnAMdz$Lh6jVQAJ*cuCRJ~Y2ntl_k zf@nCcNc4z1OaoOZ8n_(wA|?`mer0kG#7wKfb>iGAbp#kG`IkSXJn5OVzh;T)pCKtv!zjOF?qZD=f*}i z_8`!VLxb`F!yB2N@`h@YD9z$WpgD|-L25E)a5ZZ5jo6^7lR@GiLEdrw!$0gRIad< znPMw6U&q8ADWRd<2V@tNhC--HGz^i*q7WtucmNWQnInjY)yt;uMFO+}K)RDypTWJ`0jXV03xn^Il(wum(Cc2)oT7uS z{4yrs_Rct7c+Gl!N0d`PpSMDL>FuKoZShGM<8wN7PfN(beIj zVAI%`{OKNGO~sT{n392*s-sjRU`j})Q8LArz~!W5;LD)CNWJrM8!d=Z=tNx96-|R} zQzJmI5xfsAFd7&o>9)k}RgNvu8~`TQmbh4XD1qV7VtQ$vU;S5l4qJ51XEqeZLK1Wf z??GYxUVhlAz){yFz)In06xQALyQWfTNY8|Csj=`&k}M(V@-`C7Fy6 zU?Y!gY>wc7DGU^gYPa-r_!|p}>=wRm3W-OjDquMJ3f<6CAX1yBso{}_f;|ZHL#ddIf?TcXiC<7D-HqfTALmZ)K#xCZDN5T#SP|MBIE5M^ z^6?RTft}SG8P)0VqKlNZdWyQaD?u-IIS|_#oNUO^}^W7_>8wve zmzhRV?Vg;9dNF?eK)D{fCs~?;_N4~M9I6x%c`MB#@zu~3TGDXqw|g>u5kgL2_hbRY zUboV}d(wy!aVdHJ_)c;@<2r|qRi@fP?%d80i_!ZUrUc_N^O1}SPIhQN%u)x|7?(Yt zVBIIa;InRTr$qYiq1^&BW4rP&R8Wn42>Ib2oOB@vaCq1rfEfnFm#|avuH}V}g{h~z z*A64U39jTPA#^ZMCFQzFyBjTH}0B=G)X zpIhXC9faLf8!N-~oV@dyrC}Q@34}{QxJ4TY@D9oo!O-39q)cO)u|%0hjZ8nhI#H%M zr~xgC)JIFi`X6|RL>a<(V%4;oSZ3ukn)F;2kteU-#tJ2-M;6=!H&zn*Qw$zjB#*$O z*V6}M_#OVNcGW~{*->{(R&~tAN^WW)d`rhh2l4k(&I4`F$+o;3Z7p`|*= zh6%b{d+@ky!Wcor{$iSB=iRSLT#t8znPf-kYY7p+)0ie?9U-`}k|6Jhr4ZOynSN!! zY?|Fzp#_M>-HjD)oQTG$`j&63)B{{ipRW~}7(WJJV1dZ}iY!3CU9$^%#_oWoA`3-! z6=qS|TPyFtdMJ|h0Y#E#h$6$h?|DRh@tB|@i!{m3r(cn%$ha_*yh47dB}4#Ek(y9Y zkJUXsP?N&r+uCLc<29>kwZP*8OE0?~2;Hf<35%EA4?^jiC>70N zX|m-TE1!_yZJMCB!m|KhaZzJ6LA!Lb?i(u!Zm{M#Z7ijbL)ga3`>cntupS-pZ>&tz z;tey8`wZ2|DX5kis;mc9FP4y|-vp}=CpZu$dPHB-z|<5C?1Fl+7ZQMeF^XaxP`9>G zHdgkgaz1~?v}$In;;^BMiGd*g?f$@>p>YKTA+ZqALktH?n8+6CtW`To;EYA~RLq$ZUx>n5puDnQE$y zlPedrbmQbC4cX+z$zA(_^Rs3r^!R4>Cm*FE%ysg@LZWun1U)Z2kj?x$D@4&@+nWLD zZ$^UE8rAA~Dn#VdbCu5e^gP3sxOz_BIN2LC11*UxPWHEysOJ&;f|va*gwb)b0;9z;*FCkx@;w%)iW0A*dird+?xb*p|>wa zpJm!hr~#balvU%c2(v*4PoAMYnVyZgfjsHk!mh~_w$v1|NMR;h2L)as_aFsb*cG2O zz|%~Nw@2o<9qMhunv|s69w~z)b<_5Fp~m0ep{Vw4C#KvUIaHHrYI~%+0m+gWq7A6U z+am)plTlkf6=LY25e+@^EyfooY>!0t0kIdKG{n3$`;p1pBSSF>O1V996e``8&?|3y z1Yt@~ySRjtyghO?7LHZFWCqrEd*r!!!ie4*XnK1jlYL+Mgn=&-U95n{?OuYi9&WaL zu;fB};F6wP=>$gu-ENQg#T>Fda?Agrxl?U(-cHo|ZjZcer!d_8q0bV@B5Lc*CG1R}iap-TegE0Ov+ha!Ad^$y+8<=ZMzzmPrW)=#VXwn;CFrf%Ue> zOi-1@*GbHQE9K{knb0kh`V=-cW%6Wi{)W-#~HfVQbg0-IY=TmIMB4axuC+DKEO83TCeGiwq@j%j608Thf-vou)9bW%3NVp(j6BC|C)7wdQe&v>5Z8a`)Am;UWyfg8$VTc_#)w9=6}Zj>PyD zO+m)&Saf{#s6H;oXgHTOC1fE-#uvOchM7_n_k(x@AroyQ#nD8kJU_cYeGDDd|7`;Z z40r?`E?XS)zvyG$=*h>cxM(=+bso-<_3J#BK={7bc``X_m#4kI#NDn^1ciunO^qt$ z7>8AU8h|dVRo%#h-LAeD!?(2?8ip>9t6jCN;Zc?pIh_?Ia8StPYo(9QtXzKMS`%Oy_${GMA4l?LFot zQ5_*P3^awQIp8GRH^>c2mfI3{t7WE?U_PHE^C654=^!uYE0U`C>WWlp80?6f5U@TaBj_FM%3V=>yB?Y1rMx$S6 z&~t|wXl=onX(P@y1vwf$7Z(_Tpc6);A8XLxu+UQhl3%F@6&!F71f0nNf?9T;=yZzl zI|jW6AAlu_6u!IH(;oeRJs4zrP>KTdU?ML3V-E7GWg#Jt1Fg)3yS6cL`8okPg zP8f|o$)NwsqR%ks*IV?N8hwrroiG~x7=ymTqE{RA5f;5hqu1hsf5JRrG*5Ees1$YwSe^eW68% zWQbnuLnn+ze`SUiKv#=iV$iECdZ|XA=tC!rMz1jFZ7up_gMOn$pQ_QTaDmu_dBSM) z;|%()7JY_6zsZV!rbeHG3;qc@VKjOdgZ{KduSOL`_rqYLy&4pt@3pw#pP&;)qrZ-+ z1)ofYx(x;h!iU_ZsO$)B4ZW z&U1a3c^Wh3!(_F_+!mO&iEx%>T7MU~5`$w-vs?ljWN?XR%$|~6B`ldkRC(|tZ@7Vl zO(hZrk^_OFk;?$085n=J$AEt1&P-cfWQ52EVRU*qF8pJs38OIwAzo4BPg?z&C*ZU; zR%3i(2l{FsI$<>Wjt2d3tFZ=Dk>2;Vbsql%I?w#s)(NB0Ke=DGo^6dY6JSJdXIszG z=uup(wGu|7Pc!I8SafraFm33WrtdsPh}QFPvF4_qb2&~G8T2nKbhz#uAgfRBGP+}q zt;f{@SfJ*k11hclOHj`qjI{zNMFCith>H~fVKnB)2snhk*!Fj_LBGbLPu1u=#b?n8 zqtWj+=!?%X{heXZ%Pjg#jXuYRP8f}Tra?d3D!$0GL0@js zXBhM`_^63!Z>C0{gNqeEVKn-#27ReTuQuokpCl3V8jW7-Lnn+z{~Y5h`+k`M0=#(bEp z)|h|w%?rX=E(EN45?tv}Z!qJk5;m9|>Ir-t{KyOSWz_`?(Nl?taDNogbf2dHOfzxo zRIkrml%^ox!1q~1>|9nx$Cu+`J5CslIUF&I(7Re4uQ2HMT6C_50-Xy?7M(B}y@x@6 z+G?%Apx&MiyleWwu6gpoiG~xDT6-HqGtk(^x_shOQT19=!DVeqYV0W7CpzHA8pZd zHF};8oiG~x0E2#qMUNTuy)3$;(F<^~$|sCQ{|Qb^UhlN%g$DhRlZ`ryGn$YP}Jmt?oJ$Z8NZzc+${5iN-@e@X4?r&K5 z>J-CpwLza`d8*OqwLWyhX!IX3#6jeeOypKQ^ULI2kFX0=9d@Szh%qaR|> zFS6*7Ewt!rEqXc%Ai7Lktnvw?(SL*QvG4a<^eltk<|L#1s7BAh#VVgL8vR*=zLjk( zT={uGP`z(7%4d$~an&9Et_cm9>?uEvdh+xaOSBjT=s^iCR{4a{mwB1SlifCgI;UVt2FuyA39+)`T~P~mPMaw(C@M6b2NIj51lX? z{Yry=pGB`R=p!w9twvvti`5=sGu-a^_iQ)Y*cM&TPS31 ziLH~T4Tc+OFN@C}kJy}p2TygE&2ceCEz{A~9K#rE>tuQAVw=l?S*WvZ&Vh}oQ*@3h z{!%l->FE*~xZMp0>}2z6s(p9Fc1Iawc)5H{Rdyw?F&*5fry!rY=W%Bmh>XUzZ%6}Wi*iUh*IA!Njz=T) zMW%(eqfbuJ0=|*FzAdam*yelS4ka>&9UBOXK}V>lvYIy7q2--c*Dj0~s3V+HZVc$6 z?O{NDfkXouySNH<$p+&$5`2$z3AW7v2O|COAx+UoEjP^_)v*Gtqn1tMLI4MQ;EA94 zOksaztBUm2cP5Ct#+RR6j0OitgD|@sbq<{ZQY}SMo6)Y&Th@Ood=|c+)9v@H( z=NS0N=)D9UT<0`_^8j)7GdOKWV=oVF0H>e{oRPpW@8suam#A7u8(0IhCHZDIqrtS|E>fdApm2le=Z>J@u+zjQ zEdSdF3O9)UAtOWR?;a>@0e!#dvAdJ>BW@eJKKXrKQGZPBb-A@W7}4vlMK+;oQMkOH znoJZ%#5ZH#5o6@`^g#NE-sr;*d#Gbf7TaZbjaD5Z9t4AP$_Hde^UJs3H7CCuFQ{g! z8%2k*f0(pAm=wN}Suy>~cDscBl@;60Zdm^=x`1@pzX+N1`uE+1I&1p3l3Boo_HQra z@lE{7q1VlIv5&EN`0&mcl#! zkw7W0vJGC2uSzq6{ZdCohs$9L-u8e~X3VZ0Up+b#E`}ZE_Eb#WM4X>!o`XZcf!PZ; zo8!Axu9aMGk0Zk`E6WbqU?(7+(^dtPm_^m#dh~AZ6g!MWmmKa_)-8< z4BV#XOFbG(|H?{Zx64tBN*<~~v%G+vp=t=kfSWkCmxod^arF$GOT;m%vrioOWNObw zeDM))utr7?Yo7J`mo+z4Xel3bU?fw-Y-k-UZ0xqefXqOSLdtP^>DNt1b@VkXEoO}0 zU|IG@YmntkX{VAg8cQF9XzaERY9Y&NR6>@#K!g{lZQ7|O-IgtF8<||+w5c4?vzlR09PMquyL7=!iMI9v6BE7D0WYNCbii~O zj(9qQo}WDX@#4t;U+?_!Q+_X(vz)8W_XTf9jbK*KB%)5QHlw#dq|8AKh}5U^4mYqN zns@SXl_ar-w)cjAuyEA#qD-h6pL*CR?cIG|pno?o>-BF`tM|{2elTIiV?Fx0{cG*^ z9Q9n>*T0y0oLSqy^39#SW!So14yrjnuW3?kA^LLE&So^1{>0RlGMbzI_~_Fz)`Nab ztv%PrzoWio*7D!0%_Xg_pA#`ixRVt}^<}n|+6$lm58%uPKPj&!a^lt0oU0l9Gly&# zexISu;0N^&h0D)9^C`2GbG;$zG55XM zQ$FX^7*lY7R(>A_;YWQ*0b#TjeMOx~>C8Y3oVy~^Y{WC)$0%DBb;fdLl!+fI>O}Nh zbr8Z%{WgwFm`0hhrC_GMZO`iDj+jX5(kmb%ML1ZukD2^2*9$YTF=^^ticZ?N)O0S7 z&E!S!Gi<}0%CvsYzS6vBhh(c<23M{#d7VP`0?Bl?U+z|B~MYpGfY^EKc2UCS(bwp>zE)5iL0M z3FBRLI&*lq(>Z(+lU+4A91uodU&1*~Sv<&5BSbC6mVmT5gUsHG94`_BLG)U{nIh+8 zm*jI=X=i6uC{dqtw5rq}|54pxp83$USY&Q~Ia;#d>FOWnXfuFt+tgi+0b6T=hLNK2 zLP8YU#xo|=qd|0_NH9Sj*8%*>lWF}<2IgVF$g)LFI~iLrd7NQT+i+@71Z%(k@^m#uf&d~hL{xvKGfYbz-Jy)ywV?(v-8GaR1tqCTkaG{1 z2p<8U1YtOnK*j1AT8=J3meFGDVwzUycXW~_N`I1qX8q$Z8X3fd&TpuHoFMa*WdB&y z(4H+c>lwQe-zw`8zuFT$V<(^5>n=^<8K&7nZDGbCoArr1NO~B20#=~yW<7jD0*T)z zP|yOOz~F+9fVIFU1`ck*C)&!8m*^8>)X6@P0ZL&$@y)5BK5@SpPT|)7n?BL3KTJHm z)%@XaVx?jJkk%r9_=o|>`oq;tjT8r-p|vO@MQVSLX4lalKB30x4+s$J?GI7**Y6J~ zXn{XOTj~#IVH)iYqlsfgcWM;o8XP0gov<+?ixYCzB#aSV#p9C3hNY;Dh9ta4QW)8G9r+2!TE18F#jHiY9dVGSw*{FHA2YHzR5muGJfZbju zTK8dQQsY@S$v{I1)-9BJ7*|LX)e#VC$PDPrQcOB1K}#ekRGnoc#PTtJzc35E{9!tt;_{lA?Ro97IhY35-+moH zxz#BCh!;LJDnEFr7P4*IoTJnr*2$gsek_Vmdkikqh<`$?L{Fj^$B}qJ6Ncu{hf8DJp!zwJpJv(O?!F%_AU&z z_v>k`*Io~iRgL;uXc~K2%Z%5*_=&#uT5K=g{-UQz2Hh$MNbhV>RKA_9nXEu?;8i_e z;IhC4^~(J0{neY4NoBw6{mC2r-fSTtj*N9nS>C~Cj zCzJbMe2n5B13B;2wTv{vV@JT^C1bLCs7Rmh`u+vqF;urvDXHGmY^@lwVftBJNbyKW zarKi$-)xzFemkiJ`e}ax=($=>(9iuehD7~LMq!is*$wS7a;4VKTxw91G7Q}@`nglQ zk@`8~Yv|`^c7EgQC*jR)d2^PJ>!Zn{$R2!_sB=sfrjH+6qKyqOB?!{g5I`|H&}DEJ z(*ry1;4f0a1wwZKISceu%V z{oB`+w0{5YANmLMZx;Q;)87Lo>-BGnDOsQX`SryuoVSLcN1jgG)$ky|`sgjSz82>P z`ZLR9z5d*1N?M~o?KXaY-aIDIpBGHl>(3LWq&51}^Q?`opC=ecJ$t*?WWD}OHYKgm zpCN-cUVn1=cq!_m9h3(DN+t6D$-FHe6*QqW{5p&`k5)|f8z>rL+E4Lor3?Y z{_D@bOd@gc%0z1fch1kJV;WU|Z2g`(0+=Q20_I|NL0bj{$DE3BxclNnMs3CUEZ|0& zuY_Q&Zh@h(IH#Eh1v5cOkZ(AD+d^Z0{$x4PJ` zq8O4lTz-7$ifTntb^fv3T*b&8U!5`TCdi&Zs5d`5QlLKXXAha_J;ql$@O%`fN0n(E8}<0F z_ZUaZhi1FI*{-eKV_Y~RbdQmM*kjzYJt$Rn>y6JqVUMvKbQ`TKOzxhi`~;$<{%i7>kBMWm^0*a1etA4Xts48N|1CrwPquO8G3|k-PWjR4YKVk5Y+UE_1T9*UXDBCAt&Fj0 z$;HxTG!>jlSQIF0!2(xk`=2GZ|J>nhCZzo#h-3ctGernkc-VmU_cTvdQB8~e-zHW2 zJN5~-Z*VrK{a#0drk=rB`Ts0p4(b0GC)j>YEA;>SW0Tq+f-xmj{^yHeT37#V{+87K zb0X%D{%9yY)`mZ9*p!~N<)qbaqp#NOb47UHqp(*75v?#{wzj-d$Ap84;jRo5u z(>q1`Ju#i~``-rHA7Tw>?z(Atc;V01$}%Sx2uFymN$^24>1v*YJygp{7XcIX7pTun zR05ccTDc@F8U7G1;s|Draz<%gCm_Li)eOHCA~cWRgHrPQaTEMXMEOJb9e*%&>G6A; z$%w^37H4A>a%AKrwtxr(6aHYz51x zC9xF8h-%bR#%U4_r$}99%sI?(P!=?t^*G$NPWE%YFyratYtc`by`N@A!7#R4Q6J6N zd)!V##Mjc*e-1KMl4L($AC}sFTG8IcEMuYeBP?P(!R#i>>6NZ$QjY2*h7FPPQSn*G zyM8C$JL(7ca(;QWG5Smma8e$+(UNJ7JNF9ef8F`(WnGl~b$}Ete^FE<@z;(D`9t~Z zdmt5S<~ivosH%#e|w`MiN7xxPX18&jj=97{=R}STK>*J zMG}8M(2f33{>IxOjr`5P_+a_FAk06OF#xO+e~HgmiRV+UVvqIwK)+eW45A*B)W>__ zXA!5|>{04n9&=hSMpPL;0AmmMnmUIllev}j8GDTfE@yO_T1cA(5*7=q*?0k;DUle^ zOm-Q?h32bj0Tq&MFS9?t?tLzW^DD@ zeP}ExZS^oSoA=x5W+pUhTg`H9H7k{^&ip^!V{NNI@ND%8Rwdf%UOiAqTQ#)T(^h}u z+^4Bn`XL7j^xbExzTTv?)#*TM!d4Hb`z3Mz=d@LZ@aE#_QVw^mW3Rqbrzz~!2jSW4 z7)sRG>nBZ*{pXvoSm+!3zo3bu1KM75Tzka>a(HaLmu;X<+ba+}d;R{es7kcgFDW5v z+|XW6d;NK@X6*G{03_I}uQw^}bsEr`u-D`E4&(lR*IqOCM1NYxUU|mQoRUsquRaLJ zolOnoXl3m62BWhSbAda}WW{f<{fXk*t1lv@vey?4k&yV>L&AH)T%Z?&Zc>Coi^XOT zY1v%$Qjlpfz7|SwU+4I`Gtio_*VXJ&68HbR_BzR^dxPf#iyGEpzIs@WXQLf=$9;Lq zIY39lpx;JIIo)+_6s$KlUwz#K;gI?2VRYEUn0gQksbxcZJ!5L!Zq3+e4FD2is;@UG zW9p4SYr;m;ZA=Yt|L3$(_x@M=ohq zAh_O&MqKc(30J>#8}JG&JJV01BGWT$z=p;Q2Ktc;T8mK7i!coFIj3 zu6rt^oD>{VbDuY%xtc#hbK&~3@9UUvHB?r}N4C`N>>_-~)!8-Xt;5vb#^ujkb9B(W zfb-oBnhI9T=$1HE7<15qya4nL>R`wEZ5(PEK-jmIrBwmAc_(fQ7(9n~e7Q&6B{cQN z=G^K6w|ci|fUJID!n^@Xd@cs}@>4D(YBec;g<`&O!q<4*&R{j$RKJ31m*IS@F%gN+ zCWLqN>p}nei;w5Hi#pj*=Bla7b1|!>r!Q~sqimmc5_ldD%JsX4w4dtt`M=>Z#TZzmY54YRkNsB^{VlqcKULKv2-9M9f<70y!H+e3b&oNLBYS&YpjR%eXsDFM%0Nsj8dhB;!7 zoJBy8%ovyEhDT77#iOX&sXIhd$+z{(*LZK@Qj@}fK4fjS#dgm!XHrKU&UU!tC(FKa z;2-qlql0E2ZZBFn>8fXe<&-bb^xSuS>o3tHz)4{}zSqhfJIxjE%9Ic;q^ZLe<)pV^ z;+}0S6Wh~43f1XC{|a`{a#h_2Ysrq0i~ViH7oW!qbr0;!8vM8^W?K$^ z+4L6%@v_AwEql`-EV^uXSw9>U_DwxuFJo6pC>N92E@(1Uw2kt#=z*@ul(45WSPYY4 zwP!NS>0kyKV+5^^nw&*QX)@Dygj{?k69uIorqg7Erqz~=8s{aOjI@(rGDK9zbTf2S zU$y{~5qi*S6xDcn!84h-HW}Hrh2H5KWl9KRp3Gc;iO+*36IUy#S-e{!CS!;jlUb5n z<(iBL(wfYhOJOn>GlprCDWS+$hk6FGE8%m({nS}yu>E=VOY zyLwB@Y;X380bKQ#Hfz*9=m?2dvnAHVw^2FBv$Wo&HPaIiP-8|X|YDV zMWY5gH6$r!KHTskCH%HrjXECG>nCXb?==Wwh=OpaL68!Sup z5QT;;R^?Lpxy~C6)V6tL@2cS}^xoqehD;WXN7`stqd(-XKJ5asxXm z`+O?{A}!VSc>@DSsf2PonNyzcWrF@jv`_c@U?R?~!M$(jnv5*vr>|yakuTGOaQS6i ze+^Omj_t}2nlMjpkCOsq_cDDO*KMT3GG;mIF=Qm>I%=&k$tutcHA(WN?%Lc%sDm-q zjcg=UPCCZo-CI2)YsIax@bMoz7rxLV4s|N{(qH1wU_gSo@mY1BEjY5#tWXv+uIEDb zVkxS4_BPExns6pGJGhX3njfOH$vu*$MuislCj!e)?#}|5R0R9;E;!ea{{Gx#ApQM$ z)P?l-Cr*1P^R|$hVn3-aRewa*1!{MA8@)eD(HE+1nT5EaJ$dU9g>hB2ndM)&Dj-0i z+L2rd(n{JbXyhl=VAr5T zUXJ=Xjbf3{QP}6h`e%s-z?OcD0(xx`e?LHt;rz)Ghs&Sj41XCM=`4RyL|&|ytQUXD z`<)_08EA{N#S~$hp(Dr<+Q$|{pd2dB75l@`(H?ngmT`5zsdl8gfl|Zt#}(uKT8ywc ztmmX#nKt(&K%bNNZo|JP#xDh8o=`w;9W~u`h{IV>pn8*Cu)iE0&1<&teiMauGSzdX z8uBp@Pj{ib{z38^lNe-}kHH{vTlzrZKObOLQ!`01>4&{cAA|5>0L{SrcdeyEdFmPH zPu|GD-mmXH%xDPH!Ch~I|6$AV!{e9v=qV;OQTg;^;-tndvXqPxr5Xw~=HU>{$1}<} zIbq7PcTXpU;Ix~`L_1i!-dFAM|) z?U#Uf0eUn_cmO#Hy^F_#*`gs2hQaUFu5GN}o9+6k^7#z7arGvu6PP;xciKdQejq5t z!m`>KvjncFx8gH_Z+Q5B?zT1KD_1ZivPNy7G{;&3k@eo+*ESJZe>FPxN7fGQpwg6) zwLj=3x$%A=BQp#eS^p|f2`;=H24D>(;g80v+igi?eH|1va#&{NJK`mt% zT}5_a+80@+Q4>Z^2VNku=CeS*x16Uspg-#uS&M0E2yzT|>kwIQkqN3_fWF9DVk#L~ zZ69=Gm0Y~3$m$8&Gfsv;%r6onYgdm4ZN&(xZe;xro<6+DYN@)B^&NRQ2{09itmiz2 z$ht%(J)0tHlVd=tcpBq2kjz&dn3iw8S|AluvJ2%}kzItVs)S=Bl$t#fEJRdDy_)b7 zt$d0Av5?Eh>I6hFnX1NtYJM{)hY^@0)jMX^WOkEa5{^^J(X=}wEv6O78qgWm@33pd zNd>?h^)^|-*2`*^Xl!#->^SJ``bI@InNbITUmXQccX4aT^Bo5F5<|Vg zZEvWd#*zeT-~DK*;p2Vet+HWlV_hC+P?c6D?AZ!Ct8M-InyhYnI3%%bS9E7__4zb=fK!9 zgBn<@22x{ghfHB7uTO7DpG^4yhB3X@PND2-7-LBSV-NhthTzTWC)Z67Iz(B`;0Z>! zH}10Wp+wXQDNLXfcj>gRck26)S?Q37stkhG(fcnnRozp{a6Y=Ar8x$ZKpemj@L{;G zLysG^1SktNi)Id@%(&LM1%QNZ#<*^-77jF=M_Gc_EJiKK9LNUoINsItgg^;Bneu~W zcC-4@I=Yje%5qX!O?80EE5B$V<+zQ{WeE(3B?)wobm_LQKfiv6pXdq_y@Ny{@m!bK zA{Y&cNr~Q{>;+9~N#e)5yuK+CI90g9w1xT`j7;5g+`WX*Y#<1z<{jCw@3iGIe_kn+de9a`B6T7BCj_)_lv%Umo8awSY5!QF)1w_DsW3 zRi@5SgIH%h;RIyr9!7VQcyH^rEk82ssB2)76lk7sYMz{jvk)DULM_vOLuZ<|EuC`H zUy;;~E_(+FmJw|S6xZ)Xjs$9ZTW8$wOYq^cTLpd9_56+IVxCBTx)0;#4Pt&AH)CKf zWR0ZB0cBI=MwLM8jMv*@APO6=r?VWcTV$+~0Y>eB!qnsS?uZ;58Is29n;0O(MPZC| za<%ejW6S>WdI0g^2+8C1bbvFE?I$gSj@RA4GZaTBjMs64`_uQDI!9+Zv!gy|34Dwt z2|;kHHI|wguebR&biCfq>xVa9SD2O}B07#AmzkDWlF-uN)wU%wULS9;z47``gB>zn z4}(G^CX6=Y^&w!q<>Pf{Kqm#LBkjy5V_aaoo&^b0Jsh320PkZ71jv$vZe0g?>0lKc zuZs5k=C^`3yX)<27lOYhl`a>W{gg^;BDfz}Sn{vEsZFdZUiJ>q{I5Mbb~y=J=ck$-n0KCfl2%g|dO{&=e^B-}vD(6Keqfn0*S*7Hm42m$pR?D;<6^9g$`(C&o8Fun2EMX5V?_bq&6F*vHyCUugNR!8h4n9-Fg6sx zN*-T=C!R+L6Mzf8ME5|j#1O1J6z@;i-BgVZ+>*Kz%@eC;cl1!VH@D-LrQ0|?pLh0t z-oY;oAL~{m^Nr?y2X9R@=Shf-GVU|Zs2=b_o~~l|5>E#KihBu9F@}^aE^M8XXf3nI zKT!W-jDG#2AeH|6LZv!{hv+{*2nxyO&_(?lf=2&QNE&C`#C$eH|B21bqMA}SmqPy^ zAyPM^|HC<+|2gzOcGXl!kAA=@zKH@}CXY4MtO*YUzX>w^H7O97H9%RVn+Y&=%}Vqd zT0De7ih9zUA9ymr@dWe6!Wjl;TN(c3EkJ$ls3KctT6dv7%v@Yjm?0QaTNzTz>U6XF ze8y(&n}YUL2re{Rj88w+kpB>j1~)h)h8T@ohlvsT;|9g?Iw%@(1tU$yczyoRm8B6* zvD^09rtQBNZpV^)aLbUw7mP$Z5ET|XO#gZsj8%$U3%7cn;{`;wIZ_e|2vRlF#Uz=I zYM};$RKg3Z+tTG)^W1F9qSd-Xg~c}>B4rq+CTH*ptHU7YWyHK`oGHxv7eQ{;ysH4F zE;5>{_?((cGH-!7&cMV8QywtyYSQT6BJ&nfZ4Id%g;b3?PrS-AZ|N@#M$B6KIY`x701tC2}GZD|OA zRRrux7aO~n2J$Cd+X}O1nXh4`lSej-&`lnDEB4QTU{UHZ6JBBHfaAy;*B`jxn+xu@ zIygd=qUV$l0dZh)DfHI!O-;QWWmC4;Y55E#CBN`79yQY@e+4 z%ISQ^7V+h0H*+mDjk)Vr%UKw1Rj;A0rB?N@m=Oil?*<5JH-=ldsaVw&I>K$BRVB!W zp#uXl-}TCbrhM*KimX#PC0k$3Lu{j1Hso;;MZnQlZ7E$hnFr}zkjD=)39S{8sB-jT zvcCNg<&*`5>@yk?@)qQD)KrHeMj5nf*M9z439)n`^|HmqtuZ_Y&JXJoe3^{$Ejn+k z&!sd2A9CLKe#(qrfM3t^#&^HlV*If2!kk}6FAKd1ZnR$d;V+>a3c0jXbmcHEyhO9e zvH7+WAFZ$xDmpG!JG?{1R*$b9)h7v(2C)?Nd}b~L2^nV+muTb&Phs7qvP8oXbS;&f z5~FN!vm<@Wo)ubEKGBr&83~Q~<>QB>d$yqC{Q#CVB)}?1u=;XImM=X<%j)nS**Q z!;vmFrY#2h5QF`n_cfJM-oh0#Acv$Rz@V{Q7rc`Je^J0?Vuu;DH?bpk=24_>4>3wJ zB%H$#2)YG+x-pmT({JeJhkJAje00ke$6G#kZkYuKp~CE$LB5F2T$1GO{t^uVEm0eK zG1rwdw8UxfbPj${(L%Vh+kdShhII81gsxRI)J27gh<42FT?{ekLY{2Dr<%$(;CIr4 zQulHp<7-r(;OBwIEcO^vPkD;qbRld4yDc`;0Z!TLUQ5fXIidb?Mh*qeH}Jd_eE2h z?fZ6!X7_vzXpg7V>>jjn2)JdMC3lJH#F~n8$f8sVyoJMPvkDwxpo{{s_y8m-@JcH1 z3~}^7MuDmHSET(j@Q_14KsZ9eWt=)1VOc};>Rn)@`gul=Ca`7!anw+H*=F3~FI$jZ z3Y|o*J^;XGegQamGDn^35x&C8E0+R)3D8oskfX*dqqxl$5`9(AZd`XYHJ0lf)zglA zZeT4@JBd4SrVhvatFJACZQZk2z2(<#as6JQu+phq^`KwJC3VlcI_`cEbbJ|WH^zV( z;-mhe_1AY#nF2Ja@7@q(OZ2@Iq{8$)uckSD@Am3C>ifzNeV^B2eIE$}biKJ5eQ#%A z#i#xHe&|Bz`#O={MwmePl^b&Je_sDDe_!03&v3uT-75L;`MdqzFW(Q2B7V42488v5 zRGQ7dV_v3yapKHai9B4%_D8O%8DnZ3eBOQlzISTgeb}0D2hTg4#WNf_>H%6NO5`aF zB{^z}*s5N5{vIK^vRb#f+)T9-j;K0`${25tMe2a7g_7OR*hZoI;=tc2{gbIFyvp2~ z(}eYs?>~%u3&Q2Q68006ZwD)1G3|Ai?;D`#$yZFfS^18Ew5)u8fqs1QEv=>?DQ^2> z#ye+0zCVf2{|V$P<_P=U5>IkuJHdWW#oRF{-!)dgkcye{x}l>b_B%gdzp~2FtbDIu zs6rqVPKJ^^7Q9Rp| z*<7=-=>)}D+k2nJ=K1z&C@*MxYX(C$mr>QNAe;5_=R1u0Br=t#3X{cD#4HXU;CZyn zPonB68Qd7}FkMMr_%PEI&(rINheysu^lW*#JQz81xNj2Gzv3NLFE5~UYISs+fK2_X z`d&QQ6Yd(rmFL(C7&vzndu(0DHZzd*lK1?eydO=HcNL7zc({@G(Z*~7^7c&^nwNAX zXnKg#3SapRjt-UCe*U)-~kc>jp@DTF`Siv-??7L?Hl z>7t(6bXse72QdM{Gd;uKhJ3hZ6C;LJr6 z?M)GyroDZG?PZDwv~GKc&!+9x%E2bJh>d&w>neRW?eQTTrz~1@W}=Dyy*10%-ig8X zj+o23)@^Tyzr9a6pYi&4!jrAv-XS`~$O5FgDA?Y$j0?7Z(bkdYD>_8#_Syv7d;Y1` zZ|^jJdpDXv0uI1^%)c<(%Kgg}n#Lb?4z^eRxUape){$qG*q~|e31&QdIo>bN4QP*B z;RyO1I`WM;bHKgo>u;_=DQ~ojstL@b8Uqsi%}0Ngac`l&k~D003e-0;yRVgzOYOdX z^eg=IuL;sW?=h;!(0_z|OT~Y1JdEn&>UnCHrv)eZRD~H&6LZezD|kQ123ZuiM8QJbAh@QEbIU#59vh&YqlXPbLI9+z(} z-*QD++2T|uBlYvm|NrQ1nxB~8qy3Z2r-J8gu|_V_om}-Ehsz|N2-+*6y$fH@_|*)2 zE+5DpRr&-#CHf#6Qx`D{j|DZEG@q_p4xKay+c)%z7+ySjCrY&O=)K2$ihvWOC;qHg zVCciW(l72rua-xqbp4ZI@?f9N(sb?gO*{FYeZITy{CW0bzrx&)nrrA;jbC5E#PDIK z(nu`EJBNxX;vVHx)KbkcHSUL9HjI#kk)12}uR%g%P*>)_$5Ln%W z!B=vmsK#+9Uhl8HhMb3s(WtSa$oGTZegwqjZYRSWy2^)vOq0#wF)p0jLKeTYm+Kn? z5{@dOPZ*Pei+r~{EFED(&tU?JK9TfOoQtmK>q3F?X}$H+?x9fqtb!J(&1C&dvl+8V8Y*7S zDtvbYmZi4TvA-zg0*s!9rA%8zf3xom)!#HzoUFe!5BT*r2EoPC-+7EYf2{sClcy_J zf9Hccy_qihI}KS^f0v<82!ww9{gOg|b@#dYyG8ex`nyhu^Q_55heLn;A4OXmumSGr zPu}8*Yg;h4RlEHyVt*xg zZ$|&|^*4%Ml4!ozDJ_H_=+&&-;kct87Dm9oOrx zerqHAlnCMlPMJ#UvcR3Ab~mCgQDaQ8z-)1k>AfoQic8cFRkrwS+N1QSe<6DG6ocuy zm}jcz^O$Z!mXpB=W=&4|JkF;W>m0Scm{N^8*+>v;&N$z~iNiwH=((@_LWR5uk*=n( zBcKLD#*E88kg_txL^wqROyU z3>MQAt74(4`TfZyu`c~j&2N4`rWNK*6bNJwi=<*D(v`$tPy2-7cLQ-IyMD;J$y$t8Ctb^B?qJtt#%GH6NrSKgkw zC#l&8!8@e;$&zfC4j zjk~$o?giG*_^FR2;711sbF_xXy|Fd{q1C7ZID}*Fol7t$0W6bX4#Bz@uo%G#6Ts35 zR!FcfDK1be;KP&tP?mh{Di;zE2msvuB39^2fvu%-e6R^x+Vr@SwhB_E)H4G71Qjx$5u6m~Dsl zRa@M`4)Mg1Jm=s}Mh_%MW4MTAI(z%R$VHeOLi2oSCcOeTi_-PiuQ=$VlFv=u%%D|( z2clTZSBKpA4`0PBf)WQGHEM-)fs5O(O(wU}nVr?Yjc22ywd$MObU&JU1`CzXYkv8} zZzL5@;rpsD#XOpp508$vP%^bf-0LVAt>9Gh+0K>E6(SNNpGU;fTLgpU2TFoA%E;B|w_xrKNuVyh^0u`QfvoiDdum zA||kr{L{>z66|{qV|6jLt;g}sYMDsD=&y@0oTl{`PXBeGO8+Uj!RJ4>`|0bj)btug zD*KxyzDN28iL#9SRr>Akc*!(JKRA9P2zcY?B0~VO!}#}oMrNPr_ZeMd2oNa;^q{{B zq(|=naTVgO13hp4D~L7fv8IMS-+ad5o7Q@Q?44O?zTT4udYMU1y`>@F9MU6chkm(+ z^dH{pGJ<O2dl4=P6YVocuL-)sIL=jW zW#<|F*sKswxsH-R&-WBO)I{H0r?T@IEuf@1Oigb@xgPCEug5yjbM3dXTL#e}vRu`! z!Xx%6_63^jrWK#nzjr>UM!o8atStHTa8iG0XO*411=_5JjJe;A37kwCOu{e29`F)Rq?+wT-?l7dOpy%AItT$w4SgasMBCR{|JS zb+zvdGa-a*AfrJeJ~U`lz#)J}7M(ys2TgQj6E&KIB$!A@rbz}tZ4Cx2aU4sn{?%&x zQ?-BH8<#3jm$1lUT_V~R>(aQieHdHgj_ds2xyze3lbK{<&{jJGcR%;sbIv{Y+~vJ@ z6RkeKavk-O^;_CvR5OU`yZ&|>GtrujRlk^)znl@juqvF4d)CE76VZP3`VF*%jZQ{f z_5VJ|_SrRqYya%{+9$*EKR*g@%FG{?ujr?IQ9tF!MQB7M{*(KupB{)!AL%c)9<8x^ zEBw4l!vA1RI7&meC}Pm(5l;?#U(iIayKKG^C@_f2^{!Tmb<#P;6#Zke(s<`*iZBA$ z?G~yP1zr+ZkW)zHe#Ym8PHqGA+j)W>h_)V%$7xlf<2^CWSs1PH(_2Rh!Rh^yPb8Aw z36$L*y{DV$-G3D!B6^=619~46y>r0nP2*IOeDC0rmh@f_54|^W5~Y0I2EDgxpx5>_ z(R(465!Vc}KD@>=+;jVnS5 z=}?35AsX~#t_L;FIESPme@WlHSA;VYS-yhw+r+H7T-vJu$=C!EW&DV=Mo9*@fvo=s2Z| zRxq@hngNZ9M^5JT7{r_vDOPiN>)U9B-aGpj4Jv#e?ePtzzVUP~qI{2D`9tLMeFg_x zAd|T;yiQ?w2`X(hpwz*arvH+URsQ`RN@=Nja|;0gFGMteqcGkNQR%Iw;bo@x`-0vF zeh^0QTo7bhdepN%{yrGj5?cHauYZ=+zX~g{`MH|}Waej? zXze~y-jMu{A5oZU zD!8@lkA8b^`tRf>cECy%mHv&FN6;_zsV-dpKbP#}n&>~3D}Ueg-?%9kqs9I4C%w7& zP*y)c`UInBJ}(NA@kS0;@dI#PbeJ5-gTZH8uCeFtYq1*xm>`9ZOa6SP5lJm_k z_r>`d&a&fV5?>%~DdZ4zY(Nb&=e3G+^eLI>!Er7mFhKsJ_rL6O-v4=KDf~wEKLAw! zzZ6vp1W5hQ*>_APQKJ7L6ZAi7n5FP#lM@DFK#f7FP|Kg{mnwLq@NFzhok9&#l|E{{U{(@ZiAP(0{6zQFOr@#~^hJl1D- z#(FPW{oD|)e(Do_)HbyVuJNiJe`??RklVzMfag+*AD*rO90>l7e(*oqj%g3&&2S%`^GX+sE~bH!lrN&4_rmiVwnQMpwvuwqczAAP;>UFGYO%5eL{ zm56hS2R)fCZE3~{1=@;XJ8e01Oy4~e5t>gj9wPOOs#1O7V?bva5H{K$hK`b3-wvnm ztKbVmC+xgl0mUG_z#jp{b|_;rUp>*-*VkXB7BsQe4AJm4t_;UVZ)0&=qPxBlzDrld z!q;=@SE28%rdaqk^ouXNKRh&^YPccjIDuHKk%pt38!{|&HYOAE%Q`Uf_^!uhq4_*t zWq&EMH-9RB?vqDZd}7sOJziLPvid19uJKjR&k1F~VL_&}`j5R3)#?)!aA6hatd3>NB;rF5*@~( zWJD*G(Am^6xPx0y#;E9jVH(~(*6HX(=EH*=I^@V~z|Bb)P;a}XzJej>0F`R^TDEzX zNYX{Ts+PUlqnb(7_1GrludwSgc!wBT==6rmD-vl`eAf}{5})_`h=;WLW!TEz zS{=d~j*r{JaxxcOGI(B&r>IC_N~J7%feR_8O5s5%i3-vv*DqWq+J!aUrJqltL79sn zQJE`NG9^$~CYHhS@w*Mg>~D2Y{CJf-`8xS{}mEw9Q1Ro_|Kp}Q|b|y|8HrO z#6drLnR;W$F1qFz(SM`-oo4x4h?zL(m#THZ=!d?N(e9u@h~~L?Jo?$R1Vu8JZa+aT zpAX$1ze~XC>P?J3Z3RCK&h0)a3Y;c|3^aWB@V`suY~nQ*cjK>GP=4!xk9#B5my-T_ zYQpIEkq!7Z(SMWdekuR5+HV{Ebz$;f-}o(~f8>Q>^gki3`G2DR$NE0QLxZzif3C{l zgqEE&2*i{mCpJD7>0*99v0*AB0C|HrA56LWCNc(Mcw$LVEdDMS(g23}=fgQ!|HD!N z#Ona*FuCwH&ci}S*{FoonZAoC6V>^)Bbj#nUOpk#L>Ocg(8cHkW>`8b)CM?HhUWaf zV*SYTOsNVOnO{|&wOF)<5q6C(yz{$nRJ_(evp7`WQogA4u)$EkDzvAt}EXmqe2vC=63LLw=D3->Ce$ ziPpi%Zyy#-G%iLjs1*yF*&*jczrIq|ACtnIGYqAE-(x&mzkCVAzQx3_9kci7gbzCm1qc zzNcEQUsHi91KOj7w6S+Asyz1%)=HM^t7!==<#|3=K0}_5k(9#ac~NwEejH;~k2VW+ z7*?JnuLUaU3z!&=gUwZ<5$e z`WZu>7f5Z3)K5G$?X^CdT}q9RS&3Vok5;0}HzCh8)o5rivrxJIeNq>xpL=P!9g=4= z6@}|(jPV|nGK!R^@f5O`RFCCdHz29rd_c9-^!$xKOZ<+e&EGeiPUEAs_ooefz?#oX zsatS(wt;$e0Pqz9gujGF;Q;X8GeG)RiD9VqdR9yfN8z_^fcR_A85sS;&K?;2mUH8Q z#{^2tcv?f6UeILjHd{`2vRgiAbo*mIXcXo;OdfPJ>>)dA>KsE}aU7NBKTJpEbb!ST ztvDsWiD%L&`J{j1eynS0^6TTA$!HI%NZT*)hcodKdbC6*2)1%sY=_Cr=od16j|3cYf zJ|!@<2TnblfBU`{CFdU6)|-zGaApSuIFh6SfkE{2)CGSKBFR@c}@{$NvuKsr#Dgx#qqo z@>y<@&))zb=(&{S^Rk$dzBc)M*&c6lFyPbjTJmb zk6ZB-9gHK)6qRyA$>-aAS~4d$^6wavDeh{@AZ(e!C}Zl)7D=^dpz8Fxmaux=*T*s& zA%%~KMbZBR{R#O;Xi4nkw_ShadWerP(?}Ad49mR8MgDgQUKo*Z4#Uq^Um6}(_LiwjY<5Uv{n!++2?o(tz`f48f@?`m}j)t&zun6J~yHunr~C64-w~A z>59LP!Ow+KbL7YTSiQq0hpGTllSOz&ri!ou0KJ5Szbn-Hjoa|C5l#=9H{`ebbnpX` zoP;f3SZwh%y^(`S!E^;3!DJx^N9p{iOs@@h4W}G4|l$6o#i# zjUL(kAMXptjrhZVBIB>+9ILqtjQxX$*eKUMZg7RE44i(oqqkf=pE{ZghJ+sDDCo4) z1dxlGg~0lM0Qo(ljH6YPWsC#ML7k{Y$|L=(LCYhTy1|e~jHAXG)DD0m;bEw}2ryp7K6#1kdG34=v?Csw2=za9MYmP$r&C4U@dxMrovg~@XH;*x1 zCdfXIlt=6be6M{YS`w)rqt6_)JoXa`W4y$W$AhxZd&?u%1G-lW722;;OAL8vf(5@j zQ$L2rOblZl4gOBzZ2<5u5oa;s&F}MbX?gTJickTAm`_xT^`BFco8jrZp98r2quH^GgcSN`N=$_!(-1j(alJ zE~S^j(c^p$!f61mo<7-~DPQ@%(?m*R7%961DK`SOJb5}gIw=GQQhGQIj$ePlNx6cP zk{UsZk4Wivl@dPZ4kQ)6o{;@9nmRDlA1Pc@X<9V;;|WWsKbC(6`Xl?}Ixr=LF!tAd z^+z}7-m!rs8Ay8+c!Q3is1bL69BK`b^7^M{Qe=M&3z70aw?!pI_D8uO#UV&}kCSp4 zYM4p+xAaHbtg!yLgp%RoV=4;?;gwI!LXhLb2Bu_x{N&cCLXhL*JkGr%lR7n!HUW5p zj*C&lEQCJC$5kd$=7o_W`(qVQOHz`elOp@0lhfc>OPv}>Tf#|s`<8H0zV80u>sJlU zpAO~F*Em2*m}N7{kEimg*yY2iyfAioH{`D8#4i5>mD_ri3ws^fW0}S?&%}LwIPu|s zHW6QRVLhkcy^!+|;|YSPzW95^*h}cEW|PA0(t`yE!`P2_e-@Jr!S9#w&&CPAOTzze zobXL9K~F=R@SFI6*`=QvC;V?u75FpygU5tLOJp*B#JQ%gnJfP=IL{HcIJosUW)i+a z`i7{#CpY2p?}gunsaQUgMvDsn)u$XN{M*2JZ~VjL;x{h(<$ZUV#IWXWlgE>OY>UP9 zwproV+eZJ4(3rxE^+@0Nuq}aXqimkzu5TYyePh`h9gD$E=y_$|{1|T_#ElPAH!WC% zDw5=5e|mx=2f4>RIT`D#8A5eO$W@m|e>vY!0w^FS6jhS-qo)fsLuTmEV}NTDqdx{s zZ-rcyc=UxcqSJfAe-ypLMGoyggUF^`2tT;H*{`EC6` z@JRe#+9Tp&{5B#}@_WM1`{H*u)eboBj6;p6{9;y<{rlOJZ1xn@eF4>%@4dm$5hma%5O-YhkvvDJ|M>|>GNH9M%s(tTaYRF zE&Ewt{C+~U1CCcY+i5oeZ_rVM8d3ShL?Zk5u*nCafBRW4eGtB$!DzzO$NGE{HKxnB z)-&ew3MbWaaZ!m$vpF>N(0WYb|NMaAp9~{sT8~NmtKwhpxz65*6NI3#K?s)@@bQHz zrgQ%=ECvR0(}S?9#(WO;>HVwnxljhv z@GiO?Ril2%HzeWFONcVT-eUb8&MRGD7j@?l-hOm^k8vI5-LqJ~WIQ1s6uu|S^ra1+ zzD};AlD@wjA2)sAqSp@AERX2r{q46S{+vwIU2;gL4SSR+riQj&`*)6y?rDpPDbD%_ zaK9}1%caBjk3We{Rc!uRS0=M&{tgtzF1>Y&cc6x2NtF5~Er}%aQ8^VjF~6;T+lAYa z=w=hwCKsqsH=AH4z-6T{CF^nWW2g1J;JTb--V!0+05h?3O%ARw<3D%cYF?;6jKRU*67=ZLOR9^kZgtR(Y1n-2kz;h~Iad`1)*SOf0Tk2Nxo$fiUu zTcijGj{9XBj-kh8UPZo@`ycR}zjJ>t_n+kcBiz52`y06bI``Lbe+BnzxPLD9i@ARy z_j9>_DECX@Q~R7hoP@%j(exZ}ky??QXEBvuApzIJ{!iQ z+paU%fbPe@VE#76Q>-vF-qENysL?l}A5l3sT4g}tZ$a&Luif2zoO|t_=5Zys!U`66 zMo#-v{4YE|`Tm`A=?#+^Idj_zY;)VrN-g0pnj}ZVM*No2?QeBCS&QiWck)Ya|9fu# zzLO9A;Uah2WjRj&XBkJh*wUpLN30Qg=UsYgv}nP!WW5-pA-K)mx-)b7n9H`i{XppUm(pZWhh;Ss;DYE>5u)fn*L*tL#>+E6 zFgaKZ61BPhy>9ipCE3-Xfn|G`iT?wH%UBXhcsUACpz4>WFg?qV|NP`qC^O8MgY;Y>LneLRbS7VnF(z*DI;3 z{j*b7UzWuw3ok9=rRUj#&$`#Xelh+eCKi+QIuN~9M8naEo2|`%_Q37A`uwU=iks{ooCMll{8ccu+SPf0KPpP8V|gGnXNw z$loJ|Su1upYw+BWL3MqH6b5G5{C_SEr0pcD{W?y|_Wcb4D)yh2O6I-=ad+FzIX!@% z+qy5u9XMAjhB9KBxB*4_eV8=d{yBh6dzBwv;g5y`*=d+iaL*&a#h*YY3s-|WMhAHTUkNtr@`jjLjTqR|DJsw2)Njv zwj1Xko9*DDU^6IWvT!mA;~4=5yTsC-r-&pISR6xMwoJU0j52JddcMlz7EXKbdHRQedR;Z2e`*3E1a{!|mX? z0O}qJ*2mz`N-R34XP(iQQak7oqK0~;=VK~_BdnG%1O+rPEgzi)2FtasgOKWbh^!t)d#{~B5Ua@c&Dp=vPe zk)hX$0vAsz_J3KB@lf^*@OvrFr3(FjnCt%&soMV?^JQ>u>%WGqJHp-i#1MDja$E-T zFN=@gPqdf}yhf7~aB;+F<+Olp`SD2Q#<}W;(bH51uuYS8dodj>c;8a5))+48A@;~QR>P7w!OZ=Y{`d@eZ zU(|PMWNr7;#Dl+X^ani?+oEEBPa!0eTd;|aPD=bci;>cBxl-GMIkyANrhRxO9dxX| z9LOtoxmSO}ptDVrF-Bz-cVJD<`Vr3W3S z{m_C%RL0t)N#{U7If$aK=WINE`e&RD`U{~h*bbhz0L$UG(V;+uMG*R)Y!1;w%#)!Z z6ucT8L160Mx$hxTDHOv}t;z91iz(qO#-!q*wo>>bjG2!EhY%jGJ$a90|7?&bYv0Uk zukGOV30Vtf2LnY$;a_FVV#$d_7npe|$xC!VGDnBC5YbBY*LD!)V4@yCSQZGDGYX%b z>)%o6#|dPC|EZv(;1}Xl)`Eqe=ujG>q#rayOOE13lN1P=dI9Nb+4%=}u`oc}8V@)v z=CGcfya$t?ebc&wmb-$Ey_Z>7Hy?9hLxrQ`>s6EKoHD~0DZ+FPr40XzWH&FSRq`Tz z)#vm|RmU`w(Y!zpGnx-fA+VWSy$)eL!AmXLW3}^>Eo#} zljVG9EREBfbKGP}S8pc+Iw-3NB{>Vm!4M3|1H0HdTEsW!Wbqe2=K5cpOB+C1$m(EjMY~^xbifTY$NJiZt-%7ixr2_$QV#zzxDg{hhAMD< zhHyvAa&UI)b@D5sw(IeV}fYVBHz86ph@8pMneoUe$4l@iz~=dk7@ib-UV zA7Jiq!i2*bcPEoUrH)6%TxgKnQ1=kwea1}t)#+&?FxU7p-CMR~F8z2*FzB;vb8p$5 zx$jR|Uj}<45&M6%n~dq~Sxjg6OvBu|asRVWTI!QivGG9#<2vck_0I)IN)gfe!Hgx; zE}_v!9{Oca-vwa3`H(Mze3PZuAy51@pOj6QBA7mw%I_WnjDfUcpa%NvYb`7`9mYz0_Dfn8!KHct~8gVVDX1wCfk3Q}tJop}&p! zB!u`jAjTh3SjwctwM1J*&(|AJ6cJG{J!*c}&(aLT+DacPWuB?O3efuqpqeP z?Ui*9Q0GLNqMK7T;#Fd{?XugK9=~WMzDmGz&;Dh6Ksz+6IK{iq7xM zdCz?oy$))F7IV9&qE-%KIS9w=&nRv2QSI^i<6*U*MGBzf`Se{AUF9P*Q^o znwg^ZgnllK+9=BN^@R{MTF~^{sRdxvo$HS0h@)CmY@Q16$6gH0L;7TMy7d#=#To9( zEnsmpXWX`B+vE-d{Hcw0jI~e_OKtnR^rvLn(%zzAr~MxY=qF)N{-P+~Bg!8SFQ@h# zXb+3Y3j8UP0)J{tLEESn|CVk1F}bNFp@7%}E~cfT-+nH@-QwiPg`Ad|ZG<^vZ8rQJ z_REm4=+_{QEnvplVH63Z{SYkaKRcFZHv80m>AD;zZHS;TD^LVWcAhHX4`{FE#riF1 z1ZAgU=SSU9u#pV|GLJx(vGzCMIp|pUecFSZ?Hf%CcGrEP_-B2@*e$X23+&y z7-reXb^D(UI_9H>8z<%v_l3wGrShlq{2t0b)0}@4@^P?0`6tox-YrgV$s%fi`}_^U zyN#OOxdptn1RXa*D>*bZ_jWzK807W`h)?ROUyl+;NhAmyC1v6$DQm9(QmsTBDV>kQ zb-c1eExEV}rk#HwC26DXN+$8irblqncc5v!Uxqe$MgLyxnel!dPow=hw7>SHjI}Fa zJ+SsHv}CMZjwnpG>!Ynmlq2!nTZR57TR*jCTrm%+;FJ7VU}?e0*`AVs&6BZq1~LP) zf(4sPA>^fnCod@UG!I=`)RtM`f6l-4daQ5B!EoIT8-Cpu|CVm6uwI-M43?ERlBUyx8;G^l+ll8vogVb=S^oFi7tY5+ z3p#>bLaBWx))TUXw?0JUGnv6w$0Hj^OIWR z(BQU$>3bVrgO{=9FEA3pZH4($&zXpw-|@vKPo0BE#@emO*KgVnJKScUf*el!J;>Z) zpNOQT8&7xbhfx9SVi!@qE9f}tA_=&LOi!TXS$@2Ml{V}SS$CX0mi(0>G(lmpqJiIw zgO2O)JeeeL2G#PH;3V&(;x^yIZa@B>6y{MMif0!5Bo7ifSV9yBO7QH*{@cIu`GDYD z`9TLguO>Y7&Zp_yw!|{pQjMbQVmzoLC>?P#yz6OPIQ@QwxtuD8gzWR z&VrNIj5Vu7`NKFQ%UDy#6NDiX=Wl=@43iZ^U||_=6OEru2li0uq6Xl7oEk-11M7ZQ zR?zWFi8~E7GafEFd-^tCy1%4h`m+}g9a8f6^iLWO1rLH6YN&xXU7h{5!aXSiPObr#$4n;JmN(0aPlCZUZ+9Zfu`9yRXvPt|8Au^R z7yn}%^+P3b^I=QB*{h0Go3PXI{qN^#l7As7Q&CZ zTMMU!QoYY}abQhrL9EztmO*_q3_}-vz~3`*>eDei`{B z(;R`{)RO`(qMUZJk^JCEEVU1D5_ii)`?ANeM-JD=@YbWs3;nj@)$pE#1iA2%L#NEV zOW~o-Q17{V|FymW^&UT;z*B%U-xWBd`g|zu@Y7ziBAC9VIfWKkWOn)au7(I56=_h< zs3#qQQ}f=OatwW+ygTSPVu@06M=GL0$HDM753{ijK3`-~ag1@Q-Gn_T)3a<5rjXZD$1ze|zbohBN(RGD|1K`CtH6eC=ZhLF zej$oaA$PStyP34GP-qf5;&j-3MRD=q|*BjD9C$ifxk7J;;M4aJt(@S&+Q) zPat$QsaZeW9Fu20KIu?jGN$z44+)Un;*-Ajsa19g~55ppT*x38w4&Hf$^ zig()g!WWF~L5vu~F4WCdWXg~0=uw9oxjZ|4MG6FoR|H^wNr&*-K%4!3)H93VPNZr3 zN+RIf7F6!0dK#eNQ$5`Dr!^f(c^KbXa0^}-3^=}zie!5{bN#jscbo0WZfsZ6X8#c) zWMbMItnx&WvKn72=}@Kxqy`}ec%Lg!*`C=-<+FS1OFnvpeBm#Q6E+dXZRL zOsqWzY~5D;TlWkjGQ66db~hfb zQvTE&JYe;A@a(1}%I>yxKLV9$?Q8llcV*PLVjac_FJv&EEw7{7OVq%`5LtLk`!JhH z+t+3)T1YuUEU7smwxqb)lvKo)me)9nkR^l9kZ`gH<#1R?4uIEU24KCaLBKdXwKLA2 z>3PLpf?r_G!f7wor_orJ7fN$+L%@8fq;7BA$kroo@nW1Xs!d@ zo}|T1P-r~xb)ARyeDroC%5gk<4K~>%?;7Nl>+}e-KXn!S@y4)@52VeYNoNZxcBkvl ze9CFC>y-jgv?aBa=Uc#_pF|6<*6=4lYW^15K6HnjPfPmmhCm{Y?YzSp3#t&iliAYjd-WXyu+)^=p*Mb!K# z^eUjIDKH<*d)f@3(0@0AuaJl4b?mzl;K-gy*}n{BUxDoIi}^7g_5;v=X{7i7;O5F{ zfyh7jA7AjtzaXEU;GXmu-XngfLz;kj1jJTqhsb>2shiAjsN%2t8YN0;9D%m1g*~ zb7<-MqZmeS9Y&qP0S%f8SX50T9Qi~QC_0#)tUL9UP;n94yg#;uQSw7S+IuuH?cxbM zY<g#$ zaAkiC#ep1CjFn?D#c0eBqrLI)`;J_+&O)pECwK6@!TWdeu@iLsX#v?cDkHH49giW6 zIT~bZp;woX|I4WPgv5#SFe;=OYD*VtQ6!>1wXXHbl%E-sys5dPcF83MAO$DpYesty ztQa}4T>0*edAIy^!j1Hl`DFX^2U!^Xg#!DNh`2xQ#L9jnV%Y0ZP5Uz3 z8z(CSyqpu%W?x4bc$}m8J|zdbdg1+P+7$Em<4i--RKz*l$Xv!+fifb?Bhxg0K(p*) zXgeL8$0;<=GqU_|hePwG4d3ZZDstkDozV|k!cvS`+&=+MDo`+yeG_? z>`J_U(Ygz3G3w?vi{33up^#iFsnklP&_c2*eePm_KdW`-h>_Td_5S+ZkF{OIF(K$H z2%|4xA8k(4e7Dp75j~X0&tSvgm&)mJRS)Jlxo2K|7Po1`v14I)phLUMO*md)`n@oj z?!X#;NFoMXC!Sl;V7r>J&At*PJF6JSq{cr zh^|4DBt*0;Z0nK6^9_%9sd*^g)N)z)t5YuiHj)c3Y!w)oL1DR>+#1^WXsAmzq&(VpIP_{`|%SP}lc=mugPMhupXOlS>~!i2*5 z-Fhases$uV)ZrNq<0Vz<4{=C_Hz@ER1xb)kSo$TO#-~2(9q`*4zVMR-Mj7wCR-&%x(4LmRZ$j&B%^f)W%;!kYW_q7TF#WGhhh`js zMu*URpA>XhmyW$M2dC+C7+F zm!+aQJ;;Y}uq2@^F5Y#>!5jBH+rxy81EHg|GCnfO;7Rs3Vz3O`3CfHKuUbcIPzc^J}{cdf2_1xiGRHjvA);Cwz4c|hB15JY< zEWBualuAU9O-Ws6%L&I^;A^f?NF?U!`sUhRm@5lP3JuJe2IfqKITPkCnNQ~NvS`bA z$d*G-OxFSjUQC-a99Ua;bT*=LNoO0^b80YSW=9fMF&-$MOqVBFS+gsY_EOpzN_&!q zux2_+G~kiW45hs&_htC)_Jd)*cUju(pF40$DJ0x6L@RAHCPn1*{c!RX+J7OohcuV7@!PNsiJcn zW0|O!v4-C7-D&?2510tXZ+{=L)?KzX`&)=89#j>UOjVwWf{bNS$^9q+N0v_ame)1+ z@J@WoM#`N#Gs&ZE4z)P03su}R$@h)kY0p3n7#ko-<49a>b{iseK1Ami zc=_bBfALww^Pm3_k;z^SHVSJ*>%(M>rREq5Lx_g3OzY%~!i@)8nANFX7Bgai^2 zNJtqR)(1H&o^!6>{tGY7WQOmy? z3x^7n~Kte^B&Ik^W(SbnPdoXZwR%j89bb zH@5ae*9`>qXn#=o_<}`G?MD(2>7O6#r#UXtQT>t5MOw41A6#6dv-*SLBE9ADesFP- zUe+HJ7wP(b#1P;jy{JDZF49eXwG$#BT&dsDH;puE|J8-^q@Z~@1{a%5<_{=gSO{`YL(dm>1GnA?8k zr2`O`yx%lzWf|7q>Fp8ioqn%u?+V%8Lq9l>?M;Qy!}v>qlsJDQWqa>kejwW`{cS{h zzqv=YcguDm&%7%RWP7t9zA*mE@0RW5$@Uu89LV1*^K zgr|Fq`k?>Eal?cDCDDNUpg(UQ@IwAShUMwi zWqr_J7B_s!N`l77e%$`hPkgc$fav0N?{9 zIYGyeq2ey12m=?5eh&Y9(!k(v9Uy$u0O4m31m2@tW7redLVni~oyu7z?_Qlxe=(T< z=^SXX7G*&if^REvx&1|O^f&y9aGhL{%U^<^Q{V9j&Ak2BccTuRsP8YznTefl2X2uo z!ZnPzDQGAn2=RwZaEVq_VxT{XUqS*22_z(tkU&BL2?-=5kdQz^0tpEuB#@9mLIMd1 zBqT6c3D5yV;+K$sl0f?>78jjPC4LDBBqY$k1lso}#*0}>>l60FERIAxA%TPh5)w#A z-~dTr_Owz@W5b1w70b0bwRP1^r6skMjSWo=OPjStwN1W?I&FTlud248G|!orS30|4 z`Ep-if_yh&3_YwIiPd{xz@E9)96E9$BxowfBV zD(Y&hw2H7Y*flmEc|NpJ zi}F&I$DD9^h|NZNIsW<3UM*l&A#V|KOW6XHG@!1)KVRlfVpG^eHknQ3KH->zcq!`E zgMvEVMm5qaIS?(7?Kei^I~QT-9Psl!wv^PpnWtmKBgJAY2haT;|VG`8=ZX%bcPdd{j2n zH#Ij_fM`+Gl;%}J>83KmHHtj^ygv??3w?8S?YlaZ$W&6nxDczu}CxiWo&OsC59 zVwwIx$~zb7EWm5Bd_O)WqI8z3kFXrqz64lW8>{IAvPR2f3=gwD*~+ zzD)1GPSB<1gC3by^MNkYYCh6UA8eFqH6PqA(`r7rLDh#|YjEpT zeVJY-(`r8O$~1}-zk~!568M%%plnj5Y1NNE*o$;%RWH})WwYcuow2>(lh(HzelF}4 z?T;wEQrfc`#5K6}vYhM%xfYp5^jrPIa-aX&B|m(}gnbkb%bc|J;y;OYujbnqiEmN_zDW`ICPmOaN@vOR4Va%Poh;LfWqSWjf*<yT+Gqx9|Hk?{dm62F85zB3XyNOIC8$G^9Fg|e&O z#)hRh0uE=@jid(G{wrZ0!b|&4StLlOtlwXI%6@3K46Z%bSFGPZM+u081QHTRNZ`Oo zpscu|a+wKL4&t;Xcm8IO_Ak!*vD$Bsv%ZOR9#!_fBhLD<+IQYQNdDujAFKWLIP1sc zKhFBG+IQYDNdDujpEKXs0&!MogG7DU9%ucS{Kr{8CjWO1lK(jC=gc>@gyHrj>j=5%s=>qTwW$Eu2%^*woC*78X|^U^IS7KUUr+Vo;ceh zRNv%J+2Kq{|3KT0l!wxf%-_Y=zme^!{?X#BAFKWKan_I3{)RZ~$EzROL*e?7CDTej zGG#iFo_}{*>4)s&2YgveJu2i` zgLp1ni%h#^`AV6lvSc`~Oe6ZO{?S=F{nj5Kew2I#RB7MZ_JrdP^zjZAxG+AY&HGMy{aHp zH|UKOtF-#+i?zDy`U{(DRGSpW`c7TJd{f`6tM($p@51-#kv#R4j`zELg=6l5qIm@i z&YY(e&z-+On|BTN~*11`YWYxKH6i)H*Us zWA(neI*oroRNbgmR@B!wG>fFx+@MuxOK{1>GV1^OhWZJYR5vzgO|_Sp_25Y0_TjDu zx);KW7U}MWX0+9abR}=O9=SwKs8mC`0XY?LOHi``kjoGk^b&kMo4_vNSO~5OSSb~a ze#Mg1+vbJ_t*)W|LY4h>-oN2%uC2pWAx2YCBi}~-T*>u^ZUhmxctm9^MyBkC+UDxU z3K)_mt+rm+4$Ml`8r^H5Rn;zCTHS~{QZ!rw(Tpo1svDbPU}Na>aD69=NV_Vy4mCnI zG_G@IJr{SMRHI}mAn8sLjo((X6ltm}?n5E{Bu#4uF49^mY3ftQh{y>3ByYIsqQ1%7 z&{Q4vtc&3Lqd%PPX3kkX=%CTk1e&U1P^9MZ%7*3M3NC7DjoOR62Zp#@4t#VUjFMVk zBT3-dz2dR|J@kZoP8BJf7mr!neb&Z%jr4*yetpw+t=&j}e#g6eN|uDu+dj-K{qfe{ z8RcW!8*6^@&qs`O%Aarb&P;j3Nca3^$LS}v?K9HPmn_L#eDd2y`ly#a`Qb&6gwpS! zwamr;G|C@(|BDw^?)#UK7IgO*X+du&eH&W;^R1!u{`tgEC|!I~TS58XLTO5M9{H|; zkEAhXZ75CBdL`#Qqa4IPxNAiyE%<%kDE~e+?+v8|y&o9mLY|?tsQEG2rKvQ1g54+=@S(JzC&?%m@(QId<^&Bj z${GJ98)+fGP+H(0W|SZQqk~_3=HpQM)TtM2o|~Ftlpli9`EP{Mg8$)0Ial|~Lg@{p z9!Y6Nx#*uzn(<${QGPoOhk{UAlxG^{d_3ld(pFAzD19dl$Mqu&c+uaX^b;B=95K=; z7xaeGoc;L+8Rd-sMj7c<`;LZ2gwlL`FLxN_VtgEIqTqBR!e_Tt-^J&oa`C|K^6LTTTy8voj*np73->M7rgyi1K+xdMW*q<{N27zYP&- zwjjKmEeub$M5NiGi1LVZM?~6nb~rp+9G>oqNV9Xo%bD?Okuen-1z+EKKXIShzw16V z>fEIjwC`J0*0AIvhWo{g1zEC1oVULD7jf?30qhNMdu5vHew{z7MBX#V_Kx5NDKvjf z8FAu_N0TDPi>u6~c-itKCaecSX`X-4extnSWqE$}st6bVRfH`v?2zGp8A6QwN1@rx zZ^rwTSQ|I^>Z`QonrdxDMPqHnlDcZ`7!H4oc5y`$7Rrr{K5uh%)kJ}Xu>}#J$7r=p z+LG$p`U^E5mZ93kwaqoObr)H+xYMu}_Y+=X!k{qq9g249eAToGESm4(mV*_rW zt6QZtRjfdJ6?Cg&6LySCef5=eo`ub1UEM@YTTlbS@ZU$5EdsnkYpiba)$v0G0wIb` zwW_Ks>#$Q03}_AY)f^82VY9FTn+8Hn%$X~x{cCvT3iD1wwiH4#F)gKU&ZCzWfS#si zu{my94y@QVS5-7uXw9p<)mjbpRR!;W3hYB65J-)RA&9w4(Z3J`^(U^y6RcF!jn`H+ z__QW;R$Z00yrO9t*Mg=7Ut=YgIq3v%k~2-I3NOB7_CiaVtFRFmD)@#w^ln^bFQ2-=h*3KDYI*EkVE3+cpIv!X@e%|S_Q%4G=O@y z0$a37u!-irkAA~8mpGxM=sm*FfOE^`q*Cabs_L&OPbFnB4#bs~;VK{APX!Pw)Fw1c zNSs{YORASPV2fGXEG2Acd>DeTcI2=tLpK6xU(GUgUOUeR6X|alTQ69T@FL8*$%d8cSgs&f)5@C!;eE+O3LH5xQ5C_J4IK zS%utrIH{YBummto_*cQtatuSD1Q;U}^h^MbXcWx>HrnU=Koe1L6dT9y4xNDbIJDLK zr{qAFsn%C4H;#f-en~@>560^ZRRnoWSP&A}oQm2yAA0GiaaGy`jV?%)KhZCSox|xh zwAUvO$(2o1zzD}p%v-D>RQ9vFLK#ujn^KpcuhqCDvr1dCO6a*^pfDDV_IlX@$~XlL zq!eQGPSa)}$$u#YTvxams`o8lg5ggCQw<`8e3~ZVRgf|tBgK@PQczU|(we4WWGWa6 z4-h|QlsrDJ3IDusmsG(cC;v&vg3yS9Tn0Xo?ClZr-`tVm&pG(>2t#BcvR1w!;BSy& zrwn^!nER$ES2cuOl%bdX7J6*LW=pHAY%({;WQxgBnJuwGC_{l)>Pm0444*HXtxcGv zQIl$g>G_R9ulkYC>q;dJbyH9bW1r4zN-++XW8|HP8*%9d-uXD6FJ!ZDAMO;~t~(L& zV*H~Y-KR_E_h(>4&jnbWdOx^VTQulQ6OX6Sy6? z5V=jTMs(Zm1Yn#5pBzyVtBnej(Cx#7eKKzHjf9+6ec_qj>iW~GR~4;18T z6<*KuRf{Z6FY;%jyQ%@m)ARAfVh(sc8_zT5f!k8V8bCKmirP5?sVYz&?cQR#eK>S) zarmvp;_hK5>di-Oy3g2)I7zqfpSU@>3h;D-UkLn-VHH9>C9)&?QUS-x_Y}?|IYBJ7 zST|HpC3tGVJ7oxej+i-BgbEMOREYx^<~qaMF;K4;`I-!kd=;^%$iFwtl=L}e=#rsF zhUGFm5LA9X=jibrf`Zu+!K}O=2kU&BL2?-=5 zkdVN4Kmz9JzjM+M=6T1;@GexpoKd|R6WmHuoGKG8^$X%haTgrnkM=Xuu>p1W0uJw1 zMFS1XBZwXoTyl?Sv~d@F#w;B`|M(;r!_{ zGuK;B*igLr(FHZD-k4jR1aLfmS%?FTrqbC(v(79jEo`Xde{QC!w6PlRAC%6nsH?)8 z7iDv2mz0V##M0h35|+us{?f|EYV0w}>S~uXRy3|E#d&e*5?^gyRq4tTr%WiUUgEp3 zRNiqb?@m-TCwi-v2-=TFK#qRLiXh=9BrsqJ>^v;|+$b_VV1$VZ2?_icNnqxf@bMFw z{x1?mg4H-AU`evDBrl#t54W)4JhZam^M-mYRtvM5^D`|hlhPShmXSByYe})Pl)NMn zjzpMlW$Ae--d^PjUX`2cQT@pBBr8j5w1)6g`L$?I(WmHDcvO8#&y)B@0$xM95$SQL z--xuTr{Gl>4G;07%2jf<&O01%-Xb(Et%Qr z+16~9yB#FG2bVkMODo#|7fzp<)&n1p+Y`yk>YG{hVSQ zYlDZEq3TSDGC^6n+?1@b;6Pdgvp z9P;YOyOz9-??A1$j4|fDgBeA%ukX= zK5ZR!?!hyYvOY;V^pm9Qr>$eo)e43k`Qgx<4~HK8;n3Vql8$@YI{w^=)5d2Xmz|q^ zbaqbmk=a`InC$HAL$kB856&KyJu;iLIyF1x;N;jc`6l)IKdr41Ck|nUTSl>ip$}xQ zoR%Rh_hfjd!dcUG^bXYX2J26fSZ*`2E`bZd#aT)DQuyL*gyU))?j21y z_YCLqSj%Cq>IK8+qiap`7u7*sj^kQ{YTlAE=K1qvxq_pR;AkF{bQx(gJ_UcRte=N) zw3Us%*5T#+fDYnk(h%b3MEH^)n&a~@$CFI*GQA^?L)e(fVb3Sn+@iK7q5No}TFWRrG5Xfrr&DbtgK6-k z3~1eO?Z2U)qV&&moVGuOXzQbYz987#B>NDS3TI7kSvH9NQSwuv>JJqv`K$66a#m|Y zv%G%|>R9=mL?a*fye}Kkr}4;rp46q0vVW)^(Q>UxC!)x4bP}~W27do~UPQ3DXTV=T z@aa8+(Q_rA$S{Vy%yN2~=qTSqGzd9G%7^-bs{N<1S*TG`0=gzaCQOtQKP{{O() z($`;zHBSdTx`86cwg(IDUUOqFIu9^?hOJaO7{QO3{(@md|7q|S!P(L~Ye7G|Xkhd! z`NYxQeZ0NR@OSX`GO0Zmyn)C|wG+pf8k++C%8!OG^xiyg&*WvZjIyZqC{NlM8dt>U zwFpU`jnW>?llc@WkaMW;HG$g;64%Lq2Yn^{gq)ZmBc zGWV6DQ`MvNNZFTp2o+wHpJioP^F|3BAUtZ_q3|j^Dqq!C`H^%*)}uXRUWRwX)FCVz z>ve}*ufLuOnX%k%1RulM(tBVDCu&O|G}yyoR%?x|-Rg|P#z?wG%YGr-J2Q>O#w_?^ zY#2N%nh&wEL*A3?Wa3%nNAmbp`$FN1!TYO3AItp*g7@KIT#5G%cwdcoK7PT6dCo0J zCmGCvFJv%6_6y19d@9Rb3crrZ)7M|b*H@=le;vM;Cp|Ocyq@Zn|D5VjQMe9{H0hSo z5hXtr%6x9C^29u|kK_E8fpY})qgBZGOD?O#FVx@qGzD1t)8^ z^med1vCH7MGamYsu8%kYcJF=%-|v(F8_Qh;zZ4FKc}sDANBxJCI=|!nNwmzvxNr<% zj#CE&t5Df5b2@^qUl6YR zyWrmo_b8<#T@N7+x}24qu5q@$c{caayM!h8Q}RawM|$P~?4uH3Wcla8zW{DIr6j#e z5eL1VzU8QNitmLc^yCKJfgiWYOF}l;JT@jAOnP@B z{26f8bcT5{s(pt=&g=uHan_}1iVP#`t8$tzV$imm)3yixUQU}c7HtZb3cm(9Ej)ze zbOHP-IBR-mEE}t6P+>f@z%H8mWD9TWN%)<-t#a@Ud(~-O7sXzwc2pQodjr&wv$BZy zbK#f6S<^T4$2;lgwMpL5GtsxN3%#Rfh&4hT*=Sd2KSKE!%KT^O&{RAJdQXl!j6*Ru zWQW%OL=V>g2;Suc^$7d*gw<-Xqa<>UpmTa!v(uX6@X^G}(eTH^VSfk{1=(J2wJzyZ zFGLURKXQ5dL@2ihpldY#sQ2M`MtZQ#Pj z@7qXDEgZWUkCc<@`-rjB%YG<06)L--(y>CruE=NXvFwkkKUg}bJ&cK%^heSiZ+og9 z;coBlX;vr#L>bUnUNWd__lO7)dAbza+%J<#5vT zgSeg(zL@e*e1FyU2ih;O?1<9C{`y71sW6rv#mXmo&3dZ%SNJGB5_+J{NeKRa=v}0I zDSd@W-tyduo?B;b74tZae-8;CKVw`F-2KoW#it6#q22q@uA+nRZ#ChM)}C2^`=ZmV z7iKzN57Al9sWj24=#X|}1lk`4drI%`kWFqMgXgcC;5`n9mA*K#JI(q!@k;B4S>inr ziI!Q0S=g{8C`-4n^jQcql32!qWR@{yD2+Sb{8+n{*_)G?bDxEs4)-=t({C(XWS#}* z=|g7?@zR+Q{l=!+Sn3BhW(UqL)cptC_#eBg_g zM>xak11_>Hi_OApSd5K@XKO~eZebt6Z8zbL%;R-PHdGhk=p*bbZAu&7f4GvrM@4$1 z*@#P&v6oEnx zn}m5f&+6fP-6HuzIJ#~)tE>8>#kcKDk%=4ei1X$w-BeM$;zf5*aJfy*2l;wLf>jj@A>hAa!q0^K~kLbijz zl4fCPlrQ<}Gh8C!P(K#jFv7DH?~6$JjQZ5V7JLR8>#RJamMv!aP}{>WM$94MP;F4C z$`2dH4znE0GP=?_hj$F~CYKL&CV2!eqo)pMId9HqInDD}PSsf~XNrgASk7P$l#^`B ztrCvw*z?epXAB)H$D)dUqhTY4TKpUy=9>R_+eeycAljCg(u%fNA<2Ih;A4fj3@Dk( zM_AYh!mIj$@TqoQm+h%=mQ1ViD?;gERPUCM{NI5+p9j7?kUxd=3zI+9RWztD6?S13 z^6`8kWowexUe2pA%OMta$P(l$8siO>Y{&+x`V^8L(EEwe@F=(=0f#3|!*HffHkf`K zUX{->(Srl_RLf(0zs=#43{z|@Wl9o%KY`~*rYRFY8oi_OZeY^2RwwCAy1;OXzBUQXR$V~-$Sj_^lI0rQ2Gtw&gNA37n-U2rY@eYLh;Brux-NV?iaE}mvgtc%tBfkaVZE#QFA$>c-7vSzDoCt0A z;!8cmGZ9XKdmAt=gtx)ffv*mPU%=gs{LJ4nc2GNGm*F8?Il@2PkF_TFZFvBC^*hud znLNbUryHRIh;P`$*q?vT*kZtVAA!u^G}P@v=zJ9Yi#J$22ycVS!IRGpgrgoqALHq- z6X6=T&q3P;gdf1IM}Fqxz}LapF6tMA`?r8EwB^}~H>2UMLmxS}G4>+d44eUHZfER1 zxGZWH;p!)#Cupl3;aNL?7x-Hcj@=14;GEin@Mmy)@m5AV!jIub;f0jUU5uR#=f(N7 z7vVqQx&V{8o3Q{~HelKjPI!{Bm4NXed;l&VFr5f9{s5fNa}D9?a4zs(j_|~%P#1mV zML6eaj4AY83&KUufEVPiNBAIIG4%z)J#a1Hy$j)caJ%T8xM!iya3A1}QVn4qTnF-9 z2!9MWo@9k^L?^})?Oz^t{w3W2(w-W zoq%y6ocAj9f#^Z_UKeCV_+Mk}mv3O)fgb0Z7_)ze?tz9bgkS0m%!B5A7;D{V8}QDz z(f@F_A-@G-2i$hVI}v976Lcc3AuNY`1aU9I7PwUEM}!;TZYEhF?10Ngyc1y;+ziBf z5VC(kpApYQcpTgdz~e-C8r*~EBM-t=a0?J$k8l&*2SfwHE;t>1*MpF~1DVr!L8!rP zr~XCgf@=Yc2jN{k=sVDs`7UGC@4*&e>~tV}-~-4Odg%O+v7;u3syf=FZ+<2l5;h{Kh z-A;B7;WKbE5XS*Ey9(|$z_cU$16(uWT?jveO9h@xoTr`&cQxQW2rq|AMSMNN=SG4a z(BFe|=i_nq|0d{kjkd7LBfuBpJsQrXkFl^~#5d$x*xhh1qc7SKJ_@%Udf0*RX}FuA zhn)ytfwLjrh47zn9>DY<%s3XbfgTOv!^eSs(5W4d_;?F@0rY4SEUfwjv_*V5L31A3 z1578vb0#B>x-AIbhg(2)Z;FNe8ZMjUhVX)^cqRsz^$0IN5qMCy1L1E^0$;${gYb{} z7FLRQ=E)ZJD%>MP!!!$<4p)V^2jMcf&jHhd@V9Wyh<6}-2kryFu<76t?q=d;hJ}3r zR|pzhGcD};Qy^Q!dk~Iwp?D>2dE$o^i&;Y_u1%Qw96J-*pcU0*ha*?2uh47zn*O84v_yyc3#Ic}bX>e1>ULiajZad-{!U=Hepxe&> zZ|{7d+p6w6e*GsLw@o(zDf9Sugh^L#3qeV}9GBzNa$=_nIH^b+VrYUSThEpnSyCj~ zQPPBpVyLz{pi-B4G@)|*C&sa36#^KVv}(ziM+vA9S`PwK!KE%us7BMwrKH>EXFWSk zfdjN>ZO`hQ^Ude0tNZT#-QTZ-xp^hCkNjcm4;SRKm zI3sW;3KK&N?nZ6YiNirO7oUKK&;ooC9zkK+Ou-k>ar#Qb6DY-JVg{Z@9`?1`n4_*m z$E9ER9b_U8X}IV{&QX+GVJ9jfpGkPGjbn#xP4H%Pk{rh2e<3?@8tggBf#%{P@cXC_ zpMez)+F@He97G2tX87Sc>d?LsHX$cWG+Ef&+i_2y2=RGp;qenVGpV#w@LU* zWZ=5p;LK4~XanVT*o2NreYgX)atub`PBcagF}NFr@NqbZjx(+VJcLT9pM*zHK0XCs zKnJLwh9}Sl_E!d;Mt#JrG{%J%;0^E+G{)RE!Yj~r`OJk&k(qgJhO1B;?OWkS6eVwV z*o2&N48k2KL;VQci7FXa4DLozIdSy4* z24a)*9;`(3D7V7f(Jsz)arh#-7@vVxH8Ni2l@)G8yNJyWo6xAl40oUsVvE3?Xo47G za5w5>uEyaY>L#BFcnDoA`xG8Qm6WI83n)QfX?Ow+%Y25X(RSigE^>})*wz3qK}Xrv z2)~W|%%2S0>1N)tZ4%l(OUxW2G5E1f>?58iu)?3C_y^e5lcSzP?UWmuIOii1Ix^T;e?fqx&$QKfh@ybT%garit6F|G_;(#-yqa}N9xN=qI1JQ|gD z;F6XcmBd@&R%FM=;KQgEpMrT?a+C{ifS*8Z(k8qGwM!1+!$^^z6#NyMkow^qwHy^t zZiRiQJC9t!bGDLyyb(5_R-Sx~z)@5w@xvwCIPXhe@GjKO&y@*yO3Hbn*zh^_H7e%m zdn3F8c_=r*r6@zcX1EINqJ1mei1K-M+79nPPI4ZHPf0mG4d-spQ5|e+gr7kXydUmD z#rOpL88YD24t}qF6FDaaJDflsiRbfNGaxHI0?&&uhl$M$zl7THarn^99JBH)-xs(B zKnA=W?n4KOISD^>3!l-%Y=m|+M&A4|fsWym@FjE@pMf7}Wj@IH5dJL+|C;YW;0EN! z`{8|P7@vZtPy(-R%~6|CF~>*@K8Xq`PYZ9O9B+ayWWh(^1E>_Ag0G_*#-+Z<+(8p> z&=-6dW$-E373I7n$1*(kAIUSvg%Mg%4d*L6jG{Q@arhKc^4SFc@}Jm8@_7M2jgGOu z?C=h>f#W3(pF%O}q~ROL#5`1A;yM|5m`g@@6-rTVhBqK9-VV2+R_a9H-6%tO93Db3 z_H_!LKt|c`ZN!N>*uM!_x|4h|b~_wL7WSjzcHT#$vLB)44vt^;qaW@>NAqYOK7vNb zVG>>xBWChrhBqK1<#xCYnI-3NH`+j737AHT@(f)5W#VUBI}D(4avp(scM?Bwn&6YD z53jyLY-ogblCZX&xkbzoc{vV)Zde%zKAmT1biIX@hMo+ z#lFK^VGl~AO=Hsj=CC6$b1u`0?Lg&%t4f)JPpIW9M|MO4ommq$+;cAj+E5z z<2-=Ir9KSY%iNIqaB)9v%J+Eib=1eU#(i9G50D?W^+V4f?J&0!a9}@uvuy^xK17^s zYfj{-W#6EjZDVlPeZ)XM)9{u1$qD_M4sf1-fLzHufo%^m7pb3uFQ9hzQ5v2=CHM?H zjiPc4KE&rfD#RP$CFp>R3toW^;!SWVY9mfFT!q^4R=5#WbG+MO6RN@c;SRJ*<|^EY zy74i%8&wi>91fytd;%UpZS<9fr%^lJFiZ?6B>lpTXgl5yccKOK6^DmV2|fi+pjP@) z4>K0jhBv`gXaRlM;SN-SkHHZ%%G^l9H&6tx9^t%!;&?xN4#lMWo0OvhJ{SDZeUN>J zPrw&ZD=}x_rH9zB#A$*zqWO{&cn{i6JPG)sloLY++P_5}*fs()sDy0|-zFAxT;>uq zB*~kM1;){F_HPod`wr!@E&RxL8KdM1K8wcKRz1qk&ZvxSlW^T(%Govo_n-nk7ZUJk zG*`~~F!x`n!#pv-#mLF$f*IDK4(j+}D=K8{F?aw)$xjl_e~fvKH^ci;2R;R_{Ws>f z#0mGJTFMhJI+DY8Jj4d?{CDCZ{uJEvIOiJTPs8Ew(HHS&;K&n{6Tdn_o{@#m7ZY5K zwv%T&ya|m{9)piR$!9L!_!Rpt#aO75fUka^wkS70O)RL480;{N<`Y8%cA#UDe>jXv zB!_TR%84Nj$I%F%5gB+IrSR$*&ZB4)Z-VPlDaWiGei4;$jU9szq3z6pB>V|d^p$~s zb(CBYgAslT&7&_XY)47jNx+jROnt+%9COG;9Y5?v8R{g3C{6q72b^nB2ldUc1x?U? z3_d31G8WkIL&nLrF?hi!*Ev!jK8Ebn$-qnggL1C7O>hjEsBe6Z&tVjzFT?X(L!k*d zw;W?`pl!^VC<%Z<*&;iLUT#PQJFEhLajk9eWzKljCZ$ILC0L9qW z4!cl>ZIdwXCCb^>2&++?ZSAlXCD}Fx529MOO~I4MDlxpw*io8xOt1!7XvYrYC`CI7 zm_cF5!x&>iqm)}=3`Ho9!~2kh@+5p3waIwl1wW>J%1zLYqV(&By=YwGho_{Rb_}oZ zIfx249_{e*pK#vh=Px@6qa^g%Td0cv;Xij@AH;>z%3cdFUy-` z9o~XZK*KM{xzvYGp#gjv_M9Z=_zbN1CHoHVhhIhA_&9tHIcX;Y$4_y+iZ}gtj`|_; z;0+TwY9R{a?eJ@8J3ayHe#Jb;$6y>ClydkuI*d=jm(c`118@H|`wp+(vhwaFKkHf>L5TAl4kP)B! z4acR*RZ)BdF3ihSmH0G#ndcikc+(sfwdA>iV!Yy6kxS7oDTfx+jkm%kbQm9jUFZpX z625|t;xn-DL%Hf8-UPpf4oDsNKWGeZn47ECq2u@%97QMb8F)SGQXa!c;6rEtpN1b{ zjgJMF(1V^DrB&uvg1gO{;B(#3cy%w=tl`FImNg~rA6 z%*`VxjnBX}+%p}<`{8ahj8DKLD1lEy!v%Z}y;{oQ5Q^ZF@PAMYZ@4g5?L=kx1pGCsl=6#m)pAsVw?dXx zRTFqKJb*IdFJU25q~_--J8VV;_#~WjDdWK#VHGOG$6%3>eJ>vV2pRF}GTKL_coX~q zGD&$+uDSr3r5rwvYVjGk`0`w3$6Mi@$d6CJbsx)BZFn=!R%j@WH&|H93PtcHxCBL| zPHnD|6=>spP6=fpTJz~FWj)$zyik^)?;ng<0P}X1Vzzby=)^5B|R%1=z zg|aB?LA+4bW*xx`Wr^0Kc%iJ+n#K!d!Pet=p{(0Fffvg1t@$~u*aT&7(cv;Hm{5sm_dth17Xa$;wmt{8Y zL1DiCk)=!iqMkV*-2M<|li!=bC(%*9bCyS?&(}Cd@iT%v z`@9^L$nVi$5RLI&w=CPxh1%Fwmfd&;jnZ!#<~7ilv=2Xy@+p@!Vd{~c_GN92ub^V; z$aCV4A}4*x^YXtyE`HXKH3lw6X1V5sYtb?JZXe!)MyVrf#yyDQ!AHL9KXM7wLW}m;DRJ z#ODz|oVSU2F4wED63rt{Sx+#8Jj@eWv$9*tx%QKXA)i4ba%~3r5>=&)#1G9Va~a#h zoydPVvCaOQ&A@C1W-~CGfj{dET-ciZEGWD+%MzVybT;VRrt>bH37wDWJf`!M&bhZ` z+q+cft9m~_(0N$rgF1V4w(E@QT&UBm^E#a#o!fQh>;3+*cc$g@*>Rtv^S+z1uU((Z zGNivQ)%lwp+46Rs3w5^X+xKqIzVFnzOlOhKT%9lJ?I(5Kqq9}#YkIvuR(_60vg3F{ z=iNGQ(%GQXtk0Jf`s)jIDxKqcUS8Chdvmtk15@?>Km#=WANN;uOLkm~buQDnTIY>A zy*jt)Y}47N^RUiiI$zbvFDxcAHCKQA_!qLT59-{nGp_SRoiUwX&{?B%vCcxB`8rSP z`{yN{kLi3w=YE~Lbl$1+Hl5pbdUQHeRpHtlFhelm|`wl zH}l_Let$oE zzJL21&YthzJ}>W7I(xp)p0EDDp6{DfdAZ3}?W^D94rL$1y|${N!fY|$pi~dpxxU~+Z0p-gpZ}2!8gKty8LI-NaoboMhXUO$7@7u1XLe)FHUr}MZ z+IBS|ypmrY^f!m<&E@k6z+G<(hWJChO?Ax;=E`;D^W{(S+Cl+`I}|imW}};mv7*8< zIfkERTk!raE!eJ>OiTu%j?j)43WoSA!P8BVmv;}N)?!=DNY0y69&*30O_x^+2dc0cc);A~HB_PyKVd4C;MN{nTbdtE!TN8VG6 zm6Ln3nmPOFU_*Gi+jmRLYA0Ss-|-~v&6P2o9C7s)(dEHc-&5#-yx|9 zX#u6K&u?(l1^G4RoZ#jF{pXX>K&Y~=aSealoPtGj$Ta6}r82Q-_PRVsX2SgWG3MXAj) zR(HtFXtzzjrFmQ20iU;t)GDSH#s##My1Xj>~TSV6H8oHL~*=dC0|wj?+eF9Ue)8 zjSm5Om`r?~qkfZ84@`|YTXnLgrk>13AWL*i2C*vJ>tv!Orb}{c4FOHFIqMp^Bj2{A z$+1cElSbJu!@LgqJ?@ZR;GDCiKB(`%@1C_^8rBvPqwNj+=8SFZ(wQiGeZ=3M6vgqj_m zYn!zIXRQM{Qd2+lxo=IcU*U8TD0zQ2e@)1<+~E%~dzb4+@-Zo^_W3q7`&a0htMZ1V zwU^}`y@Pe$EpD%q=WOS!^JY(D&gs!|ZX#K%RWN6*7JA3GjS|iB>}f_Hgt})=%~Y1B zin!x-Wl(?N3#`x_66;i+*W^zQ)T#voVBdPdRA2`RuW4R2|ErBi)$Mk!}(<~fDx z7gD-*E3?0;#@(b<1m)x^j%&V^(}(cdYK{-m>{QQ9)(<(zw0|YbpR89mOG);`JazI_ z*Ho=pT~+<@#gmgnmB}XzGy0u=u9+>L&A@C1{&X`CHYhW9>P`Rq?bpwqclP_HcX>VC zkZ!vE?(B81e*68|*MCYG;C@WPL6NhgVhw5vOm9>Efqd5D;5~mQf5ma;L^`{H*;jf7 ze*VpGmz9T`JjNC+5acJSrA3Ptnu?5?x8CP;dmEP)t*cpaMQM?d?0)p@oWX}}v?TGSlyUKOl&X-$sc6;1B?fG_B42wlOI=~a$k)54ZT zMMkb2+ztFdciqh1Xv%0T3k8~kA^DhpkF9;YXmUHY405d*aEG?)uPF&=o15uHb6NxL z7A`UxwczxdGvBV7yi8@-)mn?@F?!_xrA3b5N^gsAlNKm4HoGh8<+5*SQG>%1)QUb? zcI9;2XKy^+{)`%L>AmdAvtli~a(d8gUUubFK0i4-J!doUXPSYC+4rkM@uE5APcv zm>4J+EF3HzEFH8A)(*M`!-LVmj={dc;lYu?QKFe39v-maeqW{fI!8MT_gMBs_gMBu z_m1o>=(F@i`$qZ-?zP+-y?5l^f__VXl(q}@S@uQujqEEJuna^8M(Dvpt0R*mi|!xU zUod1Ha!rnqMibmy4E*{iqMaR`1@uw7XJk)7m!&J(HPThsUEE#TJ=$H|<6?Z{J=qaW z^uE6+Mh7g@BkR~dvA=XEHY2}0+@3Pa&?7?p`)v>tDwh1 zhDRo|8tonFE!g``{TKI}`b+!m{jPq0e}s(0`e``Deb!)t?1agTVW4opI8Z!b8lW(p zodbnkMn-Jys_n8%zrB&(@m{sJU~k{v#NOe(Nit5|4EG;{T5{3R*Vm^^++)gXS7*F4 k)v3BvERTD<`4>0Djd4@l9Jj~i Date: Wed, 31 May 2023 10:42:10 -0600 Subject: [PATCH 28/52] Fixing word-misspelling. It is spelled 'threshold' not 'threashold'. --- source/base/SE_EV_factory_charge_profile.cpp | 12 ++++---- source/base/battery.cpp | 12 ++++---- source/base/battery.h | 4 +-- source/base/battery_calculate_limits.cpp | 16 +++++----- source/base/battery_calculate_limits.h | 2 +- .../charge_profile_downsample_fragments.cpp | 6 ++-- .../factory_P2_vs_battery_efficiency.cpp | 30 +++++++++---------- .../factory_P2_vs_battery_efficiency.h | 4 +-- source/factory/factory_SOC_vs_P2.cpp | 30 +++++++++---------- source/factory/factory_SOC_vs_P2.h | 6 ++-- source/globals/datatypes_global.h | 2 +- source/globals/globals_python_bind.cpp | 6 ++-- 12 files changed, 65 insertions(+), 65 deletions(-) diff --git a/source/base/SE_EV_factory_charge_profile.cpp b/source/base/SE_EV_factory_charge_profile.cpp index 7af92d3..5622132 100644 --- a/source/base/SE_EV_factory_charge_profile.cpp +++ b/source/base/SE_EV_factory_charge_profile.cpp @@ -228,15 +228,15 @@ void factory_charge_profile_library::get_charge_profile_aux_parameters(double ma if(P3kW < 20) perc_of_max_starting_point_to_determine_not_removable_fragments_on_low_elbow = -1; - double kW_change_threashold = P3kW/100; - if(kW_change_threashold > 2) - kW_change_threashold = 2; - else if(kW_change_threashold < 0.1) - kW_change_threashold = 0.1; + double kW_change_threshold = P3kW/100; + if(kW_change_threshold > 2) + kW_change_threshold = 2; + else if(kW_change_threshold < 0.1) + kW_change_threshold = 0.1; pev_charge_fragment_removal_criteria X; X.max_percent_of_fragments_that_can_be_removed = 95; - X.kW_change_threashold = kW_change_threashold; + X.kW_change_threshold = kW_change_threshold; X.threshold_to_determine_not_removable_fragments_on_flat_peak_kW = 0.005; X.perc_of_max_starting_point_to_determine_not_removable_fragments_on_low_elbow = perc_of_max_starting_point_to_determine_not_removable_fragments_on_low_elbow; fragment_removal_criteria.push_back(X); diff --git a/source/base/battery.cpp b/source/base/battery.cpp index 2d65904..420986a 100644 --- a/source/base/battery.cpp +++ b/source/base/battery.cpp @@ -31,7 +31,7 @@ battery::battery(const vehicle_charge_model_inputs& inputs) soc{ inputs.CE.arrival_SOC }, soc_to_energy{ this->battery_size_kWh / 100.0 }, target_P2_kW{ 0.0 }, - zero_slope_threashold_bat_eff_vs_P2{ this->get_zero_slope_threashold_bat_eff_vs_P2(inputs) }, + zero_slope_threshold_bat_eff_vs_P2{ this->get_zero_slope_threshold_bat_eff_vs_P2(inputs) }, will_never_discharge{ true }, soc_of_full_battery{ 100 }, soc_of_empty_battery{ 0.0 }, @@ -43,10 +43,10 @@ battery::battery(const vehicle_charge_model_inputs& inputs) { } -double battery::get_zero_slope_threashold_bat_eff_vs_P2(const vehicle_charge_model_inputs& inputs) +double battery::get_zero_slope_threshold_bat_eff_vs_P2(const vehicle_charge_model_inputs& inputs) { - double charging_zst = inputs.PE_factory.get_P2_vs_battery_eff(inputs.EV, charging).zero_slope_threashold; - double discharging_zst = inputs.PE_factory.get_P2_vs_battery_eff(inputs.EV, discharging).zero_slope_threashold; + double charging_zst = inputs.PE_factory.get_P2_vs_battery_eff(inputs.EV, charging).zero_slope_threshold; + double discharging_zst = inputs.PE_factory.get_P2_vs_battery_eff(inputs.EV, discharging).zero_slope_threshold; return (charging_zst < discharging_zst) ? charging_zst : discharging_zst; } @@ -151,7 +151,7 @@ void battery::get_next(double prev_unix_time, c = this->bat_eff_vs_P2_charging.a; d = this->bat_eff_vs_P2_charging.b; - if(std::abs(c) < this->zero_slope_threashold_bat_eff_vs_P2) + if(std::abs(c) < this->zero_slope_threshold_bat_eff_vs_P2) { eff_tmp = c*(E1_kWh_UB/time_step_hrs) + d; E2_kWh_UB = E1_kWh_UB/eff_tmp; @@ -175,7 +175,7 @@ void battery::get_next(double prev_unix_time, c = this->bat_eff_vs_P2_discharging.a; d = this->bat_eff_vs_P2_discharging.b; - if(std::abs(c) < this->zero_slope_threashold_bat_eff_vs_P2) + if(std::abs(c) < this->zero_slope_threshold_bat_eff_vs_P2) { eff_tmp = c*(E1_kWh_LB/time_step_hrs) + d; E2_kWh_LB = E1_kWh_LB/eff_tmp; diff --git a/source/base/battery.h b/source/base/battery.h index 335721b..0a3f07e 100644 --- a/source/base/battery.h +++ b/source/base/battery.h @@ -33,14 +33,14 @@ class battery integrate_X_through_time get_next_P2; double battery_size_kWh, soc, soc_to_energy, target_P2_kW; - double zero_slope_threashold_bat_eff_vs_P2; + double zero_slope_threshold_bat_eff_vs_P2; bool will_never_discharge; double soc_of_full_battery, soc_of_empty_battery; line_segment bat_eff_vs_P2_charging; line_segment bat_eff_vs_P2_discharging; - double get_zero_slope_threashold_bat_eff_vs_P2(const vehicle_charge_model_inputs& inputs); + double get_zero_slope_threshold_bat_eff_vs_P2(const vehicle_charge_model_inputs& inputs); public: // Debugging diff --git a/source/base/battery_calculate_limits.cpp b/source/base/battery_calculate_limits.cpp index ee8bb92..4cdc555 100644 --- a/source/base/battery_calculate_limits.cpp +++ b/source/base/battery_calculate_limits.cpp @@ -62,8 +62,8 @@ algorithm_P2_vs_soc::algorithm_P2_vs_soc(const vehicle_charge_model_inputs& inpu soc_to_energy{ inputs.battery_size_kWh / 100.0 }, prev_exp_val{ -1 }, exp_term{ std::exp(this->prev_exp_val) }, - recalc_exponent_threashold{ 0.00000001 }, - zero_slope_threashold_P2_vs_soc{ inputs.SOCP_factory.get_SOC_vs_P2_curves(inputs.EV, inputs.EVSE).zero_slope_threashold }, + recalc_exponent_threshold{ 0.00000001 }, + zero_slope_threshold_P2_vs_soc{ inputs.SOCP_factory.get_SOC_vs_P2_curves(inputs.EV, inputs.EVSE).zero_slope_threshold }, segment_is_flat_P2_vs_soc{ false }, P2_vs_soc_segments_changed{ false } { @@ -134,7 +134,7 @@ double algorithm_P2_vs_soc_no_losses::get_soc_t1(double t1_minus_t0_hrs, this->a = this->P2_vs_soc->at(this->seg_index).a; this->b = this->P2_vs_soc->at(this->seg_index).b; this->A = this->a/this->soc_to_energy; - this->segment_is_flat_P2_vs_soc = std::abs(this->a) < this->zero_slope_threashold_P2_vs_soc; + this->segment_is_flat_P2_vs_soc = std::abs(this->a) < this->zero_slope_threshold_P2_vs_soc; this->prev_exp_val = this->A*t1_minus_t0_hrs; this->exp_term = std::exp(this->prev_exp_val); @@ -153,7 +153,7 @@ double algorithm_P2_vs_soc_no_losses::get_soc_t1(double t1_minus_t0_hrs, { double cur_exp_val = this->A*t1_minus_t0_hrs; - if(this->recalc_exponent_threashold < std::abs(this->prev_exp_val - cur_exp_val)) + if(this->recalc_exponent_threshold < std::abs(this->prev_exp_val - cur_exp_val)) { this->prev_exp_val = cur_exp_val; this->exp_term = std::exp(cur_exp_val); @@ -180,7 +180,7 @@ double algorithm_P2_vs_soc_no_losses::get_time_to_soc_t1_hrs(double soc_t0, this->a = this->P2_vs_soc->at(this->seg_index).a; this->b = this->P2_vs_soc->at(this->seg_index).b; this->A = this->a/this->soc_to_energy; - this->segment_is_flat_P2_vs_soc = std::abs(this->a) < this->zero_slope_threashold_P2_vs_soc; + this->segment_is_flat_P2_vs_soc = std::abs(this->a) < this->zero_slope_threshold_P2_vs_soc; } //------------- @@ -240,7 +240,7 @@ double algorithm_P2_vs_soc_losses::get_soc_t1(double t1_minus_t0_hrs, this->D = this->c*this->b + this->d; this->z = this->B*this->C - this->A*this->D; - this->segment_is_flat_P2_vs_soc = std::abs(this->a) < this->zero_slope_threashold_P2_vs_soc; + this->segment_is_flat_P2_vs_soc = std::abs(this->a) < this->zero_slope_threshold_P2_vs_soc; this->prev_exp_val = this->z*t1_minus_t0_hrs; this->exp_term = std::exp(this->prev_exp_val); @@ -262,7 +262,7 @@ double algorithm_P2_vs_soc_losses::get_soc_t1(double t1_minus_t0_hrs, { double cur_exp_val = this->z*t1_minus_t0_hrs; - if(this->recalc_exponent_threashold < std::abs(this->prev_exp_val - cur_exp_val)) + if(this->recalc_exponent_threshold < std::abs(this->prev_exp_val - cur_exp_val)) { this->prev_exp_val = cur_exp_val; this->exp_term = std::exp(cur_exp_val); @@ -302,7 +302,7 @@ double algorithm_P2_vs_soc_losses::get_time_to_soc_t1_hrs(double soc_t0, this->D = this->c*this->b + this->d; this->z = this->B*this->C - this->A*this->D; - this->segment_is_flat_P2_vs_soc = std::abs(this->a) < this->zero_slope_threashold_P2_vs_soc; + this->segment_is_flat_P2_vs_soc = std::abs(this->a) < this->zero_slope_threshold_P2_vs_soc; } //------------- diff --git a/source/base/battery_calculate_limits.h b/source/base/battery_calculate_limits.h index 7fcfe9f..d0f0a0d 100644 --- a/source/base/battery_calculate_limits.h +++ b/source/base/battery_calculate_limits.h @@ -48,7 +48,7 @@ class algorithm_P2_vs_soc int seg_index, ref_seg_index; double soc_to_energy, prev_exp_val, exp_term; - double recalc_exponent_threashold, zero_slope_threashold_P2_vs_soc; + double recalc_exponent_threshold, zero_slope_threshold_P2_vs_soc; bool segment_is_flat_P2_vs_soc, P2_vs_soc_segments_changed; public: diff --git a/source/base/charge_profile_downsample_fragments.cpp b/source/base/charge_profile_downsample_fragments.cpp index c4bcb07..09d497b 100644 --- a/source/base/charge_profile_downsample_fragments.cpp +++ b/source/base/charge_profile_downsample_fragments.cpp @@ -13,8 +13,8 @@ downsample_charge_fragment_vector::downsample_charge_fragment_vector(pev_charge_ this->change_metric_multiplier = std::pow(10, 12); // 10^12 /* std::cout << " max_percent_of_fragments_that_can_be_removed: " << this->fragment_removal_criteria.max_percent_of_fragments_that_can_be_removed << std::endl; -std::cout << " perc_change_threashold: " << this->fragment_removal_criteria.perc_change_threashold << std::endl; -std::cout << " kW_change_threashold: " << this->fragment_removal_criteria.kW_change_threashold << std::endl; +std::cout << " perc_change_threshold: " << this->fragment_removal_criteria.perc_change_threshold << std::endl; +std::cout << " kW_change_threshold: " << this->fragment_removal_criteria.kW_change_threshold << std::endl; std::cout << " threshold_to_determine_not_removable_fragments_on_flat_peak_kW: " << this->fragment_removal_criteria.threshold_to_determine_not_removable_fragments_on_flat_peak_kW << std::endl; std::cout << " perc_of_max_starting_point_to_determine_not_removable_fragments_on_low_elbow: " << this->fragment_removal_criteria.perc_of_max_starting_point_to_determine_not_removable_fragments_on_low_elbow << std::endl; std::cout << std::endl; @@ -55,7 +55,7 @@ int64_t downsample_charge_fragment_vector::calculate_variation_rank(std::listfragment_removal_criteria.kW_change_threashold; + double kW_change_metric = P3kW_delta / this->fragment_removal_criteria.kW_change_threshold; int64_t tmp_variation_rank = (int64_t)((kW_change_metric)*this->change_metric_multiplier); int64_t variation_rank; while(true) diff --git a/source/factory/factory_P2_vs_battery_efficiency.cpp b/source/factory/factory_P2_vs_battery_efficiency.cpp index dd4b9bd..003444b 100644 --- a/source/factory/factory_P2_vs_battery_efficiency.cpp +++ b/source/factory/factory_P2_vs_battery_efficiency.cpp @@ -6,9 +6,9 @@ //################################################## P2_vs_battery_efficiency::P2_vs_battery_efficiency(const line_segment& curve, - const double& zero_slope_threashold) + const double& zero_slope_threshold) : curve{ curve }, - zero_slope_threashold{ zero_slope_threashold } + zero_slope_threshold{ zero_slope_threshold } { } @@ -31,7 +31,7 @@ const P2_vs_battery_efficiency_map factory_P2_vs_battery_efficiency::load_P2_vs_ battery_chemistry chemistry; battery_charge_mode mode; double battery_size_kWh; - double zero_slope_threashold; + double zero_slope_threshold; for (const auto& EVs : this->inventory.get_EV_inventory()) { @@ -45,45 +45,45 @@ const P2_vs_battery_efficiency_map factory_P2_vs_battery_efficiency::load_P2_vs_ { mode = charging; line_segment curve1{ 0, 6 * battery_size_kWh, -0.0078354 / battery_size_kWh, 0.987448 }; - zero_slope_threashold = (std::abs(curve1.a) < 0.000001) ? 0.000001 : 0.9 * std::abs(curve1.a); // If the slope is smaller than 0.000001 that the 'safe' method will be used. // Very little rational to using 0.000001 it will allow the complex method using a 1000 kWh battery pack - inner_map.emplace(mode, P2_vs_battery_efficiency{ curve1, zero_slope_threashold }); + zero_slope_threshold = (std::abs(curve1.a) < 0.000001) ? 0.000001 : 0.9 * std::abs(curve1.a); // If the slope is smaller than 0.000001 that the 'safe' method will be used. // Very little rational to using 0.000001 it will allow the complex method using a 1000 kWh battery pack + inner_map.emplace(mode, P2_vs_battery_efficiency{ curve1, zero_slope_threshold }); //----------------------- mode = discharging; line_segment curve2{ -6 * battery_size_kWh, 0, -0.0102411 / battery_size_kWh, 1.0109224 }; - zero_slope_threashold = (std::abs(curve2.a) < 0.000001) ? 0.000001 : 0.9 * std::abs(curve2.a); + zero_slope_threshold = (std::abs(curve2.a) < 0.000001) ? 0.000001 : 0.9 * std::abs(curve2.a); - inner_map.emplace(mode, P2_vs_battery_efficiency{ curve2, zero_slope_threashold }); + inner_map.emplace(mode, P2_vs_battery_efficiency{ curve2, zero_slope_threshold }); } else if (chemistry == LMO) { mode = charging; line_segment curve1{ 0, 4 * battery_size_kWh, -0.0079286 / battery_size_kWh, 0.9936637 }; - zero_slope_threashold = (std::abs(curve1.a) < 0.000001) ? 0.000001 : 0.9 * std::abs(curve1.a); + zero_slope_threshold = (std::abs(curve1.a) < 0.000001) ? 0.000001 : 0.9 * std::abs(curve1.a); - inner_map.emplace(mode, P2_vs_battery_efficiency{ curve1, zero_slope_threashold }); + inner_map.emplace(mode, P2_vs_battery_efficiency{ curve1, zero_slope_threshold }); //----------------------- mode = discharging; line_segment curve2{ -4 * battery_size_kWh, 0, -0.0092091 / battery_size_kWh, 1.005674 }; - zero_slope_threashold = (std::abs(curve2.a) < 0.000001) ? 0.000001 : 0.9 * std::abs(curve2.a); + zero_slope_threshold = (std::abs(curve2.a) < 0.000001) ? 0.000001 : 0.9 * std::abs(curve2.a); - inner_map.emplace(mode, P2_vs_battery_efficiency{ curve2, zero_slope_threashold }); + inner_map.emplace(mode, P2_vs_battery_efficiency{ curve2, zero_slope_threshold }); } else if (chemistry == NMC) { mode = charging; line_segment curve1{ 0, 4 * battery_size_kWh, -0.0053897 / battery_size_kWh, 0.9908405 }; - zero_slope_threashold = (std::abs(curve1.a) < 0.000001) ? 0.000001 : 0.9 * std::abs(curve1.a); + zero_slope_threshold = (std::abs(curve1.a) < 0.000001) ? 0.000001 : 0.9 * std::abs(curve1.a); - inner_map.emplace(mode, P2_vs_battery_efficiency{ curve1, zero_slope_threashold }); + inner_map.emplace(mode, P2_vs_battery_efficiency{ curve1, zero_slope_threshold }); //---------------------- mode = discharging; line_segment curve2{ -4 * battery_size_kWh, 0, -0.0062339 / battery_size_kWh, 1.0088727 }; - zero_slope_threashold = (std::abs(curve2.a) < 0.000001) ? 0.000001 : 0.9 * std::abs(curve2.a); + zero_slope_threshold = (std::abs(curve2.a) < 0.000001) ? 0.000001 : 0.9 * std::abs(curve2.a); - inner_map.emplace(mode, P2_vs_battery_efficiency{ curve2, zero_slope_threashold }); + inner_map.emplace(mode, P2_vs_battery_efficiency{ curve2, zero_slope_threshold }); } else { diff --git a/source/factory/factory_P2_vs_battery_efficiency.h b/source/factory/factory_P2_vs_battery_efficiency.h index eb74b2a..001c248 100644 --- a/source/factory/factory_P2_vs_battery_efficiency.h +++ b/source/factory/factory_P2_vs_battery_efficiency.h @@ -13,9 +13,9 @@ struct P2_vs_battery_efficiency { const line_segment curve; - const double zero_slope_threashold; + const double zero_slope_threshold; P2_vs_battery_efficiency(const line_segment& curve, - const double& zero_slope_threashold); + const double& zero_slope_threshold); }; typedef std::unordered_map > P2_vs_battery_efficiency_map; diff --git a/source/factory/factory_SOC_vs_P2.cpp b/source/factory/factory_SOC_vs_P2.cpp index 898b76f..092a7da 100644 --- a/source/factory/factory_SOC_vs_P2.cpp +++ b/source/factory/factory_SOC_vs_P2.cpp @@ -6,9 +6,9 @@ //########################################################## SOC_vs_P2::SOC_vs_P2(const std::vector& curve, - const double& zero_slope_threashold) + const double& zero_slope_threshold) : curve{ curve }, - zero_slope_threashold{ zero_slope_threashold } + zero_slope_threshold{ zero_slope_threshold } { } @@ -41,21 +41,21 @@ const double create_dcPkW_from_soc::compute_min_non_zero_slope(const std::vector return abs_min_non_zero_slope; } -const double create_dcPkW_from_soc::compute_zero_slope_threashold_P2_vs_soc(const std::vector& charge_profile) const +const double create_dcPkW_from_soc::compute_zero_slope_threshold_P2_vs_soc(const std::vector& charge_profile) const { - const double min_zero_slope_threashold_P2_vs_soc = 0.01; // 1 kW change in P2 over 100 soc + const double min_zero_slope_threshold_P2_vs_soc = 0.01; // 1 kW change in P2 over 100 soc const double min_non_zero_slope = this->compute_min_non_zero_slope(charge_profile); - double zero_slope_threashold_P2_vs_soc; - if (min_non_zero_slope < min_zero_slope_threashold_P2_vs_soc) + double zero_slope_threshold_P2_vs_soc; + if (min_non_zero_slope < min_zero_slope_threshold_P2_vs_soc) { - zero_slope_threashold_P2_vs_soc = min_zero_slope_threashold_P2_vs_soc; + zero_slope_threshold_P2_vs_soc = min_zero_slope_threshold_P2_vs_soc; } else { - zero_slope_threashold_P2_vs_soc = 0.9 * min_non_zero_slope; + zero_slope_threshold_P2_vs_soc = 0.9 * min_non_zero_slope; } - return zero_slope_threashold_P2_vs_soc; + return zero_slope_threshold_P2_vs_soc; } const SOC_vs_P2 create_dcPkW_from_soc::get_L1_or_L2_charge_profile(const EV_type& EV) const @@ -115,9 +115,9 @@ const SOC_vs_P2 create_dcPkW_from_soc::get_L1_or_L2_charge_profile(const EV_type //------------------------------------------------ - const double zero_slope_threashold_P2_vs_soc = this->compute_zero_slope_threashold_P2_vs_soc(charge_profile); + const double zero_slope_threshold_P2_vs_soc = this->compute_zero_slope_threshold_P2_vs_soc(charge_profile); - return SOC_vs_P2{ charge_profile, zero_slope_threashold_P2_vs_soc }; + return SOC_vs_P2{ charge_profile, zero_slope_threshold_P2_vs_soc }; } @@ -394,7 +394,7 @@ const SOC_vs_P2 create_dcPkW_from_soc::get_charging_dcfc_charge_profile(const EV //-------------------------------------- - const double zero_slope_threashold_P2_vs_soc = this->compute_zero_slope_threashold_P2_vs_soc(dcPkW_from_soc_input); + const double zero_slope_threshold_P2_vs_soc = this->compute_zero_slope_threshold_P2_vs_soc(dcPkW_from_soc_input); //===================================================== // Calculate Objective Function Constraints @@ -466,7 +466,7 @@ const SOC_vs_P2 create_dcPkW_from_soc::get_charging_dcfc_charge_profile(const EV if (dcPkW_from_soc_input[i].x_LB == 0) dcPkW_from_soc_input[i].x_LB = -0.1; if(dcPkW_from_soc_input[i].x_UB == 100) dcPkW_from_soc_input[i].x_UB = 100.1; } - return SOC_vs_P2{ dcPkW_from_soc_input, zero_slope_threashold_P2_vs_soc }; + return SOC_vs_P2{ dcPkW_from_soc_input, zero_slope_threshold_P2_vs_soc }; } const SOC_vs_P2 create_dcPkW_from_soc::get_discharging_dcfc_charge_profile(const EV_type& EV, const EVSE_type& EVSE) const @@ -720,7 +720,7 @@ const SOC_vs_P2 create_dcPkW_from_soc::get_discharging_dcfc_charge_profile(const //-------------------------------------- - const double zero_slope_threashold_P2_vs_soc = this->compute_zero_slope_threashold_P2_vs_soc(dcPkW_from_soc_input); + const double zero_slope_threshold_P2_vs_soc = this->compute_zero_slope_threshold_P2_vs_soc(dcPkW_from_soc_input); //===================================================== // Calculate Objective Function Constraints @@ -782,7 +782,7 @@ const SOC_vs_P2 create_dcPkW_from_soc::get_discharging_dcfc_charge_profile(const constraints_.push_back(constraint_B); //constraints = constraints_; - return SOC_vs_P2{ dcPkW_from_soc_input, zero_slope_threashold_P2_vs_soc }; + return SOC_vs_P2{ dcPkW_from_soc_input, zero_slope_threshold_P2_vs_soc }; } diff --git a/source/factory/factory_SOC_vs_P2.h b/source/factory/factory_SOC_vs_P2.h index 33bcf9d..20a7770 100644 --- a/source/factory/factory_SOC_vs_P2.h +++ b/source/factory/factory_SOC_vs_P2.h @@ -34,10 +34,10 @@ struct bat_objfun_constraints struct SOC_vs_P2 { const std::vector curve; - const double zero_slope_threashold; + const double zero_slope_threshold; SOC_vs_P2(const std::vector& curve, - const double& zero_slope_threashold); + const double& zero_slope_threshold); }; typedef std::map >, std::greater > curves_grouping; @@ -53,7 +53,7 @@ class create_dcPkW_from_soc const battery_charge_mode mode; const double compute_min_non_zero_slope(const std::vector& charge_profile) const; - const double compute_zero_slope_threashold_P2_vs_soc(const std::vector& charge_profile) const; + const double compute_zero_slope_threshold_P2_vs_soc(const std::vector& charge_profile) const; const SOC_vs_P2 get_charging_dcfc_charge_profile(const EV_type& EV, const EVSE_type& EVSE) const; diff --git a/source/globals/datatypes_global.h b/source/globals/datatypes_global.h index 1516ac7..f9f1937 100644 --- a/source/globals/datatypes_global.h +++ b/source/globals/datatypes_global.h @@ -540,7 +540,7 @@ struct pev_charge_profile_result struct pev_charge_fragment_removal_criteria { double max_percent_of_fragments_that_can_be_removed; - double kW_change_threashold; + double kW_change_threshold; double threshold_to_determine_not_removable_fragments_on_flat_peak_kW; double perc_of_max_starting_point_to_determine_not_removable_fragments_on_low_elbow; diff --git a/source/globals/globals_python_bind.cpp b/source/globals/globals_python_bind.cpp index 76444a5..e599552 100644 --- a/source/globals/globals_python_bind.cpp +++ b/source/globals/globals_python_bind.cpp @@ -465,19 +465,19 @@ PYBIND11_MODULE(Caldera_globals, m) py::class_(m, "pev_charge_fragment_removal_criteria") .def(py::init<>()) .def_readwrite("max_percent_of_fragments_that_can_be_removed", &pev_charge_fragment_removal_criteria::max_percent_of_fragments_that_can_be_removed) - .def_readwrite("kW_change_threashold", &pev_charge_fragment_removal_criteria::kW_change_threashold) + .def_readwrite("kW_change_threshold", &pev_charge_fragment_removal_criteria::kW_change_threshold) .def_readwrite("threshold_to_determine_not_removable_fragments_on_flat_peak_kW", &pev_charge_fragment_removal_criteria::threshold_to_determine_not_removable_fragments_on_flat_peak_kW) .def_readwrite("perc_of_max_starting_point_to_determine_not_removable_fragments_on_low_elbow", &pev_charge_fragment_removal_criteria::perc_of_max_starting_point_to_determine_not_removable_fragments_on_low_elbow) .def(py::pickle( [](const pev_charge_fragment_removal_criteria& obj) { // __getstate__ - return py::make_tuple(obj.max_percent_of_fragments_that_can_be_removed, obj.kW_change_threashold, obj.threshold_to_determine_not_removable_fragments_on_flat_peak_kW, obj.perc_of_max_starting_point_to_determine_not_removable_fragments_on_low_elbow); + return py::make_tuple(obj.max_percent_of_fragments_that_can_be_removed, obj.kW_change_threshold, obj.threshold_to_determine_not_removable_fragments_on_flat_peak_kW, obj.perc_of_max_starting_point_to_determine_not_removable_fragments_on_low_elbow); }, [](py::tuple t) { // __setstate__ pev_charge_fragment_removal_criteria obj; obj.max_percent_of_fragments_that_can_be_removed = t[0].cast(); - obj.kW_change_threashold = t[1].cast(); + obj.kW_change_threshold = t[1].cast(); obj.threshold_to_determine_not_removable_fragments_on_flat_peak_kW = t[2].cast(); obj.perc_of_max_starting_point_to_determine_not_removable_fragments_on_low_elbow = t[3].cast(); return obj; From 169927f3f67a7488f862c31f3885899bf5fc8791 Mon Sep 17 00:00:00 2001 From: Manoj Kumar Cebol Sundarrajan Date: Wed, 31 May 2023 12:09:06 -0600 Subject: [PATCH 29/52] Added the original project models inputs to the inputs folder --- inputs/Archives/EVSE_inputs.csv | 9 --------- inputs/Archives/EV_inputs.csv | 15 --------------- inputs/DirectXFC/EVSE_inputs.csv | 10 ++++++++++ inputs/DirectXFC/EV_inputs.csv | 15 +++++++++++++++ inputs/EVSE_inputs.csv | 2 -- inputs/EV_inputs.csv | 2 -- inputs/EVs_at_Risk/EVSE_inputs.csv | 10 ++++++++++ inputs/EVs_at_Risk/EV_inputs.csv | 9 +++++++++ inputs/eMosaic/EVSE_inputs.csv | 9 +++++++++ inputs/eMosaic/EV_inputs.csv | 7 +++++++ 10 files changed, 60 insertions(+), 28 deletions(-) delete mode 100644 inputs/Archives/EVSE_inputs.csv delete mode 100644 inputs/Archives/EV_inputs.csv create mode 100644 inputs/DirectXFC/EVSE_inputs.csv create mode 100644 inputs/DirectXFC/EV_inputs.csv delete mode 100644 inputs/EVSE_inputs.csv delete mode 100644 inputs/EV_inputs.csv create mode 100644 inputs/EVs_at_Risk/EVSE_inputs.csv create mode 100644 inputs/EVs_at_Risk/EV_inputs.csv create mode 100644 inputs/eMosaic/EVSE_inputs.csv create mode 100644 inputs/eMosaic/EV_inputs.csv diff --git a/inputs/Archives/EVSE_inputs.csv b/inputs/Archives/EVSE_inputs.csv deleted file mode 100644 index eedfafe..0000000 --- a/inputs/Archives/EVSE_inputs.csv +++ /dev/null @@ -1,9 +0,0 @@ -EVSE_type,EVSE_level,EVSE_phase_connection,AC/DC_power_limit_kW,AC/DC_voltage_limits_V,AC/DC_current_limit_A,standby_real_power_kW,standby_reactive_power_kVAR -L1_1440,L1,1,1.44,120,12,0,0 -L2_3600,L2,1,3.6,240,15,0,0 -L2_7200,L2,1,7.2,240,30,0,0 -L2_9600,L2,1,9.6,240,40,0,0 -L2_11520,L2,1,11.52,240,48,0,0 -dcfc_50,DCFC,3,50,500,100,0.17,-0.445 -xfc_150,DCFC,3,150,920,163.0434783,0.17,-0.445 -xfc_350,DCFC,3,350,920,380.4347826,0.17,-0.445 diff --git a/inputs/Archives/EV_inputs.csv b/inputs/Archives/EV_inputs.csv deleted file mode 100644 index d639add..0000000 --- a/inputs/Archives/EV_inputs.csv +++ /dev/null @@ -1,15 +0,0 @@ -EV_type,battery_chemistry,usable_battery_size_kWh,range_miles,efficiency_Wh/Mile,AC_charge_rate_kW,DCFC_capable,max_c_rate,pack_voltage_at_peak_power_V -XFC250_400kW,LTO,87.5,250,350,11.5,TRUE,3.85,900 -XFC300_575kW,LTO,142.5,300,475,11.5,TRUE,3.41,900 -XFC300_400kW,LTO,97.5,300,325,11.5,TRUE,3.46,900 -XFC250_350kW,NMC,118.75,250,475,11.5,TRUE,2.29,900 -XFC300_300kW,NMC,97.5,300,325,11.5,TRUE,2.38,900 -XFC150_150kW,NMC,45,150,300,9.6,TRUE,2.56,900 -XFC250_300kW,NMC,87.5,250,350,11.5,TRUE,2.64,900 -XFC200_150kW,NMC,95,200,475,9.6,TRUE,1.22,900 -XFC275_150kW,NMC,82.5,275,300,9.6,TRUE,1.41,900 -BEV250_75kW,NMC,75,250,300,6.6,TRUE,0.76,460 -BEV150_50kW,NMC,45,150,300,6.6,TRUE,0.85,460 -PHEV50_SUV,NMC,23.75,50,475,9.6,FALSE,0,0 -PHEV50,NMC,15.5,50,310,3.3,FALSE,0,0 -PHEV20,NMC,5,20,250,3.3,FALSE,0,0 diff --git a/inputs/DirectXFC/EVSE_inputs.csv b/inputs/DirectXFC/EVSE_inputs.csv new file mode 100644 index 0000000..042eb0a --- /dev/null +++ b/inputs/DirectXFC/EVSE_inputs.csv @@ -0,0 +1,10 @@ +EVSE_type,EVSE_level,EVSE_phase_connection,AC/DC_power_limit_kW,AC/DC_voltage_limits_V,AC/DC_current_limit_A,standby_real_power_kW,standby_reactive_power_kVAR +L1_1440,L1,1,1.289338,-1,-1,0,0 +L2_3600,L2,1,3.30192,-1,-1,0,0 +L2_7200,L2,1,6.624,-1,-1,0,0 +L2_9600,L2,1,8.832,-1,-1,0,0 +L2_11520,L2,1,10.5984,-1,-1,0,0 +L2_17280,L2,1,15.8976,-1,-1,0,0 +dcfc_50,DCFC,3,50,500,125,0.1,-0.59 +xfc_150,DCFC,3,150,882.3529412,170,0.17,-0.445 +xfc_350,DCFC,3,350,700,500,0.17,-0.445 diff --git a/inputs/DirectXFC/EV_inputs.csv b/inputs/DirectXFC/EV_inputs.csv new file mode 100644 index 0000000..46ae966 --- /dev/null +++ b/inputs/DirectXFC/EV_inputs.csv @@ -0,0 +1,15 @@ +EV_type,battery_chemistry,usable_battery_size_kWh,range_miles,efficiency_Wh/Mile,AC_charge_rate_kW,DCFC_capable,max_c_rate,pack_voltage_at_peak_power_V +bev250_400kW,LTO,87.5,250,350,10.58,TRUE,3.85,900 +bev300_575kW,LTO,142.5,300,475,10.58,TRUE,3.41,900 +bev300_400kW,LTO,97.5,300,325,10.58,TRUE,3.46,900 +bev250_350kW,NMC,118.75,250,475,10.58,TRUE,2.29,900 +bev300_300kW,NMC,97.5,300,325,10.58,TRUE,2.38,900 +bev150_150kW,NMC,45,150,300,8.832,TRUE,2.56,900 +bev250_ld2_300kW,NMC,87.5,250,350,10.58,TRUE,2.64,900 +bev200_ld4_150kW,NMC,95,200,475,8.832,TRUE,1.22,900 +bev275_ld1_150kW,NMC,82.5,275,300,8.832,TRUE,1.41,900 +bev250_ld1_75kW,NMC,75,250,300,6.072,TRUE,0.76,460 +bev150_ld1_50kW,NMC,45,150,300,6.072,TRUE,0.85,460 +phev_SUV,NMC,23.75,50,475,8.832,FALSE,-1,-1 +phev50,NMC,15.5,50,310,3.016365,FALSE,-1,-1 +phev20,NMC,5,20,250,3.016365,FALSE,-1,-1 diff --git a/inputs/EVSE_inputs.csv b/inputs/EVSE_inputs.csv deleted file mode 100644 index fc83e44..0000000 --- a/inputs/EVSE_inputs.csv +++ /dev/null @@ -1,2 +0,0 @@ -EVSE_type,EVSE_level,EVSE_phase_connection,AC/DC_power_limit_kW,AC/DC_voltage_limits_V,AC/DC_current_limit_A,standby_real_power_kW,standby_reactive_power_kVAR -dcfc_50,DCFC,3,50,500,125,0.17,-0.445 diff --git a/inputs/EV_inputs.csv b/inputs/EV_inputs.csv deleted file mode 100644 index 77a8fd5..0000000 --- a/inputs/EV_inputs.csv +++ /dev/null @@ -1,2 +0,0 @@ -EV_type,battery_chemistry,usable_battery_size_kWh,range_miles,efficiency_Wh/Mile,AC_charge_rate_kW,DCFC_capable,max_c_rate,pack_voltage_at_peak_power_V -XFC250_300kW,NMC,87.5,250,350,11.5,TRUE,2.64,900 diff --git a/inputs/EVs_at_Risk/EVSE_inputs.csv b/inputs/EVs_at_Risk/EVSE_inputs.csv new file mode 100644 index 0000000..74b0963 --- /dev/null +++ b/inputs/EVs_at_Risk/EVSE_inputs.csv @@ -0,0 +1,10 @@ +EVSE_type,EVSE_level,EVSE_phase_connection,AC/DC_power_limit_kW,AC/DC_voltage_limits_V,AC/DC_current_limit_A,standby_real_power_kW,standby_reactive_power_kVAR +L2_7200,L2,1,6.624,240,30,0,0 +L2_17280,L2,1,15.8976,240,71,0,0 +xfc_150,DCFC,3,150,882.3529412,170,0.17,-0.445 +xfc_350,DCFC,3,350,700,500,0.17,-0.445 +xfc_500kW,DCFC,3,500,1000,500,0.2,-0.03 +xfc_1000kW,DCFC,3,1000,1365.001365,732.6,0.2,-0.03 +xfc_2000kW,DCFC,3,2000,1363.636705,1466.6663,0.2,-0.03 +xfc_3000kW,DCFC,3,3000,1363.636364,2200,0.2,-0.03 +dwc_100kW,DCFC,3,100,800,125,0.2,-0.03 diff --git a/inputs/EVs_at_Risk/EV_inputs.csv b/inputs/EVs_at_Risk/EV_inputs.csv new file mode 100644 index 0000000..17fdaf7 --- /dev/null +++ b/inputs/EVs_at_Risk/EV_inputs.csv @@ -0,0 +1,9 @@ +EV_type,battery_chemistry,usable_battery_size_kWh,range_miles,efficiency_Wh/Mile,AC_charge_rate_kW,DCFC_capable,max_c_rate,pack_voltage_at_peak_power_V +ld_50kWh,NMC,50,200,250,15.8976,TRUE,2.9,1000 +ld_100kWh,NMC,100,300,333,15.8976,TRUE,2.9,1000 +md_200kWh,NMC,200,250,800,15.8976,TRUE,2.9,1000 +hd_300kWh,NMC,300,150,2000,15.8976,TRUE,2.9,1500 +hd_400kWh,NMC,400,200,2000,15.8976,TRUE,2.9,1500 +hd_600kWh,NMC,600,300,2000,15.8976,TRUE,2.9,1500 +hd_800kWh,NMC,800,400,2000,15.8976,TRUE,2.9,1500 +hd_1000kWh,NMC,1000,500,2000,15.8976,TRUE,2.5,1500 diff --git a/inputs/eMosaic/EVSE_inputs.csv b/inputs/eMosaic/EVSE_inputs.csv new file mode 100644 index 0000000..40c163f --- /dev/null +++ b/inputs/eMosaic/EVSE_inputs.csv @@ -0,0 +1,9 @@ +EVSE_type,EVSE_level,EVSE_phase_connection,AC/DC_power_limit_kW,AC/DC_voltage_limits_V,AC/DC_current_limit_A,standby_real_power_kW,standby_reactive_power_kVAR +L2_7200W,L2,1,7.2,240,30,0,0 +L2_17280W,L2,1,17.28,240,71,0,0 +xfc_20kW,DCFC,3,19.5,325,60,0.1,-0.59 +xfc_50kW,DCFC,3,50,625,80,0.1,-0.59 +xfc_90kW,DCFC,3,90,600,150,0.1,-0.59 +xfc_150kW,DCFC,3,150,750,200,0.17,-0.445 +xfc_180kW,DCFC,3,180,600,300,0.17,-0.445 +xfc_450kW,DCFC,3,450,750,600,0.17,-0.445 diff --git a/inputs/eMosaic/EV_inputs.csv b/inputs/eMosaic/EV_inputs.csv new file mode 100644 index 0000000..9f822fa --- /dev/null +++ b/inputs/eMosaic/EV_inputs.csv @@ -0,0 +1,7 @@ +EV_type,battery_chemistry,usable_battery_size_kWh,range_miles,efficiency_Wh/Mile,AC_charge_rate_kW,DCFC_capable,max_c_rate,pack_voltage_at_peak_power_V +ld_50kWh,NMC,50,200,250,15.8976,TRUE,2.9,1000 +ld_100kWh,NMC,100,300,333,15.8976,TRUE,2.9,1000 +md_200kWh,NMC,200,250,800,15.8976,TRUE,2.9,1000 +hd_300kWh,NMC,300,150,2000,15.8976,TRUE,2.9,1500 +hd_400kWh,NMC,400,200,2000,15.8976,TRUE,2.9,1500 +hd_600kWh,NMC,600,300,2000,15.8976,TRUE,2.9,1500 From 26ef5ea15a6a391ef184b6ec9fcb0f11a50401ce Mon Sep 17 00:00:00 2001 From: Manoj Kumar Cebol Sundarrajan Date: Sun, 4 Jun 2023 21:28:47 -0600 Subject: [PATCH 30/52] cleanups --- source/base/ICM_interface.cpp | 2 +- .../charging_models/EVSE_characteristics.cpp | 19 ++++++++++ source/charging_models/EVSE_characteristics.h | 14 ++++---- source/charging_models/EV_EVSE_inventory.h | 6 ++-- source/charging_models/EV_characteristics.cpp | 35 +++++++++++++------ source/charging_models/EV_characteristics.h | 12 +++++-- source/factory/factory_EV_charge_model.cpp | 12 +++---- source/factory/factory_EV_charge_model.h | 4 +-- source/factory/factory_SOC_vs_P2.cpp | 3 +- source/factory/factory_SOC_vs_P2.h | 3 +- source/factory/factory_ac_to_dc_converter.h | 2 +- .../factory_supply_equipment_model.cpp | 10 ++++-- .../factory/factory_supply_equipment_model.h | 5 +-- source/globals/globals_python_bind.cpp | 13 +------ source/globals/helper.cpp | 10 ++++-- source/globals/helper.h | 10 ++++-- source/globals/inputs.h | 12 +++---- source/load_inputs/CMakeLists.txt | 3 +- source/load_inputs/load_EVSE_inventory.cpp | 5 +-- source/load_inputs/load_EV_inventory.cpp | 2 +- source/load_inputs/load_helper.cpp | 0 source/load_inputs/load_helper.h | 6 ---- 22 files changed, 117 insertions(+), 71 deletions(-) delete mode 100644 source/load_inputs/load_helper.cpp delete mode 100644 source/load_inputs/load_helper.h diff --git a/source/base/ICM_interface.cpp b/source/base/ICM_interface.cpp index d781681..a558b75 100644 --- a/source/base/ICM_interface.cpp +++ b/source/base/ICM_interface.cpp @@ -13,7 +13,7 @@ interface_to_SE_groups::interface_to_SE_groups(const std::string& input_path, const interface_to_SE_groups_inputs& inputs) - : loader{ load_EV_EVSE_inventory(input_path) }, + : loader{ input_path }, inventory{ this->loader.get_EV_EVSE_inventory() }, charge_profile_library{ load_charge_profile_library(inputs) } { diff --git a/source/charging_models/EVSE_characteristics.cpp b/source/charging_models/EVSE_characteristics.cpp index 5fb97e5..e64c129 100644 --- a/source/charging_models/EVSE_characteristics.cpp +++ b/source/charging_models/EVSE_characteristics.cpp @@ -33,6 +33,25 @@ std::ostream& operator<<(std::ostream& os, const EVSE_phase& phase) { return os; } +EVSE_characteristics::EVSE_characteristics(const EVSE_type& type, + const EVSE_level& level, + const EVSE_phase& phase, + const double power_limit_kW, + const double volatge_limit_V, + const double current_limit_A, + const double standby_real_power_kW, + const double standby_reactive_power_kW) + : type{ type }, + level{ level }, + phase{ phase }, + power_limit_kW{ power_limit_kW }, + volatge_limit_V{ volatge_limit_V }, + current_limit_A{ current_limit_A }, + standby_real_power_kW{ standby_real_power_kW }, + standby_reactive_power_kW{ standby_reactive_power_kW } +{ +} + std::ostream& operator<<(std::ostream& os, const EVSE_characteristics& evse) { os << "Type: " << evse.get_type() << std::endl; diff --git a/source/charging_models/EVSE_characteristics.h b/source/charging_models/EVSE_characteristics.h index 1581291..49ee379 100644 --- a/source/charging_models/EVSE_characteristics.h +++ b/source/charging_models/EVSE_characteristics.h @@ -42,12 +42,14 @@ struct EVSE_characteristics const double standby_reactive_power_kW; public: - EVSE_characteristics(const EVSE_type& type, const EVSE_level& level, const EVSE_phase& phase, - const double& power_limit_kW, const double& volatge_limit_V, const double& current_limit_A, - const double& standby_real_power_kW, const double& standby_reactive_power_kW) - : type(type), level(level), phase(phase), power_limit_kW(power_limit_kW), volatge_limit_V(volatge_limit_V), - current_limit_A(current_limit_A), standby_real_power_kW(standby_real_power_kW), - standby_reactive_power_kW(standby_reactive_power_kW) {} + EVSE_characteristics(const EVSE_type& type, + const EVSE_level& level, + const EVSE_phase& phase, + const double power_limit_kW, + const double volatge_limit_V, + const double current_limit_A, + const double standby_real_power_kW, + const double standby_reactive_power_kW); EVSE_type get_type() const { return this->type; } EVSE_level get_level() const { return this->level; } diff --git a/source/charging_models/EV_EVSE_inventory.h b/source/charging_models/EV_EVSE_inventory.h index b5f645b..382269c 100644 --- a/source/charging_models/EV_EVSE_inventory.h +++ b/source/charging_models/EV_EVSE_inventory.h @@ -17,8 +17,10 @@ struct pev_SE_pair pev_SE_pair() {} pev_SE_pair(const EV_type& ev_type, const EVSE_type& se_type) - : ev_type(ev_type), - se_type(se_type) { } + : ev_type{ ev_type }, + se_type{ se_type } + { + } bool operator==(const pev_SE_pair& rhs) const { diff --git a/source/charging_models/EV_characteristics.cpp b/source/charging_models/EV_characteristics.cpp index 21c078c..c49def8 100644 --- a/source/charging_models/EV_characteristics.cpp +++ b/source/charging_models/EV_characteristics.cpp @@ -19,17 +19,30 @@ std::ostream& operator<<(std::ostream& os, const battery_chemistry& chemistry) { return os; } -EV_characteristics::EV_characteristics(const EV_type& type, const battery_chemistry& chemistry, - const double& usable_battery_size_kWh, const double& range_miles, const double& efficiency_Wh_per_mile, - const double& AC_charge_rate_kW, const bool& DCFC_capable, const double& max_c_rate, - const double& pack_voltage_at_peak_power_V) : - charge_profile_peak_power_W_per_Wh(this->compute_charge_profile_peak_power_W_per_Wh()), - type(type), chemistry(chemistry), usable_battery_size_kWh(usable_battery_size_kWh), - range_miles(range_miles), efficiency_Wh_per_mile(efficiency_Wh_per_mile), - AC_charge_rate_kW(AC_charge_rate_kW), DCFC_capable(DCFC_capable), max_c_rate(max_c_rate), - pack_voltage_at_peak_power_V(pack_voltage_at_peak_power_V), battery_size_kWh(this->compute_battery_size_kWh()), - battery_size_Ah_1C(this->compute_battery_size_Ah_1C()), - battery_size_with_stochastic_degradation_kWh(compute_battery_size_with_stochastic_degradation_kWh()) {} +EV_characteristics::EV_characteristics(const EV_type& type, + const battery_chemistry& chemistry, + const double usable_battery_size_kWh, + const double range_miles, + const double efficiency_Wh_per_mile, + const double AC_charge_rate_kW, + const bool DCFC_capable, + const double max_c_rate, + const double pack_voltage_at_peak_power_V) + : charge_profile_peak_power_W_per_Wh{ this->compute_charge_profile_peak_power_W_per_Wh() }, + type{ type }, + chemistry{ chemistry }, + usable_battery_size_kWh{ usable_battery_size_kWh }, + range_miles{ range_miles }, + efficiency_Wh_per_mile{ efficiency_Wh_per_mile }, + AC_charge_rate_kW{ AC_charge_rate_kW }, + DCFC_capable{ DCFC_capable }, + max_c_rate{ max_c_rate }, + pack_voltage_at_peak_power_V{ pack_voltage_at_peak_power_V }, + battery_size_kWh{ this->compute_battery_size_kWh() }, + battery_size_Ah_1C{ this->compute_battery_size_Ah_1C() }, + battery_size_with_stochastic_degradation_kWh{ compute_battery_size_with_stochastic_degradation_kWh() } +{ +} const peak_power_per_crate& EV_characteristics::get_charge_profile_peak_power_W_per_Wh() const { return this->charge_profile_peak_power_W_per_Wh; } diff --git a/source/charging_models/EV_characteristics.h b/source/charging_models/EV_characteristics.h index 283d1df..19eb807 100644 --- a/source/charging_models/EV_characteristics.h +++ b/source/charging_models/EV_characteristics.h @@ -53,9 +53,15 @@ struct EV_characteristics double compute_battery_size_with_stochastic_degradation_kWh(); public: - EV_characteristics(const EV_type& type, const battery_chemistry& chemistry, const double& usable_battery_size_kWh, - const double& range_miles, const double& efficiency_Wh_per_mile, const double& AC_charge_rate_kW, - const bool& DCFC_capable, const double& max_c_rate, const double& pack_voltage_at_peak_power_V); + EV_characteristics(const EV_type& type, + const battery_chemistry& chemistry, + const double usable_battery_size_kWh, + const double range_miles, + const double efficiency_Wh_per_mile, + const double AC_charge_rate_kW, + const bool DCFC_capable, + const double max_c_rate, + const double pack_voltage_at_peak_power_V); const peak_power_per_crate& get_charge_profile_peak_power_W_per_Wh() const; diff --git a/source/factory/factory_EV_charge_model.cpp b/source/factory/factory_EV_charge_model.cpp index bcdb143..09b1c66 100644 --- a/source/factory/factory_EV_charge_model.cpp +++ b/source/factory/factory_EV_charge_model.cpp @@ -13,12 +13,12 @@ factory_EV_charge_model::factory_EV_charge_model(const EV_EVSE_inventory& inventory, const EV_ramping_map& custom_EV_ramping, const EV_EVSE_ramping_map& custom_EV_EVSE_ramping, - const bool& model_stochastic_battery_degregation) + const bool model_stochastic_battery_degregation) : inventory{ inventory }, - charging_transitions_obj{ factory_charging_transitions{inventory,custom_EV_ramping, custom_EV_EVSE_ramping} }, - puVrms_vs_P2_obj{ factory_puVrms_vs_P2{inventory} }, - SOC_vs_P2_obj{ factory_SOC_vs_P2{inventory} }, - P2_vs_battery_eff_obj{ factory_P2_vs_battery_efficiency{inventory} }, + charging_transitions_obj{ inventory, custom_EV_ramping, custom_EV_EVSE_ramping }, + puVrms_vs_P2_obj{ inventory }, + SOC_vs_P2_obj{ inventory }, + P2_vs_battery_eff_obj{ inventory }, model_stochastic_battery_degregation{ model_stochastic_battery_degregation } { } @@ -26,7 +26,7 @@ factory_EV_charge_model::factory_EV_charge_model(const EV_EVSE_inventory& invent vehicle_charge_model* factory_EV_charge_model::alloc_get_EV_charge_model(const charge_event_data& event, const EVSE_type& EVSE, - const double& SE_P2_limit_kW) const + const double SE_P2_limit_kW) const { const EV_type& EV = event.vehicle_type; diff --git a/source/factory/factory_EV_charge_model.h b/source/factory/factory_EV_charge_model.h index 71175ef..de234e6 100644 --- a/source/factory/factory_EV_charge_model.h +++ b/source/factory/factory_EV_charge_model.h @@ -30,11 +30,11 @@ class factory_EV_charge_model factory_EV_charge_model(const EV_EVSE_inventory& inventory, const EV_ramping_map& EV_ramping, const EV_EVSE_ramping_map& EV_EVSE_ramping, - const bool& model_stochastic_battery_degregation); + const bool model_stochastic_battery_degregation); vehicle_charge_model* alloc_get_EV_charge_model(const charge_event_data& event, const EVSE_type& EVSE, - const double& SE_P2_limit_kW) const; + const double SE_P2_limit_kW) const; void write_charge_profile(const std::string& output_path) const; }; diff --git a/source/factory/factory_SOC_vs_P2.cpp b/source/factory/factory_SOC_vs_P2.cpp index 092a7da..1d11ee8 100644 --- a/source/factory/factory_SOC_vs_P2.cpp +++ b/source/factory/factory_SOC_vs_P2.cpp @@ -469,7 +469,8 @@ const SOC_vs_P2 create_dcPkW_from_soc::get_charging_dcfc_charge_profile(const EV return SOC_vs_P2{ dcPkW_from_soc_input, zero_slope_threshold_P2_vs_soc }; } -const SOC_vs_P2 create_dcPkW_from_soc::get_discharging_dcfc_charge_profile(const EV_type& EV, const EVSE_type& EVSE) const +const SOC_vs_P2 create_dcPkW_from_soc::get_discharging_dcfc_charge_profile(const EV_type& EV, + const EVSE_type& EVSE) const { const double battery_size_kWh = this->inventory.get_EV_inventory().at(EV).get_battery_size_kWh(); const double battery_capacity_Ah_1C = this->inventory.get_EV_inventory().at(EV).get_battery_size_Ah_1C(); diff --git a/source/factory/factory_SOC_vs_P2.h b/source/factory/factory_SOC_vs_P2.h index 20a7770..0f5a54b 100644 --- a/source/factory/factory_SOC_vs_P2.h +++ b/source/factory/factory_SOC_vs_P2.h @@ -96,7 +96,8 @@ class factory_SOC_vs_P2 public: factory_SOC_vs_P2(const EV_EVSE_inventory& inventory); - const SOC_vs_P2& get_SOC_vs_P2_curves(const EV_type& EV, const EVSE_type& EVSE) const; + const SOC_vs_P2& get_SOC_vs_P2_curves(const EV_type& EV, + const EVSE_type& EVSE) const; void write_charge_profile(const std::string& output_path) const; }; diff --git a/source/factory/factory_ac_to_dc_converter.h b/source/factory/factory_ac_to_dc_converter.h index 61e3a01..68db1d5 100644 --- a/source/factory/factory_ac_to_dc_converter.h +++ b/source/factory/factory_ac_to_dc_converter.h @@ -17,7 +17,7 @@ class factory_ac_to_dc_converter public: factory_ac_to_dc_converter(const EV_EVSE_inventory& inventory) - : inventory(inventory) + : inventory{ inventory } { } ac_to_dc_converter* alloc_get_ac_to_dc_converter(ac_to_dc_converter_enum converter_type, diff --git a/source/factory/factory_supply_equipment_model.cpp b/source/factory/factory_supply_equipment_model.cpp index 9614123..3b7feb1 100644 --- a/source/factory/factory_supply_equipment_model.cpp +++ b/source/factory/factory_supply_equipment_model.cpp @@ -4,10 +4,16 @@ // Supply Equipment Charge Model Factory //############################################################################# +factory_supply_equipment_model::factory_supply_equipment_model(const EV_EVSE_inventory& inventory) + : inventory{ inventory }, + CE_queuing_inputs{ } +{ +} + factory_supply_equipment_model::factory_supply_equipment_model(const EV_EVSE_inventory& inventory, const charge_event_queuing_inputs& CE_queuing_inputs_) - : inventory(inventory), - CE_queuing_inputs(CE_queuing_inputs_) + : inventory{ inventory }, + CE_queuing_inputs{ CE_queuing_inputs_ } { } diff --git a/source/factory/factory_supply_equipment_model.h b/source/factory/factory_supply_equipment_model.h index 4984c72..912d52f 100644 --- a/source/factory/factory_supply_equipment_model.h +++ b/source/factory/factory_supply_equipment_model.h @@ -21,8 +21,9 @@ class factory_supply_equipment_model charge_event_queuing_inputs CE_queuing_inputs; public: - factory_supply_equipment_model(const EV_EVSE_inventory& inventory) : inventory{ inventory } {} - factory_supply_equipment_model(const EV_EVSE_inventory& inventory, const charge_event_queuing_inputs& CE_queuing_inputs_); + factory_supply_equipment_model(const EV_EVSE_inventory& inventory); + factory_supply_equipment_model(const EV_EVSE_inventory& inventory, + const charge_event_queuing_inputs& CE_queuing_inputs_); void get_supply_equipment_model(bool building_charge_profile_library, const SE_configuration& SE_config, diff --git a/source/globals/globals_python_bind.cpp b/source/globals/globals_python_bind.cpp index e599552..2456647 100644 --- a/source/globals/globals_python_bind.cpp +++ b/source/globals/globals_python_bind.cpp @@ -26,18 +26,7 @@ PYBIND11_MODULE(Caldera_globals, m) //-------------------------------------------- py::class_(m, "interface_to_SE_groups_inputs") - .def(py::init< bool, - EV_ramping_map, - std::vector, - charge_event_queuing_inputs, - std::vector, - double, - int, - std::vector&, - std::vector&, - double, - L2_control_strategy_parameters, - bool >()); + .def(py::init< bool, EV_ramping_map, std::vector, charge_event_queuing_inputs, std::vector, double, int, std::vector, std::vector, double,L2_control_strategy_parameters, bool >()); //--------------------------------- // Charge Event Data diff --git a/source/globals/helper.cpp b/source/globals/helper.cpp index a12fee2..ad88f16 100644 --- a/source/globals/helper.cpp +++ b/source/globals/helper.cpp @@ -450,7 +450,11 @@ double LPF_kernel::get_filtered_value() // Get Base Load Forecast //############################################################################# -get_base_load_forecast::get_base_load_forecast(double data_start_unix_time_, int data_timestep_sec_, std::vector& actual_load_akW_, std::vector& forecast_load_akW_, double adjustment_interval_hrs_) +get_base_load_forecast::get_base_load_forecast(const double data_start_unix_time_, + const int data_timestep_sec_, + const std::vector& actual_load_akW_, + const std::vector& forecast_load_akW_, + const double adjustment_interval_hrs_) : data_start_unix_time{data_start_unix_time_}, data_timestep_sec{ data_timestep_sec_ }, actual_load_akW{ actual_load_akW_ }, @@ -468,7 +472,9 @@ get_base_load_forecast::get_base_load_forecast(double data_start_unix_time_, int } -std::vector get_base_load_forecast::get_forecast_akW(double unix_start_time, int forecast_timestep_mins, double forecast_duration_hrs) +std::vector get_base_load_forecast::get_forecast_akW(const double unix_start_time, + const int forecast_timestep_mins, + const double forecast_duration_hrs) const { int num_data_steps_to_aggregate_for_each_forecast_step; if(0.001 < std::abs(60*forecast_timestep_mins % this->data_timestep_sec)) diff --git a/source/globals/helper.h b/source/globals/helper.h index 7387857..8e3d9a1 100644 --- a/source/globals/helper.h +++ b/source/globals/helper.h @@ -226,8 +226,14 @@ class get_base_load_forecast public: get_base_load_forecast() {}; - get_base_load_forecast(double data_start_unix_time_, int data_timestep_sec_, std::vector& actual_load_akW_, std::vector& forecast_load_akW_, double adjustment_interval_hrs_); - std::vector get_forecast_akW(double unix_start_time, int forecast_timestep_mins, double forecast_duration_hrs); + get_base_load_forecast(const double data_start_unix_time_, + const int data_timestep_sec_, + const std::vector& actual_load_akW_, + const std::vector& forecast_load_akW_, + const double adjustment_interval_hrs_); + std::vector get_forecast_akW(const double unix_start_time, + const int forecast_timestep_mins, + const double forecast_duration_hrs) const; }; diff --git a/source/globals/inputs.h b/source/globals/inputs.h index 677cabb..644c7b7 100644 --- a/source/globals/inputs.h +++ b/source/globals/inputs.h @@ -21,8 +21,8 @@ struct vehicle_charge_model_inputs vehicle_charge_model_inputs(const charge_event_data& CE, const EV_type& EV, const EVSE_type& EVSE, - const double& SE_P2_limit_kW, - const double& battery_size_kWh, + const double SE_P2_limit_kW, + const double battery_size_kWh, const factory_charging_transitions& CT_factory, const factory_puVrms_vs_P2& VP_factory, const factory_SOC_vs_P2& SOCP_factory, @@ -56,8 +56,8 @@ struct interface_to_SE_groups_inputs // baseLD_forecaster_inputs double data_start_unix_time; int data_timestep_sec; - std::vector& actual_load_akW; - std::vector& forecast_load_akW; + std::vector actual_load_akW; + std::vector forecast_load_akW; double adjustment_interval_hrs; // control_strategy_inputs @@ -71,8 +71,8 @@ struct interface_to_SE_groups_inputs std::vector infrastructure_topology, double data_start_unix_time, int data_timestep_sec, - std::vector& actual_load_akW, - std::vector& forecast_load_akW, + std::vector actual_load_akW, + std::vector forecast_load_akW, double adjustment_interval_hrs, L2_control_strategy_parameters L2_parameters, bool ensure_pev_charge_needs_met) diff --git a/source/load_inputs/CMakeLists.txt b/source/load_inputs/CMakeLists.txt index 145dfc4..78ab3fe 100644 --- a/source/load_inputs/CMakeLists.txt +++ b/source/load_inputs/CMakeLists.txt @@ -1,7 +1,6 @@ set(LOAD_INPUTS_FILES "load_EV_EVSE_inventory.cpp" "load_EV_inventory.cpp" - "load_EVSE_inventory.cpp" - "load_helper.cpp") + "load_EVSE_inventory.cpp") add_library(Load_inputs STATIC ${LOAD_INPUTS_FILES}) target_compile_features(Load_inputs PUBLIC cxx_std_17) diff --git a/source/load_inputs/load_EVSE_inventory.cpp b/source/load_inputs/load_EVSE_inventory.cpp index 984e9bc..8826515 100644 --- a/source/load_inputs/load_EVSE_inventory.cpp +++ b/source/load_inputs/load_EVSE_inventory.cpp @@ -5,8 +5,9 @@ #include load_EVSE_inventory::load_EVSE_inventory(const std::string& inputs_dir) : - EVSE_inv(this->load(inputs_dir)) -{} + EVSE_inv{ this->load(inputs_dir) } +{ +} const EVSE_inventory& load_EVSE_inventory::get_EVSE_inventory() const { diff --git a/source/load_inputs/load_EV_inventory.cpp b/source/load_inputs/load_EV_inventory.cpp index 5244375..059d48f 100644 --- a/source/load_inputs/load_EV_inventory.cpp +++ b/source/load_inputs/load_EV_inventory.cpp @@ -5,7 +5,7 @@ #include load_EV_inventory::load_EV_inventory(const std::string& inputs_dir) : - EV_inv(this->load(inputs_dir)) + EV_inv{ this->load(inputs_dir) } {} const EV_inventory& load_EV_inventory::get_EV_inventory() const diff --git a/source/load_inputs/load_helper.cpp b/source/load_inputs/load_helper.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/source/load_inputs/load_helper.h b/source/load_inputs/load_helper.h deleted file mode 100644 index 314531d..0000000 --- a/source/load_inputs/load_helper.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef load_helper_H -#define load_helper_H - - - -#endif \ No newline at end of file From 8da3d397bbadab4ef9ba7124886fe479bea88353 Mon Sep 17 00:00:00 2001 From: Steven Schmidt Date: Thu, 8 Jun 2023 15:05:44 -0600 Subject: [PATCH 31/52] Fixing some linux-compile errors by adding some additional #includes. --- source/base/battery_calculate_limits.h | 1 + source/charging_models/EV_EVSE_inventory.cpp | 9 ++++----- source/factory/factory_SOC_vs_P2.cpp | 1 + source/load_inputs/load_EVSE_inventory.cpp | 1 + source/load_inputs/load_EV_inventory.cpp | 1 + 5 files changed, 8 insertions(+), 5 deletions(-) diff --git a/source/base/battery_calculate_limits.h b/source/base/battery_calculate_limits.h index d0f0a0d..b3fed5f 100644 --- a/source/base/battery_calculate_limits.h +++ b/source/base/battery_calculate_limits.h @@ -5,6 +5,7 @@ #include #include // Stream to consol (may be needed for files too???) +#include #include "inputs.h" // vehicle_charge_model_inputs #include "helper.h" // line_segment diff --git a/source/charging_models/EV_EVSE_inventory.cpp b/source/charging_models/EV_EVSE_inventory.cpp index 31bbfd6..988f92d 100644 --- a/source/charging_models/EV_EVSE_inventory.cpp +++ b/source/charging_models/EV_EVSE_inventory.cpp @@ -1,4 +1,5 @@ #include "EV_EVSE_inventory.h" +#include EV_EVSE_inventory::EV_EVSE_inventory(const EV_inventory& EV_inv, const EVSE_inventory& EVSE_inv) @@ -110,14 +111,12 @@ const bool EV_EVSE_inventory::pev_is_compatible_with_supply_equipment(const pev_ { auto it = std::find(this->compatible_EV_EVSE_pair.begin(), this->compatible_EV_EVSE_pair.end(), EV_EVSE_combination); - if (it == this->compatible_EV_EVSE_pair.end()) - { - return false; - } - else + if (it != this->compatible_EV_EVSE_pair.end()) { return true; } + + return false; } const bool EV_EVSE_inventory::is_valid_EV_type( const EV_type& ev_type ) const diff --git a/source/factory/factory_SOC_vs_P2.cpp b/source/factory/factory_SOC_vs_P2.cpp index 1d11ee8..9fdbd84 100644 --- a/source/factory/factory_SOC_vs_P2.cpp +++ b/source/factory/factory_SOC_vs_P2.cpp @@ -1,5 +1,6 @@ #include "factory_SOC_vs_P2.h" #include +#include //########################################################## // SOC_vs_P2 diff --git a/source/load_inputs/load_EVSE_inventory.cpp b/source/load_inputs/load_EVSE_inventory.cpp index 8826515..d6a3522 100644 --- a/source/load_inputs/load_EVSE_inventory.cpp +++ b/source/load_inputs/load_EVSE_inventory.cpp @@ -3,6 +3,7 @@ #include #include +#include load_EVSE_inventory::load_EVSE_inventory(const std::string& inputs_dir) : EVSE_inv{ this->load(inputs_dir) } diff --git a/source/load_inputs/load_EV_inventory.cpp b/source/load_inputs/load_EV_inventory.cpp index 059d48f..145716c 100644 --- a/source/load_inputs/load_EV_inventory.cpp +++ b/source/load_inputs/load_EV_inventory.cpp @@ -3,6 +3,7 @@ #include #include +#include load_EV_inventory::load_EV_inventory(const std::string& inputs_dir) : EV_inv{ this->load(inputs_dir) } From 57a913b02829f766c0293048d82eb4793822f641 Mon Sep 17 00:00:00 2001 From: Steven Schmidt Date: Tue, 15 Aug 2023 09:23:16 -0600 Subject: [PATCH 32/52] Adding two columns 'EVSE_user_facing_name' and 'EVSE_user_facing_description' to the 'EVSE_inputs.csv' file. Also, replaced tabs with spaces in the file 'load_EVSE_inventory.cpp'. --- source/load_inputs/load_EVSE_inventory.cpp | 505 +++++++++++---------- 1 file changed, 264 insertions(+), 241 deletions(-) diff --git a/source/load_inputs/load_EVSE_inventory.cpp b/source/load_inputs/load_EVSE_inventory.cpp index d6a3522..64da95e 100644 --- a/source/load_inputs/load_EVSE_inventory.cpp +++ b/source/load_inputs/load_EVSE_inventory.cpp @@ -4,264 +4,287 @@ #include #include #include +#include load_EVSE_inventory::load_EVSE_inventory(const std::string& inputs_dir) : - EVSE_inv{ this->load(inputs_dir) } + EVSE_inv{ this->load(inputs_dir) } { } const EVSE_inventory& load_EVSE_inventory::get_EVSE_inventory() const { - return this->EVSE_inv; + return this->EVSE_inv; } const EVSE_level load_EVSE_inventory::string_to_EVSE_level(const std::string& str) const { - const std::unordered_map map = { - {"L1", L1}, - {"L2", L2}, - {"DCFC", DCFC} - }; - - auto it = map.find(str); - if (it != map.end()) { - return it->second; - } - else { - throw std::invalid_argument("Invalid EVSE level string"); - } + const std::unordered_map map = { + {"L1", L1}, + {"L2", L2}, + {"DCFC", DCFC} + }; + + auto it = map.find(str); + if (it != map.end()) { + return it->second; + } + else { + throw std::invalid_argument("Invalid EVSE level string"); + } } const EVSE_phase load_EVSE_inventory::string_to_EVSE_phase(const std::string& str) const { - const std::unordered_map map = { - {"1", singlephase}, - {"one", singlephase}, - {"3", threephase}, - {"three", threephase} - }; - - auto it = map.find(str); - if (it != map.end()) { - return it->second; - } - else { - throw std::invalid_argument("Invalid EVSE level string"); - } + const std::unordered_map map = { + {"1", singlephase}, + {"one", singlephase}, + {"3", threephase}, + {"three", threephase} + }; + + auto it = map.find(str); + if (it != map.end()) { + return it->second; + } + else { + throw std::invalid_argument("Invalid EVSE level string"); + } } EVSE_inventory load_EVSE_inventory::load(const std::string& inputs_dir) { - EVSE_inventory EVSE_inv; - - std::string EVSE_inputs_file = inputs_dir + "/EVSE_inputs.csv"; - ASSERT(std::filesystem::exists(EVSE_inputs_file), EVSE_inputs_file << " file does not exist"); - std::ifstream EVSE_inputs_file_handle(EVSE_inputs_file); - - //------------------------------ - - std::string line; - std::vector elements_in_line; - int line_number = 1; - - //------------------------------- - - // column names - std::getline(EVSE_inputs_file_handle, line); - elements_in_line = tokenize(line); - - // check number of columns - ASSERT(elements_in_line.size() == 8, EVSE_inputs_file << " invalid number of columns. Need 8 \ - columns but " << elements_in_line.size() << " provided in line number " << line_number); - - // check if columns equal to { EVSE_type, EVSE_level, EVSE_phase_connection, AC/DC_power_limit_kW, - // AC/DC_voltage_limits_V, AC/DC_current_limit_A, standby_real_power_kW, standby_reactive_power_kVAR } - std::vector column_names = { "EVSE_type", "EVSE_level", "EVSE_phase_connection", - "AC/DC_power_limit_kW", "AC/DC_voltage_limits_V", "AC/DC_current_limit_A", "standby_real_power_kW", - "standby_reactive_power_kVAR" }; - - ASSERT(elements_in_line == column_names, EVSE_inputs_file << " column names doesn\'t match. " << - "Expected column names are { EVSE_type, EVSE_level, EVSE_phase_connection, AC/DC_power_limit_kW, " << - "AC/DC_voltage_limits_V, AC/DC_current_limit_A, standby_real_power_kW, standby_reactive_power_kVAR }"); - - while (std::getline(EVSE_inputs_file_handle, line)) - { - line_number += 1; - elements_in_line = tokenize(line); - ASSERT(elements_in_line.size() == 8, EVSE_inputs_file << " invalid number of columns. Need 8 \ - columns but " << elements_in_line.size() << " provided in line number " << line_number); - - - const EVSE_type type = [&]() { - - // check if EVSE_type is unique - std::string str = elements_in_line[0]; - ASSERT(EVSE_inv.find(str) == EVSE_inv.end(), EVSE_inputs_file << " " << column_names[0] << " " << - str << " is not unique in line number " << line_number); - return str; - - }(); - - const EVSE_level level = [&]() { - - // check if battery_chemistry is equal to LTO, LMO or NMC - std::vector options = { "L1", "L2", "DCFC" }; - std::string str = elements_in_line[1]; - bool is_valid = std::any_of(options.begin(), options.end(), - [&str](const std::string& s) { return str == s; }); - ASSERT(is_valid, EVSE_inputs_file << " " << column_names[1] << " " << str << - " is not one of {L1, L2, DCFC} in line number " << line_number); - - return this->string_to_EVSE_level(str); - - }(); - - const EVSE_phase phase = [&]() { - - // check if battery_chemistry is equal to LTO, LMO or NMC - std::vector options = { "1", "3", "one", "three"}; - std::string str = elements_in_line[2]; - std::transform(str.begin(), str.end(), str.begin(), ::tolower); - - bool is_valid = std::any_of(options.begin(), options.end(), - [&str](const std::string& s) { return str == s; }); - ASSERT(is_valid, EVSE_inputs_file << " " << column_names[2] << " " << str << - " is not one of {1, 3, one, three} in line number " << line_number); - - return this->string_to_EVSE_phase(str); - - }(); - - const double power_limit_kW = [&]() { - - // check if power_limit_kW can be converted to double and also non negative - std::string str = elements_in_line[3]; - double val; - bool is_conversion_successful; - try { - val = std::stod(str); - is_conversion_successful = true; - } - catch (...) { - is_conversion_successful = false; - } - ASSERT(is_conversion_successful, EVSE_inputs_file << " " << column_names[3] << " " << - str << " is not a double in line number " << line_number); - - ASSERT(val > 0, EVSE_inputs_file << " " << column_names[3] << " " << str << - " is less than or equal to 0 in line number " << line_number); - return val; - - }(); - - const double volatge_limit_V = [&]() { - - // check if volatge_limit_V is double and also non negative - std::string str = elements_in_line[4]; - double val; - bool is_conversion_successful; - try { - val = std::stod(str); - is_conversion_successful = true; - } - catch (...) { - is_conversion_successful = false; - } - ASSERT(is_conversion_successful, EVSE_inputs_file << " " << column_names[4] << " " << - str << " is not a double in line number " << line_number); - - if(level == DCFC) - { - ASSERT(val > 0, EVSE_inputs_file << " " << column_names[4] << " " << str << - " is less than or equal to 0 in line number " << line_number); - } - else - { - ASSERT(val > 0 || val == -1, EVSE_inputs_file << " " << column_names[4] << " " << str << - " is less than or equal to 0 in line number " << line_number); - } - - return val; - - }(); - - const double current_limit_A = [&]() { - - // check if current_limit_A is double and also non negative - std::string str = elements_in_line[5]; - double val; - bool is_conversion_successful; - try { - val = std::stod(str); - is_conversion_successful = true; - } - catch (...) { - is_conversion_successful = false; - } - - if (level == DCFC) - { - ASSERT(is_conversion_successful, EVSE_inputs_file << " " << column_names[5] << " " << - str << " is not a double in line number " << line_number); - } - else - { - ASSERT(val > 0 || val == -1, EVSE_inputs_file << " " << column_names[5] << " " << str << - " is less than or equal to 0 in line number " << line_number); - } - - return val; - - }(); - - const double standby_real_power_kW = [&]() { - - // check standby_real_power_kW is double and non negative - std::string str = elements_in_line[6]; - double val; - bool is_conversion_successful; - try { - val = std::stod(str); - is_conversion_successful = true; - } - catch (...) { - is_conversion_successful = false; - } - ASSERT(is_conversion_successful, EVSE_inputs_file << " " << column_names[6] << " " << str << - " is not a int in line number " << line_number); - - ASSERT(val >= 0, EVSE_inputs_file << " " << column_names[6] << " " << str << - " is less than or equal to 0 in line number " << line_number); - - return val; - - }(); - - const double standby_reactive_power_kW = [&]() { - - // check AC_charge_rate_kW is double - std::string str = elements_in_line[7]; - double val; - bool is_conversion_successful; - try { - val = std::stod(str); - is_conversion_successful = true; - } - catch (...) { - is_conversion_successful = false; - } - ASSERT(is_conversion_successful, EVSE_inputs_file << " " << column_names[7] << " " << - str << " is not a double in line number " << line_number); - - return val; - }(); - - // other checks - - EVSE_inv.emplace(type, EVSE_characteristics(type, level, phase, power_limit_kW, volatge_limit_V, - current_limit_A, standby_real_power_kW, standby_reactive_power_kW)); - - } - - return std::move(EVSE_inv); + EVSE_inventory EVSE_inv; + + std::string EVSE_inputs_file = inputs_dir + "/EVSE_inputs.csv"; + ASSERT(std::filesystem::exists(EVSE_inputs_file), EVSE_inputs_file << " file does not exist"); + std::ifstream EVSE_inputs_file_handle(EVSE_inputs_file); + + //------------------------------ + + std::string line; + std::vector elements_in_line; + int line_number = 1; + + //------------------------------- + + // column names + std::getline(EVSE_inputs_file_handle, line); + elements_in_line = tokenize(line); + + // Correct columns. + std::vector column_names = + { + "EVSE_type", + "EVSE_level", + "EVSE_phase_connection", + "AC/DC_power_limit_kW", + "AC/DC_voltage_limits_V", + "AC/DC_current_limit_A", + "standby_real_power_kW", + "standby_reactive_power_kVAR", + "EVSE_user_facing_name", + "EVSE_user_facing_description" + }; + + // Check number of columns + ASSERT( \ + elements_in_line.size() == column_names.size(), \ + EVSE_inputs_file << " invalid number of columns. Need " << column_names.size() << " columns but " << elements_in_line.size() << " provided in line number " << line_number \ + ); + + // Check we have the correct columns + { + std::stringstream assert_error_ss; + assert_error_ss << EVSE_inputs_file << " column names don\'t match. " << "Expected column names are { "; + for( int i = 0; i < column_names.size(); i++ ) + { + assert_error_ss << column_names.at(i); + if( i < column_names.size()-1 ) + { + assert_error_ss << ", "; + } + } + assert_error_ss << " }"; + ASSERT( elements_in_line == column_names, assert_error_ss.str() ); + } + + while (std::getline(EVSE_inputs_file_handle, line)) + { + line_number += 1; + elements_in_line = tokenize(line); + ASSERT( \ + elements_in_line.size() == column_names.size(), \ + EVSE_inputs_file << " invalid number of columns. Need " << column_names.size() << " columns but " << elements_in_line.size() << " provided in line number " << line_number \ + ); + + const EVSE_type type = [&]() { + // check if EVSE_type is unique + std::string str = elements_in_line[0]; + ASSERT(EVSE_inv.find(str) == EVSE_inv.end(), EVSE_inputs_file << " " << column_names[0] << " " << + str << " is not unique in line number " << line_number); + return str; + }(); + + const EVSE_level level = [&]() { + + // check if battery_chemistry is equal to LTO, LMO or NMC + std::vector options = { "L1", "L2", "DCFC" }; + std::string str = elements_in_line[1]; + bool is_valid = std::any_of(options.begin(), options.end(), + [&str](const std::string& s) { return str == s; }); + ASSERT(is_valid, EVSE_inputs_file << " " << column_names[1] << " " << str << + " is not one of {L1, L2, DCFC} in line number " << line_number); + + return this->string_to_EVSE_level(str); + + }(); + + const EVSE_phase phase = [&]() { + + // check if battery_chemistry is equal to LTO, LMO or NMC + std::vector options = { "1", "3", "one", "three"}; + std::string str = elements_in_line[2]; + std::transform(str.begin(), str.end(), str.begin(), ::tolower); + + bool is_valid = std::any_of(options.begin(), options.end(), + [&str](const std::string& s) { return str == s; }); + ASSERT(is_valid, EVSE_inputs_file << " " << column_names[2] << " " << str << + " is not one of {1, 3, one, three} in line number " << line_number); + + return this->string_to_EVSE_phase(str); + + }(); + + const double power_limit_kW = [&]() { + + // check if power_limit_kW can be converted to double and also non negative + std::string str = elements_in_line[3]; + double val; + bool is_conversion_successful; + try { + val = std::stod(str); + is_conversion_successful = true; + } + catch (...) { + is_conversion_successful = false; + } + ASSERT(is_conversion_successful, EVSE_inputs_file << " " << column_names[3] << " " << + str << " is not a double in line number " << line_number); + + ASSERT(val > 0, EVSE_inputs_file << " " << column_names[3] << " " << str << + " is less than or equal to 0 in line number " << line_number); + return val; + + }(); + + const double volatge_limit_V = [&]() { + + // check if volatge_limit_V is double and also non negative + std::string str = elements_in_line[4]; + double val; + bool is_conversion_successful; + try { + val = std::stod(str); + is_conversion_successful = true; + } + catch (...) { + is_conversion_successful = false; + } + ASSERT(is_conversion_successful, EVSE_inputs_file << " " << column_names[4] << " " << + str << " is not a double in line number " << line_number); + + if(level == DCFC) + { + ASSERT(val > 0, EVSE_inputs_file << " " << column_names[4] << " " << str << + " is less than or equal to 0 in line number " << line_number); + } + else + { + ASSERT(val > 0 || val == -1, EVSE_inputs_file << " " << column_names[4] << " " << str << + " is less than or equal to 0 in line number " << line_number); + } + + return val; + + }(); + + const double current_limit_A = [&]() { + + // check if current_limit_A is double and also non negative + std::string str = elements_in_line[5]; + double val; + bool is_conversion_successful; + try { + val = std::stod(str); + is_conversion_successful = true; + } + catch (...) { + is_conversion_successful = false; + } + + if (level == DCFC) + { + ASSERT(is_conversion_successful, EVSE_inputs_file << " " << column_names[5] << " " << + str << " is not a double in line number " << line_number); + } + else + { + ASSERT(val > 0 || val == -1, EVSE_inputs_file << " " << column_names[5] << " " << str << + " is less than or equal to 0 in line number " << line_number); + } + + return val; + + }(); + + const double standby_real_power_kW = [&]() { + + // check standby_real_power_kW is double and non negative + std::string str = elements_in_line[6]; + double val; + bool is_conversion_successful; + try { + val = std::stod(str); + is_conversion_successful = true; + } + catch (...) { + is_conversion_successful = false; + } + ASSERT(is_conversion_successful, EVSE_inputs_file << " " << column_names[6] << " " << str << + " is not a int in line number " << line_number); + + ASSERT(val >= 0, EVSE_inputs_file << " " << column_names[6] << " " << str << + " is less than or equal to 0 in line number " << line_number); + + return val; + + }(); + + const double standby_reactive_power_kW = [&]() { + + // check AC_charge_rate_kW is double + std::string str = elements_in_line[7]; + double val; + bool is_conversion_successful; + try { + val = std::stod(str); + is_conversion_successful = true; + } + catch (...) { + is_conversion_successful = false; + } + ASSERT(is_conversion_successful, EVSE_inputs_file << " " << column_names[7] << " " << + str << " is not a double in line number " << line_number); + + return val; + }(); + + // other checks + + EVSE_inv.emplace(type, EVSE_characteristics(type, level, phase, power_limit_kW, volatge_limit_V, + current_limit_A, standby_real_power_kW, standby_reactive_power_kW)); + + } + + return std::move(EVSE_inv); } \ No newline at end of file From 4a553060ae53ef3dde052ee38febdcec6b3aabdf Mon Sep 17 00:00:00 2001 From: Steven Schmidt Date: Tue, 15 Aug 2023 16:05:07 -0600 Subject: [PATCH 33/52] Adding .DS_Store to the .gitignore file --- .gitignore | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 486122f..65abca5 100644 --- a/.gitignore +++ b/.gitignore @@ -10,4 +10,8 @@ __pycache__/ # Distribution / packaging build/ *.vs* -CMakeSettings.json \ No newline at end of file +CMakeSettings.json + +# MacOS stuff +.DS_Store + From 11c79c797a8ec49564d9c14ee96b42d6bddc2639 Mon Sep 17 00:00:00 2001 From: Steven Schmidt Date: Wed, 16 Aug 2023 16:08:24 -0600 Subject: [PATCH 34/52] Updating example input files for DirectXFC, EVs_at_Risk, eMosaic, after adding two new columns to EVSE_inputs.csv --- inputs/DirectXFC/EVSE_inputs.csv | 20 ++++++++++---------- inputs/EVs_at_Risk/EVSE_inputs.csv | 20 ++++++++++---------- inputs/eMosaic/EVSE_inputs.csv | 18 +++++++++--------- 3 files changed, 29 insertions(+), 29 deletions(-) diff --git a/inputs/DirectXFC/EVSE_inputs.csv b/inputs/DirectXFC/EVSE_inputs.csv index 042eb0a..852ed26 100644 --- a/inputs/DirectXFC/EVSE_inputs.csv +++ b/inputs/DirectXFC/EVSE_inputs.csv @@ -1,10 +1,10 @@ -EVSE_type,EVSE_level,EVSE_phase_connection,AC/DC_power_limit_kW,AC/DC_voltage_limits_V,AC/DC_current_limit_A,standby_real_power_kW,standby_reactive_power_kVAR -L1_1440,L1,1,1.289338,-1,-1,0,0 -L2_3600,L2,1,3.30192,-1,-1,0,0 -L2_7200,L2,1,6.624,-1,-1,0,0 -L2_9600,L2,1,8.832,-1,-1,0,0 -L2_11520,L2,1,10.5984,-1,-1,0,0 -L2_17280,L2,1,15.8976,-1,-1,0,0 -dcfc_50,DCFC,3,50,500,125,0.1,-0.59 -xfc_150,DCFC,3,150,882.3529412,170,0.17,-0.445 -xfc_350,DCFC,3,350,700,500,0.17,-0.445 +EVSE_type,EVSE_level,EVSE_phase_connection,AC/DC_power_limit_kW,AC/DC_voltage_limits_V,AC/DC_current_limit_A,standby_real_power_kW,standby_reactive_power_kVAR,EVSE_user_facing_name,EVSE_user_facing_description +L1_1440,L1,1,1.289338,-1,-1,0,0,, +L2_3600,L2,1,3.30192,-1,-1,0,0,, +L2_7200,L2,1,6.624,-1,-1,0,0,, +L2_9600,L2,1,8.832,-1,-1,0,0,, +L2_11520,L2,1,10.5984,-1,-1,0,0,, +L2_17280,L2,1,15.8976,-1,-1,0,0,, +dcfc_50,DCFC,3,50,500,125,0.1,-0.59,, +xfc_150,DCFC,3,150,882.3529412,170,0.17,-0.445,, +xfc_350,DCFC,3,350,700,500,0.17,-0.445,, diff --git a/inputs/EVs_at_Risk/EVSE_inputs.csv b/inputs/EVs_at_Risk/EVSE_inputs.csv index 74b0963..8d162f0 100644 --- a/inputs/EVs_at_Risk/EVSE_inputs.csv +++ b/inputs/EVs_at_Risk/EVSE_inputs.csv @@ -1,10 +1,10 @@ -EVSE_type,EVSE_level,EVSE_phase_connection,AC/DC_power_limit_kW,AC/DC_voltage_limits_V,AC/DC_current_limit_A,standby_real_power_kW,standby_reactive_power_kVAR -L2_7200,L2,1,6.624,240,30,0,0 -L2_17280,L2,1,15.8976,240,71,0,0 -xfc_150,DCFC,3,150,882.3529412,170,0.17,-0.445 -xfc_350,DCFC,3,350,700,500,0.17,-0.445 -xfc_500kW,DCFC,3,500,1000,500,0.2,-0.03 -xfc_1000kW,DCFC,3,1000,1365.001365,732.6,0.2,-0.03 -xfc_2000kW,DCFC,3,2000,1363.636705,1466.6663,0.2,-0.03 -xfc_3000kW,DCFC,3,3000,1363.636364,2200,0.2,-0.03 -dwc_100kW,DCFC,3,100,800,125,0.2,-0.03 +EVSE_type,EVSE_level,EVSE_phase_connection,AC/DC_power_limit_kW,AC/DC_voltage_limits_V,AC/DC_current_limit_A,standby_real_power_kW,standby_reactive_power_kVAR,EVSE_user_facing_name,EVSE_user_facing_description +L2_7200,L2,1,6.624,240,30,0,0,, +L2_17280,L2,1,15.8976,240,71,0,0,, +xfc_150,DCFC,3,150,882.3529412,170,0.17,-0.445,, +xfc_350,DCFC,3,350,700,500,0.17,-0.445,, +xfc_500kW,DCFC,3,500,1000,500,0.2,-0.03,, +xfc_1000kW,DCFC,3,1000,1365.001365,732.6,0.2,-0.03,, +xfc_2000kW,DCFC,3,2000,1363.636705,1466.6663,0.2,-0.03,, +xfc_3000kW,DCFC,3,3000,1363.636364,2200,0.2,-0.03,, +dwc_100kW,DCFC,3,100,800,125,0.2,-0.03,, diff --git a/inputs/eMosaic/EVSE_inputs.csv b/inputs/eMosaic/EVSE_inputs.csv index 40c163f..b47cf70 100644 --- a/inputs/eMosaic/EVSE_inputs.csv +++ b/inputs/eMosaic/EVSE_inputs.csv @@ -1,9 +1,9 @@ -EVSE_type,EVSE_level,EVSE_phase_connection,AC/DC_power_limit_kW,AC/DC_voltage_limits_V,AC/DC_current_limit_A,standby_real_power_kW,standby_reactive_power_kVAR -L2_7200W,L2,1,7.2,240,30,0,0 -L2_17280W,L2,1,17.28,240,71,0,0 -xfc_20kW,DCFC,3,19.5,325,60,0.1,-0.59 -xfc_50kW,DCFC,3,50,625,80,0.1,-0.59 -xfc_90kW,DCFC,3,90,600,150,0.1,-0.59 -xfc_150kW,DCFC,3,150,750,200,0.17,-0.445 -xfc_180kW,DCFC,3,180,600,300,0.17,-0.445 -xfc_450kW,DCFC,3,450,750,600,0.17,-0.445 +EVSE_type,EVSE_level,EVSE_phase_connection,AC/DC_power_limit_kW,AC/DC_voltage_limits_V,AC/DC_current_limit_A,standby_real_power_kW,standby_reactive_power_kVAR,EVSE_user_facing_name,EVSE_user_facing_description +L2_7200W,L2,1,7.2,240,30,0,0,, +L2_17280W,L2,1,17.28,240,71,0,0,, +xfc_20kW,DCFC,3,19.5,325,60,0.1,-0.59,, +xfc_50kW,DCFC,3,50,625,80,0.1,-0.59,, +xfc_90kW,DCFC,3,90,600,150,0.1,-0.59,, +xfc_150kW,DCFC,3,150,750,200,0.17,-0.445,, +xfc_180kW,DCFC,3,180,600,300,0.17,-0.445,, +xfc_450kW,DCFC,3,450,750,600,0.17,-0.445,, From 52e94e54ae604c4b1605f1dfc12ab294e7fde715 Mon Sep 17 00:00:00 2001 From: Manoj Kumar Cebol Sundarrajan Date: Fri, 1 Sep 2023 12:20:13 -0600 Subject: [PATCH 35/52] Adding CalderaCast charing models and a test script --- CMakeLists.txt | 3 +- inputs/CalderaCast/EVSE_inputs.csv | 10 ++ inputs/CalderaCast/EV_inputs.csv | 15 ++ source/base/ICM_interface.cpp | 2 +- test/CMakeLists.txt | 12 ++ test/run_models.cpp | 270 +++++++++++++++++++++++++++++ 6 files changed, 310 insertions(+), 2 deletions(-) create mode 100644 inputs/CalderaCast/EVSE_inputs.csv create mode 100644 inputs/CalderaCast/EV_inputs.csv create mode 100644 test/CMakeLists.txt create mode 100644 test/run_models.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 2de721a..13ab216 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -14,4 +14,5 @@ message(STATUS "Install dir is ${INSTALL_DIR}") find_package(pybind11 CONFIG) add_subdirectory(source) -add_subdirectory(unittests) \ No newline at end of file +add_subdirectory(unittests) +add_subdirectory(test) \ No newline at end of file diff --git a/inputs/CalderaCast/EVSE_inputs.csv b/inputs/CalderaCast/EVSE_inputs.csv new file mode 100644 index 0000000..d0c32c9 --- /dev/null +++ b/inputs/CalderaCast/EVSE_inputs.csv @@ -0,0 +1,10 @@ +EVSE_type,EVSE_level,EVSE_phase_connection,AC/DC_power_limit_kW,AC/DC_voltage_limits_V,AC/DC_current_limit_A,standby_real_power_kW,standby_reactive_power_kVAR,EVSE_user_facing_name,EVSE_user_facing_description +L2_7200,L2,1,6.624,-1,-1,0,0,, +L2_11520,L2,1,10.5984,-1,-1,0,0,, +L2_17280,L2,1,15.8976,-1,-1,0,0,, +dcfc_50,DCFC,3,50,600,125,0.1,-0.59,, +xfc_150,DCFC,3,150,920,200,0.17,-0.445,, +xfc_150T,DCFC,3,150,500,300,0.17,-0.445,, +xfc_200,DCFC,3,200,920,300,0.17,-0.445,, +xfc_250,DCFC,3,250,920,500,0.17,-0.445,, +xfc_350,DCFC,3,350,920,500,0.17,-0.445,, diff --git a/inputs/CalderaCast/EV_inputs.csv b/inputs/CalderaCast/EV_inputs.csv new file mode 100644 index 0000000..46ae966 --- /dev/null +++ b/inputs/CalderaCast/EV_inputs.csv @@ -0,0 +1,15 @@ +EV_type,battery_chemistry,usable_battery_size_kWh,range_miles,efficiency_Wh/Mile,AC_charge_rate_kW,DCFC_capable,max_c_rate,pack_voltage_at_peak_power_V +bev250_400kW,LTO,87.5,250,350,10.58,TRUE,3.85,900 +bev300_575kW,LTO,142.5,300,475,10.58,TRUE,3.41,900 +bev300_400kW,LTO,97.5,300,325,10.58,TRUE,3.46,900 +bev250_350kW,NMC,118.75,250,475,10.58,TRUE,2.29,900 +bev300_300kW,NMC,97.5,300,325,10.58,TRUE,2.38,900 +bev150_150kW,NMC,45,150,300,8.832,TRUE,2.56,900 +bev250_ld2_300kW,NMC,87.5,250,350,10.58,TRUE,2.64,900 +bev200_ld4_150kW,NMC,95,200,475,8.832,TRUE,1.22,900 +bev275_ld1_150kW,NMC,82.5,275,300,8.832,TRUE,1.41,900 +bev250_ld1_75kW,NMC,75,250,300,6.072,TRUE,0.76,460 +bev150_ld1_50kW,NMC,45,150,300,6.072,TRUE,0.85,460 +phev_SUV,NMC,23.75,50,475,8.832,FALSE,-1,-1 +phev50,NMC,15.5,50,310,3.016365,FALSE,-1,-1 +phev20,NMC,5,20,250,3.016365,FALSE,-1,-1 diff --git a/source/base/ICM_interface.cpp b/source/base/ICM_interface.cpp index a558b75..7442d11 100644 --- a/source/base/ICM_interface.cpp +++ b/source/base/ICM_interface.cpp @@ -508,7 +508,7 @@ SE_power interface_to_SE_groups::get_SE_power(SE_id_type SE_id, double prev_unix else { //bool pev_is_connected_to_SE; - SE_charging_status SE_status_val; + SE_charging_status SE_status_val{}; double soc; //CE_status charge_status; ac_power_metrics ac_power; diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt new file mode 100644 index 0000000..b788ad2 --- /dev/null +++ b/test/CMakeLists.txt @@ -0,0 +1,12 @@ + +add_executable(run_models run_models.cpp ) +target_link_libraries(run_models Charging_models Load_inputs factory Base) +target_compile_features(run_models PUBLIC cxx_std_17) +target_include_directories(run_models PUBLIC ${PROJECT_SOURCE_DIR}/source/base) +target_include_directories(run_models PUBLIC ${PROJECT_SOURCE_DIR}/source/charging_models) +target_include_directories(run_models PUBLIC ${PROJECT_SOURCE_DIR}/source/factory) +target_include_directories(run_models PUBLIC ${PROJECT_SOURCE_DIR}/source/load_inputs) + +install(TARGETS run_models + DESTINATION ${PROJECT_SOURCE_DIR}) + diff --git a/test/run_models.cpp b/test/run_models.cpp new file mode 100644 index 0000000..8d84f9b --- /dev/null +++ b/test/run_models.cpp @@ -0,0 +1,270 @@ +#include +#include +#include + +#include "factory_charging_transitions.h" +#include "datatypes_global.h" +#include "ICM_interface.h" + + +void create_infrastruture_from_EVSE_inputs(const std::vector& EVs, const std::vector& EVSEs, std::vector& infrastructure_topology) +{ + int SE_group_id = 1; + SE_id_type SE_id = 1; + EVSE_type evse_type = ""; + double lattitude = 0.0; + double longitude = 0.0; + grid_node_id_type grid_node_id = ""; + std::string location_type = "O"; + + for (const std::string& EV : EVs) + { + for (const EVSE_type& EVSE : EVSEs) + { + evse_type = EVSE; + grid_node_id = EVSE; + SE_configuration SE{ SE_group_id, SE_id, evse_type, lattitude, longitude, grid_node_id, + location_type }; + infrastructure_topology.push_back(SE); + + SE_id += 1; + } + } +} + +interface_to_SE_groups_inputs create_ICM_inputs(const std::string& input_path, const std::vector& EVs, const std::vector& EVSEs) +{ + // factory_inputs + bool create_charge_profile_library = true; + EV_ramping_map ramping_by_pevType_only{}; + std::vector ramping_by_pevType_seType{}; + + // infrastructure_inputs + charge_event_queuing_inputs CE_queuing_inputs{}; + CE_queuing_inputs.max_allowed_overlap_time_sec = 2 * 60; + CE_queuing_inputs.queuing_mode = queuing_mode_enum::overlapAllowed_earlierArrivalTimeHasPriority; + + std::vector SE_config; + create_infrastruture_from_EVSE_inputs(EVs, EVSEs, SE_config); + SE_group_configuration Station_config(1, SE_config); + std::cout << "SE_group_configuration size : " << Station_config.SEs.size() << "\n"; + + std::vector infrastructure_topology {Station_config}; + + // baseLD_forecaster_inputs + double data_start_unix_time = 0.0; + int data_timestep_sec = 24*3600; + std::vector actual_load_akW{0}; + std::vector forecast_load_akW{0}; + double adjustment_interval_hrs = 0; + + // control_strategy_inputs + L2_control_strategy_parameters L2_parameters{}; + + // Set control strategy params even though they are not useful here + // TODO : Remove the dependency + ES100_L2_parameters es100_params; + es100_params.beginning_of_TofU_rate_period__time_from_midnight_hrs = -1; + es100_params.end_of_TofU_rate_period__time_from_midnight_hrs = 8; + es100_params.randomization_method = "M1"; + es100_params.M1_delay_period_hrs = 0.25; + es100_params.random_seed = 100; + + + VS100_L2_parameters vs100_params; + vs100_params.target_P3_reference__percent_of_maxP3 = 90; + vs100_params.max_delta_kW_per_min = 1000; + vs100_params.volt_delta_kW_curve_puV = {0.95, 0.99, 1.0, 1.05}; + vs100_params.volt_delta_kW_percP = { -40, -2, 0, 10 }; + + LPF_parameters_randomize_window_size lpf; + lpf.is_active = true; + lpf.seed = 40; + lpf.window_size_LB = 2; + lpf.window_size_UB = 18; + lpf.window_type = LPF_window_enum::Rectangular; + + vs100_params.voltage_LPF = lpf; + + L2_parameters.ES100_A = es100_params; + L2_parameters.VS100 = vs100_params; + + bool ensure_pev_charge_needs_met = true; + + return interface_to_SE_groups_inputs{ + create_charge_profile_library, + ramping_by_pevType_only, + ramping_by_pevType_seType, + CE_queuing_inputs, + infrastructure_topology, + data_start_unix_time, + data_timestep_sec, + actual_load_akW, + forecast_load_akW, + adjustment_interval_hrs, + L2_parameters, + ensure_pev_charge_needs_met + }; +} + + +void create_charge_events(const std::vector& EVs, const std::vector& SEs_to_run, std::vector& SE_group_charge_events) +{ + + int charge_event_id = 1; // is updated down below + int SE_group_id = 1; + SE_id_type SE_id = 1; // is updated down below + vehicle_id_type vehicle_id = 1; // is updated down below + EV_type vehicle_type = ""; + double arrival_unix_time = 1.0 * 3600; + double departure_unix_time = 3.0 * 3600; + double arrival_SOC = 0; + double departure_SOC = 98.8; + stop_charging_criteria stop_charge{}; + control_strategy_enums control_enums{}; + + std::vector charge_events; + + for (const std::string& EV : EVs) + { + vehicle_type = EV; + for (const std::string& evse : SEs_to_run) + { + + charge_events.emplace_back(charge_event_id, SE_group_id, SE_id, vehicle_id, vehicle_type, + arrival_unix_time, departure_unix_time, arrival_SOC, departure_SOC, + stop_charge, control_enums); + + SE_id += 1; + charge_event_id += 1; + vehicle_id += 1; + } + } + + + SE_group_charge_event_data SE_group_CEs{ 1, charge_events }; + SE_group_charge_events.push_back(SE_group_CEs); +} + + +int main() +{ + const std::string input_path = "./inputs/CalderaCast"; + + // select models to run + std::vector EVs = { "bev150_150kW", "bev250_350kW" }; + std::vector EVSEs = {"dcfc_50", "xfc_150", "xfc_150T", "xfc_200", "xfc_250", "xfc_350"}; + + //EVs = { "bev250_350kW" }; + //EVSEs = { "dcfc_50", "xfc_150", "xfc_150T", "xfc_200", "xfc_250", "xfc_350" }; + + //EVs = { "bev250_350kW" }; + //EVSEs = {"xfc_350"}; + + + const interface_to_SE_groups_inputs inputs = create_ICM_inputs(input_path, EVs, EVSEs); + + auto start = std::chrono::high_resolution_clock::now(); + + std::cout << "Starting ICM initialization" << std::endl; + // Create ICM object + interface_to_SE_groups* ICM = new interface_to_SE_groups{input_path, inputs }; + std::cout << "Finished ICM initialization" << std::endl; + auto finish = std::chrono::high_resolution_clock::now(); + std::cout << "ICM initialization took " + << std::chrono::duration_cast(finish - start).count() + << " seconds\n"; + + + // add charge events + std::vector SE_group_charge_events{}; + create_charge_events(EVs, EVSEs, SE_group_charge_events); + ICM->add_charge_events_by_SE_group(SE_group_charge_events); + + // setup simulation time constraints + double start_unix_time = 0.0 * 3600; + double end_unix_time = 4.0 * 3600; + double time_step_sec = 1; + + double prev_unix_time = start_unix_time; + double cur_unix_time = start_unix_time + time_step_sec; + double sim_unix_time_hrs = 0.0; + + // build the files header + std::string header = "simulation_time_hrs"; + + std::string car_type = ""; + int counter = 0; + for (const std::string& EV : EVs) + { + if (counter == 0) car_type = "small_car"; + else if (counter == 1) car_type = "large_car"; + for (std::string& evse : EVSEs) + { + header += ", " + car_type +"_on_" + evse; + } + counter += 1; + } + header += "\n"; + + // Strings to write data into + std::string P1_kW_data = ""; + std::string P2_kW_data = ""; + std::string P3_kW_data = ""; + std::string Q3_kVAR_data = ""; + std::string SOC_data = ""; + + while (cur_unix_time < end_unix_time) + { + sim_unix_time_hrs = cur_unix_time / 3600.0; + + // add simulation_unix_time_hrs + P1_kW_data += std::to_string(sim_unix_time_hrs); + P2_kW_data += std::to_string(sim_unix_time_hrs); + P3_kW_data += std::to_string(sim_unix_time_hrs); + Q3_kVAR_data += std::to_string(sim_unix_time_hrs); + SOC_data += std::to_string(sim_unix_time_hrs); + + for (int se_id = 1; se_id <= EVSEs.size()*EVs.size(); se_id++) + { + SE_power pq_power = ICM->get_SE_power(se_id, prev_unix_time, cur_unix_time, 1.0); + + // add data + P1_kW_data += ", " + std::to_string(pq_power.P1_kW); + P2_kW_data += ", " + std::to_string(pq_power.P2_kW); + P3_kW_data += ", " + std::to_string(pq_power.P3_kW); + Q3_kVAR_data += ", " + std::to_string(pq_power.Q3_kVAR); + SOC_data += ", " + std::to_string(pq_power.soc); + } + + // new line + P1_kW_data += "\n"; + P2_kW_data += "\n"; + P3_kW_data += "\n"; + Q3_kVAR_data += "\n"; + SOC_data += "\n"; + + prev_unix_time = cur_unix_time; + cur_unix_time += time_step_sec; + } + + // initialize file_handle objects; + std::ofstream P1_kW_out, P2_kW_out, P3_kW_out, Q3_kVAR_out, SOC_out; + + // open the files + P1_kW_out.open("./P1_kW.csv"); + P2_kW_out.open("./P2_kW.csv"); + P3_kW_out.open("./P3_kW.csv"); + Q3_kVAR_out.open("./Q3_kVAR.csv"); + SOC_out.open("./SOC.csv"); + + // write the data + P1_kW_out << header << P1_kW_data; + P2_kW_out << header << P2_kW_data; + P3_kW_out << header << P3_kW_data; + Q3_kVAR_out << header << Q3_kVAR_data; + SOC_out << header << SOC_data; + + delete ICM; + return 0; +} \ No newline at end of file From 4bfdc9bc46ae7002fd97b260abd8bcdd525eef27 Mon Sep 17 00:00:00 2001 From: Steven Schmidt Date: Fri, 8 Sep 2023 11:57:55 -0600 Subject: [PATCH 36/52] Reverting the addition of two new columns in 'EVSE_inputs'. Putting it back like it was before. We're going to put these CalderaCast-specific items into a different file. --- inputs/DirectXFC/EVSE_inputs.csv | 20 ++++++++++---------- inputs/EVs_at_Risk/EVSE_inputs.csv | 20 ++++++++++---------- inputs/eMosaic/EVSE_inputs.csv | 18 +++++++++--------- source/load_inputs/load_EVSE_inventory.cpp | 4 +--- 4 files changed, 30 insertions(+), 32 deletions(-) diff --git a/inputs/DirectXFC/EVSE_inputs.csv b/inputs/DirectXFC/EVSE_inputs.csv index 852ed26..042eb0a 100644 --- a/inputs/DirectXFC/EVSE_inputs.csv +++ b/inputs/DirectXFC/EVSE_inputs.csv @@ -1,10 +1,10 @@ -EVSE_type,EVSE_level,EVSE_phase_connection,AC/DC_power_limit_kW,AC/DC_voltage_limits_V,AC/DC_current_limit_A,standby_real_power_kW,standby_reactive_power_kVAR,EVSE_user_facing_name,EVSE_user_facing_description -L1_1440,L1,1,1.289338,-1,-1,0,0,, -L2_3600,L2,1,3.30192,-1,-1,0,0,, -L2_7200,L2,1,6.624,-1,-1,0,0,, -L2_9600,L2,1,8.832,-1,-1,0,0,, -L2_11520,L2,1,10.5984,-1,-1,0,0,, -L2_17280,L2,1,15.8976,-1,-1,0,0,, -dcfc_50,DCFC,3,50,500,125,0.1,-0.59,, -xfc_150,DCFC,3,150,882.3529412,170,0.17,-0.445,, -xfc_350,DCFC,3,350,700,500,0.17,-0.445,, +EVSE_type,EVSE_level,EVSE_phase_connection,AC/DC_power_limit_kW,AC/DC_voltage_limits_V,AC/DC_current_limit_A,standby_real_power_kW,standby_reactive_power_kVAR +L1_1440,L1,1,1.289338,-1,-1,0,0 +L2_3600,L2,1,3.30192,-1,-1,0,0 +L2_7200,L2,1,6.624,-1,-1,0,0 +L2_9600,L2,1,8.832,-1,-1,0,0 +L2_11520,L2,1,10.5984,-1,-1,0,0 +L2_17280,L2,1,15.8976,-1,-1,0,0 +dcfc_50,DCFC,3,50,500,125,0.1,-0.59 +xfc_150,DCFC,3,150,882.3529412,170,0.17,-0.445 +xfc_350,DCFC,3,350,700,500,0.17,-0.445 diff --git a/inputs/EVs_at_Risk/EVSE_inputs.csv b/inputs/EVs_at_Risk/EVSE_inputs.csv index 8d162f0..74b0963 100644 --- a/inputs/EVs_at_Risk/EVSE_inputs.csv +++ b/inputs/EVs_at_Risk/EVSE_inputs.csv @@ -1,10 +1,10 @@ -EVSE_type,EVSE_level,EVSE_phase_connection,AC/DC_power_limit_kW,AC/DC_voltage_limits_V,AC/DC_current_limit_A,standby_real_power_kW,standby_reactive_power_kVAR,EVSE_user_facing_name,EVSE_user_facing_description -L2_7200,L2,1,6.624,240,30,0,0,, -L2_17280,L2,1,15.8976,240,71,0,0,, -xfc_150,DCFC,3,150,882.3529412,170,0.17,-0.445,, -xfc_350,DCFC,3,350,700,500,0.17,-0.445,, -xfc_500kW,DCFC,3,500,1000,500,0.2,-0.03,, -xfc_1000kW,DCFC,3,1000,1365.001365,732.6,0.2,-0.03,, -xfc_2000kW,DCFC,3,2000,1363.636705,1466.6663,0.2,-0.03,, -xfc_3000kW,DCFC,3,3000,1363.636364,2200,0.2,-0.03,, -dwc_100kW,DCFC,3,100,800,125,0.2,-0.03,, +EVSE_type,EVSE_level,EVSE_phase_connection,AC/DC_power_limit_kW,AC/DC_voltage_limits_V,AC/DC_current_limit_A,standby_real_power_kW,standby_reactive_power_kVAR +L2_7200,L2,1,6.624,240,30,0,0 +L2_17280,L2,1,15.8976,240,71,0,0 +xfc_150,DCFC,3,150,882.3529412,170,0.17,-0.445 +xfc_350,DCFC,3,350,700,500,0.17,-0.445 +xfc_500kW,DCFC,3,500,1000,500,0.2,-0.03 +xfc_1000kW,DCFC,3,1000,1365.001365,732.6,0.2,-0.03 +xfc_2000kW,DCFC,3,2000,1363.636705,1466.6663,0.2,-0.03 +xfc_3000kW,DCFC,3,3000,1363.636364,2200,0.2,-0.03 +dwc_100kW,DCFC,3,100,800,125,0.2,-0.03 diff --git a/inputs/eMosaic/EVSE_inputs.csv b/inputs/eMosaic/EVSE_inputs.csv index b47cf70..40c163f 100644 --- a/inputs/eMosaic/EVSE_inputs.csv +++ b/inputs/eMosaic/EVSE_inputs.csv @@ -1,9 +1,9 @@ -EVSE_type,EVSE_level,EVSE_phase_connection,AC/DC_power_limit_kW,AC/DC_voltage_limits_V,AC/DC_current_limit_A,standby_real_power_kW,standby_reactive_power_kVAR,EVSE_user_facing_name,EVSE_user_facing_description -L2_7200W,L2,1,7.2,240,30,0,0,, -L2_17280W,L2,1,17.28,240,71,0,0,, -xfc_20kW,DCFC,3,19.5,325,60,0.1,-0.59,, -xfc_50kW,DCFC,3,50,625,80,0.1,-0.59,, -xfc_90kW,DCFC,3,90,600,150,0.1,-0.59,, -xfc_150kW,DCFC,3,150,750,200,0.17,-0.445,, -xfc_180kW,DCFC,3,180,600,300,0.17,-0.445,, -xfc_450kW,DCFC,3,450,750,600,0.17,-0.445,, +EVSE_type,EVSE_level,EVSE_phase_connection,AC/DC_power_limit_kW,AC/DC_voltage_limits_V,AC/DC_current_limit_A,standby_real_power_kW,standby_reactive_power_kVAR +L2_7200W,L2,1,7.2,240,30,0,0 +L2_17280W,L2,1,17.28,240,71,0,0 +xfc_20kW,DCFC,3,19.5,325,60,0.1,-0.59 +xfc_50kW,DCFC,3,50,625,80,0.1,-0.59 +xfc_90kW,DCFC,3,90,600,150,0.1,-0.59 +xfc_150kW,DCFC,3,150,750,200,0.17,-0.445 +xfc_180kW,DCFC,3,180,600,300,0.17,-0.445 +xfc_450kW,DCFC,3,450,750,600,0.17,-0.445 diff --git a/source/load_inputs/load_EVSE_inventory.cpp b/source/load_inputs/load_EVSE_inventory.cpp index 64da95e..680a2f2 100644 --- a/source/load_inputs/load_EVSE_inventory.cpp +++ b/source/load_inputs/load_EVSE_inventory.cpp @@ -81,9 +81,7 @@ EVSE_inventory load_EVSE_inventory::load(const std::string& inputs_dir) "AC/DC_voltage_limits_V", "AC/DC_current_limit_A", "standby_real_power_kW", - "standby_reactive_power_kVAR", - "EVSE_user_facing_name", - "EVSE_user_facing_description" + "standby_reactive_power_kVAR" }; // Check number of columns From 05842b000ccc4f2e74df0161ff2fd3c19aed3f2a Mon Sep 17 00:00:00 2001 From: Steven Schmidt Date: Mon, 6 Nov 2023 08:22:52 -0700 Subject: [PATCH 37/52] Fixing one last place where I forgot to remove the user-facing strings when we reverted back. --- inputs/CalderaCast/EVSE_inputs.csv | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/inputs/CalderaCast/EVSE_inputs.csv b/inputs/CalderaCast/EVSE_inputs.csv index d0c32c9..46e0bae 100644 --- a/inputs/CalderaCast/EVSE_inputs.csv +++ b/inputs/CalderaCast/EVSE_inputs.csv @@ -1,10 +1,10 @@ -EVSE_type,EVSE_level,EVSE_phase_connection,AC/DC_power_limit_kW,AC/DC_voltage_limits_V,AC/DC_current_limit_A,standby_real_power_kW,standby_reactive_power_kVAR,EVSE_user_facing_name,EVSE_user_facing_description -L2_7200,L2,1,6.624,-1,-1,0,0,, -L2_11520,L2,1,10.5984,-1,-1,0,0,, -L2_17280,L2,1,15.8976,-1,-1,0,0,, -dcfc_50,DCFC,3,50,600,125,0.1,-0.59,, -xfc_150,DCFC,3,150,920,200,0.17,-0.445,, -xfc_150T,DCFC,3,150,500,300,0.17,-0.445,, -xfc_200,DCFC,3,200,920,300,0.17,-0.445,, -xfc_250,DCFC,3,250,920,500,0.17,-0.445,, -xfc_350,DCFC,3,350,920,500,0.17,-0.445,, +EVSE_type,EVSE_level,EVSE_phase_connection,AC/DC_power_limit_kW,AC/DC_voltage_limits_V,AC/DC_current_limit_A,standby_real_power_kW,standby_reactive_power_kVAR +L2_7200,L2,1,6.624,-1,-1,0,0 +L2_11520,L2,1,10.5984,-1,-1,0,0 +L2_17280,L2,1,15.8976,-1,-1,0,0 +dcfc_50,DCFC,3,50,600,125,0.1,-0.59 +xfc_150,DCFC,3,150,920,200,0.17,-0.445 +xfc_150T,DCFC,3,150,500,300,0.17,-0.445 +xfc_200,DCFC,3,200,920,300,0.17,-0.445 +xfc_250,DCFC,3,250,920,500,0.17,-0.445 +xfc_350,DCFC,3,350,920,500,0.17,-0.445 From 22656d5f53401c662be9014b4234e3aa513d0cbf Mon Sep 17 00:00:00 2001 From: Steven Schmidt Date: Wed, 8 Nov 2023 10:21:36 -0700 Subject: [PATCH 38/52] Adding a useful descriptive comment. --- source/base/ICM_interface.h | 1 + 1 file changed, 1 insertion(+) diff --git a/source/base/ICM_interface.h b/source/base/ICM_interface.h index 27139a0..dae1580 100644 --- a/source/base/ICM_interface.h +++ b/source/base/ICM_interface.h @@ -67,6 +67,7 @@ class interface_to_SE_groups std::vector get_SE_group_charge_profile_forecast_akW(int SE_group, double setpoint_P3kW, double time_step_mins); std::map > get_charging_power(double prev_unix_time, double now_unix_time, std::map pu_Vrms); + // "pu_Vrms" means "per unit voltage root mean squared" SE_power get_SE_power(SE_id_type SE_id, double prev_unix_time, double now_unix_time, double pu_Vrms); //--------------------------------------------- From faff074d2342c0f4800b60aba3d4284e7fa7f081 Mon Sep 17 00:00:00 2001 From: Steven Schmidt Date: Wed, 8 Nov 2023 16:08:47 -0700 Subject: [PATCH 39/52] Adding the executable created when we run make install, to the .gitignore --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 65abca5..21cc5ba 100644 --- a/.gitignore +++ b/.gitignore @@ -15,3 +15,6 @@ CMakeSettings.json # MacOS stuff .DS_Store +# Executables that get created when we run make install +run_models + From ee55c39db4ed177681eb2ca7e33ab7e94379c719 Mon Sep 17 00:00:00 2001 From: Steven Schmidt Date: Fri, 17 Nov 2023 09:55:56 -0700 Subject: [PATCH 40/52] Useful descriptive comments and TODOs in the comments. --- source/globals/datatypes_global.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/source/globals/datatypes_global.h b/source/globals/datatypes_global.h index f9f1937..4a4daa6 100644 --- a/source/globals/datatypes_global.h +++ b/source/globals/datatypes_global.h @@ -321,10 +321,10 @@ struct charge_event_data SE_id_type SE_id; vehicle_id_type vehicle_id; EV_type vehicle_type; - double arrival_unix_time; - double departure_unix_time; - double arrival_SOC; - double departure_SOC; + double arrival_unix_time; // in seconds + double departure_unix_time; // in seconds + double arrival_SOC; // in percent (for 50%, this will be 50.0) + double departure_SOC; // in percent (for 50%, this will be 50.0) stop_charging_criteria stop_charge; control_strategy_enums control_enums; @@ -384,7 +384,7 @@ struct SE_configuration int SE_group_id; SE_id_type SE_id; EVSE_type supply_equipment_type; - double lattitude; + double lattitude; // <-- TDDO: misspelled word. Should be "latitude" double longitude; grid_node_id_type grid_node_id; std::string location_type; From 9cb73e62ac960efeb209b4ee5fef0af5c54d3474 Mon Sep 17 00:00:00 2001 From: Steven Schmidt Date: Mon, 20 Nov 2023 10:59:06 -0700 Subject: [PATCH 41/52] If there is no EVSEs on a node then we return zero (instead of an empty map) --- source/base/ICM_interface.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/source/base/ICM_interface.cpp b/source/base/ICM_interface.cpp index 7442d11..08b48b7 100644 --- a/source/base/ICM_interface.cpp +++ b/source/base/ICM_interface.cpp @@ -462,7 +462,12 @@ std::map> interface_to_SE_groups::g if(it == this->gridNodeId_to_SE_ptrs.end()) { - // There is no SE on this grid node + // There is no SE on this grid node. Just put zeros in there. + P3_kW = 0; + Q3_kVAR = 0; + tmp_pwr.first = P3_kW; + tmp_pwr.second = Q3_kVAR; + return_val[pu_Vrms_pair.first] = tmp_pwr; } else { From 4cce763865f680f10e39c3d5485ccdb5756025b0 Mon Sep 17 00:00:00 2001 From: Manoj Kumar Cebol Sundarrajan Date: Wed, 13 Dec 2023 13:30:08 -0700 Subject: [PATCH 42/52] updated CalderaCast Example EVSE and EV inputs --- inputs/CalderaCast/EVSE_inputs.csv | 1 + inputs/CalderaCast/EV_inputs.csv | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/inputs/CalderaCast/EVSE_inputs.csv b/inputs/CalderaCast/EVSE_inputs.csv index 46e0bae..38c77a1 100644 --- a/inputs/CalderaCast/EVSE_inputs.csv +++ b/inputs/CalderaCast/EVSE_inputs.csv @@ -2,6 +2,7 @@ EVSE_type,EVSE_level,EVSE_phase_connection,AC/DC_power_limit_kW,AC/DC_voltage_li L2_7200,L2,1,6.624,-1,-1,0,0 L2_11520,L2,1,10.5984,-1,-1,0,0 L2_17280,L2,1,15.8976,-1,-1,0,0 +L2_19200,L2,1,17.664,-1,-1,0,0 dcfc_50,DCFC,3,50,600,125,0.1,-0.59 xfc_150,DCFC,3,150,920,200,0.17,-0.445 xfc_150T,DCFC,3,150,500,300,0.17,-0.445 diff --git a/inputs/CalderaCast/EV_inputs.csv b/inputs/CalderaCast/EV_inputs.csv index 46ae966..ee817f2 100644 --- a/inputs/CalderaCast/EV_inputs.csv +++ b/inputs/CalderaCast/EV_inputs.csv @@ -1,7 +1,7 @@ EV_type,battery_chemistry,usable_battery_size_kWh,range_miles,efficiency_Wh/Mile,AC_charge_rate_kW,DCFC_capable,max_c_rate,pack_voltage_at_peak_power_V bev250_400kW,LTO,87.5,250,350,10.58,TRUE,3.85,900 -bev300_575kW,LTO,142.5,300,475,10.58,TRUE,3.41,900 -bev300_400kW,LTO,97.5,300,325,10.58,TRUE,3.46,900 +bev300_575kW,LTO,142.5,300,475,17.66,TRUE,3.41,900 +bev300_400kW,LTO,97.5,300,325,17.66,TRUE,3.46,900 bev250_350kW,NMC,118.75,250,475,10.58,TRUE,2.29,900 bev300_300kW,NMC,97.5,300,325,10.58,TRUE,2.38,900 bev150_150kW,NMC,45,150,300,8.832,TRUE,2.56,900 From 0998cb9c3ef1f9c0c82750c1851a5aa7bb4dc717 Mon Sep 17 00:00:00 2001 From: Manoj Kumar Cebol Sundarrajan Date: Wed, 7 Jun 2023 21:03:42 -0600 Subject: [PATCH 43/52] added inverter models for EVSEs above 500kW --- source/factory/factory_ac_to_dc_converter.cpp | 94 +++++++++++++++++-- 1 file changed, 88 insertions(+), 6 deletions(-) diff --git a/source/factory/factory_ac_to_dc_converter.cpp b/source/factory/factory_ac_to_dc_converter.cpp index dc3d71f..1ce55c9 100644 --- a/source/factory/factory_ac_to_dc_converter.cpp +++ b/source/factory/factory_ac_to_dc_converter.cpp @@ -15,7 +15,10 @@ ac_to_dc_converter* factory_ac_to_dc_converter::alloc_get_ac_to_dc_converter(ac_ //============================================================= //============================================================= - if (this->inventory.get_EVSE_inventory().at(EVSE).get_level() == L1) + const EVSE_level level = this->inventory.get_EVSE_inventory().at(EVSE).get_level(); + const double power_limit = this->inventory.get_EVSE_inventory().at(EVSE).get_power_limit_kW(); + + if (level == L1) { // {x_LB, x_UB, degree, a, b, c, d, e} degree = {first, second, third, fourth} inv_eff_from_P2_vec.clear(); @@ -28,7 +31,7 @@ ac_to_dc_converter* factory_ac_to_dc_converter::alloc_get_ac_to_dc_converter(ac_ inv_pf_from_P3_vec.push_back({ 0, 1.3, first, -0.0138, -0.9793, 0, 0, 0 }); inv_pf_from_P3_vec.push_back({ 1.3, 20, first, 0, -0.99724, 0, 0, 0 }); } - else if (this->inventory.get_EVSE_inventory().at(EVSE).get_level() == L2) + else if (level == L2) { // {x_LB, x_UB, degree, a, b, c, d, e} degree = {first, second, third, fourth} inv_eff_from_P2_vec.clear(); @@ -41,9 +44,9 @@ ac_to_dc_converter* factory_ac_to_dc_converter::alloc_get_ac_to_dc_converter(ac_ inv_pf_from_P3_vec.push_back({ 0, 6, third, -0.00038737, 0.00591216, -0.03029164, -0.9462841, 0 }); inv_pf_from_P3_vec.push_back({ 6, 20, first, 0, -0.9988681, 0, 0, 0 }); } - else if (this->inventory.get_EVSE_inventory().at(EVSE).get_level() == DCFC) // Copied data from L2 Charger + else if (level == DCFC) // Copied data from L2 Charger { - if(this->inventory.get_EVSE_inventory().at(EVSE).get_power_limit_kW() <= 20) + if(power_limit <= 20) { // {x_LB, x_UB, degree, a, b, c, d, e} degree = {first, second, third, fourth} inv_eff_from_P2_vec.clear(); @@ -56,7 +59,7 @@ ac_to_dc_converter* factory_ac_to_dc_converter::alloc_get_ac_to_dc_converter(ac_ inv_pf_from_P3_vec.push_back({ 0, 6, third, -0.00038737, 0.00591216, -0.03029164, -0.9462841, 0 }); inv_pf_from_P3_vec.push_back({ 6, 30, first, 0, -0.9988681, 0, 0, 0 }); } - else if (this->inventory.get_EVSE_inventory().at(EVSE).get_power_limit_kW() > 20 && this->inventory.get_EVSE_inventory().at(EVSE).get_power_limit_kW() <= 100) + else if (power_limit > 20 && power_limit <= 100) { // {x_LB, x_UB, degree, a, b, c, d, e} degree = {first, second, third, fourth} inv_eff_from_P2_vec.clear(); @@ -76,7 +79,7 @@ ac_to_dc_converter* factory_ac_to_dc_converter::alloc_get_ac_to_dc_converter(ac_ inv_pf_from_P3_vec.push_back({ 28, 42, first, -0.001603, -0.9218, 0, 0, 0 }); inv_pf_from_P3_vec.push_back({ 42, 1000, first, 0, -0.99, 0, 0, 0 }); } - else if (this->inventory.get_EVSE_inventory().at(EVSE).get_power_limit_kW() > 100) + else if (power_limit > 100 && power_limit < 500) { // {x_LB, x_UB, degree, a, b, c, d, e} degree = {first, second, third, fourth} inv_eff_from_P2_vec.clear(); @@ -93,6 +96,85 @@ ac_to_dc_converter* factory_ac_to_dc_converter::alloc_get_ac_to_dc_converter(ac_ inv_pf_from_P3_vec.push_back({ 80, 133, second, 0.0000027985, -0.0008177, -0.9127, 0, 0 }); inv_pf_from_P3_vec.push_back({ 133, 1000, first, 0, -0.972, 0, 0, 0 }); } + else if (power_limit >= 500 && power_limit < 1000) + { + // {x_LB, x_UB, degree, a, b, c, d, e} degree = {first, second, third, fourth} + inv_eff_from_P2_vec.clear(); + inv_eff_from_P2_vec.push_back({ -1000, 0, first, (1.1 - 1) / 1000, 1, 0, 0, 0 }); + inv_eff_from_P2_vec.push_back({ 0, 9.9509951, fourth, -5.32294E-05, 0.00161341, -0.020375254, 0.153430262, 0.1 }); + inv_eff_from_P2_vec.push_back({ 9.9509951, 49.9549955, fourth, -1.41183E-07, 2.19219E-05, -0.001317196, 0.038812335, 0.40120321 }); + inv_eff_from_P2_vec.push_back({ 49.9549955, 124.9624962, fourth, -8.95362E-10, 3.96468E-07, -6.90956E-05, 0.005879087, 0.741555738 }); + inv_eff_from_P2_vec.push_back({ 124.9624962, 500, fourth, -2.58346E-12, 4.05019E-09, -2.42506E-06, 0.000615186, 0.906293666 }); + inv_eff_from_P2_vec.push_back({ 500, 1000, first, 0, 0.952430816, 0, 0, 0 }); + + // {x_LB, x_UB, degree, a, b, c, d, e} degree = {first, second, third, fourth} + inv_pf_from_P3_vec.clear(); + inv_pf_from_P3_vec.push_back({ -1000, 0, first, (0.9 - 1) / 1000, 0.90, 0, 0, 0 }); + inv_pf_from_P3_vec.push_back({ 0, 9.9509951, fourth, 3.30449E-08, -1.64406E-06, 4.81836E-05, -0.001229586, -0.96 }); + inv_pf_from_P3_vec.push_back({ 9.9509951, 49.9549955, fourth, 1.83122E-09, -3.19941E-07, 2.3503E-05, -0.000997071, -0.960868555 }); + inv_pf_from_P3_vec.push_back({ 49.9549955, 124.9624962, fourth, 4.9509E-11, -2.28852E-08, 4.27128E-06, -0.000415058, -0.967886798 }); + inv_pf_from_P3_vec.push_back({ 124.9624962, 500, fourth, 2.75481E-13, -4.37287E-10, 2.67801E-07, -7.93935E-05, -0.979114283 }); + inv_pf_from_P3_vec.push_back({ 500, 1000, first, 0, -0.989303981, 0, 0, 0 }); + } + else if (power_limit >= 1000 && power_limit < 2000) + { + // {x_LB, x_UB, degree, a, b, c, d, e} degree = {first, second, third, fourth} + inv_eff_from_P2_vec.clear(); + inv_eff_from_P2_vec.push_back({ -1000, 0, first, (1.1 - 1) / 1000, 1, 0, 0, 0 }); + inv_eff_from_P2_vec.push_back({ 0, 3.300330033, fourth, -3.07232E-05, 0.000587331, -0.007217139, 0.080972819, 0.1 }); + inv_eff_from_P2_vec.push_back({ 3.300330033, 19.9019902, fourth, -1.99155E-06, 0.000137261, -0.004017833, 0.069501611, 0.115784348 }); + inv_eff_from_P2_vec.push_back({ 19.9019902, 99.909991, fourth, -8.82395E-09, 2.74024E-06, -0.000329299, 0.019406168, 0.40120321 }); + inv_eff_from_P2_vec.push_back({ 99.909991, 1000, fourth, -6.01897E-13, 1.66165E-09, -1.68483E-06, 0.000728381, 0.84911447 }); + inv_eff_from_P2_vec.push_back({ 1000, 10000, first, 0, 0.952427626, 0, 0, 0 }); + + // {x_LB, x_UB, degree, a, b, c, d, e} degree = {first, second, third, fourth} + inv_pf_from_P3_vec.clear(); + inv_pf_from_P3_vec.push_back({ -1000, 0, first, (0.9 - 1) / 1000, 0.90, 0, 0, 0 }); + inv_pf_from_P3_vec.push_back({ 0, 19.9019902, fourth, 2.0653E-09, -2.05508E-07, 1.20459E-05, -0.000614793, -0.96 }); + inv_pf_from_P3_vec.push_back({ 19.9019902, 99.909991, fourth, 1.14451E-10, -3.99927E-08, 5.87574E-06, -0.000498536, -0.960868555 }); + inv_pf_from_P3_vec.push_back({ 99.909991, 249.9249925, fourth, 3.09432E-12, -2.86066E-09, 1.06782E-06, -0.000207529, -0.967886798 }); + inv_pf_from_P3_vec.push_back({ 249.9249925, 1000, fourth, 1.72176E-14, -5.46609E-11, 6.69504E-08, -3.96968E-05, -0.979114283 }); + inv_pf_from_P3_vec.push_back({ 1000, 10000, first, 0, -0.989303981, 0, 0, 0 }); + } + else if (power_limit >= 2000 && power_limit < 3000) + { + // {x_LB, x_UB, degree, a, b, c, d, e} degree = {first, second, third, fourth} + inv_eff_from_P2_vec.clear(); + inv_eff_from_P2_vec.push_back({ -1000, 0, first, (1.1 - 1) / 1000, 1, 0, 0, 0 }); + inv_eff_from_P2_vec.push_back({ 0, 6.600660066, fourth, -1.9202E-06, 7.34164E-05, -0.001804285, 0.04048641, 0.1 }); + inv_eff_from_P2_vec.push_back({ 6.600660066, 39.8039804, fourth, -1.24472E-07, 1.71577E-05, -0.001004458, 0.034750806, 0.115784348 }); + inv_eff_from_P2_vec.push_back({ 39.8039804, 199.819982, fourth, -5.51497E-10, 3.4253E-07, -8.23247E-05, 0.009703084, 0.40120321 }); + inv_eff_from_P2_vec.push_back({ 199.819982, 2000, fourth, -3.76186E-14, 2.07707E-10, -4.21206E-07, 0.00036419, 0.84911447 }); + inv_eff_from_P2_vec.push_back({ 2000, 10000, first, 0, 0.952427626, 0, 0, 0 }); + + // {x_LB, x_UB, degree, a, b, c, d, e} degree = {first, second, third, fourth} + inv_pf_from_P3_vec.clear(); + inv_pf_from_P3_vec.push_back({ -1000, 0, first, (0.9 - 1) / 1000, 0.90, 0, 0, 0 }); + inv_pf_from_P3_vec.push_back({ 0, 39.8039804, fourth, 1.29082E-10, -2.56885E-08, 3.01148E-06, -0.000307397, -0.96 }); + inv_pf_from_P3_vec.push_back({ 39.8039804, 199.819982, fourth, 7.1532E-12, -4.99908E-09, 1.46893E-06, -0.000249268, -0.960868555 }); + inv_pf_from_P3_vec.push_back({ 199.819982, 499.849985, fourth, 1.93395E-13, -3.57582E-10, 2.66955E-07, -0.000103765, -0.967886798 }); + inv_pf_from_P3_vec.push_back({ 499.849985, 2000, fourth, 1.0761E-15, -6.83261E-12, 1.67376E-08, -1.98484E-05, -0.979114283 }); + inv_pf_from_P3_vec.push_back({ 2000, 10000, first, 0, -0.989303981, 0, 0, 0 }); + } + else if (power_limit >= 3000) + { + inv_eff_from_P2_vec.clear(); + inv_eff_from_P2_vec.push_back({ -1000, 0, first, (1.1 - 1) / 1000, 1, 0, 0, 0 }); + inv_eff_from_P2_vec.push_back({ 0, 9.900990099, fourth, -3.79299E-07, 2.1753E-05, -0.000801904, 0.02699094, 0.1 }); + inv_eff_from_P2_vec.push_back({ 9.900990099, 59.7059706, fourth, -2.45871E-08, 5.08376E-06, -0.000446426, 0.023167204, 0.115784348 }); + inv_eff_from_P2_vec.push_back({ 59.7059706, 299.729973, fourth, -1.08938E-10, 1.0149E-07, -3.65888E-05, 0.006468723, 0.40120321 }); + inv_eff_from_P2_vec.push_back({ 299.729973, 3000, fourth, -7.43083E-15, 6.15428E-11, -1.87203E-07, 0.000242794, 0.84911447 }); + inv_eff_from_P2_vec.push_back({ 3000, 10000, first, 0, 0.952427626, 0, 0, 0 }); + + // {x_LB, x_UB, degree, a, b, c, d, e} degree = {first, second, third, fourth} + inv_pf_from_P3_vec.clear(); + inv_pf_from_P3_vec.push_back({ -1000, 0, first, (0.9 - 1) / 1000, 0.90, 0, 0, 0 }); + inv_pf_from_P3_vec.push_back({ 0, 59.7059706, fourth, 2.54976E-11, -7.61141E-09, 1.33843E-06, -0.000204931, -0.96 }); + inv_pf_from_P3_vec.push_back({ 59.7059706, 299.729973, fourth, 1.41298E-12, -1.48121E-09, 6.5286E-07, -0.000166179, -0.960868555 }); + inv_pf_from_P3_vec.push_back({ 299.729973, 749.7749775, fourth, 3.82014E-14, -1.0595E-10, 1.18647E-07, -6.91763E-05, -0.967886798 }); + inv_pf_from_P3_vec.push_back({ 749.7749775, 3000, fourth, 2.12563E-16, -2.02448E-12, 7.43893E-09, -1.32323E-05, -0.979114283 }); + inv_pf_from_P3_vec.push_back({ 3000, 10000, first, 0, -0.989303981, 0, 0, 0 }); + } else { ASSERT(false, "error"); From f3c3c8fbcabf42c70786dffbabcdf564f3c8e6a9 Mon Sep 17 00:00:00 2001 From: Manoj Kumar Cebol Sundarrajan Date: Tue, 30 Jan 2024 17:28:35 -0700 Subject: [PATCH 44/52] TE changes for ICM --- source/base/Aux_interface.cpp | 14 ++-- source/base/supply_equipment_load.cpp | 17 +++-- source/globals/datatypes_global.cpp | 40 +++++++++++ source/globals/datatypes_global.h | 45 +++++++++++- source/globals/globals_python_bind.cpp | 98 +++++++++++++++++++++----- 5 files changed, 182 insertions(+), 32 deletions(-) diff --git a/source/base/Aux_interface.cpp b/source/base/Aux_interface.cpp index f16b0b2..d27d774 100644 --- a/source/base/Aux_interface.cpp +++ b/source/base/Aux_interface.cpp @@ -166,18 +166,18 @@ all_charge_profile_data CP_interface_v2::create_charge_profile_from_model(double std::vector ac_power_vec; CP_Factory_v2.create_charge_profile(time_step_sec, pev_SE, start_soc, end_soc, target_acP3_kW, soc, ac_power_vec); - + //--------------------- int num_elements = soc.size(); - for(int i=0; i<=num_elements; i++) + for(int i=0; i::iterator it = this->charge_events.begin(); it != this->charge_events.end(); it++) { - if(it->departure_unix_time - now_unix_time < 60) + if(it->departure_unix_time - now_unix_time < 30*60) its_to_remove.push_back(it); else break; @@ -102,8 +102,10 @@ bool charge_event_handler::charge_event_is_available(double now_unix_time) std::set::iterator it = this->charge_events.begin(); - if(it->arrival_unix_time - now_unix_time <= 0) + if (it->arrival_unix_time - now_unix_time <= 0) + { return true; + } else return false; } @@ -455,16 +457,23 @@ void supply_equipment_load::get_active_CE(bool& pev_is_connected_to_SE, active_C if(pev_is_connected_to_SE) { + active_CE_val.SE_id = this->SE_config.SE_id; + active_CE_val.supply_equipment_type = this->SE_config.supply_equipment_type; active_CE_val.charge_event_id = this->SE_stat.current_charge.charge_event_id; + active_CE_val.vehicle_id = this->SE_stat.current_charge.vehicle_id; + active_CE_val.vehicle_type = this->SE_stat.current_charge.vehicle_type; + active_CE_val.arrival_unix_time = this->SE_stat.current_charge.arrival_unix_time; + active_CE_val.departure_unix_time = this->SE_stat.current_charge.departure_unix_time; + active_CE_val.arrival_SOC = this->SE_stat.current_charge.arrival_SOC; + active_CE_val.departure_SOC = this->SE_stat.current_charge.departure_SOC; + active_CE_val.now_unix_time = this->SE_stat.now_unix_time; active_CE_val.now_soc = this->SE_stat.current_charge.now_soc; active_CE_val.now_charge_energy_ackWh = this->SE_stat.current_charge.now_charge_energy_E3kWh; active_CE_val.now_dcPkW = this->SE_stat.current_charge.now_dcPkW; active_CE_val.now_acPkW = this->SE_stat.current_charge.now_acPkW; active_CE_val.now_acQkVAR = this->SE_stat.current_charge.now_acQkVAR; - active_CE_val.vehicle_id = this->SE_stat.current_charge.vehicle_id; - active_CE_val.vehicle_type = this->SE_stat.current_charge.vehicle_type; //---------------------------- diff --git a/source/globals/datatypes_global.cpp b/source/globals/datatypes_global.cpp index ca11ffc..6e04960 100644 --- a/source/globals/datatypes_global.cpp +++ b/source/globals/datatypes_global.cpp @@ -1,6 +1,46 @@ #include "datatypes_global.h" +//================================================================== +// timeseries +//================================================================== + + +timeseries::timeseries(const double data_starttime_sec, const double data_timestep_sec, const std::vector& data) + : + data_starttime_sec{ data_starttime_sec }, + data_timestep_sec{ data_timestep_sec }, + data{ data }, + data_endtime_sec{ this->data_starttime_sec + this->data.size() * this->data_timestep_sec } +{ + +} + + +double timeseries::get_val_from_time(double time_sec) +{ + //std::cout << "timeseries time_sec : " << time_sec << std::endl; + //std::cout << "timeseries this->data_starttime_sec : " << this->data_starttime_sec << std::endl; + //std::cout << "timeseries this->data_timestep_sec : " << this->data_timestep_sec << std::endl; + + time_sec = fmod(time_sec, this->data_endtime_sec - this->data_starttime_sec); + //std::cout << "timeseries time_sec after rounding: " << time_sec << std::endl; + + int index = int(time_sec - this->data_starttime_sec) / int(this->data_timestep_sec); + //std::cout << "timeseries index : " << index << std::endl; + return this->data.at(index); +} + +double timeseries::get_val_from_index(int index) +{ + return this->data.at(index); +} + +double timeseries::get_time_from_index_sec(int index) +{ + return this->data_starttime_sec + index * this->data_timestep_sec; +} + //================================================================== // Low Pass Filter Parameters diff --git a/source/globals/datatypes_global.h b/source/globals/datatypes_global.h index 4a4daa6..6a90860 100644 --- a/source/globals/datatypes_global.h +++ b/source/globals/datatypes_global.h @@ -31,6 +31,38 @@ std::chrono::duration time_diff = end_time - start_time; double time_sec = time_diff.count(); */ +//================================================================== +// timeseries +//================================================================== + + +// TODO: Merge the timeseries type with time_series in CDM_global.h +// TODO: Improve by templating this +struct timeseries +{ + double data_starttime_sec; + double data_timestep_sec; + std::vector data; + + double data_endtime_sec; + + // constructor + timeseries(const double data_starttime_sec, const double data_timestep_sec, const std::vector& data); + + // The function will return the data corresponding to the time that is loop. + // If there is 24 hours of data, when requesting for the 25th hour, this will + // return the data in the first index. + double get_val_from_time(double time_sec); + + // The function will return the data corresponding to the index. + // There is no looping. throws an error when index is out of range. + double get_val_from_index(int index); + + // The function will return time correcponding to the index. + double get_time_from_index_sec(int index); +}; + + //================================================================== // Low Pass Filter Parameters //================================================================== @@ -450,9 +482,17 @@ struct CE_FICE_in_SE_group struct active_CE -{ +{ SE_id_type SE_id; + EVSE_type supply_equipment_type; int charge_event_id; + vehicle_id_type vehicle_id; + EV_type vehicle_type; + double arrival_unix_time; + double departure_unix_time; + double arrival_SOC; + double departure_SOC; + double now_unix_time; double now_soc; double min_remaining_charge_time_hrs; @@ -462,8 +502,7 @@ struct active_CE double now_dcPkW; double now_acPkW; double now_acQkVAR; - vehicle_id_type vehicle_id; - EV_type vehicle_type; + active_CE() {}; }; diff --git a/source/globals/globals_python_bind.cpp b/source/globals/globals_python_bind.cpp index 2456647..a196253 100644 --- a/source/globals/globals_python_bind.cpp +++ b/source/globals/globals_python_bind.cpp @@ -21,6 +21,36 @@ PYBIND11_MODULE(Caldera_globals, m) m.def("is_L2_ES_control_strategy", &is_L2_ES_control_strategy); m.def("is_L2_VS_control_strategy", &is_L2_VS_control_strategy); + //-------------------------------------------- + // timeseries + //-------------------------------------------- + py::class_(m, "timeseries") + .def(py::init& >()) + .def_readwrite("data_starttime_sec", ×eries::data_starttime_sec) + .def_readwrite("data_timestep_sec", ×eries::data_timestep_sec) + .def_readwrite("data", ×eries::data) + .def_readwrite("data_endtime_sec", ×eries::data_endtime_sec) + .def("get_val_from_time", ×eries::get_val_from_time) + .def("get_val_from_index", ×eries::get_val_from_index) + .def("get_time_from_index_sec", ×eries::get_time_from_index_sec) + .def(py::pickle( + [](const timeseries& obj) + { // __getstate__ + return py::make_tuple(obj.data_starttime_sec, obj.data_timestep_sec, obj.data); + }, + [](py::tuple t) + { // __setstate__ + + double data_starttime_sec = t[0].cast(); + double data_timestep_sec = t[1].cast(); + std::vector data = {}; + for(auto x : t[2]) + data.push_back(x.cast()); + + return timeseries{ data_starttime_sec, data_timestep_sec, data }; + } + )); + //-------------------------------------------- // interface_to_SE_groups_inputs //-------------------------------------------- @@ -278,24 +308,33 @@ PYBIND11_MODULE(Caldera_globals, m) py::class_(m, "active_CE") .def(py::init<>()) .def_readwrite("SE_id", &active_CE::SE_id) + .def_readwrite("supply_equipment_type", &active_CE::supply_equipment_type) .def_readwrite("charge_event_id", &active_CE::charge_event_id) + .def_readwrite("vehicle_id", &active_CE::vehicle_id) + .def_readwrite("vehicle_type", &active_CE::vehicle_type) + .def_readwrite("arrival_unix_time", &active_CE::arrival_unix_time) + .def_readwrite("departure_unix_time", &active_CE::departure_unix_time) + .def_readwrite("arrival_SOC", &active_CE::arrival_SOC) + .def_readwrite("departure_SOC", &active_CE::departure_SOC) + .def_readwrite("now_unix_time", &active_CE::now_unix_time) .def_readwrite("now_soc", &active_CE::now_soc) - .def_readwrite("now_dcPkW", &active_CE::now_dcPkW) - .def_readwrite("now_acPkW", &active_CE::now_acPkW) - .def_readwrite("now_acQkVAR", &active_CE::now_acQkVAR) //.def_readwrite("min_remaining_charge_time_hrs", &active_CE::min_remaining_charge_time_hrs) //.def_readwrite("min_time_to_complete_entire_charge_hrs", &active_CE::min_time_to_complete_entire_charge_hrs) .def_readwrite("now_charge_energy_ackWh", &active_CE::now_charge_energy_ackWh) .def_readwrite("energy_of_complete_charge_ackWh", &active_CE::energy_of_complete_charge_ackWh) - .def_readwrite("vehicle_id", &active_CE::vehicle_id) - .def_readwrite("vehicle_type", &active_CE::vehicle_type) + .def_readwrite("now_dcPkW", &active_CE::now_dcPkW) + .def_readwrite("now_acPkW", &active_CE::now_acPkW) + .def_readwrite("now_acQkVAR", &active_CE::now_acQkVAR) + + .def(py::pickle( [](const active_CE& obj) { // __getstate__ - return py::make_tuple(obj.SE_id, obj.charge_event_id, obj.now_unix_time, obj.now_soc, - obj.now_charge_energy_ackWh, obj.energy_of_complete_charge_ackWh, - obj.now_dcPkW, obj.now_acPkW, obj.now_acQkVAR, obj.vehicle_id, obj.vehicle_type + return py::make_tuple(obj.SE_id, obj.supply_equipment_type, obj.charge_event_id, obj.vehicle_id, obj.vehicle_type, + obj.arrival_unix_time, obj.departure_unix_time, obj.arrival_SOC, obj.departure_SOC, obj.now_unix_time, + obj.now_soc, obj.now_charge_energy_ackWh, obj.energy_of_complete_charge_ackWh, obj.now_dcPkW, obj.now_acPkW, + obj.now_acQkVAR //obj.min_remaining_charge_time_hrs, obj.min_time_to_complete_entire_charge_hrs ); }, @@ -303,16 +342,23 @@ PYBIND11_MODULE(Caldera_globals, m) { // __setstate_ active_CE obj; obj.SE_id = t[0].cast(); - obj.charge_event_id = t[1].cast(); - obj.now_unix_time = t[2].cast(); - obj.now_soc = t[3].cast(); - obj.now_charge_energy_ackWh = t[4].cast(); - obj.energy_of_complete_charge_ackWh = t[5].cast(); - obj.now_dcPkW = t[6].cast(); - obj.now_acPkW = t[7].cast(); - obj.now_acQkVAR = t[8].cast(); - obj.vehicle_id = t[9].cast(); - obj.vehicle_type = t[10].cast(); + obj.supply_equipment_type = t[1].cast(); + obj.charge_event_id = t[2].cast(); + obj.vehicle_id = t[3].cast(); + obj.vehicle_type = t[4].cast(); + obj.arrival_unix_time = t[5].cast(); + obj.departure_unix_time = t[6].cast(); + obj.arrival_SOC = t[7].cast(); + obj.departure_SOC = t[8].cast(); + + obj.now_unix_time = t[9].cast(); + obj.now_soc = t[10].cast(); + obj.now_charge_energy_ackWh = t[11].cast(); + obj.energy_of_complete_charge_ackWh = t[12].cast(); + obj.now_dcPkW = t[13].cast(); + obj.now_acPkW = t[14].cast(); + obj.now_acQkVAR = t[15].cast(); + //obj.min_remaining_charge_time_hrs = t[6].cast(); //obj.min_time_to_complete_entire_charge_hrs = t[7].cast(); @@ -564,6 +610,22 @@ PYBIND11_MODULE(Caldera_globals, m) } )); + double timestep_sec; + std::vector P1_kW; + std::vector P2_kW; + std::vector P3_kW; + std::vector Q3_kVAR; + std::vector soc; + + py::class_(m, "all_charge_profile_data") + .def(py::init<>()) + .def_readwrite("timestep_sec", &all_charge_profile_data::timestep_sec) + .def_readwrite("P1_kW", &all_charge_profile_data::P1_kW) + .def_readwrite("P2_kW", &all_charge_profile_data::P2_kW) + .def_readwrite("P3_kW", &all_charge_profile_data::P3_kW) + .def_readwrite("Q3_kVAR", &all_charge_profile_data::Q3_kVAR) + .def_readwrite("soc", &all_charge_profile_data::soc); + py::class_(m, "charge_event_P3kW_limits") .def(py::init<>()) .def_readwrite("min_P3kW", &charge_event_P3kW_limits::min_P3kW) From b50a18db3132a32d57928aa63f9cf3899c353a7c Mon Sep 17 00:00:00 2001 From: Manoj Kumar Cebol Sundarrajan Date: Thu, 1 Feb 2024 13:54:17 -0700 Subject: [PATCH 45/52] adding cmath as GCC throws an error --- source/globals/datatypes_global.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/source/globals/datatypes_global.cpp b/source/globals/datatypes_global.cpp index 6e04960..bd0a391 100644 --- a/source/globals/datatypes_global.cpp +++ b/source/globals/datatypes_global.cpp @@ -1,5 +1,6 @@ #include "datatypes_global.h" +#include //================================================================== // timeseries From 4d43434730100e018f294a30296034db51694e32 Mon Sep 17 00:00:00 2001 From: Steven Schmidt Date: Tue, 6 Feb 2024 13:44:33 -0700 Subject: [PATCH 46/52] Fixing bug when catching charge-events that end within a minute or are less than a minute long. v.1.1 --- source/base/supply_equipment_load.cpp | 45 +++++++++++++++++---------- source/base/supply_equipment_load.h | 12 ++++--- 2 files changed, 37 insertions(+), 20 deletions(-) diff --git a/source/base/supply_equipment_load.cpp b/source/base/supply_equipment_load.cpp index b71b6bc..9bc8647 100644 --- a/source/base/supply_equipment_load.cpp +++ b/source/base/supply_equipment_load.cpp @@ -4,6 +4,7 @@ #include #include // sort +#include #include "factory_EV_charge_model.h" #include "factory_ac_to_dc_converter.h" @@ -25,7 +26,7 @@ inline double overlap(double start_A, double end_A, double start_B, double end_B } -void charge_event_handler::add_charge_event(charge_event_data& CE) +void charge_event_handler::add_charge_event( charge_event_data& CE ) { double max_allowed_overlap_time_sec = this->CE_queuing_inputs.max_allowed_overlap_time_sec; queuing_mode_enum queuing_mode = this->CE_queuing_inputs.queuing_mode; @@ -72,31 +73,38 @@ void charge_event_handler::add_charge_event(charge_event_data& CE) } -bool charge_event_handler::charge_event_is_available(double now_unix_time) -{ - //---------------------------------------------------------------- - // Delete charge_events if there is less than 60 seconds to charge - //---------------------------------------------------------------- +void charge_event_handler::remove_charge_events_that_are_ending_soon( const double now_unix_time, const double time_limit_seconds ) +{ + //---------------------------------------------------------------------------------- + // Delete charge_events if there is less than 'time_limit_seconds' seconds to charge + //---------------------------------------------------------------------------------- std::vector::iterator> its_to_remove; - for(std::set::iterator it = this->charge_events.begin(); it != this->charge_events.end(); it++) + for( std::set::iterator it = this->charge_events.begin(); it != this->charge_events.end(); it++ ) { - if(it->departure_unix_time - now_unix_time < 30*60) + if(it->departure_unix_time - now_unix_time < time_limit_seconds) + { its_to_remove.push_back(it); + } else + { break; + } } for(std::set::iterator it : its_to_remove) { this->charge_events.erase(it); - std::string str = "Warning : Charge Event removed since charge time < 60 sec. charge_event_id: " + std::to_string(it->charge_event_id); - std::cout << str << std::endl; + std::stringstream str_ss; + str_ss << "Warning : Charge Event removed since charge time less than " << time_limit_seconds << " sec. charge_event_id: " << std::to_string(it->charge_event_id); + std::cout << str_ss.str() << std::endl; } - - //------------------------------ - +} + + +bool charge_event_handler::charge_event_is_available( const double now_unix_time ) const +{ if(this->charge_events.size() == 0) return false; @@ -111,7 +119,7 @@ bool charge_event_handler::charge_event_is_available(double now_unix_time) } -charge_event_data charge_event_handler::get_next_charge_event(double now_unix_time) +charge_event_data charge_event_handler::get_next_charge_event( const double now_unix_time ) { std::set::iterator it = this->charge_events.begin(); charge_event_data x = *it; @@ -574,14 +582,19 @@ bool supply_equipment_load::get_next(double prev_unix_time, double now_unix_time { this->SE_stat.pev_is_connected_to_SE = false; - if(this->event_handler.charge_event_is_available(now_unix_time)) + // Remove any charge-events that are ending too soon. + const double time_limit_seconds = 60.0; + this->event_handler.remove_charge_events_that_are_ending_soon( now_unix_time, time_limit_seconds ); + + // If there is another event available, process it. + if( this->event_handler.charge_event_is_available(now_unix_time) ) { charge_event_data charge_event = this->event_handler.get_next_charge_event(now_unix_time); EVSE_type SE_type = this->SE_config.supply_equipment_type; this->ev_charge_model = this->PEV_charge_factory->alloc_get_EV_charge_model(charge_event, SE_type, this->P2_limit_kW); - // ev_charge_model == NULL when there is a compatibility issue between the PEV and Supply Equipment + // ev_charge_model == NULL when there is a compatibility issue between the PEV and Supply Equipment if(this->ev_charge_model != NULL) { this->SE_stat.current_charge.charge_event_id = charge_event.charge_event_id; diff --git a/source/base/supply_equipment_load.h b/source/base/supply_equipment_load.h index 9158fc6..20920cd 100644 --- a/source/base/supply_equipment_load.h +++ b/source/base/supply_equipment_load.h @@ -25,11 +25,15 @@ class charge_event_handler public: charge_event_handler() {}; - charge_event_handler(charge_event_queuing_inputs& CE_queuing_inputs_); + charge_event_handler( charge_event_queuing_inputs& CE_queuing_inputs_ ); - void add_charge_event(charge_event_data& charge_event); - bool charge_event_is_available(double now_unix_time); - charge_event_data get_next_charge_event(double now_unix_time); + void add_charge_event( charge_event_data& CE ); + + void remove_charge_events_that_are_ending_soon( const double now_unix_time, const double time_limit_seconds ); + + bool charge_event_is_available( const double now_unix_time ) const; + + charge_event_data get_next_charge_event( const double now_unix_time ); }; From 07ac52c4c17317240382bfd1d8f1c1a8e70c4b1f Mon Sep 17 00:00:00 2001 From: Manoj Kumar Cebol Sundarrajan Date: Sun, 17 Mar 2024 21:41:59 -0600 Subject: [PATCH 47/52] make charge_time info available in active CE --- source/globals/globals_python_bind.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/source/globals/globals_python_bind.cpp b/source/globals/globals_python_bind.cpp index a196253..8e0695a 100644 --- a/source/globals/globals_python_bind.cpp +++ b/source/globals/globals_python_bind.cpp @@ -319,8 +319,8 @@ PYBIND11_MODULE(Caldera_globals, m) .def_readwrite("now_unix_time", &active_CE::now_unix_time) .def_readwrite("now_soc", &active_CE::now_soc) - //.def_readwrite("min_remaining_charge_time_hrs", &active_CE::min_remaining_charge_time_hrs) - //.def_readwrite("min_time_to_complete_entire_charge_hrs", &active_CE::min_time_to_complete_entire_charge_hrs) + .def_readwrite("min_remaining_charge_time_hrs", &active_CE::min_remaining_charge_time_hrs) + .def_readwrite("min_time_to_complete_entire_charge_hrs", &active_CE::min_time_to_complete_entire_charge_hrs) .def_readwrite("now_charge_energy_ackWh", &active_CE::now_charge_energy_ackWh) .def_readwrite("energy_of_complete_charge_ackWh", &active_CE::energy_of_complete_charge_ackWh) .def_readwrite("now_dcPkW", &active_CE::now_dcPkW) @@ -334,8 +334,7 @@ PYBIND11_MODULE(Caldera_globals, m) return py::make_tuple(obj.SE_id, obj.supply_equipment_type, obj.charge_event_id, obj.vehicle_id, obj.vehicle_type, obj.arrival_unix_time, obj.departure_unix_time, obj.arrival_SOC, obj.departure_SOC, obj.now_unix_time, obj.now_soc, obj.now_charge_energy_ackWh, obj.energy_of_complete_charge_ackWh, obj.now_dcPkW, obj.now_acPkW, - obj.now_acQkVAR - //obj.min_remaining_charge_time_hrs, obj.min_time_to_complete_entire_charge_hrs + obj.now_acQkVAR, obj.min_remaining_charge_time_hrs, obj.min_time_to_complete_entire_charge_hrs ); }, [](py::tuple t) @@ -359,8 +358,8 @@ PYBIND11_MODULE(Caldera_globals, m) obj.now_acPkW = t[14].cast(); obj.now_acQkVAR = t[15].cast(); - //obj.min_remaining_charge_time_hrs = t[6].cast(); - //obj.min_time_to_complete_entire_charge_hrs = t[7].cast(); + obj.min_remaining_charge_time_hrs = t[16].cast(); + obj.min_time_to_complete_entire_charge_hrs = t[17].cast(); return obj; } From b61407ab7b328b99b7d086347cc4fe7dcc79306c Mon Sep 17 00:00:00 2001 From: Manoj Kumar Cebol Sundarrajan Date: Wed, 17 Jul 2024 13:57:39 -0600 Subject: [PATCH 48/52] feat!: New way to create charging models using input files Release-As: 1.1.0 From 1f53d4aa14fc722216732f6e50369e5f96f71049 Mon Sep 17 00:00:00 2001 From: Manoj Kumar Cebol Sundarrajan Date: Wed, 17 Jul 2024 10:13:16 -0600 Subject: [PATCH 49/52] chore: bootstrap releases for path: . --- .release-please-manifest.json | 3 +++ release-please-config.json | 13 +++++++++++++ 2 files changed, 16 insertions(+) create mode 100644 .release-please-manifest.json create mode 100644 release-please-config.json diff --git a/.release-please-manifest.json b/.release-please-manifest.json new file mode 100644 index 0000000..46b1b67 --- /dev/null +++ b/.release-please-manifest.json @@ -0,0 +1,3 @@ +{ + ".": "0.0.0" +} \ No newline at end of file diff --git a/release-please-config.json b/release-please-config.json new file mode 100644 index 0000000..e94a718 --- /dev/null +++ b/release-please-config.json @@ -0,0 +1,13 @@ +{ + "packages": { + ".": { + "changelog-path": "CHANGELOG.md", + "release-type": "simple", + "bump-minor-pre-major": false, + "bump-patch-for-minor-pre-major": false, + "draft": false, + "prerelease": false + } + }, + "$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json" +} \ No newline at end of file From e924a02c1d0e03ca7f0a6dc54df044515441f335 Mon Sep 17 00:00:00 2001 From: Manoj Kumar Cebol Sundarrajan Date: Wed, 17 Jul 2024 09:15:48 -0700 Subject: [PATCH 50/52] setting initial version number --- .release-please-manifest.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 46b1b67..37fcefa 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.0.0" -} \ No newline at end of file + ".": "1.0.0" +} From 40b496e5c30316ae5d8cf8ad2da7696d2e7b8fe8 Mon Sep 17 00:00:00 2001 From: Manoj Kumar Cebol Sundarrajan Date: Wed, 17 Jul 2024 10:07:40 -0700 Subject: [PATCH 51/52] added release-please action --- .github/workflows/release-please-action.yml | 49 +++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 .github/workflows/release-please-action.yml diff --git a/.github/workflows/release-please-action.yml b/.github/workflows/release-please-action.yml new file mode 100644 index 0000000..5f1cdb2 --- /dev/null +++ b/.github/workflows/release-please-action.yml @@ -0,0 +1,49 @@ +name: Build and Release + +on: + push: + branches: + - main + +permissions: + contents: write + pull-requests: write + +jobs: + build-release: + runs-on: ubuntu-latest + + steps: + + - name: Checkout git repo + uses: actions/checkout@v4 + + - name: release-please + id: release + uses: googleapis/release-please-action@v4 + with: + token: ${{ secrets.ACTIONS_SECRET }} + release-type: simple + target-branch: ${{ github.ref_name }} + + - name: Print release outputs for debugging + run: | + echo "Release outputs:" + echo "releases_created: ${{ steps.release.outputs.releases_created }}" + echo "major: ${{ steps.release.outputs.major }}" + echo "minor: ${{ steps.release.outputs.minor }}" + + - name: tag major and minor versions + if: ${{ steps.release.outputs.releases_created == 'true' }} + run: | + git config user.name github-actions[bot] + git config user.email 41898282+github-actions[bot]@users.noreply.github.com + #git remote add gh-token "https://${{ secrets.GITHUB_TOKEN }}@github.com/googleapis/release-please-action.git" + git tag -d v${{ steps.release.outputs.major }} || true + git tag -d v${{ steps.release.outputs.major }}.${{ steps.release.outputs.minor }} || true + git push origin :v${{ steps.release.outputs.major }} || true + git push origin :v${{ steps.release.outputs.major }}.${{ steps.release.outputs.minor }} || true + git tag -a v${{ steps.release.outputs.major }} -m "Release v${{ steps.release.outputs.major }}" + git tag -a v${{ steps.release.outputs.major }}.${{ steps.release.outputs.minor }} -m "Release v${{ steps.release.outputs.major }}.${{ steps.release.outputs.minor }}" + git push origin v${{ steps.release.outputs.major }} + git push origin v${{ steps.release.outputs.major }}.${{ steps.release.outputs.minor }} From 53cd00717add66d393363bd70258d82e1b2f38cf Mon Sep 17 00:00:00 2001 From: Manoj Kumar Cebol Sundarrajan Date: Wed, 17 Jul 2024 13:57:39 -0600 Subject: [PATCH 52/52] feat!: New way to create charging models using input files Release-As: 1.1.0