forked from s_ranjbar/city_retrofit
Idf factory can export now one building in kelowna
This commit is contained in:
parent
7772d807dc
commit
13eb9eaaa7
|
@ -19,42 +19,19 @@ class Polygon:
|
||||||
Polygon class
|
Polygon class
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# def __init__(self, points):
|
|
||||||
def __init__(self, coordinates):
|
def __init__(self, coordinates):
|
||||||
|
|
||||||
self._area = None
|
self._area = None
|
||||||
# self._points = points
|
|
||||||
self._points = None
|
self._points = None
|
||||||
self._points_list = None
|
self._points_list = None
|
||||||
self._normal = None
|
self._normal = None
|
||||||
self._inverse = None
|
self._inverse = None
|
||||||
self._edges = None
|
self._edges = None
|
||||||
# self._coordinates = None
|
|
||||||
self._coordinates = coordinates
|
self._coordinates = coordinates
|
||||||
self._triangles = None
|
self._triangles = None
|
||||||
self._vertices = None
|
self._vertices = None
|
||||||
self._faces = None
|
self._faces = None
|
||||||
|
|
||||||
# @property
|
|
||||||
# def points(self) -> List[Point]:
|
|
||||||
# """
|
|
||||||
# List of points belonging to the polygon [[x, y, z],...]
|
|
||||||
# :return: List[Point]
|
|
||||||
# """
|
|
||||||
# return self._points
|
|
||||||
#
|
|
||||||
# @property
|
|
||||||
# def coordinates(self) -> List[np.ndarray]:
|
|
||||||
# """
|
|
||||||
# List of points in the shape of its coordinates belonging to the polygon [[x, y, z],...]
|
|
||||||
# :return: np.array
|
|
||||||
# """
|
|
||||||
# if self._coordinates is None:
|
|
||||||
# self._coordinates = []
|
|
||||||
# for point in self.points:
|
|
||||||
# self._coordinates.append(np.array(point.coordinates))
|
|
||||||
# return self._coordinates
|
|
||||||
#
|
|
||||||
@property
|
@property
|
||||||
def points(self) -> List[Point]:
|
def points(self) -> List[Point]:
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -127,6 +127,7 @@ class Idf:
|
||||||
for construction in self._idf.idfobjects[self._CONSTRUCTION]:
|
for construction in self._idf.idfobjects[self._CONSTRUCTION]:
|
||||||
if construction.Name == thermal_boundary.construction_name:
|
if construction.Name == thermal_boundary.construction_name:
|
||||||
return
|
return
|
||||||
|
|
||||||
if thermal_boundary.layers is None:
|
if thermal_boundary.layers is None:
|
||||||
for material in self._idf.idfobjects[self._MATERIAL]:
|
for material in self._idf.idfobjects[self._MATERIAL]:
|
||||||
if material.Name == "DefaultMaterial":
|
if material.Name == "DefaultMaterial":
|
||||||
|
@ -153,7 +154,7 @@ class Idf:
|
||||||
def _add_thermostat(self, usage_zone):
|
def _add_thermostat(self, usage_zone):
|
||||||
thermostat_name = f'Thermostat {usage_zone.usage}'
|
thermostat_name = f'Thermostat {usage_zone.usage}'
|
||||||
for thermostat in self._idf.idfobjects[self._THERMOSTAT]:
|
for thermostat in self._idf.idfobjects[self._THERMOSTAT]:
|
||||||
if thermostat == thermostat_name:
|
if thermostat.Name == thermostat_name:
|
||||||
return thermostat
|
return thermostat
|
||||||
return self._idf.newidfobject(self._THERMOSTAT,
|
return self._idf.newidfobject(self._THERMOSTAT,
|
||||||
Name=thermostat_name,
|
Name=thermostat_name,
|
||||||
|
@ -161,6 +162,9 @@ class Idf:
|
||||||
Constant_Cooling_Setpoint=usage_zone.cooling_setpoint)
|
Constant_Cooling_Setpoint=usage_zone.cooling_setpoint)
|
||||||
|
|
||||||
def _add_heating_system(self, usage_zone):
|
def _add_heating_system(self, usage_zone):
|
||||||
|
for air_system in self._idf.idfobjects[self._IDEAL_LOAD_AIR_SYSTEM]:
|
||||||
|
if air_system.Zone_Name == usage_zone.id:
|
||||||
|
return
|
||||||
thermostat = self._add_thermostat(usage_zone)
|
thermostat = self._add_thermostat(usage_zone)
|
||||||
# todo: doesn't the air system have name?
|
# todo: doesn't the air system have name?
|
||||||
self._idf.newidfobject(self._IDEAL_LOAD_AIR_SYSTEM,
|
self._idf.newidfobject(self._IDEAL_LOAD_AIR_SYSTEM,
|
||||||
|
@ -248,6 +252,6 @@ class Idf:
|
||||||
surface = self._idf.newidfobject(self._SURFACE, Name=f'{boundary.surface.name}',
|
surface = self._idf.newidfobject(self._SURFACE, Name=f'{boundary.surface.name}',
|
||||||
Surface_Type=idf_surface, Zone_Name=usage_zone.id,
|
Surface_Type=idf_surface, Zone_Name=usage_zone.id,
|
||||||
Construction_Name=boundary.construction_name)
|
Construction_Name=boundary.construction_name)
|
||||||
coordinates = self._matrix_to_list(boundary.surface.coordinates)
|
coordinates = self._matrix_to_list(boundary.surface.solid_polygon.coordinates)
|
||||||
surface.setcoords(coordinates)
|
surface.setcoords(coordinates)
|
||||||
self._idf.intersect_match()
|
self._idf.intersect_match()
|
||||||
|
|
|
@ -68,6 +68,7 @@ class UsPhysicsParameters(NrelPhysicsInterface):
|
||||||
thermal_boundary.outside_visible_absorptance = thermal_boundary_archetype.outside_visible_absorptance
|
thermal_boundary.outside_visible_absorptance = thermal_boundary_archetype.outside_visible_absorptance
|
||||||
thermal_boundary.construction_name = thermal_boundary_archetype.construction_name
|
thermal_boundary.construction_name = thermal_boundary_archetype.construction_name
|
||||||
thermal_boundary.window_ratio = thermal_boundary_archetype.window_ratio
|
thermal_boundary.window_ratio = thermal_boundary_archetype.window_ratio
|
||||||
|
thermal_boundary.layers = []
|
||||||
for layer_archetype in thermal_boundary_archetype.layers:
|
for layer_archetype in thermal_boundary_archetype.layers:
|
||||||
layer = Layer()
|
layer = Layer()
|
||||||
layer.thickness = layer_archetype.thickness
|
layer.thickness = layer_archetype.thickness
|
||||||
|
@ -82,6 +83,7 @@ class UsPhysicsParameters(NrelPhysicsInterface):
|
||||||
material.visible_absorptance = layer_archetype.visible_absorptance
|
material.visible_absorptance = layer_archetype.visible_absorptance
|
||||||
material.thermal_resistance = layer_archetype.thermal_resistance
|
material.thermal_resistance = layer_archetype.thermal_resistance
|
||||||
layer.material = material
|
layer.material = material
|
||||||
|
thermal_boundary.layers.append(layer)
|
||||||
for thermal_opening in thermal_boundary.thermal_openings:
|
for thermal_opening in thermal_boundary.thermal_openings:
|
||||||
if thermal_boundary_archetype.thermal_opening is not None:
|
if thermal_boundary_archetype.thermal_opening is not None:
|
||||||
thermal_opening_archetype = thermal_boundary_archetype.thermal_opening
|
thermal_opening_archetype = thermal_boundary_archetype.thermal_opening
|
||||||
|
|
|
@ -38,4 +38,4 @@ class ConstructionFactory:
|
||||||
Enrich the city with the construction information
|
Enrich the city with the construction information
|
||||||
:return: None
|
:return: None
|
||||||
"""
|
"""
|
||||||
self._nrcan()
|
self._nrel()
|
||||||
|
|
|
@ -7,6 +7,8 @@ from pathlib import Path
|
||||||
from imports.usage.hft_usage_parameters import HftUsageParameters
|
from imports.usage.hft_usage_parameters import HftUsageParameters
|
||||||
from imports.usage.ca_usage_parameters import CaUsageParameters
|
from imports.usage.ca_usage_parameters import CaUsageParameters
|
||||||
|
|
||||||
|
# todo: handle missing lambda and rise error.
|
||||||
|
|
||||||
|
|
||||||
class UsageFactory:
|
class UsageFactory:
|
||||||
"""
|
"""
|
||||||
|
|
Loading…
Reference in New Issue
Block a user