Merge branch 'master' of https://rs-loy-gitlab.concordia.ca/Guille/libs
This commit is contained in:
commit
ed6f568b92
|
@ -104,7 +104,6 @@ class Polygon:
|
||||||
if module != 0:
|
if module != 0:
|
||||||
angle = abs(np.arcsin(scalar_product / module))
|
angle = abs(np.arcsin(scalar_product / module))
|
||||||
angle_sum += angle
|
angle_sum += angle
|
||||||
print(angle_sum)
|
|
||||||
return abs(angle_sum - math.pi*2) < cte.EPSILON
|
return abs(angle_sum - math.pi*2) < cte.EPSILON
|
||||||
|
|
||||||
def contains_polygon(self, polygon):
|
def contains_polygon(self, polygon):
|
||||||
|
@ -112,13 +111,10 @@ class Polygon:
|
||||||
Determines if the given polygon is contained by the current polygon
|
Determines if the given polygon is contained by the current polygon
|
||||||
:return: boolean
|
:return: boolean
|
||||||
"""
|
"""
|
||||||
print('contains')
|
|
||||||
for point in polygon.points:
|
|
||||||
print(point.coordinates, self.contains_point(point))
|
|
||||||
|
|
||||||
|
for point in polygon.points:
|
||||||
if not self.contains_point(point):
|
if not self.contains_point(point):
|
||||||
return False
|
return False
|
||||||
print('Belong!')
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
|
|
@ -31,6 +31,7 @@ class ThermalOpening:
|
||||||
self._inside_emissivity = None
|
self._inside_emissivity = None
|
||||||
self._alpha_coefficient = None
|
self._alpha_coefficient = None
|
||||||
self._radiative_coefficient = None
|
self._radiative_coefficient = None
|
||||||
|
self._construction_name = None
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def id(self):
|
def id(self):
|
||||||
|
@ -290,3 +291,17 @@ class ThermalOpening:
|
||||||
"""
|
"""
|
||||||
if value is not None:
|
if value is not None:
|
||||||
self._radiative_coefficient = float(value)
|
self._radiative_coefficient = float(value)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def construction_name(self):
|
||||||
|
"""
|
||||||
|
Get thermal opening construction name
|
||||||
|
"""
|
||||||
|
return self._construction_name
|
||||||
|
|
||||||
|
@construction_name.setter
|
||||||
|
def construction_name(self, value):
|
||||||
|
"""
|
||||||
|
Set thermal opening construction name
|
||||||
|
"""
|
||||||
|
self._construction_name = value
|
||||||
|
|
|
@ -8,8 +8,9 @@ from __future__ import annotations
|
||||||
import sys
|
import sys
|
||||||
import pickle
|
import pickle
|
||||||
import math
|
import math
|
||||||
from typing import List, Union
|
import copy
|
||||||
import pyproj
|
import pyproj
|
||||||
|
from typing import List, Union
|
||||||
from pyproj import Transformer
|
from pyproj import Transformer
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
|
@ -434,3 +435,9 @@ class City:
|
||||||
return lca_material
|
return lca_material
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
@property
|
||||||
|
def copy(self) -> City:
|
||||||
|
"""
|
||||||
|
Get a copy of the current city
|
||||||
|
"""
|
||||||
|
return copy.deepcopy(self)
|
||||||
|
|
|
@ -44,6 +44,14 @@ class CityObject:
|
||||||
"""
|
"""
|
||||||
return self._name
|
return self._name
|
||||||
|
|
||||||
|
@name.setter
|
||||||
|
def name(self, value):
|
||||||
|
"""
|
||||||
|
Set building name
|
||||||
|
:return: str
|
||||||
|
"""
|
||||||
|
self._name = value
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def lod(self) -> int:
|
def lod(self) -> int:
|
||||||
"""
|
"""
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -12,7 +12,8 @@ class ThermalOpeningArchetype:
|
||||||
def __init__(self, conductivity=None, frame_ratio=None, g_value=None, thickness=None,
|
def __init__(self, conductivity=None, frame_ratio=None, g_value=None, thickness=None,
|
||||||
back_side_solar_transmittance_at_normal_incidence=None,
|
back_side_solar_transmittance_at_normal_incidence=None,
|
||||||
front_side_solar_transmittance_at_normal_incidence=None, overall_u_value=None,
|
front_side_solar_transmittance_at_normal_incidence=None, overall_u_value=None,
|
||||||
openable_ratio=None, inside_emissivity=None, alpha_coefficient=None, radiative_coefficient=None):
|
openable_ratio=None, inside_emissivity=None, alpha_coefficient=None, radiative_coefficient=None,
|
||||||
|
construction_name=None):
|
||||||
self._conductivity = conductivity
|
self._conductivity = conductivity
|
||||||
self._frame_ratio = frame_ratio
|
self._frame_ratio = frame_ratio
|
||||||
self._g_value = g_value
|
self._g_value = g_value
|
||||||
|
@ -24,6 +25,7 @@ class ThermalOpeningArchetype:
|
||||||
self._inside_emissivity = inside_emissivity
|
self._inside_emissivity = inside_emissivity
|
||||||
self._alpha_coefficient = alpha_coefficient
|
self._alpha_coefficient = alpha_coefficient
|
||||||
self._radiative_coefficient = radiative_coefficient
|
self._radiative_coefficient = radiative_coefficient
|
||||||
|
self._construction_name = construction_name
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def conductivity(self):
|
def conductivity(self):
|
||||||
|
@ -112,3 +114,17 @@ class ThermalOpeningArchetype:
|
||||||
:return: float
|
:return: float
|
||||||
"""
|
"""
|
||||||
return self._radiative_coefficient
|
return self._radiative_coefficient
|
||||||
|
|
||||||
|
@property
|
||||||
|
def construction_name(self):
|
||||||
|
"""
|
||||||
|
Get thermal opening construction name
|
||||||
|
"""
|
||||||
|
return self._construction_name
|
||||||
|
|
||||||
|
@construction_name.setter
|
||||||
|
def construction_name(self, value):
|
||||||
|
"""
|
||||||
|
Set thermal opening construction name
|
||||||
|
"""
|
||||||
|
self._construction_name = value
|
||||||
|
|
|
@ -109,6 +109,7 @@ class NrelPhysicsInterface:
|
||||||
if 'window' in construction and construction['window'] is not None:
|
if 'window' in construction and construction['window'] is not None:
|
||||||
window_ratio = construction['window_ratio']['#text']
|
window_ratio = construction['window_ratio']['#text']
|
||||||
w_lib = self._search_construction_type('window', construction['window'])
|
w_lib = self._search_construction_type('window', construction['window'])
|
||||||
|
window_construction_name = w_lib['@name']
|
||||||
frame_ratio = w_lib['frame_ratio']['#text']
|
frame_ratio = w_lib['frame_ratio']['#text']
|
||||||
if 'conductivity' in w_lib:
|
if 'conductivity' in w_lib:
|
||||||
conductivity = w_lib['conductivity']['#text']
|
conductivity = w_lib['conductivity']['#text']
|
||||||
|
@ -128,7 +129,8 @@ class NrelPhysicsInterface:
|
||||||
thickness=thickness, back_side_solar_transmittance_at_normal_incidence=
|
thickness=thickness, back_side_solar_transmittance_at_normal_incidence=
|
||||||
back_side_solar_transmittance_at_normal_incidence,
|
back_side_solar_transmittance_at_normal_incidence,
|
||||||
front_side_solar_transmittance_at_normal_incidence=
|
front_side_solar_transmittance_at_normal_incidence=
|
||||||
front_side_solar_transmittance_at_normal_incidence)
|
front_side_solar_transmittance_at_normal_incidence,
|
||||||
|
construction_name=window_construction_name)
|
||||||
else:
|
else:
|
||||||
overall_u_value = w_lib['overall_u_value']['#text']
|
overall_u_value = w_lib['overall_u_value']['#text']
|
||||||
units = w_lib['overall_u_value']['@units']
|
units = w_lib['overall_u_value']['@units']
|
||||||
|
|
|
@ -99,6 +99,7 @@ class UsPhysicsParameters(NrelPhysicsInterface):
|
||||||
for thermal_opening in thermal_boundary.thermal_openings:
|
for thermal_opening in thermal_boundary.thermal_openings:
|
||||||
if thermal_boundary_archetype.thermal_opening_archetype is not None:
|
if thermal_boundary_archetype.thermal_opening_archetype is not None:
|
||||||
thermal_opening_archetype = thermal_boundary_archetype.thermal_opening_archetype
|
thermal_opening_archetype = thermal_boundary_archetype.thermal_opening_archetype
|
||||||
|
thermal_opening.construction_name = thermal_opening_archetype.construction_name
|
||||||
thermal_opening.frame_ratio = thermal_opening_archetype.frame_ratio
|
thermal_opening.frame_ratio = thermal_opening_archetype.frame_ratio
|
||||||
thermal_opening.g_value = thermal_opening_archetype.g_value
|
thermal_opening.g_value = thermal_opening_archetype.g_value
|
||||||
thermal_opening.conductivity = thermal_opening_archetype.conductivity
|
thermal_opening.conductivity = thermal_opening_archetype.conductivity
|
||||||
|
|
|
@ -7,7 +7,6 @@ from numpy import inf
|
||||||
from rhino3dm import *
|
from rhino3dm import *
|
||||||
from rhino3dm._rhino3dm import MeshType
|
from rhino3dm._rhino3dm import MeshType
|
||||||
|
|
||||||
|
|
||||||
from city_model_structure.attributes.point import Point
|
from city_model_structure.attributes.point import Point
|
||||||
import numpy as np
|
import numpy as np
|
||||||
|
|
||||||
|
@ -16,7 +15,6 @@ from city_model_structure.attributes.polygon import Polygon
|
||||||
from city_model_structure.building import Building
|
from city_model_structure.building import Building
|
||||||
from city_model_structure.city import City
|
from city_model_structure.city import City
|
||||||
from city_model_structure.building_demand.surface import Surface as LibsSurface
|
from city_model_structure.building_demand.surface import Surface as LibsSurface
|
||||||
from helpers.constants import EPSILON
|
|
||||||
from imports.geometry.helpers.geometry_helper import GeometryHelper
|
from imports.geometry.helpers.geometry_helper import GeometryHelper
|
||||||
|
|
||||||
|
|
||||||
|
@ -31,7 +29,6 @@ class Rhino:
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _in_perimeter(wall, corner):
|
def _in_perimeter(wall, corner):
|
||||||
res = wall.contains_point(Point(corner))
|
res = wall.contains_point(Point(corner))
|
||||||
print(f'belong: {res} wall:({wall.coordinates}) corner: ({corner})')
|
|
||||||
return res
|
return res
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
@ -98,7 +95,6 @@ class Rhino:
|
||||||
windows.append(Polygon(surface.perimeter_polygon.inverse))
|
windows.append(Polygon(surface.perimeter_polygon.inverse))
|
||||||
else:
|
else:
|
||||||
buildings.append(rhino_object)
|
buildings.append(rhino_object)
|
||||||
print(f'windows: {len(windows)}')
|
|
||||||
# todo: this method will be pretty inefficient
|
# todo: this method will be pretty inefficient
|
||||||
for hole in windows:
|
for hole in windows:
|
||||||
corner = hole.coordinates[0]
|
corner = hole.coordinates[0]
|
||||||
|
|
|
@ -6,7 +6,7 @@ Contributor Mohammad Reza mohammad.seyedabadi@mail.concordia.ca
|
||||||
"""
|
"""
|
||||||
import xmltodict
|
import xmltodict
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from city_model_structure.building_demand.material import Material
|
from city_model_structure.lca_material import LcaMaterial as LMaterial
|
||||||
|
|
||||||
class LcaMaterial:
|
class LcaMaterial:
|
||||||
def __init__(self, city, base_path):
|
def __init__(self, city, base_path):
|
||||||
|
@ -15,14 +15,14 @@ class LcaMaterial:
|
||||||
self._lca = None
|
self._lca = None
|
||||||
|
|
||||||
def enrich(self):
|
def enrich(self):
|
||||||
self._city.materials = []
|
self._city.lca_materials = []
|
||||||
path = Path(self._base_path / 'lca_data.xml').resolve()
|
path = Path(self._base_path / 'lca_data.xml').resolve()
|
||||||
|
|
||||||
with open(path) as xml:
|
with open(path) as xml:
|
||||||
self._lca = xmltodict.parse(xml.read())
|
self._lca = xmltodict.parse(xml.read())
|
||||||
|
|
||||||
for material in self._lca["library"]["building_materials"]['material']:
|
for material in self._lca["library"]["building_materials"]['material']:
|
||||||
_material = Material()
|
_material = LMaterial()
|
||||||
_material.type = material['@type']
|
_material.type = material['@type']
|
||||||
_material.id = material['@id']
|
_material.id = material['@id']
|
||||||
_material.name = material['@name']
|
_material.name = material['@name']
|
||||||
|
@ -37,4 +37,4 @@ class LcaMaterial:
|
||||||
_material.cost=material['cost']['#text']
|
_material.cost=material['cost']['#text']
|
||||||
_material._cost_unit=material['cost']['@unit']
|
_material._cost_unit=material['cost']['@unit']
|
||||||
|
|
||||||
self._city.materials.append(_material)
|
self._city.lca_materials.append(_material)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user