costs_workflow/costs/cost_base.py

38 lines
1.1 KiB
Python
Raw Normal View History

2023-07-14 16:39:47 -04:00
"""
Cost base module
"""
from hub.city_model_structure.building import Building
2023-07-17 14:35:12 -04:00
from costs.configuration import Configuration
2023-07-14 16:39:47 -04:00
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.cost_catalog.entries('archetypes').archetype:
if str(building.function) == str(archetype.function):
self._archetype = archetype
self._capital_costs_chapter = self._archetype.capital_cost
break
if not self._archetype:
raise KeyError('archetype not found')
self._capital_costs_chapter = None
self._rng = range(configuration.number_of_years)
def calculate(self):
"""
Raises not implemented exception
"""
raise NotImplementedError()