diff --git a/CMakeLists.txt b/CMakeLists.txt index fe7b9dc..20d7c0c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,4 +5,10 @@ set(CMAKE_CXX_STANDARD 26) add_executable(Sim_C__ src/main.cpp + src/model/Community.cpp + src/model/Community.h + src/model/building/Building.cpp + src/model/building/Building.h + src/model/Energy_Tariff.cpp + src/model/Energy_Tariff.h ) diff --git a/src/model/Community.cpp b/src/model/Community.cpp new file mode 100644 index 0000000..aa89adf --- /dev/null +++ b/src/model/Community.cpp @@ -0,0 +1,26 @@ +#include "Community.h" + +std::string Community::name() const { + return Name; +} + +void Community::set_name(const std::string& name) { + Name = name; +} + +std::vector>& Community::buildings() { + return Buildings; +} + +// Use move semantics for efficiency +void Community::set_buildings(std::vector> buildings) { + Buildings = std::move(buildings); +} + +Energy_Tariff Community::energy_tariff() const { + return energy_Tariff; +} + +void Community::set_energy_tariff(const Energy_Tariff& energy_tariff) { + energy_Tariff = energy_tariff; +} diff --git a/src/model/Community.h b/src/model/Community.h new file mode 100644 index 0000000..2861d94 --- /dev/null +++ b/src/model/Community.h @@ -0,0 +1,36 @@ +// +// Created by Stani on 09/03/2025. +// + +#ifndef COMMUNITY_H +#define COMMUNITY_H +#include +#include + +#include "building/Building.h" +#include "Energy_Tariff.h" + + +class Community { +public: + std::string name() const; + + void set_name(const std::string &name); + + std::vector>& buildings(); + + void set_buildings(std::vector> buildings); + + Energy_Tariff energy_tariff() const; + + void set_energy_tariff(const Energy_Tariff &energy_tariff); + +private: + std::string Name; + std::vector> Buildings; + Energy_Tariff energy_Tariff; +}; + + + +#endif //COMMUNITY_H diff --git a/src/model/Energy_Tariff.cpp b/src/model/Energy_Tariff.cpp new file mode 100644 index 0000000..8bcebcf --- /dev/null +++ b/src/model/Energy_Tariff.cpp @@ -0,0 +1,5 @@ +// +// Created by Stani on 09/03/2025. +// + +#include "Energy_Tariff.h" diff --git a/src/model/Energy_Tariff.h b/src/model/Energy_Tariff.h new file mode 100644 index 0000000..2f2056f --- /dev/null +++ b/src/model/Energy_Tariff.h @@ -0,0 +1,16 @@ +// +// Created by Stani on 09/03/2025. +// + +#ifndef ENERGY_TARIFF_H +#define ENERGY_TARIFF_H + + + +class Energy_Tariff { + +}; + + + +#endif //ENERGY_TARIFF_H diff --git a/src/model/building/Building.cpp b/src/model/building/Building.cpp new file mode 100644 index 0000000..4792c6d --- /dev/null +++ b/src/model/building/Building.cpp @@ -0,0 +1,150 @@ +// +// Created by Stani on 09/03/2025. +// + +#include "Building.h" + +float Building::Cost::special_rate_consumption() const { + return SpecialRateConsumption; +} + +void Building::Cost::set_special_rate_consumption(float special_rate_consumption) { + SpecialRateConsumption = special_rate_consumption; +} + +float Building::Cost::special_rate_generation() const { + return SpecialRateGeneration; +} + +void Building::Cost::set_special_rate_generation(float special_rate_generation) { + SpecialRateGeneration = special_rate_generation; +} + +std::vector>& Building::Simulation_Values::community_coverage() { + return CommunityCoverage; +} + +void Building::Simulation_Values:: +set_community_coverage(std::vector> community_coverage) { + CommunityCoverage = std::move(community_coverage); +} + +std::vector>& Building::Simulation_Values::own_usage() { + return OwnUsage; +} + +void Building::Simulation_Values::set_own_usage(std::vector> own_usage) { + OwnUsage = std::move(own_usage) ; +} + +std::vector>& Building::Simulation_Values::needed_con() { + return Needed_con; +} + +void Building::Simulation_Values::set_needed_con(std::vector> needed_con) { + Needed_con = std::move(needed_con) ; +} + +std::vector>& Building::Simulation_Values::needed_gen() { + return NeededGen; +} + +void Building::Simulation_Values::set_needed_gen(std::vector> needed_gen) { + NeededGen = std::move(needed_gen); +} + +std::string Building::Metadata::name() const { + return Name; +} + +void Building::Metadata::set_name(const std::string &name) { + Name = name; +} + +float Building::Metadata::annual_consumption() const { + return AnnualConsumption; +} + +void Building::Metadata::set_annual_consumption(float annual_consumption) { + AnnualConsumption = annual_consumption; +} + +float Building::Metadata::annual_generation() const { + return AnnualGeneration; +} + +void Building::Metadata::set_annual_generation(float annual_generation) { + AnnualGeneration = annual_generation; +} + +std::vector>& Building::Metadata::consumption_profile() { + return ConsumptionProfile; +} + +void Building::Metadata::set_consumption_profile(std::vector> consumption_profile) { + ConsumptionProfile = std::move(consumption_profile); +} + +std::vector>& Building::Metadata::generation_profile() { + return GenerationProfile; +} + +void Building::Metadata::set_generation_profile(std::vector> generation_profile) { + GenerationProfile = std::move(generation_profile); +} + +std::string Building::Metadata::consumption_profile_name() const { + return ConsumptionProfileName; +} + +void Building::Metadata::set_consumption_profile_name(const std::string &consumption_profile_name) { + ConsumptionProfileName = consumption_profile_name; +} + +std::string Building::Metadata::generation_profile_name() const { + return GenerationProfileName; +} + +void Building::Metadata::set_generation_profile_name(const std::string &generation_profile_name) { + GenerationProfileName = generation_profile_name; +} + +short Building::Metadata::connection_power() const { + return ConnectionPower; +} + +void Building::Metadata::set_connection_power(short connection_power) { + ConnectionPower = connection_power; +} + +short Building::Metadata::grid_power() const { + return GridPower; +} + +void Building::Metadata::set_grid_power(short grid_power) { + GridPower = grid_power; +} + +std::unique_ptr& Building::Base::cost() { + return Cost; +} + +void Building::Base::set_cost(std::unique_ptr &cost) { + Cost = std::move(cost); +} + +std::unique_ptr& Building::Base::values() { + return Values; +} + +void Building::Base::set_values(std::unique_ptr &values) { + Values = std::move(values); +} + +std::unique_ptr& Building::Base::metadata() { + return Metadata; +} + +void Building::Base::set_metadata(std::unique_ptr &metadata) { + Metadata = std::move(metadata); +} diff --git a/src/model/building/Building.h b/src/model/building/Building.h new file mode 100644 index 0000000..cb599ab --- /dev/null +++ b/src/model/building/Building.h @@ -0,0 +1,86 @@ + // + // Created by Stani on 09/03/2025. + // + + #ifndef BUILDING_H + #define BUILDING_H + #include + #include + + + namespace Building { + class Cost { + private: + float SpecialRateConsumption; + float SpecialRateGeneration; + public: + float special_rate_consumption() const; + void set_special_rate_consumption(float special_rate_consumption); + float special_rate_generation() const; + void set_special_rate_generation(float special_rate_generation); + }; + class Simulation_Values { + private: + std::vector> CommunityCoverage; + std::vector> OwnUsage; + std::vector> Needed_con; + std::vector> NeededGen; + public: + std::vector>& community_coverage(); + void set_community_coverage(std::vector> community_coverage); + std::vector>& own_usage(); + void set_own_usage(std::vector> own_usage); + std::vector>& needed_con(); + void set_needed_con(std::vector> needed_con); + std::vector>& needed_gen(); + void set_needed_gen(std::vector> needed_gen); + }; + class Metadata { + private: + std::string Name; + float AnnualConsumption; + float AnnualGeneration; + std::vector> ConsumptionProfile; + std::vector> GenerationProfile; + std::string ConsumptionProfileName; + std::string GenerationProfileName; + short ConnectionPower; + short GridPower; + public: + std::string name() const; + void set_name(const std::string &name); + float annual_consumption() const; + void set_annual_consumption(float annual_consumption); + float annual_generation() const; + void set_annual_generation(float annual_generation); + std::vector>& consumption_profile(); + void set_consumption_profile(std::vector> consumption_profile); + std::vector>& generation_profile(); + void set_generation_profile(std::vector> generation_profile); + std::string consumption_profile_name() const; + void set_consumption_profile_name(const std::string &consumption_profile_name); + std::string generation_profile_name() const; + void set_generation_profile_name(const std::string &generation_profile_name); + short connection_power() const; + void set_connection_power(short connection_power); + short grid_power() const; + void set_grid_power(short grid_power); + }; + + class Base { + private: + std::unique_ptr Cost; + std::unique_ptr Values; + std::unique_ptr Metadata; + public: + std::unique_ptr& cost(); + void set_cost(std::unique_ptr &cost); + std::unique_ptr & values(); + void set_values(std::unique_ptr &values); + std::unique_ptr & metadata(); + void set_metadata(std::unique_ptr &metadata); + }; + } + + + #endif //BUILDING_H