costs_workflow/costs/cost_base.py
2023-07-17 15:18:32 -04:00

40 lines
1.2 KiB
Python

"""
Cost base module
"""
from hub.city_model_structure.building import Building
from hub.helpers.dictionaries import Dictionaries
from costs.configuration import Configuration
class CostBase:
"""
Abstract base class for the costs
"""
def __init__(self, building: Building, configuration: Configuration):
self._building = building
self._configuration = configuration
self._total_floor_area = 0
for internal_zone in building.internal_zones:
for thermal_zone in internal_zone.thermal_zones:
self._total_floor_area += thermal_zone.total_floor_area
self._archetype = None
for archetype in self._configuration.costs_catalog.entries().archetypes:
if str(building.function) == configuration.dictionary[str(archetype.function)]:
self._archetype = archetype
self._capital_costs_chapter = self._archetype.capital_cost
break
if not self._archetype:
raise KeyError(f'archetype not found for function {building.function}')
self._capital_costs_chapter = None
self._rng = range(configuration.number_of_years)
def calculate(self):
"""
Raises not implemented exception
"""
raise NotImplementedError()