From ab81edc33d07fd6c6d404137b27de98c6643dca7 Mon Sep 17 00:00:00 2001 From: p_monsalvete Date: Tue, 8 Aug 2023 10:19:35 -0400 Subject: [PATCH] changed in data ACH to 1/s all Wh in J --- hub/city_model_structure/building.py | 34 ++++++++++--------- hub/city_model_structure/city_object.py | 12 +++---- .../formats/simplified_radiosity_algorithm.py | 5 +-- .../results/insel_monthly_energry_balance.py | 16 +++++---- hub/imports/weather/epw_weather_parameters.py | 7 ++-- 5 files changed, 41 insertions(+), 33 deletions(-) diff --git a/hub/city_model_structure/building.py b/hub/city_model_structure/building.py index d5550bd0..077b5d80 100644 --- a/hub/city_model_structure/building.py +++ b/hub/city_model_structure/building.py @@ -318,7 +318,7 @@ class Building(CityObject): @property def heating_demand(self) -> dict: """ - Get heating demand in Wh + Get heating demand in J :return: dict{[float]} """ return self._heating_demand @@ -326,7 +326,7 @@ class Building(CityObject): @heating_demand.setter def heating_demand(self, value): """ - Set heating demand in Wh + Set heating demand in J :param value: dict{[float]} """ self._heating_demand = value @@ -334,7 +334,7 @@ class Building(CityObject): @property def cooling_demand(self) -> dict: """ - Get cooling demand in Wh + Get cooling demand in J :return: dict{[float]} """ return self._cooling_demand @@ -342,7 +342,7 @@ class Building(CityObject): @cooling_demand.setter def cooling_demand(self, value): """ - Set cooling demand in Wh + Set cooling demand in J :param value: dict{[float]} """ self._cooling_demand = value @@ -350,7 +350,7 @@ class Building(CityObject): @property def lighting_electrical_demand(self) -> dict: """ - Get lighting electrical demand in Wh + Get lighting electrical demand in J :return: dict{[float]} """ return self._lighting_electrical_demand @@ -358,7 +358,7 @@ class Building(CityObject): @lighting_electrical_demand.setter def lighting_electrical_demand(self, value): """ - Set lighting electrical demand in Wh + Set lighting electrical demand in J :param value: dict{[float]} """ self._lighting_electrical_demand = value @@ -366,7 +366,7 @@ class Building(CityObject): @property def appliances_electrical_demand(self) -> dict: """ - Get appliances electrical demand in Wh + Get appliances electrical demand in J :return: dict{[float]} """ return self._appliances_electrical_demand @@ -374,7 +374,7 @@ class Building(CityObject): @appliances_electrical_demand.setter def appliances_electrical_demand(self, value): """ - Set appliances electrical demand in Wh + Set appliances electrical demand in J :param value: dict{[float]} """ self._appliances_electrical_demand = value @@ -382,7 +382,7 @@ class Building(CityObject): @property def domestic_hot_water_heat_demand(self) -> dict: """ - Get domestic hot water heat demand in Wh + Get domestic hot water heat demand in J :return: dict{[float]} """ return self._domestic_hot_water_heat_demand @@ -390,7 +390,7 @@ class Building(CityObject): @domestic_hot_water_heat_demand.setter def domestic_hot_water_heat_demand(self, value): """ - Set domestic hot water heat demand in Wh + Set domestic hot water heat demand in J :param value: dict{[float]} """ self._domestic_hot_water_heat_demand = value @@ -447,7 +447,8 @@ class Building(CityObject): monthly_values = PeakLoads(self).heating_peak_loads_from_methodology if monthly_values is None: return None - results[cte.MONTH] = monthly_values + # todo: @Pilar!!!! + results[cte.MONTH] = monthly_values * cte.WATTS_HOUR_TO_JULES results[cte.YEAR] = [max(monthly_values)] return results @@ -464,7 +465,8 @@ class Building(CityObject): monthly_values = PeakLoads(self).cooling_peak_loads_from_methodology if monthly_values is None: return None - results[cte.MONTH] = monthly_values + # todo: @Pilar!!!! + results[cte.MONTH] = monthly_values * cte.WATTS_HOUR_TO_JULES results[cte.YEAR] = [max(monthly_values)] return results @@ -618,7 +620,7 @@ class Building(CityObject): @property def heating_consumption(self): """ - Get energy consumption for heating according to the heating system installed in Wh + Get energy consumption for heating according to the heating system installed in J return: dict """ if len(self._heating_consumption) == 0: @@ -634,7 +636,7 @@ class Building(CityObject): @property def cooling_consumption(self): """ - Get energy consumption for cooling according to the cooling system installed in Wh + Get energy consumption for cooling according to the cooling system installed in J return: dict """ if len(self._cooling_consumption) == 0: @@ -650,7 +652,7 @@ class Building(CityObject): @property def domestic_hot_water_consumption(self): """ - Get energy consumption for domestic according to the domestic hot water system installed in Wh + Get energy consumption for domestic according to the domestic hot water system installed in J return: dict """ if len(self._domestic_hot_water_consumption) == 0: @@ -692,7 +694,7 @@ class Building(CityObject): @property def distribution_systems_electrical_consumption(self): """ - Get total electricity consumption for distribution and emission systems in Wh + Get total electricity consumption for distribution and emission systems in J return: dict """ if len(self._distribution_systems_electrical_consumption) != 0: diff --git a/hub/city_model_structure/city_object.py b/hub/city_model_structure/city_object.py index 2ef6d2a8..c18a4aa0 100644 --- a/hub/city_model_structure/city_object.py +++ b/hub/city_model_structure/city_object.py @@ -208,7 +208,7 @@ class CityObject: @property def global_horizontal(self) -> dict: """ - Get global horizontal radiation surrounding the city object in W/m2 + Get global horizontal radiation surrounding the city object in J/m2 :return: dict{dict{[float]}} """ return self._global_horizontal @@ -216,7 +216,7 @@ class CityObject: @global_horizontal.setter def global_horizontal(self, value): """ - Set global horizontal radiation surrounding the city object in W/m2 + Set global horizontal radiation surrounding the city object in J/m2 :param value: dict{dict{[float]}} """ self._global_horizontal = value @@ -224,7 +224,7 @@ class CityObject: @property def diffuse(self) -> dict: """ - Get diffuse radiation surrounding the city object in W/m2 + Get diffuse radiation surrounding the city object in J/m2 :return: dict{dict{[float]}} """ return self._diffuse @@ -232,7 +232,7 @@ class CityObject: @diffuse.setter def diffuse(self, value): """ - Set diffuse radiation surrounding the city object in W/m2 + Set diffuse radiation surrounding the city object in J/m2 :param value: dict{dict{[float]}} """ self._diffuse = value @@ -240,7 +240,7 @@ class CityObject: @property def beam(self) -> dict: """ - Get beam radiation surrounding the city object in W/m2 + Get beam radiation surrounding the city object in J/m2 :return: dict{dict{[float]}} """ return self._beam @@ -248,7 +248,7 @@ class CityObject: @beam.setter def beam(self, value): """ - Set beam radiation surrounding the city object in W/m2 + Set beam radiation surrounding the city object in J/m2 :param value: dict{dict{[float]}} """ self._beam = value diff --git a/hub/exports/formats/simplified_radiosity_algorithm.py b/hub/exports/formats/simplified_radiosity_algorithm.py index 538a863b..1b5dfba7 100644 --- a/hub/exports/formats/simplified_radiosity_algorithm.py +++ b/hub/exports/formats/simplified_radiosity_algorithm.py @@ -66,8 +66,9 @@ class SimplifiedRadiosityAlgorithm: else: i = (total_days + day - 1) * 24 + hour - 1 representative_building = self._city.buildings[0] - content += f'{day} {month} {hour} {representative_building.global_horizontal[cte.HOUR][i]} ' \ - f'{representative_building.beam[cte.HOUR][i]}\n' + _global = representative_building.global_horizontal[cte.HOUR][i] * cte.WATTS_HOUR_TO_JULES + _beam = representative_building.beam[cte.HOUR][i] * cte.WATTS_HOUR_TO_JULES + content += f'{day} {month} {hour} {_global} {_beam}\n' with open(file, 'w', encoding='utf-8') as file: file.write(content) diff --git a/hub/imports/results/insel_monthly_energry_balance.py b/hub/imports/results/insel_monthly_energry_balance.py index 31dde60d..1215ab46 100644 --- a/hub/imports/results/insel_monthly_energry_balance.py +++ b/hub/imports/results/insel_monthly_energry_balance.py @@ -30,7 +30,7 @@ class InselMonthlyEnergyBalance: demand = str(line).replace("['", '').replace("']", '').split() for i in range(0, 2): if demand[i] != 'NaN': - aux = float(demand[i]) * 1000 # kWh to Wh + aux = float(demand[i]) * cte.WATTS_HOUR_TO_JULES * 1000 # kWh to J demand[i] = str(aux) else: demand[i] = '0' @@ -66,7 +66,8 @@ class InselMonthlyEnergyBalance: for value in schedule.values: total_day += value for day_type in schedule.day_types: - total_lighting += total_day * cte.WEEK_DAYS_A_MONTH[day_type][month] * lighting_density + total_lighting += total_day * cte.WEEK_DAYS_A_MONTH[day_type][month] \ + * lighting_density / cte.WATTS_HOUR_TO_JULES lighting_demand.append(total_lighting * area) for schedule in thermal_zone.appliances.schedules: @@ -74,7 +75,8 @@ class InselMonthlyEnergyBalance: for value in schedule.values: total_day += value for day_type in schedule.day_types: - total_appliances += total_day * cte.WEEK_DAYS_A_MONTH[day_type][month] * appliances_density + total_appliances += total_day * cte.WEEK_DAYS_A_MONTH[day_type][month] \ + * appliances_density / cte.WATTS_HOUR_TO_JULES appliances_demand.append(total_appliances * area) for schedule in thermal_zone.domestic_hot_water.schedules: @@ -83,7 +85,8 @@ class InselMonthlyEnergyBalance: total_day += value for day_type in schedule.day_types: demand = ( - peak_flow * cte.WATER_DENSITY * cte.WATER_HEAT_CAPACITY * (service_temperature - cold_water[month]) + peak_flow * cte.WATER_DENSITY * cte.WATER_HEAT_CAPACITY + * (service_temperature - cold_water[month]) / cte.WATTS_HOUR_TO_JULES ) total_dhw_demand += total_day * cte.WEEK_DAYS_A_MONTH[day_type][month] * demand domestic_hot_water_demand.append(total_dhw_demand * area) @@ -97,14 +100,15 @@ class InselMonthlyEnergyBalance: def enrich(self): """ - Enrich the city by using the insel monthly energy balance output files + Enrich the city by using the insel monthly energy balance output files (J) :return: None """ for building in self._city.buildings: file_name = building.name + '.out' insel_output_file_path = Path(self._base_path / file_name).resolve() if insel_output_file_path.is_file(): - building.heating_demand[cte.MONTH], building.cooling_demand[cte.MONTH] = self._conditioning_demand(insel_output_file_path) + building.heating_demand[cte.MONTH], building.cooling_demand[cte.MONTH] \ + = self._conditioning_demand(insel_output_file_path) building.heating_demand[cte.YEAR] = [sum(building.heating_demand[cte.MONTH])] building.cooling_demand[cte.YEAR] = [sum(building.cooling_demand[cte.MONTH])] self._dhw_and_electric_demand() diff --git a/hub/imports/weather/epw_weather_parameters.py b/hub/imports/weather/epw_weather_parameters.py index 83cc1bcc..4aeb2a99 100644 --- a/hub/imports/weather/epw_weather_parameters.py +++ b/hub/imports/weather/epw_weather_parameters.py @@ -110,9 +110,10 @@ class EpwWeatherParameters: # new_value = pd.DataFrame(self._weather_values[['dry_bulb_temperature_c']].to_numpy(), columns=['epw']) # number_invalid_records = new_value[new_value.epw == 99.9].count().epw building.external_temperature[cte.HOUR] = self._weather_values['dry_bulb_temperature_c'] - building.global_horizontal[cte.HOUR] = self._weather_values['global_horizontal_radiation_wh_m2'] - building.diffuse[cte.HOUR] = self._weather_values['diffuse_horizontal_radiation_wh_m2'] - building.beam[cte.HOUR] = self._weather_values['direct_normal_radiation_wh_m2'] + building.global_horizontal[cte.HOUR] = self._weather_values[ + 'global_horizontal_radiation_wh_m2'] / cte.WATTS_HOUR_TO_JULES + building.diffuse[cte.HOUR] = self._weather_values['diffuse_horizontal_radiation_wh_m2'] / cte.WATTS_HOUR_TO_JULES + building.beam[cte.HOUR] = self._weather_values['direct_normal_radiation_wh_m2'] / cte.WATTS_HOUR_TO_JULES building.cold_water_temperature[cte.HOUR] = wh().cold_water_temperature(building.external_temperature[cte.HOUR]) # create the monthly and yearly values out of the hourly