diff --git a/dragonfly_trace/airflows.py b/dragonfly_trace/airflows.py new file mode 100644 index 0000000..dec3359 --- /dev/null +++ b/dragonfly_trace/airflows.py @@ -0,0 +1,157 @@ +# coding=utf-8 +"""Methods to write room airflows to matrices for Trane TRACE tables.""" +from __future__ import division + +from ladybug.datatype.volumeflowrate import VolumeFlowRate +from ladybug.datatype.volumeflowrateintensity import VolumeFlowRateIntensity + + +def airflows_trace700_matrix(rooms, si_units=False): + """Get a matrix for the "Airflows" table of the TRACE 700 Component Tree. + + Args: + rooms: A list of dragonfly Room2Ds and honeybee Rooms for which the + TRACE 700 "Airflows" matrix will be returned. + si_units: Boolean to note whether the units of the values in the resulting + matrix are in SI (True) instead of IP (False). (Default: False). + + Returns: + A list of list where each sublist represents a row of the Airflows + table of the TRACE 700 Component Tree. + """ + # set up things for unit conversion + flow_unit = 'L/s' if si_units else 'cfm' + flow_intensity_unit = 'L/s/sq m' if si_units else 'cfm/sq ft of wall' + flow, fi = VolumeFlowRate(), VolumeFlowRateIntensity() + + # set up the names of the rows + row_names = [ + 'Room Description', + 'Adjacent Air Transfer from Room', + 'Airflow Template', + 'Ventilation Method', + 'Ventilation Type', + 'Ventilation Cooling', + 'Ventilation Cooling Units', + 'Ventilation Heating', + 'Ventilation Heating Units', + 'People-based Rate (Rp)', + 'People-based Unit', + 'Area-based Rate (Ra)', + 'Area-based Unit', + 'Ventilation Schedule', + 'Std62.1-2004-2010 Clg Ez', + 'Std62.1-2004-2010 Clg Ez Pct', + 'Std62.1-2004-2010 Htg Ez', + 'Std62.1-2004-2010 Htg Ez Pct', + 'Std62.1-2004-2010 Er', + 'Std62.1-2004-2010 Er Pct', + 'DCV Min OA Intake', + 'DCV Min OA Intake Unit', + 'Infiltration Type', + 'Infiltration Cooling', + 'Infiltration Cooling Units', + 'Infiltration Heating', + 'Infiltration Heating Units', + 'Infiltration Schedule', + 'Main Supply Cooling', + 'Main Supply Cooling Units', + 'Main Supply Heating', + 'Main Supply Heating Units', + 'Aux Supply Cooling', + 'Aux Supply Cooling Units', + 'Aux Supply Heating', + 'Aux Supply Heating Units', + 'Cooling VAV Min Airflow', + 'Cooling VAV Min Airflow Units', + 'Heating VAV Max Airflow', + 'Heating VAV Max Airflow Units', + 'VAV Airflow Schedule', + 'VAV Type', + 'Room Exhaust', + 'Room Exhaust Units', + 'Room Exhaust Schedule' + ] + + # loop through the rooms and add each of the attributes + airflow_mtx = [] + for room in rooms: + # calculate the total outdoor air ventilation and infiltration + vent_obj = room.properties.energy.ventilation + vent_flow = vent_obj.room_absolute_flow(room) if vent_obj is not None else 0 + inf_obj = room.properties.energy.infiltration + inf_flow = inf_obj.flow_per_exterior_area if inf_obj is not None else 0 + + # put all attributes into a list + airflow_attr = [ + room.display_name, + '<>', + 'Default', + 'Sum of Outdoor Air', + 'None', + vent_flow, + flow_unit, + vent_flow, + flow_unit, + '', + '', + '', + '', + 'Available (100%)', + '', + '', + '', + '', + '', + '', + '', + '', + 'None', + inf_flow, + flow_intensity_unit, + inf_flow, + flow_intensity_unit, + 'Available (100%)', + '', + 'To be calculated', + '', + 'To be calculated', + '', + 'To be calculated', + '', + 'To be calculated', + '', + '% Clg Airflow', + '', + '% Clg Airflow', + 'Available (100%)', + 'Default', + '0', + 'air changes/hr', + 'Available (100%)' + ] + airflow_mtx.append(airflow_attr) + + # transpose the matrix and convert SI units to IP + airflow_matrix = [list(row) for row in zip(*airflow_mtx)] + if not si_units: + airflow_matrix[5] = list(flow.to_unit(airflow_matrix[5], 'cfm', 'm3/s')) + airflow_matrix[7] = list(flow.to_unit(airflow_matrix[7], 'cfm', 'm3/s')) + airflow_matrix[23] = list(fi.to_unit(airflow_matrix[23], 'cfm/ft2', 'm3/s-m2')) + airflow_matrix[25] = list(fi.to_unit(airflow_matrix[25], 'cfm/ft2', 'm3/s-m2')) + else: + airflow_matrix[5] = list(flow.to_unit(airflow_matrix[5], 'L/s', 'm3/s')) + airflow_matrix[7] = list(flow.to_unit(airflow_matrix[7], 'L/s', 'm3/s')) + airflow_matrix[23] = list(fi.to_unit(airflow_matrix[23], 'L/s-m2', 'm3/s-m2')) + airflow_matrix[25] = list(fi.to_unit(airflow_matrix[25], 'L/s-m2', 'm3/s-m2')) + + # round the numbers so that they display nicely + for row_i in (5, 7): + airflow_matrix[row_i] = [round(val, 1) for val in airflow_matrix[row_i]] + for row_i in (23, 25): + airflow_matrix[row_i] = [round(val, 3) for val in airflow_matrix[row_i]] + + # insert the column for the row names + for row_name, row in zip(row_names, airflow_matrix): + row.insert(0, row_name) + return airflow_matrix diff --git a/dragonfly_trace/cli/__init__.py b/dragonfly_trace/cli/__init__.py index 351c4f6..b20e1cd 100644 --- a/dragonfly_trace/cli/__init__.py +++ b/dragonfly_trace/cli/__init__.py @@ -2,6 +2,8 @@ import click from dragonfly.cli import main +from .translate import translate + @click.group(help='dragonfly trace commands.') @click.version_option() @@ -10,6 +12,7 @@ def trace(): # add sub-commands to trace +trace.add_command(translate) # add trace sub-commands main.add_command(trace) diff --git a/dragonfly_trace/cli/translate.py b/dragonfly_trace/cli/translate.py new file mode 100644 index 0000000..0209490 --- /dev/null +++ b/dragonfly_trace/cli/translate.py @@ -0,0 +1,149 @@ +"""dragonfly trace translation commands.""" +import click +import sys +import logging + +from ladybug.commandutil import process_content_to_output +from dragonfly.model import Model +from dragonfly_trace.writer import model_to_trace700_csv as model_to_csv + + +_logger = logging.getLogger(__name__) + + +@click.group(help='Commands for translating URBANopt systems to OSM/IDF.') +def translate(): + pass + + +@translate.command('model-to-trace700-csv') +@click.argument('model-file', type=click.Path( + exists=True, file_okay=True, dir_okay=False, resolve_path=True)) +@click.option('--multiplier/--full-geometry', ' /-fg', help='Flag to note if the ' + 'multipliers on each Building story will be passed along to the ' + 'generated Honeybee Room objects or if full geometry objects should be ' + 'written for each story in the building.', default=True, show_default=True) +@click.option('--plenum/--separate-plenum', '-p/-sp', help='Flag to indicate whether ' + 'ceiling/floor plenum depths assigned to Room2Ds should simply be ' + 'reported as plenum depths in the CSV or they should be used to generate ' + 'distinct separated plenum rooms in the translation.', + default=True, show_default=True) +@click.option('--merge-method', '-m', help='Text to describe how the Room2Ds should ' + 'be merged into individual Rooms during the translation. Specifying a ' + 'value here can be an effective way to reduce the number of Room ' + 'volumes in the resulting Model and, ultimately, yield a faster simulation ' + 'time with less results to manage. Choose from: None, Zones, PlenumZones, ' + 'Stories, PlenumStories.', type=str, default='None', show_default=True) +@click.option('--imperial/--metric', '-ip/-si', help='Flag to note whether imperial ' + 'or metric units should be used for values in the output CSV.', + default=True, show_default=True) +@click.option('--geometry-ids/--geometry-names', ' /-gn', help='Flag to note whether a ' + 'cleaned version of all geometry display names should be used instead ' + 'of identifiers when translating the Model.', + default=True, show_default=True) +@click.option('--resource-ids/--resource-names', ' /-rn', help='Flag to note whether a ' + 'cleaned version of all resource display names should be used instead ' + 'of identifiers when translating the Model.', + default=True, show_default=True) +@click.option('--output-file', '-f', help='Optional CSV file to output the string ' + 'of the translation. By default it printed out to stdout.', + type=click.File('w'), default='-', show_default=True) +def model_to_trace700_csv_cli( + model_file, multiplier, plenum, merge_method, imperial, + geometry_ids, resource_ids, output_file +): + """Translate a Dragonfly Model to a CSV with tables for TRACE 700 attributes. + + The resulting CSV tables can be copied into the tables that appear in the + Component Tree view of TRACE 700. The order and organization of rooms in + the resulting matrix should match that of the gbXML produced from the same model. + + \b + Args: + model_file: Full path to a Dragonfly Model file (DFJSON or DFpkl). + """ + try: + full_geometry = not multiplier + separate_plenum = not plenum + metric = not imperial + geo_names = not geometry_ids + res_names = not resource_ids + model_to_trace700_csv( + model_file, full_geometry, separate_plenum, merge_method, + metric, geo_names, res_names, output_file + ) + except Exception as e: + _logger.exception('System translation failed.\n{}'.format(e)) + sys.exit(1) + else: + sys.exit(0) + + +def model_to_trace700_csv( + model_file, full_geometry=False, separate_plenum=False, merge_method='None', + metric=False, geometry_names=False, resource_names=False, output_file=None, + multiplier=True, plenum=True, imperial=True, geometry_ids=True, resource_ids=True +): + """Translate a Dragonfly Model to a CSV with tables for TRACE 700 attributes. + + The resulting CSV tables can be copied into the tables that appear in the + Component Tree view of TRACE 700. The order and organization of rooms in + the resulting matrix should match that of the gbXML produced from the same model. + + Args: + model: A dragonfly Model for which a TRACE 700 CSV matrix will be returned. + multiplier: If True, the multipliers on this Model's Stories will be + passed along to the CSV. If False, full geometry objects will be written + for each and every floor in the building that are represented through + multipliers and all resulting multipliers will be 1. (Default: True). + separate_plenum: Boolean to indicate whether ceiling/floor plenum depths + assigned to Room2Ds should simply be reported as plenum depths in the + CSV or they should be used to generate distinct separated plenum + rooms in the translation. (Default: False). + merge_method: An optional text string to describe how the Room2Ds should + be merged into individual Rooms during the translation. Specifying a + value here can be an effective way to reduce the number of Room + volumes in the resulting model and, ultimately, yield a faster + simulation time in the destination engine with fewer results + to manage. Note that Room2Ds will only be merged if they form a + continuous volume. Otherwise, there will be multiple Rooms per + zone or story, each with an integer added at the end of their + identifiers. Choose from the following options: + + * None - No merging of Room2Ds will occur + * Zones - Room2Ds in the same zone will be merged + * PlenumZones - Only plenums in the same zone will be merged + * Stories - Rooms in the same story will be merged + * PlenumStories - Only plenums in the same story will be merged + + metric: Boolean to note whether the units of the values in the resulting + matrix are in SI (True) instead of IP (False). (Default: False). + geometry_names: Boolean to note whether a cleaned version of all geometry + display names should be used instead of identifiers when translating + the Model to OSM and IDF. Using this flag will affect all Rooms, Faces, + Apertures, Doors, and Shades. It will generally result in more read-able + names in the OSM and IDF but this means that it will not be easy to map + the EnergyPlus results back to the original Honeybee Model. Cases + of duplicate IDs resulting from non-unique names will be resolved + by adding integers to the ends of the new IDs that are derived from + the name. (Default: False). + resource_names: Boolean to note whether a cleaned version of all resource + display names should be used instead of identifiers when translating + the Model to OSM and IDF. Using this flag will affect all Materials, + Constructions, ConstructionSets, Schedules, Loads, and ProgramTypes. + It will generally result in more read-able names for the resources + in the OSM and IDF. Cases of duplicate IDs resulting from non-unique + names will be resolved by adding integers to the ends of the new IDs + that are derived from the name. (Default: False). + output_file: Optional CSV file to output the CSV string of the translation. + By default this string will be returned from this method. + """ + # load the model and translate it to a CSV + model = Model.from_file(model_file) + exclude_plenums = not separate_plenum + csv_str = model_to_csv( + model, multiplier, exclude_plenums, merge_method, + metric, geometry_names, resource_names + ) + + return process_content_to_output(csv_str, output_file) diff --git a/dragonfly_trace/loads.py b/dragonfly_trace/loads.py new file mode 100644 index 0000000..631a3a3 --- /dev/null +++ b/dragonfly_trace/loads.py @@ -0,0 +1,197 @@ +# coding=utf-8 +"""Methods to write room loads to matrices for Trane TRACE tables.""" +from __future__ import division + +from ladybug.datatype.power import Power +from ladybug.datatype.energyflux import EnergyFlux +from honeybee.altnumber import autocalculate + + +def people_and_lights_trace700_matrix(rooms, si_units=False): + """Get a matrix for the "People & Lighting" table of the TRACE 700 Component Tree. + + Args: + rooms: A list of dragonfly Room2Ds and honeybee Rooms for which the + TRACE 700 "People & Lighting" matrix will be returned. + si_units: Boolean to note whether the units of the values in the resulting + matrix are in SI (True) instead of IP (False). (Default: False). + + Returns: + A list of list where each sublist represents a row of the People & Lighting + table of the TRACE 700 Component Tree. + """ + # set up things for unit conversion + power_unit = 'kW' if si_units else 'Btu/h' + flux_unit = 'W/sq m' if si_units else 'W/sq ft' + power, flux = Power(), EnergyFlux() + + # set up the names of the rows + row_names = [ + 'Room Description', + 'Internal Loads Template', + 'People Activity', + 'People Schedule', + 'People Value', + 'People Value Units', + 'People Sensible ({})'.format(power_unit), + 'People Latent ({})'.format(power_unit), + 'Workstation Density', + 'Workstation Density Units', + 'Lighting Type', + 'ASHRAE Space/Area Type', + 'Lighting Value', + 'Lighting Value Units', + 'Lighting Schedule' + ] + + # loop through the rooms and add each of the attributes + load_mtx = [] + for room in rooms: + # calculate the total number of people + ppl_obj = room.properties.energy.people + if ppl_obj is not None: + ppl_count = room.floor_area * ppl_obj.people_per_area + act_sch = ppl_obj.activity_schedule + try: # ScheduleRuleset + vals = [] + for sch in act_sch.typical_day_schedules: + vals.extend(sch.values) + act_level = max(vals) + except AttributeError: # ScheduleFixedInterval + act_level = max(act_sch.values) + latent_fract = ppl_obj.latent_fraction \ + if ppl_obj.latent_fraction != autocalculate else 0.5 + sensible_ppl = act_level * (1 - latent_fract) + latent_ppl = act_level * latent_fract + else: + ppl_count = 0 + sensible_ppl = 73.26775 + latent_ppl = 73.26775 + # get the lighting power density + light_obj = room.properties.energy.lighting + if light_obj is not None: + lpd = light_obj.watts_per_area + light_type = r'LED Lighting 100% load to space' + + # put all attributes into a list + load_attr = [ + room.display_name, + 'Default', + 'None', + 'Cooling Only (Design)', + ppl_count, + 'People', + sensible_ppl, + latent_ppl, + 1, + 'workstation/person', + light_type, + '', + lpd, + flux_unit, + 'Cooling Only (Design)' + ] + load_mtx.append(load_attr) + + # transpose the matrix and convert SI units to IP + load_matrix = [list(row) for row in zip(*load_mtx)] + if not si_units: + load_matrix[6] = list(power.to_unit(load_matrix[6], 'Btu/h', 'W')) + load_matrix[7] = list(power.to_unit(load_matrix[7], 'Btu/h', 'W')) + load_matrix[12] = list(flux.to_unit(load_matrix[12], 'W/ft2', 'W/m2')) + else: + load_matrix[6] = list(power.to_unit(load_matrix[6], 'kW', 'W')) + load_matrix[7] = list(power.to_unit(load_matrix[7], 'kW', 'W')) + + # round the numbers so that they display nicely + for row_i in (6, 7): + load_matrix[row_i] = [round(val) for val in load_matrix[row_i]] + for row_i in (4, 12): + load_matrix[row_i] = [round(val, 3) for val in load_matrix[row_i]] + + # insert the column for the row names + for row_name, row in zip(row_names, load_matrix): + row.insert(0, row_name) + return load_matrix + + +def miscellaneous_loads_trace700_matrix(rooms, si_units=False): + """Get a matrix for the "People & Lighting" table of the TRACE 700 Component Tree. + + Args: + rooms: A list of dragonfly Room2Ds and honeybee Rooms for which the + TRACE 700 "People & Lighting" matrix will be returned. + si_units: Boolean to note whether the units of the values in the resulting + matrix are in SI (True) instead of IP (False). (Default: False). + + Returns: + A list of list where each sublist represents a row of the People & Lighting + table of the TRACE 700 Component Tree. + """ + # set up things for unit conversion + power_unit = 'W' + flux_unit = 'W/sq m' if si_units else 'W/sq ft' + flux = EnergyFlux() + + # set up the names of the rows + row_names = [ + 'Misc Load Description', + 'Room Description', + 'Type', + 'Schedule', + 'Value', + 'Units', + 'Energy Meter', + 'Data Center Equipment' + ] + + # loop through the rooms and add each of the attributes + load_mtx = [] + for room in rooms: + # calculate the total density of equipment + epd, e_type = 0, 'None' + ele_obj = room.properties.energy.electric_equipment + if ele_obj is not None: + epd += (ele_obj.watts_per_area * (1 - ele_obj.lost_fraction)) + e_type = 'Electricity' + gas_obj = room.properties.energy.gas_equipment + if gas_obj is not None: + epd += (gas_obj.watts_per_area * (1 - gas_obj.lost_fraction)) + e_type = 'Gas' + + # if there are process loads assigned, specify load in absolute Watts + process_load = sum(load.watts * (1 - load.lost_fraction) + for load in room.properties.energy.process_loads) + if process_load != 0: + load_value = process_load + (epd * room.floor_area) + load_unit = power_unit + else: + load_value = epd + load_unit = flux_unit + + # put all attributes into a list + load_attr = [ + '{} Misc Load'.format(room.display_name), + room.display_name, + 'None', + 'Cooling Only (Design)', + load_value, + load_unit, + e_type, + 'No' + ] + load_mtx.append(load_attr) + + # transpose the matrix and convert SI units to IP + load_matrix = [list(row) for row in zip(*load_mtx)] + if load_unit == flux_unit: + if not si_units: + load_matrix[4] = list(flux.to_unit(load_matrix[4], 'W/ft2', 'W/m2')) + load_matrix[4] = [round(val, 2) for val in load_matrix[4]] + else: + load_matrix[4] = [round(val) for val in load_matrix[4]] + + # insert the column for the row names + for row_name, row in zip(row_names, load_matrix): + row.insert(0, row_name) + return load_matrix diff --git a/dragonfly_trace/writer.py b/dragonfly_trace/writer.py index 4aff98f..1eed6a4 100644 --- a/dragonfly_trace/writer.py +++ b/dragonfly_trace/writer.py @@ -2,16 +2,168 @@ """Methods to write Dragonfly Models to Trane TRACE.""" from __future__ import division +from collections import OrderedDict -def model_to_trace_700_matrix( - model, use_multiplier=True, exclude_plenums=False, merge_method=None, - si_units=False +from ladybug.datatype.area import Area +from ladybug.datatype.distance import Distance +from ladybug.datatype.temperature import Temperature +from ladybug.datatype.rvalue import RValue +from honeybee.typing import clean_and_number_string +from dragonfly.room2d import Room2D + +from .airflows import airflows_trace700_matrix +from .loads import people_and_lights_trace700_matrix, \ + miscellaneous_loads_trace700_matrix + + +def rooms_to_trace700_matrix(rooms, si_units=False): + """Get a matrix for the "Rooms" table of the TRACE 700 Component Tree. + + Args: + rooms: A list of dragonfly Room2Ds and honeybee Rooms for which the + TRACE 700 "Rooms" matrix will be returned. + si_units: Boolean to note whether the units of the values in the resulting + matrix are in SI (True) instead of IP (False). (Default: False). + + Returns: + A list of list where each sublist represents a row of the Rooms table + of the TRACE 700 Component Tree. + """ + # set up things for unit conversion + dist_unit = 'm' if si_units else 'ft' + r_unit = 'm2-C/W' if si_units else 'hr-ft2-F/Btu' + temp_unit = 'C' if si_units else 'F' + area, distance, temperature, r_value = Area(), Distance(), Temperature(), RValue() + + # set up the names of the rows + row_names = [ + 'Room Description', + 'Assigned to System', + 'Assigned to Zone', + 'Room Template', + 'Thermostat Template', + 'Construction Template', + 'Floor Length ({})'.format(dist_unit), + 'Floor Width ({})'.format(dist_unit), + 'Flr to Flr Height ({})'.format(dist_unit), + 'Plenum Height ({})'.format(dist_unit), + 'Height Above Ground ({})'.format(dist_unit), + 'Acoustic Ceiling Resistance ({})'.format(r_unit), + 'Cooling Dry Bulb ({})'.format(temp_unit), + 'Heating Dry Bulb ({})'.format(temp_unit), + 'Relative Humidity (%)' + 'Cooling Driftpoint ({})'.format(temp_unit), + 'Heating Driftpoint ({})'.format(temp_unit), + 'Thermostat Cooling Schedule', + 'Thermostat Heating Schedule', + 'Thermostat Location', + 'CO2 Sensor Location', + 'Humidity Moisture Capacitance', + 'Humidistat Location', + 'Duplicate Floor Multiplier', + 'Duplicate Rooms per Zone', + 'Room Mass / # of Hours', + 'Slab Construction Type', + 'Room Type', + 'Carpeted Floor' + ] + + # loop through the rooms and add each of the attributes + room_mtx = [] + for room in rooms: + # figure out the values for certain attributes + f2f = room.floor_to_ceiling_height if isinstance(room, Room2D) \ + else room.volume / room.floor_area + plenum = room.ceiling_plenum_depth if isinstance(room, Room2D) else 0 + elev = room.floor_elevation if isinstance(room, Room2D) \ + else room.average_floor_height + multiplier = room.parent.multiplier \ + if isinstance(room, Room2D) and room.has_parent else room.multiplier + set_pt = room.properties.energy.setpoint + if room.properties.energy.setpoint is not None: + room_type = 'Conditioned' + cool_set_pt = set_pt.cooling_setpoint + heat_set_pt = set_pt.heating_setpoint + cool_set_back = set_pt.cooling_setback + heat_set_back = set_pt.heating_setback + humid_pt = set_pt.dehumidifying_setpoint \ + if set_pt.dehumidifying_setpoint is not None else 50 + else: + room_type = 'Unconditioned' + cool_set_pt = 50 + heat_set_pt = 0 + cool_set_back = 50 + heat_set_back = 0 + humid_pt = 50 + + # put all attributes into a list + room_attr = [ + room.display_name, + 'Default System', + room.display_name, + 'Default', + 'Default', + 'Default', + room.floor_area, + 1, + f2f, + plenum, + elev, + 0.31451, + cool_set_pt, + heat_set_pt, + humid_pt, + cool_set_back, + heat_set_back, + 'None', + 'None', + 'Room', + 'None', + 'Medium', + 'Room', + multiplier, + 1, + 'Time delay based on actual mass', + '4" LW Concrete', + room_type, + 'Yes' + ] + room_mtx.append(room_attr) + + # transpose the matrix and convert SI units to IP + room_matrix = [list(row) for row in zip(*room_mtx)] + if not si_units: + room_matrix[6] = list(area.to_unit(room_matrix[6], 'ft2', 'm2')) + room_matrix[8] = list(distance.to_unit(room_matrix[8], 'ft', 'm')) + room_matrix[9] = list(distance.to_unit(room_matrix[9], 'ft', 'm')) + room_matrix[10] = list(distance.to_unit(room_matrix[10], 'ft', 'm')) + room_matrix[11] = list(r_value.to_unit(room_matrix[11], 'F-ft2-h/Btu', 'm2-K/W')) + room_matrix[12] = list(temperature.to_unit(room_matrix[12], 'F', 'C')) + room_matrix[13] = list(temperature.to_unit(room_matrix[13], 'F', 'C')) + room_matrix[15] = list(temperature.to_unit(room_matrix[15], 'F', 'C')) + room_matrix[16] = list(temperature.to_unit(room_matrix[16], 'F', 'C')) + + # round the numbers so that they display nicely + for row_i in (6, 8, 9, 10, 11): + room_matrix[row_i] = [round(val, 3) for val in room_matrix[row_i]] + for row_i in (12, 13, 15, 16): + room_matrix[row_i] = [round(val) for val in room_matrix[row_i]] + + # insert the column for the row names + for row_name, row in zip(row_names, room_matrix): + row.insert(0, row_name) + return room_matrix + + +def model_to_trace700_matrix( + model, use_multiplier=True, exclude_plenums=True, merge_method=None, + si_units=False, geometry_names=False, resource_names=False ): - """Generate a CSV matrix with TRACE 700 load simulation attributes of a Model. + """Get matrices with TRACE 700 simulation attributes of a Model. - The resulting matrix can be written to a CSV and then copied into + The resulting matrices can be written to a CSV and then copied into the tables that appear in the Component Tree view of TRACE 700. The - order and organization of rooms in the resulting matrix should match that + order and organization of rooms in the resulting matrix matches that of the gbXML produced from the same model. Args: @@ -24,7 +176,152 @@ def model_to_trace_700_matrix( assigned to Room2Ds should be ignored during translation. This results in each Room2D translating to a single Honeybee Room at the full floor_to_ceiling_height instead of a base Room with (a) - plenum Room(s). (Default: False). + plenum Room(s). (Default: True). + merge_method: An optional text string to describe how the Room2Ds should + be merged into individual Rooms during the translation. Specifying a + value here can be an effective way to reduce the number of Room + volumes in the resulting model and, ultimately, yield a faster + simulation time in the destination engine with fewer results + to manage. Note that Room2Ds will only be merged if they form a + continuous volume. Otherwise, there will be multiple Rooms per + zone or story, each with an integer added at the end of their + identifiers. Choose from the following options: + + * None - No merging of Room2Ds will occur + * Zones - Room2Ds in the same zone will be merged + * PlenumZones - Only plenums in the same zone will be merged + * Stories - Rooms in the same story will be merged + * PlenumStories - Only plenums in the same story will be merged + + si_units: Boolean to note whether the units of the values in the resulting + matrix are in SI (True) instead of IP (False). (Default: False). + geometry_names: Boolean to note whether a cleaned version of all geometry + display names should be used instead of identifiers when translating + the Model to OSM and IDF. Using this flag will affect all Rooms, Faces, + Apertures, Doors, and Shades. It will generally result in more read-able + names in the OSM and IDF but this means that it will not be easy to map + the EnergyPlus results back to the original Honeybee Model. Cases + of duplicate IDs resulting from non-unique names will be resolved + by adding integers to the ends of the new IDs that are derived from + the name. (Default: False). + resource_names: Boolean to note whether a cleaned version of all resource + display names should be used instead of identifiers when translating + the Model to OSM and IDF. Using this flag will affect all Materials, + Constructions, ConstructionSets, Schedules, Loads, and ProgramTypes. + It will generally result in more read-able names for the resources + in the OSM and IDF. Cases of duplicate IDs resulting from non-unique + names will be resolved by adding integers to the ends of the new IDs + that are derived from the name. (Default: False). + + Returns: + A tuple with four items. + + room_matrix -- A list of list where each sublist represents a row of the + Rooms table of the TRACE 700 Component Tree. + + airflows_matrix -- A list of list where each sublist represents a row of the + Airflows table of the TRACE 700 Component Tree. + + people_and_lights_matrix -- A list of list where each sublist represents + a row of the People & Lighting table of the TRACE 700 Component Tree. + + misc_loads_matrix -- A list of list where each sublist represents a row of + the Miscellaneous Loads table of the TRACE 700 Component Tree. + """ + # convert the rooms into the format in which it will go off to TRACE + rooms_for_trace = [] # list to hold the rooms for CSV reporting + assert len(model.room_2ds) != 0 or len(model.room_3ds) != 0, \ + 'Model must have rooms to be able to export to TRACE700 CSV.' + + # scale the model if the units are not meters + model = model.duplicate() # duplicate model to avoid mutating it + if model.units != 'Meters': + model.convert_to_units('Meters') + tol = model.tolerance + # reset the IDs to be derived from the display_names if requested + if geometry_names: + model.reset_ids() + if resource_names: + model.properties.energy.reset_resource_ids() + + # account for story multipliers, separated room plenums and room merge method + merge_map = model._extract_merge_map(merge_method, exclude_plenums, tol) + for building in model.buildings: + # separate the plenums unless they are excluded + if not exclude_plenums and building.has_room_2d_plenums: + building.convert_plenum_depths_to_room_2ds(tol) + # collect all of the unmerged rooms + if use_multiplier: + for story in building.unique_stories: + rooms_for_trace.extend(story.room_2ds) + else: + for story in building.all_stories(): + rooms_for_trace.extend(story.room_2ds) + + # apply the merge map if it exists + if merge_map is not None: + # gather the Room objects to be merged + merge_groups, remove_i = OrderedDict(), set() + insert_i, insert_count = [], 0 + for i, room in enumerate(rooms_for_trace): + try: + merge_name = merge_map[room.identifier] + try: + merge_groups[merge_name].append(room) + except KeyError: # first item in the group + merge_groups[merge_name] = [room] + insert_i.append(insert_count) + remove_i.add(i) + except KeyError: # not a room to be merged + insert_count += 1 + # create the new rooms and assign them to the model + new_rooms = [r for i, r in enumerate(rooms_for_trace) if i not in remove_i] + group_ids = {} + zip_obj = zip(reversed(insert_i), reversed(merge_groups.items())) + for ins_i, (group_name, room_group) in zip_obj: + merged_rooms = Room2D.join_room_2ds(room_group, tol, tol) + for room in merged_rooms: + room.identifier = clean_and_number_string(group_name, group_ids) + room.display_name = group_name + new_rooms.insert(ins_i, room) + rooms_for_trace = new_rooms + + # add the 3D Honeybee Rooms to the list + for building in model.buildings: + rooms_for_trace.extend(building.room_3ds) + + # sort the rooms alphanumerically based on their identifiers + rooms_for_trace.sort(key=lambda x: x.identifier) # this matches the gbXML export + + # create the matrices of data from the model rooms + room_matrix = rooms_to_trace700_matrix(rooms_for_trace, si_units) + airflows_matrix = airflows_trace700_matrix(rooms_for_trace, si_units) + people_and_lights_matrix = people_and_lights_trace700_matrix(rooms_for_trace, si_units) + misc_loads_matrix = miscellaneous_loads_trace700_matrix(rooms_for_trace, si_units) + return room_matrix, airflows_matrix, people_and_lights_matrix, misc_loads_matrix + + +def model_to_trace700_csv( + model, use_multiplier=True, exclude_plenums=True, merge_method=None, + si_units=False, geometry_names=False, resource_names=False +): + """Generate a CSV string with TRACE 700 load simulation attributes of a Model. + + The resulting CSV tables can be copied into the tables that appear in the + Component Tree view of TRACE 700. The order and organization of rooms in + the resulting matrix should match that of the gbXML produced from the same model. + + Args: + model: A dragonfly Model for which a TRACE 700 CSV matrix will be returned. + use_multiplier: If True, the multipliers on this Model's Stories will be + passed along to the CSV. If False, full geometry objects will be written + for each and every floor in the building that are represented through + multipliers and all resulting multipliers will be 1. (Default: True). + exclude_plenums: Boolean to indicate whether ceiling/floor plenum depths + assigned to Room2Ds should be ignored during translation. This + results in each Room2D translating to a single Honeybee Room at + the full floor_to_ceiling_height instead of a base Room with (a) + plenum Room(s). (Default: True). merge_method: An optional text string to describe how the Room2Ds should be merged into individual Rooms during the translation. Specifying a value here can be an effective way to reduce the number of Room @@ -40,7 +337,62 @@ def model_to_trace_700_matrix( * PlenumZones - Only plenums in the same zone will be merged * Stories - Rooms in the same story will be merged * PlenumStories - Only plenums in the same story will be merged - + si_units: Boolean to note whether the units of the values in the resulting matrix are in SI (True) instead of IP (False). (Default: False). + geometry_names: Boolean to note whether a cleaned version of all geometry + display names should be used instead of identifiers when translating + the Model to OSM and IDF. Using this flag will affect all Rooms, Faces, + Apertures, Doors, and Shades. It will generally result in more read-able + names in the OSM and IDF but this means that it will not be easy to map + the EnergyPlus results back to the original Honeybee Model. Cases + of duplicate IDs resulting from non-unique names will be resolved + by adding integers to the ends of the new IDs that are derived from + the name. (Default: False). + resource_names: Boolean to note whether a cleaned version of all resource + display names should be used instead of identifiers when translating + the Model to OSM and IDF. Using this flag will affect all Materials, + Constructions, ConstructionSets, Schedules, Loads, and ProgramTypes. + It will generally result in more read-able names for the resources + in the OSM and IDF. Cases of duplicate IDs resulting from non-unique + names will be resolved by adding integers to the ends of the new IDs + that are derived from the name. (Default: False). + + Returns: + Text string of content to be written into a CSV file containing all tables + needed to specify room loads in TRACE 700. """ + # get the matrices to be written to CSV format + room_matrix, airflows_matrix, people_and_lights_matrix, misc_loads_matrix = \ + model_to_trace700_matrix( + model, use_multiplier, exclude_plenums, merge_method, + si_units, geometry_names, resource_names + ) + + # put all of the matrices into one master matrix for CSV export + mtx_width = len(room_matrix[0]) - 1 + spacer_row = ',' * mtx_width + # add the Room table + csv_matrix = ['ROOMS{}'.format(spacer_row)] + for row in room_matrix: + csv_matrix.append(','.join([str(val) for val in row])) + # add the Airflows table + csv_matrix.append(spacer_row) + csv_matrix.append(spacer_row) + csv_matrix.append('AIRFLOWS{}'.format(spacer_row)) + for row in airflows_matrix: + csv_matrix.append(','.join([str(val) for val in row])) + # add the People & Lighting table + csv_matrix.append(spacer_row) + csv_matrix.append(spacer_row) + csv_matrix.append('PEOPLE & LIGHTING{}'.format(spacer_row)) + for row in people_and_lights_matrix: + csv_matrix.append(','.join([str(val) for val in row])) + # add the Miscellaneous Loads table + csv_matrix.append(spacer_row) + csv_matrix.append(spacer_row) + csv_matrix.append('MISCELLANEOUS LOADS{}'.format(spacer_row)) + for row in misc_loads_matrix: + csv_matrix.append(','.join([str(val) for val in row])) + + return '\n'.join(csv_matrix) diff --git a/requirements.txt b/requirements.txt index f433397..e032d80 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1 @@ -dragonfly-energy>=1.41.10 +dragonfly-energy>=1.42.0 diff --git a/tests/airflow_test.py b/tests/airflow_test.py new file mode 100644 index 0000000..d90374f --- /dev/null +++ b/tests/airflow_test.py @@ -0,0 +1,14 @@ +"""Test the translators for airflow.""" +from dragonfly.model import Model + +from dragonfly_trace.airflows import airflows_trace700_matrix + + +def test_airflows_trace700_matrix(): + """Test the rooms_to_trace700_matrix method.""" + sample_path = './tests/assets/small_revit_sample.dfjson' + model = Model.from_file(sample_path) + + csv_mtx = airflows_trace700_matrix(model.room_2ds) + assert len(csv_mtx) == 45 + assert len(csv_mtx[0]) == len(model.room_2ds) + 1 diff --git a/tests/assets/in.csv b/tests/assets/in.csv new file mode 100644 index 0000000..9158b12 --- /dev/null +++ b/tests/assets/in.csv @@ -0,0 +1,107 @@ +ROOMS,,,,,,,,,,,,,,, +Room Description,Shaft 214,Mech. 102,Linen 208,Master Bedroom 206,Master Bath 207,Bedroom 204,Bath 1 203,Bath 2 205,Bedroom 1 202,Entry Hall 201,Kitchen & Dining 101,Laundry 104,Bath 103,Hall 105,Living 106 +Assigned to System,Default System,Default System,Default System,Default System,Default System,Default System,Default System,Default System,Default System,Default System,Default System,Default System,Default System,Default System,Default System +Assigned to Zone,Shaft 214,Mech. 102,Linen 208,Master Bedroom 206,Master Bath 207,Bedroom 204,Bath 1 203,Bath 2 205,Bedroom 1 202,Entry Hall 201,Kitchen & Dining 101,Laundry 104,Bath 103,Hall 105,Living 106 +Room Template,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default +Thermostat Template,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default +Construction Template,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default +Floor Length (ft),9.92,28.363,19.013,309.461,87.748,161.109,49.36,48.231,160.891,359.31,807.975,64.977,36.532,267.196,794.35 +Floor Width (ft),1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +Flr to Flr Height (ft),16.059,9.843,16.885,19.4,19.4,19.4,15.049,19.4,19.4,19.4,9.843,9.843,9.843,9.843,9.022 +Plenum Height (ft),0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 +Height Above Ground (ft),9.843,0.0,9.843,9.843,9.843,9.843,9.843,9.843,9.843,9.843,0.0,0.0,0.0,0.0,-1.804 +Acoustic Ceiling Resistance (hr-ft2-F/Btu),1.786,1.786,1.786,1.786,1.786,1.786,1.786,1.786,1.786,1.786,1.786,1.786,1.786,1.786,1.786 +Cooling Dry Bulb (F),75,75,75,75,75,75,75,75,75,75,75,75,75,75,75 +Heating Dry Bulb (F),70,70,70,70,70,70,70,70,70,70,70,70,70,70,70 +Relative Humidity (%)Cooling Driftpoint (F),50,50,50,50,50,50,50,50,50,50,50,50,50,50,50 +Heating Driftpoint (F),85,85,85,85,85,85,85,85,85,85,85,85,85,85,85 +Thermostat Cooling Schedule,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60 +Thermostat Heating Schedule,None,None,None,None,None,None,None,None,None,None,None,None,None,None,None +Thermostat Location,None,None,None,None,None,None,None,None,None,None,None,None,None,None,None +CO2 Sensor Location,Room,Room,Room,Room,Room,Room,Room,Room,Room,Room,Room,Room,Room,Room,Room +Humidity Moisture Capacitance,None,None,None,None,None,None,None,None,None,None,None,None,None,None,None +Humidistat Location,Medium,Medium,Medium,Medium,Medium,Medium,Medium,Medium,Medium,Medium,Medium,Medium,Medium,Medium,Medium +Duplicate Floor Multiplier,Room,Room,Room,Room,Room,Room,Room,Room,Room,Room,Room,Room,Room,Room,Room +Duplicate Rooms per Zone,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +Room Mass / # of Hours,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +Slab Construction Type,Time delay based on actual mass,Time delay based on actual mass,Time delay based on actual mass,Time delay based on actual mass,Time delay based on actual mass,Time delay based on actual mass,Time delay based on actual mass,Time delay based on actual mass,Time delay based on actual mass,Time delay based on actual mass,Time delay based on actual mass,Time delay based on actual mass,Time delay based on actual mass,Time delay based on actual mass,Time delay based on actual mass +Room Type,4" LW Concrete,4" LW Concrete,4" LW Concrete,4" LW Concrete,4" LW Concrete,4" LW Concrete,4" LW Concrete,4" LW Concrete,4" LW Concrete,4" LW Concrete,4" LW Concrete,4" LW Concrete,4" LW Concrete,4" LW Concrete,4" LW Concrete +Carpeted Floor,Conditioned,Conditioned,Conditioned,Conditioned,Conditioned,Conditioned,Conditioned,Conditioned,Conditioned,Conditioned,Conditioned,Conditioned,Conditioned,Conditioned,Conditioned +Yes,Yes,Yes,Yes,Yes,Yes,Yes,Yes,Yes,Yes,Yes,Yes,Yes,Yes,Yes +,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,, +AIRFLOWS,,,,,,,,,,,,,,, +Room Description,Shaft 214,Mech. 102,Linen 208,Master Bedroom 206,Master Bath 207,Bedroom 204,Bath 1 203,Bath 2 205,Bedroom 1 202,Entry Hall 201,Kitchen & Dining 101,Laundry 104,Bath 103,Hall 105,Living 106 +Adjacent Air Transfer from Room,<>,<>,<>,<>,<>,<>,<>,<>,<>,<>,<>,<>,<>,<>,<> +Airflow Template,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default +Ventilation Method,Sum of Outdoor Air,Sum of Outdoor Air,Sum of Outdoor Air,Sum of Outdoor Air,Sum of Outdoor Air,Sum of Outdoor Air,Sum of Outdoor Air,Sum of Outdoor Air,Sum of Outdoor Air,Sum of Outdoor Air,Sum of Outdoor Air,Sum of Outdoor Air,Sum of Outdoor Air,Sum of Outdoor Air,Sum of Outdoor Air +Ventilation Type,None,None,None,None,None,None,None,None,None,None,None,None,None,None,None +Ventilation Cooling,1.2,3.4,2.3,26.7,5.3,13.9,3.0,2.9,13.9,21.6,69.7,7.8,2.2,16.0,68.5 +Ventilation Cooling Units,cfm,cfm,cfm,cfm,cfm,cfm,cfm,cfm,cfm,cfm,cfm,cfm,cfm,cfm,cfm +Ventilation Heating,1.2,3.4,2.3,26.7,5.3,13.9,3.0,2.9,13.9,21.6,69.7,7.8,2.2,16.0,68.5 +Ventilation Heating Units,cfm,cfm,cfm,cfm,cfm,cfm,cfm,cfm,cfm,cfm,cfm,cfm,cfm,cfm,cfm +People-based Rate (Rp),,,,,,,,,,,,,,, +People-based Unit,,,,,,,,,,,,,,, +Area-based Rate (Ra),,,,,,,,,,,,,,, +Area-based Unit,,,,,,,,,,,,,,, +Ventilation Schedule,Available (100%),Available (100%),Available (100%),Available (100%),Available (100%),Available (100%),Available (100%),Available (100%),Available (100%),Available (100%),Available (100%),Available (100%),Available (100%),Available (100%),Available (100%) +Std62.1-2004-2010 Clg Ez,,,,,,,,,,,,,,, +Std62.1-2004-2010 Clg Ez Pct,,,,,,,,,,,,,,, +Std62.1-2004-2010 Htg Ez,,,,,,,,,,,,,,, +Std62.1-2004-2010 Htg Ez Pct,,,,,,,,,,,,,,, +Std62.1-2004-2010 Er,,,,,,,,,,,,,,, +Std62.1-2004-2010 Er Pct,,,,,,,,,,,,,,, +DCV Min OA Intake,,,,,,,,,,,,,,, +DCV Min OA Intake Unit,,,,,,,,,,,,,,, +Infiltration Type,None,None,None,None,None,None,None,None,None,None,None,None,None,None,None +Infiltration Cooling,0.112,0.112,0.112,0.112,0.112,0.112,0.112,0.112,0.112,0.112,0.112,0.112,0.112,0.112,0.112 +Infiltration Cooling Units,cfm/sq ft of wall,cfm/sq ft of wall,cfm/sq ft of wall,cfm/sq ft of wall,cfm/sq ft of wall,cfm/sq ft of wall,cfm/sq ft of wall,cfm/sq ft of wall,cfm/sq ft of wall,cfm/sq ft of wall,cfm/sq ft of wall,cfm/sq ft of wall,cfm/sq ft of wall,cfm/sq ft of wall,cfm/sq ft of wall +Infiltration Heating,0.112,0.112,0.112,0.112,0.112,0.112,0.112,0.112,0.112,0.112,0.112,0.112,0.112,0.112,0.112 +Infiltration Heating Units,cfm/sq ft of wall,cfm/sq ft of wall,cfm/sq ft of wall,cfm/sq ft of wall,cfm/sq ft of wall,cfm/sq ft of wall,cfm/sq ft of wall,cfm/sq ft of wall,cfm/sq ft of wall,cfm/sq ft of wall,cfm/sq ft of wall,cfm/sq ft of wall,cfm/sq ft of wall,cfm/sq ft of wall,cfm/sq ft of wall +Infiltration Schedule,Available (100%),Available (100%),Available (100%),Available (100%),Available (100%),Available (100%),Available (100%),Available (100%),Available (100%),Available (100%),Available (100%),Available (100%),Available (100%),Available (100%),Available (100%) +Main Supply Cooling,,,,,,,,,,,,,,, +Main Supply Cooling Units,To be calculated,To be calculated,To be calculated,To be calculated,To be calculated,To be calculated,To be calculated,To be calculated,To be calculated,To be calculated,To be calculated,To be calculated,To be calculated,To be calculated,To be calculated +Main Supply Heating,,,,,,,,,,,,,,, +Main Supply Heating Units,To be calculated,To be calculated,To be calculated,To be calculated,To be calculated,To be calculated,To be calculated,To be calculated,To be calculated,To be calculated,To be calculated,To be calculated,To be calculated,To be calculated,To be calculated +Aux Supply Cooling,,,,,,,,,,,,,,, +Aux Supply Cooling Units,To be calculated,To be calculated,To be calculated,To be calculated,To be calculated,To be calculated,To be calculated,To be calculated,To be calculated,To be calculated,To be calculated,To be calculated,To be calculated,To be calculated,To be calculated +Aux Supply Heating,,,,,,,,,,,,,,, +Aux Supply Heating Units,To be calculated,To be calculated,To be calculated,To be calculated,To be calculated,To be calculated,To be calculated,To be calculated,To be calculated,To be calculated,To be calculated,To be calculated,To be calculated,To be calculated,To be calculated +Cooling VAV Min Airflow,,,,,,,,,,,,,,, +Cooling VAV Min Airflow Units,% Clg Airflow,% Clg Airflow,% Clg Airflow,% Clg Airflow,% Clg Airflow,% Clg Airflow,% Clg Airflow,% Clg Airflow,% Clg Airflow,% Clg Airflow,% Clg Airflow,% Clg Airflow,% Clg Airflow,% Clg Airflow,% Clg Airflow +Heating VAV Max Airflow,,,,,,,,,,,,,,, +Heating VAV Max Airflow Units,% Clg Airflow,% Clg Airflow,% Clg Airflow,% Clg Airflow,% Clg Airflow,% Clg Airflow,% Clg Airflow,% Clg Airflow,% Clg Airflow,% Clg Airflow,% Clg Airflow,% Clg Airflow,% Clg Airflow,% Clg Airflow,% Clg Airflow +VAV Airflow Schedule,Available (100%),Available (100%),Available (100%),Available (100%),Available (100%),Available (100%),Available (100%),Available (100%),Available (100%),Available (100%),Available (100%),Available (100%),Available (100%),Available (100%),Available (100%) +VAV Type,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default +Room Exhaust,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +Room Exhaust Units,air changes/hr,air changes/hr,air changes/hr,air changes/hr,air changes/hr,air changes/hr,air changes/hr,air changes/hr,air changes/hr,air changes/hr,air changes/hr,air changes/hr,air changes/hr,air changes/hr,air changes/hr +Room Exhaust Schedule,Available (100%),Available (100%),Available (100%),Available (100%),Available (100%),Available (100%),Available (100%),Available (100%),Available (100%),Available (100%),Available (100%),Available (100%),Available (100%),Available (100%),Available (100%) +,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,, +PEOPLE & LIGHTING,,,,,,,,,,,,,,, +Room Description,Shaft 214,Mech. 102,Linen 208,Master Bedroom 206,Master Bath 207,Bedroom 204,Bath 1 203,Bath 2 205,Bedroom 1 202,Entry Hall 201,Kitchen & Dining 101,Laundry 104,Bath 103,Hall 105,Living 106 +Internal Loads Template,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default +People Activity,None,None,None,None,None,None,None,None,None,None,None,None,None,None,None +People Schedule,Cooling Only (Design),Cooling Only (Design),Cooling Only (Design),Cooling Only (Design),Cooling Only (Design),Cooling Only (Design),Cooling Only (Design),Cooling Only (Design),Cooling Only (Design),Cooling Only (Design),Cooling Only (Design),Cooling Only (Design),Cooling Only (Design),Cooling Only (Design),Cooling Only (Design) +People Value,0,0,0,1.625,0,0.846,0,0,0.845,0,4.242,0,0,0,4.17 +People Value Units,People,People,People,People,People,People,People,People,People,People,People,People,People,People,People +People Sensible (Btu/h),250,250,250,205,250,205,250,250,205,250,205,250,250,250,205 +People Latent (Btu/h),250,250,250,205,250,205,250,250,205,250,205,250,250,250,205 +Workstation Density,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +Workstation Density Units,workstation/person,workstation/person,workstation/person,workstation/person,workstation/person,workstation/person,workstation/person,workstation/person,workstation/person,workstation/person,workstation/person,workstation/person,workstation/person,workstation/person,workstation/person +Lighting Type,LED Lighting 100% load to space,LED Lighting 100% load to space,LED Lighting 100% load to space,LED Lighting 100% load to space,LED Lighting 100% load to space,LED Lighting 100% load to space,LED Lighting 100% load to space,LED Lighting 100% load to space,LED Lighting 100% load to space,LED Lighting 100% load to space,LED Lighting 100% load to space,LED Lighting 100% load to space,LED Lighting 100% load to space,LED Lighting 100% load to space,LED Lighting 100% load to space +ASHRAE Space/Area Type,,,,,,,,,,,,,,, +Lighting Value,0.38,0.43,0.38,0.61,0.63,0.61,0.63,0.63,0.61,0.41,0.61,0.38,0.63,0.41,0.61 +Lighting Value Units,W/sq ft,W/sq ft,W/sq ft,W/sq ft,W/sq ft,W/sq ft,W/sq ft,W/sq ft,W/sq ft,W/sq ft,W/sq ft,W/sq ft,W/sq ft,W/sq ft,W/sq ft +Lighting Schedule,Cooling Only (Design),Cooling Only (Design),Cooling Only (Design),Cooling Only (Design),Cooling Only (Design),Cooling Only (Design),Cooling Only (Design),Cooling Only (Design),Cooling Only (Design),Cooling Only (Design),Cooling Only (Design),Cooling Only (Design),Cooling Only (Design),Cooling Only (Design),Cooling Only (Design) +,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,, +MISCELLANEOUS LOADS,,,,,,,,,,,,,,, +Misc Load Description,Shaft 214 Misc Load,Mech. 102 Misc Load,Linen 208 Misc Load,Master Bedroom 206 Misc Load,Master Bath 207 Misc Load,Bedroom 204 Misc Load,Bath 1 203 Misc Load,Bath 2 205 Misc Load,Bedroom 1 202 Misc Load,Entry Hall 201 Misc Load,Kitchen & Dining 101 Misc Load,Laundry 104 Misc Load,Bath 103 Misc Load,Hall 105 Misc Load,Living 106 Misc Load +Room Description,Shaft 214,Mech. 102,Linen 208,Master Bedroom 206,Master Bath 207,Bedroom 204,Bath 1 203,Bath 2 205,Bedroom 1 202,Entry Hall 201,Kitchen & Dining 101,Laundry 104,Bath 103,Hall 105,Living 106 +Type,None,None,None,None,None,None,None,None,None,None,None,None,None,None,None +Schedule,Cooling Only (Design),Cooling Only (Design),Cooling Only (Design),Cooling Only (Design),Cooling Only (Design),Cooling Only (Design),Cooling Only (Design),Cooling Only (Design),Cooling Only (Design),Cooling Only (Design),Cooling Only (Design),Cooling Only (Design),Cooling Only (Design),Cooling Only (Design),Cooling Only (Design) +Value,0.0,0.27,0.0,0.96,0.27,0.96,0.27,0.27,0.96,0.29,0.96,0.0,0.27,0.29,0.96 +Units,W/sq ft,W/sq ft,W/sq ft,W/sq ft,W/sq ft,W/sq ft,W/sq ft,W/sq ft,W/sq ft,W/sq ft,W/sq ft,W/sq ft,W/sq ft,W/sq ft,W/sq ft +Energy Meter,Electricity,Electricity,Electricity,Electricity,Electricity,Electricity,Electricity,Electricity,Electricity,Electricity,Electricity,Electricity,Electricity,Electricity,Electricity +Data Center Equipment,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No \ No newline at end of file diff --git a/tests/assets/small_revit_sample.dfjson b/tests/assets/small_revit_sample.dfjson new file mode 100644 index 0000000..2981a02 --- /dev/null +++ b/tests/assets/small_revit_sample.dfjson @@ -0,0 +1 @@ +{"type": "Model", "identifier": "Model_a9859028-f339-42ff-9a0b-cc839afeb735", "display_name": "Unnamed", "properties": {"type": "ModelProperties", "comparison": {"type": "ModelComparisonProperties"}, "doe2": {"type": "ModelDoe2Properties"}, "energy": {"type": "ModelEnergyProperties", "global_construction_set": {"type": "GlobalConstructionSet", "wall_set": {"type": "WallConstructionSetAbridged", "exterior_construction": "Generic Exterior Wall", "interior_construction": "Generic Interior Wall", "ground_construction": "Generic Underground Wall"}, "floor_set": {"type": "FloorConstructionSetAbridged", "exterior_construction": "Generic Exposed Floor", "interior_construction": "Generic Interior Floor", "ground_construction": "Generic Ground Slab"}, "roof_ceiling_set": {"type": "RoofCeilingConstructionSetAbridged", "exterior_construction": "Generic Roof", "interior_construction": "Generic Interior Ceiling", "ground_construction": "Generic Underground Roof"}, "aperture_set": {"type": "ApertureConstructionSetAbridged", "window_construction": "Generic Double Pane", "interior_construction": "Generic Single Pane", "skylight_construction": "Generic Double Pane", "operable_construction": "Generic Double Pane"}, "door_set": {"type": "DoorConstructionSetAbridged", "exterior_construction": "Generic Exterior Door", "interior_construction": "Generic Interior Door", "exterior_glass_construction": "Generic Double Pane", "interior_glass_construction": "Generic Single Pane", "overhead_construction": "Generic Exterior Door"}, "shade_construction": "Generic Shade", "air_boundary_construction": "Generic Air Boundary", "context_construction": "Generic Context", "constructions": [{"type": "ShadeConstruction", "identifier": "Generic Context", "solar_reflectance": 0.2, "visible_reflectance": 0.2, "is_specular": false}, {"type": "OpaqueConstructionAbridged", "identifier": "Generic Interior Floor", "materials": ["Generic Acoustic Tile", "Generic Ceiling Air Gap", "Generic LW Concrete"]}, {"type": "ShadeConstruction", "identifier": "Generic Shade", "solar_reflectance": 0.35, "visible_reflectance": 0.35, "is_specular": false}, {"type": "OpaqueConstructionAbridged", "identifier": "Generic Interior Door", "materials": ["Generic 25mm Wood"]}, {"type": "OpaqueConstructionAbridged", "identifier": "Generic Interior Ceiling", "materials": ["Generic LW Concrete", "Generic Ceiling Air Gap", "Generic Acoustic Tile"]}, {"type": "OpaqueConstructionAbridged", "identifier": "Generic Roof", "materials": ["Generic Roof Membrane", "Generic 50mm Insulation", "Generic LW Concrete", "Generic Ceiling Air Gap", "Generic Acoustic Tile"]}, {"type": "AirBoundaryConstructionAbridged", "identifier": "Generic Air Boundary", "air_mixing_per_area": 0.1, "air_mixing_schedule": "Always On"}, {"type": "WindowConstructionAbridged", "identifier": "Generic Single Pane", "materials": ["Generic Clear Glass"]}, {"type": "OpaqueConstructionAbridged", "identifier": "Generic Exposed Floor", "materials": ["Generic Painted Metal", "Generic Ceiling Air Gap", "Generic 50mm Insulation", "Generic LW Concrete"]}, {"type": "OpaqueConstructionAbridged", "identifier": "Generic Underground Roof", "materials": ["Generic 50mm Insulation", "Generic HW Concrete", "Generic Ceiling Air Gap", "Generic Acoustic Tile"]}, {"type": "OpaqueConstructionAbridged", "identifier": "Generic Exterior Door", "materials": ["Generic Painted Metal", "Generic 25mm Insulation", "Generic Painted Metal"]}, {"type": "OpaqueConstructionAbridged", "identifier": "Generic Exterior Wall", "materials": ["Generic Brick", "Generic LW Concrete", "Generic 50mm Insulation", "Generic Wall Air Gap", "Generic Gypsum Board"]}, {"type": "OpaqueConstructionAbridged", "identifier": "Generic Underground Wall", "materials": ["Generic 50mm Insulation", "Generic HW Concrete", "Generic Wall Air Gap", "Generic Gypsum Board"]}, {"type": "WindowConstructionAbridged", "identifier": "Generic Double Pane", "materials": ["Generic Low-e Glass", "Generic Window Air Gap", "Generic Clear Glass"]}, {"type": "OpaqueConstructionAbridged", "identifier": "Generic Ground Slab", "materials": ["Generic 50mm Insulation", "Generic HW Concrete"]}, {"type": "OpaqueConstructionAbridged", "identifier": "Generic Interior Wall", "materials": ["Generic Gypsum Board", "Generic Wall Air Gap", "Generic Gypsum Board"]}], "materials": [{"type": "EnergyWindowMaterialGlazing", "identifier": "Generic Low-e Glass", "thickness": 0.006, "solar_transmittance": 0.45, "solar_reflectance": 0.36, "solar_reflectance_back": 0.36, "visible_transmittance": 0.71, "visible_reflectance": 0.21, "visible_reflectance_back": 0.21, "infrared_transmittance": 0.0, "emissivity": 0.84, "emissivity_back": 0.047, "conductivity": 1.0, "dirt_correction": 1.0, "solar_diffusing": false}, {"type": "EnergyMaterial", "identifier": "Generic Ceiling Air Gap", "roughness": "Smooth", "thickness": 0.1, "conductivity": 0.556, "density": 1.28, "specific_heat": 1000.0, "thermal_absorptance": 0.9, "solar_absorptance": 0.7, "visible_absorptance": 0.7}, {"type": "EnergyMaterial", "identifier": "Generic LW Concrete", "roughness": "MediumRough", "thickness": 0.1, "conductivity": 0.53, "density": 1280.0, "specific_heat": 840.0, "thermal_absorptance": 0.9, "solar_absorptance": 0.8, "visible_absorptance": 0.8}, {"type": "EnergyMaterial", "identifier": "Generic HW Concrete", "roughness": "MediumRough", "thickness": 0.2, "conductivity": 1.95, "density": 2240.0, "specific_heat": 900.0, "thermal_absorptance": 0.9, "solar_absorptance": 0.8, "visible_absorptance": 0.8}, {"type": "EnergyWindowMaterialGlazing", "identifier": "Generic Clear Glass", "thickness": 0.006, "solar_transmittance": 0.77, "solar_reflectance": 0.07, "solar_reflectance_back": 0.07, "visible_transmittance": 0.88, "visible_reflectance": 0.08, "visible_reflectance_back": 0.08, "infrared_transmittance": 0.0, "emissivity": 0.84, "emissivity_back": 0.84, "conductivity": 1.0, "dirt_correction": 1.0, "solar_diffusing": false}, {"type": "EnergyMaterial", "identifier": "Generic Brick", "roughness": "MediumRough", "thickness": 0.1, "conductivity": 0.9, "density": 1920.0, "specific_heat": 790.0, "thermal_absorptance": 0.9, "solar_absorptance": 0.65, "visible_absorptance": 0.65}, {"type": "EnergyWindowMaterialGas", "identifier": "Generic Window Air Gap", "thickness": 0.0127, "gas_type": "Air"}, {"type": "EnergyMaterial", "identifier": "Generic Gypsum Board", "roughness": "MediumSmooth", "thickness": 0.0127, "conductivity": 0.16, "density": 800.0, "specific_heat": 1090.0, "thermal_absorptance": 0.9, "solar_absorptance": 0.5, "visible_absorptance": 0.5}, {"type": "EnergyMaterial", "identifier": "Generic 50mm Insulation", "roughness": "MediumRough", "thickness": 0.05, "conductivity": 0.03, "density": 43.0, "specific_heat": 1210.0, "thermal_absorptance": 0.9, "solar_absorptance": 0.7, "visible_absorptance": 0.7}, {"type": "EnergyMaterial", "identifier": "Generic Painted Metal", "roughness": "Smooth", "thickness": 0.0015, "conductivity": 45.0, "density": 7690.0, "specific_heat": 410.0, "thermal_absorptance": 0.9, "solar_absorptance": 0.5, "visible_absorptance": 0.5}, {"type": "EnergyMaterial", "identifier": "Generic 25mm Wood", "roughness": "MediumSmooth", "thickness": 0.0254, "conductivity": 0.15, "density": 608.0, "specific_heat": 1630.0, "thermal_absorptance": 0.9, "solar_absorptance": 0.5, "visible_absorptance": 0.5}, {"type": "EnergyMaterial", "identifier": "Generic Wall Air Gap", "roughness": "Smooth", "thickness": 0.1, "conductivity": 0.667, "density": 1.28, "specific_heat": 1000.0, "thermal_absorptance": 0.9, "solar_absorptance": 0.7, "visible_absorptance": 0.7}, {"type": "EnergyMaterial", "identifier": "Generic 25mm Insulation", "roughness": "MediumRough", "thickness": 0.025, "conductivity": 0.03, "density": 43.0, "specific_heat": 1210.0, "thermal_absorptance": 0.9, "solar_absorptance": 0.7, "visible_absorptance": 0.7}, {"type": "EnergyMaterial", "identifier": "Generic Acoustic Tile", "roughness": "MediumSmooth", "thickness": 0.02, "conductivity": 0.06, "density": 368.0, "specific_heat": 590.0, "thermal_absorptance": 0.9, "solar_absorptance": 0.2, "visible_absorptance": 0.2}, {"type": "EnergyMaterial", "identifier": "Generic Roof Membrane", "roughness": "MediumRough", "thickness": 0.01, "conductivity": 0.16, "density": 1120.0, "specific_heat": 1460.0, "thermal_absorptance": 0.9, "solar_absorptance": 0.65, "visible_absorptance": 0.65}]}, "construction_sets": [{"type": "ConstructionSetAbridged", "identifier": "2019::ClimateZone5::SteelFramed", "wall_set": {"type": "WallConstructionSetAbridged", "exterior_construction": "Typical Insulated Steel Framed Exterior Wall-R19", "interior_construction": null, "ground_construction": "Typical Insulated Basement Mass Wall-R8"}, "floor_set": {"type": "FloorConstructionSetAbridged", "exterior_construction": "Typical Insulated Steel Framed Exterior Floor-R27", "interior_construction": null, "ground_construction": "Typical Insulated Carpeted 8in Slab Floor-R5"}, "roof_ceiling_set": {"type": "RoofCeilingConstructionSetAbridged", "exterior_construction": "Typical IEAD Roof-R32", "interior_construction": null, "ground_construction": null}, "aperture_set": {"type": "ApertureConstructionSetAbridged", "window_construction": "U 0.36 SHGC 0.38 Simple Glazing Window", "interior_construction": null, "skylight_construction": "U 0.5 SHGC 0.4 Simple Glazing Skylight", "operable_construction": "U 0.36 SHGC 0.38 Simple Glazing Window"}, "door_set": {"type": "DoorConstructionSetAbridged", "exterior_construction": "Typical Insulated Metal Door-R3", "interior_construction": null, "exterior_glass_construction": "U 0.44 SHGC 0.26 Dbl Ref-B-H Clr 6mm/13mm Air", "interior_glass_construction": null, "overhead_construction": "Typical Overhead Door-R4"}, "shade_construction": null, "air_boundary_construction": null}], "constructions": [{"type": "OpaqueConstructionAbridged", "identifier": "Typical Overhead Door-R4", "materials": ["Typical Insulation-R4"]}, {"type": "WindowConstructionAbridged", "identifier": "U 0.5 SHGC 0.4 Simple Glazing Skylight", "materials": ["U 0.5 SHGC 0.4 Simple Glazing"]}, {"type": "OpaqueConstructionAbridged", "identifier": "Typical IEAD Roof-R32", "materials": ["Roof Membrane", "Typical Insulation-R31", "Metal Roof Surface"]}, {"type": "OpaqueConstructionAbridged", "identifier": "Typical Insulated Steel Framed Exterior Floor-R27", "materials": ["25mm Stucco", "5/8 in. Gypsum Board", "Typical Insulation-R24", "5/8 in. Gypsum Board", "Typical Carpet Pad"]}, {"type": "OpaqueConstructionAbridged", "identifier": "Typical Insulated Steel Framed Exterior Wall-R19", "materials": ["25mm Stucco", "5/8 in. Gypsum Board", "Typical Insulation-R17", "5/8 in. Gypsum Board"]}, {"type": "WindowConstructionAbridged", "identifier": "U 0.36 SHGC 0.38 Simple Glazing Window", "materials": ["U 0.36 SHGC 0.38 Simple Glazing"]}, {"type": "OpaqueConstructionAbridged", "identifier": "Typical Insulated Basement Mass Wall-R8", "materials": ["Typical Insulation-R7", "8 in. Concrete Block Basement Wall"]}, {"type": "OpaqueConstructionAbridged", "identifier": "Typical Insulated Metal Door-R3", "materials": ["F08 Metal surface", "Typical Insulation-R3"]}, {"type": "OpaqueConstructionAbridged", "identifier": "Typical Insulated Carpeted 8in Slab Floor-R5", "materials": ["Typical Insulation-R4", "8 in. Normalweight Concrete Floor", "Typical Carpet Pad"]}, {"type": "WindowConstructionAbridged", "identifier": "U 0.44 SHGC 0.26 Dbl Ref-B-H Clr 6mm/13mm Air", "materials": ["REF B CLEAR HI 6MM", "AIR 13MM", "CLEAR 6MM"]}], "materials": [{"type": "EnergyMaterialNoMass", "identifier": "Typical Insulation-R3", "r_value": 0.5283305514296545, "roughness": "MediumSmooth", "thermal_absorptance": 0.9, "solar_absorptance": 0.7, "visible_absorptance": 0.7}, {"type": "EnergyMaterialNoMass", "identifier": "Typical Insulation-R31", "r_value": 5.45941569810643, "roughness": "MediumSmooth", "thermal_absorptance": 0.9, "solar_absorptance": 0.7, "visible_absorptance": 0.7}, {"type": "EnergyMaterial", "identifier": "8 in. Concrete Block Basement Wall", "roughness": "MediumRough", "thickness": 0.2032, "conductivity": 1.325113229991986, "density": 1842.0042117126811, "specific_heat": 911.4119570053389, "thermal_absorptance": 0.9, "solar_absorptance": 0.7, "visible_absorptance": 0.7}, {"type": "EnergyWindowMaterialGlazing", "identifier": "REF B CLEAR HI 6MM", "thickness": 0.005999999999999977, "solar_transmittance": 0.24, "solar_reflectance": 0.16, "solar_reflectance_back": 0.32, "visible_transmittance": 0.3, "visible_reflectance": 0.16, "visible_reflectance_back": 0.29, "infrared_transmittance": 0.0, "emissivity": 0.84, "emissivity_back": 0.6, "conductivity": 0.8993981199040626, "dirt_correction": 1.0, "solar_diffusing": false}, {"type": "EnergyMaterial", "identifier": "Roof Membrane", "roughness": "VeryRough", "thickness": 0.009499999999999998, "conductivity": 0.15989299909405608, "density": 1121.29256381722, "specific_heat": 1459.0586153813556, "thermal_absorptance": 0.9, "solar_absorptance": 0.7, "visible_absorptance": 0.7}, {"type": "EnergyMaterialNoMass", "identifier": "Typical Insulation-R24", "r_value": 4.226644411437236, "roughness": "MediumSmooth", "thermal_absorptance": 0.9, "solar_absorptance": 0.7, "visible_absorptance": 0.7}, {"type": "EnergyWindowMaterialGas", "identifier": "AIR 13MM", "thickness": 0.0127, "gas_type": "Air"}, {"type": "EnergyWindowMaterialSimpleGlazSys", "identifier": "U 0.36 SHGC 0.38 Simple Glazing", "u_factor": 2.04408, "shgc": 0.38, "vt": 0.6}, {"type": "EnergyMaterialNoMass", "identifier": "Typical Insulation-R7", "r_value": 1.2327712866691938, "roughness": "MediumSmooth", "thermal_absorptance": 0.9, "solar_absorptance": 0.7, "visible_absorptance": 0.7}, {"type": "EnergyMaterial", "identifier": "5/8 in. Gypsum Board", "roughness": "MediumSmooth", "thickness": 0.0159, "conductivity": 0.15989299909405463, "density": 800.0018291911765, "specific_heat": 1089.2971854559414, "thermal_absorptance": 0.9, "solar_absorptance": 0.7, "visible_absorptance": 0.7}, {"type": "EnergyMaterial", "identifier": "F08 Metal surface", "roughness": "Smooth", "thickness": 0.0008000000000000003, "conductivity": 45.249718743617805, "density": 7824.017889489713, "specific_heat": 499.6776080073138, "thermal_absorptance": 0.9, "solar_absorptance": 0.7, "visible_absorptance": 0.7}, {"type": "EnergyMaterialNoMass", "identifier": "Typical Carpet Pad", "r_value": 0.2164799871520999, "roughness": "VeryRough", "thermal_absorptance": 0.9, "solar_absorptance": 0.7, "visible_absorptance": 0.8}, {"type": "EnergyWindowMaterialSimpleGlazSys", "identifier": "U 0.5 SHGC 0.4 Simple Glazing", "u_factor": 2.839, "shgc": 0.4, "vt": 0.6}, {"type": "EnergyMaterialNoMass", "identifier": "Typical Insulation-R17", "r_value": 2.9938731247680423, "roughness": "MediumSmooth", "thermal_absorptance": 0.9, "solar_absorptance": 0.7, "visible_absorptance": 0.7}, {"type": "EnergyMaterial", "identifier": "Metal Roof Surface", "roughness": "Smooth", "thickness": 0.0007999999999999979, "conductivity": 45.24971874361766, "density": 7824.017889489713, "specific_heat": 499.67760800730963, "thermal_absorptance": 0.9, "solar_absorptance": 0.7, "visible_absorptance": 0.7}, {"type": "EnergyMaterial", "identifier": "8 in. Normalweight Concrete Floor", "roughness": "MediumRough", "thickness": 0.2032, "conductivity": 2.308455174420426, "density": 2322.005309227381, "specific_heat": 831.4635397241673, "thermal_absorptance": 0.9, "solar_absorptance": 0.7, "visible_absorptance": 0.7}, {"type": "EnergyMaterialNoMass", "identifier": "Typical Insulation-R4", "r_value": 0.7044407352395393, "roughness": "MediumSmooth", "thermal_absorptance": 0.9, "solar_absorptance": 0.7, "visible_absorptance": 0.7}, {"type": "EnergyWindowMaterialGlazing", "identifier": "CLEAR 6MM", "thickness": 0.005999999999999977, "solar_transmittance": 0.775, "solar_reflectance": 0.071, "solar_reflectance_back": 0.071, "visible_transmittance": 0.881, "visible_reflectance": 0.08, "visible_reflectance_back": 0.08, "infrared_transmittance": 0.0, "emissivity": 0.84, "emissivity_back": 0.84, "conductivity": 0.8993981199040626, "dirt_correction": 1.0, "solar_diffusing": false}, {"type": "EnergyMaterial", "identifier": "25mm Stucco", "roughness": "Smooth", "thickness": 0.0254, "conductivity": 0.7195184959232496, "density": 1856.0042437235265, "specific_heat": 839.4583814522845, "thermal_absorptance": 0.9, "solar_absorptance": 0.7, "visible_absorptance": 0.7}], "hvacs": [{"type": "PVAV", "identifier": "PVAV_e247a4c2", "display_name": "Baseline PVAV", "vintage": "ASHRAE_2019", "equipment_type": "PVAV_Boiler", "economizer_type": "DifferentialDryBulb", "demand_controlled_ventilation": false}], "shws": [], "program_types": [{"type": "ProgramTypeAbridged", "identifier": "2019::SmallOffice::Corridor", "lighting": {"type": "LightingAbridged", "identifier": "2019::SmallOffice::Corridor_Lighting", "watts_per_area": 4.413199, "return_air_fraction": 0.4, "radiant_fraction": 0.4, "visible_fraction": 0.2, "schedule": "OfficeSmall BLDG_LIGHT_SCH_2013", "baseline_watts_per_area": 4.413199}, "electric_equipment": {"type": "ElectricEquipmentAbridged", "identifier": "2019::SmallOffice::Corridor_Electric", "watts_per_area": 3.1215309999999996, "radiant_fraction": 0.5, "latent_fraction": 0.0, "lost_fraction": 0.0, "schedule": "OfficeSmall BLDG_EQUIP_SCH_2013"}, "infiltration": {"type": "InfiltrationAbridged", "identifier": "2019::SmallOffice::Corridor_Infiltration", "flow_per_exterior_area": 0.0005689600000000001, "schedule": "OfficeSmall INFIL_QUARTER_ON_SCH"}, "ventilation": {"type": "VentilationAbridged", "identifier": "2019::SmallOffice::Corridor_Ventilation", "flow_per_area": 0.0003048}, "setpoint": {"type": "SetpointAbridged", "identifier": "2019::SmallOffice::Corridor_Setpoint", "heating_schedule": "OfficeSmall HTGSETP_SCH_NO_OPTIMUM", "cooling_schedule": "OfficeSmall CLGSETP_SCH_NO_OPTIMUM"}}, {"type": "ProgramTypeAbridged", "identifier": "2019::SmallOffice::Storage", "lighting": {"type": "LightingAbridged", "identifier": "2019::SmallOffice::Storage_Lighting", "watts_per_area": 4.090282, "return_air_fraction": 0.4, "radiant_fraction": 0.4, "visible_fraction": 0.2, "schedule": "OfficeSmall BLDG_LIGHT_SCH_2013", "baseline_watts_per_area": 4.090282}, "electric_equipment": {"type": "ElectricEquipmentAbridged", "identifier": "2019::SmallOffice::Storage_Electric", "watts_per_area": 0.0, "radiant_fraction": 0.5, "latent_fraction": 0.0, "lost_fraction": 0.0, "schedule": "OfficeSmall BLDG_EQUIP_SCH_2013"}, "infiltration": {"type": "InfiltrationAbridged", "identifier": "2019::SmallOffice::Storage_Infiltration", "flow_per_exterior_area": 0.0005689600000000001, "schedule": "OfficeSmall INFIL_QUARTER_ON_SCH"}, "ventilation": {"type": "VentilationAbridged", "identifier": "2019::SmallOffice::Storage_Ventilation", "flow_per_area": 0.0006096}, "setpoint": {"type": "SetpointAbridged", "identifier": "2019::SmallOffice::Storage_Setpoint", "heating_schedule": "OfficeSmall HTGSETP_SCH_NO_OPTIMUM", "cooling_schedule": "OfficeSmall CLGSETP_SCH_NO_OPTIMUM"}}, {"type": "ProgramTypeAbridged", "identifier": "2019::SmallOffice::OpenOffice", "people": {"type": "PeopleAbridged", "identifier": "2019::SmallOffice::OpenOffice_People", "people_per_area": 0.05651055401870768, "radiant_fraction": 0.3, "latent_fraction": {"type": "Autocalculate"}, "occupancy_schedule": "OfficeSmall BLDG_OCC_SCH", "activity_schedule": "OfficeSmall ACTIVITY_SCH"}, "lighting": {"type": "LightingAbridged", "identifier": "2019::SmallOffice::OpenOffice_Lighting", "watts_per_area": 6.565979, "return_air_fraction": 0.4, "radiant_fraction": 0.4, "visible_fraction": 0.2, "schedule": "OfficeSmall BLDG_LIGHT_SCH_2013", "baseline_watts_per_area": 6.565979}, "electric_equipment": {"type": "ElectricEquipmentAbridged", "identifier": "2019::SmallOffice::OpenOffice_Electric", "watts_per_area": 10.333343999999999, "radiant_fraction": 0.5, "latent_fraction": 0.0, "lost_fraction": 0.0, "schedule": "OfficeSmall BLDG_EQUIP_SCH_2013"}, "infiltration": {"type": "InfiltrationAbridged", "identifier": "2019::SmallOffice::OpenOffice_Infiltration", "flow_per_exterior_area": 0.0005689600000000001, "schedule": "OfficeSmall INFIL_QUARTER_ON_SCH"}, "ventilation": {"type": "VentilationAbridged", "identifier": "2019::SmallOffice::OpenOffice_Ventilation", "flow_per_person": 0.002359735, "flow_per_area": 0.0003048}, "setpoint": {"type": "SetpointAbridged", "identifier": "2019::SmallOffice::OpenOffice_Setpoint", "heating_schedule": "OfficeSmall HTGSETP_SCH_NO_OPTIMUM", "cooling_schedule": "OfficeSmall CLGSETP_SCH_NO_OPTIMUM"}}, {"type": "ProgramTypeAbridged", "identifier": "2019::SmallOffice::Elec/MechRoom", "lighting": {"type": "LightingAbridged", "identifier": "2019::SmallOffice::Elec/MechRoom_Lighting", "watts_per_area": 4.628477, "return_air_fraction": 0.4, "radiant_fraction": 0.4, "visible_fraction": 0.2, "schedule": "OfficeSmall BLDG_LIGHT_SCH_2013", "baseline_watts_per_area": 4.628477}, "electric_equipment": {"type": "ElectricEquipmentAbridged", "identifier": "2019::SmallOffice::Elec/MechRoom_Electric", "watts_per_area": 2.906253, "radiant_fraction": 0.5, "latent_fraction": 0.0, "lost_fraction": 0.0, "schedule": "OfficeSmall BLDG_EQUIP_SCH_2013"}, "service_hot_water": {"type": "ServiceHotWaterAbridged", "identifier": "2019::SmallOffice::Elec/MechRoom_SHW", "flow_per_area": 0.02221690294246432, "target_temperature": 60.0, "sensible_fraction": 0.2, "latent_fraction": 0.05, "schedule": "OfficeSmall BLDG_SWH_SCH"}, "infiltration": {"type": "InfiltrationAbridged", "identifier": "2019::SmallOffice::Elec/MechRoom_Infiltration", "flow_per_exterior_area": 0.0005689600000000001, "schedule": "OfficeSmall INFIL_QUARTER_ON_SCH"}, "ventilation": {"type": "VentilationAbridged", "identifier": "2019::SmallOffice::Elec/MechRoom_Ventilation", "flow_per_area": 0.0006096}, "setpoint": {"type": "SetpointAbridged", "identifier": "2019::SmallOffice::Elec/MechRoom_Setpoint", "heating_schedule": "OfficeSmall HTGSETP_SCH_NO_OPTIMUM", "cooling_schedule": "OfficeSmall CLGSETP_SCH_NO_OPTIMUM"}}, {"type": "ProgramTypeAbridged", "identifier": "2019::SmallOffice::Restroom", "lighting": {"type": "LightingAbridged", "identifier": "2019::SmallOffice::Restroom_Lighting", "watts_per_area": 6.781257, "return_air_fraction": 0.4, "radiant_fraction": 0.4, "visible_fraction": 0.2, "schedule": "OfficeSmall BLDG_LIGHT_SCH_2013", "baseline_watts_per_area": 6.781257}, "electric_equipment": {"type": "ElectricEquipmentAbridged", "identifier": "2019::SmallOffice::Restroom_Electric", "watts_per_area": 2.906253, "radiant_fraction": 0.5, "latent_fraction": 0.0, "lost_fraction": 0.0, "schedule": "OfficeSmall BLDG_EQUIP_SCH_2013"}, "infiltration": {"type": "InfiltrationAbridged", "identifier": "2019::SmallOffice::Restroom_Infiltration", "flow_per_exterior_area": 0.0005689600000000001, "schedule": "OfficeSmall INFIL_QUARTER_ON_SCH"}, "ventilation": {"type": "VentilationAbridged", "identifier": "2019::SmallOffice::Restroom_Ventilation", "flow_per_area": 0.0003048}, "setpoint": {"type": "SetpointAbridged", "identifier": "2019::SmallOffice::Restroom_Setpoint", "heating_schedule": "OfficeSmall HTGSETP_SCH_NO_OPTIMUM", "cooling_schedule": "OfficeSmall CLGSETP_SCH_NO_OPTIMUM"}}], "schedules": [{"type": "ScheduleRulesetAbridged", "identifier": "OfficeSmall ACTIVITY_SCH", "day_schedules": [{"type": "ScheduleDay", "identifier": "OfficeSmall ACTIVITY_SCH_Default", "values": [120.0], "times": [[0, 0]], "interpolate": false}, {"type": "ScheduleDay", "identifier": "OfficeSmall ACTIVITY_SCH_SmrDsn", "values": [120.0], "times": [[0, 0]], "interpolate": false}, {"type": "ScheduleDay", "identifier": "OfficeSmall ACTIVITY_SCH_WntrDsn", "values": [120.0], "times": [[0, 0]], "interpolate": false}], "default_day_schedule": "OfficeSmall ACTIVITY_SCH_Default", "summer_designday_schedule": "OfficeSmall ACTIVITY_SCH_SmrDsn", "winter_designday_schedule": "OfficeSmall ACTIVITY_SCH_WntrDsn", "schedule_type_limit": "Activity Level"}, {"type": "ScheduleRulesetAbridged", "identifier": "OfficeSmall BLDG_EQUIP_SCH_2013", "day_schedules": [{"type": "ScheduleDay", "identifier": "OfficeSmall BLDG_EQUIP_SCH_2013_Default", "values": [0.4094775565, 0.4797526335, 0.959505267, 0.90193495098, 0.959505267, 0.4797526335, 0.1919010534, 0.163791022], "times": [[0, 0], [6, 0], [8, 0], [12, 0], [13, 0], [17, 0], [18, 0], [23, 0]], "interpolate": false}, {"type": "ScheduleDay", "identifier": "OfficeSmall BLDG_EQUIP_SCH_2013_SmrDsn", "values": [1.0], "times": [[0, 0]], "interpolate": false}, {"type": "ScheduleDay", "identifier": "OfficeSmall BLDG_EQUIP_SCH_2013_WntrDsn", "values": [0.0], "times": [[0, 0]], "interpolate": false}, {"type": "ScheduleDay", "identifier": "OfficeSmall BLDG_EQUIP_SCH_2013_Wkdy", "values": [0.4094775565, 0.4797526335, 0.959505267, 0.90193495098, 0.959505267, 0.4797526335, 0.1919010534, 0.163791022], "times": [[0, 0], [6, 0], [8, 0], [12, 0], [13, 0], [17, 0], [18, 0], [23, 0]], "interpolate": false}, {"type": "ScheduleDay", "identifier": "OfficeSmall BLDG_EQUIP_SCH_2013_Wknd", "values": [0.1637910226], "times": [[0, 0]], "interpolate": false}], "default_day_schedule": "OfficeSmall BLDG_EQUIP_SCH_2013_Default", "schedule_rules": [{"type": "ScheduleRuleAbridged", "schedule_day": "OfficeSmall BLDG_EQUIP_SCH_2013_Wkdy", "apply_sunday": false, "apply_monday": true, "apply_tuesday": true, "apply_wednesday": true, "apply_thursday": true, "apply_friday": true, "apply_saturday": false, "start_date": [1, 1], "end_date": [12, 31]}, {"type": "ScheduleRuleAbridged", "schedule_day": "OfficeSmall BLDG_EQUIP_SCH_2013_Wknd", "apply_sunday": true, "apply_monday": false, "apply_tuesday": false, "apply_wednesday": false, "apply_thursday": false, "apply_friday": false, "apply_saturday": true, "start_date": [1, 1], "end_date": [12, 31]}], "summer_designday_schedule": "OfficeSmall BLDG_EQUIP_SCH_2013_SmrDsn", "winter_designday_schedule": "OfficeSmall BLDG_EQUIP_SCH_2013_WntrDsn", "schedule_type_limit": "Fractional"}, {"type": "ScheduleRulesetAbridged", "identifier": "OfficeSmall CLGSETP_SCH_NO_OPTIMUM", "day_schedules": [{"type": "ScheduleDay", "identifier": "OfficeSmall CLGSETP_SCH_NO_OPTIMUM_Default", "values": [29.44], "times": [[0, 0]], "interpolate": false}, {"type": "ScheduleDay", "identifier": "OfficeSmall CLGSETP_SCH_NO_OPTIMUM_SmrDsn", "values": [23.89], "times": [[0, 0]], "interpolate": false}, {"type": "ScheduleDay", "identifier": "OfficeSmall CLGSETP_SCH_NO_OPTIMUM_WntrDsn", "values": [29.44], "times": [[0, 0]], "interpolate": false}, {"type": "ScheduleDay", "identifier": "OfficeSmall CLGSETP_SCH_NO_OPTIMUM_Wkdy", "values": [29.44, 23.89, 29.44], "times": [[0, 0], [6, 0], [18, 0]], "interpolate": false}], "default_day_schedule": "OfficeSmall CLGSETP_SCH_NO_OPTIMUM_Default", "schedule_rules": [{"type": "ScheduleRuleAbridged", "schedule_day": "OfficeSmall CLGSETP_SCH_NO_OPTIMUM_Wkdy", "apply_sunday": false, "apply_monday": true, "apply_tuesday": true, "apply_wednesday": true, "apply_thursday": true, "apply_friday": true, "apply_saturday": false, "start_date": [1, 1], "end_date": [12, 31]}], "summer_designday_schedule": "OfficeSmall CLGSETP_SCH_NO_OPTIMUM_SmrDsn", "winter_designday_schedule": "OfficeSmall CLGSETP_SCH_NO_OPTIMUM_WntrDsn", "schedule_type_limit": "Temperature"}, {"type": "ScheduleRulesetAbridged", "identifier": "OfficeSmall HTGSETP_SCH_NO_OPTIMUM", "day_schedules": [{"type": "ScheduleDay", "identifier": "OfficeSmall HTGSETP_SCH_NO_OPTIMUM_Default", "values": [15.56], "times": [[0, 0]], "interpolate": false}, {"type": "ScheduleDay", "identifier": "OfficeSmall HTGSETP_SCH_NO_OPTIMUM_SmrDsn", "values": [15.56], "times": [[0, 0]], "interpolate": false}, {"type": "ScheduleDay", "identifier": "OfficeSmall HTGSETP_SCH_NO_OPTIMUM_WntrDsn", "values": [21.11], "times": [[0, 0]], "interpolate": false}, {"type": "ScheduleDay", "identifier": "OfficeSmall HTGSETP_SCH_NO_OPTIMUM_Wkdy", "values": [15.56, 21.11, 15.56], "times": [[0, 0], [6, 0], [19, 0]], "interpolate": false}], "default_day_schedule": "OfficeSmall HTGSETP_SCH_NO_OPTIMUM_Default", "schedule_rules": [{"type": "ScheduleRuleAbridged", "schedule_day": "OfficeSmall HTGSETP_SCH_NO_OPTIMUM_Wkdy", "apply_sunday": false, "apply_monday": true, "apply_tuesday": true, "apply_wednesday": true, "apply_thursday": true, "apply_friday": true, "apply_saturday": false, "start_date": [1, 1], "end_date": [12, 31]}], "summer_designday_schedule": "OfficeSmall HTGSETP_SCH_NO_OPTIMUM_SmrDsn", "winter_designday_schedule": "OfficeSmall HTGSETP_SCH_NO_OPTIMUM_WntrDsn", "schedule_type_limit": "Temperature"}, {"type": "ScheduleRulesetAbridged", "identifier": "OfficeSmall INFIL_QUARTER_ON_SCH", "day_schedules": [{"type": "ScheduleDay", "identifier": "OfficeSmall INFIL_QUARTER_ON_SCH_Default", "values": [1.0], "times": [[0, 0]], "interpolate": false}, {"type": "ScheduleDay", "identifier": "OfficeSmall INFIL_QUARTER_ON_SCH_SmrDsn", "values": [1.0, 0.25, 1.0], "times": [[0, 0], [7, 0], [19, 0]], "interpolate": false}, {"type": "ScheduleDay", "identifier": "OfficeSmall INFIL_QUARTER_ON_SCH_WntrDsn", "values": [1.0, 0.25, 1.0], "times": [[0, 0], [7, 0], [18, 0]], "interpolate": false}, {"type": "ScheduleDay", "identifier": "OfficeSmall INFIL_QUARTER_ON_SCH_Wkdy", "values": [1.0, 0.25, 1.0], "times": [[0, 0], [7, 0], [19, 0]], "interpolate": false}, {"type": "ScheduleDay", "identifier": "OfficeSmall INFIL_QUARTER_ON_SCH_Sat", "values": [1.0, 0.25, 1.0], "times": [[0, 0], [7, 0], [18, 0]], "interpolate": false}], "default_day_schedule": "OfficeSmall INFIL_QUARTER_ON_SCH_Default", "schedule_rules": [{"type": "ScheduleRuleAbridged", "schedule_day": "OfficeSmall INFIL_QUARTER_ON_SCH_Wkdy", "apply_sunday": false, "apply_monday": true, "apply_tuesday": true, "apply_wednesday": true, "apply_thursday": true, "apply_friday": true, "apply_saturday": false, "start_date": [1, 1], "end_date": [12, 31]}, {"type": "ScheduleRuleAbridged", "schedule_day": "OfficeSmall INFIL_QUARTER_ON_SCH_Sat", "apply_sunday": false, "apply_monday": false, "apply_tuesday": false, "apply_wednesday": false, "apply_thursday": false, "apply_friday": false, "apply_saturday": true, "start_date": [1, 1], "end_date": [12, 31]}], "summer_designday_schedule": "OfficeSmall INFIL_QUARTER_ON_SCH_SmrDsn", "winter_designday_schedule": "OfficeSmall INFIL_QUARTER_ON_SCH_WntrDsn", "schedule_type_limit": "Fractional"}, {"type": "ScheduleRulesetAbridged", "identifier": "OfficeSmall BLDG_LIGHT_SCH_2013", "day_schedules": [{"type": "ScheduleDay", "identifier": "OfficeSmall BLDG_LIGHT_SCH_2013_Default", "values": [0.18, 0.23, 0.178641345, 0.32621463, 0.69903135, 0.6213612, 0.69903135, 0.473787915, 0.32621463, 0.24854448, 0.178641345, 0.18], "times": [[0, 0], [5, 0], [6, 0], [7, 0], [8, 0], [12, 0], [13, 0], [17, 0], [18, 0], [20, 0], [22, 0], [23, 0]], "interpolate": false}, {"type": "ScheduleDay", "identifier": "OfficeSmall BLDG_LIGHT_SCH_2013_SmrDsn", "values": [1.0], "times": [[0, 0]], "interpolate": false}, {"type": "ScheduleDay", "identifier": "OfficeSmall BLDG_LIGHT_SCH_2013_WntrDsn", "values": [0.0], "times": [[0, 0]], "interpolate": false}, {"type": "ScheduleDay", "identifier": "OfficeSmall BLDG_LIGHT_SCH_2013_Wkdy", "values": [0.18, 0.23, 0.178641345, 0.32621463, 0.69903135, 0.6213612, 0.69903135, 0.473787915, 0.32621463, 0.24854448, 0.178641345, 0.18], "times": [[0, 0], [5, 0], [6, 0], [7, 0], [8, 0], [12, 0], [13, 0], [17, 0], [18, 0], [20, 0], [22, 0], [23, 0]], "interpolate": false}, {"type": "ScheduleDay", "identifier": "OfficeSmall BLDG_LIGHT_SCH_2013_Wknd", "values": [0.18], "times": [[0, 0]], "interpolate": false}], "default_day_schedule": "OfficeSmall BLDG_LIGHT_SCH_2013_Default", "schedule_rules": [{"type": "ScheduleRuleAbridged", "schedule_day": "OfficeSmall BLDG_LIGHT_SCH_2013_Wkdy", "apply_sunday": false, "apply_monday": true, "apply_tuesday": true, "apply_wednesday": true, "apply_thursday": true, "apply_friday": true, "apply_saturday": false, "start_date": [1, 1], "end_date": [12, 31]}, {"type": "ScheduleRuleAbridged", "schedule_day": "OfficeSmall BLDG_LIGHT_SCH_2013_Wknd", "apply_sunday": true, "apply_monday": false, "apply_tuesday": false, "apply_wednesday": false, "apply_thursday": false, "apply_friday": false, "apply_saturday": true, "start_date": [1, 1], "end_date": [12, 31]}], "summer_designday_schedule": "OfficeSmall BLDG_LIGHT_SCH_2013_SmrDsn", "winter_designday_schedule": "OfficeSmall BLDG_LIGHT_SCH_2013_WntrDsn", "schedule_type_limit": "Fractional"}, {"type": "ScheduleRulesetAbridged", "identifier": "OfficeSmall BLDG_SWH_SCH", "day_schedules": [{"type": "ScheduleDay", "identifier": "OfficeSmall BLDG_SWH_SCH_Default", "values": [0.0], "times": [[0, 0]], "interpolate": false}, {"type": "ScheduleDay", "identifier": "OfficeSmall BLDG_SWH_SCH_SmrDsn", "values": [0.0, 0.27, 0.55, 0.64, 0.82, 1.0, 0.91, 0.55, 0.73, 0.37, 0.18, 0.27, 0.09, 0.0], "times": [[0, 0], [7, 0], [8, 0], [9, 0], [11, 0], [12, 0], [13, 0], [14, 0], [16, 0], [17, 0], [19, 0], [20, 0], [21, 0], [22, 0]], "interpolate": false}, {"type": "ScheduleDay", "identifier": "OfficeSmall BLDG_SWH_SCH_WntrDsn", "values": [0.0, 0.27, 0.55, 0.64, 0.82, 1.0, 0.91, 0.55, 0.73, 0.37, 0.18, 0.27, 0.09, 0.0], "times": [[0, 0], [7, 0], [8, 0], [9, 0], [11, 0], [12, 0], [13, 0], [14, 0], [16, 0], [17, 0], [19, 0], [20, 0], [21, 0], [22, 0]], "interpolate": false}, {"type": "ScheduleDay", "identifier": "OfficeSmall BLDG_SWH_SCH_Wkdy", "values": [0.0, 0.27, 0.55, 0.64, 0.82, 1.0, 0.91, 0.55, 0.73, 0.37, 0.18, 0.27, 0.09, 0.0], "times": [[0, 0], [7, 0], [8, 0], [9, 0], [11, 0], [12, 0], [13, 0], [14, 0], [16, 0], [17, 0], [19, 0], [20, 0], [21, 0], [22, 0]], "interpolate": false}], "default_day_schedule": "OfficeSmall BLDG_SWH_SCH_Default", "schedule_rules": [{"type": "ScheduleRuleAbridged", "schedule_day": "OfficeSmall BLDG_SWH_SCH_Wkdy", "apply_sunday": false, "apply_monday": true, "apply_tuesday": true, "apply_wednesday": true, "apply_thursday": true, "apply_friday": true, "apply_saturday": false, "start_date": [1, 1], "end_date": [12, 31]}], "summer_designday_schedule": "OfficeSmall BLDG_SWH_SCH_SmrDsn", "winter_designday_schedule": "OfficeSmall BLDG_SWH_SCH_WntrDsn"}, {"type": "ScheduleRulesetAbridged", "identifier": "OfficeSmall BLDG_OCC_SCH", "day_schedules": [{"type": "ScheduleDay", "identifier": "OfficeSmall BLDG_OCC_SCH_Default", "values": [0.0], "times": [[0, 0]], "interpolate": false}, {"type": "ScheduleDay", "identifier": "OfficeSmall BLDG_OCC_SCH_SmrDsn", "values": [1.0], "times": [[0, 0]], "interpolate": false}, {"type": "ScheduleDay", "identifier": "OfficeSmall BLDG_OCC_SCH_WntrDsn", "values": [0.0], "times": [[0, 0]], "interpolate": false}, {"type": "ScheduleDay", "identifier": "OfficeSmall BLDG_OCC_SCH_Wkdy", "values": [0.0, 0.11, 0.21, 1.0, 0.53, 1.0, 0.32, 0.11, 0.05, 0.0], "times": [[0, 0], [6, 0], [7, 0], [8, 0], [12, 0], [13, 0], [17, 0], [18, 0], [22, 0], [23, 0]], "interpolate": false}], "default_day_schedule": "OfficeSmall BLDG_OCC_SCH_Default", "schedule_rules": [{"type": "ScheduleRuleAbridged", "schedule_day": "OfficeSmall BLDG_OCC_SCH_Wkdy", "apply_sunday": false, "apply_monday": true, "apply_tuesday": true, "apply_wednesday": true, "apply_thursday": true, "apply_friday": true, "apply_saturday": false, "start_date": [1, 1], "end_date": [12, 31]}], "summer_designday_schedule": "OfficeSmall BLDG_OCC_SCH_SmrDsn", "winter_designday_schedule": "OfficeSmall BLDG_OCC_SCH_WntrDsn", "schedule_type_limit": "Fractional"}], "schedule_type_limits": [{"type": "ScheduleTypeLimit", "identifier": "Temperature", "lower_limit": -273.15, "upper_limit": {"type": "NoLimit"}, "numeric_type": "Continuous", "unit_type": "Temperature"}, {"type": "ScheduleTypeLimit", "identifier": "Activity Level", "lower_limit": 0.0, "upper_limit": {"type": "NoLimit"}, "numeric_type": "Continuous", "unit_type": "ActivityLevel"}, {"type": "ScheduleTypeLimit", "identifier": "Fractional", "lower_limit": 0.0, "upper_limit": 1.0, "numeric_type": "Continuous", "unit_type": "Dimensionless"}]}, "iesve": {"type": "ModelIesveProperties"}, "radiance": {"type": "ModelRadianceProperties", "global_modifier_set": {"type": "GlobalModifierSet", "wall_set": {"exterior_modifier": "generic_wall_0.50", "interior_modifier": "generic_wall_0.50", "type": "WallModifierSetAbridged"}, "floor_set": {"exterior_modifier": "generic_floor_0.20", "interior_modifier": "generic_floor_0.20", "type": "FloorModifierSetAbridged"}, "roof_ceiling_set": {"exterior_modifier": "generic_ceiling_0.80", "interior_modifier": "generic_ceiling_0.80", "type": "RoofCeilingModifierSetAbridged"}, "aperture_set": {"interior_modifier": "generic_interior_window_vis_0.88", "operable_modifier": "generic_exterior_window_vis_0.64", "skylight_modifier": "generic_exterior_window_vis_0.64", "type": "ApertureModifierSetAbridged", "window_modifier": "generic_exterior_window_vis_0.64"}, "door_set": {"overhead_modifier": "generic_opaque_door_0.50", "exterior_glass_modifier": "generic_exterior_window_vis_0.64", "interior_glass_modifier": "generic_interior_window_vis_0.88", "exterior_modifier": "generic_opaque_door_0.50", "interior_modifier": "generic_opaque_door_0.50", "type": "DoorModifierSetAbridged"}, "shade_set": {"exterior_modifier": "generic_exterior_shade_0.35", "interior_modifier": "generic_interior_shade_0.50", "type": "ShadeModifierSetAbridged"}, "air_boundary_modifier": "air_boundary", "modifiers": [{"modifier": null, "type": "Trans", "identifier": "air_boundary", "r_reflectance": 1.0, "g_reflectance": 1.0, "b_reflectance": 1.0, "specularity": 0.0, "roughness": 0.0, "transmitted_diff": 1.0, "transmitted_spec": 1.0, "dependencies": []}, {"modifier": null, "type": "Plastic", "identifier": "generic_ceiling_0.80", "r_reflectance": 0.8, "g_reflectance": 0.8, "b_reflectance": 0.8, "specularity": 0.0, "roughness": 0.0, "dependencies": []}, {"modifier": null, "type": "Plastic", "identifier": "generic_interior_shade_0.50", "r_reflectance": 0.5, "g_reflectance": 0.5, "b_reflectance": 0.5, "specularity": 0.0, "roughness": 0.0, "dependencies": []}, {"modifier": null, "type": "Glass", "identifier": "generic_interior_window_vis_0.88", "r_transmissivity": 0.9584154328610596, "g_transmissivity": 0.9584154328610596, "b_transmissivity": 0.9584154328610596, "refraction_index": null, "dependencies": []}, {"modifier": null, "type": "Glass", "identifier": "generic_exterior_window_vis_0.64", "r_transmissivity": 0.6975761815384331, "g_transmissivity": 0.6975761815384331, "b_transmissivity": 0.6975761815384331, "refraction_index": null, "dependencies": []}, {"modifier": null, "type": "Plastic", "identifier": "generic_wall_0.50", "r_reflectance": 0.5, "g_reflectance": 0.5, "b_reflectance": 0.5, "specularity": 0.0, "roughness": 0.0, "dependencies": []}, {"modifier": null, "type": "Plastic", "identifier": "generic_exterior_shade_0.35", "r_reflectance": 0.35, "g_reflectance": 0.35, "b_reflectance": 0.35, "specularity": 0.0, "roughness": 0.0, "dependencies": []}, {"modifier": null, "type": "Plastic", "identifier": "generic_floor_0.20", "r_reflectance": 0.2, "g_reflectance": 0.2, "b_reflectance": 0.2, "specularity": 0.0, "roughness": 0.0, "dependencies": []}, {"modifier": null, "type": "Plastic", "identifier": "generic_opaque_door_0.50", "r_reflectance": 0.5, "g_reflectance": 0.5, "b_reflectance": 0.5, "specularity": 0.0, "roughness": 0.0, "dependencies": []}, {"modifier": null, "type": "Plastic", "identifier": "generic_context_0.20", "r_reflectance": 0.2, "g_reflectance": 0.2, "b_reflectance": 0.2, "specularity": 0.0, "roughness": 0.0, "dependencies": []}], "context_modifier": "generic_context_0.20"}, "modifier_sets": [], "modifiers": []}}, "buildings": [{"type": "Building", "identifier": "Model_a9859028-f339-42ff-9a0b-cc839afeb735", "display_name": "Unnamed", "unique_stories": [{"type": "Story", "identifier": "Level_1", "display_name": "Level 1", "room_2ds": [{"type": "Room2D", "identifier": "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d14cc", "display_name": "Laundry 104", "properties": {"type": "Room2DPropertiesAbridged", "comparison": {"type": "Room2DComparisonProperties", "floor_boundary": [[25.07375825930979, -10.83528208196048], [32.81473594959852, -10.83528208196048], [32.814735949598514, -2.44141725256443], [27.198232035289216, -2.441417252564409], [25.07375825930979, -2.4414172525644053]], "window_parameters": [null, null, {"type": "DetailedWindows", "polygons": [[[3.41207349081364, 0.09999999999999999], [3.41207349081364, 7.152230971128607], [0.2624671916010364, 7.152230971128607], [0.2624671916010364, 0.09999999999999999]]], "are_doors": [true]}, null, null]}, "doe2": {"type": "Room2DDoe2Properties"}, "energy": {"type": "Room2DEnergyPropertiesAbridged", "program_type": "2019::SmallOffice::Storage", "construction_set": "2019::ClimateZone5::SteelFramed"}, "radiance": {"type": "Room2DRadiancePropertiesAbridged"}}, "floor_boundary": [[25.07375825930979, -2.4414172525644053], [25.07375825930979, -10.83528208196048], [32.81473594959852, -10.83528208196048], [32.814735949598514, -2.44141725256443], [27.198232035289212, -2.441417252564412]], "floor_height": 0.0, "floor_to_ceiling_height": 9.842519685039367, "is_ground_contact": true, "is_top_exposed": false, "boundary_conditions": [{"type": "Surface", "boundary_condition_objects": ["Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d14bf..Face1", "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d14bf"]}, {"type": "Surface", "boundary_condition_objects": ["Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d15d0..Face3", "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d15d0"]}, {"type": "Surface", "boundary_condition_objects": ["Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d15c9..Face2", "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d15c9"]}, {"type": "Surface", "boundary_condition_objects": ["Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d1502..Face1", "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d1502"]}, {"type": "Surface", "boundary_condition_objects": ["Room_b3a4a465-08e5-441a-bd3e-d967e546d52e-000dd6aa..Face5", "Room_b3a4a465-08e5-441a-bd3e-d967e546d52e-000dd6aa"]}], "window_parameters": [null, null, null, {"type": "DetailedWindows", "polygons": [[[3.4120734908136434, 0.09999999999999999], [3.4120734908136434, 7.152230971128607], [0.26246719160103993, 7.152230971128607], [0.26246719160103993, 0.09999999999999999]]], "are_doors": [true]}, null], "user_data": {"__layer__": "Room"}}, {"type": "Room2D", "identifier": "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d14bf", "display_name": "Kitchen & Dining 101", "properties": {"type": "Room2DPropertiesAbridged", "comparison": {"type": "Room2DComparisonProperties", "floor_boundary": [[25.0737582593098, -2.4414172525644053], [22.837701828863615, -2.441417252564399], [22.837701828863615, 4.063011881293264], [22.5063369994673, 4.063011881293264], [22.5063369994673, 9.512486946916393], [-16.036970087146933, 9.512486946910396], [-16.036970087146933, -10.83528208196048], [22.837701828863604, -10.83528208196048], [22.837701828863604, -10.83528208196048], [25.07375825930979, -10.83528208196048]], "window_parameters": [null, {"type": "DetailedWindows", "polygons": [[[6.3239829396319465, 0.09999999999999999], [6.3239829396319465, 7.250656167978998], [0.14944225721725068, 7.250656167978998], [0.14944225721725068, 0.09999999999999999]]], "are_doors": [true]}, null, null, {"type": "DetailedWindows", "polygons": [[[4.520997375328118, 0.1312335958005253], [4.520997375328108, 8.727034120734785], [0.12467191601051653, 8.727034120734785], [0.12467191601051653, 0.1312335958005253]], [[9.4422572178478, 0.1312335958005253], [9.442257217847798, 8.727034120735395], [4.652230971128642, 8.727034120735395], [4.652230971128642, 0.1312335958005253]], [[14.363517060367482, 0.1312335958005253], [14.36351706036748, 8.727034120735395], [9.573490813648322, 8.727034120735395], [9.57349081364832, 0.1312335958005253]], [[19.284776902887163, 0.1312335958005253], [19.28477690288716, 8.727034120735395], [14.494750656168007, 8.727034120735395], [14.494750656168005, 0.1312335958005253]], [[24.20603674540685, 0.1312335958005253], [24.20603674540685, 8.727034120735395], [19.41601049868769, 8.727034120735395], [19.416010498687687, 0.1312335958005253]], [[29.127296587926537, 0.1312335958005253], [29.12729658792653, 8.727034120735395], [24.337270341207375, 8.727034120735395], [24.337270341207375, 0.1312335958005253]], [[34.048556430446226, 0.1312335958005253], [34.04855643044622, 8.727034120735395], [29.25853018372706, 8.727034120735395], [29.25853018372706, 0.1312335958005253]], [[38.44330708661424, 0.1312335958005253], [38.44330708661424, 8.727034120734785], [34.179790026246735, 8.727034120734785], [34.179790026246735, 0.1312335958005253]]], "are_doors": [false, false, false, false, false, false, false, false]}, {"type": "DetailedWindows", "polygons": [[[19.78510498687279, 0.1312335958005218], [19.78510498687278, 8.727034120735395], [14.995078740153623, 8.727034120735395], [14.995078740153623, 0.1312335958005218]], [[14.863845144353096, 0.1312335958005218], [14.863845144353096, 8.727034120735395], [10.073818897633936, 8.727034120735395], [10.073818897633936, 0.1312335958005218]], [[9.942585301833411, 0.1312335958005218], [9.94258530183341, 8.727034120735395], [5.15255905511425, 8.727034120735395], [5.15255905511425, 0.1312335958005218]], [[5.021325459313723, 0.1312335958005218], [5.021325459313722, 8.727034120735395], [0.2312992125945641, 8.727034120735395], [0.2312992125945641, 0.1312335958005218]]], "are_doors": [false, false, false, false]}, {"type": "DetailedWindows", "polygons": [[[4.360236220472471, 0.13123359580052518], [4.360236220472471, 8.727034120735178], [0.10000000000000142, 8.727034120735178], [0.10000000000000142, 0.1312335958005253]], [[9.281496062992147, 0.13123359580052518], [9.281496062992147, 8.727034120735395], [4.491469816272989, 8.727034120735395], [4.491469816272989, 0.13123359580052518]], [[14.202755905511836, 0.13123359580052518], [14.202755905511836, 8.727034120735395], [9.412729658792678, 8.727034120735395], [9.412729658792676, 0.13123359580052518]], [[19.124015748031518, 0.13123359580052518], [19.124015748031518, 8.727034120735395], [14.33398950131236, 8.727034120735395], [14.333989501312358, 0.13123359580052518]], [[24.045275590551206, 0.13123359580052518], [24.045275590551206, 8.727034120735395], [19.25524934383205, 8.727034120735395], [19.25524934383205, 0.13123359580052518]], [[28.966535433070888, 0.13123359580052518], [28.966535433070888, 8.727034120735395], [24.17650918635173, 8.727034120735395], [24.17650918635173, 0.13123359580052518]], [[33.88779527559057, 0.13123359580052518], [33.88779527559057, 8.727034120735395], [29.097769028871415, 8.727034120735395], [29.097769028871415, 0.13123359580052518]], [[38.41207349081368, 0.13123359580052518], [38.41207349081368, 8.727034120735178], [34.019028871391086, 8.727034120735178], [34.019028871391086, 0.13123359580052518]]], "are_doors": [false, false, false, false, false, false, false, false]}, {"type": "DetailedWindows", "polygons": [[[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]], [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]], [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]], [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]], [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]], [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]], [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]], [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]], "are_doors": [false, false, false, false, false, false, false, false]}, null, null]}, "doe2": {"type": "Room2DDoe2Properties"}, "energy": {"type": "Room2DEnergyPropertiesAbridged", "program_type": "2019::SmallOffice::OpenOffice", "construction_set": "2019::ClimateZone5::SteelFramed", "hvac": "PVAV_e247a4c2"}, "radiance": {"type": "Room2DRadiancePropertiesAbridged"}}, "floor_boundary": [[25.07375825930979, -10.83528208196048], [25.0737582593098, -2.4414172525644053], [22.837701828863615, -2.441417252564399], [22.837701828863615, 4.063011881293264], [22.5063369994673, 4.063011881293264], [22.5063369994673, 9.512486946916393], [-16.036970087146933, 9.512486946910396], [-16.036970087146933, -10.83528208196048], [22.837701828863544, -10.83528208196048]], "floor_height": 0.0, "floor_to_ceiling_height": 9.842519685039367, "is_ground_contact": true, "is_top_exposed": false, "boundary_conditions": [{"type": "Surface", "boundary_condition_objects": ["Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d14cc..Face1", "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d14cc"]}, {"type": "Surface", "boundary_condition_objects": ["Room_b3a4a465-08e5-441a-bd3e-d967e546d52e-000dd6aa..Face4", "Room_b3a4a465-08e5-441a-bd3e-d967e546d52e-000dd6aa"]}, {"type": "Surface", "boundary_condition_objects": ["Room_b3a4a465-08e5-441a-bd3e-d967e546d52e-000dd6aa..Face3", "Room_b3a4a465-08e5-441a-bd3e-d967e546d52e-000dd6aa"]}, {"type": "Surface", "boundary_condition_objects": ["Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d15c9..Face7", "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d15c9"]}, {"type": "Surface", "boundary_condition_objects": ["Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d15c9..Face6", "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d15c9"]}, {"type": "Outdoors", "sun_exposure": true, "wind_exposure": true, "view_factor": {"type": "Autocalculate"}}, {"type": "Outdoors", "sun_exposure": true, "wind_exposure": true, "view_factor": {"type": "Autocalculate"}}, {"type": "Outdoors", "sun_exposure": true, "wind_exposure": true, "view_factor": {"type": "Autocalculate"}}, {"type": "Surface", "boundary_condition_objects": ["Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d15d0..Face4", "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d15d0"]}], "window_parameters": [null, null, {"type": "DetailedWindows", "polygons": [[[6.3239829396319465, 0.09999999999999999], [6.3239829396319465, 7.250656167978998], [0.14944225721725068, 7.250656167978998], [0.14944225721725068, 0.09999999999999999]]], "are_doors": [true]}, null, null, {"type": "DetailedWindows", "polygons": [[[4.520997375328118, 0.1312335958005253], [4.520997375328108, 8.727034120734785], [0.12467191601051653, 8.727034120734785], [0.12467191601051653, 0.1312335958005253]], [[9.4422572178478, 0.1312335958005253], [9.442257217847798, 8.727034120735395], [4.652230971128642, 8.727034120735395], [4.652230971128642, 0.1312335958005253]], [[14.363517060367482, 0.1312335958005253], [14.36351706036748, 8.727034120735395], [9.573490813648322, 8.727034120735395], [9.57349081364832, 0.1312335958005253]], [[19.284776902887163, 0.1312335958005253], [19.28477690288716, 8.727034120735395], [14.494750656168007, 8.727034120735395], [14.494750656168005, 0.1312335958005253]], [[24.20603674540685, 0.1312335958005253], [24.20603674540685, 8.727034120735395], [19.41601049868769, 8.727034120735395], [19.416010498687687, 0.1312335958005253]], [[29.127296587926537, 0.1312335958005253], [29.12729658792653, 8.727034120735395], [24.337270341207375, 8.727034120735395], [24.337270341207375, 0.1312335958005253]], [[34.048556430446226, 0.1312335958005253], [34.04855643044622, 8.727034120735395], [29.25853018372706, 8.727034120735395], [29.25853018372706, 0.1312335958005253]], [[38.44330708661424, 0.1312335958005253], [38.44330708661424, 8.727034120734785], [34.179790026246735, 8.727034120734785], [34.179790026246735, 0.1312335958005253]]], "are_doors": [false, false, false, false, false, false, false, false]}, {"type": "DetailedWindows", "polygons": [[[19.78510498687279, 0.1312335958005218], [19.78510498687278, 8.727034120735395], [14.995078740153623, 8.727034120735395], [14.995078740153623, 0.1312335958005218]], [[14.863845144353096, 0.1312335958005218], [14.863845144353096, 8.727034120735395], [10.073818897633936, 8.727034120735395], [10.073818897633936, 0.1312335958005218]], [[9.942585301833411, 0.1312335958005218], [9.94258530183341, 8.727034120735395], [5.15255905511425, 8.727034120735395], [5.15255905511425, 0.1312335958005218]], [[5.021325459313723, 0.1312335958005218], [5.021325459313722, 8.727034120735395], [0.2312992125945641, 8.727034120735395], [0.2312992125945641, 0.1312335958005218]]], "are_doors": [false, false, false, false]}, {"type": "DetailedWindows", "polygons": [[[4.360236220472471, 0.13123359580052518], [4.360236220472471, 8.727034120735178], [0.10000000000000142, 8.727034120735178], [0.10000000000000142, 0.1312335958005253]], [[9.281496062992147, 0.13123359580052518], [9.281496062992147, 8.727034120735395], [4.491469816272989, 8.727034120735395], [4.491469816272989, 0.13123359580052518]], [[14.202755905511836, 0.13123359580052518], [14.202755905511836, 8.727034120735395], [9.412729658792678, 8.727034120735395], [9.412729658792676, 0.13123359580052518]], [[19.124015748031518, 0.13123359580052518], [19.124015748031518, 8.727034120735395], [14.33398950131236, 8.727034120735395], [14.333989501312358, 0.13123359580052518]], [[24.045275590551206, 0.13123359580052518], [24.045275590551206, 8.727034120735395], [19.25524934383205, 8.727034120735395], [19.25524934383205, 0.13123359580052518]], [[28.966535433070888, 0.13123359580052518], [28.966535433070888, 8.727034120735395], [24.17650918635173, 8.727034120735395], [24.17650918635173, 0.13123359580052518]], [[33.88779527559057, 0.13123359580052518], [33.88779527559057, 8.727034120735395], [29.097769028871415, 8.727034120735395], [29.097769028871415, 0.13123359580052518]], [[38.41207349081368, 0.13123359580052518], [38.41207349081368, 8.727034120735178], [34.019028871391086, 8.727034120735178], [34.019028871391086, 0.13123359580052518]]], "are_doors": [false, false, false, false, false, false, false, false]}, null], "user_data": {"__layer__": "Room"}}, {"type": "Room2D", "identifier": "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d1502", "display_name": "Bath 103", "properties": {"type": "Room2DPropertiesAbridged", "comparison": {"type": "Room2DComparisonProperties", "floor_boundary": [[32.81473594959852, -2.4414172525644284], [32.81473594959852, 4.0630118812932405], [27.198232035289223, 4.0630118812932405], [27.198232035289212, -2.441417252564424]], "window_parameters": [null, {"type": "DetailedWindows", "polygons": [[[3.4120734908136434, 0.09999999999999999], [3.4120734908136434, 7.152230971128607], [0.26246719160103993, 7.152230971128607], [0.26246719160103993, 0.09999999999999999]]], "are_doors": [true]}, null, {"type": "DetailedWindows", "polygons": [[[5.354036722708262, 0.09999999999999999], [5.354036722708262, 7.152230971128607], [2.2044304234956584, 7.152230971128607], [2.2044304234956584, 0.09999999999999999]]], "are_doors": [true]}]}, "doe2": {"type": "Room2DDoe2Properties"}, "energy": {"type": "Room2DEnergyPropertiesAbridged", "program_type": "2019::SmallOffice::Restroom", "construction_set": "2019::ClimateZone5::SteelFramed", "hvac": "PVAV_e247a4c2"}, "radiance": {"type": "Room2DRadiancePropertiesAbridged"}}, "floor_boundary": [[27.198232035289212, -2.441417252564424], [32.81473594959852, -2.4414172525644284], [32.81473594959852, 4.0630118812932405], [27.198232035289223, 4.0630118812932405]], "floor_height": 0.0, "floor_to_ceiling_height": 9.842519685039367, "is_ground_contact": true, "is_top_exposed": false, "boundary_conditions": [{"type": "Surface", "boundary_condition_objects": ["Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d14cc..Face4", "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d14cc"]}, {"type": "Surface", "boundary_condition_objects": ["Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d15c9..Face1", "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d15c9"]}, {"type": "Surface", "boundary_condition_objects": ["Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d15c9..Face9", "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d15c9"]}, {"type": "Surface", "boundary_condition_objects": ["Room_b3a4a465-08e5-441a-bd3e-d967e546d52e-000dd6aa..Face1", "Room_b3a4a465-08e5-441a-bd3e-d967e546d52e-000dd6aa"]}], "window_parameters": [{"type": "DetailedWindows", "polygons": [[[5.354036722708262, 0.09999999999999999], [5.354036722708262, 7.152230971128607], [2.2044304234956584, 7.152230971128607], [2.2044304234956584, 0.09999999999999999]]], "are_doors": [true]}, null, {"type": "DetailedWindows", "polygons": [[[3.4120734908136505, 0.09999999999999999], [3.4120734908136505, 7.152230971128607], [0.26246719160104703, 7.152230971128607], [0.26246719160104703, 0.09999999999999999]]], "are_doors": [true]}, null], "user_data": {"__layer__": "Room"}}, {"type": "Room2D", "identifier": "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d15c9", "display_name": "Hall 105", "properties": {"type": "Room2DPropertiesAbridged", "comparison": {"type": "Room2DComparisonProperties", "floor_boundary": [[32.814735949598514, -2.4414172525644258], [32.81473594959852, -10.83528208196048], [43.185470857734984, -10.83528208196048], [43.185470857735, 9.512486946911459], [22.5063369994673, 9.512486946911878], [22.5063369994673, 4.063011881293265], [22.837701828863615, 4.063011881293265], [27.198232035289223, 4.063011881293257], [32.814735949598514, 4.063011881293232]], "window_parameters": [null, null, {"type": "DetailedWindows", "polygons": [[[19.885170603673835, 0.1312335958005253], [19.885170603673835, 8.758267716535434], [15.620078740156778, 8.758267716535434], [15.620078740156778, 0.1312335958005253]]], "are_doors": [false]}, {"type": "DetailedWindows", "polygons": [[[10.04265091863494, 0.1312335958005253], [10.04265091863494, 8.758267716535434], [5.318241469816044, 8.758267716535434], [5.318241469816044, 0.1312335958005253]], [[5.187007874015528, 0.1312335958005253], [5.187007874015528, 8.758267716535434], [0.46259842519680916, 8.758267716535434], [0.46259842519680916, 0.1312335958005253]]], "are_doors": [false, false]}, null, null, null, {"type": "DetailedWindows", "polygons": [[[5.354036722708251, 0.09999999999999999], [5.354036722708251, 7.152230971128607], [2.2044304234956478, 7.152230971128607], [2.2044304234956478, 0.09999999999999999]]], "are_doors": [true]}, null]}, "doe2": {"type": "Room2DDoe2Properties"}, "energy": {"type": "Room2DEnergyPropertiesAbridged", "program_type": "2019::SmallOffice::Corridor", "construction_set": "2019::ClimateZone5::SteelFramed", "hvac": "PVAV_e247a4c2"}, "radiance": {"type": "Room2DRadiancePropertiesAbridged"}}, "floor_boundary": [[32.814735949598514, 4.063011881293232], [32.814735949598514, -2.44141725256443], [32.81473594959852, -10.83528208196048], [43.185470857734984, -10.83528208196048], [43.185470857735, 9.512486946911459], [22.5063369994673, 9.512486946911878], [22.5063369994673, 4.063011881293265], [22.837701828863615, 4.0630118812932645], [27.198232035289223, 4.06301188129325]], "floor_height": 1.122075751586368e-30, "floor_to_ceiling_height": 9.842519685039367, "is_ground_contact": true, "is_top_exposed": false, "boundary_conditions": [{"type": "Surface", "boundary_condition_objects": ["Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d1502..Face2", "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d1502"]}, {"type": "Surface", "boundary_condition_objects": ["Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d14cc..Face3", "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d14cc"]}, {"type": "Surface", "boundary_condition_objects": ["Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d15d0..Face2", "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d15d0"]}, {"type": "Outdoors", "sun_exposure": true, "wind_exposure": true, "view_factor": {"type": "Autocalculate"}}, {"type": "Outdoors", "sun_exposure": true, "wind_exposure": true, "view_factor": {"type": "Autocalculate"}}, {"type": "Surface", "boundary_condition_objects": ["Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d14bf..Face5", "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d14bf"]}, {"type": "Surface", "boundary_condition_objects": ["Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d14bf..Face4", "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d14bf"]}, {"type": "Surface", "boundary_condition_objects": ["Room_b3a4a465-08e5-441a-bd3e-d967e546d52e-000dd6aa..Face2", "Room_b3a4a465-08e5-441a-bd3e-d967e546d52e-000dd6aa"]}, {"type": "Surface", "boundary_condition_objects": ["Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d1502..Face3", "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d1502"]}], "window_parameters": [null, null, null, {"type": "DetailedWindows", "polygons": [[[19.885170603673835, 0.1312335958005253], [19.885170603673835, 8.758267716535434], [15.620078740156778, 8.758267716535434], [15.620078740156778, 0.1312335958005253]]], "are_doors": [false]}, {"type": "DetailedWindows", "polygons": [[[10.04265091863494, 0.1312335958005253], [10.04265091863494, 8.758267716535434], [5.318241469816044, 8.758267716535434], [5.318241469816044, 0.1312335958005253]], [[5.187007874015528, 0.1312335958005253], [5.187007874015528, 8.758267716535434], [0.46259842519680916, 8.758267716535434], [0.46259842519680916, 0.1312335958005253]]], "are_doors": [false, false]}, null, null, null, {"type": "DetailedWindows", "polygons": [[[5.354036722708251, 0.09999999999999999], [5.354036722708251, 7.152230971128607], [2.2044304234956478, 7.152230971128607], [2.2044304234956478, 0.09999999999999999]]], "are_doors": [true]}], "user_data": {"__layer__": "Room"}}, {"type": "Room2D", "identifier": "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d15d0", "display_name": "Living 106", "properties": {"type": "Room2DPropertiesAbridged", "comparison": {"type": "Room2DComparisonProperties", "floor_boundary": [[43.185470857734984, -10.83528208196048], [32.81473594959852, -10.83528208196048], [25.07375825930979, -10.83528208196048], [22.83770182886355, -10.83528208196048], [22.837701828863533, -49.87399599272252], [43.18547085773492, -49.87399599272252]], "window_parameters": [null, null, null, {"type": "DetailedWindows", "polygons": [[[14.432414698163504, 0.09999999999999987], [14.432414698163504, 8.858267716535412], [9.511154855643818, 8.858267716535408], [9.511154855643818, 0.09999999999999987]], [[29.19619422572257, 0.09999999999999987], [29.19619422572257, 8.858267716535412], [24.27493438320289, 8.858267716535408], [24.27493438320289, 0.09999999999999987]], [[19.353674540683187, 0.09999999999999987], [19.353674540683187, 8.858267716535412], [14.432414698163507, 8.858267716535408], [14.432414698163507, 0.09999999999999987]], [[24.274934383202876, 0.09999999999999987], [24.274934383202876, 8.858267716535412], [19.353674540683194, 8.858267716535408], [19.353674540683194, 0.09999999999999987]]], "are_doors": [false, false, false, false]}, {"type": "DetailedWindows", "polygons": [[[10.108267716535426, 0.13123359580052507], [10.108267716535426, 6.824146981627296], [5.318241469816261, 6.824146981627295], [5.318241469816261, 0.13123359580052507]], [[15.0295275590551, 0.13123359580052507], [15.0295275590551, 6.824146981627296], [10.23950131233595, 6.824146981627295], [10.23950131233595, 0.13123359580052507]], [[5.1870078740157375, 6.95538057742782], [5.1870078740157375, 8.727034120734908], [0.46259842519684824, 8.727034120734908], [0.46259842519684824, 6.95538057742782]], [[10.108267716535426, 6.95538057742782], [10.108267716535426, 8.727034120734908], [5.318241469816261, 8.727034120734908], [5.318241469816261, 6.95538057742782]], [[15.0295275590551, 6.95538057742782], [15.0295275590551, 8.727034120734908], [10.23950131233595, 8.727034120734908], [10.23950131233595, 6.95538057742782]], [[19.885170603674528, 6.95538057742782], [19.885170603674528, 8.727034120734908], [15.160761154855646, 8.727034120734908], [15.160761154855646, 6.95538057742782]], [[5.1870078740157375, 0.09999999999999987], [5.1870078740157375, 6.824146981627295], [0.46259842519684824, 6.824146981627295], [0.46259842519684824, 0.09999999999999987]], [[19.885170603674528, 0.09999999999999987], [19.885170603674528, 6.824146981627295], [15.160761154855646, 6.824146981627295], [15.160761154855646, 0.09999999999999987]]], "are_doors": [false, false, false, false, false, false, false, false]}, {"type": "DetailedWindows", "polygons": [[[14.763779527559151, 0.09999999999999987], [14.763779527559151, 8.858267716535408], [9.84251968503947, 8.858267716535412], [9.84251968503947, 0.09999999999999987]], [[29.52755905511822, 0.09999999999999987], [29.52755905511822, 8.858267716535408], [24.606299212598536, 8.858267716535412], [24.606299212598536, 0.09999999999999987]], [[24.606299212598532, 0.09999999999999987], [24.606299212598532, 8.858267716535408], [19.68503937007885, 8.858267716535412], [19.68503937007885, 0.09999999999999987]], [[19.685039370078844, 0.09999999999999987], [19.685039370078844, 8.858267716535408], [14.763779527559166, 8.858267716535412], [14.763779527559166, 0.09999999999999987]], [[33.272481278908494, 2.205965741602731], [33.85826771653541, 2.7917521792296576], [33.85826771653541, 3.6201793039758474], [33.272481278908494, 4.205965741602745], [32.444054154162295, 4.205965741602746], [31.8582677165354, 3.6201793039758483], [31.85826771653541, 2.7917521792296567], [32.444054154162295, 2.205965741602731]], [[33.65223097112872, 5.8952822487871295], [33.65223097112872, 7.395282248787152], [33.508993716909934, 7.836121188006508], [33.13399371690994, 8.10857463600852], [32.67046822534751, 8.108574636008521], [32.295562805200284, 7.8362204620214015], [32.152230971128716, 7.395282248787156], [32.152230971128716, 5.8952822487871295]], [[8.148217715784085, 3.4061155231373714], [8.530183727034185, 4.581686027722303], [8.1482177157841, 5.757256532307225], [7.148217715784114, 6.483799060312572], [5.91224090444441, 6.4838203044228715], [4.91214973828437, 5.757256532307229], [4.53018372703427, 4.581686027722309], [4.91214973828437, 3.4061155231373865], [5.9122409044443955, 2.679551751021738], [7.1481265496240525, 2.679551751021733]]], "are_doors": [false, false, false, false, false, false, false]}]}, "doe2": {"type": "Room2DDoe2Properties"}, "energy": {"type": "Room2DEnergyPropertiesAbridged", "program_type": "2019::SmallOffice::OpenOffice", "construction_set": "2019::ClimateZone5::SteelFramed", "hvac": "PVAV_e247a4c2"}, "radiance": {"type": "Room2DRadiancePropertiesAbridged"}}, "floor_boundary": [[43.18547085773492, -49.87399599272252], [43.185470857734984, -10.83528208196048], [32.81473594959852, -10.83528208196048], [25.07375825930979, -10.83528208196048], [22.83770182886355, -10.83528208196048], [22.837701828863533, -49.87399599272252]], "floor_height": -1.8044619422572172, "floor_to_ceiling_height": 9.022309711286361, "is_ground_contact": true, "is_top_exposed": true, "boundary_conditions": [{"type": "Outdoors", "sun_exposure": true, "wind_exposure": true, "view_factor": {"type": "Autocalculate"}}, {"type": "Surface", "boundary_condition_objects": ["Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d15c9..Face3", "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d15c9"]}, {"type": "Surface", "boundary_condition_objects": ["Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d14cc..Face2", "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d14cc"]}, {"type": "Surface", "boundary_condition_objects": ["Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d14bf..Face9", "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d14bf"]}, {"type": "Outdoors", "sun_exposure": true, "wind_exposure": true, "view_factor": {"type": "Autocalculate"}}, {"type": "Outdoors", "sun_exposure": true, "wind_exposure": true, "view_factor": {"type": "Autocalculate"}}], "window_parameters": [{"type": "DetailedWindows", "polygons": [[[14.763779527559151, 0.09999999999999987], [14.763779527559151, 8.858267716535408], [9.84251968503947, 8.858267716535412], [9.84251968503947, 0.09999999999999987]], [[29.52755905511822, 0.09999999999999987], [29.52755905511822, 8.858267716535408], [24.606299212598536, 8.858267716535412], [24.606299212598536, 0.09999999999999987]], [[24.606299212598532, 0.09999999999999987], [24.606299212598532, 8.858267716535408], [19.68503937007885, 8.858267716535412], [19.68503937007885, 0.09999999999999987]], [[19.685039370078844, 0.09999999999999987], [19.685039370078844, 8.858267716535408], [14.763779527559166, 8.858267716535412], [14.763779527559166, 0.09999999999999987]], [[33.272481278908494, 2.205965741602731], [33.85826771653541, 2.7917521792296576], [33.85826771653541, 3.6201793039758474], [33.272481278908494, 4.205965741602745], [32.444054154162295, 4.205965741602746], [31.8582677165354, 3.6201793039758483], [31.85826771653541, 2.7917521792296567], [32.444054154162295, 2.205965741602731]], [[33.65223097112872, 5.8952822487871295], [33.65223097112872, 7.395282248787152], [33.508993716909934, 7.836121188006508], [33.13399371690994, 8.10857463600852], [32.67046822534751, 8.108574636008521], [32.295562805200284, 7.8362204620214015], [32.152230971128716, 7.395282248787156], [32.152230971128716, 5.8952822487871295]], [[8.148217715784085, 3.4061155231373714], [8.530183727034185, 4.581686027722303], [8.1482177157841, 5.757256532307225], [7.148217715784114, 6.483799060312572], [5.91224090444441, 6.4838203044228715], [4.91214973828437, 5.757256532307229], [4.53018372703427, 4.581686027722309], [4.91214973828437, 3.4061155231373865], [5.9122409044443955, 2.679551751021738], [7.1481265496240525, 2.679551751021733]]], "are_doors": [false, false, false, false, false, false, false]}, null, null, null, {"type": "DetailedWindows", "polygons": [[[14.432414698163504, 0.09999999999999987], [14.432414698163504, 8.858267716535412], [9.511154855643818, 8.858267716535408], [9.511154855643818, 0.09999999999999987]], [[29.19619422572257, 0.09999999999999987], [29.19619422572257, 8.858267716535412], [24.27493438320289, 8.858267716535408], [24.27493438320289, 0.09999999999999987]], [[19.353674540683187, 0.09999999999999987], [19.353674540683187, 8.858267716535412], [14.432414698163507, 8.858267716535408], [14.432414698163507, 0.09999999999999987]], [[24.274934383202876, 0.09999999999999987], [24.274934383202876, 8.858267716535412], [19.353674540683194, 8.858267716535408], [19.353674540683194, 0.09999999999999987]]], "are_doors": [false, false, false, false]}, {"type": "DetailedWindows", "polygons": [[[10.108267716535426, 0.13123359580052507], [10.108267716535426, 6.824146981627296], [5.318241469816261, 6.824146981627295], [5.318241469816261, 0.13123359580052507]], [[15.0295275590551, 0.13123359580052507], [15.0295275590551, 6.824146981627296], [10.23950131233595, 6.824146981627295], [10.23950131233595, 0.13123359580052507]], [[5.1870078740157375, 6.95538057742782], [5.1870078740157375, 8.727034120734908], [0.46259842519684824, 8.727034120734908], [0.46259842519684824, 6.95538057742782]], [[10.108267716535426, 6.95538057742782], [10.108267716535426, 8.727034120734908], [5.318241469816261, 8.727034120734908], [5.318241469816261, 6.95538057742782]], [[15.0295275590551, 6.95538057742782], [15.0295275590551, 8.727034120734908], [10.23950131233595, 8.727034120734908], [10.23950131233595, 6.95538057742782]], [[19.885170603674528, 6.95538057742782], [19.885170603674528, 8.727034120734908], [15.160761154855646, 8.727034120734908], [15.160761154855646, 6.95538057742782]], [[5.1870078740157375, 0.09999999999999987], [5.1870078740157375, 6.824146981627295], [0.46259842519684824, 6.824146981627295], [0.46259842519684824, 0.09999999999999987]], [[19.885170603674528, 0.09999999999999987], [19.885170603674528, 6.824146981627295], [15.160761154855646, 6.824146981627295], [15.160761154855646, 0.09999999999999987]]], "are_doors": [false, false, false, false, false, false, false, false]}], "user_data": {"__layer__": "Room"}}, {"type": "Room2D", "identifier": "Room_b3a4a465-08e5-441a-bd3e-d967e546d52e-000dd6aa", "display_name": "Mech. 102", "properties": {"type": "Room2DPropertiesAbridged", "comparison": {"type": "Room2DComparisonProperties", "floor_boundary": [[27.198232035289223, 4.0630118812932565], [22.837701828863615, 4.0630118812932565], [22.837701828863615, -2.441417252564408], [25.073758259309795, -2.44141725256441], [27.198232035289216, -2.4414172525644107]], "window_parameters": [null, {"type": "DetailedWindows", "polygons": [[[6.354986876640412, 0.09999999999999999], [6.354986876640412, 7.250656167978998], [0.18044619422571673, 7.250656167978998], [0.18044619422571673, 0.09999999999999999]]], "are_doors": [true]}, null, null, null]}, "doe2": {"type": "Room2DDoe2Properties"}, "energy": {"type": "Room2DEnergyPropertiesAbridged", "program_type": "2019::SmallOffice::Elec/MechRoom", "construction_set": "2019::ClimateZone5::SteelFramed"}, "radiance": {"type": "Room2DRadiancePropertiesAbridged"}}, "floor_boundary": [[27.198232035289216, -2.4414172525644107], [27.198232035289223, 4.0630118812932565], [22.837701828863615, 4.0630118812932565], [22.837701828863615, -2.441417252564408], [25.07375825930979, -2.4414172525644093]], "floor_height": 0.0, "floor_to_ceiling_height": 9.842519685039367, "is_ground_contact": true, "is_top_exposed": false, "boundary_conditions": [{"type": "Surface", "boundary_condition_objects": ["Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d1502..Face4", "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d1502"]}, {"type": "Surface", "boundary_condition_objects": ["Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d15c9..Face8", "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d15c9"]}, {"type": "Surface", "boundary_condition_objects": ["Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d14bf..Face3", "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d14bf"]}, {"type": "Surface", "boundary_condition_objects": ["Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d14bf..Face2", "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d14bf"]}, {"type": "Surface", "boundary_condition_objects": ["Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d14cc..Face5", "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d14cc"]}], "window_parameters": [null, null, {"type": "DetailedWindows", "polygons": [[[6.354986876640412, 0.09999999999999999], [6.354986876640412, 7.250656167978998], [0.18044619422571673, 7.250656167978998], [0.18044619422571673, 0.09999999999999999]]], "are_doors": [true]}, null, null], "user_data": {"__layer__": "Room"}}], "floor_to_floor_height": 9.842519685039367, "floor_height": 0.0, "multiplier": 1, "story_type": "Standard", "properties": {"type": "StoryPropertiesAbridged", "energy": {"type": "StoryEnergyPropertiesAbridged"}, "radiance": {"type": "StoryRadiancePropertiesAbridged"}}}, {"type": "Story", "identifier": "Level_2", "display_name": "Level 2", "room_2ds": [{"type": "Room2D", "identifier": "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d1467", "display_name": "Master Bedroom 206", "properties": {"type": "Room2DPropertiesAbridged", "comparison": {"type": "Room2DComparisonProperties", "floor_boundary": [[-16.036970087146933, 9.512486946910396], [-16.036970087146933, -10.83528208196048], [-4.52122205565086, -10.83528208196048], [-4.521222055650842, 0.12600400727758654], [3.484027288181217, 0.12600400727757943], [3.4840272881812187, 4.456712668694889], [3.4840272881812204, 9.512486946910379]], "window_parameters": [{"type": "DetailedWindows", "polygons": [[[10.108267716535432, 0.13123359580052885], [10.108267716535432, 6.824146981627299], [5.318241469816271, 6.824146981627299], [5.318241469816271, 0.13123359580052885]], [[15.029527559055117, 0.13123359580052885], [15.029527559055117, 6.824146981627299], [10.239501312335955, 6.824146981627299], [10.239501312335955, 0.13123359580052885]], [[19.885170603674183, 0.13123359580052885], [19.885170603674183, 6.824146981627299], [15.16076115485529, 6.824146981627299], [15.16076115485529, 0.13123359580052885]], [[0.7229698484048956, 9.776902887139107], [0.46259842519684824, 9.506253099060329], [0.46259842519684824, 6.955380577427819], [5.187007874015746, 6.955380577427819], [5.187007874015746, 9.776902887139107]], [[10.108267716535432, 6.955380577427819], [10.108267716535432, 9.776902887139107], [5.318241469816271, 9.776902887139107], [5.318241469816271, 6.955380577427819]], [[15.029527559055117, 6.955380577427819], [15.029527559055117, 9.776902887139107], [10.239501312335957, 9.776902887139107], [10.239501312335957, 6.955380577427819]], [[19.611801027642837, 9.776902887139107], [15.160761154855638, 9.776902887139107], [15.160761154855638, 6.955380577427819], [19.885170603673842, 6.955380577427819], [19.885170603673842, 9.513914964339575]], [[5.187007874015747, 14.417162293186939], [0.849219635459395, 9.908136482939634], [5.187007874015747, 9.908136482939634]], [[9.801913051453758, 19.214244449469703], [5.318241469816272, 14.553576437468235], [5.318241469816272, 9.908136482939634], [10.108267716535432, 9.908136482939634], [10.108267716535432, 18.919524099899284]], [[15.029527559055117, 9.908136482939634], [15.029527559055117, 14.185157085355469], [10.239501312335957, 18.79327431284478], [10.239501312335957, 9.908136482939634]], [[15.160761154855642, 14.058907298300968], [15.160761154855642, 9.908136482939634], [19.47538688336154, 9.908136482939634]], [[5.187007874015742, 0.09999999999999964], [5.187007874015742, 6.824146981627299], [0.46259842519685357, 6.824146981627299], [0.46259842519685357, 0.09999999999999964]]], "are_doors": [false, false, false, false, false, false, false, false, false, false, false, false]}, {"type": "DetailedWindows", "polygons": [[[4.757217847769121, 0.09999999999999964], [9.678477690288801, 0.09999999999999964], [9.678477690288801, 8.858267716535414], [4.757217847769121, 8.85826771653541]]], "are_doors": [false]}, {"type": "DetailedWindows", "polygons": [[[5.72834645669291, 0.09999999999999964], [5.728346456692909, 6.650262467191604], [2.6279527559055094, 6.650262467191604], [2.6279527559055076, 0.09999999999999964]]], "are_doors": [true]}, null, null, {"type": "DetailedWindows", "polygons": [[[4.658792650918963, 7.15223097112861], [1.5091863517063668, 7.15223097112861], [1.5091863517063668, 0.10000000000000142], [4.658792650918963, 0.10000000000000142]]], "are_doors": [true]}, {"type": "DetailedWindows", "polygons": [[[14.763779527559075, 0.09999999999999964], [14.763779527559075, 8.85826771653541], [9.842519685039395, 8.858267716535414], [9.842519685039395, 0.09999999999999964]]], "are_doors": [false]}]}, "doe2": {"type": "Room2DDoe2Properties"}, "energy": {"type": "Room2DEnergyPropertiesAbridged", "program_type": "2019::SmallOffice::OpenOffice", "construction_set": "2019::ClimateZone5::SteelFramed", "hvac": "PVAV_e247a4c2"}, "radiance": {"type": "Room2DRadiancePropertiesAbridged"}}, "floor_boundary": [[3.4840272881812204, 9.512486946910379], [-16.036970087146933, 9.512486946910396], [-16.036970087146933, -10.83528208196048], [-4.52122205565086, -10.83528208196048], [-4.521222055650842, 0.12600400727758654], [3.484027288181217, 0.12600400727757943], [3.4840272881812187, 4.4567126686949]], "floor_height": 9.842519685039369, "floor_to_ceiling_height": 19.39980202428529, "is_ground_contact": false, "is_top_exposed": true, "boundary_conditions": [{"type": "Outdoors", "sun_exposure": true, "wind_exposure": true, "view_factor": {"type": "Autocalculate"}}, {"type": "Outdoors", "sun_exposure": true, "wind_exposure": true, "view_factor": {"type": "Autocalculate"}}, {"type": "Outdoors", "sun_exposure": true, "wind_exposure": true, "view_factor": {"type": "Autocalculate"}}, {"type": "Surface", "boundary_condition_objects": ["Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d146a..Face3", "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d146a"]}, {"type": "Surface", "boundary_condition_objects": ["Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d146a..Face2", "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d146a"]}, {"type": "Surface", "boundary_condition_objects": ["Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d146d..Face5", "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d146d"]}, {"type": "Surface", "boundary_condition_objects": ["Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d1479..Face1", "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d1479"]}], "window_parameters": [{"type": "DetailedWindows", "polygons": [[[14.763779527559075, 0.09999999999999964], [14.763779527559075, 8.85826771653541], [9.842519685039395, 8.858267716535414], [9.842519685039395, 0.09999999999999964]]], "are_doors": [false]}, {"type": "DetailedWindows", "polygons": [[[10.108267716535432, 0.13123359580052885], [10.108267716535432, 6.824146981627299], [5.318241469816271, 6.824146981627299], [5.318241469816271, 0.13123359580052885]], [[15.029527559055117, 0.13123359580052885], [15.029527559055117, 6.824146981627299], [10.239501312335955, 6.824146981627299], [10.239501312335955, 0.13123359580052885]], [[19.885170603674183, 0.13123359580052885], [19.885170603674183, 6.824146981627299], [15.16076115485529, 6.824146981627299], [15.16076115485529, 0.13123359580052885]], [[0.7229698484048956, 9.776902887139107], [0.46259842519684824, 9.506253099060329], [0.46259842519684824, 6.955380577427819], [5.187007874015746, 6.955380577427819], [5.187007874015746, 9.776902887139107]], [[10.108267716535432, 6.955380577427819], [10.108267716535432, 9.776902887139107], [5.318241469816271, 9.776902887139107], [5.318241469816271, 6.955380577427819]], [[15.029527559055117, 6.955380577427819], [15.029527559055117, 9.776902887139107], [10.239501312335957, 9.776902887139107], [10.239501312335957, 6.955380577427819]], [[19.611801027642837, 9.776902887139107], [15.160761154855638, 9.776902887139107], [15.160761154855638, 6.955380577427819], [19.885170603673842, 6.955380577427819], [19.885170603673842, 9.513914964339575]], [[5.187007874015747, 14.417162293186939], [0.849219635459395, 9.908136482939634], [5.187007874015747, 9.908136482939634]], [[9.801913051453758, 19.214244449469703], [5.318241469816272, 14.553576437468235], [5.318241469816272, 9.908136482939634], [10.108267716535432, 9.908136482939634], [10.108267716535432, 18.919524099899284]], [[15.029527559055117, 9.908136482939634], [15.029527559055117, 14.185157085355469], [10.239501312335957, 18.79327431284478], [10.239501312335957, 9.908136482939634]], [[15.160761154855642, 14.058907298300968], [15.160761154855642, 9.908136482939634], [19.47538688336154, 9.908136482939634]], [[5.187007874015742, 0.09999999999999964], [5.187007874015742, 6.824146981627299], [0.46259842519685357, 6.824146981627299], [0.46259842519685357, 0.09999999999999964]]], "are_doors": [false, false, false, false, false, false, false, false, false, false, false, false]}, {"type": "DetailedWindows", "polygons": [[[4.757217847769121, 0.09999999999999964], [9.678477690288801, 0.09999999999999964], [9.678477690288801, 8.858267716535414], [4.757217847769121, 8.85826771653541]]], "are_doors": [false]}, {"type": "DetailedWindows", "polygons": [[[5.72834645669291, 0.09999999999999964], [5.728346456692909, 6.650262467191604], [2.6279527559055094, 6.650262467191604], [2.6279527559055076, 0.09999999999999964]]], "are_doors": [true]}, null, null, {"type": "DetailedWindows", "polygons": [[[4.658792650918953, 7.15223097112861], [1.5091863517063562, 7.15223097112861], [1.5091863517063562, 0.10000000000000142], [4.658792650918953, 0.10000000000000142]]], "are_doors": [true]}], "user_data": {"__layer__": "Room"}}, {"type": "Room2D", "identifier": "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d146a", "display_name": "Master Bath 207", "properties": {"type": "Room2DPropertiesAbridged", "comparison": {"type": "Room2DComparisonProperties", "floor_boundary": [[3.484027288181205, 0.12600400727760075], [-4.521222055650851, 0.12600400727760608], [-4.52122205565086, -10.83528208196048], [3.4840272881811796, -10.83528208196048]], "window_parameters": [null, {"type": "DetailedWindows", "polygons": [[[8.333333333332579, 0.09999999999999964], [8.333333333332577, 6.650262467191604], [5.232939632545177, 6.650262467191604], [5.232939632545176, 0.09999999999999964]]], "are_doors": [true]}, {"type": "DetailedWindows", "polygons": [[[1.4435695538059088, 0.10000000000000142], [6.364829396325588, 0.10000000000000142], [6.364829396325588, 8.858267716535416], [1.4435695538059088, 8.858267716535412]]], "are_doors": [false]}, null]}, "doe2": {"type": "Room2DDoe2Properties"}, "energy": {"type": "Room2DEnergyPropertiesAbridged", "program_type": "2019::SmallOffice::Restroom", "construction_set": "2019::ClimateZone5::SteelFramed", "hvac": "PVAV_e247a4c2"}, "radiance": {"type": "Room2DRadiancePropertiesAbridged"}}, "floor_boundary": [[3.4840272881811796, -10.83528208196048], [3.484027288181205, 0.12600400727760075], [-4.521222055650851, 0.12600400727760608], [-4.52122205565086, -10.83528208196048]], "floor_height": 9.842519685039367, "floor_to_ceiling_height": 19.39980202428529, "is_ground_contact": false, "is_top_exposed": true, "boundary_conditions": [{"type": "Surface", "boundary_condition_objects": ["Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d146d..Face6", "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d146d"]}, {"type": "Surface", "boundary_condition_objects": ["Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d1467..Face5", "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d1467"]}, {"type": "Surface", "boundary_condition_objects": ["Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d1467..Face4", "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d1467"]}, {"type": "Outdoors", "sun_exposure": true, "wind_exposure": true, "view_factor": {"type": "Autocalculate"}}], "window_parameters": [null, null, {"type": "DetailedWindows", "polygons": [[[8.333333333332579, 0.09999999999999964], [8.333333333332577, 6.650262467191604], [5.232939632545177, 6.650262467191604], [5.232939632545176, 0.09999999999999964]]], "are_doors": [true]}, {"type": "DetailedWindows", "polygons": [[[1.4435695538059088, 0.10000000000000142], [6.364829396325588, 0.10000000000000142], [6.364829396325588, 8.858267716535416], [1.4435695538059088, 8.858267716535412]]], "are_doors": [false]}], "user_data": {"__layer__": "Room"}}, {"type": "Room2D", "identifier": "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d146d", "display_name": "Bedroom 204", "properties": {"type": "Room2DPropertiesAbridged", "comparison": {"type": "Room2DComparisonProperties", "floor_boundary": [[13.523397366921353, -3.7585104284176514], [13.523397366921362, 2.133878023025846], [13.523397366921365, 4.456712668694892], [3.484027288181192, 4.4567126686949], [3.4840272881811885, 0.12600400727759187], [3.4840272881811796, -10.83528208196048], [14.782301833712438, -10.83528208196048], [14.782301833712445, -4.808379194821854], [13.523397366921351, -4.808379194821854]], "window_parameters": [{"type": "DetailedWindows", "polygons": [[[1.7034120734904663, 3.0000000000000053], [2.2891985111173794, 3.585786437626929], [2.289198511117381, 4.414213562373119], [1.7034120734904663, 5.000000000000012], [0.8749849487442782, 5.000000000000012], [0.2891985111173847, 4.414213562373115], [0.2891985111173865, 3.585786437626929], [0.8749849487442765, 3.0000000000000053]], [[5.787401574802812, 7.15223097112861], [2.6377952755902134, 7.15223097112861], [2.6377952755902134, 0.10000000000000142], [5.787401574802812, 0.10000000000000142]]], "are_doors": [false, true]}, null, {"type": "DetailedWindows", "polygons": [[[6.564960629921231, 0.10000000000000142], [9.714566929133829, 0.10000000000000142], [9.714566929133829, 7.15223097112861], [6.564960629921231, 7.15223097112861]]], "are_doors": [true]}, null, null, {"type": "DetailedWindows", "polygons": [[[4.921259842519753, 0.10000000000000142], [9.842519685039433, 0.10000000000000142], [9.842519685039433, 8.858267716535416], [4.921259842519753, 8.858267716535412]]], "are_doors": [false]}, null, null, null]}, "doe2": {"type": "Room2DDoe2Properties"}, "energy": {"type": "Room2DEnergyPropertiesAbridged", "program_type": "2019::SmallOffice::OpenOffice", "construction_set": "2019::ClimateZone5::SteelFramed", "hvac": "PVAV_e247a4c2"}, "radiance": {"type": "Room2DRadiancePropertiesAbridged"}}, "floor_boundary": [[13.523397366921351, -4.808379194821854], [13.523397366921353, -3.758510428417652], [13.523397366921362, 2.1338780230258463], [13.523397366921365, 4.456712668694892], [3.484027288181192, 4.4567126686949], [3.4840272881811885, 0.12600400727757943], [3.4840272881811796, -10.83528208196048], [14.782301833712438, -10.83528208196048], [14.782301833712445, -4.808379194821854]], "floor_height": 9.842519685039367, "floor_to_ceiling_height": 19.39980202428529, "is_ground_contact": false, "is_top_exposed": true, "boundary_conditions": [{"type": "Surface", "boundary_condition_objects": ["Room_ae4e6261-f1ae-40d7-8032-737f3b639dd8-00111315..Face1", "Room_ae4e6261-f1ae-40d7-8032-737f3b639dd8-00111315"]}, {"type": "Surface", "boundary_condition_objects": ["Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d1473..Face4", "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d1473"]}, {"type": "Surface", "boundary_condition_objects": ["Room_bac06658-19d8-494b-b87a-559081499f8f-000e5925..Face1", "Room_bac06658-19d8-494b-b87a-559081499f8f-000e5925"]}, {"type": "Surface", "boundary_condition_objects": ["Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d1479..Face2", "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d1479"]}, {"type": "Surface", "boundary_condition_objects": ["Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d1467..Face6", "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d1467"]}, {"type": "Surface", "boundary_condition_objects": ["Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d146a..Face1", "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d146a"]}, {"type": "Outdoors", "sun_exposure": true, "wind_exposure": true, "view_factor": {"type": "Autocalculate"}}, {"type": "Surface", "boundary_condition_objects": ["Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d1470..Face3", "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d1470"]}, {"type": "Surface", "boundary_condition_objects": ["Room_ae4e6261-f1ae-40d7-8032-737f3b639dd8-00111315..Face2", "Room_ae4e6261-f1ae-40d7-8032-737f3b639dd8-00111315"]}], "window_parameters": [null, {"type": "DetailedWindows", "polygons": [[[1.7034120734904667, 3.0000000000000053], [2.28919851111738, 3.585786437626929], [2.2891985111173816, 4.414213562373119], [1.7034120734904667, 5.000000000000012], [0.8749849487442787, 5.000000000000012], [0.28919851111738515, 4.414213562373115], [0.2891985111173869, 3.585786437626929], [0.8749849487442769, 3.0000000000000053]], [[5.7874015748028125, 7.15223097112861], [2.637795275590214, 7.15223097112861], [2.637795275590214, 0.10000000000000142], [5.7874015748028125, 0.10000000000000142]]], "are_doors": [false, true]}, null, {"type": "DetailedWindows", "polygons": [[[6.564960629921231, 0.10000000000000142], [9.714566929133829, 0.10000000000000142], [9.714566929133829, 7.15223097112861], [6.564960629921231, 7.15223097112861]]], "are_doors": [true]}, null, null, {"type": "DetailedWindows", "polygons": [[[4.921259842519753, 0.10000000000000142], [9.842519685039433, 0.10000000000000142], [9.842519685039433, 8.858267716535416], [4.921259842519753, 8.858267716535412]]], "are_doors": [false]}, null, null], "user_data": {"__layer__": "Room"}}, {"type": "Room2D", "identifier": "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d1470", "display_name": "Bath 1 203", "properties": {"type": "Room2DPropertiesAbridged", "comparison": {"type": "Room2DComparisonProperties", "floor_boundary": [[22.972216264559144, -4.80837919482186], [14.782301833712433, -4.808379194821858], [14.782301833712435, -10.83528208196048], [22.972216264559144, -10.83528208196048]], "window_parameters": [null, null, null, {"type": "DetailedWindows", "polygons": [[[0.3969816272957374, 0.10000000000000142], [3.5465879265083373, 0.10000000000000142], [3.5465879265083373, 7.15223097112861], [0.3969816272957374, 7.15223097112861]]], "are_doors": [true]}], "skylight_parameters": {"type": "DetailedSkylights", "polygons": [[[22.863272174937954, -5.751950927668569], [19.016363766254926, -5.751950927668565], [19.016363766254916, -8.647204946352339], [22.86327217493795, -8.647204946352346]]], "are_doors": [false], "user_data": {"identifier": ["Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d1470_Face_5_Aperture_0"], "__layer__": ["Room::Aperture"]}}}, "doe2": {"type": "Room2DDoe2Properties"}, "energy": {"type": "Room2DEnergyPropertiesAbridged", "program_type": "2019::SmallOffice::Restroom", "construction_set": "2019::ClimateZone5::SteelFramed", "hvac": "PVAV_e247a4c2"}, "radiance": {"type": "Room2DRadiancePropertiesAbridged"}}, "floor_boundary": [[22.972216264559144, -10.83528208196048], [22.972216264559144, -4.80837919482186], [14.782301833712433, -4.808379194821858], [14.782301833712435, -10.83528208196048]], "floor_height": 9.842519685039367, "floor_to_ceiling_height": 15.049008284138825, "is_ground_contact": false, "is_top_exposed": true, "boundary_conditions": [{"type": "Surface", "boundary_condition_objects": ["Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d1476..Face6", "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d1476"]}, {"type": "Surface", "boundary_condition_objects": ["Room_ae4e6261-f1ae-40d7-8032-737f3b639dd8-00111315..Face3", "Room_ae4e6261-f1ae-40d7-8032-737f3b639dd8-00111315"]}, {"type": "Surface", "boundary_condition_objects": ["Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d146d..Face8", "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d146d"]}, {"type": "Outdoors", "sun_exposure": true, "wind_exposure": true, "view_factor": {"type": "Autocalculate"}}], "window_parameters": [{"type": "DetailedWindows", "polygons": [[[0.3969816272957374, 0.10000000000000142], [3.5465879265083373, 0.10000000000000142], [3.5465879265083373, 7.15223097112861], [0.3969816272957374, 7.15223097112861]]], "are_doors": [true]}, null, null, null], "skylight_parameters": {"type": "DetailedSkylights", "polygons": [[[22.863272174937954, -5.751950927668569], [19.016363766254926, -5.751950927668565], [19.016363766254916, -8.647204946352339], [22.86327217493795, -8.647204946352346]]], "are_doors": [false]}, "user_data": {"__layer__": "Room"}}, {"type": "Room2D", "identifier": "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d1473", "display_name": "Bath 2 205", "properties": {"type": "Room2DPropertiesAbridged", "comparison": {"type": "Room2DComparisonProperties", "floor_boundary": [[21.708764820989828, -3.7585104284176802], [21.708764820989828, 2.133878023025839], [13.523397366921353, 2.133878023025846], [13.523397366921353, -3.758510428417652]], "window_parameters": [null, null, {"type": "DetailedWindows", "polygons": [[[5.017403502699221, 3.0000000000000053], [5.603189940326111, 3.585786437626929], [5.6031899403261125, 4.414213562373115], [5.017403502699219, 5.000000000000012], [4.188976377953031, 5.000000000000012], [3.603189940326116, 4.414213562373119], [3.603189940326118, 3.585786437626929], [4.188976377953031, 3.0000000000000053]], [[0.10498687664068562, 0.10000000000000142], [3.254593175853284, 0.10000000000000142], [3.254593175853284, 7.15223097112861], [0.10498687664068562, 7.15223097112861]]], "are_doors": [false, true]}, null], "skylight_parameters": {"type": "DetailedSkylights", "polygons": [[[17.477691466276074, -0.2761613613716989], [17.477691466276077, 2.064548995715962], [13.630783057593051, 2.0645489957159744], [13.630783057593048, -0.27616136137169234]]], "are_doors": [false], "user_data": {"identifier": ["Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d1473_Face_6_Aperture_0"], "__layer__": ["Room::Aperture"]}}}, "doe2": {"type": "Room2DDoe2Properties"}, "energy": {"type": "Room2DEnergyPropertiesAbridged", "program_type": "2019::SmallOffice::Restroom", "construction_set": "2019::ClimateZone5::SteelFramed", "hvac": "PVAV_e247a4c2"}, "radiance": {"type": "Room2DRadiancePropertiesAbridged"}}, "floor_boundary": [[13.523397366921353, -3.758510428417652], [21.708764820989828, -3.7585104284176802], [21.708764820989828, 2.133878023025839], [13.523397366921353, 2.133878023025846]], "floor_height": 9.842519685039367, "floor_to_ceiling_height": 19.39980202428529, "is_ground_contact": false, "is_top_exposed": true, "boundary_conditions": [{"type": "Surface", "boundary_condition_objects": ["Room_ae4e6261-f1ae-40d7-8032-737f3b639dd8-00111315..Face6", "Room_ae4e6261-f1ae-40d7-8032-737f3b639dd8-00111315"]}, {"type": "Surface", "boundary_condition_objects": ["Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d1476..Face3", "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d1476"]}, {"type": "Surface", "boundary_condition_objects": ["Room_bac06658-19d8-494b-b87a-559081499f8f-000e5925..Face2", "Room_bac06658-19d8-494b-b87a-559081499f8f-000e5925"]}, {"type": "Surface", "boundary_condition_objects": ["Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d146d..Face2", "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d146d"]}], "window_parameters": [null, null, null, {"type": "DetailedWindows", "polygons": [[[5.017403502699221, 3.0000000000000053], [5.603189940326111, 3.585786437626929], [5.6031899403261125, 4.414213562373115], [5.017403502699219, 5.000000000000012], [4.188976377953031, 5.000000000000012], [3.6031899403261165, 4.414213562373119], [3.6031899403261183, 3.585786437626929], [4.188976377953031, 3.0000000000000053]], [[0.10498687664068562, 0.10000000000000142], [3.2545931758532842, 0.10000000000000142], [3.2545931758532842, 7.15223097112861], [0.10498687664068562, 7.15223097112861]]], "are_doors": [false, true]}], "skylight_parameters": {"type": "DetailedSkylights", "polygons": [[[17.477691466276074, -0.2761613613716989], [17.477691466276077, 2.064548995715962], [13.630783057593051, 2.0645489957159744], [13.630783057593048, -0.27616136137169234]]], "are_doors": [false]}, "user_data": {"__layer__": "Room"}}, {"type": "Room2D", "identifier": "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d1476", "display_name": "Bedroom 1 202", "properties": {"type": "Room2DPropertiesAbridged", "comparison": {"type": "Room2DComparisonProperties", "floor_boundary": [[21.70876482098982, 4.456712668694843], [21.70876482098982, 2.133878023025845], [21.70876482098982, -3.7585104284176802], [22.972216264559126, -3.7585104284176842], [22.972216264559123, -4.808379194821865], [22.972216264559123, -10.83528208196048], [32.81473594959852, -10.83528208196048], [32.81473594959852, 4.456712668694834]], "window_parameters": [null, null, null, null, {"type": "DetailedWindows", "polygons": [[[5.629921259842878, 7.15223097112861], [2.4803149606302783, 7.15223097112861], [2.4803149606302783, 0.10000000000000142], [5.629921259842878, 0.10000000000000142]]], "are_doors": [true]}, {"type": "DetailedWindows", "polygons": [[[4.589895013123456, 0.10000000000000142], [9.511154855643134, 0.10000000000000142], [9.511154855643134, 8.858267716535416], [4.589895013123456, 8.858267716535412]]], "are_doors": [false]}, null, {"type": "DetailedWindows", "polygons": [[[3.5465879265091758, 7.15223097112861], [0.39698162729658293, 7.15223097112861], [0.39698162729658293, 0.10000000000000142], [3.5465879265091758, 0.10000000000000142]]], "are_doors": [true]}]}, "doe2": {"type": "Room2DDoe2Properties"}, "energy": {"type": "Room2DEnergyPropertiesAbridged", "program_type": "2019::SmallOffice::OpenOffice", "construction_set": "2019::ClimateZone5::SteelFramed", "hvac": "PVAV_e247a4c2"}, "radiance": {"type": "Room2DRadiancePropertiesAbridged"}}, "floor_boundary": [[32.81473594959852, 4.456712668694834], [21.70876482098982, 4.456712668694843], [21.70876482098982, 2.133878023025839], [21.70876482098982, -3.7585104284176802], [22.972216264559126, -3.7585104284176842], [22.972216264559126, -4.80837919482186], [22.972216264559123, -10.83528208196048], [32.81473594959852, -10.83528208196048]], "floor_height": 9.842519685039367, "floor_to_ceiling_height": 19.39980202428529, "is_ground_contact": false, "is_top_exposed": true, "boundary_conditions": [{"type": "Surface", "boundary_condition_objects": ["Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d1479..Face4", "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d1479"]}, {"type": "Surface", "boundary_condition_objects": ["Room_bac06658-19d8-494b-b87a-559081499f8f-000e5925..Face3", "Room_bac06658-19d8-494b-b87a-559081499f8f-000e5925"]}, {"type": "Surface", "boundary_condition_objects": ["Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d1473..Face2", "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d1473"]}, {"type": "Surface", "boundary_condition_objects": ["Room_ae4e6261-f1ae-40d7-8032-737f3b639dd8-00111315..Face5", "Room_ae4e6261-f1ae-40d7-8032-737f3b639dd8-00111315"]}, {"type": "Surface", "boundary_condition_objects": ["Room_ae4e6261-f1ae-40d7-8032-737f3b639dd8-00111315..Face4", "Room_ae4e6261-f1ae-40d7-8032-737f3b639dd8-00111315"]}, {"type": "Surface", "boundary_condition_objects": ["Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d1470..Face1", "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d1470"]}, {"type": "Outdoors", "sun_exposure": true, "wind_exposure": true, "view_factor": {"type": "Autocalculate"}}, {"type": "Surface", "boundary_condition_objects": ["Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d1479..Face5", "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d1479"]}], "window_parameters": [{"type": "DetailedWindows", "polygons": [[[3.5465879265091758, 7.15223097112861], [0.39698162729658293, 7.15223097112861], [0.39698162729658293, 0.10000000000000142], [3.5465879265091758, 0.10000000000000142]]], "are_doors": [true]}, null, null, null, null, {"type": "DetailedWindows", "polygons": [[[5.629921259842883, 7.15223097112861], [2.480314960630283, 7.15223097112861], [2.480314960630283, 0.10000000000000142], [5.629921259842883, 0.10000000000000142]]], "are_doors": [true]}, {"type": "DetailedWindows", "polygons": [[[4.589895013123456, 0.10000000000000142], [9.511154855643134, 0.10000000000000142], [9.511154855643134, 8.858267716535416], [4.589895013123456, 8.858267716535412]]], "are_doors": [false]}, null], "user_data": {"__layer__": "Room"}}, {"type": "Room2D", "identifier": "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d1479", "display_name": "Entry Hall 201", "properties": {"type": "Room2DPropertiesAbridged", "comparison": {"type": "Room2DComparisonProperties", "floor_boundary": [[3.4840272881812133, 4.456712668694831], [13.523397366921365, 4.456712668694864], [21.70876482098982, 4.456712668694861], [32.814735949598514, 4.4567126686948075], [32.81473594959852, -10.83528208196048], [43.185470857734984, -10.835282081960482], [43.185470857735, 9.512486946910268], [3.484027288181224, 9.512486946910268]], "window_parameters": [{"type": "DetailedWindows", "polygons": [[[3.474409448818921, 7.15223097112861], [0.32480314960632306, 7.15223097112861], [0.32480314960632306, 0.10000000000000142], [3.474409448818921, 0.10000000000000142]]], "are_doors": [true]}, {"type": "DetailedWindows", "polygons": [[[7.660433070866365, 0.10000000000000142], [7.660433070866365, 6.6502624671916095], [4.560039370078957, 6.650262467191606], [4.560039370078957, 0.10000000000000142]], [[3.6253280839895012, 0.10000000000000142], [3.6253280839894977, 6.650262467191606], [0.5249343832020994, 6.650262467191606], [0.5249343832020994, 0.10000000000000142]]], "are_doors": [true, true]}, {"type": "DetailedWindows", "polygons": [[[7.559383202099525, 0.10000000000000142], [10.708989501312118, 0.10000000000000142], [10.708989501312118, 7.15223097112861], [7.559383202099525, 7.15223097112861]]], "are_doors": [true]}, null, {"type": "DetailedWindows", "polygons": [[[9.744094488189013, 0.13123359580053062], [9.744094488189013, 8.727034120734913], [5.3182414698162574, 8.727034120734913], [5.3182414698162574, 0.13123359580053062]], [[5.187007874015734, 0.10000000000000142], [5.187007874015734, 8.727034120734913], [0.4625984251968376, 8.727034120734913], [0.4625984251968376, 0.10000000000000142]]], "are_doors": [false, true]}, {"type": "DetailedWindows", "polygons": [[[15.620078740156778, 0.10000000000000142], [19.88517060367384, 0.09999999999999964], [19.88517060367384, 8.727034120734913], [15.620078740156778, 8.727034120734913]], [[4.72769028871339, 0.13123359580053062], [4.72769028871339, 8.727034120734913], [0.46259842519684646, 8.727034120734913], [0.46259842519684646, 0.13123359580053062]]], "are_doors": [false, false]}, {"type": "DetailedWindows", "polygons": [[[29.858923884514425, 0.10000000000000142], [29.858923884514425, 8.858267716535412], [24.937664041994744, 8.858267716535416], [24.937664041994744, 0.10000000000000142]], [[5.187007874015528, 0.06561679790026531], [5.187007874015528, 8.727034120734917], [0.46259842519680916, 8.727034120734913], [0.46259842519680916, 0.06561679790026531]], [[24.937664041994744, 0.10000000000000142], [24.937664041994744, 8.858267716535412], [20.016404199475065, 8.858267716535416], [20.016404199475065, 0.10000000000000142]], [[10.04265091863494, 0.10000000000000142], [10.04265091863494, 8.727034120734913], [5.318241469816044, 8.727034120734913], [5.318241469816044, 0.10000000000000142]]], "are_doors": [false, false, false, true]}, {"type": "DetailedWindows", "polygons": [[[0.3969816272965261, 0.10000000000000142], [3.5465879265091225, 0.10000000000000142], [3.5465879265091225, 7.15223097112861], [0.3969816272965261, 7.15223097112861]]], "are_doors": [true]}]}, "doe2": {"type": "Room2DDoe2Properties"}, "energy": {"type": "Room2DEnergyPropertiesAbridged", "program_type": "2019::SmallOffice::Corridor", "construction_set": "2019::ClimateZone5::SteelFramed", "hvac": "PVAV_e247a4c2"}, "radiance": {"type": "Room2DRadiancePropertiesAbridged"}}, "floor_boundary": [[3.484027288181224, 9.512486946910268], [3.4840272881812133, 4.456712668694831], [13.523397366921365, 4.456712668694823], [21.70876482098982, 4.456712668694816], [32.814735949598514, 4.4567126686948075], [32.81473594959852, -10.83528208196048], [43.185470857734984, -10.835282081960482], [43.185470857735, 9.512486946910268]], "floor_height": 9.842519685039367, "floor_to_ceiling_height": 19.39980202428529, "is_ground_contact": false, "is_top_exposed": true, "boundary_conditions": [{"type": "Surface", "boundary_condition_objects": ["Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d1467..Face7", "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d1467"]}, {"type": "Surface", "boundary_condition_objects": ["Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d146d..Face4", "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d146d"]}, {"type": "Surface", "boundary_condition_objects": ["Room_bac06658-19d8-494b-b87a-559081499f8f-000e5925..Face4", "Room_bac06658-19d8-494b-b87a-559081499f8f-000e5925"]}, {"type": "Surface", "boundary_condition_objects": ["Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d1476..Face1", "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d1476"]}, {"type": "Surface", "boundary_condition_objects": ["Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d1476..Face8", "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d1476"]}, {"type": "Outdoors", "sun_exposure": true, "wind_exposure": true, "view_factor": {"type": "Autocalculate"}}, {"type": "Outdoors", "sun_exposure": true, "wind_exposure": true, "view_factor": {"type": "Autocalculate"}}, {"type": "Outdoors", "sun_exposure": true, "wind_exposure": true, "view_factor": {"type": "Autocalculate"}}], "window_parameters": [{"type": "DetailedWindows", "polygons": [[[0.3969816272965261, 0.10000000000000142], [3.5465879265091225, 0.10000000000000142], [3.5465879265091225, 7.15223097112861], [0.3969816272965261, 7.15223097112861]]], "are_doors": [true]}, {"type": "DetailedWindows", "polygons": [[[3.474409448818921, 7.15223097112861], [0.32480314960632306, 7.15223097112861], [0.32480314960632306, 0.10000000000000142], [3.474409448818921, 0.10000000000000142]]], "are_doors": [true]}, {"type": "DetailedWindows", "polygons": [[[7.660433070866365, 0.10000000000000142], [7.660433070866365, 6.6502624671916095], [4.560039370078957, 6.650262467191606], [4.560039370078957, 0.10000000000000142]], [[3.6253280839895012, 0.10000000000000142], [3.6253280839894977, 6.650262467191606], [0.5249343832020994, 6.650262467191606], [0.5249343832020994, 0.10000000000000142]]], "are_doors": [true, true]}, {"type": "DetailedWindows", "polygons": [[[7.559383202099525, 0.10000000000000142], [10.708989501312118, 0.10000000000000142], [10.708989501312118, 7.15223097112861], [7.559383202099525, 7.15223097112861]]], "are_doors": [true]}, null, {"type": "DetailedWindows", "polygons": [[[9.744094488189013, 0.13123359580053062], [9.744094488189013, 8.727034120734913], [5.3182414698162574, 8.727034120734913], [5.3182414698162574, 0.13123359580053062]], [[5.187007874015734, 0.10000000000000142], [5.187007874015734, 8.727034120734913], [0.4625984251968376, 8.727034120734913], [0.4625984251968376, 0.10000000000000142]]], "are_doors": [false, true]}, {"type": "DetailedWindows", "polygons": [[[15.620078740156778, 0.10000000000000142], [19.88517060367384, 0.09999999999999964], [19.88517060367384, 8.727034120734913], [15.620078740156778, 8.727034120734913]], [[4.72769028871339, 0.13123359580053062], [4.72769028871339, 8.727034120734913], [0.46259842519684646, 8.727034120734913], [0.46259842519684646, 0.13123359580053062]]], "are_doors": [false, false]}, {"type": "DetailedWindows", "polygons": [[[29.858923884514425, 0.10000000000000142], [29.858923884514425, 8.858267716535412], [24.937664041994744, 8.858267716535416], [24.937664041994744, 0.10000000000000142]], [[5.187007874015528, 0.06561679790026531], [5.187007874015528, 8.727034120734917], [0.46259842519680916, 8.727034120734913], [0.46259842519680916, 0.06561679790026531]], [[24.937664041994744, 0.10000000000000142], [24.937664041994744, 8.858267716535412], [20.016404199475065, 8.858267716535416], [20.016404199475065, 0.10000000000000142]], [[10.04265091863494, 0.10000000000000142], [10.04265091863494, 8.727034120734913], [5.318241469816044, 8.727034120734913], [5.318241469816044, 0.10000000000000142]]], "are_doors": [false, false, false, true]}], "user_data": {"__layer__": "Room"}}, {"type": "Room2D", "identifier": "Room_bac06658-19d8-494b-b87a-559081499f8f-000e5925", "display_name": "Linen 208", "properties": {"type": "Room2DPropertiesAbridged", "comparison": {"type": "Room2DComparisonProperties", "floor_boundary": [[13.523397366921362, 2.1338780230258263], [21.708764820989828, 2.1338780230258196], [21.708764820989828, 4.4567126686948555], [13.523397366921365, 4.4567126686948555]], "window_parameters": [null, null, {"type": "DetailedWindows", "polygons": [[[3.6253280839894977, 0.10000000000000142], [3.6253280839894977, 6.650262467191606], [0.5249343832020905, 6.6502624671916095], [0.5249343832020905, 0.10000000000000142]], [[7.660433070866356, 0.10000000000000142], [7.660433070866356, 6.650262467191606], [4.560039370078957, 6.650262467191606], [4.560039370078954, 0.10000000000000142]]], "are_doors": [true, true]}, null]}, "doe2": {"type": "Room2DDoe2Properties"}, "energy": {"type": "Room2DEnergyPropertiesAbridged", "program_type": "2019::SmallOffice::Storage", "construction_set": "2019::ClimateZone5::SteelFramed"}, "radiance": {"type": "Room2DRadiancePropertiesAbridged"}}, "floor_boundary": [[13.523397366921365, 4.4567126686948555], [13.523397366921362, 2.1338780230258263], [21.708764820989828, 2.1338780230258196], [21.708764820989828, 4.4567126686948555]], "floor_height": 9.842519685039367, "floor_to_ceiling_height": 16.88456948352287, "is_ground_contact": false, "is_top_exposed": true, "boundary_conditions": [{"type": "Surface", "boundary_condition_objects": ["Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d146d..Face3", "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d146d"]}, {"type": "Surface", "boundary_condition_objects": ["Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d1473..Face3", "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d1473"]}, {"type": "Surface", "boundary_condition_objects": ["Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d1476..Face2", "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d1476"]}, {"type": "Surface", "boundary_condition_objects": ["Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d1479..Face3", "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d1479"]}], "window_parameters": [null, null, null, {"type": "DetailedWindows", "polygons": [[[3.625328083989505, 0.10000000000000142], [3.625328083989505, 6.650262467191606], [0.5249343832020976, 6.6502624671916095], [0.5249343832020976, 0.10000000000000142]], [[7.660433070866363, 0.10000000000000142], [7.660433070866363, 6.650262467191606], [4.5600393700789645, 6.650262467191606], [4.560039370078961, 0.10000000000000142]]], "are_doors": [true, true]}], "user_data": {"__layer__": "Room"}}, {"type": "Room2D", "identifier": "Room_ae4e6261-f1ae-40d7-8032-737f3b639dd8-00111315", "display_name": "Shaft 214", "properties": {"type": "Room2DPropertiesAbridged", "comparison": {"type": "Room2DComparisonProperties", "floor_boundary": [[13.523397366921351, -4.808379194821875], [14.782301833712445, -4.808379194821875], [22.972216264559144, -4.808379194821882], [22.972216264559144, -3.7585104284176674], [21.708764820989828, -3.7585104284176842], [13.523397366921351, -3.7585104284176674]], "window_parameters": [null, null, null, null, null, null]}, "doe2": {"type": "Room2DDoe2Properties"}, "energy": {"type": "Room2DEnergyPropertiesAbridged", "program_type": "2019::SmallOffice::Storage", "construction_set": "2019::ClimateZone5::SteelFramed"}, "radiance": {"type": "Room2DRadiancePropertiesAbridged"}}, "floor_boundary": [[13.523397366921351, -3.7585104284176674], [13.523397366921351, -4.808379194821875], [14.782301833712445, -4.8083791948218755], [22.972216264559144, -4.808379194821882], [22.972216264559144, -3.7585104284176674], [21.708764820989828, -3.7585104284176674]], "floor_height": 9.842519685039367, "floor_to_ceiling_height": 16.05900658057484, "is_ground_contact": false, "is_top_exposed": true, "boundary_conditions": [{"type": "Surface", "boundary_condition_objects": ["Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d146d..Face1", "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d146d"]}, {"type": "Surface", "boundary_condition_objects": ["Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d146d..Face9", "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d146d"]}, {"type": "Surface", "boundary_condition_objects": ["Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d1470..Face2", "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d1470"]}, {"type": "Surface", "boundary_condition_objects": ["Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d1476..Face5", "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d1476"]}, {"type": "Surface", "boundary_condition_objects": ["Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d1476..Face4", "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d1476"]}, {"type": "Surface", "boundary_condition_objects": ["Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d1473..Face1", "Room_e6ac360b-aaed-4c3b-a130-36b4c2ac9d13-000d1473"]}], "user_data": {"__layer__": "Room"}}], "floor_to_floor_height": 19.399802024285286, "floor_height": 9.842519685039369, "multiplier": 1, "story_type": "Standard", "roof": {"type": "RoofSpecification", "geometry": [{"type": "Face3D", "boundary": [[43.185470857734984, -10.83528208196048, 19.093506498700794], [43.185470857734984, -0.2858344806724178, 29.242321709324692], [-16.036970087146933, -0.28583448067233164, 29.242321709324774], [-16.036970087146933, -10.83528208196048, 19.093506498700794]], "plane": {"type": "Plane", "n": [0.0, -0.6932902730987237, 0.7206584469960075], "o": [-16.036970087146933, -10.83528208196048, 19.093506498700798], "x": [-1.0, 0.0, 0.0]}}, {"type": "Face3D", "boundary": [[43.185470857735, 9.512486946910204, 19.05720390634655], [-16.036970087146933, 9.51248694691033, 19.05720390634642], [-16.036970087146933, -0.28583448067233164, 29.242321709324642], [43.185470857734984, -0.2858344806724178, 29.242321709324735]], "plane": {"type": "Plane", "n": [0.0, 0.7206584469960085, 0.6932902730987226], "o": [-4.521222055650842, 0.12600400727760663, 28.814225576066296], "x": [1.0, 0.0, 0.0]}}]}, "properties": {"type": "StoryPropertiesAbridged", "energy": {"type": "StoryEnergyPropertiesAbridged"}, "radiance": {"type": "StoryRadiancePropertiesAbridged"}}}], "properties": {"type": "BuildingPropertiesAbridged", "energy": {"type": "BuildingEnergyPropertiesAbridged"}, "radiance": {"type": "BuildingRadiancePropertiesAbridged"}}}], "units": "Feet", "tolerance": 0.001, "angle_tolerance": 1.0} \ No newline at end of file diff --git a/tests/cli_translate_test.py b/tests/cli_translate_test.py new file mode 100644 index 0000000..08ef8fc --- /dev/null +++ b/tests/cli_translate_test.py @@ -0,0 +1,20 @@ +"""Test cli translate module.""" +from click.testing import CliRunner +from dragonfly_trace.cli.translate import model_to_trace700_csv_cli + +import os + + +def test_model_to_trace700_csv(): + runner = CliRunner() + input_df_model = './tests/assets/small_revit_sample.dfjson' + + output_csv = './tests/assets/in.csv' + result = runner.invoke( + model_to_trace700_csv_cli, + [input_df_model, '--output-file', output_csv] + ) + assert result.exit_code == 0 + + assert os.path.isfile(output_csv) + # os.remove(output_csv) diff --git a/tests/loads_test.py b/tests/loads_test.py new file mode 100644 index 0000000..1153e32 --- /dev/null +++ b/tests/loads_test.py @@ -0,0 +1,25 @@ +"""Test the translators of loads to TRACE.""" +from dragonfly.model import Model + +from dragonfly_trace.loads import people_and_lights_trace700_matrix, \ + miscellaneous_loads_trace700_matrix + + +def test_people_and_lights_trace700_matrix(): + """Test the people_and_lights_trace700_matrix method.""" + sample_path = './tests/assets/small_revit_sample.dfjson' + model = Model.from_file(sample_path) + + csv_mtx = people_and_lights_trace700_matrix(model.room_2ds) + assert len(csv_mtx) == 15 + assert len(csv_mtx[0]) == len(model.room_2ds) + 1 + + +def test_miscellaneous_loads_trace700_matrix(): + """Test the miscellaneous_loads_trace700_matrix method.""" + sample_path = './tests/assets/small_revit_sample.dfjson' + model = Model.from_file(sample_path) + + csv_mtx = miscellaneous_loads_trace700_matrix(model.room_2ds) + assert len(csv_mtx) == 8 + assert len(csv_mtx[0]) == len(model.room_2ds) + 1 diff --git a/tests/writer_test.py b/tests/writer_test.py new file mode 100644 index 0000000..1a236e5 --- /dev/null +++ b/tests/writer_test.py @@ -0,0 +1,26 @@ +"""Test the translators to TRACE.""" +from dragonfly.model import Model + +from dragonfly_trace.writer import rooms_to_trace700_matrix, \ + model_to_trace700_csv + + +def test_rooms_to_trace700_matrix(): + """Test the rooms_to_trace700_matrix method.""" + sample_path = './tests/assets/small_revit_sample.dfjson' + model = Model.from_file(sample_path) + + csv_mtx = rooms_to_trace700_matrix(model.room_2ds) + assert len(csv_mtx) == 29 + assert len(csv_mtx[0]) == len(model.room_2ds) + 1 + + +def test_model_to_trace700_csv(): + """Test the rooms_to_trace700_matrix method.""" + sample_path = './tests/assets/small_revit_sample.dfjson' + model = Model.from_file(sample_path) + + csv_str = model_to_trace700_csv(model) + assert isinstance(csv_str, str) + rows = csv_str.split('\n') + assert len(rows[0].split(',')) == len(model.room_2ds) + 1 diff --git a/trace_docs/TRACE700_UsersManual.pdf b/trace_docs/TRACE700_UsersManual.pdf new file mode 100644 index 0000000..fd6d0b3 Binary files /dev/null and b/trace_docs/TRACE700_UsersManual.pdf differ