40 lines
1.2 KiB
Python
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()
|