honeybee_energy.properties.room module

Room Energy Properties.

class honeybee_energy.properties.room.RoomEnergyProperties(host, program_type=None, construction_set=None, hvac=None)[source]

Bases: object

Energy Properties for Honeybee Room.

Parameters
  • host – A honeybee_core Room object that hosts these properties.

  • program_type – A honeybee ProgramType object to specify all default schedules and loads for the Room. If None, the Room will have a Plenum program (with no loads or setpoints). Default: None.

  • construction_set – A honeybee ConstructionSet object to specify all default constructions for the Faces of the Room. If None, the Room will use the honeybee default construction set, which is not representative of a particular building code or climate zone. Default: None.

  • hvac – A honeybee HVAC object (such as an IdealAirSystem) that specifies how the Room is conditioned. If None, it will be assumed that the Room is not conditioned. Default: None.

Properties:
  • host

  • program_type

  • construction_set

  • hvac

  • people

  • lighting

  • electric_equipment

  • gas_equipment

  • service_hot_water

  • infiltration

  • ventilation

  • setpoint

  • window_vent_control

  • is_conditioned

ToString()[source]
abolute_electric_equipment(watts, conversion=1)[source]

Set the abolute wattage of electric equipment in the Room.

This overwrites the RoomEnergyProperties’s electric equipment per area but preserves all schedules and other properties. If the Room has no electric equipment definition, a new one with an Always On schedule will be created. Note that, if the host Room has no floors, the electric equipment load will be zero.

Parameters
  • watts – Number for the installed wattage of electric equipment in the room.

  • conversion – Factor to account for the case where host Room geometry is not in meters. This will be multiplied by the floor area so it should be 0.001 for millimeters, 0.305 for feet, etc. (Default: 1).

abolute_gas_equipment(watts, conversion=1)[source]

Set the abolute wattage of gas equipment in the Room.

This overwrites the RoomEnergyProperties’s gas equipment per area but preserves all schedules and other properties. If the Room has no gas equipment definition, a new one with an Always On schedule will be created. Note that, if the host Room has no floors, the gas equipment load will be zero.

Parameters
  • watts – Number for the installed wattage of gas equipment in the room.

  • conversion – Factor to account for the case where host Room geometry is not in meters. This will be multiplied by the floor area so it should be 0.001 for millimeters, 0.305 for feet, etc. (Default: 1).

abolute_infiltration(flow_rate, conversion=1)[source]

Set the abolute flow rate of infiltration for the Room in m3/s.

This overwrites the RoomEnergyProperties’s infiltration flow per exterior area but preserves all schedules and other properties. If the Room has no infiltration definition, a new one with an Always On schedule will be created. Note that, if the host Room has no exterior faces, the infiltration load will be zero.

Parameters
  • flow_rate – Number for the infiltration flow rate in m3/s.

  • conversion – Factor to account for the case where host Room geometry is not in meters. This will be multiplied by the floor area so it should be 0.001 for millimeters, 0.305 for feet, etc. (Default: 1).

abolute_infiltration_ach(air_changes_per_hour, conversion=1)[source]

Set the abolute flow rate of infiltration for the Room in ACH.

This overwrites the RoomEnergyProperties’s infiltration flow per exterior area but preserves all schedules and other properties. If the Room has no infiltration definition, a new one with an Always On schedule will be created. Note that, if the host Room has no exterior faces, the infiltration load will be zero.

Parameters
  • air_changes_per_hour – Number for the infiltration flow rate in ACH.

  • conversion – Factor to account for the case where host Room geometry is not in meters. This will be multiplied by the floor area so it should be 0.001 for millimeters, 0.305 for feet, etc. (Default: 1).

abolute_lighting(watts, conversion=1)[source]

Set the abolute wattage of lighting in the Room.

This overwrites the RoomEnergyProperties’s lighting per area but preserves all schedules and other lighting properties. If the Room has no lighting definition, a new one with an Always On schedule will be created. Note that, if the host Room has no floors, the lighting load will be zero.

Parameters
  • watts – Number for the installed wattage of lighting in the room.

  • conversion – Factor to account for the case where host Room geometry is not in meters. This will be multiplied by the floor area so it should be 0.001 for millimeters, 0.305 for feet, etc. (Default: 1).

abolute_people(person_count, conversion=1)[source]

Set the abolute number of people in the Room.

This overwrites the RoomEnergyProperties’s people per area but preserves all schedules and other people properties. If the Room has no people definition, a new one with an Always On schedule will be created. Note that, if the host Room has no floors, the people load will be zero.

Parameters
  • person_count – Number for the maximum quantity of people in the room.

  • conversion – Factor to account for the case where host Room geometry is not in meters. This will be multiplied by the floor area so it should be 0.001 for millimeters, 0.305 for feet, etc. (Default: 1).

abolute_service_hot_water(flow, conversion=1)[source]

Set the abolute flow rate of service hot water use in the Room.

This overwrites the RoomEnergyProperties’s hot water flow per area but preserves all schedules and other properties. If the Room has no service hot water definition, a new one with an Always On schedule will be created. Note that, if the host Room has no floors, the service hot water flow will be zero.

Parameters
  • flow – Number for the peak flow rate of service hot water in the room.

  • conversion – Factor to account for the case where host Room geometry is not in meters. This will be multiplied by the floor area so it should be 0.001 for millimeters, 0.305 for feet, etc. (Default: 1).

add_daylight_control_to_center(distance_from_floor, illuminance_setpoint=300, control_fraction=1, min_power_input=0.3, min_light_output=0.2, off_at_minimum=False)[source]

Try to assign a DaylightingControl object to the center of the Room.

If the Room is too concave and the center point does not lie within the Room volume, this method wil return None and no daylighting control will be assigned.

Parameters
  • distance_from_floor – A number for the distance that the daylight sensor is from the floor. Typical values are around 0.8 meters.

  • illuminance_setpoint – A number for the illuminance setpoint in lux beyond which electric lights are dimmed if there is sufficient daylight. (Default: 300 lux).

  • control_fraction – A number between 0 and 1 that represents the fraction of the Room lights that are dimmed when the illuminance at the sensor position is at the specified illuminance. 1 indicates that all lights are dim-able while 0 indicates that no lights are dim-able. Deeper rooms should have lower control fractions to account for the face that the lights in the back of the space do not dim in response to suitable daylight at the front of the room. (Default: 1).

  • min_power_input – A number between 0 and 1 for the the lowest power the lighting system can dim down to, expressed as a fraction of maximum input power. (Default: 0.3).

  • min_light_output – A number between 0 and 1 the lowest lighting output the lighting system can dim down to, expressed as a fraction of maximum light output. (Default: 0.2).

  • off_at_minimum – Boolean to note whether lights should switch off completely when they get to the minimum power input. (Default: False).

Returns

A DaylightingControl object if the sensor was successfully assigned to the center of the Room. Will be None if the zone was so concave that a sensor would not be assigned.

add_default_ideal_air()[source]

Add a default IdealAirSystem to this Room.

The identifier of this system will be derived from the room identifier and will align with the naming convention that EnergyPlus uses for templates Ideal Air systems.

apply_properties_from_dict(abridged_data, construction_sets, program_types, hvacs, schedules)[source]

Apply properties from a RoomEnergyPropertiesAbridged dictionary.

Parameters
  • abridged_data – A RoomEnergyPropertiesAbridged dictionary (typically coming from a Model).

  • construction_sets – A dictionary of ConstructionSets with identifiers of the sets as keys, which will be used to re-assign construction_sets.

  • program_types – A dictionary of ProgramTypes with identifiers of the types as keys, which will be used to re-assign program_types.

  • hvacs – A dictionary of HVACSystems with the identifiers of the systems as keys, which will be used to re-assign hvac to the Room.

  • schedules – A dictionary of Schedules with identifiers of the schedules ask keys, which will be used to re-assign schedules.

assign_ventilation_opening(vent_opening)[source]

Assign a VentilationOpening object to all operable Apertures on this Room.

This method will handle the duplication of the VentilationOpening object to ensure that each aperture gets a unique object that can export the correct area and height properties of its parent.

Parameters

vent_opening – A VentilationOpening object to be duplicated and assigned to all of the operable apertures of the Room.

Returns

A list of Apertures for which ventilation opening properties were set. This can be used to perform additional operations on the apertures, such as changing their construction.

duplicate(new_host=None)[source]

Get a copy of this object.

Parameters

new_host – A new Room object that hosts these properties. If None, the properties will be duplicated with the same host.

envelope_components_by_type()[source]

Get groups for room envelope components by boundary condition and type.

The groups created by this function correspond to the structure of the crack template data used to generate the AirflowNetwork but can be useful for other purposes. However, any parts of the envelope with a boundary condition other than Outdoors and Surface will be excluded (eg. Ground or Adiabatic).

Returns

A tuple with five groups of exterior envelope types

  • ext_walls - A list of exterior Wall type Face objects.

  • ext_roofs - A list of exterior RoofCeiling type Face objects.

  • ext_floors - A list of exterior Floor type Face objects, like you would find in a cantilevered Room.

  • ext_apertures - A list of exterior Aperture Face objects.

  • ext_doors - A list of exterior Door Face objects.

A tuple with four groups of interior faces types

  • int_walls: List of interior Wall type Face objects.

  • int_floorceilings: List of interior RoofCeiling and Floor type Face objects.

  • int_apertures: List of interior Aperture Face objects.

  • int_doors: List of interior Door Face objects.

  • int_air: List of interior Faces with AirBoundary face type.

exterior_afn_from_infiltration_load(exterior_face_groups, air_density=1.2041, delta_pressure=4)[source]

Assign AirflowNetwork parameters using the room’s infiltration rate.

This will assign air leakage parameters to the Room’s exterior Faces that produce a total air flow rate equivalent to the room infiltration rate at an envelope pressure difference of 4 Pa. However, the individual flow air leakage parameters are not meant to be representative of real values, since the infiltration flow rate is an average of the actual, variable surface flow dynamics.

VentilationOpening objects will be added to Aperture and Door objects if not already defined, with the fraction_area_operable set to 0. If VentilationOpening objects are already defined, only the parameters defining leakage when the openings are closed will be overwritten. AFNCrack objects will be added to all external and internal Face objects, and any existing AFNCrack objects will be overwritten.

Parameters
  • exterior_face_groups

    A tuple with five types of the exterior room envelope

    • ext_walls - A list of exterior Wall type Face objects.

    • ext_roofs - A list of exterior RoofCeiling type Face objects.

    • ext_floors - A list of exterior Floor type Face objects, like you would find in a cantilevered Room.

    • ext_apertures - A list of exterior Aperture Face objects.

    • ext_doors - A list of exterior Door Face objects.

  • air_density – Air density in kg/m3. (Default: 1.2041 represents air density at a temperature of 20 C and 101325 Pa).

  • delta_pressure

    Reference air pressure difference across the building envelope orifice in Pascals used to calculate infiltration crack flow coefficients. The resulting average simulated air pressure difference will roughly equal this delta_pressure times the nth root of the ratio between the simulated and target room infiltration rates:

    dP_sim = (Q_sim / Q_target)^(1/n) * dP_ref
    
    where:
        dP: delta_pressure, the reference air pressure difference [Pa]
        dP_sim: Simulated air pressure difference [Pa]
        Q_sim: Simulated volumetric air flow rate per area [m3/s/m2]
        Q_target: Target volumetric air flow rate per area [m3/s/m2]
        n: Air mass flow exponent [-]
    

    If attempting to replicate the room infiltration rate per exterior area, delta_pressure should be set to an approximation of the simulated air pressure difference described in the above formula. Default 4 represents typical building pressures.

classmethod from_dict(data, host)[source]

Create RoomEnergyProperties from a dictionary.

Note that the dictionary must be a non-abridged version for this classmethod to work.

Parameters
  • data – A dictionary representation of RoomEnergyProperties with the format below.

  • host – A Room object that hosts these properties.

{
"type": 'RoomEnergyProperties',
"construction_set": {},  # A ConstructionSet dictionary
"program_type": {},  # A ProgramType dictionary
"hvac": {}, # A HVACSystem dictionary
"people":{},  # A People dictionary
"lighting": {},  # A Lighting dictionary
"electric_equipment": {},  # A ElectricEquipment dictionary
"gas_equipment": {},  # A GasEquipment dictionary
"service_hot_water": {},  # A ServiceHotWater dictionary
"infiltration": {},  # A Infiltration dictionary
"ventilation": {},  # A Ventilation dictionary
"setpoint": {},  # A Setpoint dictionary
"daylighting_control": {},  # A DaylightingControl dictionary
"window_vent_control": {}  # A VentilationControl dictionary
}
make_ground(soil_construction)[source]

Change the properties of the host Room to reflect those of a ground surface.

This is particularly useful for setting up outdoor thermal comfort maps to account for the surface temperature of the ground. Modeling the ground as a room this way will ensure that shadows other objects cast upon it are accounted for along with the storage of heat in the ground surface.

The turning of a Room into a ground entails:

  • Setting all constructions to be indicative of a certain soil type.

  • Setting all Faces except the roof to have a Ground boundary condition.

  • Removing all loads and schedules assigned to the Room.

Parameters

soil_construction – An OpaqueConstruction that reflects the soil type of the ground. If a multi-layered construction is input, the multiple layers will only be used for the roof Face of the Room and all other Faces will get a construction with the inner-most layer assigned.

make_plenum(conditioned=False, remove_infiltration=False)[source]

Turn the host Room into a plenum with no internal loads.

This includes removing all people, lighting, equipment, hot water, and mechanical ventilation. By default, the heating/cooling system and setpoints will also be removed but they can optionally be kept. Infiltration is kept by default but can optionally be removed as well.

This is useful to appropriately assign properties for closets, underfloor spaces, and drop ceilings.

Parameters
  • conditioned – Boolean to indicate whether the plenum is conditioned with a heating/cooling system. If True, the setpoints of the Room will also be kept in addition to the heating/cooling system (Default: False).

  • remove_infiltration – Boolean to indicate whether infiltration should be removed from the Rooms. (Default: False).

move(moving_vec)[source]

Move this object along a vector.

Parameters

moving_vec – A ladybug_geometry Vector3D with the direction and distance to move the object.

reflect(plane)[source]

Reflect this object across a plane.

Parameters

plane – A ladybug_geometry Plane across which the object will be reflected.

remove_child_constructions()[source]

Remove constructions assigned to the Room’s Faces, Apertures, Doors and Shades.

This means that all constructions of the Room will be assigned by the Room’s construction_set (or the Honeybee default ConstructionSet if the Room has no construction set).

remove_ventilation_opening()[source]

Remove all VentilationOpening objects assigned to the Room’s Apertures.

reset_to_default()[source]

Reset all of the properties assigned at the level of this Room to the default.

rotate(angle, axis, origin)[source]

Rotate this object by a certain angle around an axis and origin.

Parameters
  • angle – An angle for rotation in degrees.

  • axis – Rotation axis as a Vector3D.

  • origin – A ladybug_geometry Point3D for the origin around which the object will be rotated.

rotate_xy(angle, origin)[source]

Rotate this object counterclockwise in the world XY plane by a certain angle.

Parameters
  • angle – An angle in degrees.

  • origin – A ladybug_geometry Point3D for the origin around which the object will be rotated.

scale(factor, origin=None)[source]

Scale this object by a factor from an origin point.

Parameters
  • factor – A number representing how much the object should be scaled.

  • origin – A ladybug_geometry Point3D representing the origin from which to scale. If None, it will be scaled from the World origin (0, 0, 0).

static solve_norm_area_flow_coefficient(flow_per_exterior_area, flow_exponent=0.65, air_density=1.2041, delta_pressure=4)[source]

Get normalized mass flow coefficient [kg/(m2 s P^n)] from infiltration per area.

The normalized area air mass flow coefficient is derived from a zone’s infiltration flow rate using the power law relationship between pressure and air flow:

Qva * d = Cqa * dP^n

where:
    Cqa: Air mass flow coefficient per unit meter at 1 Pa [kg/m2/s/P^n]
    Qva: Volumetric air flow rate per area [m3/s/m2]
    d: Air density [kg/m3]
    dP: Change in pressure across building envelope orifice [Pa]
    n: Air mass flow exponent [-]

Rearranged to solve for Cqa

Cqa = (Qva * d) / dP^n

The resulting value has units of kg/(m2-s-P^n) @ <delta_pressure> Pa, while the EnergyPlus AirflowNetwork requires this value to be in kg/(s-Pa) @ 1 Pa. Thus this value needs to be multiplied by its corresponding exposed surface area. Since the actual ratio between mass infiltration and pressure difference (raised by n) is constant, we assume solving for the flow coefficient at the delta_pressure value is equivalent to solving it at the required 1 Pa.

Parameters
  • flow_per_exterior_area – A numerical value for the intensity of infiltration in m3/s per square meter of exterior surface area.

  • air_density – Air density in kg/m3. (Default: 1.2041 represents air density at a temperature of 20 C and 101325 Pa).

  • flow_exponent – A numerical value for the air mass flow exponent. (Default: 0.65).

  • delta_pressure – Reference air pressure difference across building envelope orifice in Pascals. Default 4 represents typical building pressures.

Returns

Air mass flow coefficient per unit meter at 1 Pa [kg/m2/s/P^n]

static solve_norm_perimeter_flow_coefficient(norm_area_flow_coefficient, face_area, face_perimeter)[source]

Get mass flow coefficient [kg/(s m P^n)] from a normalied one and geometry.

This parameter is used to derive air flow for the four cracks around the perimeter of a closed window or door: one along the bottom, one along the top, and one on each side. Since this value is derived from the infiltration flow rate per exterior area, which represents an average over many types of air leakage rates, this value is not intended to be representative of actual opening edges flow coefficients. The normalized perimeter air mass flow coefficient is derived from its infiltration flow rate using the following formula:

Qva * d * A = Cql * L * dP^n

where:
    Cql: Air mass flow coefficient per unit length at 1 Pa [kg/m/s/P^n]
    Qva: Volumetric air flow rate per length [m3/s/m]
    d: Air density [kg/m3]
    A: Surface area of opening [m2]
    L: Surface perimeter of opening [m]
    dP: Change in pressure across building envelope [Pa]
    n: Air mass flow exponent [-]

Since (Qva * d) / dP^n equals Cqa the normalized area flow coefficient, this can be simplified and rearranged to solve for Cql with the following formula:

(Cqa * dP^n) * A = Cql * L * dP^n
Cql = ((Cqa * dP^n) * A) / (L * dP^n)
    = Cqa * A / L

The resulting value has units of kg/(m-s-P^n) @ <delta_pressure> Pa, while the EnergyPlus AirflowNetwork requires this value to be in kg/(s-Pa) @ 1 Pa. Thus unlike the surface area flow_coefficient, this coefficient is normalized per unit length. Since the actual ratio between mass infiltration and pressure difference (raised by n) is constant, we assume solving for the flow coefficient at the delta_pressure value is equivalent to solving it at the required 1 Pa.

Parameters
  • norm_area_flow_coefficient – Air mass flow coefficient per unit meter at 1 Pa [kg/m2/s/P^n]

  • face_area – A numerical value for the total exterior area in m2.

  • face_perimeter – A numerical value for the total exterior perimeter in meters.

Returns

Air mass flow coefficient per unit length at 1 Pa [kg/m/s/P^n]

to_dict(abridged=False)[source]

Return Room energy properties as a dictionary.

Parameters

abridged – Boolean for whether the full dictionary of the Room should be written (False) or just the identifier of the the individual properties (True). Default: False.

window_construction_by_orientation(construction, orientation=0, offset=45, north_vector=Vector2D(0.0, 1.0))[source]

Set the construction of exterior Apertures in Walls facing a given orientation.

This is useful for testing orientation-specific energy conservation strategies or creating AHSRAE baseline buildings.

Parameters
  • construction – A WindowConstruction that will be assigned to all of the room’s Apertures in Walls that are facing a certain orientation.

  • orientation – A number between 0 and 360 that represents the orientation in degrees to which the construction will be assigned. 0 = North, 90 = East, 180 = South, 270 = West. (Default: 0 for North).

  • offset – A number between 0 and 180 that represents the offset from the orientation in degrees for which the construction will be assigned. For example, a value of 45 indicates that any Apertures falling in the 90 degree range around the orientation will get the input construction. (Default: 45).

  • north_vector – A ladybug_geometry Vector3D for the north direction. Default is the Y-axis (0, 1).

property construction_set

Get or set the Room ConstructionSet object.

If not set, it will be the Honeybee default generic ConstructionSet.

property daylighting_control

Get or set a DaylightingControl object to dictate the dimming of lights.

If None, the lighting will respond only to the schedule and not the daylight conditions within the room.

property electric_equipment

Get or set an ElectricEquipment object to describe the equipment usage.

property gas_equipment

Get or set a GasEquipment object to describe the equipment usage.

property host

Get the Room object hosting these properties.

property hvac

Get or set the HVAC object for the Room.

If None, it will be assumed that the Room is not conditioned.

property infiltration

Get or set a Infiltration object to to describe the outdoor air leakage.

property is_conditioned

Boolean to note whether the Room is conditioned.

property lighting

Get or set a Lighting object to describe the lighting usage of the Room.

property people

Get or set a People object to describe the occupancy of the Room.

property program_type

Get or set the ProgramType object for the Room.

If not set, it will default to a plenum ProgramType (with no loads assigned).

property service_hot_water

Get or set a ServiceHotWater object to describe the hot water usage.

property setpoint

Get or set a Setpoint object for the temperature setpoints of the Room.

property ventilation

Get or set a Ventilation object for the minimum outdoor air requirement.

property window_vent_control

Get or set a VentilationControl object to dictate the opening of windows.

If None, the windows will never open.