From e0924cf45f230402b6f8788b0cffabbf8e30c512 Mon Sep 17 00:00:00 2001 From: Peter Yefi Date: Thu, 21 Oct 2021 13:50:02 +0000 Subject: [PATCH] Implemented enriching city with energy systems --- city_model_structure/energy_system.py | 23 +++++++++++ .../xlsx_heat_pump_parameters.py | 39 ++++++++++++++++++- 2 files changed, 61 insertions(+), 1 deletion(-) diff --git a/city_model_structure/energy_system.py b/city_model_structure/energy_system.py index eb2deb71..04ab3681 100644 --- a/city_model_structure/energy_system.py +++ b/city_model_structure/energy_system.py @@ -2,6 +2,7 @@ EnergySystem module SPDX - License - Identifier: LGPL - 3.0 - or -later Copyright © 2020 Project Author Pilar Monsalvete Alvarez de Uribarri pilar.monsalvete@concordia.ca +Contributor Peter Yefi peteryefi@gmail.com """ from city_model_structure.city_object import CityObject @@ -16,7 +17,29 @@ class EnergySystem(CityObject): def __init__(self, name, lod, surfaces, city_lower_corner): super().__init__(name, lod, surfaces, city_lower_corner) self._heat_pump = None + self._type = 'energy_system' @property def heat_pump(self) -> HeatPump: + """ + Heat pump energy system + :return: + """ return self._heat_pump + + @heat_pump.setter + def heat_pump(self, value): + """ + Set heat pumm for energy system + :param value: HeatPump + """ + if self._heat_pump is None: + self._heat_pump = value + + @property + def type(self) -> str: + """ + Type of city object + :return: str + """ + return self._type diff --git a/imports/energy_systems/xlsx_heat_pump_parameters.py b/imports/energy_systems/xlsx_heat_pump_parameters.py index 7d37874f..932db0fd 100644 --- a/imports/energy_systems/xlsx_heat_pump_parameters.py +++ b/imports/energy_systems/xlsx_heat_pump_parameters.py @@ -7,6 +7,9 @@ Contributor Pilar Monsalvete Alvarez de Uribarri pilar.monsalvete@concordia.ca import pandas as pd from typing import Dict +from typing import List +from city_model_structure.energy_systems.heat_pump import HeatPump +from city_model_structure.energy_system import EnergySystem class XlsxHeatPumpParameters: @@ -49,7 +52,7 @@ class XlsxHeatPumpParameters: # temp is the key for the values of pf,pa,qw data while i < 25: cooling_data[sheet][cooling_df.iloc[i][0]] = cooling_df.iloc[i + 1:i + 4, 2:8].values.tolist() - heating_data[sheet][heating_df.iloc[i][0]] = cooling_df.iloc[i + 1:i + 4, 2:8].values.tolist() + heating_data[sheet][heating_df.iloc[i][0]] = heating_df.iloc[i + 1:i + 4, 2:8].values.tolist() i = i + 5 # extract the last cooling data cooling_data[sheet][cooling_df.iloc[i][0]] = cooling_df.iloc[i + 1:i + 4, 2:8] @@ -59,4 +62,38 @@ class XlsxHeatPumpParameters: """ Enriches the city with information from file """ + heap_pump_data = self._read_file() + for (k_cool, v_cool), (k_heat, v_heat) in \ + zip(heap_pump_data["cooling"].items(), heap_pump_data["heating"].items()): + heat_pump = HeatPump() + heat_pump.model = k_cool + h_data = self._extract_heat_pump_data(v_heat) + c_data = self._extract_heat_pump_data(v_cool) + heat_pump.cooling_pf = c_data[0] + heat_pump.cooling_pa = c_data[1] + heat_pump.cooling_qw = c_data[2] + heat_pump.heating_pf = h_data[0] + heat_pump.heating_pa = h_data[1] + heat_pump.heating_qw = h_data[2] + energy_system = EnergySystem('{} capacity heat pump'.format(heat_pump.model), 0, [], None) + energy_system.heat_pump = heat_pump + self._city.add_city_object(energy_system) return self._city + + def _extract_heat_pump_data(self, heat_pump_capacity_data) -> [List, List, List]: + """ + Fetches a list of metric based data for heat pump for various temperature, + eg. cooling capacity data for 12 capacity heat pump + for 6,7,8,9,10 and 11 degree celsius + :param heat_pump_capacity_data: the heat pump capacity data from the + which the metric specific data is fetched: {List} + :return: List + """ + pf_data = [] + pa_data = [] + qw_data = [] + for _, metric_data in heat_pump_capacity_data.items(): + pf_data.append(metric_data[0]) + pa_data.append(metric_data[1]) + qw_data.append(metric_data[2]) + return [pf_data, pa_data, qw_data] \ No newline at end of file