diff --git a/hub/catalog_factories/usage/nrcan_catalog.py b/hub/catalog_factories/usage/nrcan_catalog.py index 8caf9d10..337f5868 100644 --- a/hub/catalog_factories/usage/nrcan_catalog.py +++ b/hub/catalog_factories/usage/nrcan_catalog.py @@ -105,7 +105,8 @@ class NrcanCatalog(Catalog): for space_type in space_types: usage_type = space_type['building_type'] space_type_compliance = space_types_dictionary[usage_type] - occupancy_density = space_type_compliance['occupancy_per_area'] + #todo: check, because I think the value is pax per 1000 sqfoot + occupancy_density = space_type_compliance['occupancy_per_area']/1000 lighting_density = space_type_compliance['lighting_per_area'] appliances_density = space_type_compliance['electric_equipment_per_area'] domestic_hot_water_peak_flow = space_type_compliance['service_water_heating_peak_flow_per_area'] @@ -128,14 +129,14 @@ class NrcanCatalog(Catalog): domestic_hot_water_load_schedule = self._get_schedules(domestic_hot_water_schedule_name) # ACH + #todo: revise with Pilar, some changes done mechanical_air_change = space_type['ventilation_air_changes'] # cfm/ft2 to m3/m2.s ventilation_rate = space_type['ventilation_per_area'] / (cte.METERS_TO_FEET * cte.MINUTES_TO_SECONDS) - if ventilation_rate == 0: + #if ventilation_rate == 0: # cfm/person to m3/m2.s - ventilation_rate = space_type['ventilation_per_person'] / (cte.METERS_TO_FEET * cte.MINUTES_TO_SECONDS)\ - / occupancy_density - + ventilation_rate += space_type['ventilation_per_person'] / (cte.METERS_TO_FEET * cte.MINUTES_TO_SECONDS)\ + * occupancy_density lighting_radiative_fraction = space_type['lighting_fraction_radiant'] lighting_convective_fraction = 0 if lighting_radiative_fraction is not None: diff --git a/hub/exports/building_energy/idf.py b/hub/exports/building_energy/idf.py index df817e78..51815614 100644 --- a/hub/exports/building_energy/idf.py +++ b/hub/exports/building_energy/idf.py @@ -38,6 +38,7 @@ class Idf: _WINDOW_MATERIAL_SIMPLE = 'WINDOWMATERIAL:SIMPLEGLAZINGSYSTEM' _ROUGHNESS = 'MediumRough' _INFILTRATION = 'ZONEINFILTRATION:DESIGNFLOWRATE' + _VENTILATION = 'ZONEVENTILATION:DESIGNFLOWRATE' _HOURLY_SCHEDULE = 'SCHEDULE:DAY:HOURLY' _COMPACT_SCHEDULE = 'SCHEDULE:COMPACT' @@ -421,7 +422,21 @@ class Idf: Design_Flow_Rate_Calculation_Method='AirChanges/Hour', Air_Changes_per_Hour=thermal_zone.infiltration_rate_system_off * factorreduct ) - + def _add_ventilation(self, thermal_zone, zone_name): + # for zone in self._idf.idfobjects["ZONE"]: + # if zone.Name == f'{zone_name}_infiltration': + # return + schedule = f'Ventilation schedules {thermal_zone.usage_name}' + # if schedule not in self._idf.idfobjects[self._HOURLY_SCHEDULE]: + # return + # todo: revise ventilation with Pilar + self._idf.newidfobject(self._VENTILATION, + Name=f'{zone_name}_ventilation', + Zone_or_ZoneList_Name=zone_name, + Schedule_Name=schedule, + Design_Flow_Rate_Calculation_Method='Flow/Zone', + Flow_Rate_per_Zone_Floor_Area=thermal_zone.infiltration_rate_system_off + ) def _add_dhw(self, thermal_zone, zone_name): fuel_type = 'Electricity' method = 'Watts/Area'