From 6299cdfe48b0c247fbb54e2224b1e97e3485e858 Mon Sep 17 00:00:00 2001 From: guille Date: Fri, 8 Apr 2022 10:45:33 -0400 Subject: [PATCH] complete the data model for the construction catalog --- .../data_models/construction/archetype.py | 104 ++++++++++++++++- .../data_models/construction/construction.py | 59 +++++++++- catalogs/data_models/construction/layer.py | 45 ++++++++ catalogs/data_models/construction/material.py | 105 +++++++++++++++++- 4 files changed, 303 insertions(+), 10 deletions(-) create mode 100644 catalogs/data_models/construction/layer.py diff --git a/catalogs/data_models/construction/archetype.py b/catalogs/data_models/construction/archetype.py index 3fefa825..bd5db1e8 100644 --- a/catalogs/data_models/construction/archetype.py +++ b/catalogs/data_models/construction/archetype.py @@ -6,5 +6,105 @@ Project Coder Guille Gutierrez guillermo.gutierrezmorote@concordia.ca """ class Archetype: - def __init__(self): - pass \ No newline at end of file + def __init__(self, archetype_id, + function, + construction_period, + constructions, + average_storey_height, + number_of_storeys, + thermal_capacity, + extra_loses_due_to_thermal_bridges, + indirect_heated_ratio, + infiltration_rate_for_ventilation_system_off, + infiltration_rate_for_ventilation_system_on): + + self._id = archetype_id + self._function = function + self._construction_period = construction_period + self._constructions = constructions + self._average_storey_height = average_storey_height + self._number_of_storeys = number_of_storeys + self._thermal_capacity = thermal_capacity + self._extra_loses_due_to_thermal_bridges = extra_loses_due_to_thermal_bridges + self._indirect_heated_ratio = indirect_heated_ratio + self._infiltration_rate_for_ventilation_system_off = infiltration_rate_for_ventilation_system_off + self._infiltration_rate_for_ventilation_system_on = infiltration_rate_for_ventilation_system_on + + @property + def id(self): + """ + Get archetype id + :return: int + """ + return self._id + + def function(self): + """ + Get archetype function + :return: str + """ + return self._function + + @property + def construction_period(self): + """ + Get archetype construction period + :return: str + """ + return self._construction_period + + @property + def average_storey_height(self): + """ + Get archetype average storey height + :return: float + """ + return self._average_storey_height + + @property + def number_of_storeys(self): + """ + Get archetype number of storeys + :return: int + """ + return self._number_of_storeys + + @property + def thermal_capacity(self): + """ + Get archetype thermal capacity + :return: int + """ + return self._thermal_capacity + + @property + def extra_loses_due_to_thermal_bridges(self): + """ + Get archetype extra loses due to thermal bridges + :return: int + """ + return self._extra_loses_due_to_thermal_bridges + + @property + def indirect_heated_ratio(self): + """ + Get archetype indirect heat ratio + :return: float + """ + return self._indirect_heated_ratio + + @property + def infiltration_rate_for_ventilation_system_off(self): + """ + Get archetype infiltration rate for ventilation system off + :return: float + """ + return self._infiltration_rate_for_ventilation_system_off + + @property + def infiltration_rate_for_ventilation_system_on(self): + """ + Get archetype infiltration rate for ventilation system on + :return: float + """ + return self._infiltration_rate_for_ventilation_system_on diff --git a/catalogs/data_models/construction/construction.py b/catalogs/data_models/construction/construction.py index 51a1c028..fc76371b 100644 --- a/catalogs/data_models/construction/construction.py +++ b/catalogs/data_models/construction/construction.py @@ -1,10 +1,63 @@ """ -Construction catalog contruction +Construction catalog construction SPDX - License - Identifier: LGPL - 3.0 - or -later Copyright © 2022 Concordia CERC group Project Coder Guille Gutierrez guillermo.gutierrezmorote@concordia.ca """ class Construction: - def __init__(self): - pass \ No newline at end of file + def __init__(self, construction_id, construction_type, name, layers, window_ratio=None, window=None): + self._id = construction_id + self._type = construction_type + self._name = name + self._layers = layers + self._window_ratio = window_ratio + self._window = window + + @property + def id(self): + """ + Get construction id + :return: int + """ + return self._id + + @property + def type(self): + """ + Get construction type + :return: str + """ + return self._type + + @property + def name(self): + """ + Get construction name + :return: str + """ + return self._name + + @property + def layers(self): + """ + Get construction layers + :return: [layer] + """ + return self._layers + + @property + def window_ratio(self): + """ + Get construction window ratio (only when used as archetype construction) + :return: (0..1) or None + """ + return self._window_ratio + + @property + def window(self): + """ + Get construction window (only when used as archetype construction) + :return: window or None + """ + return self._window diff --git a/catalogs/data_models/construction/layer.py b/catalogs/data_models/construction/layer.py new file mode 100644 index 00000000..4bdd1bf6 --- /dev/null +++ b/catalogs/data_models/construction/layer.py @@ -0,0 +1,45 @@ +""" +Construction catalog layer +SPDX - License - Identifier: LGPL - 3.0 - or -later +Copyright © 2022 Concordia CERC group +Project Coder Guille Gutierrez guillermo.gutierrezmorote@concordia.ca +""" + +class Layer: + def __init__(self, layer_id, name, material, thickness): + self._id = layer_id + self._name = name + self._material = material + self._thickness = thickness + + @property + def id(self): + """ + Get layer id + :return: int + """ + return self._id + + @property + def name(self): + """ + Get layer name + :return: str + """ + return self._name + + @property + def material(self): + """ + Get layer material + :return: Material + """ + return self._material + + @property + def thickness(self): + """ + Get layer thickness in meters + :return: None or float + """ + return self._thickness diff --git a/catalogs/data_models/construction/material.py b/catalogs/data_models/construction/material.py index a99dc7df..3df24df8 100644 --- a/catalogs/data_models/construction/material.py +++ b/catalogs/data_models/construction/material.py @@ -5,9 +5,104 @@ Copyright © 2022 Concordia CERC group Project Coder Guille Gutierrez guillermo.gutierrezmorote@concordia.ca """ -from city_model_structure.building_demand.material import Material as LibsMaterial +class Material: + def __init__(self, material_id, + name, + solar_absorptance, + thermal_absorptance, + visible_absorptance, + no_mass=False, + thermal_resistance=None, + conductivity=None, + density=None, + specific_heat=None): + self._id = material_id + self._name = name + self._solar_absorptance = solar_absorptance + self._thermal_absorptance = thermal_absorptance + self._visible_absorptance = visible_absorptance + self._no_mass = no_mass + self._thermal_resistance = thermal_resistance + self._conductivity = conductivity + self._density = density + self._specific_heat = specific_heat -class Material(LibsMaterial): - def __init__(self): - # Inherit normal material directly if needed additional transformations will be done to this class - super().__init__() + @property + def id(self): + """ + Get material id + :return: int + """ + return self._id + + @property + def name(self): + """ + Get material name + :return: str + """ + return self._name + + @property + def conductivity(self): + """ + Get material conductivity in W/mK + :return: None or float + """ + return self._conductivity + + @property + def specific_heat(self): + """ + Get material conductivity in J/kgK + :return: None or float + """ + return self._specific_heat + + @property + def density(self): + """ + Get material density in kg/m3 + :return: None or float + """ + return self._density + + @property + def solar_absorptance(self): + """ + Get material solar absorptance + :return: None or float + """ + return self._solar_absorptance + + @property + def thermal_absorptance(self): + """ + Get material thermal absorptance + :return: None or float + """ + return self._thermal_absorptance + + @property + def visible_absorptance(self): + """ + Get material visible absorptance + :return: None or float + """ + return self._visible_absorptance + + @property + def no_mass(self): + """ + Get material no mass flag + :return: None or Boolean + """ + return self._no_mass + + @property + def thermal_resistance(self): + """ + Get material thermal resistance in m2K/W + :return: None or float + """ + return self._thermal_resistance