New version of infiltration incorporated, and new parameter in catalog for surface infiltration value included.

This commit is contained in:
Oriol Gavalda 2024-02-14 14:22:33 -05:00
parent 7aaab1d8c5
commit da44a3d5b2
2 changed files with 3176 additions and 782 deletions

File diff suppressed because it is too large Load Diff

View File

@ -168,18 +168,60 @@ class InselMonthlyEnergyBalance:
parameters.append(f'{usage.hours_day} % BP(16) #6 Usage hours per day zone {i + 1}')
parameters.append(f'{usage.days_year} % BP(17) #7 Usage days per year zone {i + 1}')
# Changed location to have the value of wall area
for thermal_boundary in thermal_zone.thermal_boundaries:
type_code = _CONSTRUCTION_CODE[thermal_boundary.type]
wall_area = thermal_boundary.opaque_area * (1 + thermal_boundary.window_ratio)
if thermal_boundary.type == cte.WALL:
if thermal_boundary.parent_surface.percentage_shared is not None:
wall_area = wall_area * (1 - thermal_boundary.parent_surface.percentage_shared)
window_area = wall_area * thermal_boundary.window_ratio
parameters.append(type_code)
if thermal_boundary.type != cte.GROUND:
parameters.append(wall_area)
parameters.append('0.0')
else:
parameters.append('0.0')
parameters.append(wall_area)
parameters.append(thermal_boundary.u_value)
parameters.append(window_area)
if window_area <= 0.001:
parameters.append(0.0)
parameters.append(0.0)
parameters.append(0.0)
else:
thermal_opening = thermal_boundary.thermal_openings[0]
parameters.append(thermal_opening.frame_ratio)
parameters.append(thermal_opening.overall_u_value)
parameters.append(thermal_opening.g_value)
if thermal_boundary.type is not cte.GROUND:
parameters.append(thermal_boundary.external_surface.short_wave_reflectance)
else:
parameters.append(0.0)
# Changed location to have the value of wall area
ventilation = 0
infiltration = 0
for schedule in usage.thermal_control.hvac_availability_schedules:
ventilation_day = 0
infiltration_day = 0
new_infiltration = (internal_zone.thermal_zones_from_internal_zones[0].infiltration_rate_area_system_off * \
wall_area * 0.15) / (internal_zone.thermal_zones_from_internal_zones[0].total_floor_area *
building.average_storey_height)
for value in schedule.values:
if value == 0:
infiltration_day += internal_zone.thermal_zones_from_internal_zones[0].infiltration_rate_system_off / 24 * cte.HOUR_TO_SECONDS
#infiltration_day += internal_zone.thermal_zones_from_internal_zones[0].infiltration_rate_system_off / 24 * cte.HOUR_TO_SECONDS
infiltration_day = new_infiltration/ 24
ventilation_day += 0
else:
ventilation_value = usage.mechanical_air_change * value * cte.HOUR_TO_SECONDS
infiltration_value = internal_zone.thermal_zones_from_internal_zones[0].infiltration_rate_system_off * value * cte.HOUR_TO_SECONDS
#todo: changefactor from 0.15 to (4/50)^0.65, change of units from 50 Pa to 4 Pa.
infiltration_value = new_infiltration
#infiltration_value = internal_zone.thermal_zones_from_internal_zones[0].infiltration_rate_system_off * value * cte.HOUR_TO_SECONDS
if ventilation_value >= infiltration_value:
ventilation_day += ventilation_value / 24
infiltration_day += 0