openstudio-standards 0.1.4 → 0.1.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/data/standards/OpenStudio_Standards.xlsx +0 -0
- data/data/standards/OpenStudio_Standards_boilers.json +62 -4
- data/data/standards/OpenStudio_Standards_chillers.json +778 -68
- data/data/standards/OpenStudio_Standards_construction_sets.json +52 -93
- data/data/standards/OpenStudio_Standards_curve_biquadratics.json +36 -36
- data/data/standards/OpenStudio_Standards_curve_quadratics.json +3 -3
- data/data/standards/OpenStudio_Standards_heat_pumps.json +840 -0
- data/data/standards/OpenStudio_Standards_heat_pumps_heating.json +352 -0
- data/data/standards/OpenStudio_Standards_heat_rejection.json +48 -0
- data/data/standards/OpenStudio_Standards_motors.json +270 -0
- data/data/standards/OpenStudio_Standards_space_types.json +10390 -2824
- data/data/standards/OpenStudio_Standards_unitary_acs.json +794 -18
- data/data/weather/USA_CO_Boulder-Broomfield-Jefferson.County.AP.724699_TMY3.ddy +538 -0
- data/data/weather/USA_CO_Boulder-Broomfield-Jefferson.County.AP.724699_TMY3.epw +8768 -0
- data/data/weather/USA_CO_Boulder-Broomfield-Jefferson.County.AP.724699_TMY3.stat +493 -0
- data/data/weather/USA_CO_Denver.Intl.AP.725650_TMY3.ddy +536 -0
- data/data/weather/USA_CO_Denver.Intl.AP.725650_TMY3.epw +8768 -0
- data/data/weather/USA_CO_Denver.Intl.AP.725650_TMY3.stat +554 -0
- data/data/weather/USA_CO_Fort.Collins.AWOS.724769_TMY3.ddy +536 -0
- data/data/weather/USA_CO_Fort.Collins.AWOS.724769_TMY3.epw +8768 -0
- data/data/weather/USA_CO_Fort.Collins.AWOS.724769_TMY3.stat +554 -0
- data/data/weather/envelope_info.csv +6 -0
- data/lib/openstudio-standards.rb +10 -11
- data/lib/openstudio-standards/btap/compliance.rb +251 -969
- data/lib/openstudio-standards/btap/envelope.rb +1 -1
- data/lib/openstudio-standards/btap/fileio.rb +37 -5
- data/lib/openstudio-standards/btap/geometry.rb +27 -17
- data/lib/openstudio-standards/btap/hvac.rb +80 -27
- data/lib/openstudio-standards/hvac_sizing/{HVACSizing.CoilHeatingDXMultiSpeed.rb → Siz.CoilHeatingDXMultiSpeed.rb} +0 -0
- data/lib/openstudio-standards/hvac_sizing/Siz.ControllerOutdoorAir.rb +30 -4
- data/lib/openstudio-standards/hvac_sizing/Siz.CoolingTowerTwoSpeed.rb +61 -5
- data/lib/openstudio-standards/hvac_sizing/Siz.CoolingTowerVariableSpeed.rb +37 -7
- data/lib/openstudio-standards/hvac_sizing/Siz.DistrictCooling.rb +27 -0
- data/lib/openstudio-standards/hvac_sizing/Siz.DistrictHeating.rb +27 -0
- data/lib/openstudio-standards/hvac_sizing/Siz.HeaderedPumpsConstantSpeed.rb +55 -0
- data/lib/openstudio-standards/hvac_sizing/Siz.HeaderedPumpsVariableSpeed.rb +55 -0
- data/lib/openstudio-standards/hvac_sizing/Siz.HeatingCoolingFuels.rb +51 -9
- data/lib/openstudio-standards/hvac_sizing/Siz.Model.rb +99 -17
- data/lib/openstudio-standards/hvac_sizing/Siz.PumpConstantSpeed.rb +1 -1
- data/lib/openstudio-standards/hvac_sizing/Siz.ThermalZone.rb +29 -6
- data/lib/openstudio-standards/hvac_sizing/Siz.WaterHeaterMixed.rb +16 -0
- data/lib/openstudio-standards/prototypes/Prototype.AirTerminalSingleDuctVAVReheat.rb +43 -48
- data/lib/openstudio-standards/prototypes/Prototype.ControllerWaterCoil.rb +5 -9
- data/lib/openstudio-standards/prototypes/Prototype.Fan.rb +68 -0
- data/lib/openstudio-standards/prototypes/Prototype.FanConstantVolume.rb +39 -43
- data/lib/openstudio-standards/prototypes/Prototype.FanOnOff.rb +49 -51
- data/lib/openstudio-standards/prototypes/Prototype.FanVariableVolume.rb +55 -61
- data/lib/openstudio-standards/prototypes/Prototype.FanZoneExhaust.rb +8 -10
- data/lib/openstudio-standards/prototypes/Prototype.HeatExchangerAirToAirSensibleAndLatent.rb +15 -20
- data/lib/openstudio-standards/prototypes/Prototype.Model.hvac.rb +330 -322
- data/lib/openstudio-standards/prototypes/Prototype.Model.rb +501 -446
- data/lib/openstudio-standards/prototypes/Prototype.Model.swh.rb +221 -230
- data/lib/openstudio-standards/prototypes/Prototype.add_objects.rb +0 -2
- data/lib/openstudio-standards/prototypes/Prototype.full_service_restaurant.rb +130 -137
- data/lib/openstudio-standards/prototypes/Prototype.high_rise_apartment.rb +374 -291
- data/lib/openstudio-standards/prototypes/Prototype.hospital.rb +146 -193
- data/lib/openstudio-standards/prototypes/Prototype.hvac_systems.rb +1315 -1113
- data/lib/openstudio-standards/prototypes/Prototype.large_hotel.rb +65 -88
- data/lib/openstudio-standards/prototypes/Prototype.large_office.rb +101 -156
- data/lib/openstudio-standards/prototypes/Prototype.medium_office.rb +46 -96
- data/lib/openstudio-standards/prototypes/Prototype.mid_rise_apartment.rb +113 -123
- data/lib/openstudio-standards/prototypes/Prototype.outpatient.rb +356 -345
- data/lib/openstudio-standards/prototypes/Prototype.primary_school.rb +48 -103
- data/lib/openstudio-standards/prototypes/Prototype.quick_service_restaurant.rb +115 -123
- data/lib/openstudio-standards/prototypes/Prototype.retail_standalone.rb +30 -39
- data/lib/openstudio-standards/prototypes/Prototype.retail_stripmall.rb +32 -45
- data/lib/openstudio-standards/prototypes/Prototype.secondary_school.rb +98 -258
- data/lib/openstudio-standards/prototypes/Prototype.small_hotel.rb +429 -474
- data/lib/openstudio-standards/prototypes/Prototype.small_office.rb +28 -36
- data/lib/openstudio-standards/prototypes/Prototype.strip_model.rb +7 -7
- data/lib/openstudio-standards/prototypes/Prototype.utilities.rb +172 -146
- data/lib/openstudio-standards/prototypes/Prototype.warehouse.rb +46 -53
- data/lib/openstudio-standards/standards/Standards.AirLoopHVAC.rb +885 -707
- data/lib/openstudio-standards/standards/Standards.AirTerminalSingleDuctParallelPIUReheat.rb +48 -57
- data/lib/openstudio-standards/standards/Standards.AirTerminalSingleDuctVAVReheat.rb +24 -31
- data/lib/openstudio-standards/standards/Standards.BoilerHotWater.rb +80 -93
- data/lib/openstudio-standards/standards/Standards.BuildingStory.rb +69 -0
- data/lib/openstudio-standards/standards/Standards.ChillerElectricEIR.rb +60 -72
- data/lib/openstudio-standards/standards/Standards.CoilCoolingDXMultiSpeed.rb +104 -108
- data/lib/openstudio-standards/standards/Standards.CoilCoolingDXSingleSpeed.rb +190 -198
- data/lib/openstudio-standards/standards/Standards.CoilCoolingDXTwoSpeed.rb +134 -146
- data/lib/openstudio-standards/standards/Standards.CoilHeatingDXMultiSpeed.rb +56 -60
- data/lib/openstudio-standards/standards/Standards.CoilHeatingDXSingleSpeed.rb +151 -161
- data/lib/openstudio-standards/standards/Standards.CoilHeatingGasMultiStage.rb +30 -34
- data/lib/openstudio-standards/standards/Standards.Construction.rb +116 -132
- data/lib/openstudio-standards/standards/Standards.CoolingTower.rb +138 -0
- data/lib/openstudio-standards/standards/Standards.CoolingTowerSingleSpeed.rb +11 -0
- data/lib/openstudio-standards/standards/Standards.CoolingTowerTwoSpeed.rb +11 -0
- data/lib/openstudio-standards/standards/Standards.CoolingTowerVariableSpeed.rb +16 -0
- data/lib/openstudio-standards/standards/Standards.Fan.rb +190 -236
- data/lib/openstudio-standards/standards/Standards.FanConstantVolume.rb +0 -2
- data/lib/openstudio-standards/standards/Standards.FanOnOff.rb +0 -2
- data/lib/openstudio-standards/standards/Standards.FanVariableVolume.rb +168 -14
- data/lib/openstudio-standards/standards/Standards.FanZoneExhaust.rb +0 -2
- data/lib/openstudio-standards/standards/Standards.HeaderedPumpsConstantSpeed.rb +33 -0
- data/lib/openstudio-standards/standards/Standards.HeaderedPumpsVariableSpeed.rb +83 -0
- data/lib/openstudio-standards/standards/Standards.HeatExchangerSensLat.rb +22 -0
- data/lib/openstudio-standards/standards/Standards.Model.rb +2385 -1622
- data/lib/openstudio-standards/standards/Standards.PlanarSurface.rb +83 -35
- data/lib/openstudio-standards/standards/Standards.PlantLoop.rb +805 -395
- data/lib/openstudio-standards/standards/Standards.Pump.rb +139 -119
- data/lib/openstudio-standards/standards/Standards.PumpConstantSpeed.rb +0 -2
- data/lib/openstudio-standards/standards/Standards.PumpVariableSpeed.rb +16 -15
- data/lib/openstudio-standards/standards/Standards.ScheduleCompact.rb +35 -0
- data/lib/openstudio-standards/standards/Standards.ScheduleConstant.rb +7 -13
- data/lib/openstudio-standards/standards/Standards.ScheduleRuleset.rb +144 -59
- data/lib/openstudio-standards/standards/Standards.Space.rb +1509 -1326
- data/lib/openstudio-standards/standards/Standards.SpaceType.rb +254 -262
- data/lib/openstudio-standards/standards/Standards.SubSurface.rb +105 -105
- data/lib/openstudio-standards/standards/Standards.Surface.rb +27 -31
- data/lib/openstudio-standards/standards/Standards.ThermalZone.rb +882 -157
- data/lib/openstudio-standards/standards/Standards.WaterHeaterMixed.rb +179 -69
- data/lib/openstudio-standards/standards/Standards.ZoneHVACComponent.rb +75 -0
- data/lib/openstudio-standards/utilities/logging.rb +31 -38
- data/lib/openstudio-standards/utilities/simulation.rb +118 -82
- data/lib/openstudio-standards/version.rb +1 -1
- data/lib/openstudio-standards/weather/Weather.Model.rb +382 -390
- data/lib/openstudio-standards/weather/Weather.stat_file.rb +159 -78
- metadata +59 -6
@@ -0,0 +1,6 @@
|
|
1
|
+
WeatherFile,HDD,FDWR,SRR,outdoor_walls_average_conductance,outdoor_roofs_average_conductance,outdoor_floors_average_conductance,ground_walls_average_conductances, ground_roofs_average_conductances, ground_floors_average_conductances,windows_average_conductance,skylights_average_conductance,doors_average_conductance,overhead_doors_average_conductance
|
2
|
+
CAN_BC_Vancouver.718920_CWEC.epw,2932,0.4,0.0499,0.315 ,0.227 , 0.227,0.568,0.568,0.757,2.4,2.4,2.4,2.4
|
3
|
+
CAN_ON_Toronto.716240_CWEC.epw,3956,0.4,0.0499,0.278 ,0.183 , 0.183,0.379,0.379,0.757,2.2,2.2,2.2,2.2
|
4
|
+
CAN_PQ_Sherbrooke.716100_CWEC.epw,5058,0.329,0.0499,0.21 ,0.162 , 0.162,0.284,0.284,0.757,2.2,2.2,2.2,2.2
|
5
|
+
CAN_YT_Whitehorse.719640_CWEC.epw,6803,0.213,0.0499,0.21 ,0.162 , 0.162,0.284,0.284,0.757,2.2,2.2,2.2,2.2
|
6
|
+
CAN_NU_Resolute.719240_CWEC.epw,12471,0.2,0.0499,0.183 ,0.142 , 0.142,0.21,0.21,0.379,1.6,1.6,1.6,1.6
|
data/lib/openstudio-standards.rb
CHANGED
@@ -1,27 +1,27 @@
|
|
1
|
-
require
|
1
|
+
require 'openstudio-standards/version'
|
2
2
|
|
3
3
|
module OpenstudioStandards
|
4
|
-
|
4
|
+
|
5
5
|
require 'json' # Used to load standards JSON files
|
6
|
-
|
6
|
+
|
7
7
|
# HVAC sizing
|
8
|
-
|
8
|
+
require_relative 'openstudio-standards/hvac_sizing/Siz.Model'
|
9
9
|
|
10
10
|
# Prototype Inputs
|
11
11
|
require_relative 'openstudio-standards/prototypes/Prototype.Model'
|
12
12
|
require_relative 'openstudio-standards/prototypes/Prototype.utilities'
|
13
13
|
require_relative 'openstudio-standards/prototypes/Prototype.add_objects'
|
14
14
|
require_relative 'openstudio-standards/prototypes/Prototype.hvac_systems'
|
15
|
-
|
15
|
+
|
16
16
|
# Weather data
|
17
17
|
require_relative 'openstudio-standards/weather/Weather.Model'
|
18
|
-
|
18
|
+
|
19
19
|
# HVAC standards
|
20
20
|
require_relative 'openstudio-standards/standards/Standards.Model'
|
21
|
-
|
21
|
+
|
22
22
|
# BTAP (Natural Resources Canada)
|
23
23
|
require_relative 'openstudio-standards/btap/btap'
|
24
|
-
|
24
|
+
|
25
25
|
# Utilities
|
26
26
|
require_relative 'openstudio-standards/utilities/logging'
|
27
27
|
require_relative 'openstudio-standards/utilities/simulation'
|
@@ -30,7 +30,6 @@ module OpenstudioStandards
|
|
30
30
|
# Load the Openstudio Standards JSON
|
31
31
|
# and assign to a constant. This
|
32
32
|
# should never be altered by the gem.
|
33
|
-
$
|
34
|
-
|
35
|
-
|
33
|
+
# @Todo: A constant in ruby is $CONSTANT not $constant
|
34
|
+
$os_standards = load_openstudio_standards_json
|
36
35
|
end
|
@@ -40,395 +40,8 @@ module BTAP
|
|
40
40
|
GroundRoof = [0.568,0.379,0.284,0.284,0.284,0.210]
|
41
41
|
GroundFloor = [0.757,0.757,0.757,0.757,0.757,0.379]
|
42
42
|
end
|
43
|
-
|
44
|
-
|
45
|
-
#NECB Weekday, Sat,Sun Schedules.
|
46
|
-
Schedules = [
|
47
|
-
["NECB","A","Occ","Wkd","FRACTION",0,0,0,0,0,0,0,0.1,0.7,0.9,0.9,0.9,0.5,0.5,0.9,0.9,0.9,0.7,0.3,0.1,0.1,0.1,0.1,0],
|
48
|
-
["NECB","A","Occ","Sat","FRACTION",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
|
49
|
-
["NECB","A","Occ","SunHol","FRACTION",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
|
50
|
-
["NECB","A","Ltg","Wkd","FRACTION",0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.3,0.8,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.8,0.5,0.3,0.3,0.1,0.1,0.05],
|
51
|
-
["NECB","A","Ltg","Sat","FRACTION",0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05],
|
52
|
-
["NECB","A","Ltg","SunHol","FRACTION",0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05],
|
53
|
-
["NECB","A","Equ","Wkd","FRACTION",0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.3,0.8,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.5,0.3,0.3,0.2,0.2,0.2],
|
54
|
-
["NECB","A","Equ","Sat","FRACTION",0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2],
|
55
|
-
["NECB","A","Equ","SunHol","FRACTION",0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2],
|
56
|
-
["NECB","A","Fan","Wkd","ON_OFF",0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0],
|
57
|
-
["NECB","A","Fan","Sat","ON_OFF",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
|
58
|
-
["NECB","A","Fan","SunHol","ON_OFF",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
|
59
|
-
["NECB","A","Proc","Wkd","FRACTION",0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.3,0.8,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.5,0.3,0.3,0.2,0.2,0.2],
|
60
|
-
["NECB","A","Proc","Sat","FRACTION",0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2],
|
61
|
-
["NECB","A","Proc","SunHol","FRACTION",0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2],
|
62
|
-
["NECB","A","Clg","Wkd","TEMPERATURE",35,35,35,35,35,35,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,35,35,35],
|
63
|
-
["NECB","A","Clg","Sat","TEMPERATURE",35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35],
|
64
|
-
["NECB","A","Clg","SunHol","TEMPERATURE",35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35],
|
65
|
-
["NECB","A","Htg","Wkd","TEMPERATURE",18,18,18,18,18,18,20,22,22,22,22,22,22,22,22,22,22,22,22,22,22,18,18,18],
|
66
|
-
["NECB","A","Htg","Sat","TEMPERATURE",18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18],
|
67
|
-
["NECB","A","Htg","SunHol","TEMPERATURE",18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18],
|
68
|
-
["NECB","A","HW","Wkd","FRACTION",0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.1,0.5,0.5,0.9,0.9,0.9,0.9,0.9,0.9,0.7,0.5,0.3,0.2,0.2,0.2,0.05,0.05],
|
69
|
-
["NECB","A","HW","Sat","FRACTION",0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05],
|
70
|
-
["NECB","A","HW","SunHol","FRACTION",0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05],
|
71
|
-
["NECB","B","Occ","Wkd","FRACTION",0.3,0.1,0,0,0,0,0,0,0,0.1,0.2,0.5,0.9,0.8,0.5,0.2,0.2,0.3,0.6,0.9,0.9,0.9,0.6,0.4],
|
72
|
-
["NECB","B","Occ","Sat","FRACTION",0.5,0.3,0,0,0,0,0,0,0,0.1,0.2,0.5,0.9,0.8,0.5,0.2,0.2,0.3,0.6,0.9,0.9,0.9,0.6,0.6],
|
73
|
-
["NECB","B","Occ","SunHol","FRACTION",0.1,0.3,0,0,0,0,0,0,0,0,0.1,0.4,0.5,0.5,0.4,0.2,0.2,0.2,0.5,0.7,0.7,0.5,0.3,0.1],
|
74
|
-
["NECB","B","Ltg","Wkd","FRACTION",0.9,0.5,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.5,0.7,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9],
|
75
|
-
["NECB","B","Ltg","Sat","FRACTION",0.9,0.5,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.5,0.7,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9],
|
76
|
-
["NECB","B","Ltg","SunHol","FRACTION",0.5,0.5,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.5,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.5],
|
77
|
-
["NECB","B","Equ","Wkd","FRACTION",0.9,0.5,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.5,0.7,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9],
|
78
|
-
["NECB","B","Equ","Sat","FRACTION",0.9,0.5,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.5,0.7,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9],
|
79
|
-
["NECB","B","Equ","SunHol","FRACTION",0.5,0.5,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.5,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.5],
|
80
|
-
["NECB","B","Fan","Wkd","ON_OFF",1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
|
81
|
-
["NECB","B","Fan","Sat","ON_OFF",1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
|
82
|
-
["NECB","B","Fan","SunHol","ON_OFF",0,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0],
|
83
|
-
["NECB","B","Proc","Wkd","FRACTION",0.9,0.5,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.5,0.7,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9],
|
84
|
-
["NECB","B","Proc","Sat","FRACTION",0.9,0.5,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.5,0.7,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9],
|
85
|
-
["NECB","B","Proc","SunHol","FRACTION",0.5,0.5,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.5,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.5],
|
86
|
-
["NECB","B","Clg","Wkd","TEMPERATURE",24,35,35,35,35,35,35,35,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24],
|
87
|
-
["NECB","B","Clg","Sat","TEMPERATURE",24,35,35,35,35,35,35,35,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24],
|
88
|
-
["NECB","B","Clg","SunHol","TEMPERATURE",35,35,35,35,35,35,35,35,35,24,24,24,24,24,24,24,24,24,24,24,24,24,24,35],
|
89
|
-
["NECB","B","Htg","Wkd","TEMPERATURE",22,22,18,18,18,18,18,18,20,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22],
|
90
|
-
["NECB","B","Htg","Sat","TEMPERATURE",22,22,18,18,18,18,18,18,20,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22],
|
91
|
-
["NECB","B","Htg","SunHol","TEMPERATURE",18,22,18,18,18,18,18,18,18,20,22,22,22,22,22,22,22,22,22,22,22,22,22,18],
|
92
|
-
["NECB","B","HW","Wkd","FRACTION",0.6,0.5,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.7,0.7,0.4,0.5,0.6,0.6,0.4,0.3,0.3,0.4,0.5,0.8,0.8,0.9,0.9],
|
93
|
-
["NECB","B","HW","Sat","FRACTION",0.7,0.6,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.7,0.7,0.4,0.5,0.6,0.6,0.4,0.3,0.3,0.4,0.5,0.8,0.8,0.9,0.9],
|
94
|
-
["NECB","B","HW","SunHol","FRACTION",0.5,0.6,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.7,0.7,0.4,0.5,0.6,0.6,0.4,0.3,0.3,0.4,0.5,0.8,0.8,0.5,0.5],
|
95
|
-
["NECB","C","Occ","Wkd","FRACTION",0,0,0,0,0,0,0,0,0.1,0.2,0.5,0.5,0.7,0.7,0.7,0.7,0.8,0.7,0.5,0.3,0.3,0,0,0],
|
96
|
-
["NECB","C","Occ","Sat","FRACTION",0,0,0,0,0,0,0,0,0.1,0.2,0.5,0.6,0.8,0.9,0.9,0.9,0.8,0.7,0.5,0.2,0.2,0,0,0],
|
97
|
-
["NECB","C","Occ","SunHol","FRACTION",0,0,0,0,0,0,0,0,0,0,0.1,0.2,0.2,0.4,0.4,0.4,0.4,0.4,0.2,0,0,0,0,0],
|
98
|
-
["NECB","C","Ltg","Wkd","FRACTION",0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.5,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.6,0.5,0.05,0.05,0.05],
|
99
|
-
["NECB","C","Ltg","Sat","FRACTION",0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.5,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.6,0.5,0.05,0.05,0.05],
|
100
|
-
["NECB","C","Ltg","SunHol","FRACTION",0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.5,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.6,0.05,0.05,0.05,0.05,0.05],
|
101
|
-
["NECB","C","Equ","Wkd","FRACTION",0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.5,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.6,0.5,0.05,0.05,0.05],
|
102
|
-
["NECB","C","Equ","Sat","FRACTION",0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.5,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.6,0.5,0.05,0.05,0.05],
|
103
|
-
["NECB","C","Equ","SunHol","FRACTION",0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.5,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.6,0.05,0.05,0.05,0.05,0.05],
|
104
|
-
["NECB","C","Fan","Wkd","ON_OFF",0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0],
|
105
|
-
["NECB","C","Fan","Sat","ON_OFF",0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0],
|
106
|
-
["NECB","C","Fan","SunHol","ON_OFF",0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0],
|
107
|
-
["NECB","C","Proc","Wkd","FRACTION",0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.5,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.6,0.5,0.05,0.05,0.05],
|
108
|
-
["NECB","C","Proc","Sat","FRACTION",0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.5,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.6,0.5,0.05,0.05,0.05],
|
109
|
-
["NECB","C","Proc","SunHol","FRACTION",0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.5,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.6,0.05,0.05,0.05,0.05,0.05],
|
110
|
-
["NECB","C","Clg","Wkd","TEMPERATURE",35,35,35,35,35,35,35,24,24,24,24,24,24,24,24,24,24,24,24,24,24,35,35,35],
|
111
|
-
["NECB","C","Clg","Sat","TEMPERATURE",35,35,35,35,35,35,35,24,24,24,24,24,24,24,24,24,24,24,24,24,24,35,35,35],
|
112
|
-
["NECB","C","Clg","SunHol","TEMPERATURE",35,35,35,35,35,35,35,35,35,24,24,24,24,24,24,24,24,24,24,35,35,35,35,35],
|
113
|
-
["NECB","C","Htg","Wkd","TEMPERATURE",18,18,18,18,18,18,18,20,22,22,22,22,22,22,22,22,22,22,22,22,22,18,18,18],
|
114
|
-
["NECB","C","Htg","Sat","TEMPERATURE",18,18,18,18,18,18,18,20,22,22,22,22,22,22,22,22,22,22,22,22,22,18,18,18],
|
115
|
-
["NECB","C","Htg","SunHol","TEMPERATURE",18,18,18,18,18,18,18,18,18,20,22,22,22,22,22,22,22,22,22,18,18,18,18,18],
|
116
|
-
["NECB","C","HW","Wkd","FRACTION",0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.1,0.2,0.3,0.4,0.8,0.8,0.8,0.8,0.6,0.4,0.3,0.2,0.2,0.05,0.05,0.05],
|
117
|
-
["NECB","C","HW","Sat","FRACTION",0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.1,0.2,0.3,0.5,0.9,0.9,0.9,0.9,0.7,0.5,0.3,0.2,0.2,0.05,0.05,0.05],
|
118
|
-
["NECB","C","HW","SunHol","FRACTION",0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.1,0.2,0.4,0.8,0.8,0.6,0.4,0.3,0.2,0.05,0.05,0.05,0.05,0.05],
|
119
|
-
["NECB","D","Occ","Wkd","FRACTION",0,0,0,0,0,0,0,0,0.1,0.9,0.9,0.9,0.8,0.8,0.8,0.8,0.5,0.2,0.1,0.3,0.3,0.3,0.1,0],
|
120
|
-
["NECB","D","Occ","Sat","FRACTION",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
|
121
|
-
["NECB","D","Occ","SunHol","FRACTION",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
|
122
|
-
["NECB","D","Ltg","Wkd","FRACTION",0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.3,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.7,0.5,0.5,0.7,0.7,0.7,0.3,0.05],
|
123
|
-
["NECB","D","Ltg","Sat","FRACTION",0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05],
|
124
|
-
["NECB","D","Ltg","SunHol","FRACTION",0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05],
|
125
|
-
["NECB","D","Equ","Wkd","FRACTION",0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.3,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.7,0.5,0.5,0.7,0.7,0.7,0.3,0.05],
|
126
|
-
["NECB","D","Equ","Sat","FRACTION",0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05],
|
127
|
-
["NECB","D","Equ","SunHol","FRACTION",0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05],
|
128
|
-
["NECB","D","Fan","Wkd","ON_OFF",0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0],
|
129
|
-
["NECB","D","Fan","Sat","ON_OFF",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
|
130
|
-
["NECB","D","Fan","SunHol","ON_OFF",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
|
131
|
-
["NECB","D","Proc","Wkd","FRACTION",0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.3,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.7,0.5,0.5,0.7,0.7,0.7,0.3,0.05],
|
132
|
-
["NECB","D","Proc","Sat","FRACTION",0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05],
|
133
|
-
["NECB","D","Proc","SunHol","FRACTION",0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05],
|
134
|
-
["NECB","D","Clg","Wkd","TEMPERATURE",35,35,35,35,35,35,35,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,35],
|
135
|
-
["NECB","D","Clg","Sat","TEMPERATURE",35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35],
|
136
|
-
["NECB","D","Clg","SunHol","TEMPERATURE",35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35],
|
137
|
-
["NECB","D","Htg","Wkd","TEMPERATURE",18,18,18,18,18,18,18,20,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,18],
|
138
|
-
["NECB","D","Htg","Sat","TEMPERATURE",18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18],
|
139
|
-
["NECB","D","Htg","SunHol","TEMPERATURE",18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18],
|
140
|
-
["NECB","D","HW","Wkd","FRACTION",0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.5,0.5,0.9,0.9,0.9,0.9,0.9,0.9,0.7,0.3,0.5,0.5,0.5,0.3,0.05,0.05],
|
141
|
-
["NECB","D","HW","Sat","FRACTION",0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05],
|
142
|
-
["NECB","D","HW","SunHol","FRACTION",0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05],
|
143
|
-
["NECB","E","Occ","Wkd","FRACTION",0,0,0,0,0,0,0,0,0.2,0.7,0.9,0.9,0.9,0.9,0.5,0.9,0.8,0.8,0.2,0,0,0,0,0],
|
144
|
-
["NECB","E","Occ","Sat","FRACTION",0,0,0,0,0,0,0,0,0,0.2,0.2,0.2,0.2,0.1,0.1,0.1,0.1,0,0,0,0,0,0,0],
|
145
|
-
["NECB","E","Occ","SunHol","FRACTION",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
|
146
|
-
["NECB","E","Ltg","Wkd","FRACTION",0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.4,0.7,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.4,0.05,0.05,0.05,0.05,0.05],
|
147
|
-
["NECB","E","Ltg","Sat","FRACTION",0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.5,0.9,0.9,0.9,0.9,0.9,0.7,0.5,0.05,0.05,0.05,0.05,0.05,0.05,0.05],
|
148
|
-
["NECB","E","Ltg","SunHol","FRACTION",0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05],
|
149
|
-
["NECB","E","Equ","Wkd","FRACTION",0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.4,0.7,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.4,0.05,0.05,0.05,0.05,0.05],
|
150
|
-
["NECB","E","Equ","Sat","FRACTION",0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.5,0.9,0.9,0.9,0.9,0.9,0.7,0.5,0.05,0.05,0.05,0.05,0.05,0.05,0.05],
|
151
|
-
["NECB","E","Equ","SunHol","FRACTION",0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05],
|
152
|
-
["NECB","E","Fan","Wkd","ON_OFF",0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0],
|
153
|
-
["NECB","E","Fan","Sat","ON_OFF",0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0],
|
154
|
-
["NECB","E","Fan","SunHol","ON_OFF",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
|
155
|
-
["NECB","E","Proc","Wkd","FRACTION",0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.4,0.7,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.4,0.05,0.05,0.05,0.05,0.05],
|
156
|
-
["NECB","E","Proc","Sat","FRACTION",0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.5,0.9,0.9,0.9,0.9,0.9,0.7,0.5,0.05,0.05,0.05,0.05,0.05,0.05,0.05],
|
157
|
-
["NECB","E","Proc","SunHol","FRACTION",0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05],
|
158
|
-
["NECB","E","Clg","Wkd","TEMPERATURE",35,35,35,35,35,35,35,24,24,24,24,24,24,24,24,24,24,24,24,35,35,35,35,35],
|
159
|
-
["NECB","E","Clg","Sat","TEMPERATURE",35,35,35,35,35,35,35,35,24,24,24,24,24,24,24,24,24,35,35,35,35,35,35,35],
|
160
|
-
["NECB","E","Clg","SunHol","TEMPERATURE",35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35],
|
161
|
-
["NECB","E","Htg","Wkd","TEMPERATURE",18,18,18,18,18,18,18,20,22,22,22,22,22,22,22,22,22,22,22,18,18,18,18,18],
|
162
|
-
["NECB","E","Htg","Sat","TEMPERATURE",18,18,18,18,18,18,18,18,20,22,22,22,22,22,22,22,22,18,18,18,18,18,18,18],
|
163
|
-
["NECB","E","Htg","SunHol","TEMPERATURE",18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18],
|
164
|
-
["NECB","E","HW","Wkd","FRACTION",0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.1,0.4,0.5,0.5,0.7,0.9,0.8,0.7,0.8,0.3,0.05,0.05,0.05,0.05,0.05,0.05],
|
165
|
-
["NECB","E","HW","Sat","FRACTION",0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.2,0.2,0.4,0.2,0.2,0.2,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05],
|
166
|
-
["NECB","E","HW","SunHol","FRACTION",0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05],
|
167
|
-
["NECB","F","Occ","Wkd","FRACTION",0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.7,0.4,0.4,0.2,0.2,0.2,0.2,0.2,0.2,0.3,0.5,0.5,0.5,0.7,0.7,0.8,0.9],
|
168
|
-
["NECB","F","Occ","Sat","FRACTION",0.7,0.9,0.9,0.9,0.9,0.9,0.9,0.7,0.5,0.5,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.5,0.6,0.6,0.6,0.7,0.7],
|
169
|
-
["NECB","F","Occ","SunHol","FRACTION",0.8,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.5,0.5,0.5,0.3,0.3,0.2,0.2,0.2,0.3,0.4,0.4,0.6,0.6,0.8,0.8],
|
170
|
-
["NECB","F","Ltg","Wkd","FRACTION",0.3,0.2,0.2,0.1,0.1,0.1,0.2,0.4,0.5,0.4,0.4,0.3,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.6,0.8,0.9,0.8,0.6],
|
171
|
-
["NECB","F","Ltg","Sat","FRACTION",0.3,0.2,0.2,0.1,0.1,0.1,0.1,0.3,0.3,0.4,0.4,0.3,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.6,0.7,0.7,0.7,0.6],
|
172
|
-
["NECB","F","Ltg","SunHol","FRACTION",0.3,0.3,0.3,0.2,0.2,0.2,0.2,0.3,0.4,0.4,0.3,0.3,0.3,0.3,0.2,0.2,0.2,0.2,0.2,0.5,0.7,0.8,0.6,0.5],
|
173
|
-
["NECB","F","Equ","Wkd","FRACTION",0.3,0.2,0.2,0.1,0.1,0.1,0.2,0.4,0.5,0.4,0.4,0.3,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.6,0.8,0.9,0.8,0.6],
|
174
|
-
["NECB","F","Equ","Sat","FRACTION",0.3,0.2,0.2,0.1,0.1,0.1,0.1,0.3,0.3,0.4,0.4,0.3,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.6,0.7,0.7,0.7,0.6],
|
175
|
-
["NECB","F","Equ","SunHol","FRACTION",0.3,0.3,0.3,0.2,0.2,0.2,0.2,0.3,0.4,0.4,0.3,0.3,0.3,0.3,0.2,0.2,0.2,0.2,0.2,0.5,0.7,0.8,0.6,0.5],
|
176
|
-
["NECB","F","Fan","Wkd","ON_OFF",1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
|
177
|
-
["NECB","F","Fan","Sat","ON_OFF",1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
|
178
|
-
["NECB","F","Fan","SunHol","ON_OFF",1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
|
179
|
-
["NECB","F","Proc","Wkd","FRACTION",0.3,0.2,0.2,0.1,0.1,0.1,0.2,0.4,0.5,0.4,0.4,0.3,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.6,0.8,0.9,0.8,0.6],
|
180
|
-
["NECB","F","Proc","Sat","FRACTION",0.3,0.2,0.2,0.1,0.1,0.1,0.1,0.3,0.3,0.4,0.4,0.3,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.6,0.7,0.7,0.7,0.6],
|
181
|
-
["NECB","F","Proc","SunHol","FRACTION",0.3,0.3,0.3,0.2,0.2,0.2,0.2,0.3,0.4,0.4,0.3,0.3,0.3,0.3,0.2,0.2,0.2,0.2,0.2,0.5,0.7,0.8,0.6,0.5],
|
182
|
-
["NECB","F","Clg","Wkd","TEMPERATURE",24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24],
|
183
|
-
["NECB","F","Clg","Sat","TEMPERATURE",24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24],
|
184
|
-
["NECB","F","Clg","SunHol","TEMPERATURE",24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24],
|
185
|
-
["NECB","F","Htg","Wkd","TEMPERATURE",22,18,18,18,18,18,18,20,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22],
|
186
|
-
["NECB","F","Htg","Sat","TEMPERATURE",22,18,18,18,18,18,18,20,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22],
|
187
|
-
["NECB","F","Htg","SunHol","TEMPERATURE",22,18,18,18,18,18,18,20,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22],
|
188
|
-
["NECB","F","HW","Wkd","FRACTION",0.5,0.3,0.2,0.1,0.1,0.2,0.4,0.6,0.9,0.7,0.5,0.5,0.4,0.5,0.4,0.3,0.3,0.3,0.3,0.5,0.7,0.7,0.7,0.7],
|
189
|
-
["NECB","F","HW","Sat","FRACTION",0.5,0.3,0.2,0.1,0.1,0.2,0.4,0.5,0.8,0.6,0.5,0.5,0.5,0.5,0.5,0.4,0.3,0.3,0.3,0.5,0.7,0.7,0.7,0.7],
|
190
|
-
["NECB","F","HW","SunHol","FRACTION",0.5,0.3,0.2,0.1,0.1,0.2,0.4,0.4,0.6,0.9,0.7,0.5,0.5,0.5,0.4,0.3,0.3,0.3,0.3,0.4,0.6,0.6,0.6,0.6],
|
191
|
-
["NECB","G","Occ","Wkd","FRACTION",0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.7,0.4,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.5,0.9,0.9,0.9,0.9,0.9,0.9],
|
192
|
-
["NECB","G","Occ","Sat","FRACTION",0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.7,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.7,0.9,0.9,0.9,0.9,0.9,0.9],
|
193
|
-
["NECB","G","Occ","SunHol","FRACTION",0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.7,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.7,0.9,0.9,0.9,0.9,0.9,0.9],
|
194
|
-
["NECB","G","Ltg","Wkd","FRACTION",0.3,0,0,0,0,0,0.2,0.5,0.5,0,0,0,0,0,0,0,0,0,0,0.9,0.9,0.9,0.8,0.6],
|
195
|
-
["NECB","G","Ltg","Sat","FRACTION",0.3,0,0,0,0,0,0.2,0.5,0.5,0,0,0,0,0,0,0,0,0,0,0.9,0.9,0.9,0.8,0.6],
|
196
|
-
["NECB","G","Ltg","SunHol","FRACTION",0.3,0,0,0,0,0,0.2,0.5,0.5,0,0,0,0,0,0,0,0,0,0,0.9,0.9,0.9,0.8,0.6],
|
197
|
-
["NECB","G","Equ","Wkd","FRACTION",0.3,0.2,0.2,0.2,0.2,0.2,0.2,0.8,0.8,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.5,0.2,0.9,0.9,0.7,0.5,0.5,0.5],
|
198
|
-
["NECB","G","Equ","Sat","FRACTION",0.3,0.2,0.2,0.2,0.2,0.2,0.2,0.8,0.8,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.5,0.2,0.9,0.9,0.7,0.5,0.5,0.5],
|
199
|
-
["NECB","G","Equ","SunHol","FRACTION",0.3,0.2,0.2,0.2,0.2,0.2,0.2,0.8,0.8,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.5,0.2,0.9,0.9,0.7,0.5,0.5,0.5],
|
200
|
-
["NECB","G","Fan","Wkd","ON_OFF",1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
|
201
|
-
["NECB","G","Fan","Sat","ON_OFF",1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
|
202
|
-
["NECB","G","Fan","SunHol","ON_OFF",1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
|
203
|
-
["NECB","G","Proc","Wkd","FRACTION",0.3,0.2,0.2,0.2,0.2,0.2,0.2,0.8,0.8,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.5,0.2,0.9,0.9,0.7,0.5,0.5,0.5],
|
204
|
-
["NECB","G","Proc","Sat","FRACTION",0.3,0.2,0.2,0.2,0.2,0.2,0.2,0.8,0.8,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.5,0.2,0.9,0.9,0.7,0.5,0.5,0.5],
|
205
|
-
["NECB","G","Proc","SunHol","FRACTION",0.3,0.2,0.2,0.2,0.2,0.2,0.2,0.8,0.8,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.5,0.2,0.9,0.9,0.7,0.5,0.5,0.5],
|
206
|
-
["NECB","G","Clg","Wkd","TEMPERATURE",24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24],
|
207
|
-
["NECB","G","Clg","Sat","TEMPERATURE",24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24],
|
208
|
-
["NECB","G","Clg","SunHol","TEMPERATURE",24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24],
|
209
|
-
["NECB","G","Htg","Wkd","TEMPERATURE",22,18,18,18,18,18,18,20,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22],
|
210
|
-
["NECB","G","Htg","Sat","TEMPERATURE",22,18,18,18,18,18,18,20,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22],
|
211
|
-
["NECB","G","Htg","SunHol","TEMPERATURE",22,18,18,18,18,18,18,20,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22],
|
212
|
-
["NECB","G","HW","Wkd","FRACTION",0.1,0.05,0.05,0.05,0.05,0.05,0.2,0.8,0.7,0.5,0.4,0.2,0.2,0.2,0.3,0.5,0.5,0.7,0.7,0.4,0.4,0.2,0.2,0.1],
|
213
|
-
["NECB","G","HW","Sat","FRACTION",0.1,0.05,0.05,0.05,0.05,0.05,0.05,0.2,0.5,0.5,0.5,0.3,0.3,0.3,0.3,0.7,0.9,0.7,0.7,0.6,0.5,0.4,0.3,0.2],
|
214
|
-
["NECB","G","HW","SunHol","FRACTION",0.1,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.2,0.3,0.3,0.2,0.2,0.3,0.4,0.5,0.6,0.7,0.4,0.3,0.2,0.2,0.2,0.2],
|
215
|
-
["NECB","H","Occ","Wkd","FRACTION",0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9],
|
216
|
-
["NECB","H","Occ","Sat","FRACTION",0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9],
|
217
|
-
["NECB","H","Occ","SunHol","FRACTION",0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9],
|
218
|
-
["NECB","H","Ltg","Wkd","FRACTION",0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9],
|
219
|
-
["NECB","H","Ltg","Sat","FRACTION",0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9],
|
220
|
-
["NECB","H","Ltg","SunHol","FRACTION",0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9],
|
221
|
-
["NECB","H","Equ","Wkd","FRACTION",0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9],
|
222
|
-
["NECB","H","Equ","Sat","FRACTION",0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9],
|
223
|
-
["NECB","H","Equ","SunHol","FRACTION",0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9],
|
224
|
-
["NECB","H","Fan","Wkd","ON_OFF",1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
|
225
|
-
["NECB","H","Fan","Sat","ON_OFF",1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
|
226
|
-
["NECB","H","Fan","SunHol","ON_OFF",1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
|
227
|
-
["NECB","H","Proc","Wkd","FRACTION",0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9],
|
228
|
-
["NECB","H","Proc","Sat","FRACTION",0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9],
|
229
|
-
["NECB","H","Proc","SunHol","FRACTION",0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9],
|
230
|
-
["NECB","H","Clg","Wkd","TEMPERATURE",24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24],
|
231
|
-
["NECB","H","Clg","Sat","TEMPERATURE",24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24],
|
232
|
-
["NECB","H","Clg","SunHol","TEMPERATURE",24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24],
|
233
|
-
["NECB","H","Htg","Wkd","TEMPERATURE",22,18,18,18,18,18,18,20,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22],
|
234
|
-
["NECB","H","Htg","Sat","TEMPERATURE",22,18,18,18,18,18,18,20,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22],
|
235
|
-
["NECB","H","Htg","SunHol","TEMPERATURE",22,18,18,18,18,18,18,20,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22],
|
236
|
-
["NECB","H","HW","Wkd","FRACTION",0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9],
|
237
|
-
["NECB","H","HW","Sat","FRACTION",0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9],
|
238
|
-
["NECB","H","HW","SunHol","FRACTION",0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9],
|
239
|
-
["NECB","I","Occ","Wkd","FRACTION",0.1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.1,0.1,0.1,0.4,0.8,0.8,0.8,0.6,0.4],
|
240
|
-
["NECB","I","Occ","Sat","FRACTION",0.1,0,0,0,0,0,0,0,0,0,0.1,0.1,0.1,0.4,0.6,0.8,0.6,0.4,0.2,0.4,0.8,0.8,0.6,0.4],
|
241
|
-
["NECB","I","Occ","SunHol","FRACTION",0,0,0,0,0,0,0,0,0.2,0.4,0.8,0.8,0.4,0.2,0,0,0,0,0,0,0,0,0,0],
|
242
|
-
["NECB","I","Ltg","Wkd","FRACTION",0.5,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.5,0.5,0.5,0.8,0.9,0.9,0.9,0.9,0.9],
|
243
|
-
["NECB","I","Ltg","Sat","FRACTION",0.5,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.5,0.5,0.5,0.8,0.9,0.9,0.9,0.8,0.6,0.8,0.9,0.9,0.9,0.9],
|
244
|
-
["NECB","I","Ltg","SunHol","FRACTION",0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.5,0.9,0.9,0.9,0.9,0.5,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05],
|
245
|
-
["NECB","I","Equ","Wkd","FRACTION",0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.2,0.2,0.2,0.8,0.8,0.8,0.8,0.8,0.8],
|
246
|
-
["NECB","I","Equ","Sat","FRACTION",0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.2,0.2,0.2,0.8,0.8,0.8,0.8,0.8,0.8,0.8,0.8,0.8,0.8,0.8],
|
247
|
-
["NECB","I","Equ","SunHol","FRACTION",0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.8,0.8,0.8,0.8,0.8,0.2,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1],
|
248
|
-
["NECB","I","Fan","Wkd","ON_OFF",1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1],
|
249
|
-
["NECB","I","Fan","Sat","ON_OFF",1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
|
250
|
-
["NECB","I","Fan","SunHol","ON_OFF",0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0],
|
251
|
-
["NECB","I","Proc","Wkd","FRACTION",0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.2,0.2,0.2,0.8,0.8,0.8,0.8,0.8,0.8],
|
252
|
-
["NECB","I","Proc","Sat","FRACTION",0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.2,0.2,0.2,0.8,0.8,0.8,0.8,0.8,0.8,0.8,0.8,0.8,0.8,0.8],
|
253
|
-
["NECB","I","Proc","SunHol","FRACTION",0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.8,0.8,0.8,0.8,0.8,0.2,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1],
|
254
|
-
["NECB","I","Clg","Wkd","TEMPERATURE",35,35,35,35,35,35,35,35,35,35,35,35,35,35,24,24,24,24,24,24,24,24,24,24],
|
255
|
-
["NECB","I","Clg","Sat","TEMPERATURE",35,35,35,35,35,35,35,35,35,35,24,24,24,24,24,24,24,24,24,24,24,24,24,24],
|
256
|
-
["NECB","I","Clg","SunHol","TEMPERATURE",35,35,35,35,35,35,35,24,24,24,24,24,24,24,35,35,35,35,35,35,35,35,35,35],
|
257
|
-
["NECB","I","Htg","Wkd","TEMPERATURE",18,18,18,18,18,18,18,18,18,18,18,18,18,18,20,22,22,22,22,22,22,22,22,22],
|
258
|
-
["NECB","I","Htg","Sat","TEMPERATURE",18,18,18,18,18,18,18,18,18,18,20,22,22,22,22,22,22,22,22,22,22,22,22,22],
|
259
|
-
["NECB","I","Htg","SunHol","TEMPERATURE",18,18,18,18,18,18,18,20,22,22,22,22,22,22,18,18,18,18,18,18,18,18,18,18],
|
260
|
-
["NECB","I","HW","Wkd","FRACTION",0.2,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.2,0.2,0.2,0.4,0.9,0.9,0.9,0.8,0.6],
|
261
|
-
["NECB","I","HW","Sat","FRACTION",0.2,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.2,0.2,0.2,0.4,0.8,0.9,0.8,0.6,0.4,0.4,0.9,0.9,0.8,0.6],
|
262
|
-
["NECB","I","HW","SunHol","FRACTION",0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.1,0.2,0.4,0.4,0.2,0.1,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05]
|
263
|
-
]
|
264
|
-
|
265
|
-
#NECB Building Type Data
|
266
|
-
#Name,IsSpaceType?,NECBScheduleType,OccupantDensity(m2/p),Plug Loads(w/m2),DHW(W/m2),LightingPowerDensity(W/m2),AirChanges(Ac/h),Diveristy Factor (not used) ,4.2.2.2.(2,infiltration_rate m3/s/m2, SystemSpaceType ]
|
267
|
-
BuildingTypeData = [
|
268
|
-
["Automotive facility",0,"E",20,5,90,8.8,0.001151044,0,0,0.00025, 1],
|
269
|
-
["Convention centre",0,"C",8,2.5,30,11.6,0.000747686,0,0,0.00025, 1],
|
270
|
-
["Courthouse",0,"A",15,5,60,11.3,0.000462385,0,0,0.00025, 1],
|
271
|
-
["Dining - bar/lounge",0,"B",10,1,115,10.7,0.001269099,0,0,0.00025, 11],
|
272
|
-
["Dining - cafeteria",0,"B",10,1,115,9.7,0.001269099,0,0,0.00025,11],
|
273
|
-
["Dining - family",0,"B",10,1,115,9.6,0.001269099,0,0,0.00025,11],
|
274
|
-
["Dormitory",0,"G",30,2.5,500,6.6,0.000383681,0,0,0.00025, 10],
|
275
|
-
["Exercise centre",0,"B",10,1,90,9.5,0.001249422,0,0,0.00025, 4],
|
276
|
-
["Fire station",0,"F",25,2.5,400,7.6,0.000751622,0,0,0.00025,2],
|
277
|
-
["Gymnasium",0,"B",10,1,90,10.8,0.001249422,0,0,0.00025, 4],
|
278
|
-
["Health-care clinic",0,"A",20,7.5,90,9.4,0.002287331,0,0,0.00025,4],
|
279
|
-
["Hospital",0,"H",20,7.5,90,13,0.002287331,0,0,0.00025,6],
|
280
|
-
["Hotel",0,"F",25,2.5,500,10.8,0.000399422,0,0,0.00025,9],
|
281
|
-
["Library",0,"C",20,2.5,90,12.7,0.00072801,0,0,0.00025,5],
|
282
|
-
["Manufacturing facility",0,"A",30,10,90,11.9,0.00107234,0,0,0.00025,8],
|
283
|
-
["Motel",0,"F",25,2.5,500,9.5,0.000399422,0,0,0.00025,9],
|
284
|
-
["Motion picture theatre",0,"C",8,1,30,8.9,0.000600116,0,0,0.00025,1],
|
285
|
-
["Multi-unit residential",0,"G",60,5,500,6.5,0.000344329,0,0,0.00025,9],
|
286
|
-
["Museum",0,"C",20,2.5,60,11.4,0.000482061,0,0,0.00025,5],
|
287
|
-
["Office",0,"A",25,7.5,90,9.7,0.000399422,0,0,0.00025,4],
|
288
|
-
["Parking garage",0,"H",1000,0,0,2.7,0.0003097,0,0,0.00025,2],
|
289
|
-
["Penitentiary",0,"H",30,2.5,400,10.4,0.000383681,0,0,0.00025,10],
|
290
|
-
["Performing arts theatre",0,"C",8,1,30,15,0.000600116,0,0,0.00025,1],
|
291
|
-
["Police station",0,"H",25,7.5,90,10.3,0.000399422,0,0,0.00025,1], # What is the systemspacetype?
|
292
|
-
["Post office",0,"A",25,7.5,90,9.4,0.000751622,0,0,0.00025, 4], # What is the systemspacetype?
|
293
|
-
["Religious",0,"I",5,1,15,11.3,0.0007772,0,0,0.00025, 1],
|
294
|
-
["Retail",0,"C",30,2.5,40,15.1,0.000423033,0,0,0.00025,4],
|
295
|
-
["School/university",0,"D",8,5,60,10.7,0.000747686,0,0,0.00025,1],
|
296
|
-
["Sports arena",0,"B",10,1,90,8.4,0.000659144,0,0,0.00025,4],
|
297
|
-
["Town hall",0,"D",25,7.5,90,9.9,0.000399422,0,0,0.00025,1],
|
298
|
-
["Transportation",0,"H",15,1,65,8.3,0.000541089,0,0,0.00025,4],
|
299
|
-
["Warehouse",0,"A",1500,1,300,7.1,0.000308126,0,0,0.00025,12],
|
300
|
-
["Workshop",0,"A",30,10,90,12.9,0.00107234,0,0,0.00025,8]
|
301
|
-
]
|
302
|
-
|
303
|
-
#NECB Space Type Data
|
304
|
-
#Name,IsSpaceType?,NECBScheduleType,OccupantDensity(p/m2),Plug Loads(w/m2),DHW(W/m2),LightingPowerDensity(W/m2),AirChanges(Ac/h),Diveristy Factor (not used) ,4.2.2.2.(2,infiltration_rate m3/s/m2, SystemSpaceType]
|
305
|
-
SpaceTypeData = [
|
306
|
-
["- undefined -",1,"*",0,0,0,0,0,0,0,0.00025 , 0],
|
307
|
-
["Dwelling Unit(s)",1,"G",60,5,500,5,0.000344329,0,1,0.00025, 9],
|
308
|
-
["Atrium - H < 13m",1,"C",10,2.5,0,0,0.000304977,0,1,0.00025, 4],
|
309
|
-
["Atrium - H > 13m",1,"C",10,2.5,0,0,0.000304977,0,1,0.00025, 4],
|
310
|
-
["Audience - auditorium",1,"C",5,2.5,30,8.5,0.004117196,0.3,0.9,0.00025, 1],
|
311
|
-
["Audience - performance arts",1,"C",7.5,2.5,30,26.2,0.004117196,0,1,0.00025, 1],
|
312
|
-
["Audience - motion picture",1,"C",5,2.5,30,12.3,0.004117196,0,1,0.00025, 1],
|
313
|
-
["Classroom/lecture/training",1,"D",7.5,5,65,13.3,0.002782919,0.5,0.9,0.00025, 1],
|
314
|
-
["Conf./meet./multi-purpose",1,"C",5,1,45,13.2,0.001575717,0.5,0.9,0.00025, 1],
|
315
|
-
["Corr. >= 2.4m wide",1,"*",100,0,0,7.1,0.000304977,0,1,0.00025, 0],
|
316
|
-
["Corr. < 2.4m wide",1,"*",100,0,0,8.4,0.000304977,0,1,0.00025, 0],
|
317
|
-
["Dining - bar lounge/leisure",1,"B",10,1,90,14.1,0.003583485,0,1,0.00025,11],
|
318
|
-
["Dining - family space",1,"B",10,1,120,9.6,0.003583485,0,1,0.00025,11],
|
319
|
-
["Dining - other",1,"B",10,1,120,7,0.003583485,0,1,0.00025,11],
|
320
|
-
["Dress./fitt. - performance arts",1,"C",30,2.5,40,4.3,0.001181788,0.4,0.9,0.00025,1],
|
321
|
-
["Electrical/Mechanical",1,"*",200,1,0,13.3,0.000304977,0.9,1,0.00025,0],
|
322
|
-
["Food preparation",1,"B",20,10,120,10.7,0.001372399,0,1,0.00025,11], # SystemSpaceType issue.
|
323
|
-
["Lab - classrooms",1,"D",20,10,180,17.2,0.002185672,0.4,1,0.00025,6],
|
324
|
-
["Lab - research",1,"A",20,10,180,23.6,0.002185672,0,1,0.00025,6],
|
325
|
-
["Lobby - elevator",1,"C",10,1,0,6.9,0.004117196,0,1,0.00025,1],
|
326
|
-
["Lobby - performance arts",1,"C",10,1,0,21.5,0.004117196,0,1,0.00025,1],
|
327
|
-
["Lobby - motion picture",1,"C",10,1,0,5.6,0.004117196,0,1,0.00025,1],
|
328
|
-
["Lobby - other",1,"C",10,1,0,9.7,0.004117196,0,1,0.00025,1],
|
329
|
-
["Locker room",1,"*",10,2.5,0,9.8,0.000940347,0.5,0.9,0.00025,4],
|
330
|
-
["Lounge/recreation",1,"B",10,1,60,9.4,0.000940347,0,1,0.00025,11],
|
331
|
-
["Office - enclosed",1,"A",20,7.5,90,11.9,0.000432051,0.3,0.9,0.00025,4],
|
332
|
-
["Office - open plan",1,"A",20,7.5,90,11,0.000432051,0.2,0.9,0.00025,4],
|
333
|
-
["Sales area",1,"C",30,2.5,40,18.1,0.001181788,0,1,0.00025,4],
|
334
|
-
["Stairway",1,"*",200,0,0,7.4,0.000304977,0,1,0.00025,0],
|
335
|
-
["Storage area",1,"E",100,1,300,6.8,0.000355807,0.6,0.9,0.00025,12],
|
336
|
-
["Washroom",1,"*",30,1,0,10.5,0.000304977,0.5,0.9,0.00025,0],
|
337
|
-
["Workshop space",1,"A",30,10,90,17.1,0.001931524,0,1,0.00025,8],
|
338
|
-
["Automotive - repair",1,"E",20,5,90,7.2,0.001270739,0,1,0.00025,2],
|
339
|
-
["Bank - banking and offices",1,"A",25,5,60,14.9,0.00087681,0,1,0.00025,4],
|
340
|
-
["Convention centre - audience",1,"C",5,2.5,30,8.8,0.004117196,0.2,0.9,0.00025,1],
|
341
|
-
["Convention centre - exhibit",1,"C",5,2.5,30,15.6,0.000864103,0,1,0.00025,1],
|
342
|
-
["Courthouse - courtroom",1,"A",5,2.5,30,18.5,0.002084013,0.2,1,0.00025,1],
|
343
|
-
["Courthouse - cell",1,"H",25,2.5,325,14.7,0.001245325,0,1,0.00025,10],
|
344
|
-
["Courthouse - chambers",1,"A",20,7.5,90,12.6,0.000432051,0.3,0.9,0.00025,1],
|
345
|
-
["Penitentiary - audience",1,"C",5,2.5,30,4.6,0.002084013,0,1,0.00025,1],
|
346
|
-
["Penitentiary - classroom",1,"D",7.5,5,65,14.4,0.002782919,0.5,0.9,0.00025,1],
|
347
|
-
["Penitentiary - dining",1,"B",10,1,120,11.5,0.003583485,0,1,0.00025,11],
|
348
|
-
["Dormitory - living quarters",1,"G",25,2.5,500,4.1,0.000559125,0,1,0.00025,10],
|
349
|
-
["Fire station - engine room",1,"H",25,2.5,325,6,0.001270739,0.5,1,0.00025,2],
|
350
|
-
["Fire station - quarters",1,"G",25,2.5,500,3.4,0.000813273,0,1,0.00025,9],
|
351
|
-
["Gym - fitness",1,"B",5,1,90,9.8,0.004371344,0,1,0.00025,4],
|
352
|
-
["Gym - audience",1,"B",5,0,30,4.6,0.004117196,0,1,0.00025,4],
|
353
|
-
["Gym - play",1,"B",5,1.5,90,12.9,0.001524887,0,1,0.00025,4],
|
354
|
-
["Hospital corr. >= 2.4m",1,"*",100,0,0,9.6,0.000762444,0,1,0.00025,0],
|
355
|
-
["Hospital corr. < 2.4m",1,"*",100,0,0,11.7,0.000762444,0,1,0.00025,0],
|
356
|
-
["Hospital - emergency",1,"H",20,10,180,24.3,0.003049775,0,1,0.00025,6],
|
357
|
-
["Hospital - exam",1,"C",20,10,90,17.9,0.001524887,0.3,1,0.00025,6],
|
358
|
-
["Hospital - laundry/washing",1,"C",20,20,60,8,0.002287331,0,1,0.00025,6],
|
359
|
-
["Hospital - lounge/recreation",1,"B",10,1,60,11.5,0.001270739,0,1,0.00025,11],
|
360
|
-
["Hospital - medical supply",1,"H",20,1,0,13.7,0.001524887,0.5,0.9,0.00025,6],
|
361
|
-
["Hospital - nursery",1,"H",20,10,90,9.5,0.001524887,0,1,0.00025,6],
|
362
|
-
["Hospital - nurses' station",1,"H",20,2.5,45,9.4,0.001524887,0,1,0.00025,6],
|
363
|
-
["Hospital - operating room",1,"H",20,10,300,20.3,0.004574662,0.1,1,0.00025,6],
|
364
|
-
["Hospital - patient room",1,"H",20,10,90,6.7,0.001524887,0.1,1,0.00025,6],
|
365
|
-
["Hospital - pharmacy",1,"C",20,2.5,45,12.3,0.002287331,0,1,0.00025,6],
|
366
|
-
["Hospital - physical therapy",1,"C",20,10,45,9.8,0.002287331,0.2,1,0.00025,6],
|
367
|
-
["Hospital - radiology/imaging",1,"H",20,10,90,14.2,0.002287331,0,1,0.00025,6],
|
368
|
-
["Hospital - recovery",1,"H",20,10,180,12.4,0.004574662,0,1,0.00025,6],
|
369
|
-
["Hotel/Motel - dining",1,"B",10,1,115,8.8,0.003583485,0,1,0.00025,11],
|
370
|
-
["Hotel/Motel - rooms",1,"F",25,2.5,600,11.9,0.000559125,0,1,0.00025,9],
|
371
|
-
["Hotel/Motel - lobby",1,"H",10,2.5,30,11.4,0.001448643,0,1,0.00025,1],
|
372
|
-
["Hway lodging - dining",1,"B",10,1,115,9.5,0.003583485,0,1,0.00025,11],
|
373
|
-
["Hway lodging - rooms",1,"F",25,2.5,600,8.1,0.000559125,0,1,0.00025,9],
|
374
|
-
["Library - cataloging",1,"C",20,2.5,90,7.8,0.000864103,0,1,0.00025,4],
|
375
|
-
["Library - reading",1,"C",20,1,90,10,0.000864103,0,1,0.00025,4],
|
376
|
-
["Library - stacks",1,"C",20,0,90,22.9,0.000864103,0,1,0.00025,4],
|
377
|
-
["Mfg - corr. >= 2.4m",1,"*",100,0,0,4.4,0.001270739,0,1,0.00025,0],
|
378
|
-
["Mfg - corr. < 2.4m",1,"*",100,0,0,5.5,0.001270739,0,1,0.00025,0],
|
379
|
-
["Mfg - detailed",1,"A",30,0,90,13.9,0.001270739,0,1,0.00025,8],
|
380
|
-
["Mfg - equipment",1,"A",30,10,90,13.3,0.001270739,0.2,1,0.00025,8],
|
381
|
-
["Mfg - bay H > 15m",1,"A",30,10,90,11.3,0.001270739,0,1,0.00025,8],
|
382
|
-
["Mfg - 7.5 <= bay H <= 15m",1,"A",30,10,90,13.2,0.001270739,0,1,0.00025,8],
|
383
|
-
["Mfg - bay H < 7.5m",1,"A",30,10,90,12.8,0.001270739,0,1,0.00025,8],
|
384
|
-
["Museum - exhibition",1,"C",5,2.5,60,11.3,0.001829865,0.2,1,0.00025,5],
|
385
|
-
["Museum - restoration",1,"A",20,5,50,11,0.000864103,0.3,1,0.00025,5],
|
386
|
-
["Parking garage space",1,"H",1000,0,0,2,0.002541479,0.4,1,0.00025,2],
|
387
|
-
["Post office sorting",1,"A",20,7.5,90,10.1,0.00087681,0,1,0.00025,4],
|
388
|
-
["Religious - audience",1,"I",5,1,15,18.2,0.003354752,0.3,1,0.00025,1],
|
389
|
-
["Religious - fellowship hall",1,"C",5,1,45,6.9,0.003354752,0.3,1,0.00025,1],
|
390
|
-
["Religious - pulpit/choir",1,"I",5,1,15,18.2,0.003354752,0.1,1,0.00025,1],
|
391
|
-
["Retail - dressing/fitting",1,"C",30,2.5,40,9.4,0.001181788,0.4,0.9,0.00025,4],
|
392
|
-
["Retail - mall concourse",1,"C",20,1,30,11.8,0.001829865,0,1,0.00025,4],
|
393
|
-
["Retail - sales",1,"C",30,2.5,40,18.1,0.001181788,0,1,0.00025,4],
|
394
|
-
["Sports arena - audience",1,"B",5,0,30,4.6,0.006023305,0,1,0.00025,4],
|
395
|
-
["Sports arena - court c4",1,"B",5,1.5,90,7.8,0.001524887,0,1,0.00025,4],
|
396
|
-
["Sports arena - court c3",1,"B",5,1.5,90,12.9,0.001524887,0,1,0.00025,4],
|
397
|
-
["Sports arena - court c2",1,"B",5,1.5,90,20.7,0.001524887,0,1,0.00025,4],
|
398
|
-
["Sports arena - court c1",1,"B",5,1.5,90,32.4,0.001524887,0,1,0.00025,4],
|
399
|
-
["Sports arena - ring",1,"B",5,1.5,90,28.8,0.001524887,0,1,0.00025,4],
|
400
|
-
["Transp. baggage",1,"H",20,2.5,65,8.2,0.00087681,0,1,0.00025,4],
|
401
|
-
["Transp. seating",1,"H",10,0,65,5.8,0.004117196,0,1,0.00025,4],
|
402
|
-
["Transp. concourse",1,"H",20,0,65,3.9,0.004117196,0,1,0.00025,4],
|
403
|
-
["Transp. counter",1,"H",10,2.5,65,11.6,0.00087681,0,1,0.00025,4],
|
404
|
-
["Warehouse - fine",1,"A",50,1,65,10.2,0.000304977,0.5,0.9,0.00025,12],
|
405
|
-
["Warehouse - med/blk",1,"A",100,1,65,6.4,0.000304977,0.5,0.9,0.00025,12],
|
406
|
-
["Warehouse - med/blk2",1,"A",100,1,65,10.2,0.000304977,0.5,0.9,0.00025,12]
|
407
|
-
]
|
408
43
|
end
|
409
|
-
|
410
|
-
SystemSpaceTypes = [
|
411
|
-
"None",
|
412
|
-
#If greater than 4 stories
|
413
|
-
"Assembly Area",[3,6],
|
414
|
-
"Automotive Area",[4],
|
415
|
-
#If colling cap > 20kW
|
416
|
-
"Data Processing Area",[1,2],
|
417
|
-
#if greater than 2 stories
|
418
|
-
"General Area",[3,6],
|
419
|
-
|
420
|
-
"Historical Collections Area",[2],
|
421
|
-
"Hospital Area",[3],
|
422
|
-
"Indoor Arena",[7],
|
423
|
-
"Industrial Area",[3],
|
424
|
-
#if heated and cooled use proposed.
|
425
|
-
"Residential/Accomodation Area",[1],
|
426
|
-
"Sleeping Area",[3],
|
427
|
-
#food prep with a vented hood (add a new space type?)
|
428
|
-
"Supermarket/Food Services Area",[3,4],
|
429
|
-
#non_refridgerated spaces, refrigerated spaces.(New space types?)
|
430
|
-
"Warehouse Area",[4,5]
|
431
|
-
]
|
44
|
+
|
432
45
|
|
433
46
|
#This method ???.
|
434
47
|
#@author phylroy.lopez@nrcan.gc.ca
|
@@ -570,62 +183,9 @@ module BTAP
|
|
570
183
|
end
|
571
184
|
|
572
185
|
|
573
|
-
#This method will set the fwdr for a building. It will remove all glazings
|
574
|
-
# and hard set the FDWR.
|
575
|
-
#@author phylroy.lopez@nrcan.gc.ca
|
576
|
-
#@param model [OpenStudio::model::Model] A model object
|
577
|
-
#@param runner [Object]
|
578
|
-
#@param [Boolean] use_max
|
579
|
-
def self.set_necb_fwdr(model,use_max = false, runner = nil)
|
580
|
-
BTAP::runner_register("Info","set_necb_fwdr", runner)
|
581
|
-
if model.weatherFile.empty? or model.weatherFile.get.path.empty? or not File.exists?(model.weatherFile.get.path.get.to_s)
|
582
|
-
BTAP::runner_register("Error","Weather file is not defined. Please ensure the weather file is defined and exists.", runner)
|
583
|
-
return false
|
584
|
-
end
|
585
|
-
hdd = BTAP::Environment::WeatherFile.new(model.weatherFile.get.path.get).hdd18
|
586
|
-
|
587
|
-
old_fwdr = BTAP::Geometry::get_fwdr(model)
|
588
|
-
BTAP::runner_register("Info","old FWDR is #{old_fwdr}", runner)
|
589
|
-
outdoor_surfaces = BTAP::Geometry::Surfaces::filter_by_boundary_condition(model.getSurfaces(), "Outdoors")
|
590
|
-
outdoor_subsurfaces = BTAP::Geometry::Surfaces::get_subsurfaces_from_surfaces(outdoor_surfaces)
|
591
|
-
outdoor_walls = BTAP::Geometry::Surfaces::filter_by_surface_types(outdoor_surfaces, "Wall")
|
592
|
-
|
593
|
-
#Remove all windows
|
594
|
-
BTAP::Geometry::Surfaces::filter_subsurfaces_by_types(outdoor_subsurfaces, ["FixedWindow" , "OperableWindow" ]).each {|door| door.remove}
|
595
|
-
#Remove all doors
|
596
|
-
BTAP::Geometry::Surfaces::filter_subsurfaces_by_types(outdoor_subsurfaces, ["Door" , "GlassDoor" ]).each {|door| door.remove}
|
597
|
-
|
598
|
-
if use_max == true or old_fwdr > self.max_fwdr(hdd)
|
599
|
-
ratio = self.max_fwdr(hdd)
|
600
|
-
else
|
601
|
-
ratio = old_fwdr
|
602
|
-
end
|
603
|
-
outdoor_walls.each {|wall| wall.setWindowToWallRatio(ratio) }
|
604
|
-
|
605
|
-
BTAP::runner_register("Info","New FWDR is #{BTAP::Geometry::get_fwdr(model)} based on HDD of #{hdd}.", runner)
|
606
|
-
return model
|
607
|
-
end
|
608
186
|
|
609
|
-
|
610
|
-
|
611
|
-
#@author phylroy.lopez@nrcan.gc.ca
|
612
|
-
#@param model [OpenStudio::model::Model] A model object
|
613
|
-
#@param runner [OpenStudio::Ruleset::OSRunner]
|
614
|
-
def self.set_necb_srr(model, runner = nil)
|
615
|
-
BTAP::runner_register("Info","Setting NECB Skylight to Roof Ration to 0.05", runner)
|
616
|
-
ratio = 0.05
|
617
|
-
old_srr = BTAP::Geometry::get_srr(model)
|
618
|
-
BTAP::runner_register("InitialCondition","old Skylight to Roof Ratio is #{old_srr}", runner)
|
619
|
-
outdoor_surfaces = BTAP::Geometry::Surfaces::filter_by_boundary_condition(model.getSurfaces(), "Outdoors")
|
620
|
-
outdoor_subsurfaces = BTAP::Geometry::Surfaces::get_subsurfaces_from_surfaces(outdoor_surfaces)
|
621
|
-
outdoor_roofs = BTAP::Geometry::Surfaces::filter_by_surface_types(outdoor_surfaces, "RoofCeiling")
|
622
|
-
skylights = BTAP::Geometry::Surfaces::filter_subsurfaces_by_types(outdoor_subsurfaces, ["Skylight", "TubularDaylightDiffuser","TubularDaylightDome" ])
|
623
|
-
overhead_doors = BTAP::Geometry::Surfaces::filter_subsurfaces_by_types(outdoor_subsurfaces, ["OverheadDoor" ])
|
624
|
-
skylights.each {|skylight| skylight.remove}
|
625
|
-
overhead_doors.each {|overhead_door| overhead_door.remove}
|
626
|
-
outdoor_roofs.each {|roof| roof.setWindowToWallRatio(ratio) }
|
627
|
-
BTAP::runner_register("FinalCondition","old Skylight to Roof Ratio is #{BTAP::Geometry::get_srr(model)}", runner)
|
628
|
-
end
|
187
|
+
|
188
|
+
|
629
189
|
|
630
190
|
|
631
191
|
|
@@ -726,291 +286,20 @@ module BTAP
|
|
726
286
|
end
|
727
287
|
end
|
728
288
|
|
729
|
-
#Set all zones to NECB space types as provided by the space type map file
|
730
|
-
#(doors, windows, skylights) to NECB values. This model will be bare and
|
731
|
-
#only have ideal hvac installed. All previous space librairies will be removed
|
732
|
-
#and only NECB libraries will remain. Constructions will remain, even if flawed.
|
733
|
-
#@author phylroy.lopez@nrcan.gc.ca
|
734
|
-
#@param idf_filename [String] a idf file
|
735
|
-
#@param runner [Object]
|
736
|
-
#@return [OpenStudio::model::Model] A model object
|
737
|
-
def self.convert_idf_to_osm_and_map_doe_zones_to_necb_space_types(idf_filename, runner = nil)
|
738
|
-
|
739
|
-
|
740
|
-
#spacetype map file should be in IDF folder.
|
741
|
-
space_type_csv_file = File.dirname(idf_filename) + "/SpaceTypeConversions.csv"
|
742
|
-
BTAP::runner_register("ERROR","Spacemap file #{space_type_csv_file} could not be found", runner) unless File.exist?(space_type_csv_file)
|
743
|
-
|
744
|
-
#Load IDF file
|
745
|
-
model = BTAP::FileIO.load_idf(idf_filename)
|
746
|
-
|
747
289
|
|
748
|
-
#Set building name to match archetype name.
|
749
|
-
BTAP::FileIO::set_name(model,"#{File.basename(idf_filename,'.idf')}")
|
750
|
-
|
751
290
|
|
752
|
-
|
753
|
-
#Set Building Stories
|
754
|
-
BTAP::Geometry::BuildingStoreys::auto_assign_spaces_to_stories( model )
|
755
|
-
|
756
|
-
#Add NECB Libraries
|
757
|
-
BTAP::runner_register("INFO", "Adding NECB default spacetype libs to model... (this may take a while)....", runner)
|
758
|
-
BTAP::Compliance::NECB2011::add_necb_schedules( model )
|
759
|
-
BTAP::Compliance::NECB2011::add_necb_space_types( model )
|
760
|
-
BTAP::Compliance::NECB2011::add_necb_building_types( model )
|
761
|
-
BTAP::runner_register("INFO", "Done!.", runner)
|
762
|
-
|
763
|
-
|
764
|
-
#iterate thourgh all spaces.
|
765
|
-
BTAP::runner_register("INFO", "Mapping NECB space types.",runner)
|
766
|
-
#Open CSV Map file.. this contains the map from DOE spacenames to NECB space types.
|
767
|
-
found_idf_file_in_space_type_csv = false
|
768
|
-
idf_base_filename = Pathname.new(idf_filename).basename.to_s
|
769
|
-
BTAP::runner_register("INFO", "Loaded CSV DOE Space name to NECB SpaceType map file #{space_type_csv_file}.",runner)
|
770
|
-
CSV.foreach( space_type_csv_file, :headers => true, :converters => :all ) do |row|
|
771
|
-
#puts "Checking #{row['idf_file']} for map."
|
772
|
-
if row['idf_file'] == idf_base_filename
|
773
|
-
#puts "Found #{row['idf_file']} for map."
|
774
|
-
#flag that the idf file was found in the csv file.
|
775
|
-
found_idf_file_in_space_type_csv = true
|
776
|
-
#check if the spacetype is a valid NECB space type.
|
777
|
-
if is_proper_spacetype(row['necb_space_type']) != false
|
778
|
-
#get space as named in csv file.
|
779
|
-
space_name = row['zone_name'].gsub(/\bThermal Zone\b/, '').strip
|
780
|
-
#get space by space name
|
781
|
-
if model.getSpaceTypeByName("NECB-#{row['necb_space_type']}").empty?
|
782
|
-
BTAP::runner_register("ERROR","Missing spacetype: #{row['necb_space_type']}", runner)
|
783
|
-
end
|
784
|
-
space = model.getSpaceByName(space_name).get
|
785
|
-
|
786
|
-
#Get NECB spacetype
|
787
|
-
if model.getSpaceTypeByName("NECB-#{row['necb_space_type']}").empty?
|
788
|
-
BTAP::runner_register("ERROR","Space name #{space_name} not found in model.", runner)
|
789
|
-
return false
|
790
|
-
end
|
791
|
-
necb_spacetype = model.getSpaceTypeByName("NECB-#{row['necb_space_type']}").get
|
792
|
-
#set space type
|
793
|
-
space.setSpaceType(necb_spacetype)
|
794
|
-
puts "**space #{space.name} has been set to spacetype #{necb_spacetype.name}"
|
795
|
-
else
|
796
|
-
BTAP::runner_register("ERROR","#{row['necb_space_type']} is not a proper NECB space type",runner)
|
797
|
-
end
|
798
|
-
else
|
799
|
-
if found_idf_file_in_space_type_csv == true
|
800
|
-
break
|
801
|
-
else
|
802
|
-
next
|
803
|
-
end
|
804
|
-
end
|
805
|
-
end
|
806
|
-
unless found_idf_file_in_space_type_csv == true
|
807
|
-
BTAP::runner_register("ERROR","#{Pathname.new(idf_filename).basename.to_s} not found in spacetype csv mapping in #{space_type_csv_file}.")
|
808
|
-
end
|
809
|
-
return model
|
810
|
-
end
|
811
|
-
|
812
291
|
|
813
292
|
|
814
|
-
#Get Wildcard SpaceTypes
|
815
|
-
#@author phylroy.lopez@nrcan.gc.ca
|
816
|
-
#@param type [String]
|
817
|
-
#@return [String] wildcard_space_types
|
818
|
-
def self.get_spacetype_names_by_necb_schedule_type(type)
|
819
|
-
wildcard_space_types = Array.new()
|
820
|
-
BTAP::Compliance::NECB2011::Data::SpaceTypeData.each do |spacetype_data|
|
821
|
-
if spacetype_data[2] == type
|
822
|
-
wildcard_space_types << ("NECB-" + spacetype_data[0]).to_s
|
823
|
-
end
|
824
|
-
end
|
825
|
-
return wildcard_space_types
|
826
|
-
end
|
827
293
|
|
828
|
-
#This will create space types from the type_array.
|
829
|
-
#@author phylroy.lopez@nrcan.gc.ca
|
830
|
-
#@param model [OpenStudio::model::Model] A model object
|
831
|
-
#@param type_array[array<String>]
|
832
294
|
|
833
|
-
def self.add_usage_types(model, type_array )
|
834
|
-
|
835
|
-
people = nil
|
836
|
-
lighting = nil
|
837
|
-
electric = nil
|
838
|
-
hotwater = nil
|
839
|
-
oa_load = nil
|
840
|
-
infiltration = nil
|
841
|
-
|
842
|
-
type_array.each do |array|
|
843
|
-
# ["Name","IsSpaceType?","ScheduleType",OccupantDensity,Plug Loads,DHW,LightingPowerDensity,AirChanges,Absence of,4.2.2.2.(2).a,infiltration_rate m3/s/m2]
|
844
|
-
name, is_space_type, schedule_type,occupancy_density,plug_loads,dhw,lpd,oa_rate,absence,other,infiltration_rate = array
|
845
|
-
space_type_name = "NECB-" + name.strip
|
846
|
-
if schedule_type != "*"
|
847
|
-
default_schedule_set = OpenStudio::Model::getDefaultScheduleSetByName(model,"NECB-" + schedule_type).get
|
848
|
-
|
849
|
-
#create loads
|
850
|
-
people_name = "NECB-" + name + "-sched-" + schedule_type + "-people"
|
851
|
-
occupancy_density == 0.0 ? people = nil : people = BTAP::Resources::SpaceLoads::create_people_load(model,people_name,occupancy_density)
|
852
|
-
|
853
|
-
light_name = "NECB-" + name + "-sched-" + schedule_type + "-lights"
|
854
|
-
lpd == 0.0 ? lighting = nil : lighting = BTAP::Resources::SpaceLoads::create_lighting_load(model,light_name,lpd)
|
855
|
-
|
856
|
-
elec_name = "NECB-" + name + "-sched-" + schedule_type + "-elec"
|
857
|
-
plug_loads == 0.0 ? electric = nil : electric = BTAP::Resources::SpaceLoads::create_electric_load(model,elec_name,plug_loads)
|
858
|
-
|
859
|
-
hotwater_name = "NECB-" + name + "-sched-" + schedule_type + "-dhw"
|
860
|
-
dhw == 0.0 ? hotwater = nil : hotwater = BTAP::Resources::SpaceLoads::create_hotwater_load(model,hotwater_name,dhw)
|
861
|
-
|
862
|
-
oa_name = "NECB-" + name + "-sched-" + schedule_type + "-oa"
|
863
|
-
oa_rate == 0.0 ? oa_load = nil : oa_load = BTAP::Resources::SpaceLoads::create_oa_load(model,oa_name,occupancy_density * oa_rate,0,0,0,"Maximum", BTAP::Resources::Schedules::StandardSchedules::Fraction::always_on(model) )
|
864
|
-
|
865
|
-
infiltration_name = "NECB-" + name + "-sched-" + schedule_type + "-inf"
|
866
|
-
infiltration_rate == 0.0 ? infiltration = nil : infiltration = BTAP::Resources::SpaceLoads::create_infiltration_load(model, infiltration_name, infiltration_rate, "Flow/ExteriorArea", BTAP::Resources::Schedules::StandardSchedules::Fraction::always_on(model))
|
867
|
-
|
868
|
-
BTAP::Resources::SpaceTypes::create_space_type(model,space_type_name,default_schedule_set,people,lighting,electric,hotwater,oa_load,infiltration)
|
869
|
-
else
|
870
|
-
["*","A","B","C","D","E","F","G","H","I"].each do |schedule_type|
|
871
|
-
|
872
|
-
default_schedule_set = OpenStudio::Model::getDefaultScheduleSetByName(model,"NECB-" + schedule_type).get unless schedule_type == "*"
|
873
|
-
new_space_type_name = space_type_name
|
874
|
-
new_space_type_name = space_type_name + "-" + schedule_type unless schedule_type == "*"
|
875
|
-
#create loads
|
876
|
-
people_name = "NECB-" + name + "-sched-" + schedule_type + "-people"
|
877
|
-
occupancy_density == 0.0 ? people = nil : people = BTAP::Resources::SpaceLoads::create_people_load(model,people_name,occupancy_density)
|
878
|
-
|
879
|
-
light_name = "NECB-" + name + "-sched-" + schedule_type + "-lights"
|
880
|
-
lpd == 0.0 ? lighting = nil : lighting = BTAP::Resources::SpaceLoads::create_lighting_load(model,light_name,lpd)
|
881
|
-
|
882
|
-
elec_name = "NECB-" + name + "-sched-" + schedule_type + "-elec"
|
883
|
-
plug_loads == 0.0 ? electric = nil : electric = BTAP::Resources::SpaceLoads::create_electric_load(model,elec_name,plug_loads)
|
884
|
-
|
885
|
-
hotwater_name = "NECB-" + name + "-sched-" + schedule_type + "-dhw"
|
886
|
-
dhw == 0.0 ? hotwater = nil : hotwater = BTAP::Resources::SpaceLoads::create_hotwater_load(model,hotwater_name,dhw)
|
887
|
-
|
888
|
-
oa_name = "NECB-" + name + "-sched-" + schedule_type + "-oa"
|
889
|
-
oa_rate == 0.0 ? oa_load = nil : oa_load = BTAP::Resources::SpaceLoads::create_oa_load(model,oa_name,occupancy_density * oa_rate,0,0,0,"Maximum", BTAP::Resources::Schedules::StandardSchedules::Fraction::always_on(model) )
|
890
|
-
|
891
|
-
infiltration_name = "NECB-" + name + "-sched-" + schedule_type + "-inf"
|
892
|
-
infiltration_rate == 0.0 ? infiltration = nil : infiltration = BTAP::Resources::SpaceLoads::create_infiltration_load(model, infiltration_name, infiltration_rate, "Flow/ExteriorArea", BTAP::Resources::Schedules::StandardSchedules::Fraction::always_on(model))
|
893
|
-
|
894
|
-
BTAP::Resources::SpaceTypes::create_space_type(model,new_space_type_name,default_schedule_set,people,lighting,electric,hotwater,oa_load,infiltration)
|
895
|
-
end
|
896
|
-
end
|
897
|
-
end
|
898
|
-
end
|
899
295
|
|
900
296
|
|
901
|
-
# This method adds all the NECB 2011 schedules to the model. This was used to
|
902
|
-
# generate the NECB.osm file.
|
903
|
-
#@author phylroy.lopez@nrcan.gc.ca
|
904
|
-
#@param model [OpenStudio::model::Model] A model object
|
905
|
-
#@return [OpenStudio::model::Model] A model object
|
906
|
-
def self.add_necb_schedules(model)
|
907
|
-
|
908
|
-
#model.add_schedule_type_limits()
|
909
|
-
counter = 0
|
910
|
-
schedulesetname = ""
|
911
|
-
schedule_set = ""
|
912
|
-
cooling_sched = ""
|
913
|
-
#why am I doing it in this primitive way? Ruby 1.8.6 does not support "step" method iterator.. :(
|
914
|
-
while (NECB2011::Data::Schedules[counter] != nil)
|
915
|
-
#Get Data from row.
|
916
|
-
schedule_letter = BTAP::Compliance::NECB2011::Data::Schedules[counter][1]
|
917
|
-
load_type = BTAP::Compliance::NECB2011::Data::Schedules[counter][2]
|
918
|
-
schedule_type = BTAP::Compliance::NECB2011::Data::Schedules[counter][4]
|
919
|
-
weekdayhourly = BTAP::Compliance::NECB2011::Data::Schedules[counter][5..28]
|
920
|
-
sathourly = BTAP::Compliance::NECB2011::Data::Schedules[counter+1][5..28]
|
921
|
-
sunhourly = BTAP::Compliance::NECB2011::Data::Schedules[counter+2][5..28]
|
922
|
-
|
923
|
-
if schedulesetname != ("NECB-" + schedule_letter )
|
924
|
-
schedulesetname = ("NECB-" + schedule_letter )
|
925
|
-
schedule_set = OpenStudio::Model::DefaultScheduleSet.new(model)
|
926
|
-
schedule_set.setName(schedulesetname)
|
927
|
-
schedule_set.setInfiltrationSchedule(Resources::Schedules::StandardSchedules::Fraction::always_on(model))
|
928
|
-
end
|
929
|
-
rulesetname = "NECB-" + schedule_letter + "-" + load_type
|
930
|
-
|
931
|
-
#Add hourly schedule
|
932
|
-
ruleset = BTAP::Resources::Schedules::create_annual_ruleset_schedule(model,rulesetname,schedule_type,[weekdayhourly,sathourly,sunhourly])
|
933
|
-
|
934
|
-
|
935
|
-
#assign the ruleset to the correct type.
|
936
|
-
case load_type
|
937
|
-
when "Occ"
|
938
|
-
schedule_set.setNumberofPeopleSchedule(ruleset)
|
939
|
-
when "Ltg"
|
940
|
-
schedule_set.setLightingSchedule(ruleset)
|
941
|
-
when "Equ"
|
942
|
-
schedule_set.setElectricEquipmentSchedule(ruleset)
|
943
|
-
when "Fan"
|
944
|
-
|
945
|
-
schedule_set.setHoursofOperationSchedule(ruleset)
|
946
|
-
when "Proc"
|
947
|
-
schedule_set.setOtherEquipmentSchedule(ruleset)
|
948
|
-
when "Clg"
|
949
|
-
cooling_sched = ruleset
|
950
|
-
when "Htg"
|
951
|
-
BTAP::Resources::Schedules::create_annual_thermostat_setpoint_dual_setpoint(model,schedulesetname,ruleset,cooling_sched)
|
952
|
-
when "HW"
|
953
|
-
|
954
|
-
schedule_set.setHotWaterEquipmentSchedule(ruleset)
|
955
|
-
end
|
956
|
-
counter = counter + 3
|
957
|
-
end
|
958
|
-
return model
|
959
|
-
end
|
960
297
|
|
961
|
-
#This method will add all the NECB building types to a model
|
962
|
-
#@author phylroy.lopez@nrcan.gc.ca
|
963
|
-
#@param model [OpenStudio::model::Model] A model object
|
964
|
-
#@return [OpenStudio::model::Model] A model object
|
965
|
-
def self.add_necb_building_types( model )
|
966
|
-
self.add_usage_types(model, BTAP::Compliance::NECB2011::Data::BuildingTypeData )
|
967
|
-
return model
|
968
|
-
end
|
969
298
|
|
970
|
-
#this method will add all the NECB space types to the model.
|
971
|
-
#@author phylroy.lopez@nrcan.gc.ca
|
972
|
-
#@param model [OpenStudio::model::Model] A model object
|
973
|
-
#@return [OpenStudio::model::Model] A model object
|
974
|
-
def self.add_necb_space_types( model )
|
975
|
-
self.add_usage_types(model, BTAP::Compliance::NECB2011::Data::SpaceTypeData )
|
976
|
-
return model
|
977
|
-
end
|
978
299
|
|
979
|
-
#This method will add the schedules, building types and space types to the
|
980
|
-
# model.
|
981
|
-
#@author phylroy.lopez@nrcan.gc.ca
|
982
|
-
#@param model [OpenStudio::model::Model] A model object
|
983
|
-
def self.add_necb_libraries_to_model(model)
|
984
|
-
self.add_necb_schedules(model)
|
985
|
-
self.add_necb_building_types( model )
|
986
|
-
self.add_necb_space_types( model )
|
987
|
-
end
|
988
300
|
|
989
|
-
|
990
|
-
|
991
|
-
def self.create_necb_libraries()
|
992
|
-
|
993
|
-
puts "Creating necb_libraries in #{BTAP::TESTING_FOLDER} "
|
994
|
-
necb_schedules = OpenStudio::Model::Model.new()
|
995
|
-
self.add_necb_schedules(necb_schedules)
|
996
|
-
FileUtils.rm_rf(BTAP::TESTING_FOLDER + "/necb_schedules.osm")
|
997
|
-
necb_schedules.save(OpenStudio::Path.new(BTAP::TESTING_FOLDER + "/necb_schedules.osm"))
|
998
|
-
|
999
|
-
necb_space_types = OpenStudio::Model::Model.new()
|
1000
|
-
self.add_necb_space_types(self.add_necb_schedules(necb_space_types))
|
1001
|
-
FileUtils.rm_rf(BTAP::TESTING_FOLDER + "/necb_space_types.osm")
|
1002
|
-
necb_space_types.save(OpenStudio::Path.new(BTAP::TESTING_FOLDER + "/necb_space_types.osm"))
|
1003
|
-
|
1004
|
-
necb_building_types = OpenStudio::Model::Model.new()
|
1005
|
-
self.add_necb_building_types(self.add_necb_schedules(necb_building_types))
|
1006
|
-
FileUtils.rm_rf(BTAP::TESTING_FOLDER + "/necb_building_types.osm")
|
1007
|
-
necb_building_types.save(OpenStudio::Path.new(BTAP::TESTING_FOLDER + "/necb_building_types.osm"))
|
1008
|
-
|
1009
|
-
necb_full = OpenStudio::Model::Model.new()
|
1010
|
-
self.add_necb_building_types( self.add_necb_space_types( self.add_necb_schedules(necb_full) ) )
|
1011
|
-
FileUtils.rm_rf(BTAP::TESTING_FOLDER + "/necb_full.osm")
|
1012
|
-
necb_full.save(OpenStudio::Path.new(BTAP::TESTING_FOLDER + "/necb_full.osm"))
|
1013
|
-
end
|
301
|
+
|
302
|
+
|
1014
303
|
|
1015
304
|
|
1016
305
|
# This model converts all DOE to NECB reference building.
|
@@ -1091,14 +380,15 @@ module BTAP
|
|
1091
380
|
puts "in set_zones_thermostat_schedule_based_on_space_type_schedules"
|
1092
381
|
BTAP::runner_register("DEBUG","Start-set_zones_thermostat_schedule_based_on_space_type_schedules" , runner)
|
1093
382
|
model.getThermalZones.each do |zone|
|
1094
|
-
BTAP::runner_register("DEBUG","
|
383
|
+
BTAP::runner_register("DEBUG","Zone = #{zone.name} Spaces =#{zone.spaces.size} " , runner)
|
1095
384
|
array = []
|
385
|
+
|
1096
386
|
zone.spaces.each do |space|
|
1097
387
|
schedule_type = BTAP::Compliance::NECB2011::determine_necb_schedule_type( space ).to_s
|
1098
388
|
BTAP::runner_register("DEBUG","space name/type:#{space.name}/#{schedule_type}" , runner)
|
1099
389
|
|
1100
390
|
# if wildcard space type, need to get dominant schedule type
|
1101
|
-
if
|
391
|
+
if "*".to_s == schedule_type
|
1102
392
|
dominant_sched_type = BTAP::Compliance::NECB2011::determine_dominant_necb_schedule_type(model)
|
1103
393
|
schedule_type = dominant_sched_type
|
1104
394
|
end
|
@@ -1250,68 +540,15 @@ module BTAP
|
|
1250
540
|
return false
|
1251
541
|
end
|
1252
542
|
|
1253
|
-
|
1254
|
-
#@author phylroy.lopez@nrcan.gc.ca
|
1255
|
-
#@param model [OpenStudio::Model::Model]
|
1256
|
-
#@param runner [Object]
|
1257
|
-
#@return [String] item
|
1258
|
-
def self.check_all_spacetypes_are_valid_necb_names(model,runner = nil)
|
1259
|
-
#collect space type and building type names.
|
1260
|
-
spacetypenames = []
|
1261
|
-
found = false
|
1262
|
-
BTAP::Compliance::NECB2011::Data::SpaceTypeData.each { |item| spacetypenames << item[0]}
|
1263
|
-
BTAP::Compliance::NECB2011::Data::BuildingTypeData.each { |item| spacetypenames << item[0]}
|
1264
|
-
non_necb_spacetype_names = []
|
1265
|
-
model.getSpaceTypes.each do |model_spacetype|
|
1266
|
-
found = false
|
1267
|
-
spacetypenames.each do |valid_spacetype_name|
|
1268
|
-
# The optional suffix allows for for defined "wildcard" spacetypes to pass through.
|
1269
|
-
if model_spacetype.name =~ /NECB-#{valid_spacetype_name}(\-[ABCDEFGHI])?/
|
1270
|
-
found = true
|
1271
|
-
end
|
1272
|
-
end
|
1273
|
-
non_necb_spacetype_names << model_spacetype.name unless found == true
|
1274
|
-
end
|
1275
|
-
if non_necb_spacetype_names.size > 0
|
1276
|
-
BTAP::runner_register("ERROR","The following spacetypes are not NECB space types.", runner)
|
1277
|
-
non_necb_spacetype_names.each {|item| BTAP::runner_register("ERROR","-#{item}", runner) }
|
1278
|
-
BTAP::runner_register("ERROR","Please edit model and assign valid space types.", runner)
|
1279
|
-
return false
|
1280
|
-
end
|
1281
|
-
BTAP::runner_register("INFO","All spacetypes conform to NECB naming.", runner)
|
1282
|
-
return true
|
1283
|
-
end
|
1284
|
-
|
1285
|
-
|
1286
|
-
|
1287
|
-
# This model gets the building space type info from lookup table.
|
1288
|
-
#@author phylroy.lopez@nrcan.gc.ca
|
1289
|
-
#@param type [String]
|
1290
|
-
#@return [String] item
|
1291
|
-
def self.lookup_spacetype_info(type)
|
1292
|
-
BTAP::Compliance::NECB2011::Data::SpaceTypeData.each do |item|
|
1293
|
-
# The optional suffix allows for for defined "wildcard" spacetypes to pass through.
|
1294
|
-
# space type names have changed - original commented out below (until i know it works)
|
1295
|
-
# if type.strip =~ /NECB 2011 - Space Function - #{item[0]}(\-[ABCDEFGHI])?/
|
1296
|
-
if type.strip =~ /Space Function #{item[0]}(\-[ABCDEFGHI])?/
|
1297
|
-
return item
|
1298
|
-
end
|
1299
|
-
|
1300
|
-
end
|
1301
|
-
BTAP::Compliance::NECB2011::Data::BuildingTypeData.each do |item|
|
1302
|
-
# space type names have changed - original commented out below (until i know it works)
|
1303
|
-
# if type.strip =~ /NECB 2011 - Space Function - #{item[0]}(\-[ABCDEFGHI])?/
|
1304
|
-
if type.strip =~ /Space Function #{item[0]}(\-[ABCDEFGHI])?/
|
1305
|
-
return item
|
1306
|
-
end
|
1307
|
-
end
|
1308
|
-
raise ("#{type} is not a NECB space type, Cannot use NECB system definitions!!")
|
1309
|
-
end
|
543
|
+
|
1310
544
|
|
1311
545
|
#This model determines the dominant NECB schedule type
|
1312
546
|
#@param model [OpenStudio::model::Model] A model object
|
1313
547
|
#return s.each [String]
|
1314
548
|
def self.determine_dominant_necb_schedule_type( model )
|
549
|
+
# lookup necb space type properties
|
550
|
+
space_type_properties = model.find_objects($os_standards["space_types"], { "template" => 'NECB 2011'})
|
551
|
+
|
1315
552
|
# Here is a hash to keep track of the m2 running total of spacetypes for each
|
1316
553
|
# sched type.
|
1317
554
|
s = Hash[
|
@@ -1326,39 +563,35 @@ module BTAP
|
|
1326
563
|
"I",0
|
1327
564
|
]
|
1328
565
|
#iterate through spaces in building.
|
566
|
+
wildcard_spaces = 0
|
1329
567
|
model.getSpaces.each do |space|
|
1330
|
-
raise ("Space #{space.name} does not have a spacetype defined!") if space.spaceType.empty?
|
1331
|
-
|
1332
|
-
spacetype_name = space.spaceType.get.name
|
1333
|
-
|
1334
|
-
|
1335
|
-
#iterate through the NECB spacetypes
|
1336
568
|
found_space_type = false
|
1337
|
-
|
1338
|
-
|
1339
|
-
|
1340
|
-
|
1341
|
-
|
1342
|
-
|
1343
|
-
|
1344
|
-
|
1345
|
-
|
1346
|
-
|
1347
|
-
|
1348
|
-
|
1349
|
-
|
1350
|
-
|
1351
|
-
|
1352
|
-
|
569
|
+
#iterate through the NECB spacetype property table
|
570
|
+
space_type_properties.each do |spacetype|
|
571
|
+
unless space.spaceType.empty?
|
572
|
+
if space.spaceType.get.standardsSpaceType.empty? || space.spaceType.get.standardsBuildingType.empty?
|
573
|
+
OpenStudio::logFree(OpenStudio::Error, "openstudio.Standards.Model", "Space #{space.name} does not have a standardSpaceType defined")
|
574
|
+
found_space_type = false
|
575
|
+
elsif space.spaceType.get.standardsSpaceType.get == spacetype['space_type'] && space.spaceType.get.standardsBuildingType.get == spacetype['building_type']
|
576
|
+
if "*" == spacetype['necb_schedule_type']
|
577
|
+
wildcard_spaces =+ 1
|
578
|
+
else
|
579
|
+
s[ spacetype['necb_schedule_type'] ] = s[ spacetype['necb_schedule_type'] ] + space.floorArea() if "*" != spacetype['necb_schedule_type'] and "- undefined -" != spacetype['necb_schedule_type']
|
580
|
+
end
|
581
|
+
#puts "Found #{space.spaceType.get.name} schedule #{spacetype[2]} match with floor area of #{space.floorArea()}"
|
582
|
+
found_space_type = true
|
583
|
+
elsif "*" != spacetype['necb_schedule_type']
|
584
|
+
#found wildcard..will not count to total.
|
585
|
+
found_space_type = true
|
586
|
+
end
|
1353
587
|
end
|
1354
|
-
|
1355
588
|
end
|
1356
589
|
raise ("Did not find #{space.spaceType.get.name} in NECB space types.") if found_space_type == false
|
1357
590
|
end
|
1358
591
|
#finds max value and returns NECB schedule letter.
|
1359
|
-
|
1360
|
-
|
1361
|
-
return
|
592
|
+
raise("Only wildcard spaces in model. You need to define the actual spaces. ") if wildcard_spaces == model.getSpaces.size
|
593
|
+
dominant_schedule = s.each { |k, v| return k.to_s if v == s.values.max }
|
594
|
+
return dominant_schedule
|
1362
595
|
end
|
1363
596
|
|
1364
597
|
#This method determines the spacetype schedule type. This will re
|
@@ -1366,34 +599,173 @@ module BTAP
|
|
1366
599
|
#@param space [String]
|
1367
600
|
#@return [String]:["A","B","C","D","E","F","G","H","I"] spacetype
|
1368
601
|
def self.determine_necb_schedule_type(space)
|
1369
|
-
|
1370
|
-
|
1371
|
-
|
1372
|
-
|
1373
|
-
|
1374
|
-
|
1375
|
-
|
1376
|
-
|
602
|
+
raise ("Undefined spacetype for space #{space.get.name}) if space.spaceType.empty?") if space.spaceType.empty?
|
603
|
+
raise ("Undefined standardsSpaceType or StandardsBuildingType for space #{space.spaceType.get.name}) if space.spaceType.empty?") if space.spaceType.get.standardsSpaceType.empty? | space.spaceType.get.standardsBuildingType.empty?
|
604
|
+
space_type_properties = space.model.find_object($os_standards["space_types"], { "template" => 'NECB 2011', "space_type" => space.spaceType.get.standardsSpaceType.get,"building_type" => space.spaceType.get.standardsBuildingType.get })
|
605
|
+
return space_type_properties['necb_schedule_type'].strip
|
606
|
+
end
|
607
|
+
|
608
|
+
|
609
|
+
|
610
|
+
|
611
|
+
def self.necb_spacetype_system_selection(model, heatingDesignLoad = nil,coolingDesignLoad = nil, runner = nil )
|
612
|
+
spacezoning_data = Struct.new(
|
613
|
+
:space, # the space object
|
614
|
+
:space_name, # the space name
|
615
|
+
:building_type_name, # space type name
|
616
|
+
:space_type_name, # space type name
|
617
|
+
:necb_hvac_system_selection_type, #
|
618
|
+
:system_number, # the necb system type
|
619
|
+
:number_of_stories, #number of stories
|
620
|
+
:horizontal_placement, # the horizontal placement (norht, south, east, west, core)
|
621
|
+
:vertical_placment, # the vertical placement ( ground, top, both, middle )
|
622
|
+
:people_obj, # Spacetype people object
|
623
|
+
:heating_capacity,
|
624
|
+
:cooling_capacity )
|
625
|
+
|
626
|
+
|
627
|
+
|
628
|
+
#Array to store schedule objects
|
629
|
+
schedule_type_array = []
|
630
|
+
|
631
|
+
# #this method replaces all the "*" space types with concrete "A-I" schedule based shedules.
|
632
|
+
# BTAP::Compliance::NECB2011::set_wildcard_schedules_to_dominant_building_schedule(model, runner)
|
633
|
+
#
|
634
|
+
#
|
635
|
+
|
636
|
+
|
637
|
+
|
638
|
+
#find the number of stories in the model.
|
639
|
+
number_of_stories = model.getBuildingStorys.size
|
640
|
+
|
641
|
+
#set up system array containers. These will contain the spaces associated with the system types.
|
642
|
+
space_zoning_data_array = []
|
643
|
+
|
644
|
+
#First pass of spaces to collect information into the space_zoning_data_array .
|
645
|
+
model.getSpaces.each do |space|
|
646
|
+
|
647
|
+
|
648
|
+
#this will get the spacetype system index 8.4.4.8A from the SpaceTypeData and BuildingTypeData in (1-12)
|
649
|
+
space_system_index = nil
|
650
|
+
if space.spaceType.empty?
|
651
|
+
space_system_index = nil
|
652
|
+
else
|
653
|
+
space_type_property = space.model.find_object($os_standards["space_types"], { "template" => 'NECB 2011', "space_type" => space.spaceType.get.standardsSpaceType.get,"building_type" => space.spaceType.get.standardsBuildingType.get })
|
654
|
+
necb_hvac_system_selection_type = space_type_property['necb_hvac_system_selection_type']
|
655
|
+
raise("could not find necb system selection type for space: #{space.get.name}") if space_type_property.nil?
|
1377
656
|
end
|
1378
|
-
|
1379
|
-
|
1380
|
-
|
1381
|
-
|
1382
|
-
|
657
|
+
|
658
|
+
|
659
|
+
|
660
|
+
|
661
|
+
|
662
|
+
#Get the heating and cooling load for the space. Only Zones with a defined thermostat will have a load.
|
663
|
+
#Make sure we don't have sideeffects by changing the argument variables.
|
664
|
+
cooling_load = coolingDesignLoad
|
665
|
+
heating_load = heatingDesignLoad
|
666
|
+
|
667
|
+
if space.spaceType.get.standardsSpaceType.get == "- undefined -"
|
668
|
+
cooling_load = 0.0
|
669
|
+
heating_load = 0.0
|
670
|
+
else
|
671
|
+
cooling_load = space.thermalZone.get.coolingDesignLoad.get * space.floorArea * space.multiplier / 1000.0 if cooling_load.nil?
|
672
|
+
heating_load = space.thermalZone.get.heatingDesignLoad.get * space.floorArea * space.multiplier / 1000.0 if heating_load.nil?
|
673
|
+
end
|
674
|
+
|
675
|
+
#identify space-system_index and assign the right NECB system type 1-7.
|
676
|
+
system = nil
|
677
|
+
case necb_hvac_system_selection_type
|
678
|
+
when nil
|
679
|
+
raise ("#{space.name} does not have an NECB system association. Please define a NECB HVAC System Selection Type in the google docs standards database.")
|
680
|
+
when 0, "- undefined -"
|
681
|
+
#These are spaces are undefined...so they are unconditioned and have no loads other than infiltration and no systems
|
682
|
+
system = 0
|
683
|
+
when "Assembly Area" #Assembly Area.
|
684
|
+
if number_of_stories <= 4
|
685
|
+
system = 3
|
686
|
+
else
|
687
|
+
system = 6
|
688
|
+
end
|
689
|
+
|
690
|
+
when "Automotive Area"
|
691
|
+
system = 4
|
692
|
+
|
693
|
+
when "Data Processing Area"
|
694
|
+
if coolingDesignLoad > 20 #KW...need a sizing run.
|
695
|
+
system = 2
|
696
|
+
else
|
697
|
+
system = 1
|
698
|
+
end
|
699
|
+
|
700
|
+
when "General Area" #[3,6]
|
701
|
+
if number_of_stories <= 2
|
702
|
+
system = 3
|
703
|
+
else
|
704
|
+
system = 6
|
705
|
+
end
|
706
|
+
|
707
|
+
when "Historical Collections Area" #[2],
|
708
|
+
system = 2
|
709
|
+
|
710
|
+
when "Hospital Area" #[3],
|
711
|
+
system = 6
|
712
|
+
|
713
|
+
when "Indoor Arena" #,[7],
|
714
|
+
system = 7
|
715
|
+
|
716
|
+
when "Industrial Area"# [3] this need some thought.
|
717
|
+
system = 3
|
718
|
+
|
719
|
+
when "Residential/Accomodation Area"#,[1], this needs some thought.
|
720
|
+
system = 1
|
721
|
+
|
722
|
+
when "Sleeping Area" #[3],
|
723
|
+
system = 3
|
724
|
+
|
725
|
+
when "Supermarket/Food Services Area"#[3,4],
|
726
|
+
system = 3
|
727
|
+
|
728
|
+
when "Supermarket/Food Services Area - vented"
|
729
|
+
system = 4
|
730
|
+
|
731
|
+
when "Warehouse Area"
|
732
|
+
system = 4
|
733
|
+
|
734
|
+
when "Warehouse Area - refrigerated"
|
735
|
+
system = 5
|
736
|
+
when "Wildcard"
|
737
|
+
system = "Wildcard"
|
738
|
+
else
|
739
|
+
raise ("NECB HVAC System Selection Type #{necb_hvac_system_selection_type} not valid")
|
740
|
+
end
|
741
|
+
#get placement on floor, core or perimeter and if a top, bottom, middle or single story.
|
742
|
+
horizontal_placement, vertical_placement = BTAP::Geometry::Spaces::get_space_placement( space )
|
743
|
+
#dump all info into an array for debugging and iteration.
|
744
|
+
unless space.spaceType.empty?
|
745
|
+
space_type_name = space.spaceType.get.standardsSpaceType.get
|
746
|
+
building_type_name = space.spaceType.get.standardsBuildingType.get
|
747
|
+
space_zoning_data_array << spacezoning_data.new( space,
|
748
|
+
space.name.get,
|
749
|
+
building_type_name,
|
750
|
+
space_type_name,
|
751
|
+
necb_hvac_system_selection_type,
|
752
|
+
system,
|
753
|
+
number_of_stories,
|
754
|
+
horizontal_placement,
|
755
|
+
vertical_placement,
|
756
|
+
space.spaceType.get.people,
|
757
|
+
heating_load,
|
758
|
+
cooling_load )
|
759
|
+
schedule_type_array << BTAP::Compliance::NECB2011::determine_necb_schedule_type( space ).to_s
|
1383
760
|
end
|
1384
761
|
end
|
1385
|
-
|
762
|
+
|
763
|
+
|
764
|
+
|
765
|
+
|
766
|
+
return schedule_type_array.uniq! , space_zoning_data_array
|
1386
767
|
end
|
1387
|
-
|
1388
|
-
|
1389
|
-
#Create a data struct for the space to system to placement information.
|
1390
|
-
SpacezoningData = Struct.new(
|
1391
|
-
:space, # the space object
|
1392
|
-
:system_number, # the necb system type
|
1393
|
-
:story, # the floor
|
1394
|
-
:horizontal_placement, # the horizontal placement (norht, south, east, west, core)
|
1395
|
-
:vertical_placment, # the vertical placement ( ground, top, both, middle )
|
1396
|
-
:people_obj ) # Spacetype people object
|
768
|
+
|
1397
769
|
|
1398
770
|
# This method will take a model that uses NECB 2011 spacetypes , and..
|
1399
771
|
# 1. Create a building story schema.
|
@@ -1422,6 +794,9 @@ module BTAP
|
|
1422
794
|
heating_coil_types_sys6 = "Hot Water",
|
1423
795
|
fan_type = "AF_or_BI_rdg_fancurve" )
|
1424
796
|
|
797
|
+
#Create a data struct for the space to system to placement information.
|
798
|
+
|
799
|
+
|
1425
800
|
#system assignment.
|
1426
801
|
unless ["NaturalGas","Electricity","PropaneGas","FuelOil#1","FuelOil#2","Coal","Diesel","Gasoline","OtherFuel1"].include?(boiler_fueltype)
|
1427
802
|
BTAP::runner_register("ERROR","boiler_fueltype = #{boiler_fueltype}",runner)
|
@@ -1482,128 +857,36 @@ module BTAP
|
|
1482
857
|
BTAP::runner_register("ERROR","heating_coil_types_sys4 = #{heating_coil_types_sys4}",runner)
|
1483
858
|
return false
|
1484
859
|
end
|
1485
|
-
|
1486
|
-
#some defaults until we figure out how to handle them. (TODO)
|
1487
|
-
vented = true
|
1488
|
-
heated_only = true
|
1489
|
-
refrigerated = false
|
1490
|
-
cooling_capacity = 19.0 #only after sizing run is completed.
|
860
|
+
|
1491
861
|
# Reassign / set floors if required.
|
1492
862
|
BTAP::Geometry::BuildingStoreys::auto_assign_stories(model)
|
1493
|
-
|
1494
|
-
|
1495
|
-
#Array to store schedule objects
|
1496
|
-
schedule_type_array = []
|
1497
|
-
|
1498
|
-
|
1499
|
-
#This remove all ThermalZones in model just in case
|
1500
|
-
model.getThermalZones.each do |zone|
|
1501
|
-
zone.remove
|
1502
|
-
end
|
1503
|
-
|
1504
|
-
#this method replaces all the "*" space types with concrete "A-I" schedule based shedules.
|
1505
|
-
BTAP::Compliance::NECB2011::set_wildcard_schedules_to_dominant_building_schedule(model, runner)
|
1506
|
-
|
1507
|
-
#find the number of stories in the model.
|
1508
|
-
number_of_stories = model.getBuildingStorys.size
|
1509
|
-
|
1510
|
-
#set up system array containers. These will contain the spaces associated with the system types.
|
1511
|
-
space_zoning_data_array = []
|
1512
|
-
|
1513
|
-
#First pass of spaces to collect information into the space_zoning_data_array .
|
1514
|
-
model.getSpaces.each do |space|
|
1515
|
-
#initialize building story variable.
|
1516
|
-
building_story = nil
|
1517
|
-
#check to see if the space is already set to a story.
|
1518
|
-
if not space.buildingStory.empty?
|
1519
|
-
building_story = space.buildingStory.get
|
1520
|
-
end
|
1521
|
-
|
1522
|
-
#this will get the spacetype system index 8.4.4.8A from the SpaceTypeData and BuildingTypeData in (1-12)
|
1523
|
-
space_system_index = nil
|
1524
|
-
if space.spaceType.empty?
|
1525
|
-
space_system_index = nil
|
1526
|
-
else
|
1527
|
-
space_system_index = self.lookup_spacetype_info(space.spaceType.get.name.get)[11]
|
1528
|
-
end
|
1529
|
-
|
1530
|
-
#identify space-system_index and assign the right NECB system type 1-7.
|
1531
|
-
system = nil
|
1532
|
-
case space_system_index
|
1533
|
-
when nil
|
1534
|
-
when 0
|
1535
|
-
#These are spaces are undefined...so they are unconditioned and have no loads other than infiltration and no systems
|
1536
|
-
system = 0
|
1537
|
-
when 1 #Assembly Area.
|
1538
|
-
if number_of_stories <= 4
|
1539
|
-
system = 3
|
1540
|
-
else
|
1541
|
-
system = 6
|
1542
|
-
end
|
1543
|
-
|
1544
|
-
when 2 #"Automotive Area",[4]
|
1545
|
-
system = 4
|
1546
|
-
|
1547
|
-
when 3 #"Data Processing Area",[1,2]
|
1548
|
-
if cooling_capacity > 20 #KW...need a sizing run.
|
1549
|
-
system = 2
|
1550
|
-
else
|
1551
|
-
system = 1
|
1552
|
-
end
|
1553
863
|
|
1554
|
-
|
1555
|
-
|
1556
|
-
|
1557
|
-
|
1558
|
-
|
864
|
+
#this method will determine the spaces that should be set to each system
|
865
|
+
schedule_type_array , space_zoning_data_array = self.necb_spacetype_system_selection(model)
|
866
|
+
|
867
|
+
#Deal with Wildcard spaces. Might wish to have logic to do coridors first.
|
868
|
+
space_zoning_data_array.each do |space_zone_data|
|
869
|
+
if space_zone_data.system_number == "Wildcard"
|
870
|
+
#iterate through all adjacent spaces from largest shared wall area to smallest.
|
871
|
+
# Set system type to match first space system that is not nil.
|
872
|
+
space_zone_data.space.get_adjacent_spaces_with_shared_wall_areas(true).each do |adj_space|
|
873
|
+
raise ("Could not determine adj space to space #{space_zone_data.space.name.get}") if adj_space.nil?
|
874
|
+
adj_space_data = space_zoning_data_array.find { |data| data.space == adj_space[0] }
|
875
|
+
if adj_space_data.system_number.nil?
|
876
|
+
next
|
877
|
+
else
|
878
|
+
space_zone_data.system_number = adj_space_data.system_number
|
879
|
+
break
|
880
|
+
end
|
1559
881
|
end
|
1560
|
-
|
1561
|
-
when 5 #"Historical Collections Area",[2],
|
1562
|
-
system = 2
|
1563
|
-
|
1564
|
-
when 6 # "Hospital Area",[3],
|
1565
|
-
system = 6
|
1566
|
-
|
1567
|
-
when 7 # "Indoor Arena",[7],
|
1568
|
-
system = 7
|
1569
|
-
|
1570
|
-
when 8 # "Industrial Area [3] this need some thought.
|
1571
|
-
system = 3
|
1572
|
-
|
1573
|
-
when 9 # "Residential/Accomodation Area",[1], this needs some thought.
|
1574
|
-
if heated_only
|
1575
|
-
system = 1
|
1576
|
-
else
|
1577
|
-
system = 1
|
1578
|
-
end
|
1579
|
-
|
1580
|
-
when 10 #"Sleeping Area",[3],
|
1581
|
-
system = 3
|
1582
|
-
|
1583
|
-
when 11 #"Supermarket/Food Services Area",[3,4],
|
1584
|
-
if vented
|
1585
|
-
system = 3
|
1586
|
-
else
|
1587
|
-
system = 4
|
1588
|
-
end
|
1589
|
-
|
1590
|
-
when 12 # Warehouse
|
1591
|
-
if refrigerated
|
1592
|
-
system = 3
|
1593
|
-
else
|
1594
|
-
system = 3
|
1595
|
-
end
|
1596
|
-
end
|
1597
|
-
#get placement on floor, core or perimeter and if a top, bottom, middle or single story.
|
1598
|
-
horizontal_placement, vertical_placement = BTAP::Geometry::Spaces::get_space_placement( space )
|
1599
|
-
#dump all info into an array for debugging and iteration.
|
1600
|
-
unless space.spaceType.empty? or space.spaceType.get.name.to_s.include?("undefined")
|
1601
|
-
space_zoning_data_array << SpacezoningData.new( space,system,building_story, horizontal_placement,vertical_placement,space.spaceType.get.people )
|
1602
|
-
schedule_type_array << BTAP::Compliance::NECB2011::determine_necb_schedule_type( space ).to_s
|
882
|
+
raise ("Could not determine adj space system to space #{space_zone_data.space.name.get}") if space_zone_data.system_number.nil?
|
1603
883
|
end
|
1604
884
|
end
|
1605
|
-
|
1606
|
-
|
885
|
+
|
886
|
+
|
887
|
+
#remove any thermal zones used for sizing to start fresh. Should only do this after the above system selection method.
|
888
|
+
model.getThermalZones.each {|zone| zone.remove}
|
889
|
+
|
1607
890
|
|
1608
891
|
#now lets apply the rules.
|
1609
892
|
# Rule1 all zones must contain only the same schedule / occupancy schedule.
|
@@ -1612,8 +895,7 @@ module BTAP
|
|
1612
895
|
# Rule4 Wildcard spaces will be associated with the nearest zone of similar schedule type in which is shared most of it's internal surface with.
|
1613
896
|
# Rule5 NECB zones must contain spaces of similar system type only.
|
1614
897
|
|
1615
|
-
#
|
1616
|
-
|
898
|
+
#Array of system types of Array of Spaces
|
1617
899
|
system_zone_array = []
|
1618
900
|
#Lets iterate by system
|
1619
901
|
(0..7).each do |system_number|
|
@@ -1646,44 +928,38 @@ module BTAP
|
|
1646
928
|
name = "Sys-#{system_number.to_s} Flr-#{story_counter.to_s} Sch-#{schedule_type.to_s} HPlcmt-#{horizontal_placement}"
|
1647
929
|
thermal_zone = BTAP::Geometry::Zones::create_thermal_zone(model, space_array)
|
1648
930
|
thermal_zone.setAttribute("name",name)
|
1649
|
-
|
1650
|
-
space_array.each do |space|
|
1651
|
-
BTAP::runner_register("DEBUG","space name/type:#{space.name}:#{space.spaceType.get.name}" , runner)
|
1652
|
-
end
|
1653
|
-
|
1654
|
-
#default it to ideal air system.
|
1655
|
-
#thermal_zone_ideal_loads = OpenStudio::Model::ZoneHVACIdealLoadsAirSystem.new(model)
|
1656
|
-
#thermal_zone_ideal_loads.addToThermalZone(thermal_zone)
|
1657
|
-
|
1658
|
-
# thermal_zone.setUseIdealAirLoads(true) - this uses HVACTemplateObject
|
931
|
+
#Set Thermostat bases on
|
1659
932
|
|
1660
|
-
#
|
1661
|
-
|
933
|
+
# Add a thermostat based on the first space
|
934
|
+
space_type_name = space_array[0].spaceType.get.name.get
|
935
|
+
thermostat_name = space_type_name + ' Thermostat'
|
936
|
+
thermostat = model.getThermostatSetpointDualSetpointByName(thermostat_name)
|
937
|
+
if thermostat.empty?
|
938
|
+
OpenStudio::logFree(OpenStudio::Error, 'openstudio.model.Model', "Thermostat #{thermostat_name} not found for space name: #{space_array[0].name}")
|
939
|
+
raise (" Thermostat #{thermostat_name} not found for space name: #{space_array[0].name}")
|
940
|
+
else
|
941
|
+
thermostatClone = thermostat.get.clone(model).to_ThermostatSetpointDualSetpoint.get
|
942
|
+
thermal_zone.setThermostatSetpointDualSetpoint(thermostatClone)
|
1662
943
|
|
944
|
+
end
|
945
|
+
#add thermal zone to system array.
|
946
|
+
system_zone_array[system_number] << thermal_zone
|
1663
947
|
end
|
1664
948
|
end
|
1665
949
|
end
|
1666
950
|
end
|
1667
951
|
end #system iteration
|
1668
|
-
|
1669
|
-
BTAP::Compliance::NECB2011::set_zones_thermostat_schedule_based_on_space_type_schedules(model,runner)
|
1670
952
|
|
953
|
+
#Create and assign the zones to the systems.
|
1671
954
|
unless use_ideal_air_loads == true
|
1672
|
-
|
1673
|
-
|
1674
|
-
puts "boiler_fueltype = #{boiler_fueltype}"
|
1675
|
-
|
1676
955
|
system_zone_array.each_with_index do |zones,system_index|
|
1677
956
|
#skip if no thermal zones for this system.
|
1678
957
|
next if zones.size == 0
|
1679
|
-
puts "Zone Names for System #{system_index}"
|
1680
|
-
puts "system_index = #{system_index}"
|
958
|
+
# puts "Zone Names for System #{system_index}"
|
959
|
+
# puts "system_index = #{system_index}"
|
1681
960
|
case system_index
|
1682
|
-
when 0
|
1683
|
-
|
1684
|
-
thermal_zone_ideal_loads = OpenStudio::Model::ZoneHVACIdealLoadsAirSystem.new(model)
|
1685
|
-
thermal_zone_ideal_loads.addToThermalZone(thermal_zone)
|
1686
|
-
end
|
961
|
+
when 0 , nil
|
962
|
+
#Do nothing no system assigned to zone. Used for Unconditioned spaces
|
1687
963
|
when 1
|
1688
964
|
BTAP::Resources::HVAC::HVACTemplates::NECB2011::assign_zones_sys1(model, zones, boiler_fueltype, mau_type, mau_heating_coil_type, baseboard_type)
|
1689
965
|
when 2
|
@@ -1697,9 +973,15 @@ module BTAP
|
|
1697
973
|
when 6
|
1698
974
|
BTAP::Resources::HVAC::HVACTemplates::NECB2011::assign_zones_sys6(model, zones, boiler_fueltype, heating_coil_types_sys6, baseboard_type, chiller_type, fan_type)
|
1699
975
|
when 7
|
1700
|
-
BTAP::Resources::HVAC::HVACTemplates::NECB2011::
|
976
|
+
BTAP::Resources::HVAC::HVACTemplates::NECB2011::assign_zones_sys7(model, zones, boiler_fueltype, chiller_type, mua_cooling_type)
|
1701
977
|
end
|
1702
978
|
end
|
979
|
+
else
|
980
|
+
#otherwise use ideal loads.
|
981
|
+
model.getThermalZones.each do |thermal_zone|
|
982
|
+
thermal_zone_ideal_loads = OpenStudio::Model::ZoneHVACIdealLoadsAirSystem.new(model)
|
983
|
+
thermal_zone_ideal_loads.addToThermalZone(thermal_zone)
|
984
|
+
end
|
1703
985
|
end
|
1704
986
|
end
|
1705
987
|
end
|