Incorporated reposition costs in all scenarios (0,1,2,3)

This commit is contained in:
Oriol Gavalda 2023-04-25 21:00:19 -04:00
parent 9c3e9641a8
commit d4de6cc471
2 changed files with 54 additions and 9 deletions

View File

@ -77,17 +77,62 @@ class LifeCycleCosts:
if self._retrofitting_scenario == 2 or self._retrofitting_scenario == 3: if self._retrofitting_scenario == 2 or self._retrofitting_scenario == 3:
chapter = chapters.chapter('D_services') chapter = chapters.chapter('D_services')
capital_cost_pv = surface_roof * factor_pv * chapter.item('D301010_photovoltaic_system').initial_investment[0] capital_cost_pv = surface_roof * factor_pv * chapter.item('D301010_photovoltaic_system').initial_investment[0]
reposition_cost_PV = 0
for year in range(1, self._number_of_years + 1):
costs_increase = math.pow(1 + self._consumer_price_index, year) / math.pow(1 + self._discount_rate, year)
if (year % chapter.item('D301010_photovoltaic_system').lifetime) == 0:
reposition_cost_PV += surface_roof * factor_pv * chapter.item('D301010_photovoltaic_system').reposition[
0] * costs_increase
capital_cost_heating_equipment = total_floor_area * factor_heating_power * chapter.item('D3020_heat_generating_systems').initial_investment[0] capital_cost_heating_equipment = total_floor_area * factor_heating_power * chapter.item('D3020_heat_generating_systems').initial_investment[0]
capital_cost_cooling_equipment = total_floor_area * factor_cooling_power * chapter.item('D3030_cooling_generation_systems').initial_investment[0] capital_cost_cooling_equipment = total_floor_area * factor_cooling_power * chapter.item('D3030_cooling_generation_systems').initial_investment[0]
capital_cost_distribution_equipment = total_floor_area * factor_cooling_power * chapter.item('D3040_distribution_systems').initial_investment[0] capital_cost_distribution_equipment = total_floor_area * factor_cooling_power * chapter.item('D3040_distribution_systems').initial_investment[0]
capital_cost_other_hvac_ahu = total_floor_area * factor_cooling_power * chapter.item('D3080_other_hvac_ahu').initial_investment[0] capital_cost_other_hvac_ahu = total_floor_area * factor_cooling_power * chapter.item('D3080_other_hvac_ahu').initial_investment[0]
capital_cost_lighting = total_floor_area * factor_pv * chapter.item('D5020_lighting_and_branch_wiring').initial_investment[0] capital_cost_lighting = total_floor_area * factor_pv * chapter.item('D5020_lighting_and_branch_wiring').initial_investment[0]
capital_cost_services=capital_cost_pv+capital_cost_heating_equipment+capital_cost_cooling_equipment+capital_cost_distribution_equipment+capital_cost_other_hvac_ahu+capital_cost_lighting capital_cost_services=capital_cost_pv+capital_cost_heating_equipment+capital_cost_cooling_equipment+capital_cost_distribution_equipment+capital_cost_other_hvac_ahu+capital_cost_lighting
capital_cost_subtotal = capital_cost_skin + capital_cost_services reposition_cost_heating_equipment = 0
capital_cost_total= capital_cost_subtotal*(1+chapters.design_allowance)*(1+chapters.overhead_and_profit) reposition_cost_cooling_equipment = 0
reposition_cost_lighting = 0
reposition_cost_hvac_ahu = 0
capital_cost_pv = 0
reposition_cost_PV = 0
return capital_cost_total for year in range(1, self._number_of_years + 1):
chapter = chapters.chapter('D_services')
costs_increase = math.pow(1 + self._consumer_price_index, year) / math.pow(1 + self._discount_rate, year)
if (year % chapter.item('D3020_heat_generating_systems').lifetime) == 0:
reposition_cost_heating_equipment = total_floor_area * factor_heating_power * \
chapter.item('D3020_heat_generating_systems').reposition[
0] * costs_increase
if (year % chapter.item('D3030_cooling_generation_systems').lifetime) == 0:
reposition_cost_cooling_equipment = total_floor_area * factor_cooling_power * \
chapter.item('D3030_cooling_generation_systems').reposition[
0] * costs_increase
if (year % chapter.item('D3080_other_hvac_ahu').lifetime) == 0:
reposition_cost_hvac_ahu = total_floor_area * factor_cooling_power * \
chapter.item('D3080_other_hvac_ahu').reposition[
0] * costs_increase
if (year % chapter.item('D5020_lighting_and_branch_wiring').lifetime) == 0:
reposition_cost_lighting = total_floor_area * chapter.item('D5020_lighting_and_branch_wiring').reposition[
0] * costs_increase
capital_cost_subtotal = capital_cost_skin + capital_cost_services
capital_cost_total = capital_cost_subtotal*(1+chapters.design_allowance)*(1+chapters.overhead_and_profit)
reposition_cost_subtotal = reposition_cost_PV + reposition_cost_heating_equipment + reposition_cost_cooling_equipment + reposition_cost_hvac_ahu + reposition_cost_hvac_ahu + reposition_cost_lighting
reposition_cost_total = reposition_cost_subtotal * (1+chapters.design_allowance)*(1+chapters.overhead_and_profit)
life_cycle_cost_capital_total = capital_cost_total + reposition_cost_total
return life_cycle_cost_capital_total
@staticmethod @staticmethod
def _search_archetype(costs_catalog, function): def _search_archetype(costs_catalog, function):
costs_archetypes = costs_catalog.entries('archetypes').archetypes costs_archetypes = costs_catalog.entries('archetypes').archetypes
@ -155,11 +200,11 @@ class LifeCycleCosts:
cooling_demand= 10 * total_floor_area cooling_demand= 10 * total_floor_area
if self._retrofitting_scenario==2 or self._retrofitting_scenario==3: if self._retrofitting_scenario==2 or self._retrofitting_scenario==3:
heating_SCOP=1 heating_SCOP=3
cooling_SEER=2.8 cooling_SEER=4.5
else: else:
heating_SCOP = 2.5 heating_SCOP = 1
cooling_SEER = 4 cooling_SEER = 2
electricity_heating=heating_demand/heating_SCOP electricity_heating=heating_demand/heating_SCOP
electricity_cooling=cooling_demand/cooling_SEER electricity_cooling=cooling_demand/cooling_SEER

View File

@ -34,11 +34,11 @@ ConstructionFactory('nrcan', city).enrich()
print('enrich constructions... done') print('enrich constructions... done')
number_of_years = 30 number_of_years = 30
consumer_price_index = 0.04 consumer_price_index = 0.04
discount_rate = 0.06 discount_rate = 0.03
#retrofitting_scenario = 2 #retrofitting_scenario = 2
catalog = CostCatalogFactory('montreal_custom').catalog catalog = CostCatalogFactory('montreal_custom').catalog
for i in range(1,4) : for i in range(0,4) :
for building in city.buildings: for building in city.buildings:
lcc = LifeCycleCosts(building, catalog, number_of_years, consumer_price_index, discount_rate, i) lcc = LifeCycleCosts(building, catalog, number_of_years, consumer_price_index, discount_rate, i)
total_capital_costs = lcc.calculate_capital_costs() total_capital_costs = lcc.calculate_capital_costs()