Merge remote-tracking branch 'origin/main'
This commit is contained in:
commit
305eca2718
131
hub_api/mockup/building.py
Normal file
131
hub_api/mockup/building.py
Normal file
|
@ -0,0 +1,131 @@
|
||||||
|
"""
|
||||||
|
Mockup Building module
|
||||||
|
SPDX - License - Identifier: LGPL - 3.0 - or -later
|
||||||
|
Copyright © 2023 Concordia CERC group
|
||||||
|
Project Coder Pilar Monsalvete Alvarez de Uribarri pilar.monsalvete@concordia.ca
|
||||||
|
"""
|
||||||
|
|
||||||
|
from properties import *
|
||||||
|
|
||||||
|
|
||||||
|
class Building:
|
||||||
|
"""
|
||||||
|
Building class
|
||||||
|
"""
|
||||||
|
def __init__(self,
|
||||||
|
function,
|
||||||
|
volume,
|
||||||
|
area,
|
||||||
|
total_heating_area,
|
||||||
|
wall_area,
|
||||||
|
windows_area,
|
||||||
|
roof_area,
|
||||||
|
solar_collectors_area_reduction_factor,
|
||||||
|
heating_consumption,
|
||||||
|
cooling_consumption,
|
||||||
|
domestic_hot_water_consumption,
|
||||||
|
lighting_electrical_demand,
|
||||||
|
appliances_electrical_demand,
|
||||||
|
heating_peak_load,
|
||||||
|
cooling_peak_load,
|
||||||
|
onsite_electrical_production,
|
||||||
|
catalog_energy_systems):
|
||||||
|
self._function = function
|
||||||
|
self._area = area
|
||||||
|
self._volume = volume
|
||||||
|
self._total_heating_area = total_heating_area
|
||||||
|
self._wall_area = wall_area
|
||||||
|
self._windows_area = windows_area
|
||||||
|
self._roof_area = roof_area
|
||||||
|
self._solar_collectors_area_reduction_factor = solar_collectors_area_reduction_factor
|
||||||
|
self._heating_consumption = heating_consumption
|
||||||
|
self._cooling_consumption = cooling_consumption
|
||||||
|
self._domestic_hot_water_consumption = domestic_hot_water_consumption
|
||||||
|
self._lighting_electrical_demand = lighting_electrical_demand
|
||||||
|
self._appliances_electrical_demand = appliances_electrical_demand
|
||||||
|
self._heating_peak_load = heating_peak_load
|
||||||
|
self._cooling_peak_load = cooling_peak_load
|
||||||
|
self._onsite_electrical_production = onsite_electrical_production
|
||||||
|
self._catalog_energy_systems = catalog_energy_systems
|
||||||
|
|
||||||
|
@property
|
||||||
|
def function(self):
|
||||||
|
return self._function
|
||||||
|
|
||||||
|
@property
|
||||||
|
def volume(self):
|
||||||
|
return self._volume
|
||||||
|
|
||||||
|
@property
|
||||||
|
def thermal_zones(self):
|
||||||
|
ground = ThermalBoundary()
|
||||||
|
ground.type = 'Ground'
|
||||||
|
ground.opaque_area = self._area
|
||||||
|
roof = ThermalBoundary()
|
||||||
|
roof.type = 'Roof'
|
||||||
|
roof.opaque_area = self._roof_area
|
||||||
|
wall = ThermalBoundary()
|
||||||
|
wall.type = 'Wall'
|
||||||
|
wall.opaque_area = self._wall_area
|
||||||
|
wall.window_ratio = self._windows_area / (self._windows_area + self._wall_area)
|
||||||
|
thermal_zone = ThermalZone()
|
||||||
|
thermal_zone.total_floor_area = self._total_heating_area
|
||||||
|
thermal_zone.thermal_boundaries = [roof, wall, ground]
|
||||||
|
return [thermal_zone]
|
||||||
|
|
||||||
|
@property
|
||||||
|
def roofs(self):
|
||||||
|
polygon = Polygon()
|
||||||
|
polygon.area = self._roof_area
|
||||||
|
roof = Roof()
|
||||||
|
roof.solid_polygon = polygon
|
||||||
|
roof.solar_collectors_area_reduction_factor = self._solar_collectors_area_reduction_factor
|
||||||
|
return [roof]
|
||||||
|
|
||||||
|
@property
|
||||||
|
def heating_consumption(self):
|
||||||
|
return self._heating_consumption
|
||||||
|
|
||||||
|
@property
|
||||||
|
def cooling_consumption(self):
|
||||||
|
return self._cooling_consumption
|
||||||
|
|
||||||
|
@property
|
||||||
|
def domestic_hot_water_consumption(self):
|
||||||
|
return self._domestic_hot_water_consumption
|
||||||
|
|
||||||
|
@property
|
||||||
|
def lighting_electrical_demand(self):
|
||||||
|
return self._lighting_electrical_demand
|
||||||
|
|
||||||
|
@property
|
||||||
|
def appliances_electrical_demand(self):
|
||||||
|
return self._appliances_electrical_demand
|
||||||
|
|
||||||
|
@property
|
||||||
|
def heating_peak_load(self):
|
||||||
|
return self._heating_peak_load
|
||||||
|
|
||||||
|
@property
|
||||||
|
def cooling_peak_load(self):
|
||||||
|
return self._cooling_peak_load
|
||||||
|
|
||||||
|
@property
|
||||||
|
def onsite_electrical_production(self):
|
||||||
|
return self._onsite_electrical_production
|
||||||
|
|
||||||
|
@property
|
||||||
|
def energy_systems(self):
|
||||||
|
_energy_systems = []
|
||||||
|
for value in self._catalog_energy_systems:
|
||||||
|
demands = value[0]
|
||||||
|
fuel_type = value[1]
|
||||||
|
generic_generation_system = GenericGenerationSystem()
|
||||||
|
generic_generation_system.fuel_type = fuel_type
|
||||||
|
generation_system = GenerationSystem()
|
||||||
|
generation_system.generic_generation_system = generic_generation_system
|
||||||
|
energy_system = EnergySystem()
|
||||||
|
energy_system.generation_system = generation_system
|
||||||
|
energy_system.demand_types = demands
|
||||||
|
_energy_systems.append(energy_system)
|
||||||
|
return _energy_systems
|
170
hub_api/mockup/properties.py
Normal file
170
hub_api/mockup/properties.py
Normal file
|
@ -0,0 +1,170 @@
|
||||||
|
"""
|
||||||
|
Properties module to be used by mockup building
|
||||||
|
SPDX - License - Identifier: LGPL - 3.0 - or -later
|
||||||
|
Copyright © 2023 Concordia CERC group
|
||||||
|
Project Coder Pilar Monsalvete Alvarez de Uribarri pilar.monsalvete@concordia.ca
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
class EnergySystem:
|
||||||
|
"""
|
||||||
|
EnergySystem class
|
||||||
|
"""
|
||||||
|
def __init__(self):
|
||||||
|
self._generation_system = None
|
||||||
|
self._demand_types = None
|
||||||
|
|
||||||
|
@property
|
||||||
|
def generation_system(self):
|
||||||
|
return self._generation_system
|
||||||
|
|
||||||
|
@generation_system.setter
|
||||||
|
def generation_system(self, value):
|
||||||
|
self._generation_system = value
|
||||||
|
|
||||||
|
@property
|
||||||
|
def demand_types(self):
|
||||||
|
return self._demand_types
|
||||||
|
|
||||||
|
@demand_types.setter
|
||||||
|
def demand_types(self, value):
|
||||||
|
self._demand_types = value
|
||||||
|
|
||||||
|
|
||||||
|
class GenerationSystem:
|
||||||
|
"""
|
||||||
|
GenerationSystem class
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
self._generic_generation_system = None
|
||||||
|
|
||||||
|
@property
|
||||||
|
def generic_generation_system(self):
|
||||||
|
return self._generic_generation_system
|
||||||
|
|
||||||
|
@generic_generation_system.setter
|
||||||
|
def generic_generation_system(self, value):
|
||||||
|
self._generic_generation_system = value
|
||||||
|
|
||||||
|
|
||||||
|
class GenericGenerationSystem:
|
||||||
|
"""
|
||||||
|
GenericGenerationSystem class
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
self._fuel_type = None
|
||||||
|
|
||||||
|
@property
|
||||||
|
def fuel_type(self):
|
||||||
|
return self._fuel_type
|
||||||
|
|
||||||
|
@fuel_type.setter
|
||||||
|
def fuel_type(self, value):
|
||||||
|
self._fuel_type = value
|
||||||
|
|
||||||
|
|
||||||
|
class ThermalZone:
|
||||||
|
"""
|
||||||
|
ThermalZone class
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
self._thermal_boundaries = None
|
||||||
|
self._total_floor_area = None
|
||||||
|
|
||||||
|
@property
|
||||||
|
def thermal_boundaries(self):
|
||||||
|
return self._thermal_boundaries
|
||||||
|
|
||||||
|
@thermal_boundaries.setter
|
||||||
|
def thermal_boundaries(self, value):
|
||||||
|
self._thermal_boundaries = value
|
||||||
|
|
||||||
|
@property
|
||||||
|
def total_floor_area(self):
|
||||||
|
return self._total_floor_area
|
||||||
|
|
||||||
|
@total_floor_area.setter
|
||||||
|
def total_floor_area(self, value):
|
||||||
|
self._total_floor_area = value
|
||||||
|
|
||||||
|
|
||||||
|
class ThermalBoundary:
|
||||||
|
"""
|
||||||
|
ThermalBoundary class
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
self._type = None
|
||||||
|
self._opaque_area = None
|
||||||
|
self._window_ratio = None
|
||||||
|
|
||||||
|
@property
|
||||||
|
def type(self):
|
||||||
|
return self._type
|
||||||
|
|
||||||
|
@type.setter
|
||||||
|
def type(self, value):
|
||||||
|
self._type = value
|
||||||
|
|
||||||
|
@property
|
||||||
|
def opaque_area(self):
|
||||||
|
return self._opaque_area
|
||||||
|
|
||||||
|
@opaque_area.setter
|
||||||
|
def opaque_area(self, value):
|
||||||
|
self._opaque_area = value
|
||||||
|
|
||||||
|
@property
|
||||||
|
def window_ratio(self):
|
||||||
|
return self._window_ratio
|
||||||
|
|
||||||
|
@window_ratio.setter
|
||||||
|
def window_ratio(self, value):
|
||||||
|
self._window_ratio = value
|
||||||
|
|
||||||
|
|
||||||
|
class Roof:
|
||||||
|
"""
|
||||||
|
Roof class
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
self._solid_polygon = None
|
||||||
|
self._solar_collectors_area_reduction_factor = None
|
||||||
|
|
||||||
|
@property
|
||||||
|
def solid_polygon(self):
|
||||||
|
return self._solid_polygon
|
||||||
|
|
||||||
|
@solid_polygon.setter
|
||||||
|
def solid_polygon(self, value):
|
||||||
|
self._solid_polygon = value
|
||||||
|
|
||||||
|
@property
|
||||||
|
def solar_collectors_area_reduction_factor(self):
|
||||||
|
return self._solar_collectors_area_reduction_factor
|
||||||
|
|
||||||
|
@solar_collectors_area_reduction_factor.setter
|
||||||
|
def solar_collectors_area_reduction_factor(self, value):
|
||||||
|
self._solar_collectors_area_reduction_factor = value
|
||||||
|
|
||||||
|
|
||||||
|
class Polygon:
|
||||||
|
"""
|
||||||
|
Polygon class
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
self._area = None
|
||||||
|
|
||||||
|
@property
|
||||||
|
def area(self):
|
||||||
|
return self._area
|
||||||
|
|
||||||
|
@area.setter
|
||||||
|
def area(self, value):
|
||||||
|
self._area = value
|
||||||
|
|
Loading…
Reference in New Issue
Block a user