rewritten thermal_openings creation to allow change in window ratio (doing it wrong previously)
This commit is contained in:
parent
2744f86c66
commit
285c819d31
|
@ -36,7 +36,9 @@ class ThermalBoundary:
|
||||||
self._thickness = None
|
self._thickness = None
|
||||||
self._internal_surface = None
|
self._internal_surface = None
|
||||||
self._window_ratio = None
|
self._window_ratio = None
|
||||||
self._window_ratio_is_calculated = False
|
self._window_ratio_to_be_calculated = False
|
||||||
|
if self._windows_areas is not None:
|
||||||
|
self._window_ratio_to_be_calculated = True
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def id(self):
|
def id(self):
|
||||||
|
@ -101,18 +103,7 @@ class ThermalBoundary:
|
||||||
:return: None or [ThermalOpening]
|
:return: None or [ThermalOpening]
|
||||||
"""
|
"""
|
||||||
if self._thermal_openings is None:
|
if self._thermal_openings is None:
|
||||||
if self.window_ratio is not None:
|
if self.windows_areas is not None:
|
||||||
if self.window_ratio == 0:
|
|
||||||
self._thermal_openings = []
|
|
||||||
else:
|
|
||||||
thermal_opening = ThermalOpening()
|
|
||||||
if self.window_ratio == 1:
|
|
||||||
_area = self.opaque_area
|
|
||||||
else:
|
|
||||||
_area = self.opaque_area * self.window_ratio / (1-self.window_ratio)
|
|
||||||
thermal_opening.area = _area
|
|
||||||
self._thermal_openings = [thermal_opening]
|
|
||||||
else:
|
|
||||||
if len(self.windows_areas) > 0:
|
if len(self.windows_areas) > 0:
|
||||||
self._thermal_openings = []
|
self._thermal_openings = []
|
||||||
for window_area in self.windows_areas:
|
for window_area in self.windows_areas:
|
||||||
|
@ -121,6 +112,42 @@ class ThermalBoundary:
|
||||||
self._thermal_openings.append(thermal_opening)
|
self._thermal_openings.append(thermal_opening)
|
||||||
else:
|
else:
|
||||||
self._thermal_openings = []
|
self._thermal_openings = []
|
||||||
|
else:
|
||||||
|
if self.window_ratio is not None:
|
||||||
|
if self.window_ratio == 0:
|
||||||
|
self._thermal_openings = []
|
||||||
|
else:
|
||||||
|
thermal_opening = ThermalOpening()
|
||||||
|
if self.window_ratio == 1:
|
||||||
|
_area = self.opaque_area
|
||||||
|
else:
|
||||||
|
_area = self.opaque_area * self.window_ratio / (1-self.window_ratio)
|
||||||
|
thermal_opening.area = _area
|
||||||
|
self._thermal_openings = [thermal_opening]
|
||||||
|
else:
|
||||||
|
self._thermal_openings = []
|
||||||
|
else:
|
||||||
|
if self.windows_areas is not None:
|
||||||
|
return self._thermal_openings
|
||||||
|
if self.window_ratio is not None:
|
||||||
|
if self.window_ratio == 0:
|
||||||
|
self._thermal_openings = []
|
||||||
|
else:
|
||||||
|
if len(self._thermal_openings) == 0:
|
||||||
|
thermal_opening = ThermalOpening()
|
||||||
|
if self.window_ratio == 1:
|
||||||
|
_area = self.opaque_area
|
||||||
|
else:
|
||||||
|
_area = self.opaque_area * self.window_ratio / (1-self.window_ratio)
|
||||||
|
thermal_opening.area = _area
|
||||||
|
self._thermal_openings = [thermal_opening]
|
||||||
|
else:
|
||||||
|
for _thermal_opening in self._thermal_openings:
|
||||||
|
if self.window_ratio == 1:
|
||||||
|
_area = self.opaque_area
|
||||||
|
else:
|
||||||
|
_area = self.opaque_area * self.window_ratio / (1-self.window_ratio)
|
||||||
|
_thermal_opening.area = _area
|
||||||
return self._thermal_openings
|
return self._thermal_openings
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
@ -174,16 +201,14 @@ class ThermalBoundary:
|
||||||
If none of those sources are available, it returns None.
|
If none of those sources are available, it returns None.
|
||||||
:return: float
|
:return: float
|
||||||
"""
|
"""
|
||||||
if self.windows_areas is not None:
|
if self._window_ratio_to_be_calculated:
|
||||||
if not self._window_ratio_is_calculated:
|
if len(self.windows_areas) == 0:
|
||||||
_calculated = True
|
self._window_ratio = 0
|
||||||
if len(self.windows_areas) == 0:
|
else:
|
||||||
self._window_ratio = 0
|
total_window_area = 0
|
||||||
else:
|
for window_area in self.windows_areas:
|
||||||
total_window_area = 0
|
total_window_area += window_area
|
||||||
for window_area in self.windows_areas:
|
self._window_ratio = total_window_area / (self.opaque_area + total_window_area)
|
||||||
total_window_area += window_area
|
|
||||||
self._window_ratio = total_window_area / (self.opaque_area + total_window_area)
|
|
||||||
return self._window_ratio
|
return self._window_ratio
|
||||||
|
|
||||||
@window_ratio.setter
|
@window_ratio.setter
|
||||||
|
@ -192,7 +217,7 @@ class ThermalBoundary:
|
||||||
Set thermal boundary window ratio
|
Set thermal boundary window ratio
|
||||||
:param value: str
|
:param value: str
|
||||||
"""
|
"""
|
||||||
if self._window_ratio_is_calculated:
|
if self._window_ratio_to_be_calculated:
|
||||||
raise ValueError('Window ratio cannot be assigned when the windows are defined in the geometry.')
|
raise ValueError('Window ratio cannot be assigned when the windows are defined in the geometry.')
|
||||||
self._window_ratio = float(value)
|
self._window_ratio = float(value)
|
||||||
|
|
||||||
|
|
|
@ -44,25 +44,25 @@ class InselMonthlyEnergyBalance:
|
||||||
self._insel_files_paths.append(building.name + '.insel')
|
self._insel_files_paths.append(building.name + '.insel')
|
||||||
file_name_out = building.name + '.out'
|
file_name_out = building.name + '.out'
|
||||||
output_path = Path(self._path / file_name_out).resolve()
|
output_path = Path(self._path / file_name_out).resolve()
|
||||||
if building.internal_zones is not None:
|
if building.thermal_zones is None:
|
||||||
for internal_zone in building.internal_zones:
|
logging.warning('Building %s has missing values. Monthly Energy Balance cannot be processed', building.name)
|
||||||
if internal_zone.thermal_zones is None:
|
|
||||||
logging.warning('Building %s has missing values. Monthly Energy Balance cannot be processed', building.name)
|
self._contents.append(
|
||||||
break
|
self._generate_meb_template(building, output_path, self._radiation_calculation_method, self._weather_format, self._custom_insel_block)
|
||||||
self._contents.append(
|
)
|
||||||
self._generate_meb_template(building, output_path, self._radiation_calculation_method, self._weather_format, self._custom_insel_block)
|
|
||||||
)
|
|
||||||
self._export()
|
self._export()
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _add_block(file, block_number, block_type, inputs='', parameters=''):
|
def _add_block(file, block_number, block_type, inputs=None, parameters=None):
|
||||||
file += "S " + str(block_number) + " " + block_type + "\n"
|
file += "S " + str(block_number) + " " + block_type + "\n"
|
||||||
for block_input in inputs:
|
if inputs is not None:
|
||||||
file += str(block_input) + "\n"
|
for block_input in inputs:
|
||||||
if len(parameters) > 0:
|
file += str(block_input) + "\n"
|
||||||
file += "P " + str(block_number) + "\n"
|
if parameters is not None:
|
||||||
for block_parameter in parameters:
|
if len(parameters) > 0:
|
||||||
file += str(block_parameter) + "\n"
|
file += "P " + str(block_number) + "\n"
|
||||||
|
for block_parameter in parameters:
|
||||||
|
file += str(block_parameter) + "\n"
|
||||||
return file
|
return file
|
||||||
|
|
||||||
def _export(self):
|
def _export(self):
|
||||||
|
@ -222,6 +222,7 @@ class InselMonthlyEnergyBalance:
|
||||||
parameters.append(0.0)
|
parameters.append(0.0)
|
||||||
parameters.append(0.0)
|
parameters.append(0.0)
|
||||||
else:
|
else:
|
||||||
|
print(window_area, thermal_boundary.thermal_openings)
|
||||||
thermal_opening = thermal_boundary.thermal_openings[0]
|
thermal_opening = thermal_boundary.thermal_openings[0]
|
||||||
parameters.append(thermal_opening.frame_ratio)
|
parameters.append(thermal_opening.frame_ratio)
|
||||||
parameters.append(thermal_opening.overall_u_value)
|
parameters.append(thermal_opening.overall_u_value)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user