diff --git a/hub/catalog_factories/energy_systems/montreal_future_system_catalogue.py b/hub/catalog_factories/energy_systems/montreal_future_system_catalogue.py index 4a9672ad..6c5678f0 100644 --- a/hub/catalog_factories/energy_systems/montreal_future_system_catalogue.py +++ b/hub/catalog_factories/energy_systems/montreal_future_system_catalogue.py @@ -30,7 +30,8 @@ class MontrealFutureSystemCatalogue(Catalog): path = str(path / 'montreal_future_systems.xml') with open(path, 'r', encoding='utf-8') as xml: self._archetypes = xmltodict.parse(xml.read(), - force_list=['pv_generation_component', 'templateStorages', 'demand']) + force_list=['pv_generation_component', 'templateStorages', 'demand', + 'system', 'system_id']) self._storage_components = self._load_storage_components() self._generation_components = self._load_generation_components() @@ -49,7 +50,7 @@ class MontrealFutureSystemCatalogue(Catalog): 'non_pv_generation_component'] if non_pv_generation_components is not None: for non_pv in non_pv_generation_components: - system_id = non_pv['system_id'] + system_id = non_pv['generation_system_id'] name = non_pv['name'] system_type = non_pv['system_type'] model_name = non_pv['model_name'] @@ -181,7 +182,7 @@ class MontrealFutureSystemCatalogue(Catalog): 'pv_generation_component'] if pv_generation_components is not None: for pv in pv_generation_components: - system_id = pv['system_id'] + system_id = pv['generation_system_id'] name = pv['name'] system_type = pv['system_type'] model_name = pv['model_name'] diff --git a/hub/data/energy_systems/montreal_future_systems.xml b/hub/data/energy_systems/montreal_future_systems.xml index e85ad3fb..12f5130e 100644 --- a/hub/data/energy_systems/montreal_future_systems.xml +++ b/hub/data/energy_systems/montreal_future_systems.xml @@ -17,7 +17,7 @@ - 1 + 1 Natural-Gas Boiler boiler ALP080B @@ -56,7 +56,7 @@ False - 2 + 2 Natural-Gas boiler boiler ALP105B @@ -95,7 +95,7 @@ False - 3 + 3 Natural-Gas boiler boiler ALP150B @@ -134,7 +134,7 @@ False - 4 + 4 Natural-Gas boiler boiler ALP210B @@ -173,7 +173,7 @@ False - 5 + 5 Natural-Gas boiler boiler ALTAC-136 @@ -212,7 +212,7 @@ False - 6 + 6 Natural-Gas boiler boiler ALTA-120 @@ -251,7 +251,7 @@ False - 7 + 7 Natural-Gas boiler boiler ASPN-085 @@ -290,7 +290,7 @@ False - 8 + 8 Natural-Gas boiler boiler ASPN-110 @@ -329,7 +329,7 @@ False - 9 + 9 Natural-Gas boiler boiler ASPNC-155 @@ -368,7 +368,7 @@ False - 10 + 10 Natural-Gas boiler boiler K2WTC-135B @@ -407,7 +407,7 @@ False - 11 + 11 Natural-Gas boiler boiler K2WTC-180B @@ -446,27 +446,27 @@ False - 12 + 12 Photovoltaic Module photovoltaic 445MS Canadian Solar - - - - - - - - - + 332 + 0.201 + 20 + 40 + 800 + 25 + 1000 + 445 + 0.35 2.01 1.048 - 13 + 13 Air-to-Water heat pump heat pump CMAA 012 @@ -511,7 +511,7 @@ False - 14 + 14 Air-to-Water heat pump heat pump CMAA 70 @@ -556,7 +556,7 @@ False - 15 + 15 Air-to-Water heat pump heat pump CMAA 140 @@ -601,7 +601,7 @@ False - 16 + 16 template Natural-Gas boiler boiler @@ -642,7 +642,7 @@ False - 17 + 17 template Electric boiler boiler @@ -683,7 +683,7 @@ False - 18 + 18 template reversible 4-pipe air-to-water heat pump with storage heat pump @@ -736,7 +736,7 @@ True - 19 + 19 template reversible 4-pipe groundwater-to-water heat pump with storage heat pump @@ -777,7 +777,7 @@ True - 20 + 20 template reversible 4-pipe water-to-water heat pump with storage heat pump @@ -818,7 +818,7 @@ False - 21 + 21 template Natural-Gas boiler boiler @@ -857,7 +857,7 @@ False - 22 + 22 template Electric boiler boiler @@ -896,7 +896,7 @@ False - 23 + 23 template reversible 4-pipe air-to-water heat pump heat pump @@ -947,7 +947,7 @@ True - 24 + 24 template reversible 4-pipe groundwater-to-water heat pump heat pump @@ -986,7 +986,7 @@ True - 25 + 25 template reversible 4-pipe water-to-water heat pump heat pump @@ -1025,7 +1025,7 @@ True - 26 + 26 template reversible 2-pipe air-to-water heat pump with storage heat pump @@ -1078,7 +1078,7 @@ False - 27 + 27 template reversible 2-pipe groundwater-to-water heat pump with storage heat pump @@ -1119,7 +1119,7 @@ False - 28 + 28 template reversible 2-pipe water-to-water heat pump with storage heat pump @@ -1160,7 +1160,7 @@ False - 29 + 29 template reversible 2-pipe air-to-water heat pump heat pump @@ -1211,7 +1211,7 @@ False - 30 + 30 template reversible 2-pipe groundwater-to-water heat pump heat pump @@ -1250,7 +1250,7 @@ False - 31 + 31 template reversible 2-pipe water-to-water heat pump heat pump @@ -1289,7 +1289,7 @@ False - 32 + 32 template air-to-water heating heat pump heat pump @@ -1334,7 +1334,7 @@ False - 33 + 33 template groundwater-to-water heating heat pump heat pump @@ -1373,7 +1373,7 @@ False - 34 + 34 template water-to-water heating heat pump heat pump @@ -1412,7 +1412,7 @@ False - 35 + 35 template unitary split system heat pump @@ -1457,7 +1457,7 @@ False - 36 + 36 template domestic hot water heat pump heat pump @@ -1503,8 +1503,125 @@ False + + 37 + template gas furnace + furnace + + + + + + 0.85 + + natural gas + + + + + + + + + + + + + + + + + + + + + + + + + + False + + + 38 + template electrical furnace + furnace + + + + + + 0.85 + + electricity + + + + + + + + + + + + + + + + + + + + + + + + + + False + + + 39 + template air cooled DX with external condenser + cooler + + + + + + + + electricity + + + + + + 3.23 + + + + + + + + + + + + + + + + + + + + False + - 37 + 40 template Photovoltaic Module photovoltaic @@ -1525,7 +1642,7 @@ False - 38 + 41 Photovoltaic Module photovoltaic RE400CAA Pure 2 @@ -1546,7 +1663,7 @@ False - 39 + 42 Photovoltaic Module photovoltaic RE410CAA Pure 2 @@ -1567,7 +1684,7 @@ False - 40 + 43 Photovoltaic Module photovoltaic RE420CAA Pure 2 @@ -1588,7 +1705,7 @@ False - 41 + 44 Photovoltaic Module photovoltaic RE430CAA Pure 2 @@ -1609,7 +1726,7 @@ False - 42 + 45 Photovoltaic Module photovoltaic REC600AA Pro M @@ -1630,7 +1747,7 @@ False - 43 + 46 Photovoltaic Module photovoltaic REC610AA Pro M @@ -1651,7 +1768,7 @@ False - 44 + 47 Photovoltaic Module photovoltaic REC620AA Pro M @@ -1672,7 +1789,7 @@ False - 45 + 48 Photovoltaic Module photovoltaic REC630AA Pro M @@ -1693,7 +1810,7 @@ False - 46 + 49 Photovoltaic Module photovoltaic REC640AA Pro M @@ -1939,7 +2056,7 @@ electricity - 37 + 40 @@ -2223,11 +2340,186 @@ 36 + + 25 + Unitary air conditioner with baseboard heater fuel fired boiler + schemas/ASHP+TES+GasBoiler.jpg + + heating + domestic_hot_water + + + 21 + + + + 26 + Unitary air conditioner with baseboard heater electrical boiler + schemas/ASHP+TES+GasBoiler.jpg + + heating + domestic_hot_water + + + 22 + + + + 27 + 4 pipe fan coils with fuel fired boiler + schemas/ASHP+TES+GasBoiler.jpg + + heating + domestic_hot_water + + + 21 + + + + 28 + 4 pipe fan coils with electrical resistance water boiler + schemas/ASHP+TES+GasBoiler.jpg + + heating + domestic_hot_water + + + 21 + + + + 29 + Single zone packaged rooftop unit with fuel-fired furnace and baseboards and fuel boiler for acs + schemas/ASHP+TES+GasBoiler.jpg + + heating + domestic_hot_water + + + 37 + + + + 30 + Single zone packaged rooftop unit with electrical resistance furnace and baseboards and fuel boiler for acs + schemas/ASHP+TES+GasBoiler.jpg + + heating + domestic_hot_water + + + 38 + + + + 31 + Single zone make-up air unit with baseboard heating with fuel fired boiler + schemas/ASHP+TES+GasBoiler.jpg + + heating + domestic_hot_water + + + 21 + + + + 32 + Single zone make-up air unit with electrical baseboard heating and DHW with resistance + schemas/ASHP+TES+GasBoiler.jpg + + heating + domestic_hot_water + + + 22 + + + + 33 + Multi-zone built-up system with baseboard heater hydronic with fuel fired boiler + schemas/ASHP+TES+GasBoiler.jpg + + heating + domestic_hot_water + + + 21 + + + + 34 + Multi-zone built-up system with electrical baseboard heater and electrical hot water + schemas/ASHP+TES+GasBoiler.jpg + + heating + domestic_hot_water + + + 22 + + + + 35 + Unitary air conditioner air cooled DX with external condenser + schemas/ASHP+TES+GasBoiler.jpg + + cooling + + + 39 + + + + 36 + 4 pipe fan coils with water cooled, water chiller + schemas/ASHP+TES+GasBoiler.jpg + + cooling + + + 39 + + + + 37 + Single zone packaged rooftop unit with air cooled DX + schemas/ASHP+TES+GasBoiler.jpg + + cooling + + + 39 + + + + 38 + Single zone make-up air unit with air cooled DX + schemas/ASHP+TES+GasBoiler.jpg + + cooling + + + 39 + + + + 39 + Multi-zone built-up system with water cooled, water chiller + schemas/ASHP+TES+GasBoiler.jpg + + cooling + + + 39 + + - Central Hydronic Air and Gas Source Heating System with Unitary Split Cooling and Air Source HP DHW and PV + Central Hydronic Air and Gas Source Heating System with Unitary Split Cooling and Air Source HP DHW and Grid Tied PV 1 11 @@ -2236,16 +2528,16 @@ - Central Hydronic Air and Electricity Source Heating System with Unitary Split Cooling and Air Source HP DHW and PV + Central Hydronic Air and Electricity Source Heating System with Unitary Split Cooling and Air Source HP DHW and Grid Tied PV 1 12 23 - 8 + 24 - Central Hydronic Ground and Gas Source Heating System with Unitary Split Cooling and Air Source HP DHW and PV + Central Hydronic Ground and Gas Source Heating System with Unitary Split Cooling and Air Source HP DHW and Grid Tied PV 1 13 @@ -2254,7 +2546,7 @@ - Central Hydronic Ground and Electricity Source Heating System with Unitary Split Cooling and Air Source HP DHW and PV + Central Hydronic Ground and Electricity Source Heating System with Unitary Split Cooling and Air Source HP DHW and Grid Tied PV 1 14 @@ -2263,7 +2555,7 @@ - Central Hydronic Water and Gas Source Heating System with Unitary Split Cooling and Air Source HP DHW and PV + Central Hydronic Water and Gas Source Heating System with Unitary Split Cooling and Air Source HP DHW and Grid Tied PV 1 15 @@ -2272,7 +2564,7 @@ - Central Hydronic Water and Electricity Source Heating System with Unitary Split Cooling and Air Source HP DHW and PV + Central Hydronic Water and Electricity Source Heating System with Unitary Split Cooling and Air Source HP DHW and Grid Tied PV 1 16 @@ -2329,11 +2621,165 @@ - Grid-Tied PV System + Grid Tied PV System 1 + + system 1 gas + + 25 + 35 + + + + system 1 gas grid tied pv + + 1 + 25 + 35 + + + + system 1 electricity + + 26 + 35 + + + + system 1 electricity grid tied pv + + 26 + 1 + 35 + + + + system 2 gas + + 27 + 36 + + + + system 2 gas grid tied pv + + 1 + 27 + 36 + + + + system 2 electricity + + 28 + 36 + + + + system 2 electricity grid tied pv + + 1 + 28 + 36 + + + + system 3 and 4 gas + + 29 + 37 + + + + system 3 and 4 gas grid tied pv + + 1 + 29 + 37 + + + + system 3 and 4 electricity + + 30 + 37 + + + + system 3 and 4 electricity grid tied pv + + 30 + 37 + 1 + + + + system 6 gas + + 33 + 39 + + + + system 6 gas grid tied pv + + 33 + 39 + 1 + + + + system 6 electricity + + 34 + 39 + + + + system 6 electricity grid tied pv + + 34 + 39 + 1 + + + + system 7 electricity grid tied pv + + 1 + 8 + 24 + + + + system 8 gas + + 25 + + + + system 8 gas grid tied pv + + 25 + 1 + + + + system 8 electricity + + 26 + + + + system 8 electricity grid tied pv + + 26 + 1 + + diff --git a/hub/helpers/constants.py b/hub/helpers/constants.py index f345b4f0..fda9a4e3 100644 --- a/hub/helpers/constants.py +++ b/hub/helpers/constants.py @@ -304,6 +304,7 @@ GRID = 'Grid' ONSITE_ELECTRICITY = 'Onsite Electricity' PHOTOVOLTAIC = 'Photovoltaic' BOILER = 'Boiler' +FURNACE = 'Furnace' HEAT_PUMP = 'Heat Pump' BASEBOARD = 'Baseboard' ELECTRICITY_GENERATOR = 'Electricity generator' diff --git a/hub/helpers/data/montreal_generation_system_to_hub_energy_generation_system.py b/hub/helpers/data/montreal_generation_system_to_hub_energy_generation_system.py index 163f74df..7d4d4db1 100644 --- a/hub/helpers/data/montreal_generation_system_to_hub_energy_generation_system.py +++ b/hub/helpers/data/montreal_generation_system_to_hub_energy_generation_system.py @@ -15,7 +15,7 @@ class MontrealGenerationSystemToHubEnergyGenerationSystem: def __init__(self): self._dictionary = { 'boiler': cte.BOILER, - 'furnace': cte.BASEBOARD, + 'furnace': cte.FURNACE, 'cooler': cte.CHILLER, 'electricity generator': cte.ELECTRICITY_GENERATOR, 'photovoltaic': cte.PHOTOVOLTAIC, diff --git a/tests/test_systems_catalog.py b/tests/test_systems_catalog.py index b8011ea6..45e58453 100644 --- a/tests/test_systems_catalog.py +++ b/tests/test_systems_catalog.py @@ -39,11 +39,11 @@ class TestSystemsCatalog(TestCase): catalog_categories = catalog.names() archetypes = catalog.names() - self.assertEqual(13, len(archetypes['archetypes'])) + self.assertEqual(34, len(archetypes['archetypes'])) systems = catalog.names('systems') - self.assertEqual(24, len(systems['systems'])) + self.assertEqual(39, len(systems['systems'])) generation_equipments = catalog.names('generation_equipments') - self.assertEqual(46, len(generation_equipments['generation_equipments'])) + self.assertEqual(49, len(generation_equipments['generation_equipments'])) with self.assertRaises(ValueError): catalog.names('unknown') @@ -55,6 +55,7 @@ class TestSystemsCatalog(TestCase): with self.assertRaises(IndexError): catalog.get_entry('unknown') + def test_palma_catalog(self): catalog = EnergySystemsCatalogFactory('palma').catalog catalog_categories = catalog.names() diff --git a/tests/test_systems_factory.py b/tests/test_systems_factory.py index 26c2534d..e0ce412d 100644 --- a/tests/test_systems_factory.py +++ b/tests/test_systems_factory.py @@ -115,7 +115,7 @@ class TestSystemsFactory(TestCase): for building in self._city.buildings: building.energy_systems_archetype_name = ('Central Hydronic Air and Gas Source Heating System with Unitary Split ' - 'Cooling and Air Source HP DHW and PV') + 'Cooling and Air Source HP DHW and Grid Tied PV') EnergySystemsFactory('montreal_future', self._city).enrich() # Need to assign energy systems to buildings: for building in self._city.buildings: @@ -132,7 +132,8 @@ class TestSystemsFactory(TestCase): self.assertLess(0, building.heating_consumption[cte.YEAR][0]) self.assertLess(0, building.cooling_consumption[cte.YEAR][0]) self.assertLess(0, building.domestic_hot_water_consumption[cte.YEAR][0]) - self.assertLess(0, building.onsite_electrical_production[cte.YEAR][0]) + if 'PV' in building.energy_systems_archetype_name: + self.assertLess(0, building.onsite_electrical_production[cte.YEAR][0]) def test_palma_system_results(self): """