updated usages in dictionary to reduce not recognized archetypes
This commit is contained in:
parent
6c8fc2ba9e
commit
4082a20638
|
@ -36,21 +36,21 @@ class HubUsageToNrcanUsage:
|
||||||
cte.LABORATORY_AND_RESEARCH_CENTER: 'School/university',
|
cte.LABORATORY_AND_RESEARCH_CENTER: 'School/university',
|
||||||
cte.STAND_ALONE_RETAIL: 'Retail area',
|
cte.STAND_ALONE_RETAIL: 'Retail area',
|
||||||
cte.HOSPITAL: 'Hospital',
|
cte.HOSPITAL: 'Hospital',
|
||||||
cte.OUT_PATIENT_HEALTH_CARE: 'Health-care clinic',
|
cte.OUT_PATIENT_HEALTH_CARE: 'Health care clinic',
|
||||||
cte.HEALTH_CARE: 'Health-care clinic',
|
cte.HEALTH_CARE: 'Health care clinic',
|
||||||
cte.RETIREMENT_HOME_OR_ORPHANAGE: 'Health-care clinic',
|
cte.RETIREMENT_HOME_OR_ORPHANAGE: 'Health care clinic',
|
||||||
cte.COMMERCIAL: 'Retail area',
|
cte.COMMERCIAL: 'Retail area',
|
||||||
cte.STRIP_MALL: 'Retail area',
|
cte.STRIP_MALL: 'Retail area',
|
||||||
cte.SUPERMARKET: 'Retail area',
|
cte.SUPERMARKET: 'Retail area',
|
||||||
cte.RETAIL_SHOP_WITHOUT_REFRIGERATED_FOOD: 'Retail area',
|
cte.RETAIL_SHOP_WITHOUT_REFRIGERATED_FOOD: 'Retail area',
|
||||||
cte.RETAIL_SHOP_WITH_REFRIGERATED_FOOD: 'Retail area',
|
cte.RETAIL_SHOP_WITH_REFRIGERATED_FOOD: 'Retail area',
|
||||||
cte.RESTAURANT: 'Dining - bar/lounge',
|
cte.RESTAURANT: 'Dining - bar lounge/leisure',
|
||||||
cte.QUICK_SERVICE_RESTAURANT: 'Dining - cafeteria',
|
cte.QUICK_SERVICE_RESTAURANT: 'Dining - cafeteria/fast food',
|
||||||
cte.FULL_SERVICE_RESTAURANT: 'Dining - bar/lounge',
|
cte.FULL_SERVICE_RESTAURANT: 'Dining - bar lounge/leisure',
|
||||||
cte.HOTEL: 'Hotel',
|
cte.HOTEL: 'Hotel/Motel',
|
||||||
cte.HOTEL_MEDIUM_CLASS: 'Motel',
|
cte.HOTEL_MEDIUM_CLASS: 'Hotel/Motel',
|
||||||
cte.SMALL_HOTEL: 'Motel',
|
cte.SMALL_HOTEL: 'Hotel/Motel',
|
||||||
cte.LARGE_HOTEL: 'Hotel',
|
cte.LARGE_HOTEL: 'Hotel/Motel',
|
||||||
cte.DORMITORY: 'Dormitory',
|
cte.DORMITORY: 'Dormitory',
|
||||||
cte.EVENT_LOCATION: 'Convention centre',
|
cte.EVENT_LOCATION: 'Convention centre',
|
||||||
cte.CONVENTION_CENTER: 'Convention centre',
|
cte.CONVENTION_CENTER: 'Convention centre',
|
||||||
|
@ -59,17 +59,17 @@ class HubUsageToNrcanUsage:
|
||||||
cte.INDUSTRY: 'Manufacturing facility',
|
cte.INDUSTRY: 'Manufacturing facility',
|
||||||
cte.WORKSHOP: 'Workshop',
|
cte.WORKSHOP: 'Workshop',
|
||||||
cte.WAREHOUSE: 'Warehouse',
|
cte.WAREHOUSE: 'Warehouse',
|
||||||
cte.WAREHOUSE_REFRIGERATED: 'Warehouse - refrigerated',
|
cte.WAREHOUSE_REFRIGERATED: 'Warehouse',
|
||||||
cte.SPORTS_LOCATION: 'Exercise centre',
|
cte.SPORTS_LOCATION: 'Exercise centre',
|
||||||
cte.SPORTS_ARENA: 'Sports arena',
|
cte.SPORTS_ARENA: 'Sports arena',
|
||||||
cte.GYMNASIUM: 'Gymnasium',
|
cte.GYMNASIUM: 'Gymnasium',
|
||||||
cte.MOTION_PICTURE_THEATRE: 'Motion picture theatre',
|
cte.MOTION_PICTURE_THEATRE: 'Motion picture theatre',
|
||||||
cte.MUSEUM: 'Museum',
|
cte.MUSEUM: 'Museum',
|
||||||
cte.PERFORMING_ARTS_THEATRE: 'Performing arts theatre',
|
cte.PERFORMING_ARTS_THEATRE: 'Performing arts theatre',
|
||||||
cte.TRANSPORTATION: 'Transportation',
|
cte.TRANSPORTATION: 'Transportation facility',
|
||||||
cte.AUTOMOTIVE_FACILITY: 'Automotive facility',
|
cte.AUTOMOTIVE_FACILITY: 'Automotive facility',
|
||||||
cte.PARKING_GARAGE: 'Parking garage',
|
cte.PARKING_GARAGE: 'Storage garage',
|
||||||
cte.RELIGIOUS: 'Religious',
|
cte.RELIGIOUS: 'Religious building',
|
||||||
cte.NON_HEATED: 'n/a'
|
cte.NON_HEATED: 'n/a'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -51,6 +51,9 @@ class TestUsageFactory(TestCase):
|
||||||
self.assertIsNotNone(building.walls, 'building walls is none')
|
self.assertIsNotNone(building.walls, 'building walls is none')
|
||||||
self.assertIsNotNone(building.roofs, 'building roofs is none')
|
self.assertIsNotNone(building.roofs, 'building roofs is none')
|
||||||
for internal_zone in building.internal_zones:
|
for internal_zone in building.internal_zones:
|
||||||
|
if internal_zone.usages is None:
|
||||||
|
print('non heated')
|
||||||
|
else:
|
||||||
self.assertTrue(len(internal_zone.usages) > 0, 'usage zones are not defined')
|
self.assertTrue(len(internal_zone.usages) > 0, 'usage zones are not defined')
|
||||||
self.assertIsNone(internal_zone.thermal_zones, 'thermal zones are defined')
|
self.assertIsNone(internal_zone.thermal_zones, 'thermal zones are defined')
|
||||||
self.assertIsNone(building.basement_heated, 'building basement_heated is not none')
|
self.assertIsNone(building.basement_heated, 'building basement_heated is not none')
|
||||||
|
@ -66,7 +69,6 @@ class TestUsageFactory(TestCase):
|
||||||
self.assertIsNotNone(building.roof_type, 'building roof type is none')
|
self.assertIsNotNone(building.roof_type, 'building roof type is none')
|
||||||
self.assertIsNotNone(building.floor_area, 'building floor_area is none')
|
self.assertIsNotNone(building.floor_area, 'building floor_area is none')
|
||||||
self.assertIsNone(building.households, 'building households is not none')
|
self.assertIsNone(building.households, 'building households is not none')
|
||||||
self.assertTrue(building.is_conditioned, 'building is not conditioned')
|
|
||||||
|
|
||||||
def _check_usage(self, usage):
|
def _check_usage(self, usage):
|
||||||
self.assertIsNotNone(usage.name, 'usage is none')
|
self.assertIsNotNone(usage.name, 'usage is none')
|
||||||
|
@ -128,3 +130,61 @@ class TestUsageFactory(TestCase):
|
||||||
self.assertIsNotNone(usage.domestic_hot_water.service_temperature,
|
self.assertIsNotNone(usage.domestic_hot_water.service_temperature,
|
||||||
'domestic hot water service temperature is none')
|
'domestic hot water service temperature is none')
|
||||||
self.assertIsNotNone(usage.domestic_hot_water.schedules, 'domestic hot water schedules is none')
|
self.assertIsNotNone(usage.domestic_hot_water.schedules, 'domestic hot water schedules is none')
|
||||||
|
|
||||||
|
def test_import_nrcan(self):
|
||||||
|
"""
|
||||||
|
Enrich the city with the usage information from nrcan and verify it
|
||||||
|
"""
|
||||||
|
file = 'selected_building.geojson'
|
||||||
|
file_path = (self._example_path / file).resolve()
|
||||||
|
city = GeometryFactory('geojson',
|
||||||
|
path=file_path,
|
||||||
|
height_field='building_height',
|
||||||
|
year_of_construction_field='ANNEE_CONS',
|
||||||
|
function_field='CODE_UTILI',
|
||||||
|
function_to_hub=Dictionaries().montreal_function_to_hub_function).city
|
||||||
|
|
||||||
|
UsageFactory('nrcan', city).enrich()
|
||||||
|
self._check_buildings(city)
|
||||||
|
for building in city.buildings:
|
||||||
|
for internal_zone in building.internal_zones:
|
||||||
|
if internal_zone.usages is None:
|
||||||
|
print('non heated')
|
||||||
|
else:
|
||||||
|
self.assertIsNot(len(internal_zone.usages), 0, 'no building usage defined')
|
||||||
|
for usage in internal_zone.usages:
|
||||||
|
self._check_usage(usage)
|
||||||
|
self.assertIsNotNone(usage.mechanical_air_change, 'mechanical air change is none')
|
||||||
|
self.assertIsNotNone(usage.thermal_control.heating_set_point_schedules,
|
||||||
|
'control heating set point schedule is none')
|
||||||
|
self.assertIsNotNone(usage.thermal_control.cooling_set_point_schedules,
|
||||||
|
'control cooling set point schedule is none')
|
||||||
|
self.assertIsNotNone(usage.occupancy, 'occupancy is none')
|
||||||
|
occupancy = usage.occupancy
|
||||||
|
self.assertIsNotNone(occupancy.occupancy_density, 'occupancy density is none')
|
||||||
|
self.assertIsNotNone(occupancy.latent_internal_gain, 'occupancy latent internal gain is none')
|
||||||
|
self.assertIsNotNone(occupancy.sensible_convective_internal_gain,
|
||||||
|
'occupancy sensible convective internal gain is none')
|
||||||
|
self.assertIsNotNone(occupancy.sensible_radiative_internal_gain,
|
||||||
|
'occupancy sensible radiant internal gain is none')
|
||||||
|
self.assertIsNotNone(occupancy.occupancy_schedules, 'occupancy schedule is none')
|
||||||
|
self.assertIsNotNone(usage.lighting, 'lighting is none')
|
||||||
|
lighting = usage.lighting
|
||||||
|
self.assertIsNotNone(lighting.density, 'lighting density is none')
|
||||||
|
self.assertIsNotNone(lighting.latent_fraction, 'lighting latent fraction is none')
|
||||||
|
self.assertIsNotNone(lighting.convective_fraction, 'lighting convective fraction is none')
|
||||||
|
self.assertIsNotNone(lighting.radiative_fraction, 'lighting radiant fraction is none')
|
||||||
|
self.assertIsNotNone(lighting.schedules, 'lighting schedule is none')
|
||||||
|
self.assertIsNotNone(usage.appliances, 'appliances is none')
|
||||||
|
appliances = usage.appliances
|
||||||
|
self.assertIsNotNone(appliances.density, 'appliances density is none')
|
||||||
|
self.assertIsNotNone(appliances.latent_fraction, 'appliances latent fraction is none')
|
||||||
|
self.assertIsNotNone(appliances.convective_fraction, 'appliances convective fraction is none')
|
||||||
|
self.assertIsNotNone(appliances.radiative_fraction, 'appliances radiant fraction is none')
|
||||||
|
self.assertIsNotNone(appliances.schedules, 'appliances schedule is none')
|
||||||
|
self.assertIsNotNone(usage.thermal_control.hvac_availability_schedules,
|
||||||
|
'control hvac availability is none')
|
||||||
|
self.assertIsNotNone(usage.domestic_hot_water.peak_flow, 'domestic hot water peak flow is none')
|
||||||
|
self.assertIsNotNone(usage.domestic_hot_water.service_temperature,
|
||||||
|
'domestic hot water service temperature is none')
|
||||||
|
self.assertIsNotNone(usage.domestic_hot_water.schedules, 'domestic hot water schedules is none')
|
||||||
|
|
Loading…
Reference in New Issue
Block a user