teaser.logic.buildingobjects package

Subpackages

Submodules

teaser.logic.buildingobjects.building module

This module includes the Building class

class teaser.logic.buildingobjects.building.Building(parent=None, name=None, year_of_construction=None, net_leased_area=None, with_ahu=False, internal_gains_mode=1)[source]

Bases: object

Building Class

This class is used to manage information and parameter calculation for Buildings. It is the base class for all archetype buildings and holds a list containing all ThermalZones instances. In addition it can hold an optional attribute for CentralAHU instance, that is e.g. needed for AixLib Simulation models.

Parameters:
parent: Project()

The parent class of this object, the Project the Building belongs to. Allows for better control of hierarchical structures. If not None it adds this Building instance to Project.buildings. (default: None)

namestr

Individual name (default: None)

year_of_constructionint

Year of first construction (default: None)

net_leased_areafloat [m2]

Total net leased area of building. This is area is NOT the footprint of a building (default: None)

with_ahuBoolean

If set to True, an empty instance of BuildingAHU is instantiated and assigned to attribute central_ahu. This instance holds information for central Air Handling units. Default is False.

internal_gains_mode: int [1, 2, 3]

mode for the internal gains calculation done in AixLib:

  1. Temperature and activity degree dependent heat flux calculation for persons. The calculation is based on SIA 2024 (default)

  2. Temperature and activity degree independent heat flux calculation for persons, the max. heatflowrate is prescribed by the parameter fixed_heat_flow_rate_persons.

  3. Temperature and activity degree dependent calculation with consideration of moisture and co2. The moisture calculation is based on SIA 2024 (2015) and regards persons and non-persons, the co2 calculation is based on Engineering ToolBox (2004) and regards only persons.

Attributes:
central_ahuinstance of BuildingAHU

Teaser Instance of BuildingAHU if a central AHU is embedded into the building (currently mostly needed for AixLib simulation).

number_of_floorsint

number of floors above ground (default: None)

height_of_floorsfloat [m]

Average height of the floors (default: None)

internal_idfloat

Random id for the distinction between different buildings.

year_of_retrofitint

Year of last retrofit.

type_of_buildingstring

Type of a Building (e.g. Building (unspecified), Office etc.).

building_idNone

ID of building, can be set by the user to keep track of a building even outside of TEASER, e.g. in a simulation or in post-processing. This is not the same as internal_id, as internal_id is e.g. not exported to Modelica models!

street_namestring

Name of the street the building is located at. (optional)

citystring

Name of the city the building is located at. (optional)

longitudefloat [degree]

Longitude of building location.

latitudefloat [degree]

Latitude of building location.

thermal_zoneslist

List with instances of ThermalZone(), that are located in this building.

outer_areadict [degree: m2]

Dictionary with orientation as key and sum of outer wall areas of that direction as value.

window_areadict [degree: m2]

Dictionary with orientation as key and sum of window areas of that direction as value.

bldg_heightfloat [m]

Total building height.

area_rtfloat [m2]

Total roof area of all thermal zones.

area_gffloat [m2]

Total ground floor area of all thermal zones.

volumefloat [m3]

Total volume of all thermal zones.

sum_heat_loadfloat [W]

Total heating load of all thermal zones.

sum_cooling_loadfloat [W]

Total heating load of all thermal zones. (currently not supported)

number_of_elements_calcint

Number of elements that are used for thermal zone calculation in this building.

  1. OneElement

  2. TwoElement

  3. ThreeElement

  4. FourElement

merge_windows_calcboolean

True for merging the windows into the outer wall’s RC-combination, False for separate resistance for window, default is False. (Only supported for IBPSA)

used_library_calcstr

‘AixLib’ for https://github.com/RWTH-EBC/AixLib ‘IBPSA’ for https://github.com/ibpsa/modelica

library_attrAnnex() or AixLib() instance

Classes with specific functions and attributes for building models in IBPSA and AixLib. Python classes can be found in calculation package.

add_zone(thermal_zone)[source]

Adds a thermal zone to the corresponding list

This function adds a ThermalZone instance to the the thermal_zones list

Parameters:
thermal_zoneThermalZone()

ThermalZone() instance of TEASER

calc_building_parameter(number_of_elements=2, merge_windows=False, used_library='AixLib')[source]

calc all building parameters

This functions calculates the parameters of all zones in a building sums norm heat load of all zones sums volume of all zones

Parameters:
number_of_elementsint

defines the number of elements, that area aggregated, between 1 and 4, default is 2

merge_windowsbool

True for merging the windows into the outer walls, False for separate resistance for window, default is False

used_librarystr

used library (AixLib and IBPSA are supported)

property central_ahu
fill_outer_area_dict()[source]

Fills the attribute outer_area

Fills the dictionary outer_area with the sum of outer wall area corresponding to the orientations of the building. This function covers OuterWalls, GroundFloors and Rooftops.

fill_window_area_dict()[source]

Fills the attribute

Fills the dictionary window_area with the sum of window area corresponding to the orientations of the building.

get_inner_wall_area()[source]

Get aggregated inner wall area

Returns the area of all inner walls. This function covers InnerWalls, Ceilings and Floors.

Returns:
sum_areafloat

area of all inner walls

get_outer_wall_area(orientation)[source]

Get aggregated wall area of one orientation

Returns the area of all outer walls of one direction. This function covers OuterWalls, GroundFloors and Rooftops.

Parameters:
orientationfloat

orientation of the obtained wall

Returns
——-
sum_areafloat

area of all walls of one direction

get_window_area(orientation)[source]

Get aggregated window area of one orientation

returns the area of all windows of one direction

Parameters:
orientationfloat

orientation of the obtained windows

Returns
——-
sum_areafloat

area of all windows of one direction

property height_of_floors
property merge_windows_calc
property name
property net_leased_area
property number_of_elements_calc
property number_of_floors
property outer_area
property parent
retrofit_building(year_of_retrofit=None, type_of_retrofit=None, window_type=None, material=None)[source]

Retrofits all zones in the building

Function call for each zone.

After retrofit, all parameters are calculated directly.

Parameters:
year_of_retrofitfloat

Year of last retrofit.

type_of_retrofitstr

The classification of retrofit, if the archetype building approach of TABULA is used.

window_typestr

Default: EnEv 2014

materialstr

Default: EPS035

rotate_building(angle)[source]

Rotates the building to a given angle

This function covers OuterWall, Rooftop (if not flat roof) and Windows.

Parameters:
angle: float

rotation of the building clockwise, between 0 and 360 degrees

set_outer_wall_area(new_area, orientation)[source]

Outer area wall setter

sets the outer wall area of all walls of one direction and weights them according to zone size. This function covers OuterWalls, Rooftops, GroundFloors.

Parameters:
new_areafloat

new_area of all outer walls of one orientation

orientationfloat

orientation of the obtained walls

set_window_area(new_area, orientation)[source]

Window area setter

sets the window area of all windows of one direction and weights them according to zone size

Parameters:
new_areafloat

new_area of all window of one orientation

orientationfloat

orientation of the obtained windows

property thermal_zones
property used_library_calc
property window_area
property with_ahu
property year_of_construction
property year_of_retrofit

teaser.logic.buildingobjects.thermalzone module

This module includes the ThermalZone class

class teaser.logic.buildingobjects.thermalzone.ThermalZone(parent=None)[source]

Bases: object

Thermal zone class.

This class is used to manage information and parameter calculation for thermal zones. Each thermal zone has one specific calculation method, which is specific to the used model (model_attr). For new model implementation this attribute can be assigned to new classes.

Parameters:
parent: Building()

The parent class of this object, the Building the zone belongs to. Allows for better control of hierarchical structures. If not None it adds this ThermalZone instance to Building.thermal_zones. Default is None

Attributes:
internal_idfloat

Random id for the distinction between different zones.

namestr

Individual name.

areafloat [m2]

Thermal zone area.

volumefloat [m3]

Thermal zone volume.

outer_wallslist

List of OuterWall instances.

doorslist

List of Door instances.

rooftopslist

List of Rooftop instances.

ground_floorslist

List of GroundFloor instances.

windowslist

List of Window instances.

inner_wallslist

List of InnerWall instances.

floorslist

List of Floor instances.

ceilings: list

List of Ceiling instances.

use_conditionsUseConditions

Instance of UseConditions with all relevant information for the usage of the thermal zone

model_attrUnion[OneElement, TwoElement, ThreeElement, FourElement]

Instance of OneElement(), TwoElement(), ThreeElement() or FourElement(), that holds all calculation functions and attributes needed for the specific model.

t_insidefloat [K]

Normative indoor temperature for static heat load calculation. The input of t_inside is ALWAYS in Kelvin

t_outsidefloat [K]

Normative outdoor temperature for static heat load calculation. The input of t_inside is ALWAYS in Kelvin

t_groundfloat [K]

Temperature directly at the outer side of ground floors for static heat load calculation. The input of t_ground is ALWAYS in Kelvin

density_airfloat [kg/m3]

average density of the air in the thermal zone

heat_capac_airfloat [J/K]

average heat capacity of the air in the thermal zone

add_element(building_element)[source]

Adds a building element to the corresponding list

This function adds a BuildingElement instance to the the list depending on the type of the Building Element

Parameters:
building_elementBuildingElement()

inherited objects of BuildingElement() instance of TEASER

property area
calc_zone_parameters(number_of_elements=2, merge_windows=False, t_bt=5)[source]

RC-Calculation for the thermal zone

Based on the input parameters (used model) this function instantiates the corresponding calculation Class (e.g. TwoElement) and calculates the zone parameters. Currently the function is able to distinguishes between the number of elements, we distinguish between:

  • one element: all outer walls are aggregated into one element, inner wall are neglected

  • two elements: exterior and interior walls are aggregated

  • three elements: like 2, but floor or roofs are aggregated separately

  • four elements: roofs and floors are aggregated separately

For all four options we can chose if the thermal conduction through the window is considered in a separate resistance or not.

Parameters:
number_of_elementsint

defines the number of elements, that area aggregated, between 1 and 4, default is 2

merge_windowsbool

True for merging the windows into the outer walls, False for separate resistance for window, default is False (Only supported for IBPSA)

t_btfloat

Time constant according to VDI 6007 (default t_bt = 5)

property ceilings
delete()[source]

Deletes the actual thermal zone safely.

This deletes the current thermal Zone and also refreshes the thermal_zones list in the parent Building.

property doors
find_doors(orientation, tilt)[source]

Returns all outer walls with given orientation and tilt

This function returns a list of all Doors elements with the same orientation and tilt.

Parameters:
orientationfloat [degree]

Azimuth of the desired walls.

tiltfloat [degree]

Tilt against the horizontal of the desired walls.

Returns:
elementslist

List of Doors instances with desired orientation and tilt.

find_gfs(orientation, tilt)[source]

Returns all ground floors with given orientation and tilt

This function returns a list of all GroundFloor elements with the same orientation and tilt.

Parameters:
orientationfloat [degree]

Azimuth of the desired ground floors.

tiltfloat [degree]

Tilt against the horizontal of the desired ground floors.

Returns:
elementslist

List of GroundFloor instances with desired orientation and tilt.

find_rts(orientation, tilt)[source]

Returns all rooftops with given orientation and tilt

This function returns a list of all Rooftop elements with the same orientation and tilt.

Parameters:
orientationfloat [degree]

Azimuth of the desired rooftops.

tiltfloat [degree]

Tilt against the horizontal of the desired rooftops.

Returns:
elementslist

List of Rooftop instances with desired orientation and tilt.

find_walls(orientation, tilt)[source]

Returns all outer walls with given orientation and tilt

This function returns a list of all OuterWall elements with the same orientation and tilt.

Parameters:
orientationfloat [degree]

Azimuth of the desired walls.

tiltfloat [degree]

Tilt against the horizontal of the desired walls.

Returns:
elementslist

List of OuterWalls instances with desired orientation and tilt.

find_wins(orientation, tilt)[source]

Returns all windows with given orientation and tilt

This function returns a list of all Window elements with the same orientation and tilt.

Parameters:
orientationfloat [degree]

Azimuth of the desired windows.

tiltfloat [degree]

Tilt against the horizontal of the desired windows.

Returns:
elementslist

List of Window instances with desired orientation and tilt.

property floors
property ground_floors
property inner_walls
property name
property outer_walls
property parent
retrofit_zone(type_of_retrofit=None, window_type=None, material=None)[source]

Retrofits all walls and windows in the zone.

Function call for all elements facing the ambient or ground. Distinguishes if the parent building is a archetype of type ‘iwu’ or ‘tabula_de’. If TABULA is used, it will use the pre-defined wall constructions of TABULA.

This function covers OuterWall, Rooftop, GroundFloor and Window.

Parameters:
type_of_retrofitstr

The classification of retrofit, if the archetype building approach of TABULA is used.

window_typestr

Default: EnEv 2014

materialstr

Default: EPS035

property rooftops
set_inner_wall_area()[source]

Sets the inner wall area according to zone area

Sets the inner wall area according to zone area size if type building approach is used. This function covers Floors, Ceilings and InnerWalls.

set_volume_zone()[source]

Sets the zone volume according to area and height of floors

Sets the volume of a zone according area and height of floors (building attribute).

property t_inside
property t_outside
property use_conditions
property volume
property windows

teaser.logic.buildingobjects.useconditions module

This module contains UseConditions class.

class teaser.logic.buildingobjects.useconditions.UseConditions(parent=None)[source]

Bases: object

UseConditions class contains all zone specific boundary conditions.

Class that contains the boundary conditions of use for buildings defined in DIN V 18599-10 ( [17]) and VDI 2078 ([12]). Profiles for internal gains ( persons, lighting, machines) are taken from SIA2024 ( [13]). 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

Attributes:
usage: str

usage type AixLib usage: String to distinguish usages of a zone

typical_length: float [m]

typical length of a room in a usage zone. This value is taken from SIA 2024. Archetype usage: division of usage zones in rooms

typical width: float [m]

typical width of a usage zone. This value is taken from SIA 2024. Archetype usage: division of usage zones in rooms

with_heating: boolean

Sets if the zone is heated by ideal heater or not.

with_cooling: boolean

Sets if the zone is cooled by ideal cooler or not.

with_ideal_thresholds: boolean

Sets if the threshold temperatures for ideal heater and cooler are used. True = T_threshold_heating and T_threshold_cooling are used. This can, in most cases, prevent simultaneous heating from AHU and cooling from ideal heater and vice versa. This should only be turned on if an AHU exists.

T_threshold_heating: float [K]

Threshold for the outside temperature above which the ideal heater is permanently shut down regardless the inside temperature. Default is 15 °C which corresponds to the value for all buildings that are not built according to EnEV standard according to DIN EN 18599-5.

T_threshold_cooling: float [K]

Threshold for the outside temperature below which the ideal cooler is permanently shut down regardless the inside temperature. Default is 22 °C, since there are no european standards for cooling degree days this value is taken from the following paper: “Heating Degree Days, Cooling Degree Days and Precipitation in Europe —analysis for the CELECT-project” by Benestad, 2008.

heating_profilelist [K]

Heating setpoint, regarding the zone temperature, of ideal static heating for a day or similar. You can set a list of any length, TEASER will multiplicate this list for one whole year.

cooling_profilelist [K]

Cooling setpoint, regarding the zone temperature, of ideal static cooling for a day or similar. You can set a list of any length, TEASER will multiplicate this list for one whole year.

fixed_heat_flow_rate_persons: float [W/person]

fixed heat flow rate for one person in case of temperature independent calculation. Default value is 70 W/person and describes the maximum heat flow rate depending on the schedule.

personsfloat [Persons/m2]

Specific number of persons per square area. Annex: Used for internal gains

internal_gains_moisture_no_peoplefloat [g/(h m²)]

internal moisture production of plants, etc. except from people.

activity_degree_personsfloat [met]

default value is 1.2 met AixLib: used for heat flow rate calculation (internal_gains_mode=1) or heat flow rate, moisture and co2 gains (internal_gains_mode=3). Both are temperature and activity degree depending, calculation based on SIA2024 (2015) and Engineering ToolBox (2004). Annex: not used, heat flow rate is constant value fixed_heat_flow_rate_persons

ratio_conv_rad_persons: float

describes the ratio between convective and radiative heat transfer of the persons [convective/radiative]. Default values are derived from [12]. AixLib: Used in Zone record for internal gains Annex: Used for internal gains

persons_profile: list

Relative presence of persons 0-1 (e.g. 0.5 means that 50% of the total number of persons are currently in the room). Given for 24h. This value is taken from SIA 2024. You can set a list of any length, TEASER will multiplicate this list for one whole year. AixLib: Used for internal gains profile on top-level Annex: Used for internal gains

machines: float [W/m2]

area specific eletrical load of machines per m2. This value is taken from SIA 2024 and DIN V 18599-10 for medium occupancy. AixLib: Used in Zone record for internal gains, internalGainsMachinesSpecific Annex: Used for internal gains

ratio_conv_rad_machines: float

describes the ratio between convective and radiative heat transfer of the machines [convective/radiative]. Default values are derived from [18]. AixLib: Used in Zone record for internal gains Annex: Not used, all machines are convective (see Annex examples)

machines_profile: list

Relative presence of machines 0-1 (e.g. 0.5 means that 50% of the total number of machines are currently used in the room). Given for 24h. This value is taken from SIA 2024. You can set a list of any length, TEASER will multiplicate this list for one whole year. AixLib: Used for internal gains profile on top-level Annex: Used for internal gains

use_maintained_illuminance: bool

decision variable to determine wether lighting_power will be given by fixed_lighting_power or by calculation using the variables maintained_illuminance and lighting_efficiency_lumen

lighting_power: float [W/m2]

spec. electr. Power for lighting Determined by use_maintained_illuminance Not needed in input json file AixLib: Used in Zone record for internal gains Annex: Not used (see Annex examples)

fixed_lighting_power: float [W/m2]

spec. fixed electrical power for lighting. This value is taken from SIA 2024.

ratio_conv_rad_lightingfloat

describes the ratio between convective and radiative heat transfer of the lighting [convective/radiative]. Default values are derived from [19]. AixLib: Used in Zone record for internal gains, lighting

maintained_illuminancefloat [Lx]

maintained illuminance value for lighting. This value is partially taken from SIA 2024 (2015-10) and partially from DIN V EN 18599-10 (2018-09).

lighting_efficiency_lumen: float [lm/W_el]

lighting efficiency in lm/W_el, in german: Lichtausbeute

lighting_profil[float]

Relative presence of lighting 0-1 (e.g. 0.5 means that 50% of the total lighting power are currently used). Typically given for 24h. This is aligned to the user profile. AixLib: Used for internal gains profile on top-level Annex: Not used (see Annex examples)

min_ahu: float [m3/(m2*h)]

Zone specific minimum specific air flow supplied by the AHU. AixLib: Used on Multizone level for central AHU to determine total volume flow of each zone.

  • Note: The AixLib parameter “WithProfile” determines whether the (v_flow_profile combined with “min_ahu and max_ahu”) or the (persons_profile combined with “min_ahu and max_ahu”) is used for the AHU supply flow calculations. Per default: (v_flow_profile combined with “min_ahu and max_ahu”)

max_ahufloat [m3/(m2*h)]

Zone specific maximum specific air flow supplied by the AHU. AixLib: Used on Multizone level for central AHU to determine total volume flow of each zone.

  • Note: The AixLib parameter “WithProfile” determines whether the (v_flow_profile combined with “min_ahu and max_ahu”) or the (persons_profile combined with “min_ahu and max_ahu”) is used for the AHU supply flow calculations. Per default: (v_flow_profile combined with “min_ahu and max_ahu”)

with_ahuboolean

Zone is connected to central air handling unit or not AixLib: Used on Multizone level for central AHU.

use_constant_infiltrationboolean

choose whether window opening should be regarded. true = natural infiltration + ventilation due to a AHU false = natural infiltration + ventilation due to a AHU + window infiltration calculated by window opening model AixLib: Used on Zone level for ventilation.

normative_infiltration: float [1/h]

Infiltration rate for static heat load calculation. Default is 0.5 based on the DIN EN 12831-1:2017 minimal air exchange rate reference value.

base_infiltrationfloat [1/h]

base value for the natural infiltration without window openings AixLib: Used on Zone level for ventilation.

max_user_infiltrationfloat [1/h]

Additional infiltration rate for maximum persons activity AixLib: Used on Zone level for ventilation.

max_overheating_infiltrationlist [1/h]

Additional infiltration rate when overheating appears AixLib: Used on Zone level for ventilation.

max_summer_infiltrationlist

Additional infiltration rate in the summer with [infiltration_rate [1/h], Tmin [K], Tmax [K]]. Default values are aligned to [20]. AixLib: Used on Zone level for ventilation.

winter_reduction_infiltrationlist

Reduction factor of userACH for cold weather with [infiltration_rate [1/h], Tmin [K], Tmax [K]] AixLib: Used on Zone level for ventilation. Default values are aligned to [20].

schedules: pandas.DataFrame

All time dependent boundary attributes in one pandas DataFrame, used for export (one year in hourly timestamps.) Derived from json. Schedules can be adjusted by setting the following parameters:

  • adjusted_opening_times

  • first_saturday_of_year

  • profiles_weekend_factor

  • set_back_times

  • heating_set_back

  • cooling_set_back

To take adjustments into account you need to call calc_schedules() function afterwards. Note: python attribute, not customizable by user (derived from Json)

adjusted_opening_times: list

Sets the first and last hour of opening. These will cut or extend the existing profiles (machines, lights, persons). [opening_hour, closing_hour]

first_saturday_of_year: int

Weekday number of first saturday of the year [1:monday;7:tuesday]. Is needed to calc which days of profile should be reduced by profiles_weekend_factor.

profiles_weekend_factor: float

Factor to scale the existing profiles on weekends. For a reduction use values between [0;1]. Increase is also possible.

set_back_times: list
Sets the first and last hour outside of which the offset is applied.

List of two integers [first_hour, last_hour]

heating_set_back: float [K]
Set back temperature offset for heating profile. Positive (+) values

increase the profile, negative (-) decrease.

cooling_set_back: float [K]

Set back temperature offset for cooling profile. Positive (+) values increase the profile, negative (-) decrease.

adjust_profile_by_opening(profile)[source]

Adjusts the given profile by opening times specified for use condition with the parameter self.set_back_times.

Parameters:
profilelist

list with the given profile (lighting, machines, persons)

adjust_profile_by_weekend(profile)[source]

Scales the given profile on weekends. Factor for scaling is taken from self.profiles_weekend_factor.

Parameters:
profilelist

list with the given profile (lighting, machines, persons)

property adjusted_opening_times
calc_adj_schedules()[source]

calculates adjusted schedules for use conditions. When called the profiles get adjusted due to specified conditions. Afterwards the existing schedules will be overwritten by the resulting pandas dataframe with 8760 h.

property cooling_profile
property first_saturday_of_year
property heating_profile
property infiltration_rate
static is_periodic(profile_list)[source]
Checks if the given profile list is periodic.

Allowed periods are: 24h, 168h (7 days), 8760h (1year).

Parameters:
profile_list: list

given profile as list of hourly values.

property lighting_power
property lighting_profile
load_use_conditions(zone_usage, data_class=None)[source]

Load typical use conditions from JSON data base.

Loads Use conditions specified in the JSON.

Parameters:
zone_usagestr

code list for zone_usage according to 18599 or self defined

data_classDataClass()

DataClass containing the bindings for Use Conditions (typically this is the data class stored in prj.data, but the user can individually change that. Default is None which leads to an automatic setter to self.parent.parent.parent.data ( which is DataClass in current project)

property machines_profile
property parent
property persons
property persons_profile
save_use_conditions(data_class=None)[source]

Documentation is missing.

property schedules
property set_back_times
property use_maintained_illuminance
property with_ideal_thresholds