""" Construction helper SPDX - License - Identifier: LGPL - 3.0 - or -later Copyright © 2020 Project Author Pilar Monsalvete Alvarez de Uribarri pilar.monsalvete@concordia.ca """ import sys class ConstructionHelper: # NREL function_to_nrel = { 'residential': 'residential', 'single family house': 'single family house', 'multifamily house': 'multifamily house', 'hotel': 'hotel', 'hospital': 'hospital', 'outpatient': 'outpatient', 'commercial': 'commercial', 'strip mall': 'strip mall', 'warehouse': 'warehouse', 'primary school': 'primary school', 'secondary school': 'secondary school', 'office': 'office', 'large office': 'large office' } nrel_function_default_value = 'residential' nrel_standards = { 'ASHRAE Std189': 1, 'ASHRAE 90.1_2004': 2 } reference_city_to_nrel_climate_zone = { 'Miami': 'ASHRAE_2004:1A', 'Houston': 'ASHRAE_2004:2A', 'Phoenix': 'ASHRAE_2004:2B', 'Atlanta': 'ASHRAE_2004:3A', 'Los Angeles': 'ASHRAE_2004:3B', 'Las Vegas': 'ASHRAE_2004:3B', 'San Francisco': 'ASHRAE_2004:3C', 'Baltimore': 'ASHRAE_2004:4A', 'Albuquerque': 'ASHRAE_2004:4B', 'Seattle': 'ASHRAE_2004:4C', 'Chicago': 'ASHRAE_2004:5A', 'Boulder': 'ASHRAE_2004:5B', 'Minneapolis': 'ASHRAE_2004:6A', 'Helena': 'ASHRAE_2004:6B', 'Duluth': 'ASHRAE_2004:7A', 'Fairbanks': 'ASHRAE_2004:8A' } nrel_window_types = ['window', 'door', 'skylight'] # todo: review with the same idea, to define a internal set and do the conversion to NREL nrel_construction_types = { 'Wall': 'exterior wall', 'interior wall': 'interior wall', 'ground wall': 'ground wall', 'Ground': 'exterior slab', 'attic floor': 'attic floor', 'interior slab': 'interior slab', 'Roof': 'roof' } # NRCAN function_to_nrcan = { 'residential': 'residential', 'single family house': 'single family house', 'multifamily house': 'multifamily house', 'hotel': 'hotel', 'hospital': 'hospital', 'outpatient': 'outpatient', 'commercial': 'commercial', 'strip mall': 'strip mall', 'warehouse': 'warehouse', 'primary school': 'primary school', 'secondary school': 'secondary school', 'office': 'office', 'large office': 'large office' } nrcan_function_default_value = 'residential' nrcan_window_types = ['window'] # todo: review with the same idea, to define a internal set and do the conversion to NREL nrcan_construction_types = { 'Wall': 'wall', 'ground wall': 'basement_wall', 'Ground': 'floor', 'attic floor': 'attic floor', 'interior slab': 'interior slab', 'Roof': 'roof' } @staticmethod def nrel_from_function(function): """ Get NREL function from the given internal function key :param function: str :return: str """ try: return ConstructionHelper.function_to_nrel[function] except KeyError: sys.stderr.write('Error: keyword not found. Returned default NREL function "residential"\n') return ConstructionHelper.nrel_function_default_value @staticmethod def yoc_to_nrel_standard(year_of_construction): """ Year of construction to NREL standard :param year_of_construction: int :return: str """ if int(year_of_construction) < 2009: standard = 'ASHRAE 90.1_2004' else: standard = 'ASHRAE 189.1_2009' return standard @staticmethod def city_to_reference_city(city): """ City name to reference city :param city: str :return: str """ # ToDo: Dummy function that needs to be implemented reference_city = 'Baltimore' if city is not None: reference_city = 'Baltimore' return reference_city @staticmethod def city_to_nrel_climate_zone(city): """ City name to NREL climate zone :param city: str :return: str """ reference_city = ConstructionHelper.city_to_reference_city(city) return ConstructionHelper.reference_city_to_nrel_climate_zone[reference_city] @staticmethod def nrcan_from_function(function): """ Get NREL function from the given internal function key :param function: str :return: str """ try: return ConstructionHelper.function_to_nrcan[function] except KeyError: sys.stderr.write('Error: keyword not found. Returned default NRCAN function "residential"\n') return ConstructionHelper.nrcan_function_default_value