Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
self._est_win_area = self.est_factor_win_area * type_bldg_area * \
(1 - self._est_factor_neighbour / 4)
self._est_outer_wall_area = (self.est_factor_facade_to_volume *
type_bldg_area *
self.height_of_floors -
self._est_ground_floor_area -
self._est_roof_area -
self._est_win_area) *\
(1 - self._est_factor_neighbour / 4)
for key, value in self.zone_area_factors.items():
zone = ThermalZone(self)
zone.name = key
zone.area = type_bldg_area * value[0]
use_cond = UseCond(zone)
use_cond.load_use_conditions(value[1])
zone.use_conditions = use_cond
for key, value in self.outer_wall_names.items():
# North and South
if value[1] == 0 or value[1] == 180.0:
self.outer_area[value[1]] = self._est_outer_wall_area / \
self.nr_of_orientation
# East and West
elif value[1] == 90 or value[1] == 270:
self.outer_area[value[1]] = self._est_outer_wall_area / \
self.nr_of_orientation
prj: Project
Project that contains the building with the test room
"""
prj = Project(load_data=True)
prj.name = "ASHRAE140Verification"
bldg = Building(parent=prj)
bldg.name = "TestBuilding"
tz = ThermalZone(parent=bldg)
tz.name = "TestRoom620"
tz.area = 8.0 * 6.0
tz.volume = tz.area * 2.7
tz.use_conditions = UseConditions(parent=tz)
tz.use_conditions.infiltration_rate = 0.41
roof = Rooftop(parent=tz)
roof.name = "Roof"
roof.area = 8.0 * 6.0
roof.orientation = -1.0
roof.tilt = 0.0
roof.inner_convection = 1
roof.outer_convection = 24.67
roof.inner_radiation = 5.13
roof.outer_radiation = 4.63
layer_r1 = Layer(parent=roof, id=0)
layer_r1.thickness = 0.01
material_r1 = Material(layer_r1)
# created June 2015
# by TEASER4 Development Team
"""UseConditions18599
This module is a container for UseConditions following 18599 and SIA2024
"""
from teaser.logic.buildingobjects.useconditions import UseConditions
import teaser.data.output.boundcond_output as boundcond_output
import teaser.data.input.boundcond_input as boundcond_input
class BoundaryConditions(UseConditions):
"""Extended Use Conditions from DIN 18599 and SIA2024
Class that contains the boundary conditions of use for non-residential
buildings defined in DIN V 18599-10 (
:cite:`DeutschesInstitutfurNormung.2016`) and
VDI 2078 (:cite:`VereinDeutscherIngenieure.2015c`). Profiles for internal
gains (
persons, lighting, machines) are taken from SIA2024 (
:cite:`SwissSocietyofEngineersandArchitects.March2006`). In addition
some
TEASER specific use conditions have been attached to this class.
The docstring also contains how the use conditions is used.
Note: Most attributes description are translations from DIN V 18599-10
standard
"""Generates a SingleFamilyHouse archetype buildings
With given values, this function generates an archetype building for
Tabula Single Family House.
"""
self.thermal_zones = None
self._check_year_of_construction()
# help area for the correct building area setting while using typeBldgs
type_bldg_area = self.net_leased_area
self.net_leased_area = 0.0
for key, value in self.zone_area_factors.items():
zone = ThermalZone(parent=self)
zone.name = key
zone.area = type_bldg_area * value[0]
use_cond = UseCond(parent=zone)
use_cond.load_use_conditions(zone_usage=value[1])
zone.use_conditions = use_cond
zone.use_conditions.with_ahu = False
if self.facade_estimation_factors[self.building_age_group]["ow1"] != 0:
for key, value in self._outer_wall_names_1.items():
for zone in self.thermal_zones:
outer_wall = OuterWall(zone)
outer_wall.load_type_element(
year=self.year_of_construction,
construction=self._construction_type_1,
data_class=self.parent.data,
)
outer_wall.name = key
outer_wall.tilt = value[0]
"""Generates a SingleFamilyHouse archetype buildings
With given values, this function generates an archetype building for
Tabula Single Family House.
"""
self.thermal_zones = None
self._check_year_of_construction()
# help area for the correct building area setting while using typeBldgs
type_bldg_area = self.net_leased_area
self.net_leased_area = 0.0
for key, value in self.zone_area_factors.items():
zone = ThermalZone(parent=self)
zone.name = key
zone.area = type_bldg_area * value[0]
use_cond = UseCond(parent=zone)
use_cond.load_use_conditions(zone_usage=value[1])
zone.use_conditions = use_cond
zone.use_conditions.with_ahu = False
zone.use_conditions.persons *= zone.area * 0.01
zone.use_conditions.machines *= zone.area * 0.01
if self.facade_estimation_factors[self.building_age_group]["ow1"] != 0:
for key, value in self._outer_wall_names_1.items():
for zone in self.thermal_zones:
outer_wall = OuterWall(zone)
outer_wall.load_type_element(
year=self.year_of_construction,
construction=self._construction_type_1,
data_class=self.parent.data,
)
def generate_from_gml(self):
"""Enriches lod1 or lod2 data from CityGML
Adds Zones, BoundaryConditions, Material settings for walls and
windows to the geometric representation of CityGML
"""
type_bldg_area = self.net_leased_area
self.net_leased_area = 0.0
# create zones with their corresponding area, name and usage
for key, value in self.zone_area_factors.items():
zone = ThermalZone(self)
zone.area = type_bldg_area * value[0]
zone.name = key
use_cond = UseCond(zone)
use_cond.load_use_conditions(value[1],
data_class=self.parent.data)
zone.use_conditions = use_cond
zone.use_conditions.with_ahu = False
zone.use_conditions.persons *= zone.area * 0.01
zone.use_conditions.machines *= zone.area * 0.01
for surface in self.gml_surfaces:
if surface.surface_tilt is not None:
if surface.surface_tilt == 90:
outer_wall = OuterWall(zone)
outer_wall.load_type_element(
year=self.year_of_construction,
construction=self.construction_type,
data_class=self.parent.data)
outer_wall.name = surface.name
zones = data.groupby(["Zone"])
for name, zone in zones:
# Block: Thermal zone (general parameter)
tz = ThermalZone(parent=bldg)
tz.name = str(name)
tz.area = zone["NetArea[m²]"].sum()
# room vice calculation of volume plus summing those
tz.volume = (
np.array(zone["NetArea[m²]"]) * np.array(zone["HeatedRoomHeight[m]"])
).sum()
# Block: Boundary Conditions
# load UsageOperationTime, Lighting, RoomClimate and InternalGains
# from the "UseCondition.json"
tz.use_conditions = UseConditions(parent=tz)
tz.use_conditions.load_use_conditions(zone["Zone"].iloc[0], project.data)
# Block: Building Physics
# Grouping by orientation and construction type
# aggregating and feeding to the teaser logic classes
grouped = zone.groupby(["OuterWallOrientation[°]", "OuterWallConstruction"])
for name, group in grouped:
# looping through a groupby object automatically discards the
# groups where one of the attributes is nan
# additionally check for strings, since the value must be of type
# int or float
if not isinstance(group["OuterWallOrientation[°]"].iloc[0], str):
out_wall = OuterWall(parent=tz)
out_wall.name = (
"outer_wall_"
+ str(int(group["OuterWallOrientation[°]"].iloc[0]))
prj: Project
Project that contains the building with the test room
"""
prj = Project(load_data=True)
prj.name = "ASHRAE140Verification"
bldg = Building(parent=prj)
bldg.name = "TestBuilding"
tz = ThermalZone(parent=bldg)
tz.name = "TestRoom900"
tz.area = 8.0 * 6.0
tz.volume = tz.area * 2.7
tz.use_conditions = UseConditions(parent=tz)
tz.use_conditions.infiltration_rate = 0.41
roof = Rooftop(parent=tz)
roof.name = "Roof"
roof.area = 8.0 * 6.0
roof.orientation = -1.0
roof.tilt = 0.0
roof.inner_convection = 1
roof.outer_convection = 24.67
roof.inner_radiation = 5.13
roof.outer_radiation = 4.63
layer_r1 = Layer(parent=roof, id=0)
layer_r1.thickness = 0.01
material_r1 = Material(layer_r1)